How to Setup Standard Linux FS & Configure NFSv4 Server

To Set up Standard Linux File Systems and Configure NFSv4 Server

In this article we are going to discuss how to set up Standard Linux File Systems and configure NFSv4 Server. NFS Server will provides a service to share files over a network to Linux Clients.

Before going to configure NFS server, just make sure the NFS server is up and running.

Do the following process once the NFS server is set,

&rarr To configure NFS server to share a local directory over a network.
&rarr Automatically Mount those network shares in clients, either via the /etc/fstab file or autofs.


Server and Client Configuration

Before going to configure NFS server note the IP for Server and Client that we are going to use here,

Server IP : 192.168.5.88
Clinet IP : 192.168.5.89


To install package for NFS

To set up NFS server we need to install the NFS server package. The package may differ depending upon your linux distribution. For RedHat based distributions, run the below command to install the NFS packages.

[root@linuxhelp ~]# yum install nfs* -y
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
Resolving Dependencies
There are unfinished transactions remaining. You might consider running yum-complete-transaction, or " yum-complete-transaction --cleanup-only"  and " yum history redo last" , first to finish them. If those don' t work you' ll have to try removing/installing packages by hand (maybe package-cleanup can help).
-->  Running transaction check
--->  Package nfs-utils.x86_64 1:1.3.0-0.el7 will be installed
--->  Package nfs4-acl-tools.x86_64 0:0.3.3-13.el7 will be installed
--->  Package nfsometer.noarch 0:1.7-0.el7 will be installed
--->  Package nfstest.noarch 0:1.0.2-2.el7 will be installed
.
.
.                                                                                              2/4
  Verifying  : nfs4-acl-tools-0.3.3-13.el7.x86_64                                                                                       3/4
  Verifying  : nfsometer-1.7-0.el7.noarch                                                                                               4/4

Installed:
  nfs-utils.x86_64 1:1.3.0-0.el7    nfs4-acl-tools.x86_64 0:0.3.3-13.el7    nfsometer.noarch 0:1.7-0.el7    nfstest.noarch 0:1.0.2-2.el7   

Complete!

Now the installation is successfully completed.


To Export NFS Network Shares

The /etc/exports file is used for exporting the NFS share to remote hosts. Mention the absolute path for the exporting NFS share to our clients with client IP address or hostname with permissions. We are going to share the /nfsshare directory, so its ownership permission should be set to nfsnobody to make our shares writable for our clients.

[root@linuxhelp ~]# ls -l /
total 32
lrwxrwxrwx.   1 root root    7 Apr 26  2016 bin ->  usr/bin
dr-xr-xr-x.   4 root root 4096 Apr 26 14:33 boot
drwxr-xr-x.  19 root root 3260 Apr 26 14:33 dev
drwxr-xr-x. 128 root root 8192 Apr 26 16:46 etc
drwxr-xr-x.   3 root root   18 Apr 26  2016 home
lrwxrwxrwx.   1 root root    7 Apr 26  2016 lib ->  usr/lib
lrwxrwxrwx.   1 root root    9 Apr 26  2016 lib64 ->  usr/lib64
drwxr-xr-x.   2 root root    6 Jun 10  2014 media
drwxr-xr-x.   2 root root    6 Jun 10  2014 mnt
drwxr-xr-x.   2 root root    6 Apr 26 16:48 nfsshare
drwxr-xr-x.   3 root root   15 Apr 26  2016 opt
dr-xr-xr-x. 290 root root    0 Apr 26  2016 proc
dr-xr-x---.  16 root root 4096 Apr 26 16:12 root
drwxr-xr-x.  37 root root 1180 Apr 26 16:46 run
lrwxrwxrwx.   1 root root    8 Apr 26  2016 sbin ->  usr/sbin
drwxr-xr-x.   2 root root    6 Jun 10  2014 srv
dr-xr-xr-x.  13 root root    0 Apr 26  2016 sys
drwxrwxrwt.  18 root root 4096 Apr 26 16:47 tmp
drwxr-xr-x.  13 root root 4096 Apr 26  2016 usr
drwxr-xr-x.  22 root root 4096 Apr 26  2016 var
[root@linuxhelp ~]# chown nfsnobody: /nfsshare/
[root@linuxhelp ~]# ls -l /
total 32
lrwxrwxrwx.   1 root      root         7 Apr 26  2016 bin ->  usr/bin
dr-xr-xr-x.   4 root      root      4096 Apr 26 14:33 boot
drwxr-xr-x.  19 root      root      3260 Apr 26 14:33 dev
drwxr-xr-x. 128 root      root      8192 Apr 26 16:46 etc
drwxr-xr-x.   3 root      root        18 Apr 26  2016 home
lrwxrwxrwx.   1 root      root         7 Apr 26  2016 lib ->  usr/lib
lrwxrwxrwx.   1 root      root         9 Apr 26  2016 lib64 ->  usr/lib64
drwxr-xr-x.   2 root      root         6 Jun 10  2014 media
drwxr-xr-x.   2 root      root         6 Jun 10  2014 mnt
drwxr-xr-x.   2 nfsnobody nfsnobody    6 Apr 26 16:48 nfsshare
drwxr-xr-x.   3 root      root        15 Apr 26  2016 opt
dr-xr-xr-x. 290 root      root         0 Apr 26  2016 proc
dr-xr-x---.  16 root      root      4096 Apr 26 16:12 root
drwxr-xr-x.  37 root      root      1180 Apr 26 16:46 run
lrwxrwxrwx.   1 root      root         8 Apr 26  2016 sbin ->  usr/sbin
drwxr-xr-x.   2 root      root         6 Jun 10  2014 srv
dr-xr-xr-x.  13 root      root         0 Apr 26  2016 sys
drwxrwxrwt.  18 root      root      4096 Apr 26 16:58 tmp
drwxr-xr-x.  13 root      root      4096 Apr 26  2016 usr
drwxr-xr-x.  22 root      root      4096 Apr 26  2016 var
[root@linuxhelp ~]# vim /etc/exports
/nfsshare    192.168.5.89(rw,sync,no_root_squash,no_subtree_check)

