JP2501752B2 - コンピユ―タ・システムのストレ―ジ装置及びデ―タのストア方法 - Google Patents

コンピユ―タ・システムのストレ―ジ装置及びデ―タのストア方法

Info

Publication number
JP2501752B2
JP2501752B2 JP5081583A JP8158393A JP2501752B2 JP 2501752 B2 JP2501752 B2 JP 2501752B2 JP 5081583 A JP5081583 A JP 5081583A JP 8158393 A JP8158393 A JP 8158393A JP 2501752 B2 JP2501752 B2 JP 2501752B2
Authority
JP
Japan
Prior art keywords
data
storage
storage unit
write
data storage
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP5081583A
Other languages
English (en)
Other versions
JPH0619632A (ja
Inventor
ダビッド・アラン・ステイクジンスキー
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 JPH0619632A publication Critical patent/JPH0619632A/ja
Application granted granted Critical
Publication of JP2501752B2 publication Critical patent/JP2501752B2/ja
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/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/2094Redundant storage or storage space
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • 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
    • 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
    • G06F11/1092Rebuilding, e.g. when physically replacing a failing disk
    • 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/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/2097Error 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 maintaining the standby controller/processing unit updated
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1009Cache, i.e. caches used in RAID system with parity
    • 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/88Masking faults in memories by using spares or by reconfiguring with partially good memories

Landscapes

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

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、コンピユータのデータ
・ストレージ装置、より詳細にいえば、大容量のデータ
・ストレージ装置を必要とする近代のコンピユータ・シ
ステムに関する。
【0002】
【従来の技術】近代のコンピユータ・システムが要求す
る非常に大量のデータを蓄えることは、磁気デイスク・
ドライブ、つまり、大容量のデータ・ストレージ装置を
必要とする。共通のストレージ装置は、故障を生じ易い
多くの部分品を機械的に組み込んだ複雑な機器である。
代表的なコンピユータ・システムは、幾つかの上述の機
器を含んでいる。1つのストレージ装置の故障はシステ
ムにとつて深刻な事態を生じる。多くのシステムは、故
障したストレージ装置が修理され、または、置換される
まで、動作することができず、そして、失われたデータ
を再生(復旧)しなければならない。
【0003】コンピユータ・システムが大型になり、高
速になり、そして、一層信頼性が高くなつたので、これ
に対応して、ストレージ装置の記憶容量、速度及び信頼
性を増加する必要がある。記憶容量を増加するために、
ストレージ装置を単純に増加すると、任意の一台の装置
が故障する確率が、容量の増加に対応して増加する。他
方、従来通りで改良のないストレージ装置の大きさを増
加することは、速度を低める傾向があり、しかも、信頼
性は何ら向上しない。
【0004】最近になつて、或るレベルのデータ冗長度
(data redundancy)を与えるために構成された直接ア
クセス・ストレージ装置のアレイに大きな注目を集める
ようになつた。このようなアレイは、この分野におい
て、「RAID」(RedundantArray of Inexpensive Di
sks)として知られている。1988年6月のACM SUGMO
Dの会議において、パターソン、ギブソン及びカーツに
よつて提示された「A Case for Redundant Arrays of I
nexpensive Disks(RAID)」と題する発表に、冗長度の異
なつた形式を与えるRAIDの種々のタイプが記載され
ている。パターソン等は、レベル1乃至レベル5と指定
されたRAIDの5つのタイプに分類している。パター
ソンのこの命名法は、この分野で標準になつている。R
AIDの理論の基本となるものは、或る数のデイスク・
ドライブは冗長である多数の比較的小さなデイスク・ド
ライブが、容量、速度及び信頼性を同時に増加すること
ができるということにある。
【0005】パターソンの命名法を用いたRAIDのレ
ベル3乃至レベル5(即ち、RAID−3、RAID−
4、RAID−5)は、データ冗長度のためのパリテイ
・レコードを使用している。パリテイ・レコードは、ア
レイ中の異なつたストレージ装置内の特定の位置にスト
アされたすべてのデータ・レコードの排他的オア論理演
算(Exclusive-OR)処理により形成される。これを換言
すれば、N個のストレージ装置のアレイにおいて、スト
レージ装置中の特定の位置にあるデータ・ブロツク中の
各ビツトは、パリテイ・ビツトのブロツクを作るため
に、(N−1)個のストレージ装置のグループ中のその
位置にある1つおきのビツトによつて排他的オア演算さ
れ、次に、そのパリテイ・ブロツクは、残りのストレー
ジ装置の中の同じ位置にストアされる。若し、アレイ中
のある1つのストレージ装置が故障したならば、故障し
た装置中の任意の位置に含まれたデータは、残りの装置
中の同じ位置にあるデータ・ブロツクと、それらに対応
するパリテイ・ブロツクとを排他的オア演算を行なうこ
とによつて再生することができる。
【0006】更に、RAID−4及びRAID−5は、
ストレージ装置中の読み取り/書込みアクチユエータを
独立して動作することにより特徴付けられる。これを換
言すれば、ストレージ装置の各読み取り/書き込みヘツ
ドは、アレイ中の他の装置がデータにアクセスしている
ことには関係なく、そのデイスク中の任意のデータに自
由にアクセスできるということである。米国特許第47
61785号には、パリテイ・ブロツクがアレイ中のス
トレージ装置の間でほぼ平均して分散され独立した読み
取り/書き込みアレイの1つのタイプが開示されてい
る。パリテイ・ブロツクを分散することは、アレイ中の
デイスク間のパリテイを更新する負担を、多少なりとも
平均化するように分散することになり、これにより、す
べてのパリテイ・レコードが、1つの専用のデイスク・
ドライブ装置に維持されたときに生じる性能上の弱点を
カバーする。パターソン等は、上述の米国特許のアレ
イ、RAID−5を指定している。RAID−5は、パ
ターソンによつて発表された最も進んだレベルのRAI
Dであつて、パリテイで保護された他のRAIDを上回
る性能を与えている。
【0007】独立した読み取り/書き込み(RAID−
4、またはRAID−5)を有し、パリテイで保護され
たデイスク・アレイによつて生じる1つの問題は、デー
タ・ブロツクが書き込まれる時のパリテイ・ブロツクの
更新に関連する負担である。代表例としては、上述の米
国特許に記載されているように、書き込まれるべきデー
タ・ブロツクが先ず読み取られ、そして、変更マスクを
作るために、新しいデータと古いデータとを排他的オア
論理演算する。次に、パリテイ・ブロツクは、読み取ら
れ、そして、新しいパリテイ・データを作るために変更
マスクと排他的オア論理演算される。最後に、データ及
びパリテイ・ブロツクを書き込むことができる。従つ
て、データが更新される毎に、2つの読み取り動作及び
2つの書き込み動作が必要とされる。
【0008】代表的なコンピユータ・システムにおい
て、中央処理装置(CPU)は、ストレージ装置よりも
遥かに高速度で動作する。データ及びパリテイを更新す
るために必要とするストレージ装置による2度の読み取
り動作及び2度の書き込み動作は、CPUの動作に関連
して非常に長い時間を必要とする。若し、ストレージ装
置においてデータが更新されるまで、CPUが動作を中
止したとすれば、システムの性能は悪影響を受ける。従
つて、データ冗長度を維持すると共に、書き込みの間で
デイスク・アレイにデータを転送した直後、またはその
短時間後に、CPUがタスクの処理を続行可能にするこ
とが望ましい。
【0009】RAID−3、RAID−4、またはRA
ID−5の1つのパリテイ・ブロツクは、データ冗長度
の1つのレベルしか与えない。これは、1つのストレー
ジ装置が故障した場合、データを回復することができる
ことを保証する。然しながら、システムは、1つのスト
レージ装置が故障した場合に含まれた動作を中止する
か、または、データ冗長度なしで動作を続行するかを指
定しなければならない。若し、システムが動作を続行す
るように設計されているならば、第1の装置が修理さ
れ、または、置き換えられて、そのデータが再生される
前に、第2の装置が故障したならば、再生不能な(cata
strophic)データ喪失が生じる。常に動作可能に維持さ
れたシステムをサポートするために、「ホツト・スペ
ア」として知られている常時待機している付加的なスト
レージ装置を与えることが可能である。このようなスト
レージ装置は、システムに物理的に接続されているけれ
ども、他のストレージ装置が故障するまで動作しない。
他のストレージ装置が故障した場合には、故障したスト
レージ装置中のデータは、ホツト・スペアの装置におい
て、再生され、ストアされ、そして、ホツト・スペア装
置は、故障したストレージ装置の役割を果す。ホツト・
スペア技術は、システムを動作状態に維持し、そして、
ストレージ装置が故障した場合において、データ冗長度
を維持するけれども、この技術は、故障発生時以外は有
用な機能を果さない(そして、余分なコストがかかる)
付加的なストレージ装置を必要とする。
【0010】
【発明が解決しようとする課題】本発明の目的は、コン
ピユータ・システムにおいて、データをストアするため
の改良された方法及び装置を提供することにある。
【0011】本発明の他の目的は、コンピユータ・シス
テムにおいて、ストレージ装置の冗長アレイを管理する
ための方法及び装置を提供することにある。
【0012】本発明の他の目的は、ストレージ装置の冗
長アレイを有するコンピユータ・システムの性能を向上
させることにある。
【0013】本発明の他の目的は、ストレージ装置を改
良することによつて、1台のストレージ装置が故障した
としても、ストレージ装置の冗長アレイを有するコンピ
ユータ・システムが動作を続行することを可能とするこ
とにある。
【0014】本発明の他の目的は、ストレージ装置の冗
長アレイを有するコンピユータ・システムにおいて、改
良された性能及びデータ冗長度を与えることにある。
【0015】
【課題を解決するための手段】ストレージ装置のアレイ
・コントローラはアレイ中の複数個のストレージ装置を
制御する。アレイ・コントローラ中に設けられたストレ
ージ管理機構は、制御するストレージ装置に関するパリ
テイ・レコードを維持する。データ・ブロツク及びパリ
テイ・ブロツクは、米国特許第4761785号に記載
されたように(RAID−5)構成されるのが望まし
い。アレイ・コントローラは、更新データと、読み取り
データと、パリテイを発生するための変更マスクとを臨
時にストアするためのランダム・アクセス・キヤツシユ
・メモリを含んでいる。
【0016】アレイ中の1つのストレージ装置は、専用
の書き込み補佐ストレージ・ユニツトである。書き込み
補佐ストレージ・ユニツトは、アレイ中の他のストレー
ジ・ユニツトに対して書き込まれるデータの臨時的なス
トレージ領域である。アレイ・コントローラがストレー
ジ・ユニツトに書き込まれるべきデータを受け取つた
時、アレイ・コントローラは、先ず、書き込み補佐スト
レージ・ユニツトにデータを書き込む。書き込み補佐ス
トレージ・ユニツトは、パリテイにより保護を受けてい
ないので、書き込み補佐ストレージ・ユニツト中のデー
タを最初に読み取る必要はない。更に、書き込み補佐ス
トレージ・ユニツトは、単なる臨時的なストレージなの
で、書き込み補佐ストレージ・ユニツトに順番にデータ
を書き込むことが可能であり、これは、検索時間及び待
ち時間を著しく減少する。
【0017】アレイ・コントローラは、データが書き込
み補佐ストレージ・ユニツトに書き込まれた直後に、デ
ータがストレージ・ユニツトに書き込まれたことをCP
Uに通知する。これは、上述の米国特許に記載された技
術と同様に、データを更新するために2つの読み取り動
作と、2つの書き込み動作とを遂行する必要がある。然
しながら、これらの動作は、CPUにおけるタスクの処
理を非同期で遂行することができる。
【0018】ストレージ装置の管理機構は、更新されて
いるデータの現在の状態に関して、アレイ・コントロー
ラのメモリ中に状態情報を維持している。このような状
態情報に対して必要とするメモリの量は、相対的に小さ
く、データそれ自身よりも遥かに小さい。この状態情報
は、書き込み補佐ストレージ・ユニツトと共に常に、デ
ータ冗長度を与える。書き込み補佐ストレージ・ユニツ
トが故障した場合には、アレイ・コントローラは、あた
かも何事も生じなかつたように、そのRAMの内容から
データを更新し続ける。読み取り補佐ストレージ・ユニ
ツト以外のストレージ装置が故障した場合には、故障し
たストレージ装置中のデータは、ストレージ・ユニツト
のアレイ(書き込み補佐ストレージ・ユニツトを含む)
中の残りのストレージ装置及び状態情報を用いて再生す
ることができる。最後に、アレイ・コントローラ自身が
故障した場合には、ストレージ装置(読み取り補佐スト
レージ・ユニツトを含む)は、データを完全に再生する
のに必要な情報を含んでいる。
【0019】また、書き込み補佐ストレージ・ユニツト
は、ストレージ・ユニツトのアレイ中の他のストレージ
装置が故障した場合に、予備のストレージ装置として二
通りの目的に使用することができる。すべての未完成の
書き込み動作が完成され、そして、パリテイが更新され
た後、故障したストレージ装置中のデータは、他のすべ
てのストレージ装置を排他的オア論理演算することによ
つて再生され、そして、このデータは、書き込み補佐ス
トレージ・ユニツトにストアされる。次に、書き込み補
佐ストレージ・ユニツトは、書き込み補佐ストレージ・
ユニツトとしての機能を止めて、故障したストレージ装
置に代替する機能を果す。従つて、コンピユータ・シス
テムは、書き込み補佐ストレージ・ユニツトを持たない
けれども、通常通りの動作を続ける。書き込み補佐スト
レージ・ユニツトを持たないことの唯一の影響は、デー
タの更新動作の性能を大きく低下させることであるけれ
ども、しかし、データは完全に保護される。
【0020】
【実施例】図1は、本発明の実施例のコンピユータ・シ
ステム100の主要な要素を示すブロツク図である。ホ
スト・コンピユータ・システム101(以下、ホスト・
コンピユータと言う)は、デイスク・ユニツトのアレイ
・コントローラ103を有する高速度データ・バス10
2と通信する。アレイ・コントローラ103は、データ
・ストレージ装置104乃至108の動作を制御する。
良好な実施例において、データ・ストレージ装置104
乃至108は、回転磁気デイスクのストレージ装置であ
る。図1には、5個のストレージ装置が示されている
が、アレイ・コントローラ103に接続されるストレー
ジ装置の実際の数は、種々の数を取ることができるのは
容易に理解できるであろう。また、1台以上のコントロ
ーラ103がホスト・コンピユータ101に接続できる
のも容易に理解できる。ホスト・コンピユータ101
は、単一の入力部として示されているけれども、この道
の専門家であれば、ホスト・コンピユータ101は、通
常、中央処理装置(CPU)、メイン・メモリ、内部コ
ミユニケーシヨン・バス、そして、他のストレージ装置
を含むI/O装置のような多くの要素を含んでいること
は容易に理解できる。良好な実施例において、コンピユ
ータ・システム100は、IBMのAS/400コンピ
ユータ・システムであるが、他のコンピユータ・システ
ムであつてもよい。
【0021】デイスク装置104は、書き込み補佐スト
レージ・ユニツトである。残りのデイスク・ユニツト1
05乃至108はサービス・ストレージ・ユニツトとし
て設計されている。書き込み補佐ストレージ・ユニツト
104は、サービス・ストレージ・ユニツト105乃至
108に書き込まれるデータのための臨時のストレージ
領域である。各サービス・ストレージ・ユニツト105
乃至108のストレージ領域は、ブロツク111乃至1
18に論理的に分割される。良好な実施例においては、
デイスク・ユニツト104乃至108は、同じ記憶容量
を持つ物理的に同一のストレージ装置(ストアされるデ
ータを除く)であり、そして、ブロツク111乃至11
8は、同じサイズである。本発明において、異なつたサ
イズのストレージ・ユニツト、または、異なつたサイズ
のブロツクで構成することが可能であるけれども、同じ
サイズのストレージ・ユニツトの構成を持つ良好な実施
例は制御機構を簡略化する。
【0022】幾つかのサービス・ストレージ・ユニツト
中の同じロケーシヨンに位置付けられたすべてのブロツ
クのセツトは、ストライプ(stripe-条)を構成する。
図1において、ストレージ・ブロツク111乃至114
は、第1のストライプを構成し、ブロツク115乃至1
18は第2のストライプを構成している。各ストライプ
中の少なくとも1つのブロツクは、データ冗長度か、ま
たは、他の形式のエラー訂正コードに使用される。良好
な実施例において、データ冗長度は、各ストライプ中で
1つのパリテイ・ブロツクの形式を取つている。パリテ
イ・ブロツク111、116は、図1において、「P」
と指定して示されている。残りのブロツク112乃至1
15、117乃至118は、データをストアするための
データ・ストレージ・ブロツクである。ブロツク111
乃至114を構成するストライプのためのパリテイ・ブ
ロツクは、ブロツク111である。パリテイ・ブロツク
は、同じストライプに関する残りのブロツク中のデータ
の排他的オア論理演算の結果を含んでいる。
【0023】良好な実施例において、パリテイ・ブロツ
クは、図1に示したように、ラウンド・ロビンの態様で
異なつたサービス・ストレージ・ユニツトに跨がつて分
散されている。各書き込み動作において、コンピユータ
・システムは、書き込まれるデータを含むブロツクを更
新するばかりでなく、同じストライプのパリテイ・ブロ
ツクも更新しなければならないから、パリテイ・ブロツ
クは、通常、データ・ブロツクよりも、より頻繁に修正
される。異なつたサービス・ストレージ・ユニツトの間
でパリテイ・ブロツクを分散することは、殆どの場合に
アクセスの負担を分散することによつて性能を改善す
る。然しながら、このような分散は、本発明の下では必
要とせず、本発明の実施例においては、すべてのパリテ
イ・ブロツクを単一のデイスク装置にストアすることが
可能である。
【0024】上述したように、夫々がデータ・ブロツク
及びパリテイ・ブロツクを含んでいるサービス・ストレ
ージ・ユニツト中のストレージ領域をストライプの中に
割り当てることは、上述の米国特許第4761785号
に記載された装置と同じである。
【0025】図2は、アレイ・コントローラ103の細
部を示すブロツク図である。コントローラ103は、プ
ログラム可能なプロセツサ201と、ランダム・アクセ
ス・メモリ(RAM)202と、バス・インターフエー
ス回路205と、図示された幾つかの内部通信路を介し
て相互に通信するデイスク装置インターフエース回路2
06とを含んでいる。バス・インターフエース回路20
5は、高速度バス102を介してホスト・コンピユータ
101に送信し、そして、ホスト101から受信する。
デイスク装置インターフエース回路206は、デイスク
装置104乃至108に対して送信し、そして、それら
のデイスク装置から受信する。プログラム可能なプロセ
ツサ201は、メモリ202中に常駐するストレージ管
理制御プログラム210を実行することによつてアレイ
・コントローラ103の動作を制御する。アレイ・コン
トローラ103は、以下に説明されるように、パリテイ
及びデータの復旧を維持するために必要とするデータに
関する排他的オア論理演算処理を遂行する手段を含んで
いる。排他的オア論理演算は、プロセツサ201か、ま
たは、特別目的のハードウエア(図示せず)によつて遂
行することができる。
【0026】メモリ202は、揮発性ダイナミツクRA
Mの部分203と、不揮発性ダイナミツクRAMの部分
204を含んでいる。不揮発性RAM204は、システ
ムの電源がオフになつた場合でもデータを維持するRA
Mである。揮発性RAM203の内容は、システムの電
力供給がなくなると失なわれる。従来の技術を使用した
ダイナミツクRAM回路は、可成り安価であり、かつ、
不揮発性RAMよりも短いアクセス時間を持つている。
従つて、大部分の重要なデータをストアするためには、
ダイナミツクRAMを用いるのが好まれる。良好な実施
例において、アレイ・コントローラ103の初期化に必
要な制御プログラムの一部は、不揮発性RAM204に
ストアされており、制御プログラム210の残りの部分
は、システムが最初に電源を投入された時にホスト・コ
ンピユータ101からロードされ、そして、図2に示さ
れたようにダイナミツクRAM203中にストアされ
る。
【0027】メモリ202は、良好な実施例に従つた書
き込み補佐ストレージ・ユニツトの動作を補佐する幾つ
かのレコードを含んでいる。ダイナミツクRAM203
の中の未確定リスト(uncommited list)212は、未
だ完成されていない「書き込み」動作を表示するリスト
である。特に、アレイ・コントローラ103がホスト・
コンピユータ101からの「書き込み」コマンドを受け
取り、書き込み補佐ストレージ・ユニツト104に書き
込むためのデータを書き込み、そして、動作が完了した
ことをホスト・コンピユータ101に信号を送つた後
で、データがサービス・ストレージ・ユニツト105乃
至108に対して実際にデータが書き込まれる前に、通
常は、若干の時間的な遅延がある。未確定リスト212
は、そのような継続中の状態にある動作を記録するもの
である。データがサービス・ストレージ・ユニツトに書
き込まれて、パリテイが更新される前に、若し、ストレ
ージ装置の故障が発生したならば、以下に詳しく説明さ
れるように、未確定リスト212が再生動作のために用
いられる。良好な実施例において、未確定リスト212
は、関連する未完了の「書き込み」動作がストアされた
時点において、書き込み補佐ストレージ・ユニツト10
4中の可変長のアドレス・リストである。
【0028】不揮発性RAM204は、状態レコード2
11を含んでいる。状態情報は、書き込み補佐ストレー
ジ・ユニツト104の最も新しい未確定の書き込み動作
のアドレスを含んでおり、この状態情報は、ダイナミツ
クRAM203の内容が喪失された事象が生じた場合に
データを再構成し、そして、アレイ中の各デイスク・ユ
ニツト104乃至108の現在の状態(即ち、そのユニ
ツトがオンラインで機能しているユニツトであるか否
か、そして、そのユニツトが書き込み補佐ストレージ・
ユニツトとして構成されているのか、またはサービス・
ストレージ・ユニツトとして構成されているのかという
状態)を再構成するために使用される。図示されていな
いが、メモリ202は他のレコードを含むことができ
る。
【0029】制御プログラム210及び上述のレコード
をストアすることに加えて、ダイナミツクRAM203
は、ストレージ装置104乃至108から読み取られ、
または、それらのストレージ装置に書き込まれるデータ
の臨時的なストレージ用のキヤツシユ・メモリとして使
用される。
【0030】本発明に必要なハードウエア及びソフトウ
エアの特徴に関連して、コンピユータ・システム100
の動作を以下に説明する。アレイ・コントローラ103
及び接続されたデイスク・ユニツト104乃至108
は、ホスト・コンピユータ101からは1つのストレー
ジ・エンテイテイとして見える。ホスト・コンピユータ
101は、アレイ・コントローラ103に対して「読み
取り」及び「書き込み」コマンドを発生し、これらのコ
マンドによつて、アレイ・コントローラがデイスク装置
からデータを読み取り、または、デイスク装置へデータ
を書き込むことを要求する。ホスト・コンピユータ10
1は、関連動作が完了した時に、読み取りデータか、ま
たは、完了メツセージを受け取る。ホスト・コンピユー
タ101は、更新パリテイ及びコントローラ103によ
つて遂行された他のデイスク維持のメカニズムには関与
しない。
【0031】通常の動作において、書き込み補佐ストレ
ージ・ユニツト104は、書き込み専用であつて、「読
み取り」動作の間では使用されない。アレイ・コントロ
ーラ103は、ホスト・コンピユータ101からの「読
み取り」コマンドを受け取り、そして、要求されたデー
タがコントローラのダイナミツクRAM203の中に存
在するか否かを決定することによつて「読み取り」動作
を実行する。若し、RAM203の中に要求されたデー
タがあれば、ダイナミツクRAM203中のデータは、
ホスト・コンピユータの中に直接に送られる。若し、R
AM203中に要求されたデータがなければ、データ
は、先ず、該当するストレージ装置からダイナミツクR
AM203の中に読み取られ、そして、ダイナミツクR
AM203から、ホスト・コンピユータ101に転送さ
れる。ダイナミツクRAM203のサイズに応じて、デ
ータは、ダイナミツクRAM203中にストアされ、そ
のデータについての「書き込み」動作を待つ。「書き込
み」動作が遂行される時、若し、更新されるべきデータ
の元のバージヨンが、既にダイナミツクRAM203の
中にあれば、パリテイを更新するために再度データを読
み取る必要はなく、従つて、システムの性能を向上させ
る。ある種のアプリケーシヨン・プログラムにおいて、
ホスト・コンピユータは、読み取られたどのデータが変
更される可能性があるかをコントローラに対して表示す
ることができる。
【0032】「書き込み」動作は、アレイ・コントロー
ラのプロセツサ201中で動作する制御プログラムの一
部である2つの非同期のタスクによつて遂行される。第
1の非同期タスク(図3及び図4に示された高速度書き
込みタスク)は、書き込み補佐ストレージ・ユニツト1
04を管理し、そして、動作が完了したことをホスト・
コンピユータ101に通知する時を決定する。第2の非
同期のタスク(図5に示したサービス・ストレージ・ユ
ニツトへの書き込みタスク)は、データを書き込むこと
と、デイスク装置105乃至108に対するパリテイを
更新することとを遂行する。
【0033】ステツプ301において、アレイ・コント
ローラ103中の「書き込み」動作は、ホスト・コンピ
ユータから「読み取り」コマンドを受け取ることにより
開始される。ステツプ302において、「書き込み」コ
マンドは、メモリ202中の書き込みコマンドの待ち行
列中に入れられる。サービス・ストレージ・ユニツトの
書き込みタスクは、書き込みコマンドの待ち行列から書
き込みコマンドを検索して、その書き込みコマンドを直
ちに処理する。高速度書き込みタスクは、図3のステツ
プ303の分岐路に続く。
【0034】ステツプ303において、高速度書き込み
タスクは、状態レコード211をチエツクして、書き込
み補佐機能が付勢されているか否かを決定することによ
つて開始する。若し、サービス・ストレージ・ユニツト
105乃至108の内の1つが故障しており、このサー
ビス・ストレージ・ユニツトのデータが書き込み補佐ス
トレージ・ユニツト104において再生されたならば、
以下に説明されるように、高速度書き込みタスクの機能
は滅勢される。若し、書き込み補佐機能が滅勢されてい
るならば、ステツプ305において、高速度書き込みタ
スクは、サービス・ストレージ・ユニツトの書き込みタ
スクが終了するのを待つ。若し、書き込み補佐機能が付
勢されていれば、高速度書き込みタスクはコマンドを分
析するための処理に進む。
【0035】良好な実施例において、書き込み補佐デイ
スク・ユニツト(WAD)、即ち書き込み補佐ストレー
ジ・ユニツト104は、すべての「書き込み」動作に対
して用いられない。ステツプ304において、高速度書
き込みタスクは、以下に詳しく説明するように、「書き
込み」データをキヤツシングする(キヤツシユ・メモリ
にストアする)ために書き込み補佐ストレージ・ユニツ
ト104を使用するか否かを決定する。本発明のストレ
ージ・サブシステムの性能を分析した結果、小さな「書
き込み」動作のキヤツシングから最高の性能の改善が得
られることと、書き込まれるデータの量が大きくなるに
従つて、性能が相対的に向上することとが判つている。
書き込み補佐ストレージ・ユニツトを使用することは性
能に何ら改善を与えないので、最終的には、書き込まれ
るべきデータは、可成り大きくなる。
【0036】上述のような性能の改善があることには幾
つかの理由がある。サービス・ストレージ・ユニツトを
更新するために必要な仕事の量は変らないから、書き込
み補佐ストレージ・ユニツトの使用は、常に、ストレー
ジ・サブシステムに対して余分な仕事を伴う。この余分
な負担は、動作が完了することを早期に通知することに
よつて得られる性能的な利益により正当化されなければ
ならない。書き込み補佐ストレージ・ユニツトは、順番
に動作することによつて検索時間と、待ち時間とを減少
する。小さな「書き込み」動作に対する検索時間及び待
ち時間に起因する応答時間は、大きな「書き込み」動作
に対する応答時間よりも相対的に大きいから、書き込み
補佐ストレージ・ユニツトにより生じる性能の改善は、
相対的に大きい。加えて、大きな「書き込み」動作が、
サービス・ストレージ・ユニツトの同じストライプ中の
2つ、または、それ以上のブロツクにデータを書き込む
場合、パリテイ・ブロツクを更新する(後述する)のに
必要な或る種のステツプを省略したり、組み合わせるこ
とが可能なので、データの書き込みのブロツク毎に、2
つの読み取り動作及び2つの書き込み動作よりも少ない
動作数ですむ。最後に、良好な実施例においては、書き
込み補佐ストレージ・ユニツトは1つだけであり、サー
ビス・ストレージ・ユニツトは複数個あるから、書き込
み補佐ストレージ・ユニツト中の滞貨を減らすことが可
能である。
【0037】ステツプ304において、書き込み補佐ス
トレージ・ユニツトを使用するか否かを決定すること
は、理想的には、動作に対して利用可能なリソースと、
書き込み補佐ストレージ・ユニツトに対して書き込みを
完了するのに必要な時間(サービス・ストレージ・ユニ
ツトに対して書き込みを完了するのに必要な時間とは対
照的に)の予測との2つを考慮することに基礎を置いて
いる。良好な実施例において、書き込み補佐ストレージ
・ユニツトは、下記の基準のすべてを満足するならば、
「書き込み」動作に用いられる。
【0038】(a) 考慮している「書き込み」コマン
ド中のデータ・ブロツクの数が図6に示した「閾値#
1」よりも小さいこと。この場合、「閾値#1」は、バ
ツフアの大きさ、または、「書き込み」コマンドを処理
するのに利用可能な他のリソースの大きさに関する制限
を表わしている。
【0039】(b) WADの待ち行列中の「書き込
み」コマンド中のデータ・ブロツクの数が図6に示した
「閾値#2」よりも小さいこと。この数はWADの行列
に加えられたすべての新しいコマンドを開始する時間に
ほぼ比例する。
【0040】(c) WADの待ち行列中のデータ・ブ
ロツクの数と、「書き込み」コマンド中のデータ・ブロ
ツクの数とを加算した数が図6に示した「閾値#3」よ
りも小さいこと。この合計数は、書き込み補佐ストレー
ジ・ユニツトに対して、目下考慮中のコマンドの書き込
みを完了するのに必要な時間にほぼ比例する。上述の場
合、「閾値#3」は、WADの待ち行列のリソースの制
限か、または、コマンドを完了するのに許容された最大
時間の何れかを表わす。
【0041】このテストは図6のグラフに示されてい
る。座標軸501及び502は、目下考慮中の「書き込
み」コマンド中のブロツクの数と、WADの待ち行列中
の現在のブロツクの数とを夫々示している。斜線を付し
た領域503は、書き込み補佐ストレージ・ユニツトを
用いるべきことを決定する部分を示している。
【0042】ステツプ304において、「書き込み」動
作が、書き込み補佐ストレージ・ユニツトを使用するた
めの基準を満たさないことを、若し、コントローラ10
3が決定したならば、ステツプ305において、高速書
き込みタスクは、単純に、サービス・ストレージ・ユニ
ツトの書き込みタスクが完了するのを待機する。サービ
ス・ストレージ・ユニツトのタスクが完了した時、ステ
ツプ311において、第1のタスクは、ホスト・コンピ
ユータ101に対してコマンド完了メツセージを送り、
「書き込み」動作が完了したことを確定する。
【0043】ステツプ304において、「書き込み」動
作が書き込み補佐ストレージ・ユニツトを使用する基準
を満足するものと決定されたならば、ステツプ306に
おいて、「書き込み」コマンドが書き込み補佐ストレー
ジ・ユニツトの待ち行列中に置かれて、書き込み補佐ス
トレージ・ユニツト104によるサービスを待つ。次
に、ステツプ307及び308において、高速書き込み
タスクは、サービス・ストレージ・ユニツトのタスクを
完了するか、あるいは、戻らない点に到達する(即ち、
書き込み補佐ストレージ・ユニツト104がデータを受
け取る準備完了の点に到達する)ために、書き込み補佐
ストレージ・ユニツトの待ち行列中の「書き込み」コマ
ンドを待つ。若し、サービス・ストレージ・ユニツトの
タスクが最初に完了したならば(「アレイへ書き込みを
行なう」ステツプ307)、ステツプ310において、
その書き込みコマンドは、書き込み補佐ストレージ・ユ
ニツトの待ち行列から取り除かれ、そして、ステツプ3
11において、コマンド完了メツセージがホスト・コン
ピユータ101に送られる。
【0044】サービス・ストレージ・ユニツトのタスク
が完了する前に、若し、書き込み補佐ストレージ・ユニ
ツトの待ち行列中の「書き込み」コマンドが、戻らない
点に到達したならば(ステツプ308)、ステツプ31
2において、データは、書き込み補佐ストレージ・ユニ
ツト104に書き込まれる。処理のこの部分を完了する
のに必要なステツプは図4に示されている。ステツプ3
21において、この「書き込み」コマンドは、先ず、ダ
イナミツクRAM203中の不確定リスト212に加え
られる。また、不確定リストのバツクアツプ・コピー
は、以下に詳しく説明するように、書き込み補佐ストレ
ージ・ユニツト104にも存在する。次に、ステツプ3
22において、アレイ・コントローラは、ヘツダ・ブロ
ツク及びトレイラ・ブロツクを書き込みデータ中に作成
し、このデータを書き込み補佐ストレージ・ユニツト1
04に送る。次に、ステツプ323及び324におい
て、サービス・ストレージ・ユニツトへの書き込みタス
クが完了するまでか、あるいは、書き込み補佐ストレー
ジ・ユニツトに送られたデータが書き込み補佐ストレー
ジ・ユニツトに物理的に書き込まれるまで、高速書き込
みタスクは待機する。若し、サービス・ストレージ・ユ
ニツトの書き込みタスクが最初に完了したならば(ステ
ツプ323)、コントローラ103は、ホスト・コンピ
ユータ101にコマンド完了メツセージを送り(ステツ
プ325)、そして、不確定リストからこの「書き込
み」コマンドを取り除く(ステツプ328)。若し、書
き込み補佐ストレージ・ユニツトへのデータの書き込み
が最初に完了したならば(ステツプ324)、ステツプ
326において、コントローラは、ホスト・コンピユー
タ101にコマンド完了メツセージを送る。次に、ステ
ツプ327において、高速度書き込みタスクは、サービ
ス・ストレージ・ユニツトのタスクを完了するために待
機する。サービス・ストレージ・ユニツトのタスクが完
了した後、ステツプ328において、この「書き込み」
コマンドは不確定リストから取り除かれる。
【0045】代表的な動作において、「書き込み」コマ
ンドは、ブロツク301、302、303、304、3
06、307、308、321、322、323、32
4、326、327、328によつて表示された経路に
従つて処理される。この経路に続いて、コマンド完了メ
ツセージは、サービス・ストレージ・ユニツトへのデー
タの実際の書き込みが完了する前に(ステツプ32
7)、コマンド完了メツセージがホスト・コンピユータ
へ送られる(ステツプ326)ことが判る。従つて、
「書き込み」コマンド中に含まれたデータが、ストレー
ジ・ユニツトにあたかも物理的に書き込まれ、パリテイ
が更新されたかのように(実際に行なわれる必要はない
が)、ホスト・コンピユータは、自由に処理を続ける。
【0046】第2の非同期のタスク(サービス・ストレ
ージ・ユニツトの書き込みタスク)は、ダイナミツクR
AM203から、サービス・デイスク装置にデータを書
き込み、そしてパリテイを更新する。このタスクの流れ
図が図5に示されている。図5のステツプ401は、メ
モリ202中に待ち行列にされた「書き込み」動作の中
から1つの「書き込み」動作を選択する。選択基準は、
本発明の要部ではないが、例えば、FIFO(先入れ先
出し)により検索時間/待ち時間を短縮する基準とか、
または、システムの性能及び他の要件に基づく他の基準
であつてよい。「書き込み」動作が遂行された時には、
パリテイは更新されなければならない。古いデータと、
新しいデータとを排他的オア論理演算することによつ
て、「書き込み」動作により変更されたビツトのビツト
・マツプを得ることが可能である。排他的オア演算を行
なつた現状の(existing)パリテイ・データを持つこの
ビツト・マツプは、更新されたパリテイ・データを発生
する。従つて、ステツプ402において、ストレージに
書き込む前に、このタスクは、古いデータがダイナミツ
クRAM203中に、未だ変更されていないフオームで
存在するか否かを、先ずチエツクする。若し、そのよう
な古いデータが存在していなければ、ステツプ403に
おいて、ビツト・マツプがストアされているサービス・
ストレージ・ユニツト中のデータ・ブロツクからRAM
203の中に読み込まれなければならない。次に、ステ
ツプ404において、RAM203中のこの古いデータ
は、変更されたデータ・ビツトを発生するために、RA
M203中の新しいデータと排他的オア演算される。ス
テツプ405において、新しいデータが用いられるサー
ビス・ストレージ・ユニツト中の同じデータ・ブロツク
に書き込まれている間に、ビツト・マツプは、RAM2
03の中に臨時的に保存される。次に、ステツプ40
6、407において、古いパリテイ・データは、パリテ
イ・ブロツクの同じストライプ中の対応するパリテイ・
ブロツクからRAM203の中に読み取られ(若し、な
ければ、既にRAM中にある)、そして、ステツプ40
8において、新しいパリテイ・データを発生するため
に、古いパリテイ・データとビツト・マツプとが排他的
オア論理演算される。ステツプ409において、この新
しいパリテイ・データは、デイスク装置中の同じパリテ
イ・ブロツクに書き戻され、第2のタスクを完了する。
第2のタスクが完了した時、適当なメツセージ、または
割込みが第1のタスクに送られる。
【0047】図5に示されたステツプは、サービス・デ
イスクの単一ブロツクにストアされたデータを含む書き
込み動作のような特に小さな書き込み動作の代表例であ
る。大きな書き込み動作が同じストライプの中の複数ブ
ロツクを含む場合には、性能を改善するために、或る種
のステツプを除外したり、または、組み合わせることが
可能である。例えば、単一のストライプ中の2つのブロ
ツクが書き込まれる場合に、コントローラは、通常、
(1)第1のブロツク中のデータを読み取り、(2)変
更マスクを発生するために、読み取られたデータと、書
き込まれるべき新しいデータとを排他的オア演算し、
(3)新しいデータを第1のブロツクに書き込み、
(4)第2のブロツク中のデータを読み取り、(5)変
更マスクを更新するために、第1のブロツクからの変更
マスクと、読み取られたデータとを排他的オア演算し、
(6)変更マスクを再度、更新するために、第2のブロ
ツクに書き込まれるデータと、変更マスクとを排他的オ
ア演算し、(7)第2のブロツクに新しいデータを書き
込み、(8)パリテイ・ブロツクを読み取り、(9)新
しいパリテイを発生するために、変更マスクと、パリテ
イ・ブロツクとを排他的オア演算し、(10)新しいパ
リテイを書き込む。この場合、2つの独立したブロツク
が更新されたけれども、3つの書き込みと、3つの読み
取りとを必要としただけであることには注意を要する。
ストライプ中の大部分のブロツク、またはすべてのブロ
ツクが書き込まれる場合において、各書き込みの前に読
み取るのではなく、すべてのブロツクにアクセスするこ
とが、より効率的である。この場合、コントローラは、
更新されていない各ブロツクを先ず読み取り、排他的オ
ア演算によつてパリテイを集め、次に、更新された各ブ
ロツクを書き込み、再度、相次ぐ排他的オア演算によつ
てパリテイを集める。データの最後の書き込みの後、集
められたパリテイはパリテイ・ブロツクに書き込まれ
る。これらの理由のために、書き込み補佐ストレージ・
ユニツトの使用は、大きな「読み取り」動作に対してあ
まり魅力的でない。従つて、良好な実施例においては、
ステツプ303において、書き込みキヤツシユ・ユニツ
トが性能を改善する可能性があるほどに、「書き込み」
動作が十分に小さいか否かを、コントローラが最初の決
定をする。
【0048】データ冗長度を常に維持するために、書き
込み補佐ストレージ・ユニツト104に書き込まれた情
報は、ダイナミツク・メモリ203の内容が喪失された
事象においてデータを再生するのに必要な状態情報を含
んでいる。従つて、書き込み補佐ストレージ・ユニツト
へのデータの各書き込みの間で、コントローラは、ステ
ツプ322において示されているように、この状態情報
を含むヘツダ/トレイラ・ブロツクを作成する。図7
は、書き込み補佐ストレージ・ユニツト104に書き込
まれるデータ・レコードの構造の高レベルの図表であ
る。代表的なデータ・レコード601はヘツダ・ブロツ
ク602と、トレイラ・ブロツク606を従えた任意の
数のデータ・ブロツク603乃至605と、1つ、また
は、それ以上の性能向上ギヤツプ(performance gap)
ブロツク607とを含んでいる。
【0049】ヘツダ・ブロツク及びトレイラ・ブロツク
602、606は、データを再生するために必要とする
状態及び他の情報だけを含んでいる。サービス・ストレ
ージ・ユニツト105乃至108に書き込まれるデータ
それ自身は、データ・ブロツク603乃至605の中に
すべて含まれている。トレイラ・ブロツク606は、第
1ヘツダ・ブロツク602の逐語的なコピーである。ト
レイラ・ブロツク602を挿入する目的は、すべてのデ
ータ・ブロツクが事実上、書き込み補佐ユニツト104
に書き込まれたことを、データの再生の間で照合するこ
とにある。
【0050】性能向上ギヤツプ607は、使用されない
データを含む予め決められた数のブロツクである。性能
向上ギヤツプ607の目的は、複数のコマンドがWAD
の待ち行列中にある場合に、次の「書き込み」コマンド
を処理するのに十分な時間をコントローラに与えること
にある。アレイ・コントローラがWADの待ち行列中の
次の「書き込み」コマンドを処理している間に(即ち、
ヘツダ/トレイラの作成、状態のチエツク)、書き込み
補佐ストレージ・ユニツトは、角度的に小さな距離だけ
レコードの終端部を過ぎて回転する。若し、次のレコー
ド・ブロツクが直接次に続くブロツクの位置で開始され
たならば、アレイ・コントローラは、次の書き込み動作
が開始可能にされる前に、デイスクが完全に1回転する
のを待たなければならない。このような事態を避けるた
めに、使用しないデータを含む性能向上ギヤツプ607
がレコード・ブロツクの終端部に挿入されている。回転
デイスクが性能向上ギヤツプ607を含むレコード・ブ
ロツクを通過するのに費す経過時間の間で、アレイ・コ
ントローラは、次の「読み取り」動作に対して準備完了
状態になる。1つの性能向上ギヤツプ・ブロツク607
が図7に示されているけれども、このようなブロツク6
07の実際の数は、デイスク装置の特性に従つて変更さ
れることには注意を要する。
【0051】データ・レコード601に加えて、アレイ
・コントローラは、ある状態の下で、書き込み補佐スト
レージ・ユニツト104に更新レコードを書き込む。更
新レコードは、ヘツダ・ブロツクだけを含んでいる。更
新レコードは、書き込み補佐ストレージ・ユニツト10
4への書き込みを待つているWADの待ち行列中に「書
き込み」動作がない時に、データ・レコードのチエーン
の終端部に付加されている。このような場合において、
更新レコードは、他の更新レコードか、あるいは、現存
のチエーンに付加されたデータ・レコードに最終的に重
ね書きされる(若し、不確定リスト中に状態の変化があ
れば)。また、更新レコードは、デイスク走査の終りに
おいて(即ち、デイスク・アームがデイスクの前面を横
切つて走査して、次のレコードを書き込むために、その
走査の開始点に戻らねばならない)データ・レコード6
01のチエーンに付加される。データ・レコードは、走
査の終りと始めの間で分れることは絶対にないから、走
査の始めを指示する更新レコードは、走査中の残りのデ
イスク・スペースが次のデータ・レコードをストアする
のに十分である限り、チエーンの端部に挿入される。
【0052】ヘツダ・ブロツク、またはトレイラ・ブロ
ツクの構造は、図8に示されている。このブロツクは、
コマンド識別子701、コマンド・アドレス702、状
態ブロツクの数703、次のコマンドのアドレス70
4、不確定リストのエントリの数705、不確定リスト
のエントリ706、707、パデイング708、SCS
Iコマンド709及びコマンド・エキステンシヨン71
0とを含んでいる。
【0053】コマンド識別子701は、アレイ・コント
ローラ103によつて発生され、書き込みレコードに関
連された特別の4バイトの識別子である。コントローラ
が新しいレコードを書き込み補佐ストレージ・ユニツト
104に書き込む度に、コントローラは識別子に1を加
え、識別子がX^FFFFFFFF^に達した後に0に戻る。デー
タ再生の一部として、書き込み補佐ストレージ・ユニツ
ト中にストアされた書き込みコマンドのチエーンを横切
つた時、識別子は、次のレコードがチエーンの実際の部
分であることを照合するのに用いられる。
【0054】コマンド・アドレス702は、レコード・
ブロツクが開始する書き込み補佐ストレージ・ユニツト
中のアドレスを含んでいる。状態ブロツクの数703
は、ヘツダ・レコード中のブロツクの数を含んでいる。
良好な実施例において、この数は、通常1である(各ブ
ロツクは520バイトのデータを含んでいる)。然しな
がら、若し、不確定リストが異常に長ければ、ヘツダは
1ブロツク以上を占めることができる。他方、トレイラ
・ブロツクは、ヘツダ・ブロツクが複数のブロツクを含
んでいたとしても、ヘツダの最初のブロツクだけを反復
する。
【0055】次のコマンドのアドレス704は、チエー
ン中の次のレコードがストアされている書き込み補佐ス
トレージ・ユニツトのアドレスを含んでいる。データ・
レコードの場合には、これは、性能向上ギヤツプ607
の直ぐ後のブロツクのアドレスである(これは、更新レ
コードか、または、次のデータ・レコードの何れかの開
始点である)。チエーン中の最後のデータ・レコードに
付加された更新レコードの場合、次のコマンドのアドレ
スは、更新レコードそれ自身の開始アドレスである(即
ち、更新レコードは、チエーンの端部を告知する次のブ
ロツクとして、それ自身を指示する)。レコードがデイ
スク・アームの走査中の最後のレコードである場合に、
若し、更新レコードが発生されたならば、ヘツダ・ブロ
ツク中の次のアドレスは、書き込み補佐ストレージの開
始アドレスを指示する。書き込み補佐ストレージ・ユニ
ツトが最初にフオーマツトされた時、ヘツダ・ブロツク
だけを含む空の更新レコードが開始アドレスの位置に挿
入され、この場合には、このヘツダ・ブロツクの次のコ
マンドのアドレスは、それ自身を指示する。従つて、デ
ータ再生の間でレコードのチエーンを横切つたときに、
コントローラは、コントローラがそれ自身を指示するア
ドレスに遭遇するまで、次のコマンドのアドレス704
中の各ポインタに従う。
【0056】不確定リストのエントリの数705は、後
続する不確定リストのエントリ数を含んでいる。不確定
リストの各エントリ706、707は、以下に説明され
るように、サービス・ストレージ・ユニツトに未だ書き
込まれていないレコードのためのヘツダ・ブロツクの書
き込み補佐ストレージ・ユニツトのアドレスである。ヘ
ツダ/トレイラ・ブロツク中の不確定リストは、ヘツダ
/トレイラ・ブロツクが発生された時点でそれが存在し
ていた、ダイナミツクRAM中の不確定リスト212の
コピーである。書き込まれた後、データ・レコード中の
不確定リストは、ダイナミツクRAM中の不確定リスト
212の現在の状態を反映するために更新されない。そ
の代わりに、より最近の不確定リストが、データ、また
は更新レコードの次に書き込まれるヘツダ中に記録され
る。不確定リストのエントリ706、707は、図8に
示されているけれども、エントリの実際の数は種々変更
される。
【0057】SCSIコマンド709及びコマンド・エ
キステンシヨン710は、ヘツダ/トレイラ・ブロツク
の終端部に対して相対的に一定の位置にストアされてい
る。パデイング708は、SCSIコマンド709の始
めにおいて、ブロツクを満たすために必要な可変長の使
用しないデータを含んでいる。SCSIコマンド709
は、サービス・ストレージ・ユニツト105乃至108
に向けられる書き込みコマンドを含み、良好な実施例に
おいて、このコマンドは、アレイ・コントローラ103
と通信するためのSCSI(Small Computer Systems I
nterface)プロトコルを用いている。その他の事項と共
に、SCSIコマンドは、ヘツダ・ブロツクに続いて書
き込まれるべきデータの長さを含んでいる。コマンド・
エキステンシヨン710は、SCSIコマンドの一部で
はない付加的なコマンド・パラメータを含むことができ
る。良好な実施例において、コマンド・エキステンシヨ
ン710は、ビツト・マツプのスキツプ・マスクに使用
され、他のデータ・ブロツクがスキツプされている間
に、レコード中の選択されたデータ・ブロツクを書き込
ませることができる。
【0058】本発明のストレージ・サブシステムは、任
意のデイスク装置の故障事象においてデータを保護し、
あるいは、アレイ・コントローラのダイナミツク・メモ
リ204の内容の喪失事象においてデータを保護するた
めに設計される。前者の事象において、サブシステム
は、動的にデータを復旧(再生)して、動作を続行する
ことができる。後者の事象は、システムの電源の故障、
または、システム全体として影響を受ける他の致命的な
事象を総括的に表わしている。この場合、故障を生じた
状態が修復されるまで、コントローラは動作を続けるこ
とはできないが、ストレージ装置中のデータの一貫性は
保持される。
【0059】アレイ・コントローラ103から見て、各
ストレージ・ユニツト104乃至108は、適正に機能
しているか否かをそれ自身で知る装置である。ストレー
ジ・ユニツトそれ自身は、或る種の内部的な故障に対処
することのできる内部診断及びエラー回復の機構を含む
ことができる。このような機構は、本発明の要部を構成
しない。本発明において、ストレージ・ユニツトの故障
とは、機能的な故障、つまり、データへのアクセスの故
障を意味する。このような故障は、ストレージ・ユニツ
トそれ自身の故障によつて発生することがあり、そうで
はない場合もある。後者の場合、例えば、ストレージ・
ユニツトの電源の故障とか、あるいは、データ用ケーブ
ルの遮断とかがある。アレイ・コントローラから見た場
合、原因は何であれ、これらの故障はストレージ・ユニ
ツトの故障である。このような故障を検出する検出機構
は公知である。
【0060】書き込み補佐ストレージ・ユニツト104
の故障事象において、アレイ・コントローラ103は、
書き込み補佐ストレージ・ユニツトが最早や正常に動作
せず、以後は、書き込み補佐ストレージ・ユニツトを使
用することなく、以前のようにサービス・ストレージ・
ユニツトの動作を続行することを反映するために、不揮
発性RAM中の状態情報を更新する。
【0061】図9及び図10は、サービス・ストレージ
・ユニツト105乃至108の内の1台が故障した場合
に、アレイ・コントローラ103によつて取られるステ
ツプを示す図である。図9は、回復処理全体を示す高レ
ベルの流れ図である。ステツプ801において、先ず、
アレイ・コントローラ103は、「書き込み」コマンド
が、書き込み補佐ストレージ・ユニツトに書き込まれな
いように、書き込み補佐ストレージ・ユニツトを滅勢す
る。次に、ステツプ802において、アレイ・コントロ
ーラは、パリテイの更新を含んで、不確定リスト212
の中にある書き込み補佐ストレージ・ユニツトへの未完
了の「書き込み」動作のすべての書き込みを完了する。
次に、ステツプ803において、アレイ・コントローラ
は、故障したサービス・ストレージ・ユニツトに対して
前に割り当てられていたストレージ空間を、書き込み補
佐ストレージ・ユニツトに動的に割り当てる。次に、ス
テツプ804において、故障したサービス・ストレージ
・ユニツト中のデータは、残りのサービス・ストレージ
・ユニツト中の同じ位置にあるデータに排他的オア論理
演算を行なつて再生され、そして、書き込み補佐ストレ
ージ・ユニツトとして前に割り当てられていた書き込み
補佐ストレージ・ユニツト中に保存される。ステツプ8
02乃至804の処理は繰り返される。次に、ステツプ
805において、サブシステムは、故障したサービス・
ストレージ・ユニツトの機能を遂行する書き込み補佐ス
トレージ・ユニツト104によつて、書き込み補佐なし
で通常の機能を続行する。
【0062】図10は、図9において単一のブロツク8
02によつて表わされた未完了の「書き込み」動作のす
べてを完了するのに必要とするステツプを示す図であ
る。夫々が個々の方法を必要とする幾つかの場合があ
る。若し、未完了の書き込み動作が、故障したデイスク
・ユニツトに対してその上のアクセスを必要としないな
らば(ステツプ901)、ステツプ904において、書
き込み動作は通常のように進行する。これは、書き込み
動作が故障したデイスク・ユニツトへのアクセスを必要
としない場合か、または、故障したデイスク・ユニツト
が故障する前に既にアクセスされていた場合かの何れか
である。若し、アクセスを必要とするが、読み取りアク
セスを必要としないならば(即ち、書き込みアクセスだ
けを必要とする、ステツプ902)、アレイ・コントロ
ーラは、単純に、故障したデイスク・ユニツトへの書き
込みを無視し、そして、、ステツプ905において、故
障したデイスク・ユニツトにあたかも書き込まれたかの
ように、書き込み動作を続ける。この処理は、例えば図
5のステツプ402、403がデイスク・ユニツトの故
障の前に完了したけれども、ステツプ405を持たない
場合である。また、この処理は、例えば、書き込み動作
が1つのストリツプ中のすべてのブロツクか、または大
部分のブロツクを含み、そして、図5に示した変更マス
クを発生するための書き込み前に各ブロツクを読み取る
代わりに、ブロツクが読み取りだけか、または書き込み
だけの何れかであり、かつ、上述したように、変更マス
クが各読み取り、または書き込みにより集められる場合
にも発生する。
【0063】若し、故障したデイスク・ユニツトへの読
み取りアクセスを必要とするが、書き込みアクセスを必
要としないならば(ステツプ903)、未完了の書き込
み動作は、ストライプ中の殆どのブロツクを更新する複
数ブロツクの読み取り動作であるが、故障したデイスク
・ユニツト中のブロツクには影響しない。影響されない
ブロツクは、影響されたブロツクが書き込まれる前に読
み取られるので、影響されたブロツクは未だ変更されて
いない。この場合において、ステツプ906において、
図5のプロシージヤを用いることにより、書き込む前に
更新されるべき各ブロツクを読み取り、かつ、変更マス
クを集めることによつて未完了の書き込み動作を完了す
ることが可能である。
【0064】最後の場合として、故障したデイスク・ユ
ニツトへの読み取り及び書き込みアクセスを必要とする
場合(ブロツク903からの「イエス」の分岐路)があ
る。この場合において、残りのすべてのサービス・スト
レージ・ユニツト(パリテイ・ブロツクを含むサービス
・ストレージ・ユニツト以外)中の同じストライプ中の
ブロツクは、ステツプ907において、読み取られるか
(または、更新を必要とする)、または、ステツプ90
8において書き込まれるかのいずれかであり、関連した
読み取り、または書き込み動作からのデータは、その
後、パリテイを集めるために排他的オア論理演算処理さ
れる。ステツプ909において、この部分的パリテイ
は、新しいパリテイを得るために、故障したデイスク・
ユニツトに書き込まれるデータと排他的オア論理演算処
理され、ステツプ910において、新しいパリテイは、
パリテイ・ブロツクに書き込まれる。
【0065】アレイ・コントローラは、デイスク・ユニ
ツトが故障した時点で、書き込み動作に対して上述の幾
つかのステツプを完了し、そして、このような場合に
は、結果物(変更マスク、読み取られたデータ等)はア
レイ・コントローラのダイナミツク・メモリ203の中
にあるから、アレイ・コントローラはこのようなステツ
プを反復する必要がないことには注意を払われたい。
【0066】上述のように、未完了の書き込み動作が完
了した後に、書き込み補佐ストレージ・ユニツトは、故
障したサービス・ストレージ・ユニツトの機能を取るこ
とができる。アレイ・コントローラは、故障したサービ
ス・ストレージ・ユニツトが最早や使用できないこと
と、書き込み補佐ストレージ・ユニツトが故障したサー
ビス・ストレージ・ユニツト中に前に含まれていたデー
タを保有していることとを反映するために、コントロー
ラの状態情報を更新する。故障したサービス・ストレー
ジ・ユニツト中のデータは、一度に再生することができ
るし、必要に応じてブロツク中に再生することもでき
る。このような動的な再生技術は、1990年6月21
日に出願した米国特許出願第542216号に記載され
ている。
【0067】アレイ・コントローラのメモリの内容の喪
失事象において、書き込まれるべきデータと、未完了の
書き込み動作のリストとは、書き込み補佐ストレージ・
ユニツト104の中に含まれている。アレイ・コントロ
ーラの動作が復帰された後、アレイ・コントローラは、
書き込み補佐ストレージ・ユニツト中に最も新しい未確
認リストを位置付け、このリストをアレイ・コントロー
ラのダイナミツク・メモリ中にロードし、そして、スト
レージ・サブシステムの構成を作るために、そのリスト
中の各書き込み動作を遂行する。書き込み補佐ストレー
ジ・ユニツト中の最も新しい未確認リストは、書き込み
動作が完了する毎に更新される必要はないから、未確定
リスト中の幾つかの書き込み動作は既に完了されてい
る。然しながら、このデータを再書き込みすることは、
データの一貫性には影響を与えない。
【0068】図11は、書き込み補佐ストレージ・ユニ
ツト104から、最も新しい未確定リストを得るのに必
要なステツプを示す図である。アレイ・コントローラ1
03は、先ず、最近のWADレコードのアドレスに関す
る不揮発性RAM204中のレコード211をチエツク
する。若し、不揮発性RAM204の内容が失われてい
れば(ステツプ1001)、ステツプ1002におい
て、現在のレコードは、デイスクの走査の開始点におい
て予め決められた位置にあるブロツクに対して開始され
る。この位置にあるブロツクは、常に、ヘツダ・ブロツ
クであり、そして、データ・レコードのチエーンの終端
にある更新レコードのためのヘツダであるデータ・レコ
ードのヘツダか、または、フオーマツトされた時に、デ
イスク上に置かれた最初のレコードのヘツダかの何れか
である。若し、不揮発性RAM204の内容が完全であ
れば(ステツプ1001)、現在のレコードは不揮発性
RAM中に保持されたアドレス値によつて指示されたレ
コードに対して初期化される。実際の動作において、こ
の値は、アレイ・コントローラによつて定期的に更新さ
れるので、書き込み補佐ストレージ・ユニツト中の最初
のアドレスにあるレコードよりも、通常、WADレコー
ドのチエーンの終端に近接している。然しながら、書き
込み補佐ストレージ・ユニツト中のレコードのチエーン
は、何れの場合でも横切ることができる。アレイ・コン
トローラはこの最初のレコードのヘツダを読み取る。
【0069】若し、ヘツダ・ブロツク602のフイール
ド709において特定されたコマンドの長さが、0であ
れば(これはデータ・レコードではないことを表示す
る)(ステツプ1004)、予め決められた位置にある
ヘツダは、最も新しい不確定リストを含んでおり、そし
て、ステツプ1012において、この不確定リストは、
アレイ・コントローラのダイナミツク・メモリ203中
にロードされる。ステツプ1004において、若し、コ
マンドの長さが0でなければ、ヘツダ・ブロツクはデー
タ・レコードの一部である。次に、ステツプ1005に
おいて、アレイ・コントローラは、コマンドの長さによ
つて特定されるヘツダからオフセツトして位置付けられ
たデータ・レコードのトレイラ・ブロツクを読み取る。
次に、ステツプ1006において、アレイ・コントロー
ラはトレイラ・ブロツクとヘツダ・ブロツクとを比較す
る。若し、これらのブロツクが同じでなければ、データ
の書き込みは、ヘツダとトレイラが書き込まれた時間の
間で割り込まれている。この場合、現在のデータ・レコ
ードは、チエーンの終りとされ、そして、ヘツダ・ブロ
ツク中の不確定リストは、利用可能な最も新しい不確定
リストである。ステツプ1012において、アレイ・コ
ントローラは、このリストをダイナミツク・メモリ中に
ロードする。若し、トレイラ・ブロツクがヘツダ・ブロ
ツクと同じであれば、ステツプ1007において、アレ
イ・コントローラは、書き込み補佐ストレージ・ユニツ
トの中の次のレコードのヘツダを読み取る。このレコー
ドは、現在のレコードのヘツダの次のアドレス・フイー
ルド704において特定されたアドレスのところに位置
付けられる。若し、次のレコードのヘツダのフイールド
701において特定されたコマンド識別子が現在のレコ
ードの識別子よりも大きくなければ、ステツプ1012
において、レコードの順序は、割り込まれており、そし
て、現在のレコードからの不確定リストは、最も新しい
不確定リストとして保存される。若し、次のレコードの
ヘツダのコマンド識別子が、現在のレコードのヘツダよ
りも1つだけ大きければ(ステツプ1008)、次のレ
コードは、同じチエーンの事実上の部分である。この場
合は、ステツプ1009において、次のレコードが「現
在の」レコードになる。次に、ステツプ1010におい
て、アレイ・コントローラは、現在のレコードが他のデ
ータ・レコードか、または、更新レコードかを決定する
ために、現在のレコードのヘツダをチエツクする。若
し、それが更新レコード(コマンドのアドレス・フイー
ルド702と同じである、つまりレコードがそれ自身を
指示する次のレコードのアドレス・フイールドによつて
表示される)であれば、チエーンの終端に到達してお
り、ステツプ1012において、現在のレコードのヘツ
ダからの不確定リストはメモリ中にロードされる。ステ
ツプ1008において、若し、現在のレコードが他のデ
ータ・レコードであれば、プログラムは、ステツプ10
05に戻り、そして、終了状態に達するまでステツプ1
005乃至1010を繰り返す。
【0070】図12は、図11に示されたプロシージヤ
を用いて不確定リストが復旧された後、不確定リストに
おいて識別されたすべての未完了「書き込み」動作を完
了するために必要なステツプを示す図である。不確定リ
スト中の「書き込み」動作は任意の時点で割り込まれる
ので、書き込まれるべきデータ・ブロツクと同じストラ
イプ中のパリテイ・ブロツクは、正しくないパリテイを
含んでいるものとしなければならない。その結果、図5
に示したプロシージヤは、「書き込み」動作を完了する
ために使用することはできない。不確定リストに関する
各書き込み動作に対して、アレイ・コントローラは、ス
テツプ1101において、先ず、書き込まれるべきデー
タを書き込み補佐ストレージ・ユニツト104から検索
し、そして、ダイナミツク・メモリ203中にそのデー
タをストアする。次に、ステツプ1102において、ア
レイ・コントローラは、更新を必要とせずに書き込まれ
るストライプ中のすべてのデータを読み取り、そして、
相次いで読み取られたデータ・ブロツクの各々と排他的
オア論理演算を行なうことによつて新しい部分パリテイ
を集める。次に、ステツプ1103において、アレイ・
コントローラは、書き込まれるデータ・ブロツクを、関
連するサービス・ストレージ・ユニツト中に書き込み、
そして、新しいパリテイを得るために、書き込まれたブ
ロツクと、部分的なパリテイとを相次いで排他的オア論
理演算処理する。ステツプ1102及び1103の処理
は、読み取られるブロツクと、書き込まれるストライプ
中のすべてのデータ・ブロツクとを含まず、あるいは、
1つの読み取り及びただ1つの書き込み、または任意の
中間的な組み合わせを除くすべてのデータ・ブロツクを
含むことは注意を要する。最後に、ステツプ1104に
おいて、新しいパリテイをパリテイ・ブロツクに書き込
む。ステツプ1102乃至1104は、不確定リストに
関するすべての動作が完了されるまで(ステツプ110
5)繰り返される。次に、ステツプ1106において、
空の不確定リストを含む更新レコードは、書き込み補佐
ストレージ・ユニツトの中のレコードのチエーンの終端
に書き込まれる。
【0071】良好な実施例において、1つのアレイ・コ
ントローラが、ストレージ・システム中の複数個のデイ
スク・ドライブを制御する。デイスク・ドライブそれ自
身は、任意の1つのデイスク・ドライブが故障した場合
に、コンピユータ・システムを動作状態に残すための冗
長性を持つが、しかし、アレイ・コントローラは、動作
状態に残らない。代案として、任意の1つのコントロー
ラが故障した場合に、コンピユータ・システムを動作状
態に留めるために、複数の冗長コントローラを持つサブ
システムを動作することが可能である。書き込み補佐ス
トレージ・ユニツトがデータ冗長度を維持するから、複
数のコントローラが冗長な不確定リスト、コマンドの待
ち行列及び他のデータを含むことは必要ないかもしれな
い。例えば、コントローラAがデイスク・ドライブ1乃
至Nを制御し、コントローラBがデイスク・ドライブ
(N+1)乃至2Nを制御するようなコントローラA及
びBを有するサブシステムを動作することが可能であ
る。任意の1つのコントローラが故障した場合、未完了
の書き込み動作を回復するために、書き込み補佐ストレ
ージ・ユニツト中の情報を用いて、他のコントローラが
すべてのデイスク・ドライブ1乃至2Nを制御すること
ができる。この場合、サブシステムの性能は低下するけ
れども、1つのコントローラの故障にも拘らず、サブシ
ステムは動作を続行することができる。
【0072】良好な実施例において、1つの書き込み補
佐ストレージ・ユニツトは、サービス・ストレージ・ユ
ニツトの1つのパリテイ・グループと関連される(即
ち、パリテイを共有するサービス・ストレージ・ユニツ
トのグループのことである)。然しながら、代案とし
て、複数の書き込み補佐ストレージ・ユニツトを有する
本発明に従つたストレージ・サブシステムを動作するこ
とが可能である。加えて、1つ、または、それ以上の書
き込み補佐ストレージ・ユニツトがサービス・ストレー
ジ・ユニツトの幾つかのパリテイ・グループの間で共有
されているような複数のパリテイ・グループを有するサ
ブシステムを動作することが可能である。
【0073】良好な実施例において、サービス・ストレ
ージ・ユニツトはRAIDのレベル5として組織され
る。サービス・デイスク・ユニツト中のストレージ・ブ
ロツクの各ストライプは、複数個のデータ・ブロツク
と、1つのパリテイ・ブロツク(データ冗長ブロツク)
を含んでいる。異なつたサービス・ストレージ・ユニツ
トの間で、パリテイ・ブロツクが分散された複数ストラ
イプがある。単一パリテイ・ブロツクの使用は、データ
冗長の単純な形式を与え、そして、パリテイ・ブロツク
の分散は、最良の性能を与えるものと信じられている。
然しながら、他の実施例として、他のタイプのストレー
ジ・ユニツトのアレイを使用して、本発明を実施するこ
とも可能である。例えば、RAID−3、またはRAI
D−4の場合のように、1つのサービス・ストレージ・
ユニツトに関して1つのストライプの複数ブロツク、ま
たは、すべてのパリテイ・ブロツクがあり得る。1つの
パリテイ・ブロツクではなく、RAID−2の場合のよ
うに、複数の冗長ブロツクにストアされたコード、また
は、多次元パリテイを検出し、より複雑なエラー訂正を
用いて本発明を実施することが可能である。
【0074】良好な実施例において、すべてのストレー
ジ装置は、同じ容量を持つている。これは、制御機構を
単純化し、そして、ストレージ装置毎の置換を容易にす
る。然しながら、容量の異なつたストレージ装置によつ
て本発明を実施することも可能である。特に、書き込み
補佐ストレージ・ユニツトは、故障したストレージ装置
から再生されたデータをストアするために用いられた時
にも、書き込み補佐ストレージ・ユニツトとしての機能
を果せるように、サービス・ストレージ・ユニツトより
も大きな容量を持つことができる。
【0075】良好な実施例において、書き込み補佐スト
レージ・ユニツトは、未完了の書き込み動作を順番に書
き込まれたログとして使用される。然しながら、代案と
して、書き込み補佐ストレージ・ユニツトを他の態様で
用いることも可能である。例えば、データは、書き込み
補佐ストレージ・ユニツトに順番に書き込まれる必要は
なく、ランダムにアクセスする態様でストアされてもよ
い。書き込み補佐ストレージ・ユニツトは、性能及び/
又は冗長度を向上する機能と同時に、サービス・ストレ
ージ・ユニツトの動作モードに切り換わる能力を持ち、
これにより、予備のストレージ・ユニツトを2倍にする
ような任意の機能を補佐するモードにおいて用いること
ができる。
【0076】良好な実施例において、ストレージ装置
は、回転磁気デイスク・ストレージ装置である。回転磁
気デイスク装置は、現在のところ、この分野の標準的な
ストレージ・ユニツトである。然しながら、本発明は、
他の異なつた技術を用いたストレージ装置でも実施する
ことができる。例えば、光学式ストレージ装置を使用す
ることができる。
【0077】
【発明の効果】本発明は、ストレージ装置の冗長アレイ
を有するコンピユータ・システムにおいて、1つのスト
レージ装置が故障したとしても、コンピユータ・システ
ムが動作を続行することのできる方法及び装置を与え
る。
【図面の簡単な説明】
【図1】本発明の良好な実施例に従つて構成されたコン
ピユータ・システムの要素を示すブロツク図である。
【図2】本発明の良好な実施例に従つたデイスク・ユニ
ツトのアレイのコントローラの主要な要素を示すブロツ
ク図である。
【図3】本発明の良好な実施例に従つた高速書き込みタ
スクの遂行に含まれたステツプを示す流れ図である。
【図4】本発明の良好な実施例に従つた高速書き込みタ
スクを遂行するステツプを示す流れ図である。
【図5】本発明の良好な実施例に従つてサービス・スト
レージ・ユニツトの書き込みタスクを遂行するためのス
テツプを示す流れ図である。
【図6】本発明の良好な実施例に従つて「書き込み」コ
マンドが書き込み補佐ストレージ・ユニツトに書き込ま
れるべきか否かを決定するためのテストを図式的に表わ
したグラフである。
【図7】本発明の良好な実施例に従つて書き込み補佐ス
トレージ・ユニツトに書き込まれるデータ・レコードの
構造を示す図である。
【図8】本発明の良好な実施例に従つて書き込み補佐ス
トレージ・ユニツトに書き込まれたデータ・レコード中
のヘツダ/トレイラ・ブロツクの構造を示す図である。
【図9】本発明の良好な実施例に従つてサービス・スト
レージ・ユニツトの1つが故障を生じた場合に、アレイ
・コントローラによつて取られるステツプを示す流れ図
である。
【図10】本発明の良好な実施例に従つてサービス・ス
トレージ・ユニツトの1つが故障した場合に、未完了の
書き込み動作のすべてを完了するために必要なステツプ
を示す流れ図である。
【図11】本発明の良好な実施例に従つてデータの再生
の間で、書き込み補佐ストレージ・ユニツトから、最も
新しい不確定リストを得るのに必要なステツプを示す流
れ図である。
【図12】本発明の良好な実施例に従つて書き込み補佐
ストレージ・ユニツトから復旧された不確定リスト中で
識別されたすべての未完了「書き込み」動作を完了する
のに必要なステツプの流れ図である。
【符号の説明】
100 コンピユータ・システム 101 ホスト・コンピユータ 102 データ・バス 103 アレイ・コントローラ 104 書き込み補佐ストレージ・ユニツト(WAD) 105、106、107、108 サービス・ストレー
ジ・ユニツト 111、112、113、114 ストレージ・ブロツ
ク 201 アレイ・コントローラのプロセツサ 202 メモリ 203 揮発性ランダム・アクセス・メモリ 204 不揮発性ランダム・アクセス・メモリ 205 コンピユータ・バスのインターフエース回路 206 ストレージ・デイスク・ユニツトのインターフ
エース回路 210 ストレージ管理制御プログラム 211 状態レコード 212 不確定リスト

Claims (26)

    (57)【特許請求の範囲】
  1. 【請求項1】 プロセツサ及びメモリを有するストレー
    ジ・サブシステム・コントローラと、 上記コントローラに接続された少なくとも4つのデータ
    ・ストレージ・ユニツトを含み、上記データ・ストレー
    ジ・ユニツトの内の少なくとも1つのストレージ・ユニ
    ツトは、書き込み補佐データ・ストレージ・ユニツトで
    あり、かつ、上記データ・ストレージ・ユニツトの内の
    少なくとも3つのストレージ・ユニツトは、サービス・
    データ・ストレージ・ユニツトであることと、 夫々のストライプがデータを収納するための複数個のデ
    ータ・ストレージ・ブロツクを含むストレージ・ブロツ
    クの少なくとも1つのストライプと、そして、上記デー
    タ・ストレージ・ブロツク中にストアされたデータのデ
    ータ冗長度を含むための少なくとも1つのデータ冗長ス
    トレージ・ブロツクとを含み、上記ストレージ・ブロツ
    クは、関連するサービス・データ・ストレージ・ユニツ
    トに含まれていることと、 ストレージ・ブロツクの上記ストライプ中の上記データ
    冗長ストレージ・ブロツクを維持するための上記コント
    ローラ中の手段と、 上記データ・ストレージ・ユニツト中にストアされるデ
    ータを受け取るための、上記コントローラ中の手段と、 上記書き込み補佐データ・ストレージ・ユニツトにスト
    アされる上記データを書き込むための手段と、 上記コントローラ中にあって、上記書き込み補佐データ
    ・ストレージ・ユニツトに上記データを書き込んだ後
    で、上記サービス・データ・ストレージ・ユニツトにデ
    ータを書き込む前に、動作完了を通知するための手段
    と、 動作完了の通知の後に、上記データ・ストレージ・ユニ
    ツトの任意の1つが故障した場合に上記データを再生す
    るための手段と、 動作完了の通知の後に、上記メモリの内容が失われた場
    合に、上記データを再生するための手段とを含むコンピ
    ユータ・システムのストレージ・サブシステム。
  2. 【請求項2】 故障したサービス・データ・ストレージ
    ・ユニツトから再生されたデータを上記書き込み補佐デ
    ータ・ストレージ・ユニツトにストアするための手段を
    含む請求項1に記載のコンピユータ・システムのストレ
    ージ・サブシステム。
  3. 【請求項3】 上記故障したサービス・データ・ストレ
    ージ・ユニツトから再生された上記データが上記書き込
    み補佐データ・ストレージ・ユニツトにストアされた後
    に、上記故障したサービス・データ・ストレージ・ユニ
    ツトとして上記書き込み補佐データ・ストレージ・ユニ
    ツトを動作するための手段を含む請求項2に記載のコン
    ピユータ・システムのストレージ・サブシステム。
  4. 【請求項4】 上記データ冗長ストレージ・ブロツク
    は、上記データ・ストレージ・ブロツク中にストアされ
    たデータのパリテイを含むためのパリテイ・ストレージ
    ・ブロツクを含む請求項1に記載のコンピユータ・シス
    テムのストレージ・サブシステム。
  5. 【請求項5】 ストレージ・ブロツクの上記ストライプ
    を少なくとも2つのストライプを含み、上記パリテイ・
    ストレージ・ブロツクは、ラウンド・ロビンの態様で上
    記サービス・データ・ストレージ・ユニツトの間に分散
    されていることを含む請求項4に記載のコンピユータ・
    システムのストレージ・サブシステム。
  6. 【請求項6】 ストアされるべき上記データを上記書き
    込み補佐データ・ストレージ・ユニツトに書き込むため
    の上記手段は、上記書き込み補佐データ・ストレージ・
    ユニツト中の順番に並んだ位置にデータを書き込むこと
    を含む請求項1に記載のコンピユータ・システムのスト
    レージ・サブシステム。
  7. 【請求項7】 上記データ・ストレージ・ユニツト中に
    ストアされるデータを受け取るための上記コントローラ
    中の上記手段に応答して、上記受け取られたデータが上
    記書き込み補佐データ・ストレージ・ユニツトに書き込
    まれるべきか否かを選択的に決定する選択手段を含むこ
    とと、 上記書き込み補佐データ・ストレージ・ユニツトにスト
    アされる上記データを書き込むための上記手段は、上記
    選択手段によつて行なわれた上記決定に応答して上記書
    き込み補佐データ・ストレージ・ユニツトにデータを書
    き込むこととを含む請求項1に記載のコンピユータ・シ
    ステムのストレージ・サブシステム。
  8. 【請求項8】 コンピユータ・システムのためのストレ
    ージ装置において、書き込み補佐データ・ストレージ・
    ユニツトと、 複数個のサービス・データ・ストレージ・ユニツトと、 上記複数個のサービス・データ・ストレージ・ユニツト
    の間のデータ冗長度を維持する手段と、 上記サービス・データ・ストレージ・ユニツトに書き込
    まれるデータを上記書き込み補佐データ・ストレージ・
    ユニツト中に臨時にストアする手段と、 上記ストレージ・ユニツトの故障事象において、サービ
    ス・データ・ストレージ・ユニツト中にストアされるデ
    ータを再生する手段と、 上記書き込み補佐データ・ストレージ・ユニツトの中に
    上記再生されたデータをストアする手段とを含むコンピ
    ユータ・システムのストレージ装置。
  9. 【請求項9】 上記データ冗長度を維持する上記手段
    は、 ストレージ・ブロツクの少なくとも1つのストライプを
    含み、各ストライプは、上記データ・ストレージ・ブロ
    ツク中にストアされているデータのパリテイを含むため
    のデータ及び1つのパリテイ・ストレージ・ブロツクを
    含むために、複数個のデータ・ストレージ・ブロツクを
    含み、上記ストレージ・ブロツクの各々は関連するサー
    ビス・データ・ストレージ・ユニツト中に含まれている
    ことと、 上記複数個のデータ・ストレージ・ブロツクのパリテイ
    を決定する手段と、 上記複数個のデータ・ストレージ・ブロツクの上記パリ
    テイを上記パリテイ・ストレージ・ブロツクの中にスト
    アする手段とを含む請求項8に記載のコンピユータ・シ
    ステムのストレージ装置。
  10. 【請求項10】 サービス・データ・ストレージ・ユニ
    ツトの故障事象において、上記書き込み補佐データ・ス
    トレージ・ユニツトの書き込み補佐機能を滅勢する手段
    と、 故障した上記サービス・データ・ストレージ・ユニツト
    として上記書き込み補佐データ・ストレージ・ユニツト
    を動作する手段とを含む請求項8に記載のコンピユータ
    ・システムのストレージ装置。
  11. 【請求項11】 データ冗長度を維持する上記手段は、 ストレージ・ブロツクの少なくとも1つのストライプを
    含み、各ストライプは、データを含むための複数個のデ
    ータ・ストレージ・ブロツクと、上記データ・ストレー
    ジ・ブロツク中にストアされているデータのパリテイを
    含むための1つのパリテイ・ストレージ・ブロツクを含
    み、上記ストレージ・ブロツクの各々は、関連するサー
    ビス・データ・ストレージ・ユニツト中に含まれている
    ことと、 上記複数個のデータ・ストレージ・ブロツクのパリテイ
    を決定する手段と、 上記複数個のデータ・ストレージ・ブロツクの上記パリ
    テイを上記パリテイ・ストレージ・ブロツクにストアす
    る手段とを含む請求項10に記載のコンピユータ・シス
    テムのストレージ装置。
  12. 【請求項12】 上記サービス・データ・ストレージ・
    ユニツトに書き込まれるデータを上記書き込み補佐デー
    タ・ストレージ・ユニツト中に臨時にストアする上記手
    段は、上記書き込み補佐データ・ストレージ・ユニツト
    中に順番に並べられた位置に上記データをストアするこ
    とを含む請求項8に記載のコンピユータのストレージ装
    置。
  13. 【請求項13】 上記サービス・ストレージ・ユニツト
    に書き込まれる上記データが上記書き込み補佐ストレー
    ジ・ユニツト中に臨時にストアされるべきか否かを選択
    的に決定する選択手段と、 上記サービス・ストレージ・ユニツトに書き込まれるデ
    ータを上記書き込み補佐ストレージ・ユニツト中に臨時
    にストアするための上記手段は、上記選択手段によつて
    行なわれた上記決定に応答して上記書き込み補佐ストレ
    ージ・ユニツトにデータを書き込むこととを含む請求項
    8に記載のコンピユータ・システムのストレージ装置。
  14. 【請求項14】 コンピユータ・システムにおいてデー
    タをストアするための方法において、 複数個のサービス・データ・ストレージ・ユニツト中に
    データ冗長度をストアするステツプと、 上記複数個のサービス・データ・ストレージ・ユニツト
    に書き込まれる更新データを書き込み補佐ストレージ・
    ユニツトに書き込むステツプと、 上記更新データが上記複数個のサービス・データ・スト
    レージ・ユニツトに書き込まれたことを通知するステツ
    プと、 上記複数個のサービス・データ・ストレージ・ユニツト
    に上記更新データを冗長的に書き込むステツプを含み、
    上記複数個のサービス・データ・ユニツトに上記更新デ
    ータを書き込む上記ステツプは、上記通知するステツプ
    の後に、完了することと、 上記サービス・データ・ストレージ・ユニツトの故障事
    象において、1つのサービス・データ・ストレージ・ユ
    ニツト中にデータをストアするステツプと、 上記書き込み補佐ストレージ・ユニツトに上記再生され
    たデータをストアし、その後、上記サービス・データ・
    ストレージ・ユニツトの上記故障事象において、故障し
    た上記サービス・データ・ユニツトとして上記書き込み
    補佐ストレージ・ユニツトを動作するステツプとを含む
    データのストア方法。
  15. 【請求項15】 複数個のサービス・データ・ストレー
    ジ・ユニツト中にデータを冗長的にストアする上記ステ
    ツプは、ストレージ・ブロツクの少なくとも1つのスト
    ライプを含み、各ストライプは、データを含む複数個の
    データ・ストレージ・ブロツクと、上記データ・ストレ
    ージ・ブロツク中にストアされたデータのパリテイを含
    む1つのパリテイ・ストレージ・ブロツクとを含み、か
    つ、上記ストレージ・ブロツクの各々は、関連するサー
    ビス・データ・ストレージ・ユニツト中に含まれている
    ことと、 上記複数個のサービス・データ・ストレージ・ユニツト
    に上記更新データを冗長的に書き込む上記ステツプは、
    更新されるストレージ・ブロツクのストライプの上記パ
    リテイ・ストレージ・ブロツクを更新することとを含む
    請求項14に記載のデータのストア方法。
  16. 【請求項16】 上記複数個のサービス・データ・スト
    レージ・ユニツトに書き込まれる更新データを、書き込
    み補佐ストレージ・ユニツトに書き込む上記ステツプ
    は、上記書き込み補佐ストレージ・ユニツト中の順番の
    位置に上記更新データを書き込むことを含む請求項14
    に記載のデータのストア方法。
  17. 【請求項17】 上記複数個のサービス・データ・スト
    レージ・ユニツトに書き込まれる上記更新データは上記
    書き込み補佐ストレージ・ユニツトに書き込まれるか否
    かを選択的に決定するステツプと、 上記複数個のサービス・データ・ストレージ・ユニツト
    に書き込まれる更新データを書き込み補佐ストレージ・
    ユニツトに書き込む上記ステツプは、上記更新データが
    上記書き込み補佐ストレージ・ユニツトに書き込まれる
    ことを決定する上記選択的決定ステツプに応答して遂行
    されることとを含む請求項14に記載のデータのストア
    方法。
  18. 【請求項18】 コンピユータ・システムのためのスト
    レージ・サブシステムのコントローラにおいて、 プロセツサと、 メモリと、 ホスト・コンピユータと通信するためのホスト・コンピ
    ユータのインターフエースと、 上記コントローラに接続された少なくとも4つのデータ
    ・ストレージ・ユニツトと通信するためのストレージ・
    ユニツトのインターフエースを含み、上記データ・スト
    レージ・ユニツト内の少なくとも1つは書き込み補佐ス
    トレージ・ユニツトであり、上記データ・ストレージ・
    ユニツトの内の少なくとも3つはサービス・データ・ス
    トレージ・ユニツトであることと、 上記サービス・データ・ストレージ・ユニツトは、少な
    くとも1つのストレージ・ブロツクを含み、各ストライ
    プは、データを含むための複数個のデータ・ストレージ
    ・ブロツクと、上記データ・ストレージ・ブロツク中に
    ストアされたデータのデータ冗長度を含むための少なく
    とも1つのデータ冗長度のストレージ・ブロツクとを含
    み、上記ストレージ・ブロツクの各々は、関連するサー
    ビス・データ・ストレージ・ユニツトに含まれているこ
    とと、 ストレージ・ブロツクの上記ストライプ中の上記データ
    冗長度のストレージ・ブロツクを維持する手段と、 上記ホスト・コンピユータから上記データ・ストレージ
    ・ユニツト中にストアされたデータを受け取る手段と、 上記書き込み補佐ストレージ・ユニツトにストアされる
    上記データを書き込む手段と、 上記書き込み補佐ストレージ・ユニツトに上記データを
    書き込んだ後で、かつ、上記サービス・データ・ストレ
    ージ・ユニツトのすべてに上記データを書き込む前に、
    上記ホスト・コンピユータに動作の完了を通知する手段
    と、 動作の完了を通知した後に、上記データ・ストレージ・
    ユニツトのいずれか1つが故障した場合に、上記データ
    を再生する手段と、 動作の完了を通知した後に、上記メモリの内容の喪失の
    事象において、上記データを再生する手段とを含むスト
    レージ・サブシステムのコントローラ。
  19. 【請求項19】 故障したデータ・ストレージ・ユニツ
    トから再生されたデータを上記書き込み補佐ストレージ
    ・ユニツトにストアする手段を含む請求項18に記載の
    ストレージ・サブシステムのコントローラ。
  20. 【請求項20】 上記故障したサービス・データ・スト
    レージ・ユニツトから再生された上記データが上記書き
    込み補佐ストレージ・ユニツトにストアされた後に、上
    記故障したサービス・データ・ストレージ・ユニツトと
    して上記書き込み補佐ストレージ・ユニツトを動作する
    手段を含む請求項19に記載のストレージ・サブシステ
    ムのコントローラ。
  21. 【請求項21】 上記データ冗長度ストレージ・ブロツ
    クは、上記データ・ストレージ・ブロツク中にストアさ
    れたデータのパリテイを含むパリテイ・ストレージ・ブ
    ロツクを含む請求項18に記載のストレージ・サブシス
    テムのコントローラ。
  22. 【請求項22】 上記書き込み補佐ストレージ・ユニツ
    トにストアされる上記データを書き込むための上記手段
    は、上記書き込み補佐ストレージ・ユニツト中の順番の
    位置にデータを書き込むことを含む請求項18に記載の
    ストレージ・サブシステムのコントローラ。
  23. 【請求項23】 上記ホスト・コンピユータから、上記
    データ・ストレージ・ユニツト中にストアされるデータ
    を受け取るための上記手段に応答して、上記受け取られ
    たデータが上記書き込み補佐ストレージ・ユニツトに書
    き込まれるべきか否かを選択的に決定する選択手段と、 上記書き込み補佐ストレージ・ユニツトにストアされる
    上記データを書き込むための上記手段は、上記選択手段
    によつて行なわれた決定に応答して上記書き込み補佐ス
    トレージ・ユニツトに書き込まれることとを含む請求項
    18に記載のストレージ・サブシステムのコントロー
    ラ。
  24. 【請求項24】 コンピユータ・システムのストレージ
    装置において、 複数個のサービス・データ・ストレージ・ユニツトと、 予備のストレージ・ユニツトになることのできる付加的
    なデータ・ストレージ・ユニツトと、 上記サービス・データ・ストレージ・ユニツトの機能を
    補佐するための補佐モードにおいて、上記付加的なデー
    タ・ストレージ・ユニツトを動作する手段と、 上記複数個のサービス・データ・ストレージ・ユニツト
    の間でデータ冗長度を維持するための手段と、 上記データ・ストレージ・ユニツトが故障した場合に、
    サービス・データ・ストレージ中にストアされたデータ
    を再生するための手段と、 予備のストレージ・ユニツトになることのできる上記付
    加的なデータ・ストレージ・ユニツト中に上記再生され
    たデータをストアし、その後、故障したサービス・デー
    タ・ストレージ・ユニツトとして、上記付加的なデータ
    ・ストレージ・ユニツトを動作させる手段とを含むコン
    ピユータ・システムのストレージ装置。
  25. 【請求項25】 データ冗長度を維持するための上記手
    段は、 少なくとも1つのストレージ・ブロツクのストライプを
    含み、各ストライプは、データを含むための複数個のデ
    ータ・ストレージ・ブロツクと、上記データ・ストレー
    ジ・ブロツク中にストアされたデータのパリテイを含む
    ための1つのパリテイ・ストレージ・ブロツクとを含
    み、上記ストレージ・ブロツクの各々は、関連するサー
    ビス・データ・ストレージ・ユニツトに含まれているこ
    とと、 上記複数個のデータ・ストレージ・ブロツクのパリテイ
    を決定するための手段と、 上記複数個のデータ・ストレージ・ブロツクの上記パリ
    テイを上記パリテイ・ストレージ・ブロツク中にストア
    するための手段とを含む請求項24に記載のコンピユー
    タ・システムのストレージ装置。
  26. 【請求項26】 上記複数個のサービス・データ・スト
    レージ・ユニツトはストレージ・ブロツクの少なくとも
    2つの上記ストライプを含み、 上記パリテイ・ストレージ・ブロツクは、ラウンド・ロ
    ビンの態様で、上記サービス・ストレージ・ユニツトの
    間に分散されていることとを含む請求項25に記載のコ
    ンピユータ・システムのストレージ装置。
JP5081583A 1992-05-06 1993-04-08 コンピユ―タ・システムのストレ―ジ装置及びデ―タのストア方法 Expired - Fee Related JP2501752B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US879621 1992-05-06
US07/879,621 US5708668A (en) 1992-05-06 1992-05-06 Method and apparatus for operating an array of storage devices

Publications (2)

Publication Number Publication Date
JPH0619632A JPH0619632A (ja) 1994-01-28
JP2501752B2 true JP2501752B2 (ja) 1996-05-29

Family

ID=25374517

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5081583A Expired - Fee Related JP2501752B2 (ja) 1992-05-06 1993-04-08 コンピユ―タ・システムのストレ―ジ装置及びデ―タのストア方法

Country Status (3)

Country Link
US (2) US5708668A (ja)
EP (1) EP0569313A3 (ja)
JP (1) JP2501752B2 (ja)

Families Citing this family (102)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3409859B2 (ja) * 1991-01-31 2003-05-26 株式会社日立製作所 制御装置の制御方法
US6874101B2 (en) * 1991-01-31 2005-03-29 Hitachi, Ltd. Storage unit subsystem
US5418925A (en) * 1992-10-23 1995-05-23 At&T Global Information Solutions Company Fast write I/O handling in a disk array using spare drive for buffering
US5579474A (en) 1992-12-28 1996-11-26 Hitachi, Ltd. Disk array system and its control method
US5761402A (en) * 1993-03-08 1998-06-02 Hitachi, Ltd. Array type disk system updating redundant data asynchronously with data access
JPH06332623A (ja) * 1993-05-24 1994-12-02 Mitsubishi Electric Corp アレイ型記録装置及び記録装置
JP3862274B2 (ja) * 1993-06-03 2006-12-27 ネットワーク・アプライアンス・インコーポレイテッド Raidディスクサブシステムと統合されたファイルシステムのファイル割り当て方法
US6138126A (en) 1995-05-31 2000-10-24 Network Appliance, Inc. Method for allocating files in a file system integrated with a raid disk sub-system
US6604118B2 (en) 1998-07-31 2003-08-05 Network Appliance, Inc. File system image transfer
DE69434381T2 (de) * 1993-06-04 2006-01-19 Network Appliance, Inc., Sunnyvale Verfahren zur Paritätsdarstellung in einem Raid-Untersystem unter Verwendung eines nichtflüchtigen Speichers
DE69533764T2 (de) * 1994-06-22 2005-12-01 Hewlett-Packard Development Co., L.P., Houston Verfahren zum Gebrauch von Speicherplatten unterschiedlicher Inhalte in einem Einzelvolumen einer hierarchischen Speicherplattenanordnung
US5533190A (en) * 1994-12-21 1996-07-02 At&T Global Information Solutions Company Method for maintaining parity-data consistency in a disk array
US5666512A (en) * 1995-02-10 1997-09-09 Hewlett-Packard Company Disk array having hot spare resources and methods for using hot spare resources to store user data
JP3358687B2 (ja) * 1995-03-13 2002-12-24 株式会社日立製作所 ディスクアレイ装置
WO1996032674A2 (en) * 1995-04-13 1996-10-17 Cirrus Logic, Inc. Semiconductor memory device for mass storage block access applications
US6567926B2 (en) * 1995-10-24 2003-05-20 Seachange International, Inc. Loosely coupled mass storage computer cluster
US5862312A (en) * 1995-10-24 1999-01-19 Seachange Technology, Inc. Loosely coupled mass storage computer cluster
US6449730B2 (en) * 1995-10-24 2002-09-10 Seachange Technology, Inc. Loosely coupled mass storage computer cluster
US6334195B1 (en) * 1995-12-29 2001-12-25 Lsi Logic Corporation Use of hot spare drives to boost performance during nominal raid operation
JP3287203B2 (ja) 1996-01-10 2002-06-04 株式会社日立製作所 外部記憶制御装置及び外部記憶制御装置間データ転送方法
US5900010A (en) * 1996-03-05 1999-05-04 Sony Corporation Apparatus for recording magneto-optic disks
US5961651A (en) * 1996-04-15 1999-10-05 Sun Microsystems, Inc. Event notification in a computing system having a plurality of storage devices
US5809332A (en) * 1996-06-03 1998-09-15 Emc Corporation Supplemental communication between host processor and mass storage controller using modified diagnostic commands
US5856989A (en) * 1996-08-13 1999-01-05 Hewlett-Packard Company Method and apparatus for parity block generation
JP3344907B2 (ja) * 1996-11-01 2002-11-18 富士通株式会社 Raid装置及び論理ボリュームのアクセス制御方法
US6161165A (en) * 1996-11-14 2000-12-12 Emc Corporation High performance data path with XOR on the fly
JPH10198526A (ja) * 1997-01-14 1998-07-31 Fujitsu Ltd Raid装置及びそのアクセス制御方法
US5960169A (en) * 1997-02-27 1999-09-28 International Business Machines Corporation Transformational raid for hierarchical storage management system
JP3595099B2 (ja) * 1997-03-17 2004-12-02 富士通株式会社 デバイスアレイ・システム
US5893164A (en) * 1997-05-30 1999-04-06 Unisys Corporation Method of tracking incomplete writes in a disk array and disk storage system which performs such method
US6374336B1 (en) 1997-12-24 2002-04-16 Avid Technology, Inc. Computer system and process for transferring multiple high bandwidth streams of data between multiple storage units and multiple applications in a scalable and reliable manner
JPH11212728A (ja) 1998-01-26 1999-08-06 Hitachi Ltd 外部記憶サブシステム
US6457130B2 (en) 1998-03-03 2002-09-24 Network Appliance, Inc. File access control in a multi-protocol file server
US6317844B1 (en) 1998-03-10 2001-11-13 Network Appliance, Inc. File server storage arrangement
US6484234B1 (en) 1998-06-30 2002-11-19 Emc Corporation Method and apparatus for efficiently destaging data from a cache to two or more non-contiguous storage locations
US6119244A (en) 1998-08-25 2000-09-12 Network Appliance, Inc. Coordinating persistent status information with multiple file servers
US6430611B1 (en) * 1998-08-25 2002-08-06 Highground Systems, Inc. Method and apparatus for providing data storage management
GB2341715A (en) * 1998-09-17 2000-03-22 Springtek Limited Magnetic disk redundant array
US6343984B1 (en) 1998-11-30 2002-02-05 Network Appliance, Inc. Laminar flow duct cooling system
US6466540B1 (en) 1999-05-05 2002-10-15 International Business Machines Corporation Self-healing coupler for a serial raid device
US6513093B1 (en) 1999-08-11 2003-01-28 International Business Machines Corporation High reliability, high performance disk array storage system
US6430000B1 (en) * 2000-04-13 2002-08-06 General Dynamics Information Systems, Inc. Hermetically sealed plural disk drive housing
GB0010648D0 (en) 2000-05-04 2000-06-28 Ibm Methods,apparatus and system for caching data
US7082441B1 (en) * 2000-08-17 2006-07-25 Emc Corporation Method and storage and manipulation of storage system metrics
US7072916B1 (en) 2000-08-18 2006-07-04 Network Appliance, Inc. Instant snapshot
US6636879B1 (en) 2000-08-18 2003-10-21 Network Appliance, Inc. Space allocation in a write anywhere file system
US6728922B1 (en) 2000-08-18 2004-04-27 Network Appliance, Inc. Dynamic data space
JP3680762B2 (ja) * 2001-05-14 2005-08-10 セイコーエプソン株式会社 データ転送制御装置及び電子機器
US7308512B1 (en) 2001-05-16 2007-12-11 Network Appliance, Inc. Fiber channel adaptor for serial or parallel ATA disks
US7543100B2 (en) * 2001-06-18 2009-06-02 3Par, Inc. Node controller for a data storage system
US6957351B2 (en) * 2001-07-03 2005-10-18 International Business Machines Corporation Automated disk drive library with removable media powered via contactless coupling
US6845465B2 (en) * 2001-09-17 2005-01-18 Sun Microsystems, Inc. Method and system for leveraging spares in a data storage system including a plurality of disk drives
US6976187B2 (en) * 2001-11-08 2005-12-13 Broadcom Corporation Rebuilding redundant disk arrays using distributed hot spare space
US6983396B2 (en) * 2002-02-15 2006-01-03 International Business Machines Corporation Apparatus for reducing the overhead of cache coherency processing on each primary controller and increasing the overall throughput of the system
US6986097B1 (en) * 2002-02-21 2006-01-10 Ciena Corporation Method and apparatus for generating parity bits in a forward error correction (FEC) system
US7010528B2 (en) * 2002-05-23 2006-03-07 International Business Machines Corporation Mechanism for running parallel application programs on metadata controller nodes
US7448077B2 (en) * 2002-05-23 2008-11-04 International Business Machines Corporation File level security for a metadata controller in a storage area network
US8140622B2 (en) 2002-05-23 2012-03-20 International Business Machines Corporation Parallel metadata service in storage area network environment
US20030220943A1 (en) * 2002-05-23 2003-11-27 International Business Machines Corporation Recovery of a single metadata controller failure in a storage area network environment
US6934804B2 (en) * 2002-05-28 2005-08-23 Sun Microsystems, Inc. Method and system for striping spares in a data storage system including an array of disk drives
US7024586B2 (en) 2002-06-24 2006-04-04 Network Appliance, Inc. Using file system information in raid data reconstruction and migration
US6922752B2 (en) * 2002-08-23 2005-07-26 Hewlett-Packard Development Company, L.P. Storage system using fast storage devices for storing redundant data
JP3862011B2 (ja) * 2002-08-30 2006-12-27 日本電気株式会社 フォールトトレラントコンピュータ及びそのディスク管理機構及びディスク管理プログラム
JP2004164692A (ja) 2002-11-08 2004-06-10 Toshiba Corp 磁気記録媒体及びその製造方法
US6892276B2 (en) * 2002-11-26 2005-05-10 Lsi Logic Corporation Increased data availability in raid arrays using smart drives
JP3811127B2 (ja) * 2003-01-30 2006-08-16 株式会社東芝 情報記録装置及び情報記録方法
JP2004288078A (ja) 2003-03-25 2004-10-14 Hitachi Ltd 固定長ディスクを利用したディスクアレイシステム
US7146461B1 (en) 2003-07-01 2006-12-05 Veritas Operating Corporation Automated recovery from data corruption of data volumes in parity RAID storage systems
GB0318384D0 (en) * 2003-08-06 2003-09-10 Ibm A storage controller and a method for recording diagnostic information
JP2005100259A (ja) 2003-09-26 2005-04-14 Hitachi Ltd ドライブの2重障害を防止するアレイ型ディスク装置、プログラム、及び方法
US7428691B2 (en) * 2003-11-12 2008-09-23 Norman Ken Ouchi Data recovery from multiple failed data blocks and storage units
US7536593B2 (en) * 2004-03-05 2009-05-19 International Business Machines Corporation Apparatus, system, and method for emergency backup
JP2005293363A (ja) * 2004-04-01 2005-10-20 Toshiba Corp ディスクアレイコントローラおよび情報処理装置
US8726129B1 (en) * 2004-07-23 2014-05-13 Hewlett-Packard Development Company, L.P. Methods of writing and recovering erasure coded data
US7143308B2 (en) * 2005-01-14 2006-11-28 Charlie Tseng Apparatus, system, and method for differential rebuilding of a reactivated offline RAID member disk
JP4754852B2 (ja) * 2005-03-15 2011-08-24 富士通株式会社 ストレージ制御装置および方法
US7779294B2 (en) * 2005-04-15 2010-08-17 Intel Corporation Power-safe disk storage apparatus, systems, and methods
JP2007156597A (ja) * 2005-12-01 2007-06-21 Hitachi Ltd ストレージ装置
US7653829B2 (en) * 2005-12-08 2010-01-26 Electronics And Telecommunications Research Institute Method of data placement and control in block-divided distributed parity disk array
US20070180292A1 (en) * 2006-01-31 2007-08-02 Bhugra Kern S Differential rebuild in a storage environment
US20080235447A1 (en) * 2007-03-20 2008-09-25 Inventec Corporation Storage device
US7917683B1 (en) 2007-07-23 2011-03-29 Augmentix Corporation Method and system for utilizing multiple storage devices
US8161223B1 (en) * 2007-07-23 2012-04-17 Augmentix Corporation Method and system for a storage device
US7827439B2 (en) * 2007-09-28 2010-11-02 Symantec Corporation System and method of redundantly storing and retrieving data with cooperating storage devices
US8397011B2 (en) * 2007-10-05 2013-03-12 Joseph Ashwood Scalable mass data storage device
JP5180613B2 (ja) * 2008-02-19 2013-04-10 キヤノン株式会社 情報処理装置及びその制御方法
US8510370B2 (en) * 2008-02-26 2013-08-13 Avid Technology, Inc. Array-based distributed storage system with parity
US20090300282A1 (en) * 2008-05-30 2009-12-03 Promise Technology, Inc. Redundant array of independent disks write recovery system
JP5286956B2 (ja) * 2008-06-13 2013-09-11 富士通株式会社 制御方法、ディスクアレイ装置
US7941697B2 (en) * 2008-12-30 2011-05-10 Symantec Operating Corporation Failure handling using overlay objects on a file system using object based storage devices
US8250283B1 (en) * 2009-05-22 2012-08-21 Google Inc. Write-distribute command for RAID mirroring
TW201103033A (en) * 2009-07-02 2011-01-16 Silicon Motion Inc Data accessing method and data accessing system utilizing the method
US8380956B1 (en) * 2011-03-11 2013-02-19 Emc Corporation Techniques for storing data to device mirrors
US8327185B1 (en) 2012-03-23 2012-12-04 DSSD, Inc. Method and system for multi-dimensional raid
US9690703B1 (en) * 2012-06-27 2017-06-27 Netapp, Inc. Systems and methods providing storage system write elasticity buffers
US10042704B2 (en) * 2015-07-31 2018-08-07 International Business Machines Corporation Validating stored encoded data slice integrity in a dispersed storage network
US10339062B2 (en) 2017-04-28 2019-07-02 EMC IP Holding Company LLC Method and system for writing data to and read data from persistent storage
US10466930B2 (en) 2017-04-28 2019-11-05 EMC IP Holding Company LLC Method and system for fast ordered writes with atomic multicast
US10289491B1 (en) 2017-04-28 2019-05-14 EMC IP Holding Company LLC Method and system for implementing multi-dimensional raid in an extensible storage array to optimize performance
US10614019B2 (en) 2017-04-28 2020-04-07 EMC IP Holding Company LLC Method and system for fast ordered writes with target collaboration
CN109189340B (zh) * 2018-08-29 2021-11-09 上海兆芯集成电路有限公司 用于存取独立硬盘冗余阵列的系统与方法
JP2023543466A (ja) * 2020-09-30 2023-10-16 ホアウェイ・テクノロジーズ・カンパニー・リミテッド 回路、チップ、および電子デバイス

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2561428B1 (fr) * 1984-03-16 1986-09-12 Bull Sa Procede d'enregistrement dans une memoire a disques et systeme de memoire a disques
US4761785B1 (en) * 1986-06-12 1996-03-12 Ibm Parity spreading to enhance storage access
US4831581A (en) * 1987-02-24 1989-05-16 Digital Equipment Corporation Central processor unit for digital data processing system including cache management mechanism
US4914656A (en) * 1988-06-28 1990-04-03 Storage Technology Corporation Disk drive memory
US5283791A (en) * 1988-08-02 1994-02-01 Cray Research Systems, Inc. Error recovery method and apparatus for high performance disk drives
JPH0664838B2 (ja) * 1988-09-02 1994-08-22 松下電器産業株式会社 光デイスクファイル装置
US5088081A (en) * 1990-03-28 1992-02-11 Prime Computer, Inc. Method and apparatus for improved disk access
JPH0731582B2 (ja) * 1990-06-21 1995-04-10 インターナショナル・ビジネス・マシーンズ・コーポレイション パリティ保護データを回復するための方法および装置
US5212784A (en) * 1990-10-22 1993-05-18 Delphi Data, A Division Of Sparks Industries, Inc. Automated concurrent data backup system
US5274799A (en) * 1991-01-04 1993-12-28 Array Technology Corporation Storage device array architecture with copyback cache
US5239640A (en) * 1991-02-01 1993-08-24 International Business Machines Corporation Data storage system and method including data and checksum write staging storage
US5258984A (en) * 1991-06-13 1993-11-02 International Business Machines Corporation Method and means for distributed sparing in DASD arrays
US5257391A (en) * 1991-08-16 1993-10-26 Ncr Corporation Disk controller having host interface and bus switches for selecting buffer and drive busses respectively based on configuration control signals
US5297258A (en) * 1991-11-21 1994-03-22 Ast Research, Inc. Data logging for hard disk data storage systems
US5341381A (en) * 1992-01-21 1994-08-23 Tandem Computers, Incorporated Redundant array parity caching system
US5442752A (en) * 1992-01-24 1995-08-15 International Business Machines Corporation Data storage method for DASD arrays using striping based on file length
US5274499A (en) * 1992-09-04 1993-12-28 Draper Shade & Screen Co., Inc. Battery operated projection screen with spring assisted roller and replaceable fascia

Also Published As

Publication number Publication date
US5708668A (en) 1998-01-13
EP0569313A2 (en) 1993-11-10
US5959860A (en) 1999-09-28
EP0569313A3 (en) 1998-02-11
JPH0619632A (ja) 1994-01-28

Similar Documents

Publication Publication Date Title
JP2501752B2 (ja) コンピユ―タ・システムのストレ―ジ装置及びデ―タのストア方法
JP2769443B2 (ja) 記憶サブシステム及び関連する装置/方法
US5596709A (en) Method and apparatus for recovering parity protected data
US5566316A (en) Method and apparatus for hierarchical management of data storage elements in an array storage device
JP4754852B2 (ja) ストレージ制御装置および方法
JP3164499B2 (ja) ディスクアレイにおけるパリティデータの無矛盾性保持方法
JP3575964B2 (ja) ディスクアレイ装置
KR100211788B1 (ko) 디스크 어레이의 고장 예측을 위한 데이타 처리방법및시스템
US6604172B2 (en) Disk array device with selectable method for generating redundant data
US6467023B1 (en) Method for logical unit creation with immediate availability in a raid storage environment
US20050086559A1 (en) Storage system using fast storage devices for storing redundant data
JP3230645B2 (ja) データ処理方法、システムおよび装置
JP2006252126A (ja) ディスクアレイ装置及びその再構築方法
JP3713788B2 (ja) 記憶装置および記憶装置システム
EP0657801A1 (en) System and method for supporting reproduction of full motion video on a plurality of playback platforms
JPH09269871A (ja) ディスクアレイ装置におけるデータ再冗長化方式
JPH07261945A (ja) ディスクアレイ装置およびディスクアレイの区分け方法
US20040133741A1 (en) Disk array apparatus and data writing method used in the disk array apparatus
JP2006079219A (ja) ディスクアレイ制御装置およびディスクアレイ制御方法
JP2857288B2 (ja) ディスクアレイ装置
KR19980047273A (ko) 레이드 레벨 5 시스템에서 캐쉬 관리 방법
JPH07306758A (ja) ディスクアレイ装置及びその制御方法
JP3250859B2 (ja) ディスクアレイ装置、コンピュータシステム及びデータ記憶装置
JP2570614B2 (ja) デイスクアレイ装置
JP2002123372A (ja) キャッシュメモリ付きディスクアレイ装置及びそのエラー制御方法並びにその制御プログラムを記録した記録媒体

Legal Events

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