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: root@host01 /]# ceph osd pool set testpool pg_autoscale_mode on
新規作成されたプールで自動スケーリングを有効にします。
構文
ceph config set global osd_pool_default_pg_autoscale_mode MODE
例
[ceph: root@host01 /]# ceph config set global osd_pool_default_pg_autoscale_mode on
bulk
フラグでプールを作成します。構文
ceph osd pool create POOL_NAME --bulk
例
[ceph: root@host01 /]# ceph osd pool create testpool --bulk
既存プールの
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 osd pool set POOL_NAME bulk true/false/1/0
例
[ceph: root@host01 /]# ceph osd pool set testpool bulk true
既存プールの
bulk
フラグを取得します。構文
ceph osd pool get POOL_NAME bulk
例
[ceph: root@host01 /]# ceph osd pool get testpool bulk bulk: true
3.5.4. 配置グループのスケーリングの推奨事項
プール、その相対的な使用率、およびストレージクラスター内の PG カウントに対する推奨の変更を表示できます。
前提条件
- 稼働中の Red Hat Ceph Storage クラスターがある。
- すべてのノードへの root レベルのアクセス。
手順
以下を使用して、各プール、その相対使用率、および推奨される変更をすべて表示できます。
[ceph: root@host01 /]# ceph osd pool autoscale-status
出力は以下のようになります。
POOL SIZE TARGET SIZE RATE RAW CAPACITY RATIO TARGET RATIO EFFECTIVE RATIO BIAS PG_NUM NEW PG_NUM AUTOSCALE BULK device_health_metrics 0 3.0 374.9G 0.0000 1.0 1 on False cephfs.cephfs.meta 24632 3.0 374.9G 0.0000 4.0 32 on False cephfs.cephfs.data 0 3.0 374.9G 0.0000 1.0 32 on False .rgw.root 1323 3.0 374.9G 0.0000 1.0 32 on False default.rgw.log 3702 3.0 374.9G 0.0000 1.0 32 on False default.rgw.control 0 3.0 374.9G 0.0000 1.0 32 on False default.rgw.meta 382 3.0 374.9G 0.0000 4.0 8 on False
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
(存在する場合) は、ターゲット比率が設定された他のプールと相対的にプールが消費することが予想されるストレージの比率です。ターゲットサイズバイトと比率の両方が指定される場合、比率が優先されます。プールの作成時に指定されていない限り、TARGETRATIO
のデフォルト値は 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: root@host01 /]# ceph config set global mon_target_pg_per_osd 150
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
アクティビティーの前に
noautoscale
フラグを設定します。例
[ceph: root@host01 /]# ceph osd pool set noautoscale
アクティビティーの完了時に
noautoscale
フラグの設定を解除します。例
[ceph: root@host01 /]# ceph osd pool unset noautoscale