After exporting the share we need to reload and update the exports share to our kernel. To do that run the below commands. To view the exports share use showmount or exportfs command.

[root@linuxhelp ~]# exportfs -r
[root@linuxhelp ~]# exportfs -a
[root@linuxhelp ~]# exportfs -s
/nfsshare  192.168.5.89(rw,wdelay,root_squash,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)

A list of most-frequent options used while exporting the NFS share:

1. ro : read-only, Remote clients can mount the exported file with read permissions only.
2. rw : read-write, it allows remote hosts to make write changes in the exported file.
3. root_squash : prevents remote root users from privileges in the server and allots them the user ID. If you like to " squash" all then use the option all_squash.
4. wdelay : write delay, NFS server delays committing changes to disk if it guess another related write request is imminent.
5. subtree_check : option verifies that a requested file is located in that exported subdirectoryif not disabling this option with no_subtree_check will fast up transfers. 8. fsid=0 | root denotes that the specified file is the root of multiple exported directories.
6. anonuid / anongid : is explicitly sets the UID and GID.
7. sync : represents the server replies to requests after changes have been committed to the hard disk.


To Open Firewall for NFS shares

Now its time to open our firewall for NFS server to allow our clients to view and mount our exports share. By opening the firewall for rpc-bind service, our clients will be able to view the available share by showmount command and mountd is a daemon for remotely mount our share to clients.

[root@linuxhelp ~]# firewall-cmd --permanent --add-service=nfs
success
[root@linuxhelp ~]# firewall-cmd --permanent --add-service=rpc-bind
success
[root@linuxhelp ~]# firewall-cmd --permanent --add-service=mountd
success
[root@linuxhelp ~]# firewall-cmd --reload
success


To restart the NFS service

After exporting and opening the firewall, We need to start and enable the nfs services by executing the below command.

