使用虚拟数据优化器(VDO)压缩和重复数据删除存储
在本指南中,我们将学习如何使用虚拟数据优化器(VDO)对存储设备上的数据进行压缩和重复数据删除,以确保优化存储空间。 RHEL/CentOS和Fedora Linux发行版具有可安装的Virtual Data Optimizer(VDO)Linux设备映射器。
VDO通过减少块设备上的磁盘空间使用并最大程度地减少数据复制,节省磁盘空间甚至提高数据吞吐量来优化块设备上的数据占用量。 VDO包含两个内核模块:kvdo模块透明控制数据压缩,uds模块处理重复数据删除。
VDO层放置在现有块存储设备(例如本地磁盘,RAID设备,加密设备)的顶部。然后,将诸如文件系统和LVM逻辑卷之类的存储层放置在VDO设备的顶部。
安装虚拟数据优化器(VDO)
对于RHEL和CentOS Linux发行版,我们可以通过运行以下命令轻松安装Virtual Data Optimizer(VDO)Linux设备映射器。
sudo yum -y install vdo kmod-kvdo
等待安装完成。
Loaded plugins: fastestmirror Determining fastest mirrors * base: centos.mirror.liquidtelecom.com * extras: centos.mirror.liquidtelecom.com * updates: centos.mirror.liquidtelecom.com base | 3.6 kB 00:00 extras | 2.9 kB 00:00 updates | 2.9 kB 00:00 (1/2): extras/7/x86_64/primary_db | 159 kB 00:06 (2/2): updates/7/x86_64/primary_db | 6.7 MB 00:40 Resolving Dependencies --> Running transaction check ---> Package kmod-kvdo.x86_64 0:6.1.2.41-5.el7 will be installed ---> Package vdo.x86_64 0:6.1.2.41-4.el7 will be installed --> Finished Dependency Resolution Dependencies Resolved =========================================================================== Package Arch Version Repository Size =========================================================================== Installing: kmod-kvdo x86_64 6.1.2.41-5.el7 base 317 k vdo x86_64 6.1.2.41-4.el7 base 624 k Transaction Summary =========================================================================== Install 2 Packages Total download size: 941 k Installed size: 4.5 M Downloading packages: (1/2): kmod-kvdo-6.1.2.41-5.el7.x86_64.rpm | 317 kB 00:01 (2/2): vdo-6.1.2.41-4.el7.x86_64.rpm | 624 kB 00:24 -------------------------------------------------------------------------- Total 38 kB/s | 941 kB 00:24 Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : kmod-kvdo-6.1.2.41-5.el7.x86_64 1/2 Installing : vdo-6.1.2.41-4.el7.x86_64 2/2 Verifying : kmod-kvdo-6.1.2.41-5.el7.x86_64 1/2 Verifying : vdo-6.1.2.41-4.el7.x86_64 2/2 Installed: kmod-kvdo.x86_64 0:6.1.2.41-5.el7 vdo.x86_64 0:6.1.2.41-4.el7 Complete!
创建VDO卷
VDO卷是使用VDO创建的逻辑设备。它们就像磁盘分区一样对待。我们只需使用文件系统对其进行格式化,然后可以像常规文件系统一样安装VDO卷。如果我们更喜欢LVM,则可以将VDO卷用作LVM物理卷。
我有一个10 GB的磁盘将用于此练习。
$ lsblk /dev/sdb NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sdb 8:16 0 10G 0 disk
这是创建VDO卷的方式:
$sudo vdo create --name myvdo --device /dev/sdb --vdoLogicalSize 5G Creating VDO myvdo Starting VDO myvdo Starting compression on VDO myvdo VDO instance 0 volume is ready at /dev/mapper/myvdo
其中:myvdo是VDO提供给用户的逻辑设备的名称。/dev/sdb是VDO卷要使用的块设备。5G是VDO卷的逻辑大小。这是可选的,并且可以大于实际块设备的物理大小。
显示已启动和未启动的卷的列表。
$sudo vdo list --all myvdo
运行vdo status命令以分析该卷。
$sudo vdo status -n myvdo VDO status: Date: '2017-02-12 12:42:04+03:00' Node: repo-server-01.example.com Kernel module: Loaded: true Name: kvdo Version information: kvdo version: 6.1.2.41 Configuration: File: /etc/vdoconf.yml Last modified: '2017-02-12 12:39:36' VDOs: myvdo: Acknowledgement threads: 1 Activate: enabled Bio rotation interval: 64 Bio submission threads: 4 Block map cache size: 128M Block map period: 16380 .......
应该启用压缩和重复数据删除。
$sudo vdo status -n myvdo | egrep 'Compression|Deduplication' Compression: enabled Deduplication: enabled
我们可以使用命令vdo growLogical扩展现有卷。容量增加到10GB。
sudo vdo growLogical -n myvdo --vdoLogicalSize 10G
确认:
$sudo vdo status -n myvdo | grep size Block map cache size: 128M Block size: 4096 Logical size: 10G Physical size: 10G Read cache size: 0M Slab size: 2G block map cache size: 134217728 block size: 4096
使用文件系统格式化VDO卷。
我们可以使用所选的文件系统类型格式化VDO卷,或者从中创建PV,VG和LV。
$sudo mkfs.xfs /dev/mapper/myvdo
对于LVM创建:
# Create PV $sudo pvcreate /dev/mapper/myvdo Physical volume "/dev/mapper/myvdo" successfully created. # Create VG $sudo vgcreate vg01 /dev/mapper/myvdo Volume group "vg01" successfully created # Create LV $sudo lvcreate -n lv01 -l+100%FREE vg01 Logical volume "lv01" created. # Create a file system $sudo mkfs -t xfs /dev/mapper/vg01-lv01 meta-data=/dev/mapper/vg01-lv01 isize=512 agcount=4, agsize=655104 blks = sectsz=4096 attr=2, projid32bit=1 = crc=1 finobt=0, sparse=0 data = bsize=4096 blocks=2620416, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal log bsize=4096 blocks=2560, version=2 = sectsz=4096 sunit=1 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0
现在,我们可以注册并安装新设备。
sudo udevadm settle sudo mkdir /myvdo --- For standard VDO volume -- $sudo mount /dev/mapper/myvdo1 /myvdo --- For LVM -- $sudo mount /dev/mapper/vg01-lv01 /myvdo
要进行持久挂载,请配置/etc/fstab文件。
UUID=XXXXX /myvdo xfs defaults,x-systemd.requires=vdo.service 0 0
我们还可以以易于理解的形式显示统计信息。
$sudo vdostats --human-readable Device Size Used Available Use% Space saving% /dev/mapper/myvdo 10.0G 4.0G 6.0G 40% 98%
测试重复数据删除:
不良下载一个ISO文件以测试重复数据删除。
wget http://mirror.centos.org/centos/7/os/x86_64/images/boot.iso
将文件复制到/myvdo目录。
sudo cp boot.iso /myvdo/boot1.iso
检查存储统计信息。
--- Before copy -- $sudo vdostats --human-readable Device Size Used Available Use% Space saving% /dev/mapper/myvdo 10.0G 4.0G 6.0G 40% 98% --- After copy -- $sudo vdostats --human-readable Device Size Used Available Use% Space saving% /dev/mapper/myvdo 10.0G 4.2G 5.8G 42% 7%
我们会注意到"已使用"字段的值从4.0G增加到4.2G,因为我们将文件复制到了占用一些空间的卷中。
让我们做一个相同文件的第二个副本。
sudo cp boot.iso /myvdo/boot2.iso
再次查看音量统计信息。
$sudo vdostats --human-readable Device Size Used Available Use% Space saving% /dev/mapper/myvdo 10.0G 4.2G 5.8G 42% 52%
我们可以看到使用的卷空间没有更改。而是,已节省的卷空间百分比增加到52%,证明发生了重复数据删除以减少同一文件的冗余副本的空间消耗。