ホストとそのストレージ間の常時接続を維持するため、ESXi はマルチパスをサポートしています。マルチパスでは、ホストと外部ストレージ デバイス間でデータを転送する複数の物理パスを使用できます。

アダプタ、スイッチ、ケーブルなどの SAN ネットワーク内の要素のいずれかで障害が発生した場合に、ESXi は別の実行可能な物理パスに切り替えることができます。この、障害の発生したコンポーネントを避けるためのパスの切り替え手順は、パスのフェイルオーバーと呼ばれます。

パスのフェイルオーバーのほかに、マルチパスによるロード バランシングもあります。ロード バランシングは、複数の物理パス間で I/O 負荷を割り当てる処理です。ロード バランシングによって、潜在的なボトルネックが軽減または排除されます。

注: パスのフェイルオーバーが発生している間に、仮想マシンの I/O は最大で 60 秒遅延することがあります。この遅延時間を利用して、SAN はトポロジの変更後に構成を安定させることができます。一般的に、I/O 遅延はアクティブ-パッシブ アレイでは長くなり、アクティブ-アクティブ アレイでは短くなります。

ファイバ チャネルを使用したフェイルオーバー

マルチパスをサポートするため、ホストには通常複数の使用可能な HBA が装備されています。この構成は、SAN のマルチパス構成を補完します。一般的に、SAN のマルチパスでは SAN ファブリックに 1 台以上のスイッチ、およびストレージ アレイ デバイス自体に 1 個以上のストレージ プロセッサを提供します。

以下の図では、複数の物理パスで各サーバとストレージ デバイスを接続しています。たとえば、HBA1 または HBA1 と FC スイッチ間のリンクに障害が発生した場合、接続は、HBA2 に引き継がれて実行されます。別の HBA に引き継ぐプロセスは、HBA フェイルオーバーと呼ばれます。

図 1. ファイバ チャネルを使用したマルチパスとフェイルオーバー
この図は、ホストが複数の HBA を使用してマルチパスを提供する方法を示しています。

同様に、SP1 に障害が発生するか、SP1 とスイッチ間のリンクが切断した場合、SP2 が引き継ぎます。SP2 は、スイッチとストレージ デバイスの間の接続を提供します。このプロセスは SP フェイルオーバーと呼ばれます。VMware ESXi は HBA フェイルオーバーと SP フェイルオーバーの両方をサポートしています。

iSCSI でのホスト ベースのフェイルオーバー

ESXi ホストをマルチパスおよびフェイルオーバー用に設定する場合、複数の iSCSI HBA を使用するか、または複数の NIC とソフトウェア iSCSI アダプタとを組み合わせることができます。

さまざまなタイプの iSCSI アダプタの詳細については、iSCSI イニシエータを参照してください。

マルチパスを使用する場合は、特定の考慮事項が適用されます。
  • 同じホストで独立型ハードウェア アダプタをソフトウェア iSCSI アダプタまたは依存型 iSCSI アダプタと結合する場合は、ESXi はマルチパスをサポートしません。
  • 同じホスト内のソフトウェア アダプタと依存型アダプタ間のマルチパスはサポートされます。
  • 異なるホストで、依存型アダプタと独立型アダプタの両方をミックスできます。
次の図は、さまざまなタイプの iSCSI イニシエータで使用可能なマルチパスの設定を示しています。
図 2. ホスト ベースのパス フェイルオーバー
この図は、さまざまなタイプの iSCSI イニシエータで使用可能なマルチパスの設定を示しています。
ハードウェア iSCSI とフェイルオーバー
ハードウェア iSCSI を備えているホストは通常、複数のハードウェア iSCSI アダプタも備えています。ホストは、これらのアダプタを使用し、1 台以上のスイッチを介してストレージ システムにアクセスすることができます。または、アダプタを 1 つ、ストレージ プロセッサを 2 つ設定し、アダプタが異なるパスを使用してストレージ システムにアクセスできるようにします。

図のホスト 1 には HBA1 と HBA2 の 2 つのハードウェア iSCSI アダプタがあり、ストレージ システムへの物理パスが 2 つ提供されます。VMkernel NMP であるかサードパーティ製の MPP であるかにかかわらず、ホストのマルチパス プラグインはデフォルトでパスにアクセスできます。このプラグインで、各物理パスの健全性を監視できます。たとえば、HBA1 自体、または HBA1 とネットワークとの間のリンクに障害が発生した場合、マルチパス プラグインでパスを HBA2 に切り替えることができます。

ソフトウェア iSCSI とフェイルオーバー
図のホスト 2 に示すように、ソフトウェア iSCSI を使用すると複数の NIC を使用でき、iSCSI 接続にフェイルオーバー機能とロード バランシング機能が提供されます。

