Red Hat Training

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

7.5. PG 数の増加

配置グループ(PG)数は、Ceph クラスターおよびデータ分散のパフォーマンスに影響します。これは、nearfull osds エラーメッセージの主な原因の 1 つです。

1 OSD あたり 100 から 300 PG の推奨比率は、以下のようになります。この比率は、OSD をクラスターに追加する際に減少する可能性があります。

pg_num パラメーターおよび pgp_num パラメーターにより、PG 数が決まります。これらのパラメーターは各プールごとに設定されるため、PG の数が別々に低く、各プールを調整する必要があります。

重要

PG 数を増やすことができます。これは、Ceph クラスターで実行できる最も集約型プロセスです。このプロセスは、速度が遅い方法で行われない場合に、パフォーマンスに深刻な影響を与える可能性があります。pgp_num を増やすと、プロセスを停止したり元に戻したりすることはできず、完了する必要があります。

ビジネスの重要なプロセス時間割り当て外にある PG 数を増やし、パフォーマンスに影響を与える可能性のある可能性のあるクライアントをすべて警告することを検討してください。

クラスターが HEALTH_ERR 状態にある場合は、PG 数を変更しないでください。

手順: PG 数の追加

  1. 個別の OSD および OSD ホストでのデータ再分配および復旧の影響を減らします。

    1. osd max backfillsosd_recovery_max_active、および osd_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 Placement Groups(PGs)per Pool Calculator を使用して、pg_num パラメーターおよび pgp_num パラメーターの最適値を計算します。
  3. 必要な値に達するまで、pg_num の値を少し増やします。

    1. 開始の増分値を決定します。2 の累乗の値が非常に低い値を使用し、クラスターへの影響を決定する際にこの値を増やします。optimal の値は、プールサイズ、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 の累乗の値が非常に低い値を使用し、クラスターへの影響を決定する際にこの値を増やします。optimal の値は、プールサイズ、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

      PG の状態は、peeringwait_backfillbackfillingrecover などによって変わります。すべての PG が active+clean の状態になるまで待ちます。

  5. PG 数が十分にないすべてのプールに対して直前の手順を繰り返します。
  6. osd max backfillsosd_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'
  7. シャローおよびディープスクラビングを有効にします。

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

関連項目