RAID5はなぜリビルドに失敗するのか

某社のいつかのストレージ 孤独のIT
某社のいつかのストレージ

RAID5を最後に使ったのがもう何年前か思い出せないけーのです。

「RAID5でリビルドに失敗した」という話はもう20年以上前から良く聞く話です。

RAID5を使ってしまうような現場ではバックアップを取ってないことが多く、「RAIDが壊れて読み書きできなくなってしまい、バックアップもない」という破滅的な状況になってしまうから、インパクトが強くて印象に残っているのでしょう。2つ以上のHDDが偶然にも同時に壊れるなんて、運が悪かったですね…

…本当にそうでしょうか?

忙しい人向けの結論

RAID5は壊れやすいので絶対に使わないようにしましょう。

あらすじ

ある有名な方が、HDD 6本で構成したRAID5のストレージが壊れてしまったとツイートしていました。かなしい…

「RAID5を使うべきではない」というのはITエンジニアの間では当たり前になりつつありますが、なぜ使うべきでないのか、非エンジニアの方にもわかりやすくまとめてみようと思います。

RAID5は壊れやすい?

HDDは気付かないうちに壊れているかも知れない

RAID5で破滅的なトラブルになるのは同時に2台以上壊れる偶然が起きるからではなくて、HDDに既に壊れてる領域があっても検査しないと検知できないからなので、壊れる(壊れてる)確率は思ってるよりずっと高いんですよ…

このようにツイートしましたところ、結構反響がありました。以下に詳しく解説します。

HDDは、いつも使っていて一見完全に動作しているように思える場合でも、HDDの一部分は既に壊れているなんてことがあります。

特に大容量のHDDでは、「ずっと昔に保存したファイルをずっと読み書きしてない」なんてことはよく発生することです。ここで、そのファイルが保存されているディスクの一部分が物理的に経年劣化したり、ヘッドがうまく動かなくなったりするなどが原因で、その一部分を読み書きできなくなることが発生します。この場合、その読み書きできない一部分を実際に読み書きに行かない限り、壊れていても全く気付かないという状況になります。お前はもう、死んでいる

RAID5のリビルドは当然のように失敗する

RAID5でHDDのうち1台が「お前はもう、死んでいる」状況に陥っていることに気付かぬまま、別のHDDの故障を検知した場合、故障が検知されたHDDを新品に交換してリビルドをかけてもリビルドは確実に失敗します

そうなった後は、製品やソフトウェアの造りにもよるでしょうが、基本的には全データが復旧不能になると考えたほうが良いでしょう。こわいですね。

他にもリビルドに失敗しやすい理由として、RAIDに使用されるHDDは「同時期の同メーカーの同型番のもの」が用いられることが多いため経年劣化による故障のタイミングが合いやすいリビルド時には通常利用と比べて高い負荷がかかる、などが挙げられます。

RAID5は1台壊れた段階で既に冗長性がゼロなので、基本的にリビルドには失敗して破滅します。こわいですね。

定期的な検査について

もちろん、そんなことはRAIDストレージメーカーやソフトウェアRAIDのプログラマもわかっているので、「パトロールリード」や単に「ベリファイ」などと呼ばれる「HDDのすべての(使用済みの)領域を読み込み検査する」という手法が用意されている場合があります。

これは、例えば毎週すべてのデータが読み出せるかをチェックして、故障が発生していたらすぐに検知して対処できるようにするためのものです。しかし、これを忘れずに設定して毎週確実に実行し、故障が発生しているか確認する(あるいは故障を検知したら確実に通知する)、というのは思いの外難しいものです。

少なくとも、私なら実行を忘れたり設定を面倒くさがったりしくじったりする自信があります。いや、会社ではちゃんと自動化してますけどね…個人でやってるとおろそかになりがちです(実際、かつての自宅ストレージはそうでした)。

多くの人がRAIDの定期的な検査の必要性を知らないのが、リビルド失敗多発の原因だと思います。

RAID5のリビルドはバクチ

しかも、定期的な検査をしっかりやった場合でもRAID5は結構な確率でリビルドに失敗すると予測できます。こちらのページが詳しいです→ RAIDレベルの話: 1+0と6はどっちが安全か? – たごもりすメモ

上記ページでは、HDD 9台の構成でRAID5のリビルドに失敗する確率は1.85%と計算されています(正確にはリビルドの前後8日間でもう1台が壊れる確率)。大事なデータを預けるのなら、結構なバクチですね。

バクチを打ってリビルドかけるくらいなら、素直にバックアップから戻す運用のほうが時間もかからず良い場面も多そうです。バックアップを取りましょう

