ある日突然RAID機器が壊れてしまった。NAS 製品の復旧情報はいくつかあるけれど、手元の機器は該当しない。そういう場合に使えるRAID 機器に対する汎用的なデータ復旧方法についてご説明します。
特定機器に特化した方法と汎用的な方法
RAID機器のデータ復旧方法には、特定機器に特化した方法と、どの機器にも使える汎用的な方法があります。
特定機器に特化した方法は、どの機器にも使える汎用的な方法を経て、その機器で発生しがちないくつかのパターンに対応可能なように構築された手順を踏みます。この手順は、何度も利用されることで洗練され、いくつかの場合には専用のツールが用意されます。データ復旧ソフトNAS-RESCUE はそのようなツールのひとつです。
手順が洗練されることで、復旧サービス自体も、より安価で提供することができるようになります。
どの機器にも使える汎用的な方法は、まず、その機器の仕様や実際の動作の解析から入ります。解析のためには実際に復旧対象となる機器と同じものを調達し、同一の環境を再現し、同じように壊し、それぞれの状態についてHDDへのデータの書き込まれ方などを注意深く観察する必要があります。
当然、実機を使って解析をするしかない場合もありますが、可能な限り避けます。どうしても実機を使わざるを得ない場合には元に戻せるような施策を講じます。
このようなプロセスを踏むため、時間的・人的・金銭的資源が多量にかかります。
RAID 機器の解析
復旧手順が確立されていないRAID 機器のデータ復旧では解析作業を避けて通ることはできません。以下では、解析作業ではどのような情報をどのように収集するのかを説明します。
どのような情報を収集しなければならないか
RAID機器の復旧作業場の解析工程で真っ先に収集しなければいけない情報は以下の2つです:
- HDD の正しい順序
- RAID レベル
逆に言えば、これらの情報がRAID機器を用いたストレージシステムとともに保全されていれば、この工程を省くことができます。しかしながら、これに関する記憶や記録があいまいであったり、更新されていなかったりして、現実と食い違っていることがしばしばあります。結果として、記録が残っていたとしても、それが事実と一致しているかどうかを確認する作業は不可欠です。
HDDの正しい順序はハードウェアRAID であれば、おそらくRAIDコントローラーのSATA / SASソケットの物理的な順序と一致するので、HDDとケーブルにしっかりとラベリングをし、元の状態が分からなくならないようにすることが重要です。これはソフトウェアRAIDを採用しているNAS製品についてもそのHDDスロットの順序において同様のことが言えます。
RAID レベルの妥当性については、実際のところ、予測される構成でRAID 対応の復旧ツールにかけてみて、データがもっともらしく見えるかどうかでしか確認しようがありません。加えて、RAIDレベルによっては、付随するパラメーターが分からなければRAIDアレイの構築ができません。そのため、推論に従ってそれらの情報を複数のHDDから複合的に収集する必要があります。
例えばRAID5 のアレイを構築するためには以下の情報が必要です:
- ストライプサイズ
- ブロックの並び順
加えてRAIDコントローラーごとの違いが特に顕著な以下の情報がすべてのRAIDレベルにおいて必要です:
- データ開始位置
- データ終了位置
これらの情報を漏れなく収集することではじめてRAIDアレイの構築が可能になります。
どのようにして情報を得るか
RAIDアレイを構築するための情報の収集元は以下のものが考えられます:
- RAIDコントローラーの仕様書
- インターネット検索
- 手動解析
- 自動解析
RAIDコントローラーの仕様書やインターネット検索で直接利用できる情報が見つかればよいですが、そうでなければ手動もしくは自動でHDDに書き込まれるデータを参照して解析するしかありません。
手動解析で必須のツールはHDDに直接アクセスできるバイナリエディタです。これには HxD などが該当します。当然ながら R-Studio などのRAID対応の復旧ツールにも搭載されています。
これらのツールを使って Finding RAID parameters にあるような手順で解析します。
また、運が良ければ、自動解析ツールで RAID を構築するために必要なデータを得ることができます。自動解析ツールには ReclaiMe Free RAID Recovery などがあります。また、R-Studio などのRAID 対応の復旧ツールにも搭載されています。
ただ、これらのツールでうまく解析できるかどうかは各ソフトとRAIDカードとの相性次第です。
いずれの解析方法でも、異常が出ている実機ではなく、正常だとわかっている解析用の環境から情報を収集するほうが安全で効率的です。
同じように壊す
データ復旧のための解析においてしばしば求められるのが、「同じように壊す」技術です。これは、異常が出ているシステムと正常なシステムの違いを観察して、正常なシステムを異常が出ているシステムに近づける技術です。
この技術があれば、手順が正しいことを確認しながら、データの取り出し方法を段階的に確立することができます。この非常にシンプルな例は、正常なシステムで得た情報を使って正常なシステムからデータを取り出す手順を確立した後に、異常が出ているシステムと同じように例えば1台が欠損した状態から取り出す手順を試すことです。
いよいよ本番
解析作業を経て必要な情報が出そろえば、あとは以下の手順でデータを取り出すことができます:
- RAID アレイを構築するのに必要なHDD を確保する
- RAID アレイを構築する
- データを取り出す
RAID アレイを構築するのに必要なHDD の確保において重要なのは、RAID0 以外のRAID レベルではすべてのHDD が健常である必要はないということです。各RAIDレベルで何台のHDDの故障が許容されるかを把握しておくことは重要です。
作業全体の基礎にある考え方は 壊れたHDD からデータを取り出す方法 と同じです。
RAID機器のデータ復旧で異なるのは以下の2点です:
- RAIDレベルに応じていくつかのHDD の故障が許容される
- RAID アレイを構築する手間がかかる
たとえば、単体のHDDに対するデータ復旧と同じように、RAIDアレイを構築しただけではパーティションが確認できない場合には、パーティションテーブルを修復する必要があります。異なるのは、パーティションテーブルの修復対象がHDDではなく、RAID アレイであるということです。
別の言い方をすれば、RAID アレイ全体の容量が1台のHDDに収まるのであれば、RAID アレイの内容をHDDに転写してしまえば、それ以降の工程は単体のHDDからデータを取り出す作業そのものになるということです。
まとめ
RAID機器のデータ復旧方法には、特定機器に特化した方法と、どの機器にも使える汎用的な方法があります。どの機器にも使える汎用的な方法では、RAID機器の解析作業が必要です。
データ復旧のための解析作業には「同じように壊す」技術が求められます。
解析作業によって得られた情報をもとにRAID アレイを構築することに成功すれば、あとは単体HDDのデータ復旧作業と同じ考え方でデータを取り出すことができます。
関西方面で幅広く展開されている、ソフト開発会社の担当者様からの電話で、「Linuxサーバーのデータ復旧は可能か?」という問い合わせが有りました。
OKと答えると、「関東のお客様から電話をさせるから、話を聞いてくれ」とのことでした。