JP2000513129A - Method of tracking incomplete writes in a disk array, and disk storage system performing such a method - Google Patents

Method of tracking incomplete writes in a disk array, and disk storage system performing such a method

Info

Publication number
JP2000513129A
JP2000513129A JP11500947A JP50094799A JP2000513129A JP 2000513129 A JP2000513129 A JP 2000513129A JP 11500947 A JP11500947 A JP 11500947A JP 50094799 A JP50094799 A JP 50094799A JP 2000513129 A JP2000513129 A JP 2000513129A
Authority
JP
Japan
Prior art keywords
list
block
write
extended
array
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
JP11500947A
Other languages
Japanese (ja)
Other versions
JP3288724B2 (en
Inventor
レッグ,クリストファー・ビィ
Original Assignee
ユニシス・コーポレイション
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ユニシス・コーポレイション filed Critical ユニシス・コーポレイション
Publication of JP2000513129A publication Critical patent/JP2000513129A/en
Application granted granted Critical
Publication of JP3288724B2 publication Critical patent/JP3288724B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1435Saving, restoring, recovering or retrying at system level using file system or storage system metadata

Abstract

(57)【要約】 ディスクアレイ内の不完全な書込を追跡する方法は、書込みされるべきアレイ内のそれぞれのブロックを識別する複数の書込コマンド(t1、t2、t3、t4、t5の書込)を順次受取るステップと、最も新しく受取られた書込コマンドのみに対して拡張書込領域(たとえば、時刻t1のリストのPB8,289)のリスト(16)を生成するステップとを含み、各拡張書込領域は書込みされるべきブロックと後の書込コマンドによって書込みされる可能性のある追加的なブロックとを含み(たとえば、PB8,289+8はPB8,290のt1での書込を含む)、リスト内のいかなる拡張書込領域内(たとえば、t4の書込)にもない特定のブロックの書込みを行なう書込コマンドが後に受取られるごとに、1つの拡張書込領域(たとえば、t3のリスト16内の最後のエントリ)を特定のブロックを含む新しい拡張書込領域(たとえば、t4のリスト内の最初のエントリ)に置換えることによってリストを変更するステップと、変更するステップが行なわれるごとに磁気媒体にリストの複製(t4の17)を記憶させるステップとを含む。 SUMMARY OF THE INVENTION A method for tracking incomplete writes in a disk array uses a plurality of write commands (t1, t2, t3, t4, t5) to identify each block in the array to be written. Write), and generating a list (16) of extended write areas (eg, PB8, 289 of the list at time t1) for only the most recently received write command; Each extended write area includes the block to be written and any additional blocks that may be written by a later write command (eg, PB8,289 + 8 includes writing PB8,290 at t1). ), Each time a write command to write a particular block that is not in any of the extended write areas in the list (eg, write at t4) is received, one extension Modifying the list by replacing the area (eg, the last entry in the list at t3) with a new extended write area containing the particular block (eg, the first entry in the list at t4); And storing a copy of the list (17 of t4) on a magnetic medium each time the step of performing is performed.

Description

