JP2902970B2 - ディスク・アレイにデータを書き込むためのシステムおよび関連する方法 - Google Patents

ディスク・アレイにデータを書き込むためのシステムおよび関連する方法

Info

Publication number
JP2902970B2
JP2902970B2 JP7023667A JP2366795A JP2902970B2 JP 2902970 B2 JP2902970 B2 JP 2902970B2 JP 7023667 A JP7023667 A JP 7023667A JP 2366795 A JP2366795 A JP 2366795A JP 2902970 B2 JP2902970 B2 JP 2902970B2
Authority
JP
Japan
Prior art keywords
block
data
parity
disk
new
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
JP7023667A
Other languages
English (en)
Other versions
JPH07306759A (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
Priority to US238769 priority Critical
Priority to US08/238,769 priority patent/US5522032A/en
Application filed by インターナショナル・ビジネス・マシーンズ・コーポレイション filed Critical インターナショナル・ビジネス・マシーンズ・コーポレイション
Publication of JPH07306759A publication Critical patent/JPH07306759A/ja
Application granted granted Critical
Publication of JP2902970B2 publication Critical patent/JP2902970B2/ja
Anticipated expiration legal-status Critical
Application status is Expired - Lifetime legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING; 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/1009Cache, i.e. caches used in RAID system with parity
    • GPHYSICS
    • G06COMPUTING; CALCULATING; 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/1033Inactive data in parity groups, i.e. RAID parity groups where parity is calculated on only occupied or busy bits in the stripe
    • GPHYSICS
    • G06COMPUTING; CALCULATING; 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; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/312In storage controller

Description

【発明の詳細な説明】

【0001】

【産業上の利用分野】本発明は、一般的にはディジタル
情報用の永続記憶システム、特にディスク・タイプの永
続記憶システムに関し、より具体的にはディスク障害か
らの回復を容易にするためにパリティ・ブロックを作成
して格納するディスク・アレイ・システムに関する。

【0002】

【従来の技術】スループットの高いディジタル情報の大
量記憶を行うために、単一大型高価格ディスク(SLE
D)に代わる低コスト装置として、低価格ディスクの冗
長アレイ(RAID)が提案されている。RAIDの理
論は、1個ずつでは高価格ディスクより障害発生率が高
くなると思われる比較的低価格のディスクを使用し、デ
ィスク障害からの回復を容易にするためにパリティ・ブ
ロックを作成して格納することで冗長性を高め、それに
よりこの障害率の上昇を補うことにある。

【0003】図1は、その上にRAID構成を実現でき
るディスク・アレイ・サブシステム・アーキテクチャを
示している。ここでは、ホスト・システム10に接続さ
れ、キャッシュ31を有するディスク制御装置30が、
RAID40〜43を管理している。合計N+1個のデ
ィスクを使用するRAID構成の場合、N個のデータ・
ブロックごとに1つのパリティ・ブロックが作成され、
このN+1個のブロック(N個のデータ・ブロックに1
つのパリティ・ブロックを加えたもの)のそれぞれが別
々のディスクに格納される。ある実施態様では、N個の
データ・ブロックについてビット単位で「排他的論理
和」(XOR)を計算することで、N個のデータ・ブロ
ックからパリティ・ブロックが計算される。このパリテ
ィ・ブロックと、パリティ・ブロックの計算に使用した
N個のデータ・ブロックとを合わせて、パリティ・グル
ープと呼ぶ。パリティ・グループ内のブロックであれ
ば、どのブロックでも、そのパリティ・グループの残り
のブロックから計算することができる。

【0004】言及することにより本明細書の一部とな
る"A Case for Redundant Arrays ofInexpensive Disks
(RAID)"(Proc. of ACM SIGMOD International Confer
enceon Management of Data, pp. 109-116, 1988)にお
いて、D. A. Patterson、G.Gibson、およびR. H. Katz
は、RAIDレベル1〜5として分類した5通りのディ
スク・アレイについて説明している。このうち、特に興
味深いのは、RAIDレベル5という構成のディスク・
アレイである。このようなタイプのRAIDでは、パリ
ティ・ブロックが全ディスクに均等に分散しているた
め、ボトルネック問題が発生しない。

【0005】RAID環境の欠点の1つは、SLED上
でのディスク・アクセス操作が2回であるのに対し、R
AID上でのデータ書込みでは4回のディスク・アクセ
ス操作が必要になるため、ディスク書込み操作の費用が
SLED上よりかなり高くなることである。RAID構
成のディスク制御装置は、データ・ブロック書込み要求
を受け取ると、データ・ブロックの更新(すなわち、読
取りと書込み)だけでなく、整合性を維持するために対
応するパリティ・ブロックの更新(すなわち、読取りと
書込み)も行わなければならない。たとえば、図3のデ
ータ・ブロックD1に書き込む場合、P0という新しい
値が次のように計算される。 新P0=(旧D1 XOR 新D1 XOR 旧P0) このため、(1)旧データ・ブロックD1の読取り、
(2)旧パリティ・ブロックP0の読取り、(3)新デ
ータ・ブロックD1の書込み、(4)新パリティ・ブロ
ックP0の書込みという4回のディスク・アクセス操作
が必要になる。この場合、読取りを完了しないと、書込
みを開始することができない。

【0006】"Performance of Disk Arrays in Transac
tion Processing Environments"(Proc. of Internatio
nal Conference on Distributed Computing Systems, p
p. 302-309, 1992)において、J. MenonおよびD. Matts
onは、ディスク制御装置で記憶ブロックのキャッシュお
よびバッファを行えば、RAIDディスク・アレイ・サ
ブシステムのパフォーマンスを改善できると教示してい
る。ディスク・キャッシュがある場合、置換対象のブロ
ックがそのキャッシュ内にあれば、そのブロックのディ
スク・アレイからの先行読取りを回避することができ
る。また、各パリティ・グループのパリティ・ブロック
もキャッシュに格納されている場合は、パリティ・ブロ
ックがキャッシュ内にあれば、ディスク・アレイからの
両方の読取りを回避することもできる。

【0007】1993年2月16日に出願され、本出願
人に譲渡された関連米国特許出願第07/017920
号(IBM整理番号YO993−013)には、更新時
のディスク・アクセスの回数を削減するために書込みア
クティビティが高いパリティ・グループからのパリティ
・ブロックがキャッシュ・バッファに格納されているシ
ステムが記載されている。

【0008】

【発明が解決しようとする課題】従来の方式の欠点は、
所与の時点で所与のパリティ・グループ内の様々なデー
タ・ブロックに有用なデータが入っていない可能性があ
ることである。たとえば、未使用と思われるデータ・ブ
ロックもあれば、前に使用されたものの、オペレーティ
ング・システムによって解放されてしまったと思われる
データ・ブロックが存在する可能性もある。このため、
各データ・ブロック・グループにパリティ・ブロックが
1つずつ割り当てられるのに対し、各パリティ・ブロッ
ク・ビットは、データ・ブロックが使用中かどうかにか
かわらず、対応するすべてのデータ・ブロック・ビット
に依存することになる。

【0009】

