5.4. 纠删代码插件
Ceph 支持通过插件架构进行评分码,这意味着您可以使用不同类型的算法创建纠删代码池。Ceph 支持 Jerasure。
5.4.1. 使用 jerasure 纠删代码插件创建新的纠删代码配置集 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
jerasure 插件是最通用的和灵活的插件。这也是 Ceph 纠删代码池的默认设置。
jerasure 插件封装 JerasureH 库。有关参数的详细信息,请参阅 jerasure 文档。
要使用 jerasure 插件创建新的纠删代码配置集,请运行以下命令:
语法
其中:
- k
- 描述
- 每个对象分割为 data-chunks 部分,各自存储在不同的 OSD 中。
- 类型
- 整数
- 必填
- 是。
- 示例
-
4
- m
- 描述
- 每个对象 的计算编码区块,并将其存储在不同的 OSD 中。编码区块数也是可以停机的 OSD 的数量,而不丢失数据。
- 类型
- 整数
- 必填
- 是。
- 示例
- 2
- technique
- 描述
- 更灵活的技术被 reed_sol_van ;它足以设置 k 和 m。cauchy_good 技术可能会更快,但您需要仔细选择 packetsize。所有 reed_sol_r6_op,liberation,blaum_roth,liber8tion 是 RAID6 等效的,它们只能在 m=2 中配置。
- 类型
- 字符串
- 必填
- No.
- 有效设置
-
reed_sol_van
reed_sol_r6_op
cauchy_orig
cauchy_good
liberation
blaum_roth
liber8tion
- 默认
-
reed_sol_van
- packetsize
- 描述
- 编码将一次对 字节大小 的数据包进行。选择正确的数据包大小比较困难。jerasure 文档包含关于此主题的大量信息。
- 类型
- 整数
- 必填
- No.
- 默认
-
2048
- crush-root
- 描述
- 用于规则第一步的 CRUSH bucket 的名称。例如,步骤需要默认。
- 类型
- 字符串
- 必填
- No.
- 默认
- default
- crush-failure-domain
- 描述
- 确定在具有相同故障域的存储桶中没有两个块。例如,如果故障域 主机 没有两个块存储在同一主机上。它用于创建规则步骤,如 step chooseleaf 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
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 ] ]'
crush-steps='[ [ "choose", "rack", 2 ], [ "chooseleaf", "host", 4 ] ]'
创建一个规则,用于选择类型为 rack 的两个 CRUSH bucket,各自选择四个 OSD,各自位于 主机 的不同 bucket 中。
也可以手动创建该规则以进行更精细的控制。