自宅サーバ再構築
自宅サーバが突然ぶっ壊れた。
突然と言いつつ予兆はあったのだけど。
今まで使ってた自宅サーバは、5年ぐらい前に作ったファンレス・スピンドルレスの小型マシン。HDDの代わりにSSDを使ったんだが、SSDの書き込み回数の寿命が来たようだ。
シングルユーザモードで立ち上げてみると、一応起動はするんだがディスクアクセスが異様に遅い。マルチユーザモードでの起動を見守っていると、apacheの起動の辺りで固まってしまう。
しばらく前から、いわゆるSSDのプチフリっぽい症状は出始めていたので、そろそろ次期サーバを立てないとな、とは思っていて、ついでに言うとDS-LiteのモニターでもらったRaspberry Pi 3が意外とサクサク動くので、こいつを次期サーバにすりゃいいな、とか思ってたのだけど、こんな突然事態が急変するとは…。
しかし、まずは死にかけのSSDからデータを吸い出さねばならんのだけど、もはやウチにデスクトップ機はないので、SATAをどうやって接続しようか、とか、こんなに遅くてデータを吸い出すのにどんだけ時間掛かるのか、とか、そもそもちゃんと吸い出せるのかとか、非常に不安な第1関門だったが、意外とあっさり突破できた。
とりあえず、手持ちのUSBメモリ(4GB)にデータを退避させようとしたんだが、このUSBメモリ、昔何かのテストでDebianのLiveイメージ(USBからDebian(最小構成)が起動できるヤツ)を入れたUSBメモリだったみたいで、USBに刺したまま起動したらDebian Liveが起動してきた(笑)。ext4でフォーマットしたのに(爆)。
で、この状態からSSDをRead onlyでマウントしてみたら、普通にサクサク読み出せる。
どうやら遅いのは純粋に書き込みだけのようで、Linuxのファイルシステム(ext2,3,4など)はデフォルトでは読み込みでもアクセス日時を更新に行くらしく、その更新が遅かったようだ。
と言うわけで、移行が必要なデータ(/home, MySQLのDB, /etc (参考データとして))をrsyncでRaspberry Pi側に転送して第1関門突破。
あとはApache, MySQL, Postfix, IMAP4あたりが動くように一通りセットアップしていくのだけど、すっかり忘れてて旧サーバから退避してきた/etcとにらめっこしながら丸1日掛かってしまった。
途中、courier-imapが普通にアクセスできるのにエラー(※下記引用)がいちいち出てウザい、ってなことがあったけど、ここを参考にfamをgaminに入れ替えて解消。細かい意味は分からんが気にしない(笑
Filesystem notification initialization error — contact your mail
administrator (check for configuration errors with the FAM/Gamin library)
で、今回の原因となったと思われるSSDの書き込み回数による寿命を少しでも延命するべく、/tmp, /var/tmp, /var/logをtmpfsに移行。(Raspberry PiはSSDよりさらに軟弱そうなmicroSDをストレージとして使っているので。) 参考にしたのはこちら①②③④。
ただし、いずれも/var/logのバックアップについては具体的には書かれてなかったので、単純に起動時・終了時・日次でストレージ側とrsyncで同期を取るようなスクリプトを書いてみた。
副産物として、lastlogとかがちゃんと過去から継続されるようになった。(バックアップを取っていたとしても、起動のたびに /var/log/lastlog が空になると、それ以前の履歴が表示されない)
ただ、この方式だと、/var/logの容量は普通のストレージと同様に蓄積されちゃうので、やはり何かしら定期的に退避する仕組みは必要か。
とは言え、なんとか復旧できたので、外部にも公開して復旧作業はひとまず完了。やれやれ。
1件のピンバック
ブログのDBがぶっ壊れた | たぽブログ