3.5. 配置グループの自動スケーリング
プール内の配置グループ (PG) 数では、クラスターのピアがデータおよびリバランスの分散方法などの重要なロールを果たします。
PG 数の自動スケーリングにより、クラスターの管理が容易になります。pg-autoscaling コマンドは、PG のスケーリングの推奨事項を示します。または、クラスターの使用状況に応じて PG を自動的にスケーリングします。
- 自動スケーリングの動作に関する詳細は、「配置グループの自動スケーリング」 を参照してください。
- 自動スケーリングを有効または無効にする場合は、「配置グループの自動スケーリングモードの設定」 を参照してください。
- 配置グループのスケーリングの推奨事項を表示するには、「配置グループのスケーリングの推奨事項」 を参照してください。
- 配置グループの自動スケーリングを設定するには、「配置グループの自動スケーリングの設定」 を参照してください。
-
オートスケーラーをグローバル更新するには、「
noautoscaleフラグの更新」 を参照してください。 - ターゲットプールサイズを設定するには、「ターゲットプールサイズの指定」 を参照してください。
3.5.1. 配置グループの自動スケーリング リンクのコピーリンクがクリップボードにコピーされました!
auto-scaler の仕組み
auto-scaler はプールを分析し、サブツリーごとに調整します。各プールは異なる CRUSH ルールにマップされ、各ルールは異なるデバイスにデータを分散できるため、Ceph は階層の各サブツリーを独立して使用することを考慮します。たとえば、クラス ssd の OSD にマップするプールと hdd クラスの OSD にマップするプールは、それぞれがそれぞれのデバイスタイプの数に依存する最適な PG 数を持ちます。
3.5.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.5.3. 配置グループの自動スケーリングモードの設定 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Ceph Storage クラスターの各プールには PG の pg_autoscale_mode プロパティーがあり、これを off、on、または warn に設定することができます。
-
off: プールの自動スケーリングを無効にします。各プールに適切な PG 数を選択するのは管理者次第です。詳細は、配置グループ数 セクションを参照してください。 -
on: 指定プールの PG 数の自動調整を有効にします。 -
warn: PG 数の調整が必要な場合にヘルスアラートを示します。
Red Hat Ceph Storage 5 以降のリリースでは、pg_autoscale_mode がデフォルトで オン になっています。アップグレードされたストレージクラスターは、既存の pg_autoscale_mode 設定を保持します。新しく作成されたプールでは、pg_auto_scale モードが オン になっています。PG カウントは自動的に調整され、Ceph ステータス が PG カウント調整中に回復中と表示される場合があります。
オートスケーラーは bulk フラグを使用して、PG の完全な補完で開始するプールを決定し、プール全体の使用率が均一でない場合にのみスケールダウンします。ただし、プールに bulk フラグがない場合、プールは最小限の PG で開始され、プールでの使用量が多い場合にのみ開始されます。
オートスケーラーは重複するルートを特定し、そのルートが含まれるプールがスケーリングされないようにします。これは、root が重複しているとスケーリングプロセスに問題がある可能性があるためです。
手順
既存のプールで自動スケーリングを有効にします。
構文
ceph osd pool set POOL_NAME pg_autoscale_mode on
ceph osd pool set POOL_NAME pg_autoscale_mode onCopy to Clipboard Copied! Toggle word wrap Toggle overflow 例
[ceph: root@host01 /]# ceph osd pool set testpool pg_autoscale_mode on
[ceph: root@host01 /]# ceph osd pool set testpool pg_autoscale_mode onCopy 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 MODECopy to Clipboard Copied! Toggle word wrap Toggle overflow 例
[ceph: root@host01 /]# ceph config set global osd_pool_default_pg_autoscale_mode on
[ceph: root@host01 /]# ceph config set global osd_pool_default_pg_autoscale_mode onCopy to Clipboard Copied! Toggle word wrap Toggle overflow bulkフラグでプールを作成します。構文
ceph osd pool create POOL_NAME --bulk
ceph osd pool create POOL_NAME --bulkCopy to Clipboard Copied! Toggle word wrap Toggle overflow 例
[ceph: root@host01 /]# ceph osd pool create testpool --bulk
[ceph: root@host01 /]# ceph osd pool create testpool --bulkCopy to Clipboard Copied! Toggle word wrap Toggle overflow 既存プールの
bulkフラグを設定または設定解除します。重要値は
true、false、1、または0として書き込む必要があります。1はtrueに相当し、0はfalseに相当します。大文字と小文字が異なるか、他の内容で書かれている場合、エラーが発生します。以下は、間違った構文で記述されたコマンドの例です。
[ceph: root@host01 /]# ceph osd pool set ec_pool_overwrite bulk True Error EINVAL: expecting value 'true', 'false', '0', or '1'
[ceph: root@host01 /]# ceph osd pool set ec_pool_overwrite bulk True Error EINVAL: expecting value 'true', 'false', '0', or '1'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 構文
ceph osd pool set POOL_NAME bulk true/false/1/0
ceph osd pool set POOL_NAME bulk true/false/1/0Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例
[ceph: root@host01 /]# ceph osd pool set testpool bulk true
[ceph: root@host01 /]# ceph osd pool set testpool bulk trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 既存プールの
bulkフラグを取得します。構文
ceph osd pool get POOL_NAME bulk
ceph osd pool get POOL_NAME bulkCopy to Clipboard Copied! Toggle word wrap Toggle overflow 例
[ceph: root@host01 /]# ceph osd pool get testpool bulk bulk: true
[ceph: root@host01 /]# ceph osd pool get testpool bulk bulk: trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.5.4. 配置グループのスケーリングの推奨事項 リンクのコピーリンクがクリップボードにコピーされました!
プール、その相対的な使用率、およびストレージクラスター内の PG カウントに対する推奨の変更を表示できます。
前提条件
- 稼働中の Red Hat Ceph Storage クラスターがある。
- すべてのノードへの root レベルのアクセス。
手順
以下を使用して、各プール、その相対使用率、および推奨される変更をすべて表示できます。
[ceph: root@host01 /]# ceph osd pool autoscale-status
[ceph: root@host01 /]# ceph osd pool autoscale-statusCopy 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 (存在する場合) は、ターゲット比率が設定された他のプールと相対的にプールが消費することが予想されるストレージの比率です。ターゲットサイズバイトと比率の両方が指定される場合、比率が優先されます。プールの作成時に指定されていない限り、TARGET RATIO のデフォルト値は 0 です。プールで指定する --target_ratio が多いほど、プールで必要な PG は大きくなります。
EFFECTIVE RATIO は、次の 2 つの方法で調整した後の目標比率です。1 (目標サイズが設定されたプールで使用されると予想される容量を差し引く)。2. ターゲット比率が設定されたプール間でターゲット比率を正規化し、残りの領域を結合します。たとえば、target ratio が 1.0 の 4 つのプールの effective ratio は 0.25 になります。システムは、実際の比率が大きい場合と、その計算に効果的な比率を使用します。
BIAS は、特定のプールで必要とする PG 数に関する事前情報に基づいて、プールの PG を手動で調整するための乗数として使用されます。デフォルトでは、プールの作成時に指定されていない限り、値は 1.0 です。プールに指定する --bias が多いほど、プールで必要な PG は大きくなります。
PG_NUM は、プールの現在の PG 数、または pg_num の変更が進行中である場合にプールが現在操作している PG 数です。NEW PG_NUM が存在する場合は、推奨される PG 数 (pg_num) です。これは常に 2 の累乗となり、推奨される値は現在の値のみによって 3 倍以上になります。
AUTOSCALE はプール pg_autoscale_mode で、on、off、または warn のいずれかになります。
BULK は、どのプールが PG の完全な補完で開始するかを決定するために使用されます。BULK は、プール全体の使用率が均等でない場合にのみスケールダウンします。プールにこのフラグがない場合、プールは最小量の PG で開始され、プールの使用量が増加した場合にのみ使用されます。
BULK 値は true、false、1、または 0 です。1 は true に相当し、0 は false に相当します。デフォルト値は false です。
BULK 値は、プールの作成中または作成後に設定します。
バルクフラグの使用の詳細は、プールの作成 および 配置グループの自動スケールモードの設定 を参照してください。
3.5.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 numberCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下に例を示します。
[ceph: root@host01 /]# ceph config set global mon_target_pg_per_osd 150
[ceph: root@host01 /]# ceph config set global mon_target_pg_per_osd 150Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.5.6. noautoscale フラグの更新 リンクのコピーリンクがクリップボードにコピーされました!
すべてのプールに対して同時にオートスケーラーを有効または無効にする場合は、noautoscale グローバルフラグを使用できます。このグローバルフラグは、一部の OSD がバウンスされたとき、またはクラスターがメンテナンス中、ストレージクラスターのアップグレード中に役立ちます。アクティビティーの前にフラグを設定し、アクティビティーが完了したらフラグを解除できます。
デフォルトでは、noautoscale フラグは off に設定されています。このフラグが設定されている場合には、すべてのプールで pg_autoscale_mode が オフ になり、すべてのプールでオートスケーラーが無効になります。
前提条件
- 稼働中の Red Hat Ceph Storage クラスターがある。
- すべてのノードへの root レベルのアクセス。
手順
noautoscaleフラグの値を取得します。例
[ceph: root@host01 /]# ceph osd pool get noautoscale
[ceph: root@host01 /]# ceph osd pool get noautoscaleCopy to Clipboard Copied! Toggle word wrap Toggle overflow アクティビティーの前に
noautoscaleフラグを設定します。例
[ceph: root@host01 /]# ceph osd pool set noautoscale
[ceph: root@host01 /]# ceph osd pool set noautoscaleCopy to Clipboard Copied! Toggle word wrap Toggle overflow アクティビティーの完了時に
noautoscaleフラグの設定を解除します。例
[ceph: root@host01 /]# ceph osd pool unset noautoscale
[ceph: root@host01 /]# ceph osd pool unset noautoscaleCopy to Clipboard Copied! Toggle word wrap Toggle overflow