JPH08511368A - 不揮発性メモリを用いてraidサブシステムにパリティを形成する方法 - Google Patents

不揮発性メモリを用いてraidサブシステムにパリティを形成する方法

Info

Publication number
JPH08511368A
JPH08511368A JP7502000A JP50200094A JPH08511368A JP H08511368 A JPH08511368 A JP H08511368A JP 7502000 A JP7502000 A JP 7502000A JP 50200094 A JP50200094 A JP 50200094A JP H08511368 A JPH08511368 A JP H08511368A
Authority
JP
Japan
Prior art keywords
data
parity
disk
value
block
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.)
Pending
Application number
JP7502000A
Other languages
English (en)
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 JPH08511368A publication Critical patent/JPH08511368A/ja
Pending legal-status Critical Current

Links

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

Abstract

(57)【要約】 本発明は、不揮発性ランダムアクセスメモリ(NV−RAM816)を用いた、ディスク(828)の配列のエラーを補正の方法に関する。不揮発性RAM(816)は、ディスクエラーからRAIDを回復する速度を早くするために使用されている。これは、パリティが不一致になるかもしれないすべてのブロックのリスト化により行われる。このブロックリストはRAID中のパリティブロック(820)の全体数よりもかなり少ない。RAID(828)中のパリティブロックの全体数は数十万の範囲である。不一致となるかもしれないパリティブロック数の情報によりリストで確認されるいくつかのブロックを固定でき、それにより時間を著しく節約できる。壊れたディスクを用いてRAIDに安全に書き込む方法は複雑である。この方法によれば、破壊することがあるデータは、潜在的な破壊動作が行われる前に、NV−RAM(816)にコピーされる。

Description

