マルチパスI/Oソリューションのプラニング時には、このセクションのガイドラインに従ってください。
マルチパス処理は、デバイスレベルで管理されます。
マルチパス処理対象のデバイスに使用するストレージアレイで、マルチパス処理がサポートされている必要があります。詳細については、セクション 7.2.9, マルチパス処理用にサポートされているストレージアレイを参照してください。
サーバのホストバスアダプタおよびブロックストレージデバイスのバスコントローラ間に複数の物理パスが存在している場合のみ、マルチパス処理を設定する必要があります。論理デバイスのマルチパスは、サーバの見地から設定します。
一部のストレージアレイについては、アレイの物理および論理デバイスのマルチパス処理を管理するための独自のマルチパス処理ソフトウェアがベンダから提供されます。この場合は、ベンダの指示に従って、それらのデバイスのマルチ処理を設定してください。
マルチパスを持つ物理デバイスまたは論理デバイスのマルチパス処理を設定する前に、まず、次のようにディスク管理タスクを実行してください。
サードパーティーツールで、物理ディスクを小さな論理ディスクに切り分けます。
サードパーティーツールで、物理ディスクまたは論理ディスクをパーティションに分割します。稼働中のシステムでパーティションを変更した場合は、DM-MP(Device Mapper Multipath: デバイスマッパーマルチパス)モジュールによるそれら変更の自動的な検出や反映は行われません。DM-MPIOは再初期化する必要があり、それには、通常、再起動が必要です。
サードパーティーのSANアレイ管理ツールを使用して、ハードウェアRAIDデバイスを作成および設定します。
サードパーティーのSANアレイ管理ツールを使用して、LUNなどの論理デバイスを作成します。所定のアレイにサポートされている論理デバイスタイプは、アレイベンダによって異なります。
LinuxのソフトウェアRAIDの管理ソフトウェアは、マルチパス処理の上で実行されます。複数のI/Oパスを持ち、ソフトウェアRAIDで使用予定の各デバイスは、まず、マルチパス処理用に設定してから、ソフトウェアRAIDデバイスとして作成する必要があります。マルチパスデバイスは自動検出できません。ソフトウェアRAIDは、その下で実行されているマルチパス処理管理を認識しません。
クラスタリング用の高可用性ソリューションは、通常、マルチパス処理サーバの上で実行されます。たとえば、LAN上のデバイスをミラーリングするDRBD (Distributed Replicated Block Device)高可用性ソリューションは、マルチパス処理をベースとして実行されます。複数のI/Oパスを持ち、DRDBソリューションで使用予定のデバイスごとに、マルチパス処理用デバイスを設定してから、DRBDを設定する必要があります。
LVM2やEVMSなどのボリュームマネージャは、マルチパス処理をベースとして実行されます。LVM2またはEVMSを使用してセグメントマネージャおよびそのファイルシステムを作成するには、その前に、デバイスのマルチパス処理を設定する必要があります。
仮想化環境でマルチパス処理を使用する場合、マルチパス処理は、ホストサーバ環境で制御されます。デバイスのマルチパス処理を設定してから、デバイスを仮想ゲストマシンに割り当ててください。
LUNディレクトリ全体を使用する場合は(たとえばSAN機能を使用してストレージのパーティションを行っている場合など)、mkfs、fstab、ご使用のアプリケーションなどに、/dev/disk/by-id/xxxという名前を使用することができます。
/etc/multipath.confファイルでユーザフレンドリ名のオプションが有効になっている場合は、/dev/disk/by-id/dm-uuid-.*-mpath-.*デバイス名を使用できます。これはこの名前がデバイスIDの別名だからです。詳細については、/etc/multipath.confでのユーザフレンドリな名前またはエイリアス名の設定を参照してください。
LVM2は、デフォルトでは、マルチパスデバイスを認識しません。マルチパスデバイスを可能な物理ボリュームとしてLVM2に認識させるには、/etc/lvm/lvm.conf ファイルを変更する必要があります。その場合、LVM2が物理パスをスキャンぜずに使用し、マルチパスI/Oレイヤを介してマルチパスI/Oストレージだけにアクセスするように変更することが重要です。ユーザフレンドリな名前を使用している場合は、マルチパス処理の設定後にデバイス(/dev/disk/by-id/dm-uuid-.*-mpath-)のデバイスマッパー名だけをスキャンするようにパスを指定します。
/etc/lvm/lvm.confを変更してマルチパスを使用するには次の手順に従います。
/etc/lvm/lvm.confファイルをテキストエディタで開きます。
/etc/lvm/lvm.confが存在しない場合は、次のコマンドを端末コンソールのプロンプトで入力することによって、現在のLVM設定に基づいた設定ファイルを作成できます。
lvm dumpconfig > /etc/lvm/lvm.conf
/etc/lvm/lvm.confにあるfilterエントリとtypesエントリを、次のように変更します。
filter = [ "a|/dev/disk/by-id/.*|", "r|.*|" ] types = [ "device-mapper", 1 ]
このように設定すると、LVM2はby-idパスだけをスキャンし、それ以外のすべてのパスを拒否します。
ユーザフレンドリな名前を使用している場合は、次のようにパスを指定し、マルチパス処理の設定後に、デバイスマッパー名だけがスキャンされるようにします。
filter = [ "a|/dev/disk/by-id/dm-uuid-.*-mpath-.*|", "r|.*|" ]
非マルチパスデバイスでもLVM2を使用する場合は、filterエントリとtypesエントリに必要な調整を加えて、ご使用の設定に合わせます。さもないと、lvm.confファイルをマルチパス向けに変更後、pvscanで他のLVMデバイスが認識できなくなります。
LVMを使用して設定されたデバイスだけをLVMキャッシュに含めるので、filterでどの非マルチパスデバイスを含めるかについて詳細に指定できる必要があります。
たとえば、ローカルディスクが/dev/sda、すべてのSANデバイスが/dev/sdbとそれ以上の場合、次のようにfilterでローカルパスとマルチパスを指定します。
filter = [ "a|/dev/sda.*|", "a|/dev/disk/by-id/.*|", "r|.*|" ] types = [ "device-mapper", 253 ]
ファイルを保存します。
dm-multipathを/etc/sysconfig/kernel:INITRD_MODULESに追加します。
新しいinitrdを作成して、デバイスマッパーマルチパスのサービスが変更後の設定でロードされるようにします。<Enter>端末コンソールのプロンプトで、次のように入力します。
mkinitrd -f multipath
サーバを再起動して、変更内容を適用します。
mdadmツールでは、デバイスのノードパスではなく、IDでデバイスにアクセスする必要があります。したがって、/etc/mdadm.conf内のDEVICEエントリを次のように設定してください。
DEVICE /dev/disk/by-id/*
ユーザフレンドリな名前を使用している場合は、次のようにパスを指定し、マルチパス処理の設定後に、デバイスマッパー名だけがスキャンされるようにします。
DEVICE /dev/disk/by-id/dm-uuid-.*-mpath-.*
マルチパスデバイス上で実行する場合は、オプション--noflushを必ず使用する必要があります。
たとえば、テーブルのリロードを行うスクリプトでは、マルチパストポロジ情報が必要なので、再開時に--noflushオプションを使用して、残っているI/Oがフラッシュされないようにします。
load resume --noflush
マルチパスデバイスにルート(/)があるシステムは、すべてのパスに障害が発生し、それらのパスがシステムから削除されると、停止することがあります。これは、ストレージサブシステム(ファイバチャネルストレージアレイなど)からdev_loss_tmoタイムアウトを受信するからです。
システムデバイスがマルチパスを使用して設定され、マルチパスのno_path_retry設定がアクティブな場合は、ストレージサブシステムのdev_loss_tmo設定を適宜変更して、すべてのパスがダウンするシナリオでデバイスが削除されないようにする必要があります。dev_loss_tmo値をマルチパスのno_path_retry設定以上にすることを強くお勧めします。
ストレージサブシステムのdev_los_tmoの推奨設定は、次のとおりです。
<dev_loss_tmo> = <no_path_retry> * <polling_interval>
マルチパス値については、次の定義が適用されます。
no_path_retryは、パスが失われたとみなされて入出力のキューイングが停止されるまでのマルチパス入出力の再試行数です。
polling_intervalは、パッチチェックの間隔(秒単位)です。
これらの各マルチパス値は、/etc/multipath.conf環境設定ファイルから設定する必要があります。詳細については、セクション 7.4.5, /etc/multipath.confファイルの作成と設定を参照してください。
アップグレード中は、マルチパスデバイスの処理方法の動作変更によって、設定に影響を及ぼすことがあります。
SUSE Linux Enterprise Server 11では、デフォルトのマルチパスセットアップはudevを使用して、マルチパス処理の開始時に/dev/disk/by-idディレクトリ内の既存のシンボリックリンクを上書きします。マルチパス処理開始前のシンボリックリンクは、SCSIデバイスをそのscsi-xxx名でポイントします。マルチパス処理実行中のシンボリックリンクは、SCSIデバイスをそのdm-uuid-xxx名でポイントします。これによって、マルチパス処理が開始したかどうかに関わりなく、/dev/disk/by-idパス内のシンボリックリンクは、継続的に同じデバイスをポイントします。自動的に正しいデバイスを指すので、設定ファイル(lvm.confやmd.conf)を変更する必要はありません。
SUSE Linux Enterprise Server 10では、kpartxソフトウェアを/etc/init.d/boot.multipathで使用することで、再起動なしで、任意の新しく作成されたパーティションの環境設定ファイルmultipath.confの/dev/dm-*行にシンボリックリンクが追加されます。これにより、udevdがトリガされて、/dev/disk/by-*にシンボリックリンクを書き込みます。主なメリットは、サーバの再起動なしで、新しいパラメータでkpartxを呼び出せることです。
SUSE Linux Enterprise Server 9では、マルチパスI/Oデバイス自体をパーティショニングすることはできません。ベースになる物理デバイスが既にパーティショニングされている場合、マルチパスI/Oデバイスはそれらのパーティションを反映し、レイヤが/dev/disk/by-id/<name>p1 ... pNデバイスを提供するので、マルチパスI/Oレイヤを介してパーティションにアクセスできます。結果として、マルチパスI/Oの有効化の前にデバイスをパーティション分割する必要があります。実行中のシステムのパーティション分割を変更した場合、これらの変更は、DM-MPIOでは自動的な検出および反映はされません。デバイスは、再初期化する必要があり、その際には、通常、再起動が必要です。
マルチパス処理のドライバおよびツールは、サポートされている7つのプロセッサアーキテクチャ(IA32、AMD64/EM64T、IPF/IA64、32ビットと64ビットのp-Series、31ビットと64ビットのz-Series)をすべてサポートします。
マルチパス処理のドライバおよび ツールは、大半のストレージアレイをサポートします。マルチパスデバイスを格納するストレージアレイは、マルチパス処理用のドライバとツールを使用するために、マルチパス処理をサポートする必要があります。一部のストレージアレイベンダは、独自のマルチパス処理管理ツールを提供しています。ベンダのハードウェアマニュアルを参照して、どのような設定が必要か判別してください。
multipath-toolsパッケージは、次のようなトレージアレイを自動的に検出します。
ただし、他のほとんどのストレージアレイも有効です。ストレージアレイが自動的に検出されると、マルチパス処理のデフォルト設定が適用されます。デフォルト以外の設定を使用したい場合は、手動で/etc/multipath.confファイルを作成および設定する必要があります。詳細については、セクション 7.4.5, /etc/multipath.confファイルの作成と設定を参照してください。
IBM zSeries*デバイスをマルチパス処理でテストした結果、dev_loss_tmoパラメータを90秒に、fast_io_fail_tmoパラメータを5秒に設定する必要があることわかりました。zSeriesデバイスをご使用の場合は、手動で/etc/multipath.confファイルの作成と設定を行い、値を指定する必要があります。詳細については、/etc/multipath.conf内のzSeriesのデフォルト設定を参照してください。
自動検出されないハードウェアについては、/etc/multipath.confファイルのDEVICESセクションに環境設定の適切なエントリが必要です。この場合は、手動で、環境設定ファイルを作成し、設定する必要があります。詳細については、セクション 7.4.5, /etc/multipath.confファイルの作成と設定を参照してください。
次の点に留意してください。
自動検出されたすべてのストレージアレイがSUSE Linux Enterprise Serverでテスト済みというわけではありません。詳細については、マルチパス処理サポートについてテスト済みのストレージアレイを参照してください。
一部のストレージアレイでは、特定のハードウェアハンドラが必要なことがあります。ハードウェアハンドラは、パスグループの切り替え時とI/Oエラーの処理時に、ハードウェア固有のアクションを実行するカーネルモジュールです。詳細については、特定のハードウェアハンドラを必要とするストレージアレイを参照してください。
/etc/multipath.confファイルの変更後、mkinitrdを実行してシステム上にINITRDを作成し、次に、再起動で変更内容を有効にする必要があります。
次のストレージアレイは、SUSE Linux Enterprise Serverでテスト済みです:
他のベンダのストレージアレイもほとんど機能するはずです。該当するベンダのマニュアルを参照してください。multipath-toolsパッケージによって認識されるデフォルトストレージアレイのリストについては、「マルチパス処理用に自動検出されるストレージアレイ」を参照してください。
あるパスから他のパスにフェイルオーバーするには特別なコマンドが必要なストレージアレイ、または非標準の特別なエラー処理が必要なストレージアレイには、より拡張されたサポートが必要なことがあります。したがって、デバイスマッパーマルチパスサービスには、ハードウェアハンドラ用フックがあります。たとえば、そのようなEMC CLARiiON CXファミリアレイ用ハンドラが1つ、既に提供されています。
重要: ハードウェアベンダのマニュアルを参照して、そのハードウェアハンドラをデバイスマッパーマルチパス用にインストールする必要があるかどうか判別してください。
multipath -tコマンドは、特定のハードウェアハンドラで特別な処理を必要とするストレージアレイの内部テーブルを表示します。ただし、表示されるリストは、サポートされているアレイの包括的なリストではありません。特別な処理を必要とし、multipath-toolsの開発者がツールの開発中にアクセスしたアレイだけがリストされます。
重要: 真のアクティブ/アクティブマルチパスサポートを持つアレイは、特別な処理を必要としないので、multipath -tコマンドでは表示されません。
また、multipath -tテーブルでリストされている場合でも、必ずしも、その特定ハードウェアでSUSE Linux Enterprise Serverがテスト済みということではありません。テスト済みのストレージアレイのリストについては、「マルチパス処理サポートについてテスト済みのストレージアレイ」を参照してください。