職場で使っている Buffalo の TeraStation(HD-QSSU2/R5) が壊れた。
月曜日に出社したら赤ランプが4つとも点灯していた。
赤ランプ全点灯てことは、2本以上同時に壊れたのか?
RAID5を過信すると怖いっすね。。。
非常に困るのでなんとかデータ救出したいと思い色々調べていると下記の情報を発見。
非常に心強い。ディスク2本壊れても何とかなるもんなんすね。
4本のハードディスク(のうち3本)の中身さえ抽出できればつなぎ合わせることで救出できそうなことがわかった。
そこで何はともあれ、分解して中身をバックアップすることにした。
使われていないデスクトップPCがあったので、4本のディスクのうち2本(SATAポート数の都合)をつないで、UbuntuをUSB起動してddコマンドでイメージ化することにした。
ddイメージの出力先は、容量の都合でネットワーク上のドライブ(NAS)にした。ので、時間がかかった。。。
時間がかかりすぎるので調べたところ、GNU ddrescueコマンドがよさ気なのでそちらを使うことにした。
下記のような感じで2本×2回に分けて実施。(USB起動のUbuntuを使っていたため、リブート後にもGNU ddrescue等入れなおす必要があった。。)
ディスク情報を取得
sudo su
fdisk -l
→どちらが/dev/sdaでどちらが/dev/sdbか確認。セクタ数も確認しておく。
ネットワークドライブをマウント
mkdir /mnt/smb
mount //xxx.xx.xx.xxx/xxx /mnt/smb -o username=xxxxxxxx
mkdir ~/workspace
cd ~/workspace/
ln -s /mnt/smb/xxxxxx_work
cd xxxxxx_work
GNU ddrescueを(プロキシ経由で)インストール
export http_proxy="http://***:***@**proxy****:NNNN/"
export https_proxy=$http_proxy
add-apt-repository universe
apt-get update
apt-get install gddrescue
一台目のディスクをイメージに出力
ddrescue -f -n /dev/sdb disk3ddrescue.img disk3ddrescue.log
もう一つコンソールを立ち上げて、もう一台も同時実行
ddrescue -f -n /dev/sda disk4ddrescue.img disk4ddrescue.log
一晩放置した結果、エラー無く2本とも抽出できていたので、前述のとおりUbuntuをシャットダウンし、
残りの二本につなぎ替えて上記を(disk3, disk4のところはdisk1, disk2に置き換えて)もう一度実行。
4本分のHDDイメージはいずれもエラー無く抽出完了したため、パリティから復元するのではなく、4つのイメージ(のうち3つ)から512バイトごと毎にデータを取得して、ひとつのイメージとして合成することにした。
rubyで簡単なスクリプトを作成し実行。
apt-get install ruby
vi raid5merge.rb
raid5merg.rb
disks = []
sectors = 488_397_167 #各ディスクのセクタ数。4台共同一だった。
(1..4).each{|i|
disks.push << File.open("./disk#{i}ddrescue.img","rb")
}
out = File.open("./merged_disk_ddrescue.img","wb")
buff = ""
sectors.times{|i|
4.times{|j|
#disk4→3→2→1→4→3→2→1の順でスキップ。
if 3 == (j+i)%4
disks[j].read(512)
next
end
buff << disks[j].read(512)
}
if buff.length < 50*1024*1024 #高速化のため、50MB分読み込むまで書き出ししないようにしてみた。
out.print buff
buff = ""
end
}
out.print buff if buff.length > 0
ruby raid5merge.rb
ddのイメージファイルをWindowsでマウントしたいなぁと思い、調査したところ「ImDisk Virtual Disk Driver」てやつがフリーで良さげだった。
インストールし、イメージをマウントして中身が読み書きできることを確認。
ddイメージをNAS上に書き出していたので、メインで使用しているWindows機からもすぐアクセスできて便利だった。(が遅い)
元の4本のHDDは故障しているわけではなさそうだったので、もう一度TeraStationに組み戻して、TeraStationをRAID5で初期化した後、イメージから書き戻すことにした。
現在はFastCopyでコピー中だが、非常に時間がかかる。。。。
初めまして、ワイトと申します
返信削除昨日(16/12/9)夜に私用のHD-QSSU2/R5が赤全点灯状態となりまして
復旧にこちらの記事を参考にさせて頂きました
ありがとうございました
私の場合は記事内の全作業をWindows上で行いましたので何かのご参考に...
・ddrescueでイメージ吸い出し →Roadkil's Disk Imageで吸い出し
・ruby →ruby for Windows
作業の備忘録を残して下さいまして本当に本当にありがとうございました
1.5TBのデータが吹っ飛ぶところでした;
お役に立てたようで何よりです!!
削除この時は数日費やして試行錯誤したので、記録を残しておいてよかったです。
ちなみに、記事の後日談としては、データの一部は破損していて一部のファイルは復旧できていませんでしたが、主だったものは復旧できたので良かったです。
TeraStationはその後、動作不安定だったのであきらめて廃棄にしました。HDDではなくTeraStation側の問題だったように思います。
ワイトです
削除ご返信ありがとうございます
dtさん(と、マニログさんもですが )が復旧の経緯を残して下さったことに本当に感謝します
TeraStation廃棄はちょっと残念な結果でしたね...
当方はその後問題なく再構築できましたので現在運用中だったりしますw
(背面ファンが経年で交換したりしましたが...)
今はバックアップHDDこそリダンダントにすべきなのかな~とか考えてます...今更ですがw