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

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

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

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

auto-scaler の仕組み

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

3.4.2. 配置グループの分割とマージ

分割

Red Hat Ceph Storage は既存の配置グループ (PG) を小規模な PG に分割することができます。これにより、特定のプールの PG の合計数が増加します。既存の配置グループ (PG) を分割すると、ストレージ要件の増加に伴って、少数の Red Hat Ceph Storage クラスターを徐々にスケーリングできます。PG の自動スケーリング機能により、pg_num 値を増やすことができます。これにより、既存の PG がストレージクラスターを拡張するように分割されます。PG の自動スケーリング機能が無効な場合には、PG 分割プロセスを開始する pg_num 値を手動で増やすことができます。たとえば、pg_num の値を 4 から 16 に増やすと、4 つの部分に分割されます。pg_num 値を増やすと、pgp_num 値も増えますが、pgp_num 値は徐々に増加します。この段階の拡張は、オブジェクトデータを移行するため、ストレージクラスターのパフォーマンスおよびクライアントワークロードへの影響を最小限に抑えるために行われます。オブジェクトデータがシステムに大きな負荷が発生するためです。デフォルトでは、Ceph は misplaced の状態にあるオブジェクトデータの 5% を超えてキューを発行したり、移行したりしません。このデフォルトのパーセンテージは、target_max_misplaced_ratio オプションで調整できます。

149 Ceph Auto scalling 0321 splitting

マージ

Red Hat Ceph Storage は、既存の PG をサイズの大きい PG にマージすることもできるので、PG の合計が減少します。2 つの PG を 1 つにまとめると、プールの相対的な量が徐々に減少したときや、選択した PG の初期数が大きすぎたときに特に役に立ちます。PG のマージは便利ですが、複雑で繊細なプロセスでもあります。マージ時に、I/O の PG への一時停止が発生し、ストレージクラスターのパフォーマンスへの影響を最小限に抑えるために一度に PG を 1 つだけマージします。新しい pg_num 値に達するまで、Ceph はオブジェクトデータのマージにゆっくり機能します。

149 Ceph Auto scalling 0321 merging

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

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

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

pg_autoscale_mode のデフォルト値は、warn モードです。

手順

  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.4. 配置グループの自動スケーリングの推奨事項

手順

  1. 以下を使用して、各プール、その相対使用率、および推奨される変更をすべて表示できます。

    ceph osd pool autoscale-status

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

    POOL                        SIZE TARGET SIZE RATE RAW CAPACITY  RATIO TARGET RATIO EFFECTIVE RATIO BIAS PG_NUM NEW PG_NUM AUTOSCALE
    cephfs_data                  65               3.0       449.9G 0.0000                               1.0     32            warn
    cephfs_metadata           78724               3.0       449.9G 0.0000                               1.0      8            warn
    .rgw.root                  3062               3.0       449.9G 0.0000                               1.0     32            warn
    default.rgw.control           0               3.0       449.9G 0.0000                               1.0     32            warn
    default.rgw.meta           1304               3.0       449.9G 0.0000                               1.0     32            warn
    default.rgw.log            6761               3.0       449.9G 0.0000                               1.0     32            warn
    default.rgw.buckets.index     0               3.0       449.9G 0.0000                               1.0     32            warn
    default.rgw.buckets.data   4910               3.0       449.9G 0.0000                               1.0     32            warn
    ocs-ext                   119.2M              3.0       449.9G 0.0008                               1.0     32            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 になります。システムは、実際の比率が大きい場合と、その計算に効果的な比率を使用します。

BIAS は、PG の数に関して、あるプールを他のプールよりも速くスケーリングするために、PG Autoscaler によって使用されるプールプロパティーです。これは基本的に、デフォルトの PG 数よりも多くの PG をプールに提供するために使用する乗数です。このプロパティーは、サイズが小さくてもオブジェクト数が多いメタデータプールに特に使用されるため、パフォーマンスを向上させるには、より迅速にスケーリングすることが重要です。BIAS のデフォルト値は 1.0 です。この値は、ceph osd pool set pool-name pg_autoscale_bias 4 コマンドを実行して設定できます。許可される値は 0 から 1000 までです。ただし、CephFS メタデータプールおよび Ceph Object Gateway インデックスプールでは、BIAS の値をデフォルトで 4.0 に設定することが推奨されます。

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

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

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

クラスターの使用状況に基づいて 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.6. ターゲットプールサイズの指定

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

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

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

手順

  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.6.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 正常性の警告を出します。