2.9. 编辑 CRUSH map

通常,使用 Ceph CLI 在运行时修改 CRUSH map 比手动编辑 CRUSH map 更加方便。但是,在有些情况下,您可能会选择对其进行编辑,如更改默认 bucket 类型,或使用 straw 以外的存储桶算法。

编辑现有的 CRUSH map:

  1. 获取 CRUSH map
  2. 解译 CRUSH map。
  3. 编辑至少一个设备和 Buckets 和规则。
  4. 重新编译 CRUSH map。
  5. 设置 CRUSH map

若要激活特定池的 CRUSH map 规则,可识别常见规则编号,并在创建池时指定池的规则编号。

2.9.1. 获取 CRUSH map

要获取集群的 CRUSH map,请执行以下操作:

ceph osd getcrushmap -o {compiled-crushmap-filename}

Ceph 将输出(-o)编译的 CRUSH map 到您指定的文件名。由于 CRUSH map 采用编译的形式,您必须先解译它,然后才能编辑它。

2.9.2. 解译 CRUSH map

要解译 CRUSH map,请执行以下操作:

crushtool -d {compiled-crushmap-filename} -o {decompiled-crushmap-filename}

Ceph 会将编译后的 CRUSH map 和输出(-o)解译为您指定的文件名。

2.9.3. 编译 CRUSH map

要编译 CRUSH map,请执行以下操作:

crushtool -c {decompiled-crush-map-filename} -o {compiled-crush-map-filename}

Ceph 将存储编译后的 CRUSH map 到您指定的文件名。

2.9.4. 设置 CRUSH map

要为您的集群设置 CRUSH map,请执行以下操作:

ceph osd setcrushmap -i  {compiled-crushmap-filename}

Ceph 将输入您指定为集群 CRUSH map 的文件名编译的 CRUSH map。