Managing NFS and NIS, 2nd Edition - Mike Eisler [211]
%w
Reports the percentage of time that transactions are present in the wait queue ready to be processed. A large number for an NFS filesytem does not necessarily indicate a problem, given that there are multiple NFS async threads that perform the work.
%b
Reports the percentage of time that actv is non-zero (at least one request is being processsed). For NFS filesystems, it represents the activity level of the server mount point. 100% busy does not indicate a problem since the NFS server has multiple nfsd threads that can handle concurrent RPC requests. It simply indicates that the client has had requests continuously processed by the server during the measurement time.
snoop
Network analyzers are ultimately the most useful tools available when it comes to debugging NFS problems. The snoop network analyzer bundled with Solaris was introduced in Section 13.5. This section presents an example of how to use snoop to resolve NFS-related problems.
Consider the case where the NFS client rome attempts to access the contents of the filesystems exported by the server zeus through the /net automounter path:
rome% ls -la /net/zeus/export
total 5
dr-xr-xr-x 3 root root 3 Jul 31 22:51 .
dr-xr-xr-x 2 root root 2 Jul 31 22:40 ..
drwxr-xr-x 3 root other 512 Jul 28 16:48 eng
dr-xr-xr-x 1 root root 1 Jul 31 22:51 home
rome% ls /net/zeus/export/home
/net/zeus/export/home: Permission denied
The client is not able to open the contents of the directory /net/zeus/export/home, although the directory gives read and execute permissions to all users:
rome% df -k /net/zeus/export/home
filesystem kbytes used avail capacity Mounted on
-hosts 0 0 0 0% /net/zeus/export/home
The df command shows the -hosts automap mounted on the path of interest. This means that the NFS filesystem rome:/export/home has not yet been mounted. To investigate the problem further, snoop is invoked while the problematic ls command is rerun:
rome# snoop -i /tmp/snoop.cap rome zeus
1 0.00000 rome -> zeus PORTMAP C GETPORT prog=100003 (NFS) vers=3
proto=UDP
2 0.00314 zeus -> rome PORTMAP R GETPORT port=2049
3 0.00019 rome -> zeus NFS C NULL3
4 0.00110 zeus -> rome NFS R NULL3
5 0.00124 rome -> zeus PORTMAP C GETPORT prog=100005 (MOUNT) vers=1
proto=TCP
6 0.00283 zeus -> rome PORTMAP R GETPORT port=33168
7 0.00094 rome -> zeus TCP D=33168 S=49659 Syn Seq=1331963017 Len=0
Win=24820 Options= 8 0.00142 zeus -> rome TCP D=49659 S=33168 Syn Ack=1331963018 Seq=4025012052 Len=0 Win=24820 Options= 9 0.00003 rome -> zeus TCP D=33168 S=49659 Ack=4025012053 Seq=1331963018 Len=0 Win=24820 10 0.00024 rome -> zeus MOUNT1 C Get export list 11 0.00073 zeus -> rome TCP D=49659 S=33168 Ack=1331963062 Seq=4025012053 Len=0 Win=24776 12 0.00602 zeus -> rome MOUNT1 R Get export list 2 entries 13 0.00003 rome -> zeus TCP D=33168 S=49659 Ack=4025012173 Seq=1331963062 Len=0 Win=24820 14 0.00026 rome -> zeus TCP D=33168 S=49659 Fin Ack=4025012173 Seq=1331963062 Len=0 Win=24820 15 0.00065 zeus -> rome TCP D=49659 S=33168 Ack=1331963063 Seq=4025012173 Len=0 Win=24820 16 0.00079 zeus -> rome TCP D=49659 S=33168 Fin Ack=1331963063 Seq=4025012173 Len=0 Win=24820 17 0.00004 rome -> zeus TCP D=33168 S=49659 Ack=4025012174 Seq=1331963063 Len=0 Win=24820 18 0.00058 rome -> zeus PORTMAP C GETPORT prog=100005 (MOUNT) vers=3 proto=UDP 19 0.00412 zeus -> rome PORTMAP R GETPORT port=34582 20 0.00018 rome -> zeus MOUNT3 C Null 21 0.00134 zeus -> rome MOUNT3 R Null 22 0.00056 rome -> zeus MOUNT3 C Mount /export/home 23 0.23112 zeus -> rome MOUNT3 R Mount Permission denied Packet 1 shows the client rome requesting the port number of the NFS service (RPC program number 100003, Version 3, over the UDP protocol) from the server's rpcbind (portmapper). Packet 2 shows the server's reply indicating nfsd is running on port 2049. Packet 3 shows the automounter's call to the server's nfsd daemon to verify that it is indeed running. The