5.4. 纠删代码插件
Ceph 支持通过插件架构进行评分码,这意味着您可以使用不同类型的算法创建纠删代码池。Ceph 支持 Jerasure。
5.4.1. 使用 jerasure 纠删代码插件创建一个新的纠删代码配置集
jerasure 插件是最通用的且灵活的插件。也是 Ceph 纠删代码池的默认设置。
jerasure 插件封装 JerasureH 库。有关参数的详情,请查看 jerasure 文档。
要使用 jerasure 插件创建新的纠删代码配置集,请运行以下命令:
语法
ceph osd erasure-code-profile set NAME \ plugin=jerasure \ k=DATA_CHUNKS \ m=DATA_CHUNKS \ technique=TECHNIQUE \ [crush-root=ROOT] \ [crush-failure-domain=BUCKET_TYPE] \ [directory=DIRECTORY] \ [--force]
其中:
- k
- 描述
- 每个对象被分成 data-chunks 部分,各自存储在不同的 OSD 上。
- 类型
- 整数
- 必填
- 是。
- 示例
-
4
- m
- 描述
- 每个对象 的计算编码区块,并将其存储在不同的 OSD 中。编码区块数也是可以停机的 OSD 的数量,而不丢失数据。
- 类型
- 整数
- 必填
- 是。
- 示例
- 2
- technique
- 描述
- reed_sol_van 更灵活的技术是 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
需要 8 个 OSD,每个块对应一个。如果主机位于两个相邻的机架中,则前四个块可以放在第一个机架中,后 4 个放在第二个机架中。如果恢复单个 OSD 丢失,不需要在两个机架之间使用带宽。
例如:
crush-steps='[ [ "choose", "rack", 2 ], [ "chooseleaf", "host", 4 ] ]'
创建一个规则,用于选择两个类型为 rack 的 CRUSH bucket,各自选择四个 OSD,它们各自位于主机类型的不同 bucket 中。
也可以手动创建该规则以进行更精细的控制。