1.5. Ceph Manager バランサーモジュールの使用
バランサーは、Ceph Manager のモジュールで、OSD 全体の配置グループ (PG) の配置を最適化することで、自動または監視された方法でバランスの取れた分散を実現します。
前提条件
- 稼働中の Red Hat Ceph Storage クラスターがある。
バランサーの起動
balancer モジュールが有効になっていることを確認します。
[root@mon ~]# ceph mgr module enable balancer
balancer モジュールをオンにします。
[root@mon ~]# ceph balancer on
モード
現在、サポートされるバランサーモードが 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 クライアントまたはそれ以降のクライアントしかサポートする必要がないことをクラスターに指示する必要があります。
[root@admin ~]# ceph osd set-require-min-compat-client luminous
このコマンドは、luminous 以前のクライアントまたはデーモンがモニターに接続されていると失敗します。
既知の問題により、カーネル CephFS クライアントは自身を jewel クライアントとして報告します。この問題を回避するには、
--yes-i-really-mean-it
フラグを使用します。[root@admin ~]# ceph osd set-require-min-compat-client luminous --yes-i-really-mean-it
使用しているクライアントのバージョンは、以下で確認できます。
[root@admin ~]# ceph features
警告Red Hat Ceph Storage 3.x では、upmap 機能は、クラスターが使用される際の PG のバランスのために Ceph Manager バランサーモジュールによって使用される場合にのみサポートされます。Red Hat Ceph Storage 3.x では、upmap 機能を使用した PG の手動リバランスはサポートされません。
デフォルトのモードは crush-compat
です。モードは以下のように変更できます。
[root@mon ~]# ceph balancer mode upmap
または
[root@mon ~]# ceph balancer mode crush-compat
ステータス
バランサーの現在のステータスは、以下を実行していつでも確認できます。
[root@mon ~]# ceph balancer status
自動バランシング
デフォルトでは、バランサーモジュールをオンにする場合、自動分散が使用されます。
[root@mon ~]# ceph balancer on
以下を使用して、バランサーを再度オフにできます。
[root@mon ~]# ceph balancer off
これには、古いクライアントと後方互換性があり、時間の経過とともにデータディストリビューションに小さな変更を加えて、OSD を同等に利用されるようにする crush-compat
モードを使用します。
スロットリング
たとえば、OSD が失敗し、システムがまだ修復していない場合などに、クラスターのパフォーマンスが低下する場合は、PG ディストリビューションには調整は行われません。
クラスターが正常な場合、バランサーは変更を調整して、置き間違えた、または移動する必要のある PG の割合がデフォルトで 5% のしきい値を下回るようにします。このパーセンテージは、max_misplaced
設定を使用して調整できます。たとえば、しきい値を 7% に増やすには、次のコマンドを実行します。
[root@mon ~]# ceph config-key set mgr/balancer/max_misplaced .07
監視付き最適化
balancer 操作はいくつかの異なるフェーズに分類されます。
-
プラン
の構築 -
現在の PG 分散または
プラン
実行後に得られる PG 分散に対するデータ分散の品質の評価 プラン
の実行現在のディストリビューションを評価し、スコアを付けます。
[root@mon ~]# ceph balancer eval
単一プールのディストリビューションを評価するには、以下を実行します。
[root@mon ~]# ceph balancer eval <pool-name>
評価の詳細を表示するには、以下を実行します。
[root@mon ~]# ceph balancer eval-verbose ...
現在設定されているモードを使用してプランを生成するには、以下を実行します。
[root@mon ~]# ceph balancer optimize <plan-name>
<plan-name>
は、カスタムプラン名に置き換えます。プランの内容を表示するには、以下を実行します。
[root@mon ~]# ceph balancer show <plan-name>
古いプランを破棄するには、以下を実行します。
[root@mon ~]# ceph balancer rm <plan-name>
現在記録されているプランを表示するには、status コマンドを使用します。
[root@mon ~]# ceph balancer status
プラン実行後に生じるディストリビューションの品質を計算するには、以下を実行します。
[root@mon ~]# ceph balancer eval <plan-name>
プランを実行するには、以下を実行します。
[root@mon ~]# ceph balancer execute <plan-name>
[注記]:ディストリビューションの改善が想定される場合にのみ、プランを実行します。実行後、プランは破棄されます。