7.3 マルチパス管理ツール

SUSE Linux Enterprise Server 10以降のマルチパス処理サポートは、Linux 2.6カーネルのデバイスマッパーマルチパスモジュールとmultipath-toolsユーザスペースパッケージに基づいています。MDADM (Multiple Devices Administration)ユーティリティ(mdadm)を使用すると、マルチパスデバイスの状態を表示できます。

7.3.1 デバイスマッパーマルチパスモジュール

デバイスマッパーマルチパス(DM-MP)モジュールは、Linuxにマルチパス処理機能を提供します。DM-MPIOは、SUSE Linux Enterprise Server 11でのマルチパス処理の推奨ソリューションです。DM-MPは、Enterprise Server 11に標準装備される唯一のマルチパス処理オプションであり、Novell®およびSUSEによって完全にサポートされています。

DM-MPIOは、多様なセットアップでマルチパス処理サブシステムを自動設定します。デバイスごとに最大8個のパスの設定がサポートされています。アクティブ/パッシブ(1つのパスがアクティブで、他のパスがパッシブ)またはアクティブ/アクティブ(ラウンドロビン方式の負荷分散で全パスがアクティブ)の構成がサポートされています。

DM-MPIOフレームワークは、2つの方法で拡張できます。

DM-MPIOのユーザスペースコンポーネントにより、自動的なパスの検出とグループ化のほか、自動的なパスの再テストが実行されるので、障害が発生したパスは、正常に戻ると、自動的に復帰します。これにより、管理者の手間を最低限に抑えることができます。

DM-MPIOは、デバイス自体の障害ではなく、デバイスへのパスの障害からシステムを保護します。アクティブなパスの1つが失われると(たとえば、ネットワークアダプタが破損する、光ファイバケーブルが外れるなど)、残りのパスにI/Oをリダイレクトします。アクティブ/パッシブ構成の場合は、パスがパッシブパスの1つにフェールオーバーします。ラウンドロビン式負荷分散構成を使用している場合は、トラフィックの負荷が残りの正常なパス全体に分散されます。すべてのアクティブパスに障害が起きた場合は、アクティブでないセカンダリパスが有効になり、約30秒の遅延でフェールオーバーが開始されます。

ディスクアレイに複数のストレージプロセッサがある場合は、アクセスしたいLUNを所有するストレージプロセッサにSANスイッチが接続していることを確認してください。ほとんどのディスクアレイでは、すべてのLUNが両方のストレージプロセッサに属しているので、両方の接続がアクティブです。

メモ: 一部のディスクアレイでは、ストレージアレイがストレージプロセッサを介してトラフィックを管理するので、一度に1つのストレージプロセッサだけが提示されます。1つのプロセッサがアクティブとなり、もう1つのプロセッサは障害が発生するまでパッシブとなります。間違ったストレージプロセッサ(パッシブなパスを持つプロセッサ)に接続している場合は、予期されたLUNが表示されなかったり、それらのLUNが表示されてもアクセスしようとするとエラーが発生することがあります。

表 7-1 ストレージアレイのマルチパスI/O機能

ストレージアレイの機能

説明

アクティブ/パッシブコントローラ

1つのコントローラはアクティブで、すべてのLUNに対応します。2つ目のコントローラは、スタンバイとして機能します。2つ目のコントローラは、オペレーティングシステムが冗長なパスを認識するように、マルチパスコンポーネントに対するLUNの提示も行います。プライマリコントローラに障害が発生した場合は、セカンダリコントローラが引き継ぎ、すべてのLUNに対応します。

一部のアレイでは、LUNをさまざまなコントローラに割り当てることができます。所定のLUNは、そのアクティブコントローラとなる1つのコントローラに割り当てられます。一度に、1つのコントローラが所定のLUNのディスクI/Oを行い、2つ目のコントローラがそのLUNのスタンバイコントローラとなります。2つ目のコントローラは、パスの提示もしますが、ディスクI/Oは行えません。そのLUNを使用するサーバは、LUNの割り当て先のコントローラに接続します。LUNのセットに対するプライマリコントローラに障害が発生すると、セカンダリコントローラが引き継ぎ、すべてのLUNに対応します。

アクティブ/パッシブコントローラ

