BUFFALO NAS TeraStationのディスク故障 Ubuntuでデータ復旧

TeraStation Linux
この記事は約15分で読めます。

※当ブログではアフィリエイト広告を利用しています。

BUFFALOのNAS TeraStationが壊れました。

もう5年以上稼働していて、ある日突然ディスクエラーでEMモードになりました。

ディスクは1TBのHDDを2枚挿しでRAID1(ミラーリング)構成だったのですが、運悪くどちらのディスクもエラー発生。。
バックアップは取っておらず。。

うんともすんとも言わなくなったので、LinuxのUbuntuブータブルUSBドライブを使用してデータ復旧・救出を行いました。

UbuntuブータブルUSBドライブの作成方法は、こちらの記事を参考にしてください。

なお、今回のバージョンは以下の通りです。

今回のバージョン
  • TeraStation TS-WXL/R1 Series
  • Ubuntu Desktop 日本語 Remix 18.04.2 LTS

TeraStationのデータ領域は6つ目のXFSフォーマットのパーティション

TeraStationのディスクは、6つのパーティションに分かれています。

6つ目の一際大きな容量のパーティションにデータが格納されているのですが、ファイルシステムはXFSフォーマットです。

そのため、Windowsではディスクの管理で見てもRAWとなっていて、ドライブを割り当てて中身を見ることはできません。
また、EXTではなくXFSなのでフリーソフトのExt2Fsdも使えません。

LinuxUbuntu)ならXFSフォーマットを扱えます。

fdiskコマンドで見てみたところ、この場合は「/dev/sdc6」がデータ領域ですね。

$ sudo fdisk -l
ディスク /dev/sdc: 931.5 GiB, 1000204886016 バイト, 1953525168 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスクラベルのタイプ: gpt
ディスク識別子: 15BFC779-8AC6-47BD-AAFD-3FE2A9BE3482

デバイス   開始位置   最後から     セクタ サイズ タイプ
/dev/sdc1      2048    2002943    2000896   977M Microsoft 基本データ
/dev/sdc2   2002944   12003327   10000384   4.8G Microsoft 基本データ
/dev/sdc3  12003328   12005375       2048     1M Microsoft 基本データ
/dev/sdc4  12005376   12007423       2048     1M Microsoft 基本データ
/dev/sdc5  12007424   14008319    2000896   977M Microsoft 基本データ
/dev/sdc6  14008320 1937508319 1923500000 917.2G Microsoft 基本データ

以前使用していたLinkStationのパーティションも同様で、6つのパーティションでXFSフォーマットでした。

ddコマンドでディスク丸ごとバックアップ

BUFFALO TeraStation

まずは念のために、Ubuntuでディスクを丸ごと空きディスクにバックアップします。

TeraStationのHDDの接続には、サンワサプライのSATA-USB変換ケーブル USB-CVIDE4を使用しています。

【30日間無料体験】Amazonプライム会員なら配送料無料(一部除く)!

USB-CVIDE4の詳細は、こちらの記事を参考にしてください。

接続したら、dmesg・fdiskコマンドでデバイスを確認して、ddコマンドを実行してしばらく放置しました。

 $ sudo dd if=/dev/sdc of=/dev/sdd bs=512 conv=noerror,sync
  • ddコマンドのオプション
    • if … 読み出すファイル・デバイスファイルを指定。
    • of … 書き込むファイル・デバイスファイルを指定。
    • bs … 1回に読み書きするブロックサイズ。エラーが多い場合は少ないバイト数にする。
    • conv … 変換方法を指定。
      • noerror … 読み出しエラー後も処理を続行。
      • sync … 各入力ブロックを「bs」で指定したサイズになるまでNULL文字で埋める。

XFSフォーマットのパーティションをマウントしてデータ復旧

続いて、XFSフォーマットのパーティションをマウントします。

XFSファイルシステムを扱うためのxfsprogsがインストールされていない場合は、こちらのコマンドでインストールします。

UbuntuブータブルUSBドライブでは、初めからインストール済みでした。

$ sudo apt install xfsprogs

mountコマンドで、適当な位置にマウントします。

