3.4. 配置グループの自動スケーリング

プール内の配置グループ(PG)の数は、クラスターのピア、データの分散、およびリバランスの方法について、重要な役割を果たします。

PG の数を自動スケーリングすると、クラスターの管理が容易になります。pg-autoscaling コマンドは、PG のスケーリングの推奨事項を示します。または、クラスターの使用状況に応じて PG を自動的にスケーリングします。

:context:strategies

3.4.1. 配置グループの自動スケーリング

auto-scaler の仕組み

auto-scaler はプールを分析し、サブツリーごとに調整します。各プールは異なる CRUSH ルールにマッピングでき、各ルールはデータを異なるデバイスに分散できるため、Ceph は階層の各サブツリーの使用率を個別に検討します。たとえば、クラス ssd の OSD にマップするプールと hdd クラスの OSD にマップするプールは、それぞれがそれぞれのデバイスタイプの数に依存する最適な PG 数を持ちます。

3.4.2. 配置グループの自動スケーリングモードの設定

Red Hat Ceph Storage クラスターの各プールには PG の pg_autoscale_mode プロパティーがあり、これを offon、または warn に設定することができます。

  • off: プールの自動スケーリングを無効にします。管理者は、各プールに適切な PG 番号を選択するのはユーザー次第です。詳細は 「PG の数」セクションを参照してください。
  • on: 指定プールの PG 数の自動調整を有効にします。
  • warn: PG 数の調整が必要な場合にヘルスアラートを示します。

手順

  1. pg_autoscaling_mode を設定するには、以下を実行します。

    1. 既存のプールの場合:

      ceph osd pool set pool-name pg_autoscale_mode mode

      たとえば、プール testpool の自動スケーリングを有効にするには、以下を実行します。

      $ ceph osd pool set testpool pg_autoscale_mode on
    2. 新規作成されたプールのデフォルトとして、以下のコマンドを実行します。

      # ceph config set global osd_pool_default_pg_autoscale_mode <mode>

3.4.3. 配置グループの自動スケーリングの推奨事項の表示

手順

  1. 以下を使用して、各プール、その相対使用率、PG 数への推奨変更を表示できます。

    $ ceph osd pool autoscale-status

    出力は以下のようになります。

       POOL    SIZE  TARGET SIZE  RATE  RAW CAPACITY   RATIO
       a     12900M                3.0        82431M  0.4695
       c         0                 3.0        82431M  0.0000
       b         0        953.6M   3.0        82431M  0.0347
    
    
       TARGET RATIO  EFFECTIVE RATIO    PG_NUM  NEW PG_NUM  AUTOSCALE
                                            8         128   warn
             0.2000     0.9884              1          64   warn
                                            8               warn

SIZE は、プールに保存されているデータ量です。TARGET SIZE は、管理者が指定したデータ量を指しますが、最終的にこのプールに格納されることが予想されます。システムは、2 つの値のうち大きい方の値の計算に使用されます。

RATE は、プールが使用する RAW ストレージ容量を決定するプールの乗数です。たとえば、3 つのレプリカプールは 3.0 の比率を持ち、k=4,m=2 イレイジャーコードプールの比率は 1.5 になります。

RAW CAPACITY は、プールのデータを保存する OSD 上の RAW ストレージ容量の合計量です。RATIO は、プールが消費している合計容量の比率です。つまり、ratio = size * rate / raw capacity になります。

TARGET RATIO (存在する場合) は、ターゲット比率が設定された他のプールと相対的にプールが消費することが予想されるストレージの比率です。ターゲットサイズと比率の両方が指定される場合、比率が優先されます。

EFFECTIVE RATIO は、次の 2 つの方法で調整した後の目標比率です。1 (目標サイズが設定されたプールで使用されると予想される容量を差し引く)。2. ターゲット比率が設定されたプール間でターゲットの比率を正規化し、残りの領域をまとめてターゲットとします。たとえば、target ratio が 1.0 の 4 つのプールの effective ratio は 0.25 になります。このシステムでは、計算に実際の比率と実効比率が大きい方を使用します。

