注意

本文档适用于 Ceph 的开发版本。

Jerasure 纠删码插件

jerasure 插件是一个通用且灵活的插件。然而,jerasure 库不再维护,并且没有更新以支持现代 CPU 指令,这些指令可以提高编码和解码数据时的性能。

jerasure 插件封装了 Jerasure 库。建议阅读 jerasure 文档以了解参数。请注意,截至 2023 年,jerasure.org 网站可能已不再与原始项目或合法实体相关联。

创建 jerasure 配置文件

创建新的 jerasure 纠删码配置文件

ceph osd erasure-code-profile set {name} \
  plugin=jerasure \
  k={data-chunks} \
  m={coding-chunks} \
  technique={reed_sol_van|reed_sol_r6_op|cauchy_orig|cauchy_good|liberation|blaum_roth|liber8tion} \
  [crush-root={root}] \
  [crush-failure-domain={bucket-type}] \
  [crush-device-class={device-class}] \
  [directory={directory}] \
  [--force]

其中

k={data chunks}

描述:

每个对象被分成 data-chunks 份,每份存储在一个不同的 OSD 上。

类型:

整数

必需:

是。

示例:

4

m={coding-chunks}

描述:

计算每个对象的 coding chunks 并将它们存储在不同的 OSD 上。编码块的数量也是在不丢失数据的情况下可以停止运行的 OSD 数量。

类型:

整数

必需:

是。

示例:

2

technique={reed_sol_van|reed_sol_r6_op|cauchy_orig|cauchy_good|liberation|blaum_roth|liber8tion}

描述:

最灵活的技术是 reed_sol_van:只需设置 kmcauchy_good 技术可能更快,但您需要仔细选择 packetsize。所有 reed_sol_r6_opliberationblaum_rothliber8tion 都是 RAID6 的等价物,因为它们只能配置 m=2

注意

使用 blaum_roth 编码时,默认的字大小 w=7 是次优的,因为 blaum_rothw+1 是素数时效果最好。使用 technique=blaum_roth 创建新的纠删码配置文件时,将 w 设置为比素数小一个整数的数字(例如,6)。有关此默认值为何无法在源代码中轻易更改的信息,请参阅 Loic Dachary 对 ceph/ceph 的 commit f51d21b,有关使用 Blaum-Roth 编码时适用于 w 的限制的明确声明,请参阅 Plank 和 Greenan 的“Jerasure: A Library in C Facilitating Erasure Coding for Storage Applications”的第 29 页第二个要点。(有关使用 blaum_roth 编码时 w 的正确值的信息由 Benjamin Mare 于 2024 年 9 月提供给 Ceph 上游。)

类型:

String

必需:

否。

默认值:

reed_sol_van

packetsize={bytes}

描述:

编码将一次在大小为 bytes 的数据包上完成。选择正确的数据包大小很困难。jerasure 文档包含有关此主题的广泛信息。

类型:

整数

必需:

否。

默认值:

2048

crush-root={root}

描述:

用于 CRUSH 规则第一步的 crush 桶的名称。例如 step take default

类型:

String

必需:

否。

默认值:

default

crush-failure-domain={bucket-type}

描述:

确保没有两个块位于具有相同故障域的桶中。例如,如果故障域是 host,则不会有两个块存储在同一主机上。它用于创建 CRUSH 规则步骤,例如 step chooseleaf host

类型:

String

必需:

否。

默认值:

host

crush-device-class={device-class}

描述:

使用 CRUSH 映射中的 crush 设备类名称将放置限制为特定类的设备(例如,ssdhdd)。

类型:

String

必需:

否。

directory={directory}

描述:

设置从中加载纠删码插件的 directory 名称。

类型:

String

必需:

否。

默认值:

/usr/lib/ceph/erasure-code

--force

描述:

覆盖具有相同名称的现有配置文件。

类型:

String

必需:

否。

由 Ceph 基金会为您呈现

Ceph 文档是由非营利性 Ceph 基金会 资助和托管的社区资源。如果您希望支持这项工作和我们的其他努力,请考虑 立即加入