RAIDを同一ロットのHDDで組むのは禁じ手

RAIDを同一ロットのHDDで組むのは禁じ手#interest_ae

おがた (@xtetsuji) です。

同一ロットのHDDでRAIDを組むと良いよとパソコンショップが喧伝してセットで売るというニュース、最近良く目にするようになって気になっています。

強制するわけではありませんが、個人的に同一ロットのHDDでRAIDを組むことは避けたほうがいいです。特に、知識のあるパソコンショップが率先してこのようなキャンペーンを組むことに疑問を覚えるというか、どういう意図があるのか理解に苦しみます。

  • 2019/10/29 追記:Twitter で、RAID0 時代の名残りを指摘していた方がいたので、文末で引用と解説を書きました
  • 2019/10/29 追記:引用記事の主要部分のブログ内引用をしました
  • 2019/10/29 追記:「相性問題」について追記しました

同一ロットのHDDは同時期に壊れる

なぜ同一ロットでRAIDを組んではいけないのか。それは端的に言えば、同一ロットのHDDは同時期に壊れることが多いからです。

この事について触れたプロのページはあまり見つからないようなんですが、例えば以下のページでその危険性に少し触れています。

(下記引用、太字はxtetsuji)

 RAID 5では、ボリュームを構成するドライブのうちの1台の障害には耐えられるが、このドライブを交換し、再構成を行なう前に2台目が障害を起こすと運用継続が不可能になる。それに対応し、2台までの障害に耐えられるようにしたのがRAID 6だ。確率論的な考え方からすると、2台のドライブが同時に故障する可能性は相当に低いということになるはずだが、実は現実は必ずしもそうではない。一般に、RAIDを構成するドライブはユーザーがバラバラに買い集めてくるわけではなく、ベンダー側であらかじめ構成して納入されることになる。ドライブの手配状況にもよるが、通常はほぼ同時期に製造されたドライブでRAIDが構成されることになるし、現実にはRAIDを構成する全ドライブが全て同一ロット製品ということも珍しくはない。この場合、ロット固有の製造不良などがあった場合には全ドライブが全滅する可能性もある

不良とまではいかなくても、同一ロット製品では故障時期もおおむね似たようなタイミングになる傾向は否定できない。RAID 5を構成するドライブのうちの1台が障害を起こした場合、このドライブを新品のドライブと交換した上で、データの再構成を行なうことになる。この場合、既存の全ドライブのデータから障害を起こしたドライブに記録されていたデータを復元する、という作業が行なわれる。これは、既存の全ドライブに対する全データ読みだし処理であり、ドライブに対してかなりの負荷を与える処理になる。複数のドライブがたまたまタイミングを同じくして障害を起こす確率は確かに低いが、現実の運用場面では、1台のドライブが障害を起こし、その復旧作業中に連鎖反応的に他のドライブが障害を起こすことでデータ喪失が起こることがある。あまり厳密ではない言い方になるが、障害を起こしたドライブと同一のロットでほぼ同様の使われ方をしていた他のドライブはその時点でほぼ“寿命が尽きかけて”おり、再構成のために生じた過大な負荷に耐えきれなくなる、といった状況だ。

ちゃんとした統計は無く、この記事を書いた方の肌感覚だからか歯切れの悪い文章になっていますが、可能性として考慮する必要は感じます。

私がこんなことを言っても、「完全に同時には壊れないでしょう」とか「相性問題とか考えたら同一ロットのほうが安心」という人はいるでしょう。

あくまで私の経験ですが、実際に同一ロットのHDDがほぼ同時に故障した例に数回遭遇しています。私はストレージ業者に務めたこともない平凡なプログラマーにすぎないですが、そんな私でも10年程度の業務経験の中で何回かこのようなことを経験しているので、確率的には無視できない高さじゃないでしょうか。

「完全に同時に壊れたの?」と言われると、さすがに完全同時ではありません。ただ、一番最短だったのが、1台目が壊れたあとに2台目が壊れるまで40分弱という事例がありました。40分だったらすぐ入れ替えられるという人もいるかもしれませんが、これが発生したのは深夜で、しかも遠方にあるデータセンターでした。これだとさすがに40分では太刀打ちできない。

この事故のあとは2日くらい徹夜でした。

RAID5のシステム自体が壊れると復旧はほぼ不可能

ハードウェアであれば故障すれば修理すればいいわけですし、例えば3本のHDDのRAID5のシステムで1台のHDDが壊れた場合、すぐに故障したHDDを取り替えれば済みますし、それがRAID5の目的である耐障害性の向上でもあります。

ただ、RAIDシステム全体が壊れると復旧は現実的に不可能と思ったほうがいいかもしれません

RAIDにあまり詳しくない人向け。話を単純に、RAID5で3本のHDDを搭載している場合とします。この場合、1台のHDDの故障の場合はデータを取り返すことができます。これは他の2台のHDDに故障した1台のHDDに記録してあった情報を分散して記録しているからです。これをパリティといいます。パリティはどのHDDにも他の2台のHDDの記録情報が分散されていて、1台の故障に耐えることができます。ただ、この構成の場合、同時に2台のHDDが故障した場合はRAID5を通常の方法で復旧させることができなくなります。

色々なRAIDがありますが話を単純化して、前述のような3本のHDDのRAID5で2台のHDDが故障した場合、どのように復旧すればいいでしょうか。

