8.6. 配置グループの増加

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

推奨される比率は、OSD 1 つに対して 100 から 300 個の PG です。この比率は、OSD をクラスターに追加すると減らすことができます。

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

重要

PG 数を増やすことは、Ceph クラスターで実行できる最も負荷のかかる処理です。このプロセスは、ゆっくりと計画的に行わないと、パフォーマンスに深刻な影響を与える可能性があります。pgp_num を増やすと、プロセスを停止したり元に戻したりすることはできず、完了する必要があります。ビジネスクリティカルな処理時間の割り当て以外で PG 数を増やすことを検討し、パフォーマンスに影響を与える可能性があることをすべてのクライアントに警告します。クラスターが HEALTH_ERR 状態にある場合は、PG 数を変更しないでください。

前提条件

  • 健全な状態で稼働中の Red Hat Ceph Storage クラスター。
  • ノードへのルートレベルのアクセス。

手順

  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: root@host01 /]# ceph osd set noscrub
      [ceph: root@host01 /]# ceph osd set nodeep-scrub
  2. Ceph Placement Groups (PGs) per Pool Calculator を使用して、pg_num パラメーターおよび pgp_num パラメーターの最適な値を計算します。
  3. 必要な値に達するまで、pg_num の値を少し増やします。

    1. インクリメントの開始値を決定します。2 の累乗である非常に低い値を使用し、クラスターへの影響を判断して増やします。最適な値は、プールサイズ、OSD 数、クライアント I/O 負荷によって異なります。
    2. pg_num の値を増やします。

      構文

      ceph osd pool set POOL pg_num VALUE

      プール名と新しい値を指定します。例を以下に示します。

      例:

      [ceph: root@host01 /]# ceph osd pool set data pg_num 4

    3. クラスターのステータスを監視します。

      例:

      [ceph: root@host01 /]# 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: root@host01 /]# ceph osd pool set data pgp_num 4
    3. クラスターのステータスを監視します。

      [ceph: root@host01 /]# ceph -s

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

  5. PG 数が不足しているすべてのプールに対して、前の手順を繰り返します。
  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: root@host01 /]# ceph osd unset noscrub
    [ceph: root@host01 /]# ceph osd unset nodeep-scrub

関連情報