treedown’s Report

システム管理者に巻き起こる様々な事象を読者の貴方へ報告するブログです。会社でも家庭でも"システム"に携わるすべての方の共感を目指しています。

※https化しました。その影響でしばらくリンク切れなどがあるかもしれませんが徐々に修正していきます。 リンク切れなどのお気づきの点がございましたらコメントなどでご指摘いただけますと助かります。

自宅に必要なRAIDと自宅では不要なRAID

RAIDもかれこれいくつかの記事で話題に出してきましたが、今までの記事、
- 部長、そろそろRAIDで安心したくないですか? - treedown’s Report
とか、
- 社長、サーバに投資する予算はありますか? - treedown’s Report
といった記事で、実際のRAIDに対する考え方や使い方の一例をご紹介しました。
また「RAID5障害で最大の恐怖はバッドストライプ - treedown’s Report」でRAIDの障害(マイナーで分かりにくい)事例もご紹介しました。
これらは会社業務で利用する場合のRAIDの話です。

以前にも書きましたが、
世の中にはRAIDで安心は購入できたのに安全が購入できていないかった不幸な事例も数多くあります。
会社であればパートナー(取引先)や会社の先輩・上司などから指摘をもらえるかもしれませんが、個人やホームオフィスではそうもいきません。(頼れるものは己のみ!)

前置きが長くなりましたが、本日の記事では個人事業主/フリーランスが選択するRAIDと選択しなくていいRAIDについて考えたことをご報告します。

個人でRAIDを使う場合、かなり局所的な使い方になります。その理由をこれから(長々と)ご説明させていただきます。

RAIDが欲しい動機は?

まずRAIDが欲しいのは何のためでしょうか?ここからすべての話が始まります。またすべてはこの問いに集約されます。
個人で手に入る水準のRAIDは主に

  1. パフォーマンスの向上
  2. データの冗長化による保護

のいずれかが動機になることが考えられます。

-------ちょっと脱線した昔話-------
一昔前であれば、「1ボリュームあたりの容量の増加」という動機もあったのですが、HDD×1本あたりの容量が増大している近年ではRAIDで連結してHDD容量を稼ぐ、といった必要がありません。
HDDを連結する分だけ故障率が高くなるからです。
(私が持っている機器ではコンバインモードと呼ぶようです。)
この連結して容量増やして大容量1ボリュームを作成するという手法はWindowsNT4.0時代からボリュームセットという呼称で存在しており、HDD1台あたりの容量が少ない一昔前は有効な局面もありました。しかし、容量以外には速度は変わらないし安全性に至っては連結した複数台のHDDのうち1台が故障すれば他のディスクに記憶されているデータも読みだせなくなる(データ全ロスト)ため、バックアップが重要でした。当時は
 HDD容量<テープ記憶容量
だったので、テープで一括バックアップで備えて、HDDは容量を稼ぐことに注力する価値があったのですが、今は逆転し
 HDD容量>テープ記憶容量
となり、HDDを単純に連結して容量を増やす意味がなくなっています。むしろHDDでバックアップを取得することが定石となっており以前のHDDの立ち位置に君臨するのはSSDへと変化しています。テープは保存メディアとしていまでも魅力的なバックアップメディアではありますが。
-------昔話ここまで-------

脱線が長くなってしまいました。悪い癖です。
RAIDの目的は整理できたでしょうか?
保護か高速化のどちらを欲しているかをまず考えてみましょう。

RAIDでパフォーマンス向上をしたい場合

RAIDでパフォーマンス向上をしたいケースは、単一のHDDを用いてNASや外付けHDDのストレージとして利用した場合にI/O(読み書き)が遅いから速くしたい、という場合に利用します。
この場合に利用する代表的なRAIDはRAID0ないしRAID5(6)ないしRAID10の3種類から選択することになります。
純粋にパフォーマンスを向上させたいだけだとRAID0がベストです。パフォーマンスは単体利用に比べ、確実に向上します。
RAID0は1台の故障(読み取り不良)で全体のデータがロストしますので保護は全くされません。そこで、そこそこパフォーマンスアップとそこそこ保護というRAID5を選択する方が多数派です。

でも技術革新が進んだ現代ではちょっと考えることが一つあります。

速度だけを追求するならSSDは現実的な選択肢ではないか、という点です。
あくまでも個人の環境に限定された話にはなりますが、
SSDを選択して自分にとって十分な速度が得られるのであればSSD1点を購入してバックアップをしっかりとればパフォーマンス向上とデータ保護については及第点(上手くいけば合格点までの)レベルは享受できることが多いと思われます。
個人で買える水準(の価格帯)のNASやHDDに搭載されているRAIDコントローラはミッドレンジ・エンタープライズで利用されているRAIDコントローラと比較して期待ほど読み書きの速度が出ないことが多いです。読み書きの速度だけで考えるとRAIDを使わないSSDの使用が十分なコストパフォーマンスを発揮することの方が多いように見受けられます。
前出の"HDD連結して1パーティションあたりの容量増加を目的とするRAIDは既に過去の話"という事例と同様に、SSDの登場によってRAIDによるパフォーマンス向上だけを目的とするのも過去の話になりつつある、と言えます。

