2~3ヶ月前から、自宅のサーバが、3~4週間に1回くらいの頻度で、勝手に再起動するトラブルが発生していました。なんとかだましだまし使っていたのですが、2~3日前からは、1日に数回の頻度で、勝手に再起動するようになってしまいました。
中をのぞいてみると、ホコリだらけで、ファンも異音をだしながら、疲れたように回っていました。掃除して、じっくりと眺めていると、なんと、5~6個のコンデンサで、頭がかすかにもりあがっています。
幸いにも破裂したコンデンサはないのですが、サーバの不調は、これが原因かもしれません。
とりあえず、だめもとで、コンデンサを交換してみることにしました。
ドラマの「電車男」をみてたとき、いまどき、半田ごてまで使って、パソコンを直さないよね~、とか思っていたら、まさか自分がやるはめに・・・
半田ごてをあてて、ハンダを溶かし・・・あれれ?ハンダが溶けません。
私がもっている半田ごては、ANTEX製の15Wのもの。かつては、電子工作の定番といわれていたものですが、これじゃ、熱量が足りないみたいです。
さてさて、サーバー不調の原因は、コンデンサの経年変化によるハードウェア的不調かもしれませんが、もしかすると、ソフトウェア的な不調なのかもしれません。毎朝、決まった時間に再起動することが多かったのです。
熱容量の大きい半田ごては、今、手元にはないので、じゃあ、今できることは何かある?ということで、OSを再インストールしてみることにしました。
~ 実は、ここまでが今日の話の、長い前ふり ~
これまで使っていたのは、2年くらい???前のFreeBSD 5.1-STABLEのままだったので、いい機会なので、6.0-RELEAEを、まっさらなHDDへ新規にインストールすることにしました。まっさらなHDDといってても、あまっていた80GBのATA HDDですけど。
サーバーといっても、あまったパーツの寄せ集めで組み立てたパソコンに、FreeBSDをインストールしただけです。
- Micro ATXなマザーボード
- Celeron 900MHz(を600MHzにクロックダウンしてファンレスに)、
- 電源のファンを交換し、風通しなど冷却面を改善、
- 512MB SDRAM、
- 3.5インチHDD、
- 100BaseTX LAN
- キーボード、マウス、ディスプレイ、フロッピーディスクドライブ、CD-ROMドライブは無し
このPCにFreeBSDをインストールしようとすると、フロッピーもCDを使えないので、ちょっと困ります。
そこで、別のパソコンを使って、FreeBSDを新しいハードディスクへインストールしてから、そのハードディスクを持ってくる、という方法をとりました。ごくありがちな作戦ですが、今回は、VMware Playerを使って、できるだけパソコンのダウンタイムを短くする方法をとってみました。
以下のような手順でやりました。
インストール作業のために使ったWindowsパソコンは、一度も再起動することなく、FreeBSDをインストールできます。既存サーバも、停止させる時間を、極力短くすることができます。
- ハードディスクに、この前買ったUSD-IDEアダプタを使って、別のWindowsパソコンに接続する
- Windowsパソコンで、VMware Playerを使ってFreeBSDのインストーラを起動
- USB接続のハードディスクは、ゲストOSのほうでも、USB接続のハードディスクとして認識されます(VMware Playerのボタンでconnect/disconnectできる)
- VMware playerでUSBデバイスをconnect状態にしておくと、FreeBSDのインストーラでは、SCSI HDDのda0というデバイスとして認識される
- インストール先のディスクをda0にして、ごく普通にインストールする
- VMware上でのFreeBSDのインストール手順については、こちらの、「(VMware) FreeBSD 6.0-RELEASEのインストール」に書いたとおり
- インストール終了後、もともとVMware用にインストールしたFreeBSDを起動し、そちらで、今回新規にインストールしたUSB HDDをマウントする
- USB HDDのFreeBSDのなかの/etc/fstabを編集。デバイス名がda0になっているところをすべてad0に置換
- USB HDDのFreeBSDのなかの/etc/rc.confを編集。ネットワークインターフェイス名がlnc0になっているので、本当のマシンでの名前に置換
- 既存のサーバ(動かしっぱなしにしておく)のHDDを、NFSマウントするなどして、すべてのファイルを、新しいHDDへコピーする
- そのほかの環境設定ファイルも、どんどん更新。
- USB HDDをはずして、サーバへ接続し、サーバで新しくインストールしたFreeBSDを起動
- サーバ上で、portsやpackageで必要なソフトをインストールしたり、環境設定を行う
というような作業を経て、今は新しいOSでサーバーが動いているのですが、なぜか、1度として、勝手に再起動することはありません。ということは、ソフトウェアの不調、もしくはハードディスクの障害だったのでしょうか?(今回置き換わったのは、HDDとOSなので)
何かのファイル、または、ファイルシステムのどこか、またはハードディスクのどこかのセクタに異常が発生していて、たまたまそこにアクセスしたときに、カーネルパニックが発生して再起動していた、とかいう可能性はあります。
しばらく、これで様子をみることにします。
おまけ
新しくインストールしたFreeBSD 6.0-RELEASEにて、最初、なぜかsshdが起動しませんでした。ホストキーを作成するために、キーボードでなにか文字をたたけ、と表示されるんで、でたらめなキーをたくさん押してやるのですが、
- PRNG is not seededというメッセージが表示されるだけでsshdは起動しない
- Entropy device is blockingという怪しげなメッセージが表示される
という感じで、はじめて遭遇する状況だったのでしばらく途方にくれました。
ネットで検索を繰り返しながら、10数分後、解決のためのヒントは、実は、sshdの起動時のメッセージに含まれていました。
でたらめなキーを押してなにか文字を入力しろ!という意味のメッセージが表示されるわけですが、よぉ~く英語を読んでみると、
「画面がいっぱいになるくらいの量の、デタラメな文字を入力しろ」
と書いてあるではありませんか!
今まで斜め読みしてて気が付きませんでした。いつも、2~3行入力しただけでEnterキーを押していたのです。それで、問題なく動いていたので、それでいいのだと思い込んでいました。
祈るような気持ちで、画面いっぱいになるくらいまで、文字を入力しつづけると、ちゃんとホストキーが作成され、sshdが起動しました。
今日の教訓:
ちゃんと読め!