ご注意下さい
この記事は3年以上前に書かれた記事ですので、内容が古い可能性があります。
ESXi上で複数の仮想マシンを運用している場合には仮想スイッチ(vSwitch)を介してネットワーク通信を行います。Hyper-Vの場合VM-vSwitch間でリンクスピードの設定項目はなかった認識なんですが(私の知識不足かもしれません)vSphereの場合は設定できそうですので今回は仮想マシンのNICを変更することにより10GbE通信を実現します。
下記ドキュメントに仮想NICについての解説がされていますが、ESXiでは何も設定をしないとE1000eという1ギガビットNICが選択されてしまいます。ここをVMXNET3に変更することで10GbE通信を実現することができます。
この記事のもくじ
仮想NICの変更方法
管理画面からは変更できそうもない雰囲気でしたのでESXiサーバに直接SSHしてログインして、vmxファイルを変更してうことにします。編集前に仮想マシンはシャットダウンしておきます。
toolScripts.beforeSuspend = "TRUE"
toolScripts.beforePowerOff = "TRUE"
tools.syncTime = "FALSE"
sched.cpu.min = "0"
sched.cpu.shares = "normal"
sched.mem.min = "16384"
sched.mem.minSize = "16384"
sched.mem.shares = "normal"
vmci0.id = "-949463040"
cleanShutdown = "TRUE"
firmware = "efi"
sched.mem.pin = "TRUE"
numvcpus = "8"
ethernet0.virtualDev = "e1000e"
ethernet0.networkName = "Home Network"
ethernet0.addressType = "generated"
ethernet0.wakeOnPcktRcv = "FALSE"
ethernet0.present = "TRUE"
ethernet0.generatedAddress = "00:0c:29:68:58:00"
extendedConfigFile = "atsushi.vmxf"
pciPassthru3.id = "00000:001:00.3"
pciPassthru3.deviceId = "0x1ad9"
pciPassthru3.vendorId = "0x10de"
pciPassthru3.systemId = "5f445e80-ba56-9874-50f7-58278cbf4213"
pciPassthru3.present = "FALSE"
pciPassthru3.pciSlotNumber = "-1"
上記の仮想デバイス指定部分をE1000eからVMXNET3に変更するだけです。具体的には以下のように「vmxnet3」に変更します。
ethernet0.virtualDev = "vmxnet3"
NICの変更方法についてはWindows仮想マシンでもLinux仮想マシンでも上記変更で完了できます。
Windows仮想マシンの場合
具体的にWindows仮想マシンの場合の動きについて見ていきます。
変更前
コントロールパネルから「ネットワークと共有センター」を開いて情報を見てみると、インタフェース名は「Ethernet0」、速度(リンクスピード)は1.0Gbpsであることがわかります。
デバイスマネージャからはNICがIntel(R) 92574L Gigabit Network Connectionとなっています。
変更後
次にvmxファイルを書き換えて仮想NICアダプターをVMXNET3に変更します。そして同じくコントロールパネルから「ネットワークと共有センター」を開いて情報を見てみると、インタフェース名は「Ethernet0 2」、速度(リンクスピード)は10.0Gbpsであることがわかります。
デバイスマネージャからはNICがvmxnet3 Ethernet Adapterと変更されました。
注意点としてはNICが変更になるので、静的に指定していたIPアドレス等の設定は消えることに注意してください。再設定が必要となります。
Linux仮想マシンの場合
次に仮想マシンの場合の動きについて見ていきます。
私の場合、Linux仮想サーバのvmxファイルにethernet0.virtualDevというエントリーがそもそもなかったので、追加しています。
ethernet0.virtualDev = "vmxnet3"
このエントリーがなかったせいかもしれませんが、ethtool コマンドでリンクスピードが表示されない、という事象が発生していました。
[root@linux ~]# ethtool eth0 Settings for eth0: Current message level: 0x00000007 (7) drv probe link Link detected: yes [root@linux ~]#
エントリーを指定したところ以下のように10Gでリンクアップしていることが確認できています。
[root@linux ~]# ethtool eth0 Settings for eth0: Supported ports: [ TP ] Supported link modes: 1000baseT/Full 10000baseT/Full Supported pause frame use: No Supports auto-negotiation: No Supported FEC modes: Not reported Advertised link modes: Not reported Advertised pause frame use: No Advertised auto-negotiation: No Advertised FEC modes: Not reported Speed: 10000Mb/s Duplex: Full Port: Twisted Pair PHYAD: 0 Transceiver: internal Auto-negotiation: off MDI-X: Unknown Supports Wake-on: uag Wake-on: d Link detected: yes [root@linux ~]#
効果測定(Linux仮想マシンの場合)
せっかくなので仮想マシン間のネットワーク速度についてiperfを使ってパフォーマンス測定してみました。
変更前
[root@server ~]# iperf -s ------------------------------------------------------------ Server listening on TCP port 5001 TCP window size: 85.3 KByte (default) ------------------------------------------------------------ [ 4] local 192.168.30.101 port 5001 connected with 192.168.30.102 port 55630 [ ID] Interval Transfer Bandwidth [ 4] 0.0-10.2 sec 700 MBytes 573 Mbits/sec ^C[root@server ~]#
[root@client ~]# iperf -c server -l 100M ------------------------------------------------------------ Client connecting to server, TCP port 5001 TCP window size: 178 KByte (default) ------------------------------------------------------------ [ 3] local 192.168.30.102 port 55630 connected with 192.168.30.101 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.2 sec 700 MBytes 574 Mbits/sec [root@client ~]#
変更後
約30倍の速度向上を確認することができました。
[root@server ~]# iperf -s ------------------------------------------------------------ Server listening on TCP port 5001 TCP window size: 85.3 KByte (default) ------------------------------------------------------------ [ 4] local 192.168.30.101 port 5001 connected with 192.168.30.102 port 54288 [ ID] Interval Transfer Bandwidth [ 4] 0.0-10.1 sec 18.7 GBytes 15.9 Gbits/sec ^C[root@server ~]#
[root@client ~]# iperf -c server -l 100M ------------------------------------------------------------ Client connecting to kamatawww, TCP port 5001 TCP window size: 2.54 MByte (default) ------------------------------------------------------------ [ 3] local 192.168.30.102 port 54288 connected with 192.168.30.101 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.0 sec 18.7 GBytes 15.9 Gbits/sec [root@client ~]#
記事は以上!