【発明の詳細な説明】 名称:ディスクアレイ内の不完全な書込を追跡する方法、およびこのような方法 を行なうディスク記憶システム発明の背景: この発明は、ディスクアレイ内の不完全な書込を追跡する方法と、このような 方法を行なうディスク記憶システムとに関する。 先行技術において、「RAID」ディスクアレイという用語は安価なディスク の冗長アレイを意味するものと定義されており、いくつかの異なるRAIDディ スクアレイが定義されている。これらはレベル1RAIDディスクアレイ、レベ ル3RAIDディスクアレイおよびレベル5RAIDディスクアレイを含む。パ ターソン(Patterson.)他による「安価なディスクによる冗長アレイ(RAID )について」(“A Case for Redundant Arrays of Inexpensive Disks(RAID)” )、報告書番号第UCB/CSD 87/391号、1987年12月、カリフ ォルニア大学バークレー校コンピュータサイエンス部(Computer Science Divis ion of the University of California at Berkeley)を参照されたい。 レベル5RAIDディスクアレイでは、パリティおよびデータの両方が一組の いくつかのディスクにまたがってストライピングされる。図1は、ディスク0、 ディスク1…ディスク4とラベル付けされた5ディスクからなる組によりアレイ が形成されるレベル5RAIDディスクアレイの一例を示す。アレイの各列はデ ータとその組内の単一のディスク内に記憶されるパリティとを含む。アレイの各 行はその組の5ディスク全部にまたがってストライピングされるデータおよびパ リティを含む。 図1において、アレイの各行は1ディスク上に存在する1パリティチャンクと 他の4ディスク上に存在する4データチャンクとからなる。また、各データチャ ンクおよび各パリティチャンクはいくつかの物理ブロックに分割される。単一の ブロックはユーザプログラムによって読出または書込コマンドで別個にアドレス 指定され得るチャンクの最小の部分である。図1において、1チャンク当り8ブ ロックが存在する。各ブロックは、予め定められた数のバイト(たとえば512 バイト)と「CRC」バイトと呼ばれる1巡回冗長検査バイトとからなる。 図1のアレイにおいて、行0のブロック0は論理アドレス0の読出/書込コマ ンドによってアドレス指定される。この論理アドレスが順次1ずつ増分されるに 連れ、データブロックは、データチャンク0のブロック1−7、データチャンク 1のブロック0−7、データチャンク2のブロック0−7、データチャンク3の ブロック0−7、データチャンク4のブロック8−15、データチャンク5のブ ロック8−15…の順序でアドレス指定される。たとえば、データチャンク5の ブロック8は論理アドレス40を有する。 データブロックに書込むとき、そのブロック内のCRCバイトも発生され、書 込まれる。さらに、そのデータブロックと同じブロック番号を有するパリティブ ロックも発生され、書込まれる。このパリティブロックは奇数パリティまたは偶 数パリティを用いて書込まれる。 偶数パリティでは、パリティブロックと、同じブロック番号を有する全データ ブロックとの排他的論理和がすべて0のブロックとなる。逆に、奇数パリティで は、パリティブロックと、同じブロック番号を有する全ブロックとの排他的論理 和がすべて1のブロックとなる。 書込まれるべき新しいデータブロックのために新しいパリティブロックを発生 する方法の1つは以下のとおりである。まず、既存のデータブロックとそのパリ ティブロックとをそれらのそれぞれのディスクから読出す。次に、読出されたパ リティブロックと読出されたデータブロックとの排他的論理和をとり、それと新 しいデータブロックとの排他的論理和をとるようにして新しいパリティを計算す る。この新しいパリティブロックおよび新しいデータブロックを次にそれらのそ れぞれのディスクに書込む。 読出コマンドの実行の間、読出されるデータのブロックからCRCバイトが再 生成される。再生成されたCRCバイトが記憶されているCRCバイトと異なっ ていれば、読出されるデータのブロックは誤りを含んでいる。この誤りを訂正す るため、誤りのあるデータブロックが、a)誤りのあるデータブロックと同じブ ロック番号を有するディスク上の他のブロック(データおよびパリティ)のすべ てを読出し、b)それらのブロックの排他的論理和をとることによって再生成さ れる。 ここで、特定のブロック番号「i」を有するブロックへとデータを書込もうと 試みる特定の書込コマンドの実行が開始されたが、その実行が完了前に中断され る場合を考える。このような中断はたとえば停電のために起こり得る。 上の場合、中断は、新しいデータブロックの書込が完了した後であるが新しい パリティブロックの書込が始まる前に起こり得る。同様に、中断は、新しいパリ ティブロックの書込が完了した後であるが新しいデータブロックの書込が始まる 前にも起こり得る。いずれの場合でも、ブロック番号「i」を有する全ブロック の排他的論理和がすべて0またはすべて1のブロックとは等しくならない。同時 に、ブロック番号「i」の全ブロックのECCバイトは正しいであろう。 中断の原因が解消した後、アレイはユーザプログラムによって読出および書込 され続けるであろう。ブロック番号「i」を有するいずれかのデータブロックが 読出され、ECCバイトが誤りを検出すれば、同じブロック番号を有する残りの データブロックとパリティブロックとの排他的論理和をとることによって誤りの あるデータブロックを再生成する試みが行なわれる。しかしながら、それまでの 不完全な書込のため、その再生成プロセスはうまくいかない。 この問題は先行技術において、アレイが動作し始めると「1」にセットされ、 アレイが通常の態様で動作を停止すると「0」にリセットされるフラグをディス クアレイ内に与えることによって対処されてきた。したがって、アレイが動作し 始めるときにフラグがセットされる前にそれが「1」であることがわかれば、以 前にアレイの通常動作が中断されていたに違いないということになる。 しかしながら、上の先行技術のフラグの欠点は、フラグが誤った状態にあると わかった後に、不完全に書込まれている特定のブロックを識別するのに時間がか かりすぎることである。書込の不完全なブロックを見つけるために、アレイ全体 の全データブロックおよび全パリティブロックを読出さなければならず、したが って、パリティブロックを読出データブロックから再計算しなければならず、再 計算されたパリティブロックを読出されたパリティブロックと比較しなければな らない。大きなアレイでは、このプロセスを完了するのにまる1日かかる可能性 がある。 したがって、この発明の主な目的は、ディスクアレイ内の不完全な書込を追跡 する方法と、このような方法を行ない、アレイの通常動作が中断された後にアレ イ全体の全ブロックに対するパリティを検査する必要性をなくすディスク記憶シ ステムとを提供することである。発明の簡単な概要: この発明では、ディスクアレイ内の不完全な書込がデジタルコンピュータ内の 制御プロセスによって追跡される。この制御プログラムは、アレイ内の書込みが 行なわれるべきそれぞれのブロックを識別する複数の書込コマンドを順次受取る 。これに応答して、制御プログラムは最も新しく受取られた書込コマンドのみに 対する拡張された書込領域のリストを発生する。このような拡張書込領域の各々 は、書込まれるべきブロックと、その後の書込コマンドによって書込まれる可能 性のある追加的な関連のブロックとを含む。また、リストは、そのリスト内の拡 張書込領域にない特定のブロックを書込みを行なう書込コマンドが後に受取られ るごとに制御プログラムによって変更される。この変更では、ディスク内の1つ の拡張書込領域がその特定のブロックを含む新しい拡張書込領域によって置換え られる。さらに、変更ステップが起こるごとに、制御プログラムはリストの複製 を磁気媒体に記憶する。 停電のような予期しない中断のために、受取られた書込コマンドのいずれかに よって求められる書込動作が開始され得るが完了できない。この発明では、不完 全な書込の存在がリストの複製内において識別されるブロックのパリティのみを 検査することによって検出される。その結果として、ディスクアレイ全体の全ブ ロックのパリティを検査するのにかかる時間に対してかなりの量の時間が節約さ れる。 上の節約の実際上の数値例として、アレイ全体が900ギガバイトを記憶し、 複製内の拡張書込領域が合計500メガバイトに及ぶ場合を考える。ディスクア レイの500メガバイトの部分のパリティを検査するためには約10分が必要で ある。しかしながら、900ギガバイトは500メガバイトよりも1800倍大 きく、アレイ全体のパリティを検査するには約(1800)×(10分)すなわ ち約30時間もかかることになる。 リスト内の拡張書込領域の総数を増加させると、書込コマンドによって書込み がされるべきブロック全部がリストによって含まれる可能性が高くなる。これは リストの複製が磁気媒体上で更新される必要がある回数を低減するので望ましい 結果である。好ましくは、1%未満の書込コマンドが新しい拡張書込領域のリス トへの追加を必要とする。図面の簡単な説明: 図1は、不完全な書込が起こり得るレベル5RAIDディスクアレイの構造を 示す。 図2は、この発明に従う図1のアレイ内の不完全な書込を追跡するディスク記 憶システムのある好ましい実施例を示す。 図3は、不完全な書込を追跡するために図2のディスク記憶システムが用いる 拡張書込領域の好ましい構造を示す。 図4は、図3の拡張書込領域が図2のディスク記憶システム内でリストとその リストの複製とに記憶される方法を示す。 図5は、不完全な書込を追跡するために図2のディスク記憶システムが用いる 拡張書込領域の第2の好ましい構造を示す。詳細な説明: この発明に従う、ディスクアレイ内の不完全な書込を追跡するディスク記憶シ ステムの1つの好ましい実施例を図2に示す。図2のシステムは1組の5ディス ク(ディスク0からディスク4まで)を含み、それらは図1に関する背景で説明 したようにレベル5RAIDディスクアレイ内にデータブロックおよびパリティ ブロックを記憶する。図2のシステムはまた、ディスクアレイに結合されるデジ タルコンピュータ11と、コンピュータ11に結合される半導体メモリ12と、 コンピュータに結合される操作卓13とを含む。 メモリ12内に記憶されるのは、制御プログラム14と1つをユーザプログラ ム15jとして示す複数のユーザプログラムとである。各ユーザプログラムは読 出または書込されるべきディスクアレイ内の特定のデータブロックを識別する論 理アドレスを含んだ読出/書込コマンドを含む。それらの読出/書込コマンドは 実行のために制御プログラム14内の待ち行列14aへと順次送られる。 待ち行列14a内の各書込コマンドは制御プログラム14によって後に受取ら れ、以下のように実行される。まず、制御プログラムは書込コマンド内の論理ア ドレスを分析して、書込みされるべき各データブロックの番号と、そのデータブ ロックを含むディスクの番号と、対応のパリティブロックを含むディスクの番号 とを判断する。次に、制御プログラムは上述のデータブロックの現在の内容とそ の対応のパリティブロックとをそれらのそれぞれのディスクから読出す。次に、 制御プログラムは、読出されたパリティブロックと読出されたデータブロックと の排他的論理和をとり、それと新しいデータブロックとの排他的論理和をとるよ うにして新しいパリティブロックを計算する。次に、制御プログラムは新しいパ リティブロックと新しいデータブロックとをそれらのそれぞれのディスクへと書 込む。 したがって、各書込コマンドの実行は2つの読出動作が2つの異なるディスク 上で行なわれることを必要とし、その後2つの書込動作が同じ2ディスク上で行 なわれる。これらの2つの書込動作はいかなる順序で行なわれてもよく、その結 果、停電のような予期しない中断が起これば、ディスク上の書込動作は他のディ スク上の書込動作が始まる前に完了することができない。 ディスクアレイ内のこのような不完全の書込動作を追跡するために、図2のデ ィスク記憶システムは半導体メモリ12内にリスト16をさらに含む。このリス ト16は制御プログラム14が待ち行列14aから最も新しく受取ったそれらの 書込コマンドのための拡張された書込領域を識別する。リスト内の各拡張書込領 域は、書込コマンドによって書込まれるべきブロックと追加的な関連ブロックと を含む。後述する図3がこれらの拡張書込領域の具体的な2例を示す。 書込コマンドが実行のために待ち行列14aから受取られるごとに、制御プロ グラム14は書込みされるべきブロックのアイデンティティとリスト16内の拡 張書込領域にあるブロックのアイデンティティとを比較する。書込まれるべきブ ロックがリスト16内のいかなる拡張書込領域にもなければ、制御プログラム1 4はリスト16内の1つの拡張書込領域を、書込みされるべき特定のブロックを 含む新しい拡張書込領域に置換える。 好ましくは、リスト16内の拡張書込領域のすべてがそのリスト内に、最も古 く用いられたものが削除される形式で配列される。この場合、新しい拡張書込領 域がリストに追加される必要があるとき、置換えられる1つの拡張書込領域は最 も古く用いられたものである。いずれにせよ、拡張書込領域は、その拡張書込領 域内にブロックの書込みを行なう、受取られた全書込コマンドが完全に実行され るまでリスト16から取除かれない。 図2のディスク記憶システムにおいても、リスト17の複製が磁気媒体に記憶 される。一実施例では、複製17はレベル5RAIDディスクアレイを保持する 5ディスクの1つに記憶される。代替的に、図2のディスク記憶システムがリス トの複製17が記憶される補助的磁気媒体18を含んでもよい。 この複製17は、それが識別する拡張書込領域が特定の順序で配列されていな い点でリスト16とは異なる。しかしながら、リスト16および複製17の両方 とも同じ拡張書込領域を識別する。 リスト16とその複製17とに記憶される拡張書込領域のための1つの特定の 構造を図3に示す。ここでは、大きな矢印21が、それら矢印が描かれた2つの データブロックの書込を求める、制御プログラム14が待ち行列14aから受取 った書込コマンドを表わす。それらのデータブロックは物理ブロックPBY+5 およびPBY+6内のディスク2に記憶される。それら2ブロックのための拡張 書込領域が図3のハッチライン22で示され、それは全ディスク上の物理ブロッ クPBY+5、PBY+6、PBY+7、PBYおよびPBY+1を含む。 図3においても同様に、待ち行列14aからの第2の書込コマンドに応答して 書込みが行なわれる1つのデータブロック内に別の大きな矢印25が描かれる。 そのデータブロックは物理ブロックPBY+6としてディスク4上に記憶される 。そのブロックのための拡張書込領域が図3のドット26で示され、この拡張書 込領域は全ディスク上の物理ブロックPBY+6、PBY+7、PBY+8およ びPBY+9を含む。 図3において、ハッチライン22で示す拡張書込領域の範囲は以下のように決 定される。まず、制御プログラムが、書込コマンド21が最後に書込みを行なう ブロックの論理アドレスに1、2および3を加えることによって3つの拡張論理 アドレスを発生する。次に、制御プログラムはそれらの拡張論理アドレスに対応 する物理ブロックを識別する。参照番号23a、23bおよび23cがこのステ ップの結果を示す。この場合、拡張書込領域は全ディスク上のそれらの物理ブロ ックと、書込まれるべきブロックとからなると定義される。 ドット26で示す拡張書込領域も同じように決定される。図3において、参照 番号27a、27bおよび27cは、a)書込コマンド25が書込みを行なうブ ロックの論理アドレスに1、2および3を加え、b)対応の物理ブロックを識別 する結果を示す。 リスト16においては、ハッチライン22で示す拡張書込領域は(PBY+5 ,+2)および(PBY,+1)のような簡潔な形で識別される。この簡潔な形 によってリストの大きさが減少する。この形では、括弧内の第1の項目は拡張書 込領域内の全ディスク上の物理ブロックであり、第2の項目は全ディスク上の上 のブロックに続く物理ブロックの数のカウントである。同様に、ドット26で示 す拡張書込領域は(PBY+6,+3)のような簡潔な形で表わされる。 ここで、ハッチライン22で示す拡張書込領域がリスト16にある間に書込コ マンド25が待ち行列14aから受取られるとする。その場合、ドット26で示 す拡張書込領域はリスト16に追加されない。これは、上述のように、制御プロ グラム14が書込みが行なわれるべきブロックのアイデンティティとリスト16 の拡張書込領域にあるブロックのアイデンティティとを比較するからである。特 定の書込コマンドが書込みを行なうブロックのすべてがリスト16の拡張書込領 域にあれば、そのコマンドのための新しい拡張書込領域はリストには追加されな い。 リスト16とその複製17との動作を示す具体的な一例を図4に示す。この例 では、リスト16とその複製17との初期の内容が時間t0で生じる。そのとき 、リスト16内の最も新しく使用された拡張書込領域は(PB35,191+6 )であり、次に最も新しく使用された拡張書込領域は(PB765+6)であり 、最も古く使用された拡張書込領域は(PB136,353+6)である。 その後、図4の時刻t1で、物理ブロックPB8,290の書込を求める書込 コマンドが制御プログラム14によって待ち行列14aから受取られる。この物 理ブロックはリスト16内にある拡張書込領域(PB8,289+8)に含まれ ている。したがって、新しい拡張書込領域はリストに追加されず、そのため、リ ストの複製17は変更されないままである。しかしながら、リスト16内の拡張 書込領域はその使用順序を維持するために再配列される。 次に、図4の時刻t2で、物理ブロックPB136,354の書込を求める書 込コマンドが制御ブロック14によって待ち行列14aから受取られる。この物 理ブロックはリスト16内にある拡張書込領域(PB136,353+10)に 含まれている。したがって、新しい拡張書込領域はリストに追加されず、リスト の複製17は変更されないままである。しかしながら、リスト16内の拡張書込 領域はここでもまたその使用順序を維持するために再配列される。 次に、図4の時刻t3で、物理ブロックPB767の書込を求める書込コマン ドが制御プログラム14によって待ち行列14aから受取られる。この物理ブロ ックはリスト16内にある拡張書込領域(PB765+6)に含まれている。し たがって、新しい拡張書込領域はリストに追加されず、リストの複製17はここ でもまた変更されない。しかしながら、リスト16内の拡張書込領域はその使用 順序を維持するために再配列される。 次に、図4の時刻t4で、物理ブロックPB91,532の書込を求める書込 コマンドが制御プログラム14によって待ち行列14aから受取られる。この物 理ブロックはリスト16内にある拡張書込領域のいかなるものにも含まれていな い。したがって、新しい拡張書込領域(PB91,532+3)がリスト16に 追加され、最も古く使用された拡張書込領域(PB524,911+6)がリス ト16から削除され、リスト内の全拡張書込領域がその使用順序で配列される。 また、リストの複製17はその内容が新しいリスト16と同じであるように書込 まれる。 最後に、図4の時刻t5で、物理ブロックPB136,356の書込を求める 書込コマンドが制御プログラム14によって待ち行列14aから受取られる。こ の物理ブロックはリスト16内にある拡張書込領域(PB136,350+1 0)に含まれている。したがって、新しい拡張書込領域はリストに追加されず、 リストの複製17は変更されないままである。しかしながら、リスト16内の拡 張書込領域はここでもまたその使用順序を維持するために再配列される。 図4を簡略化するために合計5個の拡張書込領域しかりスト16(およびその 複製17)に示されていないことに留意されたい。しかしながら、そのリストは 実際のディスク記憶システムでははるかに大きい。好ましくは、ディスク16内 にある拡張書込領域は100メガバイトから1ギガバイトのアレイ内の全体の記 憶領域をカバーする。 リスト16内にある拡張書込領域の総数を増やすと、待ち行列14aからの書 込コマンドが書込みを行なう全ブロックがリストに含まれている可能性が高くな る。これは、リストの複製17が磁気媒体上で更新される必要がある回数を低減 するので望ましい結果である。好ましくは、待ち行列14aからの書込コマンド の1%未満が新しい拡張書込領域のリスト16への追加を必要とする。しかしな がら、リスト16内にある拡張書込領域の総数を増やすと、予期しない中断が起 こった後にパリティが検査される必要があるブロックの数も増える。 たとえば、図2のシステムが待ち行列14aからの書込コマンドを実行してい る間に予期しない中断が起こるとする。その中断のため、あるディスクへのデー タブロックの書込が、別のディスクへの対応のパリティブロックの書込が始まる 前に完了したり、その逆になったりする可能性がある。その結果、中断の原因が 解消した後、このような不完全な書込の存在をアレイが検査しなければならない 。 この発明では、不完全な書込の存在はリスト16の複製17内で識別されるブ ロック上のパリティのみを検査することによって検出される。その結果として、 レベル5RAIDディスクアレイ全体の全ブロック上のパリティを検査するのに かかる時間に比べてかなりの量の時間が節約される。 上の節約の実際上の数値例として、アレイ全体が900ギガバイトを記憶し、 複製17内の拡張書込領域が合計500メガバイトに及ぶ場合を考える。ディス クアレイの500メガバイトの部分に対してパリティを検査するのに約10分が かかる。しかしながら、900ギガバイトは500メガバイトよりも1800倍 大きく、アレイ全体に対してパリティを検査するには約(1800)×(10 分)すなわち約30時間もかかる。 ディスクアレイ内の不完全な書込を追跡するある好ましい方法と、このような 方法を行なうある好ましいディスク記憶システムとをここで詳細に説明した。し かしながら、この発明の範疇から逸脱せずにそれらの細部にさまざまな変更を加 えることができる。 たとえば、図3では、各拡張書込領域の範囲が、待ち行列14aからの書込コ マンドが最後に書込みを行なうブロックの論理アドレスに1、2および3を加え ることによって決定された。しかしながら、変更例として、その論理アドレスに 加えられる整数の数を増やしてもよい。このように増やすことで、待ち行列から の後の書込コマンドが書込みを行なう全ブロックを拡張書込領域が含む可能性が 高くなる。好ましくは最後の書込ブロックの論理アドレスに加えられる数は1か ら200の範囲である。 別の変更例として、各拡張書込領域の範囲は待ち行列14aからの書込コマン ドが最初に書込みを行なうブロックの論理アドレスから1、2…を引くことによ って決定されてもよい。この変更例では、拡張書込領域は書込みが行なわれるべ きブロックに先行するアレイ内のブロックを含む。これもまた、待ち行列からの 将来の書込コマンドが書込みを行なう全ブロックを拡張書込領域が含む可能性を 高める。好ましくは、最初に書込みが行なわれるブロックの論理アドレスから引 かれる数は1から200の範囲である。 別の変更例として、リスト16内の各拡張書込領域が、書込コマンドが書込み を行なうブロックのみと、書込まれるべき最後のブロックの論理アドレスに1、 2…を加えることによって、および/または書込まれるべき最初のブロックの論 理アドレスから1、2…を引くことによって識別される追加的なブロックとを含 むように規定されてもよい。この変更の一例を図5に示す。 図5において、矢印35は論理アドレスLAwおよびLAw+1を有する2つの ブロックの書込を求める、待ち行列14aからの書込コマンドを表わす。それら 2つのブロックは物理ブロックPB Y+5およびPB Y+6としてディスク 4に存在する。それら2ブロックのために、拡張書込領域が図5内に、書込みが 行なわれるべきブロックと、書込みが行なわれるべき最後のブロックの論理アド レスに1、2、…15を加えることによって識別される追加的なブロックと、書 込みが行なわれるべき最初のブロックの論理アドレスから1、2…8を引くこと によって識別される追加的なブロックとであるように規定される。これらの追加 的なブロックは図5において参照番号35(+1)から35(+15)および3 5(−1)から35(−8)で示される。 リスト16とその複製17とにおいては、図5の拡張書込領域は(LAw−8 ,LAw+16)として簡潔な形で識別される。この形では、括弧内の第1の項 目が拡張書込領域内の最初のブロックの論理アドレスであり、第2の項目が拡張 書込領域内の最後のブロックの論理アドレスである。 拡張書込領域が図5に示すようにして規定された場合、予期しない中断の後に 、不完全な書込の存在が以下のように検出される。まず、制御プログラム14が 複製17内の書込拡張領域に含まれる全論理アドレスを対応の物理ブロックに変 換する。この変換の間、各物理ブロックが存在する特定のディスクは無視される 。次に、それらの物理ブロックがアレイ内の全ディスクから読出される。読出さ れたデータブロックからパリティが再生成され、読出されたパリティブロックと 比較される。 別の変更例として、図5内の拡張書込領域の大きさがより小さくまたはより大 きくされてもよい。好ましくは、書込みが行なわれるべき最後のブロックの論理 アドレスに加えられる数と書込みが行なわれるべき最初のブロックの論理アドレ スから引かれる数とは1から200の範囲である。 また、別の変更例として、リスト16が最も古く使用された順序で削除するよ うに拡張書込領域を配列するものに限定されるわけではない。代わりに、リスト 16から1つの拡張書込領域を取除いて新しい拡張書込領域のための場所をあけ るためにいかなる予め定められたアルゴリズムが用いられてもよい。一例として 、リスト16から除去される拡張書込領域がリスト内で最長のものであってもよ い。別の例として、リスト16から除去される拡張書込領域がランダムに選択さ れてもよい。 さらに別の変更例として、リスト16が図2に示すような制御プログラム14 を保持する同じ半導体メモリ12に記憶される必要はない。代わりに、リスト1 6はコンピュータ11内に含まれるメモリかまたは1組のレジスタに記憶されて もよい。 さらに別の変更例として、データブロックおよびパリティブロックを保持する RAIDディスクアレイはレベル5アレイでなくともよい。代わりに、それらの データブロックおよびパリティブロックが、誤りのあるデータブロックをパリテ ィブロックから再生成させる何らかの態様でディスク上に配列されてもよい。た とえば、データブロックおよびパリティブロックを保持するアレイが「背景」部 分で記載したようなレベル3RAIDディスクアレイであってもよい。 したがって、この発明の範囲は説明した特定の実施例のいかなるものの詳細に も限定されず、添付の請求の範囲によって規定されることを理解されたい。Description: Title: A method for tracking incomplete writes in a disk array and a disk storage system performing such a method Background of the Invention: The present invention relates to a method for tracking incomplete writes in a disk array and a disk storage system performing such a method. In the prior art, the term "RAID" disk array has been defined to mean a redundant array of inexpensive disks, and several different RAID disk arrays have been defined. These include a level 1 RAID disk array, a level 3 RAID disk array, and a level 5 RAID disk array. "A Case for Redundant Arrays of Inexpensive Disks (RAID)", by Patterson. Et al., Report No. UCB / CSD 87/391, December 1987. See the Computer Science Division of the University of California at Berkeley, Mon, Berkeley. In a level 5 RAID disk array, both parity and data are striped across a set of several disks. FIG. 1 shows an example of a level 5 RAID disk array in which an array is formed by a set of five disks labeled as disk 0, disk 1,. Each column of the array contains data and parity stored in a single disk in the set. Each row of the array contains data and parity striped across all five disks in the set. In FIG. 1, each row of the array consists of one parity chunk on one disk and four data chunks on the other four disks. Also, each data chunk and each parity chunk are divided into several physical blocks. A single block is the smallest part of a chunk that can be separately addressed by a user program with a read or write command. In FIG. 1, there are eight blocks per chunk. Each block consists of a predetermined number of bytes (eg, 512 bytes) and one cyclic redundancy check byte called a "CRC" byte. In the array of FIG. 1, block 0 of row 0 is addressed by a logical address 0 read / write command. As the logical addresses are sequentially incremented by one, the data blocks are block 1-7 of data chunk 0, block 0-7 of data chunk 1, block 0-7 of data chunk 2, and block 0 of data chunk 3. -7, blocks 8-15 of data chunk 4, blocks 8-15 of data chunk 5, etc. in that order. For example, block 8 of data chunk 5 has logical address 40. When writing to a data block, the CRC bytes within that block are also generated and written. In addition, a parity block having the same block number as the data block is also generated and written. This parity block is written using odd or even parity. In the even parity, the exclusive OR of the parity block and all the data blocks having the same block number is a block of which all are 0. Conversely, in the odd parity, the exclusive OR of the parity block and all the blocks having the same block number becomes one block. One way to generate a new parity block for a new data block to be written is as follows. First, the existing data blocks and their parity blocks are read from their respective disks. Next, an exclusive OR of the read parity block and the read data block is calculated, and a new parity is calculated by calculating an exclusive OR of the logical block and the new data block. This new parity block and the new data block are then written to their respective disks. During execution of the read command, the CRC byte is regenerated from the block of data to be read. If the regenerated CRC byte is different from the stored CRC byte, the block of data to be read contains an error. To correct this error, the erroneous data block is read by: a) reading all the other blocks (data and parity) on the disk having the same block number as the erroneous data block; b) exclusion of those blocks It is regenerated by taking the logical OR. Here, a case is considered in which the execution of a specific write command that attempts to write data to a block having a specific block number “i” is started, but the execution is interrupted before completion. Such an interruption may occur, for example, due to a power outage. In the above case, the interruption may occur after the writing of the new data block is completed but before the writing of the new parity block begins. Similarly, an interruption can occur after the writing of a new parity block is completed but before the writing of a new data block begins. In either case, the exclusive OR of all blocks with block number "i" is not equal to all zeros or all ones. At the same time, the ECC bytes for all blocks with block number "i" will be correct. After the cause of the interruption has been resolved, the array will continue to be read and written by the user program. If any data block with block number "i" is read and the ECC byte detects an error, the remaining data block with the same block number and the parity block are XOR'd with the error to find an error. An attempt is made to regenerate the data block. However, the regeneration process does not work because of the previous incomplete writing. This problem has been addressed in the prior art by providing a flag in the disk array that is set to "1" when the array starts operating and reset to "0" when the array stops operating in the normal manner. . Thus, if the flag is set to "1" before the flag is set when the array begins to operate, then normal operation of the array must have been previously suspended. However, a disadvantage of the above prior art flags is that it takes too long to identify a particular block that has been incompletely written after the flag is found to be in the wrong state. To find the incomplete block of the write, all data blocks and all parity blocks of the entire array must be read, and therefore the parity blocks must be recalculated from the read data blocks, and The parity block read must be compared with the parity block read. For large arrays, this process can take an entire day to complete. Accordingly, it is a primary object of the present invention to provide a method of tracking incomplete writes in a disk array and to perform such a method to check the parity for all blocks of the entire array after normal operation of the array has been interrupted. To provide a disk storage system that eliminates the need to do so. BRIEF SUMMARY OF THE INVENTION: In the present invention, incomplete writes in the disk array are tracked by a control process in the digital computer. The control program sequentially receives a plurality of write commands identifying each block in the array to be written. In response, the control program generates an expanded list of write areas for only the most recently received write command. Each such extended write area includes a block to be written and additional associated blocks that may be written by a subsequent write command. The list is changed by the control program each time a write command for writing a specific block not in the extended write area in the list is received later. In this change, one extended write area in the disk is replaced by a new extended write area containing that particular block. In addition, each time a change step occurs, the control program stores a copy of the list on magnetic media. Due to an unexpected interruption, such as a power outage, the write operation required by any of the received write commands may be initiated but cannot be completed. In the present invention, the presence of an incomplete write is detected by checking only the parity of the block identified in the copy of the list. As a result, a considerable amount of time is saved relative to the time required to check the parity of every block in the entire disk array. As a practical numerical example of the above savings, consider the case where the entire array stores 900 gigabytes and the extended write area in the replica amounts to a total of 500 megabytes. It takes about 10 minutes to check the parity of the 500 megabyte portion of the disk array. However, 900 gigabytes is 1800 times larger than 500 megabytes, and it would take about (1800) * (10 minutes) or about 30 hours to check the parity of the entire array. Increasing the total number of extended write areas in the list increases the likelihood that the list will contain all the blocks to be written by the write command. This is a desirable result because it reduces the number of times that a copy of the list needs to be updated on magnetic media. Preferably, less than 1% of write commands require addition to the list of new extended write areas. BRIEF DESCRIPTION OF THE DRAWINGS: FIG. 1 shows the structure of a level 5 RAID disk array in which incomplete writing can occur. FIG. 2 illustrates one preferred embodiment of a disk storage system that tracks incomplete writes in the array of FIG. 1 in accordance with the present invention. FIG. 3 shows a preferred structure of the extended write area used by the disk storage system of FIG. 2 to track incomplete writes. FIG. 4 illustrates how the extended write area of FIG. 3 is stored in a list and a copy of the list in the disk storage system of FIG. FIG. 5 illustrates a second preferred structure of the extended write area used by the disk storage system of FIG. 2 to track incomplete writes. Detailed description: One preferred embodiment of a disk storage system for tracking incomplete writes in a disk array according to the present invention is shown in FIG. The system of FIG. 2 includes a set of five disks (disk 0 through disk 4), which store data blocks and parity blocks in a level 5 RAID disk array as described in the background with respect to FIG. The system of FIG. 2 also includes a digital computer 11 coupled to the disk array, a semiconductor memory 12 coupled to the computer 11, and a console 13 coupled to the computer. Stored in the memory 12 are a control program 14 and a plurality of user programs, one of which is shown as a user program 15j. Each user program includes a read / write command that includes a logical address that identifies a particular data block in the disk array to be read or written. These read / write commands are sequentially sent to a queue 14a in the control program 14 for execution. Each write command in queue 14a is later received by control program 14 and is performed as follows. First, the control program analyzes the logical address in the write command to determine the number of each data block to be written, the number of the disk containing the data block, and the number of the disk containing the corresponding parity block. I do. Next, the control program reads the current contents of the aforementioned data blocks and their corresponding parity blocks from their respective disks. Next, the control program calculates an exclusive OR of the read parity block and the read data block, and calculates a new parity block by taking an exclusive OR of the read parity block and the new data block. Next, the control program writes a new parity block and a new data block to their respective disks. Thus, the execution of each write command requires that two read operations be performed on two different disks, after which the two write operations are performed on the same two disks. These two write operations may be performed in any order, so that if an unexpected interruption, such as a power outage, occurs, the write operation on the disk will be performed before the write operation on the other disk begins. Cannot be completed. To track such imperfect write operations in the disk array, the disk storage system of FIG. 2 further includes a list 16 in semiconductor memory 12. This list 16 identifies extended write areas for those write commands most recently received by the control program 14 from the queue 14a. Each extended write area in the list contains the block to be written by the write command and additional related blocks. FIG. 3 described later shows two specific examples of these extended writing areas. Each time a write command is received from queue 14a for execution, control program 14 compares the identity of the block to be written to the identity of the block in the extended write area in list 16. If the block to be written is not in any of the extended write areas in list 16, control program 14 places one extended write area in list 16 into a new extended write area containing the particular block to be written. Replace with the area. Preferably, all of the extended write areas in the list 16 are arranged in the list in such a manner that the oldest used ones are deleted. In this case, when a new extended write area needs to be added to the list, the one extended write area that is replaced is the oldest used. In any case, the extended write area is not removed from list 16 until all received write commands that write blocks in the extended write area have been completely executed. In the disk storage system of FIG. 2 as well, a copy of list 17 is stored on magnetic media. In one embodiment, replica 17 is stored on one of five disks holding a level 5 RAID disk array. Alternatively, the disk storage system of FIG. 2 may include an auxiliary magnetic medium 18 on which a copy 17 of the list is stored. This replica 17 differs from the list 16 in that the extended write areas it identifies are not arranged in a particular order. However, both the list 16 and the replica 17 identify the same extended write area. One particular structure for the extended write area stored in the list 16 and its replica 17 is shown in FIG. Here, the large arrow 21 represents a write command received from the queue 14a by the control program 14 requesting writing of the two data blocks on which the arrows are drawn. These data blocks are stored on disk 2 in physical blocks PBY + 5 and PBY + 6. The extended write area for those two blocks is indicated by hatch line 22 in FIG. 3, which includes physical blocks PBY + 5, PBY + 6, PBY + 7, PBY and PBY + 1 on all disks. Similarly, in FIG. 3, another large arrow 25 is drawn in one data block to be written in response to the second write command from queue 14a. The data block is stored on the disk 4 as a physical block PBY + 6. The extended write area for that block is indicated by dot 26 in FIG. 3, which includes physical blocks PBY + 6, PBY + 7, PBY + 8 and PBY + 9 on the entire disk. In FIG. 3, the range of the extended writing area indicated by hatch line 22 is determined as follows. First, the control program generates three extended logical addresses by adding 1, 2, and 3 to the logical address of the block to which the write command 21 last writes. Next, the control program identifies physical blocks corresponding to those extended logical addresses. Reference numbers 23a, 23b and 23c indicate the results of this step. In this case, the extended write area is defined to consist of those physical blocks on all disks and the blocks to be written. The extended writing area indicated by the dot 26 is determined in the same manner. In FIG. 3, reference numerals 27a, 27b, and 27c indicate the results of a) adding 1, 2, and 3 to the logical address of the block to which the write command 25 writes, and b) identifying the corresponding physical block. In the list 16, the extended writing area indicated by the hatch line 22 is identified in a simple form such as (PBY + 5, +2) and (PBY, +1). This compact form reduces the size of the list. In this form, the first item in parentheses is a physical block on all disks in the extended write area, and the second item is a count of the number of physical blocks following the block on all disks. Similarly, the extended writing area indicated by the dot 26 is represented in a simple form such as (PBY + 6, +3). Here, it is assumed that the write command 25 is received from the queue 14a while the extended write area indicated by the hatch line 22 is in the list 16. In that case, the extended writing area indicated by the dot 26 is not added to the list 16. This is because the control program 14 compares the identity of the block to be written with the identity of the block in the extended write area of the list 16 as described above. If all of the blocks to which a particular write command writes are in the extended write area of list 16, no new extended write area for that command is added to the list. FIG. 4 shows a specific example of the operation of the list 16 and its copy 17. In this example, the initial contents of list 16 and its copy 17 occur at time t0. At that time, the most recently used extended write area in the list 16 is (PB35,191 + 6), the next most recently used extended write area is (PB765 + 6), and the oldest recently used extended write area is The embedding area is (PB136, 353 + 6). Thereafter, at time t1 in FIG. 4, a write command for writing the physical blocks PB8, 290 is received by the control program 14 from the queue 14a. This physical block is included in the extended write area (PB8, 289 + 8) in the list 16. Therefore, the new extended write area is not added to the list, so the copy 17 of the list remains unchanged. However, the extended write areas in list 16 are rearranged to maintain their order of use. Next, at time t2 in FIG. 4, a write command for writing the physical blocks PB136 and 354 is received by the control block 14 from the queue 14a. This physical block is included in the extended write area (PB136, 353 + 10) in the list 16. Therefore, the new extended write area is not added to the list, and the copy 17 of the list remains unchanged. However, the extended write area in the list 16 is again rearranged to maintain its use order. Next, at time t3 in FIG. 4, a write command for writing the physical block PB767 is received by the control program 14 from the queue 14a. This physical block is included in the extended write area (PB765 + 6) in the list 16. Therefore, the new extended write area is not added to the list and the copy 17 of the list is not changed here either. However, the extended write areas in list 16 are rearranged to maintain their order of use. Next, at time t4 in FIG. 4, a write command for writing the physical blocks PB91 and 532 is received by the control program 14 from the queue 14a. This physical block is not included in any of the extended write areas in the list 16. Therefore, a new extended write area (PB91, 532 + 3) is added to the list 16, the oldest used extended write area (PB524, 911 + 6) is deleted from the list 16, and all extended write areas in the list are deleted. They are arranged in order of use. Also, the copy 17 of the list is written so that its contents are the same as the new list 16. Finally, at time t5 in FIG. 4, a write command for writing the physical blocks PB136, 356 is received by the control program 14 from the queue 14a. This physical block is included in the extended write area (PB136, 350 + 10) in the list 16. Therefore, the new extended write area is not added to the list and the copy of the list 17 remains unchanged. However, the extended write area in the list 16 is again rearranged to maintain its use order. Note that for simplicity of FIG. 4, a total of five extended write area keys 16 (and their duplicates 17) are not shown. However, the list is much larger in a real disk storage system. Preferably, the extended write area in the disk 16 covers the entire storage area in the 100 megabyte to 1 gigabyte array. Increasing the total number of extended write areas in the list 16 increases the likelihood that the list contains all blocks to which the write command from the queue 14a writes. This is a desirable result because it reduces the number of times that the list replicas 17 need to be updated on magnetic media. Preferably, less than 1% of write commands from queue 14a require the addition of a new extended write area to list 16. However, increasing the total number of extended write areas in list 16 also increases the number of blocks whose parity needs to be checked after an unexpected interruption. For example, assume that an unexpected interruption occurs while the system of FIG. 2 is executing a write command from queue 14a. Because of the interruption, writing a data block to one disk may be completed before writing the corresponding parity block to another disk, or vice versa. As a result, the array must check for the presence of such incomplete writes after the cause of the interruption has been resolved. In the present invention, the presence of an incomplete write is detected by checking only the parity on the block identified in the replica 17 of the list 16. As a result, a significant amount of time is saved relative to the time required to check the parity on all blocks of the entire level 5 RAID disk array. As a practical numerical example of the above savings, consider the case where the entire array stores 900 gigabytes and the extended write area in replica 17 totals 500 megabytes. It takes about 10 minutes to check parity for a 500 megabyte portion of the disk array. However, 900 gigabytes is 1800 times larger than 500 megabytes, and checking parity for the entire array takes about (1800) * (10 minutes), or about 30 hours. One preferred method of tracking incomplete writes in a disk array and a preferred disk storage system for performing such a method have been described in detail herein. However, various changes may be made in those details without departing from the scope of the invention. For example, in FIG. 3, the extent of each extended write area was determined by adding 1, 2, and 3 to the logical address of the block to which the write command from queue 14a last writes. However, as a modification, the number of integers added to the logical address may be increased. By increasing in this way, the possibility that the extended write area includes all blocks to be written by a later write command from the queue is increased. Preferably, the number added to the logical address of the last write block ranges from 1 to 200. As another variation, the extent of each extended write area may be determined by subtracting 1, 2, ... from the logical address of the block to which the write command from queue 14a first writes. In this variation, the extended write area includes the blocks in the array that precede the block to be written. This also increases the likelihood that the extended write area will contain all blocks to which future write commands from the queue will write. Preferably, the number subtracted from the logical address of the first block to be written is in the range of 1 to 200. As another variation, each extended write area in list 16 may be configured to add 1, 2,... To the logical address of only the block to which the write command is writing and the last block to be written, and / or Or additional blocks identified by subtracting 1, 2,... From the logical address of the first block to be written. An example of this change is shown in FIG. In FIG. 5, an arrow 35 indicates a logical address LA. w And LA w Represents a write command from queue 14a seeking to write two blocks with +1. These two blocks exist on the disk 4 as physical blocks PB Y + 5 and PB Y + 6. For those two blocks, the extended write area is identified in FIG. 5 by adding 1, 2,... 15 to the logical address of the block to be written and the last block to be written. Additional blocks are defined as being additional blocks identified by subtracting 1, 2,... 8 from the logical address of the first block to be written. These additional blocks are designated in FIG. 5 by reference numbers 35 (+1) to 35 (+15) and 35 (-1) to 35 (-8). In the list 16 and its copy 17, the extended write area in FIG. w -8, LA w +16). In this form, the first item in parentheses is the logical address of the first block in the extended write area, and the second item is the logical address of the last block in the extended write area. If the extended write area is defined as shown in FIG. 5, after an unexpected interruption, the presence of an incomplete write is detected as follows. First, the control program 14 converts all logical addresses included in the write extension area in the copy 17 into corresponding physical blocks. During this conversion, the particular disk on which each physical block resides is ignored. Next, those physical blocks are read from all disks in the array. Parity is regenerated from the read data block and compared with the read parity block. As another modification, the size of the extended writing area in FIG. 5 may be made smaller or larger. Preferably, the number added to the logical address of the last block to be written and the number subtracted from the logical address of the first block to be written are in the range of 1 to 200. Further, as another modification, the present invention is not limited to the arrangement in which the extended writing areas are arranged so that the list 16 is deleted in the oldest used order. Alternatively, any predetermined algorithm may be used to remove one extended write area from list 16 to make room for a new extended write area. As an example, the extended writing area removed from the list 16 may be the longest in the list. As another example, the extended writing area to be removed from the list 16 may be randomly selected. As a further modification, the list 16 need not be stored in the same semiconductor memory 12 holding the control program 14 as shown in FIG. Alternatively, the list 16 may be stored in a memory included in the computer 11 or in a set of registers. As yet another modification, the RAID disk array holding the data blocks and the parity blocks may not be a level 5 array. Alternatively, the data blocks and parity blocks may be arranged on the disk in any way that allows the erroneous data blocks to be regenerated from the parity blocks. For example, the array holding the data blocks and parity blocks may be a level 3 RAID disk array as described in the "Background" section. Therefore, it is to be understood that the scope of the invention is not limited to the details of any of the specific embodiments described, but is defined by the appended claims.

【手続補正書】 【提出日】平成11年12月1日(1999.12.1) 【補正内容】 (1)明細書第3頁第29行と第4頁第1行との間に下記を挿入する。 記 『WO−A−94/29795が対処する問題はこの発明と同じである。しか しながら、WO−A−94/29795の解決法はこの発明とは本質的に異なる 。すなわち、この発明は統合化された、ストライピングされたデータ/パリティ 構造の一部を形成するように通常のディスク記憶空間にそれぞれのブロックを含 む拡張書込領域を生成することを予見しているが、これは、矛盾していろ可能性 のあるブロックのリストを記憶するために、通常のディスクアレイ構造とは別個 の追加的なNV RAM領域を設けることに基づくWO−A−94/29795 の解決法とは異なる。提案されている解決法は、リストのサイズを減少させ、デ ィスクアレイ内の矛盾に関連した全ブロックを効果的に識別するという利点を有 する。』 (2)明細書第4頁第5行と第6行との間に「請求項記載の発明を以下に記載 する。」を挿入する。 (3)請求の範囲を別紙のとおり補正する。 請求の範囲 1.ディスクアレイ内の不完全な書込を追跡する、コンピュータプログラムによ って行なわれる方法(図4参照)であって、 書込みが行なわれるべき、前記アレイ内のそれぞれのブロックを識別する複数 の書込コマンド(図4のt1、t2、t3、t4、t5での書込)を順次受取る ステップと、 最も新しく受取られた複数の書込コマンドのみに対して拡張書込領域(時刻t 1でのリスト内のたとえばPB8,289) のリスト(図4の16)を生成する ステップとを含み、各拡張書込領域は書込みが行なわれるべきブロックとそれに 関連した追加的なブロックとを含み(たとえば、PB8,299+8はPB8, 290のt1での書込を含む) 、 前記リスト内のいかなる拡張書込領域(たとえばt4での書込)内にもない特 定のブロックの書込みを行なう書込コマンドが後に受取られるごとに、1つの拡 張書込領域(たとえば、t3のリスト16内の最後のエントリ)を前記特定のブ ロックを含む新しい拡張書込領域(たとえば、t4でのリスト内の最初のエント リ) に置換えることによって前記リストを変更するステップと、 前記変更するステップが行なわれるごとに磁気媒体に前記リストの複製(t4 の17) を記憶させるステップとを含む、方法。 2.前記リスト内の拡張領域は100メガバイトから1ギガバイトの前記アレイ 内の全体の記憶領域をカバーする、請求項1に記載の方法。 3.各拡張書込領域は1個から500個の範囲の追加的なブロックを含む、請求 項1に記載の方法。 4.各拡張書込領域は前記ディスクのすべての上の同じ物理ブロックを含む、請 求項1に記載の方法。 5.各拡張書込領域は選択されたディスク上の選択された物理ブロックを含む、 請求項1に記載の方法。 6.前記変更するステップは、前記リスト内の最も古く書込みが行なわれた拡張 書込領域を置換える、請求項1に記載の方法。 7.前記プログラムは揮発性半導体メモリ内に前記リストを生成する、請求項1 に記載の方法。 8.前記プログラムは1組の揮発性レジスタ内に前記リストを生成する、請求項 1に記載の方法。 9.前記リストの前記複製が記憶される前記磁気媒体は前記アレイ内のディスク である、請求項1に記載の方法。 10.前記リストの前記複製が記憶される前記磁気媒体は前記ディスクアレイの 外部にある補助媒体である、請求項1に記載の方法。 11.前記アレイはレベル5RAIDディスクアレイである、請求項1に記載の 方法。 12.a)受取られた書込コマンドによって識別される、前記アレイ内の特定の ブロックの書込みを始めるステップと、b)前記特定のブロックの書込をそれが 完全に書込みされる前に中断するステップとをさらに含む、請求項1に記載の方 法。 13.a)前記アレイ内の特定のブロックの書込が中断された後に前記磁気媒体 から前記複製を読出すステップと、b)前記複製内の拡張書込領域に含まれるブ ロック上のみのパリティを検査するステップとをさらに含む、請求項1に記載の 方法。 14.デジタルコンピュータに結合されるディスクのアレイと、書込みが行なわ れるべき前記アレイ内のそれぞれのブロックを識別する複数の書込コマンドを順 次受取る、前記コンピュータ内のプログラムと、最も新しく受取られる複数の書 込コマンドのみのための拡張書込領域の前記コンピュータ内のリストとを含み、 各拡張書込領域は書込みされるべきブロックとそれに関連した追加的なブロック とを含み、前記プログラムは、前記リスト内のいかなる拡張書込領域内にもない 特定のブロックを書込を行なう書込コマンドが後に受取られるごとに、1つの拡 張書込領域を前記特定のブロックを含む新しい拡張書込領域に置換えることによ って前記リストを変更するようにされ、前記リストが前記プログラムによって変 更されるごとに前記リストの複製を記憶する磁気媒体をさらに含む、ディスク記 憶システム。[Procedure amendment] [Date of submission] December 1, 1999 (1999.12.1) [Contents of amendment] (1) The following is placed between page 3, line 29 and page 4, line 1 Insert The problem addressed by WO-A-94 / 29795 is the same as in the present invention. However, the solution of WO-A-94 / 29795 is substantially different from the present invention. That is, while the present invention envisages creating an extended write area containing each block in normal disk storage space to form part of an integrated, striped data / parity structure. This is a solution of WO-A-94 / 29795 based on providing an additional NV RAM area separate from the usual disk array structure to store a list of possibly inconsistent blocks. Different from the law. The proposed solution has the advantage of reducing the size of the list and effectively identifying all blocks associated with inconsistencies in the disk array. (2) Insert “The claimed invention is described below.” Between the fifth and sixth lines of page 4 of the specification. (3) The claims are corrected as shown in the attached sheet. Claims 1. A method performed by a computer program to track incomplete writes in a disk array (see FIG. 4) , comprising a plurality of write commands ( FIG. 4) identifying each block in said array to be written. 4) sequentially receiving write commands at t1, t2, t3, t4, and t5 in FIG. 4; and an extended write area ( in the list at time t1) for only the most recently received write commands . Generating a list ( e.g., PB8, 289) (16 in FIG. 4) , wherein each extended write area includes a block to be written and additional blocks associated therewith (e.g., PB8, 299 + 8). the PB8, and a write at 290 t1), any extended writing area (e.g. a particular block nor in writing) at t4 in said list Each time a write command for performing write is received later, one extended writing area (e.g., the last entry in the list 16 of t3) New Additional write area including the specified block (e.g., at t4 by replacing the first entry) in the list and a step of storing and changing the list, replication of said list on a magnetic media each time step of the change is performed (17 t4), Method. 2. The method of claim 1, wherein the extended area in the list covers 100 megabytes to 1 gigabyte of the entire storage area in the array. 3. The method of claim 1, wherein each extended writing area includes between one and 500 additional blocks. 4. The method of claim 1, wherein each extended write area includes the same physical block on all of the disks. 5. The method of claim 1, wherein each extended write area includes a selected physical block on a selected disk. 6. The method of claim 1, wherein the altering step replaces an oldest written extended write area in the list. 7. The method according to claim 1, wherein the program generates the list in a volatile semiconductor memory. 8. The method of claim 1, wherein the program generates the list in a set of volatile registers. 9. The method of claim 1, wherein the magnetic medium on which the copy of the list is stored is a disk in the array. 10. The method of claim 1, wherein the magnetic medium on which the copy of the list is stored is an auxiliary medium external to the disk array. 11. The method of claim 1, wherein the array is a level 5 RAID disk array. 12. a) starting to write a particular block in the array, identified by the received write command; b) suspending the writing of the particular block before it has been completely written; The method of claim 1, further comprising: 13. a) reading the replica from the magnetic medium after writing of a particular block in the array has been interrupted; and b) checking parity only on blocks included in the extended write area in the replica. The method of claim 1, further comprising: 14. An array of disks coupled to a digital computer, and a program in the computer for sequentially receiving a plurality of write commands identifying respective blocks in the array to be written, and a plurality of most recently received writes. A list in the computer of an extended write area for commands only, wherein each extended write area includes a block to be written and additional blocks associated therewith, wherein the program comprises: By replacing a single extended write area with a new extended write area containing the specific block each time a write command to write a particular block that is not in any extended write area is subsequently received. Modifying the list, wherein the list is modified each time the list is modified by the program. A disk storage system further comprising a magnetic medium for storing a copy of the disk.

Claims (1)

【特許請求の範囲】 1.ディスクアレイ内の不完全な書込を追跡する、コンピュータプログラムによ って行なわれる方法であって、 書込みが行なわれるべき、前記アレイ内のそれぞれのブロックを識別する複数 の書込コマンドを順次受取るステップと、 最も新しく受取られた複数の書込コマンドのみに対して拡張書込領域のリスト を生成するステップとを含み、各拡張書込領域は書込みが行なわれるべきブロッ クとそれに関連した追加的なブロックとを含み、 前記リスト内のいかなる拡張書込領域内にもない特定のブロックの書込みを行 なう書込コマンドが後に受取られるごとに、1つの拡張書込領域を前記特定のブ ロックを含む新しい拡張書込領域に置換えることによって前記リストを変更する ステップと、 前記変更するステップが行なわれるごとに磁気媒体に前記リストの複製を記憶 させるステップとを含む、方法。 2.前記リスト内の拡張領域は100メガバイトから1ギガバイトの前記アレイ 内の全体の記憶領域をカバーする、請求項1に記載の方法。 3.各拡張書込領域は1個から500個の範囲の追加的なブロックを含む、請求 項1に記載の方法。 4.各拡張書込領域は前記ディスクのすべての上の同じ物理ブロックを含む、請 求項1に記載の方法。 5.各拡張書込領域は選択されたディスク上の選択された物理ブロックを含む、 請求項1に記載の方法。 6.前記変更するステップは、前記リスト内の最も古く書込みが行なわれた拡張 書込領域を置換える、請求項1に記載の方法。 7.前記プログラムは揮発性半導体メモリ内に前記リストを生成する、請求項1 に記載の方法。 8.前記プログラムは1組の揮発性レジスタ内に前記リストを生成する、請求項 1に記載の方法。 9.前記リストの前記複製が記憶される前記磁気媒体は前記アレイ内のディスク である、請求項1に記載の方法。 10.前記リストの前記複製が記憶される前記磁気媒体は前記ディスクアレイの 外部にある補助媒体である、請求項1に記載の方法。 11.前記アレイはレベル5RAIDディスクアレイである、請求項1に記載の 方法。 12.a)受取られた書込コマンドによって識別される、前記アレイ内の特定の ブロックの書込みを始めるステップと、b)前記特定のブロックの書込をそれが 完全に書込みされる前に中断するステップとをさらに含む、請求項1に記載の方 法。 13.a)前記アレイ内の特定のブロックの書込が中断された後に前記磁気媒体 から前記複製を読出すステップと、b)前記複製内の拡張書込領域に含まれるブ ロック上のみのパリティを検査するステップとをさらに含む、請求項1に記載の 方法。 14.デジタルコンピュータに結合されるディスクのアレイと、書込みが行なわ れるべき前記アレイ内のそれぞれのブロックを識別する複数の書込コマンドを順 次受取る、前記コンピュータ内のプログラムと、最も新しく受取られる複数の書 込コマンドのみのための拡張書込領域の前記コンピュータ内のリストとを含み、 各拡張書込領域は書込みされるべきブロックとそれに関連した追加的なブロック とを含み、前記プログラムは、前記リスト内のいかなる拡張書込領域内にもない 特定のブロックを書込を行なう書込コマンドが後に受取られるごとに、1つの拡 張書込領域を前記特定のブロックを含む新しい拡張書込領域に置換えることによ って前記リストを変更するようにされ、前記リストが前記プログラムによって変 更されるごとに前記リストの複製を記憶する磁気媒体をさらに含む、ディスク記 憶システム。[Claims] 1. A computer program that tracks incomplete writes in a disk array. Is a method performed by   A plurality identifying each block in the array to which writing is to be performed Sequentially receiving write commands of   List of extended write areas for only the most recently received write commands Generating each of the extended write areas in a block in which writing is to be performed. And additional blocks associated with it,   Write a specific block not in any extended write area in the list Each time a subsequent write command is received, one extended write area is Modify the list by replacing it with a new extended write area containing a lock Steps and   Storing a copy of the list on a magnetic medium each time the changing step is performed And the step of causing. 2. The extension area in the list is the array from 100 megabytes to 1 gigabyte. 2. The method of claim 1, wherein the entire storage area is covered. 3. Each extended write area includes between 1 and 500 additional blocks Item 1. The method according to Item 1. 4. Each extended write area contains the same physical block on all of the disks, The method of claim 1. 5. Each extended write area contains the selected physical block on the selected disk, The method of claim 1. 6. The step of modifying includes the oldest written extension in the list. The method of claim 1, wherein the writing area is replaced. 7. 2. The program according to claim 1, wherein the program generates the list in a volatile semiconductor memory. The method described in. 8. The program generates the list in a set of volatile registers. 2. The method according to 1. 9. The magnetic medium on which the copy of the list is stored is a disk in the array The method of claim 1, wherein 10. The magnetic medium on which the copy of the list is stored is a copy of the disk array. The method of claim 1, wherein the method is an external auxiliary medium. 11. The array of claim 1, wherein the array is a level 5 RAID disk array. Method. 12. a) a particular command in the array identified by the received write command Initiating the writing of a block, b) writing the particular block Interrupting before being completely written. Law. 13. a) the magnetic medium after writing of a particular block in the array is interrupted; And b) reading the copy from the extended write area in the copy. Checking parity on lock only. Method. 14. An array of disks coupled to a digital computer Multiple write commands to identify each block in the array to be sequenced. The next program to be received in the computer and the most recently received programs A list in the computer of an extended writing area only for embedded commands. Each extended write area is a block to be written and additional blocks associated with it The program is not in any extended write area in the list Each time a write command to write a particular block is received later, By replacing the extended write area with a new extended write area including the specific block. The list is changed by the program, and the list is changed by the program. A disk drive, further comprising a magnetic medium for storing a copy of the list each time it is changed. Memory system.
JP50094799A 1997-05-30 1998-05-29 Method of tracking incomplete writes in a disk array, and disk storage system performing such a method Expired - Fee Related JP3288724B2 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/865,647 1997-05-30
US08/865,647 US5893164A (en) 1997-05-30 1997-05-30 Method of tracking incomplete writes in a disk array and disk storage system which performs such method
PCT/US1998/010962 WO1998054647A1 (en) 1997-05-30 1998-05-29 Method of tracking incomplete writes in a disk array, and disk storage system which performs such method

