VCF 9 Home Lab: Deploying a Dual-Site NFS Server on ESXi 9

Lab SeriesNetworkingStorageVCF 9

With the Arista DCS-7050TX-64-R fully configured for dual-site VCF 9 — VLANs, port-channels, SVIs, and BGP all in place — the next dependency before SDDC Manager deployment is shared storage. This post covers deploying a single Ubuntu NFS server on the R630-1 management host to serve both sites, and validating the end-to-end NFS path from ESXi.

Architecture overview

The design is deliberately simple: R630-1 runs ESXi 9 as its hypervisor, and a single Ubuntu 24.04 VM (nfs-server-01) runs on top of it with two vNICs — one on each site's NFS VLAN. Both Site 1 and Site 2 ESXi cluster hosts mount datastores from this single VM. The Arista switch handles inter-VLAN routing between the two NFS subnets via the Vlan1115 and Vlan1215 SVIs configured previously.


Figure 1 — R630-1 runs ESXi 9 as its hypervisor. The Ubuntu NFS VM (nfs-server-01) runs on top with two vNICs on VLAN 1115 (Site 1, 10.11.15.x) and VLAN 1215 (Site 2, 10.12.15.x). ESXi cluster hosts in each site mount NFS from the corresponding vNIC IP. The Arista switch provides inter-VLAN routing.
Why a VM, not bare metal Ubuntu? R630-1 is the management host — it also runs the NFS datastore for vCenter and SDDC Manager tooling. Keeping NFS in a VM lets you snapshot it, rebuild it, or migrate it without touching the host. It also avoids the circular dependency where NFS is needed to boot the host that serves NFS.

Network prerequisites

These were configured in the previous Arista post but are worth verifying before proceeding. The two NFS SVIs on the switch must be up before the Ubuntu VM can route to ESXi hosts.

VLANNameSubnetArista SVI IPMTUPurpose
1115NFS-S110.11.15.0/2410.11.15.19000Site 1 NFS traffic
1215NFS-S210.12.15.0/2410.12.15.19000Site 2 NFS traffic

Verify from the switch:

show interface Vlan1115
show interface Vlan1215

Both should show line protocol is up (connected) once R630-1 is cabled into Et25–28 and the NFS VM vNICs are active.

R630-1 VM deployment

VM specification

ParameterValueNotes
VM namenfs-server-01
OSUbuntu Server 24.04 LTSMinimal install
vCPU4NFS is I/O bound, not CPU bound
RAM16 GBAllows generous read-ahead caching
OS disk60 GB thinLocal RAID on R630-1 H330
Data disk1 TB+ thinBacking store for all exports
vNIC 1VLAN 1115 port groupSite 1 NFS — 10.11.15.10/24
vNIC 2VLAN 1215 port groupSite 2 NFS — 10.12.15.10/24
MTU matters: Set both vNICs to MTU 9000 to match the Arista SVI and VMkernel port MTU. Mismatched MTU causes silent fragmentation and NFS performance collapse under load. Validate end-to-end after deployment with a large-frame ping test.

Ubuntu NFS server installation

Step 1 — Install the NFS kernel server

sudo apt update && sudo apt install -y nfs-kernel-server

Step 2 — Configure jumbo frames on both vNICs

Edit /etc/netplan/00-installer-config.yaml (adjust interface names to match your VM — check with ip link):

network:
  version: 2
  ethernets:
    ens192:
      addresses: [10.11.15.10/24]
      routes:
        - to: 10.11.0.0/16
          via: 10.11.15.1
      mtu: 9000
    ens224:
      addresses: [10.12.15.10/24]
      routes:
        - to: 10.12.0.0/16
          via: 10.12.15.1
      mtu: 9000

Apply the configuration:

sudo netplan apply
ip link show ens192 | grep mtu
ip link show ens224 | grep mtu

Both interfaces should show mtu 9000.

Step 3 — Create export directories

sudo mkdir -p /exports/vcf-s1-shared
sudo mkdir -p /exports/vcf-s2-shared
sudo mkdir -p /exports/vcf-backups
sudo mkdir -p /exports/vcf-images
sudo chmod 777 /exports/vcf-s1-shared /exports/vcf-s2-shared
sudo chmod 777 /exports/vcf-backups
sudo chmod 755 /exports/vcf-images
Export pathAccessible fromPurposeMode
/exports/vcf-s1-shared10.11.15.0/24Site 1 VM datastore, shared VMDKsrw
/exports/vcf-s2-shared10.12.15.0/24Site 2 VM datastore, shared VMDKsrw
/exports/vcf-backupsBoth subnetsSDDC Manager, NSX, vCenter backupsrw
/exports/vcf-imagesBoth subnetsESXi ISOs, VCF bundle stagingro

Step 4 — Configure /etc/exports

