5.4. Ceph Manager バランサーモジュールの使用


バランサーは、Ceph Manager (ceph-mgr) のモジュールで、OSD 全体の配置グループ (PG) の配置を最適化することで、自動または監視された方法でバランスの取れた分散を実現します。

現在、バランサーモジュールを無効にできません。これをオフにして設定をカスタマイズすることしかできません。

モード

現在、サポートされるバランサーモードが 2 つあります。

  • crush-compat: CRUSH compat モードは、Ceph Luminous で導入された compat の weight-set 機能を使用して、CRUSH 階層のデバイスの別の重みセットを管理します。通常の重みは、デバイスに保存する目的のデータ量を反映するために、デバイスのサイズに設定したままにする必要があります。その後バランサーは、可能な限り目的のディストリビューションに一致するディストリビューションを達成するために、weight-set の値を少しずつ増減させ、値を最適化します。PG の配置は擬似ランダムプロセスであるため、配置には自然なばらつきが伴います。重みを最適化することで、バランサーはこの自然なばらつきに対応します。

    このモードは、古いクライアントと完全に後方互換性があります。OSDMap および CRUSH マップが古いクライアントと共有されると、バランサーは最適化された weightsff を実際の重みとして提示します。

    このモードの主な制限は、階層のサブツリーが OSD を共有する場合に、バランサーが配置ルールの異なる複数の CRUSH 階層を処理できないことです。この設定では、共有 OSD での領域の使用を管理するのが困難になるため、一般的には推奨されません。そのため、通常、この制限は問題にはなりません。

  • upmap: Luminous 以降、OSDMap は、通常の CRUSH 配置計算への例外として、個々の OSD の明示的なマッピングを保存できます。これらの upmap エントリーにより、PG マッピングを細かく制御できます。この CRUSH モードは、バランスの取れた分散を実現するために、個々の PG の配置を最適化します。多くの場合、この分散は各 OSD の PG 数 +/-1 PG で “完璧“ です。これは割り切れない場合があるためです。

    重要

    この機能の使用を許可するには、次のコマンドを使用して、luminous 以降のクライアントのみをサポートする必要があることをクラスターに伝える必要があります。

    [ceph: root@host01 /]# ceph osd set-require-min-compat-client luminous

    このコマンドは、luminous 以前のクライアントまたはデーモンがモニターに接続されていると失敗します。

    既知の問題により、カーネル CephFS クライアントは自身を jewel クライアントとして報告します。この問題を回避するには、--yes-i-really-mean-it フラグを使用します。

    [ceph: root@host01 /]# ceph osd set-require-min-compat-client luminous --yes-i-really-mean-it

    使用しているクライアントのバージョンは、以下で確認できます。

    [ceph: root@host01 /]# ceph features

5.4.1. キャパシティーバランサーを使用した Red Hat Ceph クラスターのバランス調整

キャパシティバランサーを使用して、Red Hat Ceph Storage クラスターのバランスをとります。

前提条件

  • 稼働中の Red Hat Ceph Storage クラスターがある。

手順

  1. バランサーモジュールが有効になっているかどうかを確認します。

    [ceph: root@host01 /]# ceph mgr module enable balancer

  2. balancer モジュールをオンにします。

    [ceph: root@host01 /]# ceph balancer on

  3. モードを変更するには、次のコマンドを使用します。デフォルトのモードは upmap です。

    [ceph: root@host01 /]# ceph balancer mode crush-compat

    あるいは、以下のような場合もあります。

    [ceph: root@host01 /]# ceph balancer mode upmap

  4. バランサーの現在の状態を確認します。

    [ceph: root@host01 /]# ceph balancer status

自動バランシング

デフォルトでは、バランサーモジュールをオンにする場合、自動分散が使用されます。

[ceph: root@host01 /]# ceph balancer on

次のコマンドを使用してバランサーを再度オフにできます。

[ceph: root@host01 /]# ceph balancer off

これには、古いクライアントと後方互換性があり、時間の経過とともにデータディストリビューションに小さな変更を加えて、OSD を同等に利用されるようにする crush-compat モードを使用します。

スロットリング

たとえば、OSD が失敗し、システムがまだ修復していない場合などに、クラスターのパフォーマンスが低下する場合は、PG ディストリビューションには調整は行われません。

クラスターが正常な場合、バランサーは変更を調整して、置き間違えた、または移動する必要のある PG の割合がデフォルトで 5% のしきい値を下回るようにします。この割合は、target_max_misplaced_ratio の設定を使用して調整できます。たとえば、しきい値を 7% に増やすには、次のコマンドを実行します。

[ceph: root@host01 /]# ceph config-key set mgr target_max_misplaced_ratio .07

自動バランシングの場合:

  • 自動バランサーの実行間におけるスリープ時間を秒単位で設定します。

