vdo虚拟数据优化器
vdo
和百度网盘的秒传
技术很像.
如果校验
发现这个文件已经存在
,就创建一个链接
,而不是真的复制一份,实现重复数据不重复写入
.
安装kmod-kvdo和vdo
# 安装kmod-kvdo包和vdo包
yum install vdo kmod-kvdo -y
创建vdo
让磁盘以虚假的形式变大
准备一块磁盘
# 查看当前磁盘大小
fdisk -lu /dev/sda
## 该磁盘大小是20G
Disk /dev/sda:20 GiB,21474836480 字节,41943040 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
创建一个vdo卷
# 创建一个vdo卷,指定逻辑大小使1000G
vdo create --name vdo1 --device /dev/sda --vdoLogicalSize 1000
G
## 在/dev/mapper/目录下已经创建了一个vdo1目录(dm设备,逻辑卷)
[rocky1 root ~]# ls /dev/mapper/vdo1 -l
lrwxrwxrwx. 1 root root 7 10月 30 14:52 /dev/mapper/vdo1 -> ../dm-2
# 格式化这个逻辑卷
mkfs.xfs /dev/mapper/vdo1
# 查看磁盘大小
[rocky1 root ~]# fdisk -lu /dev/mapper/vdo1
Disk /dev/mapper/vdo1:1000 GiB,1073741824000 字节,262144000 个扇区
单元:扇区 / 1 * 4096 = 4096 字节
扇区大小(逻辑/物理):4096 字节 / 4096 字节
I/O 大小(最小/最佳):4096 字节 / 4096 字节
## vdo卷是100G
挂载VDO卷
# 创建挂载点
mkdit /vdo1
# 挂载vdo卷
mount /dev/mapper/vdo1 /vdo1/
# 查看挂载点
[rocky1 root ~]# df -Th /vdo1
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/vdo1 xfs 1000G 7.1G 993G 1% /vdo1
持久挂载vdo卷
vdo
写fstab
一定要加参数_netdev 1 2
否则重启后
会进入紧急模式
,系统起不来
# 编辑/etc/fstab
vim /etc/fstab
# 写入挂载配置,需要加_netdev,防止在系统就绪之前开始挂载文件系统
/dev/mapper/vdo1 /vdo1 xfs _netdev 1 2
## 第五列dump选项,是选择是否备份,1是开启0是关闭
## 第六列fsck选项,fsck命令通过检测该字段来决定文件系统通过什么顺序来扫描检查,根文件系统/对应该字段的值应该为1,其他文件系统应该为2。若文件系统无需在启动时扫描检查,则设置该字段为0。
查看vdo真正的大小
# 显示vdo真实大小
[rocky1 root ~]# vdostats
Device 1K-blocks Used Available Use% Space saving%
/dev/mapper/vdo1 20971520 4207216 16764304 20% 99%
# 以人类易读的方式来显示vdo真实大小
[rocky1 root ~]# vdostats --human-readable
Device Size Used Available Use% Space saving%
/dev/mapper/vdo1 20.0G 4.0G 16.0G 20% 99%
vdo重复文件测试
# 在/vdo1中存放一个iso文件
D:\Downloads\iso> scp .\Rocky-8.4-x86_64-minimal.iso rocky1:/vdo1
Rocky-8.4-x86_64-minimal.iso 100% 1889MB 32.7MB/s 00:57
# 查看/vdo1目录下文件
[rocky1 root /vdo1]# ls /vdo1/
Rocky-8.4-x86_64-minimal.iso
# df -Th查看/vdo1空间占用情况
[rocky1 root /vdo1]# df -Th /dev/mapper/vdo1
/dev/mapper/vdo1 xfs 1000G 8.9G 991G 1% /vdo1
# 查看vdo真实磁盘占用情况
[rocky1 root /vdo1]# vdostats --human-readable
Device Size Used Available Use% Space saving%
/dev/mapper/vdo1 20.0G 5.8G 14.2G 28% 25%
# 将这个iso文件复制一份
[rocky1 root /vdo1]# cp Rocky-8.4-x86_64-minimal.iso Rocky-8.4-x86_64-minimal1.iso
[rocky1 root /vdo1]# ls /vdo1/
Rocky-8.4-x86_64-minimal1.iso Rocky-8.4-x86_64-minimal.iso
# 再次查看vdo真实磁盘占用情况,实际占用空间没有变化
[rocky1 root /vdo1]# vdostats --human-readable
Device Size Used Available Use% Space saving%
/dev/mapper/vdo1 20.0G 5.8G 14.2G 28% 58%
## 但是df -Th查看到的空间占用有变化
[rocky1 root /vdo1]# df -Th /dev/mapper/vdo1
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/vdo1 xfs 1000G 11G 989G 2% /vdo1
网盘的秒传技术就是这么实现的,其实底层根本没多少物理磁盘.
vdo的常用查看命令
列出所有vdo
# 列出所有vdo
vdo list
查看vdo的状态
vdo status vdo名称
# 查询是否压缩
vdo status |grep -i compress
# 查询是否开启重复文件删除
vdo status |grep -i deduplication
删除vdo
vdo remove --name vdo名称