JP3587667B2 - 外部記憶サブシステムのパリティ記憶及びデータ修復方法 - Google Patents
外部記憶サブシステムのパリティ記憶及びデータ修復方法 Download PDFInfo
- Publication number
- JP3587667B2 JP3587667B2 JP29236397A JP29236397A JP3587667B2 JP 3587667 B2 JP3587667 B2 JP 3587667B2 JP 29236397 A JP29236397 A JP 29236397A JP 29236397 A JP29236397 A JP 29236397A JP 3587667 B2 JP3587667 B2 JP 3587667B2
- Authority
- JP
- Japan
- Prior art keywords
- parity
- block
- disk
- horizontal
- diagonal
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- 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
-
- 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
-
- 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/09—Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
-
- 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/29—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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
-
- 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/29—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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2906—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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
- H03M13/2921—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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes wherein error correction coding involves a diagonal direction
-
- 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/6561—Parallelized implementations
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Detection And Correction Of Errors (AREA)
Description
【発明の属する技術分野】
本発明は外部記憶サブシステムのパリティ記憶及びデータ修復の方法及び装置に関する。
【0002】
【従来の技術】
半導体技術の発達に伴い、より速くて強力なマイクロプロセッサとメモリが開発されているが、機械的な特性を有するハードディスクの性能はこれに及ばない。例えば、RISCプロセッサは毎年5%以上の性能向上を示している反面、ハードディスクのアクセス時間は毎年10%未満の性能向上に止まっている。このため、ハードディスクを根幹とする入出力サブシステムの性能が全体システムの性能を制限する重要な要因となっている。
【0003】
Patterson等は1988年にACM SIGMOD Conf.発行の報告書の109〜116頁に“A Case for Redundant Arrays of Inexpensive Disks(RAID)”という報告書を発表した。この報告書に発表されたRAIDは、ディスクアレイを各構造及び特性によってレベル0〜レベル5までの6つのレベルに分け、それぞれに対する内容を開示している。6種類のRAIDレベルは、それぞれに長・短所を有しており、様々な応用分野に用いられる。このようなRAIDは、ディスクアレイの並列処理により高速であるだけでなく、重複性を用いてディスク誤り発生時に修復可能であるなど信頼性が高く、多数のディスクで構成するので大容量である。
【0004】
ところで、既存のテキストデータのみならずマルチメディアデータが多くなるにつれ、一層多くのデータ記憶領域が必要になり、ディスクアレイを構成するディスク数はさらに増加傾向にある。しかし、大容量のディスクアレイを構成すると、ディスク読取り誤りの確率は高くなる。なぜなら、1つのディスクにおける誤り発生の平均時間をMTTF(the Mean Time To Failure)とすると、ディスク数がnである時の誤り発生平均時間はMTTF/nとなるからである。ディスク数が増加しても高信頼性を保つには、既存のRAIDが1つのディスク誤りに対してのみ修復し得る重複性をもっているのに対して、2つのディスクの誤り発生時にも修復可能な場合が必要であり、これを通常RAIDレベル6と定義する。RAIDレベル6はPattersonなどによって1994年6月発行のACM Computing Surverys、vol.26の109〜116頁に“RAID:High−Performance 、 Reliable Secondary Storage ”という報告書に開示されている。高信頼性を保障すべきもう1つの理由は、システム故障、訂正不可能なビット誤り、及び周囲環境など、その他の事由によりディスクの誤り発生率がさらに高くなるためである。
【0005】
Patterson等によって定義されたレベル6はリードソロモン(reed solomon)コードを用いたものであるが、これはコードの複雑性によって維持費用が高くなり、且つハードウェアの追加が必要であるという短所がある。
【0006】
一方、2つのディスクの誤り発生時に修復し得る方法としては、2次元パリティ法と、最近発表されたEVENODD法、及び重複行列(redundancy matrix) を用いた方法などがある。
【0007】
2次元パリティ法は1988年12月発行のComputer Science Tech. Report CSD88−477 、 Univ. of California、Berkeleyで“Coding Techniques for Handling Failures in Large Disk Arrays”という論文がPattersonなどによって発表されている。2次元パリティ法はRAIDレベル4の構造を拡張したもので、横方向のみならず縦方向にもパリティディスクを位置させる。しかしこのような2次元パリティ法は、次のような2つの問題点をもっている。第1にパリティディスクが分散していないために、パリティディスクの隘路現象をもたらしシステム性能低下の主要原因となる。第2にパリティディスクオーバヘッドが大きい。
【0008】
EVENODD法は、Blaum等によって1995年2月発行のIEEE Trans. on Computers、 vol. 44、no. 2、pp. 192〜202で“EVENODD:An Efficient Scheme for Tlertating Double Disk Failures in RAID Architectures ”という論文で発表された。EVENODD法の最大の特長は、最適のパリティディスクを使用することにある。即ち、m個(mは素数)のディスクをデータディスクとして使用する場合、2つのパリティディスクのみを追加することにより、パリティディスクオーバヘッドが最適になる。しかし、EVENODD法は2次元パリティ法と同様に、隘路現象による性能低下が予測され、且つ誤り訂正の構成サイズが大きくなるにつれて、データ損失の平均時間(MTTDL:Mean Time To Data Loss)が小さくなる。EVENODD法のもう1つの短所は、各斜線データブロックの保持に対するオーバヘッドが存在することである。一例として、各ディスクの斜線ブロックのデータブロックに対する書込み作業が発生する場合、斜線パリティディスクの全てのブロックの値が変更されるので、これを全て更新しなければならない。
【0009】
EVENODD法は、発表したBlaum等により特許出願されている。1993年12月14日公開の米国特許第5,271,012号、及び1994年9月27日公開の米国特許第5,351,246号には、斜線パリティと行パリティを用いてディスクアレイをエンコードし、2つのディスクに誤りが発生してもこれを修復する内容が開示されている。しかし、この2つの特許もEVENODD法における短所の解決に至っていない。
【0010】
重複行列を用いた方法は、Chan−Ik Parkによって1995年11月発行のIEEE Trans.on Parallel and Distributed Systems、 vol. 6、 no.11、 pp.1177〜1184で“Efficient Placement of Parity and Data to Tolerate Two Disk Failures in Disk Array Systems”という論文で発表された。この重複行列を用いた方法は、2次元パリティ法などの方法に内在したパリティディスクの隘路現象に対する問題を解決するためにパリティブロックを分散する方法であり、N個のディスクが与えられた時にN×N行列の重複行列で定義され、この行列が幾つかの特性を満足すると、2つのディスクの誤り発生時にデータ修復を行うことができる。この方法はパリティとデータブロックに配置アルゴリズムによって分散させることにより、他の方法で問題になったパリティディスクに対するオーバヘッドによって発生する隘路現象を解決し得るが、アルゴリズムの複雑さと、重複行列を保持するためのオーバヘッドと、追加費用が問題になる。また、拡張時にも再びアルゴリズムを適用して配置しなければならないので管理が面倒である。
【0011】
【発明が解決しようとする課題】
本発明の目的は、2つ以上のディスクに誤りが発生しても短時間で修復することができ、パリティディスクの隘路現象による性能低下が起こらず、データ更新時の速度低下を防ぐことのできる方法及び装置を提供することにある。
【0012】
【課題を解決するための手段】
上記目的を達成するために本発明の外部記憶サブシステムのパリティ記憶及びデータ修復方法は、N個(Nは素数)の各ディスクを(N−1)個のブロック単位となるようにして(N−1)×N行列で定義されるディスクアレイを構成し、前記行列の各行を水平パリティグループと定義するとともに前記行列の斜線方向に循環構成のブロックを斜線パリティグループと定義し、水平パリティブロックを1行目のブロックから斜線方向に各ディスクに1つずつ配置するとともに斜線パリティブロックを各ディスクの所定の行のブロックに配置する行程と、前記水平及び斜線パリティグループそれぞれのデータ値を排他的論理和(XOR)演算して該当グループの水平及び斜線パリティブロックにそれぞれ記憶するパリティ記憶行程と、2つのディスクに誤りが発生する時に、フェイルブロックが1つだけ含まれた斜線パリティグループを用いて該フェイルブロックを修復し、さらに、この修復されたフェイルブロックの水平パリティグループを用いて該水平パリティグループの他のフェイルブロックを修復し、そして、この作業を繰り返すことにより、誤り発生した2つのディスクのフェイルブロックを全て修復する修復行程と、を実施することを特徴とする。1つのディスクに誤りが発生する時、水平パリティグループの他のブロックを用いて誤り発生したブロックを修復する。(N−1)×N行列をディスクjのブロックiの値を示すa(i、 j)形態(ここで、iは0≦i≦N−2、jは0≦i≦(N−1)で表現すると、水平パリティブロックはa(i、 N−2−i)である。水平パリティブロックa(i、 N−2−i)には数式1の排他的論理和計算による水平パリティ値が記憶される。斜線パリティブロックはa(N−2、 j)である斜線パリティブロックa(N−2、 j)には数式2の排他的論理和計算による斜線パリティ値が記憶される。ディスクiとディスクjに誤りが発生する場合(0≦i<j≦(N−1))、前記ディスクjの誤り発生したブロックa(n、 j)は数式3によりデータの修復が行われる。ディスクiとディスクjに誤りが発生する場合(0≦i<j≦(N−1))、ディスクiの誤り発生したブロックa(n、 i)は数式4によりデータの修復が行われる。
【0013】
また、他の方法として、N+1(Nは素数)個の各ディスクを(N−1)個のブロック単位となるようにして(N−1)×(N+1)行列で定義されるディスクアレイを構成し、前記行列の各行を水平パリティグループと定義するとともにN+1列目のディスクのブロックを除いた前記行列の斜線方向に循環構成のブロックを斜線パリティグループと定義し、そして、水平パリティブロックを(N+1)列目のディスクのブロックに配置するとともに斜線パリティブロックを各ディスクの所定の行のブロックに配置する行程と、前記水平及び斜線パリティグループそれぞれのデータ値を排他的論理和(XOR)演算して該当グループの水平及び斜線パリティブロックにそれぞれ記憶するパリティ記憶行程と、2つのディスクに誤りが発生する時に、フェイルブロックが1つだけ含まれた斜線パリティグループを用いて該フェイルブロックを修復し、さらに、この修復されたフェイルブロックの水平パリティグループを用いて該水平パリティグループのフェイルブロックを修復し、そして、この作業を繰り返すことにより、誤り発生した2つのディスクのフェイルブロックを全て修復する修復行程と、を実施することを特徴とする。1つのディスクに誤りが発生する時、水平パリティグループの他のブロックを用いて誤り発生したブロックを修復する。(N−1)×(N+1)行列をディスクjのブロックiの値を示すa(i、 j)形態(ここで、0≦i≦N−2、0≦j≦N)で表現すると、水平パリティブロックはa(i、 N)である。水平パリティブロックa(i、 N)には数式5の排他的論理和計算による水平パリティ値が記憶される。斜線パリティブロックはa(N−2、 i)である。斜線パリティブロックa(N−2、 i)には数式6の排他的論理和計算により斜線パリティ値が記憶される。ディスクiとディスクjに誤りが発生する場合(0≦i<j≦(N−1))、前記ディスクjの誤り発生したブロックa(n、 j)は数式7によりデータの修復が行われる。ディスクiとディスクjに誤りが発生する場合(0≦i<j≦(N−1))、ディスクiの誤り発生したブロックa(n、 i)は数式8及び数式9(n=(N−2)の場合)によりデータの修復が行われる。
【0014】
本発明の外部記憶サブシステムは、ディスクアレイは、N個(Nは素数)の各ディスクを(N−1)個のブロック単位となるようにして(N−1)×N行列を定義し、前記行列のブロックを水平パリティグループと定義するとともに前記行列の斜線方向で循環構成のブロックを斜線パリティグループと定義し、水平パリティブロックを1行目のブロックから斜線方向に各ディスクに1つずつ配置するとともに斜線パリティブロックを各ディスクの所定のブロックに配置するようにしてあり、このディスクアレイの制御装置は、前記水平及び斜線パリティグループそれぞれのデータ値を排他的論理和(XOR)演算して該当グループの水平及び斜線パリティブロックに水平及び垂直パリティ値をそれぞれ記憶し、2つのディスクに誤りが発生する時に1つのフェイルブロックを含んだ斜線パリティグループを用いて該フェイルブロックを修復し、さらに、この修復されたフェイルブロックの水平パリティグループを用いて該水平パリティグループのフェイルブロックを修復し、そして、この作業を繰り返すことにより、誤り発生した2つのディスクのフェイルブロックを全て修復するようになっていることを特徴とする。制御装置は、1つのディスクに誤りが発生する時、水平パリティグループの他のブロックを用いて誤り発生したブロックを修復する。ディスクアレイの各ディスクと制御装置との間には、データディスクの内容の更新時にディスクのデータバッファリング及びキャッシングを行うバッファがそれぞれ備えられる。
【0015】
他の外部記憶サブシステムとしては、ディスクアレイは、N+1(Nは素数)個の各ディスクを(N−1)個のブロック単位となるようにして(N−1)×(N+1)行例を定義し、前記行列の各行のブロックを水平パリティグループと定義するとともに(N+1)列目のディスクのブロックを除いた行列の斜線方向で循環構成のブロックを斜線パリティグループと定義し、水平パリティブロックを(N+1)列目のディスクのブロックに配置するとともに斜線パリティブロックを各ディスクの所定の行のブロックに配置するようにしてあり、このディスクアレイの制御装置は、前記水平及び斜線パリティグループそれぞれのデータ値を排他的論理和(XOR)演算して該当グループの水平及び斜線パリティブロックに水平パリティ値及び斜線パリティ値をそれぞれ記憶し、2つのディスクに誤りが発生する時に1つのフェイルブロックの含まれた斜線パリティグループを用いて該フェイルブロックを修復し、さらに、この修復されたフェイルブロックの水平パリティグループを用いて該水平パリティグループのフェイルブロックを修復し、そして、この作業を繰り返すことにより、誤り発生した2つのディスクのフェイルブロックを全て修復するようになっていることを特徴とする。制御装置は、1つのディスクに誤りが発生する時に水平パリティグループの他のブロックを用いて誤り発生したブロックを修復する。ディスクアレイの各ディスクと制御装置との間には、データディスクの内容の更新時にディスクのデータバッファリング及びキャッシングするバッファがそれぞれ備えられる。
【0016】
データ修復方法としては、N個(Nは素数)の各ディスクを(N−1)個のブロック単位となるようにして(N−1)×N行列で定義されるディスクアレイを構成し、前記行列の各行のブロックを水平パリティグループと定義するとともに前記行列の斜線方向で循環構成のブロックを斜線パリティグループと定義し、そして、水平パリティブロックを1行目のブロックから斜線方向となるように各ディスクに1つずつ配置するとともに斜線パリティブロックを各ディスクの所定の行のブロックに配置してあり、制御装置によって前記水平及び斜線パリティグループそれぞれのデータ値を排他的論理和(XOR)演算して該当グループの水平及び斜線パリティブロックの水平及び斜線パリティ値としてそれぞれ記憶している外部記憶サブシステムでディスクiとディスクjに(0≦i<j≦(N−1))誤りが発生した時にデータを修復する方法であって、前記誤り発生したディスクiとjの差であるkを求め、フェイルしたディスクのブロック修復行程を繰り返し用いるための変数mを“0”に初期化する第1行程と、誤り発生が1つだけ存在する斜線パリティグループに属するディスクjのブロックn(n=N−1−k−m×k mod N)の値a(n、 j)を数式10を用いて求める第2行程と、この第2行程遂行後に誤り発生が1つのみ存在する水平パリティグループに属するディスクiのブロックnの値 a(n、 i)を数式11を用いて求める第3行程と、前記変数mをN−2まで増加させながら前記第2行程及び第3行程を繰り返し行う第4行程と、を実施することを特徴とする。
【0017】
他の方法として、N+1(Nは素数)個の各ディスクを(N−1)個のブロック単位となるようにして(N−1)×(N+1)行列で定義されるディスクアレイを構成し、前記行列の各行のブロックを水平パリティグループと定義するとともに(N+1)列目のディスクのブロックを除いた前記行列の斜線方向で循環構成のブロックを斜線パリティグループと定義し、そして、水平パリティブロックを(N+1)列目のディスクのブロックに配置するとともに斜線パリティブロックを各ディスクの所定の行のブロックに配置してあり、制御装置によって前記水平及び斜線パリティグループそれぞれのデータ値を排他的論理和(XOR)演算して該当グループの水平及び斜線パリティブロックに水平及び斜線パリティ値としてそれぞれ記憶している外部記憶サブシステムでディスクiとディスクjに(0≦i<j≦(N−1))誤りが発生した時にデータを修復する方法であって、前記誤り発生したディスクiとjの差であるkを求め、フェイルしたディスクのブロック修復行程を繰り返し用いるための変数mを“0”に初期化する第1行程と、誤り発生が1つだけ存在する斜線パリティグループに属するディスクjのブロックn(n=N−1−k−m×k mod N)の値をa(n、 j)数式12を用いて求める第2行程と、この第2行程遂行後、誤り発生が1つのみ存在する水平パリティグループに属するディスクiのブロックnの値を a(n、 i)数式13(n≠N−2の場合)及び数式14(n=N−2の場合)を用いて求める第3行程と、前記変数mをN−2まで増加させながら前記第2行程及び第3行程を繰り返し行う第4行程と、を実施することを特徴とする。
【0018】
【発明の実施の形態】
本発明の実施形態によるDH法は、2つのディスクの誤り発生時にも簡単なXOR演算のみで修復可能な効率的なパリティ配置法であり、パリティを分散配置して隘路現象を排除することにより、ディスクアレイの性能向上を図る。DH技法の”D”と”H”は、斜線パリティ(diagonal parity )と水平パリティ(horizontal parity )の頭文字をとってものである。
【0019】
以下、本発明の実施形態を添付図面を参照して詳細に説明する。
【0020】
本発明の実施形態であるDH法を図1、図3、図5〜図7、図11〜図14、図19、図20A〜Gを参照して説明し、次に他の実施形態であるDH2法を図2、図4、図8〜図10、図15〜図18、図21、図22A〜Gを参照して説明する。
【0021】
DH法:図1はDH法を用いたディスクアレイのブロック構成図である。ホストコンピュータ2は、コントローラ4にI/O要求してデータを処理する。コントローラ4は、ディスクアレイの全般的な処理、管理及び保持を行うもので、DH法のエンコード及びデコードアルゴリズムを行うユニットとXOR演算を行うプロセッサとを含む。N(Nは素数)個からなるディスク8−0〜8−(N−1)の各ディスクには、本発明のDH法の構造に基づいたデータブロック及びパリティブロックが構成されている。コントローラ4とディスク8−0〜8−(N−1)との間にそれぞれ位置したバッファ6−0〜6−(N−1)は、コントローラ4におけるディスクアクセス時間を減らすために備えられた高性能バッファで、ディスクアレイのシステム性能を向上させる。ホストコンピュータ2とコントローラ4との間はバス10で接続され、コントローラ4とバッファ6−0〜6−(N−1)との間、ディスク8−0〜8−(N−1)とバッファ6−0〜6−(N−1)との間は高速入出力のために、それぞれのI/Oバス12−0〜12−(N−1)で直接接続される。
【0022】
図3は、DH法による水平及び斜線パリティグループと水平及び斜線パリティブロックの説明図である。図5は、ディスクの個数N=7の場合のDH法の水平パリティグループ及び水平パリティブロックの配置図であり、図6は、ディスクの個数N=7の場合のDH法の斜線パリティグループ及び斜線パリティブロックの配置図であり、図7は、ディスクの個数N=7の場合のDH法におけるパリティ及びデータの行列形態図である。図11は本発明のDH法によるパリティ記憶アルゴリズムのフローチャートである。図12〜図14はパリティ記憶行程の説明図である。図19は、誤り発生時のデータ修復のフローチャートであり、図20A〜Gは、データ修復の具体例である。
【0023】
まず、図3、図5〜図7を参照してDH法の構成(定義1)、水平パリティブロック及びグループ(定義2)、斜線パリティブロック及びグループ(定義3)を定義し、各定義に基づいたDH法のデータ及び配置を説明する。
【0024】
定義1:DH法の構成は、N(Nは素数)個のディスクでディスクアレイを構成する場合、各ディスクは(N−1)個のブロックからなり、これを(N−1)×N行列で、a(i、 j)と定義する。ここで、0≦i≦N−2、0≦j≦N−1である。表1は行列a(i、 j)の形態を表したものである。
【表1】
【0025】
行列a(i、 j)はディスクjのブロックiの値を示すもので、それぞれのブロックは2進数である。このような(N−1)×Nの行列a(i、 j)が与えられた場合に、(N−1)番目の行、即ち各ディスクの最終ブロックa(N−2、0) 、a(N−2、1) ・・・a(N−2、 N−1)は斜線パリティを記憶するのに用いられる斜線パリティブロックであり、(N−1)番目の列のディスクの1番目のブロックa(0、 N−2)から1番目の列のディスクの最終ブロックまでa(N−2、0) 、即ちa(0、 N−2)、a(1、 N−3)、a(2、 N−4)、・・・、a(N−3、1) 、a(N−2、0) は各行のパリティ値を記憶する水平パリティブロックとして用いられ、その他のブロックはデータを記憶するデータブロックである。
【0026】
定義2:定義1で定義されたディスクアレイを表す行列a(i、 j)で、各行を水平パリティの誤り訂正グループ(水平パリティグループ)と定義し、その行の水平パリティブロックに、その行の他のブロックのXOR値を記憶する。即ち、行列a(i、 N−2−i)に該当するブロックに各水平パリティグループのパリティ値が記憶される。ここで、0≦i≦N−2である。
【0027】
図3は5個のディスク(N=5)d0〜d4のディスクアレイを示す図であり、ディスクd0〜d4はそれぞれ4つのブロック(N−1=4)b0〜b3、b4〜b7、・・・から構成される。4つのブロックb0〜b3はそれぞれの水平パリティグループになり、実線で囲んだ参照番号20は2番目のブロックb1の水平パリティグループを示している。斜線で表示したブロックは、各水平パリティグループのパリティ値を記憶する水平パリティブロックであり、a(i、 N−2−i)に該当するブロックである。N=5なので、a(3、0) 、a(2、1) 、a(1、2) 、a(0、3) に該当するブロックが水平パリティブロックである。図5はN=7の場合の各水平パリティグループを番号(0〜5)で示したもので、斜線で表示したブロックH0〜H5は各水平パリティブロックになる。
【0028】
定義3:定義1の(N−1)×N行列a(i、 j)における(N−1)番目の行は、それぞれの斜線パリティ値を記憶するブロック(斜線パリティブロック)である。斜線パリティの各誤り訂正グループ(斜線パリティグループ)は、水平パリティブロックが位置するように、斜線パリティブロックの右側上方の斜線方向に各グループが循環構成される。斜線パリティグループ中の1番目の斜線パリティグループは、1番目のディスクの最終ブロックから右側上方の斜線方向へのグループであり、水平パリティブロックと重なる。斜線パリティブロック、即ち行列a(N−2、 j)に属するブロックには、各斜線パリティグループのパリティ値が記憶される。ここで、0≦j≦N−1である。
【0029】
図3において点線で囲んだ参照番号22は、2番目の斜線パリティグループである。そして、4(=N−1)番目の行(i=3)に位置した網掛けされたブロックは、各斜線パリティグループのパリティ値を記憶する斜線パリティブロックである。図6はN=7の場合の各斜線パリティグループを番号(0〜6)で示したもので、網掛けされたブロックD0〜D6は、各斜線パリティグループのパリティブロックである。
【0030】
定義2、3でそれぞれ定義された水平パリティブロック及び斜線パリティブロックを除いた他のブロックは、データの記憶されるデータブロックである。図7は、ディスク数N=7の場合の、パリティ及びデータの配置図である。図7において、H0〜H5は各水平パリティグループ(0〜5番)の水平パリティブロックを、D0〜D6は斜線パリティグループ(0〜6番)の斜線パリティブロックを示す。データブロックはi、jで表されており、iは水平パリティグループを、jは斜線パリティグループを意味する。
【0031】
DH法によるパリティ記憶アルゴリズムは、各パリティグループのデータをXOR演算してパリティ値を求める方法である。図11はDH法のパリティ記憶アルゴリズムのフローチャートである。100段階で(N−1)×Nディスクアレイを構成すると、図1のコントローラ4は110段階及び120段階を行って水平パリティ値及び斜線パリティ値を求める。110段階でコントローラ4は、水平パリティグループ0〜(N−3)において該当水平パリティグループの水平パリティ値を求めた後、該当水平パリティブロックにそれぞれ記憶する。該当水平パリティブロックに記憶する水平パリティ値は数式15で求められる。
【数15】
ここで、0≦i≦(N−3)、j≠N−2−i
【0032】
次に、コントローラ4は120段階で、斜線パリティグループ0〜(N−1)において該当斜線パリティグループの斜線パリティ値を求めた後、該当斜線パリティブロックにそれぞれ記憶する。該当斜線パリティブロックに記憶される斜線パリティ値は数式16で求められる。
【数16】
ここで、0≦i≦(N−1)
【0033】
数式15、16によって水平パリティ値及び斜線パリティ値を計算する具体例を図12〜図14によって説明する。図12〜図14はディスクの個数N=7の場合の、DH法によるパリティ記憶行程の説明図である。
【0034】
表2の行列は7個のディスク(N=7)の場合のDH法のディスクアレイを示す行列であり、各ブロックにはエンコード及びデコードで用いられる行列番号が付けられている。
【表2】
【0035】
図12は、表2のような行列で各データブロックに2進数の任意のデータが記憶されている状態を示すもので、斜線で表示された空ブロックには水平パリティ値が、網掛けされた空ブロックには斜線パリティ値が、それぞれ数式15、16に基づいた計算後に記憶される。
【0036】
数式17は数式15を用いて各水平パリティブロックb0〜b4の水平パリティ値を求めており、その演算結果をそれぞれの水平パリティブロックa(0、5) 、a(1、4) 、a(2、3) 、a(3、2) 、a(4、1) に記憶した状態図が図13である。
【数17】
【0037】
次に数式16を用いて、数式18に示すように各斜線パリティブロック(a(5、0) 、a(5、1) 、a(5、2) 、a(5、3) 、a(5、4) 、a(5、5) 、a(5、6) )の斜線パリティ値を求める。この結果を、各斜線パリティブロックに記憶させた状態が図14であり、これは、N=7の場合のパリティ及びデータの配置例である。
【数18】
【0038】
次に、DH法のデコード方法、即ちディスク誤り発生時の該当ディスクのデータ修復方法について説明する。
【0039】
DH法によるデータ修復方法の基本思想は、1つのディスクに誤りが発生する時には水平パリティ或いは斜線パリティを用いて容易に修復し、2つのディスクに誤りが発生する時には斜線パリティと水平パリティを繰り返し用いて2つのディスクの全てのブロックを修復する。
【0040】
N個からなるディスクアレイで、水平パリティグループ中の1つのブロックにのみ誤りが発生した時には、残りのブロックをXORして修復することができる。即ち、水平パリティグループを構成するNブロックのうち(N−1)個のブロックが正常の場合、誤り発生したディスクのブロック修復は可能である。
【0041】
斜線パリティグループは(N−1)個のブロックから構成されるが、これらは互いに異なるディスクに分散記憶されている。このために、N個のディスクのうち2つのディスクに誤りが発生した場合、斜線パリティグループのうち1つのブロックにのみ誤りを含むものが2つ存在する。従ってこのブロックを修復すれば、修復したブロックを含む水平パリティグループの各ブロックのうちフェイルしている残りの1つのブロックも修復することができる。次に、水平パリティグループにより修復されたブロックを含む斜線パリティグループの残りのフェイルしたブロックを修復し、この繰り返しで誤りを全て修復できる。このような方法で、2つのディスクに誤りが発生した場合でも全て修復することができる。
【0042】
図19で後述されるDH法のデコード方法は、まず、ディスクiとディスクjの誤り発生時にディスクの差kを求めた後、ディスク(i+1)の斜線パリティブロックの斜線パリティグループに属するディスクjのブロックを修復する。その後、修復されたディスクjのブロックを含む水平パリティグループを通してディスクiのブロックを修復し、この行程を繰り返し行って誤りの発生した2つのディスクの全ブロックを修復する。
【0043】
2つのディスクに誤りが発生する時に、図1のコントローラ4が誤り発生した該当ディスクの全てのブロックを修復する方法を図19のフローチャートを参照して詳細に説明する。ここでは、ディスクiとディスクjに誤りが発生した(0≦i<j≦(N−1))と仮定する。
【0044】
コントローラ4は300段階でk=j−i、m=0を設定する。即ち、ディスクiとディスクjに誤りが発生する時にディスクの差kを求め、フェイルしたディスクのブロック修復行程を繰り返し行うための変数mを“0”に初期化する。次に、302段階では数式19でn値を求める。
【数19】
【0045】
前述したように、斜線パリティグループは(N−1)個のブロックから構成され、これらは互いに異なるディスクに分散している。従って、N個のディスクのうち2つのディスクに誤りが発生しても、斜線パリティグループ中の1つのブロックにのみ誤りを含むものが2つ存在する。従って、nは1つのブロックにのみ誤りが発生した斜線パリティグループのディスクjのフェイルブロック値である。その後、コントローラ4は304段階で1つのブロックにのみ誤りが発生した斜線パリティグループを用いて、ディスクjのブロックnをデコードする。この時、数式20を用いてディスクjのブロックnの値a(n、 j)を求める。
【数20】
ここで、i+1−m×k+l mod N≠j
【0046】
その後、コントローラ4は306段階で、求めたディスクjのブロックnの含まれる水平パリティグループを用いて、ディスクiのブロックnをデコードする。この時、数式21を用いてディスクiのブロックnの値a(n、 j)を求める。
【数21】
ここで、l≠i
【0047】
その後、308段階に進んでm<(N−1)かどうかを判断する。判断結果がイエスならば、310段階に進んでmに1を足し、再び302段階からの行程を行い、ノーならばデータ修復を終了する。
【0048】
次に図19、図20A〜Gを用いて、データ修復の具体例を説明する。図20A〜Gでは図14と同じくディスク数N=7の時のデータ及びパリティの配置された状態で、2番目のディスクd1(i=1)及び4番目のディスクd3(j=3)がフェイルした時のDH法によるデータ修復行程を示している。
【0049】
図20Aの行列は、図14で用いられたディスクアレイで2番目と4番目のディスクに誤りが発生した状況を示す。即ち、i=1、j=3であり、よってk=2、n=N−1−k−k×m mod N=7−1−2−2×m mod 7=4−2m mod 7である。従って、ディスクjのブロックnの値を求める図19の304段階における数式20は数式22のようになる。
【数22】
【0050】
ディスクiのブロックnの値を求める図19の306段階における数式21は数式23のようになる。
【数23】
【0051】
これにより、m=0の時、数式22、23は次のようになる。
【数24】
【0052】
a(4、3) はフェイル状態の4番目のディスク(j=3)の5番目のブロック(n=4)であり、その斜線パリティグループのXORによって値が求められ、その値は“1”である。a(4、1) はフェイル状態のディスク(i=1)の5番目のブロック(n=4)であり、その水平パリティグループのXORによって値が求められ、その値も“1”である。図20Bの行列では、m=0の修復結果を該当ブロックに代入している。
【0053】
m=1の時、数式22、23は次のようなる。
【数25】
【0054】
図20Cの行列では、m=1の時のフェイル状態の4番目と2番目のディスク(j=3、i=1)の3番目のブロック(n=2)に、斜線パリティグループと水平パリティグループを用いて修復した値を代入している。
【0055】
m=2の時、数式22、23は次のようになる。
【数26】
【0056】
図20Dの行列では、m=2の時のフェイル状態の4番目と2番目のディスク(j=3、i=1)の1番目のブロック(n=0)に、斜線パリティグループと水平パリティグループを用いて修復した値を代入している。
【0057】
m=3の時、数式22、23は次のようなる。
【数27】
【0058】
図20Eの行列では、m=3の時のフェイル状態の4番目と2番目のディスク(j=3、i=1)の6番目のブロック(n=5)に、斜線パリティグループと水平パリティグループを用いて修復した値を代入している。
【0059】
m=4の時、数式22、23は次のようになる。
【数28】
【0060】
図20Fの行列では、m=4の時のフェイル状態の4番目と2番目のディスク(j=3、i=1)の4番目のブロック(n=3)に、斜線パリティグループと水平パリティグループを用いて修復した値を代入している。
【0061】
m=5の時、数式22、23は次のようになる。
【数29】
【0062】
図20Gの行列では、m=5の時のフェイル状態の4番目と2番目のディスク(j=3、i=1)の2番目のブロック(n=1)に、斜線パリティグループと水平パリティグループを用いて修復した値を代入している。図20Gをみると、図14の最初のディスクアレイと同じなので、データの修復が完全になされたことが分かる。
【0063】
次に、本発明の他の実施形態のDH2法を説明する。
【0064】
DH2法:図2は、本発明の他の実施形態であるDH2法を用いたディスクアレイのブロック構成図である。DH2法によるディスクアレイのブロック構成には、図1のブロック構成に加えて、(N+1)番目のディスク8−Nとディスク8−Nに対応するバッファ6−Nがさらに追加されている。コントローラ4とバッファ6−Nとの間、及びディスク8−Nとバッファ6−Nとの間にはI/Oバス12−Nが接続されている。DH2法によって追加されたディスク8−Nは、DH法でデータディスクの内容更新時に発生し得る隘路現象オーバヘッドを減らすために用いられ、下記で定義される水平パリティブロックを記憶する水平パリティディスクである。ディスクの数Nは、DH法と同じく素数である。
【0065】
図4は、DH2法による水平及び斜線パリティグループと水平及び斜線パリティブロックを説明図である。図8は、ディスクの個数N=7の場合のDH2法の水平パリティグループ及び水平パリティブロックの配置図であり、図9は、ディスクの個数N=7の場合のDH2法の斜線パリティグループ及び斜線パリティブロックの配置図であり、図10は、ディスクの個数N=7の場合のDH2法におけるパリティ及びデータの配置図である。図15は、DH2法によるパリティ記憶アルゴリズムのフローチャートである。図16〜図18は、ディスクの個数N=7の場合のDH2法によるパリティ記憶行程の説明図である。図21は、誤り発生時のデータ修復のフローチャートであり、図22A〜Gは、データ修復の具体例である。
【0066】
本発明のDH2法は、水平パリティブロックを専用の水平パリティディスクに配置し、斜線パリティブロックを残りのディスクに分散配置する方法である。図4、図8〜図10を参照してDH2法の構成(定義4)、水平パリティブロック及びグループ(定義5)、及び斜線パリティブロック及びグループ(定義6)を定義し、定義に基づいたDH2法のデータ及び配置を説明する。
【0067】
定義4:N(Nは素数)個のディスクでディスクアレイを構成する場合、各ディスクは(N−1)個のブロックからなり、これを(N−1)×(N+1)行列で、a(i、 j)定義し、下記の表3のように表す。
【表3】
【0068】
定義5:定義1で定義されたディスクアレイを示す行列a(i、 j)で、各行を水平パリティの誤り訂正グループ(水平パリティグループ)と定義し、各水平パリティグループの最終ディスク、即ち(N+1)番目のディスクのブロック(水平パリティブロック)に、その行の他のブロックのXOR値を記憶する。つまり行列a(i、 N)のブロックに、各水平パリティグループのパリティ値が記憶される。ここで、0≦i≦N−3である。
【0069】
図4は5個のディスク(N=5)d0〜d4のディスクアレイを示す図であり、ディスクd0〜d4はそれぞれ4つのブロック(N−1=4)b0〜b3、b4〜b7、・・・から構成される。そのうち3つのブロックb0〜b2はそれぞれの水平パリティグループになり、実線で囲んだ参照番号30は2番目のブロックb1の水平パリティグループを示している。斜線で表示したブロックは、各水平パリティグループのパリティ値を記憶する水平パリティブロックであり、6番目のディスクd5にあるブロック、即ち、行列a(i、 N)に該当するブロックである。図8はN=7の場合の各水平パリティグループを番号(0〜4)で示したもので、斜線で表示したブロックH0〜H4は各水平パリティグループのパリティブロックになる。
【0070】
定義6:定義3で定義されたDH法の斜線パリティグループ及びブロックと同様に定義される。図4を参照すると、点線で囲んだ参照番号32は2番目の斜線パリティグループである。そして、4(=N−1)番目の行(i=3)に位置した網掛けされたブロックは、各斜線パリティグループのパリティ値を記憶する斜線パリティブロックである。図9はN=7の場合の各斜線パリティグループを番号(0〜6)で示したもので、網掛けされたブロックD0〜D6は各斜線パリティグループのパリティブロックである。
【0071】
定義5、6でそれぞれ定義された水平パリティブロック及び斜線パリティブロックを除いた他のブロックは、データの記憶されるデータブロックである。図10は、ディスク数N=7の場合のパリティ及びデータの配置図である。図10において、H0〜H4は各水平パリティグループ(0〜4番)の水平パリティブロックを、D0〜D6は斜線パリティグループ(0〜6番)の斜線パリティブロックを示す。データブロックはi、jで表されており、iは水平パリティグループを、jは斜線パリティグループを意味する。
【0072】
DH2法によるパリティ記憶アルゴリズムは各パリティグループのデータをXOR演算してパリティ値を求める方法である。図15はDH2法のパリティ記憶アルゴリズムのフローチャートである。200段階で(N−1)×(N+1)ディスクアレイを構成すると、図2のコントローラ4は210段階及び220段階を行って水平パリティ値及び斜線パリティ値を求める。210段階でコントローラ4は、水平パリティグループ0〜(N−3)において該当水平パリティグループの水平パリティ値を求めた後、水平パリティ専用ディスクにある該当水平パリティブロックにそれぞれ記憶する。水平パリティブロックに記憶する水平パリティ値を求める式は数式30で求められる。
【数30】
ここで、0≦i≦(N−2)
【0073】
次に、コントローラ4は220段階で斜線パリティグループ0〜(N−1)において該当斜線パリティグループの斜線パリティ値を求めた後、該当斜線パリティブロックにそれぞれ記憶する。該当斜線パリティブロックに記憶される斜線パリティ値を求める式は数式31で求められる。
【数31】
ここで、0≦i≦(N−1)
【0074】
数式30、31によって水平パリティ値及び斜線パリティ値を計算する具体例を図16〜図18によって説明する。図16〜図18はディスクの個数N=7の場合の、DH2法によるパリティ記憶行程の説明図である。
【0075】
表4の行列は7個のディスク(N=7)の場合のDH法のディスクアレイを示す行列であり、各ブロックにはエンコード及びデコードで用いられる行列番号が付けられている。
【表4】
【0076】
図16は、表4のような行列で各データブロックに2進数の任意のデータが記憶されている状態を示すもので、斜線で表示された空ブロックには水平パリティ値が、網掛けされた空ブロックには斜線パリティ値が、それぞれ数式30、31に基づいた計算後に記憶される。
【0077】
数式32は数式30を用いて各水平パリティブロックb0〜b4の水平パリティ値を求めており、その演算結果をそれぞれの水平パリティブロックa(0、7) 、a(1、7) 、a(2、7) 、a(3、7) 、a(4、7) に記憶した状態図が図17である。
【数32】
【0078】
次に数式31を用いて、数式33に示すように各斜線パリティブロック(a(5、0) 、a(5、1) 、a(5、2) 、a(5、3) 、a(5、4) 、a(5、5) 、a(5、6) )の斜線パリティ値を求める。この結果を、各斜線パリティブロックに記憶させた状態が図18であり、これは、N=7の場合のパリティ及びデータの配置例である。
【数33】
【0079】
次に、DH2法のデコード方法、即ちディスク誤り発生時の該当ディスクのデータ修復方法について説明する。
【0080】
DH2法によるデータ修復方法の基本思想は、1つのディスクに誤りが発生する時には水平パリティ或いは斜線パリティを用いて容易に修復し、2つのディスクに誤りが発生する時にはDH法と同様に、斜線パリティと水平パリティを繰り返し用いて2つのディスクの全てのブロックを修復する。
【0081】
(N+1)個からなるディスクアレイで、水平パリティグループ中の1つのブロックにのみ誤りが発生した時には、残りのブロックをXORして修復することができる。即ち、水平パリティグループを構成する(N+1)ブロックのうちN個のブロックが正常の場合、誤り発生したディスクのブロック修復は可能である。
【0082】
斜線パリティグループは(N−1)個のブロックから構成されるが、これらは互いに異なるディスクに分散している。DH2法では2つのディスクに誤りが発生する場合を、2通りに分けることができる。1つは、水平パリティブロックをもっている水平パリティディスクともう1つのディスクに誤りが発生する場合で、もう1つは水平パリティディスクを除いた2つのディスクに誤りが発生する場合である。水平パリティディスクが含まれた場合には、斜線パリティグループを用いて誤り発生した水平パリティディスクではない方のディスクを修復した後、数式30によって水平パリティ値を計算するように水平パリティディスクを修復すればよい。
【0083】
水平パリティディスクを除いた2つのディスクに誤りが発生した場合には、斜線パリティグループのうち1つのブロックにのみ誤りが発生したものが2つ存在する。従ってこのブロックを修復すれば、修復したブロックを含む水平パリティグループの各ブロックのうちフェイルしている残りの1つのブロックを修復することができる。次に、水平パリティグループにより修復されたブロックを含む斜線パリティグループの残りのフェイルしたブロックを修復し、この繰り返しで誤りを全て修復できる。
【0084】
図21で後述されるDH2法のデコード方法は、まず、ディスクiとディスクjの誤り発生時にディスクの差kを求めた後、ディスク(i+1)の斜線パリティブロックの斜線パリティグループに属するディスクjのブロックを修復する。その後、修復されたディスクjのブロックを含む水平パリティグループを通してディスクiのブロックを修復し、この行程を繰り返し行って誤りの発生した2つのディスクの全ブロックを修復する。
【0085】
2つのディスクに誤りが発生する時に、図2のコントローラ4が誤り発生した該当ディスクの全てのブロックをDH2法で修復する方法を、図21のフローチャートを参照して詳細に説明する。ここでは、ディスクiとディスクjに誤りが発生した(0≦i<j≦(N−1))と仮定する。
【0086】
コントローラ4は400段階でk=j−i、m=0に設定する。即ち、ディスクiとディスクjに誤りが発生する時にディスクの差kを求め、フェイルしたディスクのブロック修復行程を繰り返し行うための変数mを“0”に初期化する。次に、402段階では数式34でn値を求める。
【数34】
【0087】
nは1つのブロックにのみ誤り発生した斜線パリティグループのフェイルブロック値である。その後、コントローラ4は404段階で1つのブロックにのみ誤りが発生した斜線パリティグループを用いて、ディスクjのブロックnをデコードする。この時、数式35を用いてディスクjのブロックnの値a(n、 j)を求める。
【数35】
ここで、i+1−m×k+l mod N≠j
【0088】
その後、コントローラ4は406段階でn=(N−2)かを判断する。n=(N−2)でなければ、408段階に進んで404段階で求めたディスクjのブロックnに対する水平パリティグループを用いてディスクiのブロックnをデコードする。この場合には数式36を用いてブロックnの値a(n、 i)を求める。
【数36】
ここで、i≠l
【0089】
406段階でn=(N−2)であれば、コントローラ4は410段階に進み、斜線パリティブロックと水平パリティブロックを用いてディスクiのブロック(N−2)をデコードする。この場合には数式37を用いてブロック(N−2)の値a(n、 i)を求める。
【数37】
ここで、i≠l
【0090】
408段階或いは410段階後にコントローラ4は、412段階に進む。412段階ではm<(N−1)かを判断する。判断結果がイエスならば、414段階に進んでmに1を足し、再び402段階からの行程を行い、ノーならばデータ修復を終了する。
【0091】
次に図21、図22A〜Gを用いて、データ修復の具体例を説明する。図22A〜Gでは図18と同じく、ディスク数N=7の時のデータ及びパリティが配置された状態で、2番目のディスクd1(i=1)及び4番目のディスクd3(j=3)がフェイルした時のDH2法によるデータ修復行程を示している。
【0092】
図22Aの行列は、図18で用いられたディスクアレイで2番目と4番目のディスクに誤りが発生した状況を示す。即ち、i=1、j=3であり、よってk=2、n=N−1−k−k×m mod N=7−1−2−2×m mod 7=4−2m mod 7である。従って、ディスクjのブロックnの値を求める図21の404段階における数式35は数式38のようになる。
【数38】
【0093】
ディスクiのブロックnの値を求める図21の408段階における数式36は数式39のようになる。
【数39】
【0094】
但し、n=(N−2)の場合には、図410段階における数式37は数式40のようになる。
【数40】
【0095】
これにより、m=0の時、数式38、39は次のようになる。
【数41】
【0096】
a(4、3) はフェイル状態の4番目のディスク(j=3)の5番目のブロック(n=4)であり、その斜線パリティグループのXORによって値が求められ、その値は“1”である。a(4、1) はフェイル状態の2番目のディスク(i=1)の5番目のブロック(n=4)であり、その水平パリティグループのXORによって値が求められ、その値も“1”である。図22Bの行列では、m=0の修復結果を該当ブロックに代入している。
【0097】
m=1の時、数式38、39は次のようになる。
【数42】
【0098】
図22Cの行列では、m=1の時のフェイル状態の4番目と2番目のディスク(j=3、i=1)の3番目のブロック(n=2)に、斜線パリティグループと水平パリティグループを用いて修復した値を代入している。
【0099】
m=2の時、数式38、39は次のようになる。
【数43】
【0100】
図22Dの行列では、m=2の時のフェイル状態の4番目と2番目のディスク(j=3、i=1)の1番目のブロック(n=0)に、斜線パリティグループと水平パリティグループを用いて修復した値を代入している。
【0101】
m=3の時は、n=N−1−k−k×m mod N=7−1−2−2×3 mod 7=5=7−2=(N−2)となるので、フェイルした水平パリティブロックa(5、1) をデコードする場合には410段階で適用される数式40が使われる。つまり、m=3の時、数式38、40は次のようになる。
【数44】
【0102】
図22Eの行列では、m=3の時のフェイル状態の4番目と2番目のディスク(j=3、i=1)の6番目のブロック(n=5)に、斜線パリティグループと水平パリティグループを用いて修復した値を代入している。
【0103】
m=4の時、数式38、39は次のようになる。
【数45】
【0104】
図22Fの行列では、m=4の時のフェイル状態の4番目と2番目のディスク(j=3、i=1)の4番目のブロック(n=3)に、斜線パリティグループと水平パリティグループを用いて修復した値を代入している。
【0105】
m=5の時、数式38、39は次のようになる。
【数46】
【0106】
図22Gの行列では、m=5の時のフェイル状態の4番目と2番目のディスク(j=3、i=1)の2番目のブロック(n=1)に、斜線パリティグループと水平パリティグループを用いて修復した値を代入している。図22Gをみると、図18の最初のディスクアレイと同じなので、データの修復が完全になされたことが分かる。
【0107】
本発明のDH法、DH2法による誤り修復方法は、並列性を持っている。誤り修復方法の並列性とは、修復行程を順次行うのではなくその行程を同時に並列に行うことができることをいう。即ち、誤り修復方法を両方向(最初と最後)から同時に行うことができる。これを図23を参照して詳細に説明する。
【0108】
2番目のディスク(i=1)と4番目のディスク(j=3)に誤りが発生すると、前述の修復方法の説明では図23に付けられた丸付数字の順番(1)→(2)→(3)→(4)→(5)→(6)→(7)→(8)→(9)→(10)→(11)→(12)の通りに誤りを修復した。ところが、この修復行程は逆に進行してもよい。つまり、(j+1)ディスク、即ち5番目のディスクの斜線パリティブロックを用いて2番目(i=2)のディスクの該当ブロック(2番目のブロック)が修復できる。該当ブロックは図23の(12)ブロックである。修復された(12)ブロックの水平パリティグループを用いると、(11)ブロックを修復することができる。その後、(11)ブロックの斜線パリティグループを用いて、(10)ブロックを修復することができる。このようにして、(12)→(11)→(10)→(9)→(8)→(7)→(6)→(5)→(4)→(3)→(2)→(1)の順で修復でき、(i+1)ディスクの斜線パリティブロックから用いる修復順序の逆方向になり中間行程が重ならない。従って、修復時に行程を両方向から同時に進行させる場合、修復時間が1/2になる。
【0109】
次に、本発明のDH法、DH2法の性能評価を他の方法(2次元パリティ法、EVENODD法)と比較して説明する。性能評価項目として(1)データ損失の平均時間( MTTDL) 、(2)パリティディスクオーバヘッド(parity disk overhead)、(3)更新負担(update penalty)、(4)グループサイズ(group size)を挙げる。
【0110】
以下の表及び参照図面では、2次元パリティ法を“2D”、EVENODD法を“EO”、DH法を“DH”、DH2法を“DH2”に簡略化して表す。
【0111】
まず、(1)データ損失の平均時間について比較説明する。MTTDLはデータ損失の平均時間を意味するが、2つのディスクに誤りが発生する時に修復し得る方法では数式47で求められる。
【数47】
【0112】
ここで、MTTF(the Mean Time To Failure)は1つのディスクにおける誤り発生の平均時間を、MTTR(the Mean Time To Reconstruct)は再構成に必要な平均時間を意味し、Nは全体ディスク数を、そしてGは誤り訂正グループのサイズを示す。MTTDLは一番重要な性能評価項目であるが、その時間のオーダーが普通数万年以上になるために、実際値は性能評価においてあまり意味がないと見られる。例えば、MTTF(disk)を200、000時間、MTTF(disk 2) を20、000時間、MTTF(disk 3) を2、000時間、MTTRを1時間とすると、2次元パリティ法で100個のデータディスクを使用する場合に、パリティディスクが20個必要なので、全体ディスク数Nは120であり、グループサイズGは11である。従って、MTTDLは約8万5千年になる。ここでMTTDLは、MTTF(disk)とMTTRが一種の定数なので、ディスクアレイを構成する全体ディスク数Nと誤り訂正グループサイズGの二乗に反比例する。従って、MTTDLは数式48のように単純化してMTTDLS で表すことができ、この逆数のMTTDLSIは数式49になる。
【数48】
【数49】
【0113】
データディスク数を表5のようにすると、MTTDLS は表6のようになり、MTTDLSIをグラフで表すと、図24のようになる。
【表5】
【表6】
【0114】
次に、(2)パリティディスクオーバヘッドについて比較説明する。パリティディスクオーバヘッドはデータディスク数とパリティディスク数の比であり、数式50で求められる。
【数50】
【0115】
パリティディスクオーバヘッドが小さいということは、一定数のディスクでディスクアレイを構成する時、相対的に多量のデータを記憶し得るということであり、パリティディスクオーバヘッドが大きければパリティディスクを大量に使うので、ディスクの使用効率が低下する。即ち、パリティディスクオーバヘッドは価格対性能比の評価基準になり、ディスクの効率性を示す指標になる。表7はデータディスク数をmとした時に、各方法のパリティディスクオーバヘッドを示すもので、この結果では2次元パリティ法のオーバヘッドが他の方法に比べて√m倍大きいことが分かり、よって、2次元パリティ法が最もディスクの利用効率が悪い。
【表7】
【0116】
次に、(3)更新負担について比較説明する。更新負担は、データディスクの情報を更新する際に、更新すべきパリティディスクの数を示したもので、2つのディスクを修復し得る方法において最適の更新負担は2である。しかし、更新負担が大きい場合、データディスクの更新時にパリティディスクの更新も必要となり書込み作業時に性能低下の原因となる。
【0117】
2次元パリティ法とDH2法の場合には、最適更新負担条件を満足するのに対し、EVENODD法とDH法の場合、それより大きくなる。EVENODD法の場合には、図25に示すように斜線値Sに該当するデータブロックを更新する際には全ての斜線パリティブロックを更新しなければならないので、更新負担にオーバヘッドが存在する。例えば、m個のデータディスクでディスクアレイを構成する場合、データディスク情報の更新時にアクセスすべきパリティディスクの数は2であるが、パリティブロックの数は水平パリティブロックが1回、そして斜線パリティブロックが(m−1)回なので、m回のパリティブロック更新が必要である。その他の手法では2回になるために平均的なパリティブロックの更新は数式51のようになる。
【数51】
【0118】
また、DH法では全てのデータブロックの更新時に水平パリティブロック及び斜線パリティブロックを更新しなければならなく、且つパリティブロックのパリティ値を更新しなければならないので、更新負担は3になる。図26は斜線の引かれたブロックを更新した時の更新すべきパリティブロックを表している。
【0119】
表8は各方法の更新負担を比較したもので、EVENODD法においてαで表すものは前記オーバヘッドを意味する。これにより、最適の更新負担を有するものは2次元パリティ法とDH2法であることが分かる。
【表8】
【0120】
最後に、(4)グループサイズについて比較説明する。誤り訂正グループのサイズであるグループサイズは、1つのディスクに誤りが発生する時に修復する間、アクセスするディスクの集合と定義する。グループサイズは、修復時に読み出すべきディスクの数が増加するにつれて再構成区間が線形的に拡大するために意味がある。また、修復中にも入出力要求を満足することができなければならなく、前記MTTDLはグループサイズに反比例するので、グループサイズは小さいことが好ましい。
【0121】
RAIDレベル6に該当する方法は、1つのデータブロックに対して2つのパリティブロックがパリティ値をもっていなければならないため、2つのグループサイズが存在する。即ち、2次元パリティ法は横パリティ及び縦パリティ、EVENODD法、DH法及びDH2法は水平パリティ及び斜線パリティグループが存在するので、これらを区分してG(方法名、パリティグループ名)で示す。パリティグループ名の無いものは2つのグループサイズの平均を意味する。ここで、[X]はXより大きくない整数を意味し、〈X〉はXより小さくない整数を意味する。
【0122】
まず、2次元パリティ法のグループサイズは、データディスクの数がmの時に横パリティグループサイズG(2D、H)及び縦パリティグループサイズG(2D、V)は〈√m〉+1或いは[ √m]+1であり、平均G(2D)は{( 〈√m〉+1) ×[ √m]+([√m]+1) ×〈√m〉}/([ √m]+〈√m〉)であり、これを整理すると、1+(2 [√m]〈√m〉)/([ √m]+〈√m〉)である。
【0123】
EVENODD法では水平パリティグループサイズG(EO、H)がm+1であり、斜線グループサイズG(EO、D)は2(m−1)+1なので、平均G(EO)は、{(m+1)+(2m−1)}/2である。DH法のG(DH、H)は(m+2)であり、G(DH、D)は(m+1)なので、平均G(DH)は、{(m+2)×(m+1)+(m+1)×(m+2)}/{(m+1)+(m+2)}である。DH2法のG(DH2、H)及びG(DH2、D)はそれぞれ(m+3)及び(m+1)であり、平均G(DH2)は、{(m+3)×(m)+(m+1)×(m+2)}/{(m)+(m+2)}である。
【0124】
これを整理したのが表9であり、図27では幾つかの例に対するグループサイズをグラフで示している。表27を参照すると、2次元パリティ法のグループサイズが1番小さく、EVENODD法が斜線値Sのオーバヘッドによって1番大きくなる。
【表9】
【0125】
結論的に、本発明のDH法は素数N個からなるディスクアレイで任意の2つのディスクに誤り発生しても、斜線パリティと水平パリティを繰り返し適用することにより修復可能であり、パリティブロックを分散させることにより既存の方法の性能低下要因を除去した。また、ディスク誤り時に修復行程を両方向から並列に処理することにより修復時間を減らすことができる等の長所がある。但し、データディスクの内容の更新時に3回のディスクのアクセスを必要とし、これは性能低下の要因になるが、ディスクキャッシュ或いはその他の方法によって克服することができる。図1に示すように、本発明のディスクアレイシステムではディスク8−0〜8−(N−1)のそれぞれにバッファ6−0〜6−(N−1)が備えられている。これらのバッファ6−0〜6−(N−1)がバッファ及びキャッシュに用いられる。非同期書込みとも呼ばれる書込みバッファリングは、ディスクに書込む前に使用者の書込み要求を認知する方式であって、この方法は使用者に感じられる応答遅延時間を減らすことにより、作業量を緩和する。書込みバッファリングの1つの方法としては一連の書込み要求を1つのグループにまとめて処理する方法がある。また、最近更新されたパリティをキャッシングすることにより、既存のデータを読み取る必要がなくなるために、少ない書込みで必要なディスクアクセスを3回から2回にまで減らすことができる。
【0126】
本発明のDH2法は、斜線パリティブロックはデータディスクに分散するのでDH法における構造と類似であるが、水平パリティブロックを1つのパリティディスクに置くことにより、DH法の問題点、即ちデータディスクの内容の更新時に追加的にパリティディスクをアクセスしなければならない更新負担を2にできる。DH2法では水平パリティディスクにスペアブロック(spare block) が発生してディスク効率の問題が生じるからもしれないが、このブロックを既存の小さい書込み問題(small write problem) 解決のための方法などに適用して活用すれば、かえってその用途を増加させることができる。
【0127】
【発明の効果】
上述したように本発明は、N個(Nは素数)からなるディスクアレイで任意の2つのディスクに誤りが発生しても、斜線パリティと水平パリティを繰り返し用いて修復することができ、最適のオーバヘッドを保持する。そして、パリティブロックを分散することにより、隘路現象を解決した。従って、システム性能が向上し、修復行程の並列性を用いて両方向から修復することができるので、修復時間を短縮することもできる。
【図面の簡単な説明】
【図1】本発明のDH法のディスクアレイブロック構成図。
【図2】本発明のDH2法のディスクアレイブロック構成図。
【図3】DH法によるパリティグループとパリティブロックの説明図。
【図4】DH2法によるパリティグループとパリティブロックの説明図。
【図5】ディスクの個数N=7の場合の、DH法の水平パリティグループ及び水平パリティブロックの配置図。
【図6】ディスクの個数N=7の場合の、DH法の斜線パリティグループ及び斜線パリティブロックの配置図。
【図7】ディスクの個数N=7の場合の、DH法におけるパリティ及びデータの配置図。
【図8】ディスクの個数N=7の場合の、DH2法の水平パリティグループ及び水平パリティブロックの配置図。
【図9】ディスクの個数N=7の場合の、DH2法の斜線パリティグループ及び斜線パリティブロックの配置図。
【図10】ディスクの個数N=7の場合の、DH2法におけるパリティ及びデータの配置図。
【図11】DH法によるパリティ記憶アルゴリズムのフローチャート。
【図12】ディスクの個数N=7の場合の、DH法によるパリティ記憶行程の説明図。
【図13】ディスクの個数N=7の場合の、DH法によるパリティ記憶行程の説明図。
【図14】ディスクの個数N=7の場合の、DH法によるパリティ記憶行程の説明図。
【図15】DH2法によるパリティ記憶アルゴリズムのフローチャート。
【図16】ディスクの個数N=7の場合の、DH2法によるパリティ記憶行程の説明図。
【図17】ディスクの個数N=7の場合の、DH2法によるパリティ記憶行程の説明図。
【図18】ディスクの個数N=7の場合の、DH2法によるパリティ記憶行程の説明図。
【図19】DH法のデータ修復のフローチャート。
【図20】分図A〜Gは、DH法によるデータ修復行程の説明図。
【図21】DH2法のデータ修復のフローチャート。
【図22】分図A〜Gは、DH2法によるデータ修復行程の説明図。
【図23】誤り修復方法の並列性の説明図。
【図24】MTTDL比較グラフ。
【図25】EVENODD法で斜線Sブロックの更新時にアクセスするパリティブロック(N=7の時)を示す図。
【図26】DH法でデータブロック更新時にアクセスするパリティブロック(N=7の時)を示す図。
【図27】各方法のグループサイズ比較グラフ。
【符号の説明】
2 ホストコンピュータ
4 コントローラ
10 バス
20、30 水平パリティブロック
22、32 斜線パリティブロック
Claims (24)
- N個(Nは素数)の各ディスクを(N−1)個のブロック単位となるようにして(N−1)×N行列で定義されるディスクアレイを構成し、前記行列の各行を水平パリティグループと定義するとともに前記行列の斜線方向に循環構成のブロックを斜線パリティグループと定義し、水平パリティブロックを1行目のブロックから斜線方向に各ディスクに1つずつ配置するとともに斜線パリティブロックを各ディスクの所定の行のブロックに配置する行程と、
前記水平及び斜線パリティグループそれぞれのデータ値を排他的論理和(XOR)演算して該当グループの水平及び斜線パリティブロックにそれぞれ記憶するパリティ記憶行程と、
2つのディスクに誤りが発生する時に、フェイルブロックが1つだけ含まれた斜線パリティグループを用いて該フェイルブロックを修復し、さらに、この修復されたフェイルブロックの水平パリティグループを用いて該水平パリティグループの他のフェイルブロックを修復し、そして、この作業を繰り返すことにより、誤り発生した2つのディスクのフェイルブロックを全て修復する修復行程と、を実施することを特徴とする外部記憶サブシステムのパリティ記憶及びデータ修復方法。 - 1つのディスクに誤りが発生する時、水平パリティグループの他のブロックを用いて誤り発生したブロックを修復する請求項1記載の外部記憶サブシステムのパリティ記憶及びデータ修復方法。
- (N−1)×N行列をディスクjのブロックiの値を示すa(i、 j)形態(ここで、iは0≦i≦N−2、jは0≦i≦(N−1)で表現すると、水平パリティブロックはa(i、 N−2−i)である請求項1又は請求項2に記載の外部記憶サブシステムのパリティ記憶及びデータ修復の方法。
- 斜線パリティブロックはa(N−2、 j)である請求項3又は請求項4に記載の外部記憶サブシステムのパリティ記憶及びデータ修復の方法。
- N+1(Nは素数)個の各ディスクを(N−1)個のブロック単位となるようにして(N−1)×(N+1)行列で定義されるディスクアレイを構成し、前記行列の各行を水平パリティグループと定義するとともにN+1列目のディスクのブロックを除いた前記行列の斜線方向に循環構成のブロックを斜線パリティグループと定義し、そして、水平パリティブロックを(N+1)列目のディスクのブロックに配置するとともに斜線パリティブロックを各ディスクの所定の行のブロックに配置する行程と、
前記水平及び斜線パリティグループそれぞれのデータ値を排他的論理和(XOR)演算して該当グループの水平及び斜線パリティブロックにそれぞれ記憶するパリティ記憶行程と、
2つのディスクに誤りが発生する時に、フェイルブロックが1つだけ含まれた斜線パリティグループを用いて該フェイルブロックを修復し、さらに、この修復されたフェイルブロックの水平パリティグループを用いて該水平パリティグループのフェイルブロックを修復し、そして、この作業を繰り返すことにより、誤り発生した2つのディスクのフェイルブロックを全て修復する修復行程と、を実施することを特徴とする外部記憶サブシステムのパリティ記憶及びデータ修復の方法。 - 1つのディスクに誤りが発生する時、水平パリティグループの他のブロックを用いて誤り発生したブロックを修復する請求項9記載の外部記憶サブシステムのパリティ記憶及びデータ修復の方法。
- (N−1)×(N+1)行列をディスクjのブロックiの値を示すa(i、 j)形態(ここで、0≦i≦N−2、0≦j≦N)で表現すると、水平パリティブロックはa(i、 N)である請求項9又は請求項10記載の外部記憶サブシステムのパリティ記憶及びデータ修復の方法。
- 斜線パリティブロックはa(N−2、 i)である請求項11又は請求項12に記載の外部記憶サブシステムのパリティ記憶及びデータ修復の方法。
- ディスクアレイは、N個(Nは素数)の各ディスクを(N−1)個のブロック単位となるようにして(N−1)×N行列を定義し、前記行列のブロックを水平パリティグループと定義するとともに前記行列の斜線方向で循環構成のブロックを斜線パリティグループと定義し、水平パリティブロックを1行目のブロックから斜線方向に各ディスクに1つずつ配置するとともに斜線パリティブロックを各ディスクの所定のブロックに配置するようにしてあり、
このディスクアレイの制御装置は、前記水平及び斜線パリティグループそれぞれのデータ値を排他的論理和(XOR)演算して該当グループの水平及び斜線パリティブロックに水平及び垂直パリティ値をそれぞれ記憶し、2つのディスクに誤りが発生する時に1つのフェイルブロックを含んだ斜線パリティグループを用いて該フェイルブロックを修復し、さらに、この修復されたフェイルブロックの水平パリティグループを用いて該水平パリティグループのフェイルブロックを修復し、そして、この作業を繰り返すことにより、誤り発生した2つのディスクのフェイルブロックを全て修復するようになっていることを特徴とする外部記憶サブシステム。 - 制御装置は、1つのディスクに誤りが発生する時、水平パリティグループの他のブロックを用いて誤り発生したブロックを修復する請求項17に記載の外部記憶サブシステム。
- ディスクアレイの各ディスクと制御装置との間には、データディスクの内容の更新時にディスクのデータバッファリング及びキャッシングを行うバッファがそれぞれ備えられる請求項17又は請求項18に記載の外部記憶サブシステム。
- ディスクアレイは、N+1(Nは素数)個の各ディスクを(N−1)個のブロック単位となるようにして(N−1)×(N+1)行例を定義し、前記行列の各行のブロックを水平パリティグループと定義するとともに(N+1)列目のディスクのブロックを除いた行列の斜線方向で循環構成のブロックを斜線パリティグループと定義し、水平パリティブロックを(N+1)列目のディスクのブロックに配置するとともに斜線パリティブロックを各ディスクの所定の行のブロックに配置するようにしてあり、
このディスクアレイの制御装置は、前記水平及び斜線パリティグループそれぞれのデータ値を排他的論理和(XOR)演算して該当グループの水平及び斜線パリティブロックに水平パリティ値及び斜線パリティ値をそれぞれ記憶し、2つのディスクに誤りが発生する時に1つのフェイルブロックの含まれた斜線パリティグループを用いて該フェイルブロックを修復し、さらに、この修復されたフェイルブロックの水平パリティグループを用いて該水平パリティグループのフェイルブロックを修復し、そして、この作業を繰り返すことにより、誤り発生した2つのディスクのフェイルブロックを全て修復するようになっていることを特徴とする外部記憶サブシステム。 - 制御装置は、1つのディスクに誤りが発生する時に水平パリティグループの他のブロックを用いて誤り発生したブロックを修復する請求項20記載の外部記憶サブシステム。
- ディスクアレイの各ディスクと制御装置との間には、データディスクの内容の更新時にディスクのデータバッファリング及びキャッシングするバッファがそれぞれ備えられる請求項20又は請求項21に記載の外部記憶サブシステム。
- N個(Nは素数)の各ディスクを(N−1)個のブロック単位となるようにして(N−1)×N行列で定義されるディスクアレイを構成し、前記行列の各行のブロックを水平パリティグループと定義するとともに前記行列の斜線方向で循環構成のブロックを斜線パリティグループと定義し、そして、水平パリティブロックを1行目のブロックから斜線方向となるように各ディスクに1つずつ配置するとともに斜線パリティブロックを各ディスクの所定の行のブロックに配置してあり、制御装置によって前記水平及び斜線パリティグループそれぞれのデータ値を排他的論理和(XOR)演算して該当グループの水平及び斜線パリティブロックの水平及び斜線パリティ値としてそれぞれ記憶している外部記憶サブシステムでディスクiとディスクjに(0≦i<j≦(N−1))誤りが発生した時にデータを修復する方法であって、
前記誤り発生したディスクiとjの差であるkを求め、フェイルしたディスクのブロック修復行程を繰り返し用いるための変数mを“0”に初期化する第1行程と、誤り発生が1つだけ存在する斜線パリティグループに属するディスクjのブロックn(n=N−1−k−m×k mod N)の値a(n、 j)を数式10を用いて求める第2行程と、この第2行程遂行後に誤り発生が1つのみ存在する水平パリティグループに属するディスクiのブロックnの値 a(n、 i)を数式11を用いて求める第3行程と、前記変数mをN−2まで増加させながら前記第2行程及び第3行程を繰り返し行う第4行程と、を実施することを特徴とする外部記憶サブシステムのデータ修復方法。
- N+1(Nは素数)個の各ディスクを(N−1)個のブロック単位となるようにして(N−1)×(N+1)行列で定義されるディスクアレイを構成し、前記行列の各行のブロックを水平パリティグループと定義するとともに(N+1)列目のディスクのブロックを除いた前記行列の斜線方向で循環構成のブロックを斜線パリティグループと定義し、そして、水平パリティブロックを(N+1)列目のディスクのブロックに配置するとともに斜線パリティブロックを各ディスクの所定の行のブロックに配置してあり、制御装置によって前記水平及び斜線パリティグループそれぞれのデータ値を排他的論理和(XOR)演算して該当グループの水平及び斜線パリティブロックに水平及び斜線パリティ値としてそれぞれ記憶している外部記憶サブシステムでディスクiとディスクjに(0≦i<j≦(N−1))誤りが発生した時にデータを修復する方法であって、
前記誤り発生したディスクiとjの差であるkを求め、フェイルしたディスクのブロック修復行程を繰り返し用いるための変数mを“0”に初期化する第1行程と、誤り発生が1つだけ存在する斜線パリティグループに属するディスクjのブロックn(n=N−1−k−m×k mod N)の値をa(n、 j)数式12を用いて求める第2行程と、この第2行程遂行後、誤り発生が1つのみ存在する水平パリティグループに属するディスクiのブロックnの値を a(n、 i)数式13(n≠N−2の場合)及び数式14(n=N−2の場合)を用いて求める第3行程と、前記変数mをN−2まで増加させながら前記第2行程及び第3行程を繰り返し行う第4行程と、を実施することを特徴とする外部記憶サブシステムのデータ修復方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1997P32758 | 1997-07-15 | ||
KR1019970032758A KR100267366B1 (en) | 1997-07-15 | 1997-07-15 | Method for recoding parity and restoring data of failed disks in an external storage subsystem and apparatus therefor |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH1139104A JPH1139104A (ja) | 1999-02-12 |
JP3587667B2 true JP3587667B2 (ja) | 2004-11-10 |
Family
ID=19514472
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP29236397A Expired - Fee Related JP3587667B2 (ja) | 1997-07-15 | 1997-10-24 | 外部記憶サブシステムのパリティ記憶及びデータ修復方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US6158017A (ja) |
JP (1) | JP3587667B2 (ja) |
KR (1) | KR100267366B1 (ja) |
CA (1) | CA2225771C (ja) |
Families Citing this family (93)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6609219B1 (en) * | 2000-01-24 | 2003-08-19 | Hewlett-Packard Development Company, L.P. | Data corruption testing technique for a hierarchical storage system |
US6636984B1 (en) * | 2000-06-15 | 2003-10-21 | International Business Machines Corporation | System and method for recovering data from mirror drives following system crash |
US6675318B1 (en) * | 2000-07-25 | 2004-01-06 | Sun Microsystems, Inc. | Two-dimensional storage array with prompt parity in one dimension and delayed parity in a second dimension |
US6871263B2 (en) * | 2001-08-28 | 2005-03-22 | Sedna Patent Services, Llc | Method and apparatus for striping data onto a plurality of disk drives |
US7636724B2 (en) * | 2001-08-31 | 2009-12-22 | Peerify Technologies LLC | Data storage system and method by shredding and deshredding |
US7016967B2 (en) * | 2001-11-08 | 2006-03-21 | Northrop Grumman Corporation | Methodology for fast file transfer protocol |
US7346831B1 (en) | 2001-11-13 | 2008-03-18 | Network Appliance, Inc. | Parity assignment technique for parity declustering in a parity array of a storage system |
US6851082B1 (en) | 2001-11-13 | 2005-02-01 | Network Appliance, Inc. | Concentrated parity technique for handling double failures and enabling storage of more than one parity block per stripe on a storage device of a storage array |
US6871317B1 (en) * | 2001-11-13 | 2005-03-22 | Network Appliance, Inc. | Technique for efficiently organizing and distributing parity blocks among storage devices of a storage array |
US6993701B2 (en) * | 2001-12-28 | 2006-01-31 | Network Appliance, Inc. | Row-diagonal parity technique for enabling efficient recovery from double failures in a storage array |
US7640484B2 (en) | 2001-12-28 | 2009-12-29 | Netapp, Inc. | Triple parity technique for enabling efficient recovery from triple failures in a storage array |
US7613984B2 (en) * | 2001-12-28 | 2009-11-03 | Netapp, Inc. | System and method for symmetric triple parity for failing storage devices |
US8402346B2 (en) * | 2001-12-28 | 2013-03-19 | Netapp, Inc. | N-way parity technique for enabling recovery from up to N storage device failures |
US7073115B2 (en) * | 2001-12-28 | 2006-07-04 | Network Appliance, Inc. | Correcting multiple block data loss in a storage array using a combination of a single diagonal parity group and multiple row parity groups |
US7007220B2 (en) * | 2002-03-01 | 2006-02-28 | Broadlogic Network Technologies, Inc. | Error correction coding across multiple channels in content distribution systems |
US7080278B1 (en) | 2002-03-08 | 2006-07-18 | Network Appliance, Inc. | Technique for correcting multiple storage device failures in a storage array |
US7437727B2 (en) * | 2002-03-21 | 2008-10-14 | Network Appliance, Inc. | Method and apparatus for runtime resource deadlock avoidance in a raid system |
US7539991B2 (en) | 2002-03-21 | 2009-05-26 | Netapp, Inc. | Method and apparatus for decomposing I/O tasks in a raid system |
US7200715B2 (en) | 2002-03-21 | 2007-04-03 | Network Appliance, Inc. | Method for writing contiguous arrays of stripes in a RAID storage system using mapped block writes |
US7254813B2 (en) * | 2002-03-21 | 2007-08-07 | Network Appliance, Inc. | Method and apparatus for resource allocation in a raid system |
US6976146B1 (en) | 2002-05-21 | 2005-12-13 | Network Appliance, Inc. | System and method for emulating block appended checksums on storage devices by sector stealing |
US7024585B2 (en) * | 2002-06-10 | 2006-04-04 | Lsi Logic Corporation | Method, apparatus, and program for data mirroring with striped hotspare |
US6848022B2 (en) * | 2002-10-02 | 2005-01-25 | Adaptec, Inc. | Disk array fault tolerant method and system using two-dimensional parity |
US6792391B1 (en) * | 2002-11-15 | 2004-09-14 | Adeptec, Inc. | Method and system for three disk fault tolerance in a disk array |
US7188270B1 (en) * | 2002-11-21 | 2007-03-06 | Adaptec, Inc. | Method and system for a disk fault tolerance in a disk array using rotating parity |
US7093159B1 (en) * | 2002-12-12 | 2006-08-15 | Adaptec, Inc. | Method and system for four disk fault tolerance in a disk array |
US7185144B2 (en) | 2003-11-24 | 2007-02-27 | Network Appliance, Inc. | Semi-static distribution technique |
US7424637B1 (en) | 2003-03-21 | 2008-09-09 | Networks Appliance, Inc. | Technique for managing addition of disks to a volume of a storage system |
US7664913B2 (en) * | 2003-03-21 | 2010-02-16 | Netapp, Inc. | Query-based spares management technique |
US7143235B1 (en) | 2003-03-21 | 2006-11-28 | Network Appliance, Inc. | Proposed configuration management behaviors in a raid subsystem |
US7111147B1 (en) | 2003-03-21 | 2006-09-19 | Network Appliance, Inc. | Location-independent RAID group virtual block management |
US7328364B1 (en) | 2003-03-21 | 2008-02-05 | Network Appliance, Inc. | Technique for coherent suspension of I/O operations in a RAID subsystem |
US7275179B1 (en) | 2003-04-24 | 2007-09-25 | Network Appliance, Inc. | System and method for reducing unrecoverable media errors in a disk subsystem |
US7149847B2 (en) * | 2003-06-26 | 2006-12-12 | Adaptec, Inc. | RAID 6 disk array architectures |
US7103716B1 (en) * | 2003-06-26 | 2006-09-05 | Adaptec, Inc. | RAID 6 disk array with prime number minus one disks |
GB0315157D0 (en) * | 2003-06-28 | 2003-08-06 | Ibm | Safe write to multiply-redundant storage |
US7328305B2 (en) * | 2003-11-03 | 2008-02-05 | Network Appliance, Inc. | Dynamic parity distribution technique |
US7366837B2 (en) * | 2003-11-24 | 2008-04-29 | Network Appliance, Inc. | Data placement technique for striping data containers across volumes of a storage system cluster |
US7647451B1 (en) | 2003-11-24 | 2010-01-12 | Netapp, Inc. | Data placement technique for striping data containers across volumes of a storage system cluster |
US7263629B2 (en) * | 2003-11-24 | 2007-08-28 | Network Appliance, Inc. | Uniform and symmetric double failure correcting technique for protecting against two disk failures in a disk array |
TWI310497B (en) * | 2004-02-06 | 2009-06-01 | Hon Hai Prec Ind Co Ltd | System and method for disk fault tolerance |
CN100419700C (zh) * | 2004-02-11 | 2008-09-17 | 鸿富锦精密工业(深圳)有限公司 | 磁盘容错系统及方法 |
US7243190B2 (en) * | 2004-02-13 | 2007-07-10 | International Business Machines Corporation | Apparatus and method to rebuild an NVS image using cache data |
US7467281B2 (en) * | 2004-06-10 | 2008-12-16 | Intel Corporation | Mapping data blocks to storage blocks to wrap around storage devices |
US7318190B2 (en) * | 2004-06-10 | 2008-01-08 | Intel Corporation | Storage device parity computation |
TWI307836B (en) * | 2004-07-02 | 2009-03-21 | Hon Hai Prec Ind Co Ltd | System and method for a plurality of disks fault tolerance efficienctly |
CN100362782C (zh) * | 2004-08-24 | 2008-01-16 | 华为技术有限公司 | 对丢失数据单元进行恢复的方法 |
US7945729B2 (en) * | 2004-11-24 | 2011-05-17 | International Business Machines Corporation | System and method for tolerating multiple storage device failures in a storage system using horizontal and vertical parity layouts |
JP2006171957A (ja) | 2004-12-14 | 2006-06-29 | Fujitsu Ltd | ストレージ制御装置および方法 |
US7398460B1 (en) * | 2005-01-31 | 2008-07-08 | Network Appliance, Inc. | Technique for efficiently organizing and distributing parity blocks among storage devices of a storage array |
US20060236149A1 (en) * | 2005-04-14 | 2006-10-19 | Dell Products L.P. | System and method for rebuilding a storage disk |
US7363426B2 (en) * | 2005-04-26 | 2008-04-22 | Dell Products L.P. | System and method for RAID recovery arbitration in shared disk applications |
US7577866B1 (en) * | 2005-06-27 | 2009-08-18 | Emc Corporation | Techniques for fault tolerant data storage |
US20070113006A1 (en) * | 2005-11-16 | 2007-05-17 | Elliott John C | Apparatus and method to configure one or more storage arrays |
US8560503B1 (en) | 2006-01-26 | 2013-10-15 | Netapp, Inc. | Content addressable storage system |
US7822921B2 (en) | 2006-10-31 | 2010-10-26 | Netapp, Inc. | System and method for optimizing write operations in storage systems |
US7613947B1 (en) | 2006-11-30 | 2009-11-03 | Netapp, Inc. | System and method for storage takeover |
US7647526B1 (en) | 2006-12-06 | 2010-01-12 | Netapp, Inc. | Reducing reconstruct input/output operations in storage systems |
US8209587B1 (en) | 2007-04-12 | 2012-06-26 | Netapp, Inc. | System and method for eliminating zeroing of disk drives in RAID arrays |
US8898536B2 (en) | 2007-04-27 | 2014-11-25 | Netapp, Inc. | Multi-core engine for detecting bit errors |
US7840837B2 (en) | 2007-04-27 | 2010-11-23 | Netapp, Inc. | System and method for protecting memory during system initialization |
US7836331B1 (en) | 2007-05-15 | 2010-11-16 | Netapp, Inc. | System and method for protecting the contents of memory during error conditions |
US7975102B1 (en) | 2007-08-06 | 2011-07-05 | Netapp, Inc. | Technique to avoid cascaded hot spotting |
WO2009039336A2 (en) * | 2007-09-21 | 2009-03-26 | Hewlett-Packard Development Company, L.P. | Generating a parallel recovery plan for a data storage system |
US20090172244A1 (en) * | 2007-12-31 | 2009-07-02 | Chaoyang Wang | Hierarchical secondary raid stripe mapping |
US7970994B2 (en) * | 2008-03-04 | 2011-06-28 | International Business Machines Corporation | High performance disk array rebuild |
CN102124527A (zh) | 2008-05-16 | 2011-07-13 | 弗森-艾奥公司 | 用于检测和替代失效的数据存储器的装置、系统和方法 |
JP2010020648A (ja) * | 2008-07-12 | 2010-01-28 | Hitachi Ulsi Systems Co Ltd | 記憶装置 |
ES2380137T3 (es) | 2008-08-12 | 2012-05-08 | Strato Ag | Sistema de almacenamiento de datos y procedimiento para el funcionamiento del mismo |
GB2463078B (en) * | 2008-09-02 | 2013-04-17 | Extas Global Ltd | Distributed storage |
US9158579B1 (en) | 2008-11-10 | 2015-10-13 | Netapp, Inc. | System having operation queues corresponding to operation execution time |
US8495417B2 (en) | 2009-01-09 | 2013-07-23 | Netapp, Inc. | System and method for redundancy-protected aggregates |
US8281227B2 (en) | 2009-05-18 | 2012-10-02 | Fusion-10, Inc. | Apparatus, system, and method to increase data integrity in a redundant storage system |
US8307258B2 (en) | 2009-05-18 | 2012-11-06 | Fusion-10, Inc | Apparatus, system, and method for reconfiguring an array to operate with less storage elements |
US7941696B2 (en) * | 2009-08-11 | 2011-05-10 | Texas Memory Systems, Inc. | Flash-based memory system with static or variable length page stripes including data protection information and auxiliary protection stripes |
US8930622B2 (en) | 2009-08-11 | 2015-01-06 | International Business Machines Corporation | Multi-level data protection for flash memory system |
US8176284B2 (en) | 2009-08-11 | 2012-05-08 | Texas Memory Systems, Inc. | FLASH-based memory system with variable length page stripes including data protection information |
US7818525B1 (en) * | 2009-08-12 | 2010-10-19 | Texas Memory Systems, Inc. | Efficient reduction of read disturb errors in NAND FLASH memory |
US8189379B2 (en) | 2009-08-12 | 2012-05-29 | Texas Memory Systems, Inc. | Reduction of read disturb errors in NAND FLASH memory |
CN101719086B (zh) * | 2009-11-30 | 2012-10-03 | 成都市华为赛门铁克科技有限公司 | 磁盘阵列容错处理方法和装置及容错系统 |
GB201003407D0 (en) * | 2010-03-01 | 2010-04-14 | Extas Global Ltd | Distributed storage and communication |
CN101834898B (zh) * | 2010-04-29 | 2013-01-30 | 中科院成都信息技术有限公司 | 一种网络分布式编码存储方法 |
GB2482112A (en) * | 2010-07-14 | 2012-01-25 | Extas Global Ltd | Distributed data storage and recovery |
US20120079349A1 (en) * | 2010-09-24 | 2012-03-29 | Arkady Bramnik | Method and apparatus for multi-bit upset protection |
US20120198195A1 (en) * | 2011-02-02 | 2012-08-02 | Hewlett-Packard Development Company, L.P. | Data storage system and method |
US9026729B1 (en) | 2011-11-15 | 2015-05-05 | Emc Corporation | Data recovery after triple disk failure |
US8990495B2 (en) * | 2011-11-15 | 2015-03-24 | Emc Corporation | Method and system for storing data in raid memory devices |
KR101341386B1 (ko) * | 2012-09-18 | 2013-12-13 | 한국과학기술원 | 분산 파일 시스템에서 저장 공간 절약을 위한 효과적인 블록 인코딩 및 블록 배치 방법 |
CN104809035B (zh) * | 2015-05-05 | 2017-07-28 | 中国科学技术大学 | 一种能快速单盘修复的存储系统构建方法 |
US10164655B2 (en) | 2015-09-25 | 2018-12-25 | Western Digital Technologies, Inc. | Cache oblivious algorithm for butterfly code |
US9793922B2 (en) * | 2015-09-25 | 2017-10-17 | HGST Netherlands B.V. | Repair-optimal parity code |
US10360119B2 (en) * | 2015-10-06 | 2019-07-23 | Netapp, Inc. | Data recovery in a distributed storage system |
CN113452479B (zh) * | 2021-06-08 | 2023-01-24 | 东莞理工学院 | Evenodd码的编码方法及其解码方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5579475A (en) * | 1991-02-11 | 1996-11-26 | International Business Machines Corporation | Method and means for encoding and rebuilding the data contents of up to two unavailable DASDS in a DASD array using simple non-recursive diagonal and row parity |
US5271012A (en) * | 1991-02-11 | 1993-12-14 | International Business Machines Corporation | Method and means for encoding and rebuilding data contents of up to two unavailable DASDs in an array of DASDs |
EP0519669A3 (en) * | 1991-06-21 | 1994-07-06 | Ibm | Encoding and rebuilding data for a dasd array |
US5513192A (en) * | 1992-08-28 | 1996-04-30 | Sun Microsystems, Inc. | Fault tolerant disk drive system with error detection and correction |
-
1997
- 1997-07-15 KR KR1019970032758A patent/KR100267366B1/ko not_active IP Right Cessation
- 1997-10-24 JP JP29236397A patent/JP3587667B2/ja not_active Expired - Fee Related
- 1997-12-22 CA CA002225771A patent/CA2225771C/en not_active Expired - Lifetime
-
1998
- 1998-03-16 US US09/039,679 patent/US6158017A/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
CA2225771C (en) | 2001-04-10 |
US6158017A (en) | 2000-12-05 |
KR19990010106A (ko) | 1999-02-05 |
CA2225771A1 (en) | 1999-01-15 |
JPH1139104A (ja) | 1999-02-12 |
KR100267366B1 (en) | 2000-10-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3587667B2 (ja) | 外部記憶サブシステムのパリティ記憶及びデータ修復方法 | |
US6918007B2 (en) | Memory controller interface with XOR operations on memory read to accelerate RAID operations | |
US6138125A (en) | Block coding method and system for failure recovery in disk arrays | |
CN100345099C (zh) | 磁盘阵列恢复数据时增加磁盘访问并行性的方法和系统 | |
CN100390746C (zh) | 提高磁盘阵列奇偶校验更新的缓冲器利用率的方法和系统 | |
US7853823B2 (en) | System and method for reconstructing lost data in a storage system | |
CN101719086B (zh) | 磁盘阵列容错处理方法和装置及容错系统 | |
Thomasian et al. | Higher reliability redundant disk arrays: Organization, operation, and coding | |
US7743308B2 (en) | Method and system for wire-speed parity generation and data rebuild in RAID systems | |
US6223323B1 (en) | Method for storing parity information in a disk array storage system | |
US8239625B2 (en) | Parity generator for redundant array of independent discs type memory | |
Thomasian et al. | A performance evaluation tool for RAID disk arrays | |
Li et al. | Tier-code: An XOR-based RAID-6 code with improved write and degraded-mode read performance | |
US7356757B2 (en) | Fault tolerance system and method for one or two failed disks in a disk array | |
Reddy et al. | Design and evaluation of gracefully degradable disk arrays | |
Lee et al. | Efficient parity placement schemes for tolerating up to two disk failures in disk arrays | |
Li et al. | Exploiting decoding computational locality to improve the I/O performance of an XOR-coded storage cluster under concurrent failures | |
Li et al. | A hierarchical RAID architecture towards fast recovery and high reliability | |
US7788525B2 (en) | Fault tolerance system and method for multiple failed disks in a disk array | |
CN112256478B (zh) | 一种单磁盘故障的修复方法、系统、设备及存储介质 | |
US7246259B2 (en) | Method of calculating parity for surviving dual drive failures in a disk array | |
Li et al. | Ps-code: A new code for improved degraded mode read and write performance of raid systems | |
Zhong et al. | An approach for RAID scaling based on STAR-code | |
US20190213076A1 (en) | Systems and methods for managing digital data in a fault tolerant matrix | |
Jin et al. | A comprehensive study on raid-6 codes: Horizontal vs. vertical |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20040212 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20040218 |
|
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: 20040713 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040810 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080820 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080820 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090820 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090820 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100820 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110820 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110820 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120820 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120820 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130820 Year of fee payment: 9 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |