JPH08263228A - アレイにデータを格納する方法および記憶アレイ・システム - Google Patents

アレイにデータを格納する方法および記憶アレイ・システム

Info

Publication number
JPH08263228A
JPH08263228A JP8039399A JP3939996A JPH08263228A JP H08263228 A JPH08263228 A JP H08263228A JP 8039399 A JP8039399 A JP 8039399A JP 3939996 A JP3939996 A JP 3939996A JP H08263228 A JPH08263228 A JP H08263228A
Authority
JP
Japan
Prior art keywords
parity
block
parity group
data
old
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP8039399A
Other languages
English (en)
Other versions
JP3348416B2 (ja
Inventor
Jaishankar M Menon
ジャイシャンカル・モーテダト・メノン
James C Wyllie
ジェームズ・クリストファー・ウィリー
Geoffrey A Riegel
ジェフリー・エイ・リーゲル
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH08263228A publication Critical patent/JPH08263228A/ja
Application granted granted Critical
Publication of JP3348416B2 publication Critical patent/JP3348416B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR 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 OR 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

Landscapes

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

Abstract

(57)【要約】 【課題】 十分なパフォーマンスと信頼性を達成するた
め、ならびに低コスト・ハードウェアRAIDのパフォ
ーマンスを改善するために、ソフトウェアで実現された
RAIDアレイで使用可能なシステムおよび方法を提供
する。 【解決手段】 基本RAID実施態様の機能強化によっ
て、ソフトウェアRAIDのための復旧時間が高速化さ
れる。好ましい実施例のこの機能強化では、同様の目的
のためにハードウェアRAIDが使用するNVRAMに
取って代わり、不整合パリティ・グループをマーキング
するためにディスク上に格納されたPGSビット・マッ
プというビット・マップを使用する。また、別の機能強
化によって、順次入出力データ・ストリームが最適化さ
れる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、データ記憶システ
ムに関し、より具体的にはソフトウェアまたは低コスト
・ハードウェアで実現した記憶アレイ・システムにデー
タを格納するためのシステムおよび方法に関する。
【0002】
【従来の技術】独立ディスクの冗長アレイ(RAID)
は、1つのディスク・ドライブが故障したときに、全ド
ライブに格納された冗長データを使用することによって
ユーザ・データを再生成することができる1組のディス
ク・ドライブである。Patterson, D.、Gibson, G.、お
よびKatz, R. H.によるReliable Arrays of Inexpensiv
eDisks (RAID)(1988年6月、ACM SIGMOD Conferen
ce 1988、pp. 109-116)に記載されているように、5つ
のレベルのRAIDが一般に知られている。RAIDレ
ベル5ディスク・アレイは、高い信頼性と可用性を達成
するためにパリティ技法を使用している。1つのパリテ
ィ・ブロックがそのパリティ・グループ内のデータ・ブ
ロックを保護している。パリティ・ブロックは、そのパ
リティ・グループ内のデータ・ブロックについて排他的
論理和(XOR)演算を行った結果である。1つのパリ
ティ・グループ内の各ブロックは、アレイの異なるディ
スク・ドライブに格納される。RAID5では、パリテ
ィ・ブロックがすべてのディスクに(ほかのパリティ・
グループからのデータ・ブロックとともに)格納され
る。
【0003】RAID5ディスク・アレイは、単一ディ
スクのクラッシュに対して強固である。1つのディスク
が故障した場合、そのディスク上のデータは、アレイ内
の残りのディスクからデータを読み取って、適切なXO
R演算を実行することによって再生成することができ
る。
【0004】データ・ブロックを更新するための要求が
行われた場合、整合性を維持するために対応するパリテ
ィ・ブロックも更新しなければならない。データが修正
されるたびにパリティを変更しなければならないので、
データ・ブロックを更新するためにRAIDでは、
(1)古いデータの読取り、(2)古いパリティの読取
り、(3)新しいデータの書込み、(4)新しいパリテ
ィの書込みという4回のディスク・アクセスが必要であ
る。1回の更新につき4回のディスク・アクセスが必要
であることは、RAID5の更新上の不利であると言わ
れることが多い。必要な4回のディスク・アクセスに続
いて、更新の完了がホスト・システムに提示される。
【0005】一般にRAIDは、特殊ハードウェアを有
するディスク制御装置内に実現される。XORハードウ
ェアは、XOR演算を実行してパリティを計算する。キ
ャッシュとも呼ばれる不揮発性RAM(NVRAM)に
よって、RAIDのパフォーマンスと信頼性が改善され
ている。このようなRAIDの実施態様は、ハードウェ
アRAIDと呼ばれている。低コスト・ハードウェアR
AIDの中には、NVRAMを備えていないものあれ
ば、小型のNVRAMを備えているものもある。ソフト
ウェアRAIDは、純粋にホスト・コンピュータ上で実
行されるソフトウェアで実現されている。ソフトウェア
RAIDは特殊ハードウェアにアクセスすることができ
ないので、特殊アルゴリズムを使用する必要が生じるこ
とが多い。特に、ソフトウェアRAIDでは、不整合パ
リティ・グループのマーキングや電源障害からの復旧時
にハードウェアRAIDが頻繁に使用するNVRAMに
アクセスすることができない。
【0006】より高度なハードウェアRAIDでは、書
込みキャッシュ(システムによるアクセスをより容易に
するためにキャッシュでの書込みを維持すること)や高
速書込み(NVRAMに書き込まれたときに書込み動作
が完了したと見なすこと)を実現することによって書込
みパフォーマンスを改善するためにNVRAMを使用し
ている。ほかのハードウェアRAIDでは、不整合パリ
ティ・グループ(新しいデータがすでに書き込まれた
が、新しいパリティがまだ書き込まれていないパリティ
・グループ)のマーキングと更新要求の最中の電源障害
からの復旧のためにだけNVRAMを使用する。
【0007】ソフトウェアRAIDの例としては、Chan
tal/BusLogic社のParagonシステムやCorel社のCorelR
AIDシステムがある。いずれも、Novell社のNetware
サーバ用のシステムである。
【0008】RAID5の現行ソフトウェア実施態様で
は、不整合パリティ・グループを検出して修正するため
に、電源障害またはシステム・クラッシュ後にすべての
ディスク・ブロックを完全に走査する必要がある。ほと
んどの実用実施態様では、復旧時間が長くなることは受
け入れられない。
【0009】復旧時のディスク障害によって、データが
失われることがある。壊れたディスク上のデータは、通
常、残りのディスクからのデータを使用して再構築され
るはずである。しかし、パリティ・グループが不整合で
ある場合、データを正確に再構築することができない。
復旧時にすべてのパリティ・グループを走査しなければ
ならないことに関連する問題は、パリティ・グループ内
のデータ・ブロックの1つを読み取ることができない場
合(たとえば、ディスク・ブロック上の訂正不能ECC
エラー)、パリティ・グループが整合している可能性が
あるので、データ紛失状況が発生することである。走査
しなければならないパリティ・グループが多ければ多い
ほど、データ紛失状況が発生する可能性が高くなる。も
う1つの2次的問題は、データとパリティが逐次書き込
まれ、両方ともディスクに書き込まれるまでロックが保
持されるので、パリティ・グループのロック時間が長く
なりすぎることである。
【0010】Chen, P. M.他によるRAID: High-Performa
nce, Reliable Secondary Storage,ACM Computing Surv
eys(1994年6月、vol 26(2)、pp 145-186)には、
パリティ・グループに対する書込みが行われるたびに、
パリティ・グループが修正されたディスクに標識が書き
込まれるというシステムが提案されている。このような
書込みでは、(1)パリティ・グループが修正されたと
いう標識の書込み、(2)古いデータの読取り、(3)
古いパリティの読取り、(4)新しいデータの書込み、
(5)新しいパリティの書込み、(6)パリティ・グル
ープが修正されていないという標識の書込みという6回
のディスク・アクセスが必要になる。Chenは、不整合に
なっている可能性のあるパリティ・セクタからなる固定
サイズのリストの管理を提案している。このリストは、
ディスク上とメモリ内に維持される。Chenは、グループ
・コミット機構を使用することによってこのリストの維
持に必要なディスク入出力の回数を低減している。この
ため、応答時間が増す反面、スループットが改善されて
いる。
【0011】一般に、前述のソフトウェアRAIDの提
案では、RAIDに関連する並行性とロックの問題は論
じられていない。このような議論が存在する範囲で、1
つのパリティ・グループに対して複数回の更新が同時に
行われるのを防止するためにロックを使用するという想
定がなされている。また、1つのパリティ・グループに
対する複数回の更新の並行処理を最適化することが望ま
しい。
【0012】
【発明が解決しようとする課題】本発明の一目的は、十
分なパフォーマンスと信頼性を達成するため、ならびに
低コスト・ハードウェアRAIDのパフォーマンスを改
善するために、ソフトウェアRAID5アレイで使用可
能なシステムを提供することにある。
【0013】本発明の一目的は、ソフトウェアRAID
のための復旧時間を高速化する基本RAIDアルゴリズ
ムの機能強化を提供することにある。好ましい実施例の
この機能強化では、同様の目的のためにハードウェアR
AIDが使用するNVRAMに取って代わり、不整合パ
リティ・グループをマーキングするためにディスク上に
格納されたPGSビット・マップというビット・マップ
を使用する。また、順次入出力データ・ストリームを最
適化するために別の機能強化も提供される。このような
最適化は、ソフトウェアRAIDが使用する場合もあれ
ば、ハードウェアRAIDが使用する場合もある。この
ようなシステムおよび方法は、ハードウェアRAIDの
うち、高速書込み動作のためにNVRAMを使用しない
RAIDに特に適用可能である。
【0014】
【課題を解決するための手段】複数の記憶装置からなる
アレイにデータを格納するための方法が提供される。記
憶装置上の複数のブロック位置は、1つのパリティ・グ
ループとして論理的に配置され、1つのパリティ・グル
ープの一部として1つのブロック位置に格納されたパリ
ティ・ブロックは、そのパリティ・グループに格納され
た複数のデータ・ブロックの組合せから論理的に導出さ
れ、1つのパリティ・グループ内の各ブロックは別々の
記憶装置に格納される。複数のパリティ・グループは、
1つのパリティ・グループ・セットにグループ化され
る。記憶装置上のブロック位置に新しいデータ・ブロッ
クを書き込むための要求が受信される。そのブロック位
置に格納されている古いデータ・ブロックが読み取られ
る。新しいデータ・ブロックがそのブロック位置に書き
込まれる。現行書込み以前にパリティ・グループ・セッ
トが未修正状態になっている場合は、そのパリティ・グ
ループ・セットが修正状態になったという標識が記憶装
置に書き込まれる。
【0015】一実施例では、古いデータ・ブロックと新
しいデータ・ブロックからそのパリティ・グループ用の
変更パリティが計算される。ブロック位置が属している
パリティ・グループ用の古いパリティ・ブロックが読み
取られる。変更パリティと古いパリティから新しいパリ
ティ・ブロックが計算される。記憶装置上の古いパリテ
ィ・ブロックの位置に新しいパリティが書き込まれる。
新しいパリティの書込み後、未修正状態のパリティ・グ
ループごとに、パリティ・グループ・セットが未修正状
態になっているという標識がディスクに書き込まれる。
【0016】好ましい実施例では、パリティ・グループ
・セットが修正状態になっているときに、ビット・セッ
トを有するビット・マップに各パリティ・グループ・セ
ットが表される。各パリティ・グループ・セットは、パ
リティ・グループ・セットを現在修正している書込み動
作の回数を示すセット・カウンタを有し、セット・カウ
ンタがゼロになると、パリティ・グループ・セット用の
ビットが変更される。
【0017】システムは、修正されたパリティ・グルー
プ・セットをまず識別することによって、障害から復旧
する。修正されたパリティ・グループ・セット内の各パ
リティ・グループごとに、不整合パリティ・ブロックを
有するパリティ・グループがあれば、そのパリティ・グ
ループのデータ・ブロックに基づいて更新される。
【0018】他の好ましい実施例では、具体的には順次
データ・ストリームの処理の場合、新しいデータ・ブロ
ックが順次データ・ストリーム内にあるかどうかの判定
が行われる。古いデータ・ブロックと新しいデータ・ブ
ロックからそのパリティ・グループ用の変更パリティが
計算される。書き込むべき新しいデータ・ブロックが先
行する順次データ・ストリーム内になくなるまで、順次
データ・ストリームの処理が続行される。次に、順次デ
ータ・ストリームの一部であるブロック位置が属する各
パリティ・グループごとに、古いパリティ・ブロックが
読み取られる。このようなパリティ・グループのそれぞ
れについて、パリティ・グループ用の変更パリティとパ
リティ・グループ用の古いパリティ・ブロックに基づい
て、新しいパリティ・ブロックが計算される。このよう
なパリティ・グループのそれぞれの新しいパリティ・ブ
ロックは、記憶装置上のそのパリティ・グループ用の古
いパリティ・ブロックの位置に書き込まれる。新しいデ
ータ・ブロックが境界を横切って新しいパリティ・グル
ープ・セットに入ると、パリティ・グループ・セットが
修正状態になっているという標識が設定される。新しい
データの書込み後、未修正状態の各パリティ・グループ
ごとに、パリティ・グループ・セットが未修正状態にな
っているという標識が書き込まれる。
【0019】好ましい実施例では、古いデータが読み取
られる前に新しいデータ用のブロック位置がロックされ
る。新しいデータが書き込まれた後、このブロック位置
がロック解除される。古いパリティ・ブロックのブロッ
ク位置は、古いパリティが読み取られる前にロックさ
れ、新しいパリティが書き込まれた後でロック解除され
る。
【0020】好ましい実施例では、記憶アレイ・システ
ムが提供される。この記憶アレイは複数の記憶装置を含
み、それぞれの記憶装置は複数のブロック位置を含む。
記憶装置上の複数のブロック位置から複数のパリティ・
グループが論理的に編成され、そのパリティ・グループ
は1つのパリティ・グループ・ブロック位置に格納され
たパリティ・ブロックを含み、そのパリティ・ブロック
はパリティ・グループに格納された複数のデータ・ブロ
ックの組合せから論理的に導出され、1つのパリティ・
グループ内の各ブロックは別々の記憶装置に格納され
る。複数のパリティ・グループ・セットは、複数のパリ
ティ・グループからそれぞれ編成される。記憶装置上の
ブロック位置に新しいデータ・ブロックを書き込み、そ
のブロック位置に格納された古いデータ・ブロックを読
み取るための手段が提供される。パリティ・グループ・
セットが未修正状態になっているという標識を記憶装置
に書き込むための手段が提供される。パリティ・グルー
プ用の古いパリティ・ブロックを読み取り、古いデータ
・ブロック、古いパリティ・ブロック、新しいデータ・
ブロックからパリティ・グループ用の新しいパリティを
計算し、記憶装置上の古いパリティ・ブロックの位置に
新しいパリティを書き込むための手段が提供される。ま
た、パリティ・グループ・セットが未修正状態になって
いるという標識を記憶装置に書き込むための手段も提供
される。
【0021】
【発明の実施の形態】図1を参照すると、ソフトウェア
で実現したRAIDシステムは、中央演算処理装置(C
PU)14に接続されたランダム・アクセス・メモリ
(RAM)12と、入出力バスへのインタフェース16
とを有するホスト・コンピュータ10を有する。ホスト
・システムは、マイクロ・チャネルまたは他の通信リン
ク21を介して複数のディスク・ドライブからなるアレ
イ20と通信する。ディスク・ドライブ20は、RAM
23とCPU24とを含むSCSIアダプタ22によっ
て制御される。また、このアダプタは、不揮発性キャッ
シュ(NVRAMまたは不揮発性記憶装置NVSとい
う)18を含むこともできる。
【0022】ソフトウェアで実現したRAIDのRAI
D機能は、ディスク・アダプタまたは個別の制御装置で
制御されるのではなく、RAM12にロードされたソフ
トウェアを使用してホスト・システム10によって制御
される。
【0023】ホスト・システム26上で動作するアプリ
ケーション・プログラムは、ドライブ20に格納された
データを読み書きするための要求を出す。このデータ
は、装置アダプタ30を介してファイル・システム27
および論理ボリューム・マネージャ28を使用して位置
が特定される。通常、ソフトウェアRAIDは、オペレ
ーティング・システムのデバイス・ドライバとしてまた
はオペレーティング・システムの論理ボリューム・マネ
ージャ(LVM)内に、ファイル・システムの下に実現
される。
【0024】図2を参照すると、1〜5と表示された5
つのディスク・ドライブ20からなる組が4+Pアレイ
として編成されている。複数の数字からなる各垂直列3
2はディスク・ドライブを表す。各参照番号33はデー
タ・ブロックを表し、各水平行34はパリティ・グルー
プを表す。複数の連続ブロックからなる次のグループが
第2のディスクに格納される前に、ディスクに格納され
る連続データ・ブロックの数はさまざまである。X個の
連続ブロックからなる各組は1つのストライプ・ユニッ
トを構成する。パリティ・ストライプ・ユニットは、X
=2の場合のP1とP2のように、ディスクからのX個
のパリティ・ブロックからなる連続した組である。1つ
のストライプは、N個のディスクからのN個の対応する
ストライプ・ユニットから構成される。X個の連続パリ
ティ・ブロックは1つのストライプを構成する。典型的
な実施態様では、1つのストライプ・ユニットが8つの
ブロックの倍数から構成されることになる。したがっ
て、1つのストライプは、8つのパリティ・グループの
倍数から構成される。
【0025】図2に示すように、パリティ・ブロック3
6の位置はトラックごとにディスク・ドライブ間を循環
する。
【0026】データ優先方法 たとえば、ディスクI上のブロックBのパリティがディ
スクJ上のブロックBであり、古いパリティ値がPでこ
れをP'に変更する必要がある場合、ホストがディスク
I上のブロックBを書き込んで(更新して)その値をD
からD'に変更するための要求を出すと、書込み要求を
満足するために以下のステップが行われる(データ優先
方法という)。 (1)アレイ内のすべてのディスク上のブロックBから
構成されるパリティ・グループをロックする。 (2)並行して、ディスクIからブロックB(古いデー
タ)を読み取り、ディスクJからブロックB(古いパリ
ティ)を読み取るための要求を出す。多くのディスク実
施態様により、この書込みを連鎖して、ディスクIのブ
ロックBに対する前回の読取りと同時に出すことができ
る。 (3)ディスクI上のブロックBの読取り後に次のディ
スクの回転中に行われるように、できるだけすみやかに
ディスクI上のブロックBにD'を書き込むための要求
を待ち行列化する。 (4)D'が確実にディスクに書き込まれた後、できる
だけすみやかに「完了」をシステムに返す。 (5)DまたはPのどちらが先に使用可能になったかに
よって決まる順序で、D'とDおよびPとのXOR演算
を実行することによってP'を計算する。 (6)ディスクJのブロックBにP'を書き込む。この
ステップは、D'がディスクIのブロックBに確実に書
き込まれるまで開始する必要はない。 (7)パリティ・グループをロック解除する。
【0027】上記のステップの間に電源が故障する可能
性がある。電源障害から復旧したら、すべてのパリティ
・グループを走査して、パリティの整合性を確認する必
要がある。パリティ・グループの整合性を判定するた
め、以下の手順が実行される。 (1)各パリティ・グループごとに、すべてのデータ・
ブロックのXORをとって、予期パリティを生成し、こ
れをパリティ・ブロックと比較する。(2)パリティが
整合していない(予期パリティが実際のパリティ・ブロ
ックと等しくない)場合は、前に計算した予期パリティ
をディスク上のパリティ・ブロックに書き込むことによ
ってパリティを整合させる。
【0028】より高速の代替態様では、それを先に検査
せずに、計算したパリティをディスク上のパリティ・ブ
ロックに必ず書き込むだけである。これは、通常動作中
は必ずデータが先に書き込まれ、次にパリティが書き込
まれるからである。データが書き込まれる前に電源が故
障した場合は、パリティが整合することになる。データ
は書き込まれたがパリティが正常に書き込まれる前に電
源が故障した場合は、復旧時にパリティを整合させるこ
とが適当である。データを書き込んでいる最中に電源が
故障した場合は、データ・フィールドが不要情報を含む
可能性がある。しかし、書込み要求の完了がホストに伝
達されていないので、ホスト・ソフトウェアはこのデー
タを復旧することができる。これは、標準の(非RAI
D)ディスクでも発生する問題である。
【0029】マシンへの電源を切断する前にユーザが規
則正しい「遮断」を行った場合、長い復旧時間を短縮す
ることができる。遮断中、ソフトウェアRAIDは、進
行中の更新をすべて完了し、すべてのパリティ・グルー
プを整合させ、「整合」フラグをディスクに書き込む。
復旧すると、RAIDソフトウェアは、ディスク上の既
知の位置から整合フラグを読み取る。フラグが設定され
ている場合、ディスク上のフラグをオフにするが、復旧
が不要であることが分かる。フラグがリセットされてい
る場合、前述のように長い復旧の実行にとりかかる。こ
れは、システム・クラッシュまたは電源障害の場合の
み、長い復旧が開始されることを意味する。
【0030】並列方法 データ優先書込み方法に代わるものとしては、並列書込
み方法がある。これは、ロックが保持される時間がより
短くなるように、データとパリティの書込みを並行して
続行できるようにするものである。この並列性は、ディ
スク・ブロックにタイム・スタンプを添えることによっ
て達成される。ブロックの先頭に追加されたフィールド
と、そのブロックの末尾で繰り返される同じフィールド
によって、書込みの最中の電源障害によるブロックの部
分書込みが検出される。2つのフィールドが同一ではな
い場合はブロックの部分書込みが検出され、同一である
場合はブロックが自己検証する。
【0031】復旧時にタイム・スタンプは、不整合パリ
ティ・グループの不整合ブロックを正確に示すための手
段になる。たとえば、ディスク2のタイム・スタンプが
ディスク1の対応するデータ・ブロックのタイム・スタ
ンプより遅いことをパリティ・ブロックが示している場
合、ディスク1のデータ・ブロックは古いレベルのもの
なので、最新のものにする必要がある。タイム・スタン
プの使用により、より積極的な更新アルゴリズムが可能
になり、データとパリティが並行して書き込まれる。
【0032】2ビットのタイム・スタンプを使用し、そ
のタイム・スタンプが実際は新しい書込みが行われるご
とに(0まで)増分するカウンタであることが好まし
い。
【0033】ホスト書込み要求を満足するために、以下
のステップが実行される。 (1)同じパリティ・グループへのホスト書込みが遅れ
ないようにするために、アレイ内のすべてのディスクか
らのブロックBから構成されるパリティ・グループをロ
ックする。 (2)並行して、ディスクIからブロックB(古いデー
タ)を読み取り、ディスクJからブロックB(古いパリ
ティ)を読み取るための要求を出す。 (3)(DまたはPのどちらが先に使用可能になったか
によって決まる順序で)D'とDおよびPとのXORを
とり、P'を生成する。 (4)ディスクI上のブロックBの読取り後に次のディ
スクの回転中に行われるように、できるだけすみやかに
ディスクI上のブロックBにD'を書き込むための要求
を待ち行列化する。これは、前のステップが完了する前
に行われることもある。D'に伴うタイム・スタンプ
は、Dに伴うタイム・スタンプを増分することによって
得られる。D'の書込みは、連鎖してDの読取りと同時
に出すことはできない。 (5)ディスクJのブロックBに(生成されるとすぐ
に)P'を書き込むための要求を待ち行列化する。P'
は、D'の書込みと並行して書き込むことができる。P'
に伴うタイム・スタンプは、Pに関連する複数のタイム
・スタンプのうちの適切なものを増分することによって
生成される。 (6)D'またはP'のいずれか早い方が確実にディスク
に書き込まれた直後に「完了」をシステムに返す。 (7)D'またはP'のいずれか遅い方が確実にディスク
に書き込まれた後で、パリティ・グループをロック解除
する。
【0034】上記のステップの間に電源が故障する(ま
たはシステムがクラッシュする)可能性がある。復旧し
たら、すべてのパリティ・グループを走査して、パリテ
ィが整合していることを検査する。パリティが整合して
いない場合は、以下のようにパリティを整合させる。 (1)まず、すべてのブロックが自己検証していること
を確認する。自己検証している場合は、パリティ・ブロ
ック内の対応するタイム・スタンプは異なるタイム・ス
タンプを有するデータ・ブロックを検出し、データ・ブ
ロックまたはパリティ・ブロックのうち、タイム・スタ
ンプが早い方を修正する。(2)1つのブロック(デー
タ・ブロックまたはパリティ・ブロックのいずれか)だ
けが自己検証していない場合は、パリティ・グループの
残りのメンバーを使用してそれを計算する。(2)2つ
のブロック(1つのデータ・ブロックとパリティ・ブロ
ック)がどちらも自己検証していない場合(データ・ブ
ロックとパリティ・ブロックの両方が部分的に書き込ま
れ、データとパリティの両方が不要情報になったときに
電源障害が発生した場合)は、不要情報データ・フィー
ルドの任意のタイム・スタンプを使用し、両方のブロッ
クを自己検証させる。この自己検証データ・ブロックと
残りのデータ・ブロックを使用して、整合パリティ・ブ
ロックを生成する。書込み要求の完了がホストに伝達さ
れていないので、データ・ブロックがまだ不要情報を含
んでいても問題にはならない。ホスト・ソフトウェアは
このデータを復旧することができる。
【0035】ロックの単位 典型的な更新では4Kバイト(8つのセクタ)を修正す
る可能性があるので、8つのパリティ・グループのロッ
クが必要になる可能性がある。更新の並行性を犠牲にし
てロックを高速化するため、より大きい単位をロックす
ることができる。
【0036】ロックのタイプ 前の更新要求による更新の最中であるデータ・ブロック
への読取り要求がデータ・ブロックの更新した値を返さ
なければならない場合、読取り要求もロックを獲得する
必要がある。この場合、読取り要求は共用ロックを獲得
するはずである。多くの共用ロックは、特定のパリティ
・グループ、ストライプ、または適切と見なされるすべ
てのロック単位に対して保持することができる。このた
め、1つのロック単位に対して多くの読取りを同時に実
行することができる。これに対して、更新要求は、他の
更新または読取り要求を同時に行えないように、排他ロ
ックを獲得する。
【0037】待ち行列としてのロックの実現 ロックを待っている要求について、待ち行列を使用す
る。たとえば、同じブロック(複数も可)に対する2つ
の並行更新、または同じブロック(複数も可)に対する
並行読取り更新の場合、これらの要求を受け取った順に
実行する必要がある可能性もある。これは、通常、待ち
行列(ロック)ヘッダと、(ロック単位当たりの)待機
要求の待ち行列とによって実施される。待ち行列ヘッダ
を編成して位置を特定するための最も便利な方法は、ハ
ッシュ・テーブルによる方法である。待ち行列ヘッダ
(および待ち行列)は、対応するパリティ・グループま
たはストライプに対する未解決の要求が存在する場合
(または最近、要求が存在した場合)のみメモリを占有
するはずである。
【0038】待ち行列内の複数の要求が機能することも
可能である。たとえば、待ち行列内のすべての要求が読
取り要求である場合、これらはすべて実行することがで
きる。しかし、更新要求が実行を開始すると、待ち行列
内の他の要求は自分の番が来るまで待たなければならな
い。
【0039】並行性の改善のための機能強化 同じパリティ・グループ内のデータ・ブロックに対する
複数の並行更新を防止するパリティ・グループ・ロック
に代わるものとしては、データ優先アルゴリズムのため
にパリティ・グループ内のブロックに対する複数の並行
更新を可能にする方法がある。データの読取りおよび書
込みと、パリティの読取りおよび書込みは、同じブロッ
クへの他のディスク入出力によって中断することができ
ない原始的な(アトミック)動作として扱われる。デー
タ・ブロックへのホスト読取りは、データの読取りおよ
び書込みの間に行うこともできる。
【0040】図3に示すように、個々のブロックにロッ
クが置かれる。まず、データに関するロックを獲得し、
次にその順序でパリティに関するロックを獲得する。デ
ータおよびパリティに関するロックをそれぞれ獲得した
後で、データおよびパリティ・ディスクに関する動作を
開始する。ディスクへの新しいデータと新しいパリティ
の書込みをそれぞれ完了した後、データおよびパリティ
・ロックを解除する。
【0041】並行性を強化したデータ優先方法では、以
下のステップを実施する。 (1)データ(ディスクIのブロックB)に関するロッ
クを獲得する(36)。必要であれば待機する。 (2)ディスクI上のブロックBからD(古いデータ)
を読み取り、ディスクIのブロックBにD'(新しいデ
ータ)を書き込むためのアトミック要求対を出す(3
7)。この要求は、同じディスク上の他のブロックへの
要求と、このブロック用のホスト読取りによって中断す
ることができる。 (3)パリティ(ディスクJのブロックB)に関するロ
ックを獲得する(38)。必要であれば待機する。この
ロックは、データに関するロックを獲得した後で獲得し
なければならない。 (4)ディスクにD'を確実に書き込んだ後で、できる
だけすみやかにシステムに完了を返す(39)。これ
は、パリティに関するロックを獲得する前に行われる場
合もある。 (5)ディスクにD'を書き込んだ後、ただちにデータ
に関するロックを解除する(40)。これは、パリティ
に関するロックを獲得する前に行われる場合もある。 (6)D'とDのXORをとり、デルタPを生成する
(41)。これは、ディスクからDを読み取った後、た
だちに行われる場合もある。 (7)ディスクJからブロックB(古いパリティ)を読
み取るための要求を出す(42)。これは、パリティに
関するロックを獲得した後、いつでも行うことができ
る。 (8)古いパリティとデルタPとのXORとして新しい
パリティP'を計算する(43)。 (9)ディスクJのブロックBにP'を書き込むための
要求を出す(44)。この要求は、古いパリティの読取
り後、ブロックBに対する次の要求でなければならない
(パリティに関するロックがこれを保証する)。(1
0)パリティに関するロックを解除する(45)。
【0042】並行性の強化を達成するための方法とし
て、より単純であるがより制限的なもう1つの代替方法
は、データおよびパリティの読取りおよび書込みを、他
のディスク入出力によって中断できないアトミック動作
として扱うことである。ホスト読取りによっては、この
ために応答時間が減速する可能性もあるが、ロックを必
要としないので、その実現はより簡単である。
【0043】個々のブロックのロックに代わるもう1つ
の代替方法は、ストライプ単位をロックすることであ
る。これは、並行性が低下されるものの、ロック・オー
バヘッドを低減するものである。というのは、典型的な
更新要求では(データ・ブロックに関する8つのロック
と、パリティ・ブロックに関する8つのロックの代わり
に)1つのデータ・ストライプ単位に関して1つのロッ
クと、1つのパリティ・ストライプ単位に関して1つの
ロックのみ必要とするからである。
【0044】特定のブロックに対するN個の更新要求が
存在するかどうかを確認することによって、前述の並列
方法も、複数の並行更新を可能にするように強化するこ
とができる。この場合、データに対するN回の読取りお
よび書込みを処理する順序は、パリティに対するN回の
読取りおよび書込みを処理する順序と同じである。
【0045】以下のステップは、並列方法を使用して複
数の並行更新用のブロック・レベルのロックを実施する
ものである。 (1)データに関するロックを獲得し、次にその順序で
パリティに関するロックを獲得する。 (2)データに関するロックを獲得した後、データ・デ
ィスクに対する操作を開始する。 (3)パリティに関するロックを獲得した後、パリティ
・ディスクに対する操作を開始する。 (4)両方のロックを獲得するまでいずれのロックも解
除しない。 (5)ディスクへの新しいデータの書込みが完了した
後、データ・ロックを解除する。ディスクへの新しいパ
リティの書込みが完了した後、パリティ・ロックを解除
する。この方法がデータ優先アルゴリズムの方式と異な
る点は、両方のロックを獲得するまでロックを解除でき
ないことだけである。
【0046】ストライプ単位ロックを使用するには、並
行性とロック・オーバヘッドの低減とのトレードオフを
伴う可能性がある。
【0047】並列アルゴリズムのために並行性の強化を
達成するためのもう1つの代替方法は、別の更新要求の
処理を開始する前にそれぞれのディスクでの更新要求に
ついて、データとパリティ両方の操作を開始するかまた
は待ち行列化することである。
【0048】ロックを行わない並行性強化並列方法は以
下の通りである。 (1)ディスクIからブロックB(古いデータ)を読み
取り、ディスクIのブロックBにD'(新しいデータ)
を書き込むためのアトミック要求を出す。 (2)古いデータが使用可能になるとただちに、D'と
DのXORをとり、デルタPを生成する。 (3)古いデータが使用可能になるとただちに、ディス
クJからブロックB(古いパリティ)を読み取るための
要求を出す。 (4)ステップ1〜3を完了するまで、別のホスト要求
を許可しない。 (5)古いパリティとデルタPとのXORとして新しい
パリティP'を計算する。ディスクJのブロックBにP'
を書き込むための要求を出す。この要求は、古いパリテ
ィの読取り後、次に実行されるものでなければならな
い。 (6)D'またはP'のいずれかがディスクに書き込まれ
た後、ただちに要求側に「完了」を出す。
【0049】パリティ・グループ・セット ソフトウェアRAIDは、両方ではなく(不整合状態に
なっている)データまたはパリティのいずれかが更新さ
れるような修正処理中のパリティ・グループのマーキン
グのためのNVRAMを備えていない。システム障害が
発生した場合には、パリティ・グループの整合性を保護
するために、ディスクに対してさらに書込みを行う必要
がある。システム障害の場合、修正されたすべてのパリ
ティ・グループは(前述のように)整合状態にする必要
がある。図2に示すように、本発明の好ましい実施例
は、複数のパリティ・グループ34を集めてパリティ・
グループ・セット(PGS)48を形成するようになっ
ている。
【0050】PGSは、更新処理中である可能性のある
パリティ・グループを識別するための集合ユニットとし
て使用する。更新処理中である可能性のあるパリティ・
グループを含むと思われるPGSとして標識が識別した
PGS内のパリティ・グループのみ、修正して整合状態
にする必要がある。PGSは、1つのストライプまたは
それ以上であることが好ましい。たとえば、30000
個のパリティ・グループを有するアレイでは、それぞれ
のPGSが100個のパリティ・グループを含む、30
0個のパリティ・グループ・セット(PGS)を形成す
ることができる。最初の100個のパリティ・グループ
は第1のPGS内に入り、次の100個のパリティ・グ
ループは第2のPGSに入り、以下同様になるはずであ
る。
【0051】図4を参照すると、それぞれのビット51
が1つのPGSを表すビット・マップ51が使用されて
いる。PGS内のいずれかのパリティ・グループが整合
していない可能性がある場合、PGS用のビットが設定
される。このビット・マップはメモリ内のディスク上で
管理されるが、ディスク・バージョンはメモリ・バージ
ョンを密接に追跡するが、2つのバージョンがいつも同
一であるわけではない。パリティ・グループが整合して
いない場合、ビット・マップのディスク・バージョンで
はそのビットが設定されることになる。電源障害の場合
は、ディスクのPGSビット・マップにビットが設定さ
れたPGSのみ、走査する必要がある。
【0052】PGSビット・マップ50は単一ディスク
・ブロック52に収まることが好ましい。PGSビット
・マップ50の2つのコピーがディスクに格納され、交
互に書き込まれる。このため、PGSビット・マップ・
ブロックの書込みの最中の電源障害による問題が回避さ
れる。最新コピーを判定し、PGSブロックの部分書込
みを検出するため、PGSビット・マップ・ブロックの
最初のバイトと最後のバイトにタイム・スタンプ54が
格納される。最初のバイトのタイム・スタンプが最後の
バイトのタイム・スタンプと同じではない場合、部分書
込みが検出される。電源障害後に復旧したら、両方のP
GSブロックが自己検証してる場合は、両方のPGSブ
ロックを読み取って最新タイム・スタンプがついている
バージョンを決定する。PGSディスク・ブロックの一
方が一部分だけ書き込まれ、その結果、自己検証してい
ない場合は、もう一方のPGSブロックを復旧に使用す
る。2つのPGSディスク・ブロックは、アレイ内の既
知の固定位置に格納される(たとえば、アレイの第1の
ディスクのブロック0とブロック1)。PGSビット・
マップを保管するディスクが故障した場合は、PGSビ
ット・マップを保管するために別のディスクが選択され
る。電源障害後、どのディスクがどのアレイに属してい
るかなど、他の構成情報を検出するのに使用するものと
同様の機構を使用して、ビット・マップを含むディスク
が検出される。
【0053】さらに、各PGSごとに、そのPGSに対
して進行中の並行更新の数を示すカウントが管理され
る。
【0054】パリティ・グループ・セットのビット・マ
ップとともに、データ優先または並列アルゴリズムのい
ずれかを使用して、書込み動作の復旧パフォーマンスを
改善するためのプロセスが使用される。このプロセスで
は、ビット・マップまたはPGSカウントあるいはその
両方を検査または変更するために、PGSビット・マッ
プに関するグローバル・ロックを使用する。また、強制
フラグ、書込み進行中フラグ、変更済みフラグという3
つのグローバル・フラグも使用する。第1のフラグが設
定されている場合は、PGSビット・マップをただちに
強制的にディスクに書き込まなければならないことを意
味する。このフラグは、PGSビット・マップ内の1つ
のビットが設定されている場合に必ずオンになる。第2
のフラグが設定されている場合は、ビット・マップがデ
ィスクに書き込まれている最中であることを意味する。
第3のフラグが設定されている場合は、ビット・マップ
が最後の書込み以降、変更されたことを意味するが、そ
の変更をただちにディスクに書き込む必要はない。これ
は、ビット・マップの最後の書込み以降、PGSビット
・マップ内の1つまたは複数のビットがリセットされた
が、いずれも設定されていない場合である。
【0055】データを書き込むためのプロセスについて
は、図5の流れ図60を参照して説明する。
【0056】まず、データまたはパリティがディスクに
書き込まれる(61)まで、データ優先方法または並列
方法用に概略を示したステップをたどる。パリティ・グ
ループ・ロックの書込み後であって、データまたはパリ
ティの書込みを開始する前の任意の時点で、PGSビッ
ト・マップに関するロックを獲得する(62)。次に、
このPGS用のビットが設定されているかどうか(6
3)を確認するためにPGSビット・マップを検査す
る。すでに設定されている場合は、次のステップに移行
する。設定されていない場合は、このPGS用のビット
・マップにビットを設定し(64)、強制フラグを設定
する。書込み進行中フラグが設定されていない場合は、
PGSビット・マップ書込みプロセスを始動するこのフ
ラグを設定する。書込み進行中フラグがすでに設定され
ている場合は、PGSビット・マップ書込みプロセスが
現在、そのビット・マップに対して前に行った変更を書
き込んでいる。したがって、古い書込みが完了すると、
そのビット・マップに対する新しい変更を含む書込み要
求が自動的に開始される(詳細については以下を参照の
こと)。次に、適切なPGS用のPGSカウントが増分
される(65)。その後、PGSビット・マップがロッ
ク解除される(66)。
【0057】PGSビット・マップにまだビットが設定
されていない場合は、書込み動作の残りを続行する(6
8)前に、そのビットが設定されたPGSビット・マッ
プがディスクに書き込まれたことをPGSビット・マッ
プ書込みプロセスが報告するまで待機する。
【0058】パリティ・グループの更新(70)後、P
GSビット・マップがロックされ、適切なPGS用のP
GSカウントが減分される(71)。カウント=0の場
合(72)は、PGSビット・マップの適切なビットが
リセットされる。変更済みフラグが設定され、PGSビ
ット・マップがロック解除される。
【0059】ビット・マップ書込みプロセスは、以下の
ように機能する。 (1)書込み進行中フラグが設定されるまで待つ。 (2)PGSビット・マップをロックする。強制フラグ
を検査する。設定されていない場合は、書込み進行中フ
ラグをリセットし、PGSビット・マップをロック解除
し、復帰する。設定されている場合は、ディスクに書き
込むPGSビット・マップの個別のメモリ・コピーを作
成し、強制フラグと変更済みフラグをリセットし、PG
Sビット・マップをロック解除する。 (3)PGSビット・マップとともに書き込むタイム・
スタンプを増分し、代替位置を指し示すようにビット・
マップを書き込むアドレスを変更する。 (4)PGSビット・マップのメモリ・コピーをディス
クに書き込む。 (5)完了したら、書込み完了を通知する。
【0060】強制フラグがオンになっていなくても、変
更済みフラグがオンの場合には、PGSビット・マップ
をディスクにダンプするためにビット・マップ書込みプ
ロセスを使用することもある。更新要求当たり必要な4
回のディスク入出力に加え、5回目のディスク入出力を
使用して、PGSビット・マップを書き込むこともあ
る。この5回目のディスク入出力は、PGSビット・マ
ップの適切なビットがまだ設定されていない場合のみ必
要になる。すなわち、選択したPGSに対する更新がま
だ進行していない場合のみ、5回目の入出力が必要にな
る。また、PGSビット・マップの適切なビットがまだ
設定されていなくても、5回目の入出力が不要な場合も
ある。ビット1を設定して、PGSビット・マップの1
回目の書込みを開始するようなPGS1の更新を行う
と、ディスク入出力が5回行われる。PGS2を更新す
ると、ビット2が設定され、PGSビット・マップをも
う1回書き込むことが必要になる。しかし、ビット・マ
ップ書込みプロセスがPGSビット・マップの書込みに
使用されているので、この2回目の書込みはただちに開
始されるわけではない。PGSビット・マップの1回目
の書込みが完了する前にPGSの更新がすべて受領され
ると、PGSの各ビットもビット・マップに設定され、
ビット・マップの2回目のディスク書込みでは、このよ
うなすべての更新要求のためのビット・マップ書込みが
1回のディスク入出力に結合される。したがって、必要
な1回の余分なディスク入出力が後続の更新要求間で共
用され、それぞれの更新要求が個別に5回のディスク入
出力を必要とするわけではない。
【0061】PGSサイズが小さい場合、通常動作中に
余分なディスク入出力が行われる代わりに復旧時間が改
善される。PGSサイズが大きい場合は、復旧時間が長
くなるが、通常の更新パフォーマンスは改善される可能
性がある。
【0062】分散PGSビット・マップ 可能性は低いが、PGSビット・マップを書き込む速度
によってアレイのスループットが制限される可能性もあ
る。これは、他のディスク入出力がアレイの全ディスク
間に分散され、PGSビット・マップの書込みはすべて
1個のディスクに対して行われるからである。
【0063】ある代替実施例では、PGSビット・マッ
プがアレイ内の全ディスク間に分散される。たとえば、
アレイにN個のディスクがある場合、第1の1/N P
GSに関連するビット・マップはディスク1に(その代
替位置とともに)格納することができ、第2の1/N
PGSに関連するビット・マップはディスク2に格納す
ることができ、以下同様になる。この分散の場合、アレ
イ内のディスク当たり2つのPGSディスク・ブロック
が存在し、PGSビット・マップ書込みがボトルネック
になる可能性は低い。
【0064】好ましい代替実施例(図4に示す)では、
ビット・マップ全体がN個のディスクすべてに複写さ
れ、最初にディスク1にビット・マップを書き込み、次
にディスク2、・・・、次にディスクN、次にディスク
1に戻り、以下同様というようにビット・マップをディ
スクに書き込む順序を確立する。N個のディスクにビッ
ト・マップをN回書き込む作業を同時に進行させること
はできず、これが可能な場合には、電源障害によって、
ビット・マップのN個のディスク・コピーすべてが破壊
されてしまう。ただし、N−1回の並行ビット・マップ
書込みは可能である。電源障害後、最新のビット・マッ
プが最新の自己検証タイム・スタンプを備えたビット・
マップであると判定することができる。ディスクが故障
した場合は、このディスクは書込みローテンションから
外さなければならず、電源障害後の始動中にアクセス可
能になるようにこの情報を記録しなければならない。こ
の情報は、始動時に必要な他のアレイ構成情報を記録す
るのと同じ方法で記録することができる。
【0065】障害から復旧するためのプロセスは図7に
示す。ビット・マップにビットが設定されているパリテ
ィ・グループ・セットの場合(80)、それぞれのパリ
ティ・グループを走査して不整合パリティ・グループを
識別する。(前述のように)不整合パリティ・グループ
を整合させて(82)、標準のRAID5復旧手順に基
づいて障害を訂正する(84)。
【0066】順次作業負荷の機能強化 順次更新を含む作業負荷について、パフォーマンスを改
善することができる。すなわち、要求ストリームが、ブ
ロック1更新、ブロック2更新、・・・、ブロックN更
新という形式になっている場合である。複数の連続デー
タ・ブロックをディスク間にストライプ化するための方
法はいくつかある。1つは、1つのストライプが1つの
パリティ・グループと等しくなるようにデータ・ブロッ
クをストライプ化する方法である。別の方法としては、
複数の連続データ・ブロックを1個のディスクに格納し
てから、次の複数の連続ブロックを2個目のディスクに
格納し、以下同様に格納することができる。すなわち、
1つのストライプを複数のパリティ・グループにするこ
とができる。これは、データ・ストライプ・インタリー
フ深さがNであるという。
【0067】パリティ・キャッシュの最適化 本発明の一実施例では、ディスクに書き込む必要がある
が、まだ書き込まれていないパリティを格納するため
に、パリティ・キャッシュ(使用可能な場合)を使用す
る。以下のステップは、データ優先方法で前述した書込
み動作のためのパリティ・キャッシュを実現するもので
ある。 (1)アレイ内のすべてのディスクからのブロックBか
ら構成されるパリティ・グループをロックする。 (2)ディスクIからブロックB(古いデータ)を読み
取るための要求を出す。古いパリティがないかどうかパ
リティ・キャッシュを検査する。パリティ・キャッシュ
に古いパリティがない場合は、ディスクJからブロック
B(古いパリティ)を読み取るための要求を出す。 (3)ディスクIのブロックBの読取り後、次のディス
ク回転中に行われるように、できるだけすみやかにディ
スクIのブロックBにD'を書き込むための要求を待ち
行列化する。 (4)ディスクにD'が確実に書き込まれた後、できる
だけすみやかにシステムに完了を返す。 (5)DまたはPのどちらが先に使用可能になったかに
よって決まる順序でD'とDおよびPとのXORをと
り、P'を生成する。このXORは、前のステップが実
行される前に開始することもできる。 (6)パリティ・キャッシュにP'を保管する。ディス
クにはまだ書き込まない。 (7)パリティ・グループをロック解除する。
【0068】このプロセスは、データ優先方法またはP
GSビット・マップを使用するデータ優先方法のいずれ
にも適用することができる。(図6の88に示すよう
に)PGSビット・マップを使用する場合、複数の更新
からなる順次ストリームがすべて同じPGSに入るので
あれば(そうなる可能性が高い)、PGSビット・マッ
プの書込みに必要なディスク入出力は1回だけである。
PGSビット・マップを使用すると、パリティが実際に
ディスクに書き込まれるまで、ビット・マップのビット
はリセットされない。
【0069】ディスクが故障し、アレイが低下動作モー
ドに入った場合は、パリティ・キャッシュがディスクに
書き込まれ、予備のディスクへの故障したディスクの再
構築が完了するまで、後続のすべての更新要求はパリテ
ィ・キャッシュの最適化を行わずに実行される。これに
より、アレイがまだ低下モードになっている間に電源障
害またはシステム・クラッシュが発生した場合に失う恐
れのあるデータの量が最小限になる。
【0070】デルタ・パリティ・キャッシュの最適化 本発明の他の実施例では、パリティ・キャッシュの最適
化を実現し、(図6の90に示すように)順次更新スト
リームが切断されるまでパリティの読取りと書込みの両
方を遅延させる。したがって、ブロック1が更新される
と、ブロック1が読み取られて新しいデータが書き込ま
れ、ブロック1の古い値と新しい値のXORがデルタ・
パリティとしてキャッシュに格納される。このデルタ・
パリティは、その後、新しいパリティを計算するために
パリティに適用しなければならない。ブロック2が更新
されると、ブロック2が読み取られて新しいデータが書
き込まれ、新しいデルタ・パリティが計算される(古い
デルタ・パリティXORブロック2の古い値XORブロ
ック2の新しい値)。順次ストリームが切断されると、
パリティ・ブロック(複数も可)が読み取られ、デルタ
・パリティ(複数も可)が適用され、パリティ・ブロッ
ク(複数も可)がディスクに再書込みされる。
【0071】連続更新のストリームが大きければ大きい
ほど、パリティ・キャッシュよりデルタ・パリティ・キ
ャッシュの方が有利である度合いが強くなる。デルタ・
パリティ・キャッシュは、データ事前取出し(後述す
る)によっても拡張することができる。パリティ・キャ
ッシュとデルタ・パリティ・キャッシュの最適化は、入
出力パターンがランダムでも、ハードウェアRAIDに
よって使用することができる。このような最適化は、大
量書込みキャッシュと高速書込みのために大型のNVR
AMを用意することができない低コスト・ハードウェア
RAIDに最も適している。
【0072】図6は、パリティ・グループ・セットとし
て編成されたパリティ・グループ用の順次書込み要求を
処理し、デルタ・パリティ・キャッシュを使用する好ま
しい実施例の流れ図を示している。
【0073】デルタ・パリティおよび部分パリティ・キ
ャッシュの最適化 本発明の他の代替実施例では、パリティ・グループ全体
を更新した場合にパリティの読取り値を保管する。この
最適化では、デルタ・パリティと部分パリティの両方を
以下のようにキャッシュすることが必要である。(1)
ブロック1を更新するときは、ブロック1を読み取って
書き込む。(2)デルタ・パリティ(ブロック1の新し
い値XORブロック1の古い値)と部分パリティ(ブロ
ック1の新しい値)をキャッシュに保管する。(3)ブ
ロック2を更新するときは、ブロック2を読み取って書
き込む。また、新しいデルタ・パリティ(古いデルタ・
パリティXORブロック2の古い値XORブロック2の
新しい値)と新しい部分パリティ(古い部分パリティX
ORブロック2の新しい値)をキャッシュに保管する。
(4)パリティ・グループ全体を更新する場合は、キャ
ッシュ内に生成された部分パリティから単純に新しいパ
リティを計算することができる。パリティ・グループ全
体を更新するわけではない場合は、ディスクから古いパ
リティを読み取って、それにデルタ・パリティを適用す
ることによって新しいパリティが計算される。
【0074】データ事前取出しの最適化 本発明の他の実施例では、順次更新が存在するときに1
つのパリティ・グループのデータ・ブロックがNVRA
Mに事前取出しされる。インタリーフ深さが1であるデ
ータをストライプ化する場合、プロセスは以下のように
機能する。 (1)第1のブロックを更新するときは、データ・ブロ
ック1を読み取って書き込み、パリティP1を読み取
る。 (2)P1の新しい値が計算され、パリティ・キャッシ
ュに格納されるが、ディスクには書き込まれない。 (3)次の連続ブロックであるブロック2を更新すると
きは、ブロック2を読み取って書き込み、P1の新しい
値を計算してパリティ・キャッシュに入れる。同時に、
パリティ・グループ内の次の連続ブロックであるブロッ
ク3と4の更新を見越して、ブロック3と4を事前取出
しする。 (4)ブロック3と4を更新するときは、ディスクにブ
ロック3を書き込むと更新が完了する。すなわち、更新
動作の応答時間に関連するディスク入出力は1回だけで
ある。1つのパリティ・グループ内のN個のブロックの
うちの2個が更新されるか、1つのパリティ・グループ
内のN/2個のブロックが更新されるか、または選択し
た他の基準が満足されるとただちに、ブロックの事前取
出しが起動される。
【0075】前述のように、パリティの書込みは、更新
要求の順次ストリームが切断されるまで遅延される。更
新要求ストリームの切断が早すぎる場合は、無駄な作業
が実行される可能性がある。
【0076】前述の事前取出しは複数のディスク・ドラ
イブにまたがって行われるので、多くのディスク・ドラ
イブによって自動的に行われる事前取出しとは異なって
いる。
【0077】キャッシュの機能強化 更新がランダムであっても、ディスク入出力を低減する
ためにデータおよびパリティ・ブロックのキャッシュを
使用することができる。このような汎用キャッシュは、
提示したすべての方法にとって補足的なものである。デ
ータとパリティをキャッシュする際は、以下の追加ポイ
ントが適用される。
【0078】前述のようにロックが獲得されるが、キャ
ッシュで新しいパリティが更新されるとただちにパリテ
ィに関するロックを解除することができる。パリティが
ディスクに書き込まれるまで待つ必要はない。
【0079】適切なロックが獲得された後、まずデータ
(パリティ)がないかどうかキャッシュ内を検査する。
キャッシュは、(1)データ(パリティ)がキャッシュ
内にあること、(2)データ(パリティ)がキャッシュ
内にないが、別の要求のためにディスクから取り出して
いること、または(3)データ(パリティ)がキャッシ
ュ内にないことのいずれかを返さなければならない。第
1のケースでは、その要求がキャッシュからのデータ
(パリティ)を使用する。第2のケースでは、要求は入
出力が完了するまで待ち、次にキャッシュからのデータ
(パリティ)を使用する。第3のケースでは、要求はデ
ィスクからデータ(パリティ)を取り出しているという
マークをキャッシュに入れるので、その後、同じデータ
またはパリティ・グループへの更新要求が適切に通知さ
れる。
【0080】データ(パリティ)は、1つまたは複数の
要求によって必要とされる間、キャッシュ内に固定され
る。このため、使用している間に通常のLRU置換方針
によってそれを置き換えることができなくなる。
【0081】パリティ・キャッシュを伴う完全強化デー
タ優先方法 並行性が強化され、復旧が強化された、パリティ・キャ
ッシュとデータ・キャッシュを伴うデータ優先書込みの
ために以下に記載するデータ優先アルゴリズムの完全強
化実施例については、図8を参照して説明する。 (1)データ(ディスクIのブロックB)に関するロッ
クを獲得する(100)。必要であれば待機する。 (2)キャッシュ内にD'用の空間を割り振り、ホスト
からキャッシュにD'を入れる。 (3)古いデータがないかどうかキャッシュを検査する
(102)。存在するか取出し中の場合は、キャッシュ
・コピーを使用し、ステップ4に移行する。存在せず、
取出し中でもない場合は、古いデータDを読み取るため
の要求を出す(104)。 (4)データに関するロックを獲得した後で、パリティ
(ディスクJのブロックB)に関するロックを獲得する
(106)。必要であれば待機する。このロックを獲得
しなければならないのは、データに関するロックを獲得
した後に限られる。 (5)パリティ・ロックの獲得後、古いパリティがない
かどうかパリティ・キャッシュを検査する(108)。
古いパリティがパリティ・キャッシュ内になく、取出し
中でもない場合は、古いパリティを読み取るための要求
を出す(110)。それ以外の場合は、キャッシュ・コ
ピーを使用する。 (6)PGSビット・マップに関するロックを獲得する
(112)。これは、パリティに関するロックを獲得す
る前に試みることができる。このPGSのビットが設定
されているかどうかを確認するためにPGSビット・マ
ップを検査する。すでに設定されている場合は、次のス
テップに移行する。設定されていない場合は、ビット・
マップにビットを設定する(114)。 (7)強制フラグを設定する。書込み進行中が設定され
ていない場合は、PGSビット・マップ書込みプロセス
を始動するこのフラグを設定する。書込み進行中がすで
に設定されている場合は、PGSビット・マップ書込み
プロセスが現在、ビット・マップに対して前に行った変
更を書き込んでいる。したがって、古い書込みが完了す
ると、そのビット・マップに対する新しい変更を含む書
込みが自動的に開始される(詳細については以下を参照
のこと)。 (8)適切なPGS用のPGSカウントを増分する(1
16)。PGSビット・マップをロック解除する(11
7)。 (9)前に検査したときにPGSビット・マップにビッ
トがまだ設定されていない場合は、ステップ6でビット
が設定されたPGSビット・マップがディスクに書き込
まれたことをPGSビット・マップ書込みプロセスが報
告するまで待機する(118)。 (10)Dが読み取られた後、できるだけすみやかにデ
ィスクIのブロックBにD'を書き込むための要求を待
ち行列化する。これは、必要な場合にPGSビット・マ
ップが書き込まれた後にのみ、起こりうるが、パリティ
・ロックを獲得する前にも起こりうる。 (11)ディスクにD'が確実に書き込まれた後、でき
るだけすみやかにシステムに完了を返す(120)。こ
れは、パリティに関するロックを獲得する前に起こりう
る。 (12)D'がディスクに書き込まれ、D'がディスク上
のブロックの新しい値として確立されるとただちにデー
タに関するロックを解除する(122)。これは、パリ
ティに関するロックを獲得する前に起こりうる。 (13)DまたはPのどちらが先に使用可能になったか
によって決まる順序で、D'とDおよびPとのXORを
とり、P'を生成する(124)。XORは、ステップ
3と同じ時期に開始することができる。これは、ステッ
プ3と5がともに完了するまで完了できない。 (14)パリティ・キャッシュにP'を保管する(12
6)。まだディスクには書き込まない。これは、パリテ
ィ書込みプロセスによって書き込まれる(以下を参照の
こと)。 (15)パリティに関するロックを解除する(12
8)。 (16)キャッシュからDおよびPを除去する(13
0)。
【0082】上記の一連のステップのうち、ステップ
1、2、3、6、7、8、9、10、11は、この順序
で実行しなければならない。ステップ4はステップ1の
後、ステップ5はステップ4の後のいつでも実行するこ
とができる。ステップ12は、ステップ3からのデータ
が使用可能になるか、またはステップ5からのパリティ
が使用可能になるとただちに開始することができる。ス
テップ12は、データとパリティの両方が使用可能にな
るまで完了することができない。ステップ13、14、
15は、順次、ステップ12に続いていなければならな
い。
【0083】ビット・マップ書込みプロセスは、以下の
ように機能する。 (1)書込み進行中フラグが設定されるのを待つ。 (2)PGSビット・マップをロックする。 (3)強制フラグを検査する。 (4)強制フラグが設定されていない場合は、書込み進
行中フラグをリセットし、PGSビット・マップをロッ
ク解除し、ステップ1に戻る。強制フラグが設定されて
いる場合は、ディスクに書き込むPGSビット・マップ
の個別のメモリ・コピーを作成し、強制フラグと変更済
みフラグをリセットし、PGSビット・マップをロック
解除する。 (5)PGSビット・マップとともに書き込むタイム・
スタンプを増分し、代替位置を指し示すようにビット・
マップを書き込むアドレスを変更する。 (6)PGSビット・マップのメモリ・コピー(ステッ
プ3で作成)をディスクに書き込む。 (7)完了したら、書込みの完了を待っているすべての
要求側に通知する。ステップ2に移行する。
【0084】パリティ書込みプロセスは、以下のように
機能する。 (1)複数の更新からなる順次ストリームが切断された
とき、またはそれ以降に、ディスクにパリティを書き込
む。 (2)キャッシュから素早くフラッシュされるように、
パリティをLRUブロックにする。 (3)PGSビット・マップをロックし、適切なPGS
用のPGSカウントを減分する。カウント=0の場合
は、PGSビット・マップの適切なビットをリセットす
る。変更済みフラグを設定し、PGSビット・マップを
ロック解除する。
【0085】強制フラグが設定されていなくても、変更
済みフラグが設定されている場合は、PGSビット・マ
ップをディスクにダンプするために、随時、ビット・マ
ップ書込みプロセスを始動する。
【0086】規則正しい遮断中にRAIDサブシステム
は、PGSビット・マップがすべてゼロになるまでキャ
ッシュしたパリティまたはデータを強制的にディスクに
書き込み、PGSビット・マップは強制的にディスクに
書き込まれる。次の電源投入時の復旧時間は、素早く達
成される。
【0087】ランダム作業負荷 ランダム作業負荷(特に、完全強化デルタ・パリティ・
キャッシュ手法)の場合でもすべての実施例を使用する
ことができる。並行性の改善や、パリティ用の入出力の
最適化の機会など、本発明を使用する際の利点は数多
い。というのは、これらは、より好都合な時間と入出力
の結合が可能になるまで遅延することができるからであ
る。
【0088】結論 好ましい実施例に関して本発明を具体的に示し説明して
きたが、特許請求の範囲に定義するように、本発明の精
神および範囲を逸脱せずに、形式および細部についてさ
まざまな変更が可能であることに留意されたい。
【0089】まとめとして、本発明の構成に関して以下
の事項を開示する。
【0090】(1)プロセッサとメモリとを含む複数の
記憶装置のアレイにデータを格納する方法において、 (A)パリティ・グループの一部としてブロック位置に
格納された1つのパリティ・ブロックが前記パリティ・
グループのブロック位置に格納された複数のデータ・ブ
ロックの組合せから論理的に導出され、1つのパリティ
・グループ内の各ブロックが別々の記憶装置に格納され
るように、記憶装置上の複数のブロック位置を複数のパ
リティ・グループとして論理的に配置するステップと、 (B)複数のパリティ・グループのセットを1つのパリ
ティ・グループ・セットにグループ化するステップと、 (C)記憶装置上のデータ・ブロック位置に1つの新し
いデータ・ブロックを書き込む際に(i)前記データ・
ブロック位置に格納された古いデータ・ブロックを読み
取るステップと、(ii)前記データ・ブロック位置に新
しいデータ・ブロックを書き込むステップと、(iii)
前記ブロック位置が属するパリティ・グループ及びパリ
ティ・グループ・セットを識別するステップと、(iv)
新しいデータ・ブロックの書込み前に前記識別されたパ
リティ・グループ・セットが未修正状態になっていると
きにのみ、前記識別されたパリティ・グループ・セット
が、回復プロセスの間識別されたパリティ・グループ・
セットのすべてのパリティ・グループがパリティの不整
合検査されることを示す、修正状態になっているという
標識を前記記憶装置に書き込むステップとを含むことを
特徴とする方法。 (2)(D)前記データ・ブロック位置が属する前記識
別されたパリティ・グループ用の古いパリティ・ブロッ
クを読み取るステップと、(E)古いデータ・ブロック
と、古いパリティ・ブロックと、新しいデータ・ブロッ
クとから前記識別されたパリティ・グループ用の新しい
パリティ・ブロックを計算するステップと、(F)前記
記憶装置上の古いパリティ・ブロック用の位置に新しい
パリティ・ブロックを書き込むステップと、(G)ステ
ップ(F)の完了後に、前記識別されたパリティ・グル
ープが未修正状態であることを示すステップと、(H)
前記識別されたパリティ・グループ・セットの全てのパ
リティ・グループが未修正状態であるかどうかを決定す
るステップと、(I)前記パリティ・グループ・セット
の全てのパリティ・グループが未修正状態である、各パ
リティ・グループ・セットについて、前記パリティ・グ
ループ・セットが未修正状態であることを示す標識をメ
モリに書き込むステップと、をさらに含むことを特徴と
する、上記(1)に記載の複数の記憶装置のアレイにデ
ータを格納する方法。 (3)(D)古いデータ・ブロックと新しいデータ・ブ
ロックとから前記識別されたパリティ・グループ用の変
更パリティ・ブロックを計算するステップと、(E)前
記データ・ブロック位置が属する前記識別されたパリテ
ィ・グループ用の古いパリティ・ブロックを読み取るス
テップと、(F)変更パリティ・ブロックと古いパリテ
ィ・ブロックとから新しいパリティ・ブロックを計算す
るステップと、(G)前記記憶装置上の古いパリティ・
ブロック用の位置に新しいパリティ・ブロックを書き込
むステップと、(H)ステップ(G)の完了後に、前記
識別されたパリティ・グループが未修正状態であること
を示すステップと、(I)前記識別されたパリティ・グ
ループ・セットの全てのパリティ・グループが未修正状
態であるかどうかを決定するステップと、(J)前記パ
リティ・グループ・セットの全てのパリティ・グループ
が未修正状態である、各パリティ・グループ・セットに
ついて、前記パリティ・グループ・セットが未修正状態
であることを示す標識をメモリに書き込むステップと、
をさらに含むことを特徴とする、上記(1)に記載の複
数の記憶装置のアレイにデータを格納する方法。 (4)各パリティ・グループ・セットが修正状態になっ
ているとき、ビットが設定されたビット・マップ中で前
記パリティ・グループ・セットが表されることを特徴と
する、上記(1)に記載の複数の記憶装置のアレイにデ
ータを格納する方法。 (5)各パリティ・グループ・セットが、該パリティ・
グループ・セットを現在修正している書込み動作の回数
を示すセット・カウンタを有し、該セット・カウンタが
ゼロになったときに、前記パリティ・グループ・セット
用のビットがリセットされることを特徴とする、上記
(4)に記載の複数の記憶装置のアレイにデータを格納
する方法。 (6)上記(1)に記載の複数の記憶装置のアレイにデ
ータを格納する方法を使用する記憶システムの障害から
復旧する方法において、(A)修正されたパリティ・グ
ループ・セットを識別する標識を記憶装置から読み取る
ステップと、(B)各修正されたパリティ・グループ・
セットごとに、不整合パリティ・ブロックを有する前記
修正されたパリティ・グループ・セット内の各不整合パ
リティ・グループを識別するステップと、(C)前記各
不整合パリティ・グループごとに、前記不整合パリティ
・グループのデータ・ブロックに基づいて前記不整合パ
リティ・グループ用のパリティ・ブロックを更新するス
テップとを含むことを特徴とする方法。 (7)上記(4)に記載の複数の記憶装置のアレイにデ
ータを格納する方法を使用する記憶システムの障害から
復旧する方法において、(A)パリティ・グループ・セ
ット・ビット・マップを記憶装置から取り出すステップ
と、(B)ビットが設定された各パリティ・グループ・
セットごとに、不整合パリティ・ブロックを有する各不
整合パリティ・グループを識別するステップと、(C)
前記各不整合パリティ・グループごとに、前記不整合パ
リティ・グループのデータ・ブロックに基づいて前記不
整合パリティ・グループ用のパリティ・ブロックを更新
するステップとを含むことを特徴とする方法。 (8)データ記憶装置上の2つの位置にパリティ・グル
ープ・セット・ビット・マップを書き込むステップと、
ビット・マップが前記データ記憶装置に書き込まれたと
きにビット・マップの先頭と末尾にタイム・スタンプを
書き込むステップと、復旧プロセス中に前記ビット・マ
ップを取り出すときにビット・マップの最新整合タイム
・スタンプ付きバージョンを前記データ記憶装置から取
り出すステップとをさらに含むことを特徴とする、上記
(7)に記載の障害から復旧する方法。 (9)(D)新しいデータ・ブロックが順次データ・ス
トリームの継続であるかどうかを判定するステップと、 (E)古いデータ・ブロックと新しいデータ・ブロック
とから前記識別されたパリティ・グループ用の変更パリ
ティ・ブロックを計算するステップと、 (F)前記新しいデータ・ブロックが前記順次データ・
ストリームの継続ではないときに、(i)順次データ・
ストリームの一部である各ブロック位置が属する各パリ
ティ・グループ用の古いパリティ・ブロックを読み取る
ステップと、(ii)前記各パリティ・グループ用の変更
パリティ・ブロックと、前記各パリティ・グループ用の
古いパリティ・ブロックとに基づいて、順次データ・ス
トリームの一部である各ブロック位置が属する各パリテ
ィ・グループ用の新しいパリティ・ブロックを計算する
ステップと、(iii)順次データ・ストリームの一部で
ある各ブロック位置が属する各パリティ・グループ用の
新しいパリティ・ブロックを、前記各パリティ・グルー
プの古いパリティ・ブロック用のブロック位置に書き込
むステップとをさらに含むことを特徴とする、上記
(1)に記載の複数の記憶装置のアレイにデータを格納
する方法。 (10)新しいデータ・ブロックが、前記データ・スト
リームの古いデータ・ブロックの前記パリティ・グルー
プ・セットから新しいパリティ・グループ・セット内の
パリティ・グループ内にあると決定された後、前記識別
されたパリティ・グループ・セットが修正状態になって
いるという標識が記憶装置に書き込まれることを特徴と
する、上記(9)に記載の複数の記憶装置のアレイにデ
ータを格納する方法。 (11)(iv)ステップ(F)(iii)の完了後に、未
修正状態になっている各パリティ・グループ・セットご
とに、前記パリティ・グループ・セットが未修正状態に
なっているという標識をメモリに書き込むステップをさ
らに含むことを特徴とする、上記(10)に記載の複数
の記憶装置のアレイにデータを格納する方法。 (12)ステップ(C)(i)の前にデータ・ブロック
位置をロックするステップと、ステップ(C)(ii)の
後にデータ・ブロック位置をロック解除するステップ
と、ステップ(D)の前に古いパリティ・ブロックのブ
ロック位置をロックするステップと、ステップ(F)の
後に古いパリティ・ブロックのブロック位置をロック解
除するステップとをさらに含むことを特徴とする、上記
(2)に記載の複数の記憶装置のアレイにデータを格納
する方法。 (13)複数の記憶装置のアレイ内のブロック位置に新
しいデータ・ブロックを書き込む方法において、(A)
ブロック位置のパリティ・グループに対応する古いパリ
ティ・ブロックを決定するステップと(B)前記ブロッ
ク位置をロックするステップと、(C)前記ブロック位
置に格納された古いデータ・ブロックを読み取るステッ
プと、(D)前記ブロック位置に新しいデータ・ブロッ
クを書き込むステップと、(E)前記ブロック位置をロ
ック解除するステップと、(F)古いパリティ・ブロッ
クのブロック位置をロックするステップと、(G)前記
古いパリティ・ブロックを読み取るステップと、(H)
古いデータ・ブロックと、古いパリティ・ブロックと、
新しいデータ・ブロックとに基づいて、前記パリティ・
グループ用の新しいパリティ・ブロックを計算するステ
ップと、(I)古いパリティ・ブロックのブロック位置
に新しいパリティ・ブロックを書き込むステップと、
(J)古いパリティ・ブロックのブロック位置をロック
解除するステップとを含むことを特徴とする方法。 (14)それぞれの記憶装置が複数のブロック位置を含
む、複数の記憶装置と、パリティ・グループがパリティ
・グループ・ブロック位置の1つに格納された1つのパ
リティ・ブロックを含み、前記パリティ・ブロックが前
記パリティ・グループ・ブロック位置に格納された複数
のデータ・ブロックの組合せから論理的に導出され、1
つのパリティ・グループ内の各データ及びパリティ・ブ
ロックが別々の記憶装置に格納されるように、記憶装置
上の複数のブロック位置から論理的に編成された複数の
パリティ・グループと、各パリティ・グループ・セット
が前記複数のパリティ・グループのセットを含む複数の
パリティ・グループ・セットと、1つの記憶装置上の1
つのブロック位置に新しいデータ・ブロックを書き込む
手段と、前記パリティ・グループ・ブロック位置の1つ
に格納された古いデータ・ブロックを読み取る手段と、
前記パリティ・グループ・ブロック位置の1つが属する
パリティ・グループ・セットの1つを識別する手段と、
前記パリティ・グループ・セットの1つが未修正状態に
なっていることを示す標識を前記パリティ・グループ・
セットの1つが有しないときを判定する手段と、前記パ
リティ・グループ・セットの1つが修正状態になってい
るという標識を前記記憶装置に書き込む手段とを含むこ
とを特徴とする、記憶アレイ・システム。 (15)前記パリティ・グループ・ブロック位置が属す
るパリティ・グループを判定する手段と、前記判定され
たパリティ・グループ用の古いパリティ・ブロックを読
み取る手段と、古いデータ・ブロックと、古いパリティ
・ブロックと、新しいデータ・ブロックとから前記判定
されたパリティ・グループ用の新しいパリティ・ブロッ
クを計算する手段と、記憶装置上の古いパリティ・ブロ
ックが格納されていたパリティ・グループ・ブロック位
置に新しいパリティ・ブロックを書き込む手段と、未修
正状態になっている各パリティ・グループ・セットを判
定する手段と、前記パリティ・グループ・セットのうち
の少なくとも1つが未修正状態になっているという標識
を記憶装置に書き込む手段とをさらに含むことを特徴と
する、上記(14)に記載のシステム。 (16)前記パリティ・グループ・セットのうちの少な
くとも1つが未修正状態および修正状態になっているこ
とを示す標識が、修正状態になっている各パリティ・グ
ループごとにビットが設定されたパリティ・グループ・
セット・ビット・マップと、各パリティ・グループごと
にパリティ・グループ・セットを現在修正している書込
み動作の回数を示すセット・カウンタとを含み、セット
・カウンタがゼロになると、前記パリティ・グループ・
セット用のビットが変更されることを特徴とする、上記
(15)に記載のシステム。 (17)修正されたパリティ・グループ・セットを識別
する手段と、不整合パリティ・ブロックを有する修正さ
れたパリティ・グループ・セット内のパリティ・グルー
プを識別する手段と、前記パリティ・グループのデータ
・ブロックに基づいて、各不整合パリティ・グループ用
のパリティ・ブロックを更新する手段とをさらに含むこ
とを特徴とする、上記(14)に記載のシステム。 (18)新しいデータ・ブロックが順次データ・ストリ
ームの継続かどうかを判定する手段と、古いデータ・ブ
ロックと新しいデータ・ブロックとからパリティ・グル
ープ用の変更パリティ・ブロックを計算する手段と、順
次データ・ストリームの一部であるブロック位置が属す
る各パリティ・グループ用の古いパリティ・ブロックを
読み取る手段と、各パリティ・グループ用の変更パリテ
ィと、各パリティ・グループ用の古いパリティ・ブロッ
クとに基づいて、順次データ・ストリームの一部である
ブロック位置が属する各パリティ・グループ用の新しい
パリティ・ブロックを計算する手段と、順次データ・ス
トリームの一部であるブロック位置が属する各パリティ
・グループ用の新しいパリティ・ブロックを、前記記憶
装置上の前記パリティ・グループ用の古いパリティ・ブ
ロックの各ブロック位置に書き込む手段とをさらに含む
ことを特徴とする、上記(14)に記載のシステム。 (19)媒体内にコンピュータ・プログラム・コードを
有する、コンピュータにより読取り可能な記憶媒体であ
って、(A)パリティ・グループの一部としてブロック
位置に格納された1つのパリティ・ブロックが前記パリ
ティ・グループのブロック位置に格納された複数のデー
タ・ブロックの組合せから論理的に導出され、1つのパ
リティ・グループ内の各ブロックが別々の記憶装置に格
納されるように、記憶装置上の複数のブロック位置を複
数のパリティ・グループとして論理的に配置する、コン
ピュータ・プログラム・コード手段と、(B)複数のパ
リティ・グループのセットを1つのパリティ・グループ
・セットにグループ化するコンピュータ・プログラム・
コード手段と、 (C)記憶装置上のデータ・ブロック位置に1つの新し
いデータ・ブロックを書き込む際に(i)前記データ・
ブロック位置に格納された古いデータ・ブロックを読み
取るコンピュータ・プログラム・コード手段と、(ii)
前記データ・ブロック位置に新しいデータ・ブロックを
書き込むコンピュータ・プログラム・コード手段と、
(iii)前記ブロック位置が属するパリティ・グループ
及びパリティ・グループ・セットを識別するコンピュー
タ・プログラム・コード手段と、(iv)新しいデータ・
ブロックの書込み前に前記識別されたパリティ・グルー
プ・セットが未修正状態になっているときにのみ、前記
識別されたパリティ・グループ・セットが、回復プロセ
スの間識別されたパリティ・グループ・セットのすべて
のパリティ・グループがパリティの不整合検査されるこ
とを示す、修正状態になっているという標識を前記記憶
装置に書き込むコンピュータ・プログラム・コード手段
とを含むことを特徴とする、記憶媒体。 (20)(D)前記データ・ブロック位置が属する前記
識別されたパリティ・グループ用の古いパリティ・ブロ
ックを読み取るコンピュータ・プログラム・コード手段
と、(E)古いデータ・ブロックと、古いパリティ・ブ
ロックと、新しいデータ・ブロックとから前記識別され
たパリティ・グループ用の新しいパリティ・ブロックを
計算するコンピュータ・プログラム・コード手段と、
(F)前記記憶装置上の古いパリティ・ブロック用の位
置に新しいパリティ・ブロックを書き込むコンピュータ
・プログラム・コード手段と、(G)ステップ(F)の
完了後に、前記識別されたパリティ・グループが未修正
状態であることを示すコンピュータ・プログラム・コー
ド手段と、(H)前記識別されたパリティ・グループ・
セットの全てのパリティ・グループが未修正状態である
かどうかを決定するコンピュータ・プログラム・コード
手段と、(I)前記パリティ・グループ・セットの全て
のパリティ・グループが未修正状態である、各パリティ
・グループ・セットについて、前記パリティ・グループ
・セットが未修正状態であることを示す標識をメモリに
書き込むコンピュータ・プログラム・コード手段と、を
さらに含むことを特徴とする、上記(19)に記載の媒
体。
【図面の簡単な説明】
【図1】記憶アレイ・システムの概略図である。
【図2】記憶アレイ・システム内のパリティ・グループ
・セットの概略図である。
【図3】記憶アレイ・システムにデータを書き込むため
のプロセスを示す流れ図である。
【図4】記憶装置上に格納されたパリティ・グループ・
セットのビット・マップ表現を示す図である。
【図5】パリティ・グループ・セット単位に編成された
データ・ブロックを有する記憶アレイ・システムにデー
タを書き込むためのプロセスを示す流れ図である。
【図6】記憶アレイ・システム内の障害から復旧するプ
ロセスを示す流れ図である。
【図7】パリティ・グループ・セット単位に編成され、
不揮発性キャッシュを有する記憶アレイ・システムにデ
ータを書き込むためのプロセスを示す流れ図である。
【図8】パリティ・グループ・セット単位に編成され、
不揮発性キャッシュを有する記憶アレイ・システムにデ
ータを書き込むためのプロセスの他の実施例を示す流れ
図である。
【符号の説明】
36 ブロックBをロックする 37 ブロックBの古いデータを読み取る ブロックBに新しいデータを書き込む 38 ブロックB用のパリティ・ブロックをロックする 39 「完了」を返す 40 ブロックBをロック解除する 41 古いデータと新しいデータからΔPを計算する 42 古いパリティを読み取る 43 古いパリティとΔPから新しいパリティを計算す
る 44 新しいパリティを書き込む 45 パリティ・ブロックに関するロックを解除する
フロントページの続き (72)発明者 ジェームズ・クリストファー・ウィリー アメリカ合衆国95030 カリフォルニア州 モンテ・セレーノ チャドボーン・レーン 18392 (72)発明者 ジェフリー・エイ・リーゲル アメリカ合衆国95128 カリフォルニア州 サンノゼヒーサーデール・レーン 1592

