新しい公開 web サーバーを構築している途中で、家内サーバーの不調に気づく。情報更新が止まっていた。再起動すれば直るだろうと、のんきに考えていた。
再起動に失敗する。/etc/init.d/* の実行過程を見ると NFS mount をしようとして失敗していた。先に進まない。何回か試しても同じところで止まっている。
NFS mount をする記述を comment out して、再起動する。先には進んだようだ。何かおかしい。NFS mount に依存しないサービスが動いていない。よく見るとファイル、ディレクトリが作れていない。touch や mkdir を試してもエラー。read only mount になってる。
dmesg を見で local disk の I/O エラーを疑う。「USB 接続のハードディスクは信頼性低いよなぁ...」。色々試した結果、USB ケーブルの接続切断をする。何とも中途な異常だ。volume label で mount できているのに I/O エラーになったと言うことだ。
fsck -f で local 接続の disk のうち、内蔵、USB 接続とも unmount 可能な disk を全て check する。これで NFS mount 無しで再起動できるようになった。
NFS mount をするように記述を戻す。NFS mount のところで止まるようになった。もう一回 NFS mount の記述を comment out して、再起動する。手動で NFS mount するとできてしまう。途中 iptables で自家中毒してしまったかと思い。iptables を設定せずに動作させても NFS mount で止まってしまうことも分かった。
手動で NFS mount 出来たときに、mount point まで移動して、ls してみると I/O error と表示された。「え? NFS mount した directory で I/O error を食らった。もしかして、NFS server が言っていることなのか?こっちも USB 接続だよなぁ。」
NFS server に入って export している directory を ls してみる。同様に I/O error を食らった。ああ、NFS server の方でも disk 不調だったか。NFS server を停止 lsof で open している process を見つけて止める。
NFS server でも unmount して fsck -f を実施した。journal を回復する以外は問題なし。