JP2008117395A - フォールトトレラントデータストレージシステムにおけるブロックレベルのデータ破損の検出および訂正 - Google Patents

フォールトトレラントデータストレージシステムにおけるブロックレベルのデータ破損の検出および訂正 Download PDF

Info

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
Application number
JP2007279763A
Other languages
English (en)
Other versions
JP4668970B2 (ja
Inventor
Michael B Jacobson
マイケル・ビー・ジェイコブソン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Development Co LP
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of JP2008117395A publication Critical patent/JP2008117395A/ja
Application granted granted Critical
Publication of JP4668970B2 publication Critical patent/JP4668970B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1057Parity-multiple bits-RAID6, i.e. RAID 6 implementations

Abstract

【課題】RAID内におけるブロックレベルのデータ破損の監視および訂正にデータ冗長性を使用するための改良された方法を提供する。
【解決手段】本願にかかるデータストレージシステムは、複数のデータストレージデバイスと、データストレージデバイスによって提供された論理ブロックデバイスインターフェースを仮想論理デバイスインターフェースにマッピングし、データ冗長方式を使用して、データストレージシステム内の記憶されているそれぞれのデータオブジェクトのそれぞれのストライプ内に十分な冗長データを2個以上のパリティブロックとして記憶し、データ冗長ディスク群の少なくとも2つの故障しているデータストレージデバイスに含まれるデータを回復し、データ冗長方式を使用して、ブロックレベルのデータ破損について、記憶されているデータオブジェクトを監視するデータストレージシステムコントローラとを備える。
【選択図】図5

Description

本発明は、データストレージ、エラー検出およびエラー訂正、並びに独立ディスク冗長アレイ(「RAID」)に関し、詳細には、RAID内におけるブロックレベルのデータ破損の監視および訂正にデータ冗長性を使用するための方法に関する。
過去50年の間、電子マスストレージデバイスにおけるデータの信頼性のあるロバストなストレージは、非常に大きな進歩を遂げた。
情報理論が1940年代に発展し、これによって、エラー検出およびエラー訂正のための数学的技法が発展し、送信情報または記憶情報の一定の部類のエラーを検出して訂正することを可能にする、送信情報または記憶情報内に追加情報を挿入するための方法が提供された。
加えて、集積回路、マスストレージデバイス、並びに基本コンピュータサイエンスおよびエレクトロニクスの進歩によって、独立ディスク冗長アレイ(「RAID」)を含む冗長ベースフォールトトレラントマスストレージシステムが開発された。
RAIDシステムでは、データは冗長に記憶される。
多くのRAIDシステムでは、冗長な情報は、エラー訂正符号方法によって生成される。
RAIDシステムのタイプに依存した1個または2個以上のディスクが故障しているとき、その1個または2個以上の故障したディスクの内容は、RAIDシステム内に記憶されている冗長データから再生成することができる。
付加的レベルのエラー検出およびエラー訂正は、RAID等の複雑なデータストレージシステム内で実施される。
それらの多くのレイヤのオーバーラップするエラー検出方法およびエラー訂正方法は、高度にロバストで且つフォールトトレラントなデータストレージシステムの作成に役立つが、冗長ベースデータストレージシステム内のそれらの多くのレイヤのエラー検出およびエラー訂正は、計算コストおよびデータストレージ容量コストにも関連する。
これらの理由から、冗長ベースフォールトトレラントデータストレージシステムの設計者、製造者、および最終的にはユーザは、最小限の計算オーバーヘッドおよび最小限に低減されたデータストレージ容量でデータストレージシステムの高レベルのフォールトトレランスを達成するためのより効率的且つ経済的な技法を模索し続けている。
本発明は、上述のような背景からなされたものであって、RAID内におけるブロックレベルのデータ破損の監視および訂正にデータ冗長性を使用するための改良された方法を提供することを目的とする。
本発明のさまざまな実施の形態は、包括的且つ効率的でシステム全体にわたるエラー検出およびエラー訂正を提供するために、ディスクブロックレベルにおいてディスクコントローラが実施するエラー検出およびエラー訂正に依拠したフォールトトレラント冗長性ベースのデータストレージシステム、並びに、ディスクレベルおよびディスクストライプレベルでRAIDコントローラが実施するデータ冗長方法を提供する。
本発明の実施の形態は、ディスクレベルおよびストライプレベルのデータ冗長性を使用して、記憶されているデータオブジェクトのエラー検出およびエラー訂正を提供し、現在利用可能なフォールトトレラント冗長性ベースのデータストレージシステムで一般に使用されている、多大なコストを要する一定の中間レベルのエラー検出およびエラー訂正の必要性をなくしている。
本発明は、RAIDシステムを含むマルチデバイス冗長ベースデータストレージシステムにおける効率的且つ包括的なブロックレベルのデータ破損検出およびデータ破損訂正に関する。
以下の第1小節では、一定のタイプのエラー検出およびエラー訂正の数学的基礎を解説する。
次の第2小節では、本発明の実施形態を解説する。
[エラー検出方法およびエラー訂正方法]
本発明の実施形態は、エラー制御符号化における既知の技法から導出された概念を使用する。
この分野のすぐれた参考文献は、LinおよびCostello著「Error Control Coding: The Fundamentals and Applications」(Prentice-Hall, Incorporated, New Jersey, 1983)というテキストである。
この小節では、エラー制御符号化で使用されるエラー検出技法およびエラー訂正技法の簡単な説明が記載されている。
さらに詳細な内容は、上記参考テキストから得ることもできるし、この分野の他の多くのテキスト、論文、および専門誌の記事から得ることもできる。
本小節は、一定のタイプのエラー制御符号化技法のかなり数学的に正確ではあるが簡潔な説明を表す。
エラー制御符号化技法は、記憶または送信で生じるエラーの検出および場合によっては訂正を可能にする符号化メッセージの情報を提供するために、補助ビットまたは補助シンボルをプレーンテキストメッセージ内に体系的に導入するか、または絶対に必要とされるものよりも多くの個数のビットまたはシンボルを使用してプレーンテキストメッセージを符号化する。
補助ビット若しくは補助シンボルまたは絶対に必要とされるものよりも多くのビット若しくはシンボルの1つの効果は、コードワードをベクトル空間のベクトルと見て、コードワード間の距離がコードワードのベクトル減算から導出されたメトリックであるとしたときに、有効なコードワード間の距離を増加させることである。
エラー検出およびエラー訂正を説明する際に、送信されるデータ、記憶されるデータ、および取り出されるデータを1つまたは2つ以上のメッセージとして説明することが役立つ。
ここで、メッセージμは、体(field)Fの要素であるシンボルμの順序列を含む。メッセージμは、
μ=(μ,μ,…,μk−1
ここで、μ∈F
として表すことができる。
体Fは、乗算および加算の下で閉じた集合であり、乗法の逆元および加法の逆元を含む集合である。
計算によるエラー検出およびエラー訂正では、あるる素数と等しいサイズを有する整数の部分集合を含む体を使用し、加算演算子はモジュロ加算(modulo addition)として定義され、乗算演算子はモジュロ乗算(modulo multiplication)として定義されることが一般的である。
実際には、2元体が一般に使用される。
一般に、元のメッセージは、体Fの要素の順序列も含むメッセージcに符号化され、以下のように表される。
c=(c,c,…,cn−1
ここで、c∈F。
ブロック符号化技法は、ブロックでデータを符号化する。
この解説では、ブロックは、一定のk個のシンボルを含むメッセージμと見ることができる。
メッセージμは、n個のシンボルの順序列を含むメッセージcに符号化される。
符号化メッセージcは、一般に、元のメッセージμよりも多くの個数のシンボルを含み、したがって、nはkよりも大きい。
rがn−kに等しいとして、符号化メッセージ内のr個の余剰シンボルは、冗長なチェック情報を運ぶのに使用される。
この冗長なチェック情報は、送信中、記憶中、および取り出し中に発生したエラーを極度に高い検出確率で検出することを可能にし、多くの場合は訂正も可能にするものである。
線形ブロック符号では、2個のコードワードが、体F上のすべてのnタプルのベクトル空間のk次元部分空間を形成する。
コードワードのハミング重みは、コードワードにおける非ゼロの要素の個数であり、2つのコードワード間のハミング距離は、2つのコードワードが異なる要素の個数である。
たとえば、2元体からの要素を仮定して、以下の2つのコードワードaおよびbを考える。
Figure 2008117395
コードワードaは3のハミング重みを有し、コードワードbは2のハミング重みを有し、コードワードaおよびbは第4要素のみが異なるので、コードワードaとbとの間のハミング距離は1である。
線形ブロック符号は、多くの場合、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)
である。
符号化プロセスは、μとしてシンボル化されたメッセージが符号化メッセージcに変換されるプロセスである。
あるいは、メッセージμは、Fの要素から成る記号体系からのシンボルの順序集合を含むワードであると考えることができ、符号化メッセージcも、Fの要素の記号体系からのシンボルの順序集合を含むコードワードであると考えることができる。
ワードμは、Fの要素から選択されたk個のシンボルのあらゆる順序付けられた組み合わせとすることができる一方、コードワードcは、符号化プロセス
{c:μ→c}
を介してFの要素から選択されたn個のシンボルの順序列として定義される。
線形ブロック符号化技法は、ワードμをk次元ベクトル空間のベクトルと考え、以下のようにベクトルμに生成行列を乗算することによって長さkのワードを符号化する。
Figure 2008117395
上記式のシンボルを表記法で拡張することによって、以下の代替的な式のいずれかが生成される。
Figure 2008117395
ここで、g=(gi,0,gi,1,gi,2,…,gi,n−1)である。
線形ブロック符号の生成行列Gは、
Figure 2008117395
または、代替的に、
Figure 2008117395
の形を有することができる。
したがって、生成行列Gは、k×k単位行列Ik,kで拡大された行列Pの形にすることができる。
ジェネレータによってこの形で生成された符号は、「組織符号」呼ばれる。
この生成行列がワードμに適用されたとき、その結果生成されるコードワードcは、
c=(c,c,…,cr−1,μ,μ,…,μk−1
の形を有する。
ここで、c=μ0,i+μ1,i+…+μk−1k−1,iである。
この解説では、チェックシンボルがメッセージシンボルの前に来る慣行が使用されていることに留意されたい。
チェックシンボルがメッセージシンボルの後に続く代替的な慣行を使用することもでき、この場合、生成行列内のパリティチェック部分行列および単位部分行列は、この代替的な規則に従ったコードワードを生成するように挿入される。
したがって、組織線形ブロック符号では、コードワードは、r個のパリティチェックシンボルcおよびその後に続く元のワードμを含むシンボルを含む。
エラーが発生しないとき、元のワード、すなわちメッセージμは、対応するコードワード内にクリアテキストの形で現れ、対応するコードワードから容易に抽出される。
パリティチェックシンボルは、元のメッセージ、すなわちワードμのシンボルの線形結合であることが分かる。
第2の役立つ行列の1つの形は、
Figure 2008117395
または、代替的に、
Figure 2008117395
として定義されるパリティチェック行列Hr,nである。
このパリティチェック行列は、体系的なエラー検出およびエラー訂正に使用することができる。
エラー検出およびエラー訂正は、以下のように、初期受信メッセージc(r)または初期取り出しメッセージc(r)からシンドロームSを計算することを伴う。
Figure 2008117395
ここで、Hは、パリティチェック行列Hr,nの転置行列であり、
Figure 2008117395
として表される。
2元体が使用されるとき、x=−xであり、その結果、上記のHに示すマイナス符号は一般に示されないことに留意されたい。
シンドロームSは、メッセージシンボルのどれが破損しているかを判断するのに使用できるエラーロケーション多項式を計算するのに使用することができ、一定の場合に、破損しているシンボルの破損していない値を計算するのに使用することができる。
ハミング符号は、エラー訂正目的で作成された線形符号である。
3以上の任意の正の整数mについて、以下のようなコードワード長n、メッセージ長k、パリティチェックシンボル数r、および最小ハミング距離dminを有するハミング符号が存在する。
n=2−1
k=2−m−1
r=n−k=m
min=3
ハミング符号のパリティチェック行列Hは、
Figure 2008117395
として表すことができる。
ここで、Iは、m×m単位行列であり、部分行列Qは、それぞれが2つ以上の非ゼロの要素を有するmタプルである全部で2−m−1個の異なる列を含む。
たとえば、m=3の場合、[7,4,3]の線形ブロックハミング符号のパリティチェック行列は、
Figure 2008117395
である。
ハミング符号の生成行列は、
Figure 2008117395
によって与えられる。
ここで、Qは、部分行列Qの転置行列であり、
Figure 2008117395
は、(2−m−1)×(2−m−1)単位行列である。
パリティチェック行列Hからl個の列を体系的に削除することによって、
n=2−l−1
k=2−m−l−1
r=n−k=m
min≧3
を有する短縮されたハミング符号のパリティチェック行列H'を一般に得ることができる。
さまざまな用途におけるコードワード間のハミング距離を増加させるのに、他のタイプの符号が使用される。
これらの代替的な符号の多くは、生成行列を使用した容易な生成および符号化された値をコードワードから直接読み出すことを可能にする線形ブロック符号のトランスペアレントなパススルー特徴を含む線形ブロック符号の便利な特性を有しない。
線形ブロック符号の場合、プレーンテキストメッセージは、パリティチェックシンボルまたはパリティチェックビットをさらに含むコードワードに直接移行する。
他のタイプの符号では、プレーンテキストメッセージは、対応するコードワードにおいて直接読み出すことはできない。
いずれにしても、コードワードは、符号化されるすべての有効なメッセージを列挙するのに絶対必要とされるよりも多くの個数のシンボルまたはビットを含む。
線形ブロック符号の場合、追加されたシンボルまたはビットは、プレーンテキストのシンボルまたはビットを補助するパリティチェックシンボルまたはパリティチェックビットである一方、他のタイプの符号では、有効なメッセージは、コードワードサイズに等しい次元のベクトル空間全体にわたって分散される。
RAIDシステム等の大きなマスストレージシステムは、大きなストレージ容量を提供するだけでなく、冗長なストレージも提供して管理し、その結果、ディスクドライブの故障、ディスクドライブ上の特定のシリンダ、トラック、セクタ、若しくはブロックの故障、電子コンポーネントの故障、または他の故障によって、記憶されているデータの一部が喪失した場合、喪失データは、ホストコンピュータによる介入もユーザによる手動介入もなしに、大規模マスストレージシステムによって記憶され管理された冗長データからシームレス且つ自動的に回復することができる。
データベースシステムおよび企業の重要なデータを含む重要なデータストレージアプリケーションの場合、2つ以上の大規模マスストレージシステムが、多くの場合、データの地理的に分散した複数のインスタンスを記憶して維持するように使用され、壊滅的な事象によってもデータ喪失が回復不能とならないように、より高レベルの冗長性が提供される。
冗長性の1つの部類は、ディスクレベルのミラーリング、すなわち、換言すれば、データオブジェクトの複数の離散的なコピーを2個以上のディスクに記憶し、その結果、1個のディスクの故障によってデータ喪失が回復不可能とならないようにすることを伴う。
第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バイトまたはそれよりも大きなものとすることができる。
i番目のチェックサムワードcは、関数F(d,d,…,d)によりn個のデータワードすべての関数として計算することができる。
この関数は、以下のように、データワードdに係数fi,jを乗算したもののそれぞれの線形結合である。
Figure 2008117395
行列表記では、この式は、
Figure 2008117395
または
Figure 2008117395
となる。
リードソロモン技法では、関数Fは、要素fi,jがji―1に等しいm×nバンデルモンド行列となるように選ばれる。
すなわち、
Figure 2008117395
特定のワードdが、新しい値d'を有するように変更された場合、新しいi番目のチェックサムワードc'は、
c'=c+fi,j(d'−d
または
Figure 2008117395
として計算することができる。
したがって、新しいチェックサムワードは、前のチェックサムワードおよび行列Fの単一の列から容易に計算される。
ストライプからの喪失ワードは、逆行列によって回復することができる。
行列Aおよび列ベクトルEは、以下のように構築される。
Figure 2008117395
Figure 2008117395
または
Figure 2008117395
であることが容易に分かる。
修正行列A'およびE'を生成するために、行列Aの任意のm個の行およびベクトルEの対応する行を取り除くことができる。
ここで、A'は正方行列である。次に、元のデータワードを表すベクトルDを以下のように逆行列によって回復することができる。
Figure 2008117395
したがって、m個またはそれよりも少ない個数のデータワードまたはチェックサムワードが消去されたとき、すなわち喪失されたとき、m個またはそれよりも少ない喪失したデータワードまたはチェックサムワードを含むm個のデータワードまたはチェックサムワードをベクトルEから取り除くことができ、対応する行を行列Aから取り除くことができ、元のデータワードまたはチェックサムワードは、上記に示したように、逆行列によって回復することができる。
逆行列は、加算、減算、乗算、および除算のよく知られた実数算術演算を使用して実数について容易に実現されるが、デジタルエラー制御符号化に使用される離散値の行列および列の要素は、それらの離散値が、対応する離散算術演算の下で閉じた算術体を形成するときにのみ、行列乗算に適している。
一般に、チェックサムビットは長さwのワードについて計算される。
Figure 2008117395
wビットワードは、2個の異なる値のいずれをも有することができる。
ガロア体として知られている数学体は、2個の要素を有するように構築することができる。
ガロア体の要素の算術演算は、好都合なことに、
Figure 2008117395
である。
ここで、ガロア体の要素の対数および真数のテーブルは、次数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つのトラックは、「シリンダ」と呼ばれる。
ディスクデバイスのディスクコントローラは、ディスクコントローラにインターフェースするホストコンピュータ、RAIDコントローラ、および他のリモートエンティティに線形論理ブロックアドレス空間を提供するために、ディスクデバイス内における物理ブロックから論理ブロックへのアドレス指定を管理する。
以下の解説では、このインターフェースを「論理ブロックディスクインターフェース」と呼ぶ。
一般に、ディスクコントローラは、ディスクデバイス内の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バイトを別個に作成して管理する。
あるいは、ディスクアレイで使用されるディスクデバイスが可変ブロック長のフォーマットをサポートしている場合、ディスクアレイコントローラは、520バイトブロックを提供するようにディスクデバイスをフォーマットすることができ、次に、8バイトのEDCバイトを各512バイト仮想論理デバイスブロックに追加して、仮想論理デバイスインターフェースを通じたホストコンピュータに対する、ディスクアレイコントローラにより設けられた512バイトブロックを、520バイトディスクブロックにマッピングすることができる。
上述したように、前の小節では、RAIDコントローラは、リードソロモンエラー訂正符号ベースの技法を使用して、RAIDシステムにデータを冗長に記憶する。
RAIDコントローラは、多くの場合、さまざまなRAID方式のいずれかに従って消去符号化データ冗長性を組み込むように実施されたディスクアレイコントローラである。
RAID5システムは、データがストライプ化されたディスク群の1個のディスクの故障に耐えることができ、ストライプの残りのディスクに記憶されているデータから故障しているディスクのデータを回復することができる。
RAID6システムは、データがストライプ化された各ディスク群内の2個のディスクの故障を許容することができる。
図4A〜図4Dは、RAIDシステム内のRAID6冗長データストレージの一例を示している。
図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個のパリティブロックP414およびP415は、ディスク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のそれぞれにおける後続のパリティバイトを生成する。
要約すれば、ディスクアレイ内の各ディスクのディスクコントローラは、図1について解説したように、各512バイトデータブロックについてのECCバイトを管理する。
ディスクコントローラは、各512バイトディスクブロックについて作成され管理されるECCバイトの個数に応じて、且つ、使用されるエラー検出/訂正方式に応じて、一定の部類のエラーを検出して訂正することができる。
第2のレベルでは、ディスクアレイコントローラは、各512バイト論理データブロックについて複数のEDCバイトを作成して管理する。
換言すれば、ディスクアレイコントローラは、520バイト仮想ブロックを512バイト論理ブロックにマッピングする。
ディスクアレイコントローラが作成して管理するEDCバイトは、ディスクコントローラレベルでは、単にデータにすぎない。
最後に、より高いレベルでは、RAIDシステム内のRAIDコントローラは、RAIDストライプ内の各データブロック群について複数のパリティブロックを作成して管理する。
このレベルでは、パリティブロックは、データ冗長性を導入するように意図されており、それによって、RAIDコントローラは、各RAIDグループ内の1個または2個以上の故障しているディスクについてデータを再構築することが可能になる。
エラー検出方式、エラー訂正方式、および消去符号化方式の3つのすべてのレイヤは互いにオーバーラップしている。
本発明の実施形態は、RAIDシステム内の多層のエラー検出方式およびエラー訂正方式が冗長性を有することができることを認める。
したがって、本発明に従って実施されたRAIDシステムでは、図3について上述した中間レベルのエラー検出およびエラー訂正が省略されている。
RAIDコントローラは、追加のEDCバイトを作成して管理するのではなく、本発明によれば、故障しているディスクの回復およびブロックレベルのデータ破損についてのディスク内に記憶されているデータの一定の監視の双方について、RAIDコントローラが作成して管理するパリティバイトを使用する。
図5〜図6は、本発明の一実施形態を説明する制御フロー図である。
図5は、ルーチン「スクラブ(scrub)」の制御フロー図である。
ルーチン「スクラブ」は、ブロックレベルのデータ破損について記憶されているデータを監視するために、RAIDコントローラ内で連続的に実行される。
ルーチン「スクラブ」は、データ記憶コマンドおよびデータ取り出しコマンド用にプロセッサの全帯域幅を保存するために、スペアのディスクアレイコントローラ処理サイクルを使用して実行されるように設計することができる。
最初のステップ502において、ルーチン「スクラブ」が初期化される。
初期化は、RAIDシステムごとに大きく変化し得る。
ルーチン「スクラブ」は、RAIDシステムの構成、さまざまなRAIDグループの識別情報およびサイズ、並びに各RAIDグループに記憶されているデータオブジェクトの識別情報およびサイズを判断するために、記憶されているストレージシステム情報にアクセスする。
ルーチン「スクラブ」は、実行中、RAIDシステム構成に対する変更を追跡する。
次に、ステップ502〜515を含むdoループを連続的に実行する際に、ルーチン「スクラブ」は、記憶されている各データオブジェクトを検査して、いずれかのブロックが破損しているか否かを判断する。
ステップ506〜514の第2レベルのネストされたforループにおいて、ルーチン「スクラブ」は、現在のdoループの反復で記憶されている各データオブジェクトを解析する。
ステップ507〜513の次の下位レベルのforループにおいて、ルーチン「スクラブ」は、現在解析されている、記憶されているデータオブジェクトの各ストライプを解析する。
ステップ508において、ルーチン「スクラブ」は、現在考慮されている、記憶されているデータオブジェクトの次のストライプをメモリ内に読み込む。
次に、ステップ509において、ルーチン「スクラブ」は、図6について後述するルーチンをコールして、エラーについてストライプをチェックする。
エラーが検出されたとステップ510で判断された場合、ステップ511において、ルーチン「スクラブ」は、単一の回復可能なエラーが検出されたか否かを判断する。
単一の回復可能なエラーが検出された場合、そのエラーはステップ512で訂正される。
エラー回復は、破損しているブロックのデータを、ストライプの残りのブロックから、メモリにおいて再生成すること、および、次に、そのデータを、破損しているブロックの論理ブロックアドレスに再書き込みすることを伴う。
訂正されたブロックは、ディスクアレイコントローラに対してトランスペアレントに、ディスクデバイスにより破損しているブロックの論理ブロックアドレスに再マッピングされたスペアブロックに再書き込みすることができる。
あるいは、ディスクアレイコントローラは、不良ブロック再マッピングをハンドリングすることができ、破損しているブロックをスペアブロックに再マッピングすることができる。
他方、検出されたエラーが訂正可能でない場合、検出された破損しているデータには、ステップ513でフラグが立てられる。
RAIDコントローラは、高レベルルーチンで、高レベルの冗長データを他のソースから得ることにより欠陥ストライプを訂正するように努めることもできるし、あるいは、ホストコンピュータまたは他の高レベルエンティティに破損を知らせることもできる。
現在考慮されているストライプが、エラーがないと判断されるか、または、ステップ512で訂正されたか、若しくは、ステップ513でフラグが立てられた後、ステップ514において、現在考慮されている記憶されているデータオブジェクト内にストライプがさらに存在するときは、制御はステップ508に戻る。
そうでないとき、ステップ515において、解析される記憶されているデータオブジェクトがさらに存在するときは、制御はステップ507に戻る。
最後に、すべての記憶されているデータオブジェクトが現在の反復で解析されると、制御は、ステップ506に戻り、データ破損監視の次の反復を開始する。
図6は、図5のステップ509でコールされたルーチン「エラーのチェック」の制御フロー図を示している。
ステップ602において、ルーチン「エラーのチェック」は、ストライプのパリティブロックを再計算する。
再計算されたパリティブロックが、記憶されているパリティブロックと一致するとステップ604で判断された場合、検出されたエラーがないことの表示がステップ606で返される。
そうでない場合、ストライプ608において、ルーチン「エラーのチェック」は、上述したように、ストライプのシンドロームを計算し、そのシンドロームからエラーロケーション多項式を計算することにより、エラーのある1個または2個以上のブロックを識別する。
単一のブロックが破損しているとき、その破損は、図5のステップ512において、ストライプの冗長データから修復することができる。
そうでない場合、ストライプは、回復できないほどに破損しており、この場合、図5のステップ512において、破損にフラグが立てられる。
本発明を特定の実施形態の観点から説明してきたが、本発明がこれらの実施形態に限定されることは意図されていない。
本発明の趣旨の範囲内の変更は、当業者には明らかである。
たとえば、本発明の実施形態は、さまざまな異なるタイプの冗長技法、ブロックサイズ、およびディスクドライブを使用して、多種多様の異なるRAIDコントローラに組み込むことができる。
たとえば、トリプルミラーリングを使用するRAIDシステムでは、各ブロックの3つのすべてのミラートリプルを比較して、3つのすべてが一致するか否かを判断することができる。
2つが一致し、1つが異なる場合、RAIDシステムは、その異常な異なるブロックがデータ破損を表すことを推論することができ、そのブロックを2個の一致するブロックのうちの一方の内容で再書き込みすることによってデータ破損を訂正することができる。
1つの代替的なスクラブルーチンは、シンドロームを計算して使用しデータエラーを突き止めるのではなく、1個のブロックが省かれた可能な各ブロック群からストライプの内容を引き続き再計算することができる。
単一のブロックが破損しているとき、パリティチェックは、破損しているブロックが省かれたときにのみ成功する。
ストライプ内で検出された単一の不良ブロックは、そのブロックのデータを、メモリに記憶されているストライプの残りのブロックのデータから再計算することによって訂正することができる。
一般に、故障しているディスクを再構築するためにダブル冗長性がRAIDコントローラレベルで組み込まれたどのシステムにおいても、同じ冗長性を使用して、個々のストライプ内の破損しているブロックを突き止めて再構築することができる。
本発明は、磁気ディスク以外のストレージデバイスに基づくデータストレージシステムにも適用可能である。
本発明の方法を組み込むRAIDコントローラは、異なるモジュール編成、異なるデータ構造体、異なる制御構造体、異なる変数、および他のよく知られたプログラミングパラメータおよびプログラミング特性における差異を有する任意の個数の異なるプログラミング言語でプログラミングすることができる。
RAIDコントローラは、ファームウェア、ハードウェア、ソフトウェア、または、ファームウェア、ハードウェア、およびソフトウェアの2つ以上の組み合わせで実施することができる。
本発明のデータ破損監視技法は、連続的に適用することもできるし、それよりも長い間隔で適用することもでき、より高いレベルのロバスト性およびフォールトトレランスを、記憶されているデータの選択部分に提供するために選択的に適用することができる。
上記説明では、説明の目的で、本発明の徹底した理解を提供するために特定の用語体系を使用した。
しかしながら、本発明を実施するのに特定の詳細は必要とされないことが当業者には明らかである。
本発明の特定の実施形態の上記説明は、例示および説明の目的で提示されるものである。
それらの説明は、網羅的であることを意図するものでもなければ、開示した正確な形に本発明を限定することを意図するものでもない。
上記教示に鑑み、多くの変更および変形が可能であることは明らかである。
実施形態は、本発明の原理およびその実用的な適用を最も良く説明し、それによって、他の当業者が、本発明およびさまざまな変更を有するさまざまな実施形態を、検討した特定の使用に適するように最も良く利用することを可能にするために示されて説明されたものである。
本発明の範囲は、添付の特許請求の範囲およびその均等物によって画定されることが意図されている。
最新式のディスクストレージデバイスを示す。 通常のディスクアレイを示す。 ディスクアレイ内に含まれるディスクデバイスによってディスクインターフェースに設けられた論理ブロックにディスクアレイコントローラによりマッピングされた線形データ空間内における、ディスクアレイコントローラが管理するエラー検出符号(「EDC」)バイトを示す。 RAIDシステム内のRAID6冗長データストレージの一例を示す。 RAIDシステム内のRAID6冗長データストレージの一例を示す。 RAIDシステム内のRAID6冗長データストレージの一例を示す。 RAIDシステム内のRAID6冗長データストレージの一例を示す。 本発明の一実施形態を説明する制御フロー図を提供する。 本発明の一実施形態を説明する制御フロー図であり、図5のステップ509で呼び出されたルーチン「エラーのチェック」の制御フロー図を示す。
符号の説明
104・・・磁気ディスクプラッタ,
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. 複数のデータストレージデバイスと、
    少なくとも1つのデータストレージシステムコントローラであって、
    前記データストレージデバイスによって提供された論理ブロックデバイスインターフェースを仮想論理デバイスインターフェースにマッピングすることと、
    データ冗長方式を使用することであって、それによって、該データストレージシステム内の記憶されているそれぞれのデータオブジェクトのそれぞれのストライプ内に十分な冗長データを2個以上のパリティブロックとして記憶し、データ冗長ディスク群の少なくとも2つの故障しているデータストレージデバイスに含まれるデータを回復することと、
    前記データ冗長方式を使用することであって、それによって、ブロックレベルのデータ破損について、記憶されているデータオブジェクトを監視することと
    を行うデータストレージシステムコントローラと
    を備えるデータストレージシステム。
  2. 前記複数のデータストレージデバイスは、論理ブロックディスクインターフェースをアクセスエンティティにそれぞれ提供する複数の磁気ディスクである
    請求項1に記載のデータストレージシステム。
  3. 前記冗長方式は、少なくとも2個のパリティブロックが、該少なくとも2個のパリティブロックと共にストライプを構成する固定サイズのデータブロック群のそれぞれについて生成されて記憶される消去符号化冗性ベースのRAID方式である
    請求項1に記載のデータストレージシステム。
  4. 前記少なくとも1つのデータストレージシステムコントローラは、前記データ冗長方式を使用して、
    反復して、
    記憶されている前記それぞれのデータオブジェクトの前記それぞれのストライプについて、
    前記それぞれのストライプをメモリ内に読み込むことと、
    前記パリティブロックをメモリにおいて再計算することと、
    前記再計算されたパリティブロックをメモリに記憶されているそのストライプの前記パリティブロックと比較することと、
    前記再計算されたパリティブロックが前記それぞれのストライプの前記パリティブロックと一致しないときは、
    パリティブロック一致エラーをハンドリングすること
    を行うことにより、ブロックレベルのデータ破損について、記憶されているデータオブジェクトを監視する
    請求項3に記載のデータストレージシステム。
  5. 前記少なくとも1つのデータストレージシステムコントローラは、
    パリティブロック一致エラーが、前記それぞれのストライプの単一のブロックが破損していることを示すときは、
    前記単一の破損しているブロックを突き止めることと、
    前記単一の破損しているブロックのデータを、前記それぞれのストライプの残りのブロックから再生成することと、
    前記再生成されたデータを置換ブロックに再書き込みし、前記パリティブロック一致エラーが、前記それぞれのストライプの複数のブロックが破損していることを示すときは、前記それぞれのストライプを破損しているものとしてフラグを立てることと
    により、前記パリティブロック一致エラーをハンドリングする
    請求項4に記載のデータストレージシステム。
  6. 前記単一の破損しているブロックを突き止めることは、前記それぞれのストライプのシンドロームを計算すること、および前記シンドロームからエラー突き止め多項式を計算すること
    をさらに含む請求項5に記載のデータストレージシステム。
  7. 前記単一の破損しているブロックのデータを、前記それぞれのストライプの残りのブロックから再生成することは、
    該それぞれのストライプの該残りのブロックから逆行列により該単一の破損しているブロックの前記データを計算すること
    をさらに含む
    請求項5に記載のデータストレージシステム。
  8. 前記単一の破損しているブロックを突き止めることは、
    前記それぞれのストライプの各ブロックを順に考慮して、
    前記それぞれのストライプの前記現在考慮されているブロックを除くすべてから前記それぞれのストライプを再計算することと、
    前記再計算されたストライプのパリティチェックが成功するときは、前記現在考慮されているブロックが破損していると判断することと
    をさらに含む
    請求項5に記載のデータストレージシステム。
  9. データ冗長方式を使用して、データストレージシステム内の記憶されている各データオブジェクトの各ストライプ内に十分な冗長データを2個以上のパリティブロックとして記憶し、データ冗長ディスク群の少なくとも2つの故障しているデータストレージデバイスに含まれるデータを回復する前記データストレージシステムにおいて、ブロックレベルのデータ破損について、記憶されているデータオブジェクトを監視するための方法であって、
    反復して、
    記憶されているそれぞれのデータオブジェクトのそれぞれのストライプについて、
    前記それぞれのストライプをメモリ内に読み込むことと、
    前記それぞれのストライプのパリティブロックをメモリにおいて再計算することと、
    前記再計算されたパリティブロックを前記それぞれのストライプの前記パリティブロックと比較することと、
    前記再計算されたパリティブロックが前記それぞれのストライプの前記パリティブロックと一致しないときは、
    パリティブロック一致エラーをハンドリングすること
    を行うことを含む方法。
  10. 前記少なくとも1つのデータストレージシステムコントローラは、
    パリティブロック一致エラーが、前記それぞれのストライプの単一のブロックが破損していることを示すときは、
    前記単一の破損しているブロックを突き止めることと、
    前記単一の破損しているブロックのデータを、前記それぞれのストライプの残りのブロックから再生成することと、
    前記再生成されたデータを置換ブロックに再書き込みし、前記パリティブロック一致エラーが、前記それぞれのストライプの複数のブロックが破損していることを示すときは、前記それぞれのストライプを破損しているものとしてフラグを立てることと
    により、前記パリティブロック一致エラーをハンドリングする
    請求項9に記載の方法。
  11. 前記単一の破損しているブロックを突き止めることは、
    前記それぞれのストライプのシンドロームを計算することと、
    前記シンドロームからエラー突き止め多項式を計算することと
    をさらに含む
    請求項10に記載の方法。
  12. 前記単一の破損しているブロックのデータを、前記それぞれのストライプの残りのブロックから再生成することは、
    該ストライプの該残りのブロックから逆行列により該単一の破損しているブロックの前記データを計算すること
    をさらに含む
    請求項10に記載の方法。
  13. 前記単一の破損しているブロックを突き止めることは、
    前記それぞれのストライプの各ブロックを順に考慮して、
    前記それぞれのストライプの前記現在考慮されているブロックを除くすべてから前記それぞれのストライプを再計算することと、
    前記再計算されたストライプのパリティチェックが成功するときは、前記現在考慮されているブロックが破損していると判断することと
    をさらに含む
    請求項10に記載の方法。
  14. 請求項9に記載の方法を実施するコンピュータ可読メモリに記憶されているプロセッサ命令。
  15. 請求項9に記載の方法を実施するコンピュータ可読メモリに記憶されているファームウェア命令。
JP2007279763A 2006-10-31 2007-10-29 フォールトトレラントデータストレージシステムにおけるブロックレベルのデータ破損の検出および訂正 Expired - Fee Related JP4668970B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (13)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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