概念
VDO:Virtual Data Optimizer 虚拟数据优化器驱动程序,可以优化块设备上数据的空间占用。
VDO层位于块存储设备的顶部,而存储层位于VDO设备之上。
VDO按以下顺序将三个阶段应用于数据,减少存储设备上的占用空间
零块消除-->去除冗余数据块-->压缩
零区块的排除:
在初始化阶段,整块为0的会被元数据记录下来,这个可以用水杯里面的水和沙子混合的例子来解释,使用滤纸(零块排除),把沙子(非零空间)给过滤出来,然后就是下一个阶段的处理
重复数据删除:
在第二阶段,输入的数据会判断是不是冗余数据(在写入之前就判断),这个部分的数据通过UDS内核模块来判断(U niversal D eduplication S ervice),被判断为重复数据的部分不会被写入,然后对元数据进行更新,直接指向原始已经存储的数据块即可
压缩:
一旦消零和重删完成,LZ4压缩会对每个单独的数据块进行处理,然后压缩好的数据块会以固定大小4KB的数据块存储在介质上,由于一个物理块可以包含很多的压缩块,这个也可以加速读取的性能
实施VDO
VDO卷的逻辑大小可以大于实际块设备的物理大小。如果创建卷时未指定逻辑大小,则VDO会将实际物理大小视为卷的逻辑大小。
若VDO卷的逻辑大小超过物理大小时,应使用vdostats --verbose命令主动监控卷统计信息,可以查看实际使用情况。
(1)启用VDO
安装有关软件包VDO和kmodo-kvdo
yum install vdo kmod-kvdo

(2)创建VDO卷
运行vdo create命令创建VDO卷(使用未分区的磁盘)
vdo create --name=vdo1 --device=/dev/vdd --vdoLogicalSize=50G
#指定名称,设备,大小,如果没有指定大小,则与物理设备大小相同

(3)分析VDO
vdo status --name=vdo1 #查看vdo1的状态
vdo list #显示当前启动的VDO卷
vdo start #启动VDO卷
vdo stop #停止VDO卷

VDO卷就位可以将它格式化为所选的文件系统类型并挂载于系统的文件系统层次结构下。
udevadm settle #注册新设备节点
mkfs.xfs -K /dev/mapper/vdo1 #格式化为XFS文件系统
mkdir /mnt/vdo1 #创建挂载点目录
mount /dev/mapper/vdo1 /mnt/vdo1 #挂载

vdostats --human-readable #查看VDO的初始统计信息和状态

由此可见,VDO的使用节省了空间
(在/etc/fstab文件下编辑添加条目以便启动时自动挂载)
vdo设备的删除
解除挂载:umount /data
vdo设备的停止:vdo stop --name westos_vdo
vdo设备的删除:vdo remove --name westos_vdo