(57)【要約】【課題】現在の空き空間および現在の使用率に応答して、アレイ内に空き空間が作り出されるように、アレイ内の異なるＲＡＩＤレベルの使用を自動的に管理する方法およびシステムを提供する。【解決手段】ディスクアレイを管理する方法であって、データを記憶するように構成された複数のコンピュータディスクを設けることと、複数のコンピュータディスクをＲＡＩＤアレイ（１２４）として構成することと、コントローラ（１１６）をＲＡＩＤアレイに連結することと、ユーザがアレイにアクセスするレートを測定することと、コントローラを使用して、測定に応答して、空き空間（１５０）がＲＡＩＤアレイ内に作り出されるように、ＲＡＩＤアレイ内のデータブロックを選択的に移動することと、を含む。【選択図】図２
2004127275.tif 000002
【特許請求の範囲】
【請求項１】
　データ記憶アレイを管理する方法であって、
　データを記憶するように構成された複数のコンピュータディスクを設けることと、
　前記複数のコンピュータディスクをＲＡＩＤアレイとして構成することと、
　コントローラを前記ＲＡＩＤアレイに連結することと、
　前記コントローラを使用して、前記アレイのアクセスレートを測定することと、
　前記コントローラを使用して、前記レートの測定に応答して、前記ＲＡＩＤアレイ内に空き空間が作り出されるように、前記ＲＡＩＤアレイ内でデータブロックを選択的に移動することと、
を含む方法。
【請求項２】
　前記移動することは、前記コントローラを使用して、同じディスクの異なるエリア間でデータブロックを選択的に移動することをさらに含む請求項１記載の方法。
【請求項３】
　前記移動に先立って、前記コントローラを使用して前記アレイ内の空き空間の量を測定することをさらに含む請求項１記載の方法。
【請求項４】
　前記コントローラを使用して、同時に、前記空き空間を作り出し、前記アレイにアクセスする請求項１記載の方法。
【請求項５】
　データブロックは、前記空き空間を作り出す間に、前記コントローラを使用して前記アレイ内の異なるＲＡＩＤレベル間で選択的に移動される請求項１記載の方法。
【請求項６】
　前記空き空間を作り出すことは、前記コントローラを使用して、少なくとも１つの予め定義されたパラメータに応答して、空き空間を作り出すことを含む請求項５記載の方法。
【請求項７】
　コンピュータデータ記憶システムであって、
　アレイとして構成された複数のコンピュータディスクと、
　前記アレイ内の前記各コンピュータディスクにそれぞれ連結され、前記アレイ内のデータにアクセスし、前記アレイ内の空き空間の量を特定するように構成されたＲＡＩＤコントローラと、
　前記コントローラに連結されたユーザインタフェースと、
を備え、前記コントローラは、前記アレイに前記ユーザインタフェースを介してアクセスするレートを測定し、前記特定および前記測定に応答して前記アレイ内に空き空間を選択的に作り出すようにさらに構成され、また、前記アレイ内の異なるＲＡＩＤレベルにデータブロックを選択的に移動することによって、前記空き空間を作り出すようにさらに構成され、また、前記ユーザインタフェースを経由して受け取ったコマンドに応答して、前記空き空間作り出すことの少なくとも一部と同時に、前記アレイ内のデータにアクセスするようにさらに構成された、コンピュータデータ記憶システム。
【請求項８】
　前記コントローラは、前記特定および前記測定に応答して前記空き空間を作り出すようにさらに構成された請求項７記載のシステム。
【請求項９】
　前記コントローラは、前記特定、前記測定、および少なくとも１つの予め定義されたパラメータに応答して前記空き空間を作り出すようにさらに構成された請求項７記載のシステム。
【請求項１０】
　前記コントローラは、前記特定および前記測定を時折行うようにさらに構成された請求項７記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
　本発明は、コンピュータアクセス可能ディスクアレイを制御するシステムおよび方法に関する。
【背景技術】
【０００２】
　コンピュータベースのデータ記憶にディスクアレイが使用されることが知られている。ディスクアレイの１つのカテゴリが、ドライブ冗長アレイ（ＲＡＩＤ）である。ＲＡＩＤシステム内では、様々なレベルのデータ記憶冗長性を利用して、データ破損時またはディスク故障時に記憶されていたデータを再構築することができる。こういった様々なタイプの冗長記憶戦略はＲＡＩＤレベルと呼ばれる。ＲＡＩＤデータ記憶については、米国特許第５，３９２，２４４号に詳細に考察されており、これは参照により本明細書に援用される。
【０００３】
　あるＲＡＩＤ記憶方法は、同じデータの２つまたはそれよりも多くの完全なセットを記憶することを含み、完全な各データセットが１つまたは複数の異なるディスクに記憶される。この戦略は一般に、「高」ＲＡＩＤレベル（すなわち、ＲＡＩＤレベル１）とみなされ、各データセットの同時読み出しによる、記憶されているデータへの相対的に高速なアクセス、および１つのデータセットの破損時またはダメージを受けた場合の、冗長データセットの完全な再構築を提供する。記憶されているデータすべてに完全な冗長性があるため、このＲＡＩＤレベルは相対的に空間集約的な（すなわち、媒体の総数を増大させる）ものである。
【０００４】
　通常「低」ＲＡＩＤレベル（すなわち、ＲＡＩＤレベル５）とみなされる別のＲＡＩＤ記憶方法は、通常、データ記憶空間が高価な場合、たとえば複数の異なるデータセットが管理されている場合などに利用される。このＲＡＩＤレベルはパリティデータセットを利用して、破損したデータセットを再構築できるようにする。このＲＡＩＤレベルは、比較的効率的な記憶（すなわち、媒体の総数が低い）を提供するが、破損したデータセットへのアクセスが可能になるには、その前にその破損データセットの再構築を行う必要がある。さらに、所与のあらゆるデータセットの単一のインスタンスしか記憶されないため、上に述べたより高いＲＡＩＤレベルと比較して、アクセスは相対的に遅い（すなわち、同じデータセットの異なる部分に同時にアクセスすることはできない）。
【０００５】
　以下の同じ譲受人に譲渡された出願に注目する。
【０００６】
　発明者David Umberger、Guillermo NavarroおよびRodger Danielsにより２００２年１０月３日に出願された「A System for Managing a Data Storage Array, a Method of Managing a Data Storage System, and a Raid Controller」と題する米国特許出願第１０／２６４，９１５号、発明者Michael Brent JacobsonおよびLee L. Nelsonにより２００２年１０月３日に出願された「Computer Systems, Virtual Storage Systems and Virtual Storage System Operational Methods」と題する米国特許出願第１０／２６４，９５７号、発明者Michael Brent JacobsonおよびLee L. Nelsonにより２００２年１０月３日に出願された「Virtual Storage Systems, Virtual Storage Methods and Methods of Over Committing a Virtual RAID Storage System」と題する米国特許出願第１０／２６４，６５９号、発明者Rodger DanielsおよびLee L. Nelsonにより２００２年１０月３日に出願された「Virtual Storage Systems and Virtual Storage System Operational Methods」と題する米国特許出願第１０／２６４，５２５号、および発明者Lee L. NelsonおよびRodger Danielsにより２００２年１０月３日に出願された「Virtual Storage Systems and Virtual Storage System Operational Methods」と題する米国特許出願第１０／２６４，６６１号。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
　したがって、将来の記憶空間を確保しながら、ＲＡＩＤデータタイプを最適化することが可能なＲＡＩＤ管理システムが望まれる。
【課題を解決するための手段】
【０００８】
　本発明は、現在の空き空間および現在の使用率に応答して、アレイ内に空き空間が作り出されるように、アレイ内の異なるＲＡＩＤレベルの使用を自動的に管理する方法およびシステムを提供する。
【０００９】
　本発明の一態様は、ディスクアレイを管理する方法であって、データを記憶するように構成された複数のコンピュータディスクを設けることと、複数のコンピュータディスクをＲＡＩＤアレイとして構成することと、コントローラをＲＡＩＤアレイに連結することと、ユーザがアレイにアクセスするレートを測定することと、コントローラを使用して、測定に応答して、空き空間がＲＡＩＤアレイ内に作り出されるように、ＲＡＩＤアレイ内のデータブロックを選択的に移動することと、を含む方法を提供する。
【００１０】
　本発明の別の態様は、ＲＡＩＤディスクアレイを管理する方法であって、ＲＡＩＤコントローラを有するＲＡＩＤディスクアレイを設けることと、コントローラを使用してユーザから複数のコマンドを受け取ることと、コントローラを使用して、複数のコマンドに応答してディスクアレイ内のデータにアクセスすることと、コントローラを使用して、ディスクアレイ内の空き空間の量を特定することと、コントローラを使用してアクセスのレートを測定することと、コントローラを使用して、特定および測定に応答して、ディスクアレイ内に空き空間を選択的に作り出すことと、を含む方法を提供する。
【００１１】
　本発明の別の態様は、コンピュータディスクシステムであって、アレイとして構成された複数のコンピュータディスクと、アレイ内の各コンピュータディスクにそれぞれ連結され、アレイ内のデータにアクセスし、アレイ内の空き空間の量を特定するように構成されたＲＡＩＤコントローラと、コントローラに連結されたユーザインタフェースと、を備えたコンピュータディスクシステムを提供し、コントローラは、アレイにユーザインタフェースを介してアクセスするレートを測定し、特定および測定に応答してアレイ内に空き空間を選択的に作り出すようにさらに構成され、また、アレイ内の異なるＲＡＩＤレベルにデータブロックを選択的に移動することによって、空き空間を作り出すようにさらに構成され、また、ユーザインタフェースを経由して受け取ったコマンドに応答して、空き空間を作り出すことの少なくとも一部と同時に、アレイ内のデータにアクセスするようにさらに構成されている。
【００１２】
　本発明のさらに別の態様は、コンピュータシステムであって、データ記憶手段と、記憶手段内の空き空間の量を特定する手段と、ユーザからの各コマンドに応答して記憶手段内にデータを読み書きする手段と、ユーザによるデータ読み書きのレートを測定する手段と、空き空間が記憶手段内に作り出されるように、特定および測定に応答して記憶手段内のデータを選択的に移動する手段と、を備えたコンピュータシステムを提供する。
【００１３】
　本発明のさらに別の態様は、データ記憶システムであって、アレイとして構成された複数のデータ記憶要素と、アレイ内の各記憶要素にそれぞれ連結され、アレイにデータを選択的に読み書きし、アレイ内の空き空間の量を特定するように構成されたＲＡＩＤコントローラと、コントローラに連結され、コントローラを介してアレイにデータを読み書きする複数の異なるコマンドをそれぞれ選択的に発するように構成されたユーザインタフェースと、を備えたデータ記憶システムを提供し、コントローラは、ユーザインタフェースを介してデータがアレイに対して読み書きされるレートを測定するようにさらに構成され、また、特定および測定に応答して、時折アレイ内に空き空間を作り出すようにさらに構成され、空き空間を作り出すことは、アレイ内の異なるＲＡＩＤレベルにデータブロックを選択的に移動することを含み、コントローラは、ユーザインタフェースを介して受け取ったコマンドに応答して、空き空間を作り出すことの少なくとも一部と同時に、データをアレイに対して読み書きするようにさらに構成されている。
【発明を実施するための最良の形態】
【００１４】
　図１は、本発明の一態様によるＲＡＩＤベースのシステム１１０の考えられる一実施形態を示す。システム１１０は、ネットワーク１１４を経由してＲＡＩＤコントローラ１１６にデータ通信可能にそれぞれ連結されたユーザインタフェースコンピュータ１１２を備える。ＲＡＩＤコントローラ１１６は、入出力監視（Ｉ／Ｏモニタ）回路１１８と、不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）等のメモリ１２０と、を備える。システム１１０には、カップリング１２２によりコントローラ１１６にデータ通信可能に連結されたＲＡＩＤディスクアレイ１２４もさらに含まれる。ディスクアレイ１２４は複数のデータ記憶ディスク１２６を含み、コントローラ１１６はこの複数のデータ記憶ディスク１２６それぞれに独立してアクセスすることができる。アレイ１２４のディスク１２６は、システム１１０の物理データ記憶装置１２８を構成する。
【００１５】
　図２は、システム１１０をブロック線図の形態で示す。物理的な記憶装置１２８は、空き空間（すなわち、使用されていない記憶領域）１５０と、データ空間１５２と、データ空間１５４と、を含む。データ空間１５２および１５４は、ＲＡＩＤレベル１およびレベル５それぞれにあるデータを記憶するために利用され、コントローラ１１６によって定義・管理される。ユーザ１５６は、（図２には示さない）インタフェース１１２を使用して、コントローラ１１６に送られたコマンドを介して空間１５２および１５４内のデータにアクセスする。
【００１６】
　たとえば、ユーザ１５６が、空間１５４中のデータブロック内の情報を更新する（すなわち、変更する）コマンドを発することができる。行われるべき変更は、ネットワーク１１４を経由してユーザコンピュータ１１２からコントローラ１１６にルーティングされる。次いでコントローラ１１６は、空間１５４中の具体的にどのデータブロックを変更すべきかを決定し、連結１２２によって変更を行う。コントローラ１１６は、ＮＶＲＡＭ１２０をバッファとして利用してデータ変更を実行する。
【００１７】
　別の例として、ユーザ１５６は記憶装置１２８からデータを要求することができる。要求は、ネットワーク１１４を経由してユーザコンピュータ１１２からコントローラ１１６に送られるコマンドとして開始される。コントローラ１１６は、空間１５２および／または１５４からのいずれのデータブロック（１つまたは複数）が要求されているかを決定し、連結１２２によってデータを検索し、ネットワーク１１４を介してデータをユーザコンピュータ１１２にルーティングする。ここでも、ＮＶＲＡＭ１２０は、検索の実行に、必要に応じて使用される。ユーザ１５６によって開始された、記憶装置１２８内のデータを更新する、または記憶装置１２８からデータを要求する動作は一般にアクセスと呼ばれ、以下、いずれの動作もそのように呼ぶことにする。
【００１８】
　コントローラ１１６内のＩ／Ｏモニタ１１８は、アクセスに応答して、空間１５０、１５２、および１５４の各サイズを特定するように構成されている。さらに、モニタ１１８は、アクセス動作が行われるレートを測定するように構成されている。新しいデータを記憶装置１２８に書き込む（すなわち、追加する）動作では、コントローラ１１６が、新しいデータが書き込まれるＲＡＩＤレベルに必要なように、空間を空き空間１５０から空間１５２および／または１５４に割り当てる必要がある。反対に、空間１５２および／または１５４内のデータを削除する動作により、新しい空き空間１５０が生まれる。
【００１９】
　ＲＡＩＤレベル１への書き込み動作には、所与のサイズのデータブロックを書き込む場合、ＲＡＩＤレベル５への書き込み動作よりも多くの空間が必要なため、他に使用できる新たな空き空間１５０ができるように、あまり頻繁にアクセスされないデータを空間１５２から空間１５４に移動する必要があることがある。このデータ移動動作は、空き領域作りとして知られ、その優先度は、空き空間１５０が次第に減少するにつれて高くなる。
【００２０】
　図３は、空き領域作り動作をバックグラウンドプロセスとして行うフローチャートを示し、これを全体的に番号２００で表す。バックグラウンドプロセスは、通常、バックグラウンドプロセス２００が進行中であることにシステムユーザ１５６が気付かないように、他の動作と同時に実行されるプロセスである。プロセス自体について説明する前に、プロセス２００の理解に必要な定義を提示する。
【００２１】
　　ｄ１）Ｆは、記憶装置１２８に残っている空き空間１５０の量であり、Ｉ／Ｏモニタ１１８によって特定される。
【００２２】
　　ｄ２）Ｕは、ユーザ１５６によって記憶装置１２８に対して行われているアクセス動作のレート（利用率）の測定値であり、Ｉ／Ｏモニタ１１８によって特定される。Ｕは動的に変化する値である。
【００２３】
　　ｄ３）Ｆｔｈは、記憶装置１２８に保持する必要のある最小空き空間１５０量である。Ｆｔｈは、ユーザ定義可能な変数（インタフェース１１２を介して）であり、この値はコントローラ１１６内に記憶される。
【００２４】
　　ｄ４）Ｕｔｈ（Ｆ）は、Ｕと比較するしきい値であり、空き空間Ｆの関数である。Ｕｔｈ（Ｆ）はコントローラ１１６によって計算される。
【００２５】
　　ｄ５）ＵｍｉｎはＵｔｈ（Ｆ）の最小値である。Ｕｍｉｎは、ユーザ定義可能な変数（インタフェース１１２を介して）であり、その値はコントローラ１１６内に記憶される。
【００２６】
　動作２００はステップ２０４に始まり、Ｉ／Ｏモニタ１１８が記憶装置１２８中の空き空間１５０を特定する。図３では、この値は「Ｆ」と表される。
【００２７】
　ステップ２０５において、ＦがＦｔｈと比較される。ＦがＦｔｈよりも大きい場合、Ｆは十分であると判定され、この時点での空き空間の追加は必要なく、プロセス２００はステップ２２６に進む。ＦがＦｔｈ未満の場合、プロセス２００はステップ２０６に進む。
【００２８】
　次いで、ステップ２０６において、アレイ利用率しきい値Ｕｔｈ（Ｆ）がコントローラ１１６によって計算される。関数Ｕｔｈ（Ｆ）は予め決められており、以下の基準ｃ１を満たすものが選択される。
【００２９】
　　ｃ１）Ｆ⇒０につれて、Ｕｔｈ（Ｆ）⇒１
　換言すれば、空き空間Ｆが０に近づくにつれて、利用率しきい値Ｕｔｈ（Ｆ）は１に近づく。基準ｃ１を満たす多くの関数が利用可能である。基準ｃ１の基本的な目標は、記憶装置１２８への書き込み動作を通してデータを追加することにより、空き空間１５０の量Ｆが０に近づくにつれて、１に等しくなる、または略１に等しくなるＵｔｈ（Ｆ）の関数を確立することである。
【００３０】
　関数Ｕｔｈ（Ｆ）のこのような一候補は、以下である。
【００３１】
　　ｆ１）Ｕｔｈ（Ｆ）＝ｅｘｐ（−αＦ２）
式中、α＝［１／Ｆｔｈ２］ｌｎ（Ｕｍｉｎ）
　Ｕｔｈ（Ｆ）に選ばれる関数は、平滑で連続しており、かつ基準ｃ１を満たす限り、本明細書では重要ではない。したがって、満足のいく多数の関数Ｕｔｈ（Ｆ）が考えられる。
【００３２】
　ステップ２０８に続き、Ｕｔｈ（Ｆ）はＵｍｉｎと比較される。Ｕｔｈ（Ｆ）がＵｍｉｎよりも大きい場合、Ｕｔｈ（Ｆ）はステップ２０６で計算されたままの状態で残され、プロセスフローはステップ２２０に続く。Ｕｔｈ（Ｆ）がＵｍｉｎ以下の場合、ステップ２１０において、Ｕｔｈ（Ｆ）はＵｍｉｎに等しくセットされる。いずれの場合でも、プロセス２００はステップ２２０に続き、アレイ利用率ＵがＩ／Ｏモニタ１１８によって測定される。
【００３３】
　次に、ステップ２２２において、ＵがＵｔｈ（Ｆ）と比較される。ＵがＵｔｈ（Ｆ）未満の場合、利用率はしきい値Ｕｔｈ未満である。これは、アクセス動作が行われているレートが、空き領域作り動作によりバックグラウンド動作として空き空間を作り出すに十分低いことを意味する。これら条件下では、プロセス２００はステップ２２４に進む。しかし、ＵがＵｔｈ（Ｆ）以上である場合、アクセス動作が行われているレートは、バックグラウンドで空き領域作り動作を行えば、応答時間に影響が及ぶ（すなわち、応答が遅れてしまう）であろう高いレートである。これら状況下では、プロセス２００はステップ２２６に進む。
【００３４】
　ステップ２２４において、追加の空き空間１５０が記憶装置１２８に作り出される。この動作は空き領域作りとして知られ、データブロックを空間１５２から空間１５４に選択的に移動すること、すなわち選択されたデータをＲＡＩＤレベル１からより空間効率的なＲＡＩＤレベル５にシフトすることにより成し遂げられる。この方法では、必要な空き空間１５０は最終的に、前に使用されていたがもはや必要のなくなった空間から取り戻され、移動されたデータの完全な冗長性を実現する。ステップ２２４におけるデータの選択的な移動は、コントローラ１１６により、必要に応じてＮＶＲＡＭ１１８をバッファとして利用して行われる。図２はこの動作の図を提供し、移行するデータブロック１７６が空間１５２中の元のロケーション１７２から取られ、ＮＶＲＡＭ１２０を経由して空間１５４に移動される。ステップ２２４のデータ移動動作は「バックグラウンド」で行われ、ユーザ１５６により要求された他のデータアクセス動作は、空き領域作り動作２２４と同時に行われる。
【００３５】
　ステップ２２４が完了すると、プロセスは待機期間ステップ２２６に続く。この待機期間は、コントローラ１１６によって決定される。
【００３６】
　待機ステップ２２６は、最も新しく特定された利用率Ｕの関数として静的または動的に特定される。ステップ２２６の待機期間を特定する他の方法も可能である。ステップ２２６が完了すると、プロセス２００はステップ２０４に戻り、繰り返される。
【００３７】
　プロセス２００の一目標は、ＲＡＩＤアレイアクセスレートおよび利用可能な空き空間を監視することによって空き空間の不足を予測して、空き空間が不足する事態を回避するように、ＲＡＩＤシステムに適応的な制御戦略を提供することである。この常時監視およびデータシフトプロセスを通して、将来の記憶空間要件を確保しながら、記憶データへのユーザアクセスが常に提供される。
【００３８】
　法律に準拠して、構造的特徴および方法的特徴に関して多少具体的な言葉で本発明を説明した。しかし、本明細書に開示した手段は本発明を実施する形態を含むため、本発明は図示し説明した特定の特徴に限定されないことが認められる。したがって、本発明は、均等論に従って適宜解釈される特許請求の範囲の適切な範囲内のあらゆる形態または変更で請求される。
【図面の簡単な説明】
【００３９】
【図１】本発明の考えられる一実施形態の相互に関連する要素の図である。
【図２】本発明の考えられる一実施形態のブロック線図である。
【図３】本発明の空き領域作りプロセスの考えられる一実施形態のフローチャートである。
【図１】
2004127275.tif 000003
【図２】
2004127275.tif 000004
【図３】
2004127275.tif 000005