Network File Sharing (NFS) is a protocol that allows you to share directories and files with other Linux clients over a network. Shared directories are typically created on a file server, running the NFS server component. Users add files to them, which are then shared with other users who have access to the folder.
An NFS file share is mounted on a client machine, making it available just like folders the user created locally. NFS is particularly useful when disk space is limited and you need to exchange public data between client computers.
This is part of our series of articles about Linux on Azure.
In this article, you will learn:
Let’s see how to set up an NFS server and create an NFS file share, which client machines can mount and access.
Related content: Build Your Own Enterprise NFS Service
Here is how to install the NFS Kernel—this is the server component that enables a machine to expose directories as NFS shares.
On Ubuntu and Debian:
sudo apt-get update
sudo apt install nfs-kernel-server
On CentOS and Fedora:
yum -y install nfs-utils
apt-get install nfs-kernel-server
We’ll now create the root directory of the NFS shares, this is also known as an export folder.
sudo mkdir /mnt/myshareddir
Set permissions so that any user on the client machine can access the folder (in the real world you need to consider if the folder needs more restrictive settings).
sudo chown nobody:nogroup /mnt/myshareddir #no-one is owner
sudo chmod 777 /mnt/myshareddir #everyone can modify files
To grant access to NFS clients, we’ll need to define an export file. The file is typically located at /etc/exports
Edit the /etc/exports file in a text editor, and add one of the following three directives.
All the directives below use the options rw, which enables both read and write, sync, which writes changes to disk before allowing users to access the modified file, and no_subtree_check, which means NFS doesn’t check if each subdirectory is accessible to the user.
To enable access to a single client |
/mnt/myshareddir {clientIP}(rw,sync,no_subtree_check) |
To enable access to several clients |
/mnt/myshareddir {clientIP-1}(rw,sync,no_subtree_check) {clientIP-2}(...) {clientIP-3}(...) |
To enable access to an entire subnet |
/mnt/myshareddir {subnetIP}/{subnetMask}(rw,sync,no_subtree_check) |
You can now make the shared directory available to clients using the exportfs command. After running this command, the NFS Kernel should be restarted.
sudo exportfs -a #making the file share available
sudo systemctl restart nfs-kernel-server #restarting the NFS kernel
If you have a firewall enabled, you’ll also need to open up firewall access using the sudo ufw allow command.
Now that we have set up the NFS server, let’s see how to share a folder, defined as an NFS share, with a Linux computer by mounting it on the local machine.
Here are the packages you need to install to enable mounting an NFS share on a local Linux machine.
On Ubuntu and Debian:
sudo apt update
sudo apt install nfs-common
On CentOS and Fedora:
sudo yum install nfs-utils
You can mount the NFS folder to a specific location on the local machine, known as a mount point, using the following commands.
sudo mkdir /var/locally-mounted
sudo mount -t nfs {IP of NFS server}:{folder path on server} /var/locally-mounted
For example:
sudo mount -t nfs 192.168.20.100:/myshareddir /var/locally-mounted
The mount point now becomes the root of the mounted file share, and under it you should find all the subdirectories stored in the NFS file share on the server.
Remote NFS directories can be automatically mounted when the local system is started. You can define this in the /etc/fstab file. In order to ensure an NFS file share is mounted locally on startup, you need to add a line to this file with the relevant file share details.
To automatically mount NFS shares on Linux, do the following:
sudo mkdir /var/locally-mounted
The last three parameters indicate NFS options (which we set to default), dumping of file system and filesystem check (these are typically not used so we set them to 0).
{IP of NFS server}:{folder path on server} /var/locally-mounted nfs defaults 0 0
mount /var/locally-mounted
mount {IP of NFS server}:{folder path on server}
Microsoft Azure, a popular public cloud service, lets you set up NFS file shares in the cloud and access them from machines in your local data center, or deployed in the Azure cloud.
Azure NetApp Files is a cloud service offering enterprise-class, high-performance file storage for enterprises. It supports NFS versions 3.1 and onwards.
Azure NetApp Files supports all types of production workloads and provides built-in high availability. You can choose the level and performance of the service, and perform instant snapshots of your data.
Leverage industry-leading NetApp technology to migrate the most demanding Linux and Windows file workloads to Azure. Azure NetApp Files delivers sub-millisecond latency and equivalent performance to what you would achieve with a local bare metal server.
Azure NetApp Files provides three performance levels: Standard, Premium, and Ultra. You can provision file shares in any of the tiers with one click.
Azure NetApp Files integrates with complex business workloads such as SAP HANA, high performance computing (HPC), line of business (LOB) applications, and virtual desktop infrastructure (VDI). For these and many more enterprise workloads, it offers integrated data management and application awareness for backups and snapshots.
You can manage file shares using Azure Portal or CLI, PowerShell commands, or a REST API, just like any other Azure service. Azure NetApp Files supports multiple storage protocols in one service, including NFSv3, SMB3.1.x, and NFSv4.1. This allows you to transition workloads to the cloud in a “lift and shift” model, without requiring code changes.
When migrating large enterprise workloads, rsync data transfer is not enough. With Azure NetApp Files you can manage large-scale data transfer and synchronization at ease.
The service provides FIPS 140-2-compliant data encryption, role-based access control (RBAC), Active Directory authentication, and access control lists (ACL). Azure NetApp Files complies with major industry certifications such as HIPAA, SOC and GDPR. These and other enterprise-grade features mean you can migrate any enterprise workload to the cloud with complete confidence.
Want to get started? See Azure NetApp Files for yourself with a free demo