本节主要介绍一下ceph pg相关操作,及PG状态的说明。当前操作系统环境为:
# lsb_release -a
LSB Version: :core-4.1-amd64:core-4.1-noarch
Distributor ID: CentOS
Description: CentOS Linux release 7.3.1611 (Core)
Release: 7.3.1611
Codename: Core
# uname -a
Linux server-oss21 3.10.0-514.el7.x86_64 #1 SMP Tue Nov 22 16:42:41 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
osd个数为21个。
1. 统计pg个数
采用如下脚本统计每个pool的PG个数:
2. 调整PG个数
2.1 计算合适的PG数
PG和PGP数量一定要根据OSD的数量进行调整,计算公式如下,但是最后算出的结果一定要接近或者等于一个2的指数。调整PGP不会引起PG内的对象的分裂,但是会引起PG的分布的变动。
Total PGs = (Total_number_of_OSD * 100) / max_replication_count
计算的结果往上取靠近2的N次方的值。比如总共OSD数量是21,副本数是3,则计算出的结果为700,向上去2的指数,就应该为1024。
2.2 调整前确保状态OK
如果ceph -s
命令显示的集群状态是OK的,此时就可以动态的增大PG的值。
注意:增大PG有几个步骤,同时必须比较平滑的增大,不能一次性调的太猛。对于生产环境格外注意
一次性的将PG调到一个很大的值会导致集群大规模的数据平衡,因而可能导致集群出现问题而临时不可用。
2.3 调整数据同步参数
当调整PG/PGP的值时,会引发ceph集群的backfill操作,数据会以最快的速度进行平衡,因此可能导致集群不稳定。因此首先设置backfill ratio到一个比较小的值。通过下面的命令设置:
此外,还包括如下这些参数:
注: 在设置之前我们最好先通过如下方式获取到对应参数的原始值,以便在恢复之后能够调整回来
在调整完成之后执行如下命令进行参数恢复:
2.4 调整PG及PGP
这里我们首先调整PG的值,我们推荐的增长幅度是按照2的幂进行增长,如原来是64个,第一次调整先增加到128个,设置命令如下:
你可以通过ceph -w
查看集群的变化。
在PG增长之后,等到整个集群恢复正常,再通过下面的命令增加PGP,PGP的值需要与PG的值一致:
此时,通过ceph -w
可以看到集群状态的详细信息,可以看到数据的再平衡过程。
如下是针对本集群环境进行的一个调整(请注意调整时,每一步操作完成后及时观察整个集群状况):
2.5 PG调整示例
下面给出一个实际生产环境中PG数量的示例(OSD个数为105):
[参看]
-
ceph PG数量调整/PG的状态说明
-
POOL, PG AND CRUSH CONFIG REFERENCE
-
PG个数的计算
-
ceph pg数量调整
-
ceph PG数量调整/PG的状态说明