(57)【特許請求の範囲】
【請求項１】
プロセッサおよびメモリを用いるコンピューティング環境において、１）別個の２個以上のＣＳＭ（コンピュータ・ストレージ媒体）にわたるスパニング仮想ハード・ドライブである第１の仮想ハード・ドライブと、２）前記２個以上のＣＳＭのうちの第１のＣＳＭにある非スパニング仮想ハード・ドライブである第２の仮想ハード・ドライブとを同時に保持するための方法であって、
ボリューム・スパニングを用いて前記２個以上のＣＳＭにわたり前記第１の仮想ハード・ドライブのデータを格納するステップと、
前記第１の仮想ハード・ドライブを前記２個以上のＣＳＭで保持しながら、前記第２の仮想ハード・ドライブのデータを、前記第１の仮想ハード・ドライブを記憶する前記２個以上のＣＳＭのうちの前記第１のＣＳＭに格納するステップであって、前記第２の仮想ハード・ドライブは前記２個以上のＣＳＭにスパニングされない、ステップと、
前記コンピューティング環境に含まれるホストが、データを、非スパニング仮想ハード・ドライブであるか又はスパニング仮想ハード・ドライブである第３の仮想ハード・ドライブに記憶する、前記ホストにおいて動作する仮想マシンからのリクエストを受け、前記第３の仮想ハード・ドライブを含むボリュームは不十分であると判定したときに、前記ホストが、前記第３の仮想ハード・ドライブを別個の２個以上のＣＳＭにわたりスパニングするか又は前記第３の仮想ハード・ドライブをスパニングしている別個の２個以上のＣＳＭにＣＳＭを追加するステップであって、前記第３の仮想ハード・ドライブがスパニングされるＣＳＭのうちの１つは前記第１のＣＳＭであり、該第１のＣＳＭは前記第２の仮想ハード・ドライブを保持する、ステップと
を含む方法。
【請求項２】
請求項１に記載の方法であって、入来するＩ／Ｏリクエスト（入力／出力リクエスト）をハイパーバイザー層において検査して、前記２個以上のＣＳＭのうちの何れのＣＳＭが前記Ｉ／Ｏリクエストと関連するデータを保持するかを識別するステップを更に含む方法。
【請求項３】
請求項１に記載の方法であって、入来するＩ／Ｏリクエスト（入力／出力リクエスト）をホスト・ファイル・システムにおいて検査して、前記２個以上のＣＳＭのうちの何れのＣＳＭが前記Ｉ／Ｏリクエストと関連するデータを保持するかを識別するステップを更に含む方法。
【請求項４】
請求項１に記載の方法であって、前記第２の仮想ハード・ドライブを前記２個以上のＣＳＭにわたってスパニングするステップを更に含む方法。
【請求項５】
請求項４に記載の方法であって、前記第１の仮想ハード・ドライブは、スパニングされた、非スパニング仮想ハード・ドライブであった前記第２の仮想ハード・ドライブ又は前記第３の仮想ハード・ドライブよりも少なくとも１つ多くのＣＳＭにわたりスパニングされる、方法。
【請求項６】
請求項１に記載の方法であって、前記２個以上のＣＳＭは、共通ノードである前記ホスト内に組み込まれる、方法。
【請求項７】
請求項１に記載の方法であって、前記第２の仮想ハード・ドライブは、別個のＣＳＭの別個のボリュームである、方法。
【請求項８】
請求項１に記載の方法であって、ボリューム・スパニングは、データが格納される１個より多くの別個のＣＳＭを１個のボリュームとして前記仮想マシンに提供する、方法。
【請求項９】
コンピューティング・システムに、１）別個の２個以上のＣＳＭ（コンピュータ・ストレージ媒体）にわたるスパニング仮想ハード・ドライブである第１の仮想ハード・ドライブと、２）前記２個以上のＣＳＭのうちの第１のＣＳＭにある非スパニング仮想ハード・ドライブである第２の仮想ハード・ドライブとを同時に保持するための方法を行わせるプログラムであって、前記方法は、
前記第１の仮想ハード・ドライブのデータに対する第１のリクエストを受けるステップと、
前記２個以上のＣＳＭにスパニングされる前記第１の仮想ハード・ドライブへ前記第１のリクエストを送るステップと、
前記第２の仮想ハード・ドライブのデータに対する第２のリクエストを受けるステップと、
前記２個以上のＣＳＭのうちの前記第１のＣＳＭへ前記第２のリクエストを送るステップであって、前記第２の仮想ハード・ドライブと前記第１の仮想ハード・ドライブとの双方が、少なくとも部分的に、前記第１のＣＳＭにおいて実質的に同時にアクセス可能である、ステップと、
非スパニング仮想ハード・ドライブであるか又はスパニング仮想ハード・ドライブである第３の仮想ハード・ドライブのデータに対する、前記コンピューティング・システムにおいて動作する仮想マシンからの第３のリクエストを受け、前記第３の仮想ハード・ドライブを含むボリュームは不十分であると判定するステップと、
前記判定に応答して、前記第３の仮想ハード・ドライブを別個の２個以上のＣＳＭにわたりスパニングするか又は前記第３の仮想ハード・ドライブをスパニングしている別個の２個以上のＣＳＭにＣＳＭを追加するステップであって、前記第３の仮想ハード・ドライブがスパニングされるＣＳＭのうちの１つは前記第１のＣＳＭであり、該第１のＣＳＭは前記第２の仮想ハード・ドライブを保持する、ステップと
を含む、プログラム。
【請求項１０】
請求項９に記載のプログラムであって、前記コンピューティング・システムはホストとして機能し、前記第１のリクエストは前記仮想マシンからのＩ／Ｏリクエストであり、それにより、前記ホストは前記２個以上のＣＳＭを制御する、プログラム。
【請求項１１】
請求項９に記載のプログラムにおいて、前記コンピューティング・システムはホストとして機能し、前記第１のリクエストを送る前記ステップは、前記ホストのハイパーバイザー層で行われる、プログラム。
【請求項１２】
請求項９に記載のプログラムにおいて、前記コンピューティング・システムはホストとして機能し、前記第１のリクエストを送る前記ステップは、前記ホストのホスト・ファイル・システム層で行われる、プログラム。
【請求項１３】
請求項９に記載のプログラムにおいて、前記第１のＣＳＭは、前記第１の仮想ハード・ドライブ、前記第２の仮想ハード・ドライブ及び動的にスパニングされる前記第３の仮想ハード・ドライブのうちの少なくとも一部を含む、プログラム。
【請求項１４】
請求項９に記載のプログラムにおいて、前記方法は、スパニングされたボリュームを前記第１のＣＳＭへ動的に付加し、前記第１のＣＳＭが、スパニングされたボリュームとスパニングされていないボリュームとの双方を同時に保持するようにするステップを更に含む、プログラム。
【請求項１５】
請求項９に記載のプログラムにおいて、前記方法は、前記２個以上のＣＳＭから、ボリュームをスパニングするＣＳＭを選択するステップを更に含む、プログラム。
【請求項１６】
１）別個の２個以上のＣＳＭ（コンピュータ・ストレージ媒体）にわたるスパニング仮想ハード・ドライブと、２）前記２個以上のＣＳＭのうちの第１のＣＳＭにある非スパニング仮想ハード・ドライブとを同時に保持するためのシステムであって、
ホストを含み、前記ホストは、
（１）仮想マシンと、
（２）仮想ハード・ドライブ・ドライバ（ＶＨＤドライバ）と、
（３）ホスト・ファイル・システムと、
（４）スパニング仮想ハード・ドライブである第１の仮想ハード・ドライブの少なくとも一部分と、非スパニング仮想ハード・ドライブである第２の仮想ハード・ドライブの全体と、非スパニング仮想ハード・ドライブであるか又はスパニング仮想ハード・ドライブである第３の仮想ハード・ドライブの少なくとも一部分とを保持する第１のＣＳＭと、
（５）前記第１の仮想ハード・ドライブの少なくとも一部分を保持し、前記第２の仮想ハード・ドライブ及び前記第３の仮想ハード・ドライブの少なくとも一部を保持しない第２のＣＳＭと
を含み、前記ホストは、
（ａ）前記第３の仮想ハード・ドライブ上のデータに対する前記仮想マシンからのリクエストを受け、
（ｂ）前記第３の仮想ハード・ドライブを含むボリュームは不十分であると判定する
ことに基づき、前記第３の仮想ハード・ドライブを、少なくとも前記第１のＣＳＭと前記第２のＣＳＭとにわたりスパニングする、システム。
【請求項１７】
請求項１６に記載のシステムであって、前記ＶＨＤドライバは、Ｉ／Ｏリクエストを前記第１のＣＳＭおよび前記第２のＣＳＭへリダイレクトする、システム。
【請求項１８】
請求項１６に記載のシステムであって、前記ホスト・ファイル・システムはＶＨＤフィルターを含み、前記ＶＨＤフィルターが、Ｉ／Ｏリクエストを前記第１のＣＳＭおよび前記第２のＣＳＭへリダイレクトする、システム。
【請求項１９】
請求項１６に記載のシステムであって、前記第１のＣＳＭおよび前記第２のＣＳＭは、１個以上の追加のスパニングされたボリュームと、１個以上のスパニングされないボリュームとを含むように動的に調整を行う、システム。
【請求項２０】
請求項９から１５のうちの何れか一項に記載のプログラムを含む１個以上のコンピュータ・ストレージ媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
[0001]  伝統的に、仮想マシンのホストは、仮想マシンによりアクセス可能なデータを格納するための物理ディスクを提供する。ホストから見ると、データは、ディスク上のファイルに見えるが、仮想マシンから見ると、データは、ハード・ドライブに保持されているように見える。このファイルは仮想ハード・ドライブと呼ばれ、仮想ハード・ドライブは、ホストの特定のディスクに保持されるか、または複数のホスト・ディスクにわたってスパニングされる。伝統的に、仮想マシンは、共通ホストの物理的リソースを活用するように実装されるので、１個のホストに関して幾つかの仮想マシンが存在し得る。伝統的に、所与のホストにおいて、ホスト上の仮想マシンの全ては、排他的データ構造構成（exclusive data structure configuration）（例えば、全てがスパニングされる、または全てがスパニングされない）に制限される。特定のタイプのデータ構造の排他性は、Ｉ／Ｏの分離の可変性、フォールト・トレランスの調整、およびアクセスの調整の可能性を妨げ得る。
【発明の概要】
【０００２】
[0002]  本発明の実施形態は、２個以上のコンピュータ・ストレージ媒体にわたるスパニングされた仮想ハード・ドライブ（spanned virtual hard drive、スパニング仮想ハード・ドライブ）と、コンピュータ・ストレージ媒体のうちの１個のコンピュータ・ストレージ媒体におけるスパニングされていない仮想ハード・ドライブ（non-spanned virtual hard drive、非スパニング仮想ハード・ドライブ）とを同時に保持するためのシステム、方法、およびコンピュータ・ストレージ媒体と関連する。方法は、ボリューム・スパニングを用いて、コンピュータ・ストレージ媒体にわたりスパニング仮想ハード・ドライブのデータを格納することを含む。スパニング仮想ハード・ドライブはコンピュータ・ストレージ媒体に保持されるが、方法は、非スパニング仮想ハード・ドライブのデータをコンピュータ・ストレージ媒体のうちの１個のコンピュータ・ストレージ媒体に格納することを含む。
【０００３】
[0003]  この概要は、以下の詳細な説明で更に説明する概念のうちの選択したものを簡素化した形で紹介するものである。この概要は、特許請求の範囲に記載の主題事項の鍵となる特徴や本質的な特徴を特定することを意図しておらず、また、特許請求の範囲に記載の主題事項の範囲を決定する際の支援として用いることを意図していない。
【０００４】
[0004]  本発明の例示的実施形態を、添付の図面を参照して以下で詳細に説明する。添付の図面は、ここでの参照により、説明に組み込まれたものとする。
【図面の簡単な説明】
【０００５】
【図１】図１は、本発明の実施形態の実施に適切である例示的なコンピューティング・デバイスを示す。
【図２】図２は、本発明の実施形態に従った、複数のスパニングされたディスクを有する例示的なノードを示す。
【図３】図３は、本発明の実施形態に従った、複数の分離したディスクを有する例示的なノードを示す。
【図４】図４は、本発明の実施形態に従った、ハイブリッド・データ構造でデータを保持する複数のディスクを有する例示的なノードを示す。
【図５】図５は、本発明の実施形態に従った、ハイパーバイザー層においてＶＨＤドライバを有する例示的なホストを示す。
【図６】図６は、本発明の実施形態に従った、ホスト・ファイル・システム層においてＶＨＤフィルターを有する例示的なホストを示す。
【図７】図７は、本発明の実施形態に従った、２個以上のコンピュータ・ストレージ媒体（ＣＳＭ）にわたるスパニング仮想ハード・ドライブと、２個以上のＣＳＭのうちの第１のＣＳＭにおける非スパニング仮想ハード・ドライブとを同時に保持するための方法を示す。
【図８】図８は、本発明の実施形態に従った、２個以上のＣＳＭにわたるスパニング仮想ハード・ドライブと、２個以上のＣＳＭのうちの第１のＣＳＭにおける非スパニング仮想ハード・ドライブとを同時に保持するための別の方法を示す。
【発明を実施するための形態】
【０００６】
[0013]  本発明の実施形態の主題事項は、ここでは、法定的な要求に適合するように特定的に説明される。しかし、説明自体は、特許の範囲を限定することを意図していない。むしろ、発明者は、別の現存する技術や将来の技術と関連して、この書類に記載のステップと似た別のステップやステップの組み合わせを含むように、特許請求の範囲に記載の主題事項が別の方法で実施でき得ることを企図している。
【０００７】
[0014]  本発明の実施形態は、２個以上のコンピュータ・ストレージ媒体にわたるスパニング仮想ハード・ドライブと、コンピュータ・ストレージ媒体のうちの１個のコンピュータ・ストレージ媒体上の非スパニング仮想ハード・ドライブとを同時に保持するためのシステム、方法、およびコンピュータ・ストレージ媒体と関連する。方法は、ボリューム・スパニングを用いてコンピュータ・ストレージ媒体にわたってスパニング仮想ハード・ドライブのデータを格納することを含む。スパニング仮想ハード・ドライブはコンピュータ・ストレージ媒体に保持されるが、方法は、非スパニング仮想ハード・ドライブのデータをコンピュータ・ストレージ媒体のうちの１個のコンピュータ・ストレージ媒体に格納することを含む。
【０００８】
[0015]  別の構成では、本発明は、複数のディスクにわたるスパニング仮想ハード・ドライブと、ディスクのうちの１個のディスクにおける非スパニング仮想ハード・ドライブとを同時に保持するための別の方法を提供する。方法は、スパニング仮想ハード・ドライブのデータに関しての、Ｉ／Ｏなどのような第１のリクエストを受信することを含む。また、方法に関して、第１のリクエストを、スパニング仮想ハード・ドライブへ送ることを記載している。また、方法に関して、非スパニング仮想ハード・ドライブのデータに関しての第２のリクエストを受信することを記載している。更に、方法に関して、第２のリクエストを、非スパニング仮想ハード・ドライブを保持するディスクへ送ることを記載している。非スパニング仮想ハード・ドライブとスパニング仮想ハード・ドライブとの双方とも、共通ディスクにおいて、少なくとも部分的に同時にアクセス可能である。
【０００９】
[0016]  本発明の第３の構成は、２個以上のディスクにわたるスパニング仮想ハード・ドライブと、２個以上のディスクのうちの第１のディスクにおける非スパニング仮想ハード・ドライブとを同時に保持するためのシステムを提供する。システムはホストを含む。ホストは、仮想マシンと、仮想ハード・ドライブ・ドライバと、ホスト・ファイル・システムとを含む。更に、ホストは、スパニング仮想ハード・ドライブの少なくとも一部分と、非スパニング仮想ハード・ドライブの全部分との双方を保持する第１のコンピュータ・ストレージ媒体を含む。また、ホストは、スパニング仮想ハード・ドライブの少なくとも一部分を保持するが非スパニング仮想ハード・ドライブを保持しない第２のコンピュータ・ストレージ媒体を含む。
【００１０】
[0017]  本発明の実施形態の概観を簡単に説明したが、ここで、実施形態の実施に適切な例示的な動作環境について説明する。
[0018]  全体的に図面を参照するが、最初に図１を参照すると、本発明の実施形態の実施に適切な例示的な動作環境が示されており、その全体がコンピューティング・デバイス１００として示されている。コンピューティング・デバイス１００は、適切なコンピューティング環境の単なる一例であり、本発明の使用や機能の範囲に関する限定を示唆することを意図していない。コンピューティング・デバイス１００は、例示したモジュール／コンポーネントのうちの何れかのものや、モジュール／コンポーネントを組み合わせたものと関連する依存性や必要性を有するものであると、解釈すべきではない。
【００１１】
[0019]  実施形態は、コンピュータ・コードまたは機械で使用可能な命令と一般的に関連して説明される。機械で使用可能な命令には、コンピュータや他の機械で実行されるプログラム・モジュールなどのようなコンピュータ実行可能命令が含まれ、他の機械としては、パーソナル・データ・アシスタントや他の手持ち型デバイスなどがある。一般に、ルーチン、プログラム、オブジェクト、モジュール、データ構造などを含むプログラム・モジュールは、特定のタスクを行うコードまたは特定の抽象データ型を実施するコードと関連する。実施形態は様々なシステム構成で実施でき、システム構成には、手持ち型デバイス、大衆消費電子製品、汎用コンピュータ、専門的コンピューティング・デバイスなどが含まれる。また、実施形態は分散型コンピューティング環境で実施することもでき、その場合、タスクは、通信ネットワークを通じてリンクされたリモートの処理装置により行われる。
【００１２】
[0020]  図１を続けて参照すると、コンピューティング・デバイス１００は、メモリ１１２と、１以上のプロセッサ１１４と、１以上のプレゼンテーション・モジュール１１６と、入力／出力（Ｉ／Ｏ）ポート１１８と、Ｉ／Ｏモジュール１２０と、例示的な電源１２２とを直接的または間接的に結合するバス１１０を含む。バス１１０は、１以上のバス（例えば、アドレス・バス、データ・バス、これらのバスの組み合わせなど）を表す。図１の様々なブロックは、明瞭化を目的として線により示しているが、実際には、様々なモジュールの描写はこのように明確にできず、暗喩的に言うと、正確には線は中間的で曖昧なものである。例えば、ディスプレイ装置などのようなプレゼンテーション・モジュールをＩ／Ｏモジュールと考慮する場合もある。また、プロセッサはメモリを有する。この発明者は、そのようなことが技術の特質であることを認識しており、図１に示す図は１以上の実施形態と関連して使用できる単なる例示的なコンピューティング・デバイスであるということを繰り返して述べておく。「ワークステーション」、「サーバー」、「ラップトップ」、「ブレード」、「ノード」などのカテゴリー間での区別は行っていない。なぜなら、これらの全ては、図１の範囲内にあると考えられており、「コンピュータ」または「コンピューティング・デバイス」を示すからである。
【００１３】
[0021]  コンピューティング・デバイス１００は様々なコンピュータ読取可能媒体を含む。コンピュータ読取可能媒体は、ランダム・アクセス・メモリ（ＲＡＭ）、リード・オンリー・メモリ（ＲＯＭ）、電気的消去可能プログラマブルＲＯＭ（ＥＥＰＲＯＭ）、フラッシュ・メモリ、または他のメモリ技術、ＣＤＲＯＭ、デジタル・バーサタイル・ディスク（ＤＶＤ）、または他の光媒体やホログラフィー媒体、磁気カセット、磁気テープ、磁気ディスク記憶装置、または他の磁気記憶装置、または望まれる情報をエンコードするために使用でき且つコンピューティング・デバイス１００によりアクセスできる他の媒体を含むが、これらには限定されない。
【００１４】
[0022]  メモリ１１２は、揮発性および／または不揮発性のメモリの形態であり、非一時的コンピュータ・ストレージ媒体などのようなコンピュータ・ストレージ媒体（「ＣＳＭ」）を含む。メモリは、取り外し可能、取り外し不可能、またはこれらの組み合わせとすることができる。例示的なハードウェア・デバイスは、ソリッドステート・メモリ、ハード・ドライブ、光ディスク装置などを含む。コンピューティング・デバイス１００は、メモリ１１２やＩ／Ｏモジュール１２０などのような様々なエンティティからデータを読み出す１以上のプロセッサを含む。プレゼンテーション・モジュール１１６（１以上）は、ユーザーや他のデバイスに対してデータ表示を提供する。例示的なプレゼンテーション・モジュールは、ディスプレイ装置、スピーカー、プリント・モジュール、振動モジュールなどを含む。Ｉ／Ｏポート１１８は、コンピューティング・デバイス１００が、Ｉ／Ｏモジュール１２０を含む他のデバイスと論理的に結合することを可能にする。なお、Ｉ／Ｏモジュール１２０を含む他のデバイスは、ビルトインされたものであり得る。例示的なモジュールは、マイクロフォン、ジョイスティック、ゲーム・パッド、サテライト・ディッシュ、スキャナー、プリンター、ワイヤレス・デバイスなどを含む。
【００１５】
[0023]  図２は、本発明の実施形態に従った、複数のＣＳＭを有する例示的なノード２００を示す。ノードは、図１のコンピューティング・デバイス１００などのようなコンピューティング・デバイスとすることができる。例えば、ノードは、ブレードや、サーバーや、ネットワークを用いてアクセス可能なデータの１以上の部分を保持するために使用される他の分散型ストレージ・コンポーネントとすることができる。
【００１６】
[0024]  ノード２００などのようなノードが任意の数および／またはタイプのＣＳＭを含み得ることが、理解される。例えば、例示的なノードは、４個の物理ハード・ドライブなどのような４個の別々のＣＳＭを含む。例示的なデータ・ストレージ構造では、第１のディスク（ディスク０）は、ホスト・システムおよび／または１以上の仮想マシン（「ＶＭ」）などのためのルート・オペレーティング・システム（root operating system）（「ＯＳ」）のために、リザーブすることができる。この例を続けて用いると、残りの３個のＣＳＭは、ゲスト・コンテナ・リソース（例えば、ＶＭにより知覚されるボリューム）のためにリザーブされる。この例示的なデータ・ストレージ構造の構成は、３個のＣＳＭにスパニングする１個のボリュームを露出させる。
【００１７】
[0025]  複数のＣＳＭにわたってボリュームをスパニングさせることにより、３個の別々のＣＳＭ（またはそれらの一部）が連続した１個のボリュームであるように見える外観を、ＶＭ（またはハイパーバイザー層またはその上の何れかの層）に提供する。しかし、ホストのレベルでは（例えば、ハードウェアの観点からは）、それらは、実際に複数のボリュームを有する３個の別々のＣＳＭである。従って、ここで使用する用語は、それらに対する観点に応じて変わり得る。例えば、ＶＭは、ＶＨＤを知覚するが、ホストは、それと同じデータをファイル（またはボリュームやパーティション）として知覚する。更なる例については、後に図４と関連して説明する。
【００１８】
[0026]  図２に戻ると、ノード２００は、ディスクＡ２０２、ディスクＢ２０４、およびディスクＣ２０６を含む。ディスク２０２−２０６のそれぞれは、任意の形態のＣＳＭ（例えば、揮発性、不揮発性、ＲＡＭ、光、ハード・ディスクなど）とすることができる。ここでは、「ディスク」という用語は、ＣＳＭに対する総称的な用語として用いており、特定の形態のＣＳＭに限定することを意図していない。ノード２００のディスク２０２−２０４は、ボリューム／コンテナを全てのディスクにわたってスパニングさせることを可能にするボリューム・スパニング（volume spanning）をサポートするディスクである。例えば、ボリューム１  ２０８、ボリューム２  ２１０、ボリューム３  ２１２、およびボリューム４  ２１４の全てが、ディスク２０２−２０６にスパニングしている。ハードウェアの観点からは、ボリューム１  ２０８は、３個の別々のファイル、即ち、ファイル１  ２１８、ファイル２  ２２０、およびファイル３  ２２２である。しかし、ＶＭの観点からは、ボリューム１  ２０８は、ＶＨＤ１  ２１６などのような仮想ハード・ドライブ（「ＶＨＤ」）を保持する連続したボリュームである。ＶＨＤ（仮想ハード・ディスクとも言う）は、仮想ハード・ディスク・ファイル・フォーマットであり、物理ハード・ディスク・ドライブ（例えば、ＣＳＭ）で見つけられるもの、例えば、ディスク・パーティションやファイル・システムを、含むことができる。ＶＨＤは、典型的には、ＶＭのための「ハード・ディスク」として用いられる。従って、物理コンピューティング・デバイスが物理ハード・ディスクを使用するのと同じように、ＶＭも同様にＶＨＤを使用することができる。
【００１９】
[0027]  図２は、他のコンポーネント（例えば、プロセッサ、通信コンポーネント、電源など）を明確に示していないが、そのようなコンポーネントについては考えられており、また、それらは図１と関連して説明したコンピューティング・デバイスのようなデバイスに当然のものであることは、理解できる。従って、図２（および本願の他の図面）は、特定の情報を含むが、追加のコンポーネント、ステップ、および項目を含むこと（および含み得ること）も考えて描かれている。更に、図２はストライピング型のデータ・ストレージ構成を示すが、任意のボリューム・スパニング構成も考えられており、従って、それが本発明の実施形態と関連して使用され得ることが、理解される。例えば、第１のボリュームおよび第２のボリュームは第１のＣＳＭの第１のパーティションを使用し、また、第１のボリュームおよび第２のボリュームは第２のＣＳＭの第２のパーティションを使用することができる。この例では、第１のボリュームは、第１のＣＳＭと第２のＣＳＭとにわたってスパニングし、第１のＣＳＭにおいて第２のボリュームと共通のパーティションを共有する。上記のものは一例であると考えられており、更なる配置も考えられている。
【００２０】
[0028]  図３は、本発明の実施形態に従った、複数のＣＳＭを有するノード３００を示す。ノード３００は、ディスクＡ３０２、ディスクＢ３０４、およびディスクＣ３０６を含む。しかし、図２のノード２００とは異なり、ノード３００はスパニングを用いない。従って、ノード３００では、各ＶＨＤは、別々のディスクとして構成される。ノード３００は複数のＶＨＤ３０８−３２８を含み、各ＶＨＤは複数のディスクにわたってスパニングするものではない。
【００２１】
[0029]  しかし、図２のノード２００で用いられる構造と、図３のノード３００で用いられる構造とは、双方とも、ノードの２個以上のディスクにわたり排他的ストレージ・ソリューションを実施するという点で似ている。図２の場合、２個以上のディスクが、スパニング（例えば、ボリューム・スパニング）により排他的に構成されている。図３は、ＶＨＤによる別々のディスク使用を排他的に実施する２個以上のディスクを提供する（例えば、各ＶＨＤは、１個の特定の物理ディスクに限定される）。「Ｊｕｓｔ  ａ  ｂｕｎｃｈ  ｏｆ  ｄｉｓｋｓ（単なるディスクの束）」（「ＪＢＯＤ」）構成は、図３に示される構成の一例である。
【００２２】
[0030]  図２の構成は、可能な最大のコンテナを格納できるようにする。更に、図２のストレージ抽象化は、個々のディスク上のコンテナ・ファイルのアクティブな管理を必要とせずに、複数のディスクにわたってのコンテナ資源の割り当てを簡素化する。しかし、図２の構成には欠点もある。３個のディスク（この例では）のうちの１個のディスクが故障すると、ノード２００全体のデータが失われることになり得る。これは、各ディスクにおいて単一障害点（single point of failure）をもたらす。これは、使用されるディスクの数を、同じデータを格納するために個々に必要とされるディスクの数により除算して得られるファクタに応じた分だけ、データ損失の可能性を増加させる。更に、排他的にスパニングするソリューションは、入力／出力（「Ｉ／Ｏ」）分離を提供しない。例えば、スパニングされたディスク上のＶＭの集中型Ｉ／Ｏオペレーションは、同じディスクを用いる他の全てのＶＭの応答時間に影響を及ぼす。従って、図２の構成は、ファイル管理とコンテナ・サイズ・メンテナンスのオペレーションにおける効率化を提供するが、障害（fault）とＩ／Ｏ分離との問題をもたらす。
【００２３】
[0031]  図３に示される構成は、ハイレベルのＩ／Ｏ分離とフォールト・トレランスとを提供する。しかし、１個のコンテナのサイズ（例えば、ＶＨＤのために使用可能なストレージの部分）は、特定のディスクのサイズに限定される。従って、ＶＭが、何れの１個のディスク（または１個のディスクの使用可能な空間）よりも大きいストレージ・コンテナを必要とするとき、図３の構成は有効ではない。
【００２４】
[0032]  結果として、図２の構成の不足している部分と図３の構成の欠点とを克服するために、動的かつ柔軟な構成が望まれている。図４は、本発明の実施形態に従った、複数のＣＳＭを有するノード４００のハイブリッド・ストレージ構成を示す。ノード４００は、ディスクＡ４０２、ディスクＢ４０４、およびディスクＣ４０６を含む。ノード４００において提供されるストレージ・ソリューションは、排他的にスパニング型にするものでも排他的に別々にするものでもなく、別々の、部分的スパニング型の、および／または完全スパニング型のＣＳＭの組み合わせを実施することができる。
【００２５】
[0033]  例えば、ＶＨＤ１  ４１２は、ディスクＡ４０２とディスクＢ４０４とにわたる部分的スパニングであり、ＶＨＤ１  １４２は、ＶＭによりボリューム１  ４０８として見られるコンテナに存在する。同様に、ＶＨＤ２  ４１４、ＶＨＤ４  ４１８、ＶＨＤ５  ４２０、ＶＨＤ６  ４２２、およびＶＨＤ７  ４２４は別々のストレージのソリューションの例であり、これらのＶＨＤのそれぞれを含むコンテナは、別々の物理ディスクに限定される。更には、ＶＨＤ３  ４１６を含むコンテナは、ノード４００のアクセス可能な全てのディスクにわたってスパニングしており、これは、ＶＭからはボリューム２  ４１０として知覚される。
【００２６】
[0034]  ボリューム１  ４０８は、２個以上のＣＳＭにわたってスパニングしているが、ノード４００の全てのＣＳＭにわたってはスパニングしていない。ボリューム２  ４１０は、ノード４００の全てディスクにわたりスパニングしている。従って、図４では、例示的な実施形態は、以前の排他的ストレージ・ソリューションが１つの共通ノードに共存することを可能とし、ＶＭの使用の基準にかかわらず、ＶＭにより使用される何れものリソースに対しての、スパニングから非スパニングへの動的シフティング、またはランタイムを可能とする。図５および図６と関連して以下で説明するように、これは、この例示的な実施形態では、少なくとも部分的に、ハイパーバイザー層でのＶＨＤドライバの使用および／またはホスト・ファイル・システム層でのＶＨＤフィルターの使用を通じて可能とされる。
【００２７】
[0035]  例示的な実施形態では、ＶＭのためのリソースを含むコンテナは必要に応じて拡張されるものと考えている。従って、必要とされるリソースが増加すると、コンテナは、別々のコンテナ（例えば、ＶＨＤ２  ４１４）から部分的スパニング型コンテナ（例えば、ボリューム１  ４０８）へと、動的に切り換えることができる。また、必要とされるリソースが、追加の閾値（例えば、現在使用しているＣＳＭの使用可能な空間、Ｉ／Ｏリクエストなど）を超えて大きくなったときには、部分的スパニング・コンテナは、追加のディスク（例えば、ボリューム２  ４１０）へとスパニングすることができる。逆に、ＶＭにより必要とされるリソースが減少した場合、コンテナは、スパニング・コンテナまたは部分的スパニング・コンテナから別々のコンテナへと縮小することができる。更には、ノードの少なくとも１個のディスクを排他的に別々のコンテナとし、ノードの２個以上の他のディスクがスパニング・コンテナおよび／または部分的スパニング・コンテナを保持することも考えられている。更に、コンテナが保持（格納およびアクセスのために保持）される場所（例えば、物理ディスク）を、クライアント、ユーザー、ハイパーバイザー、および／またはホスト・ファイル・システムにより選択可能とすることも、考えられている。１個以上のディスクへのコンテナの割り当て（例えば、量、タイプ、サイズ）を選択する能力は、以下で説明する様々な最適化を可能とする。コンテナ、ボリューム、および／またはＶＨＤの任意の組み合わせが本発明の実施形態において実装され得ると考えている。
【００２８】
[0036]  図４に戻る。様々な部分／物は、説明するときの観点に応じて、異なる名前で呼ばれる場合がある。例えば、ＶＨＤ２  ４１４は、ホスト・レベルからは別々のファイルに見えるが、ＶＭの観点からはハード・ディスク（即ち、ＶＨＤ）に見える。ボリューム１  ４０８は、ホスト・レベルからの場合は、複数のスパニングされたファイルと呼ぶことができるが、ＶＭレベルからの場合は、ＶＨＤと呼ぶことができる。従って、幾つかの実施形態では、ストレージの一部を非描写的な形で呼ぶこと、例えば、コンテナと呼ぶことが手助けとなる。
【００２９】
[0037]  図５は、本発明の実施形態に従った、例示的なホスト５００を示す。例示的な実施形態のホストは、図１のコンピューティング・デバイス１００のようなコンピューティング・デバイスである。「ホスト」という用語は、ＶＭを含み得る１以上の「ゲスト」をホストするホストを表すものとして用いている。例えば、ホスト５００は、仮想マシン５０２の動作をサポートすることができる。更に、ホスト５００は、仮想マシンＮ５０４のような追加の仮想マシンをサポートすることができる。ＶＭなどのようなゲストは、ホストのリソースを使用する。例えば、ＶＭは、ホストの物理空間で実現されてホストのリソースをレバレッジする仮想化されたコンピューティング・システムとすることができるが、外部のクライアントからは、ホストから独立したものに見える。従って、例示的な実施形態におけるＶＭは、物理マシンのようにプログラムを実行するコンピューティング・デバイスのソフトウェア・インプリメンテーションである。
【００３０】
[0038]  ＶＭ５０２は、ＶＭファイル・システム５０６、ディスク・ドライバ５０８、およびディスクＡ５１０を含む。ＶＭファイル・システム５０６は、仮想環境で動作するオペレーティング・システムである。ディスク・ドライバ５０８は、ディスクＡ５１０などのようなＶＨＤとインターフェースする。しかしながら、ディスクＡ５１０は、単なる仮想化されたディスクであり、実際、ホスト５００のＣＳＭリソース、例えば、ディスク１  ５２０およびディスクＹ  ５２２に依存する。ＶＭ５０２は、ディスクＡ５１０が常駐ＣＳＭであることを知覚するが、実際には、ディスクＡ５１０は、ホストの１以上のＣＳＭにより保持されるＶＨＤである。
【００３１】
[0039]  ハイパーバイザー層５１２は、ホスト・ファイル・システム５１６の上にあるインターフェース層であり、基礎となるホストのリソースへのＶＭのアクセスをサポートする。ハイパーバイザー層は、ホストの共通リソースへアクセスする複数の仮想マシンをサポートすることができる。ＶＨＤドライバ５１４については以下で詳細に説明する。
【００３２】
[0040]  ホスト・ファイル・システム５１６は、ホスト５００のＯＳ層である。ホスト・ファイル・システム５１６は、ホスト５００の物理コンポーネント、接続、および処理を制御する。図６と関連して説明する例示的な実施形態では、ホスト・ファイル・システムはＶＨＤフィルターを含むことができる。
【００３３】
[0041]  ホスト・ディスク・ドライバ５１８は、ホスト５００のためのディスク・ドライバであり、ホスト・ファイル・システム５１６と、ディスク１  ５２０などのような１個以上のＣＳＭとのインターフェースを可能とする。例示的な実施形態では、ホスト・ディスク・ドライバは、コンピュータ・プログラムであり、上位の層（例えば、ホスト・ファイル・システム５１６）が１個以上のディスクと対話することを可能とする。
【００３４】
[0042]  ディスク１  ５２０は、ホスト５００の例示的なＣＳＭである。例示的な実施形態では、ディスク１  ５２０は、ホスト５００内の４個のディスクのうちの１個のディスクである。この例示的な実施形態では、ディスク１  ５２０はファイルを保持し、このファイルは、ＶＭ５０２からは、ハード・ドライブ、ＶＨＤ  Ａ  ５２４と知覚される。同様に、ディスク  Ｙ  ５２２も、ＶＭからはＶＨＤ  Ｘ  ５２６と知覚されるファイルを含む。図５は別々のＶＨＤ（例えば、コンテナ）を示すが、１以上のスパニング（または部分的スパニング）されたコンテナも、ディスク１  ５２０および／またはディスクＹ  ５２２へハイブリッド様式または排他的様式で組み込めることが、考えられている。
【００３５】
[0043]  図５およびここで説明した他の構成は、例として説明されていることを理解すべきである。他の構成およびエレメント（例えば、マシン、インターフェース、機能、オーダー、および機能、層、レベル、ドライバ、ＯＳ、ＶＭ、ＣＳＭなどのグループ）を、ここで示したものに加えて、またはそれらの代わりに、使用することができ、また、幾つかのエレメントは完全に省略することができる。更に、ここで説明した多くのエレメントは、機能エンティティであり、別々のまたは分散型のコンポーネントとして、または他のコンポーネントと関連させて、また、任意の適切な組み合わせおよび場所で、実施することができる。１以上のエンティティにより行われるここで説明した様々な機能は、ハードウェア、ファームウェア、および／またはソフトウェアにより実行することができる。例えば、様々な機能は、メモリに格納された命令を実行するプロセッサにより行うことができる。
【００３６】
[0044]  コンポーネントは、ネットワークを介して互いに通信することができ、ネットワークは、１以上のローカル・エリア・ネットワーク（ＬＡＮ）および／またはワイド・エリア・ネットワーク（ＷＡＮ）含むことができるが、これは限定ではない。このようなネットワーク環境は、オフィス、エンタープライズワイド・コンピュータ・ネットワーク、イントラネット、およびインターネットにおいて一般的なものである。本発明の範囲内で、任意の数のホスト、サーバー、ＶＭ、およびＣＳＭをシステム内で用いることができることを、理解すべきである。更には、示していない他のコンポーネントも、システム内に含むことができる。
【００３７】
[0045]  図５を参照すると、ホスト５００のＣＳＭに保持されているデータへアクセスするためにＩ／Ｏリクエストを通信するＶＭ５０２を示している。Ｉ／Ｏリクエストは、ＶＭ５０２から通信されて、ハイパーバイザー層５１２で受信される。Ｉ／Ｏリクエストは、ハイパーバイザー層５１２においてＶＨＤドライバ５１４によりインターセプトされる。
【００３８】
[0046]  ＶＨＤドライバ５１４は、ストレージ・オプションを識別するためにＩ／Ｏリクエストをインターセプトするプログラムである。ストレージ・オプションは、何処に要求されたデータが格納されているか（例えば、何れのコンテナか、ホストの何れのＣＳＭか、何れのディレクトリーかなど）を決定することを、含むことができる。ストレージ・オプションは、何処にデータを格納すべきか（例えば、何れのコンテナか、ホストの何れのＣＳＭか、何れのディレクトリーかなど）を決定することを、含むことができる。ストレージ・オプションは、どのようにデータを格納するか（例えば、スパニング型、部分的スパニング型、別々）を決定することを、含むことができる。ストレージ・オプションは、データを移行すべきか（例えば、特定のＣＳＭをヒットするためのＩ／Ｏの最適化、コンテナの拡張、コンテナの縮小など）を決定することを、含むことができる。
【００３９】
[0047]  ＶＨＤドライバ５１４の機能を達成するために、ＶＭに対してメタファイルが保持される。例えば、メタファイルは、データ・ストレージ場所のインデックス、オプション、ＶＨＤタイプ、およびデータ・アクセスのサイズ、頻度などと関連するメトリックスを保持することができる。メタファイルは、何処に特定のデータが格納されているか、どのようにデータが格納されているか、および最適化が行われ得るか、ということを決定するためにＶＨＤドライバ５１４に使用されることができる。最適化は、例えば、コンテナを１個のＣＳＭから１個以上の別のＣＳＭへ移動させて、Ｉ／Ｏを１個以上のＣＳＭへと低減することを、含むことができる。他の最適化は、特定のＣＳＭに存在するコンテナの数を低減することにより障害の影響を低減することを、含むことができる。他の最適化は、同じサイズのコンテナを、より少ないＣＳＭで保持できるときに、コンテナによりスパニングされるＣＳＭの数を低減することを、含むことができる。他の最適化も考えられている。
【００４０】
[0048]  メタファイルは、アクセスを容易かつ効率的にするために、ホストの特定の場所に保持することができる。例えば、メタファイルは、特定のＣＳＭ（例えば、ディスク０の第１セクター）の特定のコンテナに保持することができる。代替的には、メタファイルは、Ｉ／Ｏリクエストのヘッダまたは他の部分により識別される位置で保持することができ、それにより、Ｉ／Ｏリクエストをインターセプトしたときに、関連するメタファイルの場所が決定されるようにする。
【００４１】
[0049]  １つの例示的な実施形態では、ＶＨＤドライバ５１４は、ランタイム環境においてストレージ構造の動的な調整を可能とする。例えば、ハイパーバイザー層５１２でのＩ／Ｏリクエストをインターセプトするプロセスは、ディスク１  ５２０およびディスクＹ  ５２２へどのようにデータが格納されるかを、ホスト５００が動的に調整することを可能にする。この動的な調整は、別々のコンテナがスパニングされたコンテナとして同じＣＳＭに存在することを可能にする。また、動的な調整は、ランタイム環境において、別々のコンテナ（例えば、スパニングされていないＶＨＤ）が、スパニングされたコンテナへと移行することを可能にする。好都合なことに、コンテナがスパニング状態から非スパニング状態（またはその逆）に移行しても、ＶＭ５０２は、データを同時に処理することを可能とされる。更に、ストレージのランタイムの割り当てを可能とすることにより、ＣＳＭは、ホスト全体を再構成することなく、ホストにおいて最適化される。従って、ＶＨＤドライバ５１４の使用は、Ｉ／ＯパケットがＶＭ５０２から適切なＣＳＭへ送られることを、可能とする。
【００４２】
[0050]  図５の例示的な実施形態では、次に、ＶＨＤドライバ５１４により与えられた指示に基づいて、Ｉ／Ｏリクエストが、ホスト・ファイル・システム５１６およびホスト・ディスク・ドライバ５１８を通って、ディスク１  ５２０のＶＨＤ  Ａ  ５２４へ送られる。Ｉ／ＯリクエストはＶＨＤ  Ｘ  ５２６で保持されているデータと関連させられているので、ＶＨＤドライバ５１４は、そのＩ／ＯリクエストをインターセプトしてディスクＹ  ５２２へリダイレクトすることができる。
【００４３】
[0051]  図６は、本発明の実施形態に従ったホスト６００を提供する。ホスト６００の様々な層、ドライバ、マシン、ＣＳＭなどは、１つの例示的な実施形態では、図５のホスト５００に関して先に説明した同様の名前のものと同等のものである。例えば、ホスト６００は、ＶＭ６０２、ＶＭファイル・システム６０６、ディスク・ドライバ６０８、ＶＭディスクＡ  ６１０、仮想マシンＮ６０４、ハイパーバイザー層６１２、ホスト・ファイル・システム６１６、ＶＨＤフィルター６１７、ホスト・ディスク・ドライバ６１８、ディスク１  ６２０、ディスクＹ  ６２２、ＶＨＤ  Ａ  ６２４、およびＶＨＤ  Ｘ  ６２６を含む。従って、図５における同様の名前のものに関して説明した詳細を、図６に関して反復しない。しかし、図５のホスト５００とは異なり、ホスト・ファイル・システム６１６はＶＨＤフィルター６１７を含む。
【００４４】
[0052]  １つの例示的な実施形態では、ＶＨＤフィルター６１７は、図５のＶＨＤドライバ５１４に関して上記で説明した機能と同様の機能を実行する。しかし、ハイパーバイザー層でＩ／Ｏパケットをインターセプトするのではなく、ＶＨＤフィルター６１７は、ホスト・ファイル・システム６１６でＩ／Ｏリクエストをインターセプトする。従って、ＶＨＤフィルター６１７は、図５に関して説明したようにＶＭから直接にではなく、ハイパーバイザー層６１２を通過してきたＩ／Ｏパケットをインターセプトする。
【００４５】
[0053]  また、ＶＨＤフィルター６１７は、メタファイルにアクセスして、インターセプトしたＩ／Ｏパケットと関連する情報を識別することができる。例えば、メタデータ・ファイルから識別される、インターセプトしたＩ／Ｏパケットと関連する情報は、インターセプトしたＩ／Ｏと相関するデータを見つけられる場所、ＣＳＭ、コンテナなどを含むことができる。更なる情報としては、データ、ＣＳＭ、コンテナ、またはＶＭに対するアクセスの頻度を含むことができ、これは、最適化の決定を行う際の手助けとなる。
【００４６】
[0054]  ＶＨＤフィルター６１７によりパケットがインターセプトされると、そのパケットは、ＶＨＤフィルター６１７により、適切なＣＳＭ、例えば、この例ではディスク１  ６２０などへ、送られる。ＶＨＤフィルター６１７は、ＶＭのデータが保持される場所を識別でき、データが格納される又はデータへアクセスされる１個以上のコンテナを識別でき、コンテナがスパニングされるかスパニングされないかを決定でき、データの少なくとも一部を保持するために１個以上のＣＳＭがより適切であるのかを決定できる（例えば、フォールト・トレランス、Ｉ／Ｏ分離、アクセス時間など基づく）、ということが考えられている。
【００４７】
[0055]  １つの例示的な実施形態では、Ｉ／Ｏパケットをインターセプトするためにハイパーバイザーで動作するＶＨＤドライバを実装すると好都合である。例えば、ＶＭから出された又はＶＭへ向けられたＩ／Ｏパケットのみが、ハイパーバイザー層を通過する。従って、それらのＩ／Ｏパケットのみが検査またはインターセプトされる。これは、ホスト・ファイル・システムにおいてＩ／ＯパケットをインターセプトするＶＨＤフィルターとは異なる。ＶＨＤフィルターは、ＶＭ以外のコンポーネント／アプリケーションからの（又はそれらへの）Ｉ／Ｏパケットをインターセプトすることができる。別の例示的な実施形態では、Ｉ／ＯパケットをインターセプトするためにＶＨＤフィルターを実装すると好都合である。例えば、ＶＨＤフィルターは、定期的に更新されるＯＳ内に組み込むことができ、それにより、ＶＨＤフィルターの更新をより容易にすることができる。更なる利点も考えられる。
【００４８】
[0056]  図７は、２個以上のＣＳＭにわたるスパニング仮想ハード・ドライブと、２個以上のＣＳＭのうちの第１のＣＳＭにおける非スパニング仮想ハード・ドライブとを同時に保持するための、本発明の実施形態に従った方法７００のブロック図を示す。ブロック７０２は、２個のＣＳＭにわたるスパニングＶＨＤのデータを格納するステップを表す。例えば、図４のボリューム１  ４０８は、図４のディスクＡ  ４０２とディスクＢ  ４０４とにわたってスパニングする。ボリューム１  ４０８はＶＨＤ１  ４１２を保持するコンテナであり、ＶＨＤ１  ４１２は２個のディスクにわたりスパニングするものである。スパニングＶＨＤに格納されるデータは、２個（又はそれより多く）のＣＳＭの資源を用いるＶＭのデータであり得る。
【００４９】
[0057]  ハイパーバイザー層のＶＨＤドライバは、２個以上のＣＳＭへのデータの格納およびデータへのアクセスのために応答することができる。代替的には（又は組み合わせとして）、ホスト・ファイル・システムのＶＨＤフィルターは、２個以上のＣＳＭへのデータの格納およびデータへのアクセスのために応答することができる。この例示的な実施形態では、２個以上のＣＳＭは共通のマシン（例えば、サーバー、ブレード、コンピューティング・デバイス）に配置される。また、１つの例示的な実施形態では、伝統的に排他的構造フォーマット（例えば、全てスパニング型、全て別々）でデータを保持する２個以上のＣＳＭは、ＶＨＤドライバとＶＨＤフィルターとの何れかを備えることにより、ハイブリッド構造フォーマットを保持することができる。
【００５０】
[0058]  ブロック７０４において、ブロック７０２からの２個以上のＣＳＭの第１のＣＳＭに非スパニングＶＨＤのデータが格納される。１つの例示的な実施形態では、スパニングＶＨＤのデータおよび非スパニングＶＨＤのデータは、少なくとも部分的に、共通のＣＳＭへ同時に配置される。その結果として、スパニングＶＨＤのデータおよび非スパニングＶＨＤのデータは、共通のＶＨＤから実質的に同時にアクセス可能とされる。「実質的に同時」という用語はＣＳＭの限界を考慮したものであり、ＣＳＭは、所与の時間においてデータの一部のみへアクセスすることや、データの一部のみを格納することを可能にするが、その読み出し／書き込みの直後にデータの別の部分が、例えば、アクセスされる。１つの例示的な実施形態では、ブロック７０２および７０４は、図４のＶＨＤ１  ４１２およびＶＨＤ２  ４１４がディスクＡ  ４０２で保持されることを可能にする。
【００５１】
[0059]  ブロック７０６において、Ｉ／Ｏリクエスト（例えば、パケット）がインターセプトされる。先に述べたように、Ｉ／Ｏリクエストをインターセプトするために、ＶＨＤドライバとＶＨＤフィルターとのうちの何れか（または双方）が実装される。
【００５２】
[0060]  ブロック７０８において、インターセプトされたＩ／Ｏリクエストは、適切なＣＳＭへ送られる。例えば、ＶＨＤドライバまたはＶＨＤフィルターは、Ｉ／Ｏリクエストのコンテンツが送られる対象であるＣＳＭのコンテナやＶＨＤを特定的に識別するために、Ｉ／Ｏリクエストを再パッケージすることができる。同様に、ＶＨＤドライバおよび／またはＶＨＤフィルターは、Ｉ／Ｏリクエストのコンテンツを適切なＣＳＭ、コンテナ、ＶＨＤなどへ送るために、インターセプトしたＩ／Ｏリクエストを変更することができるＶＨＤドライバまたはＶＨＤフィルターは、望まれるＶＨＤ宛先を決定するために、Ｉ／Ｏリクエストを検査することができる。検査は、後の決定を行う際に使用するためにパケットと関連する情報を識別するプロセスである。例えば、検査中に識別される情報は、メタファイルやメタファイル内の情報の場所を見つけるために使用することができる。
【００５３】
[0061]  ブロック７０４でデータが格納された非スパニングＶＨＤは、その非スパニングＶＨＤが２個以上のＣＳＭへスパニングすることを可能とするように動的に変更され得ることが、考えられている。ランタイムにおけるコンテナのストレージ構造を動的に変更する能力は、以前に静的な構成で認識していたよりも大きい柔軟性を可能とする。同様に、スパニングＶＨＤも、別々のＣＳＭ（例えば、ハード・ディスクの特定のプラテン、特定のハード・ディスクなど）の別々のコンテナ（例えば、別々の非スパニング・ボリューム、別々のファイルなど）となるようにランタイム中（または任意の時点）で動的に変更することができる。
【００５４】
[0062]  図８は、２個以上のＣＳＭにわたるスパニング仮想ハード・ドライブと、２個以上のＣＳＭのうちの第１のＣＳＭ上の非スパニング仮想ハード・ドライブとを同時に保持するための、本発明の実施形態に従った方法８００のブロック図を示す。ブロック８０２では、スパニングＶＨＤのデータに対しての第１のリクエストが受信される。１つの例示的な実施形態では、第１のリクエストは、ハイパーバイザー層またはホスト・ファイル・システム層で受信される。リクエストは、ハイパーバイザー層およびホスト・ファイル・システム層の上にあるＶＭからのＩ／Ｏリクエストであり得る。
【００５５】
[0063]  ブロック８０４において、受信された第１のリクエストは、２個以上のＣＳＭへスパニングするスパニングＶＨＤへ送られる。例えば、第１のリクエストは、ＶＨＤに格納されているデータへのアクセスを試みるＶＭマシンからのＩ／Ｏリクエストであり得る。ＶＭは、そのＶＭがアクセスを試みているＶＨＤが２個以上のＣＳＭにわたってスパニングしていることを、認識していないであろう。更に、ＶＭは、ＶＨＤが保持されている場所も認識していないであろう。従って、ＶＨＤドライバまたはＶＨＤフィルターは、それらの属性（例えば、要求されたデータが何処に格納されているか、およびデータへどのようにアクセスするか）を識別することができる。ブロック８０６において、非スパニングＶＨＤのデータに対しての第２のリクエストが受信される。第２のリクエストは、Ｉ／ＯパケットをインターセプトするＶＨＤドライバまたはＶＨＤフィルターにより受信され得る。
【００５６】
[0064]  ブロック８０８において、第２のリクエストは、２個以上のＣＳＭのうちの第１のＣＳＭへ送られる。ＶＨＤドライバまたはＶＨＤフィルターは、第２のリクエストを第１のＣＳＭへ送るか、または第２のリクエストが第１のＣＳＭへ送られるようにする。１つの例示的な実施形態では、第１のリクエストおよび第２のリクエストのそれぞれが送られるスパニングＶＨＤおよび非スパニングＶＨＤが、少なくとも部分的に、共通のＣＳＭに保持される。
【００５７】
[0065]  ブロック８１０において、第３のＶＨＤのデータに対しての第３のリクエストが受信される。例えば、ＶＨＤドライバまたはＶＨＤフィルターは、第３のリクエストを受信するためにＩ／Ｏパケットをインターセプトすることができる。次に、受信側のエンティティは、第３のＶＨＤを含むコンテナ（例えば、ボリューム）が不十分であることを決定する。不十分なコンテナとは、追加のデータを格納するための十分な空間を有さないコンテナであり得る。不十分なコンテナとは、単位時間あたりのＩ／Ｏ数に関して決定された閾値を満たさないコンテナであり得る。不十分なコンテナとは、フォールト・トレランスの閾値レベルを提供しないコンテナであり得る。この決定は、ＶＨＤドライバ、ＶＨＤフィルター、ＯＳ、ハイパーバイザー、および／または任意の組み合わせにより行うことができる。
【００５８】
[0066]  ブロック８１４において、第３のＶＨＤを保持するコンテナが不十分であることの決定に応答して、第３のＶＨＤは、第１のＣＳＭと、共通ノードの少なくとも１個の追加のＣＳＭとにわたってスパニングされる。その結果として、１つの例示的な実施形態では、第１のＣＳＭは、スパニングＶＨＤの少なくとも一部と、非スパニングＶＨＤと、動的に変更されて少なくとも１つの別のＣＳＭへスパニングするＶＨＤの少なくとも一部とを保持する。
【００５９】
[0067]  ここで提供される更なる利点は、１個以上のＣＳＭの故障に影響を受けるＶＭおよび／またはＶＨＤを識別する能力を含む。例えば、伝統的なＲＡＩＤ−０型の構成では、ノード内のＣＳＭのうちのたとえ１個のＣＳＭが故障した場合でも、何れかのＣＳＭを用いる全てのＶＭが影響を受けることが、知られていた。同様に、静的ＪＰＯＤ構造では、ＣＳＭが故障するとしても、何れのＶＭが故障したＣＳＭを使用していたかが知られていた。しかし、スパニング、部分的スパニング、および非スパニングのコンテナが存在することを可能とする動的な適合型の構造では、何れのＶＭが故障したＣＳＭの影響を受けているかを識別するのは難しい。影響を受けたＣＳＭのデータを保持することができるＶＭを識別するために、ＯＳ、ドライバ、ハイパーバイザー、または他の何れかのコンポーネント／プロセスにより、メタファイルにアクセスすることができる。
【００６０】
[0068]  本発明の精神および範囲から離れることなく、ここで示した様々なコンポーネント、および示していないコンポーネントの、多くの異なる構成が可能である。本発明の実施形態を、限定ではなく例示を意図して説明した。当業者には、範囲から離れていない代替の実施形態が明らかになる。当業者は、本発明の範囲から離れることなく、上記の改善を実施するための代替的な手段を開発することができる。
【００６１】
[0069]  特定の特徴およびサブコンビネーションは有用であり、他の特徴およびサブコンビネーションを参照せずとも用いることができ、それらは特許請求の範囲の範囲内にあると考えていることを、理解すべきである。様々な図面に示したステップの全てを、説明した特定の順で行う必要はない。
【図１】
0006033286.tif 000002
【図２】
0006033286.tif 000003
【図３】
0006033286.tif 000004
【図４】
0006033286.tif 000005
【図５】
0006033286.tif 000006
【図６】
0006033286.tif 000007
【図７】
0006033286.tif 000008
【図８】
0006033286.tif 000009