1、前言
在集群正式上线之前需要进行pg数以及pg分布的检查操作,如果pg数和pg分布不合理,需要进行调整。这样能够的提升整个集群资源的使用率,同时对集群整体的性能提升有一定帮助。下面介绍下如何使用mgr的balancer插件来调整pg分布平滑度。
2、使用balancer插件
balancer插件分为自动和手动两种,因为调整pg会引起数据迁移,所以使用手动调整保险些。更多详细说明,可以参考:http://docs.ceph.com/docs/luminous/mgr/balancer/
2.1、检查是否启用了balancer
插件
balancer
插件默认时开启的。
[root@ceph07 ~]# ceph mgr module ls
{
"enabled_modules": [
"balancer",
"restful",
"status"
],
"disabled_modules": [
"dashboard",
"influx",
"localpool",
"prometheus",
"selftest",
"zabbix"
]
}
如果上面的enabled_modules里面没有balancer
插件,则需要使用命令ceph mgr module enable balancer
来开启balancer
插件。
查看当前的balancer的状态
1 | root@ceph07:~# ceph balancer status |
这里有两种方法调整,一个自动的,一个手动的,这个根据自己的掌握程度和方便程度进行调整,注意调整完了,把balancer进行关闭掉。
下面的文档先介绍手动的调整方式。
2.2、开始手动调整pg分布
设置为crush-compat模式
1 | ceph balancer mode crush-compat |
2.2.1、对当前pg分布进行评分
[root@ceph07 ~]# ceph balancer eval
current cluster score 0.012286 (lower is better)
2.2.2、创建计划
[root@ceph07 ~]# ceph balancer optimize <plan-name> {pool-name}
2.2.3、对指定计划的pg分布进行评分
[root@ceph07 ~]# ceph balancer eval <plan-name>
注意:如果得到的评分比之前的低,说明这次调整是有效的,可以执行该计划,否则不需要执行该计划。
2.2.4、执行计划
[root@ceph07 ~]# ceph balancer execute <plan-name>
然后观察集群状态,此时会有数据迁移。然后可以通过ceph osd df
命令来查看pg分布情况,一般osd上包含的pg数最大和最小之间在5以内,算是比较均衡的。
2.3 自动调整的方法
设置为crush-compat模式
1 | ceph balancer mode crush-compat |
开启
1 | ceph balancer on |
ceph -w观察是不是有pg在变化调整,通过查看分布是不是均衡,比较均衡以后,就可以关闭了
1 | ceph osd df|awk '!a[$1]++{print}' |
关闭方法1
ceph balancer off
2.4 调整的粒度
默认的控制为5%,如果需要调整高或者低用下面的参数控制
1 | ceph config-key set mgr/balancer/max_misplaced .03 |