Red Hat Training

A Red Hat training course is available for Red Hat Ceph Storage

7.5. 增加 PG 数量

放置组(PG)计数不足,会影响 Ceph 集群和数据分布的性能。它是 nearfull osds 错误消息的主要原因之一。

建议比率为每个 OSD 100 到 300 个 PG。当您向集群添加更多 OSD 时,这个比率可能会降低。

pg_numpgp_num 参数决定了 PG 计数。这些参数为每个池配置,因此您必须单独调整每个池的 PG 数较低。

重要

增加 PG 数量是您可以在 Ceph 集群上执行的一个最密集型进程。如果不以缓慢、有方法的方式完成,这个过程可能会对性能有严重影响。增加 pgp_num 后,将无法停止或撤销这个过程,您必须完成它。

考虑在业务关键处理时间分配之外增加 PG 数量,并提醒所有客户端可能会对性能造成影响。

如果集群处于 HEALTH_ERR 状态,则不要更改 PG 计数。

步骤:增加 PG Count

  1. 减少数据重新发布和恢复对单个 OSD 和 OSD 主机的影响:

    1. 降低 osd max backfillsosd_recovery_max_activeosd_recovery_op_priority 参数的值:

      # ceph tell osd.* injectargs '--osd_max_backfills 1 --osd_recovery_max_active 1 --osd_recovery_op_priority 1'
    2. 禁用低级和深度清理:

      # ceph osd set noscrub
      # ceph osd set nodeep-scrub
  2. 使用 每个池计算器的 Ceph PG(PG) 来计算 pg_numpgp_num 参数的最佳值。
  3. 以小增量增加 pg_num 值,直到您达到所需的值。

    1. 确定启动递增值。使用一个非常低的值(2 的电源),并在您确定对集群的影响时增加这个值。最佳的值取决于池大小、OSD 数和客户端 I/O 负载。
    2. 递增 pg_num 值:

      ceph osd pool set <pool> pg_num <value>

      指定池名称和新值,例如:

      # ceph osd pool set data pg_num 4
    3. 监控集群的状态:

      # ceph -s

      PG 状态将从 creating 变为 active+clean。等待所有 PG 都处于 active+clean 状态。

  4. 以小增量增加 pgp_num 值,直到您达到所需的值:

    1. 确定启动递增值。使用一个非常低的值(2 的电源),并在您确定对集群的影响时增加这个值。最佳的值取决于池大小、OSD 数和客户端 I/O 负载。
    2. 递增 pgp_num 值:

      ceph osd pool set <pool> pgp_num <value>

      指定池名称和新值,例如:

      # ceph osd pool set data pgp_num 4
    3. 监控集群的状态:

      # ceph -s

      PGs 状态将更改为 peeringwait_backfillbackfillingrecover 等。等待所有 PG 都处于 active+clean 状态。

  5. 对 PG 数量不足的所有池重复上述步骤。
  6. osd max backfillsosd_recovery_max_activeosd_recovery_op_priority 设置为默认值:

    # ceph tell osd.* injectargs '--osd_max_backfills 1 --osd_recovery_max_active 3 --osd_recovery_op_priority 3'
  7. 启用低级和深度清理:

    # ceph osd unset noscrub
    # ceph osd unset nodeep-scrub

另请参阅