VDO
Virtual Data Optimize 虚拟数据优化 是一种通过压缩或删除存储设备上的数据来优化存储空间的技术。 VDO 是红帽公司收购了 Permabit 公司后获取的新技术,并与2019 2020 年前后,多次 在 RHEL 7.5/7.6/7.7 上进行测试,最终随 RHEL 8 系统正式公布。VDO技术的关键就是对硬盘内原有的数据进行删重操作,它有点类似于我们平时使用的网盘服务,在第一次正常上传文件时速度特别慢,在第二次上传 相同的文件 时 仅作为一个数据指针 几乎可以达到 秒传 的 效果,无须再多占用一份空间 也不用再漫长等待。除了删重操作,VDO 技术还可以对日志和数据库进行自动压缩,进一步减少存储浪费的情况 。 VDO 针对各种类型文件的压缩效果如表
VDO技术支持本地存储和远程存储,可以作为本地文件系统、iSCSI或Ceph存储下的附加存储层使用。红帽公司在VDO介绍页面中提到,在部署虚拟机或容器时,建议采用逻辑存储与物理存储为10∶1的比例进行配置,即1TB物理存储对应10TB逻辑存储;而部署对象存储时 (例如使用Ceph)则采用逻辑存储与物理存储为3∶1的比例进行配置,即使用1TB物理存储对应3TB逻辑存储。
简而言之,VDO技术能省空间!
有两种特殊情况需要提前讲一下。其一,公司服务器上已有的dm-crypt之类的技术是可以与VDO技术兼容的,但记得要先对卷进行加密再使用VDO。因为加密会使重复的数据变得有所不同,因此删重操作无法实现。要始终记得把加密层放到VDO之下,
其二,VDO技术不可叠加使用,1TB的物理存储提升成10TB的逻辑存储没问题,但是再用10TB翻成100TB就不行了。左脚踩右脚,真的没法飞起来。
一、我们把虚拟机关闭,添加一块容量为20GB的新SATA硬盘进来,开机后就能看到这块名称为/dev/sdb的新硬盘了
二、创建一个全新的VDO卷
新添加进来的物理设备就是使用vdo 命令来管理的,其中 name 参数代表新的设备卷的名称 device 参数代表由哪块磁盘进行制作; vdoLogicalSize 参数代表制作后的 设备 大小 。 依据红帽公司推荐的原则, 20GB 硬盘将翻成 200GB 的 逻辑存储。备注:如果记不住创建vdo的命令,可以通过man vdo | grep Logical 查询命令
vdo create --name=storge --device=/dev/sda --vdoLogicalSize=100G
通过fdisk -l 可以看到我们创建的这个ODV卷成功了,
三、在创建成功后,使用status参数查看新建卷的概述信息,也可以使用(vdo status name=storage)查看具体的信息
vdostats --human-readable (查看摘要信息)
四、对新建卷进行格式化操作并挂载使用
新建的VDO卷设备会被乖乖地存放在/dev/mapper目录下,并以设备名称命名,对它操作就行。另外,挂载前可以用udevadm settle命令对设备进行一次刷新操作,避免刚才的配置没有生效:
mkfs.xfs /dev/mapper/storage 进行格式化
udevadm settle 对设备刷新
mkdir /media/storage 创建于storage挂载目录
mount /dev/mapper/storage /media/storage/ 挂载,如果要永久挂载必须修改/etc/fstab配置文件。
永久挂载设置,通过blkid查看UUID,然后再编辑/etc/fstab配置文件,一定加上_netdev,否则重启电脑会重启不了。
UUID="0ac76f40-debd-4416-bab6-ba4f0f2bcf90" /media/storage xfs defaults,_netdev 0 0
五、测试他的压缩性和去重性,
复制多一个文件到storage目录下,
目前有四个文件,可以看到还5.5G,说明去重性非常的好。
六、删除ODV卷
umount /media/storage 取消挂
vdo remove --name=storage 移除vdo卷