※これはあくまでも個人での調達が妥当な価格帯の製品だけでみた話です。ミッドレンジやエンタープライズ向けの製品においては、SASのHDDでRAID5(RAID6のほうが多いかも)やRAID10が現役のメインストリームです。また最近ではSSDでRAID0を構成して個人でも超高速SSD RAID0を構成する方もいます。

⇒パフォーマンスについての結論
RAIDでパフォーマンスを稼ぐならSSDでパフォーマンスを稼いだほうが幸せになれます。(きっと)

データの冗長化による保護

お待たせしました。RAIDと言えばこっちですよね。

結論から言えば個人規模でストレージとしてRAIDを使う場合であればRAID1一択です。この理由を深掘りします。

データの冗長化は例えSSDであっても単一ドライブでは実現不可能なテクノロジです。必ず装置が冗長化されていなければデータの冗長化が実現できません。
要するに1台故障でも連続稼働やデータ全ロストが発生しないようにする、という意味合いでの冗長化です。
とにかくデータ全ロストを防ぐためにRAID5(6)やRAID10を選択することになりますが、RAIDカード(RAID装置)自体は冗長化されていないので、結局NASや外付けHDDの筐体部分で故障が発生すれば、データはロストすることになります。
せっかくデータロストを防ぐためのRAIDですが、あくまでもHDDが故障した時に全ロストを防ぐだけの備えであって、NASや外付けHDD本体が故障した場合の備えではない、ということを認識しておく必要があります。
ACアダプタが故障して電源が入らなくなった、これでメーカ修理に出したがためにデータが全消去になってしまう、バックアップがないからデータの取返しがつかない、ということも考えられます。
昔から参考書には書いてあるのですが「RAIDはバックアップではない。」「RAIDはバックアップにならない。」ということは念頭に置く必要があります。

じゃあ、RAIDって何のために使うの?

と、表題のような疑問が出てきますが、「RAIDは故障時サービスの継続稼働を支援する」ために使います。しかしそれには条件があって、「使っているHDD1台に限って故障した場合」という注文がつきます。

  • RAID1:HDD2台で互いを複製しあう
  • RAID5:HDD3台(4台)で互いを複製しあう
  • RAID10:HDD4台で2台1セットの複製を2セットで持ち合う(※)

※RAID10はちょっと複雑なので、別のサイトで図解をご覧になってください。


この場合に、それぞれ許容できるHDD故障台数は

  • RAID1:1台故障⇒交換で復旧(リビルド可能)
  • RAID5:1台故障⇒交換で復旧(リビルド可能)
  • RAID10:1台~2台故障(※)⇒交換で復旧(リビルド可能)

※RAID10は故障HDDによっては2台故障で復旧不可能になります。2台1セットのペア2組で稼働しているうち、故障した2台がセット内で(セット内の同じデータを冗長している)のペアだった場合交換しても復旧できません。


これが2台故障すると、

  • RAID1:2台故障で稼働HDDは0台となり復旧不可能
  • RAID5:2台故障でリビルドに必要なパリティデータが不足するため復旧不可能
  • RAID10:2台故障で(故障が同じデータを保持するペアなら)復旧不可能(※)

※RAID10は先に書いたように、ペア内の1台づつが故障しただけであれば復旧は可能です。

個人で調達する製品に搭載されたRAIDは、HDD1台の故障なら「安心してください、動いていますよ。」と多少の余裕を見せてくれますが、2台目の故障で即アウトです。
つまり、HDD1台の故障しか耐えることしかできないと考えて差支えないです。そしてHDDの故障タイミングは人間が決めることができないので、HDD1台の故障をどれだけ迅速に復旧できるか、言い換えると、RAIDはHDD1台の故障交換をするための時間稼ぎでしかない、ということになります。

「じゃあ、個人でRAID使う意味ないじゃないか」、という声が聞こえてきます。
仰る通り、個人ではRAIDより別の冗長化を使いバックアップをしっかりするほうがコストパフォーマンスは大きいです。
玄箱やRaspberry Piなどの低消費電力な本体でNAS化している場合には2セット用意してrsyncなどで同期をお勧めします。(ここにRAIDは不要です。)

※私は玄箱Pro×2台:rsync定期同期による冗長化でフリーランスの業務用NASとしています。

つまりアクティブであるべきサービス=サーバは安価な2セットを用意することでサービス停止に備えます。どちらにしろRAIDを採用する場合でもHDDは2台以上購入するのですから、RAID代まで考慮すると同じ(か+αくらいの)投資になります。
RAIDで備えるか筐体冗長化で備えるか、の違いだけでやっていることはあまり変わりません。(またクラスタなどを入れているわけではないのでそれほど難しくありません。データ部分を定期的に複製するだけです。)
NAS1台のHDD、電源、どこが壊れてももう1台がサービスの連続稼働を保証してくれます。
(私の場合、問題はHDDの故障を玄箱Proでどう検知するか、が問題ではあります。今のところこの課題は棚上げです。)

