JPH06202813A - 冗長ディスクドライブアレイに対する同期方法 - Google Patents

冗長ディスクドライブアレイに対する同期方法

Info

Publication number
JPH06202813A
JPH06202813A JP5159626A JP15962693A JPH06202813A JP H06202813 A JPH06202813 A JP H06202813A JP 5159626 A JP5159626 A JP 5159626A JP 15962693 A JP15962693 A JP 15962693A JP H06202813 A JPH06202813 A JP H06202813A
Authority
JP
Japan
Prior art keywords
data
node
parity
nvram
disk drive
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
JP5159626A
Other languages
English (en)
Other versions
JP2888401B2 (ja
Inventor
Noah Mendelsohn
ノア、メンデルソーン
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 JPH06202813A publication Critical patent/JPH06202813A/ja
Application granted granted Critical
Publication of JP2888401B2 publication Critical patent/JP2888401B2/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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2082Data synchronisation
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/74Masking faults in memories by using spares or by reconfiguring using duplex memories, i.e. using dual copies
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2064Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring while ensuring consistency
    • 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/1028Distributed, i.e. distributed RAID systems 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)【要約】 (修正有) 【目的】 停電が起きた場合の改良されたデータ同期方
法を持つディスクドライブの冗長構成を提供する。 【構成】 システムは相互接続された複数の同一のノー
ドを含み、各ノードはディスクドライブ、NVRAM、
及びプロセッサを含む。システムは異なるノード内のデ
ィスクドライブを横断してデータをRAID或はミラー
ド方式にて格納する。データが格納されると、パリティ
ノード内の一つのNVRAMに新たなデータ、ノードか
らの古いデータのコピー、及び同期状態を含む一つのエ
ントリが提供される。パリティノードは新たなパリティ
を決定し、データノードに送る。通知を受信すると、パ
リティノードは同期インジケータをリセットする。停電
の後に電源投入が起こると、パリティノードはそのNV
RAMをエントリが存在しないか走査し、リセットされ
てない状態を見つけると、新たなデータを宛先データノ
ードに送り、こうしてデータノードとパリティノードの
内容を同期させる。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明はアレイの冗長(redundan
t )ディスクドライブ上へのデータの格納、より詳細に
は、停電の後の冗長ディスクドライブ間のデータ同期を
確保するための方法に関する。
【0002】
【従来の技術】用語“ディスクアレイ(disk array)”
は、ここでは複数の磁気ディスクがデータの格納の性能
及び信頼性を向上させるためにパラレルにて使用される
クラスのコンピュータシステムに関して用いられる。従
来技術は安価なディスクの冗長アレイ(redundant arra
ys of inexpensive disks 、RAID)が大きなコスト
の高いディスクドライブに対する魅力的な代替となり
得、1のオーダの性能の向上を約束することを示唆す
る。1988年6月1日から3日にイリノイ州シカゴ市
において開催されたACM Sigmod Conference (ACMシ
グモッド会議)においてパターソン(Patterson )らに
よって発表の論文『安価なディスクの冗長アレイ(RA
ID)のケース(A Case for Redundant Arrays of Ine
xpensive Disks(RAID)』はデータ冗長を可能に
し、ディスクアレイシステムの信頼性を向上させるため
の複数レベルのRAIDシステムについて説明する。パ
ターソンらによって“ストライピング(striping)”の
概念が説明されるが、これはデータを複数のディスクド
ライブの間でインタリービング(interleaving)するこ
とに関する。このインタリービングはビット、バイト、
語或はブロック単位で行なわれ、次に来る一連のデータ
要素が次に来るディスクドライブに“ストライプ(stri
pe)”構成にて置かれる。ブロックストライピング(bl
ock striping)システムにおいては、各ブロックは単一
のディスク内に書き込まれるが、但し、その後のブロッ
クは、他のディスクに分散される。ストライピング技法
は性能を向上させるが、信頼性は向上させない。向上さ
れた信頼性はディスクアレイの複数のドライブ上に冗長
のエラー修正コードを格納することによって得ることが
できる。個々のディスクが故障したような場合、これら
のコードが失われたデータを再構成するために使用さ
れ、このデータは次に交換されたディスクにこれが用意
された段階で書き込まれる。パターソンらによって説明
されるRAIDシステム構成はデータ回復を可能にする
冗長の複数の例を説明する。一つのこのようなRAID
システムは“ミラーリング(mirroring )”を採用し、
もう一つのシステムは“パリティ(parity)”を採用す
る。ミラーリングシステム(Mirroring system)はデー
タの各ブロックを少なくとも二つの別個のディスクドラ
イブ上に書き込むことによって信頼性を向上させる。一
つのドライブが故障した場合でも、同一データを含む少
なくとも一つの他のドライブが存在し、システムは残り
のドライブにて実行を継続でき、或は複製データを交換
ドライブにコピーすることによって再構成することがで
きる。
【0003】パリティディクス(parity disk )システ
ムは複数のディスクを“パリティグループ(parity gro
up)”にグループ化することによって冗長を提供する。
ディスクドライブの一つを除く全ては通常のディスクブ
ロックを含み、一方、一つの残りのディスクドライブ上
のブロックはその他のドライブ上の対応するブロック内
のデータのビットワイズ(bitwise )の排他的OR総和
(モジュロ2)を含むように書き込まれる。そして、任
意の一つのドライブが故障した場合、そのデータは残り
のドライブ上のデータの排他的OR動作によって再構成
される。更新は新たなデータをデータディスクドライブ
上の適当な位置内に書き込み、排他的OR機能を使用し
て古いデータと新しいデータの差をパリティディスクド
ライブ上の対応するブロックに加えることによって達成
される。
【0004】このようなミラー及びパリティシステムに
おいては、停電(あるいは電源故障)及びその後のパワ
ーアップ(電源投入)が起こったとき、同期の問題が発
生する。データは同一データが冗長ディスク上に存在す
る場合に冗長ディスクを横断して“同期されている(sy
nchronized)”といわれる。データは、同一であるべき
データが同一でない場合“同期されてない(unsynchron
ized)”といわれる。パワーアップにおける問題は、冗
長ディスクを横断してどのデータが同期されており、ど
のデータが同期されてないかを決定することである。
【0005】ミラーリング及びパリティシステムを採用
するエラー修正技法は、従って、データ及びエラー修正
コードが矛盾なく一貫して書き込まれているときにのみ
正しく機能する。特に、システムの停電の後に、データ
及びデータを保護するエラー修正コードに不一致があっ
てはならない。最低でも、システムが効率的に不一致を
発見し、修正できる能力が要求される。
【0006】全てのデータが中央の共有コントローラに
よって書き込まれ、かつ、このコントローラがパワーが
失われる警告を十分に早く得る場合は、同期は停電の前
にこのコントローラによって確保できる。但し、このタ
イプの共有コントローラは単一ポイントの故障を起こす
傾向を持ち、これによって、システムの全体としての信
頼性が制約される。これらはまた大きなグループの作動
ディスク間に置かれる共有待機交換ドライブの柔軟性に
制約を与える。
【0007】これら問題は、複数のディスクが、典型的
には、通信ネットワークによって接続された個別の処理
ノード上に駐在する個別のコントローラによって非同期
的に書き込まれるようなアーキテクチュアにおいては一
層複雑になる。このようなディスクがトランザクション
処理システムのために使用されるような場合、従来技術
においては、システムの停電に続いて様々なディスクの
再同期ができるように高レベルのソフトウエアトランザ
クションログが使用できるようになっている。
【0008】高速ランダムアクセスメモリ(High speed
random access memories 、RAMs)がディスクシス
テムの性能を向上させるために使用されている。これら
バッファ或はキャッシュは、通常、ディスクドライブを
制御する中央プロセッサの主メモリから割り当てられる
か、或はディクスコントローラ回路内に含まれこれに属
する。いずれのケースにおいても、これらバッファはデ
ィスクから頻繁にアクセスされるデータを繰り返して再
読み出しする必要性を排除する。データは最初にアクセ
スされたときこの高速バッファ内に置かれ、ここに可能
な限り長く保持される。データが代替されると、高速バ
ッファが変更され、システムが全体として停電したとき
データが失われる可能性を回避するために変更されたデ
ータが直ちにディスク内に書き込まれる。これらのタイ
プのデータキャッシュは“ライトスルー(write throug
h )”キャッシュとして知られている。
【0009】それらの内容がシステムが停電した場合で
も保持されるようなランダムアクセスメモリが現在存在
する。ある半導体メモリはバッテリバックアップ或は他
の信頼できる電源を使用することにより不揮発性メモリ
として使用することができる。別の半導体メモリはパワ
ーが除去された時でも本質的に安定であり、停電が起き
てもバッテリによるバックアップなしに格納されたデー
タを保持する。用語“不揮発性(non-volatile)RA
M”(NVRAM)は、ここでは全てのこのようなメモ
リデバイスを指すために使用される。例えば、IBM3
990ディスクコントローラはデータをディスクに書き
込む前に長期間キャッシュ(高速格納)するためにNV
RAMを使用する。システムが停電した後再開された場
合、NVRAMキャッシュ内の情報はディスク自体の上
の対応するデータよりも一層新しいものであると見なさ
れる。
【0010】従来技術の特許にはパリティ保護ディスク
アレイ及び他の冗長ディスク構成に関する複数の開示が
含まれる。クラーケ(Clarke)らに付与された合衆国特
許第4,761,785号はパリティ保護ディスクアレ
イの概念及び関連する最適化について開示する。クラー
ケらはまたディスク上のデータ“見出し(headers )”
内に格納されたバージョン情報がデータと関連するパリ
ティブロックとの間のバージョンの不一致の検出をサポ
ートする技法について説明する。但し、停電及びそれに
続くパワーアップがあった場合のこれらの不一致の修正
については考慮されてない。スティフラ(Stiffler)ら
に交付された合衆国特許第4,654,819号におい
ては、フォールトトレラント(fault tolerant)コンピ
ュータシステムの実現のために冗長RAMが使用され
る。主メモリに対する更新データが緩衝され、変更デー
タが専用のキャッシュユニット内にプログラム内容がス
イッチされるまで或はキャッシュが一杯になるまで格納
される。いずれかが発生した時点で、二つのフェーズか
ら成る更新プロトコルを使用して、最初に第一の主メモ
リが、そして次に第二の主メモリが更新されるが、こう
して、いずれかのメモリが故障した場合に動作を再開或
は破棄するための十分な情報が常に残される。
【0011】グッドランダ(Goodlander)らに付与され
た合衆国特許第4,942,579号は複数のディスク
ドライブを横断してのストライピング(striping)の様
々なRAID構成及び一つのこのようなドライブが故障
した場合のデータ再構成のための技法について開示す
る。グッドランダらによって説明されるアーキテクチュ
アはキャッシング及び高速書き込みのために単一のバッ
テリにてバックアップされた“キャッシュメモリ(cach
e memory)”を使用する。但し、“キャッシュ”メモリ
が故障したときこれをバックアップするための準備は示
されない。
【0012】ベーガ(Berger)らに交付された合衆国特
許第5,051,887号においては、ミラーリング
(mirroring )機能を含むメインフレームディスクコン
トローラが開示される。NVRAMがここでは高速書き
込み及び同期機構として使用される。ベーガらのシステ
ムは高速書き込みバッファとしての単一NVRAMを第
二の揮発性キャッシュと共に使用する。このシステムは
高速書き込みが完了したことを通知する前にデータがN
VRAM及びキャッシュ或はNVRAM及び一つのディ
スク内に存在することを保証する。これはパワーが失わ
れた場合にキャッシュ或はNVRAMが損失することに
対して保護し、一方で、システムが動作して回復を提供
できるようにする。但し、ベーガらのシステムは停電の
際にNVRAM或はドライブが失われた場合に、回復が
いかにして可能であるかについては説明しない。さら
に、ベーガらは様々なRAID装置が停電した場合にデ
ータの同期をいかに提供するかについては説明しない。
【0013】ミヤザキ(Miyazaki)らに交付された合衆
国特許第4,603,406号は各々が個別のバッテリ
バックアップを持ち、通常、同一のデータを格納する二
つのメモリの再同期について開示する。停電の際の任意
の時点でバッテリバックアップが失われた場合は、対応
するメモリの内容は信頼できるものではない。このた
め、システムが後にメモリを再獲得した場合、どちらの
メモリがそれらの内容を失ったかを知らせるための手段
が提供される。
【0014】ハムストラ(Hamstra )らに交付された合
衆国特許第4,530,054号においては中央キャッ
シュを持つディスクコントローラが開示される。ここで
は、更新はストアイン(store-in)方法にて達成される
(つまり、更新データは永久補助記憶装置に書き込まれ
る前にある期間キャッシュ内に保持される)。ハムスト
ラらのシステムは、停電があった場合、キャッシュ内の
およそどれ位のデータが危険状態にあるかをホストプロ
セッサに示す。
【0015】冗長データメモリの性能に関する他の教示
が以下の資料:つまり、V.J.Kruskal (クルスカ
ル)の防衛刊行物(Defensive publication )T93
2,005;Kinoshita (キノシタ)らに付与された合
衆国特許第4,493,083号、Imezaki(イメザ
キ)らに付与された第4,393,500号、Nishigak
i (ニシガキ)らに付与された第5,043,871
号、George(ジョージ)らに付与された第4,419,
725号、Finley(フィンレイ)らに付与された第4,
697,266号、Milligan(ミリガン)らに付与され
た第4,410,942号;Hotle (ホテル)らに付与
されたPCT国際特許WO90/06550;及び日本
国特許第62−194557号において見られる。
【0016】
【発明が解決しようとする課題】従って、本発明の一つ
の目的は、停電した場合の改良されたデータ同期の方法
を持つディスクドライブの冗長構成を提供することにあ
る。
【0017】本発明のもう一つの目的は停電の際のドラ
イブ或はキャッシュメモリの損失が検出されそれから回
復できるディスクドライブの冗長アレイに対するデータ
同期のための改良された方法を提供することにある。
【0018】
【課題を解決するための手段及び作用】マルチプロセッ
サシステムは交換ネットワークを通じて相互接続された
複数の実質的に同一のノードを含み、各ノードはディス
クドライブ、NVRAM、及びプロセッサを含む。この
システムは異なるノード内の複数のディスクドライブを
横断してデータをパリティ保護RAID(parity prote
cted RAID )或はミラード(mirrored)方式にて格納す
る。RAID構成内にデータが格納されると、パリティ
ノード内の一つのNVRAMに新たなデータ、新たなパ
リティのコピー、及び同期状態インジケータを含む一つ
のエントリが提供される。パリティノードは新たなパリ
ティを決定し、新たなデータをデータノードに格納され
るように送る。受取り通知を受信すると、パリティノー
ドは同期インジケータをリセットする。停電の後にパワ
ーアップが起こると、パリティノードはそのNVRAM
をエントリが存在しないか走査し、リセットされてない
状態のエントリを見つけると、新たなデータをそのエン
トリに対する宛先データノードに送る。ミラード(mirr
oed )システムにおいては、たった一つのノード内のN
VRAMのみがそのNVRAM内に入れられた、停電し
その後パワーアップされたとき、そのエントリによって
システムがどのディクスドライブが非同期状態であるか
を知ることができるようするためのデータ識別子を持
つ。
【0019】
【実施例】図1に示されるように、マルチプロセッサシ
ステム10は複数のノード12を含み、これらの各々は
実質的に同一であり、これらノードの全ては交換ネット
ワーク14を介して相互接続される。各ノード12はデ
ィスクドライブ16、プロセッサ18、RAM20及び
NVRAM22を含む。プロセッサ18は、周知の方法
によって、ディスクドライブ16、RAM20、及びN
VRAM22の動作を制御する。システム10の動作は
一つ或は複数のプロセッサ18によって制御される。プ
ロセッサは中央制御ノード(例えば、ノード24)の所
に位置することも、或はノード構造を通じて分散させる
こともできる。
【0020】各ノード12は交換ネットワーク14を介
して制御ノードにアクセスが可能でなければならない。
こうして、ディスクブロックの読み出し或は書き込みを
試みる全ての制御ノードはそのブロックを格納するパリ
ティグループ内の全てのノードと直接コンタクトを持た
なければならない。別の方法としては、ディスクブロッ
クの読み出し或は書き込みを試みる制御ノードはそのパ
リティグループ内のディスクノードの一つとコンタクト
を持つようにされ、このパリティグループ内のノードが
完全に相互接続される。
【0021】以下において明らかになるように、本発明
は特定のノードが故障した場合、或は電源を投入した
後、不意の停電の場合のノード間でのデータ同期の確保
を目的とする。ディスク、その制御プロセッサ、或はそ
の関連するNVRAMの故障はノード全体の故障である
と見なされ、この考えに従って回復が行なわれる。さら
に一時的な停電(transient power failure )は全ての
システム動作のほぼ同期的な停止を起こすものと想定さ
れる。殆どのノードはこのような停電から生き延び、パ
ワーが回復されたとき、再起動されるものと想定され
る。また、ディスクドライブ、プロセッサ、及びNVR
AMSは、それら自体の動作のエラーを確実に報告し、
或はフェイルストップ(fail-stop )特性を示すものと
想定され、さらにディスク及びNVRAMは典型的には
パワーが失われている期間を通じて格納されたデータを
保持し、或はパワーが回復したときエラー或はフェイル
ストップを報告するものと想定される。
【0022】図2には、(ミラーディクスドライブシス
テムの場合の)システム10の動作が説明される。制御
ノード(例えば、図1のノード24)上の制御ソフトウ
エアはデータブロックを格納することとなる二つのノー
ド12の一つにブロックを送ることによって論理ブロッ
クの書き込み(logical block write )を開始する。こ
のケースにおいては、ノードAが書き込み要求を受信す
るものと想定する(図2のボックス30を参照)。各ノ
ードは更新されているブロックの識別子(但し、必ずし
も内容ではない)のリストをそのNVRAM22内に保
持する。こうして、ノードAが書き込み要求を受信する
と、これはブロック識別子をそのNVRAMリストに加
える(ブロック32)。ノードAは次にデータブロック
のコピーをミラーノード(mirror node )に送り、同時
に、更新データのそのディスクドライブへの書き込みを
開始する(ボックス34及び36)。ノードBは、更新
データを受信すると、データをディスクに書き込み(ボ
ックス38)、次に受取りの確認をノードAに送る(ボ
ックス40)。ノードAはまたディスクへのその書き込
みをパラレルにて終了し(ボックス42)、次に、ノー
ドBから書き込みが成功した知らせが受信されたか決定
する(ボックス44)。受信されない場合は、確認のテ
ストを継続し、或は、別の方法として、データ伝送を再
度試みる。
【0023】確認を受信すると、ノードAはそのディス
クドライブとノードBの所のディスクドライブの両方が
更新されたデータを含むことを知る。このような状況下
においては、ノードAはそのNVRAM22からブロッ
クIDエントリを除去し(ボックス46)、次に書き込
み要求の開始者に書き込み動作が完結したことを通知す
る(ボックス48)。任意の継続中の書き込みに対して
これら2つのノードの一つのみがブロック識別子を格納
することを要求されることに注意する。全てのドライブ
がディスクの変更をコミット(commit)するまで、各更
新データがNVRAMの少なくとも一つ内にログされる
限り、これらの識別子の幾つかが片方のノード内に、そ
して別の幾つかの識別子がもう一方のノード内にログさ
れる。
【0024】図2の手続きは全ての同期外れデータブロ
ックが少なくとも一つのNVRAM22内にリストされ
ることを保証する。停電に続いて(図3に示されるよう
に)、パワーが回復され(ボックス50)、全てのNV
RAMがチェックされ、(ボックス52において)発見
されたリストされたブロックの全てが全てリストされた
更新の完成によって再同期される(ボックス54)。N
VRAM22内にリストされない全てのブロックは同期
されていることが知られており、チェックする必要はな
い。
【0025】上記説明は2ウェイミラーリング(two wa
y mirroring )を示すが、N−ウエイミラーリング(つ
まり、各ブロックが二つ以上のノ−ド内に格納される)
も可能である。但し、この場合は、ブロック識別子がN
−1個のNVRAM22内に格納されなければならな
い。このような状況下においては、一つ或は複数のミラ
ーリングノード(mirroring node)或はその関連するN
VRAMが停電の最中に失われる幾らかのわずかな可能
性がある。N−1個より少ない損失が発生した場合に
は、全ての疑問の持たれるブロックが少なくとも一つの
生き残ったNVRAM22内に記録されることが保証さ
れ、回復は通常の方法にて行なうことができる。N−1
個のディスクドライブ或はNVRAMが同時に損失した
場合は、データの一つのコピーのみが生き残り、解決さ
れるべき同期問題は存在しない。
【0026】NVRAM22のサイズは任意の時間にお
いてアレイ内に進行中である更新の数を決定する。NV
RAMが一つのエントリのみを持つことができる場合
は、一つの更新のみが継続中であり、そのブロックの全
てのコピーは任意の他の書き込みが開始される前に安全
にコミット(収容)されなければならない。典型的に
は、NVRAMは複数のブロック識別子のための部屋を
持ち、識別子の数は同時に処理することができる書き込
みの数を示す。
【0027】図2及び3に示されるシステム動作はブロ
ック識別子をNVRAM内のブロックキャッシュと結合
することによって最適化できる。各ノードは、従って、
更新されたデータをブロック識別子と共にNVRAM内
に書き込むオプションを持つ。任意の数の或は全てのノ
ードがデータをNVRAM内に格納し、少なくともN−
1個はブロック識別子を格納しなければならない。書き
込みは更新ブロックがNVRAM内に或は各ノード上の
ディスクに格納されるやいなや制御ノードに完了したも
のとして報告される。読み出しはNVRAMから、或は
ディスクからデータをそれが入手できるときに得ること
によって達成される。
【0028】図4及び5には、本発明の動作がRAID
構造に配列されたパリティ保護ディスクアレイ(parity
protected disk arrays)と共に図解される。上に説明
したように、このシステムはN個のディスクを含み、N
−1個のディスクドライブがデータを格納するために使
用され、そして1つのディスクドライブが他のN−1個
のディスクドライブ上のデータの排他的OR和であるパ
リティコードを格納するために使用される。読み出し動
作の際に、データがN−1個のデータノードの幾らか或
は全てから直接に読み出される。
【0029】データ更新は、結果として、N−1個のデ
ータディスクドライブの適当な一つ上のデータブロック
を変更させ、またパリティディスクドライブ上のパリテ
ィブロックを更新する。このような事態が発生した場
合、パリティディスク上の新たなパリティ値(NP)は
パリティデータの古い値(old value 、OP)に新たな
データ(new data、ND)と古いデータ(old data、O
D)との間の差を加えた値にセットされなければならな
いが、全てはビット単位(bitwise )にて、モジュロ2
(排他的OR)にて計算される。
【0030】図4に示されるように、書き込まれるべき
データ(ND)は最初に制御プロセッサによってパリテ
ィノードに送られる(ボックス60)。パリティノード
は、すると、データノードと対応するブロック内のデー
タの古い値(OD)を要求するためにコンタクトする
(ボックス62)。同時に、パリティノード(ボックス
64)はそのNVRAM22或はそのディスクドライブ
のどちらかOPが発見されるほうからパリティブロック
の古い値(OP)にアクセスする。パリティノードは次
にそのパリティブロックに対する新しい値(NP)を式
NP=(OP+ND−OD)に従ってビットワイズに計
算し、モジュロ2を総和する(ボックス66)。
【0031】パリティノードは次にそのNVRAMを
“タプル(組 tuple )”にて更新するが、全てのタプ
ルは生成の時間順に並べられる。このケースにおいて
は、タプルは以下のデータ、つまり、BLOCK ID、ND、
NP、及びUNSYNCHED 及びNP NOTWRITTENと呼ばれる2
つのブーリアン(真/偽)フラグを含む。このタプル
は、データブロック識別子、データの新しい値(N
D)、パリティの新しい値(NP)、データノードとパ
リティノードの所において参照されたブロックが同期し
てないことを示すインジケータ、及びNP値がパリティ
ノードの所においてディスクドライブにまだ書き込まれ
てないことを示すインジケータを説明する。
【0032】パリティノードはNVRAM内にそのタプ
ルを保持するために以下の規則に従う。 1.BLOCK IDはタプルが生成された時点においてセット
され、タプルがNVRAMから削除されるまでそのまま
にされなければならない。 2.UNSYNCEDフラグはタプルが生成された時点において
セットされ、データノードからの応答が新たなデータ
(ND)がデータノードのディスクドライブ或はNVR
AMにコミットされたことを示すまでセットされた状態
に保たれなければならない。 3.NEW PARITY(NP)値はパリティノードの所のディス
クに対応するタプルをタプルリストに挿入した後の任意
の時点でディスクに書き込まれるか、或は新たなパリテ
ィ(NP)のディスクへの書き込みは、タプルがリスト
内にそのNP値がセットされてとどまるという前提にお
いて期限を定めず遅延することもできる。NP NOT WRITT
ENフラグはNP値がディスクに書き込まれるまでセット
された状態にとどまるべきであり、このフラグはディク
ス書き込みが完了すると直ちにリセットされる。 4.NP WRITTENフラグがいったんリセットされると、タ
プル内のNPデ−タによって占拠された空間が再利用さ
れる。 5.ND値はパリティ位置側のNVRAM内にUNSYNCHE
D フラグがリセットされるまで、或はタプルがNVRA
Mから除去されるまで維持されなければならない。UNSY
NCHED マーカがいったんリセットされると、NDのため
に使用されたスペースが再利用される。 6.タプル自体はいったん以下の条件が満たされると、
つまり、UNSYNCHED マーカがリセットされ、NP NOT WRI
TTENがリセットされると完全に除去される。
【0033】上からわかるように、UNSYNCHED インジケ
ータ及びNDはパリティノードの所に新たなデータがデ
ータノードの所に安全にコミットされるまで保持されな
ければならない。これとの関連で、ボックス70内に示
されるように、パリティノードはNDをデータノードに
書き込みコマンドにて送り、データノードはNDを格納
する(ボックス71)。次に、パリティノードはNPを
そのディスクドライブに書き込み、書き込みが成功する
と、NP NOT WRITTENをゼロにリセットする(ボックス7
2)。
【0034】パリティノードがデータノードからそれが
NDをそのディスクドライブ或はNVRAMに書き込み
を終えたという応答を受信すると(図5のボックス7
4)、パリティノードはそのUNSYNCHED フラグをリセッ
トすることができる(ボックス74及び78)。データ
ノードの所での書き込みが成功したという応答が受信さ
れない場合は、パリティノードはNDの伝送を再度試み
る(ボックス76)。タプル内のUNSYNCHED エントリが
偽にいったんリセットされると、ボックス80に示され
るようにタプル全体をリセットすることができる。
【0035】オプションとして、NP及びブロックID
を将来の読み出し及び更新のためのキャッシュとして機
能するようにパリティノードのNVRAM内に無期限に
保持することもできるが、この場合、その後の読み出し
はディスクにアクセスすることを必要とすることなくN
VRAMから満たすことができる。データはこの目的の
ためにNVRAM内に十分な空間が得られる限り保持さ
れる。同様に、NDもデータノードの所のNVRAM内
にスペースが空いている限り保持することができる。
【0036】実際に使用する場合は、多くのパリティに
基づくディスクアレイはパリティと通常のデータを全て
のディスクドライブ(RAID−5)上に混合する。こ
のようなシステムにおいては、ある与えられたドライブ
はデータをあるブロックに対して格納し、パリティを他
のブロックに対して格納する。本発明によって提供され
るNVRAMシステムはブロックバイブロックベース
(block by block basis)にて更新を行なうが、各ノー
ドは更新されるべき特定のブロックに従ってデータノー
ドの機能を果たしたり、或はパリティノードの機能を果
たしたりする。各ノードの所のNVRAMはパリティブ
ロックに対する同期ログ(つまり、タプルリストの維
持)、及び通常のデータブロックに対する通常のライト
ビハインドキャッシュ(write-behind cache)の二重の
機能を果たす。
【0037】図6の説明に移り、ここには、停電の後の
手順が記述される。電源投入(ボックス81)に続い
て、各ノードのNVRAMがその中にタプルが存在しな
いか決定するために走査される(ボックス82)。ある
ノード内にタプルが発見されない場合は、次のノードが
アクセスされ、そのNVRAMが走査される(ボックス
84)。幾つかの実施例では複数のパリティノードの所
のNVRAMが並行に走査される。
【0038】あるNVRAM内にタプルが発見される
と、対応するNVRAMが特定のデータブロックに対す
る最も最近の更新されたタプルを見つけるために走査さ
れる(ボックス86)。このタプルが次にUNSYNCHED ビ
ットがセットされているか決定するために調べられ(ボ
ックス88)、セットされてない場合は、次のブロック
のIDタプルがアクセスされ、手順はボックス86へと
再循環する(ボックス90)。UNSYNCHED ビットがセッ
トされている場合は、データノードがそのNVRAM或
はディスクを更新することができるように、新たなデー
タ(ND)を含むメッセージがそのブロックを含むデー
タノードに送られる(ボックス92)。伝送に対する受
取り通知が受信されない場合は(ボックス94)、受取
り通知が受信されるまで再伝送が試みられる(ボックス
96)。確認が受信された時点で、対応する非同期のビ
ットがオフにされ(ボックス98)、全てのブロックが
現在処理を終え、同期されているか決定される(ボック
ス100)。同期されてない場合は、手順はボックス9
0へと再循環し、判定ボックス100が肯定の指示を発
するまでこれが反復される。肯定の指示が発行された時
点で、パリティノードは通常の動作を開始し、上に説明
の規則に従ってそのタプルリストを維持する。より詳細
には、パリティノードはここでその自身のディスクにそ
のNVRAMからのまだコミットされてない新たなパリ
ティ値の最終バージョンを書き込み、そのリストから対
応するタプルを除去し、或はこれらタプルの幾らか或は
全てをキャッシュとして限定のない期間だけ保持する。
【0039】一般に、システムはパワーが回復された時
点で全ての未決の更新(つまり、パワー損失の前にそれ
に対する受取り確認が制御ノードに送られてない更新)
が完了することを保証する必要はなく、一貫性が維持さ
れることのみを要求される。生き残ったNVRAM内に
ログされた更新がパワーの回復の後に完了されることが
保証される。但し、パリティノード、そのNVRAM、
或はそのディスクドライブが停電に対して生き残ること
を失敗するような幾らかの可能性がある。このようなノ
ードへの更新データの配置(disposition )は対応する
データノードの進行にのみ依存する。データノードがそ
の更新データを既にキャッシュ或はコミットしている場
合は、更新は完了したものと見なされる。そうでない場
合は、その更新データは失われる。いずれの場合も、不
一致の問題は発生しない。パリティノードが失われるた
めに、データノードは、定義上、それ自体の一貫性を持
つ。新たな或は代用のパリティディスクがそのブロック
の各々をそれが保護する全てのデータブロックの排他的
OR総和であると初期化することによって構成される。
失われたデータディスクは従来の“RAID”方法によ
って、つまり、生き残ったN−2個のデータブロックの
値を生き残ったパリティブロックと、ディスク或はNV
RAMのいずれか適当な方からの値を使用して互いに排
他的OR処理することによって再構成される。
【0040】上記手続きの特徴は、停電の際にディスク
ドライブが崩壊或は損失した場合、パリティノード内の
崩壊したディスクドライブからの失われたデータを再構
成するために必要とされる十分なデータが存在するとい
うことである。同様に、パリティノードが失敗した場合
でも、パリティを生き残ったディスクドライブから再構
成することができる。
【0041】上記説明は単に本発明を解説することが目
的であることに注意すべきである。当業者においては、
本発明から逸脱することなく様々な代替及び修正が可能
である。従って、本発明は特許請求の範囲に入るこれら
全ての代替、修正及びバリエーションを包含するもので
ある。
【0042】
【発明の効果】以上説明したように、第一及び第二の発
明の構成によれば、停電(あるいは電源故障)等によっ
てディスクドライブやキャッシュメモリから一部のデー
タが失われた場合であっても、生き残ったディスクドラ
イブから失われたデータを再構成し、故障から回復する
ことが可能となる。
【図面の簡単な説明】
【図1】本発明を組み込むシステムの高レベルブロック
図である。
【図2】ミラー冗長データ分散のケースの場合に図1の
システムが従う手続きを示す流れ図である。
【図3】ミラーデータ冗長構成においてパワーアップの
後に図1のシステムが従う手続きの流れ図である。
【図4】冗長データのRAID分散が使用されたときに
図1のシステムが従う手続きを図解する。
【図5】冗長データのRAID分散が使用されたときに
図1のシステムが従う手続きを図解する。
【図6】RAID配列されたシステムがパワーアップの
後に従う手順を図解する流れ図である。

Claims (11)

    【特許請求の範囲】
  1. 【請求項1】個々がディスクドライブ手段、不揮発性ラ
    ンダムアクセスメモリ(NVRAM)及びプロセッサを
    持つ交換ネットワークを通じて相互接続された複数の実
    質的に同一のノードを含むマルチプロセッサシステムで
    あって、このマルチプロセッサシステムがノードを異に
    する複数のディスクドライブ手段にデータを格納し、こ
    のシステムが以下の方法を実行する能力を持ち、この方
    法が、 第一のノードのNVRAM内に更新されるべきデータセ
    グメントのリストを、そのデータセグメントに更新デー
    タを書き込むことを要求するコマンドに応答して作る
    (第一の)ステップ、 前記データセグメントを含む第二のノードに前記更新デ
    ータを送る(第二の)ステップ、 前記第一のノードのNVRAM内の前記データセグメン
    トのリストを、前記更新データが前記第一のノード内の
    ディスクドライブ手段に書き込まれ、前記第二のノード
    が前記更新データを記録したという信号を受信した後に
    初めて除去する(第三の)ステップ、 パワーアップの際に、各ノードにその中にリストされた
    データセグメントが含まれるか決定するためにNVRA
    Mを走査させる(第四の)ステップ、及び、 前記第一のノード内にリストされたデータセグメントに
    対して、前記第二のノード内の対応するデータセグメン
    トが前記第一のノード内のリストされたデータセグメン
    トと同期されるような動作を起こさせる(第五の)ステ
    ップを含むことを特徴とする方法。
  2. 【請求項2】前記(第五の)ステップが前記第一のノー
    ド内にリストされたデータセグメントに対応する各デー
    タセグメントに対して前記第二のノード内で前記更新デ
    ータを使用しての更新動作が達成されるようにこれを起
    動するステップを含むことを特徴とする請求項1の方
    法。
  3. 【請求項3】前記(第五)のステップが前記ディスクド
    ライブ手段を同一の更新されてないデータセグメントを
    反映するように起動するステップを含むことを特徴とす
    る請求項1の方法。
  4. 【請求項4】前記データセグメントがブロック識別子を
    持つデータブロックであり、前記ブロック識別子が前記
    NVRAM内に前記データセグメントが更新のプロセス
    の最中である場合にリストされることを特徴とする請求
    項1の方法。
  5. 【請求項5】前記応答する(第一の)ステップが、前記
    データセグメントを前記第一のノードのNVRAM内に
    リストするのに加えて、前記NVRAM内に前記更新デ
    ータをリストするステップを含むことを特徴とする請求
    項1の方法。
  6. 【請求項6】前記削除する(第三の)ステップが前記第
    二のノードが前記更新データをそのディスクドライブ手
    段に書き込んだ後に初めて起こることを特徴とする請求
    項1の方法。
  7. 【請求項7】各々がディスクドライブ手段、不揮発性ラ
    ンダムアクセスメモリ(NVRAM)及びプロセッサを
    持つ交換ネットワークを通じて相互接続された複数の実
    質的に同一のノードを含むマルチプロセッサシステムで
    あって、このマルチプロセッサシステムが、ノードを異
    にする複数のディスクドライブ手段にRAID様式にて
    データを格納し、このシステムが以下の方法を実行する
    能力を持ち、この方法が、 第一のノード内に格納されたデータセグメント内の古い
    データと置換するために新しいデータを書き込むという
    コマンドに応答して、対応するパリティノード内のNV
    RAM内に前記新しいデータと、状態指標と、前記第一
    のノードからの古いデータ、前記パリティノードからの
    古いパリティ及び前記新しいデータに基づいて計算され
    た新しいパリティのコピーとから成るエントリを格納す
    るステップ、 前記新しいデータを前記第一のノードにそのノード内に
    格納されるように伝送し、正常に格納されたことを確認
    する信号の受信に応答して、前記パリティノードが前記
    状態指標をリセットするステップ、及び、 前記パリティノードが、パワーアップの際に、そのNV
    RAMを前記エントリが存在しないか走査し、リセット
    されていない状態指標を持つ前記エントリが発見された
    場合、前記新しいデータを前記第一のノードに伝送する
    ステップを含むことを特徴とする方法。
  8. 【請求項8】前記の状態指標が非同期の状態を示し、前
    記エントリがセットされた場合新たなパリティが前記パ
    リティノードのディスクドライブ手段内のディスクにま
    だ書き込まれてないことを示すもう一つの状態指標を含
    むことを特徴とする請求項7の方法。
  9. 【請求項9】前記のデータセグメントがデータのブロッ
    クであり、前記のエントリが前記データのブロックの識
    別子を含むことを特徴とする請求項8の方法。
  10. 【請求項10】前記パリティノードが、パワーアップに
    当ってそのNVRAMを走査するとき、最初に前記第一
    のノード内の前記データのブロックに対する最も古い受
    信された新たなデータを持つエントリにアクセスし、次
    に時間の順番に次のエントリを処理するように進行する
    ことを特徴とする請求項9の方法。
  11. 【請求項11】パリティノードが、前記第一のノードに
    よって新しいデータが正常に格納されたという通知を受
    信したとき前記非同期状態インジケータをリセットする
    ことを特徴とする請求項10の方法。
JP5159626A 1992-08-03 1993-06-29 冗長ディスクドライブアレイに対する同期方法 Expired - Fee Related JP2888401B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US92421992A 1992-08-03 1992-08-03
US924219 1992-08-03

Publications (2)

Publication Number Publication Date
JPH06202813A true JPH06202813A (ja) 1994-07-22
JP2888401B2 JP2888401B2 (ja) 1999-05-10

Family

ID=25449905

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5159626A Expired - Fee Related JP2888401B2 (ja) 1992-08-03 1993-06-29 冗長ディスクドライブアレイに対する同期方法

Country Status (2)

Country Link
US (1) US5488731A (ja)
JP (1) JP2888401B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6408400B2 (en) 1997-11-04 2002-06-18 Fujitsu Limited Disk array device
US6826711B2 (en) * 2000-02-18 2004-11-30 Avamar Technologies, Inc. System and method for data protection with multidimensional parity
JP2008511064A (ja) * 2004-08-25 2008-04-10 インターナショナル・ビジネス・マシーンズ・コーポレーション データ復旧のためのパリティ情報の記憶

Families Citing this family (185)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0701715A4 (en) * 1993-06-04 1999-11-17 Network Appliance Corp METHOD FOR PROVIDING PARITY IN A RAID SUBSYSTEM USING REMANENT MEMORY
US5764903A (en) * 1994-09-26 1998-06-09 Acer America Corporation High availability network disk mirroring system
US5682471A (en) * 1994-10-06 1997-10-28 Billings; Thomas Neal System for transparently storing inputs to non-volatile storage and automatically re-entering them to reconstruct work if volatile memory is lost
WO1997001139A1 (en) * 1995-06-23 1997-01-09 Elonex Plc Disk array controller with enhanced synchronous write
US5594863A (en) * 1995-06-26 1997-01-14 Novell, Inc. Method and apparatus for network file recovery
JPH0934805A (ja) * 1995-07-20 1997-02-07 Toshiba Corp 半導体ディスク装置
US5774643A (en) * 1995-10-13 1998-06-30 Digital Equipment Corporation Enhanced raid write hole protection and recovery
US6449730B2 (en) 1995-10-24 2002-09-10 Seachange Technology, Inc. Loosely coupled mass storage computer cluster
US5862312A (en) * 1995-10-24 1999-01-19 Seachange Technology, Inc. Loosely coupled mass storage computer cluster
US6347365B1 (en) 1996-08-23 2002-02-12 Emc Corporation Data storage system having a[n] memory responsive to clock pulses produced on a bus and clock pulses produced by an internal clock
US6567903B1 (en) * 1996-08-23 2003-05-20 Emc Corporation Data storage system having master/slave addressable memories
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
US5757818A (en) * 1996-11-26 1998-05-26 Intel Corporation Method and apparatus for scan out testing of integrated circuits with reduced test circuit area
US6029231A (en) * 1996-12-03 2000-02-22 Emc Corporation Retrieval of data stored on redundant disks across a network using remote procedure calls
US5859965A (en) * 1996-12-17 1999-01-12 Sun Microsystems, Inc. Method and apparatus for maintaining data consistency in raid
US5949970A (en) * 1997-01-07 1999-09-07 Unisys Corporation Dual XPCS for disaster recovery
US5940826A (en) * 1997-01-07 1999-08-17 Unisys Corporation Dual XPCS for disaster recovery in multi-host computer complexes
US6000020A (en) * 1997-04-01 1999-12-07 Gadzoox Networks, Inc. Hierarchical storage management from a mirrored file system on a storage network segmented by a bridge
US6381674B2 (en) * 1997-09-30 2002-04-30 Lsi Logic Corporation Method and apparatus for providing centralized intelligent cache between multiple data controlling elements
US6502174B1 (en) * 1999-03-03 2002-12-31 International Business Machines Corporation Method and system for managing meta data
US6513097B1 (en) 1999-03-03 2003-01-28 International Business Machines Corporation Method and system for maintaining information about modified data in cache in a storage system for use during a system failure
US6438661B1 (en) * 1999-03-03 2002-08-20 International Business Machines Corporation Method, system, and program for managing meta data in a storage system and rebuilding lost meta data in cache
US6401215B1 (en) * 1999-06-03 2002-06-04 International Business Machines Corporation Resynchronization of mirrored logical data volumes subsequent to a failure in data processor storage systems with access to physical volume from multi-initiators at a plurality of nodes
US6539462B1 (en) 1999-07-12 2003-03-25 Hitachi Data Systems Corporation Remote data copy using a prospective suspend command
US7509420B2 (en) * 2000-02-18 2009-03-24 Emc Corporation System and method for intelligent, globally distributed network storage
US6636984B1 (en) * 2000-06-15 2003-10-21 International Business Machines Corporation System and method for recovering data from mirror drives following system crash
US20030084397A1 (en) * 2001-10-31 2003-05-01 Exanet Co. Apparatus and method for a distributed raid
US6981079B2 (en) 2002-03-21 2005-12-27 International Business Machines Corporation Critical datapath error handling in a multiprocessor architecture
US20030191978A1 (en) * 2002-04-04 2003-10-09 International Business Machines Corporation Multiple fault location in a series of devices
US6912621B2 (en) 2002-04-17 2005-06-28 International Business Machines Corporation Method and apparatus for updating data in mass storage subsystem using emulated shared memory
US6920587B2 (en) * 2002-04-25 2005-07-19 International Business Machines Corporation Handling multiple operating system capabilities in a logical partition data processing system
EP1361516A3 (en) * 2002-04-30 2011-05-18 Hitachi, Ltd. Method and system for backing up power supply of disk array device
US20050177652A1 (en) * 2002-05-14 2005-08-11 Cumpson Stephen R. Hard disk drive system, method of using such a system and apparatus
US7069465B2 (en) * 2002-07-26 2006-06-27 International Business Machines Corporation Method and apparatus for reliable failover involving incomplete raid disk writes in a clustering system
US8250202B2 (en) * 2003-01-04 2012-08-21 International Business Machines Corporation Distributed notification and action mechanism for mirroring-related events
US7085886B2 (en) * 2003-05-28 2006-08-01 International Buisness Machines Corporation Autonomic power loss recovery for a multi-cluster storage sub-system
US7305529B1 (en) * 2003-12-19 2007-12-04 Symantec Corporation Cooperative data replication
US7337357B2 (en) * 2004-11-16 2008-02-26 International Business Machines Corporation Apparatus, system, and method for limiting failures in redundant signals
US7392428B2 (en) * 2004-11-19 2008-06-24 International Business Machines Corporation Method and system for recovering from abnormal interruption of a parity update operation in a disk array system
US7392458B2 (en) * 2004-11-19 2008-06-24 International Business Machines Corporation Method and system for enhanced error identification with disk array parity checking
US7290199B2 (en) * 2004-11-19 2007-10-30 International Business Machines Corporation Method and system for improved buffer utilization for disk array parity updates
US20060123312A1 (en) * 2004-11-19 2006-06-08 International Business Machines Corporation Method and system for increasing parallelism of disk accesses when restoring data in a disk array system
US20060123271A1 (en) * 2004-11-19 2006-06-08 International Business Machines Corporation RAID environment incorporating hardware-based finite field multiplier for on-the-fly XOR
US7730257B2 (en) * 2004-12-16 2010-06-01 Broadcom Corporation Method and computer program product to increase I/O write performance in a redundant array
US7779294B2 (en) * 2005-04-15 2010-08-17 Intel Corporation Power-safe disk storage apparatus, systems, and methods
US7774542B2 (en) * 2005-07-06 2010-08-10 Ji Zhang System and method for adaptive operation of storage capacities of RAID systems
US20100131696A1 (en) * 2008-11-21 2010-05-27 Pratt Thomas L System and Method for Information Handling System Data Redundancy
JP5409159B2 (ja) * 2009-07-23 2014-02-05 キヤノン株式会社 情報処理装置、情報処理装置の制御方法及びプログラム
US8589640B2 (en) 2011-10-14 2013-11-19 Pure Storage, Inc. Method for maintaining multiple fingerprint tables in a deduplicating storage system
US8972478B1 (en) * 2012-05-23 2015-03-03 Netapp, Inc. Using append only log format in data storage cluster with distributed zones for determining parity of reliability groups
EP2915049B1 (en) * 2012-10-30 2020-03-04 Hewlett-Packard Enterprise Development LP Smart memory buffers
US11960371B2 (en) 2014-06-04 2024-04-16 Pure Storage, Inc. Message persistence in a zoned system
US9213485B1 (en) 2014-06-04 2015-12-15 Pure Storage, Inc. Storage system architecture
US9836234B2 (en) 2014-06-04 2017-12-05 Pure Storage, Inc. Storage cluster
US9367243B1 (en) 2014-06-04 2016-06-14 Pure Storage, Inc. Scalable non-uniform storage sizes
US12137140B2 (en) 2014-06-04 2024-11-05 Pure Storage, Inc. Scale out storage platform having active failover
US9218244B1 (en) 2014-06-04 2015-12-22 Pure Storage, Inc. Rebuilding data across storage nodes
US11652884B2 (en) 2014-06-04 2023-05-16 Pure Storage, Inc. Customized hash algorithms
US12341848B2 (en) 2014-06-04 2025-06-24 Pure Storage, Inc. Distributed protocol endpoint services for data storage systems
US11068363B1 (en) 2014-06-04 2021-07-20 Pure Storage, Inc. Proactively rebuilding data in a storage cluster
US9003144B1 (en) 2014-06-04 2015-04-07 Pure Storage, Inc. Mechanism for persisting messages in a storage system
US10574754B1 (en) 2014-06-04 2020-02-25 Pure Storage, Inc. Multi-chassis array with multi-level load balancing
US11604598B2 (en) 2014-07-02 2023-03-14 Pure Storage, Inc. Storage cluster with zoned drives
US9021297B1 (en) 2014-07-02 2015-04-28 Pure Storage, Inc. Redundant, fault-tolerant, distributed remote procedure call cache in a storage system
US9836245B2 (en) 2014-07-02 2017-12-05 Pure Storage, Inc. Non-volatile RAM and flash memory in a non-volatile solid-state storage
US11886308B2 (en) 2014-07-02 2024-01-30 Pure Storage, Inc. Dual class of service for unified file and object messaging
US8868825B1 (en) 2014-07-02 2014-10-21 Pure Storage, Inc. Nonrepeating identifiers in an address space of a non-volatile solid-state storage
US9747229B1 (en) 2014-07-03 2017-08-29 Pure Storage, Inc. Self-describing data format for DMA in a non-volatile solid-state storage
US9811677B2 (en) 2014-07-03 2017-11-07 Pure Storage, Inc. Secure data replication in a storage grid
US10853311B1 (en) 2014-07-03 2020-12-01 Pure Storage, Inc. Administration through files in a storage system
US12182044B2 (en) 2014-07-03 2024-12-31 Pure Storage, Inc. Data storage in a zone drive
US10983859B2 (en) 2014-08-07 2021-04-20 Pure Storage, Inc. Adjustable error correction based on memory health in a storage unit
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
US9495255B2 (en) 2014-08-07 2016-11-15 Pure Storage, Inc. Error recovery in a storage cluster
US9082512B1 (en) 2014-08-07 2015-07-14 Pure Storage, Inc. Die-level monitoring in a storage cluster
US10079711B1 (en) 2014-08-20 2018-09-18 Pure Storage, Inc. Virtual file server with preserved MAC address
WO2016051512A1 (ja) 2014-09-30 2016-04-07 株式会社日立製作所 分散型ストレージシステム
US10157129B2 (en) 2014-12-17 2018-12-18 International Business Machines Corporation Mirroring a cache having a modified cache state
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
US10108355B2 (en) 2015-09-01 2018-10-23 Pure Storage, Inc. Erase block state detection
US11341136B2 (en) 2015-09-04 2022-05-24 Pure Storage, Inc. Dynamically resizable structures for approximate membership queries
US11269884B2 (en) 2015-09-04 2022-03-08 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
US12271359B2 (en) 2015-09-30 2025-04-08 Pure Storage, Inc. Device host operations in a storage system
US10853266B2 (en) 2015-09-30 2020-12-01 Pure Storage, Inc. Hardware assisted data lookup methods
US10762069B2 (en) 2015-09-30 2020-09-01 Pure Storage, Inc. Mechanism for a system where data and metadata are located closely together
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
US9672905B1 (en) 2016-07-22 2017-06-06 Pure Storage, Inc. Optimize data protection layouts based on distributed flash wear leveling
US10768819B2 (en) 2016-07-22 2020-09-08 Pure Storage, Inc. Hardware support for non-disruptive upgrades
US11604690B2 (en) 2016-07-24 2023-03-14 Pure Storage, Inc. Online failure span determination
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
US11797212B2 (en) 2016-07-26 2023-10-24 Pure Storage, Inc. Data migration for zoned drives
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
US10613974B2 (en) 2016-10-04 2020-04-07 Pure Storage, Inc. Peer-to-peer non-volatile random-access memory
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
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
US11955187B2 (en) 2017-01-13 2024-04-09 Pure Storage, Inc. Refresh of differing capacity NAND
US9747158B1 (en) 2017-01-13 2017-08-29 Pure Storage, Inc. Intelligent refresh of 3D 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
US10516645B1 (en) 2017-04-27 2019-12-24 Pure Storage, Inc. Address resolution broadcasting in a networked device
US10141050B1 (en) 2017-04-27 2018-11-27 Pure Storage, Inc. Page writes for triple level cell flash memory
US10528501B2 (en) * 2017-05-18 2020-01-07 Linear Technology Holding Llc Coordinated event sequencing
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
US11024390B1 (en) 2017-10-31 2021-06-01 Pure Storage, Inc. Overlapping RAID groups
US12067274B2 (en) 2018-09-06 2024-08-20 Pure Storage, Inc. Writing segments and erase blocks based on ordering
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
US10992967B2 (en) * 2017-12-05 2021-04-27 Sony Interactive Entertainment LLC Ultra high-speed low-latency network storage
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
US11048590B1 (en) 2018-03-15 2021-06-29 Pure Storage, Inc. Data consistency during recovery in a cloud-based storage system
US12393340B2 (en) 2019-01-16 2025-08-19 Pure Storage, Inc. Latency reduction of flash-based devices using programming interrupts
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
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
US11334455B2 (en) * 2019-09-28 2022-05-17 Atlassian Pty Ltd. Systems and methods for repairing a data store of a mirror node
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
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
US12056365B2 (en) 2020-04-24 2024-08-06 Pure Storage, Inc. Resiliency for a storage system
US11474986B2 (en) 2020-04-24 2022-10-18 Pure Storage, Inc. Utilizing machine learning to streamline telemetry processing of storage media
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
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
US12067282B2 (en) 2020-12-31 2024-08-20 Pure Storage, Inc. Write path selection
US11847324B2 (en) 2020-12-31 2023-12-19 Pure Storage, Inc. Optimizing resiliency groups for data regions of a storage system
US12093545B2 (en) 2020-12-31 2024-09-17 Pure Storage, Inc. Storage system with selectable write modes
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
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
US12487920B2 (en) 2024-04-30 2025-12-02 Pure Storage, Inc. Storage system with dynamic data management functions
US12524309B2 (en) 2024-04-30 2026-01-13 Pure Storage, Inc. Intelligently forming data stripes including multiple shards in a single failure domain

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01118921A (ja) * 1987-11-02 1989-05-11 Hitachi Ltd 二重化デイスク制御方法
JPH048211A (ja) * 1990-04-24 1992-01-13 Kubota Corp 苗植付装置
JPH05197499A (ja) * 1992-01-21 1993-08-06 Hitachi Ltd ディスクアレイ制御装置

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
UST932005I4 (en) * 1973-12-28 1975-03-04 Detection op possibly erroneous segments following failures in primary storage
JPS605024B2 (ja) * 1979-09-04 1985-02-07 ファナック株式会社 情報処理方式
US4419725A (en) * 1980-11-14 1983-12-06 Sperry Corporation Cache/disk subsystem with tagalong copy
JPS5856192B2 (ja) * 1980-11-28 1983-12-13 ファナック株式会社 バブルメモリにおけるデ−タ書き替え方式
US4410942A (en) * 1981-03-06 1983-10-18 International Business Machines Corporation Synchronizing buffered peripheral subsystems to host operations
US4530054A (en) * 1982-03-03 1985-07-16 Sperry Corporation Processor-addressable timestamp for indicating oldest written-to cache entry not copied back to bulk memory
WO1984002409A1 (en) * 1982-12-09 1984-06-21 Sequoia Systems Inc Memory backup system
JPS59142799A (ja) * 1983-02-04 1984-08-16 Hitachi Ltd バツクアツプ用蓄電装置付二重化記憶装置
US4697266A (en) * 1983-03-14 1987-09-29 Unisys Corp. Asynchronous checkpointing system for error recovery
US5043871A (en) * 1986-03-26 1991-08-27 Hitachi, Ltd. Method and apparatus for database update/recovery
US4761785B1 (en) * 1986-06-12 1996-03-12 Ibm Parity spreading to enhance storage access
US4819159A (en) * 1986-08-29 1989-04-04 Tolerant Systems, Inc. Distributed multiprocess transaction processing system and method
US4942579A (en) * 1987-06-02 1990-07-17 Cab-Tek, Inc. High-speed, high-capacity, fault-tolerant error-correcting storage system
US5051887A (en) * 1987-08-25 1991-09-24 International Business Machines Corporation Maintaining duplex-paired storage devices during gap processing using of a dual copy function
WO1990006550A1 (en) * 1988-12-08 1990-06-14 Cray Research, Inc. Single disk emulation for asynchronous disk array
US5233618A (en) * 1990-03-02 1993-08-03 Micro Technology, Inc. Data correcting applicable to redundant arrays of independent disks
US5195100A (en) * 1990-03-02 1993-03-16 Micro Technology, Inc. Non-volatile memory storage of write operation identifier in data sotrage device
US5379417A (en) * 1991-11-25 1995-01-03 Tandem Computers Incorporated System and method for ensuring write data integrity in a redundant array data storage system
US5313626A (en) * 1991-12-17 1994-05-17 Jones Craig S Disk drive array with efficient background rebuilding
US5305326A (en) * 1992-03-06 1994-04-19 Data General Corporation High availability disk arrays

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01118921A (ja) * 1987-11-02 1989-05-11 Hitachi Ltd 二重化デイスク制御方法
JPH048211A (ja) * 1990-04-24 1992-01-13 Kubota Corp 苗植付装置
JPH05197499A (ja) * 1992-01-21 1993-08-06 Hitachi Ltd ディスクアレイ制御装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6408400B2 (en) 1997-11-04 2002-06-18 Fujitsu Limited Disk array device
US6826711B2 (en) * 2000-02-18 2004-11-30 Avamar Technologies, Inc. System and method for data protection with multidimensional parity
JP2008511064A (ja) * 2004-08-25 2008-04-10 インターナショナル・ビジネス・マシーンズ・コーポレーション データ復旧のためのパリティ情報の記憶

Also Published As

Publication number Publication date
JP2888401B2 (ja) 1999-05-10
US5488731A (en) 1996-01-30

Similar Documents

Publication Publication Date Title
JP2888401B2 (ja) 冗長ディスクドライブアレイに対する同期方法
US6970987B1 (en) Method for storing data in a geographically-diverse data-storing system providing cross-site redundancy
US5379417A (en) System and method for ensuring write data integrity in a redundant array data storage system
CN113326006B (zh) 一种基于纠删码的分布式块存储系统
US5440727A (en) Asynchronous replica management in shared nothing architectures
US6912669B2 (en) Method and apparatus for maintaining cache coherency in a storage system
US8286029B2 (en) Systems and methods for managing unavailable storage devices
US5418921A (en) Method and means for fast writing data to LRU cached based DASD arrays under diverse fault tolerant modes
CA2574502C (en) Storing parity information for data recovery
JP3283530B2 (ja) ディスク・アレイにおいてパリティ保全性を維持するための妥当性検査システム
US4914656A (en) Disk drive memory
US6480970B1 (en) Method of verifying data consistency between local and remote mirrored data storage systems
US4989205A (en) Disk drive memory
JP3129732B2 (ja) コピーバックキャッシュを有する記憶装置アレイ
US7051176B2 (en) Reading data provided to a remote storage device
US6502205B1 (en) Asynchronous remote data mirroring system
US5459857A (en) Fault tolerant disk array data storage subsystem
US7610318B2 (en) Autonomic infrastructure enablement for point in time copy consistency
JP3149325B2 (ja) 災害復旧機能を提供するために整合性グループを形成する方法および関連するシステム
US10452498B2 (en) Fault tolerance for persistent main memory
JP4815825B2 (ja) ディスクアレイ装置及びその再構築方法
EP0802485B1 (en) Host-based RAID-5 and NV-RAM integration and method therefor
JPH0731582B2 (ja) パリティ保護データを回復するための方法および装置
JPH08305500A (ja) 記憶制御装置、それを含むデータ記憶システムおよび二重ペア抑止方法
JP2003507791A (ja) 遠隔ミラーリングシステム、装置及び方法

Legal Events

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