ストレージサーバーのデータを全てロストしたお話と、もしもの時の復旧検証

東京から帰省した日、BPN-DE350SS-SVを買ってきたんですよ。
アウトレット品で安くなってたので・・・。

ストレージサーバーの電源を落として、いざHDDの搭載先変更作業を慎重ーーーーーに行なったんですよ。

そうしたらですね、ファンレス化していたサーバーちゃんの電源、落ちてなかったんですよ。
思いっきり電源入っていまして。。。。。

RAIDアレイが崩壊しました。
この時RAIDを削除して再構築してデータを救出しようと思っていました。

RAIDの削除、再構築だけであれば中のデータは基本消えずに残っている(全ての設定が以前のものと一緒であることが前提)はずであるのでいけるはず。。。

結果ですが、RAID構築後にパーティションは見えるもののマウントできず・・・。
ストライプサイズが違う雰囲気を感じて再起動を行いました。

WebBIOSでRAIDを構築し直そうとしたところ・・・Background Initialization走ってんじゃねぇかこれ!!!!!

この時点でパーティションがぶっ壊されてるので全てご臨終です。
さようなら。

で終わると思うか!
故人や思い出の写真、その他大事なエロ画像とか諦めるしかない!

というわけで障害試験を行うことにしました。
これから運用していくのはRAID5 ストライプサイズ32kbの1ボリューム。
HDDは8本使用します。

先ほどのようにRAIDをぶっ壊します。
ここから検証は始まるのです。

 

※失敗例も一緒に更新していますので一度読んでからやってくださいね。
※データの復旧をお約束する物ではありません。

【環境】
LSI MegaRAID
HDD8発
RAID5 1Volume(全ディスク使用)

【やりたいこと】
不慮の事故でDISK2発以上がRAIDから外れるような事態に発展。
データが諦められないので、なんとしてでもデータロストなしで復旧させたい。
前回は、RAIDを削除して再構築をし直したが、BADになっているDiskを先にGoodに戻してInportしたらどうか。

ーーーーーーーー検証開始ーーーーーーーー

最初の画面の左側メニューにある、[Physical View]を選択すると、Backplaneに接続されているHDDの一覧が表示されます。

この画面ではOnline(異常がないDISK)と、不慮の事故でRAIDから外れてしまい、Unconfigured BadとなったDISKが認識されています。
この画面のままで、UnconfiguredBadとなったディスクを正常なDISKとしてマークさせていきます。(このままでは再度ディスクとして使用不可能なので)

[FOREIGN]Slot:3,SATA,HDD,1.818TB,UnconfiguredBad]

こいつから作業していきます。


該当Diskを右側の一覧から選択すると上のような画面が出てきます

Locateを選択してGOをクリックすると、該当DiskのステータスLEDが点滅してくれますが・・・
今回の環境にはそのLEDが無いので基本使いません。あればDiskスロットが特定できます。

本命は「Make Unconf Good」ですので、そちらを選択してGoを押すとUnconfiguredGoodに変わります。
※RAID情報が残っているので頭に(FOREIGN)が付いたままになります。

同じ画面を見ると上の画像のような画面に。

ここは一旦Backでもどり、残りのDiskも同じように実行していきます。
全て行ったらScan DevicesをクリックしてDiskを再認識させてみます。

インポートするかどうかの確認画面が出てきましたので、Previewをクリックして中を確認してみます。

見た感じダメそうなので(どうせ検証中なので)インポートします。

・・・ですよねー(・´з`・)

では別の方法。

ホットスペアでDisk位置入れ替わっているとか、結構雑にランダムなDisk順で選択して以前のRAIDを構成している訳でも無ければ、
割とSlot番号が若い方から順に入れて問題なさそうだけど・・・。

今回は1つのRAIDを全ディスク使って構成しているので、このまま若番からやっても問題なさそう。

MegaRAIDでのDiskスロットやアレイ、VDの番号は、基本的に0スタート。
で、今回の環境はSlot番号0(最初のHDD)から順番なので、もしSlot1であればROW1、Slot5であればROW5に設定する方向で進めていきます。

上の画像と同じ画面に入ります。
Slot番号は4なので、Drive Group Missing Rowの項目、Array 0,Row 4を選択します。
※2個目のRAIDボリュームへぶち込みたい場合は、Array 1になります。

操作を反映するためにはGoをクリックします。

画像の都合でUnconfiguredBadになってますが、Slot4が正常に戻っています。
このまま他のDiskへも反映して行きます。

全部対応完了しました。
それではLogical ViewをクリックしてRAIDを確認します。

一先ずは復旧した模様ですね。(見た目は)

この後サーバーを再起動して確認を行ってみましたが、データアクセスは問題無かったですね。
この後Background Initializationが走りましたが問題はなさそうでした。

 

次っ!!

RAIDを切り直す方法

再度RAIDをぶっ壊します。(ディスクを連続でぶち抜く)

この時点でデータの読み出しは不可能で、RAID5のボリュームとしては完全にOfflineとなっています。
最初の手順と同じように、全てのUnconfiguredBadになっているDiskを全てGoodに変えていきます。

変え終わったらScan Devisesをクリックし、RAIDインポート画面を表示させ、ClearをクリックしてRAID情報を削除します。
ここでポイントになってくるのは、削除したのはRAIDの収容情報であって、中のデータではないと言うところです。

そうしたら、作成した時と全く同じようにRAIDを作成して行きます。

このとき特に注意して欲しいのは、
RAIDを削除する前と再作成時のRAID設定で、RAID LevelとStrip SizeとSelect Sizeは完全一致でないといけない

という点ですね。
RAIDレベルを変えると高確率でパーティションテーブル(データを入れる場所が何処にあるかを示す管理情報)も飛びます。
Strip Sizeを間違えると、パーティションは認識したとしても中のデータは全て破損データ扱いになります。(各Diskへとデータを分けるサイズがそもそも一致していないので。)
さらにStrip Sizeの間違いは、時間差で実行されるBackground Initializationにてデータをメチャクチャに壊される原因にもなります。
Strip SizeとRAIDレベルさえ合っていた上で、Diskの搭載位置(Slot)も入れ替わっていなければ、割と高確率で蘇生出来る模様です。
(オペレーションミスしない事が前提)

RAIDを作成すると、
「All data on the new Virtual Drives will be lost. Want to Initialize?」
というメッセージが表示されますが・・・絶対にYESを選択しないで下さい。それをした段階でロストします。

以前のStrip Sizeが思い出せない場合、分らない場合ですが・・・・
データを諦めるか、ロストも覚悟した上で下記の手順を踏んで下さい。

①最小のStrip Sizeを選択し、RAIDレベルを目的のものに設定する
②Disable BGIの値をEnableにする(今回の場合、データを破壊する原因になるBackground Initializationを行わせない為の設定です)
③SelectSizeを目的のサイズに設定する
④RAIDを作成する。(「All data on the new Virtual Drives will be lost. Want to Initialize?」は必ずNOを選択)
⑤再起動をして読み込めるか確認する
⑥読み込めなければ、RAIDを削除し、①へ戻る。

自分の環境で障害試験時はこの方法でも有効でしたが・・・。場合によっては余計データロストを招く事になると思うので・・・・
元の状態(Disk番号、ポート番号、順序、RAID構成情報)はしっかり記録することはオススメしておきます。

また、当記事に記載がある事を試してロストした場合の責任は一切負いません。
自己責任にて作業して下さい。