【課題を解決するための手段】本発明は前述の諸欠点を
解消するものである。本発明は、パリティ・ブロックが
そのパリティ・グループ内のすべてのデータ・ブロック
またはこのデータ・ブロックの任意のサブセットに関す
るパリティ情報を提供できることを特徴とする、ディス
ク・アレイにデータを書き込むためのシステムである。
これにより、現在使用中のデータ・ブロックに関するパ
リティ情報だけを格納できるようになる。本システム
は、それぞれの位置からなるパリティ・グループに関連
するパリティ・ブロックを格納するためにディスク・ア
レイに結合されたキャッシュ・メモリを含んでいる。本
発明によると、それぞれのパリティ・ブロックは、パリ
ティ・データによって保護された、特定のパリティ・グ
ループ内のデータ・ブロックを示す識別子を含む。キャ
ッシュ・メモリとディスク・アレイに結合された書込み
論理機構は、その識別子を読み取り、宛先ブロックがパ
リティ・データによって保護されていないかどうかを判
定するための手段を含む。また、この書込み論理機構
は、無保護位置に書き込むための書込み手段と、その位
置が保護されていることを示すためにその位置を含むパ
リティ・ブロックに関連する識別子とパリティ・データ
とを更新するための更新手段も含んでいる。

【0010】

【実施例】本発明は、図2に示すディスク・アレイ・サ
ブシステム上で実施できるが、このディスク・アレイ・
サブシステムは、キャッシュ・メモリ31を有するディ
スク制御装置30と、ディスク・アレイ40、41、4
2、および43とを含んでいる。キャッシュ・メモリ3
1は、データ・ブロックをバッファするためのデータ区
画31aと、パリティ・ブロックをバッファするための
パリティ区画31bという2つの区画に分割されてい
る。データ区画31aとパリティ区画31bは、それぞ
れ個別にキャッシュ制御装置からアクセスできる。本発
明の実施例によれば、データ・ブロック書込みは可変書
込み保護論理機構32の制御下で実行されるが、この論
理機構32はキャッシュ31の両方の区画31aおよび
31bに接続されている。後述する好ましい実施例のデ
ィスク・アレイ40〜43におけるデータ・マッピング
はRAIDレベル5(RAID V)のマッピングであ
る。

【0011】図4は、ディスク制御装置30がそのキャ
ッシュ31aおよび31bのために使用するデータ構造
を表している。ブロック202に任意のストライプの識
別子が与えられると、RAID Vは、どのディスクが
パリティと残りのディスク上のデータ・ブロックの番号
を有するかを判定する。次に、ディスク制御装置が実際
のディスク・アドレスを操作する。キャッシュ・ディレ
クトリ204および206はハッシュ・テーブルとして
実現され、一方がパリティ・キャッシュ用、もう一方が
データ・キャッシュ用になる。ディスク・ブロック・ア
ドレスが与えられると、そのアドレスを有するデータが
キャッシュ内にあるかどうかを判定し、そのデータがキ
ャッシュ内にある場合はその位置を判定するために、ハ
ッシュ・テーブルに対して問合せが行われる。パリティ
・キャッシュ内の1つのブロック用のハッシュ・テーブ
ル項目は、LRUスタック208を指し示す。LRUス
タック項目とキャッシュ・ブロックとの間には一対一の
対応関係があるため、LRUスタック項目のアドレスに
よって、実際のデータの位置が決まる。したがって、デ
ータのアドレスを計算するには、(キャッシュ・スペー
スの基底アドレス)+(ブロック・サイズ)*(LRU
スタック項目のアドレス−LRUスタックの基底アドレ
ス)/(LRUスタック項目の長さ)という式を使用す
る。また、LRUスタック210の各項目にはデータ・
ブロック・アドレス・フィールドが1つずつ付いてい
る。

【0012】動作時には各キャッシュが次のように使用
される。(1)パリティ/データ・ブロックにアクセス
するたびに、そのブロックが現行位置からLRUスタッ
ク内の最近使用(MRU)位置に移動する。(2)パリ
ティ/データ・ブロックの読込みのためにスペースが必
要になると、LRUブロック用のキャッシュ・スペース
が解放され、そのブロックがこの位置に読み込まれてM
RU位置に置かれ、それに応じてキャッシュ・ディレク
トリが更新される。

【0013】好ましい実施例では、LRUスタックが固
定サイズ項目の二重連係リストまたは連鎖として実現さ
れている。各項目は、その項目がLRUスタックになる
原因であるオブジェクトに関する情報を持っている可能
性がある。この場合、アドレス計算技法を使用するので
あれば、キャッシュ・ブロックを指し示すポインタは不
要である。また、各項目は、次のMRU項目(または、
NILがMRU項目であればNIL)を指し示すポイン
タと、次のLRU項目(または、NILがLRU項目で
あればNIL)を指し示すポインタという2つのポイン
タに関する情報も持っている可能性がある。数個の命令
でスタックの中央から項目をどこかに移動させ、さらに
スタックの一番上に置くことができるので、LRUスタ
ックはソフトウェアで実現することができる。

【0014】図3は、RAIDレベル5のデータ・マッ
ピングを示している。合計N+1個のディスクを使用す
るRAIDレベル5システムでは、各パリティ・グルー
プがN個のデータ・ブロックと、1つのパリティ・ブロ
ックを含んでいる。従来の手法では、図3に示すように
データ・ブロックが複数のパリティ・グループに分割さ
れる。たとえば、図3では、データ・ブロックD0、D
1、D2、およびD3と、パリティ・ブロックP0と
で、1つのパリティ・グループが形成されている。ま
た、図3のパリティ・ブロックには100、101、1
02、103、および104というラベルが付いてい
る。このため、パリティ・ブロックP0(ラベルは10
0)は、データ・ブロックD0(ラベルは110)、D
1(ラベルは111)、D2(ラベルは112)、およ
びD3(ラベルは113)のXORになっている。本発
明によれば、ホスト・システム10からディスク制御装
置30に対してデータ・ブロック更新要求が行われるた
びに、それに対応するパリティ・ブロックがすでに制御
装置のキャッシュ31内にあれば、1回のデータ更新に
ついて、1)旧データの読取り、2)新データの書込
み、3)新パリティ・ブロックの書込みという3回の物
理的なディスク・アクセス操作が必要になる。

【0015】本発明の実施例によれば、それぞれのパリ
ティ・ブロックは、パリティ・グループ内のどのデータ
・ブロックが保護されているかを示す識別子すなわち
「接頭部」を含んでいる。ホスト・システム10がディ
スク制御装置30に書込みコマンドを送ると、可変書込
み保護論理機構32がキャッシュ・メモリ31内の関連
パリティ・ブロックからその接頭部を読み取る。書込み
対象のパリティ・グループ(すなわち「ストライプ」)
に関連するパリティ・ブロック接頭部が、そのパリティ
によって特定のデータ・ブロックが保護されていないこ
とを示している場合には、旧パリティと新データ・ブロ
ックとのXORが取られ、そのデータ・ブロックが保護
されていることを示すために接頭部が更新され、新デー
タがディスク上のデータ・ブロックに書き込まれ、新パ
リティ・ブロックがディスクに書き込まれる。このた
め、ディスクから旧データを読み取るステップが完全に
回避される。

