Skip navigation

ESXi に、コマンドで NFS をマウントする方法の紹介です。


コマンドで、192.168.0.249サーバの /nfs ディレクトリを、
ESXi の /vmfs/volume/ds_nfs_249 としてマウントします。

 

・NFS サーバ: 192.168.0.249
・NFS 共有名: /nfs
・NFS データストア名: ds_nfs_249

 

 

下記のどのコマンドでも、自動的にマウントポイント(ディレクトリ)が作成されます。
手動でマウントポイントを作成/削除する必要はありません。

 


1. まず、信頼と実績?の esxcfg-nas コマンド

コマンドラインが、一番簡潔です。

 

NFS マウント

~ # esxcfg-nas --add --host 192.168.0.249 --share /nfs ds_nfs_249
Connecting to NAS volume: ds_nfs_249
ds_nfs_249 created and connected.

 

(短縮版)
~ # esxcfg-nas -a -o 192.168.0.249 -s /nfs ds_nfs_249
Connecting to NAS volume: ds_nfs_249
ds_nfs_249 created and connected.


マウント確認

~ # esxcfg-nas --list
ds_nfs_249 is /nfs from 192.168.0.249 mounted available


~ # ls -ld /vmfs/volumes/ds_nfs_249
lrwxr-xr-x  1 root   root  17 Nov 25 18:08 /vmfs/volumes/ds_nfs_249 -> 37a82cda-67864c65

 

 

(短縮版)
~ # esxcfg-nas -l
ds_nfs_249 is /nfs from 192.168.0.249 mounted available

 

アンマウント

~ # esxcfg-nas --delete ds_nfs_249
NAS volume ds_nfs_249 deleted.


(短縮版)
~ # esxcfg-nas -d ds_nfs_249
NAS volume ds_nfs_249 deleted.

 

(アンマウントの確認)

~ # esxcfg-nas -l
~ # ls -ld /vmfs/volumes/ds_nfs_249
ls: /vmfs/volumes/ds_nfs_249: No such file or directory

 

 

2. 次は、玄人志向の vim-cmd

出力結果がわかりにくいです。

 

NFS マウント
※最後の「0」は読み書き(RW)モードを表します。「1」だとリードオンリーになります。

~ # vim-cmd hostsvc/datastore/nas_create ds_nfs_249 192.168.0.249 /nfs 0

 

マウント確認

~ # vim-cmd hostsvc/datastore/info ds_nfs_249
(vim.host.NasDatastoreInfo) {
   dynamicType = <unset>,
   name = "ds_nfs_249",
   url = "/vmfs/volumes/37a82cda-67864c65",
   freeSpace = 100703129600,
   maxFileSize = 9223372036854775807,
   timestamp = "2012-11-25T18:08:19.836034Z",
   nas = (vim.host.NasVolume) {
      dynamicType = <unset>,
      type = "NFS",
      name = "ds_nfs_249",
      capacity = 105688002560,
      remoteHost = "192.168.0.249",
      remotePath = "/nfs",
      userName = <unset>,
   },
}
(vim.Datastore.HostMount) [
   (vim.Datastore.HostMount) {
      dynamicType = <unset>,
      key = 'vim.HostSystem:ha-host',
      mountInfo = (vim.host.MountInfo) {
         dynamicType = <unset>,
         path = "/vmfs/volumes/37a82cda-67864c65",
         accessMode = "readWrite",
         mounted = true,
         accessible = true,
         inaccessibleReason = <unset>,
      },
   }
]

 

NFSアンマウント

~ # vim-cmd hostsvc/datastore/remove ds_nfs_249

(アンマウント確認)
~ # vim-cmd hostsvc/datastore/info ds_nfs_249
Datastore not found.

 

 

3. 最後に、一番ナウい esxcli

結果出力が、一番わかりやすいです。

 

NFSマウント

~ # esxcli storage nfs add --host=192.168.0.249 --share=/nfs --volume-name=ds_nfs_249

(短縮版)
~ # esxcli storage nfs add -H=192.168.0.249 -s=/nfs -v=ds_nfs_249


マウント確認

~ # esxcli storage nfs list
Volume Name  Host           Share  Accessible  Mounted  Read-Only  Hardware Acceleration
-----------  -------------  -----  ----------  -------  ---------  ---------------------
ds_nfs_249   192.168.0.249  /nfs         true     true      false  Not Supported


アンマウント

~ # esxcli storage nfs remove --volume-name=ds_nfs_249

 

(短縮版)
~ # esxcli storage nfs remove -v=ds_nfs_249

 

(アンマウント確認)
~ # esxcli storage nfs list
~ #

 

 

ちなみに、今回の環境は、ESXi 5.1 です。

~ # vmware -v
VMware ESXi 5.1.0 build-838463

 

NFS サーバは、Oracle Linux 6.2 を使用しています。

[root@vm1 ~]# uname -a
Linux vm1 2.6.32-300.3.1.el6uek.x86_64 #1 SMP Fri Dec 9 18:57:35 EST 2011 x86_64 x86_64 x86_64 GNU/Linux
[root@vm1 ~]# cat /etc/oracle-release
Oracle Linux Server release 6.2

 

基本的に、NFS サーバ側は何を使っていても(Linux のNFS サーバでも、Solaris のNFSサーバでも、NetApp でも)
ESXi での NFS マウント方法は変わりません。

OracleLinuxには、RHCK(レッドハット互換カーネル)とUEKカーネルが付属していて、デフォルトはUEKです。

実は、UEKには 最初から ESXi用のドライバがいくつか含まれています。

含まれているのは、準仮想化のNICとSCSIアダプタ(vmxnet3とvmw_pvscsi)、バルーニングドライバ(vmw_balloon)です。

 

 

UEKのLinuxゲストOSに vmware-toolsをインストールしても、デフォルトで入っているドライバは上書きされません。

ESXi のバージョンアップや、パッチ適用をする場合は、
ゲストOSの vmware-tools バージョンアップにあわせてドライバの入れ替えも必要になります。

とくに、vmxnet3ドライバはバージョンが最新ではなく不具合もあるので
忘れずに入れ替えしておいたほうがよいです。

 

 

 

たとえば、
古い vmxnet3ドライバだと、
UDP受信があまりイケていないそうです。

 

UDP packets are dropped from Linux systems using the VMXNET3 Network Adapter
http://kb.vmware.com/kb/2019944

 

使ってみると、まったくUDP通信できないわけではないですが

UDPパケットのドロップが多いということみたいです。

 

これは、最近のESXiのアップデートで修正されているようです。

 

VMware ESXi 5.0, Patch ESXi500-201209402-BG: Updates tools-light
http://kb.vmware.com/kb/2032587

 

このESXiのパッチには、「tools-light」(vmware-tools)のVIBが含まれています。
上記のUDP受信問題も解決しているようです。
Large number of UDP packets are dropped when you use the VMXNET3 adapter in a Linux guest OS on an ESXi 5.0 host.

 

 

こんな場合は、vmxnet3ドライバのアップデートが必要です。

Linuxゲストで、明示的にドライバ入れ替えをするには、
vmware-tools の再インストールで「--clobber-kernel-modules」オプションを指定します。

 

実行例

[root@vm1 tmp]# mount /dev/cdrom /media/

mount: ブロックデバイス /dev/sr0 は書き込み禁止です、読込み専用でマウントします

[root@vm1 tmp]# tar zxf /media/VMwareTools-8.6.5-821615.tar.gz
[root@vm1 tmp]# cd vmware-tools-distrib/
[root@vm1 vmware-tools-distrib]# ./vmware-install.pl --clobber-kernel-modules=vmw_balloon,vmw_pvscsi,vmxnet3 --default

※オプションについて
--clobber-kernel-modules
もともと入っているモジュール(ドライバ)を削除して、
新しいモジュールを入れなおします。
モジュールはカンマ区切りで指定します。

 

--default
インストール途中で聞かれる yes/no をデフォルトで進めてくれます。
--clobber-kernel-modules で指定したモジュールは、ちゃんとインストールされます。

 


ドライバがアップデートされると
modinfo で表示されるバージョンが上がります。

 

ちなみに、下記はOEL6.2 UEKのドライバです。


OEL6.2同梱の vmxnet3ドライバ

[root@vm1 ~]# modinfo vmxnet3
filename:       /lib/modules/2.6.32-300.3.1.el6uek.x86_64/kernel/drivers/net/vmxnet3/vmxnet3.ko
version:        1.1.18.0-k
license:        GPL v2
description:    VMware vmxnet3 virtual NIC driver
author:         VMware, Inc.
srcversion:     FED612E4541CA3164D04587
alias:          pci:v000015ADd000007B0sv*sd*bc*sc*i*
depends:
vermagic:       2.6.32-300.3.1.el6uek.x86_64 SMP mod_unload modversions

 


OEL6.2同梱の準仮想化SCSIアダプタのドライバ

[root@vm1 ~]# modinfo vmw_pvscsi
filename: /lib/modules/2.6.32-300.3.1.el6uek.x86_64/kernel/drivers/scsi/vmw_pvscsi.ko
version: 1.0.1.0-k
license: GPL
author: VMware, Inc.
description: VMware PVSCSI driver
srcversion: 4F6ECEFF85BAB8EA656B488
alias: pci:v000015ADd000007C0sv*sd*bc*sc*i*
depends:
vermagic: 2.6.32-300.3.1.el6uek.x86_64 SMP mod_unload modversions
parm: ring_pages:Number of pages per req/cmp ring - (default=8) (int)
parm: msg_ring_pages:Number of pages for the msg ring - (default=1) (int)
parm: cmd_per_lun:Maximum commands per lun - (default=(32 * (((1UL) << 12) / sizeof(struct PVSCSIRingReqDesc)))) (int)
parm: disable_msi:Disable MSI use in driver - (default=0) (bool)
parm: disable_msix:Disable MSI-X use in driver - (default=0) (bool)
parm: use_msg:Use msg ring when available - (default=1) (bool)

 

 

OEL6.2同梱のバルーニングドライバ

[root@vm1 ~]# modinfo vmw_balloon
filename: /lib/modules/2.6.32-300.3.1.el6uek.x86_64/kernel/drivers/misc/vmw_balloon.ko
license: GPL
alias: vmware_vmmemctl
alias: dmi:*:svnVMware*:*
version: 1.2.1.0-K
description: VMware Memory Control (Balloon) Driver
author: VMware, Inc.
srcversion: 50F84EEB899D9A44232C844
depends:
vermagic: 2.6.32-300.3.1.el6uek.x86_64 SMP mod_unload modversions

 

 

最近のESXi のvmware-toolsのvmxnet3ドライバは、下記のようになっています。


ESXi 5.0 (Build:623860)付属の vmxnet3ドライバ

~ # vmware -v
VMware ESXi 5.0.0 build-623860

[root@vm1 vmware-tools-distrib]# modinfo vmxnet3
filename:       /lib/modules/2.6.32-300.3.1.el6uek.x86_64/updates/vmware/vmxnet3.ko
supported:      external
version:        1.0.47.0
license:        GPL v2
description:    VMware vmxnet3 virtual NIC driver
author:         VMware, Inc.
srcversion:     72BECA67405E3F484785180
alias:          pci:v000015ADd000007B0sv*sd*bc*sc*i*
depends:
vermagic:       2.6.32-300.3.1.el6uek.x86_64 SMP mod_unload modversions
parm:           enable_shm:Shared memory enable (array of int)
parm:           shm_disclaimer:Shared memory disclaimer (charp)
parm:           shm_pool_size:Shared memory pool size (int)
parm:           share_tx_intr:Share an intr among all tx completions. Comma separated list of 1s and 0s - one for each NIC. 1 to share, 0 to not, default is 0 (array of int)
parm:           buddy_intr:Share an intr among corresponding tx and rx queues. Comma separated list of 1s and 0s - one for each NIC. 1 to share, 0 to not, default is 1 (array of int)
parm:           num_tqs:Number of transmit queues in each adapter. Comma separated list of ints. Default is 0 which makes number of queues same as number of CPUs (array of int)
parm:           rss_ind_table:RSS Indirection table. Number of entries per NIC should be 32. Each comma separated entry is a rx queue number starting with 0. Repeat the same for all NICs (array of int)
parm:           num_rqs:Number of receive queues in each adapter. Comma  separated list of ints. Default is 0 which makes number of queues same as number of CPUs (array of int)
parm:           drop_check_noise:Number of drops per interval which are ignored (uint)
parm:           drop_check_grow_threshold:uint
parm:           drop_check_shrink_threshold:Threshold for growing the ring

 


ESXi 5.0 (Build:821926)付属の vmxnet3ドライバ

~ # vmware -v
VMware ESXi 5.0.0 build-821926

[root@vm1 ~]# modinfo vmxnet3
filename:       /lib/modules/2.6.32-300.3.1.el6uek.x86_64/updates/vmware/vmxnet3.ko
supported:      external
version:        1.0.48.0
license:        GPL v2
description:    VMware vmxnet3 virtual NIC driver
author:         VMware, Inc.
srcversion:     E1E9BDA3D195AA236232F34
alias:          pci:v000015ADd000007B0sv*sd*bc*sc*i*
depends:
vermagic:       2.6.32-300.3.1.el6uek.x86_64 SMP mod_unload modversions
parm:           enable_shm:Shared memory enable (array of int)
parm:           shm_disclaimer:Shared memory disclaimer (charp)
parm:           shm_pool_size:Shared memory pool size (int)
parm:           share_tx_intr:Share an intr among all tx completions. Comma separated list of 1s and 0s - one for each NIC. 1 to share, 0 to not, default is 0 (array of int)
parm:           buddy_intr:Share an intr among corresponding tx and rx queues. Comma separated list of 1s and 0s - one for each NIC. 1 to share, 0 to not, default is 1 (array of int)
parm:           num_tqs:Number of transmit queues in each adapter. Comma separated list of ints. Default is 0 which makes number of queues same as number of CPUs (array of int)
parm:           rss_ind_table:RSS Indirection table. Number of entries per NIC should be 32. Each comma separated entry is a rx queue number starting with 0. Repeat the same for all NICs (array of int)
parm:           num_rqs:Number of receive queues in each adapter. Comma  separated list of ints. Default is 0 which makes number of queues same as number of CPUs (array of int)
parm:           drop_check_noise:Number of drops per interval which are ignored (uint)
parm:           drop_check_grow_threshold:uint
parm:           drop_check_shrink_threshold:Threshold for growing the ring

 


ESXi 5.1 (Build:799733)付属の vmxnet3ドライバ

~ # vmware -v
VMware ESXi 5.1.0 build-799733

 

[root@vm1 ~]# modinfo vmxnet3
filename:       /lib/modules/2.6.32-300.3.1.el6uek.x86_64/updates/vmware/vmxnet3.ko
supported:      external
version:        1.1.32.0
license:        GPL v2
description:    VMware vmxnet3 virtual NIC driver
author:         VMware, Inc.
srcversion:     B98A9B630B45C86161AA741
alias:          pci:v000015ADd000007B0sv*sd*bc*sc*i*
depends:
vermagic:       2.6.32-300.3.1.el6uek.x86_64 SMP mod_unload modversions
parm:           enable_shm:Shared memory enable (array of int)
parm:           shm_disclaimer:Shared memory disclaimer (charp)
parm:           shm_pool_size:Shared memory pool size (int)
parm:           share_tx_intr:Share an intr among all tx completions. Comma separated list of 1s and 0s - one for each NIC. 1 to share, 0 to not, default is 0 (array of int)
parm:           buddy_intr:Share an intr among corresponding tx and rx queues. Comma separated list of 1s and 0s - one for each NIC. 1 to share, 0 to not, default is 1 (array of int)
parm:           num_tqs:Number of transmit queues in each adapter. Comma separated list of ints. Default is 0 which makes number of queues same as number of CPUs (array of int)
parm:           rss_ind_table:RSS Indirection table. Number of entries per NIC should be 32. Each comma separated entry is a rx queue number starting with 0. Repeat the same for all NICs (array of int)
parm:           num_rqs:Number of receive queues in each adapter. Comma  separated list of ints. Default is 0 which makes number of queues same as number of CPUs (array of int)
parm:           drop_check_noise:Number of drops per interval which are ignored (uint)
parm:           drop_check_grow_threshold:uint
parm:           drop_check_shrink_threshold:Threshold for growing the ring


上記の KB#2019944 の問題はバージョン 1.0.48.0 からは修正されているようですが、

vmxnet3 はまだ問題発生することが多いようなので

ネットワーク周りでトラブルがあった場合は、ドライバが最新か確認してみるとよいと思います。

 

バルーニング、準仮想化SCSIのドライバは、安定しているのかあまりバージョンアップされていないようです。