$ sudo mkdir /mnt/nas
$ sudo mount -t xfs /dev/sdc6 /mnt/nas
  • mountコマンドのオプション
    • -t … マウントするファイルシステムの種類を指定。

マウントがうまくいけば、マウントしたディレクトリでTeraStationの共有フォルダがそのままの構成で見れるようになっていると思います。

うまく動いているうちにさっさと外付けHDDや他のNASにでもデータを全部コピーしましょう。

なお、アンマウントはumountコマンドで行います。

$ sudo umount /dev/sdc6

BUFFALO TeraStationの詳細は、こちらのリンクからご確認いただけます。

【30日間無料体験】Amazonプライム会員なら配送料無料(一部除く)!

xfs_repairコマンドでXFSファイルシステムの修復

とりあえずデータは復旧できたのですが、せっかくなのでいろいろと見ているともう1本のHDDは同じようには行きませんでした。

そのときの作業メモです。

こちらのHDDは、エラーが発生してマウントできませんでした。

$ sudo mount -t xfs /dev/sdc6 /mnt/nas
mount: /mnt/nas: wrong fs type, bad option, bad superblock on /dev/sdc6, missing codepage or helper program, or other error.

xfs_repairコマンドでXFSファイルシステムの修復を試みます。

まずは検査だけ実行しました。

$ sudo xfs_repair -n /dev/sdc6
Phase 1 - find and verify superblock...
bad primary superblock - bad magic number !!!

attempting to find secondary superblock...
.found candidate secondary superblock...
error reading superblock 16 -- seek to offset 984832016384 failed
unable to verify superblock, continuing...
...
..........................................................found candidate secondary superblock...
verified secondary superblock...
would write modified primary superblock
Primary superblock would have been modified.
Cannot proceed further in no_modify mode.
Exiting now.
  • xfs_repairコマンドのオプション
    • -n … 検査だけで修復は行わない。

何かイケそうなので、修復を実施。

$ sudo xfs_repair /dev/sdc6
Phase 1 - find and verify superblock...
bad primary superblock - bad magic number !!!

attempting to find secondary superblock...
.found candidate secondary superblock...
error reading superblock 16 -- seek to offset 984832016384 failed
unable to verify superblock, continuing...
...
..........................................................found candidate secondary superblock...
verified secondary superblock...
writing modified primary superblock
xfs_repair: V1 inodes unsupported. Please try an older xfsprogs.

ダメでした。。

古いxfsprogsを使えとのメッセージが出ています。

KNOPPIXでXFSファイルシステムの修復

ググってみると、LinuxディストリビューションのKNOPPIX(クノーピクス)の古いバージョンでならできるみたいでした。

なので、こちらのリンク先からバージョン7.0.2のISOファイルをダウンロードしてきました。
最終更新日はかなり古くて、2012年6月17日です。

Ubuntuと同様の手順で、KNOPPIXのブータブルUSBドライブを作成しました。

作成したKNOPPIXのブータブルUSBドライブは、バージョンが古いためなのか新しいPCでは起動できませんでした。
型落ちの古いPCでは起動することができました。

KNOPPIXでマウントしてみると、「構造体を内容消去する必要があります」と出てできません。

$ sudo mount /dev/sdc6 /mnt/nas
mount: 構造体を内容消去する必要があります

なので、先ほどと同様にxfs_repairコマンドでXFSファイルシステムの修復を試みます。

$ sudo xfs_repair -n /dev/sdc6
Phase 1 - find and verify superblock...
sb root inode value 18446744073709551615 (NULLFSINO) inconsistent with calculated value 192
would reset superblock root inode pointer to 192
sb realtime bitmap inode 18446744073709551615 (NULLFSINO) inconsistent with calculated value 193
would reset superblock realtime bitmap ino pointer to 193
sb realtime summary inode 18446744073709551615 (NULLFSINO) inconsistent with calculated value 194
would reset superblock realtime summary ino pointer to 194
Phase 2 - using internal log
        - scan filesystem freespace and inode maps...
