修羅場 – FreeBSDとRAID1とmountと

悪いことというのは重なるもので。。
ぎちぎちスケジュールの中、想定外に作業に手間どり。。
「仕様と違う」
「期待通りの動作をしない」
よくあることだけど、他のメンバーに作業を振れない。
仕様を説明して、修正ポイントを説明してってやってると、余計に手間どる。
しゃあないから僕がやる。。。
そんなこんなで、あちらこちらに、しわ寄せがいって、スケジュール狂いまくり。
しかし、もう延ばせないし。。
現実逃避に、 Emacs のアイコン作ってたら、サーバーのディスクがお亡くなりになられた(苦笑)


RAID1 で2重化してあるので、死んだディスクを交換したらOK。。のはずだったのだけど、ディスクのマウントポイントを見ようと、 mount って入力した瞬間。
Segmentation fault (core dumped)
悪夢。。。。。。。。
mount が死んだ。
そのままサーバーは固まり、リセットする羽目に。
もちろん、サーバーは起動不能。
RAIDである ar0 をマウントしようとするところでこける。
ufs:/dev/ar0s1a って直接入力してもマウントしてくれない。
ufs:/dev/ad0s1a とか、 ufs:/dev/ad0s1a って直接ATAデバイスを叩いてもだめ。
打つ手なし。
シングルユーザーモードでも起動せず。
ミラーリングした RAID1 のディスクが2台とも死んだ。。
このサーバーは、顧客用ホスティングサーバーなので、大切なお客様の HP やら、メールのデータがたくさん。。。
悪夢。
しかし、バニックになっていても解決しないので、解決方法を探す。
別のサーバーにバックアップはあるけど、10時間ほど前のもの。
更新が激しいサイトもあるので、これを使うのは最終手段
1時間ごとにとってあるものは亡くなったディスクの中。
とりあえず、予備のサーバーを動かすことを考えるが、肝心のディスクが死んでるのでセットアップに時間がかかりすぎる。
そして、サーバー落ちてるぞーとの電話がかかりまくってきた(汗)
とりあえず謝る。申し訳ございません。
無理矢理冷静になって考えると、、、
mount って入力して、 mount が死んだのだから、他のデータは生きているだろうという推測を立てる。
起動ディスクで起動して、何とかして生きているデータを救出することを試みる。
すぐ手元にあるのは、 FreeBSD6.0-RELEASE のインストールディスク。
しかし、該当サーバーは FreeBSD 4.11-RELEASE。
データだけ出せれば良いので、このディスクでも大丈夫だろうと強引に作業を進めることに。
しかし、このサーバー、 CDドライブがない。
FD 専門やん(失笑)
今は FD なんて使わないので、10年くらい前のフロッピーをひっぱり出してきて起動ディスクを作る。
しかし、セクタエラー連発。撃沈。。だめやん。。
仕方がないので、他のマシンの CDドライブをはずし、サーバーに無理矢理つける。
そして、 FreeBSD6.0-RELEASE を起動!
見事起動!
Fixed mode で起動!
コンソールに Good Luck! のメッセージ(汗)
問題はここからだ。
ad0 は完全にお亡くなりになっていたので、 ad2 に賭ける!
とりあえず、 fsck をすべてのスライスで走らせる。
/usr 以外は、ちゃんと修復してくれたらしい。
しかし、 /usr である /dev/ad2s1h で hard error でまくり。
# fsck -y -b 32 /dev/ad2s1h
と、頑張ってみるが、 hard error 消えず。
起動ディスクの mount はちゃんと仕事してくれて、他のスライスはマウントできる模様。
ad2s1h はマウントできず。
しかも、 ad2 の mount は、起動時に Root Mount failed: 16 とおっしゃる。
6.1-RELEASE のインストーラの Fixed mode には atacontrol まで入ってるのね。
ar0 が残ったままでは気持ちが悪いので、 atacontrol delete ar0 して削除。
しかし、どうやって mount してやろうか。。
と、荒療治を思いついた。
他のマシンから mount を持ってくる(笑)
セクタエラーの出る FD でも、 mount くらいならコピーできるだろうと、別の 4.11-RELEASE の mount をコピー。
FD につっこんで、例のマシンへ mount をコピー。
そして、おそるおそる mount /dev/ad2s1h /mnt と入力・・・。
したけど、 fsck しないと mount できねーぞとおっしゃる。
ごもっとも。(失笑)
でもね。 hard error って言われて、 fsck おわらないの。
何度やっても修復してくれないの。
しかし、僕は躊躇することなく、強引に入力したのでした。
# mount -f /dev/ad2s1h /mnt
すると、素直にマウントしてくれた(笑)
不幸中の幸い。奇跡。泣けてきた(涙)
しかし良い子は真似しないように。こういう時は、ro つけて、 read only でマウントするべきよ。。
ここまできたら、なんとか起動させるしかない。
セクタエラーを出していた領域は狭いので、起動さえしてしまえば、そのまま RAID1 をリビルドして、稼動させながらやった方がいいと判断。
お客様のサイトがたくさん入っているので、長時間停止させておくわけにはいかないのです。。
しかし、ふつうに mount させようと思うと、 fsck ちゃんとしろと怒られる。
でも、 mount 強制コピーのおかげで、起動時には mount できるようになったので、シングルユーザーモードで起動して、 /dev/ad2s1h を -f で強制マウント。
# shutdown -r now とやって、無理矢理 clean flag を立てることに成功!
リブートしたら、一旦 PIO モードに落ちるものの、なんとか正常に mount してくれました(汗)
現在、RAID1 をリビルド中。
PIO モードなので激遅いけど、とりあえず動いてくれてるし。
リビルドが終るまで持ってくれればよい。。
ということで、とりあえず一件落着。かな?
完全に復旧するまでは気が抜けないけど。。
最悪な状況でも、頑張ればなんとかなるもんだ。。
ほとんど1日つぶれたけど、頑張ればなんとかなるよな。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中