Publications (2)

Publication Number Publication Date
JP2000513129A true JP2000513129A (en) 2000-10-03
JP3288724B2 JP3288724B2 (en) 2002-06-04

Family

ID=25345948

Family Applications (1)

Application Number Title Priority Date Filing Date
JP50094799A Expired - Fee Related JP3288724B2 (en) 1997-05-30 1998-05-29 Method of tracking incomplete writes in a disk array, and disk storage system performing such a method

Country Status (6)

Country Link
US (1) US5893164A (en)
EP (1) EP0985173B1 (en)
JP (1) JP3288724B2 (en)
AU (1) AU7703798A (en)
DE (1) DE69822819T2 (en)
WO (1) WO1998054647A1 (en)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6532548B1 (en) 1999-09-21 2003-03-11 Storage Technology Corporation System and method for handling temporary errors on a redundant array of independent tapes (RAIT)
US20030084397A1 (en) * 2001-10-31 2003-05-01 Exanet Co. Apparatus and method for a distributed raid
US6910100B2 (en) * 2002-03-13 2005-06-21 Intel Corporation Detecting open write transactions to mass storage
US7240235B2 (en) * 2002-03-13 2007-07-03 Intel Corporation Journaling technique for write transactions to mass storage
US7417813B2 (en) * 2004-05-26 2008-08-26 Seagate Technology Llc Overlapping data track access
US8850114B2 (en) 2010-09-07 2014-09-30 Daniel L Rosenband Storage array controller for flash-based storage devices

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5708668A (en) * 1992-05-06 1998-01-13 International Business Machines Corporation Method and apparatus for operating an array of storage devices
JPH08511368A (en) * 1993-06-04 1996-11-26 ネットワーク・アプリアンス・コーポレーション Method for forming parity in RAID subsystem using non-volatile memory
US5572661A (en) * 1994-10-05 1996-11-05 Hewlett-Packard Company Methods and system for detecting data loss in a hierarchic data storage system