PG_NUM は、プールの現在の PG 数、または pg_num の変更が進行中である場合にプールが現在操作している PG 数です。NEW PG_NUM が存在する場合は、推奨される PG 数 (pg_num) です。これは常に 2 の乗で、提案された値が現在の値から 3 倍以上異なることしか提示されません。

AUTOSCALE はプール pg_autoscale_mode で、onoff、または warn のいずれかになります。

3.4.4. 配置グループの自動スケーリングの設定

クラスターがクラスターの使用状況に基づいて PG を自動的にスケーリングできるようにすることが、PG のスケーリングの最も簡単な方法です。Red Hat Ceph Storage は、システム全体の利用可能なストレージの合計と、目的の PG 数を取得し、各プールに保存されているデータ量とそれに応じて PG をポートします。このコマンドは、現在の PG 数 (pg_num) が計算または提案された PG 数から 3 倍以上ずれているプールにのみ変更を加えます。

各 OSD の PG のターゲット数は、mon_target_pg_per_osd 設定に基づいています。デフォルト値は 100 に設定されています。

手順

  1. mon_target_pg_per_osd を調整するには、以下を実行します。

    ceph config set global mon_target_pg_per_osd number

    以下に例を示します。

    $ ceph config set global mon_target_pg_per_osd 150

3.4.5. ターゲットプールサイズの指定

新しく作成されたプールはクラスター容量全体のごく一部を消費し、必要な PG の数が少ないように見えます。ただし、ほとんどの場合、クラスター管理者は、どのプールがほとんどのシステム容量を消費することが予想されているかを認識しています。Red Hat Ceph Storage への ターゲットサイズ として知られるこの情報を提供する場合、このようなプールは最初からより適切な数の PG (pg_num) を使用できます。このアプローチは、調整を行う際に、pg_num における後続の変更やデータの移動に関連するオーバーヘッドを防ぎます。

プールの target size は、以下の方法で指定できます。

3.4.5.1. プールの絶対サイズを使用したターゲットサイズの指定

手順

  1. プールの絶対サイズ (バイト単位) を使用して target size を設定します。

    ceph osd pool set pool-name target_size_bytes value

    たとえば、mypool が 100T の領域を消費することが予想されるようにシステムに指示します。

    $ ceph osd pool set mypool target_size_bytes 100T

また、任意の --target-size-bytes <bytes> 引数を ceph osd pool create コマンドに追加すると、作成時にプールのターゲットサイズを設定することもできます。

3.4.5.2. クラスター合計容量を使用したターゲットサイズの指定

手順

  1. クラスター容量の合計の比率を使用して target size を設定します。

    ceph osd pool set pool-name target_size_ratio ratio

    以下に例を示します。

    $ ceph osd pool set mypool target_size_ratio 1.0

    システムに、target_size_ratio が設定された他のプールと比較して、プール mypool が 1.0 を消費することが予想されることをシステムに指示します。mypool がクラスター内の唯一のプールである場合、これは、合計容量の 100% が予想される使用を意味します。target_size_ratio が 1.0 である 2 番目のプールがある場合、両方のプールはクラスター容量の 50% の使用を想定します。

また、任意の --target-size-ratio <ratio> 引数を ceph osd pool create コマンドに追加すると、作成時にプールのターゲットサイズを設定することもできます。

注記

不可能なターゲットサイズ値 (クラスターの合計よりも大きな容量、または 1.0 を超える合計の割合) を指定した場合、クラスターは POOL_TARGET_SIZE_RATIO_OVERCOMMITTED または POOL_TARGET_SIZE_BYTES_OVERCOMMITTED の警告を発生させます。

プールに target_size_ratiotarget_size_bytes の両方を指定すると、クラスターは比率のみを考慮し、POOL_HAS_TARGET_SIZE_BYTES_AND_RATIO 正常性の警告を出します。