(57)【特許請求の範囲】
【請求項１】
全体の物理的な記憶スペース(34)を規定する選ばれた容量の複数の記憶ディスクからなるディスク・アレイ(11)を含む階層的なデータ記憶システム(10)におけるアプリケーション・レベル仮想記憶スペース(50)の過大割り当てを避ける方法であって、
パリティ冗長性に従ってデータを格納するパリティRAID領域、およびミラー冗長性に従ってデータを格納するミラーRAID領域を含む複数のRAID領域として前記物理記憶スペースを表現するRAIDレベル仮想記憶スペース(40)に前記物理記憶スペース(34)をマッピングするステップと、
前記RAIDレベル仮想記憶スペース(40)をアプリケーション・レベル記憶スペース(50)へマッピングするステップと、
前記ミラーRAID領域に保持すべき予め定めた最小割合のユーザ・データを規定するステップと、
前記パリティRAID領域に保持すべき残りの割合のユーザ・データを規定するステップと、
前記ミラーRAID領域に保持すべき最小割合のユーザ・データの規定および前記パリティRAID領域に保持すべき残りの割合のユーザ・データの規定に基づいて、ユーザに割り当てることができるアプリケーション・レベル仮想記憶スペース(50)の全仮想容量を計算するステップと、を含み、
前記アプリケーション・レベル仮想記憶スペース(50)の記憶容量は、前記RAIDレベル仮想記憶スペース(40)における割り当てブロック間でRAIDレベルを変更してデータを移行し、前記RAIDレベル仮想記憶スペース(40)と前記アプリケーション・レベル仮想記憶スペース(50)との間のマッピングを修正することにより、前記全仮想容量の範囲内で変更される、前記方法。
【請求項２】
ある量のRAIDレベル仮想記憶スペースをディスク・スペアスペースのために確保しておくホット・スペア・オプションを提供するステップと、
ユーザがホット・スペア・オプションを起動させたか否かを検出するステップと、
ホット・スペア・オプションが起動された場合、最大サイズの記憶ディスクの容量を含めずに、アプリケーション・レベル仮想記憶スペースの全仮想容量を計算するステップと、
を含む請求項１に記載の方法。
【請求項３】
ユーザによる使用のために割り当てられたアプリケーション・レベル仮想記憶スペースの割り当てられた容量を規定するステップと、
割り当てた容量を全仮想容量の計算結果から引くことによって、ユーザによる使用のために割り当てられていない容量を計算するステップと、
を含む請求項１に記載の方法。
【請求項４】
ユーザによる使用のために割り当てられたアプリケーション・レベル仮想記憶スペースの割り当てられた容量を規定するステップと、
記憶ディスクが故障した場合、故障した記憶ディスクの容量を含めずに全仮想容量を計算するステップと、
故障した記憶ディスクの容量を含めずに計算した全仮想容量が割り当てられた容量以上であるか否かを評価することによって、該故障した記憶ディスクの再構築を許可するための十分な容量があるか否かを決定するステップと、
を含む請求項１に記載の方法。
【請求項５】
ユーザによる使用のために割り当てられたアプリケーション・レベル仮想記憶スペースの割り当てられた容量を規定するステップと、
新たな量のアプリケーション・レベルの仮想記憶スペースを加えるユーザの要求を受け取るステップと、
全仮想容量、割り当てられた容量、および要求された新たな量のアプリケーション・レベル仮想記憶スペースに基づいて、前記新たな量のアプリケーション・レベル仮想記憶スペースをユーザに割り当てることができるか否かを評価するステップと、
前記要求された新たな量のアプリケーション・レベル仮想記憶スペースが全仮想容量と割り当てられた容量との間の差より小さい場合、該要求された新たな量のアプリケーション・レベル仮想記憶スペースをユーザに割り当てることを承認するステップと、
を含む請求項１に記載の方法。
【請求項６】
ユーザによる使用のために割り当てられたアプリケーション・レベル仮想記憶スペースの割り当てられた容量を規定するステップと、
全仮想容量、割り当てられた容量、および一つの記憶ディスクの容量に基づいて、ユーザに割り当てられた容量を損なわずに前記一つの記憶ディスクの記憶容量を失うことができるか否かを評価するステップと、
を含む請求項１に記載の方法。
【請求項７】
全仮想容量の計算結果に対する未使用のアプリケーション・レベル仮想記憶スペースの比率の所望のしきい値を設定するステップと、
全仮想容量に対する未使用のアプリケーション・レベル仮想記憶スペースの実際の比率を決定するステップと、
前記実際の比率が前記しきい値を越えたとき、アプリケーション・レベル仮想記憶スペースの容量が枯渇したことをユーザに知らせるステップと、
を含む請求項１に記載の方法。
【請求項８】
全物理的容量の物理的な記憶スペースを規定する選ばれた容量のN個の記憶ディスクからなるディスク・アレイを含む階層的なデータ記憶システムにおけるアプリケーション・レベル仮想記憶スペース(50)の過大割当てを避ける方法であって、
（ａ）データをミラー冗長に従って格納し、1/2MR*Nに等しい量のRAIDレベル仮想記憶スペース（MVT）を消費する多数のミラーRAID領域（MR）と、パリティ冗長に従ってデータを格納し、PR(N-1)に等しい量のRAID-レベル仮想記憶スペース（PVT）を消費する多数のパリティRAID領域（PR）とを含み、それぞれが複数の記憶ディスクにわたって広がり複数のRAID領域として物理的記憶スペースを提示するRAIDレベルの仮想記憶スペース(40)へ前記物理記憶スペース(34)をマッピングするステップと、
（ｂ）前記ミラーRAID領域に保持すべき最小割合のユーザ・データを規定するステップと、
（ｃ）それぞれのセットが同数の記憶ディスクにわたって広がる一群のRAID領域を含む、一つまたは複数のセットのRAIDレベル仮想記憶スペース(40)を定義するステップと、
（ｄ）前記ミラーRAID領域(MR)が、最大数の記憶ディスクにわたるRAID領域にあるとし、かつ、前記パリティRAID領域（PR）が、残りのRAIDレベル仮想記憶スペースにあるとして、全ディスクにわたって前記ミラーRAID領域および前記パリティRAID領域の両方を含むディスク・セットを見つけるステップと、
（e）前記見つけたディスク・セットのRAIDレベル仮想記憶スペースの容量をMVTおよびPVTの関数として計算するステップと、
（f）前記見つけたディスク・セット以外のディスク・セットのRAIDレベル仮想記憶スペースの容量をMVTまたはPVTの何れか一つの関数として計算するステップと、
（g）ステップ(e)および（f）で計算した各ディスク・セットのRAIDレベル仮想記憶スペースの容量を合計して全仮想容量を求めるステップと、を含み、
前記アプリケーション・レベル仮想記憶スペース(50)の記憶容量は、前記RAIDレベル仮想記憶スペース(40)における割り当てブロック間でRAIDレベルを変更してデータを移行し、前記RAIDレベル仮想記憶スペース(40)と前記アプリケーション・レベル仮想記憶スペース(50)との間のマッピングを修正することにより、前記全仮想容量の範囲内で変更される、前記方法。
【請求項９】
物理的記憶スペースを規定する選ばれた容量の複数の記憶ディスクからなるディスク・アレイを備え、アプリケーション・レベル仮想記憶スペース(50)の過大割り当てを避けながら階層的なデータ記憶システムを操作する方法であって、
（ａ）ミラー冗長に従ってデータを格納するミラー割り当てブロックと、パリティ冗長に従ってデータを格納するパリティ割り当てブロックとを含むRAIDレベルの仮想記憶スペース(40)へ、物理記憶スペース(34)をマッピングするステップと、
（ｂ）RAIDレベル仮想記憶スペース(40)全体にわたって非連続的に予備の記憶スペースを提供するステップと、
（ｃ）新しい割当てブロックをミラー割当てブロックまたはパリティ割当てブロックとして割り当てる要求を受け取るステップと、
（ｄ）個々のRAID領域を調べて未使用の割り当てブロックを特定するステップと、
（ｅ）未使用の割当てブロックの数を数えるステップと、
（ｆ）未使用の割当てブロックの数が前記予備の記憶スペース以上であるとき、新しい割当てブロックを割り当てる要求を許可するステップと、を含み、
前記RAIDレベル仮想記憶スペース(40)は前記アプリケーション・レベル記憶スペース(50)にマッピングされており、該アプリケーション・レベル仮想記憶スペース(50)の記憶容量は、前記RAIDレベル仮想記憶スペース(40)における割り当てブロック間でRAIDレベルを変更してデータを移行し、前記RAIDレベル仮想記憶スペース(40)とアプリケーション・レベル仮想記憶スペース(50)との間のマッピングを修正することにより変更される、階層的なデータ記憶システムを操作する方法。
【請求項１０】
物理的な記憶スペースを規定する多数の記憶ディスクを有するディスク・アレイと、
前記ディスク・アレイに結合され、前記記憶ディスクとのデータ転送を調整するディスク・アレイ・コントローラと、
前記ディスク・アレイ・コントローラに結合され、RAIDレベル仮想記憶スペースを記憶ディスクの物理的な記憶スペースにマッピングするRAID管理システムと、を含む階層的なデータ記憶システムであって、
前記RAIDレベルの仮想記憶スペース(40)は、複数のRAID領域として物理的な記憶スペース(34)にマッピングされ、
前記RAID領域はそれぞれ複数の記憶装置ディスクを横切って広がり、ミラー冗長に従ってデータを格納するミラーRAID領域とパリティ冗長に従ってデータを格納するパリティRAID領域を含み、
前記RAID管理システムは、ミラーRAID領域に保持すべき予め定めた最小割合のユーザ・データ、およびパリティRAID領域に保持すべき残りの割合のユーザ・データを規定し、
前記RAID管理システムは、RAIDレベルの仮想記憶スペース(40)をアプリケーション・レベルの記憶スペース(50)にマッピングし、
前記RAID管理システムは、ミラーRAID領域に保持すべき最小割合のユーザ・データの規定、およびパリティRAID領域に保持すべき残りの割合のユーザ・データの規定に基づいて、ユーザに割り当てることができるアプリケーション・レベル仮想記憶スペース(50)の全仮想容量を計算し、
前記アプリケーション・レベル仮想記憶スペース(50)の記憶容量は、前記RAIDレベル仮想記憶スペース(40)における割り当てブロック間でRAIDレベルを変更してデータを移行し、前記RAIDレベル仮想記憶スペース(40)と前記アプリケーション・レベル仮想記憶スペース(50)との間のマッピングを修正することにより、前記全仮想容量の範囲内で変更される、データ記憶システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、冗長な階層的なデータ記憶システムにおいて、仮想記憶スペースの過大割当てを避けるための方法に関する。この発明は、階層的なデータ記憶システム自体にも関する。
【０００２】
コンピュータ・システムは、速度、信頼性および処理能力の観点から絶えずよくなっている。その結果、コンピュータはより複雑で洗練されたアプリケーションを扱うことができる。コンピュータがよくなるにつれて、大容量記憶および入出力（1/0の）装置に課せられるパフォーマンスの要求が増加する。パフォーマンスの面で、発展するコンピュータ・システムとペースを保つ大容量記憶システムを設計する必要性がある。
【０００３】
この発明は、特にディスク・アレイ型の大容量記憶システムにかかわる。ディスク・アレイ・データ記憶システムは、一つの大容量記憶システムを形づくるよう構成され調整された複数の記憶ディスク・ドライブ装置を持つ。大容量記憶システムのための3つの主要な設計基準がある。それは、費用、パフォーマンスおよび可用性である。メガバイト当たりのコストが低く、高い入出力パフォーマンスおよび高いデータ可用性を持つ記憶装置を生産することが望まれる。「可用性」は、データを記憶装置の中でアクセスする能力であり、なんらかの故障があっても連続した操作を保証する能力である。典型的には、データ可用性は、データ、またはデータ間の関係が複数のロケーションに格納される冗長性の使用を通して提供される。
【０００４】
【従来の技術】
重複データを格納するには2つの共通の方法がある。第１の方法、すなわち「ミラー」法によると、データは、複製され、その記憶装置の2つの別々の領域に格納される。例えば、ディスク・アレイにおいて、同じデータがディスク・アレイの2つの別々のディスクに提供される。ミラー法は、二重記憶技術によって高いパフォーマンスおよび高いデータ可用性の利点を持っている。しかし、ミラー法は、データを格納する費用を実質的に２倍にするので比較的高価である。
【０００５】
第２の方法、すなわち「パリティ」法では、記憶領域の一部分が、冗長データを格納するために使われるが、冗長な記憶領域のサイズは、オリジナルのデータを格納するのに使われた残りの記憶スペースより小さい。例えば、5つのディスクを持つディスク・アレイにおいて、4つのディスクが、データを格納するのに使われ、5番目のディスクが冗長データを格納するのに使われる。パリティ法は、ミラー法より低コストだという利点があるが、ミラー法に比べるとパフォーマンスおよび可用性特性において劣る。
【０００６】
【発明が解決しようとする課題】
この発明は、パフォーマンスおよび信頼性を最適化するために異なる冗長性技術に従ってデータを格納する冗長で階層的なデータ記憶システムを提供することを目的とする。また、この発明は、ユーザーに使用可能な仮想記憶スペースを過大に割当てるのを避ける方法を提供することを目的とする。
【０００７】
【課題を解決するための手段】
この発明の課題は、次の方法におよびこれを実現するハードウェアによって解決される。
【０００８】
全体の物理的な記憶スペースを規定する選ばれた容量の複数の記憶ディスクからなるディスク・アレイを備える階層的なデータ記憶システムにおける仮想記憶スペースの過大割当てを避ける方法であって、RAID領域は、ミラー冗長性に従ってデータを格納するミラーRAID領域、およびパリティ冗長性に従ってデータを格納するパリティ領域を含み、上記ミラーRAID領域は、ある量のデータを格納するのに上記パリティRAID領域によって消費されるRAIDレベルの仮想記憶スペースの量と比較して、同じ量のデータを格納するために同じかより大きい量のRAIDレベルの仮想記憶スペースを消費するようになっており、複数の上記RAID領域として物理的な記憶スペースを提供するRAIDレベルの仮想記憶スペースに物理的な記憶スペースをマッピングするステップと、RAIDレベルの仮想記憶スペースをアプリケーション・レベルの記憶スペースへマッピングするステップと、上記ミラーRAID領域に保持すべき最小割合のユーザ・データの用意をするステップと、上記パリティRAID領域に保持すべき残りの割合のユーザ・データの用意をするステップと、上記ミラーRAID領域に保つべき最小割合のユーザ・データの用意および上記パリティRAID領域に保つべき残りの割合のユーザ・データの用意に基づいてユーザに割り当てることができる、アプリケーション・レベルの仮想記憶スペースの全仮想容量を計算するステップと、を含む仮想容量の過大割り当てを避ける方法。
【０００９】
データ記憶システムは、複数の記憶ディスク、およびディスクに対するデータ転送を協調させるディスク・アレイ・コントローラーを持つディスク・アレイを備える。記憶ディスクは、物理的な記憶スペースを規定する。データ記憶システムは、記憶ディスクの物理的な記憶スペースの上にRAIDレベルの仮想記憶スペースをマッピングするためにディスク・アレイ・コントローラに動作的に結合されたRAID管理システムを持つ。RAIDレベルの仮想記憶スペースは、物理的な記憶スペースをそれぞれが複数の記憶ディスクにわたって広がる複数のRAID領域として提示する。RAID領域は、ミラー冗長性に従ってデータを格納するためのミラー割当てブロックを有するミラーRAID領域、およびパリティ冗長性に従ってデータを格納するパリティ割当てブロックを有するパリティRAID領域を含む。ディスク・アレイのディスクにRAIDレベルの仮想記憶スペースをマップするためにRAID管理システムによって使われるマッピング情報を持続的に格納するために、メモリ・マップ・ストアがRAID管理システムに結合されている。RAID管理システムは、パフォーマンスおよびデータの信頼性を最適化する態様でミラーおよびパリティRAID領域の間でデータを動的に移動させる。ある量のRAIDレベルの仮想記憶スペースは、この移行のために保留され、とっておかれる。
【００１０】
RAIDレベルの仮想記憶スペースを過大に割り当てることを避けるために、RAID管理システムが将来の記憶装置要求の際、参照することができる全仮想容量を計算する。この計算は、ミラーおよびパリティ記憶領域の理論的な最悪のケースの取り決めに基づく。RAID管理システムが、ミラー記憶領域に保存すべき最小割合のユーザ・データ、およびパリティ記憶領域に保存すべき残りの割合のユーザ・データを考慮する。ユーザーに割り当てることができるアプリケーション・レベルの仮想記憶スペースの全仮想容量は、ミラーRAID領域に保存されるべき最小割合のユーザ・データおよびパリティRAID領域に保存すべき残りの割合のユーザ・データに基づいて計算される。この全仮想容量は、仮想記憶スペースを過大に割り当てることなく要求が許されるかどうかを判断するために、システムの付加的な記憶装置要求がなされるとき、参照される。
【００１１】
また、RAID管理システムは、新しい記憶装置要求が、新しい記憶要求のためにスペースを空けるためミラーおよびパリティ記憶装置の間でデータを移動するなどのスペース管理技術に頼ることなく受け入れられるかどうかを、迅速に評価するよう設計されている。この評価は、個々のRAID領域を調べて不使用の割当てブロックを調べ、不使用の割当てブロックの数を計数することによって行われる。新しい割当てブロックを割り当てる要求は、不使用の割当てブロックの数が、移動のためにとっておいた保留された記憶スペース以上であるならば、許可される。
【００１２】
【発明の実施の形態】
図1は、この発明に従ってつくられたデータ記憶システム10を示す。データ記憶システム10は、複数の記憶ディスク1 2、および記憶ディスク１2およびRAID管理システム16との間でデータ転送を協調させるために、ディスク・アレイ１１に結合したディスク・アレイ・コントローラ14を有する階層的なディスク・アレイ1１を備える、ディスク・アレイ・データ記憶システムであるのが好ましい。
【００１３】
説明上、「ディスク」は、それ自身の記憶装置故障を発見する能力を持つ、不揮発性でランダムにアクセス可能な、再書き込み可能な大容量記憶装置である。それは、回転する磁気ディスクおよび光ディスク、ならびにソリッドステートのディスクまたは不揮発性電子記憶素子（PROM、EPROMとEEPROMSのような）を含む。「ディスク・アレイ」という用語は、ディスクの集合をいい、それらを一つまたは複数のホスト・コンピュータに接続するために必要なハードウェア、および物理的なディスクの操作を制御するために使われ、ホスト操作環境へそれらを一つまたは複数の仮想ディスクとして提供する管理ソフトウェアを含んでいる。すべての仮想ディスクは、管理ソフトウェアによってディスク・アレイの中で実現される抽象的な構成要素である。
【００１４】
用語「RAID」(Redundant Array of Independent Disks)は、記憶容量の残りの部分に格納されたユーザ・データに関する冗長情報を格納するために、物理的な記憶容量の一部分が使われるディスク・アレイを意味する。そのアレイの構成ディスクの一つが故障するかそれへのアクセス経路が故障した場合、冗長情報がユーザ・データの再生を可能にする。RAIDシステムのより詳細な説明は、The RAID Book: A Source Book for RAID Technology, the RAID Advisory Board, Lino Lakes, Minnesota、1993 年6月9日、に記載されている。
【００１５】
ディスク・アレイ・コントローラ14は、小型コンピュータ・システム・インターフェース（SCSI）のような１つまたは複数のインターフェース・バス13を通してディスク・アレイ11に結合されている。RAID管理システム16は、インターフェース・プロトコル15を通して動作的にディスク・アレイ・コントローラ14に結合されている。また、データ・メモリ・システム10は、I/Oインターフェース・バス17を通してホスト・コンピュータ（図示しない）に結合される。RAID管理システム16は、ディスク記憶および信頼性のレベルを制御するため、およびいろいろな信頼性記憶レベルの間でデータを転送するためにデータ・マネージャー手段を提供するよう、別々のコンポーネントとして具体化されることも、ディスク・アレイ・コントローラ14内で、あるいはホスト・コンピュータ内で構成されることもできる。これらの信頼性記憶レベルは、後述するようにミラーまたはパリティ冗長レベルであるのが好ましいが、全く冗長性なしの信頼性記憶レベルを含むことができる。
【００１６】
ディスク・アレイ・コントローラ14は、ディスク・アレイ・コントローラA、14aとディスク・アレイ・コントローラB、14bから成る二重のコントローラとして実施するのが好ましい。二重のコントローラ14aと14bは、連続的なバックアップと冗長性を提供することによって、一つのコントローラが動作不能になるときの信頼性を高める。しかし、この発明は、一つのコントローラその他のアーキテクチャーでも実施することができる。
【００１７】
階層的なディスク・アレイは、その物理的な記憶スペースおよび１つまたは複数の仮想記憶スペースを含めて、異なる記憶スペースとして特徴づけることができる。記憶装置のこれらのいろいろな見方は、マッピング技法を通して関係づけられる。例えば、そのディスク・アレイの物理的な記憶スペースは、いろいろなデータの信頼度レベルに従って記憶領域を画定する仮想記憶スペースにマップすることができる。仮想記憶スペース内のいくつかの領域が、ミラーまたはRAIDレベル1のような第１の信頼性記憶レベルのために割り当てられ、他の領域がパリティまたはRAIDレベル5のような第２の信頼性記憶レベルのために割り当てられることができる。いろいろなマッピング技術およびRAIDレベルに関する仮想スペースについて、以下に詳細を説明する。
【００１８】
データ記憶システム10は、異なる記憶スペースを互いにマップするために使われるる仮想マッピング情報を持続的に記憶するためのメモリ・マップ・ストア21を含む。メモリ・マップ・ストアは、ディスク・アレイに対して外部にあり、ディスク・アレイ・コントローラ14に常駐するのが好ましい。異なるビューの間でいろいろなマッピング構成が変わるにつれて、メモリ・マッピング情報がコントローラまたはRAID管理システムによって連続的に、あるいは定期的に更新されることができる。
【００１９】
メモリーマップ・ストア21は、それぞれのコントローラ14aと14bに位置する2つの不揮発性RAM (Random Access Memory) 21aおよび21bとして具体化されるのが好ましい。不揮発性RAM（NVRAM）の一例は、バッテリで支援されたRAMである。バッテリ支援RAMは、データ記憶システム10への電力供給が損なわれた場合、ある時間の間メモリの中のデータを維持するために独立のバッテリ源からのエネルギーを使う。一つの好ましい構造は、自己リフレッシュ型のバッテリ支援DRAM（Dynamic RAM）である。
【００２０】
二重のNVRAM 21aおよび21bが、メモリ・マッピング情報の冗長な記憶を行う。仮想マッピング情報が、ミラー冗長技術に従って複製され、両方のNVRAM 21aおよび21bに格納される。このように、NVRAM 21aが、オリジナルのマッピング情報を格納することに専用され、NVRAM 21bが冗長なマッピング情報を格納することに専用されることができる。代替構造において、ミラーされたメモリーマップ・ストアは、そのデータを二重に記憶するに十分なスペースを持つ単一の不揮発性RAMを使って構成することができる。
【００２１】
図1に示されるように、ディスク・アレイ11は、複数の記憶ディスク・ドライブ装置12を持っている。これらの記憶ディスクのサイズの例は、1ないし3ギガバイトである。記憶ディスクは、SCSIバス13とのインターフェイスを提供する機械的ベイに、独立に接続されたり切り離したりされることができる。一つの実施例において、データ記憶システムは、12の機械的ベイを持つよう設計される。4つのSCSIバスが、これらのベイとディスク・アレイ・コントローラ14とをインターフェイスするのに使われる（すなわち、3つの機械的ベイにつき一つのバス）。活動ベイがいっぱいにロードされるならば、データ記憶システムは、12ないし36ギガバイトの結合された容量を持つ例になる。ディスク・アレイ・コントローラ14は、どのベイに接続されたかとは関係なく記憶ディスク12を認識する。データ記憶システム10は、ディスク・アレイが運転中である間に、ディスク・アレイの利用可能な機械的ベイに付加的ディスクを「ホットプラグ」（稼働中にプラグ接続する）することができるよう設計されている。
【００２２】
ディスク・アレイ11の中の記憶装置ディスク12は、説明の目的のために、複数のディスク20のミラー・グループ18および複数のディスク24のパリティ・グループ22に配列されているものと観念することができる。ミラー・グループ18は、データを第１の、すなわちミラー冗長レベルに従って格納する、ディスク・アレイの第１の記憶ロケーションすなわちRAID領域を表わす。また、このミラー冗長レベルは、RAIDレベル1と考えられる。RAIDレベル1、あるいはディスク・ミラーリングは、データのあらゆるビットがデータ記憶システム内で複製され記憶される点で１対１の保護を与え、最も高いデータ信頼性を提供する。ミラー冗長性は、図１において３対のディスク20によって表わされている。オリジナルのデータが、第１組のディスク26に格納されることができ、重複して冗長データが対になった第２組のディスク28に格納される。
【００２３】
図2は、RAIDレベル1に従ったデータの記憶を図示する。垂直な列は、個々のディスク（ディスク0、1、2および3が図示される）を表現する。4つのディスクのディスク・アレイに含まれる物理的な記憶スペースは、水平な行によって表現されるように、複数のストライプに構成することができる。「ストライプ」は、記憶ディスクを横切って広がり、一つのセグメントがそのアレイの中のそれぞれのディスクと関連する、多数の等しい大きさの記憶スペースのセグメントを含む。すなわち、セグメントは、一つのディスク上にあるストライプの部分である。各ストライプは、記憶ディスクを横切って分配されるあらかじめ決められた量のデータを持つ。ストライプのセグメントのあるものは、オリジナルのデータのために使われ、他のセグメントが冗長データのために使われる。
【００２４】
ミラー冗長性（RAIDレベル1）のこの例において、ディスク0上でストライプ0のセグメント0に格納されたデータは、複製され、ディスク1上でストライプ0のセグメント0'に格納される。同様に、ディスク2上でストライプ2のセグメント5に格納されたデータは、ディスク3上でストライプ2のセグメント5'にミラー（複製）される。このように、データの各部分は、複製されてディスク上に格納される。図2の冗長性レイアウトは、説明の目的で用意されている。冗長データは、図示しているのと同じストライプにきちんと置かれる必要はない。例えば、ディスク0上でストライプ1の中のセグメント2に格納されたデータは、複製されて、ディスク3上でストライプSのセグメントT'に置かれてもよい。
【００２５】
再び図1を参照すると、ディスク24のパリティ・グループ22は、データがRAID レベル5のような第２の冗長レベルに従って格納される第２の記憶ロケーションすなわちRAID領域を表わす。6つのディスクを用いた説明的なイラストにおいて、オリジナルのデータは、5つのディスク30に格納され、冗長な「パリティ」データが6番目のディスク32に格納される。
【００２６】
図3は、パリティRAID領域のレイアウトをより詳しく示す。図２のミラーRAID領域レイアウトと同様に、ディスク0、1、2、3の物理的な記憶スペースは、複数の等しい大きさのストライプに構成されることができる。図の例において、データがRAIDレベル5に従って格納され、セグメントに格納された冗長データは、文字Pによって参照される。冗長なPセグメントは、他のセグメントのパリティをそのストライプに格納する。たとえば、ストライプ0において、ディスク3上の冗長なPセグメントは、ディスク0、1および2のパリティを格納する。各ストライプのためのパリティが、次の式の中の記号によって表わされる排他的ＯＲ機能のようななんらかの機能によって計算される。第１の4つのストライプのためのパリティ（下付き添字数字が対応するストライプを表わす）は、次のようである：
【００２７】
【数１】
0003708195.tif 000002
パリティ冗長性は、ディスクの一つで利用できなくなるデータの再生を可能にする。例えば、セグメント5のデータが利用できなくなったならば、その内容は、セグメント3および4ならびにセグメントPの中のパリティ・データから確かめることができる。パリティ記憶は、ミラー記憶より経済的であるが、相対的に信頼性が低く、パフォーマンスが低い。
【００２８】
図1のディスク構成は、概念上の目的で用意されている。実際上、ディスク・アレイ11は、データをミラーおよびパリティ冗長性に従って格納することができる単に複数のディスク12を持っていてよい。すべてのディスク12によって提供される利用可能な記憶スペースの中で、その記憶スペースの一部がミラー冗長性のために割り当てられ、他の部分がパリティ冗長のために割り当てられる。ディスク12は、個々の区域が複数のセグメントを持つ、複数の等しい大きさに作られた記憶区域（図４において数字35で参照される）を含むよう構成されるのが好ましい。その区域は、記憶スペースの一つの仮想ビューにおいて、RAID領域を形成するようグループ化される。さらに、記憶スペースのもう一つの（ホストで規定される）ビューがユーザまたはホストに提示されるので、RAID領域およびデータ冗長性記憶技術はユーザまたはホストに透明である。これらの機構は、図4を参照してより詳しく説明する。
【００２９】
データ記憶システム10は、ミラーおよびパリティ記憶法の間でデータの「移行」を管理する。両方の型の冗長性の管理は、RAID管理システム16（図1）で協調される。RAID管理システム16は、ディスク・アレイの2つの異なる型のRAID領域を、ミラーRAID領域がパリティRAID領域のためのキャッシュに似た動作をするメモリ・ハイアラーキとして管理する。RAID管理システム16は、規定されたパフォーマンス・プロトコルに従って、ミラーおよびパリティRAID領域の間でデータをシフトし、組織するなど管理する。ミラーおよびパリティRAID領域の間でデータを動かすプロセスは、「移行」と呼ばれる。
【００３０】
データ記憶システム10は、ミラー冗長性が最も高いパフォーマンスと信頼性の余裕を持っているから、よりパフォーマンスに厳格なデータをミラーRAID領域に置こうとする。RAID管理システムによって実行されるパフォーマンス・プロトコルは、2つの好ましい移行方針の一つを含む。「アクセス頻度」として知られる第１の移行方針によると、階層的なディスク・アレイ上の最も頻繁にアクセスされるデータがミラーRAID領域18に維持される。アクセスされる頻度の小さいデータは、パリティRAID領域22に維持される。「アクセスの最近度」として知られている第２の移行方針によると、最も最近アクセスされたデータがミラーRAID領域18に維持され、アクセス最近度の低いデータがパリティRAID領域22に格納される。他のパフォーマンス・プロトコルを使うこともできる。理想的には、そのようなプロトコルは、特定のコンピュータ・アプリケーションおよびユーザのニーズに基づいて規定される。
【００３１】
さらに、RAID管理システム16は、2つのパラメーターの関数に従って、データ記憶システムの記憶資源を自動的に「調整する」。この２つのパラメータは、物理的な記憶容量のサイズ、およびデータ記憶システムに格納つつあるユーザ・データの現在量のサイズである。最初は、最も高いパフォーマンスおよび信頼性を持つので、すべてのデータがミラーRAID領域に格納される。より多くのデータがデータ記憶システムに加えられるにつれて、データは、パフォーマンスおよび信頼性を最適化するために、ミラーRAID領域およびパリティRAID領域の間で移行される。データ記憶システムが容量いっぱいに近づくと、冗長性を通しての信頼性を提供しながらユーザのすべての要求に応ずるために、より多くのデータがパリティRAID領域に移行される。それゆえに、この発明のデータ記憶システムは、最大の融通性と順応性を持つ。この発明の記憶システムは、ユーザに特定の記憶体制を選ぶことを要求せず、ユーザの要求に適応することができる。
【００３２】
図4は、データ記憶システム10の利用可能な記憶スペースのメモリ・マッピングを、マップされた仮想記憶スペースの複数の段として図示する。図の中の垂直に伸びたそれぞれの長方形は、物理的な記憶スペースのビューを表現する。この図の中で、物理的記憶スペース34が２つの仮想記憶装置のビュー40および50で参照される。物理的記憶スペース34は、数字0、1、2、および3で参照される4つのディスク（図1の中のディスク12のような）によって表現される。そのディスクに関連した4つの長方形は、ディスク1、2および3がほぼ等しい記憶容量を持ち、ディスク0がわずかに小さい記憶容量を持つ物理的な記憶スペースのビュー50を表わす。そのようなディスクの例としての記憶容量は、1-3ギガバイトである。記憶スペース34は、領域A0、A1、A2、その他に区分される。個々の領域は、領域A0にストライプ0-Qのような多数のストライプを含む。個々の領域も、多数の区域35を含む。区域35は、区域が全ディスク・アレイにわたって同じ大きさであるように、あらゆる記憶ディスク上で選ばれた数の均一な大きさのセグメントから成るのが好ましい。区域35の例としてのサイズは、１メガバイトである。
【００３３】
ディスクの記憶スペースは、物理的な記憶スペース34の第１の、中間の、RAIDレベルの仮想ビュー40にマップされる。この第１の仮想ビューは、観念的には、連続してアドレス可能な記憶スペースを表現する第２のアプリケーション・ビューにマップされることができる一組のRAID領域である。その物理的構成およびその記憶スペースのRAIDビューは、アプリケーション・ビューから隠されている。
【００３４】
RAID領域記憶スペース40は、ミラーおよびパリティ記憶スペースを識別する記憶装置のビューである。たとえば、RAID領域42が、M割当てブロック43のミラーRAID領域を表現し、RAID領域44がN割当てブロック45のパリティRAID領域を表現してもよい。割当てブロック43および45は、同じ大きさであるのが好ましい。例としての大きさは、64キロバイトである。これらのRAID領域は、物理的な記憶スペース34上の対応する物理的な領域A0、A1、A2などに関連する。例として、RAID仮想ビューにおける16の64K割当てブロック43または45は、一つの1M区域35の上へマップすることができる。
【００３５】
ミラーおよびパリティRAID領域は、ディスク・アレイの全記憶スペース34を消費するかもしれず、消費しないかもしれない。したがって、ある種のアプリケーションの間、特定のRAID領域に対応しない、不使用の指定されていない記憶スペースがあることがある。しかし、そのような記憶スペースは、ミラーまたはパリティRAID領域に変換されることができる。また、RAID領域は、ディスク・アレイ上で連続する領域にマップされ、各RAID領域に関連したそれぞれの区域が各記憶ディスクの同じ物理アドレスに位置するものとして示されている点に注意されたい。代わりに、RAID領域は、ディスク・アレイ上の連続しない領域にマップされてもよい。
【００３６】
RAID領域で利用可能な記憶スペースは、ユーザまたはホスト・アプリケーション・プログラムによって規定され、それらに提示される記憶装置のビューである、第２の、フロントエンドの、アプリケーション・レベルの仮想ビュー50にマップされる。ユーザまたはホスト・アプリケーション・プログラムから見るとき、アプリケーション・レベルの仮想ビュー50は、記憶ディスク12上の利用可能な記憶スペースを示す一つの大きい記憶容量を表わすことができる。仮想記憶スペース50は、個別に0、1、2、...、J-1、J、J+1、...、Lー1、L、L+1、...、などとして参照される等しい大きさの記憶仮想ブロック52および53の線形セットのビューを提示する。仮想ブロック52および53は、RAID領域40における割当てブロックと同じサイズであることが好ましい。サイズの例は、64キロバイトである。仮想ブロック記憶スペース50は、RAID領域40で表されるビューの割当てブロックへの参照すなわちポインタ（矢印54*によって表現されるように）のテーブルによって表わされる。したがって、アプリケーション仮想ビュー50における仮想ブロック52および53は、仮想ブロック・テーブルに維持されるポインタを通してRAID仮想ビュー40における割当てブロック43および45と関連する。仮想ブロック・テーブルから参照することができる少くとも2つ型のRAID領域、ミラーおよびパリティがある。
【００３７】
RAID管理システム16は、物理的な記憶スペースにわたって動的にRAID領域の構成を変えることができる。それぞれの型についてRAID領域の数が、システムで格納されるユーザ・データの量および物理的なディスク記憶スペースのサイズに依存して増やされまたは減少されうる。この結果、RAIDレベルの仮想ビュー40におけるRAID領域のディスクへのマッピング、およびアプリケーション・レベルの仮想ビュー50のRAIDビュー40へのマッピングは、概して変化状態にある。NVRAM 21aおよび21b（図１）におけるメモリ・マップ・ストアは、RAID領域をディスクへマップするためにRAID管理システム16によって使われる現在のマッピング情報を、2つの仮想ビューの間でマップするために使われる情報と同様に維持する。RAID管理システムは、動的にRAIDレベルのマッピングを変えるにつれて、その変更を反映するために、メモリ・マップ・ストアのマッピング情報を更新する。
【００３８】
メモリ・システム10の移行操作を図1および4を参照して説明する。
【００３９】
説明を続ける目的で、アプリケーション・レベルの仮想記憶スペース50の仮想ブロック53は、物理的記憶スペース34の領域A1に格納されたパリティRAID領域44における関連した割当てブロック45を参照する。そのような仮想ブロック53は、パリティ仮想ブロックと呼ぶことができ、関連した割当てブロック45は、パリティ割当てブロックと呼ぶことができる。同様に、仮想ブロック52は、物理的記憶スペース34の領域AOに格納されたミラーRAID領域42における関連した割当てブロック43を参照する。そのような仮想ブロック52は、「ミラー仮想ブロック」と呼ばれ、関連した割当てブロック43が「ミラー割当てブロック」と呼ばれる。
【００４０】
一般に、一つのRAID領域から別の領域に移行するために、第１のRAIDレベル型（ミラーまたはレベル1のような）の割当てブロックに関連した仮想ブロックが選ばれる。次いで、第２のRAIDレベル型（パリティまたはレベル5のような）を表す不使用の割当てブロックが見いだされる。不使用の割当てブロックを見いだすことができないならば、一つが作成される。データは、選ばれた仮想ブロックと関連する割当てブロックから不使用の割当てブロックに移され、データは冗長レベルを変更される。例えば、ミラー冗長性に従って格納されていたデータは、パリティ冗長性に従って格納され、また、その逆が行われる。最終的なステップとして、RAIDレベルの仮想記憶スペース40へのアプリケーション・レベルの仮想記憶スペース50のマッピング54は、データのシフトを反映するために修正され、更新される。以前に第１のRAIDレベル型の割当てブロックと関連していた、選ばれた仮想ブロックが、更新されたポインタを介して、移行されたデータを含む第２のRAIDレベル型の割当てブロックを参照する。この処理の間に生じるマッピング変化は、メモリ・マップ・ストア21において更新される。
【００４１】
この発明の好ましい方法と順序に従って、ミラーおよびパリティ記憶領域の間を移行するデータのより詳細な説明を続ける。データをパリティ記憶からミラー記憶に移行するために、次のシーケンスが使われる。
【００４２】
1.  RAID管理システムは、ミラーRAID領域42における、不使用のミラー割当てブロック43を見つける。
2.  何も見つけられることができなければ、RAID管理システムは、ミラー割当てブロック（下で説明する）を作り出す。
3.  RAID管理システムは、移行すべき仮想ブロックへの新しい記憶要求を中断する。
4.  RAID管理システムは、仮想ブロックへのすべての有効なデータ記憶要求が完了されるまで待つ。
5.  仮想ブロック53に関連したパリティ割当てブロック45からのデータが、一時記憶バッファに読み込まれる。
6.  データは、次いで、ステップ2において選ばれたミラー割当てブロックに書き込まれる。
7.  仮想ブロック・テーブルは、ミラー割当て43ブロックにおけるそのデータの新しいロケーションを参照するよう修正される。
8.  中断されていた記憶要求が、再開される。
【００４３】
上記の手順によると、アプリケーション・レベルの仮想ビュー50における仮想ブロック53は、パリティ記憶からミラー記憶に移行した。中間の仮想ビュー40に関し、データは、パリティRAID領域44におけるパリティ割当てブロック45からミラーRAID領域42におけるミラー割当てブロック43に移行されている。物理的な記憶スペースにおいて、データは領域A1から領域A0に動いている。
【００４４】
不使用のミラー割当てブロックを見いだすことができないならば（上のステップ1）、RAID管理システムは、次の3つの技法の好ましいシーケンスをためす。第１に、RAID管理システムは、不使用のRAIDレベルの記憶のシステムしきい値を破ることなくミラーRAID領域に変換されることができる、不使用の（したがって指定されていない）RAID領域を見つけるよう試みる。これは、移行を常に進めることができることを保証するために必要とされる。これが失敗し、そして保留量の不使用のRAIDレベル記憶より多くをシステムが持っているならば、システムは、不使用のパリティ割当てブロックを不使用のRAID領域に集めるためにパリティ記憶装置内でデータを移行させる。この移行によって、上述のようにミラーRAID領域に変換されることができる不使用のRAID領域が生じれば、システムは、それをミラーRAID領域に変換する。さもなければ、システムは、不使用のミラー割当てブロックを見いだすに十分か、または不使用のRAID領域をミラーRAID領域に変換するに十分に、不使用のRAIDレベルの記憶装置をシステムが増やすまで、データをミラー記憶装置からパリティ記憶装置へ移行し、ミラー記憶装置をパックし、不使用のRAIDレベルの記憶をパリティに変換する。ミラー割当てブロックがパリティ割当てブロックより大きな物理的な記憶スペースを占めるから、この最後の技法によって、不使用のRAIDレベル記憶装置の量が正味増加する。
【００４５】
不使用のミラー割当てブロックを見つけるためおよび確立するために使われる創設/変換プロトコルは、RAID管理システムがユーザ・データの量および物理的な記憶スペースのサイズに従ってパリティおよびミラー領域の間で記憶割当てを選択的に調節することを可能にするので、有利である。データ使用および記憶容量が変化するにつれて、RAID管理システムは、ミラー記憶装置に保持されるデータの量を最大にするために上記の3つの技法の１つまたは複数を使う。
【００４６】
RAID管理システムは、スペース作成シーケンスがアイドル時間に不使用RAID領域をつくることによって不使用のミラー割当てブロックを創設するのを、記憶装置要求が待たなければならない状況を避けようとする。しかし、いくらかの状況において、記憶装置要求はスペース作成シーケンスの間、中断されることがある。RAID管理システムは、仮想スペースがRAIDビューより小さくなるような形態で、仮想ブロック記憶スペースを構成する。これは、少くとも1つのRAID領域と等しい自由スペースが移行その他の目的のためにとっておかれることを保証する。このように、この技法は、常に不使用のミラー割当てブロックを生む。
【００４７】
データをミラー記憶装置からパリティ記憶装置へ移行させるために、以下の順序が使われる：
1．RAID管理システムは、アクセス最近度またはかアクセス頻度のような移行方針に従ってミラー記憶装置からパリティ記憶装置へ移行させるために仮想ブロックを52から選ぶ。
2.  RAID管理システムは、パリティRAID領域44に不使用のパリティ割当てブロック45を見つける。
3．そのようなブロックが見つけられないならば、移行用に保留されたスペースが上述の創設技法に従ってパリティRAID領域に変換される。
4.  移行されるべき仮想ブロックへの新しい記憶装置要求が中断される。
5.  RAID管理システムは、仮想ブロックへのすべての有効な記憶装置要求が完了するまで待つ。
6.  データは、仮想ブロック52に関連したミラー割当てブロック43から一時記憶バッファに読込まれる。
7.  そのデータは、選ばれたパリティ割当てブロック45に書込まれる。
8.  仮想ブロック・テーブルが、パリティ割当てブロック45におけるデータの新しいロケーションを参照するよう修正される。
9.  仮想ブロックへのデータ要求が再開される。
【００４８】
上述の2つの番号を付けたシーケンスは、この発明のメモリシ・ステムが異なる2つの冗長性レベルの間でデータを移行する方法の例を提供する。
【００４９】
仮想ビューがマップされて、ユーザによる使用のために提示されるとき、データ記憶システムが、利用できない記憶資源を過大に割り当てないことが望ましい。この冗長な階層的データ記憶システムにおいて過大割当てを避けることは、データがミラーおよびパリティ記憶RAID領域の間で移行されることができるという事実によって複雑になる。それゆえに、この発明のデータ記憶システムは、ユーザへの仮想記憶スペースを過大に割り当てるのを防ぐために記憶装置資源を監視する。
【００５０】
図5は、仮想記憶スペースの過大割当てを避けるための全体的な方法を図示する。この方法を、8つの記憶装置ディスク0ー7を持っているディスク・アレイ90を示す図7を参照して説明する。手短に言えば、この方法は、ユーザに割り当てることができるアプリケーション・レベルの記憶スペースの全仮想容量を引き出す。
【００５１】
ステップ60と62は、図４を参照して先に述べた、RAID-レベル仮想ビュー40およびアプリケーション・レベルの仮想記憶スペース50を確立する。残りのステップ64-68において、RAID管理システムは、最小割合のデータがミラー記憶装置に保持されねばならないとして、アプリケーション・レベルの仮想記憶スペースに使うことができる最大容量を計算する。ステップ64で、RAID管理システムは、最小のユーザ・データがミラー記憶装置に保持されると仮定する。最小割合の例は、10 %である。すなわち、アプリケーション・レベルの仮想記憶スペースにおけるブロックの数の少くとも10 %は、ミラー記憶装置のためのブロックとして割り当てられる。残りの割合ユのーザ・データは、パリティRAID領域に保持されると仮定される（ステップ66）。ミラーおよびパリティRAID領域のこの理論的な10%対90%の分割は、ディスク・アレイが記憶容量いっぱいであるという悲観的な仮定を可能にするで、全仮想容量を計算するのために使われる。
【００５２】
もう一つの仮定は、ミラーRAID記憶装置およびパリティRAID記憶装置の理論的なレイアウトに関するものである。具体的には、RAID管理システムは、全仮想容量を計算する目的のために、ミラーRAID領域がそのアレイのすべての記憶ディスクにわたって広がる物理的なディスク領域にマップされると仮定する。このことが、ミラーRAID領域が理論的にはそのディスク・アレイの底に配置された図7に示される。パリティRAID領域は、ディスク・アレイの上部でおそらく非均一な部分にマップする残りのRAIDレベルの仮想ビューに理論的に配置される。例としてのRAID領域ＲＡH、ＲＡH+1その他は、記憶ディスク0-7の連続する区域Rへマップされるものとして図示されている。
【００５３】
ひとたびミラーおよびパリティRAID領域が、理論的に切り離されて、ディスク・アレイに配置されると、RAID管理システムは、ユーザに割り当てることができるアプリケーション・レベルの仮想記憶スペースの全仮想容量を計算することができる（ステップ68）。この計算は、最小割合のミラーRAID領域によって消費される仮想記憶スペースの潜在的な量および残りの割合のパリティRAID領域によって消費される仮想記憶スペースの潜在的な量に基づく。全仮想容量が決定されると、オプション・ステップ70で表現されるように、この値は、データ記憶システムでなされる多数の他の判断のために使うことができる。そのような判断は、割り当てられていない容量、仮想記憶スペースの新しい数量に対する要求の評価、記憶ディスクがドレインされることができるどうかの評価、容量がなくなることの監視、およびシステムに有害な影響を与えることなくディスクが失われうるかどうかの評価を含む。これらの判断プロセスは、下で図６に関係してより詳しく説明する。
【００５４】
これらの副次的な判断に触れる前に、図7および8を参照して全仮想容量の主要な計算のより詳細な説明をする。RAID管理システムは、最初にRAID・レベルの仮想記憶スペース内で１つまたは複数のセットiを規定する（ステップ100）。各セットは、同じ数の記憶ディスクにわたって広がる一群のRAID領域を含む。すべての記憶ディスクが同じサイズである「均質な」ディスク・アレイにおいては、一つのセットがあるだけである。すべてのRAID領域は、大きさにおいて等しく、同じサイズの記憶ディスクのすべてにわたって広がる。逆に言えば、記憶ディスクが異なるサイズを持つ「異質な」ディスク・アレイには、1つまたは複数のセットがある。
【００５５】
図7は、異質なディスク・アレイを示す。ディスク0、2、3および7が同じサイズである。ディスク1、5および6は、同じサイズだが、ディスク0、2、3および7より大きい。そして、ディスク4は、最も大きいディスクである。このディスク・アレイにおいて、3つのセットを規定することができる。セット0は、すべての8つの記憶ディスクへマップするRAID領域のグループを含む。セット0は、そのメモリ・スペースの大部分をカバーする。セット1は、四つディスク1、4、5および6へマップするRAID領域のグループを含む。セット2は、ディスク4の最上の部分へマップするRAID領域のグループを含む。
【００５６】
RAID管理システムは、最大数の記憶ディスクを持つRAID領域のグループを含む１つまたは複数のセットに、ミラーRAID領域を理論的に配置する（ステップ102）。別の言い方をすれば、RAID管理システムは、全仮想容量を計算する目的のために、図7に描写されるように、すべての記憶ディスクにわたるディスク・アレイの底部にミラーRAID領域がマップされると仮定する。パリティRAID領域は、理論的には、残りのRAIDレベル仮想記憶スペースに配置される。
【００５７】
ひとたびミラーおよびパリティRAID領域が理論的に切り離されるならば、規定されたセットの一つはミラーおよびパリティRAID領域両方を含む。図７の異質なアレイにおいて、セット0が、ミラーおよびパリティRAID領域両方を含む共通のセットである。典型的には、セット0は、最も大きいセットであって、通常共通のセットである。均質なディスク・アレイにおいて、一つのセットは、もちろん両方の種類のRAID領域を含む。しかし、たとえば一つの小さいディスクおよびいくつかの非常に大きいディスクを有する風変わりな異質なディスク・アレイにおいては、セット0以外のセットがミラーおよびパリティ記憶装置を含むことになる。
【００５８】
RAID管理システムは、最も小さいGについて次の式を解いて所与のディスク・アレイ構成において、Gで示される共通セットを見つける。
【００５９】
【数２】
0003708195.tif 000003
ここで、"VirCapacMirSet"は、セットiにおけるミラーRAID領域の仮想容量を表わし、"VirCapacParSet"が、セットiにおけるパリティRAID領域の仮想容量を表わし、Kがセットの全数を表現し、CがミラーRAID領域の最小割合（10%について10のような整数で表す）である。
【００６０】
共通のセットGが見つけられたならば、RAID管理システムは、RAID領域のいろいろなセットの容量を計算することができる。セットのあるものは、ミラーかパリティRAID領域の一方だけを含み両方は含まないから、これらのセットにおける計算は、（MVTとして示される）ミラーRAID領域によって消費された仮想記憶スペースの数量、または（PVTとして示される）パリティRAID領域によって消費された仮想記憶スペースの数量の関数にすぎない。ミラーおよびパリティRAID領域を含む共通のセットGだけが、MVTおよびPVTの関数に基づくより複雑な計算を課する。各セットの容量が見つけられると、アプリケーション・レベルの仮想記憶スペースのための全仮想容量は、単にこれらのセットの容量の和である。
【００６１】
ステップ106において、RAID管理システムは、もしあるとすれば、ミラーRAID領域だけを含むセットの容量を計算する。ミラーRAID領域によって消費された仮想容量の数量（MVT）が、次の方程式によって与えられる。
【００６２】
【数３】
ＭＶＴ＝1/2ＭＲ＊Ｎ
ここで、MRがミラーRAID領域の数であり、Nがセットにおける記憶ディスクの数である。しかし、図7の構成において、ミラーRAID領域だけを含むセットはない。
【００６３】
ステップ108で、RAID管理システムは、あるとすればパリティRAID領域だけを含むセットの容量を計算する。パリティRAID領域によって消費された仮想容量の数量（PVT）は、以下の方程式によって与えられる。
【００６４】
【数４】
ＰＶＴ＝ＰＲ（Ｎ−１）
ここで、PRがパリティRAID領域の数である。図7において、セット1および2は、パリティRAID領域だけを含み、これらのセットの容量がこの方程式を使って決定される。
【００６５】
ステップ11において、RAID管理システムはMVTとPVTの関数として共通のセットGの容量を計算する。セットGにおけるミラーRAID領域の数MRとパリティRAID領域の数PRが最初に決定されなければならないので、この計算は、より複雑である。ミラーRAID領域の数MRは、次の方程式によって与えられる。
【００６６】
【数５】
0003708195.tif 000004
ここで、V51が（RAID領域内の１つのディスクにある区域に等価な記憶ユニットに与えられる）セットGの外部のすべてのセットにおける、RAID 5の仮想容量を表わし、V11が（また、RAID領域内の一つのディスクにある区域に等価な記憶ユニットに与えられる）セットGの外部のすべてのセットにおける、RAID 1の仮想容量を表わし、Nが、セットGにおけるディスクの数を表現し、そして、LがセットGにおけるRAID領域の数を表わす。ミラーRAID領域の数MRが計算されると、セットGにおけるパリティRAID領域の数PRは、次の方程式によって計算される。
【００６７】
【数６】
ＰＲ＝ＧーＭＲ
MRおよびPRのためのこれらの値が、上記の方程式３および４で使われる。ミラーおよびパリティRAID領域によって消費された仮想容量の数量は、次の方程式によって与えられる。
【００６８】
【数７】
セットＧの仮想容量＝ＭＶＴ＋ＰＶＴ＝1/2ＭＲ＊Ｎ＋ＰＲ（Ｎ−１）
各セットの容量が計算されたあと、アプリケーション・レベルの仮想記憶スペースの全仮想容量は、それらの容量の和（ステップ112）として計算することができる。具体的には、全仮想容量TVCは、次の式に従って引き出される。
【００６９】
【数８】
0003708195.tif 000005
ここで、サブスクリプト「inside」は、ミラーおよびパリティRAID領域が共通のセットG内に位置することを示し、ＮGがセットG内のディスクの数を表現し、Nが共通のセットG以外のセット内のディスクの数を表現し、サブスクリプト「outside」は、共通のセットG以外のセットに位置するミラーおよびパリティRAID領域を示す。もしあるとすれば、セットGの１つの側の上にあるセットが理論的にミラーRAID領域だけを含むと仮定され、またもしあるとすれば、セットGの他の側のセットは、パリティRAID領域だけを含むと仮定されるるので、共通のセットGの外部のセットのために２つの加法が使われる。
【００７０】
再び図5を参照すると、アプリケーション・レベルの仮想記憶スペースのための全仮想容量が決定されると、オプション・ブロック70によって表現されるように、多くの他のシステム決定がなされる。これらのオプションが図6に示される。そのオプションのいくつか、すなわちオプション74-82について、データ記憶システムは、「ホットスペア（hot spare）オプション」がユーザによって起動されるかどうか判断する（ステップ72）。「ホットスペア・オプション」が起動されるとき、データ記憶システムは、別の記憶ディスクが故障する場合に使われるべき最も大きな記憶ディスクの容量をとっておく。従来技術のデータ記憶システムは、典型的に一つの全部の記憶ディスクをいわゆる「ホットスペア」ディスクとして指定する。ホットスペアのディスクは、機械的ベイおよびSCSIバスに取り付けられ、ディスク・アレイ内で充分に使用できるが、あるディスクが故障するまで、アイドル状態にある。ディスクが故障すると、ホットスペアのディスクは、ディスク再構築の目的でアクセス可能なユーザ・データを格納するのに使われる。
【００７１】
この発明のデータ記憶システムによると、アレイにおける最も大きい記憶ディスクの容量に等価な量の記憶スペースが、アレイのすべての記憶ディスクに分布される。どの一つの記憶装置ディスクも、「ホットスペア」ディスクに指名されない。アレイのすべてのディスクが、アクセス可能なユーザ・データを格納する。分布を増やすと、平行性の増加、およびミラー記憶のためにより多くの容量が提供されることによって、かなりパフォーマンスが改善される。
【００７２】
「ホットスペア・オプション」が起動されるならば、物理的な記憶スペースの容量は、ユーザに割り当てることができるアプリケーション・レベルの仮想記憶スペースの最大容量を計算する目的で、ディスク・アレイの最も大きい記憶ディスクの容量によって減らされる（ステップ７２）。アレイにおける最も大きいものを含めてある記憶ディスクが故障する場合、再構築プロセスが実行されることを保証することができるから、最も大きい記憶ディスクが使われる。すべての記憶ディスクが同じサイズである「均質な」ディスク・アレイにおいては、任意の記憶ディスクの容量を使うことができる。図7を参照すると、記憶ディスク4の容量（アレイ90における最も大きいディスク）は、RAID-レベルの仮想記憶スペースにマップされることができる最大容量のアプリケーション・レベルの仮想記憶装置のために使用可能でない。一方、「ホットスペア・オプション」が起動されないなければ、最大仮想記憶スペースは、最も大きい記憶ディスクの物理的な容量の保留によって、減らされない。
【００７３】
オプション1：割り当てられていない容量
ステップ74で、データ記憶システムは「割り当てられていない容量」（ユーザによる使用のために割り当てられていない仮想記憶スペースの残存容量）を計算する。割り当てられていない容量を計算するために、RAID管理システムは、ユーザによる使用のために割り当てられた容量を全仮想容量から減ずる。したがって、割り当てられていない容量は、次の式によって表わされる。
【００７４】
【数９】
割り当てられていない容量＝ホットスペアのスペースを保留するならば、最も大きいディスク装置なしのＴＶＣー割り当てられた容量
その他の場合、
ＴＶＣー割り当てられた容量
ホットスペア・オプションが起動されるならば、最も大きい記憶ディスクの容量がディスク・アレイから取り除かれたと仮定して全仮想容量（TVC）が引き出されることに注意されたい。
【００７５】
オプション2：新しい仮想記憶スペースのための要求
ユーザは、所与のサイズ（ステップ76）の新しい仮想記憶装置スペースを規定することを要求するかもしれない。新しいスペースが全仮想容量と割り当てられた容量の差以下であるならば、データ記憶システムは、新しい仮想記憶スペースに対する要求を承認する。このことは、新しい仮想記憶スペースが割り当てられていない容量以下であるならば要求を承認するというのと同じである。これは、次の式によって与えられる。
【００７６】
【数１０】
次の条件が満足されるとき新しい仮想スペースを是認する：
ホットスペアのスペースを保留する場合、
新しいスペース＜最も大きい記憶ディスクなしのＴＶＣー割り当てられた
その他の場合、
新しいスペース＜ＴＶＣー割り当てられた容量
オプション3：記憶ディスクをドレインする要求
データを一つの記憶ディスクからドレインさせる要求がなされるかもしれない（ステップ78）。「ドレイン」プロセスは、記憶ディスクからすべてのデータを取り除いて、それを他のロケーションに格納する。他のディスクでの新しいメモリ構成のために冗長性が再形成される。次いで、ドレインされた記憶ディスクは、アレイから取り除くことができる。ドレインされる記憶ディスクの容量なしで、かつ割り当てられた容量を差し引いた全仮想容量が、次の式で表現されるように、ゼロ以上であるならば、記憶ディスクをドレインする要求が承認される。
【００７７】
【数１１】
次の条件が満足されるとき記憶ディスクをドレインする要求が承認される：
ホットスペアのスペースを保留する場合、
ドレインされるべき記憶ディスクの容量なしでかつ最大の記憶ディスクなしのＴＶＣー割り当てられた容量＞０
その他の場合、
ドレインされるべき記憶ディスクの容量なしのＴＶＣー割り当てられた容量＞０
オプション4：ユーザに容量空乏の警告
データ記憶システムは、ユーザに容量空乏について警告するためのプロセスにおいて等式８で計算した全仮想容量を使用する（ステップ80）。最初に、全仮想容量（TVC）に対する不使用の仮想記憶スペースの所望の閾値比率がユーザによってセットされる。操作の間、全仮想容量に対する不使用の仮想記憶スペースの実際量の実際の比率が計算され、閾値比率と比較される。実際の比率が閾値比率を越えるならば、データ記憶システムは、そのそのシステムの容量が枯渇したことをユーザに知らせる。実際の比率が閾値比率を越えないならば、警告は与えられない。このオプションは、次の式で表される。
【００７８】
【数１２】
容量枯渇の警告＝
ホットスペアのスペースを保留している場合、
使用するＴＶＣ＝最大の記憶ディスクなしのＴＶＣ
その他の場合、
使用するＴＶＣ＝ＴＶＣ
（しきい値比率ー（不使用の仮想記憶スペース／ＴＶＣ））＞０
オプション５：割り当てられた容量がなくなった記憶ディスクに依存するかどうかの評価
ステップ82で、等式８で計算された全仮想容量の判断に続くもう一つのオプションは、ユーザに割り当てられた容量がなくなった記憶ディスクに依存するかどうかを判断することである。そのような状況は、ユーザが新しい記憶ディスクを加えたとき起こるが、システムは、新しい記憶ディスク・スペースを含むRAIDレベルの仮想記憶スペースをまだ割り当てていない。記憶ディスクは、すでにユーザに割り当てられている容量に影響を及ぼすことなく取り除くことができる。
【００７９】
システムは、ディスクが既存の割り当てられた容量に影響を及ぼすことなく取り除かれうるかどうかを次の関係によって評価する。
【００８０】
【数１３】
次の条件が満足されるならば割り当てられた容量が記憶ディスクに依存する：
ホットスペアのスペースを保留している場合、
なくなった記憶ディスクの容量なしでかつ最大の記憶ディスクなしのＴＶＣー割り当てられた容量＜０
その他の場合、
なくなった記憶ディスクの容量なしのＴＶＣー割り当てられた容量＜０
オプション6：ディスク再構築
もう一つのオプションは、一つの記憶ディスクが故障する場合に、記憶ディスクを再構築する十分な容量があるかどうかを判断することである（ステップ84）。ディスク再構築に関し、割り当てられた容量によって減少した全仮想容量がゼロ以上であるならば、記憶ディスク再構築を許す十分な容量が存在する。この時点で、記憶ディスクが故障し、したがって故障した記憶ディスクの容量は物理的容量の一部でもなく全仮想容量（TVC）の一部でもない。これは、次の関係で表される。
【００８１】
【数１４】
次のときディスク再構築を承認する：
最大の記憶ディスクなしのＴＶＣー割り当てられた容量＞０
オプション7：ホットスペアの起動
ユーザがシステムにデータを格納したあと、ホットスペア・オプションを起動させる要求が生じるかもしれない。全仮想容量（最も大きい記憶装置ディスクの容量によって減らされた）マイナス割り当てられた容量が、ゼロ以上であるならば、ホットスペアのオプションを受け入れる十分なスペースが存在する。ホットスペア・オプションが起動されている（すなわち、最も大きい記憶ディスクのサイズによって全仮想容量TVCを減らすために）という仮定の下に、式９で引き出された割り当てられていない容量が0より大きいかどうかをチェックすることと同じである。ホットスペア要求は、次の関係によって表現することができる。
【００８２】
【数１５】
次のときホットスペア要求を承認する：
最大の記憶ディスクの容量なしのＴＶＣー割り当てられた容量＞０
上述したオプションは、式２ないし８で引き出された全仮想容量の値の使用法を表わす。その他の使用も可能である。各要求は現在の全仮想容量、およびどのようにしてそれが割り当てられないままになっているかに基づいて分析することができるから、絶えず全仮想容量を監視するによって、この発明のデータ管理システムは、効果的に資源の過大割当てを避ける。
【００８３】
図9は、この発明のもう一つの面に従って冗長で階層的なデータ記憶システムを操作する方法を示す。この方法は、既存の記憶装置構成およびワークロード需要を考慮して、より多くのミラー割当てブロックが割り当てられうるかどうかを調べる。ステップ120は、図４を参照して詳述したRAIDレベルの仮想記憶スペースを確立する。ステップ122において、RAID管理システムは、RAIDレベルの仮想記憶スペースにわたって非連続な態様で記憶スペースを保留する。すなわち、RAID管理システムは、（ミラーおよびパリティ記憶領域において）仮想記憶スペースにわたって分布する不使用のスペースの量が保留されることを保証する。新しいミラー割当てまたはパリティ割当てブロックを割り当てる要求を受け取ると（ステップ124）、RAID管理システムは、不使用の割当てブロックを識別するためにRAID領域を調べる（ステップ126）。まだ割り当てられていない不使用の割当てブロックは、RAIDレベルの仮想記憶スペース内の記憶ブロックである。
【００８４】
ステップ128において、不使用の割当てブロックが数えられる。式３および４から、同じ量の仮想記憶スペースが与えられれば、ミラーRAID領域と比較してより多くのデータがパリティRAID領域に格納されうることが思い起こされる。それゆえに、RAID管理システムは、RAID領域にわたってルーピング（ミラー、パリティおよび指定なし）をはじめ、ミラーまたはパリティの現在割り当てられている状態に従って割当てブロックを計数する。指定されていないRAID領域について、そのような指定されていないRAID領域内の割当てブロックのすべては、計算の目的上、不使用のパリティ割当てブロックであると仮定される。
【００８５】
計数プロセスの間、不使用の割当てブロックの計数が予備記憶スペースの量以上になるならば（すなわち、ステップ130からの「はい」分岐）、RAID管理システムは、直ちに新しい割当てブロックを割り当てる要求を許可し（ステップ132）、計数をやめる。一方、不使用の割り当てブロックの計数が、RAIDレベルの仮想記憶スペースにわたっての全掃引に続いて、保留された記憶スペースの量より小さいならば（すなわち、ステップ130から「否定」分岐）、RAID管理システムは、新しい割当てブロックを割り当てる要求を拒否する（ステップ134）。
【００８６】
いくらかの状況においては、RAID管理システムは、選ばれたサイズの新しいミラーRAID領域全体の割当てにを生じる要求を受け取るかもしれない。不使用のミラー割当てブロックが見つからないとき、これは起こる。要求がそのようなものであると、RAID管理システムは、不使用の割当てブロックの数（ステップ128）、予備記憶スペース（割当てブロックに表わされた）、および物理的な記憶スペースの区域につき用意された割当てブロックの数の関数としてミラーRAID領域の最大許容サイズを引き出す。この後者の変数のための値の例は、16の64K割当てブロックが1つのM区域にマップされることができるので、16である。より具体的には、ミラーRAID領域の最大許容サイズ（MRA-最大値）は、次のの式によって与えられる。
【００８７】
【数１６】
ＭＲＡ ｍａｘ＝（２＊ｄｉｆｆ／ＡＢ ｐｅｒ ｒｅｇｉｏｎ）＋２
ここで、"diff"は、不使用の割当てブロックの数と予備記憶スペースの差を表わし、"AB_per region" は、物理的な記憶の区域あたりの割当てブロックの数を表現する。
【００８８】
要求は、もしも新しいミラーRAID領域のサイズが最大許容サイズ以下であれば、許容される。
【００８９】
この発明は、多くの利益を持つ。最初に、それはユーザへの仮想記憶スペースの過大割当てを避ける率直なアプローチを提供する。これは、次の要素の結合により、約束した容量をユーザが利用可能な全仮想容量以下に制限することによってなされる：(1)移行のために保留された少くとも1つのRAID領域、(2)少くとも、ユーザ・データの最小量がミラー記憶装置に保たれることを保証するに必要なスペース、および（３）「ホットスペアの」オプションがイネーブルされる場合、最も大きい記憶ディスクの容量。第２に、全仮想容量が知られると、要求を受け入れるためにスペースを割り当てることができるかどうか判断するために、より多くの記憶装置を求める多くの他の要求をスクリーンすることができる。この予備的な評価が過大割当てを防ぐ。第３に、システムがより多くのミラーRAID領域を受け入れることができないならば、この発明は、より多くのミラーRAID領域を求める要求を評価し、そのような要求を拒否する。
【００９０】
本発明を構造上および方法上の特長に関して幾分具体的な言語で説明した。しかし、本発明は、説明に使われた特定の特長に限られないことを理解されたい。
【００９１】
この発明は、例として次の実施形態を包含する。
1．全体の物理的な記憶スペースを規定する選ばれた容量の複数の記憶ディスクからなるディスク・アレイを備える階層的なデータ記憶システムにおける仮想記憶スペースの過大割当てを避ける方法であって、
RAID領域は、ミラー冗長性に従ってデータを格納するミラーRAID領域、およびパリティ冗長性に従ってデータを格納するパリティ領域を含み、上記ミラーRAID領域は、ある量のデータを格納するのに上記パリティRAID領域によって消費されるRAIDレベルの仮想記憶スペースの量と比較して、同じ量のデータを格納するために同じかより大きい量のRAIDレベルの仮想記憶スペースを消費するようになっており、
複数の上記RAID領域として物理的な記憶スペースを提供するRAIDレベルの仮想記憶スペースに物理的な記憶スペースをマッピングするステップと、
RAIDレベルの仮想記憶スペースをアプリケーション・レベルの記憶スペースへマッピングするステップと、
上記ミラーRAID領域に保持すべき最小割合のユーザ・データを用意するステップと、
上記パリティRAID領域に保持すべき残りの割合のユーザ・データを用意するステップと、
上記ミラーRAID領域に保つべき最小割合のユーザ・データの用意および上記パリティRAID領域に保つべき残りの割合のユーザ・データの用意に基づいてユーザに割り当てることができる、アプリケーション・レベルの仮想記憶スペースの全仮想容量を計算するステップと、
を含む仮想容量の過大割り当てを避ける方法。
【００９２】
2. さらに、次のステップを含む上記1の方法：
ある量のRAID-レベル仮想記憶スペース(40)がディスク・スペアスペースのために保留されているホットスペアのオプションを提供するステップ、および
そのユーザがそのホット予備オプションを起動させたかどうかを検出し、ホットスペアのオプションが起動させられる場合、最も大きいサイズの記憶ディスクの容量を含むことなく、アプリケーション・レベルの仮想記憶スペース(50)の全仮想容量を計算するステップ。
3. さらに、次のステップを含む上記1の方法：
使用のためにユーザによって割り当てられたアプリケーション-レベル仮想記憶スペース(50)の約束した容量を提供するステップ、および
割り当てた容量を全仮想容量から引くことによって、ユーザによる使用のために割り当てられていない容量を計算するステップ。
4. さらに、次のステップを含む上記1の従う方法：
ユーザによる使用のために割り当てされた、アプリケーション-レベル仮想記憶スペース(50)の割り当てられた容量を提供するステップ、
記憶装置ディスクが故障する場合、故障した記憶ディスクの容量を含めることなく全仮想容量を計算するステップ、および
故障した記憶ディスクの容量を含むことなく計算した全仮想容量が割り当てされた容量以上であるかどうかを評価することによって、故障した記憶ディスクの再構築を許すに十分な容量があるかどうかを判断するステップ。
5. さらに、次のステップを含む上記1の方法：
ユーザによる使用のために割り当てされた、アプリケーション・レベルの仮想記憶スペース(50)の割り当てされた容量を提供するステップ、
新しい数量のアプリケーション・レベルの仮想記憶スペース(50)を加えるユーザの要求を受け取るステップ、
新しい数量のアプリケーション・レベルの仮想記憶スペース(50)が、全仮想容量、割り当てられた容量、および要求された新しい数量のアプリケーション・レベルの仮想記憶スペースに基づいてユーザに割り当てられうるかどうかを評価するステップ、および
もしも要求された新しい数量が全仮想容量と割り当てられた容量との間の差より小さいならば、要求された新しい数量のアプリケーション・レベルの仮想記憶スペースをユーザに割り当てることを承認するステップ。
6. さらに、次のステップを含む上記1の方法：
ユーザ使用のために割り当てられたアプリケーション・レベルの仮想記憶スペース(50)の割り当てられた容量を提供するステップ、
一つの記憶装置ディスクの記憶容量が、ユーザに割り当てされた容量に影響を及ぼすことなしに失われてよいかどうか評価するステップ、
とを含み、この評価は、全仮想容量、割り当てられた容量および一つの記憶ディスクの容量に基づいてなされる。
7.さらに、次のステップを含んでいる上記1の方法：
全仮想容量に対する不使用のアプリケーション・レベルの仮想記憶スペース(50)の所望のしきい値比率を設定するステップ、
全仮想容量に対する不使用のアプリケーション・レベルの仮想記憶スペース(50)の実際量の実際の比率を判断するステップ、および
実際の比率がしきい値比率を越えるならば、アプリケーション・レベルの仮想記憶スペースの容量が枯渇させられることをユーザに知らせるステップ。
【００９３】
8. 全物理的容量の物理的な記憶スペースを規定する選ばれた容量のN個の記憶ディスクのディスク・アレイ（11）を含む階層的なデータ記憶システム(10)における仮想記憶スペースの過大割当てを避けるための方法であって、以下のステップを含む方法：
(a) 物理的な記憶スペースを、物理的記憶スペースを複数のRAID領域としてを提示するRAIDレベルの仮想記憶スペース(40)へマッピングステップ、
ここで個々のRAID領域が複数の記憶ディスクにわたって広がり、RAID領域がデータをミラー冗長に従って格納するたくさんのミラーRAID領域（MR）、およびパリティ冗長に従ってデータを格納するたくさんのパリティRAID領域（PR）を含み、ミラーRAID領域がY2MR*Nに等しい量のRAID-レベル仮想記憶スペース（MVT）を消費し、パリティRAID領域がPR(N-1)に等しい量のRAID-レベル仮想記憶スペース（PVT）を消費する；
(b) ミラーRAID領域に保たれるべき最小割合のユーザ・データを用意し、
(c) 一つまたは複数のセットのRAIDレベルの仮想記憶スペースを定義するステップ、
ここで個々のセットは同じ数の記憶ディスクにわたって広がる一群のRAID領域を含む；
(d)最小割合のミラーRAID領域を、最大数の記憶ディスクを有するRAID領域の群を含む１つまたは複数のセットに理論的に配置するステップ、
(e) 残りのRAIDレベルの仮想記憶スペースにパリティRAID領域を理論的に配置するステップ、
(f) ミラーRAID領域およびパリティRAID領域の両方を含むセットを見つけるステップ、
(g) 見つけたセットのRAIDレベルの仮想記憶スペースの容量をMVTおよびPVTの関数として計算するステップ、
(h) 見つけたセット以外のセットのRAIDレベルの仮想記憶スペースの容量をMVTまたはPVTの一つの関数として計算するステップ、および
(i) 全仮想容量を得るために、それぞれのステップ(g)および(h)で計算したセットについてのRAIDレベルの仮想記憶スペースの容量を合計するステップ。
【００９４】
9. 全物理的容量の物理的な記憶スペースを規定する選ばれた容量の複数の記憶装置ディスクのディスク・アレイ（1 1）を備える階層的なデータ記憶システム(10)を操作する方法であって次のステップを含む方法：
(a) 物理的な記憶スペースを複数のRAID領域として物理的な記憶スペースを提示するRAID-レベル仮想記憶スペース(40)にマップするステップ、
ここでRAID領域が、ミラー冗長性に従ってデータを格納するミラー割当てブロックを含むミラーRAID領域、およびパリティ冗長性に従ってデータを格納するにパリティ割当てブロックを含むパリティRAID領域を含み、、個々のRAID領域は、複数の記憶ディスクを横切って広がり、個々の記憶ディスクの区域と関連しており、RAIDレベルの仮想記憶スペースが不使用の割り当てブロックを持っている；
(b) 非連続態様でRAID・レベルの仮想記憶スペース(40)にわたって予備記憶スペースを提供するステップ、
(c) 新しい割当てブロックを、ミラー割当てブロックかパリティ割当てブロックの１つとして割り当てる要求を受け取るステップ、
(d) 不使用の割当てブロックを識別するために個々のRAID領域を調べるステップ、
(e) 不使用の割当てブロックの数を数えるステップ、および
(f) 不使用の割当てブロックの数が予備記憶スペース以上であるならば、新しい割当てブロックを割り当てる要求を許可するステップ。
【００９５】
10. 次のものを含む階層的なデータ記憶システム：
(a)物理的な記憶スペースを定義するたくさんの記憶装置ディスク（1 2）を持っているディスク・アレイ（1 1）；
(b)ディスク（1 2）との間のデータ転送を協調させるためにディスク・アレイ（1 1）に結合されたディスク・アレイ・コントローラ(14)；
(c)RAIDレベルの仮想記憶スペース(40)を記憶ディスクの物理的な記憶スペース(34)にマップするために、ディスク・アレイ・コントローラに結合したRAID管理システム（1 6）；
ここでRAIDレベルの仮想記憶スペースが、複数のRAID領域として物理的な記憶スペースを提示し、個々のRAID領域が複数の記憶装置ディスクを横切って広がり、RAID領域は、データをミラー冗長に従って格納するミラーRAID領域およびデータをパリティ冗長に従って格納するパリティRAID領域を含み、
RAID管理システム（1 6）は、ミラーRAID領域に保つべき最小割合のユーザ・データ、およびパリティRAID領域に保つべき残りの割合のユーザ・データを用意する；
(d)RAID管理システム（1 6）は、RAIDレベルの仮想記憶スペース(40)をユーザに提示するアプリケーション・レベルの記憶スペース(50)にマップする；
(e)RAID管理システムは、ミラーRAID領域に保つべき最小割合のユーザ・データの準備、およびパリティRAID領域に保つべき残りの割合のユーザ・データの準備に基づいてユーザに割り当てすることができるアプリケーション・レベルの仮想記憶スペースの全仮想容量を計算する。
【００９６】
【発明の効果】
この発明によると、冗長性を持つ階層的なデータ記憶システムにおいて、仮想記憶スペースの過大割当てを避けることができる。
【図面の簡単な説明】
【図１】この発明に従う冗長な階層的なディスク・アレイ・データ記憶システムの図表のブロック図である。
【図２】複数の記憶ディスク上の記憶スペースを示す図表で、RAIDレベル1によるデータ記憶を示している。
【図３】複数の記憶ディスク上の記憶スペースの図表で、RAIDレベル５によるデータ記憶を示す。
【図４】2つの仮想記憶スペースが物理的な記憶スペースの上へマップされている、この発明のメモリーマッピング取り決めの図表である。
【図５】この発明の一つの面に従って仮想記憶スペースの過大割当てを避けるための一般の方法の流れ図である。
【図６】過大割当てを避けるために図5に示された一般的方法に続いてとることができるいろいろなステップを示すブロック図である。
【図７】複数の記憶装置ディスクの上の記憶スペースを示す図表で、図5の方法の操作を示す。
【図８】この発明のもう一つの面に従って仮想記憶スペースの過大割当てを避けるのためのより詳細な方法の流れ図である。
【図９】この発明のもう一つの面に従って記憶装置要求を扱うときに、冗長な階層的なディスク・アレイを操作する方法の流れ図である。
【符号の説明】
１０        データ記憶システム
１１        ディスク・アレイ
１２        記憶ディスク
１３        インターフェイス・バス
１４        ディスク・アレイ・コントローラ
１８        ミラー・グループ
２２        パリティ・グループ
【図１】
0003708195.tif 000006
【図２】
0003708195.tif 000007
【図３】
0003708195.tif 000008
【図４】
0003708195.tif 000009
【図５】
0003708195.tif 000010
【図６】
0003708195.tif 000011
【図７】
0003708195.tif 000012
【図８】
0003708195.tif 000013
【図９】
0003708195.tif 000014