Claims (20)

    【特許請求の範囲】
  1. 【請求項1】プロセッサとメモリとを含む複数の記憶装
    置のアレイにデータを格納する方法において、 (A)パリティ・グループの一部としてブロック位置に
    格納された1つのパリティ・ブロックが前記パリティ・
    グループのブロック位置に格納された複数のデータ・ブ
    ロックの組合せから論理的に導出され、1つのパリティ
    ・グループ内の各ブロックが別々の記憶装置に格納され
    るように、記憶装置上の複数のブロック位置を複数のパ
    リティ・グループとして論理的に配置するステップと、 (B)複数のパリティ・グループのセットを1つのパリ
    ティ・グループ・セットにグループ化するステップと、 (C)記憶装置上のデータ・ブロック位置に1つの新し
    いデータ・ブロックを書き込む際に(i)前記データ・
    ブロック位置に格納された古いデータ・ブロックを読み
    取るステップと、(ii)前記データ・ブロック位置に新
    しいデータ・ブロックを書き込むステップと、(iii)
    前記ブロック位置が属するパリティ・グループ及びパリ
    ティ・グループ・セットを識別するステップと、(iv)
    新しいデータ・ブロックの書込み前に前記識別されたパ
    リティ・グループ・セットが未修正状態になっていると
    きにのみ、前記識別されたパリティ・グループ・セット
    が、回復プロセスの間識別されたパリティ・グループ・
    セットのすべてのパリティ・グループがパリティの不整
    合検査されることを示す、修正状態になっているという
    標識を前記記憶装置に書き込むステップとを含むことを
    特徴とする方法。
  2. 【請求項2】(D)前記データ・ブロック位置が属する
    前記識別されたパリティ・グループ用の古いパリティ・
    ブロックを読み取るステップと、 (E)古いデータ・ブロックと、古いパリティ・ブロッ
    クと、新しいデータ・ブロックとから前記識別されたパ
    リティ・グループ用の新しいパリティ・ブロックを計算
    するステップと、 (F)前記記憶装置上の古いパリティ・ブロック用の位
    置に新しいパリティ・ブロックを書き込むステップと、 (G)ステップ(F)の完了後に、前記識別されたパリ
    ティ・グループが未修正状態であることを示すステップ
    と、 (H)前記識別されたパリティ・グループ・セットの全
    てのパリティ・グループが未修正状態であるかどうかを
    決定するステップと、 (I)前記パリティ・グループ・セットの全てのパリテ
    ィ・グループが未修正状態である、各パリティ・グルー
    プ・セットについて、前記パリティ・グループ・セット
    が未修正状態であることを示す標識をメモリに書き込む
    ステップと、をさらに含むことを特徴とする、請求項1
    に記載の複数の記憶装置のアレイにデータを格納する方
    法。
  3. 【請求項3】(D)古いデータ・ブロックと新しいデー
    タ・ブロックとから前記識別されたパリティ・グループ
    用の変更パリティ・ブロックを計算するステップと、 (E)前記データ・ブロック位置が属する前記識別され
    たパリティ・グループ用の古いパリティ・ブロックを読
    み取るステップと、 (F)変更パリティ・ブロックと古いパリティ・ブロッ
    クとから新しいパリティ・ブロックを計算するステップ
    と、 (G)前記記憶装置上の古いパリティ・ブロック用の位
    置に新しいパリティ・ブロックを書き込むステップと、 (H)ステップ(G)の完了後に、前記識別されたパリ
    ティ・グループが未修正状態であることを示すステップ
    と、 (I)前記識別されたパリティ・グループ・セットの全
    てのパリティ・グループが未修正状態であるかどうかを
    決定するステップと、 (J)前記パリティ・グループ・セットの全てのパリテ
    ィ・グループが未修正状態である、各パリティ・グルー
    プ・セットについて、前記パリティ・グループ・セット
    が未修正状態であることを示す標識をメモリに書き込む
    ステップと、をさらに含むことを特徴とする、請求項1
    に記載の複数の記憶装置のアレイにデータを格納する方
    法。
  4. 【請求項4】各パリティ・グループ・セットが修正状態
    になっているとき、ビットが設定されたビット・マップ
    中で前記パリティ・グループ・セットが表されることを
    特徴とする、請求項1に記載の複数の記憶装置のアレイ
    にデータを格納する方法。
  5. 【請求項5】各パリティ・グループ・セットが、該パリ
    ティ・グループ・セットを現在修正している書込み動作
    の回数を示すセット・カウンタを有し、該セット・カウ
    ンタがゼロになったときに、前記パリティ・グループ・
    セット用のビットがリセットされることを特徴とする、
    請求項4に記載の複数の記憶装置のアレイにデータを格
    納する方法。
  6. 【請求項6】請求項1に記載の複数の記憶装置のアレイ
    にデータを格納する方法を使用する記憶システムの障害
    から復旧する方法において、 (A)修正されたパリティ・グループ・セットを識別す
    る標識を記憶装置から読み取るステップと、 (B)各修正されたパリティ・グループ・セットごと
    に、不整合パリティ・ブロックを有する前記修正された
    パリティ・グループ・セット内の各不整合パリティ・グ
    ループを識別するステップと、 (C)前記各不整合パリティ・グループごとに、前記不
    整合パリティ・グループのデータ・ブロックに基づいて
    前記不整合パリティ・グループ用のパリティ・ブロック
    を更新するステップとを含むことを特徴とする方法。
  7. 【請求項7】請求項4に記載の複数の記憶装置のアレイ
    にデータを格納する方法を使用する記憶システムの障害
    から復旧する方法において、 (A)パリティ・グループ・セット・ビット・マップを
    記憶装置から取り出すステップと、 (B)ビットが設定された各パリティ・グループ・セッ
    トごとに、不整合パリティ・ブロックを有する各不整合
    パリティ・グループを識別するステップと、 (C)前記各不整合パリティ・グループごとに、前記不
    整合パリティ・グループのデータ・ブロックに基づいて
    前記不整合パリティ・グループ用のパリティ・ブロック
    を更新するステップとを含むことを特徴とする方法。
  8. 【請求項8】データ記憶装置上の2つの位置にパリティ
    ・グループ・セット・ビット・マップを書き込むステッ
    プと、 ビット・マップが前記データ記憶装置に書き込まれたと
    きにビット・マップの先頭と末尾にタイム・スタンプを
    書き込むステップと、 復旧プロセス中に前記ビット・マップを取り出すときに
    ビット・マップの最新整合タイム・スタンプ付きバージ
    ョンを前記データ記憶装置から取り出すステップとをさ
    らに含むことを特徴とする、請求項7に記載の障害から
    復旧する方法。
  9. 【請求項9】(D)新しいデータ・ブロックが順次デー
    タ・ストリームの継続であるかどうかを判定するステッ
    プと、 (E)古いデータ・ブロックと新しいデータ・ブロック
    とから前記識別されたパリティ・グループ用の変更パリ
    ティ・ブロックを計算するステップと、 (F)前記新しいデータ・ブロックが前記順次データ・
    ストリームの継続ではないときに、(i)順次データ・
    ストリームの一部である各ブロック位置が属する各パリ
    ティ・グループ用の古いパリティ・ブロックを読み取る
    ステップと、(ii)前記各パリティ・グループ用の変更
    パリティ・ブロックと、前記各パリティ・グループ用の
    古いパリティ・ブロックとに基づいて、順次データ・ス
    トリームの一部である各ブロック位置が属する各パリテ
    ィ・グループ用の新しいパリティ・ブロックを計算する
    ステップと、(iii)順次データ・ストリームの一部で
    ある各ブロック位置が属する各パリティ・グループ用の
    新しいパリティ・ブロックを、前記各パリティ・グルー
    プの古いパリティ・ブロック用のブロック位置に書き込
    むステップとをさらに含むことを特徴とする、請求項1
    に記載の複数の記憶装置のアレイにデータを格納する方
    法。
  10. 【請求項10】新しいデータ・ブロックが、前記データ
    ・ストリームの古いデータ・ブロックの前記パリティ・
    グループ・セットから新しいパリティ・グループ・セッ
    ト内のパリティ・グループ内にあると決定された後、前
    記識別されたパリティ・グループ・セットが修正状態に
    なっているという標識が記憶装置に書き込まれることを
    特徴とする、請求項9に記載の複数の記憶装置のアレイ
    にデータを格納する方法。
  11. 【請求項11】(iv)ステップ(F)(iii)の完了後
    に、未修正状態になっている各パリティ・グループ・セ
    ットごとに、前記パリティ・グループ・セットが未修正
    状態になっているという標識をメモリに書き込むステッ
    プをさらに含むことを特徴とする、請求項10に記載の
    複数の記憶装置のアレイにデータを格納する方法。
  12. 【請求項12】ステップ(C)(i)の前にデータ・ブ
    ロック位置をロックするステップと、 ステップ(C)(ii)の後にデータ・ブロック位置をロ
    ック解除するステップと、 ステップ(D)の前に古いパリティ・ブロックのブロッ
    ク位置をロックするステップと、 ステップ(F)の後に古いパリティ・ブロックのブロッ
    ク位置をロック解除するステップとをさらに含むことを
    特徴とする、請求項2に記載の複数の記憶装置のアレイ
    にデータを格納する方法。
  13. 【請求項13】複数の記憶装置のアレイ内のブロック位
    置に新しいデータ・ブロックを書き込む方法において、 (A)ブロック位置のパリティ・グループに対応する古
    いパリティ・ブロックを決定するステップと (B)前記ブロック位置をロックするステップと、 (C)前記ブロック位置に格納された古いデータ・ブロ
    ックを読み取るステップと、 (D)前記ブロック位置に新しいデータ・ブロックを書
    き込むステップと、 (E)前記ブロック位置をロック解除するステップと、 (F)古いパリティ・ブロックのブロック位置をロック
    するステップと、 (G)前記古いパリティ・ブロックを読み取るステップ
    と、 (H)古いデータ・ブロックと、古いパリティ・ブロッ
    クと、新しいデータ・ブロックとに基づいて、前記パリ
    ティ・グループ用の新しいパリティ・ブロックを計算す
    るステップと、 (I)古いパリティ・ブロックのブロック位置に新しい
    パリティ・ブロックを書き込むステップと、 (J)古いパリティ・ブロックのブロック位置をロック
    解除するステップとを含むことを特徴とする方法。
  14. 【請求項14】それぞれの記憶装置が複数のブロック位
    置を含む、複数の記憶装置と、 パリティ・グループがパリティ・グループ・ブロック位
    置の1つに格納された1つのパリティ・ブロックを含
    み、前記パリティ・ブロックが前記パリティ・グループ
    ・ブロック位置に格納された複数のデータ・ブロックの
    組合せから論理的に導出され、1つのパリティ・グルー
    プ内の各データ及びパリティ・ブロックが別々の記憶装
    置に格納されるように、記憶装置上の複数のブロック位
    置から論理的に編成された複数のパリティ・グループ
    と、 各パリティ・グループ・セットが前記複数のパリティ・
    グループのセットを含む複数のパリティ・グループ・セ
    ットと、 1つの記憶装置上の1つのブロック位置に新しいデータ
    ・ブロックを書き込む手段と、 前記パリティ・グループ・ブロック位置の1つに格納さ
    れた古いデータ・ブロックを読み取る手段と、 前記パリティ・グループ・ブロック位置の1つが属する
    パリティ・グループ・セットの1つを識別する手段と、 前記パリティ・グループ・セットの1つが未修正状態に
    なっていることを示す標識を前記パリティ・グループ・
    セットの1つが有しないときを判定する手段と、 前記パリティ・グループ・セットの1つが修正状態にな
    っているという標識を前記記憶装置に書き込む手段とを
    含むことを特徴とする、記憶アレイ・システム。
  15. 【請求項15】前記パリティ・グループ・ブロック位置
    が属するパリティ・グループを判定する手段と、 前記判定されたパリティ・グループ用の古いパリティ・
    ブロックを読み取る手段と、 古いデータ・ブロックと、古いパリティ・ブロックと、
    新しいデータ・ブロックとから前記判定されたパリティ
    ・グループ用の新しいパリティ・ブロックを計算する手
    段と、 記憶装置上の古いパリティ・ブロックが格納されていた
    パリティ・グループ・ブロック位置に新しいパリティ・
    ブロックを書き込む手段と、 未修正状態になっている各パリティ・グループ・セット
    を判定する手段と、 前記パリティ・グループ・セットのうちの少なくとも1
    つが未修正状態になっているという標識を記憶装置に書
    き込む手段とをさらに含むことを特徴とする、請求項1
    4に記載のシステム。
  16. 【請求項16】前記パリティ・グループ・セットのうち
    の少なくとも1つが未修正状態および修正状態になって
    いることを示す標識が、修正状態になっている各パリテ
    ィ・グループごとにビットが設定されたパリティ・グル
    ープ・セット・ビット・マップと、各パリティ・グルー
    プごとにパリティ・グループ・セットを現在修正してい
    る書込み動作の回数を示すセット・カウンタとを含み、
    セット・カウンタがゼロになると、前記パリティ・グル
    ープ・セット用のビットが変更されることを特徴とす
    る、請求項15に記載のシステム。
  17. 【請求項17】修正されたパリティ・グループ・セット
    を識別する手段と、 不整合パリティ・ブロックを有する修正されたパリティ
    ・グループ・セット内のパリティ・グループを識別する
    手段と、 前記パリティ・グループのデータ・ブロックに基づい
    て、各不整合パリティ・グループ用のパリティ・ブロッ
    クを更新する手段とをさらに含むことを特徴とする、請
    求項14に記載のシステム。
  18. 【請求項18】新しいデータ・ブロックが順次データ・
    ストリームの継続かどうかを判定する手段と、 古いデータ・ブロックと新しいデータ・ブロックとから
    パリティ・グループ用の変更パリティ・ブロックを計算
    する手段と、 順次データ・ストリームの一部であるブロック位置が属
    する各パリティ・グループ用の古いパリティ・ブロック
    を読み取る手段と、 各パリティ・グループ用の変更パリティと、各パリティ
    ・グループ用の古いパリティ・ブロックとに基づいて、
    順次データ・ストリームの一部であるブロック位置が属
    する各パリティ・グループ用の新しいパリティ・ブロッ
    クを計算する手段と、 順次データ・ストリームの一部であるブロック位置が属
    する各パリティ・グループ用の新しいパリティ・ブロッ
    クを、前記記憶装置上の前記パリティ・グループ用の古
    いパリティ・ブロックの各ブロック位置に書き込む手段
    とをさらに含むことを特徴とする、請求項14に記載の
    システム。
  19. 【請求項19】媒体内にコンピュータ・プログラム・コ
    ードを有する、コンピュータにより読取り可能な記憶媒
    体であって、 (A)パリティ・グループの一部としてブロック位置に
    格納された1つのパリティ・ブロックが前記パリティ・
    グループのブロック位置に格納された複数のデータ・ブ
    ロックの組合せから論理的に導出され、1つのパリティ
    ・グループ内の各ブロックが別々の記憶装置に格納され
    るように、記憶装置上の複数のブロック位置を複数のパ
    リティ・グループとして論理的に配置する、コンピュー
    タ・プログラム・コード手段と、 (B)複数のパリティ・グループのセットを1つのパリ
    ティ・グループ・セットにグループ化するコンピュータ
    ・プログラム・コード手段と、 (C)記憶装置上のデータ・ブロック位置に1つの新し
    いデータ・ブロックを書き込む際に(i)前記データ・
    ブロック位置に格納された古いデータ・ブロックを読み
    取るコンピュータ・プログラム・コード手段と、(ii)
    前記データ・ブロック位置に新しいデータ・ブロックを
    書き込むコンピュータ・プログラム・コード手段と、
    (iii)前記ブロック位置が属するパリティ・グループ
    及びパリティ・グループ・セットを識別するコンピュー
    タ・プログラム・コード手段と、(iv)新しいデータ・
    ブロックの書込み前に前記識別されたパリティ・グルー
    プ・セットが未修正状態になっているときにのみ、前記
    識別されたパリティ・グループ・セットが、回復プロセ
    スの間識別されたパリティ・グループ・セットのすべて
    のパリティ・グループがパリティの不整合検査されるこ
    とを示す、修正状態になっているという標識を前記記憶
    装置に書き込むコンピュータ・プログラム・コード手段
    とを含むことを特徴とする、記憶媒体。
  20. 【請求項20】(D)前記データ・ブロック位置が属す
    る前記識別されたパリティ・グループ用の古いパリティ
    ・ブロックを読み取るコンピュータ・プログラム・コー
    ド手段と、 (E)古いデータ・ブロックと、古いパリティ・ブロッ
    クと、新しいデータ・ブロックとから前記識別されたパ
    リティ・グループ用の新しいパリティ・ブロックを計算
    するコンピュータ・プログラム・コード手段と、 (F)前記記憶装置上の古いパリティ・ブロック用の位
    置に新しいパリティ・ブロックを書き込むコンピュータ
    ・プログラム・コード手段と、 (G)ステップ(F)の完了後に、前記識別されたパリ
    ティ・グループが未修正状態であることを示すコンピュ
    ータ・プログラム・コード手段と、 (H)前記識別されたパリティ・グループ・セットの全
    てのパリティ・グループが未修正状態であるかどうかを
    決定するコンピュータ・プログラム・コード手段と、 (I)前記パリティ・グループ・セットの全てのパリテ
    ィ・グループが未修正状態である、各パリティ・グルー
    プ・セットについて、前記パリティ・グループ・セット
    が未修正状態であることを示す標識をメモリに書き込む
    コンピュータ・プログラム・コード手段と、をさらに含
    むことを特徴とする、請求項19に記載の媒体。
JP03939996A 1995-03-03 1996-02-27 アレイにデータを格納する方法および記憶アレイ・システム Expired - Fee Related JP3348416B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/397,817 US5574882A (en) 1995-03-03 1995-03-03 System and method for identifying inconsistent parity in an array of storage
US397817 1995-03-03

Publications (2)

Publication Number Publication Date
JPH08263228A true JPH08263228A (ja) 1996-10-11
JP3348416B2 JP3348416B2 (ja) 2002-11-20

Family

ID=23572752

Family Applications (1)

Application Number Title Priority Date Filing Date
JP03939996A Expired - Fee Related JP3348416B2 (ja) 1995-03-03 1996-02-27 アレイにデータを格納する方法および記憶アレイ・システム

Country Status (2)

Country Link
US (1) US5574882A (ja)
JP (1) JP3348416B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009223367A (ja) * 2008-03-13 2009-10-01 Fujitsu Ltd 制御方法、ディスクアレイ装置
JP2017162202A (ja) * 2016-03-09 2017-09-14 富士通株式会社 ストレージ制御装置、ストレージ制御方法、およびストレージ制御プログラム
JP2021517684A (ja) * 2018-04-12 2021-07-26 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation トラック・ロックおよびストライド・グループ・ロックを使用したキャッシュ動作の管理

