JP4283859B2 - 記憶サブシステムおよびその作動方法 - Google Patents

記憶サブシステムおよびその作動方法 Download PDF

Info

Publication number
JP4283859B2
JP4283859B2 JP2007104593A JP2007104593A JP4283859B2 JP 4283859 B2 JP4283859 B2 JP 4283859B2 JP 2007104593 A JP2007104593 A JP 2007104593A JP 2007104593 A JP2007104593 A JP 2007104593A JP 4283859 B2 JP4283859 B2 JP 4283859B2
Authority
JP
Japan
Prior art keywords
parity
data
disk
stripe
raid
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP2007104593A
Other languages
English (en)
Other versions
JP2007184011A (ja
Inventor
デイビット・ヒッツ
マイケル・マルコム
ジェームス・ロー
バイロン・ラッキッツィズ
Original Assignee
ネットアップ,インコーポレイテッド
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 ネットアップ,インコーポレイテッド filed Critical ネットアップ,インコーポレイテッド
Publication of JP2007184011A publication Critical patent/JP2007184011A/ja
Application granted granted Critical
Publication of JP4283859B2 publication Critical patent/JP4283859B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

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
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/18Error detection or correction; Testing, e.g. of drop-outs
    • G11B20/1833Error detection or correction; Testing, e.g. of drop-outs by adding special lists or symbols to the coded information
    • 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/1059Parity-single bit-RAID5, i.e. RAID 5 implementations
    • 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/1061Parity-single bit-RAID4, i.e. RAID 4 implementations

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Description

本発明はディスクアレイのエラー補正の技術分野に関する。
コンピュータ装置は、一般に、情報(例えばデータ及び/又はアプリケーションプログラム)を格納するために、ディスクドライブのような大容量の二次的なメモリを必要とする。従来のコンピュータ装置は、大容量のデータを永久的に保存するために、単一の“ウインチェスタ”型ハードディスクドライブをよく使用している。コンピュータと関連するプロセッサの性能が良くなるにしたがって、大容量のディスクドライブと高速のデータ移送性の要求が増してきた。それとともに、ディスクドライブ性能の変更や改良が為されてきた。例えば、データ及びトラック密度の増加、媒体改良、及び単一のディスクドライブにおいて、多数のヘッドとディスクを用いることにより、高速のデータ移送性が可能になった。
二次的な保存のために単一のディスクドライブを使用することの問題は、非常に大きい容量又は性能が必要となった場合の、ドライブ交換の費用である。別の問題は、単一のディスクドライブに余裕又はバックアップが不足することである。単一のディスクドライブが損傷したり、動作不能になったり、又は交換されると、そのシステムは停止する。
単一のディスクドライブシステムの上述の問題を軽減し又は解消するために従来行われてきたことは、並列に相互連結された複数のドライブを使用することである。データは、並列につながれた多数のドライブから同時に又は複数のドライブのシングルドライブから連続的にアクセスできる固まりに分解される。ディスクドライブを並列に連結したシステムの一つが、“高価でないディスクの冗長アレイ”(レイド:RAID)として知られている。RAIDシステムは、大きなシングルディスクドライブシステムと同一の記憶容量を有し、しかも低価格である。同様に、高速データ移送性もアレイの平行処理により達成される。
RAIDシステムにより、アレイにディスクドライブを追加するにしたがって記憶容量が大きくなる。RAIDシステムのディスクが壊れた場合、全体システムを停止することなく、ディスクを交換できる。壊れたディスク上のデータはエラー補正法を用いて回復できる。
<<RAIDアレイ>>
RAIDは、RAIDレベル0からRAIDレベル5と呼ばれる6つのディスクアレイの形態を有する。それぞれのRAIDレベルは利点と欠点を有する。本説明では、RAIDレベル4と5だけを説明する。しかしながら、それぞれのRAIDレベルの詳細な説明は、パターソン等によるA Case for Redundant Arrays of Inexpensive Disk (RAID)、 ACM SIGMOD Conference,1988年6月、に記述されている。この論文は本明細書中に組み込まれている。
RAIDシステムはディスク破壊から保護する技術を提供する。RAIDは多数の異なるフォーマット(既述)を包含するが、共通の特徴は、一つのディスク(又は複数のディスク)がディスクアレイ中に保存されたデータのパリティ情報を保存しているという点である。RAIDレベル4のシステムは、全てのパリティ情報を単一のディスク上に保存するのに対して、RAIDレベル5のシステムは公知のパターンにしたがってRAIDアレイの全体にわたってパリティブロックを保存する。ディスクが壊れた場合、RAIDサブシステムに保存されたパリティ情報により、壊れたディスクから損失したデータを再び計算できる。
図1は、RAIDレベル4を備えた従来のシステムを表したブロック図である。このシステムは、コンピュータシステム又はホストコンピュータに通信チャンネル130を介して接続されたN+1個のディスク112−118を備えている。この実施例では、データは各ハードディスク上で4Kバイト(KB)のブロック又はセグメントに保存される。ディスク112はシステム用のパリティディスクであって、ディスク114−118はデータディスク0ないしデータディスクN−1である。RAIDレベル4は、図1に示すように、アレイ中のすべてのディスクにデータブロックを分配するディスク“ストライピング”を使用する。ストライプは一群のデータブロックで、そこでは各ブロックがN個の別々のディスク上に保存されるとともに、対応するパリティブロックが一つのパリティディスク上に保存される。図1において、第1と第2のストライプ140と142は点線で示してある。最初のストライプ140はパリティ0ブロックとデータブロック0からN−1を備えている。図示する実施例では、最初のデータブロック0が、N+1個のディスクアレイのディスク114上に保存される。第2のデータブロック1はディスク116に保存される。最後に、データブロックN−1はディスク118に保存される。公知の方法を用いてストライプ140に対するパリティが計算され、それはディスク112上にパリティブロック0として保存される。同様に、N個のデータブロックを有するストライプ142が、ディスク114にデータブロックN、ディスク116にデータブロックN+1、さらにディスク118にデータブロック2N−1というように保存される。ストライプ142に対してパリティが計算され、それがパリティブロック1としてディスク112に保存される。
図1に示すように、RAIDレベル4は、システム中の各ストライプに対してエラー補正情報を含む特別のパリティディスクドライブを付加する。システム中にエラーが発生した場合、RAIDアレイはアレイ中のすべてのドライブを使用してシステム中のエラーを補正しなければならない。RAIDレベル4は、データのごく一部を読み取る際に適正に動作する。しかし、RAIDレベル4アレイは常に、アレイ中にデータを書き込む際に専用のパリティドライブを使用する。
RAIDレベル5のアレイシステムもまたパリティ情報を記録する。しかし、単一のドライブ上にすべてのパリティセクターを保持することはない。RAIDレベル5は、N+1個のディスクのディスクアレイ中で利用可能なディスク上でパリティブロックの位置を循環させる。したがって、RAIDレベル5のシステムは、パリティデータをN+1個のディスクドライブ上で一度に1ブロックずつ順番に循環させて分散させることによりRAID4の性能を改善している。最初の組のブロックでは、パリティブロックは最初のドライブに保存される。第2組のブロックでは第2のディスクドライブに保存される。各セットがパリティブロックを有するように繰り返される。しかし、全てのパリティ情報が一つのディスクドライブに保存されることはない。RAIDレベル5システムでは、一群のブロックに対するすべてのパリティ情報を一つのディスクに保持させていないので、一度にアレイ中のいくつかの複数のドライブに書き込みが可能である。したがって、RAIDレベル5システム上では読み取りと書き込みの両方がRAID4アレイよりも素早く行われる。
図2はRAIDレベル5を有する従来のシステムを表すブロック図である。そのシステムは、通信チャンネル130によりコンピュータシステム又はホストコンピュータに接続したN+1個のディスク212ないし218を備えている。ストライプ240では、パリティブロック0が第1のディスク212に保存されている。データブロック0は第2のディスク214に保存され、データブロック1が第3のディスク216に保存されている。最後に、データブロックN−1がディスク218に保存されている。ストライプ242では、データブロックNが第1ディスク212に保存されている。第2のパリティブロック1は第2のディスク214に保存されている。データブロックN+1はディスク216に保存されている。最後にデータブロック2N−1がディスク218に保存されている。M−1のストライプ242では、データブロックMN−Nが第1のディスク212に保存されている。データブロックMN−N+1は第2のディスク214に保存されている。データブロックMN−N+2は第3のディスク216に保存されている。最後に、パリティブロックM−1はn番目のディスク218に保存されている。したがって、図2は、RAIDレベル5システムがRAIDレベル4システムと同一のパリティ情報を保存していることを示しているが、RAIDレベル5システムはパリティブロックの位置を利用可能なディスク212ないし218上で循環させている。
RAIDレベル5では、パリティがディスクアレイに分配される。これによりディスクを多重検索できる。また、ある決められた数のディスクをパリティ要求のためにシステムに付加しなければならないので、RAIDアレイのサイズが大きくなるのが防止される。
RAIDレベル4及び5を備えた従来のシステムはいくつかの問題がある。最初の問題は、システムが故障すると、各ストライプのパリティ情報がこのストライプ中の他のディスク上に保存されているデータブロックと調和しないということである。そのために全RAIDアレイについてパリティを再び計算しなければならない。どのパリティブロックが正しくないのか判断する方法がないので、パリティはすべて再度計算される。したがって、RAIDアレイにおけるすべてのパリティブロックは再び計算されなければならない。RAIDアレイに保存されているすべてのデータを読む必要があるので、すべてのRAIDアレイについてパリティを再び計算することは多大な時間の浪費である。例えば、2GBのディスクを最大速度で読んでも終了するのに15分から20分かかる。しかし、殆どのコンピュータは非常に多くのディスクを並行して最大速度で読み取ることはできないので、RAIDアレイについてパリティを再度計算するのは多くの時間がかかる。
RAIDアレイに関してパリティを再度計算するのに要する時間を軽減する一つの方法は、RAIDアレイに即座にアクセスして、オンライン状態の間にシステムに対するパリティを再度計算できるようにすることである。しかし、この方法は2つの問題がある。最初の問題は、パリティを再計算する間、不一致パリティを有するブロックが更なる破壊から保護されていないということである。この間にRAIDアレイ中のディスクが壊れると、システム中のデータを永久的に失う。この従来技術の第2の問題は、パリティ計算中にRAIDサブシステムは満足に動作しないということである。これはパリティの再計算に必要な複数の入力/出力(I/O)処理により生ずる時間遅延によるものである。
従来のシステムの第2の問題点は、ディスクが機能していない間のRAIDアレイへの書き込みにある。RAIDサブシステムはパリティ情報を用いて故障したディスク上のデータを再計算できるので、そのRAIDサブシステムはたとえディスクが故障していてもデータを依然として読み込むことができる。また、多くのRAIDシステムは、ディスクが故障していても書き込みが継続できる。これは、システムが故障した場合に、壊れたRAIDアレイに書き込むことにより、データを破壊することがあるので問題である。例えば、RAIDアレイを使用するオペレーティング・システムがクラッシュしたり、又はシステムへの電力供給が断たれた場合に、システム故障が生じる。従来のRAIDサブシステムはこの一連の事象に対する保護機能を備えていない。
本発明は、不揮発性ランダムアクセスメモリ(NV−RAM)を使用してディスクアレイをエラー補正する方法である。
不揮発性RAMはディスクエラーからRAIDを回復させる速度を早くするために使用される。これは、パリティが一致しないすべてのディスクブロックのリストを保持することにより達成される。ディスクブロックのそのようなリストはRAIDサブシステムにおけるパリティブロックの全体数よりも小さい。RAIDサブシステムにおけるパリティブロックの全体数は通常数十万のパリティブロックの範囲にある。不一致のパリティブロック数の情報により、従来技術で可能であった時間よりもかなり短時間の間に、リスト中で確認された数のブロックを、修正することができる。本発明はまた同時に起こるシステムの故障と壊れたディスクに対する保護の方法と、一つの壊れたディスクを用いてRAIDサブシステムへの安全に書き込む方法を提供するものである。
本発明によれば、システムが故障した後にパリティを再計算するために必要な時間を低減し、故障しているディスクにデータが書き込まれ、かつ、そのシステムがクラッシュした場合、RAIDアレイ中のデータが破壊されるのを防止することができる。
不揮発性ランダムアクセスメモリ(NV−RAM)を用いてディスクアレイのエラーを補正する方法と装置を説明する。以下の説明において、本発明をさらに詳細に説明するために、ディスクの数や性質、ディスクブロックのサイズ等のような数多くの特定の細部を詳細に説明する。しかし、当業者にとって、それらの詳しい細部の説明がなくても本発明が実施できることは明らかである。その他の実施例では、本発明が不必要に不明瞭にならないように、公知の特徴部分は詳細に説明しない。
特に、多くの実施例ではストライプ中の一つのブロックだけが更新された場合を考えているが、説明する技術は多数のブロックを更新する場合でも同様に適用できる。
本発明は、システムが故障した後にパリティを再計算するために必要な時間を低減し、故障しているディスクにデータが書き込まれ、かつ、そのシステムがクラッシュした場合、RAIDアレイ中のデータが破壊されるのを防止する方法を提供する。本発明はこれらの問題を解消するために不揮発性RAMを使用している。従来技術の説明とその問題は以下の通りである。この従来技術の問題は、システムが故障したときのパリティ破壊、壊れたディスクに対する書き込みによるデータ破壊、及びシステムとディスクが同時に障害を受けたときのデータ破壊について説明されている。
<<RAIDを用いた損失データの再計算>>
ストライプ中に保存されたデータブロックを排他的論理和演算することによりパリティが計算される。N個のデータブロックから計算されたパリティ値は、ストライプのパリティブロックに記録される。いずれかの一つのブロックからのデータが例えばディスク破壊によって損失されると、ディスクに関する損失したデータはストライプ中に残っているブロックを排他的論理和演算することにより再計算される。一般的に、ストライプ中のデータブロックが修正されると、パリティがストライプに対して再計算されなければならない。N個すべてのデータブロックを書き込むことによってストライプを更新する場合、ディスクからデータを読むことなく、パリティを計算でき、パリティとデータはたった一回のI/Oサイクルの間に書き込むことができる。したがって、ストライプ中のN個数のすべてのデータブロックに対して書き込むのに要する時間は、最小となる。一つのデータブロックをディスクに書き込む場合、減算によるパリティが使用される(後述する)。一回のI/Oサイクルを行うには古いデータとパリティを読み込む必要があり、第2のI/Oサイクルでは新たなデータとパリティを書き込む必要がある。RAIDアレイ中のディスク駆動部は同期していないので、書き込みは一般に正確に同時に起こることがない。ある場合には、パリティブロックはディスクに最初に到達し、その他の場合にはデータブロックの一つがディスクに最初に到達する。ここで説明する技術はブロックがディスクに到達する順番とは無関係である。
非同期駆動部を有するディスクに関する別の択一例において、最初にパリティを計算し、ディスクに書き込んだ後、データブロックをディスクに書き込む。RAIDアレイ中のディスク上の各データブロックは4KBのデータを保存する。以下の説明では、各4KBブロック中のデータを一つの大きな整数(64Kビットの長さ)として扱う。したがって、図面では、パリティとデータディスクのブロックに保存された情報について整数値が示してある。図面を簡単にして、説明を目的とするだけのために、この習慣を使用するものである。
図3Aは従来のRAIDレベル4のサブシステム(N=3の場合)を示す図で、4つのディスク330ないし336を備えている。図において、ディスク330はパリティディスクである。ディスク332ないし336はデータディスクである。図は、RAIDアレイ中のディスク330ないし336に含まれるストライプ320を示す。ディスクブロック330Aは、整数値12を含むパリティブロックである。ディスクブロック332Aないし336Aはそれぞれストライプ320のデータブロックである。データブロック332Aないし336Aはデータ値4、7、及び1をそれぞれ含む。一つのストライプ320中の各ブロック332Aないし336Aのデータが整数として表されている。ストライプ320のパリティはデータブロック332Aないし336Aに保存されているデータ値の合計を示す。パリティブロック330Aは値12(すなわち4+7+1)を含む。図3Aは、パリティを用いたエラー補正方法の単なる一つの例を示す図である。パリティ値はデータブロック332Aないし336Aの排他的論理和演算であるが、数学的加算特性は排他的論理和関数のそれに一致する。したがって、図3Aでは加算が使用されている。
図3Bは、図3Aに示すストライプ320上での動作のタイミング図である。そのテーブルはパリティ、データ0、データ1及びデータ2の見出しを有する。その値12、4、7、及び1は対応するテーブルの見出しの下に表されている。
図3Bは時刻TBの時点での失われたデータブロックを有するストライプを示すテーブルである。図3Bに示すように、ストライプ320は、図3Aのデータディスク334から失われたデータブロック1中の損失データを含む。これは、データ1の見出しの下で箱により囲まれた疑問符を用いてテーブル中に示してある。時刻TBの時点で、パリティ、データ0、およびデータ2はそれぞれ値12、4、1を有する。データブロック1用のディスク334上のデータは以下のようにして即座に再計算される。
データ1=パリティ−データ−データ2=12−4−1=7 (1)
ここでデータブロック1は、パリティブロック、データブロック0、及びデータブロック2を用いて計算される。したがって、図3Aに示すディスク334のデータブロック1に保存されたデータ値7は時刻TCの時点で再計算される。図3Bにおいて、時刻TCに、データブロック1に関して再計算された値7が括弧に囲まれて示されている。以下の図面では、再計算された値は括弧を用いて示してある。すなわち、括弧内に示された値は、壊れたディスクのデータを意味し、パリティとその他のディスク上にあるデータにより再計算されたものである。
図3Bに示すように、壊れたディスク上のデータは、パリティディスクとディスクアレイ中に残りのディスクを用いて再計算できる。図3Aに示す壊れたディスク334は最終的に置き換えられ、ディスクの古い内容は再計算されて新しいディスクに書き込まれる。図3Cは新しいデータ1に関するディスク338を含むRAIDサブシステムのブロック図である。図3Cに示すように、ストライプ320は、パリティ、データ0、新たなデータ1、及びデータ2に対して値12、4、7、及び1を有する。これらの値はパリティブロック330A、データブロック332A、338A、及び336Aに保存される。したがって、新しいディスク338はRAIDシステムの壊れたディスク334に置き換わり、それまでディスク334のデータブロック334Aに保存されていたデータ値は以上のようにして計算されて、置換ディスク338のデータブロック338Aに保存される。
新たなデータがデータブロックに書き込まれると、パリティブロックも更新される。ストライプ中のすべてのデータブロックが一度に更新されると、パリティは以上のようにして簡単に計算される。このとき、パリティのための新たな値がディスクに書き込まれる情報から再計算される。新たなパリティとデータのブロックは次にディスクに書き込まれる。ストライプ中の一部のデータブロックだけが修正されると、パリティブロックの更新がさらに難しくなる。というのも、それは多くのI/O処理が必要となるからである。この場合、パリティを更新するには2つの方法がある。減算によるパリティの更新と、再計算によるパリティの更新である。
例えば、一つのデータブロックに書き込みが行われた場合、RAIDシステムは減算によりパリティを更新できる。RAIDシステムはパリティブロックと上書きされるブロックを読み取る。システムはまずパリティ値から古いデータ値を減算し、データブロックの新たなデータ値を中間のパリティ値に加算し、そして新たなパリティとデータのブロックを共にディスクに書き込む。
パリティを再計算するために、RAIDシステムはまずストライプ中のその他のN−1個のデータブロックを読み込む。N−1個のデータブロックを読んだ後、RAIDシステムは、修正されたデータブロックと、ディスクからのN−1個のデータブロックを用いて最初からパリティを再計算する。パリティが再計算されると、新たなパリティとデータのブロックがディスクに書き込まれる。
パリティを更新するための減算と再計算の方法はともに、1より多いデータブロックが同一ストライプに書き込まれる場合に一般化することができる。減算の場合、パリティブロックといま正に上書きされようとしているすべてのデータブロックの現在の内容とが、まずディスクから読み取られる。再計算において、いま正に上書きされることのないすべてのデータブロックの現在の内容はまずディスクから読み込まれる。ストライプ中のすべてのN個のデータブロックが同時に書き込まれるのは、再計算によるパリティを縮小(縮退)する場合である。書き込まれないすべてのデータブロックはまずディスクから読み込まれるが、本実施例ではそのようなブロックはない。
<<システムが故障した場合に何故ストライプが不一致になるか>>
不一致のストライプは、当該ストライプ中の他のブロックの排他的論理和とはならないパリティブロックを備えている。ストライプは、システムが故障したとき、更新に関する書き込みの幾つかは終了しているがその他が未だ終了していないという場合に不一致となる。例えば、最初のデータブロックが上書きされる場合である。上述のように、ストライプのパリティブロックは再計算されてデータブロックと共に上書きされる。データブロックの一つがディスクに書き込まれたがその他は未だ書き込まれていないという状況でシステムが故障すると、ストライプが不一致となる。
ストライプは、それが更新される場合にのみ不一致となり得る。したがって、いずれの場合も、潜在的な不一致のストライプ数は更新中のストライプ数に限られる。そのため、本発明は、NV−RAM中に、現在更新中のすべてのストライプを含むリストを保持する。これらのストライプだけが潜在的に壊れることがあるので、システム故障後に、NV−RAM中のリストに保存されているストライプだけに対して、パリティが再計算される。これにより、上述した時間のかかる従来方法に比べて、システム故障後のパリティ再計算に要する全体時間を大幅に低減できる。
<<従来技術におけるシステム故障の際のパリティ破壊>>
以下の図面において、故障したデータディスクに関して括弧内に示した値は、ディスクに保存されている実際の値ではない。むしろ、RAIDアレイ中の壊れたディスクに関して、メモリに保持されている計算値である。
図4Aはシステムクラッシュを示す図で、変更値は図3Aのディスク330ないし336に書き込まれる。その図は、データブロックがパリティブロックよりも前にディスクに達する場合のものである。図4Aに示すように、時間は下方に向かって増大する。時刻TAにおいて、パリティブロックは12、データブロック0から2は4、7、及び1の値をそれぞれ有する。時刻TBにおいて、新たな値2がデータブロック0に書き込まれ(値2の回りの箱で示してある)、これにより時刻TAにデータブロック0に保存されている値4が置き換えられる。データブロック1と2に保存されているその他の値は変更されない。通常に動作している状態では、従来の方法では時刻TCの値10(箱で示す)がパリティの見出しの下に示したパリティディスクに書き込まれる。これにより、時刻TBにデータブロック0への書き込みに対するパリティブロックが更新される。時刻TCにパリティに対する新たな値10がデータブロック0ないし2の値2、7、及び1からそれぞれ計算される。したがって、図4Aのタイミング図は、データブロックがパリティブロックよりも前にディスクに達する場合の従来のRAIDサブシステムを示している。
図4Aにおける時刻TBとTCとの間にシステム故障が発生すると、このストライプに関するパリティが壊れる。そのタイミング図は、ストライプに関して再計算されたパリティが更新される以前に、時刻TBに新たなデータ値2がデータディスク0に書き込まれることを示す。したがって、RAIDサブシステムがその後再スタートすると、パリティディスクは正しい値10の代わりに古い値12(アンダーラインで示す)を持つ。これは、システム故障が発生する前にストライプが更新されないことに起因する。ストライプに関するパリティは壊れている。何故ならば、
パリティ=データ0+データ1+データ2=2+7+1=10≠12 (2)
だからである。
同様に、図4Bは別の従来の図を示し、これはシステムクラッシュを示し、変更値は図3Aのディスク330ないし336に書き込まれる。その図は、データブロック以前にパリティブロックがディスクに到達する場合のものである。時刻TAにおいて、パリティブロックは値12、ディスクブロック0ないし2は4、7、及び1をそれぞれ有する。時刻TBにおいて、新たな値10(値10の回りを箱で示す)がパリティブロックに書き込まれ、それにより時刻TAにパリティブロックに保存されている値12を置き換える。データブロック0ないし2に保存されているデータ値は変更されない。時刻TBにおけるパリティの新たな値10は、データブロック1と2の値7と1、及びデータブロック0の新たな値2から計算される。通常に動作している場合、従来技術では、新たなデータ値2は、データ0の見出しの下に示すように、データディスク0に時刻TCの時点で書き込まれる。これにより時刻TBにおけるパリティブロックへの書き込みにしたがってデータブロック0が更新される。したがって、図4Aのタイミング図は従来のRAIDサブシステムを示し、そこではパリティブロックがデータブロック以前にディスクに到達する。
図4Bにおける時刻TBとTCとの間にシステムが故障すると、ストライプに関してパリティが壊れる。そのタイミング図は、ストライプのデータブロック0が更新される前に、時刻TBの時点で新たなパリティ値10がパリティディスクに書き込まれることを示している。したがって、RAIDサブシステムがその後に再スタートすると、データディスク0は正しい値2の代わりに古い値4(アンダーラインで示す)を持つ。これは、システム破壊が発生する前にストライプが更新されかったことによる。ストライプに関するパリティは今壊れている。何故ならば、
パリティ=データ0+データ1+データ2=4+7+1=12≠10 (3)
だからである。
図4Aないし4Bは、RAIDアレイ中のディスク駆動部が同期していない場合の、新たなデータがデータブロックに書き込まれる場合とパリティディスクが更新される場合の2つの事例を示す。図4Aに示す最初の事例は、新たなデータ値がデータディスクに最初に到達し、その後にパリティディスクのパリティ値が更新される場合を示す。図4Bに示す第2の事例は、パリティがディスクに最初に到達し、その後にデータが更新される場合を示す。図4Aと4Bに関して、時刻TBとTCとの間でシステムが故障すると、ファイルシステムの破壊が発生する。システムが図4Aと4Bの時刻TB後に故障した場合、図示するパリティ値は当該システムに関して正しいものではない。図4Aに示すシステムの場合、新たなデータ値は合計値10を有し、これは値2、7、及び1の合計に等しい。しかし、時刻TBにおけるパリティ値は値12を示している。したがって、パリティディスクに保存されているパリティ値は、データディスク0ないし2に保存されているデータ値のための新たなパリティ値と等しくない。同様に、図4Bに示す第2のシステムについて時刻TB後に故障が発生すると、データディスク0ないし2はそれぞれ4、7、及び1の値を持つ。それらのデータブロックに関するパリティ値は12に等しい。しかし、このシステムのパリティは、新たなデータ値がディスクに書き込まれる前に更新されるので、時刻TBの時点でパリティディスクに保存されているパリティは10に等しい。したがって、時刻TBの後に、パリティディスクに保存されたパリティはデータブロックのためのパリティ値と等しくない。これは、新たなデータが、システム故障の前に更新されていなかったからである。
従来の方法では、システムが故障して、システムが再スタートするとすべてのストライプについてパリティが再計算される。すべてのストライプに関する故障後のパリティの再計算方法には徹底的な計算が必要で、そのために極めて遅い。本発明はシステムが故障した後にパリティを再計算する方法である。そのシステムは、不揮発性RAMの中に進行中の書き込み値を備えたストライプのリストを維持する。システムが故障した後に再スタートすると、不揮発性RAMに保存されている進行中の書き込み値を有するリストだけが再計算される。
<<従来技術における破壊ディスクへの書き込みによるデータ破壊>>
故障した又は壊れたディスクを有するRAIDアレイに書き込みを行うと、システム故障中にデータ破壊が発生する。図6は、パリティをディスクに書き込む前に新たなデータ値に関してデータディスクが更新された場合、システム故障が発生すると、故障したディスクに関するデータが破壊されることを表した従来の図である。図6において、データ1の見出しの下で括弧内に示すことにより、データディスク1が故障していることを表している。時刻TAに、パリティディスクは値12を有する。データディスク1が故障した時刻TA以前は、パリティディスクの値は、値4、7、及び1をそれぞれ有するデータディスク0ないし2の合計に等しい。時刻TAにおけるデータブロック1の値7が括弧で囲まれている。この値はデータディスク1に保存されている値を表すものではなく、代わりに、以下のようにして、ストライプのパリティブロックとデータブロック0ないし2から計算されたものである。
データ1=パリティ−データ0−データ2=12−4−1=7 (4)
時刻TBでは、新たな値2がデータディスク0に書き込まれる(箱内で2を囲んで示す)。時刻TBの時点では、パリティはデータディスク0に書き込まれている新たな値2に対して更新されておらず、値12を持つ。したがって、データブロック1に関して計算された値は7ではなく、9である。これは、時刻TBにおけるデータディスク1に関して、括弧内の値9を囲んで図6に示されている。
時刻TCの時点で通常に動作する場合、パリティブロックは、時刻TBの時点でデータブロック0に書き込まれる値2によって、10に更新される。時刻TCでのパリティに対する新たな値10は長方形の中に示してある。パリティ値10について、データブロック1に関する正しい値7が括弧内に示してある。図6に示すように、データディスク1が壊れているので、データブロック1に保存されているデータはディスクアレイにおけるその他のブロックから計算される。時刻TBでデータブロック0に対して最初に書き込んだ後は、データブロック1の計算値は正しくなくなっている。データブロック1に関する値9は、時刻TCにおけるパリティに関する次の書き込みが終了するまでは不正確である。
時刻TBとTCとの間でシステム破壊が発生すると、故障したディスク又は壊れたディスクを有するRAIDアレイに書き込むことにより、ストライプ中のデータが破壊される。従来の方法に関して図6に示すように、パリティは更新されず、そのために値12を有する(アンダーラインで示す)。したがって、ストライプのデータブロック1に関する計算値は不正確で、ストライプは以下のようにして破壊される。
データ1=パリティ−データ0−データ2=12−2−1=9≠7 (5)
同様のデータ破壊は、データが到達する前にパリティがディスクに到達した場合に発生する。
<<システムとディスクの同時故障によるデータ破壊>>
RAIDシステムは、停電によりシステム故障が発生した場合、ディスク破壊を経験する可能性が大いにある。一般に、停電後に発生する過渡電圧の急激な立ち上がりによってディスクはダメージを受ける。したがって、システムとディスクの同時故障によって、ストライプが壊れる可能性がある。
図9はシステムとディスクの同時故障を示す従来の図で、そこではパリティがディスクに書き込まれる前に、新たなデータ値に関してデータディスクが更新される。時刻TAでは、パリティディスクは値12、データディスク0ないし2はそれぞれ4、7、及び1を有する。時刻TBでは、新たな値2がデータディスク0に書き込まれる(箱で示す)。時刻TBの時点では、パリティは、データディスク0に書き込まれた新たな値2に関して更新されず、値12を有する。時刻TBとTCとの間でシステム破壊が発生すると、ディスク1の値は破壊される。これは、時刻TBとTCとの間に、システムとディスク同時に故障することにより発生する。
時刻TCでは、システム故障によりパリティは更新されず、したがって値10ではなく、値12を有する。また、データディスク1はディスク故障により壊れる。データブロック1に関する計算値9は正しくない。以下のように、破壊されたパリティ値を用いてデータディスク1に関し、不正確に計算される。
データ1=パリティ−データ0−データ2=12−2−1=9≠7 (7)
パリティがデータよりも前にディスクに到達する場合、データが同様に破壊される。
<<本発明の概要>>
図8はRAIDシステム用にNV−RAMを用いてエラー補正する本発明を示す図で、このシステムは、ホストコンピュータ810、NV−RAM816を有するRAIDコントローラ814、及びN+1個のディスク820ないし826を備えている。ホストコンピュータ810は第1の通信チャンネル812によりRAIDコントローラ814に接続されている。RAIDコントローラ814は、不一致状態になる可能性のあるRAIDアレイ828のストライプを保存するためにNV−RAM816を備えている。RAIDコントローラ814は、第2の通信チャネル818によりRAIDアレイ828のN+1個のディスク820ないし826に接続されている。RAIDアレイ828はパリティディスク820とN個のデータディスク822ないし826をそれぞれ備えている。
NV−RAM816は、潜在的に不一致となり得るパリティディスク820に保存されているすべてのパリティブロックのリストを維持することにより、システム故障後にRAIDを回復する速度を増すべく使用されている。一般的には、このブロックのリストは小さい。それは、RAIDアレイ828中のパリティブロックの全体数に対して数オーダー小さくできる。例えば、RAIDアレイ828は数十万のパリティブロックを有するのに対して、潜在的に不一致のブロックは僅か数百以下である。潜在的に不一致となる少数のパリティブロックを知ることにより、パリティの再計算が格段に容易になる。その理由は、それらのパリティブロックだけを再保存すればよいからである。
本発明は、システム故障によりデータを破壊することなく、NV−RAM816を用いて壊れたディスクを含むRAIDアレイ828にデータを安全に書き込むことができる。破壊される可能性のあるデータは、破壊動作が始まる前にNV−RAM816にコピーされる。システム故障後、NV−RAM816に保存されたデータを用いて、RAIDアレイ828を矛盾ない状態に回復する。
図11AないしCは、本発明により実行されるステップを示すフロー図である。まず図11Aを参照すると、ブート処理が実行される。判定ブロック1101では、システムがちょうど故障したか否か判定される。判定ブロックで正しいと判断された場合には、システムはステップ1102に進み(図11B)、回復処理を実行する。判定ブロックで誤りと判断された場合、システムは通常処理のためにステップ1103に進む(図11C)。
図11Bは、システム故障後の回復のフロー図を示す。判定ブロック1104では、不正ストライプのリストとして特定されたストライプがNV−RAM内に残っているか否か判定する。判定ブロック1104で誤りと判断された場合、システムはリターンステップに進む。判定ブロック1104で正しいと判定された場合、システムはステップ1105に進む。
ステップ1105では、ストライプ番号が得られる。ステップ1106では、パリティを再計算するために必要な特定ストライプのデータブロックが読み込まれる。ステップ1107では、このストライプに関してパリティが再計算される。ステップ1108では、このストライプに対して新たなパリティブロックが書き込まれる。次に、このシステムは判定ブロック1104に戻る。
通常の処理が図11Cに示してある。ステップ1109では、ストライプを更新するために必要なすべてのブロックが読み込まれる。ステップ1110では、このストライプに関する新たなパリティが、新たなデータを使って計算される。ステップ1111では、そのストライプのストライプ番号が、NV−RAM中の不正ストライプのリストに書き込まれる。ステップ1112では、ストライプを更新するために必要なディスクブロックがディスクに書き込まれる。ステップ1113では、ストライプ番号がNV−RAMの不正ストライプのリストから除去される。
<<NV−RAMを用いたシステム故障に対するパリティ破壊>>
図5は、NV−RAMを用いてパリティ破壊を防止する本発明を示す図である。図11AないしCを参照してタイミング図を説明する。図5はシステム破壊を示す本発明のタイミング図で、変更する値は図3Aのディスク330ないし336に書き込まれる。その図は、パリティが新たなデータについて計算され、そのデータがパリティブロックを更新する前にデータに書き込まれる場合のものである。時刻TAの時点で、パリティブロックは値12、データブロック0ないし2は値4、7、及び1をそれぞれ有する。TAの時点で、本発明に関する図11Cのステップ1109が実行され、ストライプを更新するのに必要なブロックがメモリに書き込まれる。そのシステムはステップ1110を実行し、そこでは新たなパリティ値が新たなデータ値に基づいて計算される。時刻TBの時点では、図11Cのステップ1111が実行され、そこでストライプ番号がNV−RAMに書き込まれる。
時刻TCでは、ステップ1112で、新たなデータ値2(値2を囲む箱で示す)がデータブロック0に書き込まれ、時刻TBにデータブロック0に保存されている値4に置き換わる。データブロック1と2に保存されているその他の値は変更されない。最初に、システムが故障しない通常の場合を考える。本発明では、新たなパリティ値10(パリティの見出しの下に箱で示す)が時刻TDにステップ1112で書き込まれる。これにより、時刻TCにおけるデータブロック0への書き込みに対するパリティブロックが更新される。時刻TEには、ステップ1113で、NV−RAMのストライプ番号がクリアされる。したがって、パリティディスクとデータディスク0ないし2に関するブロックを有するストライプがそれぞれ10、2、7、及び1を有する。
次に、時刻tCとtDとの間(ステップ1111と1113との間)にシステムが故障した場合を考える。このシステムはリブートし、図11Aのスタート時点で実行開始される。
判定ブロック1101では、時刻TDにおいて、システム故障が発生すると、判定ブロック1101は正しい(Yes)と判定する。ストライプは、パリティに対する値12(アンダーラインで示す)とデータディスク0ないし2に対する値2、7、及び1をそれぞれ有する。図5に示すように、時刻TCにおいて、システム故障後のパリティは壊れている。これは次の理由からである。
パリティ=データ0+データ1+データ2=2+7+1=10≠12 (9)
しかしながら、ストライプは矛盾のない状態まで回復できる。NV−RAMは回復対象であるストライプを指摘でき、すなわち更新されるストライプのリストを有する。パリティ値以外のすべての値はディスク上のものを用いることができる。(“2”という値は時刻TCにおいてディスクに書き込まれたものである)。ストライプに関するデータ値はディスクから読み取られ、新たなパリティ値10が計算される。
パリティ=データ0+データ1+データ2=2+7+1=10 (10)
したがって、新たに計算されたパリティ値10は、時刻TDにステップ1108でパリティディスクに書き込まれ、ストライプは最早壊れていない。
以下のものは図11Cの処理を説明する疑似コードの例である。
(1)ストライプを更新するために必要なすべてのディスクブロックを読む。
(2)新たなパリティの内容を計算する。
(3)NV−RAMの不正ストライプリストに書き込まれるように、ストライプに対するストライプに番号(#)を付す。
(4)ストライプを更新するのに必要な全てのディスクブロックを書き込む。
(5)直前に書き込まれたストライプに対する番号をNV−RAM不正ストライプリストから取り除く。
システムの故障後に、図11Bのスタートアップ手続の一部を以下の疑似コードを用いて説明する。
(NV−RAM不正ストライプリストで特定されたすべてのストライプ)に関して

(1)ストライプ中にあるすべてのデータブロックを読み取る。
(2)ストライプのためのパリティブロックを再計算する。
(3)ストライプのための新たなパリティブロックを書き込む。

こうして、本発明によれば、NV−RAMを使用することにより、システム破壊後にパリティが壊れるのを防止できる。
<<リストの代わりにビットマップを用いることによるパリティ破壊の検出>>
前節では、壊れる可能性のあるストライプのリストをNV−RAMに保持しており、システムが壊れた後の再起動した際に、リストにあるストライプに対してのみ、パリティブロックを再計算する必要がある。本発明の別の実施例は、NV−RAM中のビットマップを用いて、壊れる可能性のあるストライプを指摘し、このとき、システム破壊した場合にそのパリティブロックを再計算する必要がある。
この方法ではビットマップを使用し、そこでは各ビットが1またはそれ以上のストライプ群を示している。一般的なディスクアレイは250,000のストライプを備えている。ビットマップの各入力が一つのストライプを示す場合、そのビットマップは約32KBである。隣接する32個のストライプ群を各ビットを用いて示すことにより、その容量を1KBに縮小できる。
システム故障後にあっては、どのストライプがパリティ再計算を必要とするかを判断するために、リストに代わってビットマップを使用しているという点を除いて、この方法は“ストライプのリスト”と本質的に同一である。ビットマップ中にビットが設定されている群のすべてのストライプに対して、それらのパリティが再計算される。
通常処理中にビットマップを管理するのは、リストを管理するのと少し異なる。更新が完了するやいなやビットマップにおけるストライプのエントリ(ビット)を消去するのは最早不可能である。一つのビットは一以上のストライプの動作を指示することがあるからである。あるストライプの更新は行われるかもしれないが、同一ビットを共有する別のストライプは依然として動作中(アクティブ)であるかもしれない。
代わりに、ストライプを更新する直前に、ストライプのための適当なビットが設定されるが、更新が完了した後でも消去されない。ビットマップが大量のエントリを蓄積している場合、周期的に、不一致のストライプがないことを保証するために、すべてのブロックをディスクに記録した後、全ビットマップが消去される。以下の疑似コードはこれを実施する。
(1)ストライプを更新するために必要なすべてのブロックを読み込む。
(2)新たなパリティの内容を計算する。
(3)更新されるストライプに対するビットマップのエントリを設定する。
(4)ストライプの更新に必要なすべてのディスクブロックを書き込む。
(5)ビットマップが満杯の場合、すべてのブロックがディスクに到達するまで待機し、すべてのビットマップを消去する。
システム故障の際、ビットマップを用いる場合、リストを用いた場合よりも、より多くのブロックを再計算する必要があるが、システム内のすべてのストライプに関してパリティを再計算するのに比べると、依然として相当に時間を節約することができる。一般的なRAIDシステムは250,000のストライプを有し、壊れる可能性のあるストライプがビットマップ内に2,500あったとしても、それはシステム内のストライプの僅か1%に過ぎない。
ビットマップ法は書き込み−キャッシュディスクを用いると特に有益である。これは、停電時にデータがディスクに到達するのを保証するものではない。そのようなディスクは、実際にデータを書き込む前の所定時間、RAMにデータを保持することができる。これは、ストライプ更新段階が終了した後でも、パリティ破壊の可能性があることを意味する。たとえストライプがリストから除かれても、ストライプのパリティは依然として破壊される可能性があるので、リスト法は動作しない。
したがって、ビットマップ法を使用し、ビットマップがクリアされると同時に内部キャッシュを書き込むように各ディスクに指示すると、書き込み−キャッシュディスクドライブと組み合わせて本発明を動作させることができる。
<<NV−RAMを用いて壊れたディスクへ書き込む際のデータ破壊>>
本発明は、壊れたディスクからのデータを不揮発性RAM内に保存することにより、破壊ディスクへの書き込み時におけるデータ破壊に対する問題を解消する。図7Aは、故障したディスクからデータをNV−RAM内に保存することにより、データ破壊を防止する本発明のタイミング図である。図11AないしCを参照して図を説明する。図7Aにおいて、パリティが更新される前にデータがディスクに書き込まれる。時刻TAにおいて、壊れたデータディスク1は、括弧内に示した値7を有するように表示されている。括弧内の値7は、データディスク1が故障し、このディスクに対する再計算された値であることを示している。この値は、パリティディスクに保存されている値12から、データディスク0と2の値4と1を減算することにより計算される。ステップ1109では、ストライプが時刻TAにRAIDアレイから読み込まれる。NV−RAMは消去される。これは図7AにおいてNV−RAMに関する見出しの下の疑問符で示してある。
時刻TBの時点で、故障したデータディスク1の値7はステップ1109にしたがってNV−RAMに書き込まれる。NV−RAMに書き込まれるデータディスク1に対する値7は、図7A中の長方形箱を用いて示されている。次に、システムは図11Cのステップ1110において、このストライプの新しいパリティ値を計算する。
時刻TCでは、データディスク0の新しい値2(箱で示す)が、ステップ1112にしたがって、このストライプのパリティが更新される前に、ディスクに書き込まれる。したがって、時刻TCには、データディスク1の値は9で、括弧内に示されている。システムが故障していない通常の場合、新たなパリティ値10が時刻TDにディスクに書き込まれ、ディスク1の再計算された正しい値が7になる。時刻TCとTDとの間にシステム故障が発生すると、パリティの新たな値は、時刻TCにデータディスク0に書き込まれる値2に関してNV−RAMを用いて正しく更新される。
ステップ1106にしたがって、NV−RAMに保存されているすべての機能しているデータディスクに関する値を最初に読み取って、時刻TDにパリティが正しく更新され、その値の計算は以下の通りである。
パリティ=データ0+NV−RAM+データ2=2+7+1=10 (12)
こうして、システムが故障した後に本発明が再スタートすると、パリティに関して正しい値10が計算される。ステップ1108では、値10が時刻TDにパリティディスクに書き込まれ、計算された値D1を正しい値7に戻す。時刻TEにおいて、NV−RAMはステップ1113でクリアされる。したがって、本発明によれば、NV−RAMを使用することによって、ディスクが故障したときに、システム故障によってデータが破壊されるのを防止できる。
図7Bは、データが更新される前にパリティがディスクに書き込まれる場合に、データを故障したディスクからNV−RAM内に保存することによりデータ破壊を防止する本発明のタイミング図である。時刻TAにおいて、壊れたデータディスク1が、括弧内に示した値7を有するように示してある。この値は図7Aを参照して上述のように計算される。ステップ1109では、時刻TAにおいてストライプがRAIDアレイから読み込まれる。NV−RAMがクリアされ、それはNV−RAMの見出しの下の疑問符で示してある。
時刻TBにおいて、故障したデータディスク1の値7がステップ1109にしたがってNV−RAMに書き込まれる。NV−RAMに書き込まれるデータディスク1の値7は図7Bで長方形箱により示してある。次に、システムは、図11のステップ1110でストライプに関するパリティの新たな値を計算する。
時刻TCでは、データブロック0を更新する前に、パリティの新たな値10(箱で示す)が、ステップ1108でパリティディスクに書き込まれる。したがって、時刻TCにおいて、データディスク1の値は5で、括弧内に示してある。時刻TCとTDとの間でシステム故障が発生した場合、新たなパリティ値がNV−RAMを用いてパリティディスクについて正しく更新される。判定ブロック1101では、システムが再起動した後、システム故障が発生したか否か判定する。そして、本実施例では判定ブロックでは正しい(Yes)に戻り、ステップ1104を継続する。
以下のように、パリティは時刻TDにその値を再計算して正しく更新される。
パリティ=壊れたディスクのNV−RAM(7)
+壊れていないディスクのディスク上のデータ
=4+7+1=12 (13)
したがって、図7Aないし7Bに示すように、システムがまさにストライプに書き込みを実施しようとするとき、故障したデータディスク1に関する値を不揮発性RAM内に保存する。次に、データディスク0(パリティ)の新たな値をディスクに書き込む。新たな値を時刻TCにディスク0(パリティディスク)に書き込んだ後にシステム破壊が発生すると、データディスク1の値が破壊される。システム故障後、新たなパリティ値(データディスク0)は、データディスク1のために計算された値5の代わりに、NV−RAMに保存されている値7を用いて計算される。パリティの値(データディスク0)は次にディスクに書き込まれる。これが完了すると、NV−RAMは消去される。
<<NV−RAMを用いたシステムとディスクの同時破壊>>
本発明は、ストライプブロックをNV−RAM内に保存することにより、システムとディスクの破壊が同時に発生したときの、パリティとデータの破壊に関する問題を解消する。NV−RAMを使用することにより、システム中の複数のブロック(以下の例では、データブロック0と1)を更新している間に、システム故障が発生した場合、システムを矛盾のない状態に回復できる。これらのデータブロックを変更すれば、このストライプのパリティも更新することが必要となる。本発明では、このため、ディスクから読み取られる任意のブロックを常にNV−RAM内に保存する(データブロック0を更新する前に、任意のブロックをNV−RAMに書き込む)。したがって、ストライプ情報はNV−RAMに保存されているデータから再計算できる。本発明は、そのために減算によるパリティと再計算によるパリティを用いる2つの解決法を提供するものである。
減算によるパリティでは、パリティブロックとデータブロックを含むデータは、それを更新する前にディスクから読み取られる。図10Aは、ストライプのブロックをNV−RAM内に保存することにより、パリティとデータの破壊を防止するための、本発明にかかるタイミング図である。図11AないしCを参照して図面を説明する。図10Aにおいて、パリティが更新される前にデータはディスクに書き込まれる。時刻TAでは、パリティブロックとデータブロック0がRAIDアレイから読み込まれる。NV−RAMは消去される。これは、図10Aにおいて、NV−RAM用の見出しの下の疑問符で示してある。
時刻TBにおいて、パリティブロックとデータブロック0は、ディスクから読み込まれるときに、NV−RAMに書き込まれる。NV−RAMに書き込まれるパリティブロックとデータブロック0は、図10Aにおいて長方形の箱で示してある。システムは次にデータブロック0の値2に対する新たなパリティ値を計算する。
時刻TCにおいて、データディスク0の新たな値2(箱で示す)は、ストライプのパリティを更新する前に、ディスクに書き込まれる。時刻TCとTDとの間にシステム故障が発生すると、RAIDアレイ中のディスクが故障し、本発明は壊れたディスクの3つの場合、パリティディスク、データディスク0、及びデータディスク1(又は2)について解決策を提供する。判定ブロック1101では、システム破壊が発生したか否か判定する。本実施例では、判定ブロックは正しい(Yes)に戻り、ステップ1104で継続される。パリティが減算により計算される場合、システム破壊により3つのディスクが壊れた事例について、それぞれ図10Aないし10Cに示す。
図10Aの時刻TDにおいて、時刻TCとTDとの間で、システム故障によってパリティディスクが壊れる。この場合、何も行われない。いかなるデータも失われず、パリティディスクにはいかなる情報も書き込まれることがない。
図10Bを参照すると、時刻TDにおいて、時刻TCとTDとの間のシステム故障によりデータディスク0が破壊される。この場合のパリティを再計算する一般式は、次の通りである。
パリティ=“壊れたディスクのNV−RAM”
+“壊れていないすべてのディスクのディスク上の値”
本実施例では、それは次のようになる。
パリティ=NV(データ0)+データ1+データ2=4+7+1=12
その結果、壊れたディスクに関するNV−RAM内に保存された値を、壊れたディスクに再保存するために、パリティが更新される。この特別な例では、パリティの新たな値は古い値に調和することがある。データ0の他にその他のデータブロックが更新され、しかもシステム破壊の前にそれらの一つがディスクに到達した場合、新たなパリティ値は古いものと一致することがない。
図10Cを参照すると、時刻TDにおいて、時刻TCとTDとの間のシステム破壊によりデータディスク1が破壊される。この場合は、ステップ1114でNV−RAMからパリティとデータディスク0の値を読み込み、それらをディスク(箱で示す)に書き込むことで処理される。したがって、データディスク0に対する変換は上書きされるが、ストライプは矛盾のない状態に戻る。データディスク1は、その値を括弧で囲うことにより、時刻TDとTEにおいて破壊されたものとして示されている。そして、破壊されたデータディスク1の値は、以下のように、時刻TDの時点で7に正しく計算される。
データ1=NV(パリティ)−NV(データ0)−データ2
=12−4−1=7 (14)
ここで、NV(パリティ)とNV(データ0)は、NV−RAMに保存されているパリティとデータブロック0の値である。時刻TEには、NV−RAMがクリアされる。したがって、図10Cにおいて、時刻TCとTDとの間のシステム破壊後にデータディスク1(壊れたディスク2も同様に処理される)が故障しても、ストライプは本発明によって矛盾のない状態に保たれる。
この場合、以下のようにして、壊れたディスクの古い内容を最初に計算することにより処理できる。
D1計算値=NVパリティ
−“更新されるディスクのNV値”
−“更新されないデータディスクのディスク上の値”
新たなパリティ値は以下の式から計算される。
パリティ=“上述のステップから得たD1計算値”
+“壊れていないすべてのデータディスクに関するディスク上の値”
<<再計算によるパリティを用いたときのシステムとディスクが同時破壊>>
再計算によるパリティにおいて、更新されていないデータブロックはまずディスクから読み取られた後、まさに書き込まれようとしている新たなデータと組み合わせた値に基づいてパリティが再計算される。多数のデータブロックが一度に更新される場合に、これは一般に使用される。何故ならば、それらの場合に、減算によるパリティよりも一層効率的だからである。簡単にするために、本実施例では、一つのブロックだけを更新する。示されている方法は任意の数のブロックを更新する場合に適用される。
図12Aないし12Cは再計算によるパリティのタイミング図である。時刻TA、TB、及びTCに関して、それらはすべて一致している。
時刻TAにおいて、ステップ1109では、ブロックD1とD2がディスクから読み込まれる。ステップ1110において、システムは、ディスク1と2からちょうど読み込まれたデータと共にディスク0に関する新たなデータに基づいて新たなパリティを計算する。
時刻TBにおいて、ステップ1111では、ブロックD1とD2が、それらが属するストライプを指定しながらNV−RAMに書き込まれる。
時刻TCにおいて、ステップ1112の間、新たな値“2”がディスク0に書き込まれる。通常の場合、パリティブロックはまたステップ1112の際中に書き込まれ、破壊されることはない。
本実施例では、ディスク故障との組み合わさったシステム故障がある。システムが故障した後にシステムがリブートすると、ステップ1101で処理が開始される。故障があるので、判定ブロックは正しい(Yes)に戻り、ステップ1102で続けられ、NV−RAMの内容に基づいてRAIDサブシステムを回復するために必要なステップを実行する。
図12Aは、パリティディスクが壊れた場合を示す。この場合、何も行われる必要がない。データディスクは壊れていないので、データが失われる可能性はない。
図12Bは、更新すべきディスクが壊れた場合を示す。なお、時刻TDにおいて、ディスク0に関して計算された値は正しくない。一般に、複数のブロックが更新されると、NV−RAM内の情報は、失われたデータブロックを再生する上で十分ではない。これは、再計算によるパリティを用いる場合、NV−RAMに呼び出されるデータは、更新されないデータであるためである。壊れたディスク上のデータはどこにも保存されていない。
この場合、本発明では、壊れたディスクの内容をゼロに設定する新たなパリティ値を計算する。そのための一般式は次の通りである。
パリティ=壊れていないディスクの合計
また、この実施例では、それは以下の通りである。
パリティ=D1+D2=7+1=8
時刻TEに新たなパリティ値が書き込まれ、また時刻TEにD1とD2に関するNV−RAM値がクリアされる。
新たなデータを古いデータと同じ場所に書き込む従来のファイルシステムでは、データブロックをゼロ化することは行われない。しかし、WAFLによれば、これは常に新たなデータをディスク上の不使用位置に書き込むものであり、書き込まれるブロックをゼロ化することは問題ない。何故ならば、ブロックの内容はファイルシステムの一部ではないからである。
図12Cは、更新されないディスクが壊れた場合を示す。なお、時刻TDにおいて、ディスク1の計算値は正しくない。パリティを再計算する式は以下の通りである。
パリティ=“壊れたディスクのNV−RAM値”
+“壊れていないディスクに関するディスク上の値”
本実施例では、それは次の通りである。
パリティ=NV(D1)+D0+D2=7+2+1=10
時刻TEに新たなパリティ値が書き込まれ、また時刻TFにD1とD2に関するNV−RAM値がクリアされる。
このようにして、不揮発性ランダムアクセスメモリ(RAM)を用いたディスクアレイに関するエラー補正の方法と装置が開示されている。
図1は従来のRAIDレベル4サブシステムのブロック図である。 図2は従来のRAIDレベル5サブシステムのブロック図である。 図3Aは“ストライプ”に保存されたデータの再計算を表示する従来の図である。 図3Bは“ストライプ”に保存されたデータの再計算を表示する従来の図である。 図3Cは“ストライプ”に保存されたデータの再計算を表示する従来の図である。 図4Aはシステム故障の際のパリティ破壊に対する従来のタイミング図である。 図4Bはシステム故障の際のパリティ破壊に対する従来のタイミング図である。 図5は故障したディスクへの書き込みが発生したときにデータが破壊されるのを防止する本発明のタイミング図である。 図6は壊れたディスクによる書き込み上のディスク破壊を示すタイミング図である。 図7Aは壊れたディスクによる書き込み上のデータ破壊を防止する本発明のタイミング図である。 図7Bは壊れたディスクによる書き込み上のデータ破壊を防止する本発明のタイミング図である。 図8は本発明を示す図である。 図9はシステムとディスクが同時に故障することによりデータが破壊されるのを示すタイミング図である。 図10Aはシステムとディスクが同時に故障することによりデータが破壊されるのを防止する本発明のタイミング図である。 図10Bはシステムとディスクが同時に故障することによりデータが破壊されるのを防止する本発明のタイミング図である。 図10Cはシステムとディスクが同時に故障することによりデータが破壊されるのを防止する本発明のタイミング図である。 図11Aは回復処理を示す本発明のフロー図である。 図11Bは回復処理を示す本発明のフロー図である。 図11Cは回復処理を示す本発明のフロー図である。 図12Aは再計算によるパリティのタイミング図である。 図12Bは再計算によるパリティのタイミング図である。 図12Cは再計算によるパリティのタイミング図である。
符号の説明
810:ホストコンピュータ、814:RAIDコントローラ、816:NV−RAM、812:第1の通信チャンネル、818:第2の通信チャネル、820〜826:ディスク、828:RAIDアレイ、

Claims (4)

  1. 記憶サブシステムであって、
    複数のストライプのデータおよびそのパリティ情報を記録する複数のディスクを含むRAIDアレイと、
    RAIDアレイ内のディスクから独立した不揮発性メモリと、
    書き込み処理の要求に対し、これにより影響を受ける、RAIDアレイ内の1つまたはそれ以上のストライプを特定する情報を含むストライプ情報を、不揮発性メモリに記憶させることにより応答するRAIDコントローラとを備え、
    ストライプ情報は、ストライプ番号情報を含み、
    RAIDコントローラは、書き込み処理が完了する前に生じたシステム故障の後に、ストライプ情報を用いて、前記1つまたはそれ以上のストライプに対してのみパリティを再計算し、RAIDアレイ内の他のストライプに対してパリティを再計算する必要性を排除して、RAIDアレイを適正な状態に回復させ
    RAIDコントローラは、ストライプの適正なパリティを再計算するために必要な1つまたはそれ以上のストライプのブロックを読み出すステップと、ストライプの適正なパリティを再計算するステップと、ストライプの適正なパリティをRAIDアレイ内のストライプに書き込むステップとによりストライプのパリティを補正し、
    ストライプの適正なパリティを再計算するステップは、
    RAIDアレイのストライプの1つ以上のブロックを更新するために、1つ以上のブロックに書き込む前に、前記ストライプの1つ以上の該ブロックおよび該パリティ情報を不揮発性メモリに読み込むステップと、
    不揮発性メモリから前記ブロックおよび該パリティ情報をRAIDアレイに書き込むステップとを含むことを特徴とする記憶サブシステム。
  2. 請求項に記載の記憶サブシステムであって、
    RAIDコントローラは、
    RAIDアレイの壊れたディスクのデータを不揮発性メモリに記憶させ、
    システム故障の後に、不揮発性メモリに記憶された、壊れたディスクの前記データを用いて、ストライプの適正なパリティを再計算することを特徴とする記憶サブシステム。
  3. 複数のストライプに含まれるデータおよびパリティ情報を記録する複数のディスクを含むRAIDアレイと、RAIDアレイ内のディスクから独立した不揮発性メモリとを備えた記憶サブシステムを作動させる方法であって、
    書き込み処理の要求に対し、これにより影響を受ける、RAIDアレイ内の1つまたはそれ以上のストライプを特定する情報を含むストライプ情報を、不揮発性メモリに記憶させることにより応答するステップと、
    書き込み処理中に生じたシステム故障の後に、ストライプ情報を用いて、前記1つまたはそれ以上のストライプに対してのみパリティを再計算し、RAIDアレイ内の他のストライプに対してパリティを再計算する必要性を排除して、RAIDアレイを適正な状態に回復させるステップと、ストライプ情報は、ストライプ番号情報を含み、
    ストライプの適正なパリティを再計算するために必要な1つまたはそれ以上のストライプのブロックを読み出すステップと、ストライプの適正なパリティを再計算するステップと、ストライプの適正なパリティをRAIDアレイ内のストライプに書き込むステップとによりストライプのパリティを補正するステップとを有し、
    ストライプの適正なパリティを再計算するステップは、
    RAIDアレイのストライプの1つ以上のブロックを更新するために、1つ以上のブロックに書き込む前に、前記ストライプの1つ以上の該ブロックおよび該パリティ情報を不揮発性メモリに読み込むステップと、
    不揮発性メモリから前記ブロックおよび該パリティ情報をRAIDアレイに書き込むステップとを含むことを特徴とする方法。
  4. 請求項に記載の方法であって、
    RAIDアレイの壊れたディスクのデータを不揮発性メモリに記憶させるステップと
    システム故障の後に、不揮発性メモリに記憶された、壊れたディスクのデータを用いて、ストライプの適正なパリティを再計算するステップとを含むことを特徴とする方法
JP2007104593A 1993-06-04 2007-04-12 記憶サブシステムおよびその作動方法 Expired - Lifetime JP4283859B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US7179893A 1993-06-04 1993-06-04

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP1995502000 Division 1994-06-02

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2008133346A Division JP4408939B2 (ja) 1993-06-04 2008-05-21 記憶サブシステムおよびその作動方法

Publications (2)

Publication Number Publication Date
JP2007184011A JP2007184011A (ja) 2007-07-19
JP4283859B2 true JP4283859B2 (ja) 2009-06-24

Family

ID=22103665

Family Applications (3)

Application Number Title Priority Date Filing Date
JP7502000A Pending JPH08511368A (ja) 1993-06-04 1994-06-02 不揮発性メモリを用いてraidサブシステムにパリティを形成する方法
JP2007104593A Expired - Lifetime JP4283859B2 (ja) 1993-06-04 2007-04-12 記憶サブシステムおよびその作動方法
JP2008133346A Expired - Lifetime JP4408939B2 (ja) 1993-06-04 2008-05-21 記憶サブシステムおよびその作動方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP7502000A Pending JPH08511368A (ja) 1993-06-04 1994-06-02 不揮発性メモリを用いてraidサブシステムにパリティを形成する方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2008133346A Expired - Lifetime JP4408939B2 (ja) 1993-06-04 2008-05-21 記憶サブシステムおよびその作動方法

Country Status (6)

Country Link
US (3) US5948110A (ja)
EP (2) EP1031928B1 (ja)
JP (3) JPH08511368A (ja)
DE (1) DE69434381T2 (ja)
HK (1) HK1028281A1 (ja)
WO (1) WO1994029795A1 (ja)

Families Citing this family (163)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6604118B2 (en) 1998-07-31 2003-08-05 Network Appliance, Inc. File system image transfer
US6138126A (en) 1995-05-31 2000-10-24 Network Appliance, Inc. Method for allocating files in a file system integrated with a raid disk sub-system
US5963962A (en) * 1995-05-31 1999-10-05 Network Appliance, Inc. Write anywhere file-system layout
DE69434381T2 (de) 1993-06-04 2006-01-19 Network Appliance, Inc., Sunnyvale Verfahren zur Paritätsdarstellung in einem Raid-Untersystem unter Verwendung eines nichtflüchtigen Speichers
US5671377A (en) * 1994-07-19 1997-09-23 David Sarnoff Research Center, Inc. System for supplying streams of data to multiple users by distributing a data stream to multiple processors and enabling each user to manipulate supplied data stream
US5533190A (en) * 1994-12-21 1996-07-02 At&T Global Information Solutions Company Method for maintaining parity-data consistency in a disk array
GB2307071B (en) * 1995-06-21 1998-04-29 Mitsubishi Electric Corp Multi-media storage system
US5758057A (en) * 1995-06-21 1998-05-26 Mitsubishi Denki Kabushiki Kaisha Multi-media storage system
WO1997011426A1 (en) 1995-09-18 1997-03-27 Cyberstorage Systems, Inc. Universal storage management system
US5893164A (en) * 1997-05-30 1999-04-06 Unisys Corporation Method of tracking incomplete writes in a disk array and disk storage system which performs such method
JP3618529B2 (ja) * 1997-11-04 2005-02-09 富士通株式会社 ディスクアレイ装置
US6516351B2 (en) * 1997-12-05 2003-02-04 Network Appliance, Inc. Enforcing uniform file-locking for diverse file-locking protocols
KR19990060338A (ko) * 1997-12-31 1999-07-26 윤종용 하드 디스크 드라이브의 바이러스에 의한 손상 데이터복구방법
US6119244A (en) 1998-08-25 2000-09-12 Network Appliance, Inc. Coordinating persistent status information with multiple file servers
US6219753B1 (en) * 1999-06-04 2001-04-17 International Business Machines Corporation Fiber channel topological structure and method including structure and method for raid devices and controllers
JP2001043031A (ja) * 1999-07-30 2001-02-16 Toshiba Corp 分散パリティ生成機能を備えたディスクアレイ制御装置
EP1912124B8 (en) 1999-10-14 2013-01-09 Bluearc UK Limited Apparatus and system for implementation of service functions
US6321294B1 (en) * 1999-10-27 2001-11-20 Mti Technology Corporation Method and apparatus for converting between logical and physical memory space in a raid system
US6640233B1 (en) * 2000-08-18 2003-10-28 Network Appliance, Inc. Reserving file system blocks
US7072916B1 (en) 2000-08-18 2006-07-04 Network Appliance, Inc. Instant snapshot
US6728922B1 (en) 2000-08-18 2004-04-27 Network Appliance, Inc. Dynamic data space
US6636879B1 (en) * 2000-08-18 2003-10-21 Network Appliance, Inc. Space allocation in a write anywhere file system
US6654912B1 (en) 2000-10-04 2003-11-25 Network Appliance, Inc. Recovery of file system data in file servers mirrored file system volumes
US6952797B1 (en) 2000-10-25 2005-10-04 Andy Kahn Block-appended checksums
US6990667B2 (en) 2001-01-29 2006-01-24 Adaptec, Inc. Server-independent object positioning for load balancing drives and servers
US6862692B2 (en) * 2001-01-29 2005-03-01 Adaptec, Inc. Dynamic redistribution of parity groups
US20020138559A1 (en) * 2001-01-29 2002-09-26 Ulrich Thomas R. Dynamically distributed file system
US7054927B2 (en) 2001-01-29 2006-05-30 Adaptec, Inc. File system metadata describing server directory information
US6990547B2 (en) * 2001-01-29 2006-01-24 Adaptec, Inc. Replacing file system processors by hot swapping
US20020174295A1 (en) 2001-01-29 2002-11-21 Ulrich Thomas R. Enhanced file system failure tolerance
US20020191311A1 (en) * 2001-01-29 2002-12-19 Ulrich Thomas R. Dynamically scalable disk array
JP4017177B2 (ja) * 2001-02-28 2007-12-05 スパンション エルエルシー メモリ装置
US6799284B1 (en) 2001-02-28 2004-09-28 Network Appliance, Inc. Reparity bitmap RAID failure recovery
US6854071B2 (en) 2001-05-14 2005-02-08 International Business Machines Corporation Method and apparatus for providing write recovery of faulty data in a non-redundant raid system
US8171414B2 (en) * 2001-05-22 2012-05-01 Netapp, Inc. System and method for consolidated reporting of characteristics for a group of file systems
US7739614B1 (en) 2001-05-22 2010-06-15 Netapp, Inc. System and method for consolidated reporting of characteristics for a group of directories
US6643654B1 (en) 2001-06-25 2003-11-04 Network Appliance, Inc. System and method for representing named data streams within an on-disk structure of a file system
US7249150B1 (en) * 2001-07-03 2007-07-24 Network Appliance, Inc. System and method for parallelized replay of an NVRAM log in a storage appliance
US6944785B2 (en) * 2001-07-23 2005-09-13 Network Appliance, Inc. High-availability cluster virtual server system
US6757695B1 (en) * 2001-08-09 2004-06-29 Network Appliance, Inc. System and method for mounting and unmounting storage volumes in a network storage environment
US6851070B1 (en) 2001-08-13 2005-02-01 Network Appliance, Inc. System and method for managing time-limited long-running operations in a data storage system
US6965989B1 (en) 2001-08-14 2005-11-15 Network Appliance, Inc. System and method for fast reboot of a file server
US6871317B1 (en) 2001-11-13 2005-03-22 Network Appliance, Inc. Technique for efficiently organizing and distributing parity blocks among storage devices of a storage array
US7346831B1 (en) 2001-11-13 2008-03-18 Network Appliance, Inc. Parity assignment technique for parity declustering in a parity array of a storage system
US6851082B1 (en) 2001-11-13 2005-02-01 Network Appliance, Inc. Concentrated parity technique for handling double failures and enabling storage of more than one parity block per stripe on a storage device of a storage array
US7730153B1 (en) * 2001-12-04 2010-06-01 Netapp, Inc. Efficient use of NVRAM during takeover in a node cluster
US8402346B2 (en) * 2001-12-28 2013-03-19 Netapp, Inc. N-way parity technique for enabling recovery from up to N storage device failures
US7073115B2 (en) * 2001-12-28 2006-07-04 Network Appliance, Inc. Correcting multiple block data loss in a storage array using a combination of a single diagonal parity group and multiple row parity groups
US7613984B2 (en) * 2001-12-28 2009-11-03 Netapp, Inc. System and method for symmetric triple parity for failing storage devices
US7640484B2 (en) 2001-12-28 2009-12-29 Netapp, Inc. Triple parity technique for enabling efficient recovery from triple failures in a storage array
US6993701B2 (en) * 2001-12-28 2006-01-31 Network Appliance, Inc. Row-diagonal parity technique for enabling efficient recovery from double failures in a storage array
KR20030073982A (ko) * 2002-03-14 2003-09-19 한국전자통신연구원 레이드 서브 시스템에서 중복 데이터의 일관성 유지 방법
US7539991B2 (en) 2002-03-21 2009-05-26 Netapp, Inc. Method and apparatus for decomposing I/O tasks in a raid system
US7437727B2 (en) * 2002-03-21 2008-10-14 Network Appliance, Inc. Method and apparatus for runtime resource deadlock avoidance in a raid system
US7200715B2 (en) * 2002-03-21 2007-04-03 Network Appliance, Inc. Method for writing contiguous arrays of stripes in a RAID storage system using mapped block writes
US7254813B2 (en) * 2002-03-21 2007-08-07 Network Appliance, Inc. Method and apparatus for resource allocation in a raid system
US6857001B2 (en) 2002-06-07 2005-02-15 Network Appliance, Inc. Multiple concurrent active file systems
US7024586B2 (en) 2002-06-24 2006-04-04 Network Appliance, Inc. Using file system information in raid data reconstruction and migration
US7107385B2 (en) 2002-08-09 2006-09-12 Network Appliance, Inc. Storage virtualization by layering virtual disk objects on a file system
US7426576B1 (en) 2002-09-20 2008-09-16 Network Appliance, Inc. Highly available DNS resolver and method for use of the same
US7171452B1 (en) 2002-10-31 2007-01-30 Network Appliance, Inc. System and method for monitoring cluster partner boot status over a cluster interconnect
US7457822B1 (en) 2002-11-01 2008-11-25 Bluearc Uk Limited Apparatus and method for hardware-based file system
US8041735B1 (en) 2002-11-01 2011-10-18 Bluearc Uk Limited Distributed file system and method
US8041761B1 (en) 2002-12-23 2011-10-18 Netapp, Inc. Virtual filer and IP space based IT configuration transitioning framework
CN1302392C (zh) * 2003-01-24 2007-02-28 华为技术有限公司 一种磁盘在线重构方法
US7424637B1 (en) 2003-03-21 2008-09-09 Networks Appliance, Inc. Technique for managing addition of disks to a volume of a storage system
US7664913B2 (en) * 2003-03-21 2010-02-16 Netapp, Inc. Query-based spares management technique
US7328364B1 (en) 2003-03-21 2008-02-05 Network Appliance, Inc. Technique for coherent suspension of I/O operations in a RAID subsystem
US7383378B1 (en) 2003-04-11 2008-06-03 Network Appliance, Inc. System and method for supporting file and block access to storage object on a storage appliance
US7457982B2 (en) * 2003-04-11 2008-11-25 Network Appliance, Inc. Writable virtual disk of read-only snapshot file objects
US7739543B1 (en) 2003-04-23 2010-06-15 Netapp, Inc. System and method for transport-level failover for loosely coupled iSCSI target devices
US7293152B1 (en) 2003-04-23 2007-11-06 Network Appliance, Inc. Consistent logical naming of initiator groups
US7260737B1 (en) 2003-04-23 2007-08-21 Network Appliance, Inc. System and method for transport-level failover of FCP devices in a cluster
US7437530B1 (en) 2003-04-24 2008-10-14 Network Appliance, Inc. System and method for mapping file block numbers to logical block addresses
US7330862B1 (en) 2003-04-25 2008-02-12 Network Appliance, Inc. Zero copy write datapath
US7181439B1 (en) * 2003-04-25 2007-02-20 Network Appliance, Inc. System and method for transparently accessing a virtual disk using a file-based protocol
US7577692B1 (en) 2003-04-25 2009-08-18 Netapp, Inc. System and method for reserving space to guarantee file writability in a file system supporting persistent consistency point images
US7437523B1 (en) 2003-04-25 2008-10-14 Network Appliance, Inc. System and method for on-the-fly file folding in a replicated storage system
US7603553B1 (en) 2003-04-25 2009-10-13 Netapp, Inc. System and method to make file handles opaque to clients
US7136974B2 (en) * 2003-06-19 2006-11-14 Pillar Data Systems, Inc. Systems and methods of data migration in snapshot operations
GB0315157D0 (en) * 2003-06-28 2003-08-06 Ibm Safe write to multiply-redundant storage
US7146461B1 (en) 2003-07-01 2006-12-05 Veritas Operating Corporation Automated recovery from data corruption of data volumes in parity RAID storage systems
US7523201B2 (en) * 2003-07-14 2009-04-21 Network Appliance, Inc. System and method for optimized lun masking
US7593996B2 (en) 2003-07-18 2009-09-22 Netapp, Inc. System and method for establishing a peer connection using reliable RDMA primitives
US7716323B2 (en) * 2003-07-18 2010-05-11 Netapp, Inc. System and method for reliable peer communication in a clustered storage system
US7055014B1 (en) 2003-08-11 2006-05-30 Network Applicance, Inc. User interface system for a multi-protocol storage appliance
US7730222B2 (en) 2004-08-24 2010-06-01 Symantec Operating System Processing storage-related I/O requests using binary tree data structures
US7991748B2 (en) 2003-09-23 2011-08-02 Symantec Corporation Virtual data store creation and use
US7827362B2 (en) 2004-08-24 2010-11-02 Symantec Corporation Systems, apparatus, and methods for processing I/O requests
US7577806B2 (en) 2003-09-23 2009-08-18 Symantec Operating Corporation Systems and methods for time dependent data storage and recovery
US7287133B2 (en) 2004-08-24 2007-10-23 Symantec Operating Corporation Systems and methods for providing a modification history for a location within a data store
US7725760B2 (en) 2003-09-23 2010-05-25 Symantec Operating Corporation Data storage system
US7904428B2 (en) 2003-09-23 2011-03-08 Symantec Corporation Methods and apparatus for recording write requests directed to a data store
GB0322424D0 (en) * 2003-09-24 2003-10-29 Ibm Error detection in redundant array of storage units
US7512990B2 (en) * 2003-10-16 2009-03-31 International Business Machines Corporation Multiple simultaneous ACL formats on a filesystem
US7647451B1 (en) 2003-11-24 2010-01-12 Netapp, Inc. Data placement technique for striping data containers across volumes of a storage system cluster
US7100073B2 (en) * 2004-01-05 2006-08-29 International Business Machines Corporation Grouped-object RAID
US7966293B1 (en) 2004-03-09 2011-06-21 Netapp, Inc. System and method for indexing a backup using persistent consistency point images
US8275951B2 (en) * 2004-06-10 2012-09-25 Hewlett-Packard Development Company, L.P. Local bitmaps for an array of redundant storage devices
US20060075281A1 (en) * 2004-09-27 2006-04-06 Kimmel Jeffrey S Use of application-level context information to detect corrupted data in a storage system
US7594075B2 (en) * 2004-10-20 2009-09-22 Seagate Technology Llc Metadata for a grid based data storage system
US8458238B2 (en) 2004-10-26 2013-06-04 Netapp, Inc. Method and system for efficient write journal entry management for a distributed file system
US7290199B2 (en) * 2004-11-19 2007-10-30 International Business Machines Corporation Method and system for improved buffer utilization for disk array parity updates
US7392458B2 (en) * 2004-11-19 2008-06-24 International Business Machines Corporation Method and system for enhanced error identification with disk array parity checking
US20060123271A1 (en) * 2004-11-19 2006-06-08 International Business Machines Corporation RAID environment incorporating hardware-based finite field multiplier for on-the-fly XOR
US20060123312A1 (en) * 2004-11-19 2006-06-08 International Business Machines Corporation Method and system for increasing parallelism of disk accesses when restoring data in a disk array system
US8429192B2 (en) * 2004-12-02 2013-04-23 International Business Machines Corporation System and method for supporting a plurality of access control list types for a file system in an operating system
US7143308B2 (en) * 2005-01-14 2006-11-28 Charlie Tseng Apparatus, system, and method for differential rebuilding of a reactivated offline RAID member disk
US7398460B1 (en) * 2005-01-31 2008-07-08 Network Appliance, Inc. Technique for efficiently organizing and distributing parity blocks among storage devices of a storage array
US7779294B2 (en) * 2005-04-15 2010-08-17 Intel Corporation Power-safe disk storage apparatus, systems, and methods
US7490263B2 (en) * 2006-01-17 2009-02-10 Allen King Apparatus, system, and method for a storage device's enforcing write recovery of erroneous data
US8560503B1 (en) 2006-01-26 2013-10-15 Netapp, Inc. Content addressable storage system
US20070180292A1 (en) * 2006-01-31 2007-08-02 Bhugra Kern S Differential rebuild in a storage environment
US7844584B1 (en) 2006-06-23 2010-11-30 Netapp, Inc. System and method for persistently storing lock state information
US7979701B1 (en) 2006-09-15 2011-07-12 Netapp, Inc. Cross mapping graphical interface to show encryption relationships between hosts and storage devices
US7822921B2 (en) 2006-10-31 2010-10-26 Netapp, Inc. System and method for optimizing write operations in storage systems
US7613947B1 (en) 2006-11-30 2009-11-03 Netapp, Inc. System and method for storage takeover
US7647526B1 (en) 2006-12-06 2010-01-12 Netapp, Inc. Reducing reconstruct input/output operations in storage systems
US7620669B1 (en) 2006-12-15 2009-11-17 Netapp, Inc. System and method for enhancing log performance
US8868495B2 (en) * 2007-02-21 2014-10-21 Netapp, Inc. System and method for indexing user data on storage systems
US8312214B1 (en) 2007-03-28 2012-11-13 Netapp, Inc. System and method for pausing disk drives in an aggregate
AU2008236622B2 (en) * 2007-04-09 2013-01-10 Wake Forest University Health Sciences Oxygen-generating compositions for enhancing cell and tissue survival in vivo
US8209587B1 (en) 2007-04-12 2012-06-26 Netapp, Inc. System and method for eliminating zeroing of disk drives in RAID arrays
US7971126B2 (en) * 2007-06-27 2011-06-28 International Business Machines Corporation Apparatus, system, and method for hard disk drive redundancy
US8041990B2 (en) * 2007-06-28 2011-10-18 International Business Machines Corporation System and method for error correction and detection in a memory system
US8041989B2 (en) * 2007-06-28 2011-10-18 International Business Machines Corporation System and method for providing a high fault tolerant memory system
JP4678015B2 (ja) 2007-07-13 2011-04-27 富士通株式会社 動画像符号化装置及び動画像符号化方法
US7975102B1 (en) 2007-08-06 2011-07-05 Netapp, Inc. Technique to avoid cascaded hot spotting
US8140483B2 (en) * 2007-09-28 2012-03-20 International Business Machines Corporation Transaction log management
US7827441B1 (en) * 2007-10-30 2010-11-02 Network Appliance, Inc. Disk-less quorum device for a clustered storage system
US7984259B1 (en) 2007-12-17 2011-07-19 Netapp, Inc. Reducing load imbalance in a storage system
US8099554B1 (en) * 2007-12-31 2012-01-17 Emc Corporation System and method for flash-based data caching
US8799743B2 (en) 2008-10-28 2014-08-05 Micron Technology, Inc. Error correction in multiple semiconductor memory units
US8495417B2 (en) * 2009-01-09 2013-07-23 Netapp, Inc. System and method for redundancy-protected aggregates
WO2010096519A1 (en) * 2009-02-18 2010-08-26 Marvell World Trade Ltd. Method and system for performing i/o operations on disk arrays
US8688798B1 (en) 2009-04-03 2014-04-01 Netapp, Inc. System and method for a shared write address protocol over a remote direct memory access connection
US8484529B2 (en) 2010-06-24 2013-07-09 International Business Machines Corporation Error correction and detection in a redundant memory system
US8549378B2 (en) 2010-06-24 2013-10-01 International Business Machines Corporation RAIM system using decoding of virtual ECC
US8631271B2 (en) 2010-06-24 2014-01-14 International Business Machines Corporation Heterogeneous recovery in a redundant memory system
US8898511B2 (en) 2010-06-24 2014-11-25 International Business Machines Corporation Homogeneous recovery in a redundant memory system
WO2012052800A1 (en) * 2010-10-21 2012-04-26 Oracle International Corp. Two stage checksummed raid storage model
US8522122B2 (en) 2011-01-29 2013-08-27 International Business Machines Corporation Correcting memory device and memory channel failures in the presence of known memory device failures
US11016702B2 (en) 2011-07-27 2021-05-25 Pure Storage, Inc. Hierarchical event tree
US10678619B2 (en) 2011-07-27 2020-06-09 Pure Storage, Inc. Unified logs and device statistics
EP2737431A4 (en) * 2011-07-27 2015-03-25 Cleversafe Inc GENERATION OF DISTRIBUTED STORAGE NETWORK EVENT RECORDS
KR101801147B1 (ko) 2011-08-30 2017-11-27 삼성전자주식회사 데이터 신뢰성을 개선하는 데이터 관리 방법 및 그에 따른 데이터 저장 장치
US9087019B2 (en) * 2012-01-27 2015-07-21 Promise Technology, Inc. Disk storage system with rebuild sequence and method of operation thereof
CN103577274B (zh) 2012-07-31 2016-07-06 国际商业机器公司 管理存储器阵列的方法和装置
KR102081980B1 (ko) * 2012-10-08 2020-02-27 삼성전자 주식회사 메모리 시스템에서의 라이트 동작 또는 리드 동작 수행 방법
US11016820B2 (en) 2013-08-26 2021-05-25 Vmware, Inc. Load balancing of resources
US10747475B2 (en) * 2013-08-26 2020-08-18 Vmware, Inc. Virtual disk blueprints for a virtualized storage area network, wherein virtual disk objects are created from local physical storage of host computers that are running multiple virtual machines
US9372767B2 (en) 2014-06-06 2016-06-21 Netapp, Inc. Recovery consumer framework
KR102368071B1 (ko) 2014-12-29 2022-02-25 삼성전자주식회사 레이드 스토리지 시스템에서의 스트라이프 재구성 방법 및 이를 적용한 가비지 컬렉션 동작 방법 및 레이드 스토리지 시스템
US9740440B2 (en) * 2015-05-21 2017-08-22 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Separating a hybrid asymmetric mix of a RAID 1 mirror and a parity-based RAID array
US10114694B2 (en) * 2016-06-07 2018-10-30 Storart Technology Co. Ltd. Method and controller for recovering data in event of program failure and storage system using the same
CN108228647B (zh) 2016-12-21 2022-05-24 伊姆西Ip控股有限责任公司 用于数据拷贝的方法和设备
US10089015B1 (en) 2016-12-28 2018-10-02 EMC IP Holding Company LLC Per-drive memory resident zeroing maps for drive zeroing in a data storage system
US10585749B2 (en) * 2017-08-10 2020-03-10 Samsung Electronics Co., Ltd. System and method for distributed erasure coding
US10776202B1 (en) * 2017-09-22 2020-09-15 Pure Storage, Inc. Drive, blade, or data shard decommission via RAID geometry shrinkage
US10929226B1 (en) 2017-11-21 2021-02-23 Pure Storage, Inc. Providing for increased flexibility for large scale parity
TWI640997B (zh) * 2017-12-27 2018-11-11 群聯電子股份有限公司 資料保護方法、記憶體控制電路單元與記憶體儲存裝置
US11816353B2 (en) * 2021-12-20 2023-11-14 Western Digital Technologies, Inc. Parity data for non-volatile storage
CN115565598B (zh) * 2022-09-30 2023-06-02 中国科学院空间应用工程与技术中心 Raid阵列磁盘暂时失效的数据存储与修复方法及系统

Family Cites Families (97)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3525269A (en) 1968-11-04 1970-08-25 Deere & Co Harvesting machine component drive
US4075691A (en) * 1975-11-06 1978-02-21 Bunker Ramo Corporation Communication control unit
US4156907A (en) * 1977-03-02 1979-05-29 Burroughs Corporation Data communications subsystem
US4399503A (en) * 1978-06-30 1983-08-16 Bunker Ramo Corporation Dynamic disk buffer control unit
US4377843A (en) * 1979-04-19 1983-03-22 Wescom Switching, Inc. Data distribution interface
US4333144A (en) * 1980-02-05 1982-06-01 The Bendix Corporation Task communicator for multiple computer system
US4488231A (en) * 1980-09-29 1984-12-11 Honeywell Information Systems Inc. Communication multiplexer having dual microprocessors
FR2500659B1 (fr) * 1981-02-25 1986-02-28 Philips Ind Commerciale Dispositif pour l'allocation dynamique des taches d'un ordinateur multiprocesseur
US4456957A (en) * 1981-09-28 1984-06-26 Ncr Corporation Apparatus using a decision table for routing data among terminals and a host system
US4685125A (en) * 1982-06-28 1987-08-04 American Telephone And Telegraph Company Computer system with tasking
US4550368A (en) * 1982-07-02 1985-10-29 Sun Microsystems, Inc. High-speed memory and memory management system
US4527232A (en) * 1982-07-02 1985-07-02 Sun Microsystems, Inc. High-speed memory and memory management system
US4710868A (en) * 1984-06-29 1987-12-01 International Business Machines Corporation Interconnect scheme for shared memory local networks
US4814971A (en) 1985-09-11 1989-03-21 Texas Instruments Incorporated Virtual memory recovery system using persistent roots for selective garbage collection and sibling page timestamping for defining checkpoint state
US4719569A (en) * 1985-10-11 1988-01-12 Sun Microsystems, Inc. Arbitrator for allocating access to data processing resources
US4825354A (en) * 1985-11-12 1989-04-25 American Telephone And Telegraph Company, At&T Bell Laboratories Method of file access in a distributed processing computer network
US4742447A (en) * 1986-01-16 1988-05-03 International Business Machines Corporation Method to control I/O accesses in a multi-tasking virtual memory virtual machine type data processing system
US4761785B1 (en) * 1986-06-12 1996-03-12 Ibm Parity spreading to enhance storage access
US4803621A (en) * 1986-07-24 1989-02-07 Sun Microsystems, Inc. Memory access system
US4780821A (en) * 1986-07-29 1988-10-25 International Business Machines Corp. Method for multiple programs management within a network having a server computer and a plurality of remote computers
US4819159A (en) * 1986-08-29 1989-04-04 Tolerant Systems, Inc. Distributed multiprocess transaction processing system and method
US4783730A (en) * 1986-09-19 1988-11-08 Datapoint Corporation Input/output control technique utilizing multilevel memory structure for processor and I/O communication
US4766534A (en) * 1986-10-16 1988-08-23 American Telephone And Telegraph Company, At&T Bell Laboratories Parallel processing network and method
US4887204A (en) * 1987-02-13 1989-12-12 International Business Machines Corporation System and method for accessing remote files in a distributed networking environment
US4897781A (en) * 1987-02-13 1990-01-30 International Business Machines Corporation System and method for using cached data at a local node after re-opening a file at a remote node in a distributed networking environment
US5109515A (en) * 1987-09-28 1992-04-28 At&T Bell Laboratories User and application program transparent resource sharing multiple computer interface architecture with kernel process level transfer of user requested services
IL88165A (en) * 1987-12-21 1993-01-31 Honeywell Bull Apparatus and method for a data processing system having a peer relationship among a plurality of central processing units
US4914583A (en) * 1988-04-13 1990-04-03 Motorola, Inc. Method of indicating processes resident within a cell of a data processing system
JP2625866B2 (ja) 1988-04-26 1997-07-02 日本電気株式会社 電子機器筐体の冷却構造
US4984272A (en) 1988-11-30 1991-01-08 At&T Bell Laboratories Secure file handling in a computer operating system
JPH02165241A (ja) 1988-12-19 1990-06-26 Toshiba Corp ファイルアクセス方式
US5222217A (en) 1989-01-18 1993-06-22 International Business Machines Corporation System and method for implementing operating system message queues with recoverable shared virtual storage
US5113442A (en) 1989-03-06 1992-05-12 Lachman Associates, Inc. Method and apparatus for providing access control in a secure operating system
US5144659A (en) 1989-04-19 1992-09-01 Richard P. Jones Computer file protection system
US5218696A (en) * 1989-07-24 1993-06-08 International Business Machines Corporation Method for dynamically expanding and rapidly accessing file directories
US5163131A (en) * 1989-09-08 1992-11-10 Auspex Systems, Inc. Parallel i/o network file server architecture
US5276867A (en) * 1989-12-19 1994-01-04 Epoch Systems, Inc. Digital data storage system with improved data migration
US5218695A (en) * 1990-02-05 1993-06-08 Epoch Systems, Inc. File server system having high-speed write execution
US5134619A (en) * 1990-04-06 1992-07-28 Sf2 Corporation Failure-tolerant mass storage system
US5166939A (en) * 1990-03-02 1992-11-24 Micro Technology, Inc. Data storage apparatus and method
US5195100A (en) 1990-03-02 1993-03-16 Micro Technology, Inc. Non-volatile memory storage of write operation identifier in data sotrage device
US5088081A (en) * 1990-03-28 1992-02-11 Prime Computer, Inc. Method and apparatus for improved disk access
JPH0731582B2 (ja) * 1990-06-21 1995-04-10 インターナショナル・ビジネス・マシーンズ・コーポレイション パリティ保護データを回復するための方法および装置
US5208813A (en) * 1990-10-23 1993-05-04 Array Technology Corporation On-line reconstruction of a failed redundant array system
US5274807A (en) * 1990-11-01 1993-12-28 At&T Bell Laboratories Method for reducing magnetic storage volume for computer disk image backup
US5255270A (en) * 1990-11-07 1993-10-19 Emc Corporation Method of assuring data write integrity on a data storage device
DE69131551T2 (de) * 1990-11-09 2000-02-17 Emc Corp Logische Aufteilung eines Speichersystems mit redundanter Matrix
US5155835A (en) * 1990-11-19 1992-10-13 Storage Technology Corporation Multilevel, hierarchical, dynamically mapped data storage subsystem
US5146588A (en) * 1990-11-26 1992-09-08 Storage Technology Corporation Redundancy accumulator for disk drive array memory
JP2603757B2 (ja) * 1990-11-30 1997-04-23 富士通株式会社 アレ−ディスク装置の制御方法
US5235601A (en) * 1990-12-21 1993-08-10 Array Technology Corporation On-line restoration of redundancy information in a redundant array system
US5274799A (en) * 1991-01-04 1993-12-28 Array Technology Corporation Storage device array architecture with copyback cache
US5239640A (en) 1991-02-01 1993-08-24 International Business Machines Corporation Data storage system and method including data and checksum write staging storage
US5276840A (en) * 1991-03-22 1994-01-04 Acer Incorporated Disk caching method for writing data from computer memory including a step of writing a plurality of physically adjacent blocks in a single I/O operation
US5502836A (en) * 1991-11-21 1996-03-26 Ast Research, Inc. Method for disk restriping during system operation
US5379417A (en) * 1991-11-25 1995-01-03 Tandem Computers Incorporated System and method for ensuring write data integrity in a redundant array data storage system
GB9126779D0 (en) 1991-12-17 1992-02-12 Int Computers Ltd Security mechanism for a computer system
US5313626A (en) * 1991-12-17 1994-05-17 Jones Craig S Disk drive array with efficient background rebuilding
US5333305A (en) * 1991-12-27 1994-07-26 Compaq Computer Corporation Method for improving partial stripe write performance in disk array subsystems
EP0619896A1 (en) * 1991-12-27 1994-10-19 Compaq Computer Corporation Method for performing disk array operations using a nonuniform stripe size mapping scheme
JP3058743B2 (ja) * 1992-01-21 2000-07-04 株式会社日立製作所 ディスクアレイ制御装置
US5442752A (en) * 1992-01-24 1995-08-15 International Business Machines Corporation Data storage method for DASD arrays using striping based on file length
US5305326A (en) * 1992-03-06 1994-04-19 Data General Corporation High availability disk arrays
EP0559488B1 (en) * 1992-03-06 1998-08-19 Data General Corporation Handling data in a system having a processor for controlling access to a plurality of data storage disks
AU653670B2 (en) 1992-03-10 1994-10-06 Data General Corporation Improvements for high availability disk arrays
US5469566A (en) * 1992-03-12 1995-11-21 Emc Corporation Flexible parity generation circuit for intermittently generating a parity for a plurality of data channels in a redundant array of storage units
US5708668A (en) * 1992-05-06 1998-01-13 International Business Machines Corporation Method and apparatus for operating an array of storage devices
US5335235A (en) * 1992-07-07 1994-08-02 Digital Equipment Corporation FIFO based parity generator
JP2888401B2 (ja) * 1992-08-03 1999-05-10 インターナショナル・ビジネス・マシーンズ・コーポレイション 冗長ディスクドライブアレイに対する同期方法
US5315602A (en) * 1992-08-12 1994-05-24 Digital Equipment Corporation Optimized stripe detection for redundant arrays of disk drives
EP0612015A1 (en) * 1993-02-16 1994-08-24 International Business Machines Corporation Improved disk array system having special parity groups for data blocks with high update activity
US5522050A (en) * 1993-05-28 1996-05-28 International Business Machines Corporation Bus-to-bus bridge for a multiple bus information handling system that optimizes data transfers between a system bus and a peripheral bus
US6604118B2 (en) 1998-07-31 2003-08-05 Network Appliance, Inc. File system image transfer
US5963962A (en) 1995-05-31 1999-10-05 Network Appliance, Inc. Write anywhere file-system layout
WO1994029807A1 (en) 1993-06-03 1994-12-22 Network Appliance Corporation Write anywhere file-system layout
DE69434381T2 (de) 1993-06-04 2006-01-19 Network Appliance, Inc., Sunnyvale Verfahren zur Paritätsdarstellung in einem Raid-Untersystem unter Verwendung eines nichtflüchtigen Speichers
US5390327A (en) * 1993-06-29 1995-02-14 Digital Equipment Corporation Method for on-line reorganization of the data on a RAID-4 or RAID-5 array in the absence of one disk and the on-line restoration of a replacement disk
US5572711A (en) 1993-09-28 1996-11-05 Bull Hn Information Systems Inc. Mechanism for linking together the files of emulated and host system for access by emulated system users
US5689701A (en) 1994-12-14 1997-11-18 International Business Machines Corporation System and method for providing compatibility between distributed file system namespaces and operating system pathname syntax
US5617568A (en) 1994-12-14 1997-04-01 International Business Machines Corporation System and method for supporting file attributes on a distributed file system without native support therefor
US5675782A (en) 1995-06-06 1997-10-07 Microsoft Corporation Controlling access to objects on multiple operating systems
US5761669A (en) 1995-06-06 1998-06-02 Microsoft Corporation Controlling access to objects on multiple operating systems
US5603051A (en) * 1995-06-06 1997-02-11 Hewlett-Packard Company Input/output processor with a local memory providing shared resources for a plurality of input/output interfaces on an I/O bus
US5729705A (en) * 1995-07-24 1998-03-17 Symbios Logic Inc. Method and apparatus for enhancing throughput of disk array data transfers in a controller
US5668958A (en) 1995-09-12 1997-09-16 International Business Machines Corporation Heterogeneous filing system with common API and reconciled file management rules
US5737744A (en) * 1995-10-13 1998-04-07 Compaq Computer Corporation Disk array controller for performing exclusive or operations
US5742752A (en) * 1995-12-29 1998-04-21 Symbios Logic Inc. Method for performing a RAID stripe write operation using a drive XOR command set
US5737523A (en) 1996-03-04 1998-04-07 Sun Microsystems, Inc. Methods and apparatus for providing dynamic network file system client authentication
US5825877A (en) 1996-06-11 1998-10-20 International Business Machines Corporation Support for portable trusted software
JP2956607B2 (ja) 1996-09-17 1999-10-04 日本電気株式会社 携帯型無線機
DE19646155C1 (de) 1996-11-08 1997-12-11 Siemens Nixdorf Inf Syst Lagebestimmung von Peripherieeinheiten
US6161165A (en) * 1996-11-14 2000-12-12 Emc Corporation High performance data path with XOR on the fly
US5915087A (en) 1996-12-12 1999-06-22 Secure Computing Corporation Transparent security proxy for unreliable message exchange protocols
US5931935A (en) 1997-04-15 1999-08-03 Microsoft Corporation File system primitive allowing reprocessing of I/O requests by multiple drivers in a layered driver I/O system
US5876278A (en) 1997-05-29 1999-03-02 Cheng; Henry Cooling device
US6101585A (en) 1997-11-04 2000-08-08 Adaptec, Inc. Mechanism for incremental backup of on-line files
US5890959A (en) 1998-03-31 1999-04-06 Digital Equipment Corporation High efficiency blower system with integral backflow preventor

Also Published As

Publication number Publication date
DE69434381T2 (de) 2006-01-19
WO1994029795A1 (en) 1994-12-22
US5948110A (en) 1999-09-07
HK1028281A1 (en) 2001-02-09
EP1031928B1 (en) 2005-05-18
US6480969B1 (en) 2002-11-12
EP0701715A1 (en) 1996-03-20
DE69434381D1 (de) 2005-06-23
EP1031928A3 (en) 2000-11-15
US6988219B2 (en) 2006-01-17
JP4408939B2 (ja) 2010-02-03
EP1031928A2 (en) 2000-08-30
JP2007184011A (ja) 2007-07-19
JP2008251034A (ja) 2008-10-16
EP0701715A4 (en) 1999-11-17
US20030037281A1 (en) 2003-02-20
JPH08511368A (ja) 1996-11-26

Similar Documents

Publication Publication Date Title
JP4283859B2 (ja) 記憶サブシステムおよびその作動方法
JP3164499B2 (ja) ディスクアレイにおけるパリティデータの無矛盾性保持方法
US7464322B2 (en) System and method for detecting write errors in a storage device
US6282670B1 (en) Managing defective media in a RAID system
US7721143B2 (en) Method for reducing rebuild time on a RAID device
US5875457A (en) Fault-tolerant preservation of data integrity during dynamic raid set expansion
JP3071017B2 (ja) 冗長アレイ・システムにおける冗長情報の復元方法および制御システム
US7464289B2 (en) Storage system and method for handling bad storage device data therefor
US20040123032A1 (en) Method for storing integrity metadata in redundant data layouts
JP2000112831A (ja) ディスク記録再生方法および装置
US6349359B1 (en) Method and apparatus for maintaining data consistency in raid
WO2004001600A1 (en) Using file system information in raid data reconstruction and migration
EP0690379A2 (en) Enhanced data management in data storage subsystems
US7818524B2 (en) Data migration systems and methods for independent storage device expansion and adaptation
JPH0675708A (ja) アレイ型記録装置
GB2414592A (en) Decreasing failed disk reconstruction time in a RAID data storage system
US5421003A (en) Disk storage system with fault tolerant media maintenance
GB2343265A (en) Data storage array rebuild
KR20110039416A (ko) 인터럽트된 기록 복구를 위한 데이터 저장 방법, 장치 및 시스템
JP2002373059A (ja) ディスクアレイのエラー回復方法、ディスクアレイ制御装置及びディスクアレイ装置
JP2005004733A (ja) ストレージ・システムにおいて書込みエラーを検出するための配置構成および方法
CA2165910C (en) Method for providing parity in a raid sub-system using a non-volatile memory
JP2012123641A (ja) 半導体ディスク装置
EP0831484A1 (en) Data reconstruction method and data storage system
JP2010049394A (ja) 磁気ディスクの書き込み障害の検出と回復を行うディスクアレイシステム、方法およびプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070412

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070710

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20071010

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20071016

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20080122

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20080715

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080822

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090127

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: 20090319

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120327

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120327

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130327

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130327

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140327

Year of fee payment: 5

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term