ELECOM NSR-MSシリーズのNASからデータをサルベージしてみた記録

すごく久しぶりにブログで記録を取りたいなと思ったネタが上がってきました。一言で申しますと、先人の知恵は素晴らしい!!

 

ネタとしては掲題の通り、ELECOM製のNASNSR-MSシリーズのHDDからデータサルベージを行いました。(下記リンクは製品の一例です)

 

www.elecom.co.jp

 

症状としては本体の基板が故障して起動しなくなってしまったようです。HDDからは異音はせずPCからデバイスとして認識したためハード的には無事と判断。そのためHDDからデータサルベージを試してみることにしました。ちなみにファームウェアにバグがあるのか設定が悪かったのかバックアップが正しく動作していなかったようで…。

 

先に試したのはRAID 1で構成していたHDDアレイのうち1台を単純にマウントしてみること。手持ちの古いUSB-SATA変換ケーブルを使ったところ、fdiskでパーティション情報が表示されませんでした。持ち込んできた方いわくそんなはずはないとのことで、裸族を使って確認したところいくつかのパーティションが見つかりました。一番大きいサイズのパーティションが実際にデータが格納されていることろのようです。

 

パーティションがわかればこっちのもの、と思ったものの、EXT4で認識されているにも関わらず"EXT4-fs :bad block size 65536"とエラーが表示されてマウント失敗。その他LVMやxfsを疑ったりググって出てきたツール類を試すもすべてダメ。

 

ここで自分の知っている範疇を超えてきたのでネット上でどなたか解決しているかを確認してみました。型番やメーカーではかからないのですが、先に確認したエラーメッセージで調べるとYahoo!知恵袋のある質問を見つけることができました。数日かかって解決されたようで24ぐらいまで伸びています。

 

detail.chiebukuro.yahoo.co.jp

 

最終的には23、24を見れば概ね解決方法が書いています。少し記事を追いにくいのと、別のNASやHDDが故障した場合に役に立ちそうなのでこちらで纏める事にしました。

 

手順としてはソフトウェアRAID機能の管理ツールmdadmを使ってミラーしているHDDを1台でマウントします。マウントするのはディスクそのものでもいいですが、アクセス中の故障が怖い場合はあらかじめddコマンドなどでイメージファイル化しておきましょう。ちなみにこのNAS。ディスクに書き込んでいるエンディアンx86なPCと違うのかなと思ってddコマンドで変換しながらイメージ化してもダメなようです。確か東芝のHDDレコーダーがこの方式を採用してましたね。

 

HDDを接続時に自動でディスクアレイを構成していることがあるので現在の状況を確認します。パーティションがsda2の場合でディスクアレイが構築されている場合は下記のような表示になります。

 

$ cat /proc/mdstat
(一部抜粋)
md125 : active (auto-read-only) raid1 sdb2[2] sda2[0] 953153536 blocks super 1.2 [2/2] [UU]

 

ディスクアレイの解除はすべての/dev/md?デバイスをStopする方法で対応しました。

 

# mdadm --stop /dev/md124
(/dev/md?があるだけ)

 

/dev/md0としてディスク1台だけでソフトウェアRAIDアレイを作成します。その後にfsckファイルシステムをチェック。

 

# mdadm --verbose --assemble /dev/md0 /dev/sda2 --force
# mdadm /dev/md0 --grow --raid-devices=1 --force
# fsck.ext4 -fy /dev/md0

 

あとはサルベージ先を用意します(サルベージ先デバイスは/dev/sdb1)。

 

# mkfs.ext4 /dev/sdb1
# mkdir /salvage
# mount -t ext4 /dev/sdb1 /salvage
# chmod 755 /salvage
# cd /salvage

 

ここでRAIDのディスク(/dev/md0)をext4でマウントしようとすると、最初に見たエラーが出るだけなので、debugfsなるツールを使用します。これでマウントせずにデバイスやディスクイメージからデータを吸い取れるようです。rdumpの引数で、/dev/md0のディレクトリdataの内容をサルベージ先ディスクのカレントディレクトリにコピーします。

 

# debugfs -R "rdump /data ." -c /dev/md0

 

サルベージが完了したらsshやsftpなどを使うなりでWindows機にコピーするか、Linuxから移行先のNASに接続してコピーしてやってください。これで作業は完了です。無事にデータをサルベージすることができました。

 

今回はこの知恵袋に大変助けられました。ext4に見えてるけどマウントできないってのはディスクのパーティション、フォーマット構成をちゃんと理解して解析すれば普通に対応できたのかもしれません。が、今回はdebugfsなるツールが大活躍でした。USB-SATA変換ケーブルも相性というか読める読めないが出てくるんですね…早めに買い換えないといけません。