Introduction
Network File System (NFS) is a file system that allows local access to remote files from multiple locations within a network. For this access, NFS utilizes standard client/server architecture, supporting sharing between Linux machines, regardless of their distribution.
In this tutorial, you will learn how to install and configure the NFS server and clients on Ubuntu.
Prerequisites
- Two or more Ubuntu machines
- Access to the command line/terminal
- Sudo privileges on all machines
Note: Once you are done with this tutorial, you can also visit our tutorial on NFS Docker Volumes to learn how to create and use them.
Set Up the NFS Host Side
The steps of this tutorial cover the NFS installation and setup on Ubuntu and other Debian based distributions. Other Linux distributions, such as Fedora and CentOS/RHEL, feature slightly different command syntax. However, the process follows the same pattern.
Install NFS Kernel Server
Start setting up NFS by choosing a host machine.
Next, update the package repository:
sudo apt update
Then, install the NFS kernel server on the machine you chose with the following command:
sudo apt install nfs-kernel-server
Type “y” and press ENTER to start the installation.
Configure Shared Directory
On the host machine, create a directory you want to share with the client system. Choose any name you want.
sudo mkdir -p /mnt/nfsdir
Change the owner user and group to nobody and nogroup. This setting makes the folder public:
sudo chown nobody:nogroup /mnt/nfsdir
Set permissions to 777, so everyone can read, write, and execute files in this folder:
sudo chmod 777 /mnt/nfsdir
Edit NFS Export File to Grant Server Access to Clients
Permission to access the host server machine is granted in the exports file located in /etc directory. Open the file with a text editor of your choice, this tutorial uses Vi:
sudo vi /etc/exports
For each client you want to grant access to, add this line to the file:
/mnt/nfsdir clientIP(rw,sync,no_subtree_check)
Exit the file and save the changes
Tip: If you need to add more clients within the same subnet, type:
/mnt/nfsdir subnetIP/24(rw,sync,no_subtree_check)
The options in the brackets have the following functions:
- “rw” option provides clients with read and write access to directories on the server.
- “sync” forces NFS to write changes before responding to the client. This option ensures the state of the host is accurately presented to clients.
- “no_subtree_check” disables subtree checking. The subtree process may cause problems when users rename files.
Export Shared Directory
After you make the necessary edits in /etc/exports, use the exportfs
command to export all shared directories you registered in that file:
sudo exportfs -a
Next, restart the NFS Kernel Server to apply the changes to configuration:
sudo systemctl restart nfs-kernel-server
If you use UFW, you need to allow clients to access the server:
sudo ufw allow from [clientIP or clientSubnetIP] to any port nfs
The output confirms the addition of the IP address:
To make sure you successfully completed the operation, type:
sudo ufw status
Search the output for the IP address you added:
Setting up the NFS Client Side
Perform the following steps on all the computers you wish to set up as clients for sharing.
Install NFS Common
To enable NFS on client machines, install the NFS common package:
sudo apt update
sudo apt install nfs-common
Type “y” and press ENTER to start the installation.
Set up a Mount Point
The client machine needs a mount point for the shared directory exported by the server.
Create a directory by typing:
sudo mkdir -p /mnt/nfsdir_client
To mount the shared directory on the mount point, use the following command:
sudo mount host_IP:/mnt/nfsdir /mnt/nfsdir_client
Use the df -h
command to check if you mounted the folder successfully:
When you do not need the shared folder anymore, unmount it by typing:
sudo umount /mnt/nfsdir_client
Note: The correct command is umount
, not “unmount.”
Mount NFS Shared Directories on OS Boot
If you want the folders to stay mounted even after you restart the machine, you will need to add them to the /etc/fstab file.
To edit the /etc/fstab file, enter:
sudo vim /etc/fstab
Copy the following line to the bottom of the file, replacing “host_IP” with the actual IP address of the host:
host_IP:/mnt/nfsdir /mnt/nsfdir_client nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
Add this line for every folder you need. This way, all folders on the list will be mounted automatically on every boot.
Bare Metal Cloud Network File Storage
Conclusion
NFS is often the best solution for remote access to data. It is easy to set up and performs well, especially in scenarios that involve smaller networks.
After reading this article, you should be able to set up an NFS network on your Ubuntu machines, both on the server and the client side.