分布式存储ceph之crush规则配置

分布式存储ceph之crush规则配置

一 命令生成osd树形结构

# 创建数据中心:datacenter0
ceph osd crush add-bucket datacenter0 datacenter
# 创建机房:room0
ceph osd crush add-bucket room0 room
# 创建机架:rack0、rack1、rack2
ceph osd crush add-bucket rack0 rack
ceph osd crush add-bucket rack1 rack
ceph osd crush add-bucket rack2 rack
# 把机房room0移动到数据中心datacenter0下
ceph osd crush move room0 datacenter=datacenter0
# 把机架rack0、rack1、rack2移动到机房room0下
ceph osd crush move rack0 room=room0
ceph osd crush move rack1 room=room0
ceph osd crush move rack2 room=room0
# 把主机osd01移动到:datacenter0/room0/rack0下
ceph osd crush move osd01 datacenter=datacenter0 room=room0 rack=rack0
# 把主机osd02移动到:datacenter0/room0/rack1下
ceph osd crush move osd02 datacenter=datacenter0 room=room0 rack=rack1
# 把主机osd03移动到:datacenter0/room0/rack2下
ceph osd crush move osd03 datacenter=datacenter0 room=room0 rack=rack2

查看

[root@admin ~]# ceph osd tree
ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF
-9 0.17537 datacenter datacenter0
-10 0.17537 room room0
-11 0.05846 rack rack0
-3 0.05846 host osd01
0 hdd 0.01949 osd.0 up 1.00000 1.00000
1 hdd 0.01949 osd.1 up 1.00000 1.00000
2 hdd 0.01949 osd.2 up 1.00000 1.00000
-12 0.05846 rack rack1
-5 0.05846 host osd02
3 hdd 0.01949 osd.3 up 1.00000 1.00000
4 hdd 0.01949 osd.4 up 1.00000 1.00000
5 hdd 0.01949 osd.5 up 1.00000 1.00000
-13 0.05846 rack rack2
-7 0.05846 host osd03
6 hdd 0.01949 osd.6 up 1.00000 1.00000
7 hdd 0.01949 osd.7 up 1.00000 1.00000
8 hdd 0.01949 osd.8 up 1.00000 1.00000
-1 0 root default

二 crushmap信息介绍

我们可以通过命令导出集群当前的crushmap信息

# 把二进制格式的crush map导出到test.bin文件中
ceph osd getcrushmap -o test.bin
# 用 crushtool 工具把 test.bin 里的二进制数据转换成文本形式保存到 test.txt 文档里。
crushtool -d test.bin -o test.txt

crushmap配置中最核心的当属rule了,crush rule决定了三点重要事项:

  • 1、从OSDMap中的哪个节点开始查找
  • 2、使用那个节点作为故障隔离域
  • 3、定位副本的搜索模式(广度优先 or 深度优先)。
# rules
rule egon_ruleset #规则集的命名,创建pool时可以指定rule集
{
id 1 #rules集的编号,顺序编即可
type replicated #定义pool类型为replicated(还有esurecode模式)
min_size 1 #pool中最小指定的副本数量不能小1\
max_size 10 #pool中最大指定的副本数量不能大于10
step take default #定义pg查找副本的入口点
step chooseleaf firstn 0 type host #选叶子节点、深度优先、隔离host
step emit #结束
}

总结

pg 选择osd的过程,首先要知道在rules中 指明从osdmap中哪个节点开始查找,入口点默认为default也就是root节点,
然后隔离域为host节点(也就是同一个host下面不能选择两个子节点)。由default到3个host的选择过程,
这里由default根据节点的bucket类型选择下一个子节点,由子节点再根据本身的类型继续选择,直到选择到host,然后在host下选择一个osd。

三 修改 crushmap 信息

联系管理员微信tutu19192010,注册账号

上一篇
下一篇
Copyright © 2022 Egon的技术星球 egonlin.com 版权所有 沪ICP备2022009235号 沪公网安备31011802005110号 青浦区尚茂路798弄 联系方式-13697081366