JP2008117395A - フォールトトレラントデータストレージシステムにおけるブロックレベルのデータ破損の検出および訂正 - Google Patents
フォールトトレラントデータストレージシステムにおけるブロックレベルのデータ破損の検出および訂正 Download PDFInfo
- Publication number
- JP2008117395A JP2008117395A JP2007279763A JP2007279763A JP2008117395A JP 2008117395 A JP2008117395 A JP 2008117395A JP 2007279763 A JP2007279763 A JP 2007279763A JP 2007279763 A JP2007279763 A JP 2007279763A JP 2008117395 A JP2008117395 A JP 2008117395A
- Authority
- JP
- Japan
- Prior art keywords
- block
- data
- data storage
- stripe
- parity
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/10—Indexing scheme relating to G06F11/10
- G06F2211/1002—Indexing scheme relating to G06F11/1076
- G06F2211/1057—Parity-multiple bits-RAID6, i.e. RAID 6 implementations
Abstract
【解決手段】本願にかかるデータストレージシステムは、複数のデータストレージデバイスと、データストレージデバイスによって提供された論理ブロックデバイスインターフェースを仮想論理デバイスインターフェースにマッピングし、データ冗長方式を使用して、データストレージシステム内の記憶されているそれぞれのデータオブジェクトのそれぞれのストライプ内に十分な冗長データを2個以上のパリティブロックとして記憶し、データ冗長ディスク群の少なくとも2つの故障しているデータストレージデバイスに含まれるデータを回復し、データ冗長方式を使用して、ブロックレベルのデータ破損について、記憶されているデータオブジェクトを監視するデータストレージシステムコントローラとを備える。
【選択図】図5
Description
情報理論が1940年代に発展し、これによって、エラー検出およびエラー訂正のための数学的技法が発展し、送信情報または記憶情報の一定の部類のエラーを検出して訂正することを可能にする、送信情報または記憶情報内に追加情報を挿入するための方法が提供された。
加えて、集積回路、マスストレージデバイス、並びに基本コンピュータサイエンスおよびエレクトロニクスの進歩によって、独立ディスク冗長アレイ(「RAID」)を含む冗長ベースフォールトトレラントマスストレージシステムが開発された。
RAIDシステムでは、データは冗長に記憶される。
多くのRAIDシステムでは、冗長な情報は、エラー訂正符号方法によって生成される。
RAIDシステムのタイプに依存した1個または2個以上のディスクが故障しているとき、その1個または2個以上の故障したディスクの内容は、RAIDシステム内に記憶されている冗長データから再生成することができる。
それらの多くのレイヤのオーバーラップするエラー検出方法およびエラー訂正方法は、高度にロバストで且つフォールトトレラントなデータストレージシステムの作成に役立つが、冗長ベースデータストレージシステム内のそれらの多くのレイヤのエラー検出およびエラー訂正は、計算コストおよびデータストレージ容量コストにも関連する。
これらの理由から、冗長ベースフォールトトレラントデータストレージシステムの設計者、製造者、および最終的にはユーザは、最小限の計算オーバーヘッドおよび最小限に低減されたデータストレージ容量でデータストレージシステムの高レベルのフォールトトレランスを達成するためのより効率的且つ経済的な技法を模索し続けている。
本発明の実施の形態は、ディスクレベルおよびストライプレベルのデータ冗長性を使用して、記憶されているデータオブジェクトのエラー検出およびエラー訂正を提供し、現在利用可能なフォールトトレラント冗長性ベースのデータストレージシステムで一般に使用されている、多大なコストを要する一定の中間レベルのエラー検出およびエラー訂正の必要性をなくしている。
以下の第1小節では、一定のタイプのエラー検出およびエラー訂正の数学的基礎を解説する。
次の第2小節では、本発明の実施形態を解説する。
本発明の実施形態は、エラー制御符号化における既知の技法から導出された概念を使用する。
この分野のすぐれた参考文献は、LinおよびCostello著「Error Control Coding: The Fundamentals and Applications」(Prentice-Hall, Incorporated, New Jersey, 1983)というテキストである。
この小節では、エラー制御符号化で使用されるエラー検出技法およびエラー訂正技法の簡単な説明が記載されている。
さらに詳細な内容は、上記参考テキストから得ることもできるし、この分野の他の多くのテキスト、論文、および専門誌の記事から得ることもできる。
本小節は、一定のタイプのエラー制御符号化技法のかなり数学的に正確ではあるが簡潔な説明を表す。
エラー制御符号化技法は、記憶または送信で生じるエラーの検出および場合によっては訂正を可能にする符号化メッセージの情報を提供するために、補助ビットまたは補助シンボルをプレーンテキストメッセージ内に体系的に導入するか、または絶対に必要とされるものよりも多くの個数のビットまたはシンボルを使用してプレーンテキストメッセージを符号化する。
補助ビット若しくは補助シンボルまたは絶対に必要とされるものよりも多くのビット若しくはシンボルの1つの効果は、コードワードをベクトル空間のベクトルと見て、コードワード間の距離がコードワードのベクトル減算から導出されたメトリックであるとしたときに、有効なコードワード間の距離を増加させることである。
ここで、メッセージμは、体(field)Fの要素であるシンボルμiの順序列を含む。メッセージμは、
μ=(μ0,μ1,…,μk−1)
ここで、μi∈F
として表すことができる。
体Fは、乗算および加算の下で閉じた集合であり、乗法の逆元および加法の逆元を含む集合である。
計算によるエラー検出およびエラー訂正では、あるる素数と等しいサイズを有する整数の部分集合を含む体を使用し、加算演算子はモジュロ加算(modulo addition)として定義され、乗算演算子はモジュロ乗算(modulo multiplication)として定義されることが一般的である。
実際には、2元体が一般に使用される。
一般に、元のメッセージは、体Fの要素の順序列も含むメッセージcに符号化され、以下のように表される。
c=(c0,c1,…,cn−1)
ここで、ci∈F。
この解説では、ブロックは、一定のk個のシンボルを含むメッセージμと見ることができる。
メッセージμは、n個のシンボルの順序列を含むメッセージcに符号化される。
符号化メッセージcは、一般に、元のメッセージμよりも多くの個数のシンボルを含み、したがって、nはkよりも大きい。
rがn−kに等しいとして、符号化メッセージ内のr個の余剰シンボルは、冗長なチェック情報を運ぶのに使用される。
この冗長なチェック情報は、送信中、記憶中、および取り出し中に発生したエラーを極度に高い検出確率で検出することを可能にし、多くの場合は訂正も可能にするものである。
コードワードのハミング重みは、コードワードにおける非ゼロの要素の個数であり、2つのコードワード間のハミング距離は、2つのコードワードが異なる要素の個数である。
たとえば、2元体からの要素を仮定して、以下の2つのコードワードaおよびbを考える。
線形ブロック符号は、多くの場合、3要素タプル[n,k,d]によって設計される。
ここで、nはコードワードの長さであり、kはメッセージ長、すなわちコードワードの個数の2を底とする対数であり、dは、異なるコードワード間の最小ハミング距離であり、符号における最小ハミング重みの非ゼロのコードワードに等しい。
μ→c(s)→c(r)→μ
ここで、c(s)は送信前の符号化メッセージであり、c(r)は初期取り出しメッセージまたは初期受信メッセージである。
したがって、初期メッセージμは符号化されて、符号化メッセージc(s)が生成される。
この符号化メッセージc(s)は、次に、送信され、記憶され、または送信および記憶され、続いてその後、初期受信メッセージc(r)として取り出されるかまたは受信される。
初期受信メッセージc(r)は、破損していないとき、次に復号されて、元のメッセージμが生成される。
上述したように、エラーが発生していないとき、元の符号化メッセージc(s)は、初期受信メッセージc(r)と等しく、初期受信メッセージc(r)は、エラー訂正なしで、元のメッセージμに直接復号される。
μ(s)→c(s)→c(r)→μ(r)
したがって、上述したように、元のメッセージμ(s)を符号化するのに使用され、且つ、初期受信メッセージc(r)を復号または再構成して最終受信メッセージμ(r)を生成するのに使用されるエラー検出技法およびエラー訂正技法の忠実度に応じて、最終メッセージμ(r)は、初期メッセージμ(s)に等しい場合もあるし等しくない場合もある。
エラー検出は、
c(r)≠c(s)
であると判断するプロセスである一方、エラー訂正は、破損している初期受信メッセージから初期符号化メッセージを再構成するプロセス
c(r)→c(s)
である。
あるいは、メッセージμは、Fの要素から成る記号体系からのシンボルの順序集合を含むワードであると考えることができ、符号化メッセージcも、Fの要素の記号体系からのシンボルの順序集合を含むコードワードであると考えることができる。
ワードμは、Fの要素から選択されたk個のシンボルのあらゆる順序付けられた組み合わせとすることができる一方、コードワードcは、符号化プロセス
{c:μ→c}
を介してFの要素から選択されたn個のシンボルの順序列として定義される。
したがって、生成行列Gは、k×k単位行列Ik,kで拡大された行列Pの形にすることができる。
ジェネレータによってこの形で生成された符号は、「組織符号」呼ばれる。
この生成行列がワードμに適用されたとき、その結果生成されるコードワードcは、
c=(c0,c1,…,cr−1,μ0,μ1,…,μk−1)
の形を有する。
ここで、ci=μ0p0,i+μ1p1,i+…+μk−1pk−1,iである。
この解説では、チェックシンボルがメッセージシンボルの前に来る慣行が使用されていることに留意されたい。
チェックシンボルがメッセージシンボルの後に続く代替的な慣行を使用することもでき、この場合、生成行列内のパリティチェック部分行列および単位部分行列は、この代替的な規則に従ったコードワードを生成するように挿入される。
したがって、組織線形ブロック符号では、コードワードは、r個のパリティチェックシンボルciおよびその後に続く元のワードμを含むシンボルを含む。
エラーが発生しないとき、元のワード、すなわちメッセージμは、対応するコードワード内にクリアテキストの形で現れ、対応するコードワードから容易に抽出される。
パリティチェックシンボルは、元のメッセージ、すなわちワードμのシンボルの線形結合であることが分かる。
このパリティチェック行列は、体系的なエラー検出およびエラー訂正に使用することができる。
エラー検出およびエラー訂正は、以下のように、初期受信メッセージc(r)または初期取り出しメッセージc(r)からシンドロームSを計算することを伴う。
2元体が使用されるとき、x=−xであり、その結果、上記のHTに示すマイナス符号は一般に示されないことに留意されたい。
シンドロームSは、メッセージシンボルのどれが破損しているかを判断するのに使用できるエラーロケーション多項式を計算するのに使用することができ、一定の場合に、破損しているシンボルの破損していない値を計算するのに使用することができる。
3以上の任意の正の整数mについて、以下のようなコードワード長n、メッセージ長k、パリティチェックシンボル数r、および最小ハミング距離dminを有するハミング符号が存在する。
n=2m−1
k=2m−m−1
r=n−k=m
dmin=3
ハミング符号のパリティチェック行列Hは、
ここで、Imは、m×m単位行列であり、部分行列Qは、それぞれが2つ以上の非ゼロの要素を有するmタプルである全部で2m−m−1個の異なる列を含む。
たとえば、m=3の場合、[7,4,3]の線形ブロックハミング符号のパリティチェック行列は、
ハミング符号の生成行列は、
ここで、QTは、部分行列Qの転置行列であり、
パリティチェック行列Hからl個の列を体系的に削除することによって、
n=2m−l−1
k=2m−m−l−1
r=n−k=m
dmin≧3
を有する短縮されたハミング符号のパリティチェック行列H'を一般に得ることができる。
これらの代替的な符号の多くは、生成行列を使用した容易な生成および符号化された値をコードワードから直接読み出すことを可能にする線形ブロック符号のトランスペアレントなパススルー特徴を含む線形ブロック符号の便利な特性を有しない。
線形ブロック符号の場合、プレーンテキストメッセージは、パリティチェックシンボルまたはパリティチェックビットをさらに含むコードワードに直接移行する。
他のタイプの符号では、プレーンテキストメッセージは、対応するコードワードにおいて直接読み出すことはできない。
いずれにしても、コードワードは、符号化されるすべての有効なメッセージを列挙するのに絶対必要とされるよりも多くの個数のシンボルまたはビットを含む。
線形ブロック符号の場合、追加されたシンボルまたはビットは、プレーンテキストのシンボルまたはビットを補助するパリティチェックシンボルまたはパリティチェックビットである一方、他のタイプの符号では、有効なメッセージは、コードワードサイズに等しい次元のベクトル空間全体にわたって分散される。
データベースシステムおよび企業の重要なデータを含む重要なデータストレージアプリケーションの場合、2つ以上の大規模マスストレージシステムが、多くの場合、データの地理的に分散した複数のインスタンスを記憶して維持するように使用され、壊滅的な事象によってもデータ喪失が回復不能とならないように、より高レベルの冗長性が提供される。
第2の冗長性の部類は、「消去符号化(erasure coding)」冗長性と呼ばれるものである。
消去符号化冗長性は、ミラー冗長性よりも幾分複雑である。
消去符号化冗長性は、多くの場合、雑音を伴うチャネルを通じて転送される通信メッセージおよび他のデジタルデータのエラー制御符号化に使用されるリードソロモン符号化技法を使用する。
これらのエラー制御符号化技法は、線形ブロック符号の具体的な例である。
リードソロモン符号は、qを素数の累乗とすると、ガロア体GF(q)からのシンボルを有する非2値符号であり、ブロック長n=q−1、n−k=2t個のパリティチェック数字を有し、2t+1のコードワード間の最小距離を有する。
このリードソロモン符号では、ブロックにおける2t個の破損エラーが検出可能であり、t個の破損エラーが訂正可能であり、2t個の消去が訂正可能である。
一般に、データ冗長性の適用では、関心のあるエラーは、既知のロケーションを有する消去、すなわち、換言すれば、既知のディスク故障である。
各ブロックは、n+m個のディスクの一群の異なるディスクに記憶される。
このn+m個のディスクの一群は、以下「RAIDグループ」と呼ぶ。
n個のデータ収容ブロックの一群は、n個のディスクにわたって分散され、n個のデータブロックを有するデータバイト群から計算されたパリティバイトを含むm個のパリティブロックは、m個のディスクにわたって分散される。
このような消去符号化冗長方式は、n+m消去符号化冗長方式と呼ばれる。
8+2方式、3+3方式、3+1方式、および他の方式を含めて、多くの消去符号化冗長方式が可能である。
一般に、mはn以下である。
m個のディスクまたはn+m個未満のディスクが故障している場合、故障しているディスクがデータを含むのかそれともパリティ値を含むのかにかかわらず、データオブジェクト全体を復元することができる。
RAID6システムは、2個のパリティブロックを使用して、8+2消去符号化冗長方式を表す10ディスクRAIDグループにおける2個のディスク等、RAIDグループの2個の故障しているディスクを回復することを可能にする。
したがって、mビットのパリティビットは、nビットのデータビットから計算される。
ここで、n=8、16、若しくは32、またはそれよりも大きな2の累乗である。
たとえば、8+2消去符号化冗長方式では、2ビットのパリティチェックビットが、データの各バイトについて生成される。
したがって、8+2消去符号化冗長方式では、データの8つのデータユニットが、チェックサムまたはパリティビットの2つのデータユニットを生成する。
これらのすべては、10データユニットストライプに含めることができる。
以下の解説では、「ワード」という用語は、符号化が行われるデータユニットの粒度を指し、ビットからロングワードまたはそれよりも大きな長さのデータユニットまで変化し得る。
データストレージアプリケーションでは、データユニットの粒度は、通常、512バイトまたはそれよりも大きなものとすることができる。
この関数は、以下のように、データワードdjに係数fi,jを乗算したもののそれぞれの線形結合である。
リードソロモン技法では、関数Fは、要素fi,jがji―1に等しいm×nバンデルモンド行列となるように選ばれる。
すなわち、
c'i=ci+fi,j(d'j−dj)
または
したがって、新しいチェックサムワードは、前のチェックサムワードおよび行列Fの単一の列から容易に計算される。
行列Aおよび列ベクトルEは、以下のように構築される。
修正行列A'およびE'を生成するために、行列Aの任意のm個の行およびベクトルEの対応する行を取り除くことができる。
ここで、A'は正方行列である。次に、元のデータワードを表すベクトルDを以下のように逆行列によって回復することができる。
一般に、チェックサムビットは長さwのワードについて計算される。
ガロア体として知られている数学体は、2w個の要素を有するように構築することができる。
ガロア体の要素の算術演算は、好都合なことに、
ここで、ガロア体の要素の対数および真数のテーブルは、次数wの原始多項式を伴う伝達方法を使用して計算することができる。
たとえば、3ディスクのトリプルミラー冗長方式の1個のディスクが故障している場合、残りの2個のディスクは、ダブルミラーリング冗長方式の下で2ディスクミラーペアとして再構成することができる。
あるいは、故障しているディスクに取って代わる新しいディスクを選択することができ、存続しているディスクの一方から新しいディスクへデータをコピーして、3ディスクのトリプルミラー冗長方式を復元することもできる。
これとは対照的に、消去符号化冗長方式の再構成は、それほど簡単ではない。
たとえば、ストライプ内の各チェックサムワードは、そのストライプのすべてのデータワードに依存する。
4+2消去符号化冗長方式を8+2消去符号化冗長方式に変換することが望まれている場合、チェックサムビットのすべてが再計算される場合があり、データは、4+2方式の6個のディスクの関連する内容を新たなロケーションにコピーするのではなく、新しい8+2方式に使用される10個のディスクにわたって再分散される場合がある。
その上、同じ消去符号化方式のストライプサイズの変更であっても、チェックサムデータユニットのすべてを再計算すること、および、データを新しいディスクロケーションにわたって再分散することを伴う場合がある。
ほとんどの場合、消去符号化方式に対する変更は、古い構成から取り出されたデータに基づいて新しい構成を完全に構築することを伴い、ミラーリング冗長方式の場合に、複数のディスクのうちの1個を削除するかまたは元のディスクから新しいディスクへデータをコピーすることでディスクを追加するということではない。
ミラーリングは、一般に、消去符号化よりも空間効率が悪いが、時間効率および処理サイクルの使用効率は良い。
図1は、最新式のディスクストレージデバイスを示している。
最新式のディスクストレージデバイスは、一般に、並列磁気ディスクプラッタのスタック102を含む。
各プラッタは、別個の電気機械式READ/WRITE(読み出し/書き込み)ヘッドによってアクセスされる。
磁気ディスクプラッタ104等の各磁気ディスクプラッタは、磁気ディスクプラッタ104の外縁にあるラック106等の同心トラックに2値データを記憶する。
さらに、各トラックはセクタに分割され、各セクタは、記憶されるバイトが固定サイズを有するトラックの放射状セグメントであり、隣接するセクタとはギャップによって分離されている。
図1では、磁気ディスクプラッタ104の最も外側のトラック106は、12個のセクタ108〜119に分割されて示され、各セクタは、図1では陰影を付けて示されている。
各セクタは、さらに、連続する一組の1個または2個以上のブロックとして編成される。
図1では、セクタ114は、2個のブロック120を共に構成する線形バイト列を収容するものとして示されている。
各ブロックは、そのセクタの第2のブロック124の512データバイト122等のデータバイトと、その後に続く小さな一組の連続するエラー制御/訂正バイト(「ECCバイト」)126との順序列を含む。
図1の例およびその後の例では、512データバイトを有するディスクブロックが示されているが、ディスクブロックは、1024データバイトおよび4096データバイトを含むさまざまな固定サイズを有することができ、一定の最新式ディスクドライブでは、構成可能とすることができる。
機械式READ/WRITEヘッドは、ディスクデバイス内に位置合わせされているので、磁気ディスクプラッタの個数と等しい個数のトラックが、ディスクデバイスにより同時にアクセス可能である。
たとえば、図1に示すように、5つのトラック130〜134が、5つの磁気ディスクプラッタ102に関連する5つのREAD/WRITEヘッドによって同時にアクセス可能である。
これらの5つのトラックは、「シリンダ」と呼ばれる。
以下の解説では、このインターフェースを「論理ブロックディスクインターフェース」と呼ぶ。
一般に、ディスクコントローラは、ディスクデバイス内のECCバイト並びに関連するエラー検出およびエラー訂正を内部で管理する。
ディスクコントローラは、破損しているデータブロックを検出し、使用されるECC符号を通じて訂正可能なそれらの破損を訂正し、障害のあるブロックをスペアブロックに自動的に再マッピングする。
ECCバイトおよびブロック再マッピングは、一般に、リモートデバイスにトランスペアレントであり、報告されているブロックサイズには含まれない。
512バイトのブロックは、512個のデータブロックおよびいくつかの追加された個数のバイトを含む。
ホストコンピュータまたはRAIDコントローラ等のリモートデバイスは、追加されたECCバイトおよび不良ブロックの再マッピングに気付くことなく、512バイトのディスクブロックの論理列にアクセスする。
一定の最新式ディスクデバイスでは、ディスクコントローラは、ECCバイトおよび他のこのような詳細の全部または一部をより高位のデバイスに公表する場合がある。
他のディスクデバイス、特に、あまり高価でないディスクデバイスは、これらの詳細をより高位のアクセスエンティティに明らかにしない。
単純なパリティバイト、水平冗長検査、巡回冗長検査、および他のこのような方式からさまざまなタイプのECCを使用することができる。
現在のディスクデバイスでは、CRCが追加されたリードソロモン符号が、多くの場合、ECCとして使用されている。
ディスクアレイは、アクセスするホストコンピュータへの仮想論理デバイスインターフェースに、論理ブロックインターフェースを提供する任意のサイズの論理デバイスを提供する。
図2は、通常のディスクアレイを示している。
ディスクアレイ202は、中央プレーン206を通じて複数のディスクアレイコントローラボード208および210に相互接続されたディスク204等の多数の個別のディスクデバイスを含む。
各ディスクアレイコントローラボード208および210は、ディスクアレイコントローラプログラムを実行するためのマイクロプロセッサおよびメモリを含む。
ディスクアレイは、一般に、冗長電源、冗長冷却システム、冗長通信ポート、および他のこのようなコンポーネントも含む。
ディスクアレイは、したがって、複数のディスクのアレイを高度に抽象化したものをホストコンピュータおよび他のアクセスエンティティに提供する。
これらのディスクは、図1について上述したようにECCバイトを含むが、それらのディスクが有する信頼性のレベルは、多くのフォールトトレラントディスクアレイアプリケーションに必要されるものよりも低い場合がある。
この理由から、ディスクアレイコントローラは、多くの場合、ディスクに記憶されている各データブロックについて、追加の一組のエラー検出符号(「EDC」)バイトを挿入する。
図3は、ディスクアレイ内に含まれるディスクデバイスによってディスクインターフェースに設けられた論理ブロックにディスクアレイコントローラによりマッピングされた線形データ空間内における、ディスクアレイコントローラが管理するエラー検出符号(「EDC」)バイトを示している。
図3に示すように、ディスクアレイコントローラは、ディスクによって論理ブロックディスクインターフェースに設けられた線形論理ディスクブロックアドレス空間から仮想線形アドレス空間302を作成する。
図3に示すように、ディスクアレイコントローラは、追加のEDCバイト304等の追加のEDCバイトを、論理ブロック306等の各論理ブロックに追加して、本例では、512データバイトおよびディスクアレイコントローラが管理する8バイトのEDCバイトを含む520バイトの仮想ブロックを生成する。
ディスクアレイコントローラは、これらの520バイトブロックを、ディスクデバイスによって提供される512バイト論理ブロックにマッピングする。
このように、ホストコンピュータは、ディスクアレイコントローラによって内部で520バイト仮想ブロックにマッピングされる仮想論理デバイスインターフェースを通じて、512バイトデータブロックにアクセスする。
ディスクアレイコントローラは、次に、520バイト仮想ブロックを、ディスクデバイスによって論理ブロックディスクインターフェースに設けられた512バイト論理ブロックにマッピングする。
図1について上述したように、ディスクは、次に、512バイト論理ブロックを、ディスクアレイコントローラが管理するECCバイトを含むより大きな物理ブロックにマッピングする。
このように、ディスクコントローラは、ブロック単位でECCバイトを独立に作成して管理し、ディスクアレイコントローラは、ホストコンピュータおよび他のアクセスエンティティへの仮想論理デバイスインターフェースを通じて提供された512データバイトブロックの追加のEDCバイトを別個に作成して管理する。
RAIDコントローラは、多くの場合、さまざまなRAID方式のいずれかに従って消去符号化データ冗長性を組み込むように実施されたディスクアレイコントローラである。
RAID5システムは、データがストライプ化されたディスク群の1個のディスクの故障に耐えることができ、ストライプの残りのディスクに記憶されているデータから故障しているディスクのデータを回復することができる。
RAID6システムは、データがストライプ化された各ディスク群内の2個のディスクの故障を許容することができる。
図4Aでは、RAIDシステム内でRAIDグループを共に構成する10個のディスクの内容が示されている。
各ディスクは、線形ブロック列であると考えることができる。
図4Aでは、ディスク0内の線形ブロック列402が、連続番号が付けられて示されている。
図4Bは、2つの異なるファイルを構成する線形ブロック列を示している。
図4Bに示すように、ファイルAは、19個のブロックの列404を含み、ファイルBは、23個のブロックの列406を含む。
図4Cは、ファイルAのブロックおよびファイルBのブロックを、図4Aに示すRAIDグループの10個のディスクにわたってストライプ化したものを示している。
ファイルA408の最初の8個のブロックは、図4Cに示すように、ディスク0〜ディスク7の第1のストライプ410にそれぞれ存在する。
これらの8個のデータブロックについて、前の小節で解説したように計算されたパリティブロックを含む2個のパリティブロックP0414およびP1415は、ディスク9およびディスク10に存在する。
これらの8個のデータブロックおよび2個のパリティブロックは、共に、RAIDグループの10個のディスクにわたる単一のストライプ410を構成する。
図4Cに示すように、ファイルAは、2つの全ストライプおよび第3のストライプの一部において、RAIDグループの10個のディスクにわたり分散されている。
ファイルBは、第1の部分的ストライプ416、2つの全ストライプ418および420、並びに最後の部分的ストライプ422において、RAIDグループの10個のディスクにわたり分散されている。
前の小節で解説したように、RAIDグループの10個のディスクのいずれか2個が故障すると、数学的技法を使用して、RAIDグループに記憶されている各ファイルオブジェクトを逆行列により再構築することができる。
図4Dは、パリティブロックの構成を示している。
図4Dでは、ディスク0〜9に配置された8+2ストライプのデータブロック430〜437並びにパリティブロック438および439が、バイト列として水平に示されている。
前の小節で解説したように、8+2冗長方式における8つのデータバイトの各組は、2つのパリティバイトを生成する。
したがって、ブロック430〜437のそれぞれからのバイト0は、第1のパリティブロック438の第1のパリティバイト440および第2のパリティブロック439の第1のパリティバイト442を生成する。
各データブロック430〜437からのものである8データバイトの後続の群は、パリティブロック438および439のそれぞれにおける後続のパリティバイトを生成する。
ディスクコントローラは、各512バイトディスクブロックについて作成され管理されるECCバイトの個数に応じて、且つ、使用されるエラー検出/訂正方式に応じて、一定の部類のエラーを検出して訂正することができる。
第2のレベルでは、ディスクアレイコントローラは、各512バイト論理データブロックについて複数のEDCバイトを作成して管理する。
換言すれば、ディスクアレイコントローラは、520バイト仮想ブロックを512バイト論理ブロックにマッピングする。
ディスクアレイコントローラが作成して管理するEDCバイトは、ディスクコントローラレベルでは、単にデータにすぎない。
最後に、より高いレベルでは、RAIDシステム内のRAIDコントローラは、RAIDストライプ内の各データブロック群について複数のパリティブロックを作成して管理する。
このレベルでは、パリティブロックは、データ冗長性を導入するように意図されており、それによって、RAIDコントローラは、各RAIDグループ内の1個または2個以上の故障しているディスクについてデータを再構築することが可能になる。
エラー検出方式、エラー訂正方式、および消去符号化方式の3つのすべてのレイヤは互いにオーバーラップしている。
したがって、本発明に従って実施されたRAIDシステムでは、図3について上述した中間レベルのエラー検出およびエラー訂正が省略されている。
RAIDコントローラは、追加のEDCバイトを作成して管理するのではなく、本発明によれば、故障しているディスクの回復およびブロックレベルのデータ破損についてのディスク内に記憶されているデータの一定の監視の双方について、RAIDコントローラが作成して管理するパリティバイトを使用する。
図5は、ルーチン「スクラブ(scrub)」の制御フロー図である。
ルーチン「スクラブ」は、ブロックレベルのデータ破損について記憶されているデータを監視するために、RAIDコントローラ内で連続的に実行される。
ルーチン「スクラブ」は、データ記憶コマンドおよびデータ取り出しコマンド用にプロセッサの全帯域幅を保存するために、スペアのディスクアレイコントローラ処理サイクルを使用して実行されるように設計することができる。
初期化は、RAIDシステムごとに大きく変化し得る。
ルーチン「スクラブ」は、RAIDシステムの構成、さまざまなRAIDグループの識別情報およびサイズ、並びに各RAIDグループに記憶されているデータオブジェクトの識別情報およびサイズを判断するために、記憶されているストレージシステム情報にアクセスする。
ルーチン「スクラブ」は、実行中、RAIDシステム構成に対する変更を追跡する。
次に、ステップ502〜515を含むdoループを連続的に実行する際に、ルーチン「スクラブ」は、記憶されている各データオブジェクトを検査して、いずれかのブロックが破損しているか否かを判断する。
ステップ507〜513の次の下位レベルのforループにおいて、ルーチン「スクラブ」は、現在解析されている、記憶されているデータオブジェクトの各ストライプを解析する。
次に、ステップ509において、ルーチン「スクラブ」は、図6について後述するルーチンをコールして、エラーについてストライプをチェックする。
エラーが検出されたとステップ510で判断された場合、ステップ511において、ルーチン「スクラブ」は、単一の回復可能なエラーが検出されたか否かを判断する。
単一の回復可能なエラーが検出された場合、そのエラーはステップ512で訂正される。
エラー回復は、破損しているブロックのデータを、ストライプの残りのブロックから、メモリにおいて再生成すること、および、次に、そのデータを、破損しているブロックの論理ブロックアドレスに再書き込みすることを伴う。
あるいは、ディスクアレイコントローラは、不良ブロック再マッピングをハンドリングすることができ、破損しているブロックをスペアブロックに再マッピングすることができる。
他方、検出されたエラーが訂正可能でない場合、検出された破損しているデータには、ステップ513でフラグが立てられる。
RAIDコントローラは、高レベルルーチンで、高レベルの冗長データを他のソースから得ることにより欠陥ストライプを訂正するように努めることもできるし、あるいは、ホストコンピュータまたは他の高レベルエンティティに破損を知らせることもできる。
そうでないとき、ステップ515において、解析される記憶されているデータオブジェクトがさらに存在するときは、制御はステップ507に戻る。
最後に、すべての記憶されているデータオブジェクトが現在の反復で解析されると、制御は、ステップ506に戻り、データ破損監視の次の反復を開始する。
ステップ602において、ルーチン「エラーのチェック」は、ストライプのパリティブロックを再計算する。
再計算されたパリティブロックが、記憶されているパリティブロックと一致するとステップ604で判断された場合、検出されたエラーがないことの表示がステップ606で返される。
単一のブロックが破損しているとき、その破損は、図5のステップ512において、ストライプの冗長データから修復することができる。
そうでない場合、ストライプは、回復できないほどに破損しており、この場合、図5のステップ512において、破損にフラグが立てられる。
本発明の趣旨の範囲内の変更は、当業者には明らかである。
たとえば、本発明の実施形態は、さまざまな異なるタイプの冗長技法、ブロックサイズ、およびディスクドライブを使用して、多種多様の異なるRAIDコントローラに組み込むことができる。
2つが一致し、1つが異なる場合、RAIDシステムは、その異常な異なるブロックがデータ破損を表すことを推論することができ、そのブロックを2個の一致するブロックのうちの一方の内容で再書き込みすることによってデータ破損を訂正することができる。
1つの代替的なスクラブルーチンは、シンドロームを計算して使用しデータエラーを突き止めるのではなく、1個のブロックが省かれた可能な各ブロック群からストライプの内容を引き続き再計算することができる。
ストライプ内で検出された単一の不良ブロックは、そのブロックのデータを、メモリに記憶されているストライプの残りのブロックのデータから再計算することによって訂正することができる。
一般に、故障しているディスクを再構築するためにダブル冗長性がRAIDコントローラレベルで組み込まれたどのシステムにおいても、同じ冗長性を使用して、個々のストライプ内の破損しているブロックを突き止めて再構築することができる。
本発明は、磁気ディスク以外のストレージデバイスに基づくデータストレージシステムにも適用可能である。
RAIDコントローラは、ファームウェア、ハードウェア、ソフトウェア、または、ファームウェア、ハードウェア、およびソフトウェアの2つ以上の組み合わせで実施することができる。
本発明のデータ破損監視技法は、連続的に適用することもできるし、それよりも長い間隔で適用することもでき、より高いレベルのロバスト性およびフォールトトレランスを、記憶されているデータの選択部分に提供するために選択的に適用することができる。
しかしながら、本発明を実施するのに特定の詳細は必要とされないことが当業者には明らかである。
本発明の特定の実施形態の上記説明は、例示および説明の目的で提示されるものである。
それらの説明は、網羅的であることを意図するものでもなければ、開示した正確な形に本発明を限定することを意図するものでもない。
実施形態は、本発明の原理およびその実用的な適用を最も良く説明し、それによって、他の当業者が、本発明およびさまざまな変更を有するさまざまな実施形態を、検討した特定の使用に適するように最も良く利用することを可能にするために示されて説明されたものである。
本発明の範囲は、添付の特許請求の範囲およびその均等物によって画定されることが意図されている。
106・・・ラック,
114・・・セクタ,
120・・・ブロック,
126・・・エラー制御/訂正バイト(「ECCバイト」),
202・・・ディスクアレイ202,
204・・・ディスク,
206・・・中央プレーン,
208,210・・・ディスクアレイコントローラボード,
302・・・仮想線形アドレス空間,
304・・・EDCバイト,
306・・・論理ブロック,
402・・・線形ブロック列,
404・・・ブロックの列,
410・・・ストライプ,
430〜437・・・ブロック,
438・・・パリティブロック,
439・・・パリティブロック,
440・・・パリティバイト,
442・・・パリティバイト,
Claims (15)
- 複数のデータストレージデバイスと、
少なくとも1つのデータストレージシステムコントローラであって、
前記データストレージデバイスによって提供された論理ブロックデバイスインターフェースを仮想論理デバイスインターフェースにマッピングすることと、
データ冗長方式を使用することであって、それによって、該データストレージシステム内の記憶されているそれぞれのデータオブジェクトのそれぞれのストライプ内に十分な冗長データを2個以上のパリティブロックとして記憶し、データ冗長ディスク群の少なくとも2つの故障しているデータストレージデバイスに含まれるデータを回復することと、
前記データ冗長方式を使用することであって、それによって、ブロックレベルのデータ破損について、記憶されているデータオブジェクトを監視することと
を行うデータストレージシステムコントローラと
を備えるデータストレージシステム。 - 前記複数のデータストレージデバイスは、論理ブロックディスクインターフェースをアクセスエンティティにそれぞれ提供する複数の磁気ディスクである
請求項1に記載のデータストレージシステム。 - 前記冗長方式は、少なくとも2個のパリティブロックが、該少なくとも2個のパリティブロックと共にストライプを構成する固定サイズのデータブロック群のそれぞれについて生成されて記憶される消去符号化冗性ベースのRAID方式である
請求項1に記載のデータストレージシステム。 - 前記少なくとも1つのデータストレージシステムコントローラは、前記データ冗長方式を使用して、
反復して、
記憶されている前記それぞれのデータオブジェクトの前記それぞれのストライプについて、
前記それぞれのストライプをメモリ内に読み込むことと、
前記パリティブロックをメモリにおいて再計算することと、
前記再計算されたパリティブロックをメモリに記憶されているそのストライプの前記パリティブロックと比較することと、
前記再計算されたパリティブロックが前記それぞれのストライプの前記パリティブロックと一致しないときは、
パリティブロック一致エラーをハンドリングすること
を行うことにより、ブロックレベルのデータ破損について、記憶されているデータオブジェクトを監視する
請求項3に記載のデータストレージシステム。 - 前記少なくとも1つのデータストレージシステムコントローラは、
パリティブロック一致エラーが、前記それぞれのストライプの単一のブロックが破損していることを示すときは、
前記単一の破損しているブロックを突き止めることと、
前記単一の破損しているブロックのデータを、前記それぞれのストライプの残りのブロックから再生成することと、
前記再生成されたデータを置換ブロックに再書き込みし、前記パリティブロック一致エラーが、前記それぞれのストライプの複数のブロックが破損していることを示すときは、前記それぞれのストライプを破損しているものとしてフラグを立てることと
により、前記パリティブロック一致エラーをハンドリングする
請求項4に記載のデータストレージシステム。 - 前記単一の破損しているブロックを突き止めることは、前記それぞれのストライプのシンドロームを計算すること、および前記シンドロームからエラー突き止め多項式を計算すること
をさらに含む請求項5に記載のデータストレージシステム。 - 前記単一の破損しているブロックのデータを、前記それぞれのストライプの残りのブロックから再生成することは、
該それぞれのストライプの該残りのブロックから逆行列により該単一の破損しているブロックの前記データを計算すること
をさらに含む
請求項5に記載のデータストレージシステム。 - 前記単一の破損しているブロックを突き止めることは、
前記それぞれのストライプの各ブロックを順に考慮して、
前記それぞれのストライプの前記現在考慮されているブロックを除くすべてから前記それぞれのストライプを再計算することと、
前記再計算されたストライプのパリティチェックが成功するときは、前記現在考慮されているブロックが破損していると判断することと
をさらに含む
請求項5に記載のデータストレージシステム。 - データ冗長方式を使用して、データストレージシステム内の記憶されている各データオブジェクトの各ストライプ内に十分な冗長データを2個以上のパリティブロックとして記憶し、データ冗長ディスク群の少なくとも2つの故障しているデータストレージデバイスに含まれるデータを回復する前記データストレージシステムにおいて、ブロックレベルのデータ破損について、記憶されているデータオブジェクトを監視するための方法であって、
反復して、
記憶されているそれぞれのデータオブジェクトのそれぞれのストライプについて、
前記それぞれのストライプをメモリ内に読み込むことと、
前記それぞれのストライプのパリティブロックをメモリにおいて再計算することと、
前記再計算されたパリティブロックを前記それぞれのストライプの前記パリティブロックと比較することと、
前記再計算されたパリティブロックが前記それぞれのストライプの前記パリティブロックと一致しないときは、
パリティブロック一致エラーをハンドリングすること
を行うことを含む方法。 - 前記少なくとも1つのデータストレージシステムコントローラは、
パリティブロック一致エラーが、前記それぞれのストライプの単一のブロックが破損していることを示すときは、
前記単一の破損しているブロックを突き止めることと、
前記単一の破損しているブロックのデータを、前記それぞれのストライプの残りのブロックから再生成することと、
前記再生成されたデータを置換ブロックに再書き込みし、前記パリティブロック一致エラーが、前記それぞれのストライプの複数のブロックが破損していることを示すときは、前記それぞれのストライプを破損しているものとしてフラグを立てることと
により、前記パリティブロック一致エラーをハンドリングする
請求項9に記載の方法。 - 前記単一の破損しているブロックを突き止めることは、
前記それぞれのストライプのシンドロームを計算することと、
前記シンドロームからエラー突き止め多項式を計算することと
をさらに含む
請求項10に記載の方法。 - 前記単一の破損しているブロックのデータを、前記それぞれのストライプの残りのブロックから再生成することは、
該ストライプの該残りのブロックから逆行列により該単一の破損しているブロックの前記データを計算すること
をさらに含む
請求項10に記載の方法。 - 前記単一の破損しているブロックを突き止めることは、
前記それぞれのストライプの各ブロックを順に考慮して、
前記それぞれのストライプの前記現在考慮されているブロックを除くすべてから前記それぞれのストライプを再計算することと、
前記再計算されたストライプのパリティチェックが成功するときは、前記現在考慮されているブロックが破損していると判断することと
をさらに含む
請求項10に記載の方法。 - 請求項9に記載の方法を実施するコンピュータ可読メモリに記憶されているプロセッサ命令。
- 請求項9に記載の方法を実施するコンピュータ可読メモリに記憶されているファームウェア命令。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/590,958 US8145941B2 (en) | 2006-10-31 | 2006-10-31 | Detection and correction of block-level data corruption in fault-tolerant data-storage systems |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2008117395A true JP2008117395A (ja) | 2008-05-22 |
JP4668970B2 JP4668970B2 (ja) | 2011-04-13 |
Family
ID=39370591
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007279763A Expired - Fee Related JP4668970B2 (ja) | 2006-10-31 | 2007-10-29 | フォールトトレラントデータストレージシステムにおけるブロックレベルのデータ破損の検出および訂正 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8145941B2 (ja) |
JP (1) | JP4668970B2 (ja) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012033169A (ja) * | 2010-07-29 | 2012-02-16 | Ntt Docomo Inc | バックアップシステムにおける符号化を使用して、ライブチェックポインティング、同期、及び/又は復旧をサポートするための方法及び装置 |
WO2015107675A1 (ja) * | 2014-01-17 | 2015-07-23 | 株式会社日立製作所 | ストレージ装置および制御方法 |
JP2016224679A (ja) * | 2015-05-29 | 2016-12-28 | 日本電信電話株式会社 | 生成行列構成装置及び生成行列構成方法 |
KR20180020877A (ko) * | 2016-08-19 | 2018-02-28 | 삼성전자주식회사 | 솔리드 스테이트 드라이브 및 그것을 포함하는 스토리지 시스템 |
JP2019505906A (ja) * | 2015-12-31 | 2019-02-28 | 日本テキサス・インスツルメンツ合同会社 | 信号処理システムにおけるデータメモリ保護 |
JP2019109950A (ja) * | 2017-12-18 | 2019-07-04 | Necプラットフォームズ株式会社 | 制御装置、制御プログラム、及び制御方法 |
JP2019523490A (ja) * | 2016-07-19 | 2019-08-22 | アール−ストール インコーポレイテッド | 非アグリゲート型メモリプラッタを実装するための方法及び装置 |
Families Citing this family (113)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007132456A2 (en) | 2006-05-12 | 2007-11-22 | Anobit Technologies Ltd. | Memory device with adaptive capacity |
US7697326B2 (en) | 2006-05-12 | 2010-04-13 | Anobit Technologies Ltd. | Reducing programming error in memory devices |
WO2007132453A2 (en) | 2006-05-12 | 2007-11-22 | Anobit Technologies Ltd. | Distortion estimation and cancellation in memory devices |
WO2007132457A2 (en) | 2006-05-12 | 2007-11-22 | Anobit Technologies Ltd. | Combined distortion estimation and error correction coding for memory devices |
US8060806B2 (en) | 2006-08-27 | 2011-11-15 | Anobit Technologies Ltd. | Estimation of non-linear distortion in memory devices |
WO2008053472A2 (en) | 2006-10-30 | 2008-05-08 | Anobit Technologies Ltd. | Reading memory cells using multiple thresholds |
WO2008053473A2 (en) | 2006-10-30 | 2008-05-08 | Anobit Technologies Ltd. | Memory cell readout using successive approximation |
US7924648B2 (en) | 2006-11-28 | 2011-04-12 | Anobit Technologies Ltd. | Memory power and performance management |
WO2008068747A2 (en) | 2006-12-03 | 2008-06-12 | Anobit Technologies Ltd. | Automatic defect management in memory devices |
US7900102B2 (en) | 2006-12-17 | 2011-03-01 | Anobit Technologies Ltd. | High-speed programming of memory devices |
US7751240B2 (en) | 2007-01-24 | 2010-07-06 | Anobit Technologies Ltd. | Memory device with negative thresholds |
US8151166B2 (en) | 2007-01-24 | 2012-04-03 | Anobit Technologies Ltd. | Reduction of back pattern dependency effects in memory devices |
WO2008111058A2 (en) | 2007-03-12 | 2008-09-18 | Anobit Technologies Ltd. | Adaptive estimation of memory cell read thresholds |
US8001320B2 (en) | 2007-04-22 | 2011-08-16 | Anobit Technologies Ltd. | Command interface for memory devices |
WO2008139441A2 (en) | 2007-05-12 | 2008-11-20 | Anobit Technologies Ltd. | Memory device with internal signal processing unit |
US8234545B2 (en) | 2007-05-12 | 2012-07-31 | Apple Inc. | Data storage with incremental redundancy |
US7925936B1 (en) | 2007-07-13 | 2011-04-12 | Anobit Technologies Ltd. | Memory device with non-uniform programming levels |
US8259497B2 (en) | 2007-08-06 | 2012-09-04 | Apple Inc. | Programming schemes for multi-level analog memory cells |
US7975171B2 (en) * | 2007-09-12 | 2011-07-05 | International Business Machines Corporation | Automated file recovery based on subsystem error detection results |
US8174905B2 (en) | 2007-09-19 | 2012-05-08 | Anobit Technologies Ltd. | Programming orders for reducing distortion in arrays of multi-level analog memory cells |
US7773413B2 (en) | 2007-10-08 | 2010-08-10 | Anobit Technologies Ltd. | Reliable data storage in analog memory cells in the presence of temperature variations |
US8527819B2 (en) | 2007-10-19 | 2013-09-03 | Apple Inc. | Data storage in analog memory cell arrays having erase failures |
US8068360B2 (en) | 2007-10-19 | 2011-11-29 | Anobit Technologies Ltd. | Reading analog memory cells using built-in multi-threshold commands |
US8000141B1 (en) | 2007-10-19 | 2011-08-16 | Anobit Technologies Ltd. | Compensation for voltage drifts in analog memory cells |
US8270246B2 (en) | 2007-11-13 | 2012-09-18 | Apple Inc. | Optimized selection of memory chips in multi-chips memory devices |
US8225181B2 (en) | 2007-11-30 | 2012-07-17 | Apple Inc. | Efficient re-read operations from memory devices |
US8209588B2 (en) | 2007-12-12 | 2012-06-26 | Anobit Technologies Ltd. | Efficient interference cancellation in analog memory cell arrays |
US8456905B2 (en) | 2007-12-16 | 2013-06-04 | Apple Inc. | Efficient data storage in multi-plane memory devices |
US8085586B2 (en) | 2007-12-27 | 2011-12-27 | Anobit Technologies Ltd. | Wear level estimation in analog memory cells |
US8156398B2 (en) | 2008-02-05 | 2012-04-10 | Anobit Technologies Ltd. | Parameter estimation based on error correction code parity check equations |
US7924587B2 (en) | 2008-02-21 | 2011-04-12 | Anobit Technologies Ltd. | Programming of analog memory cells using a single programming pulse per state transition |
US7864573B2 (en) | 2008-02-24 | 2011-01-04 | Anobit Technologies Ltd. | Programming analog memory cells for reduced variance after retention |
US8230300B2 (en) | 2008-03-07 | 2012-07-24 | Apple Inc. | Efficient readout from analog memory cells using data compression |
US8059457B2 (en) | 2008-03-18 | 2011-11-15 | Anobit Technologies Ltd. | Memory device with multiple-accuracy read commands |
US8400858B2 (en) | 2008-03-18 | 2013-03-19 | Apple Inc. | Memory device with reduced sense time readout |
US7995388B1 (en) | 2008-08-05 | 2011-08-09 | Anobit Technologies Ltd. | Data storage using modified voltages |
US7924613B1 (en) | 2008-08-05 | 2011-04-12 | Anobit Technologies Ltd. | Data storage in analog memory cells with protection against programming interruption |
US8949684B1 (en) | 2008-09-02 | 2015-02-03 | Apple Inc. | Segmented data storage |
US8169825B1 (en) | 2008-09-02 | 2012-05-01 | Anobit Technologies Ltd. | Reliable data storage in analog memory cells subjected to long retention periods |
US8000135B1 (en) | 2008-09-14 | 2011-08-16 | Anobit Technologies Ltd. | Estimation of memory cell read thresholds by sampling inside programming level distribution intervals |
US8482978B1 (en) | 2008-09-14 | 2013-07-09 | Apple Inc. | Estimation of memory cell read thresholds by sampling inside programming level distribution intervals |
US8239734B1 (en) * | 2008-10-15 | 2012-08-07 | Apple Inc. | Efficient data storage in storage device arrays |
US8261159B1 (en) | 2008-10-30 | 2012-09-04 | Apple, Inc. | Data scrambling schemes for memory devices |
US8208304B2 (en) | 2008-11-16 | 2012-06-26 | Anobit Technologies Ltd. | Storage at M bits/cell density in N bits/cell analog memory cell devices, M>N |
US8248831B2 (en) | 2008-12-31 | 2012-08-21 | Apple Inc. | Rejuvenation of analog memory cells |
US8174857B1 (en) | 2008-12-31 | 2012-05-08 | Anobit Technologies Ltd. | Efficient readout schemes for analog memory cell devices using multiple read threshold sets |
US8924661B1 (en) | 2009-01-18 | 2014-12-30 | Apple Inc. | Memory system including a controller and processors associated with memory devices |
US8228701B2 (en) | 2009-03-01 | 2012-07-24 | Apple Inc. | Selective activation of programming schemes in analog memory cell arrays |
US8259506B1 (en) | 2009-03-25 | 2012-09-04 | Apple Inc. | Database of memory read thresholds |
US8832354B2 (en) | 2009-03-25 | 2014-09-09 | Apple Inc. | Use of host system resources by memory controller |
US8238157B1 (en) | 2009-04-12 | 2012-08-07 | Apple Inc. | Selective re-programming of analog memory cells |
US8296515B1 (en) | 2009-05-22 | 2012-10-23 | Nvidia Corporation | RAID-6 computation system and method |
US8037391B1 (en) * | 2009-05-22 | 2011-10-11 | Nvidia Corporation | Raid-6 computation system and method |
US8479080B1 (en) | 2009-07-12 | 2013-07-02 | Apple Inc. | Adaptive over-provisioning in memory systems |
CA2688398C (en) * | 2009-09-23 | 2013-09-24 | Technische Universitaet Muenchen | A systematic encoder with arbitrary parity positions |
US8495465B1 (en) | 2009-10-15 | 2013-07-23 | Apple Inc. | Error correction coding over multiple memory pages |
US8677054B1 (en) | 2009-12-16 | 2014-03-18 | Apple Inc. | Memory management schemes for non-volatile memory devices |
US8694814B1 (en) | 2010-01-10 | 2014-04-08 | Apple Inc. | Reuse of host hibernation storage space by memory controller |
US8572311B1 (en) | 2010-01-11 | 2013-10-29 | Apple Inc. | Redundant data storage in multi-die memory systems |
US8694853B1 (en) | 2010-05-04 | 2014-04-08 | Apple Inc. | Read commands for reading interfering memory cells |
US8631269B2 (en) * | 2010-05-21 | 2014-01-14 | Indian Institute Of Science | Methods and system for replacing a failed node in a distributed storage network |
US8572423B1 (en) | 2010-06-22 | 2013-10-29 | Apple Inc. | Reducing peak current in memory systems |
US8595591B1 (en) | 2010-07-11 | 2013-11-26 | Apple Inc. | Interference-aware assignment of programming levels in analog memory cells |
US8392805B2 (en) * | 2010-07-15 | 2013-03-05 | Hewlett-Packard Development Company, L. P. | Non-MDS erasure codes for storage systems |
US9104580B1 (en) | 2010-07-27 | 2015-08-11 | Apple Inc. | Cache memory for hybrid disk drives |
US8767459B1 (en) | 2010-07-31 | 2014-07-01 | Apple Inc. | Data storage in analog memory cells across word lines using a non-integer number of bits per cell |
US8856475B1 (en) | 2010-08-01 | 2014-10-07 | Apple Inc. | Efficient selection of memory blocks for compaction |
US8694854B1 (en) | 2010-08-17 | 2014-04-08 | Apple Inc. | Read threshold setting based on soft readout statistics |
US8433685B2 (en) * | 2010-08-18 | 2013-04-30 | Hewlett-Packard Development Company, L.P. | Method and system for parity-page distribution among nodes of a multi-node data-storage system |
US9021181B1 (en) | 2010-09-27 | 2015-04-28 | Apple Inc. | Memory management for unifying memory cell conditions by using maximum time intervals |
US8539303B2 (en) * | 2010-12-20 | 2013-09-17 | Intel Corporation | Low overhead error correcting code protection for stored information |
US8386840B2 (en) * | 2010-12-27 | 2013-02-26 | Amplidata Nv | Distributed object storage system |
US8732521B2 (en) * | 2011-08-31 | 2014-05-20 | Oracle International Corporation | Detection of logical corruption in persistent storage and automatic recovery therefrom |
US8793463B2 (en) | 2011-09-12 | 2014-07-29 | Microsoft Corporation | Allocation strategies for storage device sets |
US8914706B2 (en) * | 2011-12-30 | 2014-12-16 | Streamscale, Inc. | Using parity data for concurrent data authentication, correction, compression, and encryption |
US8683296B2 (en) * | 2011-12-30 | 2014-03-25 | Streamscale, Inc. | Accelerated erasure coding system and method |
US8812902B2 (en) * | 2012-02-08 | 2014-08-19 | Lsi Corporation | Methods and systems for two device failure tolerance in a RAID 5 storage system |
CN102708019B (zh) | 2012-04-28 | 2014-12-03 | 华为技术有限公司 | 一种硬盘数据恢复方法、装置及系统 |
US9658803B1 (en) * | 2012-06-28 | 2017-05-23 | EMC IP Holding Company LLC | Managing accesses to storage |
EP2725491B1 (en) * | 2012-10-26 | 2019-01-02 | Western Digital Technologies, Inc. | A distributed object storage system comprising performance optimizations |
US9135096B2 (en) | 2012-12-06 | 2015-09-15 | Compellent Technologies | RAID surveyor |
US9444889B1 (en) | 2013-02-08 | 2016-09-13 | Quantcast Corporation | Managing distributed system performance using accelerated data retrieval operations |
WO2014140677A1 (en) * | 2013-03-15 | 2014-09-18 | Emc Corporation | Offloading raid update operations to disk controllers |
US20140281802A1 (en) * | 2013-03-15 | 2014-09-18 | SEAKR Engineering, Inc. | Multi-dimensional error detection and correction memory and computing architecture |
US9354975B2 (en) | 2013-03-15 | 2016-05-31 | Emc Corporation | Load balancing on disks in raid based on linear block codes |
US20150089328A1 (en) * | 2013-09-23 | 2015-03-26 | Futurewei Technologies, Inc. | Flex Erasure Coding of Controllers of Primary Hard Disk Drives Controller |
EP2863566B1 (en) | 2013-10-18 | 2020-09-02 | Université de Nantes | Method and apparatus for reconstructing a data block |
US9584160B2 (en) * | 2014-02-20 | 2017-02-28 | Quantum Corporation | Dynamically configuring erasure code redundancy and distribution |
WO2015161140A1 (en) * | 2014-04-16 | 2015-10-22 | The Research Foundation For The State University Of New York | System and method for fault-tolerant block data storage |
US9594634B2 (en) * | 2014-06-02 | 2017-03-14 | Intel Corporation | Techniques to efficiently compute erasure codes having positive and negative coefficient exponents to permit data recovery from more than two failed storage units |
US9563509B2 (en) * | 2014-07-15 | 2017-02-07 | Nimble Storage, Inc. | Methods and systems for storing data in a redundant manner on a plurality of storage units of a storage system |
US9722632B2 (en) * | 2014-09-22 | 2017-08-01 | Streamscale, Inc. | Sliding window list decoder for error correcting codes |
US9870284B2 (en) * | 2015-05-27 | 2018-01-16 | International Business Machines Corporation | First responder parities for storage array |
US10489240B2 (en) * | 2015-09-25 | 2019-11-26 | Microsoft Technology Licensing, Llc | Efficient detection of corrupt data |
US10031803B2 (en) | 2015-12-14 | 2018-07-24 | International Business Machines Corporation | Distributed coding for multiple dimensional parities |
US10318378B2 (en) * | 2016-02-25 | 2019-06-11 | Micron Technology, Inc | Redundant array of independent NAND for a three-dimensional memory array |
US10241860B2 (en) * | 2016-08-15 | 2019-03-26 | Samsung Electronics Co., Ltd. | Method of executing data scrubbing inside a smart storage device |
US10230398B2 (en) * | 2016-08-19 | 2019-03-12 | Samsung Electronics Co., Ltd. | Erasure code data protection and recovery computation system and method |
US10078552B2 (en) * | 2016-12-29 | 2018-09-18 | Western Digital Technologies, Inc. | Hierarchic storage policy for distributed object storage systems |
US10552243B2 (en) | 2017-10-12 | 2020-02-04 | International Business Machines Corporation | Corrupt logical block addressing recovery scheme |
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 |
US10642688B2 (en) | 2018-04-12 | 2020-05-05 | EMC IP Holding Company LLC | System and method for recovery of unrecoverable data with enhanced erasure coding and replication |
US10592338B2 (en) * | 2018-04-27 | 2020-03-17 | EMC IP Holding Company LLC | Scale out data protection with erasure coding |
US11501155B2 (en) * | 2018-04-30 | 2022-11-15 | EMC IP Holding Company LLC | Learning machine behavior related to install base information and determining event sequences based thereon |
CN113760186A (zh) | 2019-07-30 | 2021-12-07 | 华为技术有限公司 | 数据存储方法、装置、计算设备、存储系统及存储介质 |
US11531590B2 (en) * | 2019-09-17 | 2022-12-20 | Western Digital Technologies, Inc. | Method and system for host-assisted data recovery assurance for data center storage device architectures |
US11334434B2 (en) | 2020-02-19 | 2022-05-17 | Seagate Technology Llc | Multi-level erasure system with cooperative optimization |
US11372553B1 (en) | 2020-12-31 | 2022-06-28 | Seagate Technology Llc | System and method to increase data center availability using rack-to-rack storage link cable |
JP2022137811A (ja) | 2021-03-09 | 2022-09-22 | キオクシア株式会社 | 情報処理システム、ストレージデバイスおよびホスト |
US11556416B2 (en) | 2021-05-05 | 2023-01-17 | Apple Inc. | Controlling memory readout reliability and throughput by adjusting distance between read thresholds |
US11847342B2 (en) | 2021-07-28 | 2023-12-19 | Apple Inc. | Efficient transfer of hard data and confidence levels in reading a nonvolatile memory |
US11886295B2 (en) | 2022-01-31 | 2024-01-30 | Pure Storage, Inc. | Intra-block error correction |
CN115167787B (zh) * | 2022-09-06 | 2023-01-24 | 苏州浪潮智能科技有限公司 | 一种数据转存方法、系统、设备及计算机可读存储介质 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS60186926A (ja) * | 1983-09-19 | 1985-09-24 | スタッフ・テクノロジー・パートナーズ・トウー | 光記憶システム及びそれを利用するデータ伝送方法 |
JPH0744322A (ja) * | 1991-07-03 | 1995-02-14 | Internatl Business Mach Corp <Ibm> | Dasdアレイの階層を管理する方法および装置 |
JPH09305328A (ja) * | 1996-05-13 | 1997-11-28 | Fujitsu Ltd | ディスクアレイ装置 |
JPH11102576A (ja) * | 1997-09-29 | 1999-04-13 | Toshiba Corp | データ再生装置 |
JP2001216743A (ja) * | 2000-01-31 | 2001-08-10 | Toshiba Corp | 同期信号検出装置、同検出装置を備えた情報記憶装置、及び同期信号検出方法 |
JP2005209227A (ja) * | 2005-03-30 | 2005-08-04 | Fujitsu Ltd | ディスクアレイ装置 |
US20060047993A1 (en) * | 2004-09-02 | 2006-03-02 | Benhase Michael T | Apparatus, system, and method for error checking and recovery of transmitted data in a SCSI enviroment |
WO2006071837A2 (en) * | 2004-12-23 | 2006-07-06 | Intel Corporation | Method and system for syndrome generation and data recovery |
WO2006073322A1 (en) * | 2004-12-29 | 2006-07-13 | Intel Corporation | 3-stripes gilbert low density parity-check codes |
JP2006520036A (ja) * | 2003-02-06 | 2006-08-31 | ヘキサロック リミテッド | 光学メディア及び他のメディアに記録されたデジタル・コンテントに対する不正コピー及び不正な使用の防止方法及び防止システム |
JP2006268673A (ja) * | 2005-03-25 | 2006-10-05 | Hitachi Ltd | 記憶制御装置及び記憶デバイスのエラー制御方法 |
Family Cites Families (6)
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 |
JP2003223476A (ja) | 2001-12-05 | 2003-08-08 | Nec Corp | 機能シミュレーションのためのハードウェア・アクセラレーション・システム |
US7698625B2 (en) * | 2003-08-26 | 2010-04-13 | Adaptec, Inc. | System for improving parity generation and rebuild performance |
US7412563B2 (en) * | 2004-08-04 | 2008-08-12 | Aristos Logic Corporation | Method and system for calculating single and dual parity for networked storaged elements |
US20060123321A1 (en) * | 2004-11-22 | 2006-06-08 | International Business Machines Corporation | System and method for reconstructing lost data in a storage system |
US7743308B2 (en) * | 2005-02-09 | 2010-06-22 | Adaptec, Inc. | Method and system for wire-speed parity generation and data rebuild in RAID systems |
-
2006
- 2006-10-31 US US11/590,958 patent/US8145941B2/en not_active Expired - Fee Related
-
2007
- 2007-10-29 JP JP2007279763A patent/JP4668970B2/ja not_active Expired - Fee Related
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS60186926A (ja) * | 1983-09-19 | 1985-09-24 | スタッフ・テクノロジー・パートナーズ・トウー | 光記憶システム及びそれを利用するデータ伝送方法 |
JPH0744322A (ja) * | 1991-07-03 | 1995-02-14 | Internatl Business Mach Corp <Ibm> | Dasdアレイの階層を管理する方法および装置 |
JPH09305328A (ja) * | 1996-05-13 | 1997-11-28 | Fujitsu Ltd | ディスクアレイ装置 |
JPH11102576A (ja) * | 1997-09-29 | 1999-04-13 | Toshiba Corp | データ再生装置 |
JP2001216743A (ja) * | 2000-01-31 | 2001-08-10 | Toshiba Corp | 同期信号検出装置、同検出装置を備えた情報記憶装置、及び同期信号検出方法 |
JP2006520036A (ja) * | 2003-02-06 | 2006-08-31 | ヘキサロック リミテッド | 光学メディア及び他のメディアに記録されたデジタル・コンテントに対する不正コピー及び不正な使用の防止方法及び防止システム |
US20060047993A1 (en) * | 2004-09-02 | 2006-03-02 | Benhase Michael T | Apparatus, system, and method for error checking and recovery of transmitted data in a SCSI enviroment |
WO2006071837A2 (en) * | 2004-12-23 | 2006-07-06 | Intel Corporation | Method and system for syndrome generation and data recovery |
JP2008525898A (ja) * | 2004-12-23 | 2008-07-17 | インテル・コーポレーション | シンドローム生成及びデータ復旧のための方法及びシステム |
WO2006073322A1 (en) * | 2004-12-29 | 2006-07-13 | Intel Corporation | 3-stripes gilbert low density parity-check codes |
JP2008526164A (ja) * | 2004-12-29 | 2008-07-17 | インテル・コーポレーション | 3ストライプ・ギルバート低密度パリティ検査符号 |
JP2006268673A (ja) * | 2005-03-25 | 2006-10-05 | Hitachi Ltd | 記憶制御装置及び記憶デバイスのエラー制御方法 |
JP2005209227A (ja) * | 2005-03-30 | 2005-08-04 | Fujitsu Ltd | ディスクアレイ装置 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012033169A (ja) * | 2010-07-29 | 2012-02-16 | Ntt Docomo Inc | バックアップシステムにおける符号化を使用して、ライブチェックポインティング、同期、及び/又は復旧をサポートするための方法及び装置 |
WO2015107675A1 (ja) * | 2014-01-17 | 2015-07-23 | 株式会社日立製作所 | ストレージ装置および制御方法 |
JP2016224679A (ja) * | 2015-05-29 | 2016-12-28 | 日本電信電話株式会社 | 生成行列構成装置及び生成行列構成方法 |
JP2019505906A (ja) * | 2015-12-31 | 2019-02-28 | 日本テキサス・インスツルメンツ合同会社 | 信号処理システムにおけるデータメモリ保護 |
JP7159517B2 (ja) | 2015-12-31 | 2022-10-25 | テキサス インスツルメンツ インコーポレイテッド | 信号処理システムにおけるデータメモリ保護 |
US11556421B2 (en) | 2015-12-31 | 2023-01-17 | Texas Instruments Incorporated | Protecting data memory in a signal processing system |
JP2019523490A (ja) * | 2016-07-19 | 2019-08-22 | アール−ストール インコーポレイテッド | 非アグリゲート型メモリプラッタを実装するための方法及び装置 |
KR20180020877A (ko) * | 2016-08-19 | 2018-02-28 | 삼성전자주식회사 | 솔리드 스테이트 드라이브 및 그것을 포함하는 스토리지 시스템 |
KR102199424B1 (ko) | 2016-08-19 | 2021-01-06 | 삼성전자주식회사 | 솔리드 스테이트 드라이브 및 그것을 포함하는 스토리지 시스템 |
JP2019109950A (ja) * | 2017-12-18 | 2019-07-04 | Necプラットフォームズ株式会社 | 制御装置、制御プログラム、及び制御方法 |
JP7056867B2 (ja) | 2017-12-18 | 2022-04-19 | Necプラットフォームズ株式会社 | 制御装置、制御プログラム、及び制御方法 |
Also Published As
Publication number | Publication date |
---|---|
US20080115017A1 (en) | 2008-05-15 |
US8145941B2 (en) | 2012-03-27 |
JP4668970B2 (ja) | 2011-04-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4668970B2 (ja) | フォールトトレラントデータストレージシステムにおけるブロックレベルのデータ破損の検出および訂正 | |
Blaum et al. | EVENODD: An efficient scheme for tolerating double disk failures in RAID architectures | |
US9417963B2 (en) | Enabling efficient recovery from multiple failures together with one latent error in a storage array | |
US9075745B1 (en) | System and method for adding a drive to a storage system having multiple drives | |
US7392458B2 (en) | Method and system for enhanced error identification with disk array parity checking | |
US8751859B2 (en) | Monitoring lost data in a storage system | |
US7529970B2 (en) | System and method for improving the performance of operations requiring parity reads in a storage array system | |
US9009569B2 (en) | Detection and correction of silent data corruption | |
US20060123270A1 (en) | Method and system for recovering from abnormal interruption of a parity update operation in a disk array system | |
US20090055682A1 (en) | Data storage systems and methods having block group error correction for repairing unrecoverable read errors | |
US7836379B1 (en) | Method for computing buffer ECC | |
US20150089282A1 (en) | Method of, and apparatus for, layout rectification of erasure encoded storage systems | |
US8484506B2 (en) | Redundant array of independent disks level 5 (RAID 5) with a mirroring functionality | |
JP2015508917A (ja) | 消失エラー訂正符号を用いてストレージ・アレイにデータを格納する方法、システム及びプログラム | |
US20120198195A1 (en) | Data storage system and method | |
CN109358980B (zh) | 一种对数据更新和单磁盘错误修复友好的raid6编码方法 | |
US8667326B2 (en) | Dual hard disk drive system and method for dropped write detection and recovery | |
US8443264B2 (en) | Disk array apparatus, a disk array apparatus control method and a program for a disk array apparatus | |
US10108495B2 (en) | Method and device for improving the reliability of data storage in a hard disk comprising a plurality of platters | |
WO2017158430A1 (en) | Coding technique | |
US11831333B2 (en) | Encoding for data recovery in storage systems | |
CN116249969A (zh) | 具有内置冗余的数据存储系统以及恢复和存储数据的方法 | |
Tau et al. | Parity placement schemes to facilitate recovery from triple column disk failure in disk array systems | |
CN117194095A (zh) | 改变纠错配置 | |
SSD | The EVENODD Code and its Generalization: An E∆ cient Scheme for Tolerating Multiple Disk Failures in RAID Architectures |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100510 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20100804 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20100809 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20101026 |
|
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: 20110105 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20110113 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140121 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4668970 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
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 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R360 | Written notification for declining of transfer of rights |
Free format text: JAPANESE INTERMEDIATE CODE: R360 |
|
R360 | Written notification for declining of transfer of rights |
Free format text: JAPANESE INTERMEDIATE CODE: R360 |
|
R371 | Transfer withdrawn |
Free format text: JAPANESE INTERMEDIATE CODE: R371 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
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 |