【0016】本発明による可変保護単一ブロック書込み
論理機構32の流れ図を図5に示す。この可変保護書込
み論理機構32は、ディスク制御装置のマイクロプロセ
ッサ上で実行されるマイクロコード制御プログラムとし
て実施できる。

【0017】この論理機構は、ディスク制御装置がホス
ト・システム10から書込みコマンドを受け取ったとき
に始動する。書込みコマンドは、データ・ブロックと、
書込みアドレスとを含んでいる。また、書込みコマンド
には、そのストライプ全体が空き(すなわち、未使用)
スペースで構成されているかどうかを示すためにホスト
・ファイル・システムが設定したフラグも含まれてい
る。

【0018】ステップ302では、ディスク制御装置が
空きストライプ・フラグを検査し、データ・ブロックが
属しているストライプ全体が空きになっているかどうか
を判定する。そのストライプ全体が空きになっている場
合は、ステップ304でディスク制御装置がストライプ
のパリティ・ブロックPをデータ・ブロックDと等しく
なるように設定する(P=D)。また、空きブロック・
ビット・ベクトルではデータ・ブロックDに保護のマー
クが付けられる。この操作では、キャッシュまたはディ
スクからの読取りが一切不要であることに留意された
い。ステップ306では、ディスク制御装置がPとDを
ディスクに書き込む。

【0019】ステップ302で、そのストライプ全体が
空きになっていないとディスク制御装置が判定した場合
は、ステップ308で、パリティ・ブロックPがキャッ
シュ31内にあるかどうかをディスク制御装置がハッシ
ュ・テーブル304を使用して判定する。NOの場合
は、ステップ310で、置換されるデータ・ブロック
(Dold)がキャッシュ31内にあるかどうかを制御装
置が判定する。YESの場合は、ステップ312で、制
御装置がディスクからPを読み取る。NOの場合は、ス
テップ314で、制御装置がディスクからPとDold
両方を読み取る。

【0020】次に、ステップ316で、制御装置がパリ
ティ・ブロック接頭部を検査し、Doldが保護されてい
るかどうかを判定する。YESの場合は、ステップ31
8で、制御装置がパリティPの新しい値をP=P XO
R Dold XOR Dとして求める。次に、ステップ
306で、PとDがディスクに書き込まれる。Dold
保護されていない場合は、ステップ320で、Pの新し
い値がP=P XORDとして求められ、ブロック接頭
部でDに保護のマークが付けられる。次に、ステップ3
06で、PとDがディスクに書き込まれる。

【0021】ステップ308で、Pがキャッシュ内にあ
ると判定された場合は、ステップ324で、制御装置が
パリティ・ブロック接頭部を検査し、Doldが保護され
ているかどうかを判定する。YESの場合は、ステップ
326で、Doldがキャッシュ内にあるかどうかをディ
スク制御装置が判定する。YESの場合は、ステップ3
18と306が実行される。NOの場合は、ステップ3
28でDoldがディスクから読み取られ、次にステップ
318と306が実行される。

【0022】ステップ324で、Doldが保護されてい
ないと判定された場合は、ステップ320で、制御装置
が新しいパリティ値をP=P XOR Dとして求め、
Dに保護のマークを付ける。次に、ステップ306が実
行される。ステップ320では、すべての値がキャッシ
ュから取られるため、ディスクからの読取りが一切不要
であることに留意されたい。

【0023】好ましい実施例では、ファイル・システム
と呼ばれるホスト・オペレーティング・システムの構成
要素の1つがディスク空間を管理する。このファイル・
システムは、ファイルおよびディレクトリという論理エ
ンティティをディスク上の物理空間にマッピングする操
作と、空き(未使用)ディスク空間の管理を担当する。
たとえば、新しいファイルの作成または既存のファイル
の拡張が必要な場合には、空きスペースが空きではなく
なる(すなわち、使用中になる)ように、ファイル・シ
ステムが既存の空きスペースをこの目的に割り振ること
ができる。これに対して、ファイルを削除するか、ファ
イルを格納するのに必要なスペースが減少した場合に
は、前に使用中だったスペースを空きにすることができ
る。空きスペースへのディスク書込みのパフォーマンス
を最適化し、ディスク障害後の回復速度を向上させるた
めには、空きディスク・ブロックが無保護であることが
望ましい。このため、ディスク制御装置に対して「空き
ブロック・コマンド」が提供される。この論理機構につ
いては図6に示す。このコマンドは、前に使用中だった
スペースが所与のストライプSで空きになった場合にフ
ァイル・システムが出すか、または所与の間隔または累
積された保護空きスペースの限界量などによって判定さ
れた時点で定期的にバッチ処理(1回のバッチ処理は、
無保護にする必要がある保護空きスペースが入っている
ストライプごとに1つずつのコマンドで構成される)で
実行することができる。

【0024】図6の「空きブロック・コマンド」は次の
ように動作する。まず、ステップ402で、Pがキャッ
シュ内にあるかどうかをキャッシュ保守プログラムが判
定する。NOの場合は、ステップ404で、Pがディス
クからキャッシュに読み込まれる。次に、ステップ40
6で、解放するブロック数(k)がストライプ内のブロ
ック数(N)(Pはカウントしない)と等しいかどうか
を上記のプログラムが判定する。ストライプ全体(Pは
除く)を解放する場合は、ステップ408で、すべての
データ・ブロックに無保護のマークが付けられる。ステ
ップ410では、キャッシュ内に格納されている、解放
対象の各ブロックBjに空きキャッシュ・スペースのマ
ークが付けられる。次に、ステップ412で、新しいパ
リティ・ブロックがディスクに書き込まれる。

【0025】データ・ブロックのストライプの一部を解
放する場合は、ステップ414で、キャッシュ内に格納
されていない、使用中のデータ・ブロック数(d)が求
められる。dは、使用中の全データ・ブロックのXOR
を取ることでパリティを計算する際にディスクから読み
取る必要があるデータ・ブロックの数である。次に、ス
テップ416で、キャッシュ内にない、解放対象の保護
データ・ブロック数bが求められる。bは、無保護にす
る保護ブロック数を引くことでパリティを再計算する際
にディスクから読み取る必要があるブロックの数であ
る。

【0026】次に、ステップ415で、dがb以下であ
るかどうかが判定される。このステップの目的は、2通
りの選択肢について行う入出力操作を最小回数にするこ
とである。dがb以下である場合は、ステップ418
で、キャッシュ内にない、使用中のデータ・ブロックが
すべてディスクから読み取られ、ステップ420で、す
べてのデータ・ブロックD1〜Dn相互間のXORを取
ることでパリティが再計算される。これに対して、dが
bより大きい場合は、ステップ422で、キャッシュ内
にない、すべての保護データ・ブロックがディスクから
読み取られ、ステップ424で、解放対象の各データ・
ブロックBjとパリティ・ブロックPとのXORが取ら
れる。この操作は、解放対象の保護データ・ブロックB
jをパリティ・ブロックから引くものである。