結果として個人インフラの水準ではサービスをホストするサーバに対するRAIDはRAID1よりも安価な本体ごと冗長化するほうが扱いやすいです。もちろん本体冗長化したうえで、その1台の内部HDDがRAID1でより保護性能を上げることはより良い施策です。
ただしバックアップを収集する筐体まで冗長化して専用筐体×2台を用意するのはちょっとやり過ぎに思えてきます。RAIDを使うとすれば、この(世代の保管という意味も含めた)バックアップの格納先としてRAID1のUSB外付けHDDを1台用意してNASのバックアップをそのRAID1の外付けHDDに保存する、というのは妥当に思えます。
バックアップだからどんな問題が発生しても以下の点で許容できるからです。

  1. オリジナルデータはサーバにあるのでバックアップ用ストレージに何があってもデータロストはしない。(最悪、新しく取り直せばよい。)
  2. RAID1なら1台のHDD故障は許容できるので、バックアップの取り直し工数(手間)の省力化
  3. RAID1なら本体やRAID破損であってもHDDを取り出して別の方法でマウントすることでシングルドライブで継続利用できる、また2台のHDDが無事ならば他の製品のRAID1構成で(データそのままに)構成できる可能性が(他のRAIDレベルより)高い。

※他の製品間でRAID1構成したHDDペアがそのまま利用できるかどうかは製品に依存します。私が保証するものではありません。

⇒データ保護に関する結論
安サーバでサーバ冗長化がシンプルでよい。ただしバックアップをしっかりする前提でRAID1の採用もあり得ます。が他のRAIDレベルの採用は不要です。

で、最終的にRAIDって使わないってことでいいの?

どっこいそうではありませんよ。
RAIDを使う価値は局所的ですがあります。
その条件は、「SSDでは用意できないくらいの大容量が必要にもかかわらず、HDD単一の速度性能ではI/Oが追いつかないくらいの処理を必要とするアプリケーションが読み書きするストレージ(パーティション)を用意しなければならない場合、です。
この場合、RAID1では意味がありませんので、RAID5かRAID6かRAID10かをお好みで選定することになります。(その分必要な費用も上がりますがやむなしです。)
これだけの費用を掛けてでも使いたい/私が個人でも使いたいRAIDストレージの要件を吹っ掛けてくるアプリケーションの名前はずばり

"Hyper-V"

です。(VMWareやXen、VirtualBoxなども含む)

正確にはHyper-VのゲストOSの格納場所としてRAID5のストレージで作成したボリュームを必要とします。
なにせゲストOSを3台4台と同時に稼働させると、単一HDDではI/Oが追い付かなくなってゲストOSの性能が著しく低下するタイミングがあります。(複数のゲストでWindows UpdateのようなHDD(VHD)に書き込み処理を大量発行するタスク実行時に顕著です。)
ではこれをSSDにするとI/Oは改善するのですが、容量単価が高価なストレージであるSSDはゲストOSを3台4台と増やしていくうちに、すぐに使用率が100%近くなってきてしまいます。(さらにゲストがWindowsであればWindows UpdateのたびにVHDが肥大化してくるのです。)
単一HDDでは処理しきれないI/O性能とSSDでは賄えない容量をカバーする最良の場所はこの合い中を取った「USB3.0(eSATA)外付けHDDでRAID5(かRAID10)」が最良でした。

裏を返すと、個人の環境で上記の要件以外でRAIDで保護したい要件は今のところないです。

まとめ

長々と書いてきましたが、個人(個人事業主/フリーランス含む)ではRAIDはそれほど積極的に採用する技術ではない、ということ感じ取っていただけたでしょうか?
(採用するメリットがない、という主張ではありません。当然ですが採用するとRAIDのメリットは享受できます。)
重ねて申し上げますが、個人の環境においてはRAID保護より定期的にバックアップタスクが自動実行されるように仕組みを用意したほうが、よっぽど障害(故障)時の復旧に役立つことは間違いないです。その理由は個人は「1ユーザ:他サーバ」なので、サービスをホストするサーバを故障などの障害時であってもサービスを継続しなければならない、という必然性がないためです。
1ユーザしかいなければいつサーバを停止しようが、自分の問題ですので修理が終わってから改めて使いはじめればいいのです。
その点において、HDD故障/障害時のサービスの継続性を支えるRAIDはそれほど重要ではないといえます。


もし物欲に負けてNASが欲しくなったとして、RAIDを構成しなければならない局面に出会ったなら、よろしければ本文書を思い出してもらえれば本望です。

この文書が参考になって、より良いサーバが用意出来たとしたら幸いです。