sudo tee /etc/exports <<'EOF'
/exports/vcf-s1-shared  10.11.15.0/24(rw,sync,no_subtree_check,no_root_squash,anonuid=0,anongid=0)
/exports/vcf-s2-shared  10.12.15.0/24(rw,sync,no_subtree_check,no_root_squash,anonuid=0,anongid=0)
/exports/vcf-backups    10.11.15.0/24(rw,sync,no_subtree_check,no_root_squash) 10.12.15.0/24(rw,sync,no_subtree_check,no_root_squash)
/exports/vcf-images     10.11.15.0/24(ro,sync,no_subtree_check) 10.12.15.0/24(ro,sync,no_subtree_check)
EOF
no_root_squash is required for VCF: SDDC Manager and vCenter need root-level NFS access during deployment and backup operations. Without this option, file operations will fail with permission errors during the management domain build.

Step 5 — Apply exports and enable the service

sudo exportfs -arv
sudo systemctl enable --now nfs-kernel-server
sudo systemctl status nfs-kernel-server

Expected output from exportfs -arv:

exporting 10.11.15.0/24:/exports/vcf-s1-shared
exporting 10.12.15.0/24:/exports/vcf-s2-shared
exporting 10.11.15.0/24:/exports/vcf-backups
exporting 10.12.15.0/24:/exports/vcf-backups
exporting 10.11.15.0/24:/exports/vcf-images
exporting 10.12.15.0/24:/exports/vcf-images

Step 6 — Firewall

Ubuntu 24.04 ships with ufw inactive by default. If you have enabled it:

sudo ufw allow from 10.11.15.0/24 to any port nfs
sudo ufw allow from 10.12.15.0/24 to any port nfs
sudo ufw reload

NFS version — why NFSv3 for VMware

Use NFSv3, not NFSv4. vSphere supports NFSv4.1 but NFSv3 is the standard choice for VCF lab environments for several reasons: no stateful locking complexity, simpler troubleshooting, full support for all VCF datastore operations, and no Kerberos dependency. Unless you specifically need NFSv4.1 features (pNFS, delegations), stick with v3.

Validation — end-to-end MTU test

Before mounting NFS from ESXi, validate that jumbo frames traverse the full path without fragmentation. Run from an ESXi host on the NFS VMkernel:

# From ESXi host SSH — VMkernel on VLAN 1115
vmkping -I vmk2 -d -s 8972 10.11.15.10

The -d flag sets the DF (don't fragment) bit. The payload size 8972 bytes + 28 bytes IP/ICMP header = 9000 bytes total. A successful result confirms end-to-end MTU 9000 with no fragmentation across: ESXi VMkernel → vSwitch → Arista trunk → SVI → NFS VM vNIC.

If vmkping fails with 8972 but passes with a smaller payload — check MTU on the VMkernel port group (must be 9000), the vSwitch uplink (must be 9000), and the Arista port-channel MTU (9214 on this switch). The NFS VM vNIC MTU (9000 set above) is the ceiling for NFS traffic.

Mounting NFS from ESXi

Once validated, add the NFS datastore from vCenter — Datastores → New Datastore → NFS → NFSv3:

FieldSite 1 valueSite 2 value
NFS server10.11.15.1010.12.15.10
NFS share/exports/vcf-s1-shared/exports/vcf-s2-shared
Datastore namevcf-s1-nfs-sharedvcf-s2-nfs-shared
Access modeRead/WriteRead/Write

Or via ESXCLI if vCenter is not yet deployed:

# Site 1 host
esxcli storage nfs add -H 10.11.15.10 -s /exports/vcf-s1-shared -v vcf-s1-nfs-shared

# Site 2 host
esxcli storage nfs add -H 10.12.15.10 -s /exports/vcf-s2-shared -v vcf-s2-nfs-shared

Verification commands — NFS server side

# Check what is currently exported and mounted
sudo exportfs -v
sudo showmount -e localhost

# Check active NFS client connections
sudo ss -tnp | grep :2049

# Check NFS server statistics
nfsstat -s

What this enables for VCF 9

With NFS validated, SDDC Manager can now be pointed at the NFS datastores for:

  • SDDC Manager backup repository (/exports/vcf-backups)
  • vCenter appliance deployment staging
  • NSX Manager configuration backups
  • ESXi ISO and VCF bundle staging (/exports/vcf-images)
  • Shared VM storage for management workloads

Next post

With switch config and NFS in place, the next post covers VCF 9 management domain deployment — running SDDC Manager, validating the host commission checklist, and working through the first real deployment error (there's always one).

Lab hardware reference: R630-1 — Dell PowerEdge R630, 368 GB RAM, dual Xeon, H330 RAID controller. Running ESXi 9 as the hypervisor. The Ubuntu NFS server (nfs-server-01) is a VM on top of ESXi — not a bare-metal install. Cabled into Arista Et25–Et28 (trunk, VLAN 1111 native, all VCF VLANs allowed, MTU 9000).

No comments:

Post a Comment

VCF 9 Home Lab | Embedded vIDM (viDB) --- AD Integration, Users, Groups & NSX SSO

VCF 9 Home Lab | Embedded vIDM (viDB) — AD Integration, Users, Groups & NSX SSO 📅 May 2026  |  🏷️ VCF 9 Home Lab Series  ...