RSS Feed

Mount NFS from server to client

Many projects I tend to work on require mounting of directories over a network in order to propagate static data in a load balanced, redundant environment. This howto details how to configure an NFS server and mount a directory on a client.


NFS server (192.168.1.11):
Configuring a server to act as an NFS server is simple. First update your repositories:

sudo apt-get update

Then install the required services for the NFS service to function correctly:

sudo apt-get install nfs-kernel-server nfs-common portmap

Once installed, configure portmap. It’s important that you select “No” when specifying if you should bind portmap to the loopback (127.0.0.1) address.

sudo dpkg-reconfigure portmap

Reconfiguring portmap should re-start the service for you, however if it doesn’t, do so yourself:

sudo /etc /init.d/portmap restart


Setup the directory you would like to share on the server (192.168.1.11)
First, as root, open the /etc /exports file and add an entry to the directory you would like mountable on the client server(s).

sudo vi /etc /exports

Adding an entry is pretty simple, the syntax is as follows:

/directory IP_ALLOWED_ACCESS(option,option)

Example:

/directory 192.168.1.10(rw,no_root_squash,async)

This example will give the machine with the IP of 192.168.1.10 read and write access to /directory. Options wise rw indicates read and write access, no_root_squash will result in root users reading/writing as the root user on the NFS server – only do this in a trusted environment.

Async usually improves performance as you can read and write at the same time, however, crashing of the server could result in data loss or corruption. For this reason I tend to select sync in a production environment.

Find below an example I would use in a production environment that needed to read and write to the directory mount:

/directory 192.168.1.10(rw,sync)

Once you have done editing /etc /exports you will need to re-sync the NFS mount list using the following command.

sudo exportfs -a

The -a option specifies to export all currently un-exported directories.

Note: If you do not supply no_subtree_check or subtree_check as an option you will get a warning stating that it will use no_subtree_check. To prevent this message appearing simply add no_subtree_check as an option.

Remember, any changes you make, rerun exportfs -a.


Setup the NFS client (192.168.1.10)
Like with the NFS server, update your repository data:

sudo apt-get update

And then install the required services:

sudo apt-get install nfs-common portmap

Now, before you can mount the export you have setup you will need to create a mount point.

sudo mkdir /mnt/server1

And now you can mount the directory on the command line:

sudo mount 192.168.1.11:/directory /mnt/server1

To make sure the NFS mount is mounted at boot add a mount line to /etc /fstab.

NFS_SERVER:/directory /MOUNT_POINT FILESYSTEM OPTION,OPTION…

Example:

192.168.1.11:/directory /mnt/server1 nfs rw,hard,intr

The hard options tells programs using a file via the NFS mount to stop and wait for the NFS server to come back online if connectivity is lost. Soft on the other hand tells the program to report an error as apposed to waiting for connectivity to return.

The intr option allows NFS requests to be interrupted if the hard option is specified and the NFS mount loses connectivity. Specifying hard without intr will result in not being able to terminate the program or service waiting on the NFS connectivity to return.

Note: To make sure the NFS mount is mounted after reboot simply unmount the NFS mount point:

sudo umount /mnt/server1

Then use mount -a to mount all unmounted devices specified in /etc /fstab (In this case it will be the NFS mount)

sudo mount -a

If the NFS mount is mounted it will do so upon booting of the server.

That’s it and yes, it is that simple.

Posted in Linux on the 22nd October 2010

SPEAK YOUR MIND...

Your email address will not be published. Required fields are marked *

*