(57)【特許請求の範囲】
【請求項１】
物理的記憶空間を規定する複数の記憶ディスクを持つ階層データ記憶装置のデータ損失を監視する方法であって、
（ａ）前記物理的記憶空間を、様々なＲＡＩＤレベルにしたがってデータを記憶する複数のＲＡＩＤ区域として該物理的記憶空間を表す第１の仮想記憶空間に、マッピングするステップであって、該ＲＡＩＤ区域のそれぞれは、複数の記憶ディスクにわたって延びると共に、個々の記憶ディスク上の物理的記憶空間の領域を有しており、さらに、該ＲＡＩＤ区域のそれぞれは、冗長性を備えてデータを記憶し取り出すことのできる最適ＲＡＩＤ区域として最初は分類される、ステップと、
（ｂ）前記第１の仮想記憶空間を、前記物理的記憶空間を複数の仮想ブロックとして表す第２の仮想記憶空間に、マッピングするステップと、
（ｃ）前記ＲＡＩＤ区域を監視して、記憶されたデータの損失を検出するステップと、
（ｄ）或るＲＡＩＤ区域の第１の領域内で前記データ損失を検出したならば、該第１領域を無効領域とマークし、該ＲＡＩＤ区域を、冗長性なしでデータを記憶し取り出すことのできる劣化ＲＡＩＤ区域と分類するステップと、
（ｅ）前記劣化ＲＡＩＤ区域の第２の領域の一部で前記データ損失を検出したならば、該第２の領域の該一部にマッピングされている前記仮想ブロックを識別するステップと、
（ｆ）前記識別した仮想ブロックが欠陥仮想ブロックであることを示すステップと、
（ｇ）前記第２の領域の残りの部分と、前記劣化ＲＡＩＤ区域内の残りの領域を使い続けて、該ＲＡＩＤ区域を作動不能と分類することなくデータを記憶するステップと、
（ｈ）前記欠陥仮想ブロックに対する書き込み動作が始動されたならば、該欠陥仮想ブロックにデータを書き込み、該欠陥仮想ブロックを修復するステップと、
を含む、方法。
【請求項２】
前記欠陥仮想ブロックを、仮想データ損失テーブルにリストするステップをさらに有する、
請求項１に記載の方法。
【請求項３】
前記欠陥仮想ブロックにデータを書き込んだならば、前記欠陥仮想ブロックを前記仮想データ損失テーブルから外し、前記仮想ブロックは欠陥でないことを示すステップと、
をさらに有する、請求項２に記載の方法。
【請求項４】
物理的記憶空間を規定する複数の記憶ディスクを持つディスクアレーと、
前記ディスクアレーに結合され、前記記憶ディスクへのデータの読み書きを行うディスクアレー制御装置と、
前記ディスクアレー制御装置に結合され、第１の仮想記憶空間および第２の仮想記憶空間を、前記記憶ディスクの物理的記憶空間上にマッピングするＲＡＩＤ管理装置であって、該第１の仮想記憶空間は、様々なＲＡＩＤレベルにしたがってデータを記憶する複数のＲＡＩＤ区域として前記物理記憶空間を表し、該ＲＡＩＤ区域のそれぞれは、複数の前記記憶ディスクにわたって延びると共に、個々の該記憶ディスク上の物理記憶空間の領域を有し、該第２の仮想記憶空間は、複数の仮想ブロックとして前記物理的記憶空間を表す、ＲＡＩＤ管理装置と、
個々の前記ＲＡＩＤ区域内で生じるデータ損失を選択的に追跡するデータ損失検出器であって、個々の前記領域が、（１）有効でデータ損失を経験していないか、または（２）無効でデータ損失を経験しているか、のどちらかを表す複数の表示器を含む領域同期テーブルを有する、データ損失検出器と、を備え、
前記データ損失検出器は、さらに、前記（２）無効でデータ損失を経験していることを示す領域を有する区域の他の領域の一部でデータ損失を検出し、該他の領域の一部にマッピングされている仮想ブロックを前記第２の仮想記憶空間において識別するよう構成されており、
前記ディスクアレー制御装置は、該仮想ブロックに対する書き込み動作が始動されたならば、該仮想ブロックにデータを書き込み、該仮想ブロックを修復するよう構成されている、
階層データ記憶装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、階層データ記憶装置の中のデータ損失を検出する方法、および、データ損失検出能力を持つデータ記憶装置に関する。
【０００２】
【従来の技術】
コンピュータ・システムは、速度、信頼性、および処理能力の点で絶え間なく改良が続いている。その結果、コンピュータはより複雑で高度なアプリケーションが処理できる。コンピュータが改良されるのに応じて、大容量記憶装置および入出力装置に対する性能要求が増大している。一般に、入出力性能は、発展するコンピュータの能力に歩調を合わせるのが困難であった。
【０００３】
大容量記憶装置の産業は、２つの主要な挑戦、すなわち、（１）データアクセスがアプリケーションの制約要因にならないように入出力性能を改善すること、および（２）オンライン・データを処理するコンピュータ・システムの寿命を上回る信頼性のレベルで、オンライン・データにアクセスできるようにすること、に直面している。これについては、「ＲＡＩＤ手法の資料集」（The RAIDBook: A Source Book for RAID Technology, published June 9, 1993, by the RAID Advisory Board, Lino Lakes, Minnesota）を参照されたい。記憶装置が、費用効果のよい方法で、これらの目標を達成できることが望ましい。
【０００４】
大容量記憶装置には、コスト、性能、可用性の３つの主要な設計基準がある。
メガバイトあたりの低いコスト、高い入出力性能、および、高いデータ可用性を持つ記憶装置を作ることが望ましい。"可用性"（availability）とは、記憶装置に記憶されているデータをアクセスする能力、および、ある程度の故障が起きても動作が続けられることを保証できる能力のことである。典型的には、データの可用性は、複数の場所に記憶されたデータまたはデータ間の関係を持つ冗長度の使用を通して提供される。
【０００５】
冗長データを記憶するには２つの一般的な方法がある。第１の方法すなわち"ミラー"（鏡像：mirror）方法では、データが複製され、記憶装置の２つの別々の区域に記憶される。たとえば、ディスクアレーでは、同一のデータがディスクアレーの２つの別々のディスクの上に提供される。ミラー方法は、二重に記憶する手法により、高性能および高データ可用性の利点がある。しかし、ミラー方法は、データを記憶するコストが実質的に２倍になるので、相対的に費用の高いものになる。
【０００６】
第２の方法すなわち"パリティ"（奇偶：parity）方法では、記憶区域の一部を冗長データを記憶するのに使うが、冗長データを記憶する区域は、元のデータを記憶するのに使う記憶空間より小さい。たとえば、５台のディスクを持つディスクアレーでは、４台をデータを記憶するのに使い、５台目をもっぱら冗長データを記憶するのに使う。パリティ方法の利点は、ミラー方法より低費用であることであるが、ミラー方法にくらべると、性能および可用性が低いという特徴がある。
【０００７】
従来のディスクアレーでの１つの問題は、複数の故障から生じるデータ損失に関する。従来のディスクアレーは、単一の故障が起きてもデータ損失がないようにすることによって、高いデータ信頼性が維持できるように設計されている。これは、記憶されたデータに、あるレベルの冗長性を維持することによって達成されている。不幸にして、ある種の組合せで複数の故障が起きると、すべてのディスクアレーのデータ損失につながることがある。したがって、冗長性を持つディスクアレー装置において、複数の故障を避けることが望ましい。
【０００８】
もう一つの問題は、データ損失が起こった場合、従来のディスクアレーでは、しばしば、失われたデータが読まれるたびにデータ損失を検出することができないことである。たとえある程度の検出が行われても、ディスクアレーは、実際に起こったよりも多くのデータ損失が起こったと報告する傾向がある。たとえば、従来のディスクアレーでは、実際の損失が、記憶ディスク上のいくつかのセクタのような、記憶されたデータの小さなサブセットに限られているときでも、データ損失が全記憶ディスク上で起こったように報告することがある。その結果、必要以上に、記憶ディスク上の完全なデータもユーザが利用できなくなってしまう。
【０００９】
【発明が解決しようとする課題】
本発明の目的は、複数の故障によってデータ損失が起きるとき、記憶されたデータ内のデータ損失の区域を選択的に追跡する手法を提供することである。
【００１０】
【課題を解決するための手段】
本発明の１つの利点は、データが読み込まれたときに、特定の区域のデータ損失を検出し報告する能力を持つが、ディスクアレーに記憶されている残余のデータには継続してアクセスできるようにすることである。記憶されたデータの残余部分の可用性を維持しながら、ディスクアレーの構成を乱すことなく、失われたデータの区域を再び書き込むことによって、データ損失の区域を修復することができる。
【００１１】
本発明の１つの方法は、複数の記憶ディスクを持つ階層データ記憶装置の中のデータ損失を監視することに関する。これらの記憶ディスクは物理的記憶空間を規定する。物理的記憶空間は、たとえば、ＲＡＩＤレベル１（ミラー冗長性）またはＲＡＩＤレベル５（パリティ冗長性）のような種々なＲＡＩＤレベルにしたがってデータを記憶する複数のＲＡＩＤ区域として物理的記憶空間を表す第１の仮想記憶空間にマッピングされる。個々のＲＡＩＤ区域は複数の記憶ディスクにわたって延び、個々の記憶ディスク上の物理的記憶空間の領域を含む。すべての領域が動作可能で、データを、それらの領域に記憶でき、それらの領域から取り出すことができる場合に、関連するＲＡＩＤ区域は"最適"（optimal）であると分類する。第１の仮想記憶空間は、物理的記憶空間を複数の仮想ブロックとして表す第２の仮想記憶空間にマッピングされる。
【００１２】
ＲＡＩＤ区域は、データ損失を検出するために監視される。ＲＡＩＤ区域のある領域内にデータ損失を検出すると、この第１の領域は、"無効"（invalid）としてマークがつけられる。この領域を失う結果として、データ記憶装置はこのＲＡＩＤ区域に対しての冗長性をもはや保障することができない。したがって、無効な領域を含むＲＡＩＤ区域全体は"劣化"（degraded）として分類され、データはこのＲＡＩＤ区域で記憶し取り出すことができるが、冗長性を持たない。
【００１３】
"劣化"したＲＡＩＤ区域の第２の領域の部分でデータ損失を検出すると、データ記憶装置はデータ損失の大きさの程度を決める。データ損失が比較的小さい場合、データ記憶装置は、この第２の領域の部分にマッピングされている仮想ブロックを識別し、該仮想ブロックを欠陥あり（defective）とマークをつける。第２の領域の残余部分、および劣化したＲＡＩＤ区域内の残余の領域は、引き続き使用することができる。識別された仮想ブロックに記憶されたデータは信頼性がないということを示すために、該仮想ブロックのアドレスが仮想データ損失テーブルに記憶される。
【００１４】
他方、第２の領域のデータ損失が大きい場合、または、仮想データ損失テーブルがいっぱいになった場合、データ損失によって、そのＲＡＩＤ区域全体が"作動不能"（dead）として分類される。作動不能のＲＡＩＤ区域内の無効領域からはデータを回復することができない。
【００１５】
【発明の実施の形態】
図１に、本発明にしたがって構成されたデータ記憶装置１０を示す。データ記憶装置１０は、複数の記憶ディスク１２を持つ階層ディスクアレー１１、記憶ディスク１２への、および記憶ディスク１２からのデータ転送を調整するためにディスクアレー１１に結合されたディスクアレー制御装置１４、およびＲＡＩＤ管理装置１６を含む、ディスクアレー・データ記憶装置であることが望ましい。
【００１６】
本明細書の説明の目的のために、"ディスク"とは、不揮発性で、ランダム・アクセスが可能で、自身の記憶故障を検出する能力のある、書き換え可能な大容量記憶装置を指す。それは、回転する磁気および光ディスク、並びに、固体ディスク、または不揮発性の電子的記憶要素、たとえばＰＲＯＭ、ＥＰＲＯＭ、およびＥＥＰＲＯＭを含む。"ディスクアレー"という用語は、複数のディスク、ディスクを１つまたは複数のホスト・コンピュータに接続するのに必要なハードウェア、および物理的ディスクの動作を制御し、物理的ディスクをホストの動作環境に１つまたは複数の仮想ディスクとして提示するのに使われる管理ソフトウェアの集まりを指す。"仮想ディスク"とは、管理ソフトウェアによってディスクアレーの中に実現される抽象的実体である。
【００１７】
"ＲＡＩＤ"（Random Array of Independent Disks）と言う用語は、記憶容量の残りの部分に記憶されたユーザデータについての冗長情報を記憶するために、その物理的記憶容量の１部が使用されているディスクアレーを意味する。冗長情報は、ディスクアレーを構成するディスクの１つ、または、そのディスクへのアクセス経路が故障したときにユーザデータの再生を可能にする。ＲＡＩＤ装置に関する詳しい記述は、「ＲＡＩＤ手法の資料集」（The RAIDBook: A Source Book for RAID Technology, published June 6, 1993, by the RAID Advisory Board, Lino Lakes, Minnesota）を参照されたい。
【００１８】
ディスクアレー制御装置１４は、たとえばＳＣＳＩ（small computer system interface）のような１つまたは複数のインターフェース・バス１３を介してディスクアレー１１に結合されている。ＲＡＩＤ管理装置１６は、インターフェース・プロトコル１５を介して、ディスクアレー制御装置１４を動作させるために結合されている。データ記憶装置１０はホスト・コンピュータ（図示せず）にも入出力インターフェース・バス１７を介して結合されている。ＲＡＩＤ管理装置１６は、ディスクの記憶および信頼性レベルを制御し、多様な信頼性記憶レベル間のデータ転送を行うためのデータマネージャ手段を提供するために、別個の装置要素として具体化してもよいし、ディスクアレー制御装置１４内またはホスト・コンピュータ内に構成してもよい。これらの信頼性記憶レベルは、以下に述べるように、ミラーまたはパリティ冗長レベルであることが望ましいが、全く冗長性を持たない信頼性記憶レベルを含むこともできる。
【００１９】
ディスクアレー制御装置１４は、ディスクアレー制御装置Ａ １４ａ、およびディスクアレー制御装置Ｂ １４ｂからなる二重の制御装置として具体化することが望ましい。二重制御装置１４ａおよび１４ｂは、どちらか１つが動作できなくなった場合にも、継続したバックアップおよび冗長性を提供することによって信頼性を向上させる。しかし、本発明は、１台の制御装置またはその他の構成でも実施することができる。
【００２０】
階層ディスクアレー１１は、物理的記憶空間および１つまたは複数の仮想記憶空間を含む異なる記憶空間として特徴づけられる。記憶に関するこれらの多様なビューはマッピング手法に関連している。たとえば、ディスクアレーの物理的記憶空間は、多様なデータ信頼性レベルにしたがって記憶区域を描く仮想記憶空間にマッピングすることができる。仮想記憶空間内のある区域を第１信頼性記憶レベル（たとえば、ミラーすなわちＲＡＩＤレベル１）のために割り当て、その他の区域を第２信頼性記憶レベル（たとえば、パリティすなわちＲＡＩＤレベル５）のために割り当てることができる。ＲＡＩＤレベルに関しての多様なマッピング手法および仮想空間については以下に詳しく述べる。
【００２１】
データ記憶装置１０は、異なる記憶空間を互いにマッピングするために用いる仮想マッピング情報を持続的に記憶するメモリマップ記憶装置２１を含む。メモリマップ記憶装置はディスクアレーの外にあり、ディスクアレー制御装置１４内にあることが望ましい。メモリマップ情報は、異なるビューの中で多様なマッピング構成が変わるにしたがい、制御装置またはＲＡＩＤ管理装置によって絶えずまたは定期的に更新される。
【００２２】
メモリマップ記憶装置２１は、それぞれ、制御装置１４ａおよび１４ｂに置かれる２つの不揮発性ＲＡＭ（Random Access Memory）２１ａおよび２１ｂとして具体化されるのが望ましい。不揮発性ＲＡＭ（non-volatile RAM: NVRAM）の１つの例は、バッテリ付きのＲＡＭである。バッテリ付きＲＡＭは、データをメモリに維持するために、データ記憶装置１０への電源が切られたときに独立したバッテリ電源からのエネルギーを使う。１つの望ましい構成は、自身でリフレッシュできるバッテリ付きＤＲＡＭ（Dynamic RAM）である。
【００２３】
二重のＮＶＲＡＭ２１ａおよび２１ｂは、メモリマップ情報の冗長記憶を供給する。仮想マッピング情報はミラー冗長方法にしたがって複製され、ＮＶＲＡＭ２１ａおよび２１ｂの両方に記憶される。このようにして、ＮＶＲＡＭ２１ａはもっぱら元のマッピング情報を記憶するのに用い、ＮＶＲＡＭ２１ｂはもっぱら冗長マッピング情報を記憶するのに用いることができる。別の構成として、データを二重に記憶するための十分な空間を備えた１つの不揮発性ＲＡＭを用いて、ミラーにしたメモリマップ記憶装置を構成することもできる。
【００２４】
図１に示すように、ディスクアレー１１は複数のディスク駆動装置１２を持つ。これらの記憶ディスクの大きさの例は、１ないし３ギガバイトである。記憶ディスクは、ＳＣＳＩバス１３とのインターフェースを提供する機械的ベイに、それぞれ独立して接続したりはずしたりできる。１つの具体化では、データ記憶装置は、作動する機械的ベイを１２個持つように設計される。これらのベイをディスクアレー制御装置１４にインターフェースさせるために４つのＳＣＳＩバス（すなわち、３つの機械的ベイに対して１つのバス）が使われる。これらのベイがいっぱいになるまでロードされた場合、データ記憶装置は全体で、たとえば、１２ないし３６ギガバイトの容量を持つ。ディスクアレー制御装置１４は、記憶ディスク１２がどのベイに差し込まれていても、認識することができる。データ記憶装置１０は、ディスクアレーの動作中に、ディスクアレーの使用可能なベイに追加のディスクを差し込む（"ホットプラグ"：hot plug）ことができるように設計されている。
【００２５】
本発明の説明の目的として、ディスクアレー１１の記憶ディスク１２は、複数のディスク２０を持つミラー・グループ１８、および、複数のディスク２４を持つパリティ・グループ２２に配列されたものとして概念化することができる。ミラー・グループ１８は、第１のレベルすなわちミラー冗長レベルにしたがってデータを記憶するディスクアレーの第１の記憶位置すなわちＲＡＩＤ区域を表す。
このミラー冗長レベルは、またＲＡＩＤレベル１と考えることができる。ＲＡＩＤレベル１、すなわちディスクのミラー化は、データの各ビットが複製されてデータ記憶装置内に記憶されるという意味で１対１の保護を提供することにより、最高の信頼性を提供する。ミラー冗長は、図１で、３対のディスク２０で表されている。元のデータは第１の組のディスク２６に記憶され、複製された冗長データは、対になった第２の組のディスク２８に記憶される。
【００２６】
図２に、ＲＡＩＤレベル１にしたがったデータの記憶をより詳しく示す。垂直の列は個々のディスク０、１、２、３を表す。４個のディスクからなるこのディスクアレーに含まれる物理的記憶空間は、水平の行で表される複数のストライプに構成される。１つの"ストライプ"は複数の記憶ディスクにわたって延び、多数の同じ大きさの記憶空間のセグメントで構成され、１つのセグメントはアレーの中の各ディスクに関連している。すなわち、１つのセグメントは１つのディスクの上に存在する１つのストライプの部分である。各ストライプは、記憶ディスク全体に分配されているデータの予定の量を保持する。ストライプのうちのあるセグメントは元のデータのために使われ、その他のセグメントは冗長データのために使われる。
【００２７】
ミラー冗長（ＲＡＩＤレベル１）のこの例では、ディスク０上のストライプ０のセグメント０に記憶されているデータは、複製されて、ディスク１上のストライプ０のセグメント０'に記憶される。同様に、ディスク２のストライプ２のセグメント５に記憶されているデータは、ディスク３のストライプ２のセグメント５'に記憶される。このようにして、各データは複製されディスク上に記憶される。図２の冗長のレイアウトは説明の目的で図示したものである。冗長データを同じストライプに、図示したように、きちんと並べる必要はない。たとえば、ディスク０のストライプ１のセグメント２のデータは複製されて、ディスク３のストライプＳのセグメントＴ'に置くことができる。
【００２８】
図１を再び参照すると、ディスク２４のパリティ・グループ２２は、第２の記憶位置すなわちＲＡＩＤ区域を表し、データは第２の冗長レベル、たとえばＲＡＩＤレベル５にしたがって記憶される。図に例として示した６個のディスクでは、元のデータは５個のディスク３０に記憶され、冗長"パリティ"データは６番目のディスク３２に記憶される。
【００２９】
図３にパリティＲＡＩＤ区域のレイアウトを詳しく示す。図２のミラーＲＡＩＤ区域のレイアウトと同様に、ディスク０、１、２、３の物理的記憶空間は、複数の同じ大きさのストライプに構成される。例として示したこの図では、データはＲＡＩＤレベル５にしたがって記憶され、冗長データはＰで表したセグメントに記憶される。冗長Ｐセグメントは、ストライプの中のその他のセグメントのパリティを記憶する。たとえば、ストライプ０において、ディスク３上の冗長Ｐセグメントは、ディスク０、１、２のパリティを記憶する。各ストライプのパリティは、たとえば、排他的ＯＲ関数のような、ある関数によって計算される。最初の４つのストライプのパリティは次のように表され、下付き数字は対応するストライプを表す。
【００３０】
【数１】
0003699166.tif 000002
パリティ冗長は、ディスクの１つで使用不可能になったデータの再生を可能にする。たとえば、セグメント５のデータが使用できなくなったとき、その内容は、セグメント３および４、および、セグメントＰのパリティ・データから確かめることができる。パリティ記憶はミラー記憶よりも費用はかからないが、信頼性はより低く性能も低い。
【００３１】
図１に示したディスク配列は概念を示す目的のものである。実際には、ディスクアレー１１は、ミラーおよびパリティ冗長にしたがってデータを記憶することができる複数のディスク１２を単に持つだけである。全てのディスク１２によって提供される使用可能な記憶空間のうち、その記憶空間の１部がミラー冗長に割り当てられ、別の１部がパリティ冗長に割り当てられる。ディスク１２は複数の同じ大きさの記憶領域（図４の番号３５で表すような）を含むように構成され、個々の領域が複数のセグメントを持つようにするのが望ましい。領域は、記憶空間の１つの仮想ビューの中にＲＡＩＤ区域を形成するようにまとめられる。さらに、ＲＡＩＤ区域およびデータ冗長記憶手法がユーザまたはホストに透明（トランスペアレント：transparent）になるように、記憶空間の別の（ホストによって定義された）ビューがユーザまたはホストに提示される。これらの特徴については、図４を参照して以下に詳しく述べる。
【００３２】
データ記憶装置１０は、ミラー記憶方法およびパリティ記憶方法の間のデータの"移行"（migration）を管理する。両タイプの冗長性の管理はＲＡＩＤ管理装置１６（図１）によって調整される。ＲＡＩＤ管理装置１６は、ディスクアレーの中の２つの異なった型のＲＡＩＤ区域を、ミラーＲＡＩＤ区域がパリティＲＡＩＤ区域に対してキャッシュとしてはたらくのと同様なメモリ階層として管理する。ＲＡＩＤ管理装置１６は、定義された性能プロトコルにしたがって、ミラーＲＡＩＤ区域とパリティＲＡＩＤ区域との間のデータをシフトし、組織し、その他の方法で管理する。ミラーＲＡＩＤ区域とパリティＲＡＩＤ区域との間のデータ移動の処理は"移行"と呼ばれる。
【００３３】
データ記憶装置１０は、最高の性能および信頼性がもたらされるように、性能により厳しいデータをミラーＲＡＩＤ区域に置くように努める。ＲＡＩＤ管理装置１６によって具体化される性能プロトコルは、２つの望ましい移行方針のうちのどちらかを含む。第１の移行方針は"アクセス頻度"と呼ばれ、この方針にしたがって、階層ディスクアレー上の最も頻繁にアクセスされるデータがミラーＲＡＩＤ区域１８に維持される。アクセス頻度の低いデータはパリティＲＡＩＤ区域２２に維持される。"アクセスの最近性"と呼ばれる第２の移行方針にしたがって、最も最近に取り出されたデータはミラーＲＡＩＤ区域１８に維持され、アクセスの最近性の低いデータはパリティＲＡＩＤ区域２２に記憶される。この他の性能プロトコルを使用することもできる。そのようなプロトコルは、具体的なコンピュータ・アプリケーション、およびユーザのニーズに基づいて定義することが理想的である。
【００３４】
さらに、ＲＡＩＤ管理装置１６は、２つのパラメータの関数、すなわち物理的記憶容量の大きさ、およびデータ記憶装置に記憶されているユーザデータの現在量にしたがって、データ記憶装置の記憶資源を自動的に"調整"する。最初は全てのデータがミラーＲＡＩＤ区域に記憶される。これによって最高の性能および信頼性が得られるからである。より多くのデータがデータ記憶装置に加えられるにつれて、性能および信頼性を最適化するために、ミラーＲＡＩＤ区域とパリティＲＡＩＤ区域との間でデータの移行が行われる。データ記憶装置が満杯に近づくにしたがい、冗長性を通して信頼性を提供しながらユーザの要求をすべて満たすようにするために、いっそう多くのデータがパリティＲＡＩＤ区域に移行される。したがって、本発明によるデータ記憶装置は最大の融通性と適応をもたらす。
この装置は、特定の記憶方法をユーザが選択する必要はないが、ユーザからのどんな要求をも満たすように適応できる。
【００３５】
図４に、データ記憶装置１０の使用可能な記憶空間のメモリ・マッピングを、マッピングされた仮想記憶空間の複数の層として示す。図の垂直に延びた矩形のそれぞれは、物理的記憶空間のビューを表す。この図において、物理的記憶空間３４は２つの仮想記憶ビュー４０および５０で参照されている。物理的記憶空間３４は４個のディスク（図１のディスク１２のような）で表され、数字０、１、２、３で参照される。これらのディスクに関連している４つの矩形は物理的記憶空間のビューを表し、ディスク１、２、３は大体同じ記憶容量を持っているが、ディスク０はやや少ない記憶容量を持っている。これらのディスクの記憶容量の例は、１ないし３ギガバイトである。記憶空間３４は区域Ａ０、Ａ１、Ａ２等に分割されている。個々の区域は、たとえば区域Ａ０の中のストライプ０〜Ｑのように、多くのストライプを持つ。個々の区域には、また、多くの領域３５がある。領域３５は、それぞれの領域が全ディスクアレーにわたって同じ大きさになるように、各記憶ディスク上で、均一な大きさの、ある選択された数のセグメントで構成されるのが望ましい。１つの領域３５の大きさの例は１メガバイトである。
【００３６】
ディスクの記憶空間は、物理的記憶空間３４の第１の中間的な、ＲＡＩＤレベル仮想ビュー４０にマッピングされる。この第１仮想ビューは、概念的には、連続的にアドレス可能な記憶空間を表す第２のアプリケーション・ビューにマッピングすることができる１組のＲＡＩＤ区域である。記憶空間の物理的な構成およびＲＡＩＤビューはアプリケーション・ビューからは隠れている。
【００３７】
ＲＡＩＤ区域の記憶空間４０は、ミラーおよびパリティ記憶空間を区別する記憶のビューである。たとえば、ＲＡＩＤ区域４２はＭ個の割り当てブロック４３を持つミラーＲＡＩＤ区域を表し、ＲＡＩＤ区域４４はＮ個の割り当て区域４５を持つパリティＲＡＩＤ区域を表す。割り当てブロック４３および４５は同じ大きさ（たとえば６４ｋバイト）であることが望ましい。これらのＲＡＩＤ区域は、物理的記憶空間３４上の対応する物理的区域Ａ０、Ａ１、Ａ２等に関連する。
たとえば、ＲＡＩＤ仮想ビューの１６個の６４ｋ割り当てブロック４３または４５は、１個の１Ｍ（メガ）領域３５の上にマッピングすることができる。
【００３８】
ミラーおよびパリティＲＡＩＤ区域は、ディスクアレーの記憶空間３４の全体を使いきる場合とそうでない場合とがある。したがって、あるアプリケーションの間、特定のＲＡＩＤ区域に対応しない、未使用で未指定の記憶空間がある場合がある。しかし、そのような記憶空間は、ミラーまたはパリティＲＡＩＤ区域のどちらにも変換することができる。また、ＲＡＩＤ区域は、ディスクアレー上の連続した区域にマッピングされ、ＲＡＩＤ区域に関連する領域のそれぞれは各記憶ディスク上の同じ物理アドレスに置かれるものとして図示してあることに留意されたい。代替方法として、ＲＡＩＤ区域はディスクアレー上の不連続な区域にマッピングすることもできる。
【００３９】
ＲＡＩＤ区域で使用可能な記憶空間は、ユーザまたはホスト・アプリケーション・プログラムによって定義され、ユーザまたはホスト・アプリケーション・プログラムに提示される記憶のビューである第２の前面のアプリケーション・レベルの仮想ビュー５０にマッピングされる。ユーザまたはホスト・アプリケーション・プログラムから見た場合、アプリケーション・レベルの仮想ビュー５０は、記憶ディスク１２上で使用可能な記憶空間を示す１つの大きな記憶容量を表す。
仮想記憶空間５０は、それぞれが、０、１、２、.....、Ｊ−１、Ｊ、Ｊ＋１、.....、Ｌ−１、Ｌ、Ｌ＋１、.....、等として参照される同じ大きさの記憶仮想ブロック５２および５３からなる、線形の１組のビューを提示する。仮想ブロック５２および５３は、ＲＡＩＤ区域４０の割り当てブロックと同じ大きさ（たとえば６４ｋバイト）であることが望ましい。仮想ブロック記憶空間５０は、ＲＡＩＤ区域４０で提示されているビューの割り当てブロックを指す参照テーブルまたはポインタ（たとえば図４の矢印５４で示す）によって表される。したがって、アプリケーション仮想ビュー５０の仮想ブロック５２および５３は、仮想ブロック・テーブルで維持されているポインタを介して、ＲＡＩＤ仮想ビュー４０の割り当てブロック４３および４５に関連づけられている。仮想ブロック・テーブルから参照できるＲＡＩＤ区域の型には少なくとも２つ（すなわちミラーおよびパリティ）の型がある。
【００４０】
ＲＡＩＤ管理装置１６は、物理的記憶空間全面にわたるＲＡＩＤ区域の構成を動的に変更できる。各型のＲＡＩＤ区域の数は、装置に記憶されつつあるユーザデータの量および物理的なディスク記憶空間の大きさに応じて増減される。その結果、ＲＡＩＤレベル仮想ビュー４０の中のＲＡＩＤ区域のディスク上へのマッピング、および、前面仮想ビュー５０のＲＡＩＤビュー４０へのマッピングは常にその状態が変化している。ＮＶＲＡＭ２１ａおよび２１ｂ（図１）のメモリマップ記憶装置は、ＲＡＩＤ管理装置１６がＲＡＩＤ区域をディスク上にマッピングするために使う最新のマッピング情報、および、２つの仮想ビュー間のマッピングに用いられる情報を維持している。ＲＡＩＤ管理装置は、ＲＡＩＤレベルのマッピングを動的に変更するのに応じて、その変更を反映するためにメモリマップ記憶装置のマッピング情報も更新する。
【００４１】
図１ないし４を参照して、データ記憶装置１０の移行動作について以下に述べる。
【００４２】
説明を続ける目的のために、アプリケーション・レベル仮想記憶空間５０の仮想ブロック５３は、物理的記憶空間３４の区域Ａ１に記憶されているパリティＲＡＩＤ区域４４の中の関連する割り当てブロック４５を参照する。そのような仮想ブロック５３は"パリティ仮想ブロック"と呼ばれ、関連する割り当てブロック４５は"パリティ割り当てブロック"と呼ばれる。同様に、仮想ブロック５２は、物理的記憶空間３４の区域Ａ０に記憶されているミラーＲＡＩＤ区域４２の中の関連する割り当てブロック４３を参照する。そのような仮想ブロック５２は、"ミラー仮想ブロック"と呼ばれ、関連する割り当てブロック４３は"ミラー割り当てブロック"と呼ばれる。
【００４３】
一般的に、データを１つのＲＡＩＤ区域から別のＲＡＩＤ区域に移行するためには、第１のＲＡＩＤレベル型（たとえば、ミラーすなわちレベル１）の割り当てブロックに関連した仮想ブロックが選択される。次に、第２のＲＡＩＤレベル型（たとえば、パリティすなわちレベル５）を表す、未使用の割り当てブロックが探される。未使用の割り当てブロックが見つからなければ、割り当てブロックが作られる。次に、データが、選択された仮想ブロックに以前関連していた割り当てブロックから、未使用の割り当てブロックに転送され、データは冗長レベルの変更を受ける。たとえば、以前ミラー冗長にしたがって記憶されていたデータは、あらたにパリティ冗長にしたがって（またはその逆）記憶される。最後のステップとして、アプリケーション・レベル仮想記憶空間５０のＲＡＩＤレベル仮想記憶空間４０へのマッピング５４は、データのシフトを反映するために修正され更新される。第１のＲＡＩＤレベル型の割り当てブロックに以前関連していた選択された仮想ブロックは、こんどは、更新されたポインタを介して、移行されたデータを含む第２のＲＡＩＤレベル型の割り当てブロックを参照する。この処理中に起こるマッピング変更はメモリマップ記憶装置２１の中で更新される。
【００４４】
以下に、本発明の方法およびシーケンスにしたがった、ミラーおよびパリティ記憶区域の間のデータの移行について説明する。パリティ記憶区域からミラー記憶区域へデータを移行するために、次のシーケンスが使われる。
１.  ＲＡＩＤ管理装置が、ミラーＲＡＩＤ区域４２の中に未使用のミラー割り当てブロック４３を探す。
２.  見つからなければ、ＲＡＩＤ管理装置はミラー割り当てブロックを作る（以下に述べる）。
３.  ＲＡＩＤ管理装置は、移行される仮想ブロックへの新しい記憶要求を中断する。
４.  ＲＡＩＤ管理装置は、その仮想ブロックに対する実行中のデータ記憶要求がすべて完了するまで待つ。
５.  仮想ブロック５３に関連しているパリティ割り当てブロック４５からのデータが臨時のメモリバッファに読み込まれる。
６.  データが、ステップ２で選ばれたミラー割り当てブロック４３に書かれる。
７.  仮想ブロック・テーブルが、ミラー割り当てブロック４３にあるデータの新しい位置を参照するように修正される。
８.  中断された記憶要求が再開される。
上述の手続きにより、アプリケーション・レベル仮想ビュー５０の仮想ブロック５３は、パリティからミラー記憶に移行する。中間的仮想ビュー４０に関しては、データは、パリティＲＡＩＤ区域４４のパリティ割り当てブロック４５からミラーＲＡＩＤ区域４２のミラー割り当てブロック４３に移行されている。物理的記憶空間では、データは区域Ａ１から区域Ａ０に移動している。
【００４５】
未使用のミラー割り当てブロックが見つからなかった場合（上記のステップ１）、ＲＡＩＤ管理装置は、３つの手法からなる次のシーケンスを試みる。先ず、ＲＡＩＤ管理装置は、未使用（したがって未指定）のＲＡＩＤ区域を見つけることを試みる。このＲＡＩＤ区域は、移行が常に進行できることを保証するのに必要な未使用のＲＡＩＤレベル記憶のシステムしきい値を犯すことなく、ミラーＲＡＩＤ区域に変換できるものである。これが失敗し、装置が未使用のＲＡＩＤレベル記憶の予備量以上を持っている場合、装置は、未使用のパリティ割り当てブロックを未使用のＲＡＩＤ区域に集めるために、パリティ記憶内のデータを移行する。この移行により、上記のようにミラーＲＡＩＤ区域に変換できる未使用のＲＡＩＤ区域が生じる場合、装置は未使用のＲＡＩＤ区域をミラーＲＡＩＤ区域に変換する。そうでない場合、代替方法として、未使用のミラー割り当てブロックを求めるため、または、未使用のＲＡＩＤ区域をミラーＲＡＩＤ区域に変換するのに十分な未使用のＲＡＩＤレベル記憶を増やすまで、装置はデータをミラーからパリティ記憶に移行し、ミラー記憶を詰め、未使用のＲＡＩＤレベル記憶をパリティに変換する。ミラー割り当てブロックはパリティ割り当てブロックよりも多くの物理的記憶空間を占めるので、この最後の方法は、未使用のＲＡＩＤレベル記憶装置の純増につながる。
【００４６】
未使用のミラー割り当てブロックを求めて確立するために使われる作成／変換のプロトコルは、ユーザデータの量および物理的記憶空間の大きさに応じて、ＲＡＩＤ管理装置がパリティ区域とミラー区域との間のメモリ割り当てを選択的に調節できるので、利点がある。ＲＡＩＤ管理装置は、データ使用および記憶容量が変化するにしたがい、ミラー記憶に保持されるデータ量が最大になるように、上記の１つまたは複数の手法を用いる。
【００４７】
ＲＡＩＤ管理装置は、空き時間（アイドルタイム）中に未使用のＲＡＩＤ区域を作ることにより、空間作成シーケンスが未使用のミラー割り当てブロックを生じる間、記憶要求が待たなければならない状況を避けるように試みる。しかし、ある状況においては、空間作成シーケンスの間、記憶要求が中断される場合がある。ＲＡＩＤ管理装置は、仮想空間がＲＡＩＤビューより小さくなるような方法で仮想ブロック記憶空間を構成する。これにより、少なくとも１つのＲＡＩＤ区域に等しい空き空間が、移行またはその他の目的のためにとって置かれることが保証される。このようにして、この手法のシーケンスにより未使用のミラー割り当てブロックが常に生じる。
【００４８】
ミラーからパリティ記憶にデータを移行するために、次のシーケンスが使われる。
１.  ＲＡＩＤ管理装置は、アクセス最近性またはアクセス頻度のような移行方針にしたがってミラーからパリティ記憶に移行するために、５２から仮想ブロックを選ぶ。
２.  ＲＡＩＤ管理装置は、パリティＲＡＩＤ区域４４の中に未使用のパリティ割り当てブロック４５を探す。
３.  そのようなブロックが見つからなかった場合、上述の作成方法にしたがって、移行のために確保しておいた空間がパリティＲＡＩＤ区域に変換される。
４.  移行される仮想ブロックに対する新しい記憶要求が中断される。
５.  ＲＡＩＤ管理装置は、その仮想ブロックへの実行中の記憶要求がすべて完了するまで待つ。
６.  データが、仮想ブロック５２に関連しているミラー割り当てブロック４３から臨時のメモリバッファに読み込まれる。
７.  データが、選ばれたパリティ割り当てブロック４５に書かれる。
８.  仮想ブロック・テーブルが、パリティ割り当てブロック４５の中のデータの新しい位置を参照するために修正される。
９.  仮想ブロックへのデータ要求が再開される。
上述の９ステップからなる２つのシーケンスは、２つの異なる冗長レベルの間のデータの移行を行うために、本発明による記憶装置がどのように動作するかの例を提供している。
【００４９】
本発明の冗長階層データ記憶装置は、データ損失を最小にするように設計されている。記憶ディスク上のデータ損失は、ディスク上の特定の位置に記憶されているデータが反意図的に変えられことを意味する事象または一連の事象が起こったときに起こる。そのような事象が起こった後、変化がもたらされた位置に記憶されているデータは、事象が起こる前と同じであるかどうか不確実になる。典型的には、記憶ディスクは、そのような事象が各記憶位置で起こったかどうかを覚えている機構を持っていない。むしろ、記憶ディスクは、アクセスの試みが行われるとき、記憶位置がうまくアクセス（読取りまたは書込み）できたかどうかを単に報告するだけである。データ損失の事象が起こった後、データを含んでいた記憶位置をアクセスする試みが成功しても、データ自身はもはや信頼性がない。
【００５０】
ディスクアレー制御装置によって認識されるデータ損失の事象は、失敗した書込みアクセスと省略（スペア：spare）を含む。失敗した書き込みアクセスはデータ損失の事象と見なされる。というのは、記憶ディスクによって報告された書き込み失敗は、ディスク上の関連記憶位置にデータを書き込む試みはなされたが、データのある部分または全てが実際には書き込まれなかったことを意味するからである。その結果、記憶位置の内容に関して不確実さが生じる。
【００５１】
省略は、典型的には、ある記憶位置へのアクセスがもはや成功しないときに、記憶ディスク上で実行される。この理由により、省略動作中に、省略すべきであると識別された記憶位置の内容を新しい記憶位置にコピーする試みを行わないことは、多くのディスク制御装置の具体化で内在している機能である。省略処理中に、記憶ディスクは、また、内容が読めなかったためにコピーしなかったその他の記憶位置を識別して伝える。省略されてコピーされなかった記憶位置にデータ損失が生じている。というのは、新しい記憶位置に含まれているデータは、古い記憶位置に含まれているデータと同じでないことがわかっているからである。
【００５２】
本発明の階層データ記憶装置には、２つの型のデータ損失、すなわち"基本的"（primitive）データ損失、および"複合"（compound）データ損失が起こり得る。基本的データ損失は、ユーザデータの記憶に使用可能な空間に含まれている記憶ディスクからの物理的な部分のデータの損失である。これは、ディスクアレー制御装置１４が、記憶ディスク上に記憶されているデータの特定部分がもはや正確でも有用でもないと判断したときに起こる。これに応答して、制御装置は、データが再び決して使われることがないように、損失の不可逆記録を作る。複合データ損失は、すべてのマッピングと冗長性が適用された後の、基本的データ損失の組合せから生じる仮想データの損失である。
【００５３】
図５に、複合データ損失の程度を最小にしようとするデータ損失検出器６０を備えたデータ記憶装置１０を示す。データ損失検出器６０は、個々のＲＡＩＤ区域内で起こるデータ損失を追跡する。データ損失検出器６０は、領域内で基本的データ損失が起こったことを検出するために、ＲＡＩＤ区域に関連する個々の領域３５を監視する。データ損失検出器６０は、ディスクアレー制御装置１４内のファームウェアで具体化するのが望ましいが、図５では、制御の流れの説明を容易にするために別に図示してある。
【００５４】
データ損失検出器は、個々の領域が（１）有効（valid）で、データ損失を経験していない、または（２）無効で、データ損失を経験している、のどちらかを表す複数の表示器を含む領域同期テーブル６２を含む。望ましい具体化では、表示器は、関連する領域それぞれに対して１つの同期ビットからなる。同期ビットの第１の２進値たとえば"１"は、対応する領域が有効でデータ損失を経験していないことを示す。逆に、同期ビットの第２の２進値たとえば"０"は、対応する領域が無効でデータ損失を経験したことを示す。１つの領域全体に対して同期状態をマッピングするために１つのビットしかないので、同期ビットが２進値"０"であるとき、領域全体が無効、すなわち"同期がとれていない"（out of sync）と見なされる。
【００５５】
図６に示すように、各ＲＡＩＤ区域は、各ＲＡＩＤ区域に含まれている領域の状態により、３つの状態のうちのどれか１つに分類される。全ての同期ビットが２進値"１"で示されて、全ての領域が有効であるときに、ＲＡＩＤ区域は"最適"として分類される。パリティＲＡＩＤ区域ＲＡN-1は、該区域がマッピングしているディスクアレーの物理的記憶区域Ａ４上のすべての領域Ｒ０、Ｒ１、Ｒ２、Ｒ３が有効であるので、最適である。このＲＡＩＤ区域に記憶されているデータは、十分な冗長性を備えて記憶され、取り出すことができる。
【００５６】
１つの領域が無効すなわち同期がとれていないと識別されたとき、ＲＡＩＤ区域は"劣化"として分類される。パリティＲＡＩＤ区域ＲＡNは、領域Ｒ６が無効である（領域全体の"Ｘ"で示すように）ので、劣化区域の１つの例である。領域Ｒ６に対応する同期ビットは２進値"０"にある。"劣化"ＲＡＩＤ区域のデータはまだ使用可能であるが、もはや十分な冗長性はない。
【００５７】
２つ以上の領域が無効であると宣言されたとき、ＲＡＩＤ区域は"作動不能"と分類される。パリティＲＡＩＤ区域ＲＡN+1は、領域Ｒ８およびＲ１１ともに無効であるとマークされているので、作動不能区域の例である。作動不能ＲＡＩＤ区域の残余の領域のデータは直接アクセスすることができるが、作動不能ＲＡＩＤ区域内の無効領域からはデータを回復することができない。少なくともあるデータの冗長コピーの両方が失われたので、作動不能ＲＡＩＤ区域で、組合せデータ損失が生じている。
【００５８】
データ記憶装置１０は、作動不能ＲＡＩＤ区域が作られるのを避けるように試みる。したがって、データ損失検出器６０は、第２仮想記憶空間内の、領域のセクタの上にマッピングされた、データ損失の原因である１つまたは複数の仮想ブロックを識別するように構成されている。データ損失の最新記録を維持するために、これらの仮想ブロックは欠陥ありとしてタグがつけられる。６４ｋ仮想ブロックおよびその中のセクタを個々に追跡することによって、データ記憶装置は、１Ｍ領域全体を無効と宣言する代わりに、データ損失の起こった具体的なセクタをより選択的に識別することができる。領域のその他の部分は、データアクセスができるように開かれたままになっている。
【００５９】
データ損失検出器６０は、仮想データ損失テーブル６４、および活動書き込みリスト６６を含む。仮想データ損失テーブル６４は、欠陥仮想ブロックの仮想アドレスを、より具体的には、それらの仮想ブロック内の特定のセクタのアドレスを記憶する。テーブルは、作動不能ＲＡＩＤ区域が作られるのを避けるために、組合せデータ損失を仮想ブロック・レベルで記録する。領域全体に無効とマークをつけ、その結果ＲＡＩＤ区域全体を作動不能として分類する代わりに、テーブルに空間が存在する限り、欠陥仮想ブロックを記録することによって、作動不能ＲＡＩＤ区域が作られるのを避けることができる。
【００６０】
図７および８に、仮想データ損失テーブル６４の使用を示す。Ｒ６がすでに無効と宣言されていることにより、ＲＡＩＤ区域ＲＡNが"劣化"していると仮定する。劣化したＲＡＩＤ区域の第２の領域Ｒ７にデータ損失を検知すると、ＲＡＩＤ管理装置１６は、第１すなわちＲＡＩＤレベル仮想ビュー４０から第２すなわちアプリケーション・レベル仮想ビュー５０（図７）に至るマッピング情報を介して、そのデータ損失の位置を追跡する。次に、このアプリケーション・レベル仮想ビューにおける、データ損失と関連する仮想ブロックが識別される。
【００６１】
図８は、この処理をさらに詳しく示す。領域Ｒ７が１メガバイトの大きさを持つと仮定する。これは、物理的なディスク駆動装置上の、２０４８個の５１２バイトのセクタに相互に関連する。さらに、全領域の中で、セクタ７０だけが欠陥データの原因であると仮定する。このセクタのアドレスが、パリティＲＡＩＤ区域４４を通って、アプリケーション・レベル仮想ビュー５０の仮想ブロック５３にマッピングされる。この仮想ブロックのデータＤ＿ＶＢの一部がセクタ７０の故障のために欠陥を持っている。したがって、関連する仮想ブロック内のセクタのアドレスが、仮想データ損失テーブル６４に記録される。
【００６２】
仮想データ損失テーブル６４は、少数の領域、たとえば１メガバイトの領域を１個ないし３個保持するように作るのが望ましい。この大きさは、大体１６ないし４８個の６４ｋ仮想ブロックに相互に関連する。一つの具体化方法は、１６〜４８個の仮想ブロックのアドレス指定インデックスを含む一つの層（tier）、および、各仮想ブロックのエントリに関連するセクタを表す関連するビットマップを含む第２の層からなる、２層のテーブルである。６４ｋ仮想ブロック１つにつき１２８個の５１２バイトのセクタがあるので、ビットマップは１２８ビットのマップで、各２進値エントリが、インデックスされた仮想ブロックの対応するセクタが無効データを含んでいるかどうかを示すことが望ましい。
【００６３】
テーブル６４の各レコードは、装置の中の仮想アドレス指定空間の範囲を識別する。すべての読取り動作は、仮想データ損失テーブル６４の中のエントリと照合される。識別されたデータ損失の範囲に重なる読取りアクセスは、回復不能エラーを返す。しかし、１つの仮想ブロックの中のデータ損失は別として、ディスクアレー制御装置は、領域Ｒ７のその他のセクタ、および残りの有効領域Ｒ４およびＲ５から、データを読み続けることができる。
【００６４】
この方法は、１Ｍ領域全体が、ＲＡＩＤ区域ＲＡNを作動不能にする無効と宣言されないので、有益である。このようにして、作動不能ＲＡＩＤ区域が作られるのが避けられる。通常の読み込み動作中、読み込み中のデータが有効か、または、データが欠陥仮想ブロックから読み込まれているかを判断するために、テーブル６４のリストが参照される。データ記憶装置は、ユーザがレビューできるように、損失した仮想データの範囲をリストすることができる。
【００６５】
活動書き込み記憶装置６６は、データ記憶装置にまだ処理されずに残っているすべての活動中の書き込み動作のリストを維持する。書き込みが始動されると、その書き込み動作は活動書き込み記憶装置６６にリストされ、完了すると、書込み動作はリストから外される。データ記憶装置は、仮想データ損失テーブル６４にリストされた欠陥仮想ブロックにデータを書くことを試みる場合がある。これにより、書き込み動作が処理されずに活動書き込み記憶装置６６にリストされる間にデータが損失しない限り、欠陥仮想ブロックが仮想データ損失テーブル６４から外される。読取りと書込み動作が完了した後、データ損失テーブルに新しい仮想ブロック範囲を生成した同時並行活動があったかどうかを調べるために、範囲重複チェックが行われる。書込みの進行中にデータ損失が起こった場合、完了した書き込みはデータ損失をテーブルから外すことができない。活動書き込み記憶装置６６がこのチェック手続きを可能にする。
【００６６】
本発明の具体化では、領域同期テーブル６２、および仮想データ損失テーブル６４は、すべて、ディスクアレー制御装置１４のＮＶＲＡＭ２１ａおよび２１ｂの中に形成され常駐する。活動書き込み記憶装置６６は、ディスクアレー制御装置の揮発性ＲＡＭの中に作られる。
【００６７】
図５ないし１０を参照して、本発明の冗長階層データ記憶装置１０のデータ損失を監視する種々の方法について述べる。
【００６８】
図９および１０の流れ図の最初の３つのステップにより、基礎的なＲＡＩＤ環境が適切に設定される。ステップ２００で、物理的記憶空間３４が、たとえばＲＡＩＤレベル１および５のような様々なＲＡＩＤレベルにしたがってデータを記憶する複数のＲＡＩＤ区域として物理的記憶空間を表す第１すなわちＲＡＩＤレベル仮想記憶空間４０にマッピングされる。ＲＡＩＤ区域は、欠陥がまだ検出されていないので、最初は"最適"と分類される。ステップ２０２で、第１の仮想記憶空間は、物理的記憶空間を複数の仮想ブロックとして表す第２すなわちアプリケーション・レベル仮想記憶空間５０にマッピングされる。
【００６９】
次に、装置の動作中、基本的データ損失を検出するために、ＲＡＩＤ区域がデータ損失検出器６０によって監視される（ステップ２０６）。判断ステップ２０８で、ＲＡＩＤ区域内の領域の一部が損失したかどうかが判断される。損失していなければ、処理は、データ損失が検出されるまで監視を続ける。データ損失が検出されると、損失が"最適"なＲＡＩＤ区域の領域で起こったかどうかが判断される。この場合、検出された領域は、そのＲＡＩＤ区域でデータ損失を経験した最初の領域であることを意味する（ステップ２１０）。それが最初の領域である場合、その領域は、領域同期テーブル６２の対応する同期ビットを２進値"０"に設定することによって、無効とマークされる（ステップ２１２）。次に、このＲＡＩＤ区域は、ステップ２１４で、"劣化"と分類される。図６のＲＡＩＤ区域ＲＡNは、"劣化"したＲＡＩＤ区域を表す。
【００７０】
ステップ２１６で、ある領域が無効であると宣言されたことが、ユーザに知らされる。これは、インターフェース１７（図１）を介して、メッセージをホスト・コンピュータに送ることによって行われることが望ましい。このメッセージは、冗長性の損失があったことをユーザに警告するために、表示装置上に表示してもよい。このようにして、本発明は、データ損失が起こったときにこれを報告し、損失の量を具体的に示す。
【００７１】
この時点で、ディスクアレー制御装置は、無効な領域をアドレスしないように避けるだけでよい。残りのＲＡＩＤ区域とともに、"劣化"したＲＡＩＤ区域内の残りの領域は、ユーザデータを記憶するために自由に使い続けることができる。
【００７２】
ステップ２１０に戻ると、すでに"劣化"したＲＡＩＤ区域の第２の領域でデータ損失が起こった場合、データ記憶装置１０は、データ損失の程度を判断する（図１０、ステップ２２０）。データの相当な部分が第２の領域で損失し、予め選択されたしきい値数量を超えた場合、関連する同期ビットを設定することにより、第２の領域の全体が無効であるとマークされる（ステップ２２４）。この状況の１つの例は、この領域のデータの全てまたは殆どが損失した場合である。この時点で、ＲＡＩＤ区域の２つの領域が無効であるとわかったので、ＲＡＩＤ区域全体が"作動不能"と宣言される（ステップ２２６）。図６のＲＡＩＤ区域ＲＡN+1が"作動不能"ＲＡＩＤ区域の例である。作動不能ＲＡＩＤ区域の無効領域から、データは回復できない。作動不能のＲＡＩＤ区域から生じたデータ損失は、作動不能ＲＡＩＤ区域の無効領域にアクセスする間に、ホストの表示装置上にメッセージを表示することによってユーザに知らされる（ステップ２２８）。代替方法として、データ記憶装置は、ＲＡＩＤ区域が作動不能になったためにデータが永久に損失したことを示す警告表示器を備えることもできる。この後、ユーザデータは、残余のＲＡＩＤ区域に記憶される（ステップ２３０）。
【００７３】
ステップ２２２で、第２の領域の本質的な量より少ない量（たとえば、１つまたは２つのセクタだけ）が故障したと判断された場合は、第２の領域の故障した部分の上にマッピングされた仮想ブロックがステップ２３２で識別される。この処理は、図７および８で図示し説明したものである。この仮想ブロックは欠陥ありとして一時的にマークされ（ステップ２３４）、仮想データ損失テーブル６４に置かれる（ステップ２３６）。仮想ブロックは実際にタグまたは同様のものでマークをつける必要はなく、その仮想ブロックをデータ損失テーブルに加えることによって欠陥があると示すだけでよいことに留意されたい。データ記憶装置は、仮想データ損失テーブルが仮想ブロックを含んでいることを示す警告灯を持つことができる。ＲＡＩＤ区域が"劣化"した状態のままであっても、故障しつつある第２領域の残余の部分とともに、ＲＡＩＤ区域のその他の領域はデータ記憶に使用可能である（ステップ２３８）。
【００７４】
仮想ブロックは、テーブルがいっぱいになるまでリストされ続ける。テーブルがいっぱいになると、それ以上欠陥仮想ブロックのアドレスを記録する空間がない。したがって、判断ステップ２２２の一部として、仮想データ損失テーブルがいっぱいになっているかどうかが判断される。いっぱいになっている場合、最後に識別された欠陥仮想ブロックを含む第２の領域が無効であるとマークされ、そのＲＡＩＤ区域全体が作動不能として分類される（ステップ２２４および２２６）。この時点で、仮想データ損失テーブル６４にリストされていて、ＲＡＩＤ区域が作動不能として分類されたことにより除去されたその他の仮想ブロックは、テーブルから外され、将来の欠陥仮想ブロックのアドレスをリストするための空間を空けることができる。
【００７５】
最も望ましい具体化では、データ損失検出器は、テーブルがいっぱいになるまで常に欠陥仮想ブロックを記憶し、ステップ２２０のデータ損失の程度を判断する分析をなしで済ますことが望ましい。この具体化では、劣化したＲＡＩＤ区域の第２の領域でデータ損失が検出されるたびに、仮想ブロックが識別され、テーブルにリストされる。領域がどの程度のデータ損失を経験したのかを判断するステップ２２０および２２２でのしきい値の比較は行われない。
【００７６】
データ損失テーブルの空間を空ける代替手法は、同じＲＡＩＤ区域に関連する仮想ブロックのうちの最大グループを探すことであることに留意されたい。そうすることにより、そのＲＡＩＤ区域を"作動不能"として宣言することができ、そのＲＡＩＤ区域に関連している全ての仮想ブロックを仮想データ損失テーブルから外すことができる。
【００７７】
本発明には、例として次のような実施態様が含まれる。
（１）物理的記憶空間を規定する複数の記憶ディスクを持つ階層データ記憶装置のデータ損失を監視する方法であって、
（ａ）物理的記憶空間（３４）を、様々なＲＡＩＤレベルにしたがってデータを記憶する複数のＲＡＩＤ区域（４２、４４）として物理的記憶空間を表す第１の仮想記憶空間（４０）にマッピングし、個々のＲＡＩＤ区域が、複数の記憶ディスクにわたって延び、個々の記憶ディスク上の物理的記憶空間（３４）の領域（３５）を有し、データを冗長性を備えて記憶し取り出すことのできる最適として最初分類するステップと、
（ｂ）前記第１の仮想記憶空間（４０）を、物理的記憶空間を複数の仮想ブロック（５２、５３）として表す第２の仮想記憶空間（５０）にマッピングするステップと、
（ｃ）記憶されたデータの損失を検出するためにＲＡＩＤ区域を監視するステップと、
（ｄ）ＲＡＩＤ区域の第１の領域内でデータ損失を検出したときに、該第１領域を無効とマークし、該ＲＡＩＤ区域を冗長性なしでデータを記憶し取り出すことのできる劣化と分類するステップと、
（ｅ）前記劣化したＲＡＩＤ区域の第２の領域内でデータ損失を検出したときに、前記ＲＡＩＤ区域の全体を、該ＲＡＩＤ区域の前記第１および第２の領域からデータを回復することができない作動不能として分類するステップと、
を有する方法。
【００７８】
（２）作動不能と分類されなかったその他のＲＡＩＤ区域を使い続けるステップをさらに有する、上記（１）に記載の方法。
（３）無効領域および作動不能ＲＡＩＤ区域により生ずるデータ損失に関する情報をユーザに知らせるステップをさらに有する、上記（１）に記載の方法。
【００７９】
（４）物理的記憶空間を規定する複数の記憶ディスクを持つ階層データ記憶装置のデータ損失を監視する方法であって、
（ａ）個々のＲＡＩＤ区域が、複数の記憶ディスクにわたって延び、個々の記憶ディスク上の物理的記憶空間（３４）の領域（３５）を有し、物理的記憶空間（３４）を、様々なＲＡＩＤレベルにしたがってデータを記憶する複数のＲＡＩＤ区域（４２、４４）として物理的記憶空間を表す第１の仮想記憶空間（４０）にマッピングするステップと、
（ｂ）前記第１の仮想記憶空間（４０）を、物理的記憶空間を複数の仮想ブロック（５２、５３）として表す第２の仮想記憶空間（５０）にマッピングするステップと、
（ｃ）記憶されたデータの損失を検出するためにＲＡＩＤ区域を監視するステップと、
（ｄ）ＲＡＩＤ区域の領域内でデータ損失を検出したときに、該領域の部分にマッピングされている仮想ブロックを識別するステップと、
（ｅ）前記識別された仮想ブロックに欠陥ありと示すステップと、
（ｆ）前記領域の残りの部分、および前記ＲＡＩＤ区域内の残りの領域を、データを記憶するために使い続けるステップと、
を有する方法。
【００８０】
（５）前記欠陥仮想ブロックを仮想データ損失テーブル（６４）にリストする付加ステップをさらに有する、上記（４）に記載の方法。
（６）前記欠陥仮想ブロックにデータを書く付加ステップと、
前記欠陥仮想ブロックを前記仮想データ損失テーブル（６４）から外し、前記仮想ブロックが欠陥であるという表示を取り下げる付加ステップと、
をさらに有する、上記（４）に記載の方法。
【００８１】
（７）物理的記憶空間(３４)を規定する複数の記憶ディスク（１２）を持つディスクアレー（１１）と、
前記記憶ディスク（１２）にデータを書き込み、前記記憶ディスクからデータを読み込むために、前記ディスクアレー（１１）に結合されたディスクアレー制御装置（１４）と、
個々のＲＡＩＤ区域が、複数の記憶ディスクにわたって延び、個々の記憶ディスク上の物理的記憶空間（３４）の領域（３５）を有し、第１の仮想記憶空間（４０）が物理的記憶空間を種々のＲＡＩＤレベルにしたがってデータを記憶する複数のＲＡＩＤ区域（４２、４４）として表し、第２の仮想記憶空間（５０）が物理的記憶空間を複数の仮想ブロック（５２、５３）として表し、前記第１および第２の仮想記憶空間（４０、５０）を記憶ディスクの物理的記憶空間上にマッピングするために前記ディスクアレー制御装置（１４）に結合されたＲＡＩＤ管理装置（１６）と、
個々のＲＡＩＤ区域内で起こるデータ損失を選択的に追跡するデータ損失検出器（６０）と、
を備えるデータ記憶装置。
【００８２】
（８）前記データ損失検出器（６０）が、個々の領域が（１）有効で、データ損失を経験していないか、または（２）無効で、データ損失を経験しているかのどちらかを表す複数の表示器を含む領域同期テーブル（６２）を備える、上記（７）に記載のデータ記憶装置。
（９）前記データ損失検出器（６０）が、ＲＡＩＤ区域の領域内のデータ損失を検出し、前記領域の部分にマッピングされた欠陥仮想ブロックを前記第２仮想記憶空間内に識別するように構成され、前記データ損失検出器が、前記欠陥仮想ブロックの仮想アドレスを記憶する仮想データ損失テーブル（６４）を備える、上記（７）に記載のデータ記憶装置。
（１０）前記データ損失検出器（６０）が、前記データ記憶装置の中の全ての未処理の活動書き込み動作のリストを維持する活動書き込み記憶装置（６６）を備え、書き込み動作が完了時に活動書き込み記憶装置から外され、前記ディスクアレー制御装置（１４）が前記欠陥仮想ブロックにデータを書くことを試み、前記データ損失検出器（６０）が、書き込み動作が未処理で前記活動書き込み記憶装置（６６）にリストされている間にデータが損失しない限り、前記欠陥仮想ブロックを前記仮想データ損失テーブル（６４）から外す、上記（９）に記載のデータ記憶装置。
【００８３】
【発明の効果】
本発明の、記憶されたデータのデータ損失の区域を選択的に追跡する手法により、データ損失が起こった特定の区域以外の残余のデータに継続してアクセスできるようにし、データ記憶装置の可用性を維持することができる。
【図面の簡単な説明】
【図１】本発明によるディスクアレー・データ記憶装置を示すブロック図。
【図２】複数の記憶ディスク上の記憶空間、および、ＲＡＩＤレベル１によるデータ記憶を示す図。
【図３】複数の記憶ディスク上の記憶空間、および、ＲＡＩＤレベル５によるデータ記憶を示す図。
【図４】１つの物理的記憶空間に関して２つの仮想記憶空間がマッピングされている、本発明によるメモリマップ配列を示す図。
【図５】本発明のデータ損失検出に関連する要素および制御の流れを示すブロック図。
【図６】複数の記憶ディスク上の記憶空間を示し、個々の記憶ディスクからの領域を含むために物理的記憶空間上にマッピングされたＲＡＩＤ区域を示す図。
【図７】図６に同様であるが、物理的記憶空間上にマッピングされた第２の仮想ビューを示し、さらに、物理的記憶空間の領域で検出されたデータ損失が、第２の仮想ビューの関連する仮想ブロックで識別される方法を示す図。
【図８】図７の検出されたデータ損失の領域の詳細および仮想データ損失テーブルの使用を示し、２つの仮想ビューを通してのデータ損失領域の欠陥部分のマッピングを示す図。
【図９】本発明によるデータ損失を監視する方法を示す流れ図。
【図１０】図９の続きを示す流れ図。
【符号の説明】
１０            データ記憶装置
１１            階層ディスクアレー
１２            記憶ディスクまたはディスク駆動装置
１３            インターフェース・バス（ＳＣＳＩバス）
１４、14a、14b  ディスクアレー制御装置
１５            インターフェース・プロトコル
１６            ＲＡＩＤ管理装置
１７            入出力インターフェース・バス
１８            ミラー・グループ
２１            メモリマップ記憶装置
２１ａ、２１ｂ  不揮発性ＲＡＭ
２２            パリティ・グループ
２６            ディスクの第１の組
２８            ディスクの第２の組
３０            ５個のディスク
３２            ６番目のディスク
６０            データ損失検出器
６２            領域同期テーブル
６４            仮想データ損失テーブル
６６            活動書き込みリスト
【図１】
0003699166.tif 000003
【図２】
0003699166.tif 000004
【図３】
0003699166.tif 000005
【図４】
0003699166.tif 000006
【図５】
0003699166.tif 000007
【図６】
0003699166.tif 000008
【図７】
0003699166.tif 000009
【図８】
0003699166.tif 000010
【図９】
0003699166.tif 000011
【図１０】
0003699166.tif 000012