RAIDコントローラが故障した場合にどのようにして復旧するか

RAID

RAIDシステムでHDDが壊れたらそれを交換すればいいのはわかる。しかしながら、RAID コントローラが故障した場合にはどうすればいいのかが気になる。そんな方におすすめの記事です。

RAID 構成情報はどこにあるのか

RAIDコントローラが故障してそれを復旧したい場合は、やはり、RAIDコントローラを交換しなくてはならないと考えるでしょう。そのときに問題となるのがRAID構成情報の格納されている場所です。
ハードウェアRAIDというくらいだから、RAID コントローラ内の不揮発性メモリに構成情報が格納されている気がするかもしれません。この認識も基本的には間違ってはいません。
しかしながらその直感に反してほとんどのRAIDコントローラはRAID 構成情報を HDD に格納します。

なぜRAID構成情報をHDD に置くのか

「なぜRAID構成情報をHDD に置くのか」という問いに対する回答は、この文書を読んでいる人にとって自明であるように思われます。なぜならその理由は、RAIDコントローラ内にしかRAID構成情報が保持されないような設計では、RAIDコントローラが故障したときに安全にそれを交換することができないからです。

こうなるとRAID構成情報を不揮発性メモリにも保存しておく意義が気になるところです。RAID構成情報を不揮発性メモリにも保存しておくと、現在のHDD構成になる前にどういう構成であったかということを確認し、変化を検出することができます。変化が検出できれば、変化の前後でどちらが正しいのかをユーザーが選択してから、正しいとされる情報を用いてRAIDアレイを構築することができます。

どのようにRAID構成情報が書き込まれているのか

RAID アレイのメンバであるHDDにどのようにRAID構成情報が書き込まれているのかは、実際のところRAIDコントローラごとでかなり違っています。ひとつひとつ例を挙げていてはとてもきりがないので、ここでは安くてありふれたRAIDコントローラを例として取り上げます。
例として取り上げるのは AREA SD-PESA3-2RL です。この製品は2012年に発売され、2016年の現在でも価格.comの売れ筋ランキングで4位です。本稿作成時点での実売価格は2,500円程度です。「安いRAIDコントローラは構成情報がRAIDコントローラにしかない」と言われることがありますが、このRAIDコントローラの構成情報はHDD上に存在します。当然、同一型のRAIDコントローラと差し替えれば構成情報を引き継いで使用できます。
(あくまで安くてありふれたRAIDコントローラの例として出しています。おすすめ製品というわけではありません!)

このRAID コントローラカードに使用されているコントローラチップは Marvell 88SE9128 です。このRAIDコントローラでRAID1のアレイを構築すると、HDDの先頭は以下のようになります。

ご覧の通りなにも書き込まれていません。以前別の用途で使っていたHDDを使用した場合には、以前のデータがそのまま残されます。
有効なデータが書き込まれ始めるのは32768 セクタ目からです。

ここに書き込まれているのは マスターブートレコード です。RAIDアレイにはUbuntu をインストールしてあるので、”GRUB” という文字列が見えたり、第1パーティションの識別子がext2/3/4を示す0x83 になっていたりします。

これをRAIDコントローラ経由でUbuntuが解釈すると以下のようになります:

このように先頭から少し離れた位置からデータが開始されるので、このコントローラのアレイのメンバはたとえRAIDレベルが1であっても、RAIDコントローラを介さずにHDDを直接PCに接続するとOSからはパーティションを識別することができません(ディスク1):

ところで、肝心のRAID構成情報はどこにあるのでしょうか。これはHDDの末尾にこのようなデータが書き込まれた箇所があります。おそらくこれがRAID構成情報だと思われます。

つまりRAIDコントローラを交換すればいいという結論なのか

この問いには自信をもって「はい」と答えたいところですが、実際のところ以下のような不安要素があります:

  • この世のすべてのRAIDコントローラがHDDに構成情報を保存しているのかはわからない
  • RAIDコントローラが故障時に構成情報をも破壊してしまっている可能性がある

結果としてデータを損失せずにSATAやSAS RAIDコントローラを交換する方法は? – Adaptec Support KB (よくある質問) にあるように以下のようにしか言いようがありません:

ご注意:お手持ちのRAIDアレイ内のデータの安全性を確保するため、以下のプロセスを開始する前に完全なバックアップとベリファイを実行してください。アダプタカードの設定を変更する時は、常にデータ損失の危険性があります。

RAIDコントローラの交換作業には細心の注意を払う必要があります。

関西方面で幅広く展開されている、ソフト開発会社の担当者様からの電話で、「Linuxサーバーのデータ復旧は可能か?」という問い合わせが有りました。
OKと答えると、「関東のお客様から電話をさせるから、話を聞いてくれ」とのことでした。

» 続きを読む