VDO(Virtual Data Optimize虚拟数据优化):通过压缩或删除存储设备上的数据来优化存储空间
1、压缩和去重是为了能够更好的提供存储空间的利用率
2、需要加载两个内核模块 kvdo: 用于压缩 uds: 用于去重的
3、vdo设备位于现有的存储的顶部: 比如块设备:/dev/nvme0n5,也可以构建在LV上。 但是能够在stratis管理分层存储上使用VDO吗?不能。 在什么样的场景下,重复数据率高 比如: 虚拟化场景或者云场景: 10VM 全是RHEL8系统.....
4、实现的过程就3个步骤 1: 消除0块 2: 去重 3: 压缩
案例:
1、安装VDO模块,需要的软件包是kmod-kvdo vdo
[root@kongd ~]# dnf install -y vdo kmod-kvdo
2、创建VDO卷
[root@kongd ~]# vdo create --name=vdo1 --device=/dev/nvme0n2 --vdoLogicalSize=5G
Creating VDO vdo1
Starting VDO vdo1
Starting compression on VDO vdo1
VDO instance 0 volume is ready at /dev/mapper/vdo1
3、分析一个VDO卷(deduplication重复删除数据 compression压缩)
[root@kongd ~]# vdo list
vdo1
[root@kongd ~]# vdo status --name vdo1
VDO status:
Date: '2020-01-08 01:08:30+08:00'
Node: kongd.com
Kernel module:
Loaded: true
Name: kvdo
Version information:
kvdo version: 6.2.0.293
Configuration:
File: /etc/vdoconf.yml
Last modified: '2020-01-08 01:06:34'
...
4、给vdo1一个xfs文件系统,之后挂载到/mnt/vdo1上
-K选项可防止立即丢弃文件系统中未使用的块,从而使命令返回更快
[root@kongd ~]# mkfs.xfs -K /dev/mapper/vdo1
meta-data=/dev/mapper/vdo1 isize=512 agcount=4, agsize=327680 blks
= sectsz=4096 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1
data = bsize=4096 blocks=1310720, 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
刷新存储设备
[root@kongd ~]# udevadm settle
[root@kongd ~]# mkdir /mnt/vdo1
[root@kongd ~]# mount /dev/mapper/vdo1 /mnt/vdo1
5、使用vdostats命令查看卷的初始统计信息和状态
[root@kongd ~]# vdostats --human-readable
Device Size Used Available Use% Space saving%
/dev/mapper/vdo1 5.0G 3.0G 2.0G 60% 98%
6、查看去重功能是否开启
[root@kongd ~]# vdo status --name=vdo1 | grep Deduplication
Deduplication: enabled
7、复制文件到挂载点查看
[root@kongd ~]# cp /media/cdrom/images/install.img /mnt/vdo1/
[root@kongd ~]# vdostats --human-readable
Device Size Used Available Use% Space saving%
/dev/mapper/vdo1 5.0G 3.4G 1.6G 68% 2%
8、再次复制两个相同文件查看
[root@kongd ~]# cp /media/cdrom/images/install.img /mnt/vdo1/install.img1
[root@kongd ~]# cp /media/cdrom/images/install.img /mnt/vdo1/install.img2
[root@kongd ~]# vdostats --human-readable
Device Size Used Available Use% Space saving%
/dev/mapper/vdo1 5.0G 3.4G 1.6G 68% 64%
[root@kongd ~]# du -sh /mnt/vdo1/
1.4G /mnt/vdo1/
总结:会发现传一个相同的文件,但是空间并不会发生变化。