注意

本文档适用于 Ceph 开发版本。

Erasure code profiles

消息码由一个配置定义,并在创建消息码池和相关 CRUSH 规则时使用。

The default消息码配置(在 Ceph 集群初始化时创建)将数据分成 2 个大小相等的块,并具有 2 个大小相同的奇偶校验块。它在集群中占用与 2 副本池相同的空间,但可以承受 4 个块中有 2 个块丢失的数据丢失。它被描述为具有k=2m=2,

为了在不增加原始存储需求的情况下提高冗余度,可以创建一个新的配置。例如,一个具有k=10m=4的配置可以承受四个(m=4)OSD 的丢失,通过将对象分布在十四个(k+m=14)OSD 上。对象首先被分成10块(如果对象是 10MB,每个块是 1MB),然后4计算编码块以进行恢复(每个编码块的大小与数据块相同,即 1MB)。原始空间开销仅为 40%,即使四个 OSD 同时损坏,对象也不会丢失。

osd erasure-code-profile set

要创建一个新的消息码配置:

ceph osd erasure-code-profile set {name} \
     [{directory=directory}] \
     [{plugin=plugin}] \
     [{stripe_unit=stripe_unit}] \
     [{key=value} ...] \
     [--force]

其中:

{directory=directory}

描述:

Set the 目录从其中加载消息码插件的名称。

类型:

字符串

必需:

否。

设备空间利用率达到此阈值百分比之前,将 OSD 视为:

/usr/lib/ceph/erasure-code

{plugin=plugin}

描述:

使用消息码插件来计算编码块并恢复丢失的块。参见可用插件 for more information.

类型:

字符串

必需:

否。

设备空间利用率达到此阈值百分比之前,将 OSD 视为:

{stripe_unit=stripe_unit}

描述:

每个数据块中的数据量,按条带计算。例如,一个具有 2 个数据块和 stripe_unit=4K 的配置会将范围 0-4K 放在块 0 中,4K-8K 放在块 1 中,然后 8K-12K 再次放在块 0 中。这应该是 4K 的倍数以获得最佳性能。默认值是从 monitor 配置选项osd_pool_erasure_code_stripe_unit在创建池时获取。使用此配置的池的 stripe_width 将是数据块的数量乘以这个 stripe_unit。

类型:

字符串

必需:

否。

{key=value}

描述:

剩余键值对的意义由消息码插件定义。

类型:

字符串

必需:

否。

--force

描述:

通过相同的名称覆盖现有的配置,并允许设置非 4K 对齐的 stripe_unit。覆盖现有配置可能很危险,因此--yes-i-really-mean-it也必须使用。

类型:

字符串

必需:

否。

osd erasure-code-profile rm

要删除消息码配置:

ceph osd erasure-code-profile rm {name}

如果配置被池引用,删除将失败。

警告

使用osd erasure-code-profile rm删除消息码配置不会自动删除与消息码配置相关的 CRUSH 规则。建议使用ceph osd crush rule remove {rule-name}手动删除相关的 CRUSH 规则以避免意外行为。

osd erasure-code-profile get

要显示消息码配置:

ceph osd erasure-code-profile get {name}

osd erasure-code-profile ls

要列出所有消息码配置的名称:

ceph osd erasure-code-profile ls

由 Ceph 基金会带给您

Ceph 文档是一个社区资源,由非盈利的 Ceph 基金会资助和托管Ceph Foundation. 如果您想支持这一点和我们的其他工作,请考虑加入现在加入.