【0027】ステップ426では、解放するブロックB
jの項目を関連ブロック接頭部から消去することで、す
べての解放ブロックBjに無保護のマークを付ける。次
に、前述のように、ステップ410と412が実行され
る。

【0028】図7〜図9は、本発明によりパリティ・ブ
ロック接頭部502を使用してパリティを求める方法の
例を示している。ここでは、ストライプ(パリティ・グ
ループ)ごとに4つのデータ・ブロックと1つのパリテ
ィ・ブロックを有する実施例が示されている。接頭部
は、それぞれのデータ・ブロックDnが接頭部内に1つ
ずつ位置を占めるようにマッピングされる。0は、それ
ぞれのデータ・ブロックがパリティ計算に含まれていな
いことを示し、1は、データ・ブロックがパリティ計算
に含まれていることを示す。

【0029】図7では、データ・ブロックD9、D1
0、およびD11が空きになっているため、データ・ブ
ロックD8だけがパリティ・ブロックP2によって保護
されている。パリティ・ブロックP2のパリティ・ビッ
ト504aがブロックD8だけから生成されたことを示
すために、接頭部502aは1000(2進数)に設定
される。3つの0は、残りの3つのデータ・ブロックが
無保護であることを示している。

【0030】図8では、制御装置がブロックD10への
書込みを行う必要があると想定されている。旧パリティ
・ブロック接頭部502aを検査することで、制御装置
は、ブロックD8だけがパリティ・ビットによって保護
されていると判定し、その結果、新パリティがP=D8
XOR D10またはP=D10 XOR 旧Pとし
て計算され、パリティ・ブロック504bに格納され
る。

【0031】図9では、制御装置がブロックD9への書
込みを行う必要があると想定されている。旧パリティ5
02bは、ブロックD9が保護されていないことを示し
ている。このため、新パリティは、P=D8 XOR
D9 XOR D10またはP=D9 XOR 旧Pと
して計算される。502cに示すように、Pがパリティ
・ブロック504cに格納され、接頭部が更新される。

【0032】本発明の空きブロック・パリティを備えた
RAID5システムの場合、ディスク・アレイ内の1個
のディスクで障害が発生した場合の回復シナリオは、標
準のRAIDディスク・アレイの場合と同じである。つ
まり、障害が発生したディスク上の1つのブロックを有
する各パリティ・グループ内の欠落ブロックが、他のデ
ィスク上の対応パリティ・グループの残りのブロックか
ら導出される。しかし、本システムでは、パリティ・ブ
ロックで記述されたデータ・ブロックのマップが接頭部
によって提供される点が、回復時に有利な要因になる。
このため、未使用データ・ブロックの再構築は不要であ
る。

【0033】単一ディスク障害が発生した場合、従来の
RAIDアーキテクチャ・ディスク・システムのディス
クの内容を再構築することができる。特に、障害が発生
した各ブロックがパリティ・ブロックであれば、そのブ
ロックごとにパリティ情報が再計算され、各ブロックが
データ・ブロックであれば、ストライプ内の他の全デー
タ・ブロックと、そのストライプのパリティ・ブロック
とを使用して、そのブロックの内容を再構築することが
できる。

【0034】本発明の可変ストライプ保護方式を使用し
て、再構築が次のように行われる。まず、障害が発生し
たディスク上のブロックがデータ・ブロックであると想
定する。このストライプ用のパリティ・ブロックから、
そのブロックが保護ブロックか無保護ブロックかを判定
することができる。保護ブロックである場合は、その内
容が前述のように再構築される。ただし、(パリティ・
ブロックとともに)ストライプ内にある他の保護データ
・ブロックだけが使用される。他の数ブロックだけが保
護ブロックである場合には、この操作の結果、(先行技
術の方法に比べ)入出力操作が節約されるため、ディス
クの回復速度が向上し、各ストライプ内の保護ブロック
数が減少し、節約量が増加する。もう1つのケースは、
データ・ブロックが無保護の場合である。この場合は、
追加アクションが一切不要なので、明らかに先行技術の
方法より大幅な改善になる。特に、障害が発生したディ
スクに大量の無保護(空き)スペースが入っている場合
には、従来のディスク再構築方法に比べ、ディスクの回
復速度がきわめて高速になることに留意されたい。

【0035】次に、障害が発生したディスク上のブロッ
クがパリティ・ブロックであると想定する。この場合、
ブロックの再構築方法は2通りある。1つの方法では、
ホスト・システムから独立してディスク再構築を実行す
る必要がある場合、ストライプ内の全データ・ブロック
が有効(使用中)ブロックであるという最悪例想定を行
う必要がある。この場合、パリティ・ブロックは、スト
ライプ内の全データ・ブロックのパリティを計算するこ
とで求められ、しかも、パリティ・ブロック接頭部域で
は全データ・ブロックに保護のマークが付けられる。

【0036】もう1つの方法は、ホスト・システムとの
通信を伴うもので、次のように行われる。まず、障害が
発生したディスク上の各パリティ・ブロックごとに、デ
ィスク制御装置が、ストライプ内のデータ・ブロックの
状況(空きまたは使用中)を求める照会をホスト・ファ
イル・システムに対して実行する。ホスト・ファイル・
システムは、ストライプ内の各ブロックごとに、そのブ
ロックが空きかどうかを示すビットベクトルを返す。こ
のような空きブロックには、それぞれ無保護のマークが
付けられ、ストライプ内の残りのデータ・ブロックに
は、保護のマークが付けられる。最後に、ストライプ内
の保護ブロックについてパリティが計算され、その結
果、障害が発生したディスク上のパリティ・ブロックが
再構築される。ストライプ内のデータ・ブロックの一部
が保護されている場合には、保護ブロックだけをディス
クから読み取ってパリティ・ブロックを再計算すればよ
いので、この方法も従来の方法の改善策となる。

【0037】要約すると、本発明では、ストライプ内の
データ・ブロックの一部がパリティ・ブロックによって
保護されている場合に必要な、読取りと書込みの回数が
削減される。具体的には、パリティ・ブロックは、各デ
ータ・ブロックを保護データ、すなわち、それに関する
パリティ情報がすでに計算されてパリティ・ブロックに
格納されているデータか、無保護データ、すなわち、そ
れに関するパリティ情報が格納されていないデータのい
ずれかとして分類する識別子を含んでいる。後者のカテ
ゴリのデータ・ブロックは、必ず、使用中ではないブロ
ックでなければならない。さらに、最初のカテゴリ(保
護)のデータ・ブロックは、使用中または非使用中とし
て分類することができる。たとえば、所与のブロックの
情報を更新して別のディスク位置に書き込んだ場合、ま
たはその情報が使用済みになり、そのデータが入ってい
るディスク空間がオペレーティング・システムによって
解放された場合などに、保護データ・ブロックに使用中
ではないデータが入る可能性がある。現行パリティ情報
には現行ブロックの内容が含まれていないので、現行ブ
ロックの内容を先に判定せずに、無保護データ・ブロッ
クへの書込みが行われる。さらに、保護されているが使
用されていないデータ・ブロックは、使用中のデータ・
ブロックに関するパリティ情報を再計算することで、無
保護ブロックに変換することができる。好ましい実施例
では、本システムは、その内容がデータおよびパリティ
・ブロックの数を含んでいるキャッシュ・メモリだけで
なく、各タイプのブロックの読み書きに必要なアクショ
ンを判定するためにパリティ・ブロック内の接頭部を読
み取って修正する書込み論理機構も使用している。

【0038】本発明の好ましい実施例に関連して本発明
を具体的に示し説明してきたが、当業者には、本発明の
精神および範囲を逸脱せずに、形式および細部の点で様
々な変更態様が可能であることが理解されるだろう。

【0039】まとめとして、本発明の構成に関して以下
の事項を開示する。

【0040】(1)ディスク・アレイにデータを書き込
むためのシステムにおいて、前記ディスク・アレイに結
合され、ディスク・データ・ブロックのストライプに関
連する1つまたは複数のパリティ・ブロックを格納する
キャッシュ・メモリであって、各パリティ・ブロックが
前記ストライプ内の1つまたは複数のデータ・ブロック
に関するパリティ・データと、前記ストライプ内の保護
データ・ブロックを識別する識別子とを含む、キャッシ
ュ・メモリと、前記キャッシュ・メモリおよび前記ディ
スク・アレイに結合された書込み論理機構であって、1
つの位置がパリティ・データによって保護されているか
どうかを判定するための手段と、選択された位置にデー
タを書き込むための手段と、新しいパリティ・データを
計算し、選択された位置が保護されていることを示すた
めに必要であれば、該新しいパリティ・データに関連す
る識別子を更新するための手段とを含む前記書込み論理
機構とを含む、システム。 (2)データ・ブロックが解放されたあとで、前記ディ
スク・アレイから前記データ・ブロックを読み取るため
の手段と、前記データ・ブロックの解放を反映するよう
に、パリティ・データを再計算し、再計算したパリティ
・データに関連する識別子を更新するための手段とをさ
らに含むことを特徴とする、上記(1)に記載のシステ
ム。 (3)前記データ・ブロックが解放されたときに前記デ
ィスク・アレイから前記データ・ブロックを読み取るた
めの手段を含むことを特徴とする、上記(2)に記載の
システム。 (4)パリティ・データを再計算するためにディスクか
ら読み取るブロックの最適セットを決定するための手段
をさらに含むことを特徴とする、上記(2)に記載のシ
ステム。 (5)複数のデータ・ブロックが解放されたあとで、前
記ディスク・アレイから前記複数のデータ・ブロックを
読み取るための手段をさらに含むことを特徴とする、上
記(2)に記載のシステム。 (6)RAIDディスクに新しいデータを書き込むため
の方法において、前記新しいデータをキャッシュ・メモ
リに格納するステップと、ディスク・アレイ内のデータ
・ブロックのグループのうちの使用中のデータ・ブロッ
クに関するパリティ・ブロックを計算するステップと、
データ・ブロックのグループのうちのどのデータ・ブロ
ックが使用中であるかを示す識別子をパリティ・ブロッ
クに接続するステップと、前記新しいデータのために宛
先データ・ブロックを選択するステップと、前記宛先ブ
ロックが空きデータ・ブロックのグループに属している
かどうかを判定し、該グループに属している場合は、前
記新しいデータのみを使用してパリティ・ブロックを設
定し、設定されたパリティ・ブロックと前記新しいデー
タをディスクに書き込み、前記グループに属していない
場合は、宛先ブロックがパリティ・ブロックによって保
護されているかどうかを識別子から判定するステップで
あって、保護されている場合は、前記新しいデータと、
宛先ブロックと、パリティ・ブロックとを使用して、新
しいデータを反映した新しいパリティ・ブロックを計算
し、該新しいパリティ・ブロックを前記キャッシュとデ
ィスクに書き込み、保護されていない場合は、前記新し
いデータを反映した新しいパリティ・ブロックを計算
し、その新しいパリティ・ブロックを前記キャッシュと
ディスクに書き込み、その時点で宛先ブロックがパリテ
ィ・ブロックによって保護されていることを示すために
識別子を更新するステップとを含む、方法。 (7)宛先ブロックがパリティ・ブロックによって保護
されていて、宛先ブロックの内容がキャッシュに格納さ
れていない場合に、新しいパリティ・ブロックを計算す
る前にディスクから宛先ブロックの内容を読み取ること
を特徴とする、上記(6)に記載の方法。 (8)パリティ・ブロックと、データ・ブロックのグル
ープ内の各ブロックが、前記ディスク・アレイ内の別々
のディスクに格納されていることを特徴とする、上記
(7)に記載の方法。 (9)パリティ・ブロックがキャッシュに格納されてい
ない場合に、宛先ブロックが保護されているかどうかを
判定するステップの前に、ディスクからパリティ・ブロ
ックと識別子とを読み取ることを特徴とする、上記
(6)に記載の方法。 (10)前記新しいデータ・ブロックとパリティ・ブロ
ックとのXORを取ることで、新しいパリティ・ブロッ
クが計算されることを特徴とする、上記(6)に記載の
方法。 (11)RAID内の未使用データ・ブロックを記述す
る方法において、ディスク上に格納されたデータ・ブロ
ックのグループ内のデータ・ブロックに関するパリティ
・ブロックを計算するステップと、前記グループのうち
のどのブロックが使用中であるかを示す識別子をパリテ
ィ・ブロックに接続するステップと、ブロックを使用中
から未使用に再分類する場合に、パリティ・ブロック
と、再分類するブロック内のデータとを使用して新しい
パリティ・ブロックを計算し、再分類するブロックが新
しいパリティ・ブロックによって保護されていないこと
を示すように識別子を更新するステップとを含む、方
法。 (12)アレイが関連キャッシュ・メモリを有し、パリ
ティ・ブロックと識別子が前記キャッシュ・メモリに格
納されていない場合に、新しいパリティ・ブロックを計
算するステップの前にディスクからパリティ・ブロック
と識別子とを読み取ることを特徴とする、上記(11)
に記載の方法。 (13)アレイが関連キャッシュ・メモリを有し、再分
類するデータ・ブロックが前記キャッシュ・メモリに格
納されていない場合に、新しいパリティ・ブロックを計
算するステップの前にディスクから再分類するデータ・
ブロックを読み取ることを特徴とする、上記(11)に
記載の方法。 (14)識別子がグループ内のデータ・ブロックの数と
等しい数のビットを含み、各ビットがグループ内の別々
のデータ・ブロックに対応し、識別子を更新するステッ
プが、再分類するブロックに対応するビットの状態の変
更を含むことを特徴とする、上記(11)に記載の方
法。 (15)パリティ・ブロックと、グループ内の各データ
・ブロックとがアレイ内の別々のディスクに格納されて
いることを特徴とする、上記(11)に記載の方法。 (16)新しいパリティ・ブロックを計算するステップ
が、パリティ・ブロックと、再分類するブロック内のデ
ータとのXOR演算を含むことを特徴とする、上記(1
1)に記載の方法。

【図面の簡単な説明】

【図1】ディスク・アレイ・サブシステムのアーキテク
チャを示すブロック図である。

【図2】本発明が実現されているディスク・アレイ・サ
ブシステムのアーキテクチャを示すブロック図である。

【図3】データ・ブロックとパリティ・ブロックの配置
を示す、従来のRAIDレベル5のデータ・マッピング
である。

【図4】区分パリティ/データ・ディスク・キャッシュ
を示す図である。

【図5】本発明の実施例による単一ブロック書込みの流
れ図である。

【図6】本発明の実施例による空きブロック・コマンド
の流れ図である。

【図7】本発明のパリティ・ブロックおよび識別子ブロ
ックを示すブロック図である。

【図8】本発明のパリティ・ブロックおよび識別子ブロ
ックを示すブロック図である。

【図9】本発明のパリティ・ブロックおよび識別子ブロ
ックを示すブロック図である。

【符号の説明】

10 ホスト・システム 20 チャネル 30 ディスク制御装置 31 キャッシュ・メモリ 31a データ区画 31b パリティ区画 32 可変書込み保護論理機構 40 ディスク・アレイ 41 ディスク・アレイ 42 ディスク・アレイ 43 ディスク・アレイ

フロントページの続き (72)発明者 ジョン・ティモシー・ロビンソン アメリカ合衆国10598 ニューヨーク州 ヨークタウン・ハイツ ノース・ディア フィールド・アヴェニュー 3314 (72)発明者 アレクサンダー・トマシアン アメリカ合衆国10570 ニューヨーク州 プレザントヴィル メドウブルック・ロ ード 17 (56)参考文献 特開 平6−75715(JP,A) 特開 平7−93106(JP,A) 特開 平6−119120(JP,A) 特開 平6−259197(JP,A) 特開 平6−266510(JP,A) (58)調査した分野(Int.Cl.6,DB名) G06F 3/06 540 G06F 3/06 305

Claims (16)

    (57)【特許請求の範囲】
  1. 【請求項1】ディスク・アレイにデータを書き込むため
    のシステムにおいて、 前記ディスク・アレイに結合され、ディスク・データ・
    ブロックのストライプに関連する1つまたは複数のパリ
    ティ・ブロックを格納するキャッシュ・メモリであっ
    て、各パリティ・ブロックが前記ストライプ内の1つま
    たは複数のデータ・ブロックに関するパリティ・データ
    と、前記ストライプ内の保護データ・ブロックを識別す
    る識別子とを含む、キャッシュ・メモリと、 前記キャッシュ・メモリおよび前記ディスク・アレイに
    結合された書込み論理機構であって、 1つの位置がパリティ・データによって保護されている
    かどうかを判定するための手段と、 選択された位置にデータを書き込むための手段と、 新しいパリティ・データを計算し、選択された位置が保
    護されていることを示すために必要であれば、該新しい
    パリティ・データに関連する識別子を更新するための手
    段とを含む前記書込み論理機構とを含む、 システム。
  2. 【請求項2】データ・ブロックが解放されたあとで、前
    記ディスク・アレイから前記データ・ブロックを読み取
    るための手段と、 前記データ・ブロックの解放を反映するように、パリテ
    ィ・データを再計算し、再計算したパリティ・データに
    関連する識別子を更新するための手段とをさらに含むこ
    とを特徴とする、請求項1に記載のシステム。
  3. 【請求項3】前記データ・ブロックが解放されたときに
    前記ディスク・アレイから前記データ・ブロックを読み
    取るための手段を含むことを特徴とする、請求項2に記
    載のシステム。
  4. 【請求項4】パリティ・データを再計算するためにディ
    スクから読み取るブロックの最適セットを決定するため
    の手段をさらに含むことを特徴とする、請求項2に記載
    のシステム。
  5. 【請求項5】複数のデータ・ブロックが解放されたあと
    で、前記ディスク・アレイから前記複数のデータ・ブロ
    ックを読み取るための手段をさらに含むことを特徴とす
    る、請求項2に記載のシステム。
  6. 【請求項6】RAIDディスクに新しいデータを書き込
    むための方法において、 前記新しいデータをキャッシュ・メモリに格納するステ
    ップと、 ディスク・アレイ内のデータ・ブロックのグループのう
    ちの使用中のデータ・ブロックに関するパリティ・ブロ
    ックを計算するステップと、 データ・ブロックのグループのうちのどのデータ・ブロ
    ックが使用中であるかを示す識別子をパリティ・ブロッ
    クに接続するステップと、 前記新しいデータのために宛先データ・ブロックを選択
    するステップと、 前記宛先ブロックが空きデータ・ブロックのグループに
    属しているかどうかを判定し、該グループに属している
    場合は、前記新しいデータのみを使用してパリティ・ブ
    ロックを設定し、設定されたパリティ・ブロックと前記
    新しいデータをディスクに書き込み、前記グループに属
    していない場合は、宛先ブロックがパリティ・ブロック
    によって保護されているかどうかを識別子から判定する
    ステップであって、 保護されている場合は、前記新しいデータと、宛先ブロ
    ックと、パリティ・ブロックとを使用して、新しいデー
    タを反映した新しいパリティ・ブロックを計算し、該新
    しいパリティ・ブロックを前記キャッシュとディスクに
    書き込み、 保護されていない場合は、前記新しいデータを反映した
    新しいパリティ・ブロックを計算し、その新しいパリテ
    ィ・ブロックを前記キャッシュとディスクに書き込み、
    その時点で宛先ブロックがパリティ・ブロックによって
    保護されていることを示すために識別子を更新するステ
    ップとを含む、方法。
  7. 【請求項7】宛先ブロックがパリティ・ブロックによっ
    て保護されていて、宛先ブロックの内容がキャッシュに
    格納されていない場合に、新しいパリティ・ブロックを
    計算する前にディスクから宛先ブロックの内容を読み取
    ることを特徴とする、請求項6に記載の方法。
  8. 【請求項8】パリティ・ブロックと、データ・ブロック
    のグループ内の各ブロックが、前記ディスク・アレイ内
    の別々のディスクに格納されていることを特徴とする、
    請求項7に記載の方法。
  9. 【請求項9】パリティ・ブロックがキャッシュに格納さ
    れていない場合に、宛先ブロックが保護されているかど
    うかを判定するステップの前に、ディスクからパリティ
    ・ブロックと識別子とを読み取ることを特徴とする、請
    求項6に記載の方法。
  10. 【請求項10】前記新しいデータ・ブロックとパリティ
    ・ブロックとのXORを取ることで、新しいパリティ・
    ブロックが計算されることを特徴とする、請求項6に記
    載の方法。
  11. 【請求項11】RAID内の未使用データ・ブロックを
    記述する方法において、 ディスク上に格納されたデータ・ブロックのグループ内
    のデータ・ブロックに関するパリティ・ブロックを計算
    するステップと、 前記グループのうちのどのブロックが使用中であるかを
    示す識別子をパリティ・ブロックに接続するステップ
    と、 ブロックを使用中から未使用に再分類する場合に、パリ
    ティ・ブロックと、再分類するブロック内のデータとを
    使用して新しいパリティ・ブロックを計算し、再分類す
    るブロックが新しいパリティ・ブロックによって保護さ
    れていないことを示すように識別子を更新するステップ
    とを含む、方法。
  12. 【請求項12】アレイが関連キャッシュ・メモリを有
    し、パリティ・ブロックと識別子が前記キャッシュ・メ
    モリに格納されていない場合に、新しいパリティ・ブロ
    ックを計算するステップの前にディスクからパリティ・
    ブロックと識別子とを読み取ることを特徴とする、請求
    項11に記載の方法。
  13. 【請求項13】アレイが関連キャッシュ・メモリを有
    し、再分類するデータ・ブロックが前記キャッシュ・メ
    モリに格納されていない場合に、新しいパリティ・ブロ
    ックを計算するステップの前にディスクから再分類する
    データ・ブロックを読み取ることを特徴とする、請求項
    11に記載の方法。
  14. 【請求項14】識別子がグループ内のデータ・ブロック
    の数と等しい数のビットを含み、各ビットがグループ内
    の別々のデータ・ブロックに対応し、識別子を更新する
    ステップが、再分類するブロックに対応するビットの状
    態の変更を含むことを特徴とする、請求項11に記載の
    方法。
  15. 【請求項15】パリティ・ブロックと、グループ内の各
    データ・ブロックとがアレイ内の別々のディスクに格納
    されていることを特徴とする、請求項11に記載の方
    法。
  16. 【請求項16】新しいパリティ・ブロックを計算するス
    テップが、パリティ・ブロックと、再分類するブロック
    内のデータとのXOR演算を含むことを特徴とする、請
    求項11に記載の方法。
