Skip to content

NFS Datastore Mount Fails

You add an NFS datastore but the row shows red on one or more nodes, or VMs can't use the datastore.

Common failure modes

mount.nfs: access denied by server

The NFS export doesn't include the node's IP (or its subnet). Fix on the NFS server:

# /etc/exports
/exports/mfcloud-vms  192.168.10.0/24(rw,no_root_squash,no_subtree_check)

exportfs -ar

Then Storage → row → Retry in the UI.

mount.nfs: Connection timed out

Firewall is blocking 2049/tcp or 111/tcp+udp between the node and the NFS server. Open them on both sides:

# On the NFS server
firewall-cmd --add-service=nfs --permanent
firewall-cmd --add-service=rpc-bind --permanent
firewall-cmd --add-service=mountd  --permanent
firewall-cmd --reload

# On each compute node
firewall-cmd --add-port=2049/tcp --permanent
firewall-cmd --add-port=111/tcp  --permanent
firewall-cmd --add-port=111/udp  --permanent
firewall-cmd --reload

umount: target is busy on Remove

A VM still has its disk on the datastore. The removal flow refuses to forcibly umount a busy mountpoint to avoid corrupting in-flight writes. Identify and migrate / delete the offending VMs:

lsof +D /mnt/<name> 2>/dev/null | head
virsh list --all | grep -E '<vm names from lsof>'

Pool name collision

409: pool name '<name>' is reserved or already exists

Reserved names are default, images, iso. Pick something tenant-specific (tenant-acme-nfs). If it's a stale registration, virsh pool-list --all will show it; clean up with virsh pool-undefine <name> on every node.

/etc/fstab got duplicated

If you tried adding the same datastore twice with different names, you may see duplicate lines in /etc/fstab. The provisioner dedup's on the mountpoint (column 2) via awk, so old removals targeting a different mountpoint stayed put. Fix:

awk '!seen[$2]++' /etc/fstab > /etc/fstab.new && mv /etc/fstab.new /etc/fstab

After fixing

Removing and re-adding the datastore is the most reliable way to re-run the idempotent install script. The provisioner is safe to run multiple times — it'll only add what's missing.

See also