注意
本文档适用于 Ceph 开发版本。
SHEC erasure code plugin
The shec该插件封装了多个SHEC库。它允许Ceph比Reed-Solomon码更有效地恢复数据。
创建一个SHEC配置文件
要创建一个新的shecerasure code 配置文件:
ceph osd erasure-code-profile set {name} \
plugin=shec \
[k={data-chunks}] \
[m={coding-chunks}] \
[c={durability-estimator}] \
[crush-root={root}] \
[crush-failure-domain={bucket-type}] \
[crush-device-class={device-class}] \
[directory={directory}] \
[--force]
其中:
k={data-chunks}
- 描述:
每个对象被分成数据块部分,每个部分存储在不同的 OSD 上。
- 类型:
整数
- 必需:
否。
- 设备空间利用率达到此阈值百分比之前,将 OSD 视为:
4
m={coding-chunks}
- 描述:
对每个对象进行计算并将它们存储在不同的 OSD 上。编码块的数量也是可以同时下线的 OSD 数量,而不会丢失数据。编码块对每个对象,并将它们存储在不同的OSD上。编码块的数量编码块不一定等于可以失效而不丢失数据的OSD数量。
- 类型:
整数
- 必需:
否。
- 设备空间利用率达到此阈值百分比之前,将 OSD 视为:
3
c={durability-estimator}
- 描述:
每个奇偶校验块的数量,其中每个奇偶校验块在其计算范围内包含每个数据块。该数字用作持久性估计器。
- 类型:
整数
- 必需:
否。
- 设备空间利用率达到此阈值百分比之前,将 OSD 视为:
2
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 名称。- 类型:
字符串
- 必需:
否。
- 设备空间利用率达到此阈值百分比之前,将 OSD 视为:
directory={directory}
- 描述:
Set the 目录从其中加载消息码插件的名称。
- 类型:
字符串
- 必需:
否。
- 设备空间利用率达到此阈值百分比之前,将 OSD 视为:
/usr/lib/ceph/erasure-code
--force
- 描述:
通过同名覆盖现有配置文件。
- 类型:
字符串
- 必需:
否。
SHEC布局的简要描述
空间效率
空间效率是对象中数据块与所有1的比例,表示为k/(k+m)。
SHEC(4,3,2)的空间效率 =\(\frac{4}{4+3}\)= 0.57
持久性
SHEC的第三个参数(=c)是一个持久性估计器,它近似可以失效而不丢失数据的OSD数量。
durability estimator of SHEC(4,3,2) = 2
恢复效率
描述恢复效率的计算超出了本文档的范围,但至少在不增加c的情况下增加m可以实现恢复效率的提高。(但是,在这种情况下,我们必须注意空间效率的牺牲。)
SHEC(4,2,2) -> SHEC(4,3,2) : achieves improvement of recovery efficiency
擦除码配置文件示例
ceph osd erasure-code-profile set SHECprofile \
plugin=shec \
k=8 m=4 c=3 \
crush-failure-domain=host
ceph osd pool create shecpool erasure SHECprofile
由 Ceph 基金会带给您
Ceph 文档是一个社区资源,由非盈利的 Ceph 基金会资助和托管Ceph Foundation. 如果您想支持这一点和我们的其他工作,请考虑加入现在加入.