NFS TroubleShooting
This article will help you to understand some of the basic troubleshooting instructions for NFS problems …
# 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:
*The UDP transport is not supported in NFSv4, as it does not contain the required congestion control methods
#/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”
# 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
# showmount -e
Note: that NFSv4 does not use mountd. If mountd is not running, showmount will not work.
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
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
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
# 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:
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.
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.
Comments
Post a Comment