この前、あるサーバが突然通信できない状態になってしまいました。xymonで監視しているので、pingが通らない等の異常を検知したのでSSHで接続を試みましたが、やはり接続は出来ない状況。この時はサーバがクラッシュしたかで落ちてしまった状況、もしくはハングアップしてしまったと考えていました。このサーバは用途が限られていたので、すぐに何かをしなければならない状況でないのが幸いでした。
で、データセンターに行ってサーバーの状況を確認したのですが、マシンは普通に起動しておりコンソールから普通にログインできる状況でした。となると単純にネットワーク周りの障害? イーサケーブルは問題ありません、となるとNICの問題でしょうか。NICは2箇所あるのですが、どちらもステータスランプすら灯っていない状況。NICがやられてしまったのでしょうか。念のためスイッチも確認しますが、スイッチのポートは問題ないようです。
本来ならもう少し慎重に調査をするところですが、時間がなかったためとりあえずリブートしてみることにしました。リブートすると、それまで灯っていなかったステータスランプがチカチカと光り始めます。んー、NICが壊れていたわけでもないのか、、、なんだかよく分からない状況だなぁと考えていたのですが、異変に気付きます。サーバのブートに尋常じゃない時間が掛かっています。HDDのステータスランプは点灯しっぱなし。もしかしたら、NICじゃなくてHDDの障害? もしくは、MBの障害?? どちらにしても、ブートしてからsyslogを見てみないと何とも言えません。
結局、ブートに20分ほどかかりました、これは尋常じゃないですね。ディスクのチェックが走っているわけでもなく、通常のデーモンがブートすることに時間が掛かっているようです。うーん、謎だ。
ブートした後も、HDDのステータスランプは点灯したままで、ログインにも時間が掛かります。ログインした後も、一つ一つのコマンドがなかなか実行されません。別件の時間が迫っていたので、とりあえずブートしたのを確認してデータセンターを後にしました。
事務所に戻った後、リモートから接続してみるとあの尋常ではない重さは解消されていました。早速、syslogをチェックしてみると、接続が切れた直後にこのようなメッセージが記録されていました。
kernel: NETDEV WATCHDOG: eth0: transmit timed out
このメッセージはWATCHDOGがネットワークの切断を確認した記録です。最初の記録以降、数分おきにログが記録されています。ちなみにこのログはイーサケーブルやスイッチなどが故障しているわけではないとのこと。
と、さらにログを見ていくと、このような記録があることを確認しました。
Feb dd hh:mm:ss xxxxxx smartd[nnnn]: Device: /dev/sda, 881 Currently unreadable (pending) sectors
Feb dd hh:mm:ss xxxxxx smartd[nnnn]: Device: /dev/sda, 813 Offline uncorrectable sectors
よく見ると、このログはかなり長期間にわたって記録されています。こちらのログは書かれているとおりで、壊れたセクターがあるということですね。これが、上記のネットワークに関する障害と関連性があるのか断定は出来ませんが、まずはHDDの修復から試みるべきでしょうね。
ちなみに、
smartctl -l selftest /dev/sda
とかで、ディスクの状況を確認することが出来ます。ちなみに、このサーバではやはりディスクの障害が発生しているようです。んん、自力で修復を出来るものだろうか、、、このサーバもかなり使い込んだサーバなのでそろそろ退役させた方がいいかもしれないな。