JP7023667A 1994-05-05 1995-02-13 ディスク・アレイにデータを書き込むためのシステムおよび関連する方法 Expired - Lifetime JP2902970B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US238769 1994-05-05
US08/238,769 US5522032A (en) 1994-05-05 1994-05-05 Raid level 5 with free blocks parity cache

Publications (2)

Publication Number Publication Date
JPH07306759A JPH07306759A (ja) 1995-11-21
JP2902970B2 true JP2902970B2 (ja) 1999-06-07

Family

ID=22899236

Family Applications (1)

Application Number Title Priority Date Filing Date
JP7023667A Expired - Lifetime JP2902970B2 (ja) 1994-05-05 1995-02-13 ディスク・アレイにデータを書き込むためのシステムおよび関連する方法

Country Status (6)

Country Link
US (1) US5522032A (ja)
EP (1) EP0681238B1 (ja)
JP (1) JP2902970B2 (ja)
KR (1) KR100188485B1 (ja)
CN (1) CN1097774C (ja)
DE (2) DE69512459T2 (ja)

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3687111B2 (ja) * 1994-08-18 2005-08-24 株式会社日立製作所 記憶装置システムおよび記憶装置の制御方法
JP3202550B2 (ja) * 1995-07-14 2001-08-27 日本電気株式会社 ディスクアレイサブシステム
US5826001A (en) * 1995-10-13 1998-10-20 Digital Equipment Corporation Reconstructing data blocks in a raid array data storage system having storage device metadata and raid set metadata
US5933592A (en) * 1995-10-13 1999-08-03 Digital Equipment Corporation Promoting device level error to raidset level error to restore redundacy in a raid array data storage system
US5961652A (en) * 1995-10-13 1999-10-05 Compaq Computer Corporation Read checking for drive rebuild
US5737744A (en) * 1995-10-13 1998-04-07 Compaq Computer Corporation Disk array controller for performing exclusive or operations
US5860090A (en) * 1995-10-20 1999-01-12 Informix Software, Inc. Append-only storage in a disk array using striping and parity caching
US5720025A (en) * 1996-01-18 1998-02-17 Hewlett-Packard Company Frequently-redundant array of independent disks
KR100208801B1 (ko) 1996-09-16 1999-07-15 윤종용 데이타 입/출력 성능을 향상시키기 위한 기억장치 시스템 및 그에 따른 데이타 복구정보 캐시구현방법
US6016552A (en) * 1997-06-06 2000-01-18 The Chinese University Of Hong Kong Object striping focusing on data object
US6012123A (en) * 1997-06-10 2000-01-04 Adaptec Inc External I/O controller system for an independent access parity disk array
US6035347A (en) * 1997-12-19 2000-03-07 International Business Machines Corporation Secure store implementation on common platform storage subsystem (CPSS) by storing write data in non-volatile buffer
JPH11203056A (ja) * 1998-01-19 1999-07-30 Fujitsu Ltd 入出力制御装置及びアレイディスク装置
US6029168A (en) * 1998-01-23 2000-02-22 Tricord Systems, Inc. Decentralized file mapping in a striped network file system in a distributed computing environment
US6725392B1 (en) 1999-03-03 2004-04-20 Adaptec, Inc. Controller fault recovery system for a distributed file system
US6122754A (en) * 1998-05-22 2000-09-19 International Business Machines Corporation Method and system for data recovery using a distributed and scalable data structure
US6173415B1 (en) 1998-05-22 2001-01-09 International Business Machines Corporation System for scalable distributed data structure having scalable availability
US6513093B1 (en) 1999-08-11 2003-01-28 International Business Machines Corporation High reliability, high performance disk array storage system
US6629199B1 (en) * 1999-08-20 2003-09-30 Emc Corporation Digital data storage system including directory for efficiently providing formatting information for stored records and utilization of a check value for verifying that a record is from a particular storage location
JP2001356882A (ja) * 2000-06-13 2001-12-26 Nec Corp データ読み書き制御方法及びディスクアレイ装置並びにデータ読み書き制御用プログラムを記憶した記録媒体
EP1168173A3 (en) * 2000-06-29 2004-09-22 Snap Appliance, Inc. Fault tolerant storage device with cache
US7054927B2 (en) * 2001-01-29 2006-05-30 Adaptec, Inc. File system metadata describing server directory information
US6745286B2 (en) * 2001-01-29 2004-06-01 Snap Appliance, Inc. Interface architecture
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
US6766491B2 (en) 2001-05-09 2004-07-20 Dot Hill Systems Corp. Parity mirroring between controllers in an active-active controller pair
US20030037302A1 (en) * 2001-06-24 2003-02-20 Aliaksei Dzienis Systems and methods for automatically converting document file formats
US7168025B1 (en) * 2001-10-11 2007-01-23 Fuzzyfind Corporation Method of and system for searching a data dictionary with fault tolerant indexing
CN101566928B (zh) 2003-08-14 2012-06-27 克姆佩棱特科技公司 虚拟磁盘驱动系统和方法
US7613945B2 (en) 2003-08-14 2009-11-03 Compellent Technologies Virtual disk drive system and method
US7562230B2 (en) * 2003-10-14 2009-07-14 Intel Corporation Data security
US7197599B2 (en) 2003-12-29 2007-03-27 Intel Corporation Method, system, and program for managing data updates
CN100419700C (zh) 2004-02-11 2008-09-17 鸿富锦精密工业(深圳)有限公司;鸿海精密工业股份有限公司 磁盘容错系统及方法
US7370163B2 (en) * 2004-05-03 2008-05-06 Gemini Storage Adaptive cache engine for storage area network including systems and methods related thereto
US7188212B2 (en) 2004-05-06 2007-03-06 International Business Machines Corporation Method and system for storing data in an array of storage devices with additional and autonomic protection
US7457980B2 (en) * 2004-08-13 2008-11-25 Ken Qing Yang Data replication method over a limited bandwidth network by mirroring parities
US20060036904A1 (en) * 2004-08-13 2006-02-16 Gemini Storage Data replication method over a limited bandwidth network by mirroring parities
US7321905B2 (en) 2004-09-30 2008-01-22 International Business Machines Corporation System and method for efficient data recovery in a storage array utilizing multiple parity slopes
US7711965B2 (en) * 2004-10-20 2010-05-04 Intel Corporation Data security
KR100579133B1 (ko) 2004-12-06 2006-05-04 한국전자통신연구원 블록분할 디스크 어레이에서의 분산 패러티를 이용한데이터 배치 방법 및 블록분할 분산패러티 디스크어레이에서의 대형/소형 블록 읽기/쓰기 제어 방법
JP2006171957A (ja) 2004-12-14 2006-06-29 Fujitsu Ltd ストレージ制御装置および方法
US7343546B2 (en) 2004-12-23 2008-03-11 Intel Corporation Method and system for syndrome generation and data recovery
US7779294B2 (en) * 2005-04-15 2010-08-17 Intel Corporation Power-safe disk storage apparatus, systems, and methods
US7454668B1 (en) * 2005-09-23 2008-11-18 Emc Corporation Techniques for data signature and protection against lost writes
WO2007083377A1 (ja) 2006-01-19 2007-07-26 Fujitsu Limited パリティ生成回路、計数回路および計数方法
CN100498678C (zh) 2006-06-01 2009-06-10 杭州华三通信技术有限公司 对廉价磁盘冗余阵列进行读写操作的方法和系统
US7836380B2 (en) * 2006-10-31 2010-11-16 Intel Corporation Destination indication to aid in posted write buffer loading
US8316258B2 (en) * 2007-05-03 2012-11-20 Oracle America, Inc. System and method for error detection in a data storage system
JP5279785B2 (ja) * 2010-09-17 2013-09-04 株式会社東芝 コントローラ、記憶装置、およびプログラム
WO2014016860A1 (en) * 2012-07-23 2014-01-30 Hitachi, Ltd. Raid storage system and rebuild process
US9830220B1 (en) * 2014-09-29 2017-11-28 EMC IP Holding Company LLC Enhanced error recovery for data storage drives
US9672106B2 (en) 2014-12-30 2017-06-06 Nutanix, Inc. Architecture for implementing erasure coding

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4419725A (en) * 1980-11-14 1983-12-06 Sperry Corporation Cache/disk subsystem with tagalong copy
US5233618A (en) * 1990-03-02 1993-08-03 Micro Technology, Inc. Data correcting applicable to redundant arrays of independent disks
US5124987A (en) * 1990-04-16 1992-06-23 Storage Technology Corporation Logical track write scheduling system for a parallel disk drive array data storage subsystem
US5375128A (en) * 1990-10-18 1994-12-20 Ibm Corporation (International Business Machines Corporation) Fast updating of DASD arrays using selective shadow writing of parity and data blocks, tracks, or cylinders
US5359611A (en) * 1990-12-14 1994-10-25 Dell Usa, L.P. Method and apparatus for reducing partial write latency in redundant disk arrays
US5274799A (en) * 1991-01-04 1993-12-28 Array Technology Corporation Storage device array architecture with copyback cache
JPH0820964B2 (ja) * 1991-09-13 1996-03-04 インターナショナル・ビジネス・マシーンズ・コーポレイション メモリ制御装置および方法
US5333305A (en) * 1991-12-27 1994-07-26 Compaq Computer Corporation Method for improving partial stripe write performance in disk array subsystems
US5341381A (en) * 1992-01-21 1994-08-23 Tandem Computers, Incorporated Redundant array parity caching system
US5410667A (en) * 1992-04-17 1995-04-25 Storage Technology Corporation Data record copy system for a disk drive array data storage subsystem
JP2810593B2 (ja) * 1992-05-13 1998-10-15 三菱電機株式会社 記憶装置
US5309451A (en) * 1992-08-12 1994-05-03 Digital Equipment Corporation Data and parity prefetching for redundant arrays of disk drives
US5315602A (en) * 1992-08-12 1994-05-24 Digital Equipment Corporation Optimized stripe detection for redundant arrays of disk drives
JP3183719B2 (ja) * 1992-08-26 2001-07-09 三菱電機株式会社 アレイ型記録装置
US5392244A (en) * 1993-08-19 1995-02-21 Hewlett-Packard Company Memory systems with data storage redundancy management

