5.4. 擦除代码插件
Ceph 支持通过插件架构进行评分码,这意味着您可以使用不同类型的算法创建纠删代码池。Ceph 支持:- Jerasure (Default)
5.4.1. Jerasure Erasure Code 插件 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
jerasure 插件是最通用的灵活插件。它也是 Ceph 纠删代码池的默认值。
jerasure 插件封装 JerasureH 库。有关参数的详细信息,请参阅 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>] \
[directory=<directory>] \
[--force]
其中:
- k
- 描述
- 每个对象分割为 data-chunks 的部分,各自存储在不同的 OSD 上。
- 类型
- 整数
- 必填
- 是。
- 示例
-
4
- m
- 描述
- 每个对象 的计算编码区块,并将它们存储在不同的 OSD 中。编码区块数也是可以停机的 OSD 的数量,而不丢失数据。
- 类型
- 整数
- 必填
- 是。
- 示例
- 2
- technique
- 描述
- 更灵活的技术是 reed_sol_van ;它足以设置 k 和 m。cauchy_good 技术更快,但您需要仔细选择 数据包大小。所有 reed_sol_r6_op,liberation,blaum_roth,liber8tion 是 RAID6 等效的,在这种意义上,它们只能被配置为 m=2。
- 类型
- 字符串
- 必填
- No.
- 有效设置
-
reed_sol_vanreed_sol_r6_opcauchy_origcauchy_goodliberationblaum_rothliber8tion - 默认
-
reed_sol_van
- packetssize
- 描述
- 该编码将一次在数据包 字节数 上进行。选择正确的数据包大小比较困难。jerasure 文档包含关于此主题的广泛信息。
- 类型
- 整数
- 必填
- No.
- 默认
-
2048
- crush-root
- 描述
- 用于规则第一步的 CRUSH bucket 的名称。例如,使用 default 步骤。
- 类型
- 字符串
- 必填
- No.
- 默认
- default
- crush-failure-domain
- 描述
- 确定在具有相同故障域的存储桶中没有两个块。例如,如果故障域是 主机 没有两个块,则将在同一主机上存储两个块。它用于创建规则步骤,如 步骤选择leaf host。
- 类型
- 字符串
- 必填
- No.
- 默认
-
主机
- 目录
- 描述
- 设置载入 code 插件的目录名称。
- 类型
- 字符串
- 必填
- No.
- 默认
-
/usr/lib/ceph/erasure-code
- --force
- 描述
- 使用相同的名称覆盖现有配置集。
- 类型
- 字符串
- 必填
- No.
5.4.2. 控制 CRUSH 放置 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
默认 CRUSH 规则提供位于不同主机上的 OSD。例如:
chunk nr 01234567
step 1 _cDD_cDD
step 2 cDDD____
step 3 ____cDDD
需要 8 个 OSD,每个块对应一个。如果主机位于两个相邻的机架中,则前四个块可以放在第一个机架中,后 4 个放在第二个机架中。如果恢复单个 OSD 丢失,不需要在两个机架之间使用带宽。
例如:
crush-steps='[ [ "choose", "rack", 2 ], [ "chooseleaf", "host", 4 ] ]'
将创建一个规则,用于选择两个类型为 rack 的 crush bucket,并且分别选择四个 OSD,各自位于不同 bucket 中类型 的主机。
也可以手动创建该规则以进行更精细的控制。