配置グループの増加

配置グループを増やす方法について説明します。

開始前に

始める前に、以下の前提条件が整っていることを確認してください:
  • 健全な状態で稼働中の IBM Storage Ceph クラスタ。
  • ノードへのルート・レベル・アクセス。

このタスクについて

不十分な配置グループ (PG) カウントは、Ceph クラスターおよびデータ分布のパフォーマンスに影響を与えます。 これは, システムの主要な原因の 1 つです。nearfull osds(これらはエラー・メッセージです)

推奨される比率は、OSD ごとに 100 PG から 300 PG までです。 この比率は、クラスターにさらに OSD を追加すると減少する可能性があります。

pg_num および pgp_num パラメーターは、PG カウントを決定します。 これらのパラメーターはプールごとに構成されるため、PG カウントが低い各プールを個別に調整する必要があります。
重要: PG カウントを増やすことは、Ceph クラスターで実行できる最も集中的なプロセスです。 このプロセスは、低速で系統的な方法で実行しないと、パフォーマンスに重大な影響を与える可能性があります。 pgp_numを増やした後は、プロセスを停止したり元に戻したりすることができなくなるため、プロセスを完了する必要があります。 ビジネス上重要な処理時間の割り振りの範囲外で PG カウントを増やすことを検討し、パフォーマンスへの潜在的な影響についてすべてのお客様にアラートを出します。 クラスターが次のいずれかの状態にある場合は、PG カウントを変更しないでください。HEALTH_ERR状態。

詳細については、 ニアフルOSDと 監視配置グループセットを参照してください。

手順

  1. 個々の OSD および OSD ホストに対するデータの再配分およびリカバリーの影響を軽減します。
    1. osd max backfillsosd_recovery_max_active、および osd_recovery_op_priority パラメーターの値を小さくします。
      [ceph: root@host01 /]# 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
      例:
      [ceph: root@host01 /]# ceph osd set noscrub
      [ceph: root@host01 /]# ceph osd set nodeep-scrub
  2. pg_num パラメーターと pgp_num パラメーターの最適値を計算します。
    Ceph Placement Groups (PGs) per Pool Calculatorを使用して、最適な値を計算します。
  3. 目的の値に達するまで、 pg_num 値を少しずつ増やしてください。
    1. 開始増分値を決定します。
      2 の累乗である非常に低い値を使用し、クラスターへの影響を判別するときにそれを増やしてください。 最適な値は、プール・サイズ、OSD カウント、およびクライアント入出力負荷によって異なります。
    2. pg_num 値を増分します。
      プール名と新しい値を指定します。
      ceph osd pool set POOL pg_num VALUE
      例:
      [ceph: root@host01 /]# ceph osd pool set data pg_num 4
    3. ceph -s コマンドを使用して、クラスターの状況をモニターします。
      PG の状態が creating から active + cleanに変わります。 すべての PG が active + clean 状態になるまで待ちます。
  4. 目的の値に達するまで、 pgp_num 値を少しずつ増やしてください。
    1. 開始増分値を決定します。
      2 の累乗である非常に低い値を使用し、クラスターへの影響を判別するときにそれを増やしてください。 最適な値は、プール・サイズ、OSD カウント、およびクライアント入出力負荷によって異なります。
    2. pgp_num 値を増分します。
      プール名と新しい値を指定します。
      ceph osd pool set POOL pgp_num VALUE
      例:
      [ceph: root@host01 /]# ceph osd pool set data pgp_num 4
    3. ceph -s コマンドを使用して、クラスターの状況をモニターします。
      PG の状態は、 ピアリングwait_backfillバックフィルリカバリー、およびその他によって変化します。 すべての PG が active + clean 状態になるまで待ちます。
  5. PG カウントが不十分なすべてのプールについて、ステップ 1 から 4 を繰り返します。
  6. osd max backfillsosd_recovery_max_active、および osd_recovery_op_priority をそれぞれのデフォルト値に設定します。
    例:
    [ceph: root@host01 /]# 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
    例:
    [ceph: root@host01 /]# ceph osd unset noscrub
    [ceph: root@host01 /]# ceph osd unset nodeep-scrub