両方のコントローラがすべてのLUNの負荷を共有し、任意の所定のLUNのディスクI/Oを処理できます。1つのコントローラに障害が発生すると、2つ目のコントローラが自動的にすべてのトラフィックを処理します。

負荷分散

デバイスマッパーマルチパスドライバは、自動的に、すべてのアクティブパス全体にトラフィックの負荷を分散します。

コントローラのフェールオーバー

アクティブなコントローラがパッシブなコントローラにフェールオーバーすると、デバイスマッパーマルチパスドライバがホスト/スタンバイ間のパスを自動的に有効にし、それらをプライマリパスにします。

ブート/ルートデバイスのサポート

マルチパス処理は、SUSE Linux Enterprise Server 10以降のルート(/)デバイスに対してサポートされます。ホストサーバは、ブートデバイス用の、現在アクティブなコントローラおよびストレージプロセッサに接続する必要があります。

マルチパス処理は、SUSE Linux Enterprise Server 11以降の/bootデバイスに対してサポートされています。

デバイスマッパーマルチパスは、マルチパスデバイスの各パスを個別のSCSIデバイスとして検出します。SCSIデバイス名は、/dev/sdNの形式をとります。ここで、Nは、デバイスに対して自動生成される文字であり、aで始まり、デバイスの生成に応じてシーケンシャルに発行されます(/dev/sda/dev/sdbなど)。デバイス数が26を超えると、文字が2つ使用され、/dev/sdzの次のデバイスは/dev/sdaa、その次は、その次は/dev/sdabと続きます。

複数のパスが自動的に検出されない場合は、それらを/etc/multipath.confファイルで手動設定できます。multipath.confファイルは、システム管理者によって作成および設定されるまで存在しません。詳細については、セクション 7.4.5, /etc/multipath.confファイルの作成と設定を参照してください。

7.3.2 マルチパスI/O管理ツール

multipath-toolsユーザスペースパッケージは、自動的にパスを検出し、グループ化します。このパッケージは、自動的にパスの定期テストを行うので、障害が発生したパスは、正常に戻ると、自動的に復帰します。これにより、管理者の手間を最低限に抑えることができます。

表 7-2 multipath-toolsパッケージに含まれるツール

ツール

説明

multipath

システムをスキャンしてマルチパスデバイスを検出し、アセンブルします。

multipathd

mapsイベントを待機し、multipathを実行します。

devmap-name

デバイスマップ(devmap)のためのudevに意味のあるデバイス名を与えます。

kpartx

マルチパスデバイス上のパーティションにリニアdevmapをマップします。これにより、デバイス上のパーティションのマルチパスモニタリングを作成することが可能になります。

パッケージのファイルリストは、サーバのアーキテクチャによって異なることがあります。multipath-toolsパッケージに含まれたファイルのリストについては、SUSE Linux Enterprise Server Technical Specifications」>「Package Descriptions 」Webページにアクセスし、目的のアーキテクチャを見つけ、[パッケージを名前でソート]を選択し、次に、multipath-toolsで検索して、そのアーキテクチャのパッケージリストを見つけます。

コマンドオプションrpm -qlまたはrpm -qplを使用してパッケージ自体をクエリすることによって、RPMファイルのファイルリストを判別することもできます。

  • インストールしたパッケージをクエリするには、次のコマンドを入力します。

    rpm -ql <package_name>
    
  • インストールしていないパッケージをクエリするには、次のコマンドを入力します。

    rpm -qpl <URL_or_path_to_package>
    

multipath-toolsパッケージがインストールされているかどうか確認するには、次の操作を行います。

  1. 端末コンソールのプロンプトで、次のように入力します。

    rpm -q multipath-tools
    

    パッケージがインストールされている場合は、パッケージ名を繰り返し、バージョン情報を示す応答メッセージが表示されます。

    multipath-tools-04.7-34.23
    

    パッケージがインストールされていない場合は、次の応答メッセージが表示されます。

    package multipath-tools is not installed
    

7.3.3 マルチパスデバイスへのMDADMの使用

デフォルトのデバイスハンドラはUdevであり、デバイスは、デバイスノード名ではなく、Worldwide IDによって、システムに自動的に認識されます。これによって、環境設定ファイル(mdadm.conflvm.conf)がマルチパスデバイスを正しく認識しないという、MDADMおよびLVMの旧リリースにあった問題が解決します。

