注意
本文档适用于 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:只需设置 k 和 m。cauchy_good 技术可能更快,但您需要仔细选择 packetsize。所有 reed_sol_r6_op、liberation、blaum_roth、liber8tion 都是 RAID6 的等价物,因为它们只能配置 m=2。
注意
使用
blaum_roth编码时,默认的字大小w=7是次优的,因为blaum_roth在w+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 设备类名称将放置限制为特定类的设备(例如,
ssd或hdd)。- 类型:
String
- 必需:
否。
directory={directory}
- 描述:
设置从中加载纠删码插件的 directory 名称。
- 类型:
String
- 必需:
否。
- 默认值:
/usr/lib/ceph/erasure-code
--force
- 描述:
覆盖具有相同名称的现有配置文件。
- 类型:
String
- 必需:
否。