注意

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

纠删码配置文件

纠删码由一个配置文件定义,用于创建纠删码池和相关的 CRUSH 规则时使用。

默认纠删码配置文件(在 Ceph 集群初始化时创建)会将数据分成 2 个大小相等的块,并有 2 个大小相同的奇偶校验块。它在集群中占用的空间与 2 副本池相同,但可以承受 4 个块中丢失 2 个块的数据丢失。它被描述为具有 k=2m=2 的配置文件,这意味着信息分布在四个 OSD (k+m == 4) 上,其中两个 OSD 可以丢失。

为了在不增加原始存储需求的情况下提高冗余度,可以创建新的配置文件。例如,具有 k=10m=4 的配置文件可以通过将一个对象分布在十四个 (k+m=14) OSD 上来承受四个 (m=4) 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}

描述:

设置从中加载纠删码插件的 directory 名称。

类型:

String

必需:

否。

默认值:

/usr/lib/ceph/erasure-code

{plugin=plugin}

描述:

使用纠删码插件计算编码块并恢复缺失的块。有关更多信息,请参阅可用插件列表

类型:

String

必需:

否。

默认值:

isa

{stripe_unit=stripe_unit}

描述:

每个条带中数据块的数据量。例如,一个具有 2 个数据块和 stripe_unit=4K 的配置文件将把范围 0-4K 放在块 0 中,4K-8K 放在块 1 中,然后 8K-12K 再次放在块 0 中。为了获得最佳性能,这应该是 4K 的倍数。当创建池时,默认值取自监视器配置选项 osd_pool_erasure_code_stripe_unit。使用此配置文件的池的 stripe_width 将是数据块数量乘以这个 stripe_unit。有关更多信息,请参阅 纠删码优化

类型:

String

必需:

否。

{key=value}

描述:

剩余键值对的语义由纠删码插件定义。

类型:

String

必需:

否。

--force

描述:

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

类型:

String

必需:

否。

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 基金会 资助和托管的社区资源。如果您希望支持这项工作和我们的其他努力,请考虑 立即加入