理解什么是VDO
VDO(Virtual Data Optimize)是RHEL8/Centos8上新推出的一个存储相关技术(最早在7.5测试版中开始测试),是Redhat收购的Permabit公司的技术。
VDO的主要作用是节省磁盘空间,比如让1T的磁盘能装下1.5T的数据,从而降低数据中心的成本。
关键原理主要是重删和压缩,重删就是硬盘里拷贝来相同的数据,以前要占多份空间,现在只需要1份空间就可以了。类似我们在百度网盘中上传一个大型软件安装包,能实现秒传,其实是之前就有,所以无需再传一遍,也无需再占百度一份空间。另一方面是数据压缩,类似于压缩软件的算法,也可以更加节省磁盘空间。
配置VDO
[root@cpe-172-100-108-1 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 100G 0 disk
├─sda1 8:1 0 2M 0 part
├─sda2 8:2 0 2G 0 part /boot
└─sda3 8:3 0 98G 0 part
├─rl-root 253:0 0 94G 0 lvm /
└─rl-swap 253:1 0 4G 0 lvm [SWAP]
sdb 8:16 0 1T 0 disk
sr0 11:0 1 1024M 0 rom
[root@cpe-172-100-108-1 ~]# vdo create --name=vdo_01 --device=/dev/sdb --vdoLogicalSize=1500G # 创建vdo虚拟磁盘,--name后跟vdo卷的名称,--device后跟真实的物理磁盘,--vdoLogicalSize后跟vdo卷的容量,这里按真实物理空间的1.5倍
Creating VDO vdo_01
The VDO volume can address 1020 GB in 510 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 vdo_01
Starting compression on VDO vdo_01
VDO instance 0 volume is ready at /dev/mapper/vdo_01
[root@cpe-172-100-108-1 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 100G 0 disk
├─sda1 8:1 0 2M 0 part
├─sda2 8:2 0 2G 0 part /boot
└─sda3 8:3 0 98G 0 part
├─rl-root 253:0 0 94G 0 lvm /
└─rl-swap 253:1 0 4G 0 lvm [SWAP]
sdb 8:16 0 1T 0 disk
└─vdo_01 253:2 0 1.5T 0 vdo
sr0 11:0 1 1024M 0 rom
[root@cpe-172-100-108-1 ~]# mkfs.xfs -K /dev/mapper/vdo_01 # 创建文件系统(xfs)
meta-data=/dev/mapper/vdo_01 isize=512 agcount=4, agsize=98304000 blks
= sectsz=4096 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1
data = bsize=4096 blocks=393216000, imaxpct=5
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=192000, version=2
= sectsz=4096 sunit=1 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@cpe-172-100-108-1 ~]# mkdir /vdodisk
[root@cpe-172-100-108-1 ~]# mount /dev/mapper/vdo_01 /vdodisk/
[root@cpe-172-100-108-1 ~]# df -hT
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 8.6M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/rl-root xfs 94G 7.0G 87G 8% /
/dev/sda2 xfs 2.0G 292M 1.8G 15% /boot
tmpfs tmpfs 374M 0 374M 0% /run/user/1000
/dev/mapper/vdo_01 xfs 1.5T 11G 1.5T 1% /vdodisk
[root@cpe-172-100-108-1 ~]#
测试
测试vdo的重删功能,同一测试文件往vdo所在挂载分区里拷贝了2次(重命名方式),当拷贝2+n次后,发现该测试文件没有再占用空间。