Also Published As

Publication number Publication date
KR100188485B1 (ko) 1999-06-01
CN1097774C (zh) 2003-01-01
EP0681238A1 (en) 1995-11-08
US5522032A (en) 1996-05-28
EP0681238B1 (en) 1999-09-29
JPH07306759A (ja) 1995-11-21
DE69512459D1 (de) 1999-11-04
CN1118503A (zh) 1996-03-13
DE69512459T2 (de) 2000-05-04

Similar Documents

Publication Publication Date Title
JP2959901B2 (ja) 記憶装置の冗長アレイおよびオンライン再構成方法
US6574709B1 (en) System, apparatus, and method providing cache data mirroring to a data storage system
US6092215A (en) System and method for reconstructing data in a storage array system
EP0375188B1 (en) File system
US5210866A (en) Incremental disk backup system for a dynamically mapped data storage subsystem
EP0526487B1 (en) Logical track write scheduling system for a parallel disk drive array data storage subsystem
US4636946A (en) Method and apparatus for grouping asynchronous recording operations
US9442844B2 (en) Apparatus, system, and method for a storage layer
US9965204B1 (en) Transaction-based storage system and method that uses variable sized objects to store data
JP2501752B2 (ja) コンピユ―タ・システムのストレ―ジ装置及びデ―タのストア方法
US6961815B2 (en) Multiple disk data storage system for reducing power consumption
US5787459A (en) Distributed disk array architecture
US5195100A (en) Non-volatile memory storage of write operation identifier in data sotrage device
US6256749B1 (en) Disk array system and its control method
EP0709765B1 (en) Method and system for selecting data for migration in a hierarchic data storage system using frequency distribution tables
US5799324A (en) System and method for management of persistent data in a log-structured disk array
JP3699166B2 (ja) 階層データ記憶装置のデータ損失を監視する方法
JP3133004B2 (ja) ディスクアレイ装置およびその制御方法
EP0661635B1 (en) A system for controlling command queuing on parity drives in an array of disk drives
JP3358687B2 (ja) ディスクアレイ装置
US5191584A (en) Mass storage array with efficient parity calculation
US6567889B1 (en) Apparatus and method to provide virtual solid state disk in cache memory in a storage controller
EP0203601A2 (en) Cache system adopting an LRU system, and magnetic disk controller incorporating it
US7216199B2 (en) Disk control system and method
US5809224A (en) On-line disk array reconfiguration