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
オプションで調整できます。
マージ
Red Hat Ceph Storage は、既存の PG をサイズの大きい PG にマージすることもできるので、PG の合計が減少します。2 つの PG を 1 つにまとめると、プールの相対的な量が徐々に減少したときや、選択した PG の初期数が大きすぎたときに特に役に立ちます。PG のマージは便利ですが、複雑で繊細なプロセスでもあります。マージ時に、I/O の PG への一時停止が発生し、ストレージクラスターのパフォーマンスへの影響を最小限に抑えるために一度に PG を 1 つだけマージします。新しい pg_num
値に達するまで、Ceph はオブジェクトデータのマージにゆっくり機能します。
3.4.3. 配置グループの自動スケーリングモードの設定
Red Hat Ceph Storage クラスターの各プールには PG の pg_autoscale_mode
プロパティーがあり、これを off
、on
、または warn
に設定することができます。
-
off
: プールの自動スケーリングを無効にします。各プールに適切な PG 数を選択するのは管理者次第です。詳細は PG の数 セクションを参照してください。 -
on
: 指定プールの PG 数の自動調整を有効にします。 -
warn
: PG 数の調整が必要な場合にヘルスアラートを示します。
pg_autoscale_mode
のデフォルト値は、warn
モードです。
手順
pg_autoscaling_mode
を設定するには、以下を実行します。既存のプールの場合:
ceph osd pool set pool-name pg_autoscale_mode mode
たとえば、プール
testpool
の自動スケーリングを有効にするには、以下を実行します。$ ceph osd pool set testpool pg_autoscale_mode on
新規作成されたプールのデフォルトとして以下を実行します。
# ceph config set global osd_pool_default_pg_autoscale_mode <mode>
3.4.4. 配置グループの自動スケーリングの推奨事項
手順
以下を使用して、各プール、その相対使用率、および推奨される変更をすべて表示できます。
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
で、on
、off
、または 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
に設定されています。
手順
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 を設定します。
手順
プールの絶対サイズ (バイト単位) を使用して
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. クラスター合計容量を使用したターゲットサイズの指定
手順
クラスター容量の合計の比率を使用して
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_ratio
と target_size_bytes
の両方を指定すると、クラスターは比率のみを考慮し、POOL_HAS_TARGET_SIZE_BYTES_AND_RATIO
正常性の警告を出します。