こんにちは。不可思議絵の具です。
いつもはハウツー記事ばっかり書いていますが、たまにはコラムっぽいことも書いてみます。
「RAIDでも壊れる時は壊れる」という話です。
2017年12月にNICOSカードでシステム障害が発生して、二重請求や請求遅れなどの問題が発生したことがあったのですが、根本原因はシステムのハードディスクが3台同時に故障したことによるものでした。
文面から察するに、RAID6(2台までなら壊れて良い)をミラーリングせずに使っていたのかなぁ?
(ミラーリングしてたらすみません)
以前サラリーマンSEをやっていた私としては、聞いただけで背中から汗が吹き出し、胃がシクシク傷んでくる凄惨な事件です。
NICOSカードのシステム運用担当者さんの心中、お察し申し上げます。
合掌(-人-)
さて、マクラが長くなってしまいましたが、書きたかったのはNICOSカードがどうこうではなく、「RAIDでも壊れる時は壊れる」という話です。
3台同時に故障は全然ありえる
ネットの掲示板や、はてなブックマークのコメントでは
ハードディスクが3台も同時に壊れるなんて天文学的数字の確率のことが起きるワケねぇ!
言い訳乙www
なんて罵る風潮があったりしたようですが、私の今までの経験から考えると
「実用上、全然ありえる」
と思っています。
以前、業務用サーバーのRAID5が2台同時に故障して復旧不可能になったことがあります。
業務用サーバーのハードディスクが1台故障したので交換用ディスクを手配、保守サービス業者さんと共に交換作業をしましたところ、リビルド中にもう1台が故障してリビルドに失敗。
「元の正しい状態」に戻せなくなりました。
OSは動くので表面上は稼働しましたが、データの完全性が失われてしまったので、OSの再インストールとバックアップからの復旧、最新データの再入力などの対応を余儀なくされました。
リビルドが一番危ない
RAIDは「複数台のディスクを1つに束ねて、1台2台の故障なら交換すれば復旧できるようにする」仕組みです。
故障の検出方法としては、
- ふだん暇な時に、読み込みできるか点検する(パトロール・リード)
- ハードディスクの自己診断機能の結果を確認する(S.M.A.R.T.)
といったことをして、異常が見つかればディスクの束から切り離します。
故障の復旧は、
- 壊れたディスクを新しいディスクに交換
- 今まで他のディスクに分散記録されていた「データ断片(パリティ)」をかき集める
- かき集めた断片を新しいディスクに書き込む
という形で元通りにします。これを「リビルド」と呼びます。
このように仕組み上は合理的なRAIDですが、一番危険なのがこの「リビルド」です。
では、なぜこのタイミングが一番危ないのか、理由を2点挙げます。
リビルド時が一番危ない理由
①復旧用データが実は壊れていることがある
まず「あるある」なのが、パトロールリード(検査読み込み)の設定忘れです。
普段からパトロールリードを実施していないと、一見正常に見えるディスクでも、部分的に壊れているのが発覚しないことがあります。
そんな状態で故障が検知されると、いざ、生きているディスクからデータをかき集める時に、肝心のバックアップ部分だけが壊れていて復旧できない、なんてことがあります。
パズルのピースが無くなり、永遠に完成しなくなった状態です。
「初めての故障のはずなのに、なんでリビルドに失敗するんだ!」
といった感じで、故障して始めてRAIDが不完全だったことが判明することがあります。
②リビルドの負荷で故障が同時多発する
同メーカー・同時期に製造されたディスクは故障時期がカブることが多いです。
RAID構築時は複数台のディスクを一度に購入しますので、注意しないと同一メーカーで製造ロットの近い個体を揃えてしまう可能性があります。
リビルドはディスク全体を読み込む機械的な負荷が高い処理なので、リビルドをキッカケに他のディスクも寿命を迎えて故障が同時発生することがあります。
RAID5なら2台目が、RAID6なら3台目がリビルド中に故障してトドメを刺す、と。
リビルド時の故障への対策
どちらの壊れ方も、復旧手段のはずのリビルドが原因でトドメを刺してしまうという、なんとも皮肉な壊れ方です。
RAIDはリビルド時の故障への対策がキモになります。
では上記2点の弱点、どのように対策を取れば良いでしょうか?
①パトロールリードを設定する
まず、RAID導入時にパトロールリードの設定を必ず確認すること。
RAIDカードによっては初期値が「無効」になっている場合があります。
上手く動き出したら設定なんて見ないので、最初が肝心です。
②ディスクのメーカー・ロットをバラして購入
次に、以下の2点を意識してディスクを選ぶようにします。
- 各台、可能な限りメーカーを変える
……と言っても、今となってはWestern Digital、日立(HGST)、東芝、Seagateくらいしか選択肢がありませんが…。 - 同メーカーでも製造時期の違うものを選ぶ(製造ロットをずらす)
また、同メーカーでもモデルを分けるのも有効でしょう。
(例えば、Western Digitalを複数台同時購入するにしても、BlueとRedに分ける…など)
モデルによって品質基準が違うので、故障時期をずらす効果があります。
通販で買う場合は、個体ごとにお店を変えると良いのではないでしょうか。
(仕入れ時期の違い=ロットの違いに期待する)
まとめ
RAIDは完全故障してしまうとデータの完全性が失われるので、表面上はシステムが動作しているように見えても、実質、使い物にならなくなります。
どこが壊れているか調査するのは時間や手間も非常に掛かりますので、現実的にはRAIDをフォーマットしてバックアップから復旧することになります。
バックアップも無い場合、専門業者さんに依頼するしかありません。
その場合の復旧費用は大変な高額になります。
RAIDはあくまで業務をストップさせない為のものでしかなく、バックアップではありません。
RAIDカードが壊れて復旧のスキもなく故障する場合もあります。
(しかも、同じ型番のRAIDカードを入手できないかもしれません)
RAIDを過信せずに、別途バックアップを取ったほうが良いです。
では(^O^)/