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