NFS Export

In order to serve files via NFS, configure a BeeGFS client host to be a NFS server and re-export the BeeGFS client mount-point via NFS. On the NFS server system, set the following option in the beegfs-client.conf to ensure that file attributes are also refreshed on the additional code paths the NFS server:

tuneRefreshOnGetAttr = true

Example NFSv4 export for kernel NFS server in file /etc/exports:

/mnt/beegfs    *(rw,async,fsid=0,crossmnt,no_subtree_check,no_root_squash)

Example NFSv4 mount:

$ mount -t nfs -overs=4 myserver:/ /mnt/beegfs_via_nfs/

Before starting the kernel NFS server and mounting the NFS client, disable NFSv4 file leases to ensure that NFS does not keep files open after they have actually been closed by the application:

$ sysctl -w fs.leases-enable=0

To have NFSv4 file leases also persistently disabled after a server reboot, add the following line to /etc/sysctl.conf:

fs.leases-enable = 0

Make sure to start the NFS server after the BeeGFS client. If you are using systemd, add this file to /etc/systemd/system/multi-user.target.wants/beegfs-client.service:

Before=nfs-server.service

Then tell systenmd to reload the service files:

systemctl daemon-reload

Important Notes

Note

Kernel NFSv3 is not supported!

NFS clients exchange cookies with the servers for identifying files when they are no longer on the server cache. The maximum size of such cookies in NFSv3 is too small for encoding BeeGFS entry lookup information. In NFSv4, the maximum cookie size was raised, enabling BeeGFS to use NFS cookies. Although kernel NFSv3 exports might sometimes work in your system, eventually, they are very likely to fail as soon as cookies are used (i.e., when the NFS server starts dropping entries from its cache and the cookie information is needed for lookups). So, make sure that you use kernel NFS version 4.

It is a good idea to restrict the NFS protocol versions used in your system, as explained in the section A4 of the NFS documentation. The best way to do that is to add the definition RPCMOUNTDOPTS="--no-nfs-version 3" to the file /etc/sysconfig/nfs, which is read by the script /etc/rc.d/init.d/nfs.

Beware that disabling NFSv3 in the server configuration and even restarting the NFS server machine may not be enough for enforcing NFSv4 in your network, because NFS stores allowed connections and sessions on disk. So, when the NFS server is restarted, the allowed connections are loaded from disk and thus, old NFS clients could still be allowed to reconnect via NFSv3. Only after all NFS clients are restarted, NFSv4 will really be used by all parts.