JPH07261947A - 記憶サブシステム及び関連する装置/方法 - Google Patents

記憶サブシステム及び関連する装置/方法

Info

Publication number
JPH07261947A
JPH07261947A JP6324884A JP32488494A JPH07261947A JP H07261947 A JPH07261947 A JP H07261947A JP 6324884 A JP6324884 A JP 6324884A JP 32488494 A JP32488494 A JP 32488494A JP H07261947 A JPH07261947 A JP H07261947A
Authority
JP
Japan
Prior art keywords
parity
data
array
storage
block
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
JP6324884A
Other languages
English (en)
Other versions
JP2769443B2 (ja
Inventor
Robert E Galbraith
ロバート・エドワード・ガルブレイス
Joseph T Writz
ジョゼフ・トーマス・リッツ
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 JPH07261947A publication Critical patent/JPH07261947A/ja
Application granted granted Critical
Publication of JP2769443B2 publication Critical patent/JP2769443B2/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/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

Landscapes

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

Abstract

(57)【要約】 【目的】 コンピュータ・システムにおいて、データを
記憶するための改善された方法及び装置を提供する。 【構成】 異なるユニット上のデータ・ブロックを独立
にアクセスし、データ保護のためにパリティ・ブロック
を使用するディスク記憶ユニットの冗長アレイにおい
て、パリティ・ブロックがそれぞれのディスク・ユニッ
トの特定のアドレス範囲(配列の行)に制限され、各行
は複数のパリティ・ブロックを含む。各パリティ・ブロ
ックは、配列の対角線上に配置されるデータ・ブロック
のストライプの排他的論理和を示す。データ・アクセス
が特定の行における参照の局所性を示す場合、この構成
は従来のRAIDレベル5よりも均等に、パリティ更新
の負荷を分散する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明はコンピュータ・データ記
憶装置に関し、特に、一般に"RAID"として知られる
直接アクセス記憶装置のアレイに関する。
【0002】
【従来の技術】最近の拡張データ記憶装置のニーズは、
大容量マス・データ記憶装置を要求する。一般的な記憶
装置は磁気ディスク・ドライブであり、多くのパーツを
含む機械の複雑なユニットは故障し易い。典型的なコン
ピュータ・システムは複数のこうしたユニットを含む。
単一の記憶ユニットの故障はシステムにとって非常に破
壊的な事象である。多くのシステムは、欠陥ユニットが
修復されるか置換されて、失われたデータが復元される
まで動作することができない。
【0003】コンピュータ・システムが大規模化、高速
化及び高信頼性化したため、記憶装置の記憶容量、スピ
ード及び信頼性に対するニーズもそれに伴い増大した。
記憶容量を増大するために単に記憶ユニットを追加する
ことは、任意の1つのユニットが故障する確率をそれに
対応して増加させる。一方、他の改善無しに既存のユニ
ットのサイズを増大すると、スピードを低減し、信頼性
を改善しない傾向がある。
【0004】最近、特定のレベルのデータ冗長性を提供
するように構成される直接アクセス記憶装置のアレイが
注目されている。こうしたアレイは一般に"RAID"
(Redundant Array of Inexpensive(or Independent)
Disks)として知られる。異なる形式の冗長性を提供す
る様々なタイプのRAIDが、Patterson、Gibson及びK
atzによる"A Case for Redundant Arrays of Inexpensi
ve Disks(RAID)"(ACM SIGMOD会議、19
88年6月)で述べられている。Pattersonらは、レベ
ル1乃至5に指定される5つのタイプのRAIDに分類
する。そして、Pattersonの命名法が業界標準となっ
た。
【0005】RAIDの根元的な理論は、多数の比較的
安価で小型のディスク・ドライブが、単一の大きな高価
なドライブを提供することができるというものである。
小型のドライブは、全てがデータを同時に読出すまたは
書込む("アクセス"する)ので高速である。結局、小さ
なドライブはコストが掛からないため、特定の記憶管理
技術との組合わせにより、余分な(冗長な)ディスク・
ドライブを含むことが可能であり、システムは小さなド
ライブの1つが故障しても、その上に記憶されるデータ
を回復することができる。RAIDは容量、性能及び信
頼性の向上を可能にする。
【0006】Pattersonの命名法によると、RAIDレ
ベル3以上(RAID−3、RAID−4、RAID−
5)は、データ冗長性のためのパリティ・レコードを使
用する。パリティ・レコードは、アレイ内の異なる記憶
ユニット上の特定の位置に記憶される全てのデータ・レ
コードの排他的論理和から形成される。換言すると、N
個の記憶ユニットのアレイでは、ある記憶ユニット上の
特定の位置のデータ・ブロックの各ビットが、(N−
1)個の記憶ユニットのグループのその位置のあらゆる
他のビットと排他的論理和されて、パリティ・ビット・
ブロックが生成される。パリティ・ビット・ブロックは
次に、残りのN番目の記憶ユニット上の同一の位置に記
憶される。アレイ内の任意の記憶ユニットが故障する
と、故障したユニット上の任意の位置に含まれるデータ
が、残りの装置上の同一の位置のデータ・ブロックと、
それらに対応するパリティ・ブロックとの排他的論理和
を取ることにより再生される。
【0007】RAID−3では、異なるディスク・ドラ
イブ上の全ての読取り/書込みアクチュエータが、各ド
ライブの同一の位置上のデータをアクセスするように調
和して動作する。RAID−4及びRAID−5は、デ
ィスク・ドライブ・ユニット内で独立に動作する読取り
/書込みアクチュエータにより、更に特徴化される。換
言すると、あるディスク・ドライブ・ユニットの各読取
り/書込みヘッドは、アレイ内の他のユニットがデータ
をアクセスする箇所に関係なく、自由にディスク上の任
意の箇所のデータをアクセスする。
【0008】独立の読取り/書込みを有するパリティ保
護ディスク・アレイ(すなわちRAID−4またはRA
ID−5)で遭遇する1つの問題は、データ・ブロック
が書込まれる度に実行される、パリティ・ブロックの更
新に関連するオーバヘッドである。通常、書込まれるデ
ータ・ブロックが最初に読出され、新データと排他的論
理和された旧データが変更マスクを生成する。パリティ
・ブロックが次に読出され、変更マスクと排他的論理和
されて新パリティ・データが生成される。データ及びパ
リティ・ブロックが次に書込まれる。従って、データが
更新される度に、2回の読出しオペレーション及び2回
の書込みオペレーションが要求される。
【0009】RAID−3及びRAID−4では、パリ
ティ・レコードは単一のディスク・ユニット上に記憶さ
れる。Clarkらによる米国特許第4761785号は、
パリティ・ブロックが実質的にアレイ内のディスク記憶
ユニット間で均等に分散される独立の読取り/書込みア
レイのタイプを開示する。パリティ・ブロックの分散
は、アレイ内のディスク間で、パリティの更新のための
負荷を幾分均等に配分し、それにより、単一の専用のデ
ィスク・ドライブ・ユニット上に全てのパリティ・レコ
ードが保持される時に生じる、潜在的な性能のボトルネ
ックを回避する。PattersonらはClarkアレイRAID−
5を指定した。RAID−5はPattersonにより述べら
れる最も高度なレベルのRAIDであり、他のパリティ
保護RAIDよりも改善された性能を提供する。
【0010】理論的には、Clarkにより述べられるRA
ID−5は、全てのディスク・ドライブ間で、パリティ
更新の負荷を均等化する。しかしながら、実際のシステ
ムでは、この負荷を完全に均等に配分することは困難で
ある。データ記憶アクセスは、"局所性"として知られる
現象を示す傾向がある。すなわち、ディスク・アレイに
記憶される一部のデータが、他のデータよりもより頻繁
にアクセスされる。より頻繁にアクセスされるデータ
は、一緒にまとめられる傾向がある。結果的に、最も頻
繁にアクセスされるデータに対応するパリティ・ブロッ
クを有するディスク・ユニットが、パリティ更新負荷に
関するその"公平な配分(fair share)"より多くを請け
負うことになる。
【0011】
【発明が解決しようとする課題】本発明の目的は、コン
ピュータ・システムにおいて、データを記憶するための
改善された方法及び装置を提供することである。
【0012】本発明の別の目的は、コンピュータ・シス
テムにおける記憶装置の冗長アレイを管理する改善され
た方法及び装置を提供することである。
【0013】更に本発明の別の目的は、記憶装置の冗長
アレイを有するコンピュータ・システムの性能を向上す
ることである。
【0014】更に本発明の別の目的は、記憶装置がデー
タを独立にアクセスする記憶装置の冗長アレイを有する
コンピュータ・システムにおいて、異なる記憶装置間で
データ・アクセス・オペレーションをより均等に分散す
ることである。
【0015】更に本発明の別の目的は、記憶装置の冗長
アレイにおいて、パリティ・ブロックの競合を低減する
ことである。
【0016】
【課題を解決するための手段】アレイ記憶制御装置が、
アレイ内の複数のデータ記憶ユニットをサービスする。
特にアレイは、好適には、続く段落で述べられるように
変更されるRAID−5である。すなわち、制御装置上
に存在する記憶装置管理機構が、自身がサービスする記
憶ユニット上のパリティ・レコードを保守する。各デー
タ記憶ユニットは、他のデータ記憶ユニットと同時にデ
ータをアクセスするが、他の記憶ユニットによるアクセ
スとは独立の位置に対してこれを実行する。パリティ・
レコードが異なるディスク・ユニット間で分散される。
【0017】Clarkにより開示されるRAID−5とは
異なり、本発明によるパリティ・レコードは、対角の"
ストライプ"に沿うデータの排他的論理和により生成さ
れ、アドレス・マトリックス内の"パリティ"行に沿って
記憶される。すなわち、アレイ内のデータ・アドレスが
2次元アドレス・マトリックスとして表され、マトリッ
クスの各列が異なるディスク・ユニットを表し、各行が
ディスク・ユニット上のアドレス空間(ブロック)の範
囲を表す場合、Clarkはマトリックスの水平行に沿って
データ・ブロックを排他的論理和することにより、パリ
ティを生成する。しかしながら、本発明によれば、パリ
ティがマトリックスの対角線に沿う異なるブロックの排
他的論理和により生成される。
【0018】異なるディスク・ユニット間でパリティ・
ブロックを分散するために、Clarkはそれらをマトリッ
クスの対角線に沿って配列する。しかしながら、本発明
によれば、パリティは対角線に沿って計算されるので、
パリティ・ブロックを対角線上に配列する必要はない。
パリティ・ブロックをマトリックスの1行または複数行
に配列することが可能になるだけでなく、このようにす
ることが望ましい。
【0019】ほとんどのRAIDでは、連続論理アドレ
スを有するブロックが同一行を横断して配置される。デ
ータ・アクセスが"局所性"を示す場合、特定の行がより
多くのデータ・アクセスを有する。ClarkのRAID−
5構成では、この行のパリティ・ブロックがより頻繁に
更新され、その結果、性能的なボトルネックとなる。し
かしながら、本発明によれば、任意の単一行に対応して
パリティ・ブロックは存在しない。最も頻繁にアクセス
されるパリティ・レコードが、行を通過する対角線に沿
う排他的論理和により形成され、結果のパリティ・ブロ
ックが異なるデータ記憶ユニットの間で分散される。好
適には、対応するパリティ・ブロックを同一のディスク
装置上に有する単一のディスク装置(列)上の連続デー
タの発生を低減するために、対角パリティ・ストライプ
は更にシフトされる。
【0020】パリティ・ブロックをマトリックスの行に
配列すると、更に性能的な利点が提供される。マトリッ
クスの"行"は、各ディスク・ドライブの同一の物理アド
レス範囲すなわちディスク表面の環状領域に対応する。
パリティ・ブロックは、従って、物理表面の特定の論理
アドレス範囲及び特定の物理領域に制限される。アプリ
ケーションに依存して、これはアドレス変換及びアレイ
の変更を単純化したり、性能を改善する。
【0021】
【実施例】図1は、本発明の好適な実施例のコンピュー
タ・システム100の主要コンポーネントのブロック図
を示す。システム中央処理ユニット(CPU)101及
びシステム・メモリ102は、インタフェース・ユニッ
ト103を介してシステム・バス104に結合される。
システム・バス104は、コンピュータ・システム10
0の様々なコンポーネント間で通信するために使用され
る。複数の入出力プロセッサ105乃至107がシステ
ム・バス104に接続される。入出力プロセッサ105
乃至107は、記憶装置、ワークステーション、ローカ
ル・エリア・ネットワーク(LAN)及び他のシステム
とのデータの通信を処理する。特に、ディスク・アレイ
入出力プロセッサ(IOP)105は、システム・バス
104と記憶ユニット111乃至116のアレイとの間
の通信を処理し、記憶ユニットのオペレーションを制御
する。好適な実施例では、記憶ユニット111乃至11
6は、回転磁気ディスク・ドライブ記憶ユニットであ
る。6つの記憶ユニットが図1には示されるが、IOP
105に接続されるユニットの実際の数は可変であるこ
とが理解されよう。また当業者には、コンピュータ・シ
ステム100が図1に示されていない追加のコンポーネ
ントを有する場合もあり、更に例えば複数のバス、追加
のメモリ装置、複数のディスク・アレイ入出力プロセッ
サなどを有したりすることが理解されよう。好適な実施
例では、コンピュータ・システム100はIBM AS
/400コンピュータ・システムであるが、他のコンピ
ュータ・システムも使用可能である。
【0022】図2は、好適な実施例によるディスク・ア
レイIOP105の主要コンポーネントを詳細に示すブ
ロック図である。IOP105は、制御装置105のオ
ペレーションを指令する制御プログラムを実行するプロ
グラマブル・マイクロプロセッサ201を含む。好適な
実施例では、マイクロプロセッサ201はインテル80
960マイクロプロセッサであるが、他のマイクロプロ
セッサも使用可能である。プログラマブル・マイクロプ
ロセッサ201は揮発性ランダム・アクセス・メモリ
(RAM)202及び不揮発性フラッシュ・メモリ20
3に接続される。システム・バス・インタフェース・ハ
ードウェア205は、システム・バス104に直接結合
され、コンピュータ・システム100の他のパーツとの
通信を処理する。システム・バス・インタフェース・ハ
ードウェア205は、データ及びコマンドをシステム・
バス104から受信し、データ及びコマンドをIOP1
05からシステム・バス104を介して他のシステム・
コンポーネントに送信するために要求されるレジスタ、
ドライバ及び他のハードウェアを含む。SCSIインタ
フェース・ハードウェア206、207、208は、S
CSI(Small Computer Systems Interface)プロトコ
ルを用いて、3つの別々のバス209、210、211
に沿うディスク・ドライブ・ユニットとの通信を制御す
る。"DMA及びXORハードウェア"・ブロック204
として識別されるハードウェア・レジスタ及び論理回路
の特殊なセットが、データに対する排他的論理和機能を
実行し、ある制御装置要素から別の要素へデータを直接
経路指定する。データ・バッファ212のセットは、新
たに書込まれるデータの結果としてパリティを更新する
時、或いはデータを回復する時、中間排他的論理和結果
を保持するために使用される。不揮発性書込みキャッシ
ュ213は待機バッテリ・パワーを有するランダム・ア
クセス・キャッシュ・メモリである。不揮発性書込みキ
ャッシュ213は、後述のように、データをディスク・
ドライブに書込む時の性能を改善するために使用され
る。不揮発性書込みキャッシュ213は目録(TOC:
table of contents)データ構造を含み、これはキャッ
シュの内容及び状態情報(特に、データが記憶装置に書
込まれたかどうか)をリストする。
【0023】プログラマブル・マイクロプロセッサ20
1は、揮発性ランダム・アクセス・メモリ202及び不
揮発性フラッシュ・メモリ203内に存在する記憶管理
制御プログラム221、222を実行することにより、
ディスク・アレイIOP105のオペレーションを制御
する。プログラマブル・マイクロプロセッサ201のた
めの記憶制御プログラム221、222の一部が、それ
ぞれRAM202及び不揮発性フラッシュ・メモリ20
3に記憶される。好適には、記憶制御プログラム222
の比較的小さな部分が不揮発性フラッシュ・メモリ20
3に記憶される。部分222はディスク・アレイIOP
105を初期化するために使用される。ディスク・アレ
イIOP105の通常のオペレーションを制御する記憶
制御プログラム221のより大きな部分が、RAM20
2に記憶される。部分221はディスク記憶ユニットの
1つに記憶されるか、或いはコンピュータ・システム1
00上の別の所に記憶され、システムの初期化時にRA
M202にロードされる。RAM202は、アレイ内の
各パリティ・ストライプのロック状態を記録するロック
・テーブル226を含む。ロックは、例えば誤ったパリ
ティを生じることになる同一のストライプ内の異なるブ
ロックへの2つの同時書込みオペレーションを阻止する
ことにより、データの保全性に影響を及ぼす可能性のあ
るデータ・ブロックへのアクセスを阻止するために使用
される。RAM202及び不揮発性フラッシュ・メモリ
203は、記憶制御プログラム221、222のオペレ
ーションに必要な追加の構成及び状態情報(図示せず)
を含む。
【0024】図3は、典型的なディスク・ドライブ記憶
ユニット111を詳細に示す。好適な実施例では、全て
のディスク・ドライブ記憶ユニット111乃至116
は、構成的に同一であり、同一のデータ容量、スピード
及び他の動作特性を有する。ディスク・ドライブ記憶ユ
ニット111は回転式ディスク301、302を含み、
これは共通のハブまたはスピンドル303に固定して取
り付けられ、スピンドルはベース304上に実装され
る。スピンドル303及び回転式ディスク301、30
2は、駆動モータ(図示せず)により、一定の回転速度
で駆動される。櫛状アクチュエータ・アセンブリ305
が、回転式ディスク301、302の一方の側に配置さ
れる。アクチュエータ・アセンブリ305は電磁モータ
307により駆動されて、スピンドルの軸に平行なシャ
フト306の回りを円弧を描いて回転し、トランスジュ
ーサ・ヘッドを位置決めする。カバー(図示せず)がベ
ース304と嵌合し、ディスク・アセンブリ及びアクチ
ューエータ・アセンブリを保護する。ドライブのオペレ
ーションを制御し、別の装置と通信する電子モジュール
(ホスト・コンピュータなど)が、回路カード312に
含まれる(通常は格納装置の外側に設けられる)。複数
のヘッド/サスペンション・アセンブリ308が、アク
チュエータ・アセンブリ305の先に固定して取り付け
られる。空気力学的な読取り/書込みトランスジューサ
・ヘッド309が、各ヘッド/サスペンション・アセン
ブリ308の端部にディスク表面に近接して配置され
る。
【0025】通常、データは各回転式ディスク301、
302の両方の平らな表面上に記録され、2つのディス
クが使用される場合には、4つのデータ記録面が形成さ
れる。しかしながら、ディスク・ドライブ内のディスク
の数は可変であり、各ディスクの両方の面を使用するこ
とは不可避でないことは理解されよう。各記録面には1
つのヘッド/サスペンション・アセンブリ308が存在
する。回転式ディスク301の記録面315が、図3で
は見ることができる。表面315は、データが記録され
る複数の同心円トラックを含む。隣接トラックのグルー
プ化は、ディスク面の環状領域を形成する。図3は、そ
れぞれがディスク表面315の内径、中央、及び外径に
近いところの環状領域316乃至318を示すが、更に
追加の環状領域が定義されてもよい。
【0026】ディスク・ドライブ記憶ユニット111乃
至116上のデータは、冗長に記憶されるように保持さ
れる。すなわち、ディスク・ドライブ記憶ユニット11
1乃至116のあるユニットの故障によって、データが
失われることはない。特に、ディスク・ドライブ記憶ユ
ニット111乃至116は、RAIDレベル5における
独立のディスクの冗長アレイとして動作する。データ・
レコードがディスク・ユニット上の個別のブロックに記
憶され、各ディスク・ドライブは独立にデータをアクセ
スする。パリティ・ブロックはデータ・ブロックのセッ
トの関数として生成され、個々のパリティ・ブロックは
アレイの異なるディスク・ドライブ間で分散される。パ
リティ・ブロックがデータ・ブロックのセットの関数と
して生成される様子について、次に説明する。
【0027】図4は、Clarkらによる米国特許第476
1785号で開示される従来技術による、4つのディス
ク・ユニット401乃至404を有するRAID−5デ
ィスク・アレイ内のデータ・ブロックのセット及びパリ
ティ・ブロックのマッピングを示すアドレス・マトリッ
クスである。アドレス・マトリックスの各列は、単一の
ディスク・ドライブ上のアドレス空間の総範囲を表す。
各行は、各それぞれのディスク・ユニット上の論理アド
レス空間の総範囲の同一部分(ブロック)を表す。一般
に、同一行のデータ・ブロックは、各ディスク・ユニッ
ト401乃至404の同一のそれぞれの物理位置に記憶
される(しかしながら、時に欠陥セクタのために、デー
タの小セグメントが、ディスクの予約領域に再配置され
なければならないことがある)。
【0028】ここでは"データ・ブロック"または"パリ
ティ・ブロック"は、同一のパリティ・ストライプに属
する単一のディスク・ユニット上のアドレスの最大の連
続セットをさす。これは必ずしも、しばしばディスク・
ドライブ技術において"ブロック"として参照される(こ
こでは明確化のため"アクセス・ブロック"として参照す
る)、単一のアクセス要求によりアクセス可能な最小の
データ単位と同じである必要はない。用語"ブロック"が
単独で使用される場合、これは、ここでは前述で定義さ
れたパリティ・ブロックまたはデータ・ブロックをさす
ものとする。本発明のデータ・ブロックまたはパリティ
・ブロックは、実際に単一のアクセス・ブロックであっ
てもよいが、通常はもっと大きい。
【0029】図4を参照すると、パリティ・ブロック4
11、422、433、444が、アドレス・マトリッ
クスの対角線上に配置される。各パリティ・ブロック
は、各それぞれのディスク・ユニット上の対応するアド
レスのデータを排他的論理和することにより生成される
パリティ・レコードを記憶する。従って、パリティ・ブ
ロック411は、マトリックスの第1行のデータ・ブロ
ック412乃至414の排他的論理和を表す。これらは
各ディスク・ドライブ401乃至404の最低論理アド
レス範囲内に配置されるデータ・ブロックである。パリ
ティ・ブロック422は、第2行内のデータ・ブロック
421、423、424の排他的論理和であり、残りの
パリティ・ブロックについても同様にして求められる。
パリティ・ブロックのセット及びその関連データ・ブロ
ックは、時に"パリティ・ストライプ"と呼ばれる。図4
のアレイでは、アレイの各行は別々のパリティ・ストラ
イプに相当する。
【0030】図4のパリティ・ブロック411、42
2、433、444は異なるディスク・ドライブ・ユニ
ット上に分散されるが、パリティ・アクセスは必ずしも
均等には分散されない。特定の行のデータ・ブロック、
例えばブロック412乃至414が、他のデータ・ブロ
ックよりも頻繁に更新を要求する場合、対応するパリテ
ィ・ブロック411が他のパリティ・ブロックよりも頻
繁に更新を要求することになり、パリティ・ブロック4
11を含むディスク・ドライブに対して不均一な配分の
負荷が課されることになる。このことはまた、パリティ
・ブロック411へのアクセスに対するボトルネックを
生成する可能性がある。例えば、データ・ブロック41
2及び413が更新される必要がある場合に、データ・
ブロック413の書込みは、データ・ブロック412の
書込み及びブロック411の対応するパリティの更新の
完了を待機することが必要となる。
【0031】本発明によれば、後述のように、パリティ
・ブロックを行に配置し、対角線に沿ってパリティを計
算することにより、上記結果が回避される。換言する
と、パリティ・ストライプがアドレス・マトリックスの
行に沿ってではなく、対角線に沿って配置されることに
なる。
【0032】図5は、本発明の単純化した実施例によ
る、4つのディスク・ドライブ・ユニット501乃至5
04上のデータ・ブロック及びパリティ・ブロックのア
レイを表す。パリティ・ブロック541乃至544は、
アドレス・マトリックスの単一の行に沿って配置され、
これはパリティ・ブロックが、この実施例においては使
用可能な論理アドレスの最高位の1/4領域に相当する
同一のアドレス範囲に配置されることを意味する。パリ
ティ・ブロック541はデータ・ブロック514、52
3、532の排他的論理和を表し、これらはマトリック
スの対角線に沿って配置される。同様にパリティ・ブロ
ック542はデータ・ブロック511、524、533
の排他的論理和を表し、パリティ・ブロック543はデ
ータ・ブロック512、521、534の排他的論理和
を表し、パリティ・ブロック544はデータ・ブロック
513、522、531の排他的論理和を表す。図5に
示されるアレイは、上述の参照の局所性に関する問題を
低減することが理解されよう。例えば、データ・ブロッ
ク511乃至513(第1行の最初の3つのブロック)
が、他のデータ・ブロックよりもより頻繁に更新を要求
する場合、パリティ更新の負荷がパリティ・ブロック5
42乃至544の間で分散される。
【0033】図5に示されるパリティ・ブロック及びデ
ータ・ブロックのアレイは、本発明の最も基本的な形態
を表すが、実際にはアドレス・マッピングは、通常、よ
り複雑である。これには後述のように幾つかの理由があ
る。
【0034】非常に大きなデータ・ブロック及びパリテ
ィ・ブロックを有することは、一般には望ましくない。
ブロックが大き過ぎると、本発明が使用されたとして
も、参照の局所性の同一の現象がディスク・ドライブ・
ユニットの不均等な利用を生じる。例えば図5のアレイ
において、各データ・ブロックはアレイ内に記憶される
総データの1/12を表す。データ・アクセスのパター
ンが強い局所性を示すと、単一のデータ・ブロックが他
よりも頻繁にアクセスされることになり、これはもちろ
ん、そのブロックが記憶されるディスク・ユニット、及
び対応するパリティ・ブロックが記憶されるディスク・
ユニットに対しても、不均一な配分の負荷を課すことに
なる。ブロック・サイズが小さければ小さいほど、デー
タ・アクセスの分散は均等になる。しかしながら、小さ
なブロック・サイズに関しては特定の欠点が存在する。
アドレス・マップが大きくなり保持することが困難にな
る。更にブロックが小さくなると、よりデータ・アクセ
スを均等化するために複数のブロックへのアクセスが必
要となる。最適なブロック・サイズの選択は、これらの
要因及び他の要因を考慮に入れなければならない設計に
依存するが、ブロック・サイズは、通常、図5に示され
るディスク・ユニットの使用可能なアドレス空間の1/
4よりはるかに小さく設定される。
【0035】図6は、本発明の第2の実施例によるデー
タ・ブロック及びパリティ・ブロックのアレイ600を
示す。図6の実施例では、アレイは7つのディスク・ド
ライブ・ユニット601乃至607を含み、各ディスク
・ドライブ・ユニット601乃至607のアドレス空間
は、16ブロックに分割される。パリティ・ブロック
は"P"指定で始まり、ディスク・ドライブ・ユニット6
01乃至604のアドレス空間の最も高い1/4領域に
配置される。各パリティ・ブロックに対応するデータ・
ブロックは"P"を除いた同一の指定を有する。従って、
例えばディスク・ドライブ・ユニット602乃至607
上の"0A"とラベル付けされたデータ・ブロックは、デ
ィスク・ドライブ・ユニット601上の"P0A"とラベ
ル付けされたパリティ・ブロックに対応する。すなわち
パリティ・ブロック"P0A"は、"0A"とラベル付けさ
れた全てのブロックの連続的な排他的論理和により獲得
されるブロックを含む。
【0036】図6の実施例では、パリティ・ブロックが
アレイの全てのディスク・ユニットよりも少なく制限さ
れていることが観察される。図5の実施例のように、パ
リティ・ブロックを全てのディスク・ユニット上に拡張
することも可能である。全てのユニット上にパリティを
拡張することは、理論的には、パリティ更新の負荷の分
散により、最大性能を達成することになる。図6の実施
例は、幾つかの理由により選択されている。パリティを
予め選択された数のディスク・ドライブに制限すること
により、既存のアレイにディスク・ドライブを追加する
ことが容易になる。なぜならパリティ・ブロックを移動
する必要がないからである。更にアドレス機構が容易に
なる。ディスク・ドライブ・ユニット601乃至604
は、常に使用可能な同一の量のデータを有する。コンピ
ュータ・システム100の他のコンポーネントにとっ
て、ディスク・ドライブ・ユニット601乃至604
は、それらの実際の容量の3/4の容量を有するユニッ
トと見なされる。システムは一般に、追加の1/4のア
ドレスが存在すること、またはパリティがIOP105
により保持されていることを知らない。システムCPU
101によるあるディスク・ドライブ・ユニット601
乃至604上の特定のディスク・アドレスへのデータ・
アクセスにより、そのアドレスが書込まれる。システム
CPU101が特定のアドレスのデータを指定する時の
アドレス変換の必要を回避するために、パリティ・ブロ
ックがアドレス範囲の中間領域ではなく、上位1/4領
域に配置される。
【0037】図6に示されるアレイは、初期にはディス
ク・ドライブ・ユニット601乃至604の4つのディ
スク・ドライブだけを含むアレイと仮定する。5番目の
ディスク・ドライブ・ユニット605が追加されると、
ディスク・ドライブ・ユニット605の各データ・ブロ
ックが、パリティ・ブロックを再配置することなく、既
存のアレイのパリティ・ブロックの1つに割当てられ
る。その後、ディスク・ドライブ・ユニット605内の
ブロックの任意の更新は、元のディスク・ドライブ・ユ
ニット601乃至604のいずれかに配置される関連パ
リティ・ブロックの更新を要求する。ディスク・ドライ
ブ・ユニット606、607が図6のアレイに追加され
ると、これらのドライブ上のデータ・ブロックが、同様
にして既存のパリティ・ストライプに割当てられる。同
様にして、更に追加のドライブ(図示せず)を図6のア
レイに追加することも可能である。
【0038】図7は、本発明の第3の実施例によるデー
タ・ブロック及びパリティ・ブロックのアレイ700を
示す。図7の実施例では、図6の実施例に対して、パリ
ティ・ストライプ位置の決定に関する多少の複雑化によ
り、追加の改善が導入される。アレイ700のパリティ
・ブロックは、図6のアレイ600の場合と同様に、デ
ィスク・ドライブ・ユニット701乃至704上に配置
される。しかしながら、ここでは同一ディスク・ユニッ
ト上のデータの連続ブロックが、単一のディスク・ユニ
ット上のパリティ・ブロックに対応付けられるアレイと
ならないように、ストライプが幾分異なってアレイされ
る。
【0039】図6を参照すると、ディスク・ドライブ・
ユニット601上のデータ・ブロック3A、3B、3C
及び3Dは、それぞれパリティ・ブロックP3A、P3
B、P3C及びP3Dに対応するストライプの一部であ
る。アレイ600のパリティ・ブロックP3A、P3
B、P3C及びP3Dは、単一のディスク・ドライブ・
ユニット604上に配置される。従って、隣接ブロック
3A、3B、3C及び3Dの間で参照の局所性が存在
し、これらのブロックが頻繁にアクセスされると、対応
するパリティ・ブロックを含むディスク・ドライブ・ユ
ニット604に対する競合が発生する。
【0040】図7に示されるアレイ700では、パリテ
ィ・ブロックの第1行(すなわちパリティ・ブロックP
0A、P1A、P2A及びP3A)に対応するストライ
プは、図6のアレイ600の場合と同様にアレイされ
る。しかしながら、残りのストライプは、同一のディス
ク・ユニット上の垂直方向に連続するブロックに対して
パリティ・ブロックを配置することを回避するために、
図示のように水平方向に"シフト"される。更にストライ
プは、対応するパリティ・ブロックを含むディスク・ユ
ニットを常にスキップするようにアレイされる。但し、
データが実際にあるディスク・ユニットから別のディス
ク・ユニットに"シフト"される訳ではなく、データ・ブ
ロックとパリティ・ブロックとの対応関係が"シフト"さ
れることが理解されよう。
【0041】より詳細には、パリティ・ブロックの第2
行のパリティ・ブロック(すなわちパリティ・ブロック
P0B、P1B、P2B及びP3B)に対応する"B"行
のブロック("B"指定のブロック)を含むパリティ・ス
トライプが"A"行に対して、左に1ディスク・ユニット
分シフトされる。"C"行のブロックを含むパリティ・ス
トライプは、左に2ディスク・ユニット分シフトさ
れ、"D"行のブロックを含むパリティ・ストライプは、
左に3ディスク・ユニット分シフトされる。更に最初の
4つのディスク・ドライブ・ユニット701乃至704
の特定の行751乃至753は、データ・ブロックを同
一ディスク上のパリティ・ブロックに対応付ける(これ
はデータ冗長性の原理に反する)ことを回避するため
に、再度シフトされる。例えばD行に相当する行751
は、左に3回シフトされると、ブロック0Dがディスク
・ドライブ・ユニット701に、すなわち対応するパリ
ティ・ブロックP0Dを記憶する同一のユニットに来る
ことになる。この状況を回避するために、行751は左
に2回だけシフトされる。
【0042】図8は、本発明の好適な実施例による4つ
のパリティ装置を有するデータ・ブロック及びパリティ
・ブロックのアレイ800を示す。この実施例では、各
ディスク・ドライブ・ユニット801乃至810が、図
に示されるよりも多くのブロックを含み、これらの追加
のブロックは途中省略して示される。実施例では、各デ
ータ・ブロックまたはパリティ・ブロックは、1024
のアクセス・ブロックまたは約500Kバイトのデータ
を含む。各ディスク・ユニットは、ほぼ1ギガバイト乃
至4ギガバイトのデータを記憶し、従って、各ディスク
・ドライブ・ユニットに含まれるブロック数は数千のオ
ーダであり、本発明の原理が、事実上、任意の数のブロ
ックを有するドライブに適用可能であることが理解され
よう。アレイ800は実質的にはアレイ700と同じで
あるが、より多くのブロック及びディスク・ドライブ・
ユニットを有する。
【0043】図9は、本発明の好適な実施例による8個
のパリティ装置を有するデータ・ブロック及びパリティ
・ブロックのアレイ900を示す。アレイ900内のパ
リティ・ブロックは、ディスク・ドライブ・ユニット9
01乃至908上に分散される。アレイ900はアレイ
800と同じ原理により構成され、パリティ・ブロック
が非常に多数のディスク上に拡張され、直接的な結果と
して調整が要求される以外は、2つのアレイは同じであ
る。
【0044】好適な実施例のIOP105は、アレイ8
00またはアレイ900のいずれか、すなわち4個また
は8個のパリティ装置を有するアレイをサポートする。
この制限は記憶管理制御プログラム221、222、及
びアレイと対話するシステムの他のパーツ、更に装置を
既存のアレイに追加するために要求されるオペレーショ
ンを単純化するために選択される。しかしながら、本発
明が様々な数のディスク・ユニットに対しても適用さ
れ、パリティ・ブロックが全てのまたは一部のディスク
・ユニットに分散されることが理解されよう。
【0045】以降で述べられるパリティの導出を理解す
るための支援として、次の用語が使用される。図8を参
照すると、アレイ内のディスク・ドライブ・ユニット8
01乃至810は、それぞれ0乃至9の番号が割当てら
れる。アレイ800内の使用可能な記憶領域は、パリテ
ィ・ブロックを記憶するディスク・ユニットの数の"グ
ループ"に分割される。この場合では、グループの数は
4である(ディスク・ドライブ・ユニット801乃至8
04)。グループは0乃至3に番号付けされる。各グル
ープはブロックの複数の連続する行を含む。各グループ
内のブロックの行は0から番号付けされ、任意の行の番
号はグループ内において固有であるが、アレイ内におい
ては固有でない。従ってアレイ内の特定のブロックは、
グループ番号と、グループ内の行番号と、ディスク・ユ
ニット番号とにより指定される。
【0046】アレイ800及び900のブロック内の番
号は、そのブロックが属するパリティ・ストライプを示
す4桁の16進のパリティ・ストライプ識別子である。
各パリティ・ストライプ(すなわち1つのパリティ・ブ
ロックと、そのパリティ・ブロックが排他的論理和を表
す対応するデータ・ブロックの各セット)に対して、ア
レイの高位アドレス・グループ、すなわちアレイ800
のグループ番号3またはアレイ900のグループ番号7
内に固有のパリティ・ブロックが存在する。識別子の3
番目に高い桁は行番号を指定する。ここで特定のパリテ
ィ・ストライプの全てのブロックは、異なるグループ間
に分散されるが、同一の行番号に配置される。最下位桁
はパリティ・ブロックが配置されるディスク・ユニット
を指定する。
【0047】図8及び図9のアレイ800及び900に
おいて、幾つかのブロックはパリティ・ストライプ識別
子の4桁目に"X"を含む。これらは、図7のアレイ70
0に関連して上述したように、パリティ・ストライプ
が"シフト"されるブロックに相当する。好適な実施例に
おいて、これらのストライプをシフトする公式について
以下で説明するが、ストライプのデータ・ブロックが対
応するパリティ・ブロックと同一のディスク・ユニット
上に配置されない限り、他のシフト方法も使用可能であ
ることが理解されよう。
【0048】好適な実施例では、全てのパリティ保守が
制御装置IOP105において実行される。IOP10
5は、コンピュータ・システム100のあるコンポーネ
ント(例えばシステムCPU101)からシステム・バ
ス104を介して、データ・アクセス要求を受信する。
要求はディスク・ユニット及びそのユニット内のデータ
の論理アドレスを含むが、パリティ・ブロックの位置は
含まない。この情報からIOP105はパリティ・ブロ
ック位置を決定し、パリティを更新しなければならな
い。更に任意の単一のディスク・ユニットの故障に際
し、IOP105はデータを復元できなければならな
い。このためにIOP105は、特定のパリティ・ブロ
ックに対応するストライプの全てのデータ・ブロックの
位置を決定できなければならない。これらの決定は、後
述のように、プログラマブル・マイクロプロセッサ20
1上で実行される記憶管理制御プログラム221、22
2により下される。
【0049】好適な実施例では、アレイの初期化時に、
ディスク・ユニット番号がアレイの各ディスク・ユニッ
トに割当てられる。アレイ内のパリティ装置の数はアレ
イ内に8個以上のディスク・ユニットが存在する場合に
は8であり、それ以外では4である。ブロック・サイズ
は固定であるので、アレイ内のブロック数はディスク・
ユニットの数及びサイズにもとづき、IOP105によ
り決定される。
【0050】データ・ブロックが更新される時のよう
に、特定のデータ・ブロックに対応するパリティ・スト
ライプ識別子(及びパリティ・ブロックの位置)を決定
する必要がある場合には、IOP105は次に示すプロ
シージャを使用する。データ・ブロックのディスク・ユ
ニット(Dev#)及び論理アドレス(LA)が提供される
(例えば、データが書込まれる時、これらがシステム・
バス104を介して受信される書込み要求内で指定され
る)。IOP105は、論理アドレスからデータ・ブロ
ックのグループ番号(Group#)を決定する。グループ番
号は、アドレスを1グループ当たりのアドレスの数によ
り除算した結果を整数に切り下げて求められる。同様に
グループ内の行番号(Row#)は、下記の公式により、論
理アドレス(LA)から直接導出される。
【数1】Row#=(LA−(Group#*1グループ当たりのア
ドレス数))/(1行当たりのアドレス数)
【0051】パリティ・ブロックが配置されるディスク
・ユニット(パリティ装置番号またはP-Dev#)は、下記
の公式により仮に決定される。
【数2】 P-Dev#=(Dev#+Group#+Row#+1)MOD NPDevices
【0052】ここで、NPDevicesはアレイ内のパリティ
装置の数であり、アレイ800では4であり、アレイ9
00では8である。上記のようにして計算されたパリテ
ィ装置番号(P-Dev#)がデータの装置番号(Dev#)と同
じ場合、"シフト"が実行され、パリティ装置番号が下記
の代替公式により計算される。
【数3】P-Dev#=(Dev#−Group#−1)MOD NPDevices
【0053】パリティ・ストライプ識別子は、従ってRo
w#の3つの桁をP-Dev#の1つの桁により連結することに
より形成される。パリティ・ブロックは常に最後のグル
ープ内に配置されるので、Row#及びP-Dev#は行及び装置
により、対応するパリティ・ブロックの特定の位置を指
定する。
【0054】例えばデータを復元する場合など、特定の
パリティ・ストライプ内の全てのデータ・ブロックの位
置を決定する必要がある時、次のプロシージャが使用さ
れる。パリティ・ブロック識別子はパリティ・ブロック
の行番号(Row#)及び装置番号(P-Dev#)を含む。この
パリティ・ブロックに対応付けられるデータ・ブロック
はRow#及びP-Dev#から導出される。パリティ・ブロック
を含む装置を除き、アレイの各ディスク・ユニット(装
置)上には、こうしたデータ・ブロックが正に1つ存在
する。装置番号Dev#を有する任意の装置上において、デ
ータ・ブロックは行番号がRow#(パリティ・ブロックと
同じ)で、グループ番号Group#が下記の公式によるグル
ープ内に配置される。
【数4】 Group#=(P-Dev#−Row#−Dev#−1)MOD NPDevices
【0055】アレイ内の各ディスク・ユニットに上記公
式を連続して適用することにより、パリティ・ストライ
プ内の各データ・ブロックのディスク・ユニット及び対
応するGroup#及びRow#が獲得される。
【0056】次に、本発明に必要なハードウェア及びソ
フトウェア機構と共に、コンピュータ・システム100
のオペレーションについて説明する。通常のオペレーシ
ョン・モードでは、アレイ制御装置IOP105がシス
テム・バス104を介して、コンピュータ・システム1
00の他のコンポーネントからデータ・アクセス要求
(すなわち読出し及び書込みコマンド)を受信する。I
OP105はそれぞれのオペレーションが完了すると、
完了メッセージを発行する。システムCPU101及び
他のシステム・コンポーネントはパリティの保守には関
与しない。アレイ内のディスク・ユニットの1つが故障
すると、IOP105が対応するパリティ・ブロック及
び同一ストライプの他のデータ・ブロックを使用して、
故障ユニットの各部ブロックのデータを復元する。
【0057】通常のモードにより読出しオペレーション
を実行するために、記憶管理制御プログラム221、2
22の指令の下で、制御装置IOP105により実行さ
れるステップが図10に示される。読出しオペレーショ
ンは、ステップ1001でシステム・バス104から読
出しコマンドを受取り、ステップ1002で要求データ
が不揮発性書込みキャッシュ213内に存在するかどう
かを判断することにより実行される。要求データが存在
する場合、ステップ1004で不揮発性書込みキャッシ
ュ213内のデータがシステム・バス104を介して、
直接リクエスタに送信される。それ以外では、まずステ
ップ1003でデータが適切な記憶ユニットからデータ
・バッファ212に読出され、次にステップ1004
で、そこからシステム・バスに転送される。ステップ1
003におけるデータの読出しの時、データは読出し要
求内で指定される論理アドレス及びディスク・ユニット
に対して直接アクセスされる。パリティをアクセスした
り、或いはアクセスされるデータがどのパリティ・スト
ライプに属するかを判断する必要はない。
【0058】書込みオペレーションは、プログラマブル
・マイクロプロセッサ201で実行される記憶管理制御
プログラム221、222の2つの非同期のタスクによ
り実行される。1つのタスクは図11に示されるが、シ
ステム・バス104を介して書込み要求を発行するシス
テムのコンポーネント(リクエスタ)と通信する。書込
みオペレーションは、タスクがステップ1101でバス
から書込みコマンドを受取ると開始する。次にタスクは
ステップ1102で目録225をチェックし、記憶装置
に書込まれるデータを記憶するのに十分な空間が、不揮
発性書込みキャッシュ213内で使用可能かどうかを判
断する。空間が使用可能でない場合、制御装置IOP1
05はホストからデータを受信することができず、ステ
ップ1103で空間が使用可能になるまで待機しなけれ
ばならない(すなわち、既に不揮発性書込みキャッシュ
213内に存在するデータが、ディスク・ドライブ・記
憶ユニット111乃至116のいずれかに書込まれるの
を待機しなければならない)。不揮発性書込みキャッシ
ュ213内で空間が使用可能になると、データがシステ
ム・バス104からシステム・バス・インタフェース・
ハードウェア205を介して不揮発性書込みキャッシュ
213に受信され、目録225がステップ1104で更
新される。プログラマブル・マイクロプロセッサ201
は次にステップ1105で、オペレーション完了メッセ
ージをシステム・バス104を介してリクエスタに発行
する。オペレーション完了メッセージを受信すると、リ
クエスタ(例えばシステムCPU101)は、あたかも
データが実際に1つまたは複数のディスク・ドライブ記
憶ユニット111乃至116に書込まれたかのように、
自由に処理を継続する。しかしながら、実際にはデータ
は不揮発性書込みキャッシュ213内でしばらく待機し
なければならない。リクエスタにとっては、オペレーシ
ョンが完了したものと思われる。
【0059】プログラマブル・マイクロプロセッサ20
1で実行される第2の非同期タスクは、データを不揮発
性書込みキャッシュ213から1つまたは複数のディス
ク・ドライブ・ユニットに書込む。通常の動作モードに
おけるこのタスクの流れ図が図12に示される。タスク
はステップ1201で、不揮発性書込みキャッシュ21
3内で待機されるものの中から、書込みオペレーション
を選択する。選択基準は本発明の一部に含まれないが、
システム性能及び他の考慮にもとづき、例えばFIF
O、LIFOまたは他の基準が使用される。IOP10
5は次にステップ1202で、データ・ブロックからパ
リティ・ストライプ識別子を獲得する上記公式に従い、
対応するパリティ・ストライプ識別子及び対応するパリ
ティ・ブロックの位置を決定する。パリティ・ストライ
プ識別子の計算において、IOP105は、書込み及び
パリティ更新の実行の間のデータの変更を阻止するため
に、パリティ・ストライプに対する適切なロックを獲得
する(ロック・テーブル226にロックを記録する)。
【0060】書込みオペレーションが実行される時、パ
リティは更新されなければならない。新たな書込みデー
タと旧データとの排他的論理和を取ることにより、書込
みオペレーションにより変更されるビットのビット・マ
ップ("変更マスク"として参照される)を獲得すること
が可能である。これらの変更マスクと既存のパリティ・
データとを排他的論理和することにより、更新パリティ
・データが生成される。従って記憶装置に書込む以前
に、ステップ1203で旧データが最初にディスク・ユ
ニットからデータ・バッファ212に読出される。次に
ステップ1204で、バッファ内のこの旧データは排他
的論理和ハードウェア204により、書込みキャッシュ
213に書込まれるデータと排他的論理和され、変更デ
ータの変更マスクが生成される。変更マスクは一時的に
データ・バッファ212に保管され、その間に新データ
がステップ1205で、ディスク・ドライブ記憶ユニッ
ト111乃至116の1つに書込まれる。対応する旧パ
リティ・レコードが、次にステップ1206でデータ・
バッファ212に読出され、ステップ1207で、変更
マスクと排他的論理和され、新パリティ・データが生成
される。この新パリティ・データは次にステップ120
8でディスク・ドライブ記憶ユニット111乃至116
の適切な1つに書込まれ、データがもはやキャッシュ内
に存在しないことを示すように、目録225が更新され
る。ロック・テーブル226内のパリティ・ストライプ
上のロックが、次にステップ1209で解除され、書込
みオペレーションが完了する。
【0061】アレイIOP105の側から見ると、各デ
ィスク・ドライブ記憶ユニット111乃至116は、適
切に機能しているかまたはそうでない独立言語型(self
-contained)ユニットである。ディスク・ドライブ自身
は、特定のタイプのインタフェース欠陥を克服するため
の内部診断機構及びエラー回復機構を含むことができ
る。こうした機構は本発明の範囲外である。ここでは、
ディスク記憶ユニットの故障は、機能的なすなわちデー
タ・アクセスの障害を意味する。こうした障害はユニッ
ト自身のブレークダウンであったりするが、それに限る
ものではない。例えばユニットがパワーオフされたり、
データ・ケーブルが切断されたりする場合も含まれる。
制御装置から見るとこうした障害は発生する度に、記憶
ユニットの故障として認識される。こうした故障を検出
する検出機構は既知である。
【0062】ディスク・ドライブ記憶ユニット111乃
至116の1つが故障すると、制御装置IOP105が
故障したユニットに記憶されるデータを復元する。好適
な実施例では、故障ユニットは最初に修復されるか、別
のユニットと置換されなければならない。置換ユニット
は故障ユニットと同一の装置番号が与えられ、復元デー
タが置換ユニット上に配置される。別の実施例では、I
OP105に結合される1つまたは複数の"ホット・ス
ペア(hot spare)"・ディスク・ドライブ・ユニットを
保持することが可能で、これがオペレータによる介入を
必要とすること無しに、自動的に故障ユニットを置換す
るように割当てられる。"ホット・スペア"・ユニットが
オンラインに自動的にされるか、置換ユニットが手動式
に制御装置IOP105に接続されると、データの復元
が以下で述べるように実行される。
【0063】図13は、故障ユニットに含まれるデータ
を復元するためのステップを示す。データは一度に1ブ
ロック復元される。ステップ1301で、置換ユニット
上の非復元ブロックが復元のために選択される。次にス
テップ1302で、制御装置IOP105がブロック位
置からパリティ・ストライプ識別子を決定する上記公式
により、非復元ブロックに対するパリティ・ストライプ
識別子を計算する。パリティ・ストライプ識別子の計算
において、IOP105は復元作業中に別のタスクがデ
ータに干渉しないように(例えばディスクの1つに書込
むなど)、データ復元タスクのために対応するロックを
獲得する。IOP105は次にステップ1303で、各
非故障ディスク・ユニットを連続して選択し、復元され
るパリティ・ストライプに属するそのユニット上の1ブ
ロック(パリティ・ブロックまたはデータ・ブロック)
の位置を決定する。この決定はパリティ・ストライプ識
別子からブロック位置を決定する上記公式を用いて達成
される。ステップ1304でブロックが読出され、以前
のブロックの連続的排他的論理和と排他的論理和される
(最初のブロックの読出しでは、排他的論理和は実行さ
れない)。結果が一時的にデータ・バッファ212に記
憶される。更にディスクがアレイ内に残っていると(ス
テップ1305)、次のディスクがステップ1303で
選択され、処理が繰返される。図13では、処理はブロ
ック1303乃至1305において繰返されるように示
されるが、実際にはIOP105は、それぞれのデータ
・ブロックを同時に読出すための要求をディスク・ユニ
ットに送信するので、各引続くディスク・ユニットがそ
のデータ・ブロックを読出すのを待機する必要なく、次
のディスク・ユニットがブロックの読出しを要求され
る。全てのブロックが読出され、上述のように排他的論
理和されると、データ・バッファ212内に結果的に得
られたブロックが復元データを表し、これがステップ1
306で置換ディスク・ユニットに書込まれる。データ
を置換ユニットに書込むと、ロックがステップ1307
で解除される。
【0064】故障ディスク・ユニットに対する置換が可
能な場合、データは動的に復元されるか(すなわちコン
ピュータ・システム100が稼働されながら、データ・
アクセス要求が生成される)、或いはコンピュータ・シ
ステム100の通常オペレーションを中断して、一度に
データが復元される。好適な実施例では、データはBond
らによる米国特許出願第975156号(1992年1
1月12日出願)で述べられるプロシージャを用いて、
制御装置IOP105により動的に復元される。この出
願は、米国特許出願第542216号"Method and Appa
ratus for Recovering Parity Protected Data"(19
90年6月21日出願)の継続(file wrapper continu
ation)である。
【0065】ディスク・ユニットの故障に際し、IOP
105はデータのアクセスを継続し、コンピュータ・シ
ステム100は置換ユニットが故障ディスク・ユニット
の代わりに使用可能になる以前に、オペレーションの継
続を許可される。しかしながら、その間コンピュータ・
システム100は"エクスポーズド・モード(exposedmo
de)"、すなわちデータがもはや冗長ではないモードで
実行される。従って第2のディスク・ユニットが故障す
ると、データが失われることになる。こうした理由か
ら、故障ディスク・ユニットをできるだけ迅速に置換す
ることが望ましい。エクスポーズド・モードで動作中、
IOP105は非故障ユニット上のデータを通常のよう
にアクセスする(書込まれるデータのパリティ・ブロッ
クが故障ユニット上に存在すると、パリティが単に無視
される)。故障ユニット上のデータを読出す時、IOP
105は図13のステップ1306において、復元デー
タを置換ユニットに書込む代わりに、データがシステム
・バス104を介してリクエスタに転送される以外は、
上述のデータ復元プロシージャを使用する。
【0066】データを故障ユニットに書込む時、パリテ
ィ・ブロックを更新するために、パリティ・ストライプ
内の全てのデータ・ブロックが読出されなければならな
い。この処理が図14に示される。ステップ1401
で、IOP105はブロック位置からパリティ・ストラ
イプ識別子を決定する上記公式により、書込まれるデー
タ・ブロックのパリティ・ストライプ識別子を計算す
る。IOP105は、パリティの復元中に別のタスクが
パリティ・ストライプに干渉しないように、書込みタス
クのために対応するロックを獲得する。ステップ140
2で、連続的排他的論理和結果を保持するデータ・バッ
ファ212の領域が、故障ディスク・ユニット上のデー
タ・ブロックに書込まれる新データにより初期化され
る。IOP105は次にブロック1403で、各非故障
ディスク・ユニット(パリティを記憶するディスク・ユ
ニットを除く)を連続して選択し、同一のパリティ・ス
トライプに属するそのユニット上のデータ・ブロックの
位置を、書込まれるブロックとして決定する。この決定
はパリティ・ストライプ識別子からブロック位置を決定
する上記公式を用いて達成される。ステップ1404で
ブロックが読出され、以前のブロックの連続的排他的論
理和と排他的論理和され、結果がデータ・バッファ21
2に一時的に記憶される。アレイ内に更にディスクが残
っていると(ステップ1405)、次のディスクがステ
ップ1403で選択され、処理が繰返される。図13に
示されるデータ復元の場合と同様、ブロック1403乃
至1405は実際には同時に実行される。全てのブロッ
クが読出され、上述のように排他的論理和されると、バ
ッファ212内に結果的に得られたブロックはパリティ
を表し、これがステップ1406で対応するパリティ・
ディスク・ユニットに書込まれる。パリティ・ブロック
を書込むとロックがステップ1407で解除される。
【0067】好適な実施例のIOP105はシステムC
PU及びバスと一緒に収容され、好適にはバックアップ
用の短期非常電源を有する。停電の際に、IOP105
は部分的に実行された書込みオペレーションを完了し、
新データがディスクに書込まれたものの新パリティが書
込まれない状況を回避する。この場合、変更マスク(揮
発性データ・バッファ212に記憶される)は失われ
る。全てのディスクが通常モードで動作していると、パ
リティは全てのデータを読出し、連続的な排他的論理和
を取ることにより復元される。しかしながら、システム
がエクスポーズド・モードで動作している時にパワー・
ダウンされると、変更マスクの損失はデータの損失を招
く。或いは書込みオペレーションが停電に際しても後に
実行されるように、変更マスクを不揮発性書込みキャッ
シュ213に記憶することも可能である。
【0068】好適な実施例では、アレイはディスク・ユ
ニットが置換されるまで"エクスポーズド"・モードで動
作するが、制御装置を"ホット・スペア"に自動的に接続
し、即時データ復元を開始することも可能である。また
第2のユニットが故障した場合を考慮し、アクセス及び
データ損失を防止するために、アレイを遮断することも
可能である。更にBondらによる上記米国特許出願第97
5156号で述べられるように、復元データをパリティ
・ブロックまたは既存のディスク・ドライブ・ユニット
の予備記憶領域に記憶することも可能である。
【0069】上述の好適な実施例では、パリティ・ブロ
ックはアドレス・マトリックスの行に配置され、パリテ
ィ・ストライプのデータ・ブロックが対角線に沿って配
置された。好適な実施例では、特定の行において、パリ
ティ・ストライプが"シフト"されたが、これはデータ・
ブロックをパリティ・ブロックと同じディスク・ドライ
ブ・ユニット上に書込むことを回避するためである。換
言すると、パリティ・ブロックを含むディスク・ドライ
ブ・ユニットがマトリックスから除去されると、好適な
実施例では、あるストライプの全てのデータ・ブロック
が対角線上に配置される。しかしながら、本発明の範囲
内において、データ・ブロックの他のアレイも可能であ
ることが理解されよう。1ストライプのデータ・ブロッ
クは、データ冗長性を達成するために、異なるディスク
・ユニット上に配置されなければならず、好適には、参
照の局所性の問題を回避するために、各ディスク・ユニ
ット内の異なるアドレスに配置される。本発明の本質的
なポイントは、パリティ・ブロックを制限されたアドレ
ス範囲内、すなわち制限された数の行に配置することで
ある。パリティ行(少なくとも幾つかのパリティ・ブロ
ックを含む行)の数は、パリティ・ブロックを含まない
行(データ・ブロックだけを含む行)の数よりも少な
く、好適には、アレイ内の総行数の1/4より多くては
ならない。より詳細には、パリティを含む行の数は、好
適にはR/N(最も近い整数に切り上げ)であり、ここ
で、Rはマトリックス内の行の総数(任意のディスク・
ユニット上で使用可能なブロックの総数)であり、Nは
パリティ・ブロックが分散されるディスク・ユニットの
数である。ある技法では、パリティ・ブロックがアレイ
の全てのディスク・ユニットに分散され、他の技法で
は、パリティ・ブロックが上述の理由から、ディスク・
ユニットの特定のサブセットに制限される。パリティ・
ブロックがアレイの全てのディスク・ユニットに分散さ
れる場合では、パリティ・ブロックを含む行は、一般に
パリティ・ブロックだけを含む。パリティ・ブロックを
含む行は、連続的である必要はないことが理解されよ
う。特に幾つかのアプリケーションでは、パリティ行を
複数のバンドに配置し、データ・ブロックだけを含む行
をパリティ行のバンド間に配置することが望ましい。
【0070】上述の説明では、理解を容易にするため
に、アレイIOP105により駆動される単一のディス
ク・アレイについて述べた。しかしながら、アレイIO
P105は好適には複数のアレイ、すなわち、それぞれ
が独立に固有のパリティ・ブロックを含む複数セットの
ディスク記憶装置をサポートすることができる。複数ア
レイが使用される場合、理論的には、各アレイ内で1つ
の記憶ユニットが故障してもデータの損失は生じない。
好適な実施例のアレイIOP105は、集合的に合計1
6個までのディスク・ユニットを有する1つまたは2つ
の別々のアレイをサポートすることができる。複数アレ
イの扱いでは、IOP105は、どのディスクがどのア
レイに属するかを識別する状態及び構成情報を保持する
ことが要求される。好適な実施例のアレイIOPは、特
定数の装置及び特定数のアレイを処理することができる
が、装置及び別々のアレイの数は本発明の範囲内におい
て可変である。またシステム・バス104に接続される
IOP105の数も可変であり、各々が1つまたは複数
のアレイをサービスする複数のIOPがシステムに接続
可能である。
【0071】好適な実施例では、単一のアレイ制御装置
IOPが記憶サブシステム内の複数のディスク・ドライ
ブをサービスする。ディスク・ドライブ自身は冗長であ
り、サブシステムは単一のドライブの故障に際しても、
オペレーションを継続することができるが、制御装置は
冗長ではない。或いは、複数の冗長な制御装置により記
憶サブシステムを動作することも可能であり、この場合
には、単一の制御装置IOPが故障しても、システムは
オペレーションを継続することが可能である。例えば適
切な物理接続が存在すると仮定すると、制御装置A及び
Bを有するサブシステムを動作可能であり、ここで、制
御装置Aがディスク・ドライブ1乃至Nをサービスし、
制御装置Bがディスク・ドライブ(N+1)乃至2Nを
サービスする。任意の1つの制御装置の故障に際し、他
の制御装置が全てのディスク1乃至2Nをサービスす
る。この場合、サブシステムは単一の制御装置の故障に
も関わらず、動作を継続するがその性能は低下する。
【0072】好適な実施例では、アレイ制御装置は直接
システム・バスに接続される入出力プロセッサである。
これは物理構成的には、制御装置IOP105が同一の
格納装置内に収容され、システム・バス及び他のIOP
と同じ電源から電力の供給を受けることを意味する。デ
ィスク・ユニットもまた同一の格納装置内に収容される
が、これらは遠隔ケーブルにより別途接続されてもよ
い。別の実施例では、制御装置及びディスク・ユニット
を1つのモジュールの"サブシステム"として一緒に収容
し、主システムに遠隔ケーブルにより接続する。或いは
また、アレイ制御装置により実行される機能を、システ
ムCPUまたは他のユニットにより実行したり、アレイ
制御装置の機能をシステムCPU、IOPs、遠隔制御
装置、またはディスク・ユニット自身などの複数の異な
るコンポーネントの間で分散することも可能である。
【0073】好適な実施例では、全ての記憶ユニットが
同一の記憶容量を有する。これは制御機構を単純化し、
1つのユニットを別のユニットにより置換することを容
易にする。しかしながら、本発明を異なる容量のユニッ
トに適用することも可能である。特に、パリティ・ブロ
ックが記憶されるディスク・ユニットは、データ・ブロ
ックだけを有するディスク・ユニットと異なるサイズで
あってもよい。
【0074】好適な実施例では、パリティ・ブロック
は、ディスク表面の内径領域に対応するディスク・ユニ
ットの高位アドレス領域に配置される。これはアドレス
変換を単純化し、ディスクを既存のディスク・アレイに
追加することを単純化するためである。しかしながら、
アドレス領域の他の領域の選択も可能である。特に、幾
つかのアプリケーションでは、パリティ・ブロックをデ
ィスク表面の中央環状部に対応するアドレス領域に配置
することが望ましい。ディスク上に記憶されるデータを
アクセスするために要する時間は、シーク・タイムすな
わち読取り/書込みアクチュエータをその現位置からア
クセスされるデータの位置に移動するために必要な時間
を含む。この距離が短いほどアクセスは速くなる。平均
的にアクチュエータは、ディスクの内周領域または外周
領域にあるよりも、中央の環状領域にあるデータをアク
セスする時の方が、短い距離の移動で済む(従って、シ
ーク・タイムが速くなる)。パリティ・ブロックがデー
タ・ブロックよりも頻繁にアクセスされる場合、パリテ
ィ・ブロックを中央領域に配置することが、性能の改善
につながる。
【0075】好適な実施例では、記憶ユニットは回転磁
気ディスク・ドライブ記憶ユニットである。こうしたユ
ニットは今日、業界標準である。しかしながら、本発明
により、異なる技術を使用する記憶ユニットを有する記
憶サブシステムを動作することも可能である。例えば、
光ディスク記憶ユニットが使用されてもよい。
【0076】以上、本発明の特定の実施例について述べ
てきたが、当業者には理解されるように、本発明の範囲
内において、その形態及び詳細に関する様々な変更が可
能である。
【0077】まとめとして、本発明の構成に関して以下
に事項を開示する。
【0078】(1)コンピュータ・システムのための記
憶サブシステムであって、プロセッサ及びメモリを有す
る記憶サブシステム制御装置と、前記制御装置に接続さ
れる少なくとも3つのデータ記憶ユニットであって、前
記データ記憶ユニットのアドレス可能記憶空間が記憶ブ
ロックの2次元アレイに対応し、前記アレイの各列が異
なる前記データ記憶ユニットの1つを表し、前記アレイ
の各行が各前記記憶ユニット内の記憶位置の個別の範囲
を表す、前記データ記憶ユニットと、データ記憶ブロッ
クに記憶されるデータからパリティ・ブロックを計算す
る手段であって、各前記パリティ・ブロックが前記デー
タ記憶ブロックの対応するストライプに記憶されるデー
タから計算され、前記ストライプの各前記データ記憶ブ
ロックが異なる前記データ記憶ユニットの1つ上に配置
される、前記計算手段と、前記パリティ・ブロックを前
記アレイの1つ以上のパリティ行に記憶する手段であっ
て、前記パリティ行が前記アレイの全ての行の半分未満
であり、各前記パリティ行が前記パリティ・ブロックを
含む複数の記憶ブロックを含み、各前記パリティ・ブロ
ックが、前記パリティ・ブロックに対応する前記記憶ブ
ロックの前記ストライプの前記記憶ブロックを含む任意
の前記記憶ユニットと異なる前記記憶ユニット上に記憶
される、前記記憶手段と、を含む、記憶サブシステム。 (2)前記パリティ行が前記アレイの行の総数の1/4
以下である、前記(1)記載の記憶サブシステム。 (3)前記アレイがR/N(整数に切り上げ)のパリテ
ィ行を含み、Rが前記アレイの行の総数であり、Nが前
記パリティ・ブロックを含む1より大きい前記アレイ内
の前記データ記憶ユニットの数である、前記(1)記載
の記憶サブシステム。 (4)前記アレイ内の全ての前記データ記憶ユニットが
前記パリティ・ブロックを含み、Nが前記アレイ内の前
記データ記憶ユニットの総数である、前記(3)記載の
記憶サブシステム。 (5)各それぞれの前記ストライプの前記データ記憶ブ
ロックが前記アレイのそれぞれの対角線に沿って記憶さ
れる、前記(1)記載の記憶サブシステム。 (6)前記パリティ行が前記記憶ユニットの高位アドレ
ス範囲に配置される、前記(1)記載の記憶サブシステ
ム。 (7)前記1つ以上のパリティ行が前記記憶サブシステ
ムの性能を最大化するように選択される記憶位置を表
す、前記(1)記載の記憶サブシステム。 (8)前記記憶ユニットが回転磁気ディスク・ドライブ
記憶ユニットであり、前記1つ以上のパリティ行が、前
記回転磁気ディスク・ドライブ記憶ユニットのそれぞれ
のディスク表面の複数の中央環状領域内の位置を表す、
前記(7)記載の記憶サブシステム。 (9)コンピュータ・システムの記憶サブシステムの制
御装置であって、プロセッサと、メモリと、前記コンピ
ュータ・システムの前記プロセッサと通信するための第
1のインタフェースと、複数のデータ記憶ユニットと通
信するための第2のインタフェースと、前記データ記憶
ユニットのアドレス可能記憶空間が記憶ブロックの2次
元アレイに対応し、前記アレイの各列が異なる前記デー
タ記憶ユニットの1つを表し、前記アレイの各行が各前
記記憶ユニット内の記憶位置の個別の範囲を表す、前記
データ記憶ユニットと、データ記憶ブロックに記憶され
るデータからパリティ・ブロックを計算する手段であっ
て、各前記パリティ・ブロックが前記データ記憶ブロッ
クの対応するストライプに記憶されるデータから計算さ
れ、前記ストライプの各前記データ記憶ブロックが異な
る前記データ記憶ユニットの1つ上に配置される、前記
計算手段と、前記パリティ・ブロックを前記アレイの1
つ以上のパリティ行に記憶する手段であって、前記パリ
ティ行が前記アレイの全ての行の半分未満であり、各前
記パリティ行が前記パリティ・ブロックを含む複数の記
憶ブロックを含み、各前記パリティ・ブロックが、前記
パリティ・ブロックに対応する前記記憶ブロックの前記
ストライプの前記記憶ブロックを含む任意の前記記憶ユ
ニットと異なる前記記憶ユニット上に記憶される前記記
憶手段と、を含む、制御装置。 (10)前記パリティ行が前記アレイの行の総数の1/
4以下である、前記(9)記載の制御装置。 (11)前記アレイがR/N(整数に切り上げ)のパリ
ティ行を含み、Rが前記アレイの行の総数であり、Nが
前記パリティ・ブロックを含む1よりも大きい前記アレ
イ内の前記データ記憶ユニットの数である、前記(9)
記載の制御装置。 (12)前記アレイ内の全ての前記データ記憶ユニット
が前記パリティ・ブロックを含み、Nが前記アレイ内の
前記データ記憶ユニットの総数である、前記(9)記載
の制御装置。 (13)各それぞれの前記ストライプの前記データ記憶
ブロックが前記アレイのそれぞれの対角線に沿って記憶
される、前記(9)記載の制御装置。 (14)コンピュータ・システムのコンポーネント間で
通信するためのバスと、前記バスと通信する少なくとも
1つの中央処理ユニットと、前記バスと通信するシステ
ム・メモリと、前記バスと通信する少なくとも3つのデ
ータ記憶ユニットと、前記データ記憶ユニットのアドレ
ス可能記憶空間が記憶ブロックの2次元アレイに対応
し、前記アレイの各列が異なる前記データ記憶ユニット
の1つを表し、前記アレイの各行が各前記記憶ユニット
内の記憶位置の個別の範囲を表す、前記データ記憶ユニ
ットと、データ記憶ブロックに記憶されるデータからパ
リティ・ブロックを計算する手段であって、各前記パリ
ティ・ブロックが前記データ記憶ブロックの対応するス
トライプに記憶されるデータから計算され、前記ストラ
イプの各前記データ記憶ブロックが異なる前記データ記
憶ユニットの1つ上に配置される、前記計算手段と、前
記パリティ・ブロックを前記アレイの1つ以上のパリテ
ィ行に記憶する手段であって、前記パリティ行が前記ア
レイの全ての行の半分未満であり、各前記パリティ行が
前記パリティ・ブロックを含む複数の記憶ブロックを含
み、各前記パリティ・ブロックが、前記パリティ・ブロ
ックに対応する前記記憶ブロックの前記ストライプの前
記記憶ブロックを含む任意の前記記憶ユニットと異なる
前記記憶ユニット上に記憶される、前記記憶手段と、を
含む、コンピュータ・システム。 (15)前記パリティ行が前記アレイの行の総数の1/
4以下である、前記(14)記載のコンピュータ・シス
テム。 (16)前記アレイがR/N(整数に切り上げ)のパリ
ティ行を含み、Rが前記アレイの行の総数であり、Nが
前記パリティ・ブロックを含む1よりも大きい前記アレ
イ内の前記データ記憶ユニットの数である、前記(1
4)記載のコンピュータ・システム。 (17)各それぞれの前記ストライプの前記データ記憶
ブロックが前記アレイのそれぞれの対角線に沿って記憶
される、前記(14)記載のコンピュータ・システム。 (18)データ記憶システムの少なくとも3つのデータ
記憶ユニットの冗長アレイを動作させる方法であって、
前記データ記憶ユニットのアドレス可能記憶空間が記憶
ブロックの2次元アレイに対応し、前記アレイの各列が
異なる前記データ記憶ユニットの1つを表し、前記アレ
イの各行が各前記記憶ユニット内の記憶位置の個別の範
囲を表すものにおいて、記憶ブロックの前記アレイの第
1のデータ・ブロックに書込まれるデータを識別するス
テップと、前記データ・ブロックに関連するパリティ・
ブロックを識別するステップであって、前記パリティ・
ブロックが前記データ・ブロックのセットのパリティ関
数を表し、前記第1のデータ・ブロックが前記データ・
ブロックの前記セットのメンバであり、前記セットの各
前記データ・ブロック及び前記パリティ・ブロックが異
なる前記記憶ユニットの1つ上に記憶される、前記識別
ステップと、前記第1のデータ・ブロックに書込まれる
前記データを書込むステップと、前記第1のデータ・ブ
ロックに書込まれた前記データを反映するように、前記
パリティ・ブロックを更新するステップと、前記パリテ
ィ・ブロックを各々が複数のパリティ・ブロックを含む
前記アレイの複数のパリティ行の1つに記憶するステッ
プと、を含み、前記パリティ行が前記アレイの行の総数
の半分未満である方法。 (19)前記アレイがR/N(整数に切り上げ)のパリ
ティ行を含み、Rが前記アレイの行の総数であり、Nが
前記パリティ・ブロックを含む1よりも大きい前記アレ
イ内の前記データ記憶ユニットの数である、前記(1
8)記載の方法。 (20)前記アレイ内の全ての前記データ記憶ユニット
が前記パリティ・ブロックを含み、Nが前記アレイ内の
前記データ記憶ユニットの総数である、前記(19)記
載の方法。 (21)各それぞれの前記ストライプの前記データ記憶
ブロックが前記アレイのそれぞれの対角線に沿って記憶
される、前記(18)記載の方法。 (22)前記パリティ行が前記アレイのアドレス可能記
憶空間の単一の連続バンドを占有する、前記(18)記
載の方法。 (23)コンピュータ・システムのための記憶サブシス
テムであって、プロセッサ及びメモリを有する記憶サブ
システム制御装置と、前記制御装置に接続される少なく
とも3つのデータ記憶ユニットであって、前記データ記
憶ユニットのアドレス可能記憶空間が記憶ブロックの2
次元アレイに対応し、前記アレイの各列が異なる前記デ
ータ記憶ユニットの1つを表し、前記アレイの各行が各
前記記憶ユニット内の記憶位置の個別の範囲を表す、前
記データ記憶ユニットと、前記アレイのデータ行に配置
されるデータ記憶ブロックに記憶されるデータからパリ
ティ・ブロックを計算する手段であって、各前記データ
行がデータ・ブロックを含む複数の前記記憶ブロックを
含み、各前記データ行が前記パリティ・ブロックを含ま
ず、各前記パリティ・ブロックが前記データ記憶ブロッ
クの対応するストライプに記憶されるデータから計算さ
れ、前記ストライプの各前記データ記憶ブロックが異な
る前記データ記憶ユニットの1つ上に配置される、前記
計算手段と、前記パリティ・ブロックを前記アレイの1
つ以上のパリティ行に記憶する手段であって、各前記パ
リティ行がパリティ・ブロックを含む複数の記憶ブロッ
クを含み、各前記パリティ・ブロックが、前記パリティ
・ブロックに対応する前記記憶ブロックの前記ストライ
プの前記記憶ブロックを含む任意の前記記憶ユニットと
異なる前記記憶ユニット上に記憶される、前記記憶手段
と、を含む、記憶サブシステム。 (24)各それぞれの前記ストライプの前記データ記憶
ブロックが前記アレイのそれぞれの対角線に沿って記憶
される、前記(23)記載の記憶サブシステム。
【0079】
【発明の効果】以上説明したように、本発明によれば、
コンピュータ・システムにおいて、データを記憶するた
めの改善された方法及び装置を提供することができる。
【0080】更に本発明によれば、コンピュータ・シス
テムにおける記憶装置の冗長アレイを管理する改善され
た方法及び装置を提供することができる。
【0081】更に本発明によれば、記憶装置の冗長アレ
イを有するコンピュータ・システムの性能を向上するこ
とができる。
【0082】更に本発明によれば、記憶装置がデータを
独立にアクセスする記憶装置の冗長アレイを有するコン
ピュータ・システムにおいて、異なる記憶装置間でデー
タ・アクセス・オペレーションをより均等に分散するこ
とができる。
【0083】更に本発明によれば、記憶装置の冗長アレ
イにおいて、パリティ・ブロックの競合を低減すること
ができる。
【図面の簡単な説明】
【図1】本発明の好適な実施例のコンポーネントを組込
むコンピュータ・システムのブロック図である。
【図2】好適な実施例によるディスク・アレイ制御装置
入出力プロセッサの主要コンポーネントを表す図であ
る。
【図3】好適な実施例のコンピュータ・システムで使用
される典型的な磁気ディスク・ドライブ記憶ユニットを
示す図である。
【図4】従来技術によるデータ・ブロック及びパリティ
・ブロックのアレイを示すディスク・アレイのアドレス
・マトリックスを表す図である。
【図5】本発明の単純化した実施例によるデータ・ブロ
ック及びパリティ・ブロックのアレイを示す図である。
【図6】本発明の第2の実施例によるデータ・ブロック
及びパリティ・ブロックのアレイを示す図である。
【図7】本発明の第3の実施例によるデータ・ブロック
及びパリティ・ブロックのアレイを示す図である。
【図8】本発明の好適な実施例による4つのパリティ装
置を有するデータ・ブロック及びパリティ・ブロックの
アレイを示す図である。
【図9】本発明の好適な実施例による8つのパリティ装
置を有するデータ・ブロック及びパリティ・ブロックの
アレイを示す図である。
【図10】好適な実施例により、アレイに記憶されるデ
ータの読出しオペレーションを実行するためのステップ
を示す流れ図である。
【図11】好適な実施例により、制御装置入出力プロセ
ッサがアレイに書込まれるデータを受信するためのステ
ップを示す流れ図である。
【図12】好適な実施例により、制御装置入出力プロセ
ッサがデータをアレイに書込みパリティを更新するため
のステップを示す流れ図である。
【図13】好適な実施例により、故障ユニット内に含ま
れるデータを復元するためのステップを示す流れ図であ
る。
【図14】好適な実施例により、エクスポーズド・モー
ドにおいて書込みオペレーションを実行するためのステ
ップを示す流れ図である。
【符号の説明】
100 コンピュータ・システム 101 システム中央処理ユニット(CPU) 102 システム・メモリ 103 インタフェース・ユニット 104 システム・バス 105 ディスク・アレイ入出力プロセッサ 106、107 入出力プロセッサ 111、112、113、114、115、116 デ
ィスク・ドライブ記憶ユニット 201 プログラマブル・プロセッサ 202 揮発性ランダム・アクセス・メモリ(RAM) 203 不揮発性フラッシュ・メモリ 204 DMA及び排他的論理和ハードウェア・ブロッ
ク 205 システム・バス・インタフェース・ハードウェ
ア 206、207、208 SCSIインタフェース・ハ
ードウェア 209、210、211 バス 212 データ・バッファ 213 不揮発性書込みキャッシュ 221、222 記憶管理制御プログラム 225 目録 226 ロック・テーブル 301、302 回転式ディスク 303 スピンドル 304 ベース 305 アクチュエータ・アセンブリ 306 シャフト 307 電磁モータ 308 ヘッド/サスペンション・アセンブリ 309 読取り/書込みトランスジューサ・ヘッド 312 回路カード 315 記録面 316、317、318 環状領域 600、700、800、900 アレイ 751、752、753 行
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ジョゼフ・トーマス・リッツ アメリカ合衆国55902、ミネソタ州ロチェ スター、チェストナット・レーン・サウ ス・ウエスト 3733

Claims (24)

    【特許請求の範囲】
  1. 【請求項1】コンピュータ・システムのための記憶サブ
    システムであって、 プロセッサ及びメモリを有する記憶サブシステム制御装
    置と、 前記制御装置に接続される少なくとも3つのデータ記憶
    ユニットであって、 前記データ記憶ユニットのアドレス可能記憶空間が記憶
    ブロックの2次元アレイに対応し、前記アレイの各列が
    異なる前記データ記憶ユニットの1つを表し、前記アレ
    イの各行が各前記記憶ユニット内の記憶位置の個別の範
    囲を表す、前記データ記憶ユニットと、 データ記憶ブロックに記憶されるデータからパリティ・
    ブロックを計算する手段であって、各前記パリティ・ブ
    ロックが前記データ記憶ブロックの対応するストライプ
    に記憶されるデータから計算され、前記ストライプの各
    前記データ記憶ブロックが異なる前記データ記憶ユニッ
    トの1つ上に配置される、前記計算手段と、 前記パリティ・ブロックを前記アレイの1つ以上のパリ
    ティ行に記憶する手段であって、前記パリティ行が前記
    アレイの全ての行の半分未満であり、各前記パリティ行
    が前記パリティ・ブロックを含む複数の記憶ブロックを
    含み、各前記パリティ・ブロックが、前記パリティ・ブ
    ロックに対応する前記記憶ブロックの前記ストライプの
    前記記憶ブロックを含む任意の前記記憶ユニットと異な
    る前記記憶ユニット上に記憶される、前記記憶手段と、 を含む、記憶サブシステム。
  2. 【請求項2】前記パリティ行が前記アレイの行の総数の
    1/4以下である、請求項1記載の記憶サブシステム。
  3. 【請求項3】前記アレイがR/N(整数に切り上げ)の
    パリティ行を含み、Rが前記アレイの行の総数であり、
    Nが前記パリティ・ブロックを含む1より大きい前記ア
    レイ内の前記データ記憶ユニットの数である、請求項1
    記載の記憶サブシステム。
  4. 【請求項4】前記アレイ内の全ての前記データ記憶ユニ
    ットが前記パリティ・ブロックを含み、Nが前記アレイ
    内の前記データ記憶ユニットの総数である、請求項3記
    載の記憶サブシステム。
  5. 【請求項5】各それぞれの前記ストライプの前記データ
    記憶ブロックが前記アレイのそれぞれの対角線に沿って
    記憶される、請求項1記載の記憶サブシステム。
  6. 【請求項6】前記パリティ行が前記記憶ユニットの高位
    アドレス範囲に配置される、請求項1記載の記憶サブシ
    ステム。
  7. 【請求項7】前記1つ以上のパリティ行が前記記憶サブ
    システムの性能を最大化するように選択される記憶位置
    を表す、請求項1記載の記憶サブシステム。
  8. 【請求項8】前記記憶ユニットが回転磁気ディスク・ド
    ライブ記憶ユニットであり、前記1つ以上のパリティ行
    が、前記回転磁気ディスク・ドライブ記憶ユニットのそ
    れぞれのディスク表面の複数の中央環状領域内の位置を
    表す、請求項7記載の記憶サブシステム。
  9. 【請求項9】コンピュータ・システムの記憶サブシステ
    ムの制御装置であって、 プロセッサと、 メモリと、 前記コンピュータ・システムの前記プロセッサと通信す
    るための第1のインタフェースと、 複数のデータ記憶ユニットと通信するための第2のイン
    タフェースと、 前記データ記憶ユニットのアドレス可能記憶空間が記憶
    ブロックの2次元アレイに対応し、前記アレイの各列が
    異なる前記データ記憶ユニットの1つを表し、前記アレ
    イの各行が各前記記憶ユニット内の記憶位置の個別の範
    囲を表す、前記データ記憶ユニットと、 データ記憶ブロックに記憶されるデータからパリティ・
    ブロックを計算する手段であって、各前記パリティ・ブ
    ロックが前記データ記憶ブロックの対応するストライプ
    に記憶されるデータから計算され、前記ストライプの各
    前記データ記憶ブロックが異なる前記データ記憶ユニッ
    トの1つ上に配置される、前記計算手段と、 前記パリティ・ブロックを前記アレイの1つ以上のパリ
    ティ行に記憶する手段であって、前記パリティ行が前記
    アレイの全ての行の半分未満であり、各前記パリティ行
    が前記パリティ・ブロックを含む複数の記憶ブロックを
    含み、各前記パリティ・ブロックが、前記パリティ・ブ
    ロックに対応する前記記憶ブロックの前記ストライプの
    前記記憶ブロックを含む任意の前記記憶ユニットと異な
    る前記記憶ユニット上に記憶される前記記憶手段と、 を含む、制御装置。
  10. 【請求項10】前記パリティ行が前記アレイの行の総数
    の1/4以下である、請求項9記載の制御装置。
  11. 【請求項11】前記アレイがR/N(整数に切り上げ)
    のパリティ行を含み、Rが前記アレイの行の総数であ
    り、Nが前記パリティ・ブロックを含む1よりも大きい
    前記アレイ内の前記データ記憶ユニットの数である、請
    求項9記載の制御装置。
  12. 【請求項12】前記アレイ内の全ての前記データ記憶ユ
    ニットが前記パリティ・ブロックを含み、Nが前記アレ
    イ内の前記データ記憶ユニットの総数である、請求項9
    記載の制御装置。
  13. 【請求項13】各それぞれの前記ストライプの前記デー
    タ記憶ブロックが前記アレイのそれぞれの対角線に沿っ
    て記憶される、請求項9記載の制御装置。
  14. 【請求項14】コンピュータ・システムのコンポーネン
    ト間で通信するためのバスと、 前記バスと通信する少なくとも1つの中央処理ユニット
    と、 前記バスと通信するシステム・メモリと、 前記バスと通信する少なくとも3つのデータ記憶ユニッ
    トと、 前記データ記憶ユニットのアドレス可能記憶空間が記憶
    ブロックの2次元アレイに対応し、前記アレイの各列が
    異なる前記データ記憶ユニットの1つを表し、前記アレ
    イの各行が各前記記憶ユニット内の記憶位置の個別の範
    囲を表す、前記データ記憶ユニットと、 データ記憶ブロックに記憶されるデータからパリティ・
    ブロックを計算する手段であって、各前記パリティ・ブ
    ロックが前記データ記憶ブロックの対応するストライプ
    に記憶されるデータから計算され、前記ストライプの各
    前記データ記憶ブロックが異なる前記データ記憶ユニッ
    トの1つ上に配置される、前記計算手段と、 前記パリティ・ブロックを前記アレイの1つ以上のパリ
    ティ行に記憶する手段であって、前記パリティ行が前記
    アレイの全ての行の半分未満であり、各前記パリティ行
    が前記パリティ・ブロックを含む複数の記憶ブロックを
    含み、各前記パリティ・ブロックが、前記パリティ・ブ
    ロックに対応する前記記憶ブロックの前記ストライプの
    前記記憶ブロックを含む任意の前記記憶ユニットと異な
    る前記記憶ユニット上に記憶される、前記記憶手段と、 を含む、コンピュータ・システム。
  15. 【請求項15】前記パリティ行が前記アレイの行の総数
    の1/4以下である、請求項14記載のコンピュータ・
    システム。
  16. 【請求項16】前記アレイがR/N(整数に切り上げ)
    のパリティ行を含み、Rが前記アレイの行の総数であ
    り、Nが前記パリティ・ブロックを含む1よりも大きい
    前記アレイ内の前記データ記憶ユニットの数である、請
    求項14記載のコンピュータ・システム。
  17. 【請求項17】各それぞれの前記ストライプの前記デー
    タ記憶ブロックが前記アレイのそれぞれの対角線に沿っ
    て記憶される、請求項14記載のコンピュータ・システ
    ム。
  18. 【請求項18】データ記憶システムの少なくとも3つの
    データ記憶ユニットの冗長アレイを動作させる方法であ
    って、前記データ記憶ユニットのアドレス可能記憶空間
    が記憶ブロックの2次元アレイに対応し、前記アレイの
    各列が異なる前記データ記憶ユニットの1つを表し、前
    記アレイの各行が各前記記憶ユニット内の記憶位置の個
    別の範囲を表すものにおいて、 記憶ブロックの前記アレイの第1のデータ・ブロックに
    書込まれるデータを識別するステップと、 前記データ・ブロックに関連するパリティ・ブロックを
    識別するステップであって、前記パリティ・ブロックが
    前記データ・ブロックのセットのパリティ関数を表し、
    前記第1のデータ・ブロックが前記データ・ブロックの
    前記セットのメンバであり、前記セットの各前記データ
    ・ブロック及び前記パリティ・ブロックが異なる前記記
    憶ユニットの1つ上に記憶される、前記識別ステップ
    と、 前記第1のデータ・ブロックに書込まれる前記データを
    書込むステップと、 前記第1のデータ・ブロックに書込まれた前記データを
    反映するように、前記パリティ・ブロックを更新するス
    テップと、 前記パリティ・ブロックを各々が複数のパリティ・ブロ
    ックを含む前記アレイの複数のパリティ行の1つに記憶
    するステップと、 を含み、前記パリティ行が前記アレイの行の総数の半分
    未満である方法。
  19. 【請求項19】前記アレイがR/N(整数に切り上げ)
    のパリティ行を含み、Rが前記アレイの行の総数であ
    り、Nが前記パリティ・ブロックを含む1よりも大きい
    前記アレイ内の前記データ記憶ユニットの数である、請
    求項18記載の方法。
  20. 【請求項20】前記アレイ内の全ての前記データ記憶ユ
    ニットが前記パリティ・ブロックを含み、Nが前記アレ
    イ内の前記データ記憶ユニットの総数である、請求項1
    9記載の方法。
  21. 【請求項21】各それぞれの前記ストライプの前記デー
    タ記憶ブロックが前記アレイのそれぞれの対角線に沿っ
    て記憶される、請求項18記載の方法。
  22. 【請求項22】前記パリティ行が前記アレイのアドレス
    可能記憶空間の単一の連続バンドを占有する、請求項1
    8記載の方法。
  23. 【請求項23】コンピュータ・システムのための記憶サ
    ブシステムであって、 プロセッサ及びメモリを有する記憶サブシステム制御装
    置と、 前記制御装置に接続される少なくとも3つのデータ記憶
    ユニットであって、 前記データ記憶ユニットのアドレス可能記憶空間が記憶
    ブロックの2次元アレイに対応し、前記アレイの各列が
    異なる前記データ記憶ユニットの1つを表し、前記アレ
    イの各行が各前記記憶ユニット内の記憶位置の個別の範
    囲を表す、前記データ記憶ユニットと、 前記アレイのデータ行に配置されるデータ記憶ブロック
    に記憶されるデータからパリティ・ブロックを計算する
    手段であって、各前記データ行がデータ・ブロックを含
    む複数の前記記憶ブロックを含み、各前記データ行が前
    記パリティ・ブロックを含まず、各前記パリティ・ブロ
    ックが前記データ記憶ブロックの対応するストライプに
    記憶されるデータから計算され、前記ストライプの各前
    記データ記憶ブロックが異なる前記データ記憶ユニット
    の1つ上に配置される、前記計算手段と、 前記パリティ・ブロックを前記アレイの1つ以上のパリ
    ティ行に記憶する手段であって、各前記パリティ行がパ
    リティ・ブロックを含む複数の記憶ブロックを含み、各
    前記パリティ・ブロックが、前記パリティ・ブロックに
    対応する前記記憶ブロックの前記ストライプの前記記憶
    ブロックを含む任意の前記記憶ユニットと異なる前記記
    憶ユニット上に記憶される、前記記憶手段と、 を含む、記憶サブシステム。
  24. 【請求項24】各それぞれの前記ストライプの前記デー
    タ記憶ブロックが前記アレイのそれぞれの対角線に沿っ
    て記憶される、請求項23記載の記憶サブシステム。
JP6324884A 1994-03-14 1994-12-27 記憶サブシステム及び関連する装置/方法 Expired - Fee Related JP2769443B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/212,613 US5537567A (en) 1994-03-14 1994-03-14 Parity block configuration in an array of storage devices
US212613 1998-12-16

Publications (2)

Publication Number Publication Date
JPH07261947A true JPH07261947A (ja) 1995-10-13
JP2769443B2 JP2769443B2 (ja) 1998-06-25

Family

ID=22791761

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6324884A Expired - Fee Related JP2769443B2 (ja) 1994-03-14 1994-12-27 記憶サブシステム及び関連する装置/方法

Country Status (2)

Country Link
US (1) US5537567A (ja)
JP (1) JP2769443B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6496942B1 (en) 1998-08-25 2002-12-17 Network Appliance, Inc. Coordinating persistent status information with multiple file servers
US6952797B1 (en) 2000-10-25 2005-10-04 Andy Kahn Block-appended checksums
JP2015041291A (ja) * 2013-08-22 2015-03-02 株式会社東芝 ストレージ装置

Families Citing this family (116)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3687111B2 (ja) * 1994-08-18 2005-08-24 株式会社日立製作所 記憶装置システムおよび記憶装置の制御方法
EP0702302B1 (en) * 1994-09-16 2001-12-05 International Computers Limited Disk array for data storage
JP3358687B2 (ja) * 1995-03-13 2002-12-24 株式会社日立製作所 ディスクアレイ装置
US5889795A (en) * 1995-04-21 1999-03-30 International Business Machines Corporation Disk array system and method for storing data
US6098128A (en) 1995-09-18 2000-08-01 Cyberstorage Systems Corporation Universal storage management system
US6161192A (en) * 1995-10-13 2000-12-12 Compaq Computer Corporation Raid array data storage system with storage device consistency bits and raidset consistency bits
US5774643A (en) * 1995-10-13 1998-06-30 Digital Equipment Corporation Enhanced raid write hole protection and recovery
US6301432B2 (en) * 1996-04-12 2001-10-09 Sony Corporation Data recording/reproducing apparatus with a plurality of recording/reproducing units and capable of data recovery
US5790774A (en) * 1996-05-21 1998-08-04 Storage Computer Corporation Data storage system with dedicated allocation of parity storage and parity reads and writes only on operations requiring parity information
US5909658A (en) * 1996-06-18 1999-06-01 International Business Machines Corporation High speed electron beam lithography pattern processing system
US5856989A (en) * 1996-08-13 1999-01-05 Hewlett-Packard Company Method and apparatus for parity block generation
US6041423A (en) * 1996-11-08 2000-03-21 Oracle Corporation Method and apparatus for using undo/redo logging to perform asynchronous updates of parity and data pages in a redundant array data storage environment
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装置及びそのアクセス制御方法
US5889934A (en) * 1997-02-24 1999-03-30 Data General Corporation Data validation system for a group of data storage disks
US6079028A (en) * 1997-04-23 2000-06-20 Lucent Technologies Inc. Fault tolerant architectures for continuous media servers
US5991894A (en) * 1997-06-06 1999-11-23 The Chinese University Of Hong Kong Progressive redundancy transmission
US6016552A (en) * 1997-06-06 2000-01-18 The Chinese University Of Hong Kong Object striping focusing on data object
CA2245603C (en) * 1997-08-14 2011-06-28 Stewart Crozier Method of enhanced max-log-a posteriori probability processing
US6021463A (en) * 1997-09-02 2000-02-01 International Business Machines Corporation Method and means for efficiently managing update writes and fault tolerance in redundancy groups of addressable ECC-coded sectors in a DASD storage subsystem
US5933834A (en) * 1997-10-16 1999-08-03 International Business Machines Incorporated System and method for re-striping a set of objects onto an exploded array of storage units in a computer system
US6085285A (en) * 1997-11-13 2000-07-04 International Business Machines Corporation Intermixing different devices along a single data communication link by placing a strobe signal in a parity bit slot
JP3896206B2 (ja) * 1997-12-16 2007-03-22 インターナショナル・ビジネス・マシーンズ・コーポレーション Eccブロック構造を使用する記憶装置のための符号化方法及びシステム
US6151659A (en) * 1997-12-22 2000-11-21 Emc Corporation Distributed raid storage system
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
US6032269A (en) * 1998-06-30 2000-02-29 Digi-Data Corporation Firmware recovery from hanging channels by buffer analysis
US6343343B1 (en) 1998-07-31 2002-01-29 International Business Machines Corporation Disk arrays using non-standard sector sizes
US6453398B1 (en) * 1999-04-07 2002-09-17 Mitsubishi Electric Research Laboratories, Inc. Multiple access self-testing memory
US6557123B1 (en) 1999-08-02 2003-04-29 Inostor Corporation Data redundancy methods and apparatus
US6542960B1 (en) * 1999-12-16 2003-04-01 Adaptec, Inc. System and method for parity caching based on stripe locking in raid data storage
US6581185B1 (en) 2000-01-24 2003-06-17 Storage Technology Corporation Apparatus and method for reconstructing data using cross-parity stripes on storage media
JP3459609B2 (ja) * 2000-03-17 2003-10-20 三洋電機株式会社 ライトキャッシュ回路、ライトキャッシュ回路を備えた記録装置、およびライトキャッシュ方法
US6490659B1 (en) * 2000-03-31 2002-12-03 International Business Machines Corporation Warm start cache recovery in a dual active controller with cache coherency using stripe locks for implied storage volume reservations
US6745284B1 (en) * 2000-10-02 2004-06-01 Sun Microsystems, Inc. Data storage subsystem including a storage disk array employing dynamic data striping
US6871317B1 (en) * 2001-11-13 2005-03-22 Network Appliance, Inc. Technique for efficiently organizing and distributing parity blocks among storage devices of a storage array
US7346831B1 (en) 2001-11-13 2008-03-18 Network Appliance, Inc. Parity assignment technique for parity declustering in a parity array of a storage system
US6851082B1 (en) 2001-11-13 2005-02-01 Network Appliance, Inc. Concentrated parity technique for handling double failures and enabling storage of more than one parity block per stripe on a storage device of a storage array
US7073115B2 (en) * 2001-12-28 2006-07-04 Network Appliance, Inc. Correcting multiple block data loss in a storage array using a combination of a single diagonal parity group and multiple row parity groups
US7640484B2 (en) 2001-12-28 2009-12-29 Netapp, Inc. Triple parity technique for enabling efficient recovery from triple failures in a storage array
US7613984B2 (en) * 2001-12-28 2009-11-03 Netapp, Inc. System and method for symmetric triple parity for failing storage devices
US8402346B2 (en) * 2001-12-28 2013-03-19 Netapp, Inc. N-way parity technique for enabling recovery from up to N storage device failures
US6993701B2 (en) * 2001-12-28 2006-01-31 Network Appliance, Inc. Row-diagonal parity technique for enabling efficient recovery from double failures in a storage array
US7080278B1 (en) * 2002-03-08 2006-07-18 Network Appliance, Inc. Technique for correcting multiple storage device failures in a storage array
US7254813B2 (en) * 2002-03-21 2007-08-07 Network Appliance, Inc. Method and apparatus for resource allocation in a raid system
US7437727B2 (en) * 2002-03-21 2008-10-14 Network Appliance, Inc. Method and apparatus for runtime resource deadlock avoidance in a raid system
US7200715B2 (en) 2002-03-21 2007-04-03 Network Appliance, Inc. Method for writing contiguous arrays of stripes in a RAID storage system using mapped block writes
US7539991B2 (en) 2002-03-21 2009-05-26 Netapp, Inc. Method and apparatus for decomposing I/O tasks in a raid system
US6976146B1 (en) 2002-05-21 2005-12-13 Network Appliance, Inc. System and method for emulating block appended checksums on storage devices by sector stealing
US7024586B2 (en) * 2002-06-24 2006-04-04 Network Appliance, Inc. Using file system information in raid data reconstruction and migration
US6912643B2 (en) * 2002-08-19 2005-06-28 Aristos Logic Corporation Method of flexibly mapping a number of storage elements into a virtual storage element
US6848022B2 (en) * 2002-10-02 2005-01-25 Adaptec, Inc. Disk array fault tolerant method and system using two-dimensional parity
US6792391B1 (en) * 2002-11-15 2004-09-14 Adeptec, Inc. Method and system for three disk fault tolerance in a disk array
US7093159B1 (en) * 2002-12-12 2006-08-15 Adaptec, Inc. Method and system for four disk fault tolerance in a disk array
TWI230933B (en) * 2002-12-12 2005-04-11 Via Tech Inc Disk management system for multiple disk arrays
US7185144B2 (en) * 2003-11-24 2007-02-27 Network Appliance, Inc. Semi-static distribution technique
US7664913B2 (en) * 2003-03-21 2010-02-16 Netapp, Inc. Query-based spares management technique
US7424637B1 (en) 2003-03-21 2008-09-09 Networks Appliance, Inc. Technique for managing addition of disks to a volume of a storage system
US7328364B1 (en) 2003-03-21 2008-02-05 Network Appliance, Inc. Technique for coherent suspension of I/O operations in a RAID subsystem
US7143235B1 (en) 2003-03-21 2006-11-28 Network Appliance, Inc. Proposed configuration management behaviors in a raid subsystem
US7111147B1 (en) * 2003-03-21 2006-09-19 Network Appliance, Inc. Location-independent RAID group virtual block management
KR20060025135A (ko) * 2003-04-21 2006-03-20 네트셀 코포레이션 재구성 가능한 데이터 경로를 갖는 디스크 어레이 제어기
US7275179B1 (en) 2003-04-24 2007-09-25 Network Appliance, Inc. System and method for reducing unrecoverable media errors in a disk subsystem
JP2005100259A (ja) * 2003-09-26 2005-04-14 Hitachi Ltd ドライブの2重障害を防止するアレイ型ディスク装置、プログラム、及び方法
CN100350371C (zh) * 2003-10-07 2007-11-21 普安科技股份有限公司 磁盘阵列一致性初始化方法
US7111118B2 (en) * 2003-10-08 2006-09-19 Lsi Logic Corporation High performance raid mapping
US7328305B2 (en) * 2003-11-03 2008-02-05 Network Appliance, Inc. Dynamic parity distribution technique
US7366837B2 (en) * 2003-11-24 2008-04-29 Network Appliance, Inc. Data placement technique for striping data containers across volumes of a storage system cluster
US7647451B1 (en) 2003-11-24 2010-01-12 Netapp, Inc. Data placement technique for striping data containers across volumes of a storage system cluster
US7263629B2 (en) * 2003-11-24 2007-08-28 Network Appliance, Inc. Uniform and symmetric double failure correcting technique for protecting against two disk failures in a disk array
US7188303B2 (en) * 2003-12-29 2007-03-06 Intel Corporation Method, system, and program for generating parity data
US7913148B2 (en) * 2004-03-12 2011-03-22 Nvidia Corporation Disk controller methods and apparatus with improved striping, redundancy operations and interfaces
US7188212B2 (en) * 2004-05-06 2007-03-06 International Business Machines Corporation Method and system for storing data in an array of storage devices with additional and autonomic protection
US8275951B2 (en) * 2004-06-10 2012-09-25 Hewlett-Packard Development Company, L.P. Local bitmaps for an array of redundant storage devices
US7093157B2 (en) * 2004-06-17 2006-08-15 International Business Machines Corporation Method and system for autonomic protection against data strip loss
US20060075281A1 (en) * 2004-09-27 2006-04-06 Kimmel Jeffrey S Use of application-level context information to detect corrupted data in a storage system
US7321905B2 (en) * 2004-09-30 2008-01-22 International Business Machines Corporation System and method for efficient data recovery in a storage array utilizing multiple parity slopes
GB2418769B (en) * 2004-10-02 2009-06-17 Hewlett Packard Development Co Method and system for storing data
US8131969B2 (en) * 2004-10-20 2012-03-06 Seagate Technology Llc Updating system configuration information
US7594075B2 (en) 2004-10-20 2009-09-22 Seagate Technology Llc Metadata for a grid based data storage system
US8131926B2 (en) * 2004-10-20 2012-03-06 Seagate Technology, Llc Generic storage container for allocating multiple data formats
US20060123271A1 (en) * 2004-11-19 2006-06-08 International Business Machines Corporation RAID environment incorporating hardware-based finite field multiplier for on-the-fly XOR
US7290199B2 (en) * 2004-11-19 2007-10-30 International Business Machines Corporation Method and system for improved buffer utilization for disk array parity updates
US7392428B2 (en) * 2004-11-19 2008-06-24 International Business Machines Corporation Method and system for recovering from abnormal interruption of a parity update operation in a disk array system
US20060123312A1 (en) * 2004-11-19 2006-06-08 International Business Machines Corporation Method and system for increasing parallelism of disk accesses when restoring data in a disk array system
US7392458B2 (en) * 2004-11-19 2008-06-24 International Business Machines Corporation Method and system for enhanced error identification with disk array parity checking
US7398460B1 (en) * 2005-01-31 2008-07-08 Network Appliance, Inc. Technique for efficiently organizing and distributing parity blocks among storage devices of a storage array
WO2007012921A2 (en) * 2005-07-27 2007-02-01 Adaptec, Inc. Parity update footprints kept on disk
US8560503B1 (en) 2006-01-26 2013-10-15 Netapp, Inc. Content addressable storage system
US7822921B2 (en) 2006-10-31 2010-10-26 Netapp, Inc. System and method for optimizing write operations in storage systems
US20080104445A1 (en) * 2006-10-31 2008-05-01 Hewlett-Packard Development Company, L.P. Raid array
US7613947B1 (en) 2006-11-30 2009-11-03 Netapp, Inc. System and method for storage takeover
US7694171B2 (en) * 2006-11-30 2010-04-06 Lsi Corporation Raid5 error recovery logic
US7647526B1 (en) 2006-12-06 2010-01-12 Netapp, Inc. Reducing reconstruct input/output operations in storage systems
US8667379B2 (en) * 2006-12-20 2014-03-04 International Business Machines Corporation Apparatus and method to generate, store, and read, a plurality of error correction coded data sets
US8209587B1 (en) 2007-04-12 2012-06-26 Netapp, Inc. System and method for eliminating zeroing of disk drives in RAID arrays
US7840837B2 (en) * 2007-04-27 2010-11-23 Netapp, Inc. System and method for protecting memory during system initialization
US8898536B2 (en) * 2007-04-27 2014-11-25 Netapp, Inc. Multi-core engine for detecting bit errors
US7836331B1 (en) 2007-05-15 2010-11-16 Netapp, Inc. System and method for protecting the contents of memory during error conditions
US7975102B1 (en) 2007-08-06 2011-07-05 Netapp, Inc. Technique to avoid cascaded hot spotting
TWI345224B (en) * 2007-09-27 2011-07-11 Quanta Comp Inc Rotating parity redundant array of independent disks and method for storing parity the same
US8510370B2 (en) * 2008-02-26 2013-08-13 Avid Technology, Inc. Array-based distributed storage system with parity
US9158579B1 (en) 2008-11-10 2015-10-13 Netapp, Inc. System having operation queues corresponding to operation execution time
US8495417B2 (en) * 2009-01-09 2013-07-23 Netapp, Inc. System and method for redundancy-protected aggregates
US8250283B1 (en) * 2009-05-22 2012-08-21 Google Inc. Write-distribute command for RAID mirroring
US9218264B2 (en) * 2011-09-20 2015-12-22 Cloudbyte, Inc. Techniques for translating policies into storage controller requirements
US9785545B2 (en) * 2013-07-15 2017-10-10 Cnex Labs, Inc. Method and apparatus for providing dual memory access to non-volatile memory
JP2015215727A (ja) * 2014-05-09 2015-12-03 富士通株式会社 ストレージ制御装置およびプログラム
US9747197B2 (en) * 2014-05-20 2017-08-29 Honeywell International Inc. Methods and apparatus to use an access triggered computer architecture
US10353681B2 (en) 2014-05-20 2019-07-16 Honeywell International Inc. Systems and methods for using error correction and pipelining techniques for an access triggered computer architecture
US9672106B2 (en) 2014-12-30 2017-06-06 Nutanix, Inc. Architecture for implementing erasure coding
US9690516B2 (en) * 2015-07-30 2017-06-27 International Business Machines Corporation Parity stripe lock engine
US9772773B2 (en) 2015-07-30 2017-09-26 International Business Machines Corporation Parity stripe lock engine
US20170060421A1 (en) * 2015-08-31 2017-03-02 Dell Products, Lp System and Method to Support Shingled Magnetic Recording Hard Drives in a Storage System
US10567009B2 (en) 2016-12-06 2020-02-18 Nutanix, Inc. Dynamic erasure coding
CN111984184B (zh) * 2019-05-23 2022-05-17 浙江宇视科技有限公司 固态硬盘的数据管理方法、装置、存储介质及电子设备
CN115291816B (zh) * 2022-10-10 2022-12-09 新云滕(云南)科技有限公司 一种用于基于三维可视化的配电管理***的存储器***

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4761785B1 (en) * 1986-06-12 1996-03-12 Ibm Parity spreading to enhance storage access
US5166939A (en) * 1990-03-02 1992-11-24 Micro Technology, Inc. Data storage apparatus and method
US5088081A (en) * 1990-03-28 1992-02-11 Prime Computer, Inc. Method and apparatus for improved disk access
US5130992A (en) * 1990-04-16 1992-07-14 International Business Machines Corporaiton File-based redundant parity protection in a parallel computing system
US5265098A (en) * 1990-08-03 1993-11-23 International Business Machines Corporation Method and means for managing DASD array accesses when operating in degraded mode
US5208813A (en) * 1990-10-23 1993-05-04 Array Technology Corporation On-line reconstruction of a failed redundant array system
US5271012A (en) * 1991-02-11 1993-12-14 International Business Machines Corporation Method and means for encoding and rebuilding data contents of up to two unavailable DASDs in an array of DASDs
US5258984A (en) * 1991-06-13 1993-11-02 International Business Machines Corporation Method and means for distributed sparing in DASD arrays

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6496942B1 (en) 1998-08-25 2002-12-17 Network Appliance, Inc. Coordinating persistent status information with multiple file servers
US6829720B2 (en) 1998-08-25 2004-12-07 Network Appliance, Inc. Coordinating persistent status information with multiple file servers
US6952797B1 (en) 2000-10-25 2005-10-04 Andy Kahn Block-appended checksums
JP2015041291A (ja) * 2013-08-22 2015-03-02 株式会社東芝 ストレージ装置

Also Published As

Publication number Publication date
JP2769443B2 (ja) 1998-06-25
US5537567A (en) 1996-07-16

Similar Documents

Publication Publication Date Title
JP2769443B2 (ja) 記憶サブシステム及び関連する装置/方法
JP2501752B2 (ja) コンピユ―タ・システムのストレ―ジ装置及びデ―タのストア方法
US5487160A (en) Concurrent image backup for disk storage system
US5596709A (en) Method and apparatus for recovering parity protected data
US5485571A (en) Method and apparatus for providing distributed sparing with uniform workload distribution in failures
EP0572564B1 (en) Parity calculation in an efficient array of mass storage devices
EP0485110B1 (en) Logical partitioning of a redundant array storage system
US8839028B1 (en) Managing data availability in storage systems
US5418925A (en) Fast write I/O handling in a disk array using spare drive for buffering
US6502166B1 (en) Method and apparatus for distributing data across multiple disk drives
JP3266277B2 (ja) 階層記憶管理システムのための変換式raid
US7281089B2 (en) System and method for reorganizing data in a raid storage system
US5303244A (en) Fault tolerant disk drive matrix
EP0639811B1 (en) Memory systems with data storage redundancy management
JP3078972B2 (ja) ディスクアレイ装置
US5546535A (en) Multiple controller sharing in a redundant storage array
US7506187B2 (en) Methods, apparatus and controllers for a raid storage system
US6397348B1 (en) Redundant array of disk drives with asymmetric mirroring and asymmetric mirroring data processing method
US6571314B1 (en) Method for changing raid-level in disk array subsystem
JP2000207136A (ja) 複数ドライブ故障トレラントraidアルゴリズム
US7240237B2 (en) Method and system for high bandwidth fault tolerance in a storage subsystem
US6611897B2 (en) Method and apparatus for implementing redundancy on data stored in a disk array subsystem based on use frequency or importance of the data
JPH07261945A (ja) ディスクアレイ装置およびディスクアレイの区分け方法
JP2001043031A (ja) 分散パリティ生成機能を備えたディスクアレイ制御装置
JP2570614B2 (ja) デイスクアレイ装置

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090410

Year of fee payment: 11

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

Free format text: PAYMENT UNTIL: 20100410

Year of fee payment: 12

LAPS Cancellation because of no payment of annual fees