1.5. Ceph Manager バランサーモジュールの使用
バランサーは、Ceph Manager のモジュールで、OSD 全体の配置グループ (PG) の配置を最適化することで、自動または監視された方法でバランスの取れた分散を実現します。
前提条件
- 稼働中の Red Hat Ceph Storage クラスターがある。
バランサーの起動
balancer モジュールが有効になっていることを確認します。
ceph mgr module enable balancer
[root@mon ~]# ceph mgr module enable balancer
Copy to Clipboard Copied! Toggle word wrap Toggle overflow balancer モジュールをオンにします。
ceph balancer on
[root@mon ~]# ceph balancer on
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
モード
現在、サポートされるバランサーモードが 2 つあります。
crush-compat: CRUSH compat モードは、Ceph Luminous で導入された compat の
weight-set
機能を使用して、CRUSH 階層のデバイスの別の重みセットを管理します。通常の重みは、デバイスに保存する目的のデータ量を反映するために、デバイスのサイズに設定したままにする必要があります。その後バランサーは、可能な限り目的のディストリビューションに一致するディストリビューションを達成するために、weight-set
の値を少しずつ増減させ、値を最適化します。PG の配置は擬似ランダムプロセスであるため、配置には自然なばらつきが伴います。重みを最適化することで、バランサーはこの自然なばらつきに対応します。このモードは、古いクライアントと完全に後方互換性があります。OSDMap および CRUSH マップが古いクライアントと共有されると、バランサーは最適化された重みを実際の重みとして提示します。
このモードの主な制限は、階層のサブツリーが OSD を共有する場合に、バランサーが配置ルールの異なる複数の CRUSH 階層を処理できないことです。この設定では、共有 OSD での領域の使用を管理するのが困難になるため、一般的には推奨されません。そのため、通常、この制限は問題にはなりません。
upmap: Luminous 以降、OSDMap は、通常の CRUSH 配置計算への例外として、個々の OSD の明示的なマッピングを保存できます。これらの
upmap
エントリーにより、PG マッピングを細かく制御できます。この CRUSH モードは、バランスの取れた分散を実現するために、個々の PG の配置を最適化します。多くの場合、この分散は各 OSD の PG 数 +/-1 PG で完璧です。これは割り切れない場合があるためです。重要upmap を使用するには、すべてのクライアントが Red Hat Ceph Storage 3.x 以降および Red Hat Enterprise Linux 7.5 以降を実行している必要があります。
この機能を使用できるようにするには、以下のコマンドにより、luminous クライアントまたはそれ以降のクライアントしかサポートする必要がないことをクラスターに指示する必要があります。
ceph osd set-require-min-compat-client luminous
[root@admin ~]# ceph osd set-require-min-compat-client luminous
Copy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは、luminous 以前のクライアントまたはデーモンがモニターに接続されていると失敗します。
既知の問題により、カーネル CephFS クライアントは自身を jewel クライアントとして報告します。この問題を回避するには、
--yes-i-really-mean-it
フラグを使用します。ceph osd set-require-min-compat-client luminous --yes-i-really-mean-it
[root@admin ~]# ceph osd set-require-min-compat-client luminous --yes-i-really-mean-it
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用しているクライアントのバージョンは、以下で確認できます。
ceph features
[root@admin ~]# ceph features
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 警告Red Hat Ceph Storage 3.x では、upmap 機能は、クラスターが使用される際の PG のバランスのために Ceph Manager バランサーモジュールによって使用される場合にのみサポートされます。Red Hat Ceph Storage 3.x では、upmap 機能を使用した PG の手動リバランスはサポートされません。
デフォルトのモードは crush-compat
です。モードは以下のように変更できます。
ceph balancer mode upmap
[root@mon ~]# ceph balancer mode upmap
または
ceph balancer mode crush-compat
[root@mon ~]# ceph balancer mode crush-compat
ステータス
バランサーの現在のステータスは、以下を実行していつでも確認できます。
ceph balancer status
[root@mon ~]# ceph balancer status
自動バランシング
デフォルトでは、バランサーモジュールをオンにする場合、自動分散が使用されます。
ceph balancer on
[root@mon ~]# ceph balancer on
以下を使用して、バランサーを再度オフにできます。
ceph balancer off
[root@mon ~]# ceph balancer off
これには、古いクライアントと後方互換性があり、時間の経過とともにデータディストリビューションに小さな変更を加えて、OSD を同等に利用されるようにする crush-compat
モードを使用します。
スロットリング
たとえば、OSD が失敗し、システムがまだ修復していない場合などに、クラスターのパフォーマンスが低下する場合は、PG ディストリビューションには調整は行われません。
クラスターが正常な場合、バランサーは変更を調整して、置き間違えた、または移動する必要のある PG の割合がデフォルトで 5% のしきい値を下回るようにします。このパーセンテージは、max_misplaced
設定を使用して調整できます。たとえば、しきい値を 7% に増やすには、次のコマンドを実行します。
ceph config-key set mgr/balancer/max_misplaced .07
[root@mon ~]# ceph config-key set mgr/balancer/max_misplaced .07
監視付き最適化
balancer 操作はいくつかの異なるフェーズに分類されます。
-
プラン
の構築 -
現在の PG 分散または
プラン
実行後に得られる PG 分散に対するデータ分散の品質の評価 プラン
の実行現在のディストリビューションを評価し、スコアを付けます。
ceph balancer eval
[root@mon ~]# ceph balancer eval
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 単一プールのディストリビューションを評価するには、以下を実行します。
ceph balancer eval <pool-name>
[root@mon ~]# ceph balancer eval <pool-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 評価の詳細を表示するには、以下を実行します。
ceph balancer eval-verbose ...
[root@mon ~]# ceph balancer eval-verbose ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 現在設定されているモードを使用してプランを生成するには、以下を実行します。
ceph balancer optimize <plan-name>
[root@mon ~]# ceph balancer optimize <plan-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <plan-name>
は、カスタムプラン名に置き換えます。プランの内容を表示するには、以下を実行します。
ceph balancer show <plan-name>
[root@mon ~]# ceph balancer show <plan-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 古いプランを破棄するには、以下を実行します。
ceph balancer rm <plan-name>
[root@mon ~]# ceph balancer rm <plan-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 現在記録されているプランを表示するには、status コマンドを使用します。
ceph balancer status
[root@mon ~]# ceph balancer status
Copy to Clipboard Copied! Toggle word wrap Toggle overflow プラン実行後に生じるディストリビューションの品質を計算するには、以下を実行します。
ceph balancer eval <plan-name>
[root@mon ~]# ceph balancer eval <plan-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow プランを実行するには、以下を実行します。
ceph balancer execute <plan-name>
[root@mon ~]# ceph balancer execute <plan-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [注記]:ディストリビューションの改善が想定される場合にのみ、プランを実行します。実行後、プランは破棄されます。