RAID5の落とし穴、データ消失の危険性
今回はファイルサーバーやNASではよく使われるRAID5について、データ消失の危険性を説明します。
『RAID5にすれば安心だ』と思っている社内SEの方は、本当にそうなのか再考してみてください。
RAIDとは?
RAIDはRedundant Arrays of Inexpensive Diskの略称で直訳すると”安価なディスクの冗長配列”という感じです。
複数のディスク(HDDやSSD)をひとまとめにしてデータを保存することで、アクセスの高速化やディスクが故障してもデータを失わなくて済む仕組みです。
詳しい内容はRAIDと検索するといくらでも情報が出てくるので検索してみてください。
RAID5とは?
RAIDにはいくつか種類がありますが、サーバーやNASではRAID5が多用されます。
ディスクが4本あったとして、あるデータを保存するとします。このとき、そのデータを4分割して4本のディスクに保存し、分割した各ブロックの復元用のデータ(パリティといいます)を保存します。
仮にディスク1本が故障すると、そこに保存されていたデータの一部が消えてしまいますが、別のディスクに保存していたパリティと実体データがデータを復活させることができます。
つまり”ディスクが4本あってそのうちの1本が故障してもパリティで代用するのでデータが消えない”という特徴があります。
ディスクの本数をx、1本あたりの容量をsとすると、RAID5で保存可能なデータの量yは
y=s(x-1)
となります。1本1TBのディスクを4本用意すると、保存可能なデータの量は3TBになり少し少なくなりますが、データ消失リスクと比べると安いものです。
似たようなRAIDにRAID6がありますが、これは1つのデータブロックに対して2つのパリティブロックを作成します。
y=s(x-2)になり使える容量はさらに少なくなりますが、2本のディスクが故障してもデータは生き残るので耐障害性がさらに向上します。
なぜRAID5が使われるか
ファイルサーバーにしてもNASにしても搭載できるディスクの台数は機械のスペック的にも費用的にも上限があります(SAS 15kディスクなんて1本10万円じゃ買えねぇことも)。
ここで思惑としては『保存できる容量は多い方がいい』と『ディスクがいつ壊れるか分からないので故障に備えたい』という考えがよぎります。
そこでRAIDが登場しますが、RAID1にすると使える容量はディスク全体容量の半分になってしまいます。
なのでRAID5にして ディスクが1本故障してもデータが消えない かつ 保存可能領域を多く確保すること が可能になります。
こうして要件定義した社内SEさんは安心するわけですが、ここに隠れた落とし穴があります。
それは、ディスクが1本壊れてもデータは消えないことを裏返すと、、、
ディスクが2本故障するとデータが消えるという事実と2本故障するリスクを忘れていないか
ということです。
2本同時に故障することがあるのか
RAID5の大前提としては『1本のディスクが故障した状態(デグレードモードといいます)が発生したら速やかに新品のディスクと入れ替えて修復する(リビルドといいます)』ことです。
そして2本同時に故障する、とはデグレードモードからさらにもう1本、ディスクが故障することです。
RAID5の場合はデグレードモードからディスクが1本故障すると、全てのデータがアクセスできなくなります。
で、本題の”ディスクが2本同時に故障すること”があるかどうかですが、私の経験として
2本同時(例えば同じ日)に故障することはほぼないが、1本目のディスクが壊れているときにもう1本の故障を検知することがよくあります!
さて、どういうことなのか説明します。
ディスクの故障をいつ検知するか
ここから先はイメージを湧きやすくするためにHDDやSSDの代わりに図書館に置いてある辞書とか辞典を想像してください。とにかくページ数がたくさんあって文字がたくさんある書物です。
その辞書は図書館にあるので、いろんな人がページをめくって文字を読み取ります。
で、辞書もモノなのでいつかは壊れます。文字がかすれて読めなくなるでしょうし、虫が紙を喰うかもしれません。シミができて文字が読めなくなることもあるでしょう。
ここで仮に辞書のあるページにシミができて字が読めなくなっているとします。
このとき、シミができて字が読めないことにあなたはいつ気付くでしょうか?
その答えはシミができているページを見た時です。
この特徴はHDDやSSDにeも同じ特徴があり、
ディスクの中にアクセスできないデータがあるかどうかは、そのデータにアクセスしないと分からないのです。
さらに別の特徴として、辞書のとあるページにシミができているということは、同じ時期に買った別の辞書もシミができている可能性があります。
その疑念を晴らすために別の辞書を開いてページをめくってみると、案の定シミができて字が読めないことに気付きます。
これがRAIDでいうところの2台目のディスクの故障が発覚したに該当します。
少し遠回りになりましたが、
ディスクの故障に気付いていないだけで、1台目のディスクが故障して修復中に2台目の故障を検出してデータが消える
というパターンが実は多いのです。
そして困ったことに辞書なら読めないのはそのページだけですが、ディスクの場合はデータを分散して保存しているのでRAID上のすべてのデータが読めなくなってしまいます。
どうするか
RAID5や6のデータ消失原因の1つは、このディスク故障したタイミングと検知のタイミングに大きな時間差があることです。
普段の読み書きが少ない(NASに保存されたデータはほとんど使われないことが多い)ディスクほど、この時間差は大きくなります。
対処法としては、この時間差を縮めることにあります。つまり、ディスクの故障が起きたらすぐにデグレードモードに移行させて検知することです。
ここで辞書の話を掘り返しますが、あなたが図書館の司書だとして管理する辞書にシミができているかどうか確認するにはどうしますか?
これも答えは簡単ですべてのページを確認することになります。
さて、そんな作業は時間がかかって現実的ではありませんがRAIDやディスクといったIT機器は高速処理ができます。
この”すべてのページを確認する”機能はメーカによって呼び方が異なりますが、RAIDメンテナンスとかディスクフルスキャンとか言われています。
ここから先はフルスキャンとして呼称します。
フルスキャンをすることでディスク故障はすぐに検出できるので、1台目の故障を検知したあとに2台目の故障が発覚するということは確率的にかなり低くなります。
なぜなら1本の故障を検知すると新品のディスクに交換するからです(デグレードモードで数週間放置する人は運用体制を見直しましょう)。
フルスキャンのデメリット
『やったね、フルスキャンすれば安心だね!』という声が聞こえてきそうですが、フルスキャンにもデメリットがあります。
スキャン中はパフォーマンスが低下する
フルスキャンとはディスクを高速に読み込み続けるため、本来のサーバー機能としてデータを読み書きする速度が遅くなります。
低価格NASの場合はCPUが弱くて処理が100%に張り付いてしまうこともあり、業務中に実行すると『ファイルサーバーの読み込みが遅い!』とクレームが飛んできます。
ディスクの寿命は縮む
フルスキャンは辞書でいうところの紙をめくり続けることです。
そんな作業を毎日毎日何度も何度も続けると紙が擦り切れてボロボロになってしまいます。
同じようにディスクのフルスキャンはディスクに負荷がかかる処理のため、HDDにしろSSDにしろ寿命が縮みます。
具体的にどれぐらい縮むのか、という絶対的な数値指標はありませんが(偉い人が論文書いてるかもね)あまりに頻繁に実行する処理ではありません。
処理時間はかなり長い
最近のNASやファイルサーバはテラバイトクラスの容量であることがほとんどです。
そしていかにIT機器が高速処理するとはいえ、テラバイトクラスのデータ読み込みは非常に時間がかかり数時間から場合によっては半日以上になります。
おまけに処理中はパフォーマンスが低下するので日中に実行することはすでに現実的ではありません。
これらのデメリットがあるので、一部のメーカ製NASはデフォルトでフルスキャンが既定ではOFFになっていることがよくあります。
具体的な解決法
『メリットを書いたりデメリットを書いたり、結局はどうすりゃええんや!』という叫びの声が聞こえてきそうですが、私的おすすめを書いておきます。
まずRAID構成ならフルスキャンは必ずかけましょう。特にRAID5,6のようにディスクに分散してデータを保存する方式では2かけらの故障が全データの喪失につながります。
ではいつ、どれぐらいかけるのかということになりますが、まず時間帯は必ず業務時間外にしましょう。
2交代や3交代で業務時間外が存在しない場合は日曜日など出勤者が少なめの時期を選びます。
そして頻度についてですが、1週間に1回または2週間に1回ぐらいにしましょう。
交代勤務制で24時間パフォーマンスの低下が許されない場合は、せめて長期休暇とか業務停止するタイミングで実行しましょう。
まとめ
RAIDのデータ消失はデータが無くなるということも当然ですが、社内SE的には精神的にかなりしんどいです。
テラバイトクラスのバックアップからのリストアはかなり時間がかかり、その間にまた別のディスクが壊れないかという恐怖が頭をよぎります。
おまけに業務時間中にRAIDが壊れるとユーザーから痛い視線を貰い続けます。
そうした目にあわないよう、是非社内SEの皆さんは管理されているNASやファイルサーバの設定を確認・再検討してください。