RAID の弱点 †冗長化手法 †まずは RAID の冗長化手法についておさらいする. RAID1 の場合,仮想ボリューム V の内容はそのまま子ボリューム V1, V2 の双方に記録される. 図にすると以下のようになる. V1 V2 V +---+---+ +---+ | A | A | | A | +---+---+ +---+ | B | B | | B | +---+---+ +---+ | C | C | | C | +---+---+ +---+ | | | | | RAID5 の場合は,パリティを持つブロックを配置する. 図上で p0, p1, ... とあるのがパリティブロックである. V1 V2 V3 V +---+---+---+ +---+ | A | B | p0| | A | +---+---+---+ +---+ | C | p1| D | | B | +---+---+---+ +---+ | p2| E | F | | C | +---+---+---+ +---+ | | | | | D | パリティの計算は
とする. 縮退時 †子ボリュームの1つが故障し,RAID から切り離された状態を縮退(degrade)と呼ぶ. 上記 RAID1 の場合,V2 が故障したとすると V1 V +---+ +---+ | A | | A | +---+ +---+ | B | | B | +---+ +---+ | C | | C | +---+ +---+ | | | | となる. 仮想ボリュームの内容は残りのドライブに保持されているので,仮想ボリュームとしてのサービスは続行可能である. 上記 RAID5 で V3 が故障した場合は V1 V2 V +---+---+ +---+ | A | B | | A | +---+---+ +---+ | C | p1| | B | +---+---+ +---+ | p2| E | | C | +---+---+ +---+ | | | | D | 一見,D と F のデータが失われたように見えるが,上記のパリティの計算式より
であるので,やはり失われたデータは無く,仮想ボリュームとしてのサービスは続行可能である. 再構築 †縮退状態の RAID アレイに良品のボリュームを追加し,元の状態に戻す過程を再構築(rebuild) と呼ぶ. RAID1 の場合は,生き残っている子ボリュームの内容をそのままコピーするだけである. V1 V2 V +---+---+ +---+ | A ->A | | A | +---+---+ +---+ | B ->B | | B | +---+---+ +---+ | C ->C | | C | +---+---+ +---+ | -> | | | この再構築の状態であっても失われたデータは無いので,仮想ボリュームとしてのサービスはもちろん可能である. RAID5 の場合は少し複雑で V1 V2 V3 V +---+---+---+ +---+ | A | B ->p0| | A | +---+---+---+ +---+ | C | p1->D | | B | +---+---+---+ +---+ | p2| E ->F | | C | +---+---+---+ +---+ | | -> | | D | ここでは
という関係が成り立つので,V3 の内容を復元可能である. もちろん,再構築中でも仮想ボリュームとしてのサービスは可能である. 魔の時間 †というあたりまでが RAID のセールストークである. ここで気をつけて欲しいのは
ということである. つまり,この期間に別の故障が発生すると RAID 仮想ボリュームはサービスを続行することができなくなる. 再構築の危険性 †更に,「再構築」という動作にも危険が伴う. まず,
という運用はほとんど無いだろう. (逆に,そういう運用の場合はこの危険性は無視していい) 例えば
とか
という場合を考えてみよう. まず,縮退するきっかけとしては,使用している 10% の領域へのアクセスである. が,再構築する場合は,ディスク全体,つまり普段使用していない 90% の領域へのアクセスも発生する. この領域にエラーがあるとすると,再構築不能,つまり RAID クラッシュとなる. 計算例 †子ボリューム数4の RAID5 で,子ボリューム全体の MTBF を T とする. ハードディスクの故障のしかたにも色々あるのだが,ここでは
とする. 通常アクセスする領域の割合を r (0 <= r <= 1) とすると,この使用条件で縮退の発生する間隔は
となる. 縮退時の健全な3つの子ボリューム上の,通常アクセスしない領域の MTBF は
である. ここで,この2つの MTBF をグラフにすると となる(縦軸は対数). このグラフから読み取れることは
ということである. なお,蛇足として
ということも読み取れる. (以下追記) 計算例2 †子ボリュームが 2 の RAID1 についても同様の計算を行ってみる. 縮退までの平均間隔は
このとき,健全なボリュームのアクセスしない領域の MTBF は
同様に plot すると下図のようになる. グラフの読み方も同様なので省略. |