UPSを接続するために正規手順で電源OFF、その後電源ONしたら、以下のエラーメッセージを出して起動できなくなったBUFFALO TeraStation HS-DH1.0TGL/R5 の修復顛末。
System Error E04 / Can't Load Krnl
まずはHDDを外して、物理イメージを別のサーバ上に抜き出す作業。FreeBSD環境でSATA接続、いつものddrescueコマンドを使用。この時点でSMARTのエラーカウントやddrescueの実行時エラーなども合わせて確認するが、まったくエラーは出ていない。つまり「論理的な死亡」と判断。
いろいろ調べていると、 EM(Emergency Mode) になった時点でファームウェアを入れ替えすればOKという記述を見つけた。とにかく再起動を繰り返して、EMになった時点でファームウェアを入れ替え、再起動をするも、また Can't Load Krnl で停止。
TeraStation上での修復をあきらめ、CentOS 5.5をインストールしたPCを準備、これにTeraStationのHDDを順番に注意して接続し、HDDの構成を確認。試験環境では /dev/sda がCentOSの入ったHDD、TeraStationのHDD 4台は /dev/sd[bcde] に順番に接続された。/dev/sdb の状態。
[root@cent55-01 /]# fdisk -l -u /dev/sdb Disk /dev/sdb: 250.0 GB, 250059350016 bytes 255 heads, 63 sectors/track, 30401 cylinders, total 488397168 sectors Units = セクタ数 of 1 * 512 = 512 bytes デバイス Boot Start End Blocks Id System /dev/sdb1 63 594404 297171 83 Linux /dev/sdb2 594405 1590434 498015 83 Linux /dev/sdb4 1590435 488392064 243400815 5 拡張領域 /dev/sdb5 1590498 1863539 136521 82 Linux swap / Solaris /dev/sdb6 1863603 488215349 243175873+ 83 Linux [root@cent55-01 /]#
容量から判断してsd[bcde]6にデータ領域があると判断。あとはネット上の情報など参照にソフトウェアRAID5の復旧
[root@cent55-01 /]# mdadm -C /dev/md0 -l5 -n4 -f /dev/sd[bcde]6
修復中
[root@cent55-01 /]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sde6[3] sdd6[2] sdc6[1] sdb6[0]
729527424 blocks level 5, 64k chunk, algorithm 2 [4/4] [UUUU]
[=================>...] resync = 87.0% (211589760/243175808) finish=10.1min speed=51808K/sec
unused devices: <none>
[root@cent55-01 /]#
まぁいいや。さらにWeb上の情報を色々と調べると「メディアサーバ」を 使用しない設定にしておかなければ ファームウェアの更新がうまく いかないことが判明。しらべてみるとファイルシステム上にcoreが残っており、 これがあからさまにメディアサーバを示してる。
[root@cent55-01 /]# mount /dev/sdb2 /mnt [root@cent55-01 /]# strings /mnt/core.* | grep media | head -3 mediaserver /usr/mediaserver/mediaserver mediaserver.moduledir [root@cent55-01 /]#
ならば、強制的に止めてしまえ。
[root@cent55-01 /]#cd /mnt/etc/melco/
[root@cent55-01 /mnt/etc/melco]#cp pcast_mp2000 /tmp
[root@cent55-01 /mnt/etc/melco]#cd /tmp
[root@cent55-01 /tmp]#cp pcast_mp2000 pcast_mp2000.orig
[root@cent55-01 /tmp]#vi pcast_mp2000
# 最初の行の server=on を server=off に書き換え
[root@cent55-01 /tmp]#cp pcast_mp2000 /mnt/etc/melco/
[root@cent55-01 /tmp]#umount /mnt ; mount /dev/sdc2 /mnt
[root@cent55-01 /tmp]#cp -u pcast_mp2000 /mnt/etc/melco/pcast_mp2000
[root@cent55-01 /tmp]#umount /mnt ; mount /dev/sdd2 /mnt
[root@cent55-01 /tmp]#cp -u pcast_mp2000 /mnt/etc/melco/pcast_mp2000
[root@cent55-01 /tmp]#umount /mnt ; mount /dev/sde2 /mnt
[root@cent55-01 /tmp]#cp -u pcast_mp2000 /mnt/etc/melco/pcast_mp2000
[root@cent55-01 /tmp]#umount /mnt
そうこうしているうちに、RAID5の修復が終わったようだ。
[root@cent55-01 /]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sde6[3] sdd6[2] sdc6[1] sdb6[0]
729527424 blocks level 5, 64k chunk, algorithm 2 [4/4] [UUUU]
unused devices: <none>
[root@cent55-01 /]#
マウントしようとしたが、エラーとなる。
[root@cent55-01 /]# mount /dev/md0 /mnt
mount: wrong fs type, bad option, bad superblock on /dev/md0,
missing codepage or other error
In some cases useful info is found in syslog - try
dmesg | tail or so
[root@cent55-01 /]#
元通りの筐体に組みなおして、再起動してみる。。。が、駄目。全てのディスク が認識されていないようだ。Webでの設定画面から確認すると、フォーマットさ れていない旨の表示。mdadmコマンドで修復かけたときに壊れたようだ。
・・・さて、どうするかな。とりあえずHDDのデータをバックアップから戻そう。
第一部、ここまで。(つづくぞ、多分)
参照ページ:
http://www13.atwiki.jp/usonx/pages/36.html