RAID1 外付けHDDが RAW 化したときの復旧ログ

はじめに

RAIDはデータ保護としては有効な手段ではありますが、時にトラブルのもとにもなります。今回の記事では、前日まで問題なく動作していたRAID1で動作している外付けHDDが、次の日来てみると動作していなかったというトラブルの調査と解決について書きます。

使用環境

  • ソフトウェア環境
    • Windows10
    • openSUSE Tumbleweed
  • ハードウェア環境
    • USB-SATAブリッジ〈JMicron 152d:1576〉)

事象の概要

昨日、データのバックアップを行っていたのだが、帰り際にRAIDのリビルドが走っていることに気付いた。長くなりそうなのでそのまま置いて帰ったところ、翌日にはHDDのパーティションテーブルが認識しなくなっていた。

コンピュータの管理で該当のHDDを確認したところ、コンピューターの管理で「未割り当て/RAW」、USB 接続では認識するがアクセス不能となっていた。

この結果から、想定した主原因(GPT ずれ/MFT 破損/物理障害)を抽出し、それぞれ当たりをつけて確認していった。

初期調査

Linuxでの確認

検証用のLinuxサーバーに外付けHDDを接続し、dmesgなどの出力を確認してみた。確認内容は下記の通り。

色々と確認してみると、どうもGPTパーティションがおかしくなっているような感じなので、中身のデータはおそらく無事だろうと一安心した。

チェック項目コマンド結果判断
dmesg`dmesgtail`GPT WARNING のみ
セクタサイズlsblk -o NAME,SIZE,PHY-SeC512e / 4 Knブリッジ誤報なし
SMARTsmartctl -a /dev/sddReallocated/Pending = 0物理健全
GPT 整合sgdisk -v /dev/sddAlt header not at endGPT 末尾ずれ

試しにバックアップGPTとパーティションテーブルを再配置してみたところ(下記コマンド)、パーティションは正しく認識したが、やっぱりデータは読み込めなかった。

sgdisk -e /dev/sdd

TestDiskのRepair MFTを試してみようとしたが、どうやらTestDisk的には問題ないと認識されるらしく、項目が出てこず断念した。

復旧天使を使用したディープスキャン

結局見当がつかないので、昔購入した復旧天使というソフトウェアを引っ張り出してきて試してみることにした。

このソフトの使い方は直感的で分かりやすいが、下記の画面の補足説明だけ付け加えておこうと思う。

画面での表記ざっくり意味このケースでの適性
① このファイルシステムをインデックスして未使用領域をスキャン(データ削除時に推奨)既存の MFT を読み取り、削除フラグの付いたエントリだけを探す今回は MFT が壊れているため 読めずに即終了する可能性大
② インデックスしてスキャン (クイックスキャン)①より速い簡易解析同上
③ ファイルシステムを無視して全領域をスキャン(フォーマット/リカバリー時に推奨)クラスタ全域をディープスキャンし、失われた MFT を再構築しながらファイルを抽出◎ 最も成功率が高い
④ メタデータを参考に使用領域のみスキャンMFT が読める前提で効率化MFT が壊れているので不可
⑤ 使用領域を除いた全領域をスキャンほぼ RAW スキャン専用最終手段向け

要はこのソフトはMFT(Master File Table)がぶっ壊れていても、HDDの全セクタをスキャンしてMFTを自動生成してくれるというスグレモノということで、非常に重宝するソフトだ。確か値段も大して高くなかったと思うので、一度購入しておくと心強い。

途中で不良セクタを検出して上記のエラーが出るかもしれないが、今回はハードウェア障害では無さそうなので、そのまま進めても問題ないだろう(ハードウェア障害なら進めないほうが良い)。

コラム NTFSのファイルシステム構造

ボリュームレイアウト領域の説明

領域名説明
Boot Sectorパーティション情報や起動コードが格納されるセクタ
MFTすべてのファイル情報が記録されたファイルテーブル
MFT MirrorMFTのバックアップ。破損時の復旧用
Metadata$Bitmap, $LogFile などファイルシステム制御に必要な情報群
User Data Areaユーザーのファイルデータが実際に格納される領域

MFTエントリ属性の説明

属性名説明
$STANDARD_INFORMATIONタイムスタンプやファイル属性など基本情報
$FILE_NAMEファイル名と親ディレクトリとの関係を記録
$DATAファイルの中身そのものを格納
$INDEX_ROOTディレクトリのルート構造に関する情報
$INDEX_ALLOCATION大きなディレクトリの場合に使われるインデックス拡張

この構造から、MFTが吹っ飛ぶと仮にファイルが無事であっても、ファイルシステム的には何も表示できない理由が分かると思う。

NTFSに限らず、先頭の方のセクタにファイルシステムの構造データを保存するのは、ファイルシステムの一般的な仕様と言える。

おわりに

今回は、何かの拍子で壊れてしまったRAID1の修復作業を行った。今回に限らず、RAID1は案外簡単に壊れる印象なので、RAID1だからといって安心しないでデータのバックアップはしっかりと行っていただきたい。

あと、安価なRAIDチップやソフトウェアRAIDだと破損の確率が上がる気がするので、本気でRAID1を組みたいなら、専用のICを搭載したマザーボードか、後付のRAIDボードをおすすめする。

コメントする

CAPTCHA