Red Hat Training

A Red Hat training course is available for RHEL 8

2.6. 优化 UDS 索引

您可以配置特定的 UDS 索引设置以便在您的系统中优化它。

重要

创建 VDO 卷后,您无法更改 UDS 索引的属性。

2.6.1. VDO 卷的组件

VDO 使用块设备作为后备存储,它包括由一个或多个磁盘、分区甚至平面文件组成的物理存储聚合。当存储管理工具创建 VDO 卷时,VDO 为 UDS 索引和 VDO 卷保留卷空间。UDS 索引和 VDO 卷会一起交互,以提供重复的块存储。

图 2.2. VDO 磁盘机构

VDO 磁盘机构

VDO 解决方案包括以下组件:

kvdo

载入 Linux 设备映射器层的内核模块提供去除重复数据的、压缩的和精简配置的块存储卷。

kvdo 模块公开一个块设备。对于块存储,您可以直接访问块存储或通过 Linux 文件系统(如 XFS 或 ext4)呈现它。

kvdo 收到一个读取 VDO 卷中数据的逻辑块的请求时,它会将请求的逻辑块映射到底层的物理块上,然后读取并返回请求的数据。

kvdo 收到一个向 VDO 卷写数据块的请求时,它首先检查请求是 DISCARD 还是 TRIM 请求,或者数据是否统一为零。如果其中任何一个条件为真,则 kvdo 会更新其块映射,并确认请求。否则,VDO 会处理并优化数据。

uds

与卷上通用的去除重复数据服务(UDS)索引通信的内核模块,并分析数据的重复内容。对于每个新的数据,UDS 可以快速地判断该数据是否与之前存储的数据相同。如果索引发现匹配项,则存储系统可在内部引用现有项,以避免多次保存相同的信息。

UDS 索引作为 uds 内核模块运行在内核中。

命令行工具
用于配置和管理优化的存储。

2.6.2. UDS 索引

VDO 使用名为 UDS 的高性能 deduplication 索引来检测正在存储的数据重复块。

UDS 索引提供了 VDO 产品的基础。对于每个新数据段,它会快速确定该数据段是否与之前存储的任何数据段相同。如果索引发现匹配项,则存储系统可在内部引用现有项,以避免多次保存相同的信息。

UDS 索引作为 uds 内核模块运行在内核中。

去除重复数据窗口 是索引记住的之前写入的块的数量。可配置去除重复数据窗口窗口的大小。对于给定的窗口大小,索引需要特定数量的 RAM 以及特定数量的磁盘空间。窗口的大小通常通过使用 --indexMem=size 选项指定索引内存的大小来决定。然后,VDO 决定自动使用的磁盘空间量。

UDS 索引由两个部分组成:

  • 在内存中使用紧凑表示,每个唯一块最多包含一个条目。
  • 记录在索引发生时的相关块名称的磁盘组件,按顺序记录。

UDS 在内存中平均每个条目使用 4 个字节,包括缓存。

磁盘上的组件维护传递给 UDS 的数据的相关历史记录。UDS 为属于这个去除重复数据窗口中的数据提供去除重复数据建议,其中包括最近看到的块的名称。去除重复数据窗口允许 UDS 尽可能高效地索引数据,同时限制索引大型数据存储库所需的内存量。尽管去除重复数据窗口具有局限性,但大部分具有大量去除重复数据的数据集也表现出高度的时间局部性 - 换句话说,大多数去除重复数据发生在几乎同时写入的块集合中。另外,通常要写入的数据通常可能会与最近写入的数据重复。因此,对于给定时间间隔的工作负载,去除重复数据比率通常相同,无论 UDS 仅索引了最新的数据还是所有数据。

由于重复数据往往会表现出时间局部性,因此很少需要对存储系统中的每个块进行索引。否则,索引内存的成本会耗尽导致复制性能降低的存储成本。索引大小要求与数据刷新率紧密相关。例如,假设存储系统的总容量为 100 TB,但每周的摄取率为 1 TB 。UDS 窗口的 deduplication 窗口为 4TB,UDS 可探测到上个月写入的数据的最大冗余度。