2.9. 编辑 CRUSH map
通常,使用 Ceph CLI 在运行时修改 CRUSH map 比手动编辑 CRUSH map 更加方便。但是,在有些情况下,您可能会选择对其进行编辑,如更改默认 bucket 类型,或使用 straw
以外的存储桶算法。
编辑现有的 CRUSH map:
- 获取 CRUSH map。
- 解译 CRUSH map。
- 编辑至少一个设备和 Buckets 和规则。
- 重新编译 CRUSH map。
- 设置 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。