JP2004030577A - ストレージアレイにおける複数の記憶装置故障を訂正する方法 - Google Patents
ストレージアレイにおける複数の記憶装置故障を訂正する方法 Download PDFInfo
- Publication number
- JP2004030577A JP2004030577A JP2003062749A JP2003062749A JP2004030577A JP 2004030577 A JP2004030577 A JP 2004030577A JP 2003062749 A JP2003062749 A JP 2003062749A JP 2003062749 A JP2003062749 A JP 2003062749A JP 2004030577 A JP2004030577 A JP 2004030577A
- Authority
- JP
- Japan
- Prior art keywords
- parity
- array
- sub
- diagonal
- storage
- 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.)
- Granted
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
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
【解決手段】本ストレージアレイは複数の連結されたサブアレイを含み、各サブアレイは、データ記憶装置の集合と、そのサブアレイのブロックの行(例えば行パリティ集合)内の単一装置の故障を訂正するために用いる値を記憶する局所パリティ記憶装置とを含む。各サブアレイは、それが2重故障保護符号化方法を用いる唯一の存在であったかのように一様に対角パリティ集合を割り当てられる。本アレイは、サブアレイの各々における同等の対角パリティ集合をまとめて論理的に加算することにより計算された対角パリティを保持する1つの大域対角パリティ記憶装置をさらに含む。
【選択図】 図3
Description
【発明の属する技術分野】
本発明はストレージシステムのアレイに関し、詳しくは、スレージアレイ内の任意の1台の故障した記憶装置、または、任意の2台の故障した記憶装置の組み合わせを効率よく復元するための技術に関するものである。
【0002】
【従来の技術】
ストレージシステムは通常1以上の記憶装置を含み、要求に応じてそれらの記憶装置にデータを入力したりそれらの記憶装置からデータを取得したりすることができる。ストレージシステムは、限定はしないが、ネットワークに取り付けられたストレージ環境、ストレージエリアネットワーク、及び、クライアントまたはホストコンピュータに直接取り付けられたディスクアセンブリを含む、様々なストレージアーキテクチャに従って実施される。記憶装置は典型的にはディスクドライブであり、ここで「ディスク」という用語は一般に独立型の回転式磁気媒体記憶装置を意味している。この文脈での用語「ディスク」は、ハードディスクドライブ(HDD)やダイレクトアクセス記憶装置(DASD)と同義である。
【0003】
ストレージシステム内のディスクは通常、1以上のグループに編成され、各グループがRAID(Redundant Array of Independent(or Inexpensive) Disks)として運用されている。大半のRAID実施形態は、RAIDグループ内の所定数の物理ディスクに「ストライプ状」にまたがるデータの冗長書き込み、及び、そのストライプ状になったデータに関する冗長情報の適切な記憶により、データ記憶の信頼性/完全性を向上させている。この冗長情報によって、記憶装置が故障したときのデータ損失の復旧が可能になる。
【0004】
ディスクアレイを運用する場合、ディスクが故障し得ることを考慮している。高性能ストレージシステムの目標は、MTTDL(Mean time to data loss)を可能な限り長くすることであり、システムの推定サービス寿命よりも長くすることが好ましい。1以上のディスクが故障した場合、データが失われる可能性があり、その装置からデータを復旧させることは不可能になる。データの損失を回避する一般的な手段としては、ミラーリング、バックアップ、パリティ保護が挙げられる。ミラーリングは、ディスク等のストレージリソースの消費という観点からは、高価な解決方法である。バックアップは、バックアップが作成された後に変更されたデータを保護することができない。パリティ手段は、わずか1台のディスクドライブをシステムに追加するだけでデータの冗長符号化を提供し、単一削除(1台のディスクの損失)を許容するので、一般的である。
【0005】
パリティ保護は、ディスク等の記憶装置上のデータの損失を防止するためにコンピュータシステムで用いられる。パリティ値は、異なるデータを有する多数の同様のディスクにわたって、あるワードサイズ(通常1ビット)のデータを足し合わせる(通常モジュロ2で)ことにより計算される。すなわち、パリティは、各々のディスク上の対応する位置にあるビットから構成される1ビット幅のベクトルについて計算される。1ビット幅のベクトルについて計算される場合、パリティは、合計として計算される場合と、その補数として計算される場合とがあり、これらはそれぞれ偶数パリティ、奇数パリティと呼ばれる。1ビットベクトルに対する加算および減算は、いずれも排他的論理和(XOR)演算と同じである。そして、複数のディスクのうちのいずれか1台の損失、あるいは、複数のディスクのうちのいずれか1台の任意の部分のデータの損失から、データが保護される。パリティを記憶しているディスクが失われた場合、パリティはデータから再生成することができる。データディスクのうちの1つが失われた場合、そのデータは、残ったディスクの内容を加え合わせてその結果を記憶されているパリティから減算することにより再生成することができる。
【0006】
通常、ディスクはパリティグループに分割され、パリティグループの各々が1以上のデータディスクと1つのパリティディスクとを含む。パリティ集合は複数のデータブロックと1つのパリティブロックとを含むブロックの集合であり、ここでパリティブロックはそれらのデータブロックすべてのXORをとったものである。パリティグループは、1以上のパリティ集合を選択する元になるディスクの集合である。ディスク空間はストライプに分割され、各ストライプが各ディスクの中から1ブロックを保持している。あるストライプのブロックは通常、パリティグループ内の各ディスク上の同じ位置に存在する。ストライプ内では、1ブロックを除くすべてのブロックがデータを保持するブロック(「データブロック」)であり、1ブロックはそれらのデータ全てのXORをとることによって計算されたパリティを保持するブロック(「パリティブロック」)である。これらのパリティブロックをすべて1つのディスク上に記憶し、すべてのパリティ情報(パリティ情報のみ)を保持する1つのディスクを設けた場合、RAID−4実施形態になる。それらのパリティブロックを各ストライプの異なるディスク内に保持する場合、たいていは循環パターンが用いられ、実施形態はRAID−5になる。用語「RAID」及びその実施形態は広く知られており、1998年6月、データの管理に対する国際会議(SIGMOD)の議事録で、D.A.Patterson、G.A.Gibson、およびR.H.Katzによる「A Case for Redundant Arrays of Inexpensive Disks(RAID)」に開示されている。
【0007】
本明細書で用いられる場合、「符号化」という用語はデータブロックのうちの所定の部分集合にわたる冗長性値の計算を意味しているのに対して、「復号化」という用語はデータブロックの部分集合及び冗長性値を用いた冗長性計算の際の同じプロセスによるデータブロックまたはパリティブロックの復元を意味している。パリティグループ内で1台のディスクが故障した場合、そのディスクの内容は、残ったデータブロックのすべての内容を加え合わせ、その結果をパリティブロックから減算することにより、予備ディスク上に復号(復元)することができる。1ビットフィールドに対する2の補数加算及び減算はいずれもXOR演算と等しいので、この復元は、すべての生き残ったデータブロック及びパリティブロックのXORをとることから構成される。同様に、パリティディスクが失われた場合も、パリティディスクは生き残ったデータから同じ方法で再計算することができる。
【0008】
データビットのXOR合計をパリティビット値として直接記憶するのが一般的である。この方法は、通常「偶数パリティ」と呼ばれる。あるいは、データビットのXOR合計の補数をパリティビット値として記憶する場合もあり、この方法は「奇数パリティ」と呼ばれる。本明細書で開示する本発明について、偶数パリティを用いるか奇数パリティを用いるかは指定していない。しかしながら、そのような区別が問題となる場合には、本明細書で開示するアルゴリズムは偶数パリティを用いるものとして説明している。また、当業者であれば、本発明の教示に従って奇数パリティも使用できることは、明らかであろう。
【0009】
パリティ手段は、一般にパリティグループ内の1つの故障に対する保護を提供するものである。これらの手段は、故障が異なるパリティグループ内で発生する限りは、複数のディスク故障に対する保護を提供することも可能である。しかしながら、パリティグループ内で2つのディスクが同時に故障した場合、復元不能なデータの損失をこうむる。パリティグループ内で2台のディスクが同時の故障することはかなり一般的に起こりうるものであり、特にその原因は、ディスクの磨耗、及び、ディスクの動作に関する環境要因である。この文脈で、パリティグループ内での2台のディスクの同時の故障は「2重故障」と呼ばれる。
【0010】
2重故障は、典型的には、1台のディスク故障と、その最初の故障からの復旧を試みている間に生じた他のディスクの故障の結果として発生する。復旧時間または復元時間は、ストレージシステムのアクティビティのレベルに依存している。すなわち、故障したディスクを復元している間、ストレージシステムは「オンライン」のままであり、データへのアクセス(読み出し及び/又は書き込み)の要求(クライアントまたはユーザからの)に対してサービスを提供することが可能である。ストレージシステムが要求に対するサービスの提供に忙しい場合、復元の所要時間は増加することになる。失われたデータを復元するためには生き残ったディスクのすべてを読み出す必要があるので、この復元処理時間はストレージシステムのディスクの数やサイズが増加するのに応じても増加する。さらに、2重故障の確率は、パリティグループ内のディスク数の2乗に比例する。しかしながら、パリティグループを小さくすることは、各パリティグループが冗長データを扱うために1ディスク全体を必要とするので、費用がかかる。
【0011】
ディスクの他の故障形態は、ディスク内の1ブロックまたは1セクタが読み出せなくなるというメディア読み込みエラーである。ストレージアレイにパリティが保持されていれば、その読み出し不能なデータを復元することができる。しかしながら、あるディスクがすでに故障しているときに、アレイ内の他のディスクに対して読み出しエラーが起きると、データが失われる。これが2重故障の第2の形態である。2重故障の第3の形態は、同ストライプ内での2つのメディア読み込みエラーであり、めったに起こらないが起こる可能性はある。
【0012】
従って、2重故障に対して耐性のある技術を提供することが望まれている。この技術は、より大きなパリティグループを有するより大きなディスクシステムの構成を可能にする一方、一台のディスク故障に長い時間(例えば数時間)を要した後の復元であっても、システムが2重故障に耐えることを保証する。このような技術により、ストレージシステムに対する特定の設計上の制限を緩和することができる。例えば、ストレージシステムに比較的低コストのディスクを用いても、高いMTTDLを維持できるようになる。低コストのディスクは高コストのディスクに比べて一般に寿命が短く、寿命までに故障する確率も高い。従って、ストレージシステムがパリティグループ内の2重ディスク故障に耐えることができれば、このようなディスクの使用がもっと可能になる。
【0013】
既知の2重故障訂正パリティ手段は、失われた(故障した)ディスクの順次復元を可能にするEVENODD XORベースの技術である。EVENODDパリティには、ちょうど2台のディスク分の冗長データが必要であり、これが最適である。このパリティ技術によると、すべてのディスクブロックは2つのパリティ集合に属しており、一方はすべてのデータディスクにわたって計算される一般的なRAID4スタイルのXORであり、他方は対角方向に隣り合ったディスクブロックの集合にわたって計算される。大まかに説明すると、ディスクを同サイズのブロックに分割し、ディスクにわたってストライプを形成する。各ストライプ内において、対角方向に隣接したディスクブロックの集合によって形成されるパリティを保持するために指定したディスクを対角パリティディスクと呼び、それを保持するパリティを対角パリティと呼ぶ。このブロックの集合を行パリティ集合、または「行」と呼ぶ。行のブロックのうち1ブロックがその行のパリティを保持するために選択され、残りのブロックがデータを保持する。各ストライプ内には、1台を除いて対角パリティ以外のすべてのディスクの各々から1ブロックが選択され、選択されたブロックのうちの2つが同じ行に属しないという制限をさらに加える。これを対角パリティ集合または「対角」と呼ぶ。
【0014】
EVENODD技術における対角パリティ集合は、1つを除きすべてのデータディスクからブロックを含む。n台のデータディスクの場合、1ストライプ内にはn−1行のブロックが存在する。各ブロックが1つの対角上にあるので、長さn−1ブロックのn個の対角が存在する。注意して欲しいのは、EVENODD手段はnが素数である場合にしか機能しない点である。EVENODD技術については、1995年ブラウム他による「A variant of EVENODD is Failure in RAID Architecture」と題したIEEE Transactions on Computers Vol.44 No.2の論文に開示されている。1996年11月26日に発行された「Method and Meansfor Encoding and Rebuilding the Data Contents of up to Two Unavailable DASDs in a DASD Array using Simple Non−Recursive Diagonal and Row Parity」と題したブラウム他による米国特許第5,579,475号には、様々なEVENODDが開示されている。上記の論文および特許はここで参照することにより完全に説明したものとして取り込まれる。
【0015】
EVENODD技術は、pを素数として全部でp+2台のディスクを使用し、そのうちのp台のディスクがデータを保持し、残りの2台のディスクがパリティ情報を保持する。一方のパリティディスクは行パリティブロックを保持する。行パリティは、各データディスクの同じ位置にあるすべてのデータブロックのXORとして計算される。他方のパリティディスクは対角パリティブロックを保持する。対角パリティは、複数のデータディスク上に対角パターンに配置されたp−1個のデータブロックから構成される。これらのブロックは、p−1行のストライプにグループ化される。これは、データブロックの行パリティ集合への割り当てには影響を与えない。しかしながら、対角は、対角内のすべてのブロックが同じブロックのストライプに入るようなパターンに構成される。これは、ほとんどの対角は、ディスクからディスクへと進む際に、ストライプ内で「循環」することを意味している。
【0016】
具体的には、n×(n−1)のデータブロックのアレイの場合、対角がアレイの端部で「循環する」ならば、長さn−1の対角がちょうどn個存在する。EVENODDパリティ配置の復元で重要なのは、各対角パリティ集合がデータディスクのうちの1台からは情報を保持していないことである。しかしながら、対角のパリティブロックを記憶するためのブロックが存在する以外に、もう1つだけ対角が存在する。すなわち、EVENODDパリティ配置では、独立したパリティブロックを持たない対角パリティ集合になる。この余分な「抜けている」パリティブロックを収容するため、EVENODD配置は、ある特別な対角のパリティ結果と、その他の対角の各々のパリティブロックとのXORをとる。
【0017】
図1は、従来のEVENODDパリティ配置に従って構成された従来技術のディスクアレイ100を示す略ブロック図である。各データブロックDabはパリティ集合a及びbに属しており、各パリティ集合のパリティブロックをPaで表記している。ある特別な対角(X)については、対応するパリティ集合が存在しないことに注意して欲しい。ここにEVONODDの特徴が現れている。2つの故障からの復元を可能にするためには、各ディスクは少なくとも1つの対角パリティ集合に貢献してはならない。n×(n−1)のデータブロックのアレイを用いた場合、対角パリティ集合はn−1個のデータブロック要素を有する。上記のように、このような配置では、すべての対角についてパリティブロックを記憶するための位置を持つのではない。そのため、余分な(抜けている)対角パリティブロックのパリティ(X)は、その対角パリティを他の対角パリティブロックの各々のパリティとXORをとることにより記録される。具体的には、この抜けている対角パリティ集合のパリティは対角パリティブロックP4〜P7の各々とXORをとられ、それらのブロックがP4X〜P7Xで表記されている。
【0018】
2台のデータディスクの故障から復元するためには、まず、全てのパリティブロックのXORをとることにより、パリティブロックを持たない対角のパリティを再計算する。例えば、全ての行パリティの合計は全てのデータブロックの合計である。全ての対角パリティの合計は、全てのデータブロックの合計から抜けている対角パリティブロックの合計を引いたものである。従って、すべてのパリティブロックのXORは、すべてのブロックの合計(行パリティ合計)から抜けている対角を除いた全てのブロックの合計を引いたものに等しく、これがちょうど抜けている対角のパリティになる。実際には、各対角パリティブロックについて1つ、抜けている対角パリティのn−1個の複製がその結果に加算される。nが素数であるからn−1は偶数であり、あるブロックを自分自身と偶数回XORをとった結果はゼロブロックになる。従って、付加的な抜けているパリティが各々に加算された対角パリティブロックの和は、その付加的な対角パリティが無くても、対角パリティブロックの和に等しい。
【0019】
次に、対角パリティブロックの各々からその抜けている対角パリティを減算する。2台のデータディスクが故障した後には、1ブロックしか失われていない対角パリティ集合が少なくとも2つ存在する。それらのパリティ集合の各々の中から失われたブロックは、一方の集合がパリティブロックを持たない対角であれば、復元することが可能である。これらのブロックが復元されると、2つの行パリティ集合について1要素を除いたすべての要素が利用可能になる。これにより、それらの行の失われた要素の復元が可能になる。他方の対角上でこの復元を行なうと、それらの対角上で1つだけ失われたブロックを復元するのに十分な情報が提供される。行パリティ及び対角パリティを交互に利用したこの復元パターンは、すべての失われたブロックを復元し終えるまで継続される。
【0020】
nが素数なので、復元の際には、すべての対角に出くわすまで、即ちすべての失われたデータブロックが復元されるまで、循環が形成されることがない。nが素数でなければ状況は異なる。両方のパリティディスクが失われた場合は、データからパリティの単純な復元を実施することが可能である。データディスクと対角パリティディスクが失われた場合は、行パリティを用いてデータディスクの単純なRAID−4スタイルの復元を実施した後、対角パリティディスクの復元を実施する。データディスクと行パリティディスクが失われた場合は、1つの対角パリティを計算することができる。すべての対角が同じパリティを有するので、各対角上の失われたブロックを順次計算してゆくことができる。
【0021】
各データブロックがある対角パリティ集合の要素になっているので、2台のデータディスクが失われた場合(2重故障)でも、1要素しか失わないパリティ集合が2つ存在する。各ディスクには、そのディスク上に現れない2つのパリティ集合がある。従って、2重故障の場合、復元可能な2つのパリティ集合が存在する。EVENODDは、両方のパリティディスクの故障からも、1台のデータディスクと1台のパリティディスクとの任意の組み合わせの故障からも復元を可能にする。また、この技術は任意の単一のディスク故障からの復元も可能にする。
【0022】
EVENODDは必要なディスク数に関しては最適であるが、この技術のディスク効率は復元性能のコストで達成される。EVENODDはディスクアレイ全体を1つの単位として扱う。アレイ内の何らかのディスクが故障した場合、システムはアレイ内のすべてのディスクにアクセスして失われたブロックを復元しなければならない。nデータブロックのアレイ内で1台のディスクが故障した場合、n−1台の残ったディスクすべてに加えて行パリティディスクも読み出すことにより、それらのアクセスのうちの1/nが満足されるにすぎない。他のディスクに対するアクセスは一回の読み出し処理で満足するので、1つの読み出し当たりの平均アクセス数は、2−1/nである。これは、nが大きい場合、復元中に、2の要素によってディスクアレイの性能が低下することを意味している。また、故障から復旧させるためにしなければならないシステムの仕事量(及び、システムが拘束される場合にはその復元時間)も、ディスクアレイの大きさに比例する。2n台のディスクを有するシステムは、n台のディスクを有するシステムの2倍の時間を復旧に要する。
【0023】
発明の概要
本発明は、ストレージアレイ内の複数の記憶装置故障を効率的に訂正するための技術を含む。このストレージアレイは複数の連結されたサブアレイを含み、各サブアレイは、データ記憶装置の集合と、ブロックからなる行(すなわち行パリティ集合)内の単一装置の故障を訂正するために用いる単一装置誤り訂正方法を用いて符号化されたパリティを記憶するための1つの局所パリティ記憶装置とを含む。各サブアレイに対角パリティ集合を一様に割り当て、該サブアレイが2重故障保護符号化方法を用いる唯一の存在であったかのようにする。このアレイは、サブアレイの各々における同等の対角パリティ集合をまとめて論理加算することにより計算された対角パリティを保持するための1台の大域パリティ記憶装置をさらに含む。
【0024】
本発明によると、対角パリティブロックは各サブアレイの対角パリティ集合に沿って計算される。次いで、サブアレイの対応する対角パリティ集合の計算された対角パリティブロックを、例えばXOR演算を用いて論理的に結合し、対角パリティとして対角パリティ記憶装置上に記憶する。その後、任意のサブアレイの計算された対角パリティブロックの内容は、大域パリティ記憶装置上に記憶された対角パリティから他のサブアレイの対角パリティブロックを結合したものを減算することにより、復元することができる。従って、局所パリティ記憶装置と共に大域パリティ記憶装置を用いることにより、1つのサブアレイ内のいかなる2重故障も訂正することができる。
【0025】
注意すべき点は、本発明で用いる2重故障保護符号化方法は単一装置誤り訂正方法に依存しないことである。さらに、単一装置故障からの復旧に用いる方法は、行志向であって各サブアレイにおけるブロックの行が独立している限り、すなわち復旧がブロックの他の行からの情報に依存することがない限り、何も制限がない。この独立性が維持されるならば、これらの行の大きさは対角パリティを計算するために用いる行の大きさに関連した大きさである必要はない。
【0026】
有利なことに、本発明では、アレイのサブアレイ内の2台の記憶装置の同時故障からの復旧が可能であるように構成されたアレイにおける単一故障の有効な復元も可能である。異なるサブアレイにおける何らかのデータブロックの故障時には、本発明は、例えば局所行パリティ等の単一装置故障復旧方法を用いてデータブロックの復旧を可能にする。サブアレイ内の任意の2ブロックの故障時には、本発明は、局所行パリティと大域対角パリティとの組み合わせを用いて復旧を容易にする。つまり、2重故障を有するサブアレイが1つだけである限り、大域パリティ記憶装置の内容から他のサブアレイの対角パリティ寄与を取り除くことができるので、データを復元することが可能である。さらに、本発明の技術は、故障の無い動作中にアレイに記憶されるパリティを計算するための計算負荷も低減する。本技術は更に、パリティ計算のオーバヘッドも低減し、従来の方法に比べて少ない計算しか必要としない。
【0027】
本発明の上記の利点及び更なる利点は添付の図面と共に下記の説明を参照することによりさらによく理解することができ、図面中の似たような符号は同じ要素または機能的に類似した要素を示している。
【0028】
図2は、本発明に有利に用いられるストレージシステム220を含む環境200を示す略ブロック図である。本明細書で説明する本発明の技術は、ストレージシステム220として実現された、あるいは、ストレージシステム220を含む、スタンドアロンのコンピュータやその一部を含むいかなる種類の特別な目的(例えばファイルサーバやファイラー)のコンピュータまたは汎用コンピュータにも適用することができる。さらに、本発明の教示は、これらに限定はしないが、ネットワークに取り付けられたストレージ環境、ストレージエリアネットワーク、及びクライアントまたはホストコンピュータに直接取り付けられたディスクアセンブリを含む、様々なストレージシステムアーキテクチャに適合させることができる。従って、「ストレージシステム」という用語は、ストレージ機能を実施するように構成され、他の装置またはシステムに関連付けられた任意のサブシステムに加えて、それらの構成も含むように広く解釈しなければならない。
【0029】
例示的実施形態において、ストレージシステム220は、システムバス225によって相互接続されたプロセッサ222、メモリ224及びストレージアダプタ228を含む。メモリ224は、本発明に関するソフトウェアプログラムコード及びデータ構造を記憶するためにプロセッサ及びアダプタによってアドレス指定可能な記憶場所を含む。そして、プロセッサ及びアダプタは、そのソフトウェアコードを実行し、データ構造を操作するように構成された処理要素及び/又は論理回路を含む。ストレージオペレーティングシステム600は通常、その一部がメモリ内に存在し、処理要素によって実行され、とりわけ、ストレージシステムによって実行される記憶処理を呼び出すことにより、システム200の機能を構成する。当業者であれば、本明細書で説明する本発明の技術に関するプログラム命令の記憶及び実行のために、様々なコンピュータ読取可能媒体を含む他の処理手段及びメモリ手段を用いることもできることは、明らかであろう。
【0030】
ストレージアダプタ228は、システム220上で実行されているストレージオペレーティングシステム600と協働して、ユーザ(またはクライアント)から要求された情報にアクセスする。その情報は、データ及びパリティ情報含めて情報を記憶するように構成された、ビデオテープ、光学式DVD、磁気テープ、バブルメモリ、電子的ランダムアクセスメモリ、マイクロ電気機械、及び、何らかの他の媒体などの任意の種類の書込可能記憶要素媒体の取り付けられたストレージアレイ上に記憶される。しかしながら、本明細書で例示的に説明するように、この情報は、アレイ400のディスク230(HDD及び/又はDASD)等の記憶装置上に記憶される。ストレージアダプタは、従来の高性能ファイバーチャネルシリアル接続トポロジ等のI/O相互接続構成を介してそれらのディスクに接続された入出力(I/O)インタフェースを含む。
【0031】
アレイ300への情報の記憶は、ディスク空間の全体的な論理的配置を定義する、物理的記憶ディスク230の集まりを含む1以上のストレージ「ボリューム」として実施されることが好ましい。各ボリュームは通常、必須ではないが、そのボリューム自体のファイルシステムに関連している。ボリューム/ファイルシステム内のディスクは通常、1以上のグループに編成され、各グループがRAID(Redundant Array of Independent(or Inexpensive) Disks)として動作している。ほとんどのRAID実施形態は、RAIDグループ内の所定数の物理ディスクに「ストライプ状」にまたがるデータの冗長書き込みと、そのストライプ化されたデータに関するパリティ情報の適当な記憶とによって、データ記憶の信頼性/完全性を向上させている。
【0032】
本発明は、複数の連結されたサブアレイを有するストレージアレイ内の複数の記憶装置故障を効率的に訂正するための技術を含む。本発明の技術は、ストレージオペレーティングシステム600のディスクストレージ層(図6に符号624で示す)で実施し、対角パリティ集合を各サブアレイに一様に割り当て、その対角パリティが2重故障保護符号化方法を用いるアレイ内の唯一の存在であったかのようにする。ストレージアレイの各サブアレイには、データ記憶装置(ディスク)の集合と、ブロックからなる行(例えば行パリティ集合)内の単一ディスクの故障を訂正するために用いる単一装置誤り訂正方法を用いて符号化されたパリティ値を記憶する局所パリティディスクとが含まれる。このアレイは、対角パリティを保持する一台の大域パリティディスクをさらに含む。
【0033】
図3は、複数の連結サブアレイ310として編成されたストレージアレイ300の略ブロック図であり、各サブアレイはデータディスクの集合(D1、D2)とパリティディスク(PR1、PR2)を含む。例として、各サブアレイ310は例えばRAID−4スタイルの集中パリティになるように構成され、ディスクアレイ[A0、A2、...、An]が所定数(例えば7台)のデータディスク320と1台の行パリティディスク330とを含む。各サブアレイの要素は、Ck(k=0...n)で表すものとする。アレイ内の2台のディスクの同時故障からの復旧を可能にするため、アレイの各サブアレイ(及び行パリティディスク)について対角パリティを設けるのではなく、アレイ全体について1つの対角パリティを設ける。従って、アレイは、1つの対角パリティグループについて対角パリティを保持する大域パリティディスクPD350をさらに含み、そのパリティはサブアレイ310の各々における同等の対角パリティ集合をディスクストレージ層でまとめて論理的に加算することにより計算される。サブアレイ内の2重故障は、アレイ全体に関するこのただ1つの大域対角パリティディスク350を用いて訂正することができる。従って、この新規の技術は、アレイ内の2台の記憶装置(ディスク)の同時故障からの有効な復旧を可能にするために必要なディスク数を削減するものである。
【0034】
本発明によると、各サブアレイの対角パリティ集合に沿って対角パリティブロックが計算される。次いで、サブアレイの対応する対角パリティ集合の計算された対角パリティブロックは、例えば排他的論理和(XOR)演算により論理的に結合され、1つの大域パリティディスク350上に対角パリティとして記憶される。その後、大域パリティディスク上に記憶された対角パリティから他のサブアレイの結合された対角パリティブロックを減算することにより、任意のサブアレイの計算された対角パリティブロックの内容を復元することができる。従って1つのサブアレイだけが2重故障の影響を受け、他のサブアレイは実質的に関係ない場合、局所パリティディスクと共に大域パリティディスクを用いることにより、サブアレイ内のいかなる2重故障も訂正することができる。
【0035】
注意すべき点は、本発明で用いる2重故障保護符号化方法は単一装置誤り訂正方法に依存しないことである。さらに、単一ディスク故障からの復旧に用いる方法は、行志向であって各サブアレイにおけるブロックの行が独立したものである限り、すなわち復旧がブロックの他の行からの情報に依存することがない限り、何も制限がない(即ち、必ずしも「行パリティ」である必要はない)。この独立性が維持されるならば、これらの行の大きさは対角パリティを計算するために用いる行の大きさに関連した大きさである必要はない。
【0036】
例示的実施形態において、抜けているディスクがゼロであるものと仮定することにより、各サブアレイ310は、適当な素数pに切り上げられた最大サブアレイと同じディスク数で構成されているかのように扱われる。各サブアレイはp−1行のブロックをさらに有する。mが任意の正の整数であるものとすると、この新規の装置故障訂正技術は、(m*p+1)×(p−1)アレイのブロックを扱えることが好ましい。さらにサブアレイの連結は「行−対角」2重故障保護符号化に基くのが好ましいが、従来のEVENODD(EO)符号化等の他の2重故障保護符号化方法を本発明に用いることもできる。
【0037】
行−対角(R−D)符号化は、ディスクアレイにおける行パリティ及び対角パリティを用いた2重故障訂正復旧を提供するパリティ技術である。アレイ内の2台のディスクを完全にパリティ専用にし、残りのディスクがデータを保持する。任意の1台または任意の2台の同時ディスク故障の後でも、データを失うことなく、アレイの内容を完全に復元することができる。本発明と共に有利に用いられるR−Dパリティ技術の一例は、「Row−Diagonal Parity Technique for Enabling Efficient Recovery from Double Failures in a Storage Array.」と題した同時継続の共通所有者の米国特許出願第10/035,607号明細書に開示されている。
【0038】
図4は、R−Dパリティ符号化技術に従って編成されたディスクアレイ400を示す略ブロック図である。nがアレイ内のディスク数、pを素数としてn=p+1であるものと仮定する。最初のn−2台のディスク(D0〜3)がデータを保持し、ディスクn−1(RP)が単一装置訂正アルゴリズムを用いて符号化された値、例えばデータディスクD0〜D3についての行パリティを保持し、ディスクn(DP)が対角パリティを保持している。ディスクをブロックに分割し、ブロックをストライプに編成し、各ストライプがn−2(即ちp−1)行のブロックになるようにする。対角パリティディスクは、アレイの対角パリティ集合(「対角」)に沿って計算されたパリティ情報を記憶する。ストライプ内のブロックは、p個の対角に編成され、各々の対角がデータディスク及び行パリティディスクの中からp−1ブロックを保持し、1つを除いてすべての対角が対角パリティディスク上にパリティブロックを有する。また、1ストライプ当たりn−1個の対角が存在する。
【0039】
データブロック及び行パリティブロックには、各ブロックが1対角パリティ集合に属し、各行内で各ブロックが異なる対角パリティ集合に属するように、番号が付けられる。Da,b及びPa,bという記述は、データ(D)ブロック及びパリティ(P)ブロックの特定の行(a)及び対角(b)パリティ計算への寄与をそれぞれ表している。すなわち、Da,bという記述は、それらのブロックが行パリティa及び対角パリティbの計算に使用される行または対角に属していることを意味しており、Pa,bは、行パリティ集合aについてのパリティを記憶するとともに、対角パリティ集合bにも寄与することを意味している。例えば、「^」がXOR演算を表すものとすると、P0,8=D0,4^D0,5^D0,6^D0,7となる。この記述には、特定の対角についての対角パリティの計算のために使用される行パリティブロックも含まれ、例えばP4=D0,4^D3,4^D2,4^P1,4である。対角パリティディスク上に記憶された対角パリティブロックの各々は、アレイ内の他のディスク(行パリティディスクを含む)のうちの一台を除いて全てのディスクからの寄与を表していることに注意して欲しい。例えば、対角パリティブロックP4は、D0(D0,4)、D2(D3,4)、D3(2,4)及びRP(P1,4)からの寄与を有するが、D1からの寄与は有しない。また、対角8(P8)についての対角パリティは、計算もされず、対角パリティディスクDPに記憶もされないことに注意して欲しい。
【0040】
具体的には、ディスクDP上の対角パリティブロックは、それらのXOR計算を行なう際に行パリティブロックも含める。言い換えると、ディスクDP上に記憶された対角パリティは、データディスクの内容だけでなく、行パリティディスクの内容にも従って計算される。さらに、対角パリティディスクは、1つを除いてストライプの対角の各々についてパリティブロックを保持する。アレイ400に示すように対角パリティブロックを符号化することにより、このシステムは、対角パリティ(P8)が無くても、任意の2台のディスク故障から復旧させることができる。これは、対角パリティディスクDP上に記憶された対角パリティの計算に、行パリティブロックが要素として含まれた結果である。
【0041】
R−Dパリティ技術の復旧(復元プロセス)態様は、故障によりサブアレイ内の2台のデータディスク(または1台のデータディスクと行パリティディスク)が同時に失われた場合に呼び出される。故障した2台のデータディスク(または1台のデータディスクと行パリティディスク)には任意の組み合わせがあるため、失われたデータを復元するのに行パリティを直ちに用いることはできないが、対角パリディだけは用いることができる。与えられたアレイの構造および編成(即ちストライプ長とストライプ深さが等しくない)の場合、各対角は、ディスクのうちの1台からはブロックを含まない(抜けている)。そのため、2台のデータディスクが失われた場合でも、1要素しか失わない対角が2つ存在する。即ち、2台の失われたディスクの各々について、そのディスクと交わらない対角が1つ存在するので、その対角中のブロックはそのディスクの故障により失われることがない。対角パリティブロックは1つの対角を除くすべての対角について対角パリティディスク上に記憶されているので、抜けているブロックのうちの少なくとも一方、通常2つの復元が、対角パリティを用いて開始される。
【0042】
失われたブロックのうちの一方を復元した後、行パリティを用いてその行にある他方の失われたブロックを復元することにより、行の復元を計算することができる。他方のブロックを復元する場合、そのブロックがパリティの記憶された対角に属しているか否かについて判定を行なう。そのブロックがパリティのある対角に属している場合、その対角上にある他のディスクから、対角パリティを用いてその対角上にある他方の失われたブロックを復元することができる。すなわち、抜けている対角を除くすべての対角について、その対角上の1ブロックが復元できれば、他方のブロックも復元することが可能である。その後、その行パリティ集合のうちの他方の失われたブロックを復元する。しかしながら、ブロックがパリティの無い対角(即ち、抜けている対角)に属していた場合、すべてのブロックを復元し終わったか否かについて判定を行なう。まだ復元し終っていない場合、対角パリティに基づく第1の復元と、続く行パリティに基づく復元とからなるパターンを繰り返し、抜けている対角パリティ集合の計算に用いられる最後のデータブロックに達するまでそれを継続する。すべてのブロックを復元し終えると、復元処理は終了する。
【0043】
図5は、R−D符号化に基くサブアレイ310の連結を有するストレージアレイ300に適用されるような、新規の複数故障訂正技術を含むステップのシーケンスを示すフロー図である。このシーケンスはステップ500で開始され、ステップ502へ進み、ここで行パリティディスク330を含むすべてのサブアレイA[0−n]を連結し、Ck全体のデータディスクと行パリティディスク330の総数が素数であるようにする。ステップ504で、対角パリティディスク350を追加してアレイ300を形成する。ステップ506で、各サブアレイの対角パリティをR−Dパリティ技術に従って計算し、XOR演算を用いて各サブアレイの同等のパリティ計算結果を結合し、それらを対角パリティディスク上に記憶することにより、対角パリティディスク350の内容を符号化する。
【0044】
ステップ508でアレイが故障する。その故障が単一ディスク故障である場合(ステップ510)、ステップ512で、その故障がサブアレイ内のディスクであるか否かについて判定を行なう。サブアレイ内のディスクであった場合、ステップ514で、そのサブアレイに関する局所行パリティを用いてその故障したデータディスクまたは行パリティディスクを復元する。そしてシーケンスはステップ532で終了する。単一故障がサブアレイのディスクでなかった場合、故障した大域対角パリティディスクをアレイ全体のすべてのサブアレイのすべてのディスク(データディスク及び行パリティディスク)を用いて復元する。この理由は、対角パリティ集合(即ち、対角)がディスクのアレイ全体にわたって分布しているからである。特に、故障した大域対角パリティディスク350上に記憶された対角パリティは、例えばXOR演算を用いてサブアレイ310における同等の対角パリティ集合を論理的に結合することによりステップ516で復元される。そしてシーケンスはステップ532で終了する。
【0045】
故障が単一ディスク故障でない場合、ステップ518で、そのアレイ故障がサブアレイ内の2重故障であるか否かについて判定を行なう。サブアレイ内の2重故障でなかった場合、ステップ520で、故障のうちの1つに対角パリティディスクが含まれるか否かについて判定を行なう。対角パリティディスクが含まれない場合、各ディスク故障は異なるサブアレイで発生したデータディスク故障または行パリティディスク故障であるから、ステップ522で、各サブアレイの故障したディスクを局所行パリティを用いて復元する。そしてシーケンスはステップ532で終了する。
【0046】
故障のうちの1つに大域対角パリティディスクが含まれる場合、ステップ524で、他の故障したディスクに行パリティディスクが含まれるか否かについて判定を行なう。行パリティディスクが含まれる場合、まず故障した行パリティディスクをそのサブアレイのデータディスクから復元し、次いでそれらのサブアレイにおける同等の対角パリティ集合から対角パリティディスクを復元することにより、行対角パリティディスクと対角パリティディスクの故障を復元する(ステップ526)。そしてシーケンスはステップ532で終了する。他の故障したディスクに行パリティディスクが含まれない場合、まずそのサブアレイに関する局所行パリティからデータディスクを復元し、次いでそれらのサブアレイにおける同等の対角パリティ集合から対角パリティディスクを復元することにより、データディスクと対角パリティディスクの故障を復元する(ステップ528)。そしてシーケンスはステップ532で終了する。
【0047】
ステップ530で、サブアレイ内の2台のディスク故障(2重故障)をR−D復元プロセスを用いて大域的に復元する。この場合、ディスク内で発生する2つの故障は同じ行パリティによって保護されているので、復元のためには対角パリティが必要である。本発明によると、2重故障を有しているサブアレイが1つだけである限り、対角パリティから他のサブアレイの寄与を取り除くことができるので、データを復元することができる。具体的には、対角パリティディスクの内容から2重故障ではないサブアレイの対角パリティを減算し、次いでR−Dパリティ技術を利用して故障したサブアレイのデータ及び/又は行パリティを復元する。対角パリティディスクに対する条件はR−Dパリティ技術に関して説明したものと同じであるので、対角パリティディスクを用いて故障したサブアレイ内の少なくとも1つのデータブロックが復元される。そのブロックを復元した後、サブアレイ内の行パリティを用いて他の故障したディスクにおける対応するブロックを復元する。R−D復元プロセスに従ってこの処理を継続する。そしてシーケンスはステップ532で終了する。
【0048】
本技術とR−D技術との差は、アレイ内の任意数のディスクを仮想的に行パリティディスクにできることであることに注目して欲しい。行パリティディスクはアレイ内のサブアレイを実質的に定義している。局所行パリティに基く復元には、サブアレイのデータディスク(即ち、行パリティ集合)しか必要ない。そのため本発明の訂正技術によると、サブアレイ内の2台のディスクの同時故障からの復旧が可能であるように構成されたアレイ300において、より効率的(容易)な単一故障の復旧が可能になる。
【0049】
さらに本発明は、既存のデータディスク及びパリティディスクに1台のパリティディスクを追加することにより、アレイ内の2重故障に対する保護を提供することができる。そしてR−Dパリティ復元アルゴリズムを用いることができる。
【0050】
また、本明細書で説明する技術は、いかなる1つのサブアレイにおいても3以上の故障が存在せず2つの故障をもつサブアレイが2以上存在しない場合、及び、何らかのサブアレイに2つの故障が存在する場合であっても対角パリティディスクが故障していない場合には、アレイ300内の3以上の故障を訂正することも可能であるということに注目して欲しい。例えば、3つのサブアレイが存在し、各々のサブアレイが1以上のデータディスクと1つの行パリティディスクとを含むものと仮定する。本発明では、アレイ全体内の総数4台のディスク故障について、各サブアレイ内の単一(データまたは行パリティ)ディスク故障、及び、アレイ内のどこかで生じたもう1つのディスク故障からの復旧が可能である。1つのサブアレイ内の2台のディスク故障の場合、復元は、1つの要素しか失っていない対角パリティ集合を探すことから開始される。つまり、復元は、故障したディスクのうちの一方に現れない対角パリティ集合の対角パリティのうちの抜けているブロックから開始される。次いで、行パリティ集合内の他の抜けているブロックの復元が可能になり、抜けている対角パリティ集合の計算に用いられる最後のデータブロックに達するまで、行−対角復元手順を継続する。
【0051】
有利なことに、本発明によると、アレイのサブアレイ内の2台の記憶装置の同時故障からの復旧が可能であるように構成されたアレイにおける単一故障の効率的な復旧も可能になる。異なるサブアレイにおける何らかのデータブロックの故障時には、本発明は、例えば局所行パリティなどの単一装置故障復旧方法を用いてデータブロックの復旧を可能にする。サブアレイ内の任意の2ブロックの故障時には、本発明は、局所行パリティと大域対角パリティとの組み合わせを用いて復旧を容易にする。つまり、2重故障を有するサブアレイが1つだけである限り、大域対角パリティ記憶装置の内容から他のサブアレイの対角パリティ寄与を取り除くことができるので、データを復旧させることができる。
【0052】
図6は、本発明に有利に用いることができるストレージオペレーティングシステム600を示す略ブロック図である。例示的実施形態では、このストレージオペレーティングシステムは、カリフォルニア州サニーベールにあるネットワークアプライアンス社から入手可能なNetApp Data ONTAP(登録商標)オペレーティングシステムが好ましく、Write Anywhere File Layout(WAFL(登録商標))ファイルシステムを実施する。本明細書で用いる場合、「ストレージオペレーティングシステム」という用語は、一般にストレージシステムにおいてストレージ機能を実施することができるコンピュータ実行可能コードを指しており、例えばファイルシステムセマンティックを実施したり、データアクセスを管理したりする。その意味で、ONTAPソフトウェアは、マイクロカーネルとして実施されるそのようなストレージオペレーティングシステムの一例であり、WAFLファイルシステムセマンティック及びデータアクセスの管理を実施するためのWAFL層を含む。また、このストレージオペレーティングシステムは、UNIX(登録商標)やWindowsNT(登録商標)等の汎用オペレーティングシステム上で動作するアプリケーションプログラムとして実施することもできるし、本明細書で説明するストレージアプリケーションのために構成されたストレージ機能または設定可能な機能を有する汎用オペレーティングシステムとして実施することもできる。
【0053】
ストレージオペレーティングシステムは、ネットワークドライバ(例えばイーサネット(登録商標)ドライバ)のメディアアクセス層610を含む一連のソフトウェア層からなる。このネットワークオペレーティングシステムは、インターネットプロトコル(IP)層612、並びに、IP層がサポートするトランスポート手段であるTCP(Transport Control Protcol)層614及びUDP(UserDatagram Protocol)層616等のネットワークプロトコル層をさらに含む。ファイルシステムプロトコル層は、マルチプロトコルアクセスを提供するため、CIFS(Common Internet File System)プロトコル618、NFS(Network File System)プロトコル620、及び、HTTP(Hypertext Transfer Protocol)プロトコル622をサポートしている。さらに、オペレーティングシステム600は、RAIDプロトコル等のディスクストレージプロトコルを実施するディスクストレージ層624と、SCSI(Small Computer Systems Interface)プロトコル等のディスクアクセスプロトコルを実施するディスクドライバ層626とを含む。ディスクソフトウェア層とネットワークプロトコル層/ファイルシステムプロトコル層とを橋渡しするのは、好ましくはWAFLファイルシステムを実施するWAFL層680である。
【0054】
ストレージシステムで受信したユーザ要求に対して、データストレージアクセスを実施するのに必要な上記のストレージオペレーティングシステム層を通るソフトウェア「パス」は、代替的にハードウェアで実施することもできる。すなわち、本発明の代替の実施形態では、このストレージアクセス要求データパス650は、FPGA(Field Programmable Gate Array)やASIC(Application Specific Integrated Cirquit)の中に実現された論理回路として実施することもできる。この種のハードウェアによる実施形態は、ユーザ要求に応答してシステム220によって提供されるサービスの能力を向上させることができる。さらに、本発明のさらに他の実施形態として、アダプタ228の処理要素は、プロセッサ222からストレージアクセス処理の負荷の一部または全部を低減させるように構成し、ストレージシステムによって提供されるサービスの性能を向上させることもできる。
【0055】
本明細書で説明する様々な処理、アーキテクチャが、ハードウェアでもファームウェアでも、あるいはソフトウェアでも実施できることは、明らかである。例えば、本発明の一般的な実施形態は、マイクロプロセッサが組み込まれた汎用または専用のコンピュータ上で動作するソフトウェアコードを含む場合がある。しかしながら、本発明は、FPGA、ASIC、または、何らかの他のハードウェアあるいはソフトウェア実施形態で実施することも全く問題なく可能であり、場合によっては好ましい。当業者であれば、本明細書で説明する本発明のアルゴリズムは様々な技術的手段を用いて実施できることが分かるであろう。
【0056】
本明細書で説明した例示的実施形態は、各サブアレイの局所パリティブロックがすべて同じディスク上に記憶される、集中パリティ配置に関するものである。本発明のさらに別の実施形態として、本発明の技術は、異なる行の集合のサブアレイ内で局所パリティブロックの位置がディスクごとにシフトされている、分散パリティ配置(例えばRAID−5)等の他のサブアレイ構成と共に用いることも可能である。しかしながら、本発明のスケーリング態様(即ち、将来的に既存のデータブロック及びパリティブロックを再編成することなくディスクをアレイに追加する能力)は、対角パリティ集合がゼロ値のブロックを有する「仮想」(不在)ディスクの存在を考慮しているため、集中パリティ技術にのみ適用される。分散パリティ配置を用いたこの種のスケーリングは極めて難しく、循環したパリティがこのような仮想ディスクに当たってしまう場合がある。
【0057】
さらに、本発明は2個の記憶装置からp個の記憶装置までの範囲の大きさのサブアレイ上で動作する。つまり、本発明は、2個からp個の装置からなるサブアレイをp−1行で反復することにより、任意のサブアレイ内の2重故障保護を提供するとともに、ストレージアレイ全体における2重故障保護を提供する。ストレージアレイ全体についての大域対角パリティ装置から他のサブアレイの計算された対角パリティを取り除くことにより、任意の1つのサブアレイについての「サブアレイ」対角パリティ装置の内容を復元できるということが、その証拠である(1つの大域対角パリティ装置はサブアレイの同等のサブアレイ対角パリティ装置の追加であることに注意して欲しい)。本発明は、2重故障保護符号化方法を適用可能であるための制約に合致するストライプのブロック化と複数の装置が各サブアレイ内(対角パリティ装置以外)に必要であり、本明細書ではそれらをR−D(またはEO)符号化されたアレイとして説明している。
【0058】
ここまでストレージアレイ内の複数の記憶装置故障を効率的に訂正するための例示的実施形態を図示及び説明してきたが、本発明の思想と範囲の中で様々な改造及び修正が可能であるものと考えられる。例えば、代替の実施形態において、本発明は、フォワード・エラー・コレクション技術として通信の分野で用いることもでき、例えば待ち時間の長いリンク(衛星など)を介したデータのマルチキャスト配送などを可能にする。この実施形態では、データを、パケットや電子通信媒体(ネットワーク)を介した伝送に適したデータ単位等の記憶要素に分割して、p番目のパケット毎に直前のp−1個のパケットの行パリティXORを保持するようにする。当業者であれば、本発明の原理に従ってパケットの他の編成及び構成を用いることも可能であることが分かるである。行パリティパケットは各サブグループ(集合)内の最大データパケットと少なくとも同じ大きさをもつ必要があり、対角パリティパケットは任意のサブグループ内の最大データパケットと少なくとも同じ大きさをもつ必要があることに注意して欲しい。また、パケットの任意のサブグループ内のパケット数と少なくとも同じ大きさをもつ最小の素数をpとしたとき、対角パリティパケットの大きさはp−1ビットである。pの集合から1パケットが欠落した場合、そのパケットは行パリティから復元することができる。pの一集合から2パケットが欠落した場合、対角パリティを用いて復旧を行なうことができる。
【0059】
上記の説明は、本発明の特定の実施形態に関して行なっている。しかしながら、説明した実施形態に対して他の様々な変更及び修正を行い、本発明の利点のうちのいくらかまたは全部を得ることも可能であることは明らかである。従って、付記した請求の範囲の目的は、かかる変更及び修正が本発明の真の思想及び範囲に入るようにすることである。
【図面の簡単な説明】
【図1】従来のEVENODDパリティ配置に従って構成された従来技術のディスクアレイを示す略ブロック図である。
【図2】本発明に有利に用いられる、ストレージシステムを含む環境を示す略ブロック図である。
【図3】本発明に有利に用いられる、複数の連結されたサブアレイを含むストレージアレイを示す略ブロック図である。
【図4】行−対角(R−D)パリティ符号化技術に従って編成されたディスクアレイを示す略ブロック図である。
【図5】本発明に従ってR−D符号化に基くサブアレイの連結に適用される新規の装置故障訂正技術を含むステップのシーケンスを示すフロー図である。
【図6】本発明に有利に用いられるストレージオペレーティングシステムを示す略ブロック図である。
Claims (41)
- ストレージアレイにおける複数の記憶装置故障を訂正するためのシステムであって、
複数の連結されたサブアレイを有するストレージアレイであって、各サブアレイがデータ記憶装置の集合と局所パリティ記憶装置とを含み、各サブアレイが2重故障保護符号化方法を用いる唯一の存在であったかのように一様に対角パリティ集合を割り当てられ、前記ストレージアレイがサブアレイの各々における同等の対角パリティ集合をまとめて論理的に加算することにより計算された対角パリティを保持する大域パリティ記憶装置をさらに含み、各サブアレイの前記局所パリティ記憶装置と共に前記大域パリティ記憶装置を用いてサブアレイ内の2重故障を訂正するようになっている、ストレージアレイからなるシステム。 - 前記局所パリティ記憶装置は、前記サブアレイの行パリティ集合内の単一装置の故障を訂正するために用いる単一装置誤り訂正方法を用いて符号化された値を記憶するように構成されている、請求項1のシステム。
- 前記行パリティ集合がブロックの行である、請求項2のシステム。
- 第2の装置故障に対する保護を提供する前記符号化方法は、前記単一装置誤り訂正方法に依存しないものである、請求項2のシステム。
- 前記2重故障保護符号化方法が行−対角符号化である、請求項4のシステム。
- 前記単一装置誤り訂正方法が行パリティである、請求項4のシステム。
- 各サブアレイが集中パリティ装置アレイとして編成される、請求項1のシステム。
- 各サブアレイが分散パリティ装置アレイとして編成される、請求項1のシステム。
- 前記記憶装置が、磁気テープ、光学式DVD、バブルメモリ、電子的ランダムアクセスメモリまたは磁気ディスク装置である、請求項1のシステム。
- ストレージアレイにおける2重故障の訂正のためにデータを符号化する方法であって、
ストレージアレイを複数の連結されたサブアレイとして編成し、各サブアレイがデータ記憶装置の集合と局所パリティ記憶装置とを含み、前記ストレージアレイが対角パリティを保持するための大域パリティ記憶装置をさらに含むように編成するステップと、
対角パリティ集合を各サブアレイに一様に割り当て、該サブアレイが2重故障保護符号化方法を用いる唯一の存在であったかのようにするステップと、
前記サブアレイの各々における同等の対角パリティ集合をまとめて論理的に加算することにより前記対角パリティを計算するステップと、
からなる方法。 - 各サブアレイに関連する前記局所パリティ記憶装置と前記ストレージアレイに関連する大域パリティ記憶装置とを用いて前記アレイ内の記憶装置故障を訂正するステップをさらに含む、請求項10の方法。
- 前記計算するステップは、各サブアレイの対角パリティ集合に沿って対角パリティブロックを計算するステップを含む、請求項11の方法。
- 前記計算するステップは、前記サブアレイの対応する対角パリティ集合の計算された対角パリティブロックを論理的に結合し、対角パリティとして前記大域パリティ記憶装置に記憶するステップを含む、請求項12の方法。
- 前記論理的に結合するステップは、排他的論理和演算を用いて対角パリティを計算するステップを含む、請求項13の方法。
- 前記訂正するステップは、前記大域パリティ記憶装置に記憶された対角パリティから他のサブアレイの前記結合された対角パリティブロックを減算することによって、任意のサブアレイの前記計算された対角パリティブロックを復元するステップを含む、請求項13の方法。
- 単一装置誤り訂正方法を用いて符号化されたパリティ値を各サブアレイの局所パリティ記憶装置に記憶するステップをさらに含む、請求項10の方法。
- 前記訂正するステップは、単一装置誤り訂正方法を用いて各サブアレイのブロックの行内の単一装置の故障を訂正するステップをさらに含む、請求項16の方法。
- 第2の装置故障に対する保護を提供する前記符号化方法は、前記単一装置誤り訂正方法に依存しないものである、請求項17の方法。
- 前記単一装置誤り訂正方法が行志向であり、各サブアレイの前記ブロックの行が独立している、請求項18の方法。
- 前記編成するステップは、各サブアレイを集中パリティ装置アレイとして編成するステップを含む、請求項10の方法。
- 前記編成するステップは、各サブアレイを分散パリティ装置アレイとして編成するステップを含む、請求項10の方法。
- 前記記憶装置が、ビデオテーブ、磁気テープ、光学式DVD、バブルメモリ、電子的ランダムアクセスメモリ、または、磁気ディスク装置である、請求項10の方法。
- ストレージアレイにおける2重故障を訂正するための装置であって、
ストレージアレイを複数の連結されたサブアレイとして編成し、各サブアレイがデータ記憶装置の集合と局所パリティ記憶装置とを含み、前記ストレージアレイが対角パリティを保持するための大域パリティ記憶装置をさらに含むように編成する手段と、
対角パリティ集合を各サブアレイに一様に割り当て、該サブアレイが2重故障保護符号化方法を用いる唯一の存在であったかのようにする手段と、
前記サブアレイの各々における同等の対角パリティ集合をまとめて論理的に加算する符号化処理を用いて前記対角パリティを計算する手段と、
各サブアレイに関連する前記局所パリティ記憶装置および前記ストレージアレイに関連する前記大域パリティ記憶装置に対するパリティ復号演算を用いて、前記アレイ内の記憶装置故障を訂正する手段と、
からなる装置。 - 前記編成する手段は、各サブアレイを集中パリティ装置アレイとして編成する手段を含む、請求項23の装置。
- 前記編成する手段は、各サブアレイを分散パリティ装置アレイとして編成する手段を含む、請求項23の装置。
- 前記記憶装置が、ビデオテープ、磁気テープ、光学式DVD、バブルメモリ、電子的ランダムアクセスメモリ、または、磁気ディスク装置である、請求項23の装置。
- 前記パリティ符号化演算及び復号化演算がフィールド・プログラマブル・ゲートアレイまたは特定用途向け集積回路等の専用ハードウェアで実施される、請求項23の装置。
- ストレージアレイにおける2重故障を訂正するための実行可能プログラム命令を含むコンピュータ読取可能媒体であって、該実行可能プログラム命令が、
ストレージアレイを複数の連結されたサブアレイとして編成し、各サブアレイがデータ記憶装置の集合と局所パリティ記憶装置とを含み、前記ストレージアレイが対角パリティを保持するための大域パリティ記憶装置をさらに含むように編成するためのプログラム命令と、
対角パリティ集合を各サブアレイに一様に割り当て、該サブアレイが2重故障保護符号化方法を用いる唯一の存在であったかのようにするためのプログラム命令と、
前記サブアレイの各々における同等の対角パリティ集合をまとめて論理的に加算することにより前記対角パリティを計算するためのプログラム命令と、
各サブアレイに関連する前記局所パリティ記憶装置および前記ストレージアレイに関連する前記大域パリティ記憶装置を用いて、前記アレイ内の記憶装置故障訂正するためのプログラム命令と、
からなる、コンピュータ読取可能媒体。 - 前記計算するためのプログラム命令は、各サブアレイの対角パリティ集合に沿って対角パリティブロックを計算するためのプログラム命令を含む、請求項28のコンピュータ読取可能媒体。
- 前記計算するためのプログラム命令は、前記サブアレイの対応する対角パリティ集合の計算された対角パリティブロックを論理的に結合し、対角パリティとして前記大域パリティ記憶装置に記憶するためのプログラム命令をさらに含む、請求項29のコンピュータ読取可能媒体。
- 前記計算するためのプログラム命令は、前記大域パリティ記憶装置に記憶された対角パリティから他のサブアレイの前記結合された対角パリティブロックを減算することによって、任意のサブアレイ前記計算された対角パリティブロックを復元するためのプログラム命令を含む、請求項30のコンピュータ読取可能媒体。
- 前記実行可能命令は、マイクロプロセッサが組み込まれた汎用コンピュータまたは専用コンピュータによって実行される、請求項28のコンピュータ読取可能媒体。
- ストレージアレイにおける複数の記憶要素故障を訂正するシステムであって、複数の連結されたサブアレイを有するストレージアレイであって、各サブアレイがデータ記憶要素の集合と該サブアレイ内の単一要素を用いて符号化された値を記憶するように構成された局所パリティ記憶要素とを含み、各サブアレイが2重故障保護符号化方法を用いる唯一の存在であったかのように一様に対角パリティ集合を割り当てられ、前記ストレージアレイが前記サブアレイの各々における同等の対角パリティ集合をまとめて論理的に加算することにより計算された対角パリティを保持するための大域パリティ記憶要素をさらに含み、各サブアレイの前記局所パリティ記憶要素と共に前記大域パリティ記憶要素を用いてサブアレイ内の2重故障を訂正するようになっている、ストレージアレイからなるシステム。
- 前記記憶要素がパケットであり、前記まとめて論理的加算することは排他的論理和(XOR)演算の利用を含む、請求項33のシステム。
- pを素数として、毎p番目のパケットが直前のp−1個のパケットの行パリティXORを保持する、請求項34のシステム。
- p個のパケットをnセット送信した後に対角パリティを含むパケットを送信する、請求項35のシステム。
- pの集合から1パケットが欠落した場合には行パリティを用いてそのパケットを復元し、pの一集合から2パケットが欠落した場合には行パリティと対角パリティとを用いてそのパケットを復元する、請求項36のシステム。
- 通信媒体を介した伝送に適した、データ内の2重故障を訂正するための方法であって、
通信媒体を介した伝送のためにデータをパケットに分割するステップと、
前記パケットをp個のパケットからなるn個のサブグループに編成し、pがパケットの任意のサブグループ内のパケット数と少なくとも同程度の大きさの最小の素数であり、パケットの各サブグループがデータパケットと前記サブグループの行パリティ集合内の単一パケットの破損を訂正するために用いる単一誤り訂正方法を用いて符号化された値を記憶するように構成された局所パリティパケットとを含むように編成するステップと、
対角パリティ集合を各サブグループに一様に割り当て、該サブグループが2重故障保護符号化方法を用いる唯一の存在であったかのようにするステップと、パケットのグループを用いて大域パリティパケットを提供するステップであって、前記大域パリティパケットが前記サブグループの各々における同等の対角パリティ集合をまとめて論理的に加算することにより計算された対角パリティを保持し、前記大域パリティパケットは各グループの前記局所パリティパケットと共に用いて前記サブグループ内の2重故障を訂正するものであるステップと、
からなる方法。 - 前記まとめて論理的に加算することは排他的論理和(XOR)演算の利用を含み、毎p番目のパケットが直前のp−1個のパケットの行パリティXORを保持する、請求項38の方法。
- 前記提供するステップは、p個のパケットからなるn個のサブグループが送信される毎に対角パリティを含む前記大域パリティパケットを送信するステップを含む、請求項39の方法。
- pの集合から1パケットが欠落した場合には行パリティを用いてそのパケットを復元するステップと、
pの一集合から2パケットが欠落した場合には行パリティと対角パリティとを用いてそれらのパケットを復元するステップと、
をさらに含む、請求項40の方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/094,086 US7080278B1 (en) | 2002-03-08 | 2002-03-08 | Technique for correcting multiple storage device failures in a storage array |
US10/094086 | 2002-03-08 |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2004030577A true JP2004030577A (ja) | 2004-01-29 |
JP2004030577A5 JP2004030577A5 (ja) | 2006-04-20 |
JP4703945B2 JP4703945B2 (ja) | 2011-06-15 |
Family
ID=27754056
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003062749A Expired - Fee Related JP4703945B2 (ja) | 2002-03-08 | 2003-03-10 | ストレージアレイにおける複数の記憶装置故障を訂正する方法 |
Country Status (3)
Country | Link |
---|---|
US (2) | US7080278B1 (ja) |
EP (1) | EP1343087B1 (ja) |
JP (1) | JP4703945B2 (ja) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005332123A (ja) * | 2004-05-19 | 2005-12-02 | Fujitsu Ltd | ディスクアレイ装置およびディスクアレイ装置におけるグループ分割方法 |
JP2008217395A (ja) * | 2007-03-05 | 2008-09-18 | Nec Corp | ディスクアレイ装置 |
US7809979B2 (en) | 2005-03-15 | 2010-10-05 | Fujitsu Limited | Storage control apparatus and method |
JP2011192206A (ja) * | 2010-03-16 | 2011-09-29 | Toshiba Corp | 半導体メモリ映像蓄積再生装置及びデータ書込み/読出し方法 |
KR20140135605A (ko) * | 2013-05-16 | 2014-11-26 | 실리콘 모션 인코포레이티드 | 플래시 메모리 제어 방법, 제어기 및 전자 장치 |
JP2015082150A (ja) * | 2013-10-21 | 2015-04-27 | 富士通株式会社 | ストレージシステム、及びストレージプログラム |
Families Citing this family (50)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
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 |
US7185144B2 (en) * | 2003-11-24 | 2007-02-27 | Network Appliance, Inc. | Semi-static distribution technique |
US7647451B1 (en) | 2003-11-24 | 2010-01-12 | Netapp, Inc. | Data placement technique for striping data containers across volumes of a storage system cluster |
US7240237B2 (en) * | 2004-05-25 | 2007-07-03 | Lsi Corporation | Method and system for high bandwidth fault tolerance in a storage subsystem |
US7318190B2 (en) * | 2004-06-10 | 2008-01-08 | Intel Corporation | Storage device parity computation |
US7467281B2 (en) * | 2004-06-10 | 2008-12-16 | Intel Corporation | Mapping data blocks to storage blocks to wrap around storage devices |
US7321905B2 (en) * | 2004-09-30 | 2008-01-22 | International Business Machines Corporation | System and method for efficient data recovery in a storage array utilizing multiple parity slopes |
US7779294B2 (en) * | 2005-04-15 | 2010-08-17 | Intel Corporation | Power-safe disk storage apparatus, systems, and methods |
US7689890B2 (en) * | 2005-04-21 | 2010-03-30 | Dell Products L.P. | System and method for handling write commands to prevent corrupted parity information in a storage array |
US7552357B2 (en) * | 2005-04-29 | 2009-06-23 | Network Appliance, Inc. | Lost writes detection in a redundancy group based on RAID with multiple parity |
US7360143B2 (en) * | 2005-05-24 | 2008-04-15 | International Business Machines Corporation | Redundant storage of computer data |
US7577866B1 (en) * | 2005-06-27 | 2009-08-18 | Emc Corporation | Techniques for fault tolerant data storage |
US7971126B2 (en) * | 2007-06-27 | 2011-06-28 | International Business Machines Corporation | Apparatus, system, and method for hard disk drive redundancy |
US8209577B2 (en) * | 2007-12-20 | 2012-06-26 | Microsoft Corporation | Optimizing XOR-based codes |
US8171379B2 (en) * | 2008-02-18 | 2012-05-01 | Dell Products L.P. | Methods, systems and media for data recovery using global parity for multiple independent RAID levels |
US8145975B2 (en) * | 2008-02-28 | 2012-03-27 | Ip Video Communications Corporation | Universal packet loss recovery system for delivery of real-time streaming multimedia content over packet-switched networks |
US8327250B1 (en) | 2009-04-21 | 2012-12-04 | Network Appliance, Inc. | Data integrity and parity consistency verification |
US8090978B2 (en) * | 2009-05-25 | 2012-01-03 | International Business Machines Corporation | Protection of data on failing storage devices |
US11429486B1 (en) * | 2010-02-27 | 2022-08-30 | Pure Storage, Inc. | Rebuilding data via locally decodable redundancy in a vast storage network |
US9348696B2 (en) * | 2010-10-01 | 2016-05-24 | Pure Storage, Inc. | Distributed multi-level protection in a raid array based storage system |
US20120084507A1 (en) * | 2010-10-01 | 2012-04-05 | John Colgrove | Multi-level protection with intra-device protection in a raid array based storage system |
US20120084504A1 (en) * | 2010-10-01 | 2012-04-05 | John Colgrove | Dynamic raid geometries in an ssd environment |
US9229808B2 (en) * | 2010-10-01 | 2016-01-05 | Pure Storage, Inc. | Reconstruct reads in a raid array with dynamic geometries |
US8645616B2 (en) | 2011-02-03 | 2014-02-04 | Micron Technology, Inc. | Protecting groups of memory cells in a memory device |
JP6039699B2 (ja) * | 2012-07-23 | 2016-12-07 | 株式会社日立製作所 | ストレージシステム及びデータ管理方法 |
WO2015016879A1 (en) * | 2013-07-31 | 2015-02-05 | Hewlett-Packard Development Company, L.P. | Operating a memory unit |
WO2015016880A1 (en) | 2013-07-31 | 2015-02-05 | Hewlett-Packard Development Company, L.P. | Global error correction |
GB2525430B (en) * | 2014-04-25 | 2016-07-13 | Ibm | Error-correction encoding and decoding |
US9081828B1 (en) | 2014-04-30 | 2015-07-14 | Igneous Systems, Inc. | Network addressable storage controller with storage drive profile comparison |
USRE48835E1 (en) | 2014-04-30 | 2021-11-30 | Rubrik, Inc. | Network addressable storage controller with storage drive profile comparison |
US9116833B1 (en) * | 2014-12-18 | 2015-08-25 | Igneous Systems, Inc. | Efficiency for erasure encoding |
US9672106B2 (en) | 2014-12-30 | 2017-06-06 | Nutanix, Inc. | Architecture for implementing erasure coding |
US9529676B1 (en) * | 2014-12-31 | 2016-12-27 | EMC IP Holding Company LLC | Optimizing spare capacity and spare distribution |
US9361046B1 (en) | 2015-05-11 | 2016-06-07 | Igneous Systems, Inc. | Wireless data storage chassis |
KR20170035103A (ko) * | 2015-09-22 | 2017-03-30 | 삼성전자주식회사 | 반도체 메모리 장치 및 이를 포함하는 메모리 시스템 |
US10146652B2 (en) | 2016-02-11 | 2018-12-04 | International Business Machines Corporation | Resilient distributed storage system |
US10372334B2 (en) | 2016-02-11 | 2019-08-06 | International Business Machines Corporation | Reclaiming free space in a storage system |
US10001922B2 (en) | 2016-02-19 | 2018-06-19 | International Business Machines Corporation | High performance optical storage system for protection against concurrent data loss |
US10567009B2 (en) | 2016-12-06 | 2020-02-18 | Nutanix, Inc. | Dynamic erasure coding |
US10929226B1 (en) * | 2017-11-21 | 2021-02-23 | Pure Storage, Inc. | Providing for increased flexibility for large scale parity |
US11016850B2 (en) * | 2018-03-20 | 2021-05-25 | Veritas Technologies Llc | Systems and methods for detecting bit rot in distributed storage devices having failure domains |
US11789611B2 (en) | 2020-04-24 | 2023-10-17 | Netapp, Inc. | Methods for handling input-output operations in zoned storage systems and devices thereof |
US11340987B1 (en) * | 2021-03-04 | 2022-05-24 | Netapp, Inc. | Methods and systems for raid protection in zoned solid-state drives |
US11797377B2 (en) | 2021-10-05 | 2023-10-24 | Netapp, Inc. | Efficient parity determination in zoned solid-state drives of a storage system |
US11803329B2 (en) | 2021-11-22 | 2023-10-31 | Netapp, Inc. | Methods and systems for processing write requests in a storage system |
US11816359B2 (en) | 2021-12-16 | 2023-11-14 | Netapp, Inc. | Scalable solid-state storage system and methods thereof |
US11940911B2 (en) | 2021-12-17 | 2024-03-26 | Netapp, Inc. | Persistent key-value store and journaling system |
US20230385167A1 (en) * | 2022-05-31 | 2023-11-30 | Dell Products L.P. | Balanced data mirroring distribution for parallel access |
CN115576500B (zh) * | 2022-12-06 | 2023-02-28 | 苏州浪潮智能科技有限公司 | 一种raid阵列的扩容方法及相关装置 |
Family Cites Families (68)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3876978A (en) | 1973-06-04 | 1975-04-08 | Ibm | Archival data protection |
US4092732A (en) | 1977-05-31 | 1978-05-30 | International Business Machines Corporation | System for recovering data stored in failed memory unit |
US4205324A (en) | 1977-12-23 | 1980-05-27 | International Business Machines Corporation | Methods and means for simultaneously correcting several channels in error in a parallel multi channel data system using continuously modifiable syndromes and selective generation of internal channel pointers |
US4201976A (en) | 1977-12-23 | 1980-05-06 | International Business Machines Corporation | Plural channel error correcting methods and means using adaptive reallocation of redundant channels among groups of channels |
JPS5637883A (en) | 1979-09-04 | 1981-04-11 | Fanuc Ltd | Information rewrite system |
US4467421A (en) | 1979-10-18 | 1984-08-21 | Storage Technology Corporation | Virtual storage system and method |
DE3040004A1 (de) | 1979-10-24 | 1981-05-07 | Matsushita Electric Industrial Co., Ltd., Kadoma, Osaka | Verfahren und vorrichtung zum codieren von pruefworten geringer redundanz aus ursprungsdaten |
US4825403A (en) | 1983-05-16 | 1989-04-25 | Data General Corporation | Apparatus guaranteeing that a controller in a disk drive system receives at least some data from an invalid track sector |
JPS60142418A (ja) | 1983-12-28 | 1985-07-27 | Hitachi Ltd | 入出力エラ−回復方式 |
FR2561428B1 (fr) | 1984-03-16 | 1986-09-12 | Bull Sa | Procede d'enregistrement dans une memoire a disques et systeme de memoire a disques |
US4667326A (en) | 1984-12-20 | 1987-05-19 | Advanced Micro Devices, Inc. | Method and apparatus for error detection and correction in systems comprising floppy and/or hard disk drives |
US5202979A (en) | 1985-05-08 | 1993-04-13 | Thinking Machines Corporation | Storage system using multiple independently mechanically-driven storage units |
US4722085A (en) | 1986-02-03 | 1988-01-26 | Unisys Corp. | High capacity disk storage system having unusually high fault tolerance level and bandpass |
JPH0675329B2 (ja) | 1986-02-18 | 1994-09-21 | ソニー株式会社 | ディスクプレーヤ |
US4761785B1 (en) | 1986-06-12 | 1996-03-12 | Ibm | Parity spreading to enhance storage access |
US4775978A (en) | 1987-01-12 | 1988-10-04 | Magnetic Peripherals Inc. | Data error correction system |
USRE34100E (en) | 1987-01-12 | 1992-10-13 | Seagate Technology, Inc. | Data error correction system |
US4796260A (en) | 1987-03-30 | 1989-01-03 | Scs Telecom, Inc. | Schilling-Manela forward error correction and detection code method and apparatus |
US5257367A (en) | 1987-06-02 | 1993-10-26 | Cab-Tek, Inc. | Data storage system with asynchronous host operating system communication link |
US4849976A (en) | 1987-08-03 | 1989-07-18 | Scs Telecom, Inc. | PASM and TASM forward error correction and detection code method and apparatus |
US4849974A (en) | 1987-08-03 | 1989-07-18 | Scs Telecom, Inc. | PASM and TASM forward error correction and detection code method and apparatus |
US4837680A (en) | 1987-08-28 | 1989-06-06 | International Business Machines Corporation | Controlling asynchronously operating peripherals |
US4870643A (en) | 1987-11-06 | 1989-09-26 | Micropolis Corporation | Parallel drive array storage system |
US4847842A (en) | 1987-11-19 | 1989-07-11 | Scs Telecom, Inc. | SM codec method and apparatus |
US4899342A (en) | 1988-02-01 | 1990-02-06 | Thinking Machines Corporation | Method and apparatus for operating multi-unit array of memories |
US4989205A (en) | 1988-06-28 | 1991-01-29 | Storage Technology Corporation | Disk drive memory |
US4989206A (en) | 1988-06-28 | 1991-01-29 | Storage Technology Corporation | Disk drive memory |
US5077736A (en) | 1988-06-28 | 1991-12-31 | Storage Technology Corporation | Disk drive memory |
US5128810A (en) | 1988-08-02 | 1992-07-07 | Cray Research, Inc. | Single disk emulation interface for an array of synchronous spindle disk drives |
US5218689A (en) | 1988-08-16 | 1993-06-08 | Cray Research, Inc. | Single disk emulation interface for an array of asynchronously operating disk drives |
US5148432A (en) | 1988-11-14 | 1992-09-15 | Array Technology Corporation | Arrayed disk drive system and method |
AU651321B2 (en) | 1989-09-08 | 1994-07-21 | Network Appliance, Inc. | Multiple facility operating system architecture |
US5163131A (en) | 1989-09-08 | 1992-11-10 | Auspex Systems, Inc. | Parallel i/o network file server architecture |
US5101492A (en) | 1989-11-03 | 1992-03-31 | Compaq Computer Corporation | Data redundancy and recovery protection |
US5233618A (en) | 1990-03-02 | 1993-08-03 | Micro Technology, Inc. | Data correcting applicable to redundant arrays of independent disks |
US5088081A (en) | 1990-03-28 | 1992-02-11 | Prime Computer, Inc. | Method and apparatus for improved disk access |
US5210860A (en) | 1990-07-20 | 1993-05-11 | Compaq Computer Corporation | Intelligent disk array controller |
US5166936A (en) | 1990-07-20 | 1992-11-24 | Compaq Computer Corporation | Automatic hard disk bad sector remapping |
US5208813A (en) | 1990-10-23 | 1993-05-04 | Array Technology Corporation | On-line reconstruction of a failed redundant array system |
US5235601A (en) | 1990-12-21 | 1993-08-10 | Array Technology Corporation | On-line restoration of redundancy information in a redundant array system |
US5274799A (en) | 1991-01-04 | 1993-12-28 | Array Technology Corporation | Storage device array architecture with copyback cache |
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 |
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 |
US5179704A (en) | 1991-03-13 | 1993-01-12 | Ncr Corporation | Method and apparatus for generating disk array interrupt signals |
US5258984A (en) * | 1991-06-13 | 1993-11-02 | International Business Machines Corporation | Method and means for distributed sparing in DASD arrays |
EP0519669A3 (en) | 1991-06-21 | 1994-07-06 | Ibm | Encoding and rebuilding data for a dasd array |
US5237658A (en) | 1991-10-01 | 1993-08-17 | Tandem Computers Incorporated | Linear and orthogonal expansion of array storage in multiprocessor computing systems |
US5305326A (en) | 1992-03-06 | 1994-04-19 | Data General Corporation | High availability disk arrays |
US5410667A (en) | 1992-04-17 | 1995-04-25 | Storage Technology Corporation | Data record copy system for a disk drive array data storage subsystem |
US5513192A (en) * | 1992-08-28 | 1996-04-30 | Sun Microsystems, Inc. | Fault tolerant disk drive system with error detection and correction |
US5537567A (en) * | 1994-03-14 | 1996-07-16 | International Business Machines Corporation | Parity block configuration in an array of storage devices |
EP1376329A2 (en) * | 1994-06-22 | 2004-01-02 | Hewlett-Packard Company, A Delaware Corporation | Method of utilizing storage disks of differing capacity in a single storage volume in a hierarchic disk array |
US5623595A (en) | 1994-09-26 | 1997-04-22 | Oracle Corporation | Method and apparatus for transparent, real time reconstruction of corrupted data in a redundant array data storage system |
US6079042A (en) * | 1995-04-27 | 2000-06-20 | The Trustees Of The Stevens Institute Of Technology | High integrity transport for time critical multimedia networking applications |
US5812753A (en) | 1995-10-13 | 1998-09-22 | Eccs, Inc. | Method for initializing or reconstructing data consistency within an array of storage elements |
US5862158A (en) | 1995-11-08 | 1999-01-19 | International Business Machines Corporation | Efficient method for providing fault tolerance against double device failures in multiple device systems |
US5832198A (en) * | 1996-03-07 | 1998-11-03 | Philips Electronics North America Corporation | Multiple disk drive array with plural parity groups |
US5884098A (en) | 1996-04-18 | 1999-03-16 | Emc Corporation | RAID controller system utilizing front end and back end caching systems including communication path connecting two caching systems and synchronizing allocation of blocks in caching systems |
US5805788A (en) | 1996-05-20 | 1998-09-08 | Cray Research, Inc. | Raid-5 parity generation and data reconstruction |
KR100267366B1 (en) * | 1997-07-15 | 2000-10-16 | Samsung Electronics Co Ltd | Method for recoding parity and restoring data of failed disks in an external storage subsystem and apparatus therefor |
US6092215A (en) | 1997-09-29 | 2000-07-18 | International Business Machines Corporation | System and method for reconstructing data in a storage array system |
JP3616487B2 (ja) | 1997-11-21 | 2005-02-02 | アルプス電気株式会社 | ディスクアレイ装置 |
US5941972A (en) | 1997-12-31 | 1999-08-24 | Crossroads Systems, Inc. | Storage router and method for providing virtual local storage |
US6138125A (en) | 1998-03-31 | 2000-10-24 | Lsi Logic Corporation | Block coding method and system for failure recovery in disk arrays |
US6138201A (en) | 1998-04-15 | 2000-10-24 | Sony Corporation | Redundant array of inexpensive tape drives using data compression and data allocation ratios |
US6247157B1 (en) | 1998-05-13 | 2001-06-12 | Intel Corporation | Method of encoding data signals for storage |
US6532548B1 (en) | 1999-09-21 | 2003-03-11 | Storage Technology Corporation | System and method for handling temporary errors on a redundant array of independent tapes (RAIT) |
US6581185B1 (en) | 2000-01-24 | 2003-06-17 | Storage Technology Corporation | Apparatus and method for reconstructing data using cross-parity stripes on storage media |
-
2002
- 2002-03-08 US US10/094,086 patent/US7080278B1/en not_active Expired - Lifetime
-
2003
- 2003-01-03 EP EP03250049.8A patent/EP1343087B1/en not_active Expired - Lifetime
- 2003-03-10 JP JP2003062749A patent/JP4703945B2/ja not_active Expired - Fee Related
-
2006
- 2006-06-02 US US11/446,495 patent/US7509525B2/en not_active Expired - Fee Related
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005332123A (ja) * | 2004-05-19 | 2005-12-02 | Fujitsu Ltd | ディスクアレイ装置およびディスクアレイ装置におけるグループ分割方法 |
US7809979B2 (en) | 2005-03-15 | 2010-10-05 | Fujitsu Limited | Storage control apparatus and method |
JP2008217395A (ja) * | 2007-03-05 | 2008-09-18 | Nec Corp | ディスクアレイ装置 |
JP2011192206A (ja) * | 2010-03-16 | 2011-09-29 | Toshiba Corp | 半導体メモリ映像蓄積再生装置及びデータ書込み/読出し方法 |
US8495468B2 (en) | 2010-03-16 | 2013-07-23 | Kabushiki Kaisha Toshiba | Data storage apparatus and data writing/reading method |
US9268638B2 (en) | 2012-06-06 | 2016-02-23 | Silicon Motion Inc. | Flash memory control method, controller and electronic apparatus |
US9417958B2 (en) | 2012-06-06 | 2016-08-16 | Silicon Motion Inc. | Flash memory control method, controller and electronic apparatus |
KR20140135605A (ko) * | 2013-05-16 | 2014-11-26 | 실리콘 모션 인코포레이티드 | 플래시 메모리 제어 방법, 제어기 및 전자 장치 |
KR101659888B1 (ko) | 2013-05-16 | 2016-09-26 | 실리콘 모션 인코포레이티드 | 플래시 메모리 제어 방법, 제어기 및 전자 장치 |
JP2015082150A (ja) * | 2013-10-21 | 2015-04-27 | 富士通株式会社 | ストレージシステム、及びストレージプログラム |
Also Published As
Publication number | Publication date |
---|---|
US7509525B2 (en) | 2009-03-24 |
JP4703945B2 (ja) | 2011-06-15 |
EP1343087A3 (en) | 2010-04-21 |
EP1343087B1 (en) | 2013-04-10 |
US7080278B1 (en) | 2006-07-18 |
EP1343087A2 (en) | 2003-09-10 |
US20060224917A1 (en) | 2006-10-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4703945B2 (ja) | ストレージアレイにおける複数の記憶装置故障を訂正する方法 | |
US7437652B2 (en) | Correcting multiple block data loss in a storage array using a combination of a single diagonal parity group and multiple row parity groups | |
JP4823468B2 (ja) | ストレージアレイにおける2重故障からの効率的な復旧を可能にする行−対角パリティ技術 | |
US7970996B1 (en) | 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 | |
JP5102776B2 (ja) | ストレージアレイにおける三重故障からの効率的な復旧を可能にする三重パリティ技術 | |
US7979779B1 (en) | System and method for symmetric triple parity for failing storage devices | |
US8402346B2 (en) | N-way parity technique for enabling recovery from up to N storage device failures | |
US6871317B1 (en) | Technique for efficiently organizing and distributing parity blocks among storage devices of a storage array | |
US7346831B1 (en) | Parity assignment technique for parity declustering in a parity array of a storage system | |
US7398460B1 (en) | Technique for efficiently organizing and distributing parity blocks among storage devices of a storage array |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060302 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060302 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070807 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20071107 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20071116 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080207 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20080318 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080616 |
|
A911 | Transfer of reconsideration by examiner before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20080917 |
|
A912 | Removal of reconsideration by examiner before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A912 Effective date: 20090206 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20100818 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20100823 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20110119 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20110309 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |