Jerasure 纠删码插件

jerasure 插件是最通用、最灵活的插件,也是 Ceph 纠删码存储池的默认插件。

jerasure 插件封装了 Jerasure 库,要想更好地理解各参数,建议您仔细阅读 jerasure 文档。

创建 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}

描述

各对象都被分割为数据块,分别存储于不同 OSD 。

类型

Integer

是否必需

Yes.

实例

4

m={coding-chunks}

描述

计算各对象的编码块、并存储于不同 OSD 。编码块的数量等同于在不丢数据的前提下允许同时失效的 OSD 数量。

类型

Integer

是否必需

Yes.

实例

2

technique={reed_sol_van|reed_sol_r6_op|cauchy_orig|cauchy_good|liberation|blaum_roth|liber8tion}

描述

reed_sol_van 技术更灵活:它足以设置 km 值。 cauchy_good 技术更快,但你得谨慎地选择 packetsize 值。 reed_sol_r6_opliberationblaum_rothliber8tion 都是与 RAID6 等价的技术,它们只能配置为 m=2

类型

String

是否必需

No.

默认值

reed_sol_van

packetsize={bytes}

描述

bytes 大小的包为单位进行编码。确定合适的包尺寸很难, jerasure 文档对此有很详细的描述。

类型

Integer

是否必需

No.

默认值

2048

crush-root={root}

描述

CRUSH 规则的第一步所用的 crush 桶的名字,例如 step take default

类型

String

是否必需

No.

默认值

default

crush-failure-domain={bucket-type}

描述

确保两个数据块不会存储到同一故障域中的桶里。例如,假设故障域是 host ,那么两个数据块就不会存储到同一主机。它被用于创建 CRUSH 规则阶梯,如 step chooseleaf host

类型

String

是否必需

No.

默认值

host

crush-device-class={device-class}

描述

使归置限于指定的设备类(比如 ssdhdd )之内,在 CRUSH 图内用的是 crush 设备类的名字。

类型

String

是否必需

No.

directory={directory}

描述

设置纠删码插件的路径,需是目录

类型

String

是否必需

No.

默认值

/usr/lib/ceph/erasure-code

--force

描述

覆盖同名配置。

类型

String

是否必需

No.