例えば、故障したHDDのうちの1台の故障の原因がディスクの記録面(プラッタ)の問題ではなく、例えば回転軸などの別の問題でかつ、故障した後に変なデータをHDDが書き込んだりせずおとなしく停止した場合、回転軸などの部品を取り替えることでHDD自体のデータを復旧させることができますが、これはよほど奇跡的な場合だと思ったほうがいいでしょう。

実際にプラッタの故障でなくても、現代的なOSは記録メディアの劣化防止や応答速度の向上のために書き込み命令(write(1)など)を暗にバッファするもので、いきなりHDDが停止したらプラッタに書き込まれている磁気情報に一切の不整合がないということはないでしょう。Linuxユーザにはおなじみかもしれませんが、ファイルシステム上でこれを解消するのがfsckです。ただfsckはファイルシステムレベルの不整合の解消であって、RAID5のパリティが分散されたHDDの1台を取り出して磁気情報を何かするということは想定外です。

つまり、3台のHDDで構成されたRAID5のうち2台が同時に故障するというRAID5システム自体の故障には、手軽な方法で復旧することはできないということです。

実際、故障HDDからデータを復旧させる業者がたくさんいることをご存知の方はいるかもしれません。ただ、これらの業者の多くが普通に対応できるのは、プラッタ以外の破損で故障した単独のHDDを駆動するようにして、ファイルシステム上の不整合を可能な限り復旧することです。

RAIDシステムの破壊の場合、対応できる復旧業者は限られ、かつ通常のHDDの故障よりも高額な修理費用を払ったうえで調査に数週間数ヶ月かかった挙句、復旧不能という判断を下されることも多いとききます。

実際、データ消失事故を起こしたサービスの動き方をウォッチしていると、このRAIDシステムの破損ではないかと思わせるような事例もあります。

繰り返し言いますが、同一ロットのHDDだと本当に同時期に壊れると思ったほうがいいです

初期不良を取り除くエイジングは長年の経年劣化には対応しない

電化製品の初期不良を取り除く「エイジング」という言葉を知っている方もいらっしゃると思いますが、これはそのロット独特の長期間使用における故障を見抜くものでは当然ないということです。むしろ初期不良品が取り除かれることによって、同一ロット製品が長い間平行して稼働する事が多いという悩ましい時代になりました。

端的に表現すれば、いわゆる「ソニータイマー」のようなもの、といえば納得できるでしょうか。

RAIDとバックアップは違う

よく見かける勘違いなのですが、RAIDとバックアップは明確に違います。「そりゃ当然でしょ」という読者の方は安心ですが、念のため。

RAIDは複数台のHDDを一台のHDDに見立てた時に、その仮想的な「一台のHDD」の耐障害性を高めるものです。3台のHDDの故障率がそれぞれ p1, p2, p3 だったとき、少なくとも2台が同時期に壊れる確率はざっくり計算で p1p2 + p2p3 + p3p1になるでしょう。

故障率が p の1台のHDD の内容を故障率が 3p2 (pが十分小さければ 3p2 << p)の別の高寿命HDDにデータを移して置き換えたといっても、これをバックアップだという人はいないでしょう。RAIDがバックアップだという人は、これをバックアップだというくらい奇妙だということです。

バックアップの場合はデータの上書き事故の場合などに取り返しが付きますが、RAIDではそれもできません。NetAppなどの商用ストレージ製品にはナイトリーバックアップなどの機能があったりしますが、これも商用ストレージ製品のシステム全体の故障には無力ですし、ディザスタリカバリなどにも対応できません。

だれが同一ロットのHDDによるRAIDを勧めているのか

謎なのは、この同一ロットのHDDによるRAIDを勧めている人の顔が見えないということです。私が知らない合理的な理由があるのであればぜひとも勉強したいので情報お待ちしています。RAIDの夜明けであれば別として、2015年でRAIDによるHDDの相性問題という話も聴きません。

(2019/10/29 追記)上記で「相性問題という話も聴きません」と書きましたが、使うHDDの回転数を合わせた方が性能を活かしきれる、古いRAIDコントローラーがそもそも特定のHDDに対応していない場合がある、といった事象はあります。それがベンダー側から明示されていれば仕様であって「相性問題」ではないのかもしれませんが、そういう広義の現象を「相性問題」として捉えたい場面はあるでしょう。

私の考えとしましては、パソコンメーカーは同一時期の故障を回避するような別ロット・別メーカーのHDDを組み合わせ、かつ相性問題などもない構成のRAIDを見繕って売るべきではないでしょうか。

一人でも多くの人を、データ消失のリスクから遠ざけたい。それが私の願いです。

[追記] RAID0時代の名残り?

Twitter で RAID0 との関連を指摘してくださった方がいました。ありがとうございます。

 

「当初」がいつ頃かは議論の余地がありますが、Windows95からWindows2000の時代は、今あるような何百GBや何TBのストレージは少なくとも廉価品は出回っておらず、1つの大容量パーティションを得るためには RAID0 を使っていたようにも思います。当時の私は学生で、RAIDを組むような財力もなかったので、それほどピンとは来ていませんが、PC雑誌などの雰囲気はおぼろげながら思い出せます。

確かに RAID0 は、構成する1台が故障すれば機能を失ってしまうので、同時期に壊れること自体にはそれほど深刻にならなくてもよかった(片方のHDDだけ生き残っても現実的に意味がない)のかもしれません。

 

 

2 thoughts on “RAIDを同一ロットのHDDで組むのは禁じ手

  1. からたち

    同一ロットを使わないのが、RAIDのつぼ。
    売るため 大事な部分を あえて 言わない。

    返信
  2. ピンバック: NASで使うHDDの選定 | あくまで暫定措置としてのブログ

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください