本文介绍在RHEL/CentOS/Fedora Linux发行版上安装Virtual Data Optimizer(VDO) Linux设备映射器。VDO通过减少块设备上的磁盘空间使用并最小化数据复制,节省磁盘空间甚至增加数据吞吐量来优化块设备上的数据占用量。VDO包含两个内核模块,即kvdo模块和uds模块,kvdo模块能透明地控制数据压缩,uds模块能处理重复数据删除。
安装Virtual Data Optimizer(VDO)
对于RHEL和CentOS Linux发行版,可以通过运行以下命令轻松安装Virtual Data Optimizer(VDO) Linux设备映射器:
sudo yum -y install vdo kmod-kvdo
等待安装完成,返回的信息如下:
创建VDO卷
VDO卷是使用VDO创建的逻辑设备,它们就像磁盘分区一样,只需使用文件系统对其进行格式化,然后可以像常规文件系统一样挂载VDO卷,如果使用LVM,则可以将VDO卷用作LVM物理卷。
我有一个10GB的磁盘将用于此练习:
$ lsblk /dev/sdb
这是创建VDO卷的方法:
$ sudo vdo create --name myvdo --device /dev/sdb --vdoLogicalSize 5G
注:
myvdo是VDO向用户提供的逻辑设备的名称。
/dev/sdb是VDO卷要使用的块设备
5G是VDO卷的逻辑大小,这是可选的,并且可以大于实际块设备的物理大小。
显示已启动和未启动的卷的列表:
$ sudo vdo list --all
运行vdo status命令以分析该卷:
$ sudo vdo status -n myvdo
应该启用压缩和重复数据删除:
$ sudo vdo status -n myvdo | egrep 'Compression|Deduplication'
可以使用命令vdo growLogical扩展现有卷,我会将容量增加到10GB:
sudo vdo growLogical -n myvdo --vdoLogicalSize 10G
确认:
$ sudo vdo status -n myvdo | grep size
使用文件系统格式化VDO卷
可以使用所选的文件系统类型格式化VDO卷,或从中创建PV、VG和LV:
$ sudo mkfs.xfs /dev/mapper/myvdo
对于LVM创建,如下命令。
#创建PV
$ sudo pvcreate /dev/mapper/myvdo
#创建VG
$ sudo vgcreate vg01 /dev/mapper/myvdo
#创建LV
$ sudo lvcreate -n lv01 -l+100%FREE vg01
#创建一个文件系统
$ sudo mkfs -t xfs /dev/mapper/vg01-lv01
现在,可以注册并安装新设备:
sudo udevadm settle
sudo mkdir /myvdo
对于标准VDO音量:
$ sudo mount /dev/mapper/myvdo1 /myvdo
对于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
附:测试重复数据删除
我将下载一个ISO文件以测试重复数据删除:
wget http://mirror.centos.org/centos/7/os/x86_64/images/boot.iso
将文件复制到/myvdo目录:
sudo cp boot.iso /myvdo/boot1.iso
检查存储统计信息。
复制前:
$ sudo vdostats --human-readable
复制后:
$ sudo vdostats --human-readable
以上“Used”字段的值从4.0G增加到4.2G,因为我们将文件复制到了占用一些空间的卷中。
我们来复制同一文件:
sudo cp boot.iso /myvdo/boot2.iso
再次查看音量统计信息:
$ sudo vdostats --human-readable
可以看到使用的卷空间没有更改,相反,已节省的卷空间百分比增加到52%,这证明发生了重复数据删除可以减少同一文件冗余副本的空间消耗。