NFS is the easiest way to give a Proxmox host shared storage. Point a node at an export on your NAS or a Linux file server and you’ve got somewhere to keep ISOs, store backups, or run VM disks that any node in a cluster can reach. Proxmox speaks NFS natively, so there’s no extra software to install on the host.
This guide does both halves of the job: setting up the export on the server side, then adding it to Proxmox under Datacenter → Storage and choosing what content it holds. It finishes with the mount problems that trip people up, because an NFS share that won’t come online is the single most common issue here.
The steps target Proxmox VE 8.x and a Linux NFS server. If your storage is a commercial NAS (Synology, QNAP, TrueNAS), the Proxmox side is identical — you’ll just enable NFS in the appliance’s web interface instead of editing a file.
Before you start
A few things have to line up before the share will mount cleanly.
Before you start
- An NFS server reachable from the Proxmox node over the network
- The export path on the server, e.g. /export/proxmox
- The Proxmox node's IP allowed in the server's export rules
- NFS service running on the server and the relevant ports open
- A decision on what the share is for: ISOs, backups, or VM disks
That last point shapes everything else. A share you’ll use as a backup target needs different content types and different permissions than one holding live VM disks. Decide the purpose first.
Step 1: Set up the NFS export on the server
On a Linux NFS server, exports live in /etc/exports. Each line is a path, the clients allowed to mount it, and a set of options. Create the directory and add an export for your Proxmox node:
# on the NFS server
sudo mkdir -p /export/proxmox
sudo chown nobody:nogroup /export/proxmox
# allow the Proxmox node (or subnet) to mount it
echo "/export/proxmox 192.168.1.0/24(rw,sync,no_subtree_check,no_root_squash)" \
| sudo tee -a /etc/exports
# apply the change
sudo exportfs -ra
A quick word on those options, because the wrong one causes real grief later:
Common NFS export options
| rw | Read-write access. Required — Proxmox needs to write disks, ISOs, and backups. |
|---|---|
| sync | Commit writes to disk before replying. Safer than async; async is faster but risks data loss on a crash. |
| no_subtree_check | Skips a check that can break renames on exported subdirectories. Recommended for most exports. |
| no_root_squash | Lets the client's root act as root on the share. Needed for VM disk images so Proxmox can set ownership; tightens security if you omit it. |
Confirm the export is visible before you go near Proxmox:
# from the server itself, or from the Proxmox node
showmount -e 192.168.1.10
If your export path doesn’t appear in that list, stop and fix the server. Proxmox can’t mount what the server won’t show.
Step 2: Add the NFS storage in Proxmox
With the export live, switch to the Proxmox web interface. Go to Datacenter → Storage → Add → NFS. Proxmox will probe the server and offer to autodetect the available exports.
NFS storage fields in Proxmox
| ID | A name for the storage in Proxmox, such as nas-nfs. Lowercase, no spaces. |
|---|---|
| Server | The NFS server's IP or hostname, e.g. 192.168.1.10. |
| Export | The export path. Click the dropdown to autodetect, or type /export/proxmox. |
| Content | What this share holds (see Step 3). |
| Nodes | Restrict to specific nodes, or leave on All for a cluster-wide share. |
When you pick the Server field and tab out, Proxmox queries the server and the Export dropdown fills with whatever the server is exporting. If that dropdown is empty, the server isn’t exporting to this node — a sign to go back to Step 1.
Step 3: Choose the right content types
The Content setting decides what Proxmox will let you store on the share. Each type Proxmox uses gets its own subfolder, so a single share can hold several kinds of data without you organizing it manually.
NFS content types and what they store
| ISO image | Installer ISOs you attach to VMs. Stored under template/iso. |
|---|---|
| Container template | LXC templates for spinning up containers. Stored under template/cache. |
| VZDump backup file | vzdump backup archives. Stored under dump. The usual reason to put NFS on a node. |
| Disk image | Live VM disks as qcow2 files under images. Network speed decides if this is usable. |
| Container | Root filesystems for LXC containers. |
For most setups, NFS earns its place as an ISO + backup share: enable ISO image, Container template, and VZDump backup file, and keep VM disks on faster local storage. That gives every node one place to grab installers and drop backups.
If you do want VM disks on NFS, enable Disk image and Container. Because the disks are qcow2, snapshots work — but throughput is bounded by your network. On gigabit Ethernet with spinning disks, a busy VM will feel sluggish. NFS for live disks pays off on 10GbE or with an all-SSD NAS.
Step 4: Confirm it’s working
Once added, the storage appears in the left-hand tree under each node it’s assigned to. A healthy NFS storage shows usage figures; an inactive one shows a grey/question-mark icon and won’t expand.
Verify from the shell on the node:
# is Proxmox mounting it? look for the export in the list
mount | grep nfs
# Proxmox's own view of every storage and whether it's active
pvesm status
A line in pvesm status with status active and real numbers means you’re done. Upload an ISO or run a test backup to it and you’ve confirmed the round trip.
Troubleshooting a share that won’t mount
This is where NFS storage usually goes sideways. Work through it in order, because the fix is almost always on the server side, not in Proxmox.
The export doesn’t list. Run showmount -e your-nfs-server from the node. If your path isn’t there, the server isn’t exporting to this client. Check /etc/exports for the node’s IP or subnet and re-run sudo exportfs -ra.
The export lists but Proxmox shows it inactive. This is usually a firewall or a permissions mismatch. Confirm the node’s IP is inside the CIDR you exported to, and that the firewall allows NFS between them:
# check the NFS-related services are reachable on the server
rpcinfo -p 192.168.1.10
It mounts, then drops out intermittently. Often an NFS version mismatch with an older NAS. Pin the version when you add the storage, or edit /etc/pve/storage.cfg:
nfs: nas-nfs
server 192.168.1.10
export /export/proxmox
content iso,backup
options vers=4
Swap vers=4 for vers=3 if your appliance is happier on NFSv3. After editing the config, the change takes effect on the next mount.
Permission denied writing backups or disks. The export is mounted but read-only or squashing root. Confirm rw is in the export options, and for VM disk shares confirm no_root_squash. Re-export with sudo exportfs -ra after any change.
Wrapping up
Setting up NFS for Proxmox is two jobs that meet in the middle: get the export right on the server (path, allowed clients, rw, the squash option that fits the use), then add it under Datacenter → Storage and pick the content types that match. For ISOs and backups it’s nearly foolproof; for live VM disks, test your network throughput first.
If you’re planning a backup strategy around this share, pair it with the vzdump backup and restore guide, or step up to a deduplicated target with Proxmox Backup Server. And if you’re still choosing how to lay out local storage on the host itself, the LVM vs LVM-Thin vs ZFS comparison is the companion piece. For more walkthroughs, browse the Proxmox guides.