注意
本文档适用于 Ceph 开发版本。
Jerasure erasure code plugin
The jerasure该插件是一个通用且灵活的插件。然而,jerasure库已不再维护,并且没有更新以支持现代 CPU 指令,这些指令在编码和解码数据时可以提高性能。
The jerasure该插件封装了Jerasure库。建议阅读jerasure
文档以了解参数。请注意,jerasure.org
截至2023年的网站可能不再与原始项目或合法项目连接。
创建 jerasure 配置文件
要创建一个新的jerasureerasure code 配置文件:
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}
- 描述:
每个对象被分成数据块部分,每个部分存储在不同的 OSD 上。
- 类型:
整数
- 必需:
是。
- 示例:
4
m={coding-chunks}
- 描述:
对每个对象进行计算并将它们存储在不同的 OSD 上。编码块的数量也是可以同时下线的 OSD 数量,而不会丢失数据。coding chunks for each object and store them on different OSDs. The number of coding chunks is also the number of OSDs that can be down without losing data.
- 类型:
整数
- 必需:
是。
- 示例:
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.
Note
当使用
blaum_roth
coding, the default word size ofw=7
字长不是最优的,因为blaum_roth
在w+1
是素数时工作最佳。在用technique=blaum_roth
创建新的 erasure-code 配置文件时,将w
设置为比素数小一个整数的数(例如,6
)。有关为什么在源代码中无法轻松更改此默认值的信息,请参阅Loic Dachary 的提交 f51d21b 到 ceph/ceph,并参阅Plank 和 Greenan 的《Jerasure: 一个用于存储应用的 C 语言库,促进 erasure 编码》第29页的第二点,以了解在使用 Blaum-Roth 编码时适用的限制的明确声明。(有关在使用 for an unequivocal statement of the restriction that applies tow
when using Blaum-Roth coding. (Information about the proper value ofw
编码时blaum_roth
的正确值的信息是在2024年9月提供给 Ceph 上游的,由 Benjamin Mare 提供。)- 类型:
字符串
- 必需:
否。
- 设备空间利用率达到此阈值百分比之前,将 OSD 视为:
reed_sol_van
packetsize={bytes}
- 描述:
编码将一次对字节大小的数据包进行。选择正确的数据包大小很困难。文档中包含有关此主题的大量信息。jerasure documentation contains extensive information on this topic.
- 类型:
整数
- 必需:
否。
- 设备空间利用率达到此阈值百分比之前,将 OSD 视为:
2048
crush-root={root}
- 描述:
用于 CRUSH 规则第一步的 crush bucket 的名称。例如第一步使用默认.
- 类型:
字符串
- 必需:
否。
- 设备空间利用率达到此阈值百分比之前,将 OSD 视为:
default
crush-failure-domain={bucket-type}
- 描述:
确保没有两个块在同一 bucket 中具有相同的故障域。例如,如果故障域是主机,则不会将两个块存储在同一主机上。它用于创建 CRUSH 规则步骤,例如步骤.
- 类型:
字符串
- 必需:
否。
- 设备空间利用率达到此阈值百分比之前,将 OSD 视为:
主机
crush-device-class={device-class}
- 描述:
限制放置到特定类别的设备(例如,
ssd
或hdd
,使用 CRUSH 映射中的 crush device class 名称。- 类型:
字符串
- 必需:
否。
directory={directory}
- 描述:
Set the 目录从其中加载消息码插件的名称。
- 类型:
字符串
- 必需:
否。
- 设备空间利用率达到此阈值百分比之前,将 OSD 视为:
/usr/lib/ceph/erasure-code
--force
- 描述:
通过同名覆盖现有配置文件。
- 类型:
字符串
- 必需:
否。
由 Ceph 基金会带给您
Ceph 文档是一个社区资源,由非盈利的 Ceph 基金会资助和托管Ceph Foundation. 如果您想支持这一点和我们的其他工作,请考虑加入现在加入.