民芸的プログラミング 〜ソフトウェア開発日記〜

アクセスカウンタ

zoom RSS 飛んだファイルシステムの復旧作業

<<   作成日時 : 2008/06/08 23:30   >>

ブログ気持玉 0 / トラックバック 0 / コメント 0

さて、昨日、飛ばしてしまったファイルシステムをどうにかしなければならない。と言うところから今日が始まった。
まず、昨日あきらかに自分が動転していたと分かるのは、シングル・ユーザー・モードでDebianを起動して、xfs_repairを走らせてしまったことだ。普通に考えれば、シングル・ユーザー・モードだろうが、ファイルシステムはマウントされているわけで、ファイルシステムがマウントされてしまえばxfs_repairが正常に稼動するはずなどないのだ。一体自分はどのファイルシステムに対してxfs_repairをかけていたのだ?
少し調査したところでこの謎は解けた。当該のサーバー機はソフトウェアRAIDおよびLVMを使用していたのだ。それに気付かず、
# xfs_repair /dev/md0
とかやっていた。これでxfs_repairが動作したのも驚きだが、当然、/dev/md0そのものがXFSではないので、xfs_repairでエラーが出て当然だ。
というわけで、ファイルシステムをマウントさせずに、LVM上のXFSに対してxfs_repairをかける方法を模索することとなった。

紆余曲折を経て出た結論が、KNOPPIXを使うというもの。PC Serverだからこそ出来る芸当だ。
手元にあった KNOPPIX 5.1.1 CD 日本版でマシンをブート。KNOPPIX起動の際、
boot: knoppix 2
というチートコードを入力し、ランレベル 2(X Windowsなし)で使用する。

http://www.hinet.mydns.jp/tdiary/20060526.html
を参考にして、

md_modモジュールをロードしてソフトウェアRAIDが使えるようにする
# modprobe md_mod

デバイスファイルを作成して、ディスクアレイにアクセスできるようにする
# mknod /dev/md0 b 9 0

ソフトウェアRAIDを構成
# mdadm -A /dev/md0 /dev/sda1 /dev/sdb1

上記のページでは/etc/lvm/lvm.conf の "md_component_detection = 0"を"md_component_detection = 1"に変更とあるが、KNOPPIX 5.1.1ではこれが最初から1になっているのでそのまま
# vgscan -v
でボリュームグループを認識させ、

# vgchange -a y
とやることでLVMのデバイスファイル(例えば、/dev/ext/root)が作成される。

この状態で、
# xfs_repair /dev/ext/root
とやると、期待通りにファイルシステムのチェックが進み、壊れてしまったファイルがlost+found内にわさわさと再構築されていく。

ファイルシステムの修復が完了したところで、lost+found内にできたファイルをチェック。
fileコマンドでチェックしたところ、どれもELF関係のファイルのようだった。ファイルシステム上のデータは無事か、消えてしまったかのどちらかなのだろう。
ここまできてからシステムをリブート。KNOPPIXのCD-ROMを取り出し、元のDebianでブートさせる。
そして、起動時におかしなエラーが出ていないことを確認。

etchへのアップグレード用のdebファイルがいくつか壊れてしまっていたようなので、再度ダウンロードし、aptitude dist-upgrade。
これでどうにかシステムはetchへとアップグレードされた。
一通り確認したところ、どうやらデータの損傷はない模様。
二日がかりのアップグレード作業はこれでどうやら完了だ。

業務上の主要サーバーではないし、何度もやってきたアップグレード作業なので、正直なところ、心に隙があった。
もっとも、どうやれば完全無事にアップグレードできたのかは、今のところよくわかっていない。

とにかくこういうトラブルが起こりうるということがわかっただけでも収穫だったと思うしかない。

テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
飛んだファイルシステムの復旧作業 民芸的プログラミング 〜ソフトウェア開発日記〜/BIGLOBEウェブリブログ
文字サイズ:       閉じる