現象:
vSphere 5.1 のシステムで、
- vSphere Client で vCenter や ESXi ホストに接続できない。
- インベントリの仮想マシン名が正しく表示されない。
- vCenterとESXiとの接続が切れる。
- vMotionが失敗する。
- NASに格納した仮想マシンのクローン作成に失敗する。
- ストレージの検出にとても時間が掛かる。
- ストレージを検出しても正しくプロパティが表示されない。
- ストレージが見えたり見えなくなったりする。
などの障害が発生します。
環境:
- VMware vSphere ESXi のバージョン = 5.1.0,Build=1065491
- vMotion 用に vSphere 標準スイッチを作成し MTU を 9000 bytes に設定。
VMkernet ポートグループの MTU を 9000 bytesに設定。 - iSCSI 用に vSphere 標準スイッチを作成し MTU を 9000 bytes に設定。
VMkernet ポートグループの iSCSI ポートバインドを有効にし MTU を 9000 bytesに設定。 - ESXi の iSCSI ソフトウェア イニシエータを使用。
- NAS に iSCSI ターゲットを作成、MTU を 9000 bytes に設定。
- ESXi と NAS 間は 9KBytes Jumbo Frame 対応の Gigabit Switch で接続。
原因:
ギガビットのノンインテリジェント Switch を、ギガビットのインテリジェント Switch に交換したのですが、Jumbo Frame の設定がデフォルトで無効になっていました。
Jumbo Frame が無効な Switch では、Jumbo Frame を受信すると、エラーパケットとして破棄処理するため通信ができない。
解決策:
Jumbo Frame の設定を有効にしました。
なお、ギガビットのインテリジェント Switch の Max Frame Size は 9220 bytes ですので ESXi と NAS の 9000 bytes のフレームは問題なく通せます。
ギガビットのインテリジェント Switch のJumbo Frame を有効にすることで、上記の現象はすべて解決しました。
Jumbo Frame は、IEEE802.3 で規格されておらず、エラー処理のネゴシエーションも決まっていないそうです。(下記の参考を参照)
そのため、送信された Jumbo Frame は、Switch でエラーパケットとして破棄処理されてしまい、通信障害が発生していたと思われます。
参考:
追記:
元先のノードが MTU=9000、途中の経路が MTU=1500 の場合、途中の経路でパケットは破棄されてしまい通信ができなくなってしまいます。
通信が一方向であれば、先側のみを MTU=1500 にすることで通信が可能になるケースがあります。