マルチパス プラグインはホストの物理 NIC に直接アクセスすることができません。したがって、この設定では最初に各物理 NIC を個別の VMkernel ポートに接続する必要があります。その後、ポートのバインド技術を使用して、すべての VMkernel ポートとソフトウェア iSCSI イニシエータを関連付けます。別個の NIC に接続された各 VMkernel ポートは別々のパスになり、iSCSI ストレージ スタックと iSCSI ストレージ対応のマルチパス プラグインで使用できるようになります。

ソフトウェア iSCSI でのマルチパスの構成については、ESXi を使用した iSCSI および iSER 用ネットワークの設定を参照してください。

iSCSI でのアレイ ベースのフェイルオーバー

一部の iSCSI ストレージ システムでは、ポートでのパス利用を自動的、また ESXi に対して透過的に管理します。

このようなストレージ システムを利用している場合、ホストはストレージ上の複数のポートを認識しないため、接続先のストレージのポートを選択できません。このようなシステムには、ホストが最初に通信を行う単一の仮想ポート アドレスがあります。この最初の通信中にストレージ システムはホストをリダイレクトして、ストレージ システム上の別のポートと通信するようにできます。ホストの iSCSI イニシエータはこの再接続要求に従い、システム上の別のポートに接続します。ストレージ システムはこの技術を使用して、利用可能なポートに負荷を分散します。

ESXi ホストは、あるポートに対する接続が途切れてしまった場合、ストレージ システムの仮想ポートへの再接続を自動的に試み、有効で利用可能なポートにリダイレクトされます。この再接続とリダイレクトは短時間で行われるため、通常は実行中の仮想マシンで中断が発生することはありません。このようなストレージ システムでは iSCSI イニシエータに対し、システムに再接続するよう要求して、接続先のストレージ ポートを変更することもできます。これにより、複数のポートを最大限有効に活用できます。

ポート リダイレクトの図は、ポート リダイレクトの例を示します。ホストは 10.0.0.1 の仮想ポートに接続しようとします。このリクエストはストレージ システムから 10.0.0.2 にリダイレクトされます。クライアントは 10.0.0.2 に接続され、このポートが I/O 通信で使用されます。

注: ストレージ システムが接続をリダイレクトしないことがあります。10.0.0.1 のポートはトラフィック用にも利用できます。
図 3. ポート リダイレクト
ポート リダイレクト

仮想ポートとして動作しているストレージ システムのポートが利用不可になった場合、ストレージ システムは仮想ポートのアドレスをシステム上にある別のポートに再割り当てします。ポート リダイレクトに、このタイプのポート再割り当ての例を示します。この場合、仮想ポート 10.0.0.1 は利用不可になり、ストレージ システムはその仮想ポートの IP アドレスを別のポートに再割り当てします。両方のアドレスに対し、2 つ目のポートが応答します。

図 4. ポート再割り当て
この図は、ポートの再割り当ての例を示しています。

この形式のアレイ ベースのフェイルオーバーでは、ESXi ホストで複数のポートを使用している場合にのみ、ストレージに対して複数のパスを設定できます。これらのパスはアクティブ-アクティブです。詳細については、ESXi ホストでの iSCSI セッションの管理を参照してください。

パスのフェイルオーバーと仮想マシン

パスに障害が発生すると、ホストがリンクがダウンしていると判断し、フェイルオーバーを実行するまで、ストレージ I/O が 30~60 秒間停止する場合があります。ホスト、ストレージ デバイス、またはアダプタを表示しようとすると、動作が停止したように見えることがあります。仮想マシン (および SAN にインストールされているその仮想ディスク) が応答しないように見えることがあります。フェイルオーバー後、I/O は正常にレジュームして、仮想マシンは実行を継続します。

フェイル オーバーに時間がかかりすぎると、Windows 仮想マシンが I/O を中断し、障害につながる場合があります。失敗を回避するには、Windows の仮想マシンのディスク タイムアウト値を少なくとも 60 秒に設定します。

パス フェイルオーバー中に中断を回避するには、Windows のゲスト OS で標準ディスク タイムアウト値を増やします。

この手順は、Windows レジストリを使用してタイムアウト値を変更する方法を説明します。

ヒント: 準備作業︰Windows レジストリをバックアップします。
  1. [スタート] > [ファイル名を指定して実行] を選択します。
  2. regedit.exe と入力して、[OK] をクリックします。
  3. 左パネルの階層表示で、[HKEY_LOCAL_MACHINE] > [System] > [CurrentControlSet] > [Services] > [Disk] の順にダブルクリックします。
  4. [TimeOutValue] をダブルクリックします。
  5. データ値を 0x3c(16 進数)または 60(10 進数)に設定し、[OK] をクリックします。

    このように変更すると、Windows は遅延したディスク処理の完了を少なくとも 60 秒間待機してから、エラーを生成するようになります。

  6. ゲスト OS を再起動して、変更内容を有効にします。