第 1 章 LVM 的 VDO 介绍
Virtual Data Optimizer(VDO)为存储提供内联块级的重复数据删除(deduplication)、压缩和精简置备。您可以将 VDO 作为逻辑卷管理器 (LVM) 逻辑卷管理器 (LVM) 逻辑卷 (LV) 类型进行管理,类似于 LVM 精简配置的卷。
LVM (LVM-VDO)上的 VDO 卷包含以下组件:
- VDO 池 LV
- 这是用于 VDO LV 存储、重复数据删除和压缩的后端物理设备。VDO 池 LV 设置 VDO 卷的物理大小,即 VDO 可保存到磁盘中的数据量。
- 目前,每个 VDO 池 LV 只能有一个 VDO LV。因此,VDO 会单独压缩每个 VDO LV。存储在独立 LV 上的重复数据不会影响同一 VDO 卷的数据优化。
- VDO LV
- 这是 VDO 池 LV 上的虚拟置备设备。VDO LV 设定 VDO 卷的置备和逻辑大小,即应用程序在重复数据删除和压缩发生前可写入卷的数据量。
- kvdo
- 载入 Linux 设备映射器层的内核模块提供去除重复数据的、压缩的和精简配置的块存储卷。
-
kvdo
模块公开 VDO 池 LV 用于创建 VDO LV 的块设备。然后,系统将使用 VDO LV。 -
当
kvdo
收到一个读取 VDO 卷中数据的逻辑块的请求时,它会将请求的逻辑块映射到底层的物理块上,然后读取并返回请求的数据。 -
当
kvdo
收到一个向 VDO 卷写数据块的请求时,它首先检查请求是 DISCARD 还是 TRIM 请求,或者数据是否统一为零。如果满足其中任何一个条件,则kvdo
会更新其块映射并确认请求。否则,VDO 会处理并优化数据。 - kvdo 模块在内部利用卷上的通用重复数据删除服务 (UDS) 索引,并分析数据,因为它被接收用于重复数据。对于每个新的数据,UDS 可以快速地判断该数据是否与之前存储的数据相同。如果索引发现匹配项,则存储系统可以验证该匹配项的准确性,然后更新内部引用以避免多次存储相同的信息。
如果您已经熟悉 LVM 精简配置的实现结构,您可以参考表 1.1 以了解 VDO 的不同方面如何提供给系统。
物理设备 | 置备的设备 | |
---|---|---|
LVM 上的 VDO | VDO 池 LV | VDO LV |
LVM 精简配置 | 精简池(thin poll) | 精简卷(thin volume) |
因为 VDO 是精简置备的,所以文件系统和应用程序只会看到使用的逻辑空间,而不是实际可用的物理空间。使用脚本来监控可用的物理空间,并在使用超过阈值时生成警报。有关监控可用的 VDO 空间的详情,请参考 Monitoring VDO 部分。