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
ceph osd pool set pool-name pg_autoscale_mode mode
Copy to Clipboard Copied! Toggle word wrap Toggle overflow たとえば、プール
testpool
の自動スケーリングを有効にするには、以下を実行します。ceph osd pool set testpool pg_autoscale_mode on
$ ceph osd pool set testpool pg_autoscale_mode on
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 新規作成されたプールのデフォルトとして以下を実行します。
ceph config set global osd_pool_default_pg_autoscale_mode <mode>
# ceph config set global osd_pool_default_pg_autoscale_mode <mode>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.4.4. 配置グループの自動スケーリングの推奨事項 リンクのコピーリンクがクリップボードにコピーされました!
手順
以下を使用して、各プール、その相対使用率、および推奨される変更をすべて表示できます。
ceph osd pool autoscale-status
ceph osd pool autoscale-status
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力は以下のようになります。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
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 number
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下に例を示します。
ceph config set global mon_target_pg_per_osd 150
$ ceph config set global mon_target_pg_per_osd 150
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
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
ceph osd pool set pool-name target_size_bytes value
Copy to Clipboard Copied! Toggle word wrap Toggle overflow たとえば、
mypool
が 100T の領域を消費することが予想されるようにシステムに指示します。ceph osd pool set mypool target_size_bytes 100T
$ ceph osd pool set mypool target_size_bytes 100T
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
また、任意の --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 pool-name target_size_ratio ratio
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下に例を示します。
ceph osd pool set mypool target_size_ratio 1.0
$ ceph osd pool set mypool target_size_ratio 1.0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow システムに、
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
正常性の警告を出します。