第 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 的不同方面如何提供给系统。

表 1.1. LVM 和 LVM 精简置备的 VDO 组件的比较

 物理设备置备的设备

LVM 上的 VDO

VDO 池 LV

VDO LV

LVM 精简配置

精简池(thin poll)

精简卷(thin volume)

因为 VDO 是精简置备的,所以文件系统和应用程序只会看到使用的逻辑空间,而不是实际可用的物理空间。使用脚本来监控可用的物理空间,并在使用超过阈值时生成警报。有关监控可用的 VDO 空间的详情,请参考 Monitoring VDO 部分。