Families Citing this family (201)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3687111B2 (ja) * 1994-08-18 2005-08-24 株式会社日立製作所 記憶装置システムおよび記憶装置の制御方法
US5752004A (en) * 1995-07-31 1998-05-12 International Business Machines Corporation Method and system for modifying an internal data processing system identification
US5774643A (en) * 1995-10-13 1998-06-30 Digital Equipment Corporation Enhanced raid write hole protection and recovery
US5764880A (en) * 1996-09-10 1998-06-09 International Business Machines Corporation Method and system for rebuilding log-structured arrays
US6041423A (en) * 1996-11-08 2000-03-21 Oracle Corporation Method and apparatus for using undo/redo logging to perform asynchronous updates of parity and data pages in a redundant array data storage environment
CA2221216A1 (en) * 1996-11-15 1998-05-15 Mark Squibb System and apparatus for merging a write event journal and an original storage to produce an updated storage using an event map
JP2790134B1 (ja) 1997-03-11 1998-08-27 日本電気株式会社 ディスクアレイシステム
US6016552A (en) * 1997-06-06 2000-01-18 The Chinese University Of Hong Kong Object striping focusing on data object
US6098114A (en) 1997-11-14 2000-08-01 3Ware Disk array system for processing and tracking the completion of I/O requests
US6374256B1 (en) 1997-12-22 2002-04-16 Sun Microsystems, Inc. Method and apparatus for creating indexes in a relational database corresponding to classes in an object-oriented application
US6385618B1 (en) 1997-12-22 2002-05-07 Sun Microsystems, Inc. Integrating both modifications to an object model and modifications to a database into source code by an object-relational mapping tool
US6268850B1 (en) 1997-12-22 2001-07-31 Sun Microsystems, Inc. User interface for the specification of lock groups
US6175837B1 (en) 1998-06-29 2001-01-16 Sun Microsystems, Inc. Object-relational mapping toll that processes views
US6360223B1 (en) 1997-12-22 2002-03-19 Sun Microsystems, Inc. Rule-based approach to object-relational mapping strategies
US6240413B1 (en) * 1997-12-22 2001-05-29 Sun Microsystems, Inc. Fine-grained consistency mechanism for optimistic concurrency control using lock groups
US6170063B1 (en) 1998-03-07 2001-01-02 Hewlett-Packard Company Method for performing atomic, concurrent read and write operations on multiple storage devices
US6704837B2 (en) 1998-06-29 2004-03-09 International Business Machines Corporation Method and apparatus for increasing RAID write performance by maintaining a full track write counter
US6243827B1 (en) 1998-06-30 2001-06-05 Digi-Data Corporation Multiple-channel failure detection in raid systems
US6279138B1 (en) 1998-08-04 2001-08-21 International Business Machines Corporation System for changing the parity structure of a raid array
US6272662B1 (en) 1998-08-04 2001-08-07 International Business Machines Corporation Distributed storage system using front-end and back-end locking
US6332197B1 (en) 1998-08-04 2001-12-18 International Business Machines Corp. System for updating data in a multi-adaptor environment
US6128762A (en) * 1998-08-04 2000-10-03 International Business Machines Corporation Updating and reading data and parity blocks in a shared disk system with request forwarding
US6446237B1 (en) 1998-08-04 2002-09-03 International Business Machines Corporation Updating and reading data and parity blocks in a shared disk system
US6446220B1 (en) 1998-08-04 2002-09-03 International Business Machines Corporation Updating data and parity data with and without read caches
US6427212B1 (en) 1998-11-13 2002-07-30 Tricord Systems, Inc. Data fault tolerance software apparatus and method
US6725392B1 (en) 1999-03-03 2004-04-20 Adaptec, Inc. Controller fault recovery system for a distributed file system
US6449731B1 (en) 1999-03-03 2002-09-10 Tricord Systems, Inc. Self-healing computer system storage
US6530036B1 (en) 1999-08-17 2003-03-04 Tricord Systems, Inc. Self-healing computer system storage
US6519677B1 (en) * 1999-04-20 2003-02-11 International Business Machines Corporation Managing access to shared data in data processing networks
US6591275B1 (en) 2000-06-02 2003-07-08 Sun Microsystems, Inc. Object-relational mapping for tables without primary keys
US7127668B2 (en) * 2000-06-15 2006-10-24 Datadirect Networks, Inc. Data management architecture
US6731445B1 (en) * 2000-06-21 2004-05-04 Hewlett-Packard Development Company, L.P. Disk drive having DPS logging sector
US6675318B1 (en) * 2000-07-25 2004-01-06 Sun Microsystems, Inc. Two-dimensional storage array with prompt parity in one dimension and delayed parity in a second dimension
US6950901B2 (en) * 2001-01-05 2005-09-27 International Business Machines Corporation Method and apparatus for supporting parity protection in a RAID clustered environment
US7054927B2 (en) * 2001-01-29 2006-05-30 Adaptec, Inc. File system metadata describing server directory information
US20020174295A1 (en) * 2001-01-29 2002-11-21 Ulrich Thomas R. Enhanced file system failure tolerance
US6862692B2 (en) * 2001-01-29 2005-03-01 Adaptec, Inc. Dynamic redistribution of parity groups
US20020124137A1 (en) * 2001-01-29 2002-09-05 Ulrich Thomas R. Enhancing disk array performance via variable parity based load balancing
US6990667B2 (en) 2001-01-29 2006-01-24 Adaptec, Inc. Server-independent object positioning for load balancing drives and servers
US7219353B2 (en) * 2001-02-27 2007-05-15 Broadcom Corporation Finite state machine with a single process context for a RAID system
US6523087B2 (en) 2001-03-06 2003-02-18 Chaparral Network Storage, Inc. Utilizing parity caching and parity logging while closing the RAID5 write hole
US6912643B2 (en) * 2002-08-19 2005-06-28 Aristos Logic Corporation Method of flexibly mapping a number of storage elements into a virtual storage element
US6892276B2 (en) * 2002-11-26 2005-05-10 Lsi Logic Corporation Increased data availability in raid arrays using smart drives
US20040250028A1 (en) * 2003-06-09 2004-12-09 Daniels Rodger D. Method and apparatus for data version checking
GB0315157D0 (en) * 2003-06-28 2003-08-06 Ibm Safe write to multiply-redundant storage
US7197599B2 (en) 2003-12-29 2007-03-27 Intel Corporation Method, system, and program for managing data updates
TWI259356B (en) * 2004-03-26 2006-08-01 Infortrend Technology Inc Apparatus for checking data coherence, controller and storage system having the same and method therefore is disclosed
US7370163B2 (en) * 2004-05-03 2008-05-06 Gemini Storage Adaptive cache engine for storage area network including systems and methods related thereto
US8275951B2 (en) * 2004-06-10 2012-09-25 Hewlett-Packard Development Company, L.P. Local bitmaps for an array of redundant storage devices
US8726129B1 (en) * 2004-07-23 2014-05-13 Hewlett-Packard Development Company, L.P. Methods of writing and recovering erasure coded data
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
US7779294B2 (en) * 2005-04-15 2010-08-17 Intel Corporation Power-safe disk storage apparatus, systems, and methods
US7441146B2 (en) * 2005-06-10 2008-10-21 Intel Corporation RAID write completion apparatus, systems, and methods
US7562188B2 (en) * 2005-06-17 2009-07-14 Intel Corporation RAID power safe apparatus, systems, and methods
US7496785B2 (en) * 2006-03-21 2009-02-24 International Business Machines Corporation Enclosure-based raid parity assist
US9734086B2 (en) 2006-12-06 2017-08-15 Sandisk Technologies Llc Apparatus, system, and method for a device shared between multiple independent hosts
US8239706B1 (en) * 2007-01-03 2012-08-07 Board Of Governors For Higher Education, State Of Rhode Island And Providence Plantations Data retrieval system and method that provides retrieval of data to any point in time
US8151068B2 (en) 2008-02-04 2012-04-03 Microsoft Corporation Data copy management for faster reads
US8583866B2 (en) * 2010-02-22 2013-11-12 International Business Machines Corporation Full-stripe-write protocol for maintaining parity coherency in a write-back distributed redundancy data storage system
US8756361B1 (en) * 2010-10-01 2014-06-17 Western Digital Technologies, Inc. Disk drive modifying metadata cached in a circular buffer when a write operation is aborted
US8954664B1 (en) 2010-10-01 2015-02-10 Western Digital Technologies, Inc. Writing metadata files on a disk
US8732485B2 (en) * 2010-12-01 2014-05-20 International Business Machines Corporation Methods for process key rollover/re-encryption and systems thereof
US8756382B1 (en) 2011-06-30 2014-06-17 Western Digital Technologies, Inc. Method for file based shingled data storage utilizing multiple media types
US8589640B2 (en) 2011-10-14 2013-11-19 Pure Storage, Inc. Method for maintaining multiple fingerprint tables in a deduplicating storage system
US8612706B1 (en) 2011-12-21 2013-12-17 Western Digital Technologies, Inc. Metadata recovery in a disk drive
US9658803B1 (en) * 2012-06-28 2017-05-23 EMC IP Holding Company LLC Managing accesses to storage
KR20150061258A (ko) * 2013-11-27 2015-06-04 한국전자통신연구원 분산 raid 시스템에서 패리티 청크 운용 방법과 이를 지원하는 데이터 서버 장치
US11960371B2 (en) 2014-06-04 2024-04-16 Pure Storage, Inc. Message persistence in a zoned system
US10574754B1 (en) 2014-06-04 2020-02-25 Pure Storage, Inc. Multi-chassis array with multi-level load balancing
US9836234B2 (en) 2014-06-04 2017-12-05 Pure Storage, Inc. Storage cluster
US12341848B2 (en) 2014-06-04 2025-06-24 Pure Storage, Inc. Distributed protocol endpoint services for data storage systems
US9218244B1 (en) 2014-06-04 2015-12-22 Pure Storage, Inc. Rebuilding data across storage nodes
US11068363B1 (en) 2014-06-04 2021-07-20 Pure Storage, Inc. Proactively rebuilding data in a storage cluster
US11652884B2 (en) 2014-06-04 2023-05-16 Pure Storage, Inc. Customized hash algorithms
US9003144B1 (en) 2014-06-04 2015-04-07 Pure Storage, Inc. Mechanism for persisting messages in a storage system
US12137140B2 (en) 2014-06-04 2024-11-05 Pure Storage, Inc. Scale out storage platform having active failover
US9367243B1 (en) 2014-06-04 2016-06-14 Pure Storage, Inc. Scalable non-uniform storage sizes
US9213485B1 (en) 2014-06-04 2015-12-15 Pure Storage, Inc. Storage system architecture
US9836245B2 (en) 2014-07-02 2017-12-05 Pure Storage, Inc. Non-volatile RAM and flash memory in a non-volatile solid-state storage
US9021297B1 (en) 2014-07-02 2015-04-28 Pure Storage, Inc. Redundant, fault-tolerant, distributed remote procedure call cache in a storage system
US8868825B1 (en) 2014-07-02 2014-10-21 Pure Storage, Inc. Nonrepeating identifiers in an address space of a non-volatile solid-state storage
US11604598B2 (en) 2014-07-02 2023-03-14 Pure Storage, Inc. Storage cluster with zoned drives
US11886308B2 (en) 2014-07-02 2024-01-30 Pure Storage, Inc. Dual class of service for unified file and object messaging
US12182044B2 (en) 2014-07-03 2024-12-31 Pure Storage, Inc. Data storage in a zone drive
US9747229B1 (en) 2014-07-03 2017-08-29 Pure Storage, Inc. Self-describing data format for DMA in a non-volatile solid-state storage
US10853311B1 (en) 2014-07-03 2020-12-01 Pure Storage, Inc. Administration through files in a storage system
US9811677B2 (en) 2014-07-03 2017-11-07 Pure Storage, Inc. Secure data replication in a storage grid
US9495255B2 (en) 2014-08-07 2016-11-15 Pure Storage, Inc. Error recovery in a storage cluster
US10983859B2 (en) 2014-08-07 2021-04-20 Pure Storage, Inc. Adjustable error correction based on memory health in a storage unit
US9082512B1 (en) 2014-08-07 2015-07-14 Pure Storage, Inc. Die-level monitoring in a storage cluster
US9483346B2 (en) 2014-08-07 2016-11-01 Pure Storage, Inc. Data rebuild on feedback from a queue in a non-volatile solid-state storage
US12158814B2 (en) 2014-08-07 2024-12-03 Pure Storage, Inc. Granular voltage tuning
US10079711B1 (en) 2014-08-20 2018-09-18 Pure Storage, Inc. Virtual file server with preserved MAC address
US9940234B2 (en) 2015-03-26 2018-04-10 Pure Storage, Inc. Aggressive data deduplication using lazy garbage collection
US10082985B2 (en) 2015-03-27 2018-09-25 Pure Storage, Inc. Data striping across storage nodes that are assigned to multiple logical arrays
US10178169B2 (en) 2015-04-09 2019-01-08 Pure Storage, Inc. Point to point based backend communication layer for storage processing
US9672125B2 (en) 2015-04-10 2017-06-06 Pure Storage, Inc. Ability to partition an array into two or more logical arrays with independently running software
US12379854B2 (en) 2015-04-10 2025-08-05 Pure Storage, Inc. Two or more logical arrays having zoned drives
US10140149B1 (en) 2015-05-19 2018-11-27 Pure Storage, Inc. Transactional commits with hardware assists in remote memory
US9817576B2 (en) 2015-05-27 2017-11-14 Pure Storage, Inc. Parallel update to NVRAM
US10846275B2 (en) 2015-06-26 2020-11-24 Pure Storage, Inc. Key management in a storage device
US10983732B2 (en) 2015-07-13 2021-04-20 Pure Storage, Inc. Method and system for accessing a file
US9772773B2 (en) 2015-07-30 2017-09-26 International Business Machines Corporation Parity stripe lock engine
US9690516B2 (en) * 2015-07-30 2017-06-27 International Business Machines Corporation Parity stripe lock engine
US10108355B2 (en) 2015-09-01 2018-10-23 Pure Storage, Inc. Erase block state detection
US11269884B2 (en) 2015-09-04 2022-03-08 Pure Storage, Inc. Dynamically resizable structures for approximate membership queries
US11341136B2 (en) 2015-09-04 2022-05-24 Pure Storage, Inc. Dynamically resizable structures for approximate membership queries
US9768953B2 (en) 2015-09-30 2017-09-19 Pure Storage, Inc. Resharing of a split secret
US10762069B2 (en) 2015-09-30 2020-09-01 Pure Storage, Inc. Mechanism for a system where data and metadata are located closely together
US10853266B2 (en) 2015-09-30 2020-12-01 Pure Storage, Inc. Hardware assisted data lookup methods
US12271359B2 (en) 2015-09-30 2025-04-08 Pure Storage, Inc. Device host operations in a storage system
US20170097887A1 (en) * 2015-10-02 2017-04-06 Netapp, Inc. Storage Controller Cache Having Reserved Parity Area
US9843453B2 (en) 2015-10-23 2017-12-12 Pure Storage, Inc. Authorizing I/O commands with I/O tokens
US10007457B2 (en) 2015-12-22 2018-06-26 Pure Storage, Inc. Distributed transactions with token-associated execution
US10133503B1 (en) 2016-05-02 2018-11-20 Pure Storage, Inc. Selecting a deduplication process based on a difference between performance metrics
US10261690B1 (en) 2016-05-03 2019-04-16 Pure Storage, Inc. Systems and methods for operating a storage system
US12235743B2 (en) 2016-06-03 2025-02-25 Pure Storage, Inc. Efficient partitioning for storage system resiliency groups
US11861188B2 (en) 2016-07-19 2024-01-02 Pure Storage, Inc. System having modular accelerators
US10768819B2 (en) 2016-07-22 2020-09-08 Pure Storage, Inc. Hardware support for non-disruptive upgrades
US9672905B1 (en) 2016-07-22 2017-06-06 Pure Storage, Inc. Optimize data protection layouts based on distributed flash wear leveling
US11604690B2 (en) 2016-07-24 2023-03-14 Pure Storage, Inc. Online failure span determination
US11797212B2 (en) 2016-07-26 2023-10-24 Pure Storage, Inc. Data migration for zoned drives
US10366004B2 (en) 2016-07-26 2019-07-30 Pure Storage, Inc. Storage system with elective garbage collection to reduce flash contention
US11886334B2 (en) 2016-07-26 2024-01-30 Pure Storage, Inc. Optimizing spool and memory space management
US11734169B2 (en) 2016-07-26 2023-08-22 Pure Storage, Inc. Optimizing spool and memory space management
US10203903B2 (en) 2016-07-26 2019-02-12 Pure Storage, Inc. Geometry based, space aware shelf/writegroup evacuation
US11422719B2 (en) 2016-09-15 2022-08-23 Pure Storage, Inc. Distributed file deletion and truncation
US20180095788A1 (en) 2016-10-04 2018-04-05 Pure Storage, Inc. Scheduling operations for a storage device
US9747039B1 (en) 2016-10-04 2017-08-29 Pure Storage, Inc. Reservations over multiple paths on NVMe over fabrics
US10613974B2 (en) 2016-10-04 2020-04-07 Pure Storage, Inc. Peer-to-peer non-volatile random-access memory
US10481798B2 (en) 2016-10-28 2019-11-19 Pure Storage, Inc. Efficient flash management for multiple controllers
US10359942B2 (en) 2016-10-31 2019-07-23 Pure Storage, Inc. Deduplication aware scalable content placement
US11550481B2 (en) 2016-12-19 2023-01-10 Pure Storage, Inc. Efficiently writing data in a zoned drive storage system
US11307998B2 (en) 2017-01-09 2022-04-19 Pure Storage, Inc. Storage efficiency of encrypted host system data
US9747158B1 (en) 2017-01-13 2017-08-29 Pure Storage, Inc. Intelligent refresh of 3D NAND
US11955187B2 (en) 2017-01-13 2024-04-09 Pure Storage, Inc. Refresh of differing capacity NAND
US10528488B1 (en) 2017-03-30 2020-01-07 Pure Storage, Inc. Efficient name coding
US11016667B1 (en) 2017-04-05 2021-05-25 Pure Storage, Inc. Efficient mapping for LUNs in storage memory with holes in address space
US10141050B1 (en) 2017-04-27 2018-11-27 Pure Storage, Inc. Page writes for triple level cell flash memory
US10516645B1 (en) 2017-04-27 2019-12-24 Pure Storage, Inc. Address resolution broadcasting in a networked device
US11467913B1 (en) 2017-06-07 2022-10-11 Pure Storage, Inc. Snapshots with crash consistency in a storage system
US11782625B2 (en) 2017-06-11 2023-10-10 Pure Storage, Inc. Heterogeneity supportive resiliency groups
US10425473B1 (en) 2017-07-03 2019-09-24 Pure Storage, Inc. Stateful connection reset in a storage cluster with a stateless load balancer
US10402266B1 (en) 2017-07-31 2019-09-03 Pure Storage, Inc. Redundant array of independent disks in a direct-mapped flash storage system
US10831935B2 (en) 2017-08-31 2020-11-10 Pure Storage, Inc. Encryption management with host-side data reduction
US10789211B1 (en) 2017-10-04 2020-09-29 Pure Storage, Inc. Feature-based deduplication
US12067274B2 (en) 2018-09-06 2024-08-20 Pure Storage, Inc. Writing segments and erase blocks based on ordering
US11024390B1 (en) 2017-10-31 2021-06-01 Pure Storage, Inc. Overlapping RAID groups
US10545687B1 (en) 2017-10-31 2020-01-28 Pure Storage, Inc. Data rebuild when changing erase block sizes during drive replacement
US10496330B1 (en) 2017-10-31 2019-12-03 Pure Storage, Inc. Using flash storage devices with different sized erase blocks
US11354058B2 (en) 2018-09-06 2022-06-07 Pure Storage, Inc. Local relocation of data stored at a storage device of a storage system
US10860475B1 (en) 2017-11-17 2020-12-08 Pure Storage, Inc. Hybrid flash translation layer
US10990566B1 (en) 2017-11-20 2021-04-27 Pure Storage, Inc. Persistent file locks in a storage system
US10929226B1 (en) 2017-11-21 2021-02-23 Pure Storage, Inc. Providing for increased flexibility for large scale parity
US10976948B1 (en) 2018-01-31 2021-04-13 Pure Storage, Inc. Cluster expansion mechanism
US10467527B1 (en) 2018-01-31 2019-11-05 Pure Storage, Inc. Method and apparatus for artificial intelligence acceleration
US11036596B1 (en) 2018-02-18 2021-06-15 Pure Storage, Inc. System for delaying acknowledgements on open NAND locations until durability has been confirmed
US11416144B2 (en) 2019-12-12 2022-08-16 Pure Storage, Inc. Dynamic use of segment or zone power loss protection in a flash device
US11847331B2 (en) 2019-12-12 2023-12-19 Pure Storage, Inc. Budgeting open blocks of a storage unit based on power loss prevention
US12393340B2 (en) 2019-01-16 2025-08-19 Pure Storage, Inc. Latency reduction of flash-based devices using programming interrupts
US12079494B2 (en) 2018-04-27 2024-09-03 Pure Storage, Inc. Optimizing storage system upgrades to preserve resources
US11385792B2 (en) 2018-04-27 2022-07-12 Pure Storage, Inc. High availability controller pair transitioning
US11436023B2 (en) 2018-05-31 2022-09-06 Pure Storage, Inc. Mechanism for updating host file system and flash translation layer based on underlying NAND technology
US11500570B2 (en) 2018-09-06 2022-11-15 Pure Storage, Inc. Efficient relocation of data utilizing different programming modes
US11868309B2 (en) 2018-09-06 2024-01-09 Pure Storage, Inc. Queue management for data relocation
US10976947B2 (en) 2018-10-26 2021-04-13 Pure Storage, Inc. Dynamically selecting segment heights in a heterogeneous RAID group
US11194473B1 (en) 2019-01-23 2021-12-07 Pure Storage, Inc. Programming frequently read data to low latency portions of a solid-state storage array
US12547317B2 (en) 2019-03-29 2026-02-10 Pure Storage, Inc. Managing voltage threshold shifts
US12373340B2 (en) 2019-04-03 2025-07-29 Pure Storage, Inc. Intelligent subsegment formation in a heterogeneous storage system
US11099986B2 (en) 2019-04-12 2021-08-24 Pure Storage, Inc. Efficient transfer of memory contents
US11487665B2 (en) 2019-06-05 2022-11-01 Pure Storage, Inc. Tiered caching of data in a storage system
US11714572B2 (en) 2019-06-19 2023-08-01 Pure Storage, Inc. Optimized data resiliency in a modular storage system
US11281394B2 (en) 2019-06-24 2022-03-22 Pure Storage, Inc. Replication across partitioning schemes in a distributed storage system
US11893126B2 (en) 2019-10-14 2024-02-06 Pure Storage, Inc. Data deletion for a multi-tenant environment
US12475041B2 (en) 2019-10-15 2025-11-18 Pure Storage, Inc. Efficient data storage by grouping similar data within a zone
US11157179B2 (en) 2019-12-03 2021-10-26 Pure Storage, Inc. Dynamic allocation of blocks of a storage device based on power loss protection
US11704192B2 (en) 2019-12-12 2023-07-18 Pure Storage, Inc. Budgeting open blocks based on power loss protection
JP7529947B2 (ja) * 2020-02-20 2024-08-07 エスケイ ハイニックス ナンド プロダクト ソリューションズ コーポレーション 単方向コマンドによるオン-ssdの消失訂正符号化
US11188432B2 (en) 2020-02-28 2021-11-30 Pure Storage, Inc. Data resiliency by partially deallocating data blocks of a storage device
US11507297B2 (en) 2020-04-15 2022-11-22 Pure Storage, Inc. Efficient management of optimal read levels for flash storage systems
US11474986B2 (en) 2020-04-24 2022-10-18 Pure Storage, Inc. Utilizing machine learning to streamline telemetry processing of storage media
US12056365B2 (en) 2020-04-24 2024-08-06 Pure Storage, Inc. Resiliency for a storage system
US11768763B2 (en) 2020-07-08 2023-09-26 Pure Storage, Inc. Flash secure erase
US11487455B2 (en) 2020-12-17 2022-11-01 Pure Storage, Inc. Dynamic block allocation to optimize storage system performance
US12067282B2 (en) 2020-12-31 2024-08-20 Pure Storage, Inc. Write path selection
US11614880B2 (en) 2020-12-31 2023-03-28 Pure Storage, Inc. Storage system with selectable write paths
US12229437B2 (en) 2020-12-31 2025-02-18 Pure Storage, Inc. Dynamic buffer for storage system
US12093545B2 (en) 2020-12-31 2024-09-17 Pure Storage, Inc. Storage system with selectable write modes
US11847324B2 (en) 2020-12-31 2023-12-19 Pure Storage, Inc. Optimizing resiliency groups for data regions of a storage system
US12061814B2 (en) 2021-01-25 2024-08-13 Pure Storage, Inc. Using data similarity to select segments for garbage collection
US11630593B2 (en) 2021-03-12 2023-04-18 Pure Storage, Inc. Inline flash memory qualification in a storage system
US11507597B2 (en) 2021-03-31 2022-11-22 Pure Storage, Inc. Data replication to meet a recovery point objective
CN114265616B (zh) * 2022-03-02 2022-08-05 荣耀终端有限公司 操作系统的升级方法、电子设备及存储介质
US12439544B2 (en) 2022-04-20 2025-10-07 Pure Storage, Inc. Retractable pivoting trap door
US12314163B2 (en) 2022-04-21 2025-05-27 Pure Storage, Inc. Die-aware scheduler
US12481442B2 (en) 2023-02-28 2025-11-25 Pure Storage, Inc. Data storage system with managed flash
US12204788B1 (en) 2023-07-21 2025-01-21 Pure Storage, Inc. Dynamic plane selection in data storage system
US12572421B2 (en) 2024-03-13 2026-03-10 Pure Storage, Inc. Wear-efficient error correction in a storage system
US12524309B2 (en) 2024-04-30 2026-01-13 Pure Storage, Inc. Intelligently forming data stripes including multiple shards in a single failure domain
US12487920B2 (en) 2024-04-30 2025-12-02 Pure Storage, Inc. Storage system with dynamic data management functions

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2561428B1 (fr) * 1984-03-16 1986-09-12 Bull Sa Procede d'enregistrement dans une memoire a disques et systeme de memoire a disques
US4761785B1 (en) * 1986-06-12 1996-03-12 Ibm Parity spreading to enhance storage access
JPH0291749A (ja) * 1988-09-29 1990-03-30 Toshiba Corp 不揮発型半導体メモリ装置
US5249279A (en) * 1989-11-03 1993-09-28 Compaq Computer Corporation Method for controlling disk array operations by receiving logical disk requests and translating the requests to multiple physical disk specific commands
US5402428A (en) * 1989-12-25 1995-03-28 Hitachi, Ltd. Array disk subsystem
US5233618A (en) * 1990-03-02 1993-08-03 Micro Technology, Inc. Data correcting applicable to redundant arrays of independent disks
US5088081A (en) * 1990-03-28 1992-02-11 Prime Computer, Inc. Method and apparatus for improved disk access
US5263145A (en) * 1990-05-24 1993-11-16 International Business Machines Corporation Method and means for accessing DASD arrays with tuned data transfer rate and concurrency
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
US5287473A (en) * 1990-12-14 1994-02-15 International Business Machines Corporation Non-blocking serialization for removing data from a shared cache
US5301310A (en) * 1991-02-07 1994-04-05 Thinking Machines Corporation Parallel disk storage array system with independent drive operation mode
US5301297A (en) * 1991-07-03 1994-04-05 Ibm Corp. (International Business Machines Corp.) Method and means for managing RAID 5 DASD arrays having RAID DASD arrays as logical devices thereof
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
US5398253A (en) * 1992-03-11 1995-03-14 Emc Corporation Storage unit generation of redundancy information in a redundant storage array system
US5418921A (en) * 1992-05-05 1995-05-23 International Business Machines Corporation Method and means for fast writing data to LRU cached based DASD arrays under diverse fault tolerant modes
US5418925A (en) * 1992-10-23 1995-05-23 At&T Global Information Solutions Company Fast write I/O handling in a disk array using spare drive for buffering
US5416915A (en) * 1992-12-11 1995-05-16 International Business Machines Corporation Method and system for minimizing seek affinity and enhancing write sensitivity in a DASD array
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

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009223367A (ja) * 2008-03-13 2009-10-01 Fujitsu Ltd 制御方法、ディスクアレイ装置
JP2017162202A (ja) * 2016-03-09 2017-09-14 富士通株式会社 ストレージ制御装置、ストレージ制御方法、およびストレージ制御プログラム
JP2021517684A (ja) * 2018-04-12 2021-07-26 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation トラック・ロックおよびストライド・グループ・ロックを使用したキャッシュ動作の管理

