マルチパスとは
マルチパスにより、サーバーとストレージ アレイ間の複数の物理接続を 1 つの仮想デバイスに組み合わせることができます。これは、ストレージへのより回復力のある接続を提供したり (パスがダウンしても接続が妨げられない)、パフォーマンスを向上させるためにストレージ帯域幅を集約したりするために実行できます。
例として、次の図のサーバーには 2 つの HBA があり、それぞれが個別のファイバー チャネル スイッチに接続され、さらにストレージ アレイ上の個別のコントローラーに接続されています。
Red Hat Enterprise Linux 7 は、dm-multipath を使用したマルチパスをサポートしています サブシステム。これは、カーネル デバイス マッパー システムを使用して仮想デバイスを生成し、multipathd デーモンとマルチパス コマンドライン ツールによって管理されます。
必要なバイナリ、デーモン、およびカーネル モジュールは、device-mappermultipath パッケージで入手できます。 device-mapper-multipath をインストール、構成、および開始すると、マルチパス デバイスのデバイス ノードが 2 つの異なる場所に作成されます。
管理目的で、マルチパス デバイスが /dev/mapper の下に作成されます . mpathN[pM] という名前を付けることができます わかりやすい名前を選択するか、ストレージ デバイスの World Wide ID (WWID) に基づいて名前を付けることができます。管理者は、マルチパス デバイスのカスタム名を設定することもできます。これらのカスタム名は、マルチパス構成ファイルのマルチパス セクションのエイリアス オプションを使用して確立されます。
マルチパス デバイスも /dev の下に作成されます /dev/dm-N の形式で /dev/mapper の下に作成されたものと一致します。これらのデバイスは、厳密にシステム内部で使用するためのものであるため、管理目的で直接使用しないでください。
注意 :マルチパス化により、ストレージ アクセス パスのダウンに対する保護が提供されます。ストレージ自体が使用できなくなると、ストレージへのアクセスが失われます。マルチパス デバイスを作成するには、/etc/multipath.conf の設定に基づいて、さまざまなパスをグループにまとめます。 構成ファイル。通常、一度にアクティブになるグループは 1 つだけですが、グループは複数のパスで構成できます。グループに障害が発生すると、マルチパス デーモンはストレージ トラフィックを別のグループに切り替えます。
マルチパスの構成
マルチパスを設定するには、最初に device-mapper-multipath パッケージがインストールされていることを確認してください。
# yum -y install device-mapper-multipath
device-mapper-multipath パッケージをインストールしたら、マルチパス デーモン /etc/multipath.conf 用の構成ファイルを作成する必要があります。このファイルを作成する最も簡単な方法は、mpathconf を使用することです。 効用。
/etc/multipath.conf というファイルが既に存在する場合、mpathconf コマンドはそのファイルを編集します。そのようなファイルが存在しない場合、mpathconf はデフォルト設定を /usr/share/doc/device-mapper-multipath-*/multipath.conf からコピーします。 .そのファイルが存在しない場合、mpathconf は新しい構成ファイルを最初から作成します。
デフォルト構成を作成し、multipathd デーモンを開始して有効にするには、次のコマンドを使用します:
# mpathconf --enable --with_multipathd y --with_chkconfig y注意 :mpathconf によって作成されるデフォルトの構成ファイルでは、user_friendly_names オプションを使用してユーザー フレンドリーな名前が有効になります。わかりやすい名前を付けると、マルチパス デバイスは mpathN という名前になります。これは、マルチパス化されたデバイスが 1 つしかない場合に便利ですが、マルチパス化されたデバイスが複数ある場合は混乱を招く可能性があります。わかりやすい名前を無効にするには、–user_friendly_names n を使用します mpathconf へのオプション。これにより、WWID に基づいてマルチパス デバイスの名前が付けられます。
multipathd デーモンを開始する前にマルチパス構成を微調整する必要がある場合は、mpathconf コマンドに –enable オプションのみを指定して使用します。
# mpathconf --enable
設定ファイルを編集したら、systemctl コマンドで通常どおり multipathd デーモンを有効にして起動します。
multipath.conf 構成ファイル
multipath.conf 設定ファイルは 5 つのセクションで構成されています:
multipath.conf セクション | 説明 |
---|---|
ブラックリスト{} | このセクションでは、マルチパス トポロジ検出から除外するデバイスを定義します。 |
blacklist_exceptions {} | このセクションでは、ブラックリスト セクションにリストされているにもかかわらず、マルチパス トポロジ検出に含める必要があるデバイスを定義します。 |
デフォルト {} | このセクションでは、devices {} または multipaths {} セクションで明示的にオーバーライドされない限り、すべてのマルチパスに使用されるデフォルト設定を定義します。 |
デバイス {} | このセクションには、マルチパス {} セクションからオーバーライドされない限り、特定のタイプのデバイスのデフォルト {} セクションのオーバーライドが含まれます。デバイスは、ベンダー、製品、およびリビジョンのキーワード (sysfs からの情報と一致する正規表現) に基づいて識別されます。 |
マルチパス {} | このセクションには、特定のマルチパスの設定が含まれています。このセクションは、デフォルト {} およびデバイス {} セクションで定義されている内容をオーバーライドします。マルチパスは、WWID (getuid_callout 関数を使用して取得) に基づいて識別されます。 |
オーバーライドを覚える簡単な方法:マルチパス> デバイス> デフォルト .
ブラックリスト
ブラックリスト{}を使用して、構成ファイルでデバイスをブラックリストに登録できます multipath.conf のセクション。ワイルドカードを使用してブラックリストに登録する場合、blacklist_exceptions {} セクションを使用して個々のデバイスをブラックリストから除外できます。デバイスは、デバイス ノードまたは WWID を使用してブラックリストに登録できます。次の例は、両方の例を示しています:
blacklist { devnode "^cciss" wwid 1234567890abcde }
ディスク デバイスの WWID を確認するには、scsi_id ユーティリティを使用します。
/usr/lib/udev/scsi_id -g -u /dev/sdN 360014053bd9ea2a35914e39a556051cf
デフォルト
すべてのマルチパスのデフォルトは defaults{} で設定できます multipath.conf のセクション。すべての組み込みデフォルトの完全なリストは、ファイル /usr/share/doc/devicemapper-multipath-*/multipath.conf.defaults にあります。最も興味深い設定は次のとおりです:
- path_selector :次の I/O に使用する優先度グループ内のパスを決定するアルゴリズム。 「ラウンドロビン 0」のデフォルト 」は、グループ内のすべてのパスに I/O を分散します。次のパスに切り替える前に 1 つのパスを使用して送信されるリクエストの数は、rr_min_io_rq によって決まります。 設定。代替手段は「queue-length 0」です "、次の I/O 要求を未処理の要求のキューが最も短いパスに送信し、"service-time 0 これにより、次の 1/0 リクエストが、推定サービス時間が最も短いパスに送信されます。
- path_grouping_policy :この設定は、複数のパスを優先グループに結合する方法を定義します。 フェイルオーバーのデフォルト 、すべてのパスが別のグループに入れられます。一方、マルチバスでは ポリシーでは、考えられるすべてのパスが 1 つのグループに集約されます。マルチバス ポリシーを使用するようにマルチパス デバイスを構成する前に、ストレージ コントローラーがアクティブ/アクティブ接続をサポートしていることを確認してください。
- path_checker :この設定は、パスが正常かどうかを multipathd デーモンが判断する方法を決定します。 directio のハードウェアに依存しないオプション以外 と readsector0 、ハードウェアに依存しないチェッカーが多数あります。このオプションのデフォルトは directio ですが、通常はデバイス {} セクションで指定されたデフォルト デバイスのいずれかでオーバーライドされます。
- 機能 :このオプションは、有効にするマルチパス機能を指定します。構文は num list の形式です ここで、num は有効になっている機能の数を表し、list は有効になっている機能のリストを表します。利用可能な 2 つの機能は queue_if_no_path です および no_partitions .
- ユーザーフレンドリーな名前 :この設定は、エイリアスが定義されていないマルチパスの名前を mpathN (yes に設定した場合) にするか、WWID に基づいて名前を付けるかを決定します。
デバイス {} セクション
デバイス{} セクションで、特定のデバイスのデフォルトを上書きできます。デバイス {} セクション内には、特定のデバイスの設定を詳述する個々のデバイス {} サブセクションがあります。ほとんどの一般的なストレージ ハードウェアには、マルチパス デーモンの組み込みのデフォルトで定義された独自のセクションが既にあります。ハードウェアが (まだ) リストされていない場合は、ハードウェアのセクションを手動で追加できます。以下は、存在しないストレージ ハードウェアの定義の例です。デバイス自体は、vendor の組み合わせを使用して選択されます 、商品 、およびリビジョン .
devices { device { vendor "MegaHyperSuperStorage" product "BAS" revision "513/B" features "1 queue_if_no_path" path_grouping_policy multibus path_checker tur } }
上記の例では、機能行は、現在使用可能なパスがない場合でも、新しい I/O 要求が受け入れられ、キューに入れられることを示しています。
マルチパス {} セクション
マルチパス{} セクションでは、特定のマルチパスに対してオーバーライドを定義できます。これは、特定のマルチパスに異なる path_grouping ポリシーを設定するために使用できます。 multipaths {} セクションのその他の一般的な用途の 1 つは、マルチパスのエイリアスを定義することです。エイリアスが設定されている場合。このマルチパスの /dev/mapper/ 内のデバイス ノードの名前はエイリアスに基づいており、異なるマルチパスを簡単に区別できます。
例として、次の構成では、「1234567890abcdef」の WWID を持つマルチパスのクラスターストレージのエイリアスと、キューの長さの path_selector を設定します。
multipaths { multipath { wwid "1234567890abcdef" alias "clusterstorage" path_selector "queue-length 0" } }
パーティションの追加
マルチパス化されたデバイスにパーティションを追加するには、次の手順を使用します:
<オール>マルチパスの削除
マルチパスのすべてのパスを削除したら、コマンド multipath -f [device] を実行してマルチパス デバイスを削除します。 . multipathd デーモンが停止していて、マルチパス デバイスのデバイス ノードがまだある場合は、multipath -F を実行してすべてのマルチパス デバイスをフラッシュします。 .これは、さまざまな構成をテストして、古い構成が残っているのを確認するときに役立ちます。