bad magic # 0x0 for agf 0
bad version # 0 for agf 0
bad length 0 for agf 0, should be 7513671
bad magic # 0x0 for agi 0
bad version # 0 for agi 0
bad length # 0 for agi 0, should be 7513671
would reset bad agf for ag 0
would reset bad agi for ag 0
bad uncorrected agheader 0, skipping ag...
sb_icount 0, counted 253440
sb_ifree 0, counted 1100
sb_fdblocks 240404480, counted 223191396
root inode chunk not found
Phase 3 - for each AG...
        - scan (but don't clear) agi unlinked lists...
error following ag 0 unlinked list
        - process known inodes and perform inode discovery...
        - agno = 0
bad magic number 0x0 on inode 192
bad version number 0x0 on inode 192
…
No modify flag set, skipping filesystem flush and exiting.

やたらと時間がかかって、検査が終わったみたいです。

よく分からんので、修復を実施しました。

$ sudo xfs_repair /dev/sdc6
Phase 1 - find and verify superblock...
sb root inode value 18446744073709551615 (NULLFSINO) inconsistent with calculated value 192
resetting superblock root inode pointer to 192
sb realtime bitmap inode 18446744073709551615 (NULLFSINO) inconsistent with calculated value 193
resetting superblock realtime bitmap ino pointer to 193
sb realtime summary inode 18446744073709551615 (NULLFSINO) inconsistent with calculated value 194
resetting superblock realtime summary ino pointer to 194
Phase 2 - using internal log
        - zero log...
ERROR: The filesystem has valuable metadata changes in a log which needs to
be replayed.  Mount the filesystem to replay the log, and unmount it before
re-running xfs_repair.  If you are unable to mount the filesystem, then use
the -L option to destroy the log and attempt a repair.
Note that destroying the log may cause corruption -- please attempt a mount
of the filesystem before doing this.

あれ?ダメ?
ログが云々言うてるんで、-Lオプションを付けたら通りました。

$ sudo xfs_repair -L /dev/sdc6
Phase 1 - find and verify superblock...
sb root inode value 18446744073709551615 (NULLFSINO) inconsistent with calculated value 192
resetting superblock root inode pointer to 192
sb realtime bitmap inode 18446744073709551615 (NULLFSINO) inconsistent with calculated value 193
resetting superblock realtime bitmap ino pointer to 193
sb realtime summary inode 18446744073709551615 (NULLFSINO) inconsistent with calculated value 194
resetting superblock realtime summary ino pointer to 194
Phase 2 - using internal log
        - zero log...
ALERT: The filesystem has valuable metadata changes in a log which is being
destroyed because the -L option was used.
        - scan filesystem freespace and inode maps...
bad magic # 0x0 for agf 0
bad version # 0 for agf 0
bad length 0 for agf 0, should be 7513671
bad magic # 0x0 for agi 0
bad version # 0 for agi 0
bad length # 0 for agi 0, should be 7513671
reset bad agf for ag 0
reset bad agi for ag 0
bad agbno 0 for btbno root, agno 0
bad agbno 0 for btbcnt root, agno 0
bad agbno 0 for inobt root, agno 0
agi unlinked bucket 0 is 0 in ag 0 (inode=0)
…
done
  • xfs_repairコマンドのオプション
    • -L … ログを強制的に消去(ゼロで初期化)。

ということで、再びマウントしてみるとファイルは全部「lost+found」ディレクトリに移動されてしていました。

KNOPPIX

フォルダ構成もなくなってるし、多くはファイル名(拡張子含む)も失っていて、どれがどのファイルかは探すの大変。。

1本目のHDDでデータ復旧できていて本当に良かった。。

最後に

今回は、BUFFALOのNAS TeraStationのディスク故障したときの話でした。

LinuxのUbuntuブータブルUSBドライブでXFSフォーマットのデータ領域から無事にデータ復旧・救出できました。

故障したTeraStationを処分する前に、acp_commanderでTeraStationのroot取得・SSH接続をしてみました。

BUFFALO TeraStationの詳細は、こちらのリンクからご確認いただけます。

【30日間無料体験】Amazonプライム会員なら配送料無料(一部除く)!

コメント