NFS TroubleShooting

This article will help you to understand some of the basic troubleshooting instructions for NFS problems …

1. Determine the NFS version:

To determine what version and transport of NFS is currently available, run rpcinfo on the NFS server.

# rpcinfo -p | grep 100003
100003 2 udp 0.0.0.0.8.1 nfs superuser
100003 3 udp 0.0.0.0.8.1 nfs superuser
100003 2 tcp 0.0.0.0.8.1 nfs superuser
100003 3 tcp 0.0.0.0.8.1 nfs superuser
he second column above is the NFS version, the third column is the transport protocol.
Sun has implemented the following versions of NFS on it’s operating systems, for both client and server:

OS Version NFSv2 NFSv3 NFSv4
SunOS UDP    
Solaris[TM] 2.4 and below UDP    
Solaris[TM] 2.5,2.6,7,8,9 UDP and/or TCP UDP and/or TCP  
Solaris[TM] 10 UDP and/or TCP UDP and/or TCP TCP*

*The UDP transport is not supported in NFSv4, as it does not contain the required congestion control methods

2.  Check the Connectivity for NFS Server from NFS client:

1.   Check that the NFS server is reachable from the client by running:
#/usr/sbin/ping
2.   If the server is not reachable from the client, make sure that the local name service is running. For NIS+ clients:
#/usr/lib/nis/nisping -u
3.   If the name service is running, make sure that the client has received the correct host information -
# /usr/bin/getent hosts
4.   If the host information is correct, but the server is not reachable from the client, run the ping command from another client.
5.   If the server is reachable from the second client, use ping to check connectivity of the first client to other systems on the local network. If this fails, check the networking configuration on the client. Check the following files:
/etc/hosts, /etc/netmasks, /etc/nsswitch.conf,
/etc/nodename, /etc/net/*/hosts etc.
6.   If the software is correct, check the networking hardware.
Additionally you can refer the “NFS Hard mounts vs Soft Mounts”

3.  From the Server, Verify Service Daemons are running

a) confirm S10 smf  network nfs server services are online:
# svcs -a |grep nfs
b) statd ,  lockd , mountd and nfsd processes should be running:
# ps -elf |grep nfs
c) compare the times when nfsd and mountd started  with the time
when rpcbind was started. The rpcbind MUST have started before the  NFS Daemons.
d) verify that the NFS programs have been registered with rpcbind:
# rpcinfo -s
to confirm specific RPC service use the following commands:
# rpcinfo -t 100003
# rpcinfo -t 100005
# rpcinfo -t 100021
e) logging may be enabled (not for NFSv4).
On the client:
a) confirm S10 smf  network nfs client services are online:
# svcs -a |grep nfs
b)  statd ,  lockd  should be running
# ps -elf |grep nfs
c) You can verify the server is working from the client side.
# rpcinfo -s |egrep ?nfs|mountd|lock?
# rpcinfo -u 100003
# rpcinfo -u 100005
# rpcinfo -u 100021

4. Confirm proper syntax of  dfstab share entries on NFS server.

Solaris OS defines shared (or exported) filesystems in the /etc/dfs/dfstab  file.  The standard syntax of lines in that file is:
share [-F fstype] [ -o options] [-d ""] [resource]
For example, the following /etc/dfs/dfstab file is for a server that makes available the filesystems /usr, /var/spool/mail and /home:
share -F nfs /usr
share -F nfs /var/spool/mail
share -F nfs /home
You can add normal mount options to these lines, such as ro, rw and root.  This is done by proceeding the options with a -o flag.  The following example shows our /etc/dfs/dfstab file, with all filesystems shared read only:
share -F nfs -o ro /usr
share -F nfs -o ro /var/spool/mail
share -F nfs -o ro /home
To add new shares to existing ones, simply run the shareallcommand:
# shareall
This will share ALL filesystems available in the /etc/dfs/dfstab file. If you have never shared filesystems from this machine before, you
must run the nfs.server script:
# /etc/init.d/nfs.server start
This will run the shareall(1M) command and start the nfs daemons, mountd(1M), and nfsd. The “nfs.server start” procedure is also run on bootup, when the system enters run level 3.

5. Confirm file system is shared as seen on both ends.

The NFS server is the system that will share a file system. The ?showmount-e? or ?dfshares? command will display what  is being shared.  From the client use command with nfs server name.
# showmount -e
Note: that NFSv4 does not use mountd. If mountd is not running,  showmount will not work.

6. Verify mount point exists and is in use

To display statistics for each NFS mounted file system, use the command ?nfsstat -m?. This command will also tell you which options were used when the file system was mounted. You can also check the contents of the /etc/mnttab. It should show what is currently mounted. Lastly, check the dates between the server and the client. An incorrect date may show the file created in the future causing confusion

Comments

Popular posts from this blog

BMCs and the IPMI Protocol

Logical Domains Reference Manual

Understanding How ZFS Calculates Used Space