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
また、奇妙なことに、rpcbindに関する限り、これらのプロセスの1つが元のrpc.statd
プロセスを奪ったようです。 rpcinfo
を実行すると、次のポートでstatdが報告されます。
# rpcinfo -p
...
100024 1 udp 34322 status
100024 1 tcp 41686 status
これらはPID 26145に対応します(これは、上記のps
からの出力のrpc.statd
インスタンスの1つです)。
すべてが機能していればこれは問題になりませんが、昨日システムでNFSマウントの問題が発生し始めました...新しいファイルシステムをマウントしようとすると、次のような結果になります。
mount.nfs: mount system call failed
すべてのrpc.statd
サービスを終了することで問題は「解決」されましたが、ここで何が行われているのかについては困惑しています。同様に構成されたCentOS 5システムでこの動作を確認したことはありません。
まあ、これは一部には私たちのせいであり、一部にはRedHatのauthconfig
コマンドのバグのようです。私たちの人形の設定が原因でしたauthconfig --updateall
は1時間ごとに実行されます。これは不要でしたが、通常は問題にはなりません... authconfig
がrpcbind
サービスを再起動することを除きます。
rpcbind
を再起動すると、登録されているすべてのサービスが失われます。 authconfig
はNIS関連のサービスを再起動しますが、これによりrpc.statd
はまだ実行中ですが、rpcbind
に登録されていません。これにより、rpcbind
を介してアプリケーションを見つけようとするアプリケーションからは、事実上見えなくなります。
このようにauthconfig
を呼び出さないようにPuppet設定を修正し、RedHatでバグ 818246 を開きました。