9.6. 增加放置组
放置组(PG)计数不足,会影响 Ceph 集群和数据分布的性能。它是 nearfull osds
错误消息的主要原因之一。
建议比率为每个 OSD 100 到 300 个 PG。当您向集群添加更多 OSD 时,这个比率可能会降低。
The pg_num
和 pgp_num
参数决定了 PG 数。这些参数为每个池配置,因此您必须单独调整每个池的 PG 数较低。
增加 PG 数量是您可以在 Ceph 集群上执行的一个最密集型进程。如果不以缓慢、有方法的方式完成,这个过程可能会对性能有严重影响。旦您提高 pgp_num
,您将无法停止或颠倒此进程,您必须完成该过程。考虑在业务关键处理时间分配之外增加 PG 数量,并提醒所有客户端可能会对性能造成影响。如果集群处于 HEALTH_ERR
状态,则不要更改 PG 计数。
先决条件
- 正在运行的红帽 Ceph 存储集群处于健康状态。
- 节点的根级别访问权限。
流程
减少数据重新发布和恢复对单个 OSD 和 OSD 主机的影响:
降低
osd max backfills
、osd_recovery_max_active
和osd_recovery_op_priority
参数的值:[root@mon ~]# ceph tell osd.* injectargs '--osd_max_backfills 1 --osd_recovery_max_active 1 --osd_recovery_op_priority 1'
禁用低级和深度清理:
[root@mon ~]# ceph osd set noscrub [root@mon ~]# ceph osd set nodeep-scrub
-
使用 每个池 Calculator 的 Ceph PG(PG) 来计算
pg_num 和
参数的最佳值。pgp_num
以小增量增加
pg_num
值,直到您达到所需的值。- 确定启动递增值。使用一个非常低的值(2 的电源),并在您确定对集群的影响时增加这个值。最佳的值取决于池大小、OSD 数和客户端 I/O 负载。
递增
pg_num
值:ceph osd pool set POOL pg_num VALUE
指定池名称和新值,例如:
# ceph osd pool set data pg_num 4
监控集群的状态:
# ceph -s
PGs 状态将从
creating
更改为active+clean
。等待所有 PG 都处于active+clean
状态。
以小增量增加
pgp_num
值,直到您达到所需的值:- 确定启动递增值。使用一个非常低的值(2 的电源),并在您确定对集群的影响时增加这个值。最佳的值取决于池大小、OSD 数和客户端 I/O 负载。
递增
pgp_num
值:ceph osd pool set POOL pgp_num VALUE
指定池名称和新值,例如:
# ceph osd pool set data pgp_num 4
监控集群的状态:
# ceph -s
PGs 状态将通过
peering
、wait_backfill
、回填
、恢复
等来改变。等待所有 PG 都处于active+clean
状态。
- 对 PG 数量不足的所有池重复上述步骤。
将
osd max backfills
、osd_recovery_max_active
和osd_recovery_op_priority
设置为默认值:# ceph tell osd.* injectargs '--osd_max_backfills 1 --osd_recovery_max_active 3 --osd_recovery_op_priority 3'
启用低级和深度清理:
# ceph osd unset noscrub # ceph osd unset nodeep-scrub
其它资源
- nearfull OSD
- 红帽 Ceph 存储 4 管理指南中 的监控放置组设置 一节