読者です 読者をやめる 読者になる 読者になる

自由人なエンジニアの備忘録

好きなことを好きに描く、ん~のびしろですね!

ESXi5.1~5.5がインストールされたマシンでNICの交換は大丈夫なの?

今回はあるあるネタを綴ります。

 

ESXi5.1~5.5を運用していると、当然ながらハードウェア障害に遭遇することがあります。
CPU,マザーボード,NIC,HDD,SSD 挙げだすと、山ほどあるわけですが、
今回はNIC を交換したときの影響について書きたいと思います。

ESXiでは、物理NICのことを 「vmnic」と言います。

 

まず始めに、結論から申し上げるとESXiはハードウェア的にNICを交換しても、
基本は影響を受けません。一部例外もありますが、順に記載してきます。

NICの交換でハードウェア的に変更されるものは、ESXi観点からは
MAC Address、SerialNo , デバイス ID あたりかと思います。
(同じNICと交換することを想定しています)

Windows であったりLinuxでは、NICを交換すると別の新しいNICという扱いになるため、再設定が必要です。

特にMAC Addressが変更されると、ロードバランサーを使っている環境や、
ファイアーウォールを使っている環境では、MAC Addressで識別して動作させていることも少なくありません。そこでまずはMAC Address観点で影響を受けない理由から記載していこうと思います。


【影響を受けない理由1】
ESXi 上で稼働する仮想マシンに装着されているvNIC はそれぞれ固有に
MAC Addressを保持しています。そのため、物理NIC(vmnic)のMAC Addressを利用していないため、仮想マシンは、物理NIC交換の影響を受けません。

vSphere Web Client から仮想マシンの編集画面を見ると確認できます。
もちろん vSphere Client からでも確認ができます。
(私の環境がvCenter6.5なので見れませんが)

f:id:japan-vmware:20161204141319p:plain

 

◆vmkernel ポートすらMAC Addressを持っている
仮想マシンが固有のMAC Addressを保持しているのは上記の画像でお分かりいただけると思います。

そして、ESXi とって重要なvmkernel ポート もそれぞれMAC Addressを保持しています。
(vmkernelポートは HA,iSCSI接続,vMotion等で使われる仮想ポートです) 

f:id:japan-vmware:20161204203554p:plain

 

◆つまり
ESXiは、物理NIC(vmnic)のMAC Address を使用して外部と通信していないため、
物理NIC 交換後に物理NICMAC Addressが変更されてしまっても、影響を受けず、
外部と通信することが可能です。
イメージとしては、vmnicは通信をパススルーさせてるだけという感じです。

 

【影響を受けない理由2】
ESXi 5.1、5.5 のvmnic番号の割り振り動作について理解してみるといいと思います。
ESXi はOS起動毎にvmnic番号を割り振っていて、
サーバーが認識したPCI IDから順にESXi は自動的にvmnic 番号を割り振ります。
そして、割り振られたvmnic番号は/etc/vmware/esx.conf ファイルに書かれます。
ポート数が同じNICとの交換、そして同じ PCIスロット上にあると認識されれば(同じスロットに挿せば)、基本的には同じvmnic番号で認識されます。
vmnic番号が変更されなければ、従来通りのvSwitchに接続されます。
そのため、影響を受けないということになります。
(参考)
+ESXi/ESX host loses network connectivity after adding new NICs or an upgrade
https://kb.vmware.com/kb/2019871

esx.confにはこんな感じで記録されています。
--------------------------------------------
/device/00000:002:00.1/vmkname = "vmnic1"
/device/00000:002:00.0/vmkname = "vmnic0"
--------------------------------------------

※4ポートのNICを2ポートのNICに交換した場合は、
 vmnic番号が歯抜けになります。番号を振り直したい場合は、
 KBの通り、BIOS からvmnic0以外のNICを全て無効化し、
 サーバーを再起動したあと、認識したい順にBIOSから有効化していきます。
 vmnicの数だけ再起動していきます。

 

NICのベンダーが変わっても同じ動作になります。

 

ESXi6.0以降は実際に試したことがないので、なんとも言えませんが、
おそらく同じ動作になるのではないかと思っています。(推測)

 

参考になると幸いです。