1 概述
ceph存储中存储池的pg随机分布至存储池所使用的硬盘域规则内osd上,会有osd上的pg数相差较大的情况出现。
当数据写入存储池,会导致不同的osd上的数据读写压力不均衡,影响总体性能。因此在测试性能前对存储池进行pg均衡操作是必需操作。
2 操作步骤
2.1查看当前osd的pg分布状态
从PGS值中看到,osd.18上pg数为56,osd.7上pg数为28,相差一倍,
# ceph osd df
ID CLASS WEIGHT REWEIGHT SIZE USE AVAIL %USE VAR PGS
0 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 44
1 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 34
2 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 49
3 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 38
4 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 41
5 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 37
7 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 28
8 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 44
9 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 44
10 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 41
11 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 38
12 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 49
13 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 41
14 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 39
15 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 32
16 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 43
17 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 54
18 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 56
19 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 38
20 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 46
21 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 43
22 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 47
23 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 41
TOTAL 86.6TiB 24.5GiB 86.5TiB 0.03
MIN/MAX VAR: 1.00/1.00 STDDEV: 0
2.2开启balancer模块
# ceph mgr module enable balancer
2.3设置均衡模式
# ceph balancer mode crush-compat
说明:
1.balancer mode支持两者模式:upmap、crush-compat。
2.upmap会以pg单位强制重新映射特定pg到特定的osd上,实现方式为将更新的pg映射关系添加到osdmap中,实现对PG映射的细粒度控制。
3.crush-compat是通过改变crush weight来调整pg分布,最终实现pg均衡。
2.4创建计划
格式:ceph balancer optimize <plan‐name> <pool‐name>
说明:
单个存储池均衡:创建计划时,设置<pool‐name>,表示对指定的存储池进行pg均衡操作。
全局均衡:创建计划时,不设置<pool‐name>,表示对集群中所有的存储池进行pg均衡操作,需注意的是,当osd同时被多个存储池复用时,会出现相互影响的现象,因此不建议在osd复用时进行全局pg均衡操作。
# ceph balancer optimize rbd rbd
2.5执行计划
格式:ceph balancer execute <plan‐name>
# ceph balancer execute rbd
2.6查看均衡操作后的osd上pg分布情况
可以看到,各个osd上的pg分布比较均匀,误差小于5%
# ceph osd df
ID CLASS WEIGHT REWEIGHT SIZE USE AVAIL %USE VAR PGS
0 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 42
1 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 43
2 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 43
3 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 43
4 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 43
5 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 43
6 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 41
7 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 42
8 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 43
9 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 43
10 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 43
11 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 42
12 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 43
13 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 43
14 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 43
15 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 43
16 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 42
17 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 43
18 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 43
19 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 42
20 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 43
21 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 42
22 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 43
23 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 43
TOTAL 86.6TiB 24.5GiB 86.5TiB 0.03
MIN/MAX VAR: 1.00/1.00 STDDEV: 0
说明:单次pg均衡操作可能不会达到分布均匀的结果,需要进行操作。
3 均衡操作命令
# ceph mgr module enable balancer //开启均衡
# ceph balancer mode <none|crush-compat|upmap> //设置均衡模式
# ceph balancer optimize <plan‐name> <pool‐name> //创建均衡计划
# ceph balancer execute <plan‐name> //执行均衡计划
# ceph balancer status //查看状态
# ceph balancer eval //查看当前集群得分,分数越低说明集群pg分布越均衡
# ceph balancer eval <plan_name> //查看执行计划后的集群得分,分数越低说明集群pg分布越均衡
# ceph balancer show <plan_name> //查看该计划要执行的动作
# ceph balancer rm <plan_name> //删除均衡计划
# ceph balancer reset //清空所有的均衡计划
# ceph balancer off //关闭均衡模式