Also Published As

Publication number Publication date
DE69822819T2 (en) 2005-03-10
AU7703798A (en) 1998-12-30
EP0985173A1 (en) 2000-03-15
DE69822819D1 (en) 2004-05-06
US5893164A (en) 1999-04-06
JP3288724B2 (en) 2002-06-04
WO1998054647A1 (en) 1998-12-03
EP0985173B1 (en) 2004-03-31

Similar Documents

Publication Publication Date Title
JP3226370B2 (en) Improvements on high availability disk arrays
US6859888B2 (en) Data storage array apparatus storing error information without delay in data access, and method, program recording medium, and program for the same
US7386758B2 (en) Method and apparatus for reconstructing data in object-based storage arrays
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
US6067635A (en) Preservation of data integrity in a raid storage device
US8112679B2 (en) Data reliability bit storage qualifier and logical unit metadata
US7743227B1 (en) Volume restoration using an accumulator map
US7234024B1 (en) Application-assisted recovery from data corruption in parity RAID storage using successive re-reads
JPH05505264A (en) Non-volatile memory storage of write operation identifiers in data storage devices
US6799284B1 (en) Reparity bitmap RAID failure recovery
WO2002071230A1 (en) Utilizing parity caching and parity logging while closing the raid 5 write hole
US7818524B2 (en) Data migration systems and methods for independent storage device expansion and adaptation
JPH04230512A (en) Method and apparatus for updating record for dasd array
JP2002123421A (en) Remapping control method for flash memory and structure for flash memory therefor
JP2000511318A (en) Transformable RAID for Hierarchical Storage Management System
US11347653B2 (en) Persistent storage device management
JP3288724B2 (en) Method of tracking incomplete writes in a disk array, and disk storage system performing such a method
JPH09288547A (en) Array-type storage device
GB2343265A (en) Data storage array rebuild
JP2001142650A (en) Method and device for controlling array disk
JP3119978B2 (en) File storage device and file management method thereof
KR19980047273A (en) How to Manage Cache on RAID Level 5 Systems
JPH10254634A (en) Storage device and restoration means for storage device
US7337270B2 (en) Apparatus, system, and method for servicing a data storage device using work-in-process (WIP) maps
JP3798773B2 (en) Disk control apparatus and consistency recovery method for redundant logical disk drive

Legal Events

Date Code Title Description
R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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

Free format text: PAYMENT UNTIL: 20090315

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees