文章目录
方式一:导入更新方式
#1、查看当前osd的类型列表
root@pve-ceph01:~# ceph osd crush class ls #查看当前osd的类型列表
[
"hdd",
"ssd"
]
#2、导出crushmap,export osd crushmap
ceph osd getcrushmap -o map.bin #导出成bin格式
crushtool -d map.bin -o map.txt #转换成文本格式
#3、编辑 map.txt 文件,添加如下两个规则
rule rule-ssd {
id 1
type replicated
min_size 1
max_size 10
step take default class ssd
step chooseleaf firstn 0 type host
step emit
}
rule rule-hdd {
id 2
type replicated
min_size 1
max_size 10
step take default class hdd
step chooseleaf firstn 0 type host
step emit
}
#4、导入crushmap,import osd crushmap
crushtool -c map.txt -o map_new.bin #将文本格式处理为bin格式
ceph osd setcrushmap -i map_new.bin #导入bin格式
#5、创建名为volumes-ssd的pool,并应用rule-ssd规则
ceph osd pool create volumes-ssd 32 32 replicated rule-ssd
#或者修改名称为volumes-hdd池的crush rule 为rule-hdd
ceph osd pool set volumes-hdd crush_rule rule-hdd
方拾二:命令更新方式(推荐)
#1、创建pool的rule,并设置故障域
ceph osd crush rule create-replicated rule-hdd default host hdd #为class 类型为 hdd的硬盘创建一个 名为 rule-hdd的 rule策略,故障域为host(创建HDD rule)
ceph osd crush rule create-replicated rule-ssd default host ssd #为class 类型为 ssd的硬盘创建一个 名为 rule-ssd的 rule策略,故障域为host(创建SSD rule)
#2、为pool 应用crush rule规则(若pool已应用了rule,就是修改rule)
#ceph osd pool set <poolname> crush_rule <rule-name>
ceph osd pool set volumes-ssd crush_rule rule-ssd #为名为volumes-ssd的pool应用 名为rule-ssd的crush规则
ceph osd pool create volumes-ssd 32 32 replicated rule-ssd #或者是在创建pool的时候指定crush rule 创建名为volumes-ssd的pool,并应用rule-ssd规则
附、如何更改osd的class 类型
更改osd的 class 类型
ceph osd crush rm-device-class osd.9 #更改class前,先必须删除原本的class
ceph osd crush set-device-class ssd osd.9 #class类型可以是hdd,ssd,sas,nvme
#ceph osd crush set-device-class ssd 9 #效果同上
#ceph osd crush set-device-class ssd osd.0 osd.1 osd.4 osd.5 #一次性设置多个osd
#ceph osd crush set-device-class ssd 0 1 4 5
查看crush rule(名为 rule-ssd)的详细信息
ceph osd crush rule dump rule-ssd
如果文章对你有帮助,欢迎点击上方按钮打赏作者
暂无评论