NFS allows you to share a directory with another server/client. It’s awesome.
This works great for VPC, or virtually connected servers, like Vultr Private Networking NFS.
In this tutorial we are connecting a CentOS 8 to an Ubuntu 18.04
I will show you how to do it both directions!
Note we are ALSO installing the client and server on BOTH. Kind of like a loop!
/mnt/share is the place we are going to read from
/opt/share is the place we are going share from
Add both server IP’s to the /etc/hosts on both machines. Use the internal IP’s if you are doing Private Networking.
# CentOS/RHEL 8 yum install epel-release -y yum install nfs-utils nfs4-acl-tools -y
# Ubuntu apt-get install nfs-kernel-server nfs-common -y
Then we need to have both of their IP’s on the hosts files.
# on both machines echo << EOF >> /etc/hosts 11.11.11.11 centos.guy 22.22.22.22 ubuntu.guy EOF
Now, have to pick one to share and which one to receive.
In this example I am sharing Ubuntu’s disk.
Then at the bottom I have another example of the opposite direction.
Share an Ubuntu 18.04 Drive via NFS
# Exporting server (Ubuntu 18.04) mkdir /opt/share chown nobody:nogroup /opt/share chmod 755 /opt/share cat << EOF >> /etc/exports /opt/share 22.22.22.22(rw,sync,no_subtree_check) EOF exportfs -r # open firewall to 11.11.11.11, or the IP that is going to read my drive ufw allow proto any from 11.11.11.11
CentOS will read it.
Read a CentOS 8 Drive via NFS
# Mounting server (CentOS 8) mkdir /mnt/share mount -t nfs 11.11.11.11:/opt/share /mnt/share
Share a CentOS 8 Drive via NFS
Doing the opposite (Share CentOS drive and read on Ubuntu)
# Exporting server (CentOS 8) mkdir /opt/share chown nobody:nobody /opt/share chmod 755 /opt/share cat << EOF >> /etc/exports /opt/share 11.11.11.11(rw,sync,no_subtree_check) EOF exportfs -r # open firewall to 22.22.22.22, or the IP that is going to read my drive firewall-cmd --zone=home --add-rich-rule='rule family="ipv4" source address="22.22.22.22" accept' firewall-cmd --permanent --add-service=nfs firewall-cmd --permanent --add-service=rpc-bind firewall-cmd --permanent --add-service=mountd firewall-cmd --reload # start the server systemctl enable --now nfs-server
Read an Ubuntu Drive via NFS
# Mounting server (Ubuntu 18.04) mkdir /mnt/share mount -t nfs 22.22.22.22:/opt/share /mnt/share
The only difference between the two sets of commands above are the following:
On CentOS you must chown the sharing folder as nobody:nobody
On Ubuntu you must chwon the sharing folder as nobody:nogroup
On CentOS you must run systemctl enable –now nfs-server
On Ubuntu you dont need to start the server
On CentOS 8, firewall-cmd is used to allow incoming connections.
On Ubuntu 18.04+, ufw is used to allow incoming connections.