1. 前言
本文主要介绍VDO (Virtual Data Optimizer)的功能以及如何创建一个VDO存储设备,提供重复数据删除的块存储功能。
2. 理解VDO
VDO (Virtual Data Optimizer)是一种块虚拟化技术,它允许您轻松地创建压缩和重复数据删除的块存储池。
VDO会按以下顺序对数据实施三个阶段的处理,以减少存储设备上的空间占用:
- 零块消除将过滤掉仅包含零(0)的数据块,且仅在元数据中记录这些块的信息。非零数据块随即,被传递到下一个处理阶段。该阶段将启用VDO设备中的精简配置功能。
-
重复数据删除是一种通过消除重复块的多个副本来减少存储资源消耗的技术。重复数据删除将去除冗余的数据块。在创建相同数据的多个副本时,VDO会检测重复数据块并更新元数据,以便使用这些重复块来引用原始数据块,而不会创建冗余数据块。通用重复数据删除服务(UDS)内核模块将通过其维护的元数据来检查数据的冗余。该内核模块是作为VDO的一部分而提供的。VDO不是多次写入相同的数据,而是检测每个重复的块,并将其记录为对原始块的引用。VDO维护一个从逻辑块地址(由VDO上面的存储层使用)到物理块地址(由VDO下面的存储层使用)的映射。
重复数据删除后,可以将多个逻辑块地址映射到相同的物理块地址;这些被称为共享块。块共享对存储的用户是不可见的,如果VDO不存在,用户就会读写块。当一个共享块被覆盖时,会分配一个新的物理块来存储新的块数据,以确保映射到共享物理块的其他逻辑块地址不被修改。
- 最后一个阶段是压缩。压缩是一种数据缩减技术,可以很好地处理那些不一定表现出块级冗余的文件格式,比如日志文件和数据库。kvdo内核模块使用LZ4压缩对块进行压缩,并以4KB块进行分组。
VDO解决方案由以下组件组成:
kvdo
加载到Linux Device Mapper层的内核模块,提供经过重复数据删除、压缩和精简配置的块存储卷。
uds
与卷上的UDS (Universal Deduplication Service)索引通信,分析副本数据的内核模块。
3. 物理大小和有效的物理大小
物理大小和可用物理大小都描述了VDO可以利用的块设备上的磁盘空间量:
物理大小与底层块设备相同。VDO将此存储用于:
- 用户数据,可能经过重复数据删除和压缩
- VDO元数据,如UDS索引
可用物理大小是VDO能够用于用户数据的物理大小的一部分。
- 它等价于物理大小减去元数据的大小,再减去将卷分成多个slabs块后的剩余部分除以给定的slabs块大小。
4. 逻辑大小
如果没有指定--vdoLogicalSize
选项,逻辑卷大小默认为可用的物理卷大小。
VDO目前支持物理卷大小254倍的任意逻辑大小,绝对最大逻辑大小为4PB。
5. 在Linux系统上配置VDO存储
安装vdo组件:
yum install vdo kmod-kvdo
创建VDO卷:
vdo create --name=vdo0 --device=/dev/sdb --vdoLogicalSize=1T
格式化VDO卷:
mkfs.xfs -K /dev/mapper/vdo0
临时挂载VDO卷:
mkdir /mnt/VDOVolume
mount /dev/mapper/vdo0 /mnt/VDOVolume
chmod a+rwx /mnt/VDOVolume
开机自动挂载:
修改/etc/fstab
vim /etc/fstab
添加以下内容:
/dev/mapper/vdo0 /mnt/VDOVolume xfs defaults,x-systemd.requires=vdo.service 0 0
6. 总结
通过本教程,您应该了解VDO的工作原理以及如何配置VDO卷了吧?如有想法,可以在评论区留言。
评论前必须登录!
注册