Also Published As

Publication number Publication date
JP3348416B2 (ja) 2002-11-20
US5574882A (en) 1996-11-12

Similar Documents

Publication Publication Date Title
JP3348416B2 (ja) アレイにデータを格納する方法および記憶アレイ・システム
US6041423A (en) Method and apparatus for using undo/redo logging to perform asynchronous updates of parity and data pages in a redundant array data storage environment
US6738863B2 (en) Method for rebuilding meta-data in a data storage system and a data storage system
EP0503768B1 (en) Method and means for accessing arrays of DASDS
US5819109A (en) System for storing pending parity update log entries, calculating new parity, updating the parity block, and removing each entry from the log when update is complete
US7315976B2 (en) Method for using CRC as metadata to protect against drive anomaly errors in a storage array
EP1019820B1 (en) Validation system for maintaining parity integrity in a disk array
US6523087B2 (en) Utilizing parity caching and parity logging while closing the RAID5 write hole
US5774643A (en) Enhanced raid write hole protection and recovery
US7882386B1 (en) System and method for recovering a logical volume during failover or reboot of a file server in a data storage environment
US5951691A (en) Method and system for detection and reconstruction of corrupted data in a data storage subsystem
EP0802485B1 (en) Host-based RAID-5 and NV-RAM integration and method therefor
US6279138B1 (en) System for changing the parity structure of a raid array
EP0606714A1 (en) DASD array
EP0482819A2 (en) On-line reconstruction of a failed redundant array system
JPH05505265A (ja) 独立ディスクの冗長アレイに適用できるデータ訂正
US20220253385A1 (en) Persistent storage device management
US5859965A (en) Method and apparatus for maintaining data consistency in raid
US7421537B2 (en) Migrating data between storage volumes
JPH04230512A (ja) Dasdアレイのための更新記録方法及び装置
JPH06504863A (ja) コピーバックキャッシュを有する記憶装置アレイ
CN1182913A (zh) 恢复受奇偶校验保护数据的方法和装置
EP1364368A2 (en) Block-appended checksums
US7380198B2 (en) System and method for detecting write errors in a storage device
Lee Software and Performance Issues in the Implementation of a RAID Prototype

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees