はてなキーワード: RAIDとは
なんかすんなり納得が行った。ありがとう。
一般的かどうかは判らないけど、RAID同時死亡について…
RAIDにはなるべく構成が同じHDDを投入するのが理想とされていて、導入時に同じ型番の同じ容量の物を使うのが基本とされていた。
最近はHDDの品質もある程度のレベルに達しており、概ね同製品の寿命は同じ位なので、全く同時とは言わないまでもかなり近い時期に死んでしまうので、復旧作業中に残りも死亡と言う事例がよく語られるようになった。
なので現在は構成、容量がばらばらでも問題なく動くなど、raid側にも改善が見られるようになっていると言う話…
10年落ちの車をちまちま修理しても次々壊れて行くから買い換えた方がいいよってのと同じ感じ。
ITproとかでも似たような話を見たような気がする。
http://anond.hatelabo.jp/20070119141655
デバッグに地獄を見た話とか、エクストリームプログラミングの話とか、みんなバグを取るための方法論を語るけれど、バグを内包したまんま動きつづけるものを想定する発想、あんまりないんだろうか。
半素人の私が言うのもなんだが、面白い考えだと思う。
大きなアプリケーションの中で、もっとも大切な部分はコンペ型式で作って、一番まともに動いたものを「一軍」、それ以外を「控え」にする。
これらとは別に、「正しい結果を出したかどうか?」を判定するプログラムを別に作って、「正しく動いていない」と判断された場合、同じデータを控えに回して、その結果を出力するようにする。
動作判定は素朴なもの、たとえば結果が出てくるまでの時間とか、得られたデータの桁数とか、そんなもので判定して、ちょっとでもおかしかったら次々に「控え」を前に出して、とにかくまともそうな結果が出るまで選手を入れ替えていく。
この辺のやり方はいろいろあると思う。
そこそこの品質の同機能・別設計プロセスを流行のマルチコアで、並列に走らせる。もちろん、高度なプログラミングが要求されるモジュールだけを並列に走らせても良い。
当然、ひとつのプロセスがバグったり、フリーズしたりしても、そのプロセスだけ終了させれば良い。また、例えば、各プロセスの演算結果の「多数決」で、正しい演算結果を決め、信頼性を上げることも可能だ。子プロセスとして「部品化」させておけば、親プロセスには影響はないし。
部品は壊れるのが当たり前。
では、冗長性を上げるには?
すでにあってもいい考えだ。(…すでにありそうだなあ)