【発明の詳細な説明】 不揮発性メモリを用いてRAIDサブシステムにパリティを形成する方法 1.発明の属する分野 本発明はディスク配列のエラー補正の分野に関する。 2.背景技術 コンピュータ装置は、一般に、情報(例えばデータ及び/又はアプリケーショ ンプログラム)を格納するために、ディスクドライブのような大量の二次的なメ モリを必要とする。従来のコンピュータ装置は、大量のデータを永久的に保存す るために、一つの“ウインチェスタ”型ハードディスクドライブをよく使用して いる。コンピュータとそのプロセッサの性能が良くなるにしたがって、大容量の ディスクドライブと高速のデータ移送性の要求が増してきた。それとともに、デ ィスクドライブ性能の変更や改良が為されてきた。例えば、データ及びトラック 密度の増加、媒体改良、及び一つのディスクドライブ中の多数のヘッドとディス クにより、高速のデータ移送性が可能になった。 二次的な保存のために一つのディスクドライブを使用することの問題は、非常 に大きい能力又は性能が必要とされる場合の、ドライブ交換の費用である。別の 問題は、一つのディスクドライブに余裕又はバックアップが不足することである 。一つのディスクドライブが損傷したり、動作不能になったり、又は交換される と、そのシステムは停止する。 シングルディスクドライブシステムの問題を軽減し又は解消するために従来行 われてきたことは、並列に相互連結された複数のドライブを使用することである 。データは、並列につながれた多数のドライブから同時に又は複数のドライブの シングルドライブから連続的にアクセスできる固まりに分解される。ディスクド ライブを並列に連結したシステムの一つが、“高価でないディスクの冗長配列” (RAID)として知られている。RAIDシステムは、大きなシングルディス クド ライブシステムと同一の保存能力を有し、しかも低価格である。同様に、高速デ ータ移送性も配列の平行処理により達成される。 RAIDシステムにより、配列にディスクドライブを追加するにしたがって保 存能力が大きくなる。RAIDシステムのディスクが壊れた場合、これは全体シ ステムを停止することなく交換できる。壊れたディスク上のデータはエラー補正 法を用いて回復できる。RAID配列 RAIDは、RAIDレベル0からRAIDレベル5と呼ばれる6つのディス ク配列型を有する。それそれのRAIDレベルは利点と欠点を有する。本説明で は、RAIDレベル4と5だけを説明する。しかしながら、それぞれのRAID レベルの詳細な説明は、パターソン等によるA Case for Redundant Arrays of I nexpensive Disk(RAID)、ACM SIGMOD Concerence,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個のデータブロックを有するストライプ1 42が、ディスク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のディスク2 14に保存されている。データブロックN+1はディスク216に保存されてい る。最後にデータブロック2N−1がディスク218に保存されている。M−1 のストライプ244では、データブロック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サブシステムにおけるパリティブロックの全体数よりも小さい。RAI Dサブシステムにおけるパリティブロックの全体数は通常数十万のパリティブロ ックの範囲にある。不一致のパリティブロック数の情報により、従来技術で可能 であった時間よりもかなり短時間の間に、リスト中で確認された数のブロックを 、修正することができる。本発明はまた同時に起こるシステムの故障と壊れたデ ィスクに対する保護の方法と、一つの壊れたディスクを用いてRAIDサブシス テムへの安全に書き込む方法を提供するものである。図面の簡単な説明 図1は従来のRAIDレベル4サブシステムのブロック図である。 図2は従来のRAIDレベル5サブシステムのブロック図である。 図3A−3Cは“ストライプ”に保存されたデータの再計算を表示する従来の 図である。 図4A−4Bはシステム故障の際のパリティ破壊に対する従来のタイミング図 である。 図5は故障したディスクへの書き込みが発生したときにデータが破壊されるの を防止する本発明のタイミング図である。 図6は壊れたディスクによる書き込み上のディスク破壊を示すタイミング図で ある。 図7A−7Bは壊れたディスクによる書き込み上のデータ破壊を防止する本発 明のタイミング図である。 図8は本発明を示す図である。 図9はシステムとディスクが同時に故障することによりデータが破壊されるの を示すタイミング図である。 図10A−10Cはシステムとディスクが同時に故障することによりデータが 破壊されるのを防止する本発明のタイミング図である。 図11A−11Cは回復処理を示す本発明のフロー図である。 図12A−12Cは再計算によるパリティのタイミング図である。本発明の詳細な説明 不揮発性ランダムアクセスメモリ(NV−RAM)を用いてディスク配列のエ ラーを補正する方法と装置を説明する。以下の説明において、本発明をさらに詳 細に説明するために、ディスクの数や性質、ディスクブロックのサイズ等のよう な数多くの特定の細部を詳細に説明する。しかし、当業者にとって、それらの詳 しい細部の説明がなくても本発明が実施できることは明らかである。その他の実 施例では、本発明が不必要に不明瞭にならないように、公知の特徴部分は詳細に 説明しない。 特に、多くの実施例ではストライプ中の一つのブロックだけが更新された場合 を考えているが、説明する技術は多数のブロックを更新する場合でも同様に適用 できる。 本発明は、システムが故障した場合にパリティを再計算するために必要な時間 を減少し、故障しているディスクにデータが書き込まれ、かつ、そのシステムが クラッシュした場合、RAID配列中のデータが破壊されるのを防止する方法を 提供する。本発明はこれらの問題を解消するために不揮発性RAMを使用してい る。従来技術の説明とその問題は以下の通りである。この従来技術の問題は、シ ステムが故障したときのパリティ破壊、壊れたディスクによる書き込み上のデー タ破壊、及び同時にシステムとディスクが破壊したときのデータ破壊について説 明されている。RAIDを用いた損失データの再計算 ストライプ中に保存されたデータブロックを排他的論理和演算することにより パリティが計算される。N個のデータブロックから計算されたパリティ値は、ス トライプのパリティブロックに記録される。いずれかの一つのブロックからのデ ータが例えばディスク破壊によって損失されると、ディスクに関する損失したデ ータはストライプ中に残っているブロックを排他的論理和演算することにより再 計算される。一般的に、ストライプ中のデータブロックが修正されると、パリテ ィがストライプに対して再計算されなければならない。すべてのN個のデータブ ロックを書くことによってストライプを更新する場合、ディスクとパリティから データを読むことなくパリティを計算でき、データはたった一回のI/Oサイク ルの間に書くことができる。したがって、ストライプ中のN個数のすべてのデー タブロックに対して書き込みには、最小時間が必要である。一つのデータブロッ クをディスクに書き込み場合、減算によるパリティが使用される(後述する)。 一回のI/Oサイクルを行うには古いデータとパリティを読み込み必要があり、 第2のI/Oサイクルでは新たなデータとパリティを書き込み必要がある。RA ID配列中のディスク駆動部は同期していないので、書き込みは一般に正確に同 時に起こることがない。ある場合には、パリティブロックはディスクに最初に到 達し、その他の場合にはデータブロックの一つがディスクに最初に到達する。こ こで説明する技術はブロックがディスクに到達する順番とは無関係である。 非同期駆動部を有するディスクに対する別の方法は、パリティを最初に計算し 、データブロックがディスクに書き込まれる前にディスクにパリティブロックが 書かれる。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のパリティはデータブロック33 2A−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の見出しの下で箱により囲まれた疑問符を用いてテーブル中に示してあ る。時刻TAの時点で、パリティ、データ0とデータ2はそれぞれ値12、4、 1を有する。データブロック1用のディスク334上のデータは以下のようにし て即座に再計算される。 データ1=パリティ−データ0−データ2=12−4−1=7 (1) ここでデータブロック1は、パリティブロック、データブロック0、及びデー タブロック2を用いて計算される。したがって、図3Aに示すディスク334の データブロック1に保存されたデータ値7は時刻TCの時点で再計算される。図 3Bにおいて、時刻TCに、データブロック1用に再計算された値7が括弧に囲 まれて示されている。以下の図面では、再計算された値は括弧を用いて示してあ る。すなわち、その他のディスク上のパリティとデータにより再計算されたもの として壊れたディスク用のデータが括弧で示してある。 図3Bに示すように、壊れたディスク上のデータは、パリティディスクとディ スク配列中に残存するディスクを用いて再計算できる。図3Aに示す壊れたディ スク334は最終的に置き換えられ、ディスクの古い内容は再計算されて新しい ディスクに書き込まれる。図3Cは新しいデータ1ディスク338を含むRAI Dサブシステムのブロック図である。図3Eに示すように、ストライプ320は 、パリティ、データ0、新たなデータ1、及びデータ2用に値12、4、7、及 び1を有する。これらの値はパリティブロック330A、データブロック332 A、338A、及び336Aに保存される。したがって、新しいディスク338 はRAIDシステムの壊れたディスク334に置き換わり、それまでディスク3 34のデータブロック334Aに保存されていたデータ値は以上のようにして計 算されて、交換されたディスク338のデータブロック338Aに保存される。 新たなデータがデータブロックに書き込まれると、パリティブロックも更新さ れる。ストライプ中のすべてのデータブロックが一度に更新されると、パリティ は以上のようにして簡単に計算される。このとき、パリティ用の新たな値はディ スクに書き込まれる情報から再計算される。新たなパリティとデータのブロック は次にディスクに書き込まれる。ストライプ中の幾つかのデータブロックが修正 されると、パリティブロックの更新がさらに難しくなる。それは多くのI/O処 理が必要となるからである。この場合、パリティを更新するには2つの方法があ る。減算によるパリティの更新と、再計算によるパリティの更新である。 例えば、一つのデータブロックに書き込みが行われた場合、RAIDシステム は減算によりパリティを更新できる。RAIDシステムはパリティブロックと上 書きされるブロックを読み取る。まずパリティ値から古いデータ値を減算し、デ ータブロックの新たなデータ値を中間のパリティ値に加算し、そして新たなパリ ティとデータのブロックを共にディスクに書き込む。 パリティを再計算するために、RAIDシステムはまずストライプ中のその他 のN−1個のデータブロックを読む。N−1個のデータブロックを読んだ後、R AIDシステムは、修正されたデータブロックとN−1個のデータブロックを用 いて最初からパリティを再計算する。パリティが再計算されると、新たなパリテ ィとデータのブロックはディスクに書き込まれる。 パリティを更新するための減算と加算の方法はともに、1以上のデータブロッ クが同一ストライプに書き込まれる場合に一般化することができる。減算の場合 、パリティブロックといま正に上書きされようとしているすべてのデータブロッ クの現在の内容とは、まずデータブロックから読み取られる。再計算において、 いま正に上書きされることのないすべてのデータブロックの現在の内容はまずデ ィスクから読み込まれる。ストライプ中のすべてのN個のデータブロックが同時 に書き込まれるのは、再計算によるパリティを縮小(縮退)する場合である。書 き込まれないすべてのデータブロックはまずディスクから読み込まれるが、本実 施例ではそのようなブロックはない。システムが故障した場合に何故ストライプが不一致になるか 不一致のストライプには、当該ストライプ中の他のブロックの排他的論理和を 有しないパリティブロックを備えている。ストライプは、システムが故障すると 共に、更新に関する書き込みの幾つかは終了しているがその他が未だ終了してい ないという場合に不一致となる。例えば、最初のデータブロックが上書きされる 場合である。上述のように、ストライプのパリティブロックは再計算されてデー タブロックと共に上書きされる。データブロックの一つがディスクに書き込まれ たがその他は未だ書き込まれていないという状況でシステムが故障すると、スト ライプが不一致となる。 ストライプは、それが更新される際に不一致となることもある。したがって、 任意の時点における潜在的な不一致のストライプ数は更新中のストライプ数に限 られる。そのため、本発明は、現在更新中のすべてのストライプを含むNV−R AM中のリストを保持する。これらのストライプだけが潜在的に壊れることがあ るので、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のタイミング図は従来のRAI Dサブシステムを示し、そこではパリティブロックがデータブロック以前にディ スクに到達する。 図4Bにおける時刻TBとTCとの間にシステムが故障すると、ストライプに関 してパリティが壊れる。そのタイミング図は、ストライプのデータブロック0が 更新される前に、時刻TBの時点で新たなパリティ値10がパリティディスクに 書き込まれることを示している。したがって、RAIDサブシステムがその後に 再スタートすると、データディスク0は正しい値2に代えて古い値4(アンダー ラインで示す)を持つ。これは、システム破壊が発生する前にストライプが更新 されかったことによる。ストライプに関するパリティは今壊れている。何故なら ば、 パリティ=データ0+データ1+データ2=2+7+1=10≠12 (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−1はそれぞれ 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から 計算される。 データ0=パリティ−データ1−データ2=12−4−1=7 (4) 時刻TBでは、新たな値2がデータディスク0に書き込まれる(箱内で2を囲 んで示す)。時刻TBの時点では、パリティはデータディスク0に書き込まれて いる新たな値2に対して更新されておらず、値12を持つ。したがって、データ ブロック1に関して計算された値は7に代わって9である。これは、時刻TBに おけるデータディスクに関して、括弧内の値9を囲んで図6に示されている。 時刻TCの時点で通常に動作する場合、パリティブロックは、時刻TBの時点で データブロック0に書き込まれる値2によって、10に更新される。時刻TCで のパリティに対する新たな値10は長方形の中に示してある。パリティ値10に ついて、データブロック1用の正しい値7が括弧内に示してある。図6に示すよ うに、データディスク1が壊れているので、データブロック1に保存されている データはディスク配列におけるその他のブロックから計算される。データブロッ ク0に対する時刻TBでの最初の書き込み後のデータブロック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に安全に書 き込むようにしており、このRAID配列はシステム故障によってもデータを破 壊することなく壊れたディスクを保持する。破壊されることがあるデータは、破 壊動作が始まる前に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のステップ11 09は、ストライプを更新するのに必要なブロックがメモリに書き込まれたとき に実行される。そのシステムはステップ1110を実行し、そこでは新たなパリ ティ値が新たなデータ値に基づいて計算される。時刻TBの時点では、図11C のステップ1111が実行され、そこでストライプ数がNV−RAMに書き込ま れる。 時刻TCでは、ステップ1112で、新たなデータ値2(値を囲む箱で示す) がデータブロック0に書き込まれ、時刻TBにデータブロック0に保存されてい る値4に置き換わる。データブロック1と2に保存されているその他の値は変更 されない。最初に、システムが故障しない通常の場合を考える。本発明では、新 たなパリティ値10(パリティの見出しの下に箱で示す)が時刻TDにステップ 1112で書き込まれる。これにより、時刻TCに、データブロック0への書き 込み用にパリティブロックが更新される。時刻TEには、ステップ1113で、 NV−RAMのストライプ数がクリアされる。したがって、パリティディスクと データディスク0−2に関するブロックを有するストライプがそれぞれ10、2 、7、及び1を有する。 次に、時刻tiと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は 回復対象であるストライプの表示、すなわち更新されるストライプのリストを有 する。パリティ値以外のすべてはディスク上で利用できる(時刻Tcにディスク に書き込まれる“2”)。ストライプに関するデータ値はディスクから読み取ら れ、新たなパリティ値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以上のストライプ 群を代表している。一般的なディスク配列は25,000のストライプを備えて いる。ビットマップの各項目は一つのストライプを代表し、そのビットマップは 約32KBである。各ビットで隣接する32個のストライプ群を代表させること により、その大きさを1KBに縮小できる。 システム破壊後にあっては、どのストライプがリストの代わってパリティ再計 算を必要とするかを判断するためにビットマップを使用しているという点を除い て、この方法は“ストライプのリスト”と本質的に同一である。ビットマップ中 にビットが設定されている群のすべてのストライプによりそれらのパリティが再 計算される。 通常処理中にビットマップを管理するのは、リストを管理するのと少し異なる 。更新が完了するやいなやストライプの項目を消去するのは最早不可能である。 一つのビットは一以上のストライプの動作を指示できるからである。あるストラ イプの更新は行われるかもしれないが、同一ビットを共有する別のストライプは 依然として役立つかもしれない。 代わりに、ストライプ用の適当なビットがストライプを更新する直前に設定さ れるが、更新が完了した後でも消去されない。周期的に、ビットマップが大量の 項目を蓄積している場合、すべてのブロックはディスクに流され、それは不一致 のストライプがないことを保証し、全ビットマップが消去される。以下の疑似コ ードはこれを実施する。 (1)ストライプを更新するために必要なすべてのブロックを読み込む。 (2)新たなパリティの内容を計算する。 (3)ストライプの更新用にビットマップの項目を設定する。 (4)ストライプの更新に必要なすべてのディスクブロックを書き込む。 (5)ビットマップが満杯の場合、すべてのブロックがディスクに到達するまで 待機し、すべてのビットマップを消去する。 システム故障の場合、ビットマップにより多くのブロックをリストよりも明確 にできるが、システム中のすべてのストライプに関するパリティを再計算するの に比べて保存は依然として相当なものである。一般的なRAIDシステムは25 0,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(箱で示す)が、ステップ1 112にしたがって、ストライプ用のパリティが更新される前に、ディスクに書 き込まれる。したがって、時刻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を正しい値1に戻す。時刻TE に、NV−RAMはステップ1113でクリアされる。したがって、本発明によ れば、NV−RAMを使用することによって、ディスクが故障したときに、シス テム故障によってデータが破壊されるのを防止できる。 図7Bは、データが更新される前にパリティがディスクに書き込まれた場合に 、NV−RAMの故障したディスクからデータを保存することによりデータ破壊 を防止する本発明のタイミング図である。時刻TAにおいて、壊れたデータディ スク1が、括弧内に示した値7を有するように示してある。この値は図7Aを参 照して上述のように計算される。ステップ1109では、ストライプは時刻TA にRAID配列から読み込まれる。NV−RAMがクリアされ、それはNV−R AMの見出しの下の疑問符で示してある。 時刻TBにおいて、故障したデータディスク1の値7がステップ1109にし たがってNV−RAMに書き込まれる。NV−RAMに書き込まれるデータディ スク1の値7は図7Bで長方形箱により示してある。次に、システムは、図11 のステップ1110でストライプに関するパリティの新たな値を計算する。 時刻TCでは、パリティの新たな値10(箱で示す)が、データブロック0を 更新する前に、ステップ1108でパリティディスクに書き込まれる。したがっ て、時刻TCにおいて、データディスク1の値は5で、括弧内に示してある。時 刻TCとTDとの間でシステム破壊が発生した場合、新たなパリティ値がNV−R AMを用いてパリティディスクについて正しく更新される。判定ブロック110 1では、システムがリブートした後、システム破壊が発生したか否か判定する。 そして、本実施例では判定ブロックでは正しい(Yes)に戻り、ステップ11 04を継続する。 以下のように、パリティは時刻TDにその値を再計算して正しく更新される。 パリティ=壊れたディスク(7)のNV−RAM+壊れていないディスクのディ スク上のデータ=4+7+1=12 (13) したがって、図7A−7Bに示すように、システムがまさにストライプに書き 込まれようとするとき、不揮発性RAM中の故障したデータディスク1に関する 値を保存する。次に、データディスク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、及びデータデ ィスク2(又は3)について解決策を提供する。判定ブロック1101では、シ ステム破壊が発生したか否か判定する。本実施例では、判定ブロックは正しい( Yes)に戻り、ステップ1104で継続される。パリティが減算により計算さ れる場合、システム破壊による壊れたディスクの3つの場合は、それぞれ図10 A−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が故障する。この場合は、ステップ114でNV−R AMからパリティとデータディスク0の値を読み込み、それらをディスク(箱で 示す)に書き込むことで処理される。したがって、データディスク0に対する変 換は上書きされるが、ストライプは矛盾のない状態に戻る。データディスク1は 、その値を括弧で囲うことにより、時刻TDとTFに破壊されたものとして示され ている。そして、破壊されたデータディスク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)に戻り、ステップ11 02で続けられ、NV−RAMの内容に基づいてRAIDサブシステムを回復す るために必要なステップを実行する。 図12Aは、パリティディスクが壊れた場合を示す。この場合、何も行われる 必要がない。データディスクは壊れていないので、データが失われる可能性はな い。 図12Bは、更新されるディスクが壊れた場合を示す。なお、時刻TDにおい て、ディスク0に関して計算された値は正しくない。一般に、複数のブロックが 更新されると、失われたデータブロックを再生するために十分な情報はNV−R AM中にない。これは、再計算によるパリティでは、NV−RAMに乗っている のは更新されていないデータだからである。壊れたディスク上のデータはどこに も保存されていない。 この場合、本発明では、壊れたディスクの内容をゼロに設定する新たなパリテ ィ値を計算する。そのための一般式は次の通りである。 パリティ=壊れていないディスクの合計 また、この実施例では、それは以下の通りである。 パリティ=D1+D2=7+1=8 時刻TEに新たなパリティ値が書き込まれ、また時刻TEにD1とD2に関する NV−RAM値がクリアされる。 新たなデータを古いデータと同じ場所に書き込む従来のファイルシステムでは 、データブロックをゼロ化することは行われない。しかし、WAFLによれば、 これは常に新たなデータをディスク上の不使用位置に書き込むものであり、書き 込まれるブロックをゼロ化することは問題ない。何故ならば、ブロックの内容は ファイルシステムの一部ではないからである。 図12Cは、更新されないディスクが壊れた場合を示す。なお、時刻TDにお いて、ディスクの計算値は正しくない。パリティを再計算する式は以下の通りで ある。 パリティ=“壊れたディスクのNV−RAM値” +“壊れていないディスクに関するディスク上の値” 本実施例では、それは次の通りである。 パリティ=NV(D1)+D0+D2=7+2+1=10 時刻TEに新たなパリティ値が書き込まれ、また時刻TFにD1とD2に関する NV−RAM値がクリアされる。 このようにして、不揮発性ランダムアクセスメモリ(RAM)を用いたディス ク配列に関するエラー補正の方法と装置が開示されている。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 マルコム、マイケル アメリカ合衆国、94022、カリフォルニア 州、ロス・アルトス、サウス・アヴァロ ン・ドライブ48番 (72)発明者 ロー、ジェームス アメリカ合衆国、95014、カリフォルニア 州、クパーティノ、アップランド・ウェイ 11570番 (72)発明者 ラッキッツィズ、バイロン アメリカ合衆国、94043、カリフォルニア 州、マウンテン・ヴュー、ノース・ウィス マン100番、ナンバー130

Claims (1)

  1. 【特許請求の範囲】 1.処理手段と、 複数のディスクのうちの少なくとも一つがパリティ情報を保存するためのも のである複数の保存データ用ディスクを有するRAID配列と、 上記RAID配列に接続されるRAID配列をコントロールするコントロー ル手段とを備え、上記コントロール手段はさらに処理手段に接続され、上記コン トロール手段は複数のストライプを保存する不揮発性メモリを備えている、エラ ー補正システム。
JP7502000A 1993-06-04 1994-06-02 不揮発性メモリを用いてraidサブシステムにパリティを形成する方法 Pending JPH08511368A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US7179893A 1993-06-04 1993-06-04
US071,798 1993-06-04
PCT/US1994/006321 WO1994029795A1 (en) 1993-06-04 1994-06-02 A method for providing parity in a raid sub-system using a non-volatile memory

Publications (1)

Publication Number Publication Date
JPH08511368A true JPH08511368A (ja) 1996-11-26

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 After (2)

Application Number Title Priority Date Filing Date
JP2007104593A Expired - Lifetime JP4283859B2 (ja) 1993-06-04 2007-04-12 記憶サブシステムおよびその作動方法
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)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003296038A (ja) * 2002-03-21 2003-10-17 Network Appliance Inc Raidシステムにおいてストライプの連続アレイに書き込む方法
JP2009514047A (ja) * 2003-06-28 2009-04-02 インターナショナル・ビジネス・マシーンズ・コーポレーション 多重化冗長ストレージへの安全な書き込みを行う装置及び方法

Families Citing this family (161)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US6604118B2 (en) 1998-07-31 2003-08-05 Network Appliance, Inc. File system image transfer
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
US5758057A (en) * 1995-06-21 1998-05-26 Mitsubishi Denki Kabushiki Kaisha Multi-media storage system
GB2307071B (en) * 1995-06-21 1998-04-29 Mitsubishi Electric Corp 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 分散パリティ生成機能を備えたディスクアレイ制御装置
DE60038448T2 (de) 1999-10-14 2009-04-02 Bluearc Uk Ltd. Vorrichtung und verfahren zur hardware-ausführung oder hardware-beschleunigung von betriebssystemfunktionen
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
US6636879B1 (en) * 2000-08-18 2003-10-21 Network Appliance, Inc. Space allocation in a write anywhere file system
US6728922B1 (en) 2000-08-18 2004-04-27 Network Appliance, Inc. Dynamic data space
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
US6871295B2 (en) 2001-01-29 2005-03-22 Adaptec, Inc. Dynamic data recovery
US6990547B2 (en) * 2001-01-29 2006-01-24 Adaptec, Inc. Replacing file system processors by hot swapping
US6990667B2 (en) 2001-01-29 2006-01-24 Adaptec, Inc. Server-independent object positioning for load balancing drives and servers
US20020138559A1 (en) * 2001-01-29 2002-09-26 Ulrich Thomas R. Dynamically distributed file system
US6862692B2 (en) * 2001-01-29 2005-03-01 Adaptec, Inc. Dynamic redistribution of parity groups
US20020191311A1 (en) * 2001-01-29 2002-12-19 Ulrich Thomas R. Dynamically scalable disk array
US7054927B2 (en) 2001-01-29 2006-05-30 Adaptec, Inc. File system metadata describing server directory information
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
US7739614B1 (en) 2001-05-22 2010-06-15 Netapp, Inc. System and method for consolidated reporting of characteristics for a group of directories
US8171414B2 (en) * 2001-05-22 2012-05-01 Netapp, Inc. System and method for consolidated reporting of characteristics for a group of file systems
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
US6851082B1 (en) 2001-11-13 2005-02-01 Network Appliance, Inc. Concentrated parity technique for handling double failures and enabling storage of more than one parity block per stripe on a storage device of a storage array
US7346831B1 (en) 2001-11-13 2008-03-18 Network Appliance, Inc. Parity assignment technique for parity declustering in a parity array of a storage system
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
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
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
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
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
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
US7254813B2 (en) * 2002-03-21 2007-08-07 Network Appliance, Inc. Method and apparatus for resource allocation 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
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 华为技术有限公司 一种磁盘在线重构方法
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
US7424637B1 (en) 2003-03-21 2008-09-09 Networks Appliance, Inc. Technique for managing addition of disks to a volume of a storage system
US7457982B2 (en) * 2003-04-11 2008-11-25 Network Appliance, Inc. Writable virtual disk of read-only snapshot file objects
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
US7260737B1 (en) 2003-04-23 2007-08-21 Network Appliance, Inc. System and method for transport-level failover of FCP devices in a cluster
US7293152B1 (en) 2003-04-23 2007-11-06 Network Appliance, Inc. Consistent logical naming of initiator groups
US7739543B1 (en) 2003-04-23 2010-06-15 Netapp, Inc. System and method for transport-level failover for loosely coupled iSCSI target devices
US7437530B1 (en) 2003-04-24 2008-10-14 Network Appliance, Inc. System and method for mapping file block numbers to logical block addresses
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
US7330862B1 (en) 2003-04-25 2008-02-12 Network Appliance, Inc. Zero copy write datapath
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
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
US7716323B2 (en) * 2003-07-18 2010-05-11 Netapp, Inc. System and method for reliable peer communication in a clustered storage system
US7593996B2 (en) 2003-07-18 2009-09-22 Netapp, Inc. System and method for establishing a peer connection using reliable RDMA primitives
US7055014B1 (en) 2003-08-11 2006-05-30 Network Applicance, Inc. User interface system for a multi-protocol storage appliance
US7991748B2 (en) 2003-09-23 2011-08-02 Symantec Corporation Virtual data store creation and use
US7725760B2 (en) 2003-09-23 2010-05-25 Symantec Operating Corporation Data storage system
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
US7827362B2 (en) 2004-08-24 2010-11-02 Symantec Corporation Systems, apparatus, and methods for processing I/O requests
US7730222B2 (en) 2004-08-24 2010-06-01 Symantec Operating System Processing storage-related I/O requests using binary tree data structures
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
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
US7392458B2 (en) * 2004-11-19 2008-06-24 International Business Machines Corporation Method and system for enhanced error identification with disk array parity checking
US7290199B2 (en) * 2004-11-19 2007-10-30 International Business Machines Corporation Method and system for improved buffer utilization for disk array parity updates
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
EP2155235B1 (en) * 2007-04-09 2016-04-06 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
EP2399195A1 (en) * 2009-02-18 2011-12-28 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
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
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
EP2630571B1 (en) * 2010-10-21 2020-10-14 Oracle International Corporation 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
EP2737431A4 (en) * 2011-07-27 2015-03-25 Cleversafe Inc GENERATION OF DISTRIBUTED STORAGE NETWORK EVENT RECORDS
US10678619B2 (en) 2011-07-27 2020-06-09 Pure Storage, Inc. Unified logs and device statistics
US11016702B2 (en) 2011-07-27 2021-05-25 Pure Storage, Inc. Hierarchical event tree
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
US5195100A (en) * 1990-03-02 1993-03-16 Micro Technology, Inc. Non-volatile memory storage of write operation identifier in data sotrage device
US5166939A (en) * 1990-03-02 1992-11-24 Micro Technology, Inc. Data storage apparatus and method
US5134619A (en) * 1990-04-06 1992-07-28 Sf2 Corporation Failure-tolerant mass storage system
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
EP0485110B1 (en) * 1990-11-09 1999-08-25 Emc Corporation Logical partitioning of a redundant array storage system
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
CA2126754A1 (en) * 1991-12-27 1993-07-08 E. David Neufeld Method for performing disk array operations using a nonuniform stripe size mapping scheme
US5333305A (en) * 1991-12-27 1994-07-26 Compaq Computer Corporation Method for improving partial stripe write performance in disk array subsystems
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
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
US5305326A (en) * 1992-03-06 1994-04-19 Data General Corporation High availability disk arrays
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
DE69425658T2 (de) 1993-06-03 2001-04-19 Network Appliance Inc Anordnung eines dateisystems zum beschreiben beliebiger bereiche
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
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
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
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
US5761669A (en) 1995-06-06 1998-06-02 Microsoft Corporation Controlling access to objects on multiple operating systems
US5675782A (en) 1995-06-06 1997-10-07 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

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003296038A (ja) * 2002-03-21 2003-10-17 Network Appliance Inc Raidシステムにおいてストライプの連続アレイに書き込む方法
JP2010079928A (ja) * 2002-03-21 2010-04-08 Netapp Inc Raidシステムにおいてストライプの連続アレイに書き込む方法
JP2009514047A (ja) * 2003-06-28 2009-04-02 インターナショナル・ビジネス・マシーンズ・コーポレーション 多重化冗長ストレージへの安全な書き込みを行う装置及び方法

