自宅で運用してるubuntuサーバーが急に挙動がおかしくなる。
どーにかこーにか復旧はしたけど
備忘的に残しておこう。
バージョンは ubuntu Server Edition 10.4
色々見てみると /var/log/messages に
[cc lang=’text’ line_numbers=’false’]
Feb 2 17:25:37 server kernel: [682293.011289] ata3: lost interrupt (Status 0x50)
[/cc]
このログを最後にログも一切出力されてない。
[cc lang=’text’ line_numbers=’false’]
root@server:/# mount
/dev/sda1 on / type ext4 (rw,errors=remount-ro)
[/cc]
こんな感じでエラー時に読み取り専用でremountになってたおかげで
bootブログラムが入ってるHDDが何にも書き込めない状態のようだ。
とにかくremountでマウントしなおしとか試してみる
[cc lang=’text’ line_numbers=’false’]
root@server:/var/log# mount -o remount /
mount: cannot remount ブロックデバイス /dev/sda1 read-write, is write-protected
[/cc]
がっつり write-protected
とにかく動いてはいるので直るんじゃね?とか楽観視しつつ再起動。
今思えばこの読み取り専用でも動いてるうちに必要なファイルを退避しとけば良かった…
…案の定起動せず。
帰ってモニタを繋いで状況を見てみると
[cc lang=’text’ line_numbers=’false’]
grub rescue>
[/cc]
って状態で起動してる。
…なんか結構えらいことになってるっぽい。
マスターブートレコードが壊れてたりして
bootプログラムが見つからないような時にこうなるらしい。
どーにかこーにかGoogle先生に聞きながらやってみた。
[cc lang=’text’ line_numbers=’false’]
grub rescue> ls
(hd0)(hd0,5)(hd0,1) …..
[/cc]
って感じでHDDのパーティション自体は認識出来てる。
[cc lang=’text’ line_numbers=’false’]
grub rescue> ls (hd0,5)/
[/cc]
とかやっても
[cc lang=’text’ line_numbers=’false’]
error: unknown filesystem.
[/cc]
の表示で中身が見えない…(ファイルシステムが生きていればHDDの中身が参照出来るらしい)
うん。これは単体でのリカバリーは無理だ。
で、USB起動からシステム修復とかやろうとしたけど結局うまくいかず。
家にあるubuntuノートからどーにかしてみようってんで
梅田ヨドバシで SATA -> USB変換ケーブルを買ってきて早速ノートPCに接続。
裸のHDDに電源とケーブルだけ差してノートPCからいじってる作業はさながらハッカーのよう。
けど必死すぎてそんな自分に酔う隙も無く。
自動でmountはされんかったけどログを見る限り接続されたことは認識されたようで
[cc lang=’text’ line_numbers=’false’]
foo@server:~$ sudo parted -l
[/cc]
で接続の情報を確認。
[cc lang=’text’ line_numbers=’false’]
モデル: ATA ST3250310AS (scsi)
ディスク /dev/sdb: 250GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: msdos
番号 開始 終了 サイズ タイプ ファイルシステム フラグ
1 1049kB 240GB 240GB primary boot
2 240GB 250GB 10.2GB extended
5 240GB 250GB 10.2GB logical linux-swap(v1)
[/cc]
HDDの情報はがっちり認識してるようやけど
なんせ「ファイルシステム」が空欄と。
壊れたのはそこか…としばし途方に暮れる。
ってあれ、論理的に壊れただけなら修復出来んじゃね?
と藁にもすがる思いで、ディスクに対してfsckを実行
[cc lang=’text’ line_numbers=’false’]
foo@server:~$ sudo fsck /dev/sdb1
[/cc]
…うおおおおおおおおお
出るわ出るわエラーの渦。
こちとら再インストールまで覚悟してやっとんじゃいってことで
とにかく出たエラーに対する問いかけは全部 yes
1000ぐらいエラーが出てたような…
ひたすら問いかけにはYESマンに徹しつつ2時間程で完了。
恐る恐る確認する。
[cc lang=’text’ line_numbers=’false’]
foo@server:~$ sudo parted -l
モデル: ATA ST3250310AS (scsi)
ディスク /dev/sdb: 250GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: msdos
番号 開始 終了 サイズ タイプ ファイルシステム フラグ
1 1049kB 240GB 240GB primary ext4 boot
2 240GB 250GB 10.2GB extended
5 240GB 250GB 10.2GB logical linux-swap(v1)
[/cc]
おるがな!!
ファイルシステムにext4が!!
逸る気持ちを抑えてノート上でmountしてみる
[cc lang=’text’ line_numbers=’false’]
foo@notePC:~$ sudo mkdir /mnt/usb1
[/cc]
マウントポイント作って
[cc lang=’text’ line_numbers=’false’]
foo@notePC:~$ sudo mount /mnt/usb1 /dev/sdb1
[/cc]
マウントした上で見てみる。
…見える…見えるぞぉ!(ムスカ)
時間は深夜どころか早朝間近にも関わらずテンションMAX
慌てず騒がずunmountして外した後そっとサーバー機にHDDを戻して起動。
起動したああああああああああ!!
とととにかく中身のチェック。
/tmp と /va/www/html 以下のファイルがごっそり壊れてた。
そんなもんは作りなおせばいい!
けどmuninのログも /va/www/html 以下に保存してたので
今までのサーバーの歴史が消えてしまったのはちょっとショック。
読み取り専用の時にバックアップさえ取っていれば…と後の祭り。
今回の問題についてはBIOSの S.M.A.R.T からも警告無かったし
munin で取ってた S.M.A.R.T のグラフにも異常は無かったんで
物理的なHDD故障じゃなく論理的にファイルシステム壊れてただけっぽい。
もし物理的に壊れてたら dd とかでディスクイメージを吸い出すぐらいやけど
それやとHDDのサイズそのままのイメージが作成されるので、もしもの時のために
パーティションはきっちり分けといた方が良さそうですな…。
「182」SATA/IDE/ATAPI接続 USB変換ケーブル AC電源付属「182」SATA/IDE/ATAPI接続 USB変換… |