(57)【特許請求の範囲】
【請求項１】
データ記憶システム（１０）が物理的記憶スペース（３４）を形成する複数の記憶ディスク（１２）のディスクアレイ（１１）を備え、前記物理的記憶スペースがミラーＲＡＩＤ領域及びパリティＲＡＩＤ領域を有するＲＡＩＤレベル仮想記憶スペース（４０）にマッピングされ、前記ＲＡＩＤレベル仮想記憶スペースが仮想ブロックテーブル内のポインタによって前記ミラーＲＡＩＤ領域及びパリティＲＡＩＤ領域に関係付けられた複数の仮想ブロックを有するアプリケーションレベル仮想記憶スペース（５０）にマッピングされ、前記ミラーＲＡＩＤ領域及びパリティＲＡＩＤ領域の容量は動的に可変である、階層データ記憶システム内の記憶スペース確保方法において、
（ａ）前記ディスクアレイ（１１）内にｎ個の記憶ディスク（１２）を設けるステップと、
（ｂ）ミラー冗長に従ってデータを記憶するために、前記アプリケーションレベル仮想記憶スペース（５０）内の仮想ブロックを前記ミラーＲＡＩＤ領域に割り当てるステップと、
（ｃ）前記仮想ブロックにデータを記憶するステップと、
（ｄ）前記ディスクアレイ（１１）内の前記物理的記憶スペース（３４）の物理的容量を提供するステップと、
（ｅ）現在データの記憶に使用されている仮想ブロックの総数を表わす割り当て容量を決定するステップと、
（ｆ）前記ディスクアレイ内の前記物理的容量、前記割り当て容量、及び前記記憶ディスクの数の関数として、ミラーＲＡＩＤ領域内の仮想ブロックの最大許容数を計算するステップと、
（ｇ）パリティＲＡＩＤ領域とミラーＲＡＩＤ領域との間のデータ移動に対してスペース確保を保証するため、計算された前記ミラーＲＡＩＤ領域内の仮想ブロックの最大許容数を越えたミラーＲＡＩＤ領域内の仮想ブロックの割り当てを制限するステップと
を備えることを特徴とする記憶スペース確保方法。
【請求項２】
パリティ冗長に従ってデータを記憶するため、前記アプリケーションレベル仮想記憶スペース内の前記仮想ブロックを前記パリティＲＡＩＤ領域に割り当てるステップと、
ミラーＲＡＩＤ領域内の仮想ブロックの割り当てを制限することによって保証された確保スペースを用い、ミラー記憶領域とパリティ記憶領域との間で仮想ブロックを移動するステップと、
をさらに備えることを特徴とする請求項１に記載の記憶スペース確保方法。
【請求項３】
最初に少なくとも１つのミラーＲＡＩＤ領域に相当する量の物理的記憶スペースを確保するステップをさらに備えることを特徴とする請求項１に記載の記憶スペース確保方法。
【請求項４】
ミラーＲＡＩＤ領域内の仮想ブロック数が前記最大許容数より小さい場合、ミラーＲＡＩＤ領域内の前記仮想ブロック内にのみデータを記憶するステップと、
ミラーＲＡＩＤ領域内の仮想ブロック数が前記最大許容数を越える場合、前記アプリケーションレベル仮想記憶スペース内の仮想ブロックを、パリティ冗長に従ってデータを記憶するためのパリティＲＡＩＤ領域にも割り当て、一部の仮想ブロック内のデータを前記ミラーＲＡＩＤ領域に記憶し、残りの仮想ブロック内のデータを前記パリティＲＡＩＤ領域に記憶するステップと、
をさらに備えることを特徴とする請求項１に記載の記憶スペース確保方法。
【請求項５】
パリティ冗長に従ってデータを記憶するため、前記アプリケーションレベル仮想記憶スペース内の仮想ブロックを前記パリティＲＡＩＤ領域に割り当てるステップと、
前記仮想ブロック内のデータを前記ミラーＲＡＩＤ領域と前記パリティＲＡＩＤ領域との両方に記憶するステップと、
前記ディスクアレイにより多くのデータが記憶されて前記割り当て容量が前記物理的容量に近づくにつれ、前記仮想ブロックを前記ミラーＲＡＩＤ領域から前記パリティＲＡＩＤ領域へ移動して前記パリティＲＡＩＤ領域に記憶されたデータに対する前記ミラーＲＡＩＤ領域に記憶されたデータの比率を低下させるステップと、
をさらに備えることを特徴とする請求項１に記載の記憶スペース確保方法。
【請求項６】
前記ミラーＲＡＩＤ領域内に最小数の前記仮想ブロックを維持するステップをさらに備えることを特徴とする請求項５に記載の記憶スペース確保方法。
【請求項７】
前記割り当て容量を前記物理的容量と比較するステップと、前記割り当て容量が前記物理的容量の半分以上であるときにのみステップ（ｆ）で前記最大許容数を計算するステップと、をさらに備えることを特徴とする請求項１に記載の記憶スペース確保方法。
【請求項８】
物理的記憶スペース（３４）を形成する複数の記憶ディスク（１２）のディスクアレイ（１１）を備えるデータ記憶システム（１０）の階層データ記憶システム内の記憶スペース確保方法であって、
（ａ）前記ディスクアレイ内の前記物理的記憶スペース（３４）の物理的容量を提供するステップと、
（ｂ）前記物理的記憶スペース（３４）を複数のミラーＲＡＩＤ領域及びパリティＲＡＩＤ領域を有するＲＡＩＤレベル仮想記憶スペース（４０）にマッピングするステップと、
（ｃ）前記ＲＡＩＤレベル仮想記憶スペース（４０）を複数の仮想ブロックを有するアプリケーションレベル仮想記憶スペース（５０）にマッピングするステップと、
（ｄ）ミラー冗長に従ってデータを記憶するために、前記アプリケーションレベル仮想記憶スペース内の前記仮想ブロックを前記ミラーＲＡＩＤ領域に割り当てるステップと、
（ｅ）前記仮想ブロックにデータを記憶するステップと、
（ｆ）現在データの記憶に使用されている仮想ブロックの総数を表わす割り当て容量を決定するステップと、
（ｇ）前記割り当て容量を前記物理的容量と比較するステップと、
（ｈ）前記割り当て容量が前記物理的容量の半分以上である場合、（１）前記ミラーＲＡＩＤ領域内の仮想ブロックの最大許容数を、前記物理的容量及び前記割り当て容量の関数として計算するステップと、（２）前記ミラーＲＡＩＤ領域内に割り当て可能な前記仮想ブロックの数を動的に変更し、前記ミラーＲＡＩＤ領域内の仮想ブロックが前記計算されたミラーＲＡＩＤ領域内の仮想ブロックの最大許容数を越えて割り当てられることのないように制限するステップと、（３）パリティ冗長に従ってデータを記憶するために、前記アプリケーションレベル仮想記憶スペース内の仮想ブロックを前記パリティＲＡＩＤ領域内に割り当てるステップと、（４）一部の仮想ブロック内のデータを前記ミラーＲＡＩＤ領域に記憶し、残りの仮想ブロック内のデータを前記パリティＲＡＩＤ領域に記憶するステップと、を実行するステップと、
を備えることを特徴とする記憶スペース確保方法。
【請求項９】
前記マッピングステップ（ｂ）および前記マッピングステップ（ｃ）が、ユーザの使用に供されないある量のスペースを論理的に確保するために、前記物理的記憶スペースの容量より小さい容量を有するＲＡＩＤレベル仮想記憶スペースとアプリケーションレベル仮想記憶スペースとを生成することを特徴とする請求項８に記載の記憶スペース確保方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は冗長階層データ記憶システムにおけるデータの移動のための記憶スペースを確保する方法に関する。また、本発明は階層データ記憶システム自体をも対象とする。
【０００２】
【従来の技術】
コンピュータシステムの速度、信頼性及び処理速度は絶え間なく進歩し続けている。その結果、コンピュータはより複雑で高度なアプリケーションを処理できるようになってきている。コンピュータの進歩に伴なって、大容量記憶・入出力（Ｉ／Ｏ）装置の性能に対する要求も高くなっている。コンピュータシステムの進歩に対応した性能を有する大容量記憶システムを設計することが必要とされている。
【０００３】
【発明が解決しようとする課題】
本発明は特に、ディスクアレイ型の大容量記憶システムに関する。ディスクアレイデータ記憶システムは単一の大容量記憶システムを形成するように構成され調整された複数の記憶ディスク駆動装置を有する。大容量記憶システムの設計については、コスト、性能、及び可用性の３つの主たる評価基準がある。メガバイトあたりのコストが低く、入出力性能が高く、データの可用性の高い記憶装置を製造することが最も望ましい。“可用性”とは、記憶システムに記憶されたデータへのアクセス能力、及び故障のさいにも連続動作を保証する能力を指す。通常、データの可用性はデータやデータ間の関係が複数の記憶場所に記憶される冗長を用いて与えられる。
【０００４】
冗長データの記憶には通常２つの方法がある。第１の“ミラー”法によれば、データは複製され、記憶システムの２つの異なる領域に記憶される。例えば、あるディスクアレイにおいて、同一のデータがこのディスクアレイの２つの異なるディスクに設けられる。ミラー法は二重記憶技術を用いるために高性能であり、データの可用性が高いという利点がある。しかし、ミラー法はまたデータの記憶コストが倍になるためにコストがかかる。
【０００５】
第２の“パリティ”法では、記憶領域の一部を用いて冗長データが記憶される。しかし、この冗長記憶領域のサイズはオリジナルデータの記憶に用いられる他の記憶スペースより小さい。例えば、５つのディスクを有するディスクアレイでは、４つのディスクがデータの記憶に用いられ、第５のディスクが冗長データの記憶のみに用いられる。パリティ法はミラー法より低コストであるという利点があるが、同時にミラー法に比べて性能と可用性が低いという欠点がある。
【０００６】
【課題を解決するための手段】
本発明は異なる冗長技術を用いてデータを記憶することによって性能と信頼性を最適化する階層データ記憶システムを提供するものである。このデータ記憶システムは、複数の記憶ディスクを有するディスクアレイとディスク間のデータ転送を調整するディスクアレイコントローラからなる。記憶ディスクは物理的記憶スペースをなす。また、このデータ記憶システムはディスクアレイコントローラと連動して記憶ディスクの物理的記憶スペースに２つの仮想記憶スペースをマッピングするＲＡＩＤ管理システムを有する。第１の、あるいはＲＡＩＤレベル仮想記憶スペースは、それぞれＲＡＩＤレベル１（ミラー冗長）とＲＡＩＤレベル５（パリティ冗長）に従ってデータを記憶するミラーＲＡＩＤ領域とパリティＲＡＩＤ領域としての物理的記憶スペースとを提供する。ミラーＲＡＩＤ領域には複数のミラー割り当てブロックが含まれ、パリティＲＡＩＤ領域には複数のパリティ割り当てブロックが含まれる。第２の、あるいはアプリケーションレベル仮想記憶スペースは、複数の仮想ブロックとしての物理的記憶スペースを提供する。これらの仮想ブロックは仮想ブロックテーブルのポインタによってミラー割り当てブロック及びパリティ割り当てブロックと関係付けられる。
【０００７】
まず、ＲＡＩＤ管理システムがミラーＲＡＩＤ領域のすべてのデータを記憶する。これは、ミラー冗長はパリティ冗長より高い性能と信頼性が得られるためである。割り当てられた容量（すなわち、アプリケーションレベルの仮想記憶スペースの仮想ブロックに記憶されたデータの量）がディスクアレイの用物理的容量の半分を越えるまでは、すべてのデータをミラーＲＡＩＤ領域に記憶することができる。この閾値を越えると、ＲＡＩＤ管理システムはいくつかのデータをパリティＲＡＩＤ領域に記憶し始める。ＲＡＩＤ管理システムはミラーＲＡＩＤ領域とパリティＲＡＩＤ領域との間で移動し、その結果ＲＡＩＤレベル１（すなわちミラー冗長）とＲＡＩＤレベル５（すなわちパリティ冗長）との間で性能と信頼性が最適化されるような態様でデータの冗長性が変化する。
【０００８】
この移動のために充分なスペースが確保されるようにするために、ＲＡＩＤ管理システムはミラーＲＡＩＤ領域内で割り当てることのできる仮想ブロック数を制限する。ミラーＲＡＩＤ領域内の仮想ブロックの最大数は記憶ディスクの容量、記憶ディスク数、及びユーザからの各記憶要求の時点での割り当てられた容量の関数に基づいて動的に計算される。
【０００９】
【発明の実施の形態】
図１は本発明に従って構成されたデータ記憶システム１０を示す。好適には、データ記憶システム１０は複数の記憶ディスク１２を有する階層ディスクアレイ１１、ディスクアレイ１１に結合されて記憶ディスク１２間のデータ転送を調整するディスクアレイコントローラ１４及びＲＡＩＤ管理システム１６を有するディスクアレイデータ記憶システムである。
【００１０】
本明細書では“ディスク”とは自己の記憶不良を検出することのできる任意の不揮発性ランダムアクセス及び再書き込み可能な大容量記憶装置を指す。ディスクには回転式磁気ディスク及び光ディスクの両方が含まれ、また不揮発性の電子記憶素子（ＰＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ等）が含まれる。“ディスクアレイ”という用語は、ディスク、ディスクを１つあるいはそれ以上のホストコンピュータに接続するのに必要なハードウエア、及び物理的ディスクの動作の制御とこれらのディスクをホスト動作環境に１つあるいはそれ以上の仮想ディスクとして提供するのに用いられる管理ソフトウエアの集合を指す。“仮想ディスク”とは管理ソフトウエアによってディスクアレイ内に実現される抽象的なエンティティである。
【００１１】
“ＲＡＩＤ”（独立したディスクの冗長アレイ）とは、物理的記憶容量の一部が記憶容量の他の部分に記憶されるユーザデータに関する冗長情報の記憶に用いられるディスクアレイを意味する。この冗長情報によって、かかるアレイの１つに属するディスクあるいはそれに対するアクセスパスの故障のさいにユーザデータの再生成を行なうことができる。ＲＡＩＤシステムの詳細については、米国ミネソタ州、Lino LakesのRAID Advisory Board から１９９３年６月９日に発行された“The RAID Book: A Source Book for RAID Technology”を参照されたい。
【００１２】
ディスクアレイコントローラ１４は小型コンピュータシステムインタフェース（ＳＣＳＩ）等の１つあるいはそれ以上のインタフェースバス１３を介してディスクアレイ１１に接続される。ＲＡＩＤ管理システム１６はインタフェースプロトコル１５を介してディスクアレイコントローラ１４と連動する。データ記憶システム１０はまたＩ／Ｏインタフェースバス１７を介してホストコンピュータ（図示せず）に接続されている。ＲＡＩＤ管理システム１６は別個の構成要素として実施することもでき、またディスクアレイコントローラ１４あるいはホストコンピュータの内部に構成してディスク記憶と信頼性レベルの制御及びさまざまな信頼性記憶レベル間でのデータ転送を行なうためのデータ管理手段を提供することもできる。かかる信頼性記憶レベルは好適には上述したミラー冗長レベルやパリティ冗長レベルであるが、全く冗長を有しない信頼性記憶レベルを含めることもできる。
【００１３】
ディスクアレイコントローラ１４は好適にはディスクアレイコントローラＡ  １４ａとディスクアレイコントローラＢ  １４ｂとからなるデュアルコントローラとして構成される。デュアルコントローラ１４ａ、１４ｂは一方のコントローラが動作不能になった場合にも連続的なバックアップと冗長を提供することによって信頼性を向上させるものである。しかし、本発明は単一のコントローラを用いて、あるいは他のアーキテクチャを用いて実施することもできる。
【００１４】
階層ディスクアレイ１１は物理的記憶スペースと１つあるいはそれ以上の仮想記憶スペースを含む異なる記憶スペースということができる。これらの異なる記憶態様はマッピング技術を用いて関係付けられる。例えば、ディスクアレイの物理的記憶スペースはさまざまなデータ信頼性レベルに応じた記憶領域を形成する仮想記憶スペースにマッピングすることができる。仮想記憶スペース内の領域のあるものをミラーすなわちＲＡＩＤレベル１等の第１の信頼性記憶レベルに割り当て、他の領域をパリティすなわちＲＡＩＤレベル５等の第２の信頼性記憶レベルに割り当てることができる。以下に、各種のマッピング技術及びＲＡＩＤレベルに関係する仮想スペースについてより詳細に説明する。
【００１５】
データ記憶システム１０は異なる記憶スペースを互いにマッピングするのに用いられる仮想マッピング情報の持続的な記憶を行なうメモリマップストア２１を有する。このメモリマップストアはディスクアレイの外部にあり、好適にはディスクアレイコントローラ１４内に設けられる。このメモリマッピング情報は各種のマッピング構成に変更があったとき、コントローラあるいはＲＡＩＤ管理システムによって連続的あるいは周期的に更新することができる。
【００１６】
好適には、メモリマップストア２１は対応するコントローラ１４ａ、１４ｂ内に設けられた２つの不揮発性ＲＡＭ（ランダムアクセスメモリ）２１ａ、２１ｂとして実施することができる。不揮発性ＲＡＭ（ＮＶＲＡＭ）の一例としては、バッテリバックアップされたＲＡＭが挙げられる。バッテリバックアップされたＲＡＭは、データ記憶システム１０の電力損失に際して独立したバッテリ源からのエネルギを用いてある期間メモリ内のデータを維持するものである。好適な構造としては、自己リフレッシュ型のバッテリーバックアップＤＲＡＭ（ダイナミックＲＡＭ）がある。
【００１７】
デュアルＮＶＲＡＭ２１ａ、２１ｂはメモリマッピング情報の冗長記憶を可能にする。仮想マッピング情報はミラー冗長技術によって複製され、ＮＶＲＡＭ２１ａとＮＶＲＡＭ２１ｂとの両方に記憶される。このようにして、ＮＶＲＡＭ２１ａをオリジナルのマッピング情報の記憶のみに用い、ＮＶＲＡＭ２１ｂを冗長マッピング情報の記憶のみに用いることができる。別の構成では、ミラーメモリマップ記憶を複製されたデータを記憶できるだけのスペースを有する単一の不揮発性ＲＡＭを用いて構成することができる。
【００１８】
図１に示すように、ディスクアレイ１１は複数の記憶ディスク駆動装置１２を有する。これらの記憶ディスクのサイズは１から３ギガバイト程度である。記憶ディスクはＳＣＳＩバス１３とのインタフェースを提供する機械的ベイに単独で接続しまた切り離すことができる。一実施例では、このデータ記憶システムには１２の使用可能な機械的ベイが設けられる。４つのＳＣＳＩバスを用いてこれらのベイがディスクアレイコントローラ１４にインタフェースされる（すなわち３つの機械的ベイに対して１つのバスが用いられる）。これらのベイが完全に使用されると、このデータ記憶システムは例えば１２から３６ギガバイトの容量を持つことになる。ディスクアレイコントローラ１４はどのベイに接続されているかに関わりなく記憶ディスク１２を認識する。データ記憶システム１０はディスクアレイが動作中にディスクアレイ内の使用可能な機械的ベイに追加のディスクを接続することができるように設計されている、
【００１９】
ディスクアレイ１１内の記憶ディスク１２の概念としては、例えば複数のディスク２０のミラーグループ１８と複数のディスク２４のパリティグループ２２に構成されたものとして説明することができる。ミラーグループ１８は、第１の、すなわちミラー冗長レベルでデータを記憶するディスクアレイの第１の記憶場所あるいはＲＡＩＤ領域である。このミラー冗長レベルはまたＲＡＩＤレベル１と考えることもできる。ＲＡＩＤレベル１すなわちディスクのミラーリングは、データの各ビットが複製されデータ記憶システム内に記憶される１対１の保護を提供することによって最大限のデータの信頼性を与えるものである。ミラー冗長は図１の３対のディスク２０によって表わされる。オリジナルデータは第１のディスク群２６に記憶することができ、複製される冗長データはこれと対をなす第２のディスク群２８に記憶される。
【００２０】
図２はＲＡＩＤレベル１のデータ記憶をより詳細に示すものである。縦の列は個々のディスクを表わし、そのうちのディスク０、１、２、及び３を示している。この４つのディスクからなるディスクアレイ内の物理的記憶スペースは横の列で表わすような複数のストライプとして構成することができる。“ストライプ”は複数の記憶ディスクにわたって伸張し、多数の大きさの等しい記憶スペースセグメントからなり、１つのセグメントはアレイ内の各ディスクに関係付けられている。すなわち、１つのセグメントはあるストライプの１つのディスク上に位置する部分である。それぞれのストライプは複数の記憶ディスクに分散された所定量のデータを有する。あるストライプのセグメントの一部はオリジナルデータに用いられ、他のセグメントは冗長データに用いられる。
【００２１】
このミラー冗長（ＲＡＩＤ１レベル）の例では、ストライプ０のセグメント０のディスク０上に記憶されたデータは複製され、ストライプ０のセグメント０’のディスク１上に記憶される。同様に、ストライプ２のセグメント５のディスク２上に記憶されたデータはディスク３のストライプ２のセグメント５’に複製される。このようにして、それぞれのデータが複製され、ディスク上に記憶される。図２の冗長レイアウトは説明のために示したものである。冗長データは図示するように同じストライプに入れる必要はない。例えば、ストライプ１のセグメント２のディスク０に記憶されたデータを複製し、ストライプＳのセグメントＴ’のディスク３に入れることもできる。
【００２２】
図１に示すように、ディスク２４のパリティグループ２２はＲＡＩＤレベル５等の第２の冗長レベルでデータの記憶が行なわれる第２の記憶場所すなわちＲＡＩＤ領域を表わす。６つのディスクを示すこの例では、オリジナルデータが５つのディスク３０に記憶され、冗長“パリティ”データが第６のディスク３２に記憶される。
【００２３】
図３はパリティＲＡＩＤ領域のレイアウトをより詳細に示す。図２のミラーＲＡＩＤ領域のレイアウトと同様に、ディスク０、１、２、３の物理的記憶スペースは複数の大きさの等しいストライプに構成することができる。この例では、データはＲＡＩＤレベル５で記憶され、各セグメントに記憶された冗長データは文字Ｐで表わされる。冗長Ｐセグメントはそのストライプ内の他のセグメントのパリティが記憶される。例えば、ストライプ０において、ディスク３上の冗長Ｐセグメントにはディスク０、１、２のパリティが記憶される。それぞれのストライプのパリティは記号“＋○”で表わす排他的論理和関数等の関数によって計算される。最初の４つのストライプのパリティ（下付き文字の数字が対応するストライプを表わす）は次の通りである。
【００２４】
【表１】
0003753766.tif 000002
【００２５】
パリティ冗長はディスクの１つで利用不能になったデータの再生を可能にする。例えば、セグメント５内のデータが使用不能になると、その内容をセグメント３、４及びセグメントＰのパリティデータから確認することができる。パリティ記憶はミラー記憶より低コストであるが、信頼性と性能で劣っている。
【００２６】
図１のディスク構成は概念の説明のために示すものである。実際には、ディスクアレイ１１は単にミラー冗長及びパリティ冗長に従ってデータを記憶することのできる複数のディスク１２を有する。すべてのディスク１２によって提供される使用可能な記憶スペースの中で、その一部はミラー冗長に割り当てられ、他の部分はパリティ冗長に割り当てられる。好適には、ディスク１２は複数の大きさの等しい記憶領域（図４には３５で示す）からなる構成を有する。個々の領域は複数のセグメントを有する。これらの領域がまとめられて記憶スペースの１つの仮想ビュー内のＲＡＩＤ領域が形成される。さらに、記憶スペースの他の（ホストによって定義される）ビューは、ＲＡＩＤ領域とデータ冗長記憶技術がユーザあるいはホストに対して透明になるように、ユーザあるいはホストに与えられる。これらの特徴については、以下に図４を参照してさらに詳細に説明する。
【００２７】
データ記憶システム１０がミラー記憶法とパリティ記憶法との間のデータの“移動”を管理する。この２種類の冗長の管理はＲＡＩＤ管理システム１６（図１）によって調整される。ＲＡＩＤ管理システム１６はディスクアレイ内の２つの異なる種類のＲＡＩＤ領域を、ミラーＲＡＩＤ領域がパリティＲＡＩＤ領域に対してキャッシュと同様の機能を果たすメモリ階層として管理する。ＲＡＩＤ管理システム１６は所定の実行プロトコルに従ってミラーＲＡＩＤ領域とパリティＲＡＩＤ領域との間でのデータの移動、組織化、及びその他の管理を行なう。ミラーＲＡＩＤ領域とパリティＲＡＩＤ領域との間でデータを移動する処理は“ミグレーション”と呼ばれる。
【００２８】
データ記憶システム１０はミラーＲＡＩＤ領域に性能上重要度の高いデータを入れようとする。これはそれによってより高い性能と信頼性が得られるためである。ＲＡＩＤ管理システム１６の実行する実行プロトコルは２つの好適な移動方法のうちの１つを含む。“アクセス頻度”として知られる第１の移動方法では、階層ディスクアレイ上の最も頻繁にアクセスされるデータがミラーＲＡＩＤ領域１８に保持される。それよりアクセス頻度の低いデータはパリティＲＡＩＤ領域２２に保持される。“アクセス・リセンシ”として知られる第２の移動方法によれば、最後にアクセスされたデータがミラーＲＡＩＤ領域１８に保持され、それ以前にアクセスされたデータがパリティＲＡＩＤ領域２２に記憶される。他の実行プロトコルを用いることもできる。かかるプロトコルはアプリケーションとユーザのニーズに応じて定義されるのが理想である。
【００２９】
さらに、ＲＡＩＤ管理システム１６は物理的記憶容量とデータ記憶システムに記憶される現在のユーザデータの量という２つのパラメータの関数に従ってデータ記憶システムの記憶資源を自動的に“調整する”。まず、すべてのデータがミラーＲＡＩＤ領域に記憶される。これはこれによって最も高い性能と信頼性が得られるためである。データ記憶システムにさらにデータが追加されると、データはミラーＲＡＩＤ領域とパリティＲＡＩＤ領域との間で移動され、性能と信頼性の最適化がはかられる。データ量がデータ記憶システムの全容量に近づくにつれて、冗長による信頼性を提供しながらユーザの要求のすべてに応えようとしてパリティＲＡＩＤ領域に移動するデータ量が大きくなる。従って、本発明のデータ記憶システムは最大限のフレキシビリティと適応性を有する。ユーザは特定の記憶法を選択する必要がなく、このデータ記憶システムはユーザのいかなる要求にも応じることができる。
【００３０】
図４はデータ記憶システム１０の使用可能な記憶スペースのメモリマッピングをマッピングされた仮想記憶スペースの複数の層として示す。この図の垂直方向に細長い矩形はそれぞれ物理的記憶スペースのビューを表わす。この図では、物理的記憶スペース３４は２つの仮想記憶ビュー４０、５０で表わされる。物理的記憶スペース３４は０、１、２、３で示す（図１のディスク１２等の）４つのディスクによって表わされる。これらのディスクに対応した４つの矩形は物理的記憶スペースのビューを表わし、このビューではディスク１、２、３はほぼ等しい記憶容量を有し、ディスク０の記憶容量はそれより少し小さい。かかるディスクの記憶容量は１から３ギガバイト程度である。記憶スペース３４は領域Ａ０、Ａ１、Ａ２その他に区分されている。個々の領域は例えば領域Ａ０のストライプ０−Ｑのような多数のストライプを有する。個々の領域は多数の領域３５を含む。領域３５は好適には各記憶ディスク上の均一な大きさの所定数のセグメントからなり、従って、ディスクアレイ全体にわたってかかる領域の大きさは等しくなっている。１つの領域３５の大きさは例えば１メガバイトである。
【００３１】
ディスクの記憶スペースは物理的記憶スペース３４の第１の中間ＲＡＩＤレベル仮想ビュー４０にマッピングされる。この第１の仮想ビューは概念的には連続的にアドレス指定できる記憶スペースを表わす第２のアプリケーションビューにマッピングすることのできるＲＡＩＤ領域の集合である。この記憶スペースの物理的構成とＲＡＩＤビューはアプリケーションビューからは隠されている。
【００３２】
ＲＡＩＤ領域記憶スペース４０はミラー記憶スペースとパリティ記憶スペースを同定する記憶領域のビューである。例えば、ＲＡＩＤ領域４２Ｍは個の割り当てブロック４３のミラーＲＡＩＤ領域を表わし、ＲＡＩＤ領域４４はＮ個の割り当てブロック４５のパリティＲＡＩＤ領域を表わす。割り当てブロック４３及び４５は好適には同じ大きさであり、例えば６４キロビットである。これらのＲＡＩＤ領域は物理的記憶スペース３４上の対応する物理領域Ａ０、Ａ１、Ａ２その他に関係する。一例を挙げれば、ＲＡＩＤ仮想ビューにおける１６の６４Ｋ割り当てブロック４３または４５は１つの１Ｍの領域３５にマッピングすることができる。
【００３３】
ミラーＲＡＩＤ領域及びパリティＲＡＩＤ領域はディスクアレイの記憶スペース３４全体を消費する場合もあり、また消費しない場合もある。従って、アプリケーションによっては、特定のＲＡＩＤ領域に対応しない未使用かつ未指定の記憶スペースがある場合がある。しかし、かかる記憶スペースもミラーＲＡＩＤ領域あるいはパリティＲＡＩＤ領域に変換することができる。また、ＲＡＩＤ領域はディスクアレイの連続する領域にマッピングされ、ＲＡＩＤ領域に対応する各領域は各記憶ディスクの同じ物理アドレスに位置することに注意しなければならない。あるいはＲＡＩＤ領域はディスクアレイの不連続な領域にマッピングすることもできる。
【００３４】
ＲＡＩＤ領域内の使用可能な記憶スペースが第２のフロントエンドのアプリケーションレベル仮想ビュー５０にマッピングされる。ビュー５０はユーザあるいはホストアプリケーションプログラムによって定義され、提示される記憶領域のビューである。ユーザあるいはホストアプリケーションプログラムから見たとき、アプリケーションレベル仮想ビュー５０は記憶ディスク１２上の使用可能な記憶スペースを示す１つの大きな記憶容量を表わす。仮想記憶スペース５０は、０、１、２、…、Ｊ−１、Ｊ、Ｊ＋１、…、Ｌ−１、Ｌ、Ｌ＋１、…、等で示す等しい大きさの記憶仮想ブロック５２及び５３の直線的集合のビューを与える。仮想ブロック５２及び５３は好適にはＲＡＩＤ領域４０の割り当てブロックと同サイズであり、例えば６４キロバイトである。仮想ブロック記憶スペース５０はＲＡＩＤ領域４０によって与えられるビューの割り当てブロックへの参照すなわちポインタ（矢印５４で示す）のテーブルによって表わされる。アプリケーション仮想ビュー５０の仮想ブロック５２及び５３は従ってこの仮想ブロックテーブルに保持されるポインタによってＲＡＩＤ仮想ビュー４０における割り当てブロック４３及び４５と関係付けられる。この仮想ブロックテーブルから参照可能なＲＡＩＤ領域には少なくともミラーＲＡＩＤ領域とパリティＲＡＩＤ領域の２種類がある。
【００３５】
ＲＡＩＤ管理システム１６は物理的記憶スペース上のＲＡＩＤ領域の構成を動的に変更することができる。それぞれの種類のＲＡＩＤ領域数はシステムに記憶されるユーザデータの量と物理的ディスク記憶スペースのサイズに応じて増減することができる。その結果、ＲＡＩＤレベル仮想ビュー４０内のＲＡＩＤ領域のディスクへのマッピング及びフロントエンド仮想ビュー５０のＲＡＩＤビュー４０へのマッピングは一般インタフェースは変化状態にある。ＮＶＲＡＭ２１Ａ及び２１Ｂ（図１）のメモリマップ記憶は、ＲＡＩＤ管理システム１６によるディスクへのＲＡＩＤ領域のマッピングに用いられる現行のマッピング情報及び２つの仮想ビューの間のマッピングに用いられる情報を保持する。ＲＡＩＤ管理システムがＲＡＩＤレベルのマッピングを動的に変更するとき、このシステムは同時にメモリマップ記憶内のマッピング情報をかかる変更を反映するように更新する。
【００３６】
メモリシステム１０の移動動作を図１及び図４を参照して説明する。
【００３７】
説明の便宜上、アプリケーションレベル仮想記憶スペース５０の仮想ブロック５３は物理的記憶スペース３４の領域Ａ１に記憶されたパリティＲＡＩＤ領域４４内の対応する割り当てブロック４５を参照するものとする。かかる仮想ブロック５３を“パリティ仮想ブロック”と呼び、対応する割り当てブロック４５を“パリティ割り当てブロック”と呼ぶ。同様に、仮想ブロック５２は物理的記憶スペース３４の領域Ａ０に記憶されたミラーＲＡＩＤ領域４２内の割り当てブロック４３を参照する。かかる仮想ブロック５２を“ミラー仮想ブロック”と呼び、対応する割り当てブロック４３を“ミラー割り当てブロック”と呼ぶ。
【００３８】
一般に、あるＲＡＩＤ領域から他のＲＡＩＤ領域にデータを移動するには、第１のＲＡＩＤレベルタイプ（例えばミラーすなわちレベル１）の割り当てブロックに対応する仮想ブロックが選択される。未使用の割り当てブロックが見つからない場合、未使用ブロックが作成される。次に、それ以前にこの選択された仮想ブロックに関係付けられていた割り当てブロックからこの未使用の割り当てブロックにデータが転送され、これによってデータの冗長レベルが変化する。例えば、ミラー冗長で記憶されていたデータが今度はパリティ冗長で記憶される。あるいはその逆が起こる。最終ステップとして、アプリケーションレベル仮想記憶スペース５０のＲＡＩＤレベル仮想記憶スペース４０へのマッピング５４がこのデータの移動を反映するように修正及び更新される。その結果、第１のＲＡＩＤレベルタイプの割り当てブロックに対応していた選択された仮想ブロックは、更新されたポインタを介して、移動されたデータを有する第２のＲＡＩＤレベルタイプの割り当てブロックを参照する。このトランザクション中に発生するいかなるマッピングの変更もメモリマップストア２１内で更新される。
【００３９】
本発明の方法によるミラー記憶領域とパリティ記憶領域の間でのデータの移動についてさらに詳しく説明する。パリティ記憶領域からミラー記憶領域へのデータの移動には次のシーケンスが用いられる。
１．ＲＡＩＤ管理システムがミラーＲＡＩＤ領域４２内の未使用のミラー割り当てブロック４３を見つける。
２．未使用ブロックが見つからない場合、ＲＡＩＤ管理システムはミラー割り当てブロックを作成する（後に説明する）。
３．ＲＡＩＤ管理システムは移動すべき仮想ブロックへの記憶要求を一時停止させる。
４．ＲＡＩＤ管理システムはこの仮想ブロックへの実行中のすべてのデータ記憶要求が完了するまで待つ。
５．仮想ブロック５３に対応するパリティ割り当てブロック４５からのデータが一時記憶バッファに読み込まれる。
６．次に、このデータがステップ２で選択されたミラー割り当てブロック４３に書き込まれる。
７．仮想ブロックテーブルがミラー割り当てブロック４３内の新しいデータの位置を指すように修正される。
８．一時停止されていた記憶要求が再開される。
以上の手順によって、アプリケーションレベル仮想ビュー５０内の仮想ブロック５３がパリティ記憶領域からミラー記憶領域に移動する。中間仮想ビュー４０についていえば、データはパリティＲＡＩＤ領域４４内のパリティ割り当てブロック４５からミラーＲＡＩＤ領域４２内のミラー割り当てブロック４３に移動している。物理的記憶スペースにおいては、データは領域Ａ１から領域Ａ０に移動している。
【００４０】
未使用のミラー割り当てブロックが見つからない場合（上述のステップ１）、ＲＡＩＤ管理システムは次の３つの技術を実行する。まず、ＲＡＩＤ管理システムは移動の進行を保証するのに必要な未使用のＲＡＩＤレベル記憶領域のシステム閾値を越えることなくミラーＲＡＩＤ領域に変換することのできる未使用の（従って未指定の）ＲＡＩＤ領域を見つけようとする。これが見つからず、システムが指定された以上の未使用ＲＡＩＤレベル記憶領域を有する場合、システムはパリティ記憶領域内のデータを移動して未使用のパリティ割り当てブロックを未使用ＲＡＩＤ領域に集める。この移動によって、上述したようにミラーＲＡＩＤ領域に変換することのできる未使用のＲＡＩＤ領域が得られる場合、システムはこれをミラーＲＡＩＤ領域に変換する。得られない場合、システムはミラー記憶領域からパリティ記憶領域にデータを移動し、ミラー記憶領域をパックし、システムが未使用のミラー割り当てブロックが見つかるだけあるいは未使用のＲＡＩＤ領域をミラーＲＡＩＤ領域に変換できるだけ未使用のＲＡＩＤレベル記憶領域を増大させるまで、未使用のＲＡＩＤレベル記憶領域を変換する。ミラー割り当てブロックはパリティ割り当てブロックより大きな物理的記憶スペースを占めるため、この最後の技術は未使用のＲＡＩＤレベル記憶領域の量を増大させる。
【００４１】
未使用のミラー割り当てブロックを発見及び確立するのに用いられる作成／変換プロトコルには、ＲＡＩＤ管理システムがユーザデータの量と物理的記憶スペースのサイズに応じてパリティ領域とミラー領域の間のメモリの割り当てを選択的に調整することができるという利点がある。データの使用状態と記憶容量が変化するにつれて、ＲＡＩＤ管理システムは上記の３つの技術のうちの１つ以上を用いてミラー記憶領域に保持されるデータの量を最適化する。
【００４２】
ＲＡＩＤ管理システムは、記憶要求が空き時間中に未使用のＲＡＩＤ領域を作成することによって未使用のミラー割り当てブロックを得るためのスペース作成シーケンスの間待機しなければならないという状況を避けようとする。しかし、状況によっては、記憶要求はスペース作成シーケンスの実行中停止される場合がある。ＲＡＩＤ管理システムは仮想ブロック記憶スペースをＲＡＩＤビューより小さくなるように構成する。これによって、移動その他の目的のために少なくとも１つのＲＡＩＤ領域に等しい空きスペースが別途設定される。このようにして、この一連の技術によって常に未使用のミラー割り当てブロックを得ることができる。
【００４３】
ミラー記憶領域からパリティ記憶領域へのデータの移動には次のシーケンスが用いられる。
１．ＲＡＩＤ管理システムは５２から仮想ブロックを選択して、アクセスリセンシあるいはアクセス頻度等の移動法に従って、ミラー記憶領域からパリティ記憶領域への移動を行なう。
２．ＲＡＩＤ管理システムはパリティＲＡＩＤ領域４４１の未使用のパリティ割り当てブロック４５を見つける。
３．かかるブロックが見つからない場合、上記の作成技術を用いて移動用に確保されたスペースがパリティＲＡＩＤ領域に変換される。
４．この移動すべき仮想ブロックへの新たな記憶要求が一時停止される。
５．ＲＡＩＤ管理システムはこの仮想ブロックへの実行中の記憶要求がすべて完了されるまで待つ。
６．データが仮想ブロック５２に対応するミラー割り当てブロック４３から一時メモリバッファに読み込まれる。
７．このデータが選択されたパリティ割り当てブロック４５に書き込まれる。
８．仮想ブロックテーブルがパリティ割り当てブロック４５内のデータの位置を指すように修正される。
９．この仮想ブロックへのデータ要求が再開される。
上記の２つのシーケンスは、本発明のメモリシステムによる２つの異なる冗長レベル間でのデータの移動の例を示すものである。
【００４４】
データの移動を行なうための、このデータ記憶システムの目的の１つは移動のための充分な量の記憶スペースが確保されるようにすることである。さらに、他の目的はミラー記憶領域に保持されるユーザデータをできるだけ多くすることである。これは、ミラー記憶領域は最も高い性能と信頼性を提供するためである。しかし、ディスクアレイ内の物理的記憶スペースの量は限られている。データがディスクアレイに記憶されるにつれて、ミラー記憶領域内の仮想ブロックは物理的容量を消費し始める。“物理的容量”という用語はユーザデータに使用できる記憶容量とその冗長情報を指す。
【００４５】
物理的容量から指定された記憶スペースを除いたものの半分を消費すると、ミラー記憶領域はディスクアレイの機能を妨害する。このとき、使用仮想ブロックはすべてミラー記憶領域に保持されている。ミラー記憶が物理的記憶スペースの大部分を消費して未使用のＲＡＩＤスペースの量がＲＡＩＤ領域の量より小さくなると、このデータ記憶システムはミラーＲＡＩＤ領域からパリティＲＡＩＤ領域への仮想ブロックの移動を保証できなくなる。前に未使用であった仮想ブロックを用いる次のクライアントデータ要求は、未使用スペースの量がＲＡＩＤ領域の量より小さく、ミラー記憶領域から仮想ブロックを移動するためのパリティ記憶領域に変換することもできないため実行されない。このような状況は避けなければならない。
【００４６】
従って、ＲＡＩＤ管理システムはデータの移動に充分な量の確保された記憶スペースを割り当てる。これは２つの技術を組み合わせて行なわれる。まず、ＲＡＩＤ管理システムは少なくとも１つのミラーＲＡＩＤ領域に等価な記憶スペース量を論理的に確保する。第２に、ＲＡＩＤ管理システムはこのデータ記憶システム内でミラー記憶に割り当てることのできるブロック数を制限する。ミラー記憶領域内の最大仮想ブロック数は記憶ディスクの物理的容量、記憶ディスク数、及びユーザからの各記憶要求の発生時における割り当てられた容量に基づいて動的に計算される。
【００４７】
図５はデータの移動のための記憶スペースを確保するための本発明の初期設定方法のフローチャートである。各ステップをさらに図１及び図４を参照して説明する。
【００４８】
最初の２つのステップ１００及び１０２はこの階層データ記憶システムの２つの層からなる仮想記憶スペース環境を確立する。ステップ１００において、ＲＡＩＤ管理システム１６はディスクアレイ１２によって提供される物理的記憶スペースをＲＡＩＤレベル仮想記憶スペース４０にマッピングする。このＲＡＩＤレベル仮想記憶スペースは物理的記憶スペースをミラーＲＡＩＤ領域及びパリティＲＡＩＤ領域として与える。ミラーＲＡＩＤ領域にはミラー冗長すなわちＲＡＩＤレベル１でデータの記憶を行なう複数のミラー割り当てブロックが含まれる。パリティＲＡＩＤ領域にはパリティ非冗長すなわちＲＡＩＤレベル５でデータの記憶を行なう複数のパリティ割り当てブロックが含まれる。ステップ１０２において、ＲＡＩＤ管理システムはＲＡＩＤレベル仮想記憶スペース４０を物理的記憶スペースを複数の仮想ブロックとして与えるアプリケーションレベル仮想記憶スペース５０にマッピングする。これらの仮想ブロックは仮想ブロックテーブル内のポインタによってＲＡＩＤレベル仮想記憶スペースのＲＡＩＤ領域内の対応する割り当てブロックに関係付けられる。図４を参照して上述したように、これらの仮想ブロックは必要に応じてミラー記憶領域とパリティ記憶領域の間で移動することができる。
【００４９】
初期マッピング中、ＲＡＩＤ管理システムは意図的に物理的記憶スペースの全容量未満を第１及び第２の仮想記憶スペースにマッピングする。従って、第１及び第２の仮想記憶スペースの容量はそれぞれ総物理的容量より小さくなる。これによって、データの記憶用にユーザに与えられないある量のスペースを論理的に確保することができる（ステップ１０４）。好適には、少なくとも１つのＲＡＩＤ領域に等しい量のスペースが確保される。このスペースは通常記憶ディスクに不連続に分散される。移動のために必要とされるとき、このスペースが集められ未使用ＲＡＩＤ領域が形成される。
【００５０】
ステップ１０６において、ディスクアレイ内の物理的記憶スペースの物理的容量（PhyCap）が確認される。これはある特定のディスクアレイ構成から確保されたスペースを除いた固定値である。例えば、ディスクアレイが１２の１ギガバイトの記憶ディスクを有する場合、物理的容量は基本的には１２ギガバイト（から１ＲＡＩＤ領域の量を引いたもの）である。このデータ記憶システムはこの値を、各記憶ディスクの存在とそのサイズを検出することによって内部的に得る。物理的構成に変更がある場合、例えば記憶ディスクがシステムから抜き差しされる場合、このデータ記憶システムは物理的容量（PhyCap）の新しい値を得る。
【００５１】
重要なデータをキャッシングすることによって高い性能を提供するためには少なくともある程度のミラー記憶領域を常に維持することが望ましい。ＲＡＩＤ管理システムは任意のパーセンテージのユーザデータがミラー記憶領域に維持されるように設定する（ステップ１０８）。例えば、１０％までのユーザデータがミラー記憶領域に維持される。ミラーＲＡＩＤ領域への記憶はミラー冗長はパリティ冗長より高い性能と信頼性を得ることができる点で有益である。
【００５２】
このシステム初期設定の間、アプリケーションレベル仮想記憶スペース５０内の仮想ブロックはすべて割り当てられてない。割り当て容量はゼロに設定される。“割り当て容量”という用語はアプリケーションレベル仮想記憶スペース５０内の仮想ブロックに記憶されるユーザデータの量を意味する。ステップ１１０において、ＲＡＩＤ管理システムは、最小限のパーセンテージのユーザデータがミラー記憶領域に維持されることを条件にユーザの利用可能な仮想ブロックの最大許容数を計算する。
【００５３】
図６にはミラー記憶領域が物理的記憶容量を消費しないようにするための方法のフローチャートを示す。ステップ１１２において、仮想データブロックが作成あるいは移動される。まず、データが始めにシステムに記憶されるとき、アプリケーションレベル仮想記憶スペース５０内の仮想ブロックがミラーＲＡＩＤ領域内に割り当てられる。すなわち、仮想ブロックは仮想ブロックテーブルのポインタによってミラー割り当てブロックに関係付けられる。仮想ブロックは、ユーザによる要求に基づいて必要に応じて割り当てられる。割り当て容量がディスクアレイの総物理的容量の半分を越えるまでは、すべてのデータがミラーＲＡＩＤ領域に対応する仮想ブロックに記憶されることが好適である。
【００５４】
ディスクアレイ１１へのデータの記憶が続く間、ＲＡＩＤ管理システム１６は現在ユーザデータを記憶している仮想ブロックのカウントを取る。容量あるいはサイズとして簡単に与えることのできるこのカウント値は、任意の時間における割り当て容量（AllCap）を表わす（ステップ１１４）。判断ブロック１１６において、割り当て容量（AllCap）がディスクアレイの物理的容量（PhyCap）と比較される。割り当て容量が物理的容量の半分以下である場合（すなわち、ステップ１１６からＮＯに分岐する場合）、データはミラー記憶領域の仮想ブロックにのみ記憶され続ける（ステップ１１８）。
【００５５】
割り当て容量が物理的容量以上である場合（すなわち、ステップ１１６からＹＥＳに分岐する場合）、ＲＡＩＤ管理システムはこの状態におけるミラー記憶領域内の仮想ブロックの最大許容数を計算する（ステップ１２０）。この計算は割り当て容量（AllCap）、ディスクアレイの物理的容量（PhyCap）、及びディスクアレイ内のディスク数（ｎ）の関数である。この最大値は条件の変化につれて動的に計算される。すなわち、１つの変数（割り当て容量）は通常連続的な変化の状態にあり、従って、ミラー記憶領域内の仮想ブロックの最大許容数はこの変数が変化するのにつれて再計算される。
【００５６】
この計算にはディスクアレイが均一であるか非均一であるかに応じて多少異なる関数が用いられる。“均一な”ディスクアレイは等しい大きさの記憶ディスクからなる。“非均一な”ディスクアレイは大きさの異なる記憶ディスクからなる。均一なディスクアレイについては、ＲＡＩＤ管理システムは次の（１）式を用いてミラー記憶領域内の仮想ブロックの最大許容数（ｍａｘ）を計算する。
【００５７】
【数１】
0003753766.tif 000003
【００５８】
ｎ：  アレイ内の記憶ディスク数
AllCap：  割り当て容量
PhyCap：  ディスクアレイの物理的容量
【００５９】
非均一なディスクアレイについては、ＲＡＩＤ管理システムはまずこのディスクアレイを分割して均一的なディスクアレイ表現にする。例えば、４つの１ギガバイト記憶ディスクと２つの３ギガバイト記憶ディスクからなる非均一なディスクアレイを想定する。この場合、ＲＡＩＤ管理システムはこの構成を２つの均一なディスクアレイ表現に分割する。すなわち、一方の表現は６つのディスクすべての１ギガバイトの記憶領域からなり、他の表現は２つの３ギガバイトディスク上の２ギガバイトの残る記憶領域からなる。次に、ＲＡＩＤ管理システムは次の（２）式を用いて非均一ディスクアレイについてミラー記憶領域内の仮想ブロックの最大数（ｍａｘ）を計算する。
【００６０】
【数２】
0003753766.tif 000004
【００６１】
ｉ：  非均一ディスクアレイから作成可能な均一ディスクアレイ表現数
【００６２】
ＲＡＩＤ管理システムは仮想ブロックが最大許容数を越えてミラー記憶領域に割り当てられることのないように制限する。ステップ１２２において、仮想ブロックの新たな割り当てすなわちパリティ記憶領域からミラー記憶領域への仮想ブロックの移動がミラー記憶領域内の仮想ブロックの最大許容数を越えていないかどうかが判定される。越えていなければ（すなわち、ステップ１２２からＮＯに分岐する場合）、データをミラー記憶領域に対応する仮想ブロックに記憶することができる。一方、最大許容数を越える場合（すなわち、ステップ１２２からＹＥＳに分岐する場合）、ＲＡＩＤ管理システムは仮想ブロックをミラー記憶領域からパリティ記憶領域に移動する。すなわち、データはミラー割り当てブロックからＲＡＩＤレベル仮想記憶スペース４０のパリティ割り当てブロックに移動され、仮想ブロックテーブル内のポインタが、アプリケーションレベル仮想記憶スペース５０内の仮想ブロックがミラー記憶領域からパリティ記憶領域に移動するように更新される。
【００６３】
ＲＡＩＤ管理システムはミラー記憶領域内の仮想ブロック数を制限することによって確保されるスペースを用いてミラー割り当てブロックからパリティ割り当てブロックにデータを移動させることができる。さらに、仮想ブロックの最大数を動的に計算することによって、ＲＡＩＤ管理システムはミラー記憶領域内の仮想ブロック数を計算された最大値と予め設定された最小値の間に維持する。
【００６４】
ミラー記憶領域内の仮想ブロック数を制限することによって、このシステムは物理的記憶スペースがかかる仮想ブロックによって完全に消費されることを防止する。これによって、未使用の物理的容量が論理的に確保された量より少なくなることが防止され、その結果、パリティＲＡＩＤ領域とミラーＲＡＩＤ領域との間のデータの移動を常に行なうことができる。
【００６５】
ディスクアレイにさらにデータが記憶されるのにつれて、割り当て容量は物理的容量に近づく。大量のデータを処理に対するユーザの要求に応えるために、ＲＡＩＤ管理システムはミラーＲＡＩＤ領域からパリティＲＡＩＤ領域へのデータの移動を継続する。その結果、パリティＲＡＩＤ領域に記憶されたデータに対するミラーＲＡＩＤ領域に記憶されたデータの比率が徐々に小さくなる。
【００６６】
図７及び図８は本発明の方法の実際の効果を示す。図７は３つの大きさの異なる物理的容量（３、６及び１２ギガバイト）を有する均一なディスクアレイの場合を示す。各容量における反転“Ｖ”字状の線はディスクアレイに記憶されるデータの量の増大との関係における先の（１）式によって計算されたミラー記憶領域内の仮想ブロックの最大許容数を表わす。それぞれの場合において、ミラー記憶領域内の仮想ブロックの最大許容数はゼロから物理的記憶容量の半分まで増大する。データはまずミラー記憶領域にのみ記憶される。ユーザデータの量が（分数量０．５で示す）この半分の閾値以上になると、ミラー記憶領域内の仮想ブロックの最大許容数は減少し始める。ディスクアレイ上のデータ記憶量が全容量に近づくにつれてミラー記憶領域に割り当てられる仮想ブロック数は少なくなっていく。ミラー記憶領域内の仮想ブロック数が少なくなるにつれて、データの記憶に用いられるパリティ記憶領域内の仮想ブロック数が多くなる。図８はこれをより明確に示している。
【００６７】
図８は３つの大きさの異なる物理的容量（６、１２及び１８ギガバイト）を有する非均一ディスクアレイの場合を示す。このグラフの上部の説明表に示すようにこれら３つのサイズの場合に対応する３対の曲線が描かれている。右下がりの曲線はミラー記憶領域内の仮想ブロックを用いて記憶される量を示し、右上がりの曲線はパリティ記憶領域内の仮想ブロックを用いて記憶される量を示す。Ｘ軸の原点座標は０．５であり、このシステムがこの点ですでに半分満たされていることを示している。この半分の容量を越えてさらにディスクアレイにデータが記憶されるにつれて、ミラー記憶領域内の仮想ブロックの最大許容数は漸減してゼロに達する（ただし、ミラー記憶領域内に少なくともある程度の小さなパーセンテージの仮想ブロックを残しておくことが望ましい）。同時に、パリティ記憶領域内の仮想ブロック数は逆に全容量に向かって増大していく。
【００６８】
これらのグラフは本発明の好適な記憶及び移動方法を簡単にまとめたものである。データはまずすべてミラー記憶領域に記憶される。容量の半分に達したとき、この階層データ記憶システムはデータ移動を用いてデータをミラー記憶領域とパリティ記憶領域の両方に記憶し始める。データ記憶システムへのデータの記憶が進行するのにつれて、増大するデータ量を受け入れるためにパリティ記憶領域に移動するデータが増え、ミラー記憶は減少していく。これらの各段階において、ミラー記憶領域内の仮想ブロックの最大許容数が、ミラー記憶領域内に存在する仮想ブロック数が常にこの値より小さく制限され、データ移動のための充分なスペースがかくほされるように計算される。
【００６９】
以下に、この階層データ記憶システムの動作時における本発明の方法の典型的なアプリケーションを示す。それぞれのアプリケーションにおいて、ＲＡＩＤ管理システムは移動可能性の分析のためにミラー記憶領域内の仮想ブロックの最大許容数を計算する。各アプリケーションは物理的記憶スペースの半分以上が使用されることを想定している。
【００７０】
［アプリケーション１］
ユーザが現在パリティ記憶領域に関係付けられた仮想ブロックへのアクセスを要求する。この要求によってこの仮想ブロックはパリティ記憶領域からミラー記憶領域に移動する。ミラー記憶領域内の仮想ブロックの最大許容数が計算される。ミラー記憶領域内に存在する仮想ブロックの実数がこの最大許容数と等しい場合、ミラー記憶領域内の最も早くアクセスされた（あるいは最もアクセス頻度の低い）仮想ブロックがパリティ記憶領域に移動される。これによってミラー記憶領域内の仮想ブロック数が最大許容数より小さくなる。その後、要求された仮想ブロックにアクセスすることができる。
【００７１】
［アプリケーション２］
ユーザが未使用であった仮想ブロックへのデータの書き込みを要求する。ＲＡＩＤ管理システムは再びミラー記憶領域内の仮想ブロックの最大許容数を計算し、その結果をミラー記憶領域内に存在する仮想ブロックの実数と比較する。この実数が最大許容数を越えている場合、仮想ブロックがミラー記憶領域からパリティ記憶領域に移動され、ミラー記憶領域に空きスペースができ、新しいデータを受け入れることができる。
【００７２】
［アプリケーション３］
ユーザがシステムに記憶ディスクを追加して物理的容量を増大させる。新しい記憶ディスクからの物理的記憶スペースが組み込まれると、ＲＡＩＤ管理システムはこの拡大した容量に基づいて新しい最大数を計算する。データはできるだけミラーＲＡＩＤ領域に記憶することが望ましいため、ミラー記憶領域に存在する仮想ブロックの実数が最大許容数に達するまで、使用時期の遅い（あるいはアクセス頻度のより高い）仮想ブロックがパリティ記憶領域からミラー記憶領域に移動される。
【００７３】
本発明の構造上及び方法上の特徴についてかなり具体的に説明したが、本発明はここに図示・説明した具体的特徴には限定されない。これは、ここに開示した手段は本発明を実施するための好適な形態を示すのみであるためである。従って、本発明は特許請求の範囲内に該当するあらゆる形態あるいは変更態様を含むものである。
【００７４】
以下、本発明の実施の形態を列挙する。
【００７５】
（１）  データ記憶システム（１０）が物理的記憶スペース（３４）を形成する複数の記憶ディスク（１２）のディスクアレイ（１１）から成り、前記物理的記憶スペースがミラーＲＡＩＤ領域及びパリティＲＡＩＤ領域を有するＲＡＩＤレベル仮想記憶スペース（４０）にマッピングされ、前記ＲＡＩＤレベル仮想記憶スペースが仮想ブロックテーブル内のポインタによって前記ミラーＲＡＩＤ領域及びパリティＲＡＩＤ領域に関係付けられた複数の仮想ブロックを有するアプリケーションレベル仮想記憶スペース（５０）にマッピングされる、階層データ記憶システム内の記憶スペース確保方法であって、
（ａ）前記ディスクアレイ（１１）内にｎ個の記憶ディスク（１２）を設けるステップ、
（ｂ）ミラー冗長に従ってデータを記憶するために、前記アプリケーションレベル仮想記憶スペース（５０）内の仮想ブロックをミラーＲＡＩＤ領域に割り当てるステップ、
（ｃ）前記仮想ブロックにデータを記憶するステップ、
（ｄ）前記ディスクアレイ（１１）内の前記物理的記憶スペース（３４）の物理的容量を提供するステップ、
（ｅ）現在データの記憶に使用されている仮想ブロックの総数を表わす割り当て容量を決定するステップ、
（ｆ）前記ディスクアレイ内の前記物理的容量、前記許容容量及び記憶ディスク数の関数として、ミラーＲＡＩＤ領域内の仮想ブロックの最大許容数を計算するステップ、
を有する階層データ記憶システムの記憶スペース確保方法。
【００７６】
（２）  さらに、
パリティＲＡＩＤ領域とミラーＲＡＩＤ領域との間のデータ移動に対してスペース確保を保証するために、ミラーＲＡＩＤ領域内の仮想ブロックが計算されたミラーＲＡＩＤ領域内の仮想ブロックの最大許容数を越える割り当てを制限するステップを含む上記１に記載の方法。
【００７７】
（３）  さらに、
パリティ冗長に従ってデータを記憶するために、前記アプリケーションレベル仮想記憶スペース内の前記仮想ブロックをパリティＲＡＩＤ領域に割り当てるステップ、
ミラーＲＡＩＤ領域内の仮想ブロックの割り当てを制限することによって保証された確保スペースを用いてミラー記憶領域とパリティ記憶領域との間で仮想ブロックを移動するステップを含む上記２に記載の方法。
【００７８】
（４）  さらに、
最初に少なくとも１つのミラーＲＡＩＤ領域に等しいある量の物理的記憶スペースを確保するステップを上記１に記載の方法。
【００７９】
（５）  さらに、
ミラーＲＡＩＤ領域内の仮想ブロック数が前記最大許容数より小さい場合、ミラーＲＡＩＤ領域内の前記仮想ブロック内にのみデータを記憶するステップ、
ミラーＲＡＩＤ領域内の仮想ブロック数が前記最大許容数を越える場合、パリティ冗長に従ってデータを記憶するために前記アプリケーションレベル仮想記憶スペース内の仮想ブロックをパリティＲＡＩＤ領域に割り当てるステップ、及び仮想ブロック内のデータを前記ミラーＲＡＩＤ領域とパリティＲＡＩＤ領域との両方に記憶するステップを含む上記１に記載の方法。
【００８０】
（６）  さらに、
パリティ冗長に従ってデータを記憶するために、前記アプリケーションレベル仮想記憶スペース内の仮想ブロックをパリティＲＡＩＤ領域に割り当てるステップ、
仮想ブロック内のデータを前記ミラーＲＡＩＤ領域とパリティＲＡＩＤ領域との両方に記憶するステップ、
パリティＲＡＩＤ領域に記憶されたデータに対するミラーＲＡＩＤ領域に記憶されたデータの割合を低下させるために、パリティＲＡＩＤ領域に記憶されるデータに対するミラーＲＡＩＤ領域に記憶されるデータの比率を低下させる、前記ディスクアレイにさらにデータが記憶されて前記割り当て容量が前記物理的容量に近づくにつれて、仮想ブロックをミラーＲＡＩＤ領域からパリティＲＡＩＤ領域へ移動するステップを含む上記１に記載の方法。
【００８１】
（７）  さらに、
ミラーＲＡＩＤ領域内に仮想ブロックの最小数を維持するステップを含む上記６に記載の方法。
【００８２】
（８）  さらに、
前記割り当て容量を前記物理的容量と比較するステップ、
前記割り当て容量が前記物理的容量の半分以上であるときにのみステップ（ｆ）で前記最大許容数を計算するステップを含む上記１に記載の方法。
【００８３】
（９）  データ記憶システム（１０）が物理的記憶スペース（３４）を形成する複数の記憶ディスク（１２）のディスクアレイ（１１）から成る階層データ記憶システム内の記憶スペース確保方法であって、階層データ記憶システム内のスペース確保方法であって、
（ａ）前記ディスクアレイ内の前記物理的記憶スペース（３４）の物理的容量を提供するステップ。
（ｂ）前記物理的記憶スペース（３４）を複数のミラーＲＡＩＤ領域及びパリティＲＡＩＤ領域を有するＲＡＩＤレベル仮想記憶スペース（４０）にマッピングするステップ、
（ｃ）前記ＲＡＩＤレベル仮想記憶スペース（４０）を複数の仮想ブロックを有するアプリケーションレベル仮想記憶スペース（５０）にマッピングするステップ、
（ｄ）ミラー冗長に従ってデータを記憶するために、前記アプリケーションレベル仮想記憶スペース内の前記仮想ブロックをミラーＲＡＩＤ領域に割り当てるステップ、
（ｅ）前記仮想ブロックにデータを記憶するステップ、
（ｆ）現在データの記憶に使用されている仮想ブロックの総数を表わす割り当て容量を決定するステップ、
（ｇ）前記割り当て容量を前記物理的容量と比較するステップ、
（ｈ）前記割り当て容量が前記物理的容量の半分以上である場合、
（１）ミラーＲＡＩＤ領域内の仮想ブロックの最大許容数を、前記物理的容量及び前記割り当て容量の関数として計算するステップ、
（２）ミラーＲＡＩＤ領域内の仮想ブロックが前記計算されたミラーＲＡＩＤ領域内の仮想ブロックの最大許容数を越える割り当てを制限するステップ、
（３）パリティ冗長に従ってデータを記憶するために、前記アプリケーションレベル仮想記憶スペース内の仮想ブロックをパリティＲＡＩＤ領域内に割り当てるステップ、
（４）前記ミラーＲＡＩＤ領域とパリティＲＡＩＤ領域との両方にデータを記憶するステップ、
を実行すること、
を含む階層データ記憶システム内の記憶スペース確保方法。
【００８４】
（１０）  前記マッピングステップ（ｂ）、（ｃ）が、ユーザの使用に供されないある量のスペースを論理的に確保するために、前記物理的記憶スペースの容量より小さい容量を有するＲＡＩＤレベル仮想記憶スペースとアプリケーションレベル仮想記憶スペースとを生成する上記９に記載の方法。
【００８５】
（１１）  さらに、
ミラーＲＡＩＤ領域内に最小数の仮想ブロックを維持するステップを含む上記９に記載の方法。
【００８６】
（１２）  パリティＲＡＩＤ領域に記憶されるデータに対するミラーＲＡＩＤ領域に記憶されるデータの比率を低下させるために、前記ディスクアレイにさらにデータが記憶されて前記割り当て容量が前記物理的容量に近づくにつれて、仮想ブロックをミラーＲＡＩＤ領域からパリティＲＡＩＤ領域へ移動するステップを含む上記９に記載の方法。
【００８７】
（１３）  物理的記憶スペース（３４）を形成する多数の記憶ディスク（１２）を有するディスクアレイ（１１）、
前記ディスクとのデータ転送を調整するために、前記ディスクアレイ（１１）に接続されたディスクアレイコントローラ（１４）、
前記ディスクアレイコントローラ（１４）と連動して、複数のミラーＲＡＩＤ領域及びパリティＲＡＩＤ領域を有するＲＡＩＤレベル仮想記憶スペース（４０）を前記記憶ディスクの前記物理的記憶スペース（３４）にマッピングするＲＡＩＤ管理システム（１６）からなり、
前記ＲＡＩＤ管理システム（１６）が、ミラー冗長に従ってデータを記憶するためにミラーＲＡＩＤ領域内に仮想ブロックを割り当て、パリティ冗長に従ってデータを記憶するためにパリティＲＡＩＤ領域内に仮想ブロックを割り当て、前記仮想ブロックのカウントを取り、
前記ＲＡＩＤ管理システム（１６）が、前記ミラーＲＡＩＤ領域内の仮想ブロックの最大許容数を、前記物理的容量、前記仮想ブロックのカウント値に基づく前記割り当て容量、及び記憶ディスク数の関数として動的に計算するように構成された階層データ記憶システム。
【００８８】
（１４）  前記ディスクアレイ（１１）が均一であり、複数の等しい大きさの記憶ディスクからなり、
前記ＲＡＩＤ管理システム（１６）が、下式に従って前記ミラーＲＡＩＤ領域内の仮想ブロックの最大許容数（ｍａｘ）を動的に計算するように構成される上記１３に記載のシステム。
【００８９】
【数３】
0003753766.tif 000005
【００９０】
ｎ：  アレイ内の記憶ディスク数
AllCap：  割り当て容量
PhyCap：  ディスクアレイの物理的容量
【００９１】
（１５）  前記ディスクアレイ（１１）が非均一であり、さまざまな大きさの記憶ディスクからなり、
前記ＲＡＩＤ管理システム（１６）が下式に従って前記ミラーＲＡＩＤ領域内の仮想ブロックの最大許容数（ｍａｘ）を動的に計算するように構成される上記１３に記載のシステム。
【００９２】
【数４】
0003753766.tif 000006
【００９３】
ｎ：  アレイ内の記憶ディスク数
AllCap：  割り当て容量
PhyCap：  ディスクアレイの物理的容量
ｉ：  非均一ディスクアレイから作成可能な均一ディスクアレイ表現数
【００９４】
【発明の効果】
本発明によれば、第１にミラー記憶領域の割り当てを制限する簡単な方法を提供することができる。これによってシステムへの過剰なデータの記憶を発生させる最も重要な要因が除去される。第２に、このシステムは移動用に確保されるスペースの特定の位置あるいは構成を保証するネストされたトランザクションを支援するように設計する必要がない。第３に、このシステムは均一なあるいは非均一なディスクアレイに簡単に適合することによって、さまざまな記憶装置のサイズに対応する最大のフレキシビリティを提供するものである。第４に、このシステムは常にできるだけ多くのデータをミラー記憶領域に維持することによって性能と信頼性を最適化する。
【図面の簡単な説明】
【図１】本発明のディスクアレイ記憶システムのブロック図である。
【図２】複数の記憶ディスク上の記憶スペースの図であり、ＲＡＩＤレベル１のデータ記憶を示す。
【図３】複数の記憶ディスク上の記憶スペースの図であり、ＲＡＩＤレベル５のデータ記憶を示す。
【図４】物理的記憶スペースに２つの仮想記憶スペースがマッピングされる本発明のメモリマッピング構成を示す図である。
【図５】本発明によるデータの移動のための記憶スペースを確保するシステム初期設定法のフローチャートである。
【図６】ミラー記憶領域に記憶された仮想ブロックが許容最大数以下にとどまるようにする方法のフローチャートである。
【図７】ミラー記憶領域に記憶される仮想ブロックの許容最大数をデータの記憶に用いられる物理的容量との関係で示すグラフである。
【図８】ミラー記憶領域とパリティ記憶領域の両方に記憶される割り当て仮想ブロック数をデータの記憶に用いられる物理的容量との関係で示すグラフである。図８に図示する情報は異なるディスクアレイに基づくものであり、物理的容量の異なる３つの場合を示す。
【符号の説明】
１０：データ記憶システム
１１：階層ディスクアレイ
１２：記憶ディスク
１３：インタフェースバス
１４：ディスクアレイコントローラ１
１４ａ：ディスクアレイコントローラＡ
１４ｂ：ディスクアレイコントローラＢ
１５：インタフェースプロトコル
１６：ＲＡＩＤ管理システム
１７：Ｉ／Ｏインタフェースバス
１８：ミラーグループ
２０、２４、３０：ディスク
２１：メモリマップストア
２１ａ、２１ｂ：不揮発性ＲＡＭ
２２：パリティグループ
２６：第１のディスク群
２８：第２のディスク群
３２：第６のディスク
３４：物理的記憶スペース
３５：記憶領域
４０、５０：仮想記憶ビュー
４２、４４：ＲＡＩＤ領域
４３、４５：割り当てブロック
５２、５３：記憶仮想ブロック
５４：ポインタ
【図１】
0003753766.tif 000007
【図２】
0003753766.tif 000008
【図３】
0003753766.tif 000009
【図４】
0003753766.tif 000010
【図５】
0003753766.tif 000011
【図６】
0003753766.tif 000012
【図７】
0003753766.tif 000013
【図８】
0003753766.tif 000014