- 締切済み
パリティ
ハードディスクのRAIDで出てくる、パリティの概念について教えてください。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- nag3
- ベストアンサー率28% (103/361)
何かすごいことがいっぱい書いてあって私には難しいです。なので、ここは頭を休める意味で簡単なRAIDをひとつ。まずA B C という3台のHDDがあったとします。そしてAに書きこむ時、同時にBにも書きこみます。そして、A B2台のHDDに書きこまれたデータを比較して同じならOK違うならエラーとして書きこみなおす。次にBに書きこむときCにも書きこみ比較します。Cに書きこむ時はAに書きこんで比較。この場合は、高速化ではなく、信頼性の方式です。良く読んでもらえば解ると思いますが、どれか1台クラッシュしても後の2台からすべて復元できます。絶対にデータをとばしたくない場合にはなはだ有用ですが、HDDの容量をバカ食いします。ちなみに、データの比較がこの方式におけるパリティーです。
- ARC
- ベストアンサー率46% (643/1383)
パリティとは、データのエラー検出、修正に使われるしくみのことです。 例えば、0(0000),1(0001),2(0010),0(0000)というデータがあったとします。(括弧 内は2進数表記) で、このデータをビットごとに足し算した結果のことを、このデータのパリティと いいます。 (上例では"0011"(0000 + 0001 + 0010 + 0000 = 0011)) このデータにエラーが混入しているかどうか知るためには、実際に足し算してみた結 果とパリティの値を比べてみて、両者に違いがあるかどうかで調べます。 エラーの訂正 ↓横のパリティ 0000 0001 0010 0000 | 0011 0011 0010 0100 0000 | 0100 ←エラー,このデータだとパリティは0101になるべき,こ 0111 0111 1000 0000 | 1000 の行のどれかの1の位が間違っていることが分かる 1111 1111 0000 0000 | 0000 ---------------------- 1011 1010 1110 0000 ←縦のパリティ ↑エラー この列のどれかの1の位が間違っていることが分かる このように、縦方向にもパリティを算出することによって、エラーを訂正することが できます。上例では、2行目2列目のデータが異常。正しくは0011だって事が見て取 れると思います。 仮に、このデータを、1列に付き1つのHDDだと見立てますと、パリティがいかに 有効に働くかが分かるでしょう。例えば、1列目のデータが全部飛んだとして(エディ タで1列目を削除してみてください)残ったデータとパリティから、元の1列目が完全 に再生できることが、分かるんじゃないでしょうか。 尚、データ訂正にはパリティ以外にもいくつかの方法が知られています。(CRCなど)
- dice
- ベストアンサー率35% (27/77)
RAIDはご存知の通り、ハードディスクの高速・大容量・高信頼性を実現するための技術です。RAIDのレベルでハードディスクの性能(特性)がはかれます(しかし、数値が高ければ高性能とも言いきれません)。今現在は、7段階にわかれていたと記憶しています。 3年前に学校で勉強して以来なので、もしかしたら、技術の進歩で多少概念的なものは変わっているかもしれません。 (参考までにRAID-->http://www.lint.ne.jp/%7Etomo/linux/repair/raid.htm http://www.ascii.co.jp/ghelp/1/000109.html) さて、パリティはRAID3あたりから登場する言葉ですが、これはパリティチェックと言ってデータの誤りを検出する技法(機能)です。 パリティの機能は、RAIDで言う「高信頼性」の部分に相当します。 言葉の説明は以下のURLを参照して下さい。 http://www.ascii.co.jp/ghelp/1/000134.html http://www.ascii.co.jp/ghelp/1/000133.html ただし、パリティは誤りを検出するだけです。 コンピューターの中のデータ0と1の2進数でできています。 1データは複数のビット(0または1)から成っていて、1バイトのデータには8ビットで成っています。例えば01001111のような感じです。 これに、パリティビットを付加することによって、誤りが検出できます。 例えば01001111には1が奇数個あるので、パリティビット「1」を付加します。このとき、このデータが誤っていて、01001110となっている場合、パリティビットが1に成っているのに、01001110は1が偶数個です。つまり、01001110は誤りデータと言うことになります。 お気づきとは思いますが、これでは、1バイトのデータに2個の誤りビットがある場合は検出できませんし、どこに誤りがあるかも特定できません。更に、この技法には誤りを訂正する機能はありません。 ちなみに、パリティビットを付加する場合、1バイトのデータに1が奇数個ある時に1を付加する場合も0を付加する場合もあります。 参考資料のURLは、パリティチェック方式の説明が図付であります。