LVM2の場合のようにmdadmでは、デバイスノードパスではなく、IDによってデバイスをアクセスする必要があります。したがって、/etc/mdadm.conf内のDEVICEエントリを次のように設定してください。

DEVICE /dev/disk/by-id/*

ユーザフレンドリな名前を使用している場合は、次のようにパスを指定し、マルチパス処理の設定後に、デバイスマッパー名だけがスキャンされるようにします。

DEVICE /dev/disk/by-id/dm-uuid-.*-mpath-.*

MDADMのインストールを確認するには、次を行います。

  1. 端末コンソールのプロンプトで、次のコマンドを入力し、mdadmパッケージがインストールされているかどうか確認します。

    rpm -q mdadm
    

    パッケージがインストールされている場合は、パッケージ名を繰り返し、バージョン情報を示す応答メッセージが表示されます。次に例を示します。

    mdadm-2.6-0.11
    

    パッケージがインストールされていない場合は、次の応答メッセージが表示されます。

    package mdadm is not installed
    

/etc/lvm/lvm.conf ファイルの変更方法については、「セクション 7.2.3, マルチパスデバイスでのLVM2の使用」を参照してください。

7.3.4 Linux multipath(8)コマンド

マルチパスデバイスを設定し、管理するには、multipath(8)コマンドを使用します。

multipath(8)コマンドの一般構文:

multipath [-v verbosity] [-d] [-h|-l|-ll|-f|-F] [-p failover | multibus | group_by_serial | group_by_prio| group_by_node_name ] 

一般的な例

multipath

すべてのマルチパスデバイスを設定します。

multipath devicename

特定のマルチパスデバイスの設定.

devicenameを、/dev/sdb (udevにより$DEVNAME変数で表示)またはmajor:minor形式などのデバイスノード名で置き換えます。

multipath -f

マルチパスマップとそのデバイスにマップされたパーティションを選択的に抑制します。

multipath -d

可能なマルチパスデバイスを表示しますが、デバイスの作成やデバイスマップの更新は行いません(ドライラン)。

multipath -v2 -d

マルチパスデバイスを設定し、それらのマルチパスマップ情報を表示します。multipath -v2 -dの-v2オプションは、ローカルディスクだけを表示します。

multipath -v2 devicename

特定のマルチパスデバイスを設定し、そのマルチパスマップ情報を表示します。-v2オプションを使用すると、ローカルディスクのみが表示されます。

multipath -v3 -d

マルチパスデバイスを設定し、それらのマルチパスマップ情報を表示します。-v3オプションを使用すると、フルパスリストが表示されます。

multipath -v3 devicename

特定のマルチパスデバイスを設定し、そのマルチパスマップ情報を表示します。-v3オプションを使用すると、フルパスリストが表示されます。

multipath -ll

すべてのマルチパスデバイスの状態を表示します。

multipath -ll devicename

指定されたマルチパスデバイスの状態を表示します。

multipath -F

未使用のマルチパスデバイスのマップをすべてフラッシュします。これによって、マルチパスが解消したり、デバイスが削除されることはありません。

multipath -F devicename

特定のマルチパスデバイスの未使用マルチパスデバイスマップをフラッシュします。これによって、マルチパスが解消したり、デバイスが削除されることはありません。

multipath -p [ failover | multibus | group_by_serial | group_by_prio | group_by_node_name ]

表 7-3に示されているグループポリシーオプションの1つを指定して、グループポリシーを設定します。

表 7-3 multipath -pコマンドのグループポリシーオプション

ポリシーオプション

説明

failover (フェールオーバー)

優先度グループごとに1つのパス一度に使用できるスパスは1つだけです。

multibus

1つの優先度グループ内にすべてのパス

group_by_serial

検出されたSCSIシリアル番号(コントローラノードの全世界規模の番号)ごとに1つの優先度グループ

group_by_prio

パス優先度値ごとに1つの優先度グループ同じ優先度のパスは同じ優先度グループに属します。優先度は、コールアウトプログラムで決定されます。それらのプログラムは、グローバル、コントローラごと、またはマルチパスごとのオプションとして/etc/multipath.conf環境設定ファイルで指定されます。

group_by_node_name

ターゲットノード名ごとに1つの優先度グループターゲットノード名は、/sys/class/fc_transport/target*/node_nameにフェッチされます。