在我们的服务器上(运行 CentOS 6 x86_64),我们发现了很多异常活动rpc.statd
。我们已rpc.statd
配置为通过以下方式在静态端口上运行/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
rpc.statd
同样奇怪的是,就 rpcbind 而言, 其中一个进程显然已经篡夺了原始进程。运行rpcinfo
报告在以下端口上显示 statd:
# rpcinfo -p
...
100024 1 udp 34322 status
100024 1 tcp 41686 status
rpc.statd
这些对应于 PID 26145(您可以看到它是上面输出中的一个 实例ps
)。
如果一切正常,这不会是个问题,但是昨天系统开始遇到 NFS 挂载问题……任何尝试挂载新文件系统都会导致:
mount.nfs: mount system call failed
终止所有rpc.statd
服务“解决”了这个问题,但我们对这里发生的事情感到困惑。我们从未在类似配置的 CentOS 5 系统上看到过这种行为。
答案1
好吧,这似乎部分是我们的错,部分是 RedHatauthconfig
命令中的错误。我们的 Puppet 配置导致authconfig --updateall
每小时运行一次。这是不必要的,但通常不应该是个问题……除非authconfig
重新启动rpcbind
服务。
重新启动rpcbind
会导致它忘记所有已注册的服务。虽然随后authconfig
会重新启动与 NIS 相关的服务,但这会导致rpc.statd
仍在运行但不再注册的情况rpcbind
——这使得它从尝试通过 找到它的应用程序的角度来看实际上是不可见的rpcbind
。
我已经修复了我们的 Puppet 配置,所以它不再authconfig
像这样调用,并且我已经打开了 bug818246与 RedHat。