在我们的服务器上 – 运行CentOS 6 x86_64 – 我们看到rpc.statd有很多exception的活动。 我们将rpc.statdconfiguration为通过/etc/sysconfig/nfs在静态端口上运行:
MOUNTD_PORT=892 STATD_PORT=662 QUOTAD_PORT=875
这确实导致rpc.statd正常运行并在此端口上侦听:
# ps -fe | grep rpc.statd | grep 662 rpcuser 23129 1 0 Apr30 ? 00:00:00 rpc.statd -p 662
奇怪的是,在这个系统上,还有许多其他的rpc.statd实例以--no-notify标志运行:
rpcuser 808 1 0 02:23 ? 00:00:00 rpc.statd --no-notify rpcuser 2052 1 0 07:17 ? 00:00:00 rpc.statd --no-notify rpcuser 3558 1 0 Apr30 ? 00:00:00 rpc.statd --no-notify rpcuser 5787 1 0 Apr30 ? 00:00:00 rpc.statd --no-notify rpcuser 6499 1 0 Apr30 ? 00:00:00 rpc.statd --no-notify rpcuser 8834 1 0 03:21 ? 00:00:00 rpc.statd --no-notify rpcuser 9661 1 0 Apr30 ? 00:00:00 rpc.statd --no-notify rpcuser 13702 1 0 00:08 ? 00:00:00 rpc.statd --no-notify rpcuser 14813 1 0 Apr30 ? 00:00:00 rpc.statd --no-notify rpcuser 15375 1 0 08:39 ? 00:00:00 rpc.statd --no-notify rpcuser 15376 1 0 04:26 ? 00:00:00 rpc.statd --no-notify rpcuser 19782 1 0 09:36 ? 00:00:00 rpc.statd --no-notify rpcuser 20491 1 0 05:36 ? 00:00:00 rpc.statd --no-notify rpcuser 23136 1 0 Apr30 ? 00:00:00 rpc.statd --no-notify rpcuser 23320 1 0 Apr30 ? 00:00:00 rpc.statd --no-notify rpcuser 26145 1 0 10:10 ? 00:00:00 rpc.statd --no-notify rpcuser 26480 1 0 06:24 ? 00:00:00 rpc.statd --no-notify rpcuser 26598 1 0 Apr30 ? 00:00:00 rpc.statd --no-notify rpcuser 26821 1 0 01:15 ? 00:00:00 rpc.statd --no-notify rpcuser 28255 1 0 Apr30 ? 00:00:00 rpc.statd --no-notify
另外奇怪的是,就rpcbind而言,这些进程中的一个明显地篡改了原始的rpc.statd进程。 在以下端口上运行rpcinfo报告statd:
# rpcinfo -p ... 100024 1 udp 34322 status 100024 1 tcp 41686 status
这些对应于PID 26145(您可以看到上面的ps输出中的rpc.statd实例之一)。
如果一切正常,这不会成为问题,但昨天系统开始遇到NFS挂载问题…任何试图挂载新文件系统的尝试都会导致:
mount.nfs: mount system call failed
closures所有rpc.statd服务“解决”了这个问题,但是我们对这里发生的事情感到困惑。 我们从未在我们类似configuration的CentOS 5系统上看到这种行为。
那么,这似乎是我们的错,部分是RedHat的authconfig命令中的一个错误。 我们的Puppetconfiguration导致authconfig --updateall每小时运行一次。 这是不必要的,但通常它不应该是一个问题…除了authconfig重新启动rpcbind服务。
重新启动rpcbind会导致它忘记已经注册的所有服务。 尽pipeauthconfig会重新启动与NIS相关的服务,但是这会导致rpc.statd仍在运行但不再注册rpcbind – 这使得从试图通过rpcbind查找它的应用程序的angular度来看它是不可见的。
我已经修复了我们的Puppetconfiguration,使它不再像这样调用authconfig ,而且我用RedHat打开了bug 818246 。