红帽企业Linux8使用vdo功能,可以优化块设备上数据空间占用问题,它可以减少块设备上的磁盘使用空间,同时最大限度减少数据重复,从而节省磁盘空间。
Vdo包含两个模块:Kvdo用于控制数据压缩,uds用于重复数据的删除。
vdo层位于现在块设备(RAID或者本地磁盘)之上,存储层(如LVM和文件系统)位于vdo之上。
对于Vdo的重删压缩,是什么一个意思呢?
比如 挂载到/data上,那么这个目录上如果有重复的数据,那么vdo就可以对这个目录上重复的数据进行删除重复和压缩的。这个功能是默认的
关于vdo的特性说明:
1、利用vdo创建的逻辑设备成为ydo卷,vdo卷与磁盘类似,可以将这些卷格式化为所需要的文件系统
类型。此外,还可以将vdo卷用作LVM物理卷。
2、在创建ydo卷时, 可以指定块设备,以及vdo向用户显示的逻辑设备的名称。也可以指定vdo卷的逻
辑大小,vdo卷的逻辑大小可以大于实际块设备的物理大小。
3、如果未指定逻辑大小, 则ydo会将实际物理大小视为卷的逻辑大小,这种方式有利于提高性能,但是
会降低存储空间的使用效率,应视情况而定。
P. 由于ydo卷采用了精简配置,因此用户只能看到正在使用的逻辑空间,而无法了解实际可用的物理空
间。
4、vdo卷的逻辑大小超过实际物理大小, 应使用vdostatus -verbose命令查看实际使用情况。
[root@ServerB ~]# vdo create --name=vdo0 --device=/dev/sdc --vdoLogicalSize=15G
Creating VDO vdo0
The VDO volume can address 16 GB in 8 data slabs, each 2 GB.
It can grow to address at most 16 TB of physical storage in 8192 slabs.
If a larger maximum size might be needed, use bigger slabs.
Starting VDO vdo0
Starting compression on VDO vdo0
VDO instance 0 volume is ready at /dev/mapper/vdo0
[root@ServerB ~]# vdo list #查看vdo卷列表
vdo0
[root@ServerB ~]# mkdir /file
[root@ServerB ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─rhel-root 253:0 0 17G 0 lvm /
└─rhel-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
sdc 8:32 0 20G 0 disk
└─vdo0 253:2 0 15G 0 vdo
sdd 8:48 0 20G 0 disk
sr0 11:0 1 1024M 0 rom
[root@ServerB ~]# vdostats --human-readable vdostats --human-readable #用vdostatus来查看卷的状态
Device Size Used Available Use% Space saving%
/dev/mapper/vdo0 20.0G 4.0G 16.0G 20% N/A
[root@ServerB ~]# mkfs.xfs /dev/mapper/vdo0 #将vdo格式化为xfs文件系统
meta-data=/dev/mapper/vdo0 isize=512 agcount=4, agsize=983040 blks
= sectsz=4096 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1
data = bsize=4096 blocks=3932160, 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
Discarding blocks...Done.
[root@ServerB ~]# mount /dev/mapper/vdo0 /file #挂载在file目录上
[root@ServerB ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─rhel-root 253:0 0 17G 0 lvm /
└─rhel-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
sdc 8:32 0 20G 0 disk
└─vdo0 253:2 0 15G 0 vdo /file
sdd 8:48 0 20G 0 disk
sr0 11:0 1 1024M 0 rom
[root@ServerB ~]# df -TH /file
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/vdo0 xfs 17G 147M 16G 1% /file #这个是逻辑上的空间
[root@ServerB ~]# !vd
vdostats --human-readable
Device Size Used Available Use% Space saving%
/dev/mapper/vdo0 20.0G 4.0G 16.0G 20% 98%
[root@ServerB ~]# ll /file
总用量 1658112
-rw-r--r--. 1 root root 1697906688 8月 22 05:14 ubuntu.iso
[root@ServerB ~]# df -TH /file ·占用的逻辑空间
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/vdo0 xfs 17G 1.9G 15G 12% /file
[root@ServerB ~]# !vd 占用的物理空间
vdostats --human-readable
Device Size Used Available Use% Space saving%
/dev/mapper/vdo0 20.0G 5.6G 14.4G 27% 1%
[root@ServerB ~]# ll /file 上传第二个改名的相同文件
总用量 3316224
-rw-r--r--. 1 root root 1697906688 8月 22 05:16 ubuntu-16.04.7-desktop-amd64.iso
-rw-r--r--. 1 root root 1697906688 8月 22 05:14 ubuntu.iso
[root@ServerB ~]# df -TH /file #可以看到,两个文件都占用了逻辑空间。
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/vdo0 xfs 17G 3.6G 13G 23% /file
[root@ServerB ~]# !vd #但是可以看到,物理空间一直都没有动。
vdostats --human-readable
Device Size Used Available Use% Space saving%
/dev/mapper/vdo0 20.0G 5.6G 14.4G 27% 50%