[ceph: root@host01 /]# ceph config set mgr mgr/balancer/sleep_interval 60

  • 自動バランシングを開始する時刻を HHMM 形式で設定します。

[ceph: root@host01 /]# ceph config set mgr mgr/balancer/begin_time 0000

  • 自動バランシングを終了する時刻を HHMM 形式で設定します。

[ceph: root@host01 /]# ceph config set mgr mgr/balancer/end_time 2359

  • 自動バランシングをこの曜日以降に制限します。0 は日曜日、1 は月曜日というように、crontab と同じ規則を使用します。

[ceph: root@host01 /]# ceph config set mgr mgr/balancer/begin_weekday 0

  • 自動バランシングをこの曜日以前に制限します。0 は日曜日、1 は月曜日というように、crontab と同じ規則を使用します。

[ceph: root@host01 /]# ceph config set mgr mgr/balancer/end_weekday 6

  • 自動バランシングを制限するプール ID を定義します。これのデフォルトは空の文字列で、すべてのプールが均衡していることを意味します。数値のプール ID は、ceph osd pool ls detail コマンドで取得できます。

[ceph: root@host01 /]# ceph config set mgr mgr/balancer/pool_ids 1,2,3

監視付き最適化

balancer 操作はいくつかの異なるフェーズに分類されます。

  1. プラン の構築。
  2. 現在の PG ディストリビューションまたは プラン 実行後に得られる PG ディストリビューションに対するデータ分散の品質の評価。
  3. プラン の実行。

    • 現在のディストリビューションを評価し、スコアを付けます。

      [ceph: root@host01 /]# ceph balancer eval

    • 単一プールのディストリビューションを評価するには、以下を実行します。

      構文

      ceph balancer eval POOL_NAME

      [ceph: root@host01 /]# ceph balancer eval rbd

    • 評価の詳細を表示するには、以下を実行します。

      [ceph: root@host01 /]# ceph balancer eval-verbose ...

    • 現在設定されているモードを使用してプランを生成するには、以下を実行します。

      構文

      ceph balancer optimize PLAN_NAME

      PLAN_NAME は、カスタムプラン名に置き換えます。

      [ceph: root@host01 /]# ceph balancer optimize rbd_123

    • プランの内容を表示するには、以下を実行します。

      構文

      ceph balancer show PLAN_NAME

      [ceph: root@host01 /]# ceph balancer show rbd_123

    • 古いプランを破棄するには、以下を実行します。

      構文

      ceph balancer rm PLAN_NAME

      [ceph: root@host01 /]# ceph balancer rm rbd_123

    • 現在記録されているプランを表示するには、status コマンドを使用します。

      [ceph: root@host01 /]# ceph balancer status
    • プラン実行後に生じるディストリビューションの品質を計算するには、以下を実行します。

      構文

      ceph balancer eval PLAN_NAME

      [ceph: root@host01 /]# ceph balancer eval rbd_123

    • プランを実行するには、以下を実行します。

      構文

      ceph balancer execute PLAN_NAME

      [ceph: root@host01 /]# ceph balancer execute rbd_123

      注記

      ディストリビューションの改善が想定される場合にのみ、プランを実行します。実行後、計画は破棄されます。

5.4.2. 読み取りバランサーを使用した Red Hat Ceph クラスターのバランス調整 [テクノロジープレビュー]

重要

Read Balancer は、Red Hat Ceph Storage 7.0 専用のテクノロジープレビュー機能です。テクノロジープレビュー機能は、実稼働環境での Red Hat サービスレベルアグリーメント (SLA) ではサポートされておらず、機能的に完全ではない可能性があるため、Red Hat では実稼働環境での使用を推奨していません。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。詳細は、Red Hat テクノロジープレビュー機能のサポート範囲 を参照してください。

アンバランスなプライマリー OSD がある場合は、osdmaptool に組み込まれているオフラインオプティマイザーを使用してそれらを更新できます。

Red Hat では、最適な結果を確保するために、読み取りバランサーを実行する前にキャパシティーバランサーを実行することを推奨します。

読み取りバランサーを使用してクラスターのバランスを調整するには、次の手順に従います。

前提条件

  • 実行し、容量のバランスが取れた Red Hat Ceph Storage クラスター。
  • Red Hat では、最適な結果を確保するために、読み取りバランサーを実行する前に、キャパシティーバランサーを実行して各 OSD の容量のバランスを調整することを推奨します。次の手順を実行して容量のバランスをとります。

    1. osdmap の最新コピーを取得します。

      [ceph: root@host01 /]# ceph osd  getmap -o map
    2. アップマップバランサーを実行します。

      [ceph: root@host01 /]# ospmaptool map –upmap out.txt
    3. out.txt ファイルには、提案されたソリューションが含まれています。

      この手順のコマンドは、クラスターに変更を適用するために実行する通常の Ceph CLI コマンドです。

      out.txt ファイルに推奨事項がある場合は、次のコマンドを実行します。

      [ceph: root@host01 /]# source out.txt

      詳細は、キャパシティーバランサーを使用した IBM Ceph クラスターのバランス調整 を参照してください。

