RAID 5, RAID 6, RAID 10 などで構成したストレージで、ハードディスクが壊れたとき、どのような影響があるだろうか。
RAID により冗長化されているから、サービスには影響はないのだろうか。
RAID システムは、ハードディスクを冗長化しているので、故障したハードディスクを交換すれば、サービスを停止することなく、データを失うことなく、復旧することが期待されている。
しかし、実際のところは、次のような影響がある。
1.冗長化されていない状態になる
RAID 5, RAID 10 の場合、正常なディスクと交換し、RAID 構成が復旧するまで、冗長化のない状態となっている。つまり、もう一台のハードディスクが壊れたら、サービス停止、データ破損になる。
RAID 6 の場合、1 台の故障では、冗長化は保たれる。復旧前に、2 台目のハードディスクがこわれたら、冗長化はなくなる。 3 台目のハードディスクが故障すると、サービス停止、データ破損になる。
多くの RAID システムは、ホットスペアとして予備のディスクを準備しておけるので、最低 1 台は設置しておきたい。もし、ホットスペアがなければ、IT 担当者は、メーカーから交換用のディスクが届き、復旧するまでの間、つらい時間となるだろう。
2.パフォーマンスが半分以下になる
正常なディスクに交換するか、ホットスペアのディスクにより RAID の復旧がはじまると、ディスク全体に多大なアクセスが発生する。このため、サービス用のディスクアクセスの性能は半分以下になる。
サービスに必要な性能がでないと、サービス停止、サービス不安定になる。
RAID システムによっては、復旧のためのディスクアクセス頻度を減らす機能があり、サービス用アクセス性能への影響を下げることができる。
ただし、復旧によるディスクアクセス量を減らすと、復旧完了までの時間が長くなる。復旧完了まで数日必要となる場合もあるので、本番利用前に評価が必要。
3.データが失われる。
復旧完了までに、もう一台のディスクが破損した場合、データは失われる。
復旧中に、別のディスクが破損する可能性は高い。
復旧のために、いつもは利用されていなかったディスク領域にエラーが発見される可能性が高いためである。
RAID システムによっては、定期的にディスク全体を検査する機能がある。設定しておけば、復旧中にディスク破損が発見されてしまうのを防ぐことができる。設定していなければ、かなりの確率で、2 台壊れると覚悟しておいたほうがいい。
また、ディスクではなく、RAID カードのエラーによりデータが失われる可能性がある。RAID カードそのものが故障した場合と、RAID カードが、正常なディスクのほうを故障していると間違って判断する場合である。
RAID カードが破損すれば、ディスクには間違ったデータが書き込まれるため、ディスクは正常でも、データは破損する。
一方、RAID カードが故障したディスクを正常と判断し、正常なディスクを故障と判断すると、冗長化されていない状態で、故障したディスクにデータを書き込むため、データは失われる。
こうした課題が RAID のディスク 1 台が故障した場合に存在することを考えて、システムの要件定義と、対策をしておく必要がある。
簡単な要件定義例:
データは 4 時間以上のものは、復旧できること
ディスク 1 台の故障で、冗長化されないポイントが発生しないこと
ディスク 1 台の故障で、サービスのパフォーマンスに影響しないこと
ディスク 1 台の故障は、24 時間以内に復旧すること
さて、どのような冗長化を組み合わせることにより対策できるだろうか。