HowTo configure NFS


From Linuxconfig.org

Jump to: navigation, search

The Network File System is certainly one of the most widely used network services. Network file system (NFS) is based on the Remote procedure call. It allows the client to automount and therefore, transparently access the remote file systems on the network.

Contents

Scenario

For this scenario we are going to export the file system from the linuxconfig.org (IP address 10.1.1.200) host and place it on linuxconfig.local(IP address 10.1.1.100).

Prerequisites

Here it is assumed that the NFS service daemon is already installed on your system, including portmap daemon on which NFS depends on. Moreover your system needs to support the NFS file system.

$ cat /proc/filesystems
Image:nfs01.jpg

NFS daemon should be listening on both the standard port 2049 and portmap on port 111.

Image:nfs02.jpg

Another way to check if NFS is functioning, is to use the rpcinfo command.

# rpcinfo -p

You should get a response/output similar to one below:

Image:nfs06.jpg

Server exports file

All NFS server exports need to be defined in /etc/exports file.

Most common exports options

Here are a couple of the most common export techniques and options:

/home/nfs/ 10.1.1.100(rw,sync) export /home/nfs directory for host with IP 10.1.1.100 with read, write permissions, and synchronized mode
/home/nfs/ 10.1.1.0/24(ro,sync) export /home/nfs directory for network 10.1.1.0 netmask 255.255.255.0 with read only permissions and synchronized mode
/home/nfs/ 10.1.1.100(rw,sync) 10.1.1.10(ro,sync) export /home/nfs directory for host with IP 10.1.1.100 with read, write permissions, synchronized mode, and also export /home/nfs directory for hosts with IP 10.1.1.10 with read only permissions and synchronized mode
/home/nfs/ 10.1.1.100(rw,sync,no_root_squash) export /home/nfs directory for host with IP 10.1.1.100 with read, write permissions, synchronized mode and the remote root user will not be treated as a root but as a default nfs user.
/home/nfs/ *(ro,sync) export /home/nfs directory for any host with a read only permission and synchronized mode
/home/nfs/ *.linuxconfig.org(ro,sync) export /home/nfs directory for any host within linuxconfig.org domain with a read only permission and synchronized mode
/home/nfs/ foobar(rw,sync) export /home/nfs directory for hostname foobar with read, write permissions and synchronized mode

Edit exports file

Open up you favorite text editor for example vim ( tutorial where you can learn how to use vi / vim text editor. ) and edit /etc/exports file and add line /home/nfs/ *(ro,sync) to export /home/nfs directory for any host with read only permissions.

Image:nfs03.jpg

Be sure that the directory you export by NFS exists. You can also create a file inside the /home/nfs directory which will help you troubleshoot once you mount this file system remotely.

# touch /home/nfs/test_file

Restart NFS daemon

Once you edit /etc/exports file you need to restart NFS daemon to apply changes in the /etc/exports file. Depending on your Linux distribution, the restarting of NFS may differ.

Debian users:

# /etc/init.d/nfs-kernel-server restart

Redhat users

# /etc/init.d/nfs restart

If you decide to add more NFS exports to the /etc/exports file you will need to either restart NFS daemon or run command exportfs:

# exportfs -ra

Mount remote file system on client

First we need to create a mount point:

# mkdir /home/nfs_local

If you are sure that the NFS client and mount point are ready, you can run the mount command to the mount exported NFS remote file system:

# mount 10.1.1.200:/home/nfs /home/nfs_local

In case that you need to specify type of filesystem you can do this:

# mount -t nfs 10.1.1.200:/home/nfs /home/nfs_local

You may get error message

mount: mount to NFS server failed: timed out (retrying).

This may mean that your server supports higher versions of nfs you need to pass tone extra argument to you nfs client. In this example we use nfs version 3:

# mount -t nfs -o nfsvers=3 10.1.1.200:/home/nfs /home/nfs_local
Image:nfs04.jpg

Now you should be able to see that the file system is mounted. Notice that the mount command reports that the file system is mounted as "read and write", although you can see that it provides a "read only" permission.

Configure automount

To make this completely transparent to end users, you can automount the NFS file system every time a user boots a PC, or you can also use PAM modules to mount once a user logs in with a proper username and password. In this situation just edit /etc/fstab to mount system automatically during a system boot. You can use your favorite editor and create new line:

10.1.1.200:/home/nfs /home/nfs_local/ nfs defaults 0 0

in /etc/fstab or

# echo "10.1.1.200:/home/nfs /home/nfs_local/ nfs defaults 0 0" >> /etc/fstab
Image:nfs05.jpg

Conclusion

The Network File System comes with tons of export options. What has been shown here, just barely scratches the surface of NFS. Please visit Linux NFS-HOWTO hosted by linux documentation project or NFS homepage for more details.

Other Topics

Personal tools