Thank you for your reply,
The x4500s uses a real IP, and an IP alias. The NFS mounts are connected
to the alias, so it would be "easier" to fail-over to a different x4500
should there be a need. We have not yet got that far as we are exploring
ways to replicate the data from the active x4500 to a passive x4500 first.
But I will test the idea that the alias might be involved, see if it
mounts the real IP etc. I will report back.
Dai Ngo wrote:
> The problem seems to be on the TCP connection between the client and the
> nfsd on
> the server. The portmap and mount requests used UDP and they went OK.
>
> There are a number TCP RST packets sent from both the client and server,
> this indicated
> there might be problem with packets lost causing both sides to be out of
> sync.
>
> Looks like the server has 2 NICs on the same subnet, 172.20.12.221 and
> 172.20.12.220.
> Have you tried disable 172.20.12.220 and just use 172.20.12.221 to see
> if it helps.
> What the output of the 'netstat -in' and 'netstat -rn' on the server and
> the client look like?
>
> By the way, where were the packets captured from? on the server or the
> client. It's more
> useful if you can capture the packets on both sides and attach the raw
> capture files so
> they can be compared and examined in more details.
>
> -Dai
>
> Jorgen Lundman wrote:
>> (Resent due to wrong sender, sorry)
>>
>>
>> Hello list!
>>
>> *** NFS Servers:
>>
>> x4500-01 to x4500-05
>> : Solaris 10 5/08, ZFS and "UFS on ZVOL" exported.
>> : NFSD_SERVER=1024, LOCKD_SERVER=128 average use about 900 / 20 threads.
>> : "bufhwm_pct,maxusers,ndquot,ncsize,ufs_ninode,clnt_max_conns,
>> : rpcmod:cotsmaxdupreqs,rpcmod:maxdupreqs" tweaked in /etc/system.
>>
>> *** NFS Clients:
>>
>> Supermicro 1U * 40
>> : Solaris 10 5/08
>> : No tweaks, Mounted as
>> : x4500-03:/export/mail - /export/mail nfs - yes vers=3,hard,intr,quota
>> : x4500-02:/export/preview - /export/preview nfs - yes vers=3,hard,intr
>>
>>
>> *** Background
>>
>> Using vers=3 to have uid mapping, without the need for UID lookups. UFS
>> on ZVOL are mounted with "quota". ZFS exported filesystems are mounted
>> without. The system is live and generally works very well.
>>
>> However, NFS will periodically hang. Usually to just one of the x4500
>> servers at a time, the solution currently is just to reboot the client.
>> I have attempted to fully umount all filesystems, and terminate the NFS
>> and RPC processes, in an attempt to remount. This will not fix it. I can
>> not really restart the NFSD/RPC processes on the x4500s.
>>
>> Usually looks like:
>>
>> # df -h
>> [snip]
>> x4500-03:/export/preview
>> 23T 3.9M 23T 1% /export/preview
>> NFS server x4500-01 not responding still trying
>> ^C
>>
>> Note that during this time, x4500-01 is still functioning correctly to
>> the other 39 servers, and x4500-02,03,04,05 are still mounted correctly
>> on this NFS client.
>>
>> # umount /export/www
>> # mount /export/www
>> NFS server x4500-01-vip not responding still trying
>>
>> Truss of the mount says:
>> 23102: 0.0000 getpid() = 23102
>> [23101]
>> 23102: 0.0000 door_call(5, 0x080475A0) = 0
>> 23102: 0.0001 close(5) = 0
>> NFS server x4500-01-vip not responding still trying
>> ^C23102: 69.0780 mount("x4500-01-vip:/export/www", "/export/www",
>> MS_DATA|MS_OPTIONSTR, "nfs3", 0x0806D400, 76, 0x0804777C, 1024) Err#4
>> EINTR
>>
>> Snoop says (x4500-01 is 172.20.12.220, NFS Client is 172.20.12.16)
>>
>> 172.20.12.16 -> 172.20.12.220 PORTMAP C GETPORT prog=100005 (MOUNT)
>> vers=3 proto=UDP
>> 172.20.12.221 -> 172.20.12.16 PORTMAP R GETPORT port=39967
>> 172.20.12.16 -> 172.20.12.220 MOUNT3 C Null
>> 172.20.12.221 -> 172.20.12.16 MOUNT3 R Null
>> 172.20.12.16 -> 172.20.12.220 MOUNT3 C Mount /export/www
>> 172.20.12.221 -> 172.20.12.16 MOUNT3 R Mount OK FH=D502 Auth=unix
>> 172.20.12.16 -> 172.20.12.220 PORTMAP C GETPORT prog=100003 (NFS) vers=3
>> proto=TCP
>> 172.20.12.221 -> 172.20.12.16 PORTMAP R GETPORT port=2049
>> 172.20.12.16 -> 172.20.12.220 TCP D=2049 S=54091 Syn Seq=2255048579
>> Len=0 Win=49640 Options=<mss 1460,nop,wscale 0,nop,nop,sackOK>
>> 172.20.12.220 -> 172.20.12.16 TCP D=54091 S=2049 Syn Ack=2255048580
>> Seq=611591914 Len=0 Win=49640 Options=<mss 1460,nop,wscale
>> 0,nop,nop,sackOK>
>> 172.20.12.16 -> 172.20.12.220 TCP D=2049 S=54091 Ack=611591915
>> Seq=2255048580 Len=0 Win=49640
>> 172.20.12.16 -> 172.20.12.220 NFS C NULL3
>> 172.20.12.220 -> 172.20.12.16 TCP D=54091 S=2049 Ack=2255048700
>> Seq=611591915 Len=0 Win=49520
>> 172.20.12.220 -> 172.20.12.16 NFS R NULL3
>> 172.20.12.16 -> 172.20.12.220 TCP D=2049 S=54091 Ack=611591943
>> Seq=2255048700 Len=0 Win=49640
>> 172.20.12.16 -> 172.20.12.220 TCP D=2049 S=54091 Fin Ack=611591943
>> Seq=2255048700 Len=0 Win=49640
>> 172.20.12.220 -> 172.20.12.16 TCP D=54091 S=2049 Ack=2255048701
>> Seq=611591943 Len=0 Win=49640
>> 172.20.12.220 -> 172.20.12.16 TCP D=54091 S=2049 Fin Ack=2255048701
>> Seq=611591943 Len=0 Win=49640
>> 172.20.12.16 -> 172.20.12.220 TCP D=2049 S=54091 Ack=611591944
>> Seq=2255048701 Len=0 Win=49640
>> 172.20.12.16 -> 172.20.12.220 TCP D=2049 S=664 Syn Seq=1161480442 Len=0
>> Win=49640 Options=<mss 1460,nop,wscale 0,nop,nop,sackOK>
>> 172.20.12.220 -> 172.20.12.16 TCP D=664 S=2049 Ack=1118215538
>> Seq=4284552307 Len=0 Win=49640
>> 172.20.12.16 -> 172.20.12.220 TCP D=2049 S=664 Syn Seq=1161480442 Len=0
>> Win=49640 Options=<mss 1460,nop,wscale 0,nop,nop,sackOK>
>> 172.20.12.220 -> 172.20.12.16 TCP D=664 S=2049 Ack=1118215538
>> Seq=4284552307 Len=0 Win=49640
>> [delay]
>> 172.20.12.16 -> 172.20.12.220 TCP D=2049 S=664 Syn Seq=1161480442 Len=0
>> Win=49640 Options=<mss 1460,nop,wscale 0,nop,nop,sackOK>
>> 172.20.12.220 -> 172.20.12.16 TCP D=664 S=2049 Ack=1118215538
>> Seq=4284552307 Len=0 Win=49640
>> 172.20.12.16 -> 172.20.12.220 TCP D=2049 S=664 Syn Seq=1161480442 Len=0
>> Win=49640 Options=<mss 1460,nop,wscale 0,nop,nop,sackOK>
>> 172.20.12.220 -> 172.20.12.16 TCP D=664 S=2049 Ack=1118215538
>> Seq=4284552307 Len=0 Win=49640
>> [repeat, delay]
>>
>>
>> *** truss of mountd on x4500-01 while attempting mount:
>>
>> # truss -Dfip 28717
>> 28717: 6.8156 pollsys(0x080CAE38, 9, 0x00000000, 0x00000000) = 1
>> 28717: 0.0002 lwp_kill(788, SIG#0) Err#3
>> ESRCH
>> 28717: 0.0001 lwp_create(0x08047B90, LWP_DETACHED|LWP_SUSPENDED,
>> 0x08047DB0) = 791
>> 28717/1: 0.0002
>> lwp_continue(791) = 0
>> 28717/791: 6.8159 lwp_create() (returning as new lwp
>> ...) = 0
>> 28717/1: 0.0001 fxstat(2, 7,
>> 0x08047CB0) = 0
>> 28717/791: 0.0003 setustack(0xFECD1A60)
>> 28717/1: 0.0000 getmsg(7, 0x08047D8C, 0x080CC018,
>> 0x08047DAC) = 0
>> 28717/791: 0.0001 schedctl()
>> = 0xFEFB2010
>> 28717/1: 0.0001 open("/dev/udp",
>> O_RDONLY) = 16
>> 28717/1: 0.0001 ioctl(16, SIOCTMYADDR,
>> 0x08047CA8) = 0
>> 28717/1: 0.0001
>> close(16) = 0
>> 28717/1: 0.0000 fxstat(2, 7,
>> 0x08047C40) = 0
>> 28717/1: 0.0000 putmsg(7, 0x08047D18, 0x080CC018,
>> 0) = 0
>> 28717/1: 0.0001 write(14, "F0",
>> 1) = 1
>> 28717/791: 0.0003 pollsys(0x080CAE38, 8, 0x00000000,
>> 0x00000000) = 1
>> 28717/791: 0.0000 read(13, "F0",
>> 16) = 1
>> 28717/791: 0.0001 pollsys(0x080CAE38, 9, 0x00000000,
>> 0x00000000) = 1
>> 28717/791: 0.0001
>> lwp_unpark(1) = 0
>> 28717/1: 0.0002 lwp_park(0x00000000,
>> 0) = 0
>> 28717/791: 0.0000 fxstat(2, 7,
>> 0xFEA3FE40) = 0
>> 28717/791: 0.0001 getmsg(7, 0xFEA3FF20, 0x080CC018,
>> 0xFEA3FF40) = 0
>> 28717/791: 0.0001 open("/dev/udp",
>> O_RDONLY) = 16
>> 28717/791: 0.0000 ioctl(16, SIOCTMYADDR,
>> 0xFEA3FE38) = 0
>> 28717/791: 0.0001
>> close(16) = 0
>> 28717/791: 0.0000 write(14, " E",
>> 1) = 1
>> 28717/1: 0.0003 pollsys(0x080CAE38, 8, 0x00000000,
>> 0x00000000) = 1
>> 28717/791: 0.0001 getuid()
>> = 0 [0]
>> 28717/1: 0.0001 read(13, " E",
>> 16) = 1
>> 28717/791: 0.0000 getuid()
>> = 0 [0]
>> 28717/791: 0.0001 door_info(15,
>> 0xFEA3F360) = 0
>> 28717/791: 0.0001 door_call(15,
>> 0xFEA3F3B8) = 0
>> 28717/791: 0.0000 resolvepath("/export/www", "/export/www",
>> 1024) = 18
>> 28717/791: 0.0001 xstat(2, "/etc/dfs/sharetab",
>> 0xFEA3F6B8) = 0
>> 28717/791: 0.0001 nfssys(20,
>> 0xFEA3F860) = 0
>> 28717/791: 0.0000 fxstat(2, 7,
>> 0xFEA3F6F0) = 0
>> 28717/791: 0.0000 putmsg(7, 0xFEA3F7C8, 0x080CC018,
>> 0) = 0
>> 28717/791: 0.0001 lwp_sigmask(SIG_SETMASK, 0xFFBFFEFF, 0x0000FFF7)
>> = 0xFFBFFEFF [0x0000FFFF]
>> 28717/791: 0.0000 lwp_exit()
>>
>> [pause]
>>
>>
>>
>> What IS somewhat amusing though, even though I can not mount it again
>> using TCP but if I change to using UDP it will mount just fine. We
>> changed most servers to using UDP and it seems to hang less, but it will
>> still eventually hang.
>>
>> # mount -o proto=udp /export/www
>> # df -h
>> x4500-01-vip:/export/www
>> 984G 73G 901G 8% /export/www
>>
>>
>> Successful mount proto=udp snoop:
>>
>> 172.20.12.16 -> 172.20.12.220 TCP D=2049 S=664 Syn Seq=1161480442 Len=0
>> Win=49640 Options=<mss 1460,nop,wscale 0,nop,nop,sackOK>
>> 172.20.12.220 -> 172.20.12.16 TCP D=664 S=2049 Ack=1118215538
>> Seq=4284552307 Len=0 Win=49640
>> 172.20.12.16 -> 172.20.12.220 TCP D=2049 S=664 Syn Seq=1161480442 Len=0
>> Win=49640 Options=<mss 1460,nop,wscale 0,nop,nop,sackOK>
>> 172.20.12.220 -> 172.20.12.16 TCP D=664 S=2049 Ack=1118215538
>> Seq=4284552307 Len=0 Win=49640
>> 172.20.12.16 -> 172.20.12.220 TCP D=2049 S=664 Rst Ack=0 Seq=1161480443
>> Len=0 Win=49640
>> 172.20.12.220 -> 172.20.12.16 TCP D=664 S=2049 Rst Win=49640
>> 172.20.12.220 -> 172.20.12.16 TCP D=664 S=2049 Syn Ack=1118215538
>> Seq=4284552306 Len=0 Win=49640 Options=<mss 1460,nop,wscale
>> 0,nop,nop,sackOK>
>> 172.20.12.220 -> 172.20.12.16 TCP D=664 S=2049 Rst Ack=1118215538
>> Seq=4284552307 Len=0 Win=49640
>> 172.20.12.16 -> 172.20.12.220 PORTMAP C GETPORT prog=100005 (MOUNT)
>> vers=3 proto=UDP
>> 172.20.12.221 -> 172.20.12.16 PORTMAP R GETPORT port=39967
>> 172.20.12.16 -> 172.20.12.220 MOUNT3 C Null
>> 172.20.12.221 -> 172.20.12.16 MOUNT3 R Null
>> 172.20.12.16 -> 172.20.12.220 MOUNT3 C Mount /export/www
>> 172.20.12.221 -> 172.20.12.16 MOUNT3 R Mount OK FH=D502 Auth=unix
>> 172.20.12.16 -> 172.20.12.220 PORTMAP C GETPORT prog=100003 (NFS) vers=3
>> proto=UDP
>> 172.20.12.221 -> 172.20.12.16 PORTMAP R GETPORT port=2049
>> 172.20.12.16 -> 172.20.12.220 NFS C NULL3
>> 172.20.12.221 -> 172.20.12.16 NFS R NULL3
>> 172.20.12.16 -> 172.20.12.220 PORTMAP C GETPORT prog=100003 (NFS) vers=3
>> proto=UDP
>> 172.20.12.221 -> 172.20.12.16 PORTMAP R GETPORT port=2049
>> 172.20.12.16 -> 172.20.12.220 NFS C NULL3
>> 172.20.12.221 -> 172.20.12.16 NFS R NULL3
>> 172.20.12.16 -> 172.20.12.220 NFS C FSINFO3 FH=D502
>> 172.20.12.221 -> 172.20.12.16 NFS R FSINFO3 OK
>> 172.20.12.16 -> 172.20.12.220 NFS C FSSTAT3 FH=D502
>> 172.20.12.221 -> 172.20.12.16 NFS R FSSTAT3 OK
>> 172.20.12.16 -> 172.20.12.220 NFS C FSSTAT3 FH=D502
>> 172.20.12.221 -> 172.20.12.16 NFS R FSSTAT3 OK
>>
>>
>> Attempt to re-mount using TCP again, for fun
>>
>> # umount /export/www
>> # mount /export/www
>> NFS server x4500-01-vip not responding still trying
>>
>> 172.20.12.16 -> 172.20.12.220 PORTMAP C GETPORT prog=100005 (MOUNT)
>> vers=3 proto=UDP
>> 172.20.12.221 -> 172.20.12.16 PORTMAP R GETPORT port=39967
>> 172.20.12.16 -> 172.20.12.220 MOUNT3 C Null
>> 172.20.12.221 -> 172.20.12.16 MOUNT3 R Null
>> 172.20.12.16 -> 172.20.12.220 MOUNT3 C Mount /export/www
>> 172.20.12.221 -> 172.20.12.16 MOUNT3 R Mount OK FH=D502 Auth=unix
>> 172.20.12.16 -> 172.20.12.220 PORTMAP C GETPORT prog=100003 (NFS) vers=3
>> proto=TCP
>> 172.20.12.221 -> 172.20.12.16 PORTMAP R GETPORT port=2049
>> 172.20.12.16 -> 172.20.12.220 TCP D=2049 S=54093 Syn Seq=2389376336
>> Len=0 Win=49640 Options=<mss 1460,nop,wscale 0,nop,nop,sackOK>
>> 172.20.12.220 -> 172.20.12.16 TCP D=54093 S=2049 Syn Ack=2389376337
>> Seq=997480070 Len=0 Win=49640 Options=<mss 1460,nop,wscale
>> 0,nop,nop,sackOK>
>> 172.20.12.16 -> 172.20.12.220 TCP D=2049 S=54093 Ack=997480071
>> Seq=2389376337 Len=0 Win=49640
>> 172.20.12.16 -> 172.20.12.220 NFS C NULL3
>> 172.20.12.220 -> 172.20.12.16 TCP D=54093 S=2049 Ack=2389376457
>> Seq=997480071 Len=0 Win=49520
>> 172.20.12.220 -> 172.20.12.16 NFS R NULL3
>> 172.20.12.16 -> 172.20.12.220 TCP D=2049 S=54093 Ack=997480099
>> Seq=2389376457 Len=0 Win=49640
>> 172.20.12.16 -> 172.20.12.220 TCP D=2049 S=54093 Fin Ack=997480099
>> Seq=2389376457 Len=0 Win=49640
>> 172.20.12.220 -> 172.20.12.16 TCP D=54093 S=2049 Ack=2389376458
>> Seq=997480099 Len=0 Win=49640
>> 172.20.12.220 -> 172.20.12.16 TCP D=54093 S=2049 Fin Ack=2389376458
>> Seq=997480099 Len=0 Win=49640
>> 172.20.12.16 -> 172.20.12.220 TCP D=2049 S=54093 Ack=997480100
>> Seq=2389376458 Len=0 Win=49640
>> 172.20.12.16 -> 172.20.12.220 TCP D=2049 S=664 Rst Ack=0 Seq=1240043383
>> Len=0 Win=49640
>> 172.20.12.220 -> 172.20.12.16 TCP D=664 S=2049 Rst Win=49640
>> 172.20.12.16 -> 172.20.12.220 TCP D=2049 S=664 Syn Seq=1249838073 Len=0
>> Win=49640 Options=<mss 1460,nop,wscale 0,nop,nop,sackOK>
>> 172.20.12.220 -> 172.20.12.16 TCP D=664 S=2049 Ack=1240043383
>> Seq=99287825 Len=0 Win=49640
>> 172.20.12.16 -> 172.20.12.220 TCP D=2049 S=664 Syn Seq=1249838073 Len=0
>> Win=49640 Options=<mss 1460,nop,wscale 0,nop,nop,sackOK>
>> 172.20.12.220 -> 172.20.12.16 TCP D=664 S=2049 Ack=1240043383
>> Seq=99287825 Len=0 Win=49640
>>
>>
>> So, TCP is hung until reboot. If I reboot the NFS client it will mount
>> TCP just fine again. When both UDP and TCP have hung there is nothing I
>> can do to make it mount. We never reboot the x4500's.
>>
>> So, since of the 40 odd NFS clients, we have to reboot about 6 every day
>> which is getting tedious, and worse than that, we do not always notice
>> it is stuck immediately.
>>
>> We have put Solaris 10 10/08 on some NFS clients as well, but it is too
>> early to know if it fixes anything. We will most likely also try 10/08
>> on the x4500, but that is a much larger task.
>>
>> Are there any NFS related patches we should explore?
>>
>> Sorry for the length of this email, I wanted to include as much details
>> as possible and show I have tried most things in an attempt to discover
>> where the trouble lies.
>>
>> Other Google results hinted on running out of secure ports, but netstat
>> shows no indication of that as far as I can tell. No entries for the
>> hung NFS client on the x4500. The NFS client has a relatively small
>> netstat -na, with the exception of 47 entries for "stream-ord".
>>
>>
>> We would appreciate any feedback on this issue, thank you.
>>
>>
>> Lund
>>
>>
>> *** Random commands while mount is hung:
>>
>> # showmount -e x4500-01-vip
>> export list for x4500-01-vip:
>> /export/mail @172.20.12, at 172.20.15
>> /export/www @172.20.12, at 172.20.15
>> /export/dovecot @172.20.12, at 172.20.15
>>
>>
>> # rpcinfo -m x4500-01-vip
>> PORTMAP (version 2) statistics
>> NULL SET UNSET GETPORT DUMP CALLIT
>> 0 0/0 0/0 1503694/1503838 0 0/0
>>
>> PMAP_GETPORT call statistics
>> prog vers netid success failure
>> nlockmgr 4 udp 4342 0
>> status 1 tcp 2 0
>> nlockmgr 2 udp 42 0
>> nlockmgr 4 tcp 1433764 0
>> nfs 3 udp 346 0
>> nfs 3 tcp 400 0
>> status 1 udp 49 0
>> mountd 1 udp 79 2
>> mountd 1 tcp 11 2
>> mountd 3 udp 654 113
>> rquotad 1 udp 64001 23
>> metad 2 tcp 3 0
>> smserverd 1 tcp 0 1
>> smserverd 1 udp 0 1
>> 300598 1 udp 1 1
>> 300598 1 tcp 0 1
>>
>> RPCBIND (version 3) statistics
>> NULL SET UNSET GETADDR DUMP CALLIT TIME U2T T2U
>> 0 0/0 0/0 2/2 0 0/0 0 0 0
>>
>> RPCB_GETADDR (version 3) call statistics
>> prog vers netid success failure
>> status 1 ticotsord 1 0
>> 100133 1 ticotsord 1 0
>>
>> RPCBIND (version 4) statistics
>> NULL SET UNSET GETADDR DUMP CALLIT TIME U2T T2U
>> 0 99/99 115/115 1/2 0 0/0 0 0 0
>> VERADDR INDRECT GETLIST GETSTAT
>> 0 0 1 1
>>
>> RPCB_GETADDR (version 4) call statistics
>> prog vers netid success failure
>> smserverd 1 ticlts 1 1
>>
>>
>> # rpcinfo -T tcp x4500-01-vip 100005 3
>> program 100005 version 3 ready and waiting
>>
>>
>>
>>
>
>
--
Jorgen Lundman | <lundman at lundman.net>
Unix Administrator | +81 (0)3 -5456-2687 ext 1017 (work)
Shibuya-ku, Tokyo | +81 (0)90-5578-8500 (cell)
Japan | +81 (0)3 -3375-1767 (home)