パリティとは、コンピュータにおいて古典的かつ最も単純な誤り検出符号の一種である。
概要
一般的に、与えられたビット列のなかに1が偶数個あるか奇数個あるかを示す1ビットの数である。
たとえば奇数パリティ(1が奇数個の時1になるパリティ)の時、「0100」というビット列が与えられたとする。「0100」の中には1が一個(奇数個)あるので、パリティは「1」となる。
もし、通信経路上でエラーが発生しビット列が「0110」に変化してしまった場合、パリティの「1」と矛盾するためそのビット列は誤りであるとわかる。ただし、二桁目の「1」と三桁目の「1」のどちらが本来「0」であったのかはパリティだけではわからないため、誤り訂正符号となることは出来ない。そのため、正しいデータを得るためには通信元から再送してもらう必要がある。
また、エラーによって前述のデータがデータ列「0110」パリティ「0」やデータ列「1110」パリティ「1」となってしまった場合パリティとの矛盾がなくなってしまうので誤りを検出することが出来ない。このようにパリティは最善の方式とは言えないが、XOR(排他的論理和)のみで構成できる単純な構造やたった1ビットの追加により多少通信の確実性を高められる事が利点である。
RAIDにおけるパリティ
パリティだけでは通信の誤りを訂正することは出来ないと述べたが、場合によっては元のデータを復元出来る場合もある。その一例がRAIDにおけるパリティである。
5台で構成されるRAID5に記憶されたデータ列「0111」パリティ「1」であるデータがあったとして、ある時三桁目を記憶しているHDDが故障しデータ列「01x1」パリティ「1」しか読み込めなかった場合を考える。パリティ「1」より、1の個数は奇数個であるのでデータ列と合わせて考えると欠損した三桁目xは「1」であると考えられ、元のデータ列を復元することができた。
これがもしもう一台故障してデータ列「0xx1」パリティ「1」しか読み込めなかったとしたら、xxは11なのか00なのかがわからないためデータの復元は出来ない。これがRAID5が一台までの故障にのみ耐えられる理由である。
RAID6では二台までの故障に耐えられるが、これは2種類の誤り検出符号から連立方程式を解いてデータを復元している。
関連項目
- RAID
- CRC
- 3
- 0pt