2.9. 编辑 CRUSH map
通常,使用 Ceph CLI 修改 CRUSH map 比手动编辑 CRUSH map 更方便。但是,在有些情况下,您可能需要选择编辑它,如更改默认的存储桶类型,或者使用 straw2
以外的存储桶算法。
编辑现有的 CRUSH map:
- 获取 CRUSH 映射。
- 解译 CRUSH map。
- 至少编辑其中一个设备,以及 Buckets 和 规则。
- 重新编译 CRUSH map。
- 设置 CRUSH map。
要为特定池激活 CRUSH map 规则,请识别常见的规则编号,并在创建池时指定池的规则编号。
2.9.1. 获取 CRUSH map
要获取集群的 CRUSH 映射,请执行以下操作:
ceph osd getcrushmap -o {compiled-crushmap-filename}
Ceph 将输出(-o)编译的 CRUSH map 到您指定的文件名。由于 CRUSH 映射采用编译的形式,因此您必须先将其解译,然后才能编辑它。
2.9.2. 解译 CRUSH map
要解译 CRUSH 映射,请执行以下操作:
crushtool -d {compiled-crushmap-filename} -o {decompiled-crushmap-filename}
Ceph 会将已编译的 CRUSH map 和输出(-o)替换为您指定的文件名。
2.9.3. 编译 CRUSH map
要编译 CRUSH 映射,请执行以下操作:
crushtool -c {decompiled-crush-map-filename} -o {compiled-crush-map-filename}
Ceph 将已编译的 CRUSH map 存储到您指定的文件名。
2.9.4. 设置 CRUSH map
要为集群设置 CRUSH 映射,请执行以下操作:
ceph osd setcrushmap -i {compiled-crushmap-filename}
Ceph 将输入您指定为群集 CRUSH map 的文件名的已编译 CRUSH map。