JP5278115B2 - 冗長符号生成方法及び装置、データ復元方法及び装置、並びにraid記憶装置 - Google Patents
冗長符号生成方法及び装置、データ復元方法及び装置、並びにraid記憶装置 Download PDFInfo
- Publication number
- JP5278115B2 JP5278115B2 JP2009085416A JP2009085416A JP5278115B2 JP 5278115 B2 JP5278115 B2 JP 5278115B2 JP 2009085416 A JP2009085416 A JP 2009085416A JP 2009085416 A JP2009085416 A JP 2009085416A JP 5278115 B2 JP5278115 B2 JP 5278115B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- bit
- string
- redundant code
- exclusive
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/1515—Reed-Solomon codes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/158—Finite field arithmetic processing
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/65—Purpose and implementation aspects
- H03M13/6508—Flexibility, adaptability, parametrability and configurability of the implementation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/10—Indexing scheme relating to G06F11/10
- G06F2211/1002—Indexing scheme relating to G06F11/1076
- G06F2211/1057—Parity-multiple bits-RAID6, i.e. RAID 6 implementations
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- General Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Algebra (AREA)
- Pure & Applied Mathematics (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- Error Detection And Correction (AREA)
- Detection And Correction Of Errors (AREA)
Description
Q00=a00+b03+c00+c03+d02 (2)
によって計算される。排他的論理和演算であるので、5つのビットa00,b03,c00,c03,d02のうち、"1"であるものが奇数個であれば、Q00は"1"となり、そうでなければQ00は"0"となる。
Q0=a0+b3+c0+c3+d2 (3)
のように表される。ベクトル相互の排他的論理和演算とは、ベクトルの要素ごとに、ベクトル間での対応する要素同士での排他的論理和演算を実行することを意味する。ビット列における未処理のビットがなくなるまで、各ビット列からデータ単位分のビットを取り出して上述した排他的論理和演算を実行することを繰り返すことにより、元のデータ全体に対応した冗長符号データ列P,Qを得ることができる。図3は、ビット列をビットに展開して本実施形態での冗長符号データ列の算出を説明している。
Disk1:0x15,0x02,0x0F,0xD3の4バイトのデータ(それぞれ、b0,b1,b2,b3とする),
Disk2:0xE6,0x63,0x2C,0x08の4バイトのデータ(それぞれ、c0,c1,c2,c3とする),
Disk3:0x00,0x37,0x9B,0xACの4バイトのデータ(それぞれ、d0,d1,d2,d3とする).
パリティ生成時の動作は以下のようになる。
=0x97,
P1=0x6F+0x02+0x63+0x37
=0x39,
P2=0x40+0x0F+0x2C+0x9B
=0xF8,
P3=0x48+0xD3+0x08+0xAC
=0x3F,
Q0=0x64+0xD3+0xE6+0x08+0x9B
=0xC2,
Q1=0x6F+0x15+0xD3+0xE6+0x63+0x08+0x9B+0xAC
=0x13,
Q2=0x40+0x02+0x63+0x2C+0x00+0xAC
=0xA1,
Q3=0x48+0x0F+0x2C+0x08+0x37
=0x54.
CPU510は、演算したパリティをメモリ520にいったん格納し、次に、ディスク制御部530を通じて全データを各ディスク装置に格納する。その際、ビット列P0〜P3からなる冗長符号データ列PをDiskPに、ビット列Q0〜Q3からなる冗長符号データ列QをDiskQに書き込むようにする。ここでは説明の簡略化のためにどのディスク装置をパリティディスク装置にするかを固定しているが、パリティディスク装置を固定する必要は必ずしもない。
a1=c0+c1+d0+d3+P0+Q0+Q1,
a2=c0+c1+c2+d1+P0+P1+Q0+Q1+Q2,
a3=c0+c1+c2+c3+d2+P0+P1+P2+Q0+Q1+Q2+Q3,
b0=c0+c1+c2+c3+d0+d3+P1+P2+P3+Q1+Q2+Q3,
b1=c0+d0+d1+d3+P0+P1+Q0+Q1,
b2=c0+c1+d1+d2+P0+P1+P2+Q0+Q1+Q2,
b3=c0+c1+c2+d2+d3+P0+P1+P2+P3+Q0+Q1+Q2+Q3.
この復元式に対して具体的な数値を代入すると、以下のようになる。
=0x64,
a1=0xE6+0x63+0x00+0xAC+0x97+0xC2+0x13
=0x6F,
a2=0xE6+0x63+0x2C+0x37+0x97+0x39+0xC2+0x13+0xA1
=0x40,
a3=0xE6+0x63+0x2C+0x08+0x9B+0x97+0x39+0xF8+0xC2+0x13+0xA1+0x54
=0x48,
b0=0xE6+0x63+0x2C+0x08+0x00+0xAC+0x39+0xF8+0x3F+0x13+0xA1+0x54
=0x15,
b1=0xE6+0x00+0x37+0xAC+0x97+0x39+0xC2+0x13
=0x02,
b2=0xE6+0x63+0x37+0x9B+0x97+0x39+0xF8+0xC2+0x13+0xA1
=0x0F,
b3=0xE6+0x63+0x2C+0x9B+0xAC+0x97+0x39+0xF8+0x3F+0xC2+0x13+0xA1+0x54,
=0xD3.
以上により、Disk0及びDisk1が故障した場合に、残りのデータと本実施形態に基づく冗長符号生成によるパリティとを用いることにより、故障したディスク装置に格納されていたデータ(ビット列a0〜a3,b0〜b3)を復元できることが証明された。ここでは詳細を示さないが、本実施形態による冗長符号生成法によって生成したパリティデータを用いて上述と同様の演算を実行することにより、故障したディスク装置が2台以下であれば、どのディスク装置が故障したとしてもデータを復元することができる。
101 アドレス制御ユニット
102 レジスタ
103 演算論理ユニット(ALU)
104,540 排他的論理和演算器(XOR)
110,520 メモリ
120 アドレスバス
130 データバス
530 ディスク制御部
Claims (15)
- 元データから拡大ガロア体演算により冗長符号データ列を生成する冗長符号生成方法であって、
前記元データを複数のデータ列に分割することと、
前記各データ列を、前記拡大ガロア体演算に応じた本数のビット列に分割することと、
分割により生成したそれぞれのビット列をメモリの異なる記憶領域に格納することと、
所定の複数のビット数をデータ単位として、前記メモリに格納されている各ビット列から取り出される前記データ単位分のビットをベクトルとし、前記拡大ガロア体の原始多項式に対応する同伴行列を含み前記冗長符号データ列の生成に用いられる演算式に応じ、複数の前記ベクトルの間で排他的論理和演算を実行することにより、前記ベクトル内でのビットシフトを行うことなく前記冗長符号データ列を構成するビット列を算出することと、
を有する冗長符号生成方法。 - 前記排他的論理和演算をCPUにより実行し、前記データ単位は前記CPUでの演算のビット幅に一致させる、請求項1に記載の冗長符号生成方法。
- 前記排他的論理和演算を排他的論理和演算器により実行する、請求項1に記載の冗長符号生成方法。
- 元データから拡大ガロア体演算により冗長符号データ列を生成する冗長符号生成装置であって、
少なくとも排他的論理和演算器を有する演算手段と、
メモリと、
前記演算手段と前記メモリとを接続するアドレスバス及びデータバスと、
を有し、
前記元データは複数のデータ列に分割され、前記各データ列は、前記拡大ガロア体演算に応じた本数のビット列に分割されて、前記メモリは、分割により生成されたそれぞれのビット列を格納する複数の記憶領域を有し、
前記演算手段は、所定の複数のビット数をデータ単位として、前記拡大ガロア体の原始多項式に対応する同伴行列を含み前記冗長符号データ列の生成に用いられる演算式に応じたアドレス制御により前記メモリに格納されている各ビット列から前記データ単位分のビットをベクトルとして取り出し、複数の前記ベクトルの間で排他的論理和演算を実行することにより、前記ベクトル内でのビットシフトを行うことなく、前記冗長符号データ列を構成するビット列を算出し、算出されたビット列を前記メモリにおける対応する記憶領域に格納する、冗長符号生成装置。 - 前記排他的論理和演算器と前記アドレスバスに対して前記アドレス制御を実行するアドレス制御ユニットとを有するCPUによって前記演算手段が構成されている、請求項4に記載の冗長符号生成装置。
- 前記データ単位は前記CPUでの演算のビット幅に一致している、請求項5に記載の冗長符号生成装置。
- 元データが複数のデータ列に分割されかつ前記元データから拡大ガロア体演算により冗長符号データ列が生成されている場合に、正常なデータ列と前記冗長符号データ列とから、前記データ列のうちの誤りとなったデータ列を復元して復元データ列を生成するデータ復元方法であって、
前記正常なデータ列と前記冗長符号データ列の各々を前記拡大ガロア体演算に応じた本数のビット列に分割することと、
分割により生成したそれぞれのビット列をメモリの異なる記憶領域に格納することと、
所定の複数のビット数をデータ単位として、前記メモリに格納されている各ビット列から取り出される前記データ単位分のビットをベクトルとし、
前記拡大ガロア体の原始多項式に対応する同伴行列を含みデータ列の復元に用いられる演算式に応じ、複数の前記ベクトルの間で排他的論理和演算を実行することにより、前記ベクトル内でのビットシフトを行うことなく前記復元データ列を構成するビット列を算出することと、
を有するデータ復元方法。 - 前記排他的論理和演算をCPUにより実行し、前記データ単位は前記CPUでの演算のビット幅に一致させる、請求項7に記載のデータ復元方法。
- 前記排他的論理和演算を排他的論理和演算器により実行する、請求項7に記載のデータ復元方法。
- 元データが複数のデータ列に分割されかつ前記元データから拡大ガロア体演算により冗長符号データ列が生成されている場合に、正常なデータ列と前記冗長符号データ列とから、前記データ列のうちの誤りとなったデータ列を復元して復元データ列を生成するデータ復元装置であって、
少なくとも排他的論理和演算器を有する演算手段と、
メモリと、
前記演算手段とメモリとを接続するアドレスバス及びデータバスと、
を有し、
前記正常なデータ列と前記冗長符号データ列の各々が前記拡大ガロア体演算に応じた本数のビット列に分割され、前記メモリは、分割により生成されたそれぞれのビット列を格納する複数の記憶領域を有し、
前記演算手段は、所定の複数のビット数をデータ単位として、前記拡大ガロア体の原始多項式に対応する同伴行列を含みデータ列の復元に用いられる演算式に応じたアドレス制御により前記メモリに格納されている各ビット列から前記データ単位分のビットをベクトルとして取り出し、複数の前記ベクトルの間で排他的論理和演算を実行することにより、前記ベクトル内でのビットシフトを行うことなく、前記復元データ列を構成するビット列を算出し、算出されたビット列を前記メモリにおける対応する記憶領域に格納する、データ復元装置。 - 前記排他的論理和演算器と前記アドレスバスに対して前記アドレス制御を実行するアドレス制御ユニットとを有するCPUによって前記演算手段が構成されている、請求項10に記載のデータ復元装置。
- 前記データ単位は前記CPUでの演算のビット幅に一致している、請求項11に記載のデータ復元装置。
- 複数のデータ記録媒体と、
排他的論理和演算器と、
を有し、
元データが複数のデータ列に分割されて前記データ記録媒体に分散格納されるとともに、前記元データから拡大ガロア体演算により求められた冗長符号データ列が少なくとも1つのデータ記録媒体に格納され、
前記各データ列は、前記拡大ガロア体演算に応じた本数のビット列に分割され、
前記排他的論理和演算器は、所定の複数のビット数をデータ単位として、冗長符号データ列の生成のための演算式またはデータ列復元のための演算式であって前記拡大ガロア体の原始多項式に対応する同伴行列を含む演算式に応じ、各ビット列から前記データ単位分のビットをベクトルとして取り出して複数の前記ベクトルの間で排他的論理和演算を実行することにより、前記ベクトル内でのビットシフトを行うことなく前記拡大ガロア体演算を行う、RAID記憶装置。 - 前記排他的論理和演算器を備えるCPUを有し、前記データ単位は前記CPUでの演算のビット幅に一致する、請求項13に記載のRAID記憶装置。
- CPUをさらに備え、前記排他的論理和演算器は前記CPUの外部に設けられる、請求項13に記載のRAID記憶装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009085416A JP5278115B2 (ja) | 2009-03-31 | 2009-03-31 | 冗長符号生成方法及び装置、データ復元方法及び装置、並びにraid記憶装置 |
US12/730,984 US8499224B2 (en) | 2009-03-31 | 2010-03-24 | Redundant code generation method and device, data restoration method and device, and raid storage device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009085416A JP5278115B2 (ja) | 2009-03-31 | 2009-03-31 | 冗長符号生成方法及び装置、データ復元方法及び装置、並びにraid記憶装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2010239404A JP2010239404A (ja) | 2010-10-21 |
JP5278115B2 true JP5278115B2 (ja) | 2013-09-04 |
Family
ID=42785826
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009085416A Active JP5278115B2 (ja) | 2009-03-31 | 2009-03-31 | 冗長符号生成方法及び装置、データ復元方法及び装置、並びにraid記憶装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8499224B2 (ja) |
JP (1) | JP5278115B2 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5440884B2 (ja) * | 2011-09-29 | 2014-03-12 | 日本電気株式会社 | ディスクアレイ装置およびディスクアレイ制御用プログラム |
WO2014003599A1 (en) * | 2012-06-29 | 2014-01-03 | Ems Corparation | Redundant disc encoding via erasure decoding |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
NL7804674A (nl) * | 1978-05-02 | 1979-11-06 | Philips Nv | Geheugen met detektie en korrektie van fouten. |
JPS56127908A (en) * | 1980-03-10 | 1981-10-07 | Victor Co Of Japan Ltd | Wrong-correction preventing system for digital signal reproducer |
JP2570251B2 (ja) * | 1984-04-20 | 1997-01-08 | ソニー株式会社 | 有限体の演算回路 |
US4706250A (en) * | 1985-09-27 | 1987-11-10 | International Business Machines Corporation | Method and apparatus for correcting multibyte errors having improved two-level code structure |
US5333143A (en) * | 1991-08-29 | 1994-07-26 | International Business Machines Corporation | Method and means for b-adjacent coding and rebuilding data from up to two unavailable DASDS in a DASD array |
US6058500A (en) * | 1998-01-20 | 2000-05-02 | 3Com Corporation | High-speed syndrome calculation |
US6671850B1 (en) * | 2000-05-01 | 2003-12-30 | International Business Machines Corporation | On-the-fly algebraic error correction system and method for reducing error location search |
JP4288486B2 (ja) * | 2003-11-17 | 2009-07-01 | 日本電気株式会社 | ディスクアレイ装置,raid用パリティデータ生成回路およびガロア体乗算回路 |
US7774679B2 (en) * | 2005-02-14 | 2010-08-10 | Hitachi Global Storage Technologies Netherlands B.V. | Techniques for performing reduced complexity galois field arithmetic for correcting errors |
JP4595055B2 (ja) | 2005-11-07 | 2010-12-08 | ルネサスエレクトロニクス株式会社 | ガロア体のα乗算回路および演算回路 |
US8510608B2 (en) * | 2006-11-06 | 2013-08-13 | Panasonic Corporation | Generating PUF error correcting code using redundant hardware |
JP4935367B2 (ja) | 2007-01-19 | 2012-05-23 | 富士通株式会社 | Raid装置及びガロア体の積演算処理方法 |
JP4905161B2 (ja) | 2007-01-31 | 2012-03-28 | 富士通株式会社 | Raid装置及びガロア体を用いたデータ復元装置 |
-
2009
- 2009-03-31 JP JP2009085416A patent/JP5278115B2/ja active Active
-
2010
- 2010-03-24 US US12/730,984 patent/US8499224B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
JP2010239404A (ja) | 2010-10-21 |
US8499224B2 (en) | 2013-07-30 |
US20100251071A1 (en) | 2010-09-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4905161B2 (ja) | Raid装置及びガロア体を用いたデータ復元装置 | |
Khan et al. | Rethinking erasure codes for cloud file systems: minimizing I/O for recovery and degraded reads. | |
JP4935367B2 (ja) | Raid装置及びガロア体の積演算処理方法 | |
EP0031183A2 (en) | Multi-processor computer system | |
KR20090028507A (ko) | 비휘발성 메모리 에러 보정 시스템 및 방법 | |
US20150100819A1 (en) | Method of Recovering Data in a Storage Device | |
JP2013070122A (ja) | 誤り訂正装置、誤り訂正方法及び演算装置 | |
US20120198195A1 (en) | Data storage system and method | |
CN105808170B (zh) | 一种能够修复单磁盘错误的raid6编码方法 | |
CN109358980B (zh) | 一种对数据更新和单磁盘错误修复友好的raid6编码方法 | |
WO2018000788A1 (zh) | 一种数据存储方法和装置、一种数据恢复方法和装置 | |
WO1997000559A1 (en) | Dedicated alu architecture for 10-bit reed-solomon error correction module | |
JP5278115B2 (ja) | 冗長符号生成方法及び装置、データ復元方法及び装置、並びにraid記憶装置 | |
JP5170010B2 (ja) | ディスクアレイ装置、ディスクアレイ装置制御方法、及びディスクアレイ装置用プログラム | |
US9400715B1 (en) | System and method for interconnecting storage elements | |
WO2018165943A1 (zh) | 存储控制器、数据处理芯片及数据处理方法 | |
CN108352845B (zh) | 用于对存储数据进行编码的方法以及装置 | |
CN115113816A (zh) | 一种纠删码数据处理系统、方法、计算机设备及介质 | |
JP2006323434A (ja) | データ処理装置及びそのメモリ訂正方法 | |
JP5440884B2 (ja) | ディスクアレイ装置およびディスクアレイ制御用プログラム | |
US10216929B2 (en) | Chip and method for detecting a change of a stored data vector | |
WO2016038673A1 (ja) | 誤り訂正装置、誤り訂正方法、及び誤り訂正システム | |
JP2005293263A (ja) | 記憶制御装置、情報処理装置、記憶制御方法及び記憶制御プログラム | |
JP2007179297A (ja) | Raid5のパリティチェック強化方法、装置及びプログラム | |
JP5131379B2 (ja) | Raid装置及びガロア体の積演算処理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20120112 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20130125 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130205 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20130423 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20130506 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 Ref document number: 5278115 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |