普段ははてなグループの方で書いている仮想化関連の話題ですが、別に今回は仮想化というよりもサーバ設定の内容なのでこちらで。
通常、VM用のNICとService Console用のNICは分離する。
ただし、ブレードサーバの場合など、NICの数や構成が限定されている環境ではNICをVM用とService
Console用で共有する構成としなければならない場合もある。
共有構成とする場合は"vmxnet_console"ドライバを使用して行う。
設定手順は以下の通り。
1."vmkpcidivy -i"でPCIデバイスの割り当て設定を対話モードで設定する(Broadcom NICを共有[s]に設定する)
2."/etc/vmware/hwconfig"ファイルを編集するnicteam.vmnic0.team = "bond0" nicteam.vmnic1.team = "bond0"※優先パスを定義する場合は"nicteam.bond0.home_link = "vmnic0""も
3."/etc/rc.local"にvmxnet_consoleモジュールをロードする設定を追記する/etc/rc.d/init.d/network stop rmmod vmxnet_console insmod vmxnet_console devName=bond0 /etc/rc.d/init.d/network start mount -a※VLANを定義する場合は多少異なる。VMware ESX Serverインストールガイド及び運用ガイド参照のこと
4."/etc/modules.conf"を編集する(NICモジュールをコメントアウトする)# alias eth0 bcm5700 # alias eth1 bcm5700
サーバに搭載されているNICなどのPCIバスデバイスは"/sbin/lspci"で確認することができる。
[root@ESXtest01 root]# /sbin/lspci (省略) 01:01.0 Ethernet controller: BROADCOM Corporation NetXtreme BCM5703 Gigabit Ethernet (rev 02) 02:01.0 Ethernet controller: BROADCOM Corporation NetXtreme BCM5703 Gigabit Ethernet (rev 02) 02:02.0 Fiber Channel: QLogic Corp QLA231x/2340 (rev 02) 02:02.1 Fiber Channel: QLogic Corp QLA231x/2340 (rev 02) [root@ESXtest01 root]#
上記から、PCI1:1:0とPCI2:1:0がBroadcom製のGigabit NIC、PCI2:2:0とPCI2:2:1がQLogicのHBAであることがわかる。
デバイスの内、どれがService Console用でどれがVM用に割り当てられているのかは"/usr/sbin/vmkchdev -L"で確認することができる。
[root@ESXtest01 root]# vmkchdev -L 000:00.0 1166:0012 0000:0000 console PCI device 1166:0012 (ServerWorks) (省略) 001:01.0 14e4:16a7 1014:0281 vmkernel vmnic0 PCI device 14e4:16a7 (BROADCOM Corporation) 002:01.0 14e4:16a7 1014:0281 vmkernel vmnic1 PCI device 14e4:16a7 (BROADCOM Corporation) 002:02.0 1077:2312 1014:027d vmkernel vmhba0 PCI device 1077:2312 (Q Logic) 002:02.1 1077:2312 1014:027d vmkernel vmhba1 PCI device 1077:2312 (Q Logic) [root@ESXtest01 root]#
上記から、"vmkernel"と記載されているBroadcom NIC x2個とQLogic HBA x2個はvmkernelに割り当てられていることがわかる。ただし、共有に設定されているものはvmkernelが所有していると表示されるので注意が必要。
ちなみにService Consoleが所有しているデバイスは"console"と表記される。
vmkernelが読み込んでいるデバイスモジュールは"/usr/sbin/vmkload_mod -l"で確認することができる。
[root@ESXtest01 root]# /usr/sbin/vmkload_mod -l Name R/O Addr Length R/W Addr Length ID Loaded vmklinux 0x4ea000 0x10000 0x125b090 0x54000 1 Yes nfshaper 0x4fa000 0x1000 0x12b2e20 0x1000 2 Yes qla2300_7xx 0x4fb000 0x28000 0x12b3e28 0x68000 3 Yes bcm5700 0x523000 0x11000 0x15a11a8 0xa000 4 Yes bond 0x534000 0x2000 0x15bbfd8 0x2000 5 Yes [root@ESXtest01 root]#
上記からQlogicのHBA、BroadcomのNIC、およびbondドライバをvmkernelがロードしていることがわかる。
NICおよびBONDのステータスは"/proc/vmware/net"以下で確認することができる。
[root@ESXtest01 vmnic0]# cat /proc/vmware/net/vmnic0/config VLanHwTxAccel Yes VLanHwRxAccel Yes VLanSwTagging Yes PromiscuousAllowed No InterruptClustering No Link state: Up Speed: 1000 Mbps, full duplex Queue: Running PCI (bus:slot.func): 1:1.0 Minimum Capabilities 0x0 Device Capabilities 0x76b Maximum Capabilities 0x76b NICTeamingMaster: bond0 TeamFailoverBeacon: Off Interrupt vector 0x69 DebugSocket Closed [root@ESXtest01 vmnic0]# cat /proc/vmware/net/vmnic1/config VLanHwTxAccel Yes VLanHwRxAccel Yes VLanSwTagging Yes PromiscuousAllowed No InterruptClustering No Link state: Up Speed: 1000 Mbps, full duplex Queue: Running PCI (bus:slot.func): 2:1.0 Minimum Capabilities 0x0 Device Capabilities 0x76b Maximum Capabilities 0x76b NICTeamingMaster: bond0 TeamFailoverBeacon: Off Interrupt vector 0x71 DebugSocket Closed [root@ESXtest01 vmnic0]# [root@ESXtest01 bond0]# cat /proc/vmware/net/bond0/config VLanHwTxAccel Yes VLanHwRxAccel Yes VLanSwTagging Yes PromiscuousAllowed No InterruptClustering No Link state: Up Speed: 1000 Mbps, full duplex Queue: Running PCI (bus:slot.func): -1:-1.-1 Minimum Capabilities 0x0 Device Capabilities 0x76b Maximum Capabilities 0x76b NICTeamingSlaves: Name LinkUp BeaconState vmnic0 Yes Off vmnic1 Yes Off NICTeamingLoadBalance: Off (HomeLink: vmnic0) NICTeamingSwitchFailover: Off Interrupt vector 0xfffffffe DebugSocket Closed [root@ESXtest01 bond0]#
"vmxnet_console"モジュールが読み込まれていることは"/sbin/lsmod"で確認することができる。
[root@ESXtest01 root]# /sbin/lsmod Module Size Used by Tainted: PF vmxnet_console 18832 1 sg 33540 0 (autoclean) vmnixmod 231264 3 [vmxnet_console] bcm5700 88740 0 mousedev 5088 1 keybdev 2464 0 (unused) hid 20736 0 (unused) input 5952 0 [mousedev keybdev hid] usb-ohci 20000 0 (unused) usbcore 64992 1 [hid usb-ohci] [root@ESXtest01 root]#
vmxnet_consoleモジュールを読み込むと、vmnixmodに対してのService Consoleからの窓口として動作する。
ちなみにNICとは関係ないが、HBAのマルチパスは"vmkmultipath -q"で確認することができる。
[root@ESXtest01 root]# vmkmultipath -q Disk and multipath information follows: Disk vmhba0:0:1 (40,960 MB) has 2 paths. Policy is mru. vmhba0:0:1 on (active, preferred) vmhba1:0:1 on Disk vmhba0:0:2 (40,960 MB) has 2 paths. Policy is mru. vmhba0:0:2 on (active, preferred) vmhba1:0:2 on Disk vmhba0:0:31 (20 MB) has only 1 path. Disk vmhba1:0:31 (20 MB) has only 1 path. [root@ESXtest01 root]#
上記の場合、2つのLUNがSANストレージ上に認識されており、いずれも0番側のAdapter経由がactiveになっている。