编辑Crush map
1、获取 Crush map
大部分情况下创建集群成功后,对应的Crush map已经由系统自动生成,可以通过如下命令获取:
ceph osd getcrushmap -o {compiled-crushmap-filename}
2、反编译Crush map
执行命令:
crushtool -d {compiled-crushmap-filename} -o {decompiled-crushmap-filename}
即可将步骤1中输出的Crush map转换为可编辑的文本,例如:
crushtool -d mycrushmap -o mycrushmap.txt
3、编辑Crush map
通过vim命令可以直接进入文本,根据需求进行编辑
4、编译Crush map
以文本形式修改后的Crush map,还需要经过编译,才能被Ceph识别,执行命令如下:
crushtool -c {decompiled-crush-map-filename} -o {compiled-crush-map-filename}
5、模拟测试
在新的Crush map生效之前,可以先进行模拟,以验证对应的修改是否符合预期,例如:可以使用如下命令打印输出范围为【0,9】、副本数为3、采用编号为0的ruleset的映射结果:
crushtool -i mycrushmap --test --min-x 0 --max-x 9 --num-rep 3 --ruleset 0 --show_mappings
6、注入集群
新的Crush map验证充分之后,可以重新注入集群,使之生效,命令如下:
ceph osd setcrushmap -i {compiled-crush-map-filename}