Also Published As

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

Similar Documents

Publication Publication Date Title
JPH08511368A (ja) 不揮発性メモリを用いてraidサブシステムにパリティを形成する方法
US10496481B2 (en) Methods and systems for rebuilding data subsequent to the failure of a storage unit
EP0482819B1 (en) On-line reconstruction of a failed redundant array system
EP0608344B1 (en) System for backing-up data for rollback
JP3164499B2 (ja) ディスクアレイにおけるパリティデータの無矛盾性保持方法
US7437508B2 (en) Method and system for storing data in an array of storage devices with additional and autonomic protection
US5488701A (en) In log sparing for log structured arrays
EP0503768B1 (en) Method and means for accessing arrays of DASDS
US6349359B1 (en) Method and apparatus for maintaining data consistency in raid
EP0612015A1 (en) Improved disk array system having special parity groups for data blocks with high update activity
US20040123032A1 (en) Method for storing integrity metadata in redundant data layouts
EP0690379A2 (en) Enhanced data management in data storage subsystems
US8365043B2 (en) Efficient redundant memory unit array
GB2414592A (en) Decreasing failed disk reconstruction time in a RAID data storage system
GB2343265A (en) Data storage array rebuild
CA2165910C (en) Method for providing parity in a raid sub-system using a non-volatile memory
JP3022688B2 (ja) 補助記憶装置