突然死を防ぐだけ(1台でもHDDが壊れたら即諦めて新規構築してバックアップから戻す)なら、RAID5でもいいかも知れません。知らんけど。

RAID5はHDDが多いほど、容量が大きいほど壊れやすい

RAID5は性質上、HDDが多いほど壊れやすくなります。

RAID5は、同時期に2台のHDDが壊れると破滅します。言い換えると、1台のHDDが壊れ、交換し、リビルドしている間に別のHDDが壊れると破滅します。台数が多いほうが、どれか1台が壊れる確率は高くなります。

また、HDD 1台あたりの容量が大きいと、定期的な検査やリビルドにかかる時間が長くなります。そうなると検査の間隔は長くなりがちですし、リビルド中に壊れる確率は上がります。

考えてみれば当然なのですが、案外言われないと気付かない部分です。私は昔、気付いていませんでした。

普通はRAID不要、バックアップが重要

普通の人が使うならRAID5はもちろん、RAID自体必要ないです。容量を稼ぎたいだけならJBODで十分です。いいからバックアップしてください。お願いします。

もしあなたが100TBのデータを持っている場合は普通じゃないのでがんばりましょう。

NAS製品を使いましょう(どうしても必要なら)

もし個人や小規模な会社で、HDD1台に収まらない大容量が必要で、どうしてもRAIDを使いたいといった場合は、パトロールリードなどの定期検査と異常時の通知機能がしっかりしていて、24時間稼働することが前提のNASアプライアンス製品を購入するのが良いと思います。

初期設定をちゃんとやった上で、24時間稼働していれば確実に自動で定期検査が行われますし、NAS製品ならメール通知等が失敗してもLEDやビープ音で知らせてくれます。


こういったNASを、PCのバックアップ先にするのが良いでしょう。PCには十分なストレージを搭載しておきます。ほとんどの場合は外付HDDなどで十分補えるはずです。

NASにオリジナルデータを置くのなら、NAS自体のバックアップも考えておく必要があります。NAS製品自体にバックアップ機能が付いているので、バックアップ先のストレージを含めて予算を取りましょう。そうなると、実際には2台買わないといけないような気がします。高くつきますね…しかし、バックアップは重要です。

使うならRAID6を使うべき

普通じゃない人や会社がRAIDを使っていく場合には、RAID6を使いましょう。

パフォーマンス要求に応じてRAID10も選択肢に入るでしょうが、RAID6の方が圧倒的に安全です。サーバー等で必要ならRAID6がオススメです。上記でもリンクしましたがこちらが詳しいです→RAIDレベルの話: 1+0と6はどっちが安全か? – たごもりすメモ

ちなみに私の場合、会社ではZFSのRAID-Z2(RAID6相当)とトリプルミラーを使っています。ZFSいいよZFS。今ならRAID-Z3もあるよ。

クラウドストレージは安全だけど使い方は工夫すべき

Google DriveやiCloud、OneDrive、Dropboxなどのクラウドストレージは、私達が手元で運用するストレージよりも安全であることは自明です。少なくとも、物理故障に対しては。

世界の天才が集まるグローバルIT企業がとんでもないコストをかけて設計・運用しているのですから、私達が手元で運用するよりも安全でないはずがありません。

とはいえ保存容量の制限もありますし、ネットワーク帯域の制限もあります。また、一時的な障害で使えなくなったり、万一アカウントを停止されてしまった場合など、別のリスクもあります。

そのあたりを踏まえると、自分で作ったファイルなどの重要なデータのみ、バックアップとして保存するのがベストでしょう。自動同期されるようにしておくと便利です。

ただし、ソフトウェアのバグによってファイルを全て失う事故も過去に発生しているので、本当に重要なデータは他の手段でもバックアップしておきましょう。

あとがき

RAID5に限りませんが、なんであれ壊れるときは壊れますので、独立したバックアップは必ず自動化して取っておきましょう。重要度に応じてバックアップを多重化するのも良いですね。

なお、バックアップ先のメディアも勝手に劣化して壊れるので、定期的に検査したり新しいメディアに移したりする必要があります。特にSDカードとかはヤバいのでバックアップには不向きです。長期保存する際は、適したメディアと定期検査を考慮しておきましょう。まあ、考慮したところで、大抵の人間は面倒くさがって定期検査を怠ってデータを喪うので、容量と予算が許せばクラウドストレージに置いておくほうが安全です。

RAIDに金と手間をかける前にバックアップに金と手間をかけましょう。RAIDを使うかどうかはその上で。

タイトルとURLをコピーしました