Windows Server 2012 以降の Hyper-V フェールオーバー クラスター 環境で、Hyper-V ホストの起動時に、CSVのイベント ID:5120 (c00000be) と ID:5142 (1460) のエラーが記録される

こんにちは。Windows プラットフォーム サポートの加藤です。
本日は、Hyper-V ホストの起動時に記録される Microsoft-Windows-FailoverClustering ID:5120 (c00000be) と ID:5142 (1460) のエラーについてご紹介します。

<事象>
==============================
以下の条件を満たす環境で、再起動した Hyper-V ホストのイベント ログに Microsoft-Windows-FailoverClustering ID:5120 (c00000be) と ID:5142 (1460) のエラーが記録される事象が報告されております。

1. Windows Server 2012 以降の Hyper-V フェールオーバー クラスター 環境
2. システムで IPv6 が無効になっている
3. "Microsoft Failover Cluster Virtual Adapter" 以外に APIPA (169.254.0.0/16) の IP アドレスが割り振られた NIC が存在している

記録されるイベント
---------------------------------
ソース:           Microsoft-Windows-FailoverClustering
イベント ID:       5120
タスクのカテゴリ:      クラスターの共有ボリューム
レベル:           エラー
説明:
クラスターの共有ボリューム 'Volume3' ('クラスター ディスク 1') は、'(c00000be)' が原因で一時停止状態になりました。ボリュームへのパスが再確立されるまで、すべての I/O は一時的にキューに登録されます。
---------------------------------

---------------------------------
ソース:           Microsoft-Windows-FailoverClustering
イベント ID:       5142
タスクのカテゴリ:      クラスターの共有ボリューム
レベル:           エラー
説明:
エラー '(1460)' が発生したため、クラスターの共有ボリューム 'Volume3' ('クラスター ディスク 1') にこのクラスター ノードからアクセスできなくなりました。このノードから記憶装置への接続およびネットワーク接続のトラブルシューティングを行ってください。
---------------------------------

<原因>
==============================
上記イベント ID:5120 に記録されたエラー コード status c00000be  (STATUS_BAD_NETWORK_PATH) は、SMB の通信が失敗した場合に記録されます。
フェールオーバー クラスターでは CSV へのアクセスのために、CSV のコーディネーター ノードと非コーディネーター ノードが SMB の通信をします。
これは、NTFS ファイルシステムの管理情報であるメタデータの操作が、コーディネーター ノードのみしか許されていないためです。
そのため非コーディネーター ノードは SMB 通信を経由してコーディネーター ノードにメタデータの操作を依頼します。

さらにこの SMB 通信では、クラスターの仮想ネットワークアダプターである "Microsoft Failover Cluster Virtual Adapter" が使用されます。
この "Microsoft Failover Cluster Virtual Adapter" に割り振られる IP アドレスは、システムで IPv6 が有効の場合には、リンク ローカルアドレス (FE80::/10) が使用され、IPv6 が無効の場合には APIPA (169.254.0.0/16) が使用されます。

※ "Microsoft Failover Cluster Virtual Adapter" とはクラスターの内部通信で使用される仮想ネットワークアダプターで、クラスターを構成すると自動で作成されます。

// Microsoft Failover Cluster Virtual Adapter
--------------------------------
Tunnel adapter ローカル エリア接続* 2:

   接続固有の DNS サフィックス . . . . .:
   説明. . . . . . . . . . . . . . . . .: Microsoft Failover Cluster Virtual Adapter
   物理アドレス. . . . . . . . . . . . .: 02-A4-56-06-2F-8B
   DHCP 有効 . . . . . . . . . . . . . .: いいえ
   自動構成有効. . . . . . . . . . . . .: はい
   IPv4 アドレス . . . . . . . . . . . .: 169.254.2.48(優先)
   サブネット マスク . . . . . . . . . .: 255.255.0.0
   デフォルト ゲートウェイ . . . . . . .:
   NetBIOS over TCP/IP . . . . . . . . .: 有効
--------------------------------

そのため、システムで IPv6 が無効の場合には、ノードの起動時に、CSV コーディネーター ノードの "Microsoft Failover Cluster Virtual Adapter" に割り振られたAPIPA の IP アドレスに接続を試みますが、"Microsoft Failover Cluster Virtual Adapter" 以外に APIPA の IP アドレスを持っている NIC があると、ルーティングテーブル上に、同じルート (169.254.0.0/16) が 2 つ存在してしまい、その結果、"Microsoft Failover Cluster Virtual Adapter" ではない別の NIC を経由して通信をしてしまいます。
このような状況下では CSV 用の SMB 通信が status c00000be  (STATUS_BAD_NETWORK_PATH) で失敗することが確認できています。

// APIPA (169.254.0.0/16) のIP アドレスが割り振られた NIC
--------------------------------
イーサネット アダプター vEthernet

   接続固有の DNS サフィックス . . . . .:
   説明. . . . . . . . . . . . . . . . .: Hyper-V 仮想イーサネット アダプター #8
   物理アドレス. . . . . . . . . . . . .: 00-15-5D-21-C9-17
   DHCP 有効 . . . . . . . . . . . . . .: はい
   自動構成有効. . . . . . . . . . . . .: はい
   自動構成 IPv4 アドレス. . . . . . . .: 169.254.43.71(優先)
   サブネット マスク . . . . . . . . . .: 255.255.0.0
  デフォルト ゲートウェイ . . . . . . .:
   NetBIOS over TCP/IP . . . . . . . . .: 有効
--------------------------------

// 重複したルート (169.254.0.0/16)
--------------------------------
アクティブ ルート:
ネットワーク宛先        ネットマスク          ゲートウェイ       インターフェイス  メトリック
      169.254.0.0      255.255.0.0            リンク上     169.254.43.71    261
      169.254.0.0      255.255.0.0            リンク上     169.254.2.48    261
--------------------------------

<回避策>
==============================
本事象はクラスターの仮想ネットワークアダプター以外に APIPA のアドレスを持っている NIC が存在していることが原因であるため、クラスターの仮想ネットワークアダプター以外で APIPA のアドレスが割り当てられている NIC に静的に IP アドレスを付与していただくか、当該 NIC を無効にします。
なお、よく見られる誤った構成は、Hyper-V ホストとゲスト間の通信が不要であるにも関わらず、Hyper-V の仮想スイッチの種類を [内部] に設定してしまう場合です。
仮想スイッチの種類で [内部] を選択した場合、ホストとゲストが通信できるように Hyper-V の仮想 NIC が作成されます。
通常はこの Hyper-V の仮想 NIC に IP アドレスを割り当てて、ホストとゲストと通信できるように構成します。
この仮想 NIC に IP アドレスを割り当てなければ、APIPA (169.254.0.0/16) が割り当てられるため、本事象が発生します。
そのため、ホストとゲスト間の通信が不要であれば、仮想スイッチの種類を [プライベート] に変更をお願いします。
※ [プライベート] を選択した場合には、ゲスト内の通信のみとなりますため、Hyper-V の仮想 NIC は作成されません。