NFS datastore nejde připojit na ESXi hosta při více vmkernel adaptérech v různých IP sítích

Narazil jsem na problém, kdy dva ESXi hosti používající dva různé vmk adaptéry (jeden pro Management a druhý pro vMotion) v různých IP sítích přestaly „vidět“ NFS sdílené složky v IP síti, kam „míří“ vmk adaptér s funkcí Management.

Pokud se pokusíte připojit NFS sdílenou složku pomocí příkazu ESXi shellu, dostanete podobný výstup:

esxcli storage nfs add -H 192.168.156.xx -s /volume1/vmware -v NASnfsshare
Mount failed: Unable to complete Sysinfo operation.  Please see the VMkernel log file for more details.: Unable to connect to NFS server

V logu /var/log/vmkernel.log objevíte další hlášky ohledně nemožnosti připojit NFS svazek.

2022-01-31T19:45:10.194Z cpu10:2101233 opID=cf4c19ed)NFS: 161: Command: (mount) Server: (192.168.156.xx) IP: (192.168.156.xx) Path: (/volume1/vmware) Label: (
NASnfsshare) Options: (None)
2022-01-31T19:45:10.194Z cpu10:2101233 opID=cf4c19ed)StorageApdHandler: 966: APD Handle 562ff53c-847ecadd Created with lock[StorageApd-0x43165bc02b50]
2022-01-31T19:45:20.230Z cpu10:2101233 opID=cf4c19ed)SunRPC: 3291: Synchronous RPC cancel for client 0x430dd8c013b0 IP 192.168.156.xx.0.111 proc 3 xid 0x6eed1672 attempt 1 of 3
2022-01-31T19:45:30.232Z cpu12:2101233 opID=cf4c19ed)SunRPC: 3291: Synchronous RPC cancel for client 0x430dd8c013b0 IP 192.168.156.xx.0.111 proc 3 xid 0x6eed1672 attempt 2 of 3
2022-01-31T19:45:41.230Z cpu12:2101233 opID=cf4c19ed)SunRPC: 3291: Synchronous RPC cancel for client 0x430dd8c013b0 IP 192.168.156.xx.0.111 proc 3 xid 0x6eed1672 attempt 3 of 3
2022-01-31T19:45:41.230Z cpu12:2101233 opID=cf4c19ed)SunRPC: 1092: Destroying world 0x20e9eb
2022-01-31T19:45:41.231Z cpu12:2101233 opID=cf4c19ed)StorageApdHandler: 1051: Freeing APD handle 0x43165bc02b50 [562ff53c-847ecadd]
2022-01-31T19:45:41.231Z cpu12:2101233 opID=cf4c19ed)StorageApdHandler: 1135: APD Handle freed!
2022-01-31T19:45:41.231Z cpu12:2101233 opID=cf4c19ed)NFS: 172: NFS mount 192.168.156.xx:/volume1/vmware failed: Unable to connect to NFS server.

Řešením je vytvořit „Custom Netstack“ právě pro potřeby NFS protokolu příkazem:

localcli network ip netstack add --netstack=nfs

Ověřte, že se operace zdařila příkazem:

esxcli network ip netstack get --netstack=nfs
nfs
   Key: nfs
   Name: nfs
   Enabled: true
   Max Connections: 11000
   Current Max Connections: 11000
   Congestion Control Algorithm: newreno
   IPv6 Enabled: true
   Current IPv6 Enabled: false
   ECN Status: enabled
   State: 4660

Po restartu ESXi hosta najdete nový TCP/IP stack.

Nyní je třeba v ESXi shellu provést následující příkazy (podle článku https://kb.vmware.com/s/article/50112854):

/etc/init.d/nfsgssd stop
nfsgssd stopped
vmkload_mod -u nfs41client
Module nfs41client successfully unloaded
vmkload_mod -u nfsclient
Module nfsclient successfully unloaded
vmkload_mod -u sunrpc
Module sunrpc successfully unloaded
localcli system module parameters set -m sunrpc -p netstackName=nfs
localcli system module load -m sunrpc
localcli system module load -m nfsclient
localcli system module load -m nfs41client
/etc/init.d/nfsgssd start
nfsgssd started

Pokud vše zafungovalo, bude možno namapovat NFS datastore.

esxcli storage nfs add -H 192.168.156.xx -s /volume1/vmware -v NASnfsshare