Setup an NFSv4 Server

Installation

I’m using Rocky Linux:

dnf install nfs-utils -y

Disable NFS Versions 2/3 and RPC Services

Inside etc/nfs.conf, look for[nfsd] and comment/uncomment the following lines:

 vers2=n
 vers3=n
 vers4=y
 vers4.0=y
 vers4.1=y
 vers4.2=y

Disable RPC Services:

[root@rockylinux ~]# systemctl mask --now rpc-statd.service rpcbind.service rpcbind.socket
Created symlink /etc/systemd/system/rpc-statd.service → /dev/null.
Created symlink /etc/systemd/system/rpcbind.service → /dev/null.
Created symlink /etc/systemd/system/rpcbind.socket → /dev/null.

Start and Enable NFS

systemctl enable --now nfs-server

Setup NFS Directory

$ mkdir /srv/nfsdata

$ chown -R nobody:nobody /srv/nfsdata

$ echo "test -> nfs" > /srv/nfsdata/test.txt

Define NFS Shares

With read-write enabled:

[root@rockylinux srv]# cat /etc/exports
/srv/nfsdata 192.168.100.0/24(rw)

Show exports

All the options except rw are enabled by default:

[root@rockylinux ~]# exportfs -v
/srv/nfsdata  	192.168.100.0/24(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)

Open ports

Only rpc.mountd and nfs are required to be running for Version 4. NFSv4 runs on TCP port 2049:

[root@rockylinux ~]# firewall-cmd --add-service={nfs,mountd} --permanent
success
[root@rockylinux ~]# firewall-cmd --reload
success

Mount on Client

On Linux:

root@debianlab:~# mount.nfs -o vers=4 192.168.100.132:/srv/nfsdata /mnt/nfstest/
root@debianlab:~#
root@debianlab:~#
root@debianlab:~# ls /mnt/nfstest/
test.txt
root@debianlab:~# cat /mnt/nfstest/test.txt
nfs is working

On macOS:

sudo mount_nfs -o resvport -o vers=4 192.168.100.132:/srv/nfsdata Downloads/nfstest

Configure Automount in fstab

Creating an entry in /etc/fstab:

192.168.100.132:/srv/nfsdata /mnt/nfstest           nfs     rw,soft         0 0

Note: You can’t mount an NFS share as read-write if it was defined as read-only on the NFS server. If you are unable to mount it, do verify your mount options.

Show NFS Mount on client

The commands listed will only show NFS shares mounted on your system:

$ mount | grep nfs
$ nfsstats --mounts
$ cat /proc/mounts | grep nfs

With NFSv4 you’ll not be able to view an NFS server’s shares(rpcbind is required).

Unmount nfs share from client

Run umount [host]:[nfs_share] and modify /etc/fstab:

umount 192.168.100.132:/srv/nfsdata