使用虚拟数据优化器(VDO)压缩和重复覆盖存储
在本教程中,我们将学习如何使用虚拟数据优化程序(VDO)压缩和重复数据删除存储设备上的数据,以确保优化存储空间。
Rhel/CentOS&Fedora Linux发行版具有虚拟数据优化器(VDO)Linux设备映射器可供安装。
VDO通过减少块设备上的磁盘空间使用,并最大限度地减少数据的复制,节省磁盘空间甚至增加数据吞吐量来优化块设备上的数据占用空间。
VDO包括两个内核模块:KVDO模块 - 透明控制数据压缩,UDS模块 - 处理数据重复数据删除。
VDO层被放置在现有块存储设备的顶部,例如本地磁盘,RAID设备,加密设备。
然后将诸如文件系统和LVM逻辑卷的存储层放置在VDO设备的顶部。
第1步:安装虚拟数据优化程序(VDO)
对于RHEL和CentOS Linux发行版,我们可以通过运行下面的命令轻松安装虚拟数据优化器(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!
第2步:创建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卷的块设备是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 Buglogical成长现有卷。
我将增加到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
步骤3:使用文件系统格式化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%
第4步:测试重复数据删除:
我将下载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%,证明了数据重复数据删除,以减少同一文件的冗余副本的空间消耗。