[root@linuxhelp ~]# systemctl start nfs-server
[root@linuxhelp ~]# systemctl enable nfs-server
ln -s ' /usr/lib/systemd/system/nfs-server.service'  ' /etc/systemd/system/nfs.target.wants/nfs-server.service' 
[root@linuxhelp ~]# systemctl status nfs-server
nfs-server.service - NFS Server
   Loaded: loaded (/usr/lib/systemd/system/nfs-server.service  enabled)
   Active: active (exited) since Tue 2016-04-26 17:06:58 IST  23s ago
 Main PID: 42483 (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/nfs-server.service

Apr 26 17:06:58 linuxhelp systemd[1]: Starting NFS Server...
Apr 26 17:06:58 linuxhelp systemd[1]: Started NFS Server.


Mounting the NFS share to Clients

Now it’ s time to mount the NFS share in our client machine. To view the available shares use showmount command. To mount the share permanently create an entry in /etc/fstab file and run mount -a to mount all entries in fstab, as follows.

[root@linuxhelp ~]# showmount -e 192.168.5.88
Export list for 192.168.5.88:
/nfsshare 192.168.5.89
[root@linuxhelp ~]# vim /etc/fstab

192.168.5.88:/nfsshare    /mnt       nfs    defaults   0 0
[root@linuxhelp ~]# mount -a
[root@linuxhelp ~]# df -h
Filesystem              Size  Used Avail Use% Mounted on
/dev/sda3                18G  3.3G   15G  19% /
devtmpfs                486M     0  486M   0% /dev
tmpfs                   494M  140K  494M   1% /dev/shm
tmpfs                   494M  7.1M  487M   2% /run
tmpfs                   494M     0  494M   0% /sys/fs/cgroup
/dev/sda1               497M  116M  382M  24% /boot
/dev/sr0                3.9G  3.9G     0 100% /run/media/root/CentOS 7 x86_64
192.168.5.88:/nfsshare   18G  3.5G   15G  20% /mnt

After mounting the share locally move to that mount path and try to create some file to check write permissions is applied or not.

[root@linuxhelp ~]# cd /mnt
[root@linuxhelp mnt]# ls
[root@linuxhelp mnt]# touch file1
[root@linuxhelp mnt]# ls
file1


To Automount the share using Autofs

Autofs is used for automatically mounting and unmounting the shares. Autofs automounts the share when the share is not accessible or available at system boot time. To configure autofs service install the autofs package shown below.

[root@linuxhelp ~]# yum install autofs -y
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: centos.excellmedia.net
 * extras: centos.excellmedia.net
 * updates: centos.excellmedia.net
Resolving Dependencies
-->  Running transaction check
--->  Package autofs.x86_64 1:5.0.7-54.el7 will be installed
.
.
Running transaction
  Installing : 1:autofs-5.0.7-54.el7.x86_64                                                                                             1/1
  Verifying  : 1:autofs-5.0.7-54.el7.x86_64                                                                                             1/1

Installed:
  autofs.x86_64 1:5.0.7-54.el7         


To edit auto.master and auto.misc files

After installing autofs package we need to edit the two files auto.master and auto.misc located under the /etc directory as follows. In auto.misc file, mention any name for your share.

[root@linuxhelp ~]# vim /etc/auto.master
/mnt        /etc/auto.misc        --timeout=60
[root@linuxhelp ~]# vim /etc/auto.misc
Share    --rw,sync    192.168.5.88:/nfsshare


To start autofs service

After creating entry in auto.master and auto.misc files just start and enable the autofs service by running the below command.

[root@linuxhelp ~]# systemctl start autofs
[root@linuxhelp ~]# systemctl enable autofs
ln -s ' /usr/lib/systemd/system/autofs.service'  ' /etc/systemd/system/multi-user.target.wants/autofs.service' 
[root@linuxhelp ~]# systemctl status autofs
autofs.service - Automounts filesystems on demand
   Loaded: loaded (/usr/lib/systemd/system/autofs.service  enabled)
   Active: active (running) since Tue 2016-04-26 17:30:22 IST  20s ago
 Main PID: 41682 (automount)
   CGroup: /system.slice/autofs.service
           ??41682 /usr/sbin/automount --pid-file /run/autofs.pid

Apr 26 17:30:22 linuxhelp systemd[1]: Starting Automounts filesystems on demand...
Apr 26 17:30:22 linuxhelp systemd[1]: Started Automounts filesystems on demand.

After starting the autofs service, run the following command to view the mount points for your nfs share.

[root@linuxhelp ~]# mount | grep share
192.168.5.88:/nfsshare on /mnt type nfs4 (rw,relatime,vers=4.0,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.5.89,local_lock=none,addr=192.168.5.88)
[root@linuxhelp ~]# ls -l /mnt
total 0
drwxr-xr-x. 2 nfsnobody nfsnobody 18 Apr 26 17:21 share
[root@linuxhelp ~]# ls -l /mnt/share
total 0
-rw-r--r--. 1 nfsnobody nfsnobody 0 Apr 26 17:21 file1

As you can see a new directory will be created in the name of our share name (share) under our mount point /mnt

Tag : NFS
FAQ
Q
Does the Bareos VMware Backup Plugin work on NFS datastore?
A
Currently, the Bareos VMware Backup Plugin does not work on NFS datastores. It will fail with an error message similar to.
Q
What is NFS Datastore in VMware?
A
ESXi can access a designated NFS volume located on a NAS server, mount the volume, and use it for its storage needs. You can use NFS volumes to store and boot virtual machines in the same way that you use VMFS datastores.
Q
Can I run NFS across the TCP/IP Transport Protocol?
A
Client support for NFS over TCP is integrated into all 2.4 and later kernels.



Server support for TCP appears in 2.4.19 and later 2.4 kernels, and in 2.6 and later kernels. Not all 2.4-based
Q
How to restrict the folder!! please help me?
A
you can restrict any folder using chattr
Q
I can’t find nfs-utils-lib using yum.
A
Try "nfs-utils"