手順

  1. 各プールで利用可能な read_balance_score を確認します。

    [ceph: root@host01 /]# ceph osd pool ls detail

    read_balance_score が 1 を大幅に上回っている場合、プールにはバランスの取れていないプライマリー OSD があります。

    同種のクラスターの場合、最適なスコアは [Ceil{(PG の数/OSD の数)}/(PG の数/OSD の数]/[PG の数/OSD の数)/(PG の数/OSD の数値)] です。たとえば、32 個の PG と 10 個の OSD を含むプールがある場合は、(PG の数/OSD の数) = 32/10 = 3.2 となります。したがって、すべてのデバイスが同一である場合の最適なスコアは、上限値 3.2 を (PG の数/OSD の数) で割った値、つまり 4/3.2 = 1.25 になります。同じシステム内に 64 PG を持つ別のプールがある場合、最適なスコアは 7/6.4 =1.09375 です。

    出力例:

    $ ceph osd pool ls detail
    pool 1 '.mgr' replicated size 3 min_size 1 crush_rule 0 object_hash rjenkins pg_num 1 pgp_num 1 autoscale_mode on last_change 17 flags hashpspool stripe_width 0 pg_num_max 32 pg_num_min 1 application mgr read_balance_score 3.00
    pool 2 'cephfs.a.meta' replicated size 3 min_size 1 crush_rule 0 object_hash rjenkins pg_num 16 pgp_num 16 autoscale_mode on last_change 55 lfor 0/0/25 flags hashpspool stripe_width 0 pg_autoscale_bias 4 pg_num_min 16 recovery_priority 5 application cephfs read_balance_score 1.50
    pool 3 'cephfs.a.data' replicated size 3 min_size 1 crush_rule 0 object_hash rjenkins pg_num 128 pgp_num 128 autoscale_mode on last_change 27 lfor 0/0/25 flags hashpspool,bulk stripe_width 0 application cephfs read_balance_score 1.31

  2. osdmap の最新のコピーを取得します。

    [ceph: root@host01 /]# ceph osd getmap -o om

    出力例:

    got osdmap epoch 56

  3. オプティマイザーを実行します。

    out.txt ファイルには、提案されたソリューションが含まれています。

    [ceph: root@host01 /]# osdmaptool om --read out.txt --read-pool _POOL_NAME_ [--vstart]

    出力例:

    $ osdmaptool om --read out.txt --read-pool cephfs.a.meta
    ./bin/osdmaptool: osdmap file 'om'
    writing upmap command output to: out.txt
    ---------- BEFORE ------------
     osd.0 | primary affinity: 1 | number of prims: 4
     osd.1 | primary affinity: 1 | number of prims: 8
     osd.2 | primary affinity: 1 | number of prims: 4
    
    read_balance_score of 'cephfs.a.meta': 1.5
    
    ---------- AFTER ------------
     osd.0 | primary affinity: 1 | number of prims: 5
     osd.1 | primary affinity: 1 | number of prims: 6
     osd.2 | primary affinity: 1 | number of prims: 5
    
    read_balance_score of 'cephfs.a.meta': 1.13
    
    
    num changes: 2

  4. out.txt ファイルには、提案されたソリューションが含まれています。

    この手順のコマンドは、クラスターに変更を適用するために実行する通常の Ceph CLI コマンドです。vstart クラスターで作業している場合は、--vstart パラメーターを渡すと、CLI コマンドが ./bin/ 接頭辞でフォーマットされるようになります。

    [ceph: root@host01 /]# source out.txt

    出力例:

    $ cat out.txt
    ceph osd pg-upmap-primary 2.3 0
    ceph osd pg-upmap-primary 2.4 2
    
    $ source out.txt
    change primary for pg 2.3 to osd.0
    change primary for pg 2.4 to osd.2

    注記

    ceph osd pg-upmap-primary コマンドを初めて実行すると、次のような警告が表示される場合があります。

    Error EPERM: min_compat_client luminous < reef, which is required for pg-upmap-primary. Try 'ceph osd set-require-min-compat-client reef' before using the new interface

    この場合、推奨コマンド ceph osd set-require-min-compat-client reef を実行し、クラスターの min-compact-client を調整します。

注記

配置グループ (PG) の数が変更した場合、または OSD がクラスターに追加または削除された場合は、スコアを再チェックしてバランサーを再実行することを検討してください。これらの操作は、プールに対する読み取りバランサーの効果に大きな影響を与える可能性があります。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.