(57)【要約】【課題】  ホスト・コンピューティング・システム上に１つまたは複数の仮想計算機を配備するための方法を提供する。【解決手段】  この方法は、データ記憶システムからマッピング情報を受信することを含む。マッピング情報は、データ記憶システムに保管された第１のデータ・チャンクを固有ＩＤに関連付けて、ホスト・コンピューティング・システム上の第１の仮想計算機の配備をサポートする。マッピング情報が受信されると、このマッピング情報は、ホスト・コンピューティング・システム上の第１の仮想計算機または第２の仮想計算機の配備に関連して、第１のデータ・チャンクのいずれかのコピーがすでにホスト・コンピューティング・システムのメモリにロードされているかどうかを判断するために使用される。第１のデータ・チャンクのいずれのコピーもまだメモリにロードされていない場合、第１のデータ・チャンクがデータ記憶システムから取り出され、メモリにロードされ、ホスト・コンピューティング・システム上に第１の仮想計算機を配備するために使用される。【選択図】  図１
2013513841.tif 000002
【特許請求の範囲】
【請求項１】
ホスト・コンピューティング・システム上に１つまたは複数の仮想計算機を配備するための方法であって、前記方法が、
データ記憶システムからマッピング情報を受信することであって、前記マッピング情報が前記データ記憶システムに保管された第１のデータ・チャンクを固有ＩＤに関連付けて、ホスト・コンピューティング・システム上の第１の仮想計算機の配備をサポートすることと、
前記マッピング情報を使用して、前記ホスト・コンピューティング・システム上の前記第１の仮想計算機または第２の仮想計算機の配備に関連して、前記第１のデータ・チャンクのいずれかのコピーがすでに前記ホスト・コンピューティング・システムのメモリにロードされているかどうかを判断することと、
前記第１のデータ・チャンクのいずれのコピーもまだ前記メモリにロードされていないと判断したことに応じて、
前記第１のデータ・チャンクを前記データ記憶システムから取り出すことと、
前記第１のデータ・チャンクを前記メモリにロードすることと、
前記第１のデータ・チャンクを使用して、前記ホスト・コンピューティング・システム上に前記第１の仮想計算機を配備すること
を含む、方法。
【請求項２】
前記第１のデータ・チャンクの少なくとも第１のコピーがすでに前記メモリにロードされていると判断したことに応じて、前記メモリにすでにロードされた前記第１のデータ・チャンクの前記第１のコピーを使用して、前記ホスト・コンピューティング・システム上に前記第１の仮想計算機を配備することをさらに含む、請求項１記載の方法。
【請求項３】
前記第１のデータ・チャンクの少なくとも前記第１のコピーがすでに前記メモリにロードされていると判断したことに応じて、前記メモリにすでにロードされた前記第１のデータ・チャンクの前記第１のコピーから生成された前記第１のデータ・チャンクの第２のコピーを使用することをさらに含む、請求項１記載の方法。
【請求項４】
前記第１のデータ・チャンクが、空間効率の良い記憶方式により前記データ記憶システムに保管される、請求項１記載の方法。
【請求項５】
前記第１のデータ・チャンクが、空間効率の良い記憶方式により前記メモリに保管される、請求項１記載の方法。
【請求項６】
前記第１のデータ・チャンクに関連する前記固有ＩＤが、前記第１のデータ・チャンクの記憶位置に基づいて生成される、請求項１記載の方法。
【請求項７】
特定の時点後に前記第１のデータ・チャンクが変更されない場合、前記第１のデータ・チャンクに関連する前記固有ＩＤが、前記データ記憶システム内の第１のストレージ・ボリューム用のＩＤと、前記第１のストレージ・ボリューム内の前記第１のデータ・チャンクの位置を含む、請求項６記載の方法。
【請求項８】
特定の時点後に前記第１のデータ・チャンクが変更される場合、前記第１のデータ・チャンクに関連する前記固有ＩＤが、前記データ記憶システム内の第２のストレージ・ボリューム用のＩＤと、前記第２のストレージ・ボリューム内の前記第１のデータ・チャンクの位置を含む、請求項６記載の方法。
【請求項９】
前記第１のデータ・チャンクに関連する前記固有ＩＤが前記第１のデータ・チャンクの物理アドレスを含む、請求項１記載の方法。
【請求項１０】
前記固有ＩＤが前記第１のデータ・チャンクの内容に基づいて生成される、請求項１記載の方法。
【請求項１１】
前記固有ＩＤが前記第１のデータ・チャンクの前記内容から生成されたハッシュ値を含む、請求項１０記載の方法。
【請求項１２】
前記第１のデータ・チャンクが、コピー・オン・ライトを使用して前記データ記憶システムに保管され、前記第１の仮想計算機および前記第２の仮想計算機によって共用される、請求項１記載の方法。
【請求項１３】
前記第１のデータ・チャンクの未変更コピーが前記第２の仮想計算機を配備するために使用可能になるように、前記データ記憶システム内の前記第１のデータ・チャンクを変更する前に、前記第１のデータ・チャンクのコピーが生成される、請求項１２記載の方法。
【請求項１４】
前記データ記憶システム内の前記第１のデータ・チャンクを変更したことに応じて、前記第１のデータ・チャンクに関連する前記固有ＩＤが前記データ記憶システム内で更新される、請求項１３記載の方法。
【請求項１５】
前記第１のデータ・チャンクが、コピー・オン・ライトを使用して前記メモリに保管され、前記第１の仮想計算機および前記第２の仮想計算機によって共用される、請求項１記載の方法。
【請求項１６】
前記第１のデータ・チャンクの前記未変更コピーが前記第２の仮想計算機を配備するために使用可能になるように、前記メモリ内の前記第１のデータ・チャンクを変更する前に、前記第１のデータ・チャンクのコピーが前記メモリ内に生成される、請求項１５記載の方法。
【請求項１７】
前記メモリ内の前記第１のデータ・チャンクを変更したことに応じて、前記第１のデータ・チャンクに関連する前記固有ＩＤが前記メモリ内で更新される、請求項１６記載の方法。
【請求項１８】
コンピューティング・システムのメモリに１組のデータをロードするための方法であって、前記方法が、
データ記憶システムからマッピング情報を受信することであって、前記マッピング情報が前記データ記憶システムに保管された第１のデータ・チャンクを固有ＩＤに関連付けて、前記第１のデータ・チャンクを含む第１の組のデータをコンピューティング・システムのメモリにロードすることをサポートすることと、
前記マッピング情報を使用して、前記データ記憶システムからの第２の組のデータを前記メモリにロードすることに関連して、前記第１のデータ・チャンクのコピーがすでに前記メモリにロードされているかどうかを判断することと、
前記第１のデータ・チャンクのいずれのコピーもまだ前記メモリにロードされていないと判断したことに応じて、前記第１のデータ・チャンクを前記データ記憶システムから取り出すことと、
前記第１のデータ・チャンクのいずれのコピーもまだ前記メモリにロードされていないと判断したことに応じて、前記第１のデータ・チャンクを前記メモリにロードすること
を含む、方法。
【請求項１９】
前記第１のデータ・チャンクの少なくとも第１のコピーがすでに前記メモリにロードされていると判断したことに応じて、前記メモリにすでにロードされた前記第１のデータ・チャンクの前記第１のコピーを使用することをさらに含む、請求項１８記載の方法。
【請求項２０】
コンピューティング・システムのメモリに１組のデータをロードするためのシステムであって、前記システムが、
データ記憶システムからマッピング情報を受信するための論理装置であって、前記マッピング情報が前記データ記憶システムに保管された第１のデータ・チャンクを固有ＩＤに関連付けて、前記第１のデータ・チャンクを含む第１の組のデータをコンピューティング・システムのメモリにロードすることをサポートする論理装置と、
前記マッピング情報を使用して、前記データ記憶システムからの第２の組のデータを前記メモリにロードすることに関連して、前記第１のデータ・チャンクのコピーがすでに前記メモリにロードされているかどうかを判断するための論理装置と、
前記第１のデータ・チャンクのいずれのコピーもまだ前記メモリにロードされていないと判断したことに応じて、前記第１のデータ・チャンクを前記データ記憶システムから取り出すための論理装置と、
前記第１のデータ・チャンクのいずれのコピーもまだ前記メモリにロードされていないと判断したことに応じて、前記第１のデータ・チャンクを前記メモリにロードするための論理装置と
を含む、システム。
【請求項２１】
前記第１のデータ・チャンクの少なくとも第１のコピーがすでに前記メモリにロードされていると判断したことに応じて、前記メモリにすでにロードされた前記第１のデータ・チャンクの前記第１のコピーを使用するための論理装置をさらに含む、請求項２０記載のシステム。
【請求項２２】
コンピュータ可読プログラムを有するコンピュータ可読記憶媒体を含むコンピュータ・プログラムであって、前記コンピュータ可読プログラムが、コンピュータ上で実行されると、
データ記憶システムからマッピング情報を受信することであって、前記マッピング情報が前記データ記憶システムに保管された第１のデータ・チャンクを固有ＩＤに関連付けて、前記第１のデータ・チャンクを含む第１の組のデータを前記コンピュータのメモリにロードすることをサポートすることと、
前記マッピング情報を使用して、前記データ記憶システムからの第２の組のデータを前記メモリにロードすることに関連して、前記第１のデータ・チャンクのコピーがすでに前記メモリにロードされているかどうかを判断することと、
前記第１のデータ・チャンクのいずれのコピーもまだ前記メモリにロードされていないと判断したことに応じて、前記第１のデータ・チャンクを前記データ記憶システムから取り出すことと、
前記第１のデータ・チャンクのいずれのコピーもまだ前記メモリにロードされていないと判断したことに応じて、前記第１のデータ・チャンクを前記メモリにロードすること
を前記コンピュータに実行させる、コンピュータ・プログラム。
【請求項２３】
前記コンピュータ可読プログラムが、コンピュータ上で実行されると、前記第１のデータ・チャンクの少なくとも第１のコピーがすでに前記メモリにロードされていると判断したことに応じて、前記メモリにすでにロードされた前記第１のデータ・チャンクの前記第１のコピーを使用することを前記コンピュータにさらに実行させる、請求項２２記載のコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
開示された主題は、一般に、コンピューティング・システムに関し、詳細には、複数の仮想計算機を処理するコンピューティング・システムのメモリへのデータの効率的なロードに関する。
【背景技術】
【０００２】
仮想化環境では、１つまたは複数のソフトウェアまたはハードウェア・インフラストラクチャ（すなわち、ホスト・マシン）上で実行されるホスト・ソフトウェア（すなわち、ハイパーバイザ）は、１つまたは複数のゲスト・ソフトウェアのためにホスト・マシンをエミュレートまたは仮想化することができる。換言すれば、ハイパーバイザは１つまたは複数の仮想計算機（ＶＭ）を実現することができる。
【０００３】
ハイパーバイザは、ＶＭ（すなわち、ＶＭのイメージ）を実現するために使用されるデータをデータ記憶システムからホスト・マシンのメモリにロードすることにより、ＶＭを実現する。そのイメージが同じイメージ（すなわち、マスタ・イメージ）から導出される場合、そのイメージはかなりの量のデータを共通して有する可能性がある。既存の実現例では、ハイパーバイザは、複数のＶＭイメージに共通するデータを識別せずに、それぞれのイメージを取り出して、それをメモリの個別領域に独立してロードする。したがって、ハイパーバイザは、共通データを繰り返し取り出してロードすることにより、リソース（たとえば、処理能力、メモリ空間、記憶およびネットワーク帯域幅）を浪費する。
【０００４】
米国特許出願公報第２００９０１８２９２８号では、ＩＤを使用してＶＭの移動を追跡するための方法およびシステムを開示している。米国特許出願公報第２００８０２６３２９６号では、情報ブロックがすでに記憶装置に保管されているかどうかを判断するための方法およびシステムを開示している。米国特許第７５０００４８号では、第１の候補メモリ・ページと第２の候補メモリ・ページとの間にハッシュ一致が存在するかどうかを判断するための方法およびシステムを開示している。米国特許第７３５６６６５号では、前記処理システム内のマシン・メモリ・ブロックを各仮想計算機内で使用される物理メモリ・ブロックにマッピングする逆マッピング構造を維持するための方法およびシステムを開示している。米国特許第７２４６２００号では、マップ情報に基づいて仮想計算機に関連するイメージが記憶域に保管されているかどうかをチェックするための方法を開示している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許出願公報第２００９０１８２９２８号
【特許文献２】米国特許出願公報第２００８０２６３２９６号
【特許文献３】米国特許第７５０００４８号
【特許文献４】米国特許第７３５６６６５号
【特許文献５】米国特許第７２４６２００号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上記の従来技術の文献はいずれも、共通データを繰り返し取り出してロードする必要性によるリソースの浪費問題に対処していない。
【０００７】
概要を示すために、特定の態様、利点、および新規の特徴が本明細書に記載されている。いずれかの特定の一実施形態により、このような利点をすべて達成できるわけではないことを理解されたい。したがって、開示された主題は、本明細書で教示または提案できるようなすべての利点を達成せずに、１つの利点または１群の利点を達成または最適化するように実施または実行することができる。
【課題を解決するための手段】
【０００８】
一実施形態により、ホスト・コンピューティング・システム上に１つまたは複数の仮想計算機を配備するための方法が提供される。この方法は、データ記憶システムからマッピング情報を受信することを含む。マッピング情報は、データ記憶システムに保管された第１のデータ・チャンク（data chunk）を固有ＩＤ（unique identifier）に関連付けて、ホスト・コンピューティング・システム上の第１の仮想計算機の配備をサポートする。マッピング情報が受信されると、このマッピング情報は、ホスト・コンピューティング・システム上の第１の仮想計算機または第２の仮想計算機の配備に関連して、第１のデータ・チャンクのいずれかのコピーがすでにホスト・コンピューティング・システムのメモリにロードされているかどうかを判断するために使用される。第１のデータ・チャンクのいずれのコピーもまだメモリにロードされていない場合、第１のデータ・チャンクがデータ記憶システムから取り出され、メモリにロードされ、ホスト・コンピューティング・システム上に第１の仮想計算機を配備するために使用される。
【０００９】
１つまたは複数の実施形態により、１つまたは複数の論理装置を含むシステムが提供される。１つまたは複数の論理装置は、上記で開示された方法に関連する機能および動作を実行するように構成される。さらに他の実施形態では、コンピュータ可読プログラムを有するコンピュータ可読記憶媒体を含むコンピュータ・プログラム（computer program product）が提供される。コンピュータ可読プログラムは、コンピュータ上で実行されると、上記で開示された方法に関連する機能および動作をコンピュータに実行させる。
【００１０】
特定の代替例に加えて、上記で開示された諸実施形態のうちの１つまたは複数は、添付図面に関連して以下により詳細に示されている。しかし、開示された主題は開示された任意の特定の実施形態に限定されない。
【００１１】
次に、以下の図面に関連して、一例としてのみ、本発明の好ましい諸実施形態について説明する。
【図面の簡単な説明】
【００１２】
【図１】１つまたは複数の実施形態により、模範的な仮想化環境を示す図である。
【図２】一実施形態により、１つまたは複数のＶＭイメージを取り出してメモリにロードするための方法の流れ図である。
【図３】一実施形態により、１つまたは複数のＶＭイメージを取り出してメモリにロードするための方法の流れ図である。
【図４】１つまたは複数の実施形態により、本発明のシステムが動作可能なハードウェア環境のブロック図である。
【図５】１つまたは複数の実施形態により、本発明のシステムが動作可能なソフトウェア環境のブロック図である。
【発明を実施するための形態】
【００１３】
異なる図で同じ番号によって参照される特徴、要素、および態様は、１つまたは複数の実施形態により、同じか同等かまたは同様の特徴、要素、または態様を表している。
【００１４】
以下の説明では、様々な実施形態について徹底的に説明するために、多数の具体的な詳細が示されている。特定の実施形態は、このような具体的な詳細がないかまたは細部を多少変更しても実践することができる。いくつかの実例では、他の態様を曖昧にしないようにするために、特定の特徴についてあまり詳細に説明していない。それぞれの要素または特徴に関連する詳細レベルは、他の特徴に対するある特徴の新規性または重要性を限定するものと解釈してはならない。
【００１５】
図１を参照すると、１つまたは複数の実施形態により、模範的な仮想化環境１００は、データ記憶システム１１０とホスト・マシン１２０とを含む。データ記憶システム１１０は、データを保管するための１つまたは複数のストレージ・デバイス１１２と、データを管理するためのストレージ・コントローラ１１４とを含む。ホスト・マシン１２０は、データを保管するためのメモリ１２２と、データを管理するためのメモリ・コントローラ１２４と、１つまたは複数のＶＭ１３０を実現するためのハイパーバイザ１２６とを含む。
【００１６】
図１、図２、および図３を参照すると、一実施形態により、ＶＭ１３０（すなわち、ＶＭイメージ）を実現するために使用されるデータは、ストレージ・デバイス１１２から取り出して、メモリ１２２にロードすることができる。ストレージ・コントローラ１１４は、一般に共用されるデータの複数コピーがデータ記憶システム１１０に保管されるのを防止または排除するためにコピー・オン・ライト（copy-on-write）、重複解除（de-duplication）、またはその他の空間効率の良い記憶メカニズムを使用する記憶方式により、ストレージ・デバイス１１２にＶＭイメージを保管する（Ｐ２００）。ＶＭイメージがマスタ・イメージから導出される場合、ＶＭイメージがかなりの量のデータを共通して有する可能性があることは注目すべきことである。たとえば、一実現例では、マスタ・イメージの空間効率の良いポイント・イン・タイム・コピー（たとえば、スナップショット）を生成し、次にそのコピーを変更することにより、マスタ・イメージからＶＭイメージを導出することができる。
【００１７】
データ記憶システム１１０に保管された各データ・チャンクは、固有ＩＤに有利に関連付けることができる（Ｐ２１０）。データ・チャンクは、データ・ブロック、データ・エクステント、またはその他のデータのグループ化を参照する。実現例次第で、データ・チャンクに関連する固有ＩＤは、記憶位置に応じて生成するか、データ・チャンクの内容に応じて生成するか、このようなＩＤを生成するためのその他のメカニズムに応じて生成することができる。したがって、実現例によっては、１つのデータ・チャンクについて、同じ記憶位置に保管されるかまたは同じ内容を有する複数のコピーが同じ固有ＩＤに関連付けられる場合がある。
【００１８】
模範的な一実施形態では、データ・チャンクのポイント・イン・タイム・コピーを保管するためにコピー・オン・ライトが使用される場合、特定の時点後にそのデータ・チャンクが変更されたかどうかに応じて、そのデータ・チャンクの１つまたは複数のコピーを第１または第２のストレージ・ボリュームに保管することができる。このような記憶方式では、そのデータ・チャンクの未変更コピー用の固有ＩＤは、たとえば、第１のストレージ・ボリューム用のＩＤと、第１のストレージ・ボリューム内のそのコピーの位置を含むことができる。そのデータ・チャンクの変更済みコピー用の固有ＩＤは、たとえば、第２のストレージ・ボリューム用のＩＤと、第２のストレージ・ボリューム内のそのコピーの位置を含むことができる。
【００１９】
他の記憶方式では、データ・チャンク用の固有ＩＤは、たとえば、そのデータ・チャンクの物理アドレスを含むことができる。代わって、データ・チャンク用の固有ＩＤは、たとえば、データ・チャンクの内容から生成されたハッシュ値またはその他の値を含むことができる。
【００２０】
さらに図１、図２、および図３を参照すると、ストレージ・コントローラ１１４は、ＶＭイメージの各データ・チャンクを固有ＩＤに関連付ける情報（すなわち、マッピング情報）をハイパーバイザ１２６に提供する（Ｐ２２０）。実現例次第で、このようなマッピング情報は、ハイパーバイザ１２６がこのような情報を求める明示要求をストレージ・コントローラ１１４に送信することによるかまたはストレージ・コントローラ１１４からハイパーバイザ１２６に流れる他のトラフィックにピギーバックされることによりハイパーバイザ１２６によって入手するか、またはこのような情報を入手するための任意のその他の使用可能な手段によって入手することができる。開示された主題が特定の実現例に限定されないことを理解されたい。
【００２１】
データ記憶システム１１０から取り出して、メモリ１２２にロードすべきＶＭイメージのデータ・チャンクごとに、ハイパーバイザ１２６は、そのデータ・チャンクに関連する固有ＩＤを使用して、第１のＶＭイメージ（すなわち、現行ＶＭイメージ）または第２のＶＭイメージ（すなわち、前に配備されたＶＭイメージ）の配備の一部として、データ・チャンクのコピーがすでに取り出され、メモリ１２２にロードされているかどうかを判断する（Ｐ２３０）。データ・チャンクのコピーがすでに取り出され、メモリ１２２にロードされている場合、第１のＶＭイメージを配備するために、同じデータ・チャンクの第２のコピーが取り出されてメモリ１２２にロードされることはない。その代わりに、第１のＶＭイメージは、すでにメモリ１２２にロードされているデータ・チャンクのコピーを共用する（Ｐ２４０）。代わって、ハイパーバイザ１２６は、データ記憶システム１１０からもう一度データ・チャンクを取り出す代わりに、データ・チャンクのメモリ間コピーを実行するようメモリ・コントローラ１２４に要求する。
【００２２】
データ・チャンクの前のコピーが取り出されてメモリ１２２にロードされていない場合、ハイパーバイザ１２６は、データ記憶システム１１０からデータ・チャンクを取り出し、そのデータ・チャンクをメモリ・コントローラ１２４に提供する（Ｐ２５０）。データ・チャンクを受信すると、メモリ・コントローラ１２４は、一般に共用されるデータの複数コピーがメモリ１２２に保管されるのを防止または排除する空間効率の良いメモリ方式を使用して、メモリ１２２にデータ・チャンクをロードする（Ｐ２６０）。データ・チャンクがメモリ１２２にロードされると、ハイパーバイザ１２６は、そのデータ・チャンクがメモリ１２２にロードされたことを示すようにデータ構造（たとえば、テーブル、アレイ、ビットマップなど）を更新する（Ｐ２７０）。
【００２３】
特定の実現例では、ＶＭは、そのＶＭの状態の変化により変更される可能性がある。このような場合、第１のＶＭと第２のＶＭとの間で一般に共用される第１のＶＭに関するデータ・チャンクは、メモリ１２２にロードされた後で変更される可能性がある。このような実現例では、ハイパーバイザ１２６は、第１のＶＭに関連し、第２のＶＭに関連しないものとしてデータ・チャンクを区別するために、たとえば、タイムスタンプまたはバージョン番号を含むように、メモリ１２２にロードされたデータ・チャンクに関連する固有ＩＤを更新することができる。このシナリオでは、第２のＶＭがすでに配備されている場合、第２のＶＭに関連して、変更前のデータ・チャンクのコピーが予約されロードされる。代わって、ハイパーバイザ１２６は、データ・チャンクが使用されている間にデータ・チャンクが変更されるのを禁止することができる。
【００２４】
上記で提供されたプロセスは、データ記憶システムの異なるストレージ・ボリュームに保管されている同じデータのコピーが２回以上、ストレージから取り出されてメモリにロードされるのを防止する。したがって、処理能力（たとえば、入出力（Ｉ／Ｏ）操作）、メモリ空間、または記憶およびネットワーク帯域幅を浪費せずに、データが取り出され、メモリにロードされる。また、上記で提供されたプロセスは、１組のストレージ・ボリュームから任意のタイプのコンピューティング・システムのメモリにロード可能な任意のタイプのデータに適用することができる。したがって、請求された主題の範囲は、ＶＭを処理するコンピューティング・システムのメモリにＶＭイメージをロードすることに限定されるものと解釈してはならない。
【００２５】
種々の実施形態では、開示された主題は、ハードウェア要素とソフトウェア要素両方の組み合わせとして、代わって、完全にハードウェアの形でまたは完全にソフトウェアの形で実現することができる。さらに、本明細書に開示されたコンピューティング・システムおよびプログラム・ソフトウェアは、本明細書で企図される結果を達成する方法およびプロセスを実行するために実行されるハードウェア・コンポーネントまたは論理コードに関して提示可能な制御されたコンピューティング環境を含むことができる。前記方法およびプロセスは、汎用コンピューティング・システムまたはマシンによって実行されると、汎用マシンを特定目的マシンに変換する。
【００２６】
図４および図５を参照すると、模範的な一実施形態によるコンピューティング・システム環境は、ハードウェア環境１１１０とソフトウェア環境１１２０で構成することができる。ハードウェア環境１１１０は、ソフトウェア環境１１２０のコンポーネントに実行環境を提供する、論理装置、回路、またはその他の機械および機器を含むことができる。次に、ソフトウェア環境１１２０は、ハードウェア環境１１１０の様々なコンポーネントに対し、基礎をなす動作設定および構成を含む実行命令を提供することができる。
【００２７】
図４を参照すると、本明細書に開示されたアプリケーション・ソフトウェアおよび論理コードは、模範的なハードウェア環境１１１０によって表される１つまたは複数のコンピューティング・システムにより実行されるコンピュータ可読コードの形で実現することができる。例示されているように、ハードウェア環境１１１０は、システム・バス１１００により１つまたは複数の記憶素子に結合されたプロセッサ１１０１を含むことができる。記憶素子は、たとえば、ローカル・メモリ１１０２、ストレージ・メディア１１０６、キャッシュ・メモリ１１０４、またはその他のコンピュータ使用可能媒体またはコンピュータ可読媒体を含むことができる。本明細書の文脈内では、コンピュータ使用可能記憶媒体またはコンピュータ可読記憶媒体は、プログラム・コードを収容、保管、通信、伝搬、または輸送するために使用可能な任意の記録可能品目を含むことができる。
【００２８】
コンピュータ可読記憶媒体は、電子、磁気、光、電磁、赤外線、または半導体の媒体、システム、装置、またはデバイスにすることができる。また、コンピュータ可読記憶媒体は、このような実現例が法定主題と見なされる範囲で、無制限に、伝搬媒体に実現することもできる。コンピュータ可読記憶媒体の例としては、半導体またはソリッド・ステート・メモリ、磁気テープ、取り外し可能コンピュータ・ディスケット、ランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、剛性磁気ディスク、光ディスク、または適切である場合に搬送波を含むことができる。光ディスクの現在の例としては、コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）、書き換え可能コンパクト・ディスク（ＣＤ−Ｒ／Ｗ）、デジタル・ビデオ・ディスク（ＤＶＤ）、高精細ビデオ・ディスク（ＨＤ−ＤＶＤ）、またはブルーレイ（ＴＭ）ディスクを含む。
【００２９】
一実施形態では、プロセッサ１１０１はストレージ・メディア１１０６からローカル・メモリ１１０２に実行可能コードをロードする。キャッシュ・メモリ１１０４は、実行のためにコードがロードされる回数を削減するのを支援する一時記憶域を提供することにより、処理時間を最適化する。１つまたは複数のユーザ・インターフェース・デバイス１１０５（たとえば、キーボード、ポインティング・デバイスなど）および表示画面１１０７は、たとえば、直接または介在するＩ／Ｏコントローラ１１０３を介して、ハードウェア環境１１１０内の他の要素に結合することができる。ハードウェア環境１１１０が介在する私設網または公衆網（たとえば、インターネット）を介してローカルまたはリモートに位置するコンピューティング・システム、プリンタ、およびストレージ・デバイスと通信できるようにするために、ネットワーク・アダプタなどの通信インターフェース・ユニット１１０８を設けることができる。有線または無線モデムおよびイーサネット・カードは、模範的なタイプのネットワーク・アダプタのうちのいくつかに過ぎない。
【００３０】
ハードウェア環境１１１０は、特定の実現例では、上記のコンポーネントの一部または全部を含まない場合もあれば、補足機能またはユーティリティを提供するために追加のコンポーネントを含む場合もあることは注目すべきことである。企図された用途および構成次第で、ハードウェア環境１１１０は、デスクトップまたはラップトップ・コンピュータ、あるいは任意選択でセットトップ・ボックスなどの組み込みシステムに実施されたその他のコンピューティング・デバイス、携帯情報端末（ＰＤＡ）、パーソナル・メディア・プレーヤ、モバイル通信ユニット（たとえば、携帯電話）、あるいは情報処理またはデータ記憶機能を有するその他の同様のハードウェア・プラットフォームにすることができる。
【００３１】
実施形態によっては、通信インターフェース１１０８は、プログラム・コードを含む様々なタイプの情報を表すアナログまたはデジタル・データ・ストリームを担持するデジタル、電気、電磁、または光信号を送受信することにより、１つまたは複数のコンピューティング・システムとの通信の手段を提供するためのデータ通信ポートとして動作する。この通信は、ローカルまたはリモート・ネットワークによるか、代わって、搬送波による伝搬を無制限に含む、空気またはその他の媒体による伝送により、確立することができる。
【００３２】
ここに提供されるように、例示されたハードウェア要素上で実行される開示されたソフトウェア要素は、本質的に模範的なものである論理または機能関係により定義される。しかし、前記模範的なソフトウェア要素により実現されるそれぞれの方法は、たとえば、構成されプログラミングされたプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、およびデジタル信号プロセッサ（ＤＳＰ）により前記ハードウェア要素内にコード化することもできることに留意されたい。
【００３３】
図５を参照すると、ソフトウェア環境１１２０は、一般に、１つまたは複数のハードウェア環境１１１０上で実行されるように、システム・ソフトウェア１１２１とアプリケーション・ソフトウェア１１２２を含む、２つのクラスに分割することができる。一実施形態では、本明細書に開示された方法およびプロセスは、システム・ソフトウェア１１２１、アプリケーション・ソフトウェア１１２２、またはこれらの組み合わせとして実現することができる。システム・ソフトウェア１１２１は、どのように機能し、情報を処理するかについて、ハードウェア環境１１１０内の１つまたは複数のプロセッサ１１０１（たとえば、マイクロコントローラ）に指示する、オペレーティング・システム（ＯＳ）または情報管理システムなどの制御プログラムを含むことができる。アプリケーション・ソフトウェア１１２２は、プロセッサ１１０１によって読み取り、分析、または実行することができる、プログラム・コード、データ構造、ファームウェア、常駐ソフトウェア、マイクロコード、あるいは任意のその他の形式の情報またはルーチンを含むことができるが、これらに限定されない。
【００３４】
換言すれば、アプリケーション・ソフトウェア１１２２は、コンピュータまたは任意の命令実行システムによりあるいはそれに関連して使用するためのプログラム・コードを提供するコンピュータ使用可能リ記憶媒体またはコンピュータ可読記憶媒体の形でコンピュータ・プログラムに組み込まれたプログラム・コードとして実現することができる。その上、アプリケーション・ソフトウェア１１２２は、ストレージ・メディア１１０６からローカル・メモリ１１０２にロードされた後にシステム・ソフトウェア１１２１の上で実行される１つまたは複数のコンピュータ・プログラムを含むことができる。クライアント／サーバ・アーキテクチャでは、アプリケーション・ソフトウェア１１２２は、クライアント・ソフトウェアとサーバ・ソフトウェアを含むことができる。たとえば、一実施形態では、クライアント・ソフトウェアは、サーバ・ソフトウェアが実行されるサーバ・コンピューティング・システムとは異なり、それから分離可能なクライアント・コンピューティング・システム上で実行することができる。
【００３５】
ソフトウェア環境１１２０は、ローカルまたはリモート・コンピューティング・ネットワークにより入手可能なデータにアクセスするためにブラウザ・ソフトウェア１１２６も含むことができる。さらに、ソフトウェア環境１１２０は、ユーザ・コマンドおよびデータを受信するためのユーザ・インターフェース１１２４（たとえば、グラフィカル・ユーザ・インターフェース（ＧＵＩ））を含むことができる。上記のハードウェアおよびソフトウェアのアーキテクチャおよび環境が例示目的のものであることは繰り返す価値のあることである。このため、１つまたは複数の実施形態は、任意のタイプのシステム・アーキテクチャ、機能または論理プラットフォーム、あるいは処理環境により実現することができる。
【００３６】
また、論理コード、プログラム、モジュール、プロセス、メソッド、および各メソッドのそれぞれのプロセスが実行される順序は純粋に模範的なものであることも理解されたい。実現例次第で、プロセスまたは任意の基礎をなすサブプロセスおよびメソッドは、本発明に他の指示がない限り、任意の順序でまたは同時に実行することができる。さらに、具体的な他の指定がない限り、本発明の文脈内の論理コードの定義は、任意の特定のプログラミング言語に関連しないかまたは限定されず、分散、非分散、シングルまたはマルチ処理環境において１つまたは複数のプロセッサ上で実行可能な１つまたは複数のモジュールを含むことができる。
【００３７】
当業者によって認識されるように、ソフトウェア実施形態は、ファームウェア、常駐ソフトウェア、マイクロコードなどを含むことができる。ソフトウェアまたはハードウェアを含むかあるいはソフトウェア態様とハードウェア態様を組み合わせる特定のコンポーネントは、一般に、本明細書では「回路」、「モジュール」、または「システム」と呼ぶことができる。さらに、開示された主題は、そこに実施されたコンピュータ可読プログラム・コードを有する１つまたは複数のコンピュータ可読記憶媒体に実施されたコンピュータ・プログラムとして実現することができる。１つまたは複数のコンピュータ可読記憶媒体の任意の組み合わせを使用することができる。コンピュータ可読記憶媒体は、コンピュータ可読信号媒体またはコンピュータ可読記憶媒体にすることができる。コンピュータ可読記憶媒体は、たとえば、電子、磁気、光、電磁、赤外線、または半導体のシステム、装置、またはデバイス、あるいは上記のものの任意の適切な組み合わせにすることができるが、これらに限定されない。
【００３８】
本明細書の文脈では、コンピュータ可読記憶媒体は、命令実行システム、装置、またはデバイスによりあるいはそれに関連して使用するためのプログラムを収容または保管することができる任意の有形媒体にすることができる。コンピュータ可読信号媒体は、たとえば、ベースバンド内でまたは搬送波の一部として、そこに実施されたコンピュータ可読プログラム・コードを含む伝搬データ信号を含むことができる。このような伝搬信号は、電磁、光、またはそれらの任意の適切な組み合わせを含むがこれらに限定されない様々な形のうちのいずれかを取ることができる。コンピュータ可読信号媒体は、コンピュータ可読記憶媒体ではなく、命令実行システム、装置、またはデバイスによりあるいはそれに関連して使用するためのプログラムを通信、伝搬、または輸送することができる任意のコンピュータ可読記憶媒体にすることができる。
【００３９】
コンピュータ可読記憶媒体上に実施されたプログラム・コードは、無線、有線、光ファイバ・ケーブル、ＲＦなど、あるいは上記のものの任意の適切な組み合わせを含むがこれらに限定されない任意の適切な媒体を使用して伝送することができる。開示された動作を実行するためのコンピュータ・プログラム・コードは、Ｊａｖａ、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋などのオブジェクト指向プログラミング言語あるいは「Ｃ」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語を含む、１つまたは複数のプログラミング言語の任意の組み合わせで作成することができる。
【００４０】
プログラム・コードは、完全にユーザのコンピュータ上で、一部分はユーザのコンピュータ上で、スタンドアロン・ソフトウェア・パッケージとして、一部分はユーザのコンピュータ上でしかも一部分はリモート・コンピュータ上で、あるいは完全にリモート・コンピュータまたはサーバ上で実行することができる。後者のシナリオでは、ローカル・エリア・ネットワーク（ＬＡＮ）または広域ネットワーク（ＷＡＮ）を含む任意のタイプのネットワークを介してリモート・コンピュータがユーザのコンピュータに接続される場合もあれば、（たとえば、インターネット・サービス・プロバイダを使用してインターネットを介して）外部コンピュータに接続が行われる場合もある。
【００４１】
特定の諸実施形態は、諸実施形態による方法、装置（システム）、およびコンピュータ・プログラムの流れ図あるいはブロック図またはその両方に関連して開示されている。流れ図あるいはブロック図またはその両方の各ブロックおよび流れ図あるいはブロック図またはその両方内の複数ブロックの組み合わせは、コンピュータ・プログラム命令によって実現可能であることが理解されるであろう。これらのコンピュータ・プログラム命令は、汎用コンピュータ、特殊目的コンピュータ、またはその他のプログラマブル・データ処理装置のプロセッサに提供し、コンピュータまたはその他のプログラマブル・データ処理装置のプロセッサにより実行された命令が流れ図あるいはブロック図またはその両方の１つまたは複数のブロックに指定された機能／行為を実現するための手段を作成するようなマシンを生産することができる。
【００４２】
また、これらのコンピュータ・プログラム命令は、コンピュータ可読記憶媒体に保管された命令が流れ図あるいはブロック図またはその両方の１つまたは複数のブロックに指定された機能／行為を実現する命令を含む装置（article of manufacture）を生産するような特定の方法で機能するよう、コンピュータ、その他のプログラマブル・データ処理装置、またはその他のデバイスに指示することができるコンピュータ可読記憶媒体に保管することもできる。
【００４３】
また、コンピュータ・プログラム命令は、コンピュータ、その他のプログラマブル・データ処理装置、またはその他のデバイス上にロードし、コンピュータまたはその他のプログラマブル装置上で実行された命令が流れ図あるいはブロック図またはその両方の１つまたは複数のブロックに指定された機能／行為を実現するためのプロセスを提供するようなコンピュータで実行されるプロセスを生産するように、コンピュータ、その他のプログラマブル・データ処理装置、またはその他のデバイス上で一連の動作ステップを実行させることもできる。
【００４４】
図面内の流れ図およびブロック図は、様々な諸実施形態によるシステム、方法、およびコンピュータ・プログラムについて可能な実現例のアーキテクチャ、機能、および動作を例示している。この点に関しては、流れ図またはブロック図内の各ブロックは、指定の論理機能（複数も可）を実現するための１つまたは複数の実行可能命令を含む、コードのモジュール、セグメント、または一部分を表すことができる。また、いくつかの代替実現例では、ブロック内に示された機能は図面内に示された順序から外れて行われる可能性があることに留意されたい。
【００４５】
たとえば、連続して示されている２つのブロックは、関係する機能次第で、実際にはほぼ同時に実行される場合もあれば、ときには逆の順序で実行される場合もある。また、ブロック図あるいは流れ図またはその両方の各ブロックおよびブロック図あるいは流れ図またはその両方内の複数ブロックの組み合わせは、指定の機能または行為を実行する特殊目的ハードウェアベースのシステムあるいは特殊目的ハードウェアとコンピュータ命令との組み合わせによって実現可能であることも留意されるであろう。
【００４６】
開示された主題は、１つまたは複数の特徴または実施形態に関連してここに提供されている。当業者であれば、ここに提供された模範的な実施形態の詳細な本質にもかかわらず、一般に意図される範囲を制限しないかまたはそれから逸脱せずに、前記諸実施形態に変更および修正を適用できることを認識し理解するであろう。ここに提供された諸実施形態の上記および様々な他の適応例ならびに組み合わせは、特許請求の範囲およびそれと同等のもの一式によって定義されている開示された主題の範囲内である。
【図１】
2013513841.tif 000003
【図２】
2013513841.tif 000004
【図３】
2013513841.tif 000005
【図４】
2013513841.tif 000006
【図５】
2013513841.tif 000007
【手続補正書】
【提出日】平成24年8月2日(2012.8.2)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ホスト・コンピューティング・システム上に１つまたは複数の仮想計算機を配備するための方法であって、前記方法が、
データ記憶システムからマッピング情報を受信することであって、前記マッピング情報が前記データ記憶システムに保管された第１のデータ・チャンクを固有ＩＤに関連付けて、ホスト・コンピューティング・システム上の第１の仮想計算機の配備をサポートすることと、
前記マッピング情報を使用して、前記ホスト・コンピューティング・システム上の前記第１の仮想計算機または第２の仮想計算機の配備に関連して、前記第１のデータ・チャンクのいずれかのコピーがすでに前記ホスト・コンピューティング・システムのメモリにロードされているかどうかを判断することと、
前記第１のデータ・チャンクのいずれのコピーもまだ前記メモリにロードされていないと判断したことに応じて、
前記第１のデータ・チャンクを前記データ記憶システムから取り出すことと、
前記第１のデータ・チャンクを前記メモリにロードすることと、
前記第１のデータ・チャンクを使用して、前記ホスト・コンピューティング・システム上に前記第１の仮想計算機を配備すること
を含む、方法。
【請求項２】
前記第１のデータ・チャンクの少なくとも第１のコピーがすでに前記メモリにロードされていると判断したことに応じて、前記メモリにすでにロードされた前記第１のデータ・チャンクの前記第１のコピーを使用して、前記ホスト・コンピューティング・システム上に前記第１の仮想計算機を配備することをさらに含む、請求項１記載の方法。
【請求項３】
前記第１のデータ・チャンクの少なくとも前記第１のコピーがすでに前記メモリにロードされていると判断したことに応じて、前記メモリにすでにロードされた前記第１のデータ・チャンクの前記第１のコピーから生成された前記第１のデータ・チャンクの第２のコピーを使用することをさらに含む、請求項１記載の方法。
【請求項４】
前記第１のデータ・チャンクが、空間効率の良い記憶方式により前記データ記憶システムに保管される、請求項１記載の方法。
【請求項５】
前記第１のデータ・チャンクが、空間効率の良い記憶方式により前記メモリに保管される、請求項１記載の方法。
【請求項６】
前記第１のデータ・チャンクに関連する前記固有ＩＤが、前記第１のデータ・チャンクの記憶位置に基づいて生成される、請求項１記載の方法。
【請求項７】
特定の時点後に前記第１のデータ・チャンクが変更されない場合、前記第１のデータ・チャンクに関連する前記固有ＩＤが、前記データ記憶システム内の第１のストレージ・ボリューム用のＩＤと、前記第１のストレージ・ボリューム内の前記第１のデータ・チャンクの位置を含む、請求項６記載の方法。
【請求項８】
特定の時点後に前記第１のデータ・チャンクが変更される場合、前記第１のデータ・チャンクに関連する前記固有ＩＤが、前記データ記憶システム内の第２のストレージ・ボリューム用のＩＤと、前記第２のストレージ・ボリューム内の前記第１のデータ・チャンクの位置を含む、請求項６記載の方法。
【請求項９】
前記第１のデータ・チャンクに関連する前記固有ＩＤが前記第１のデータ・チャンクの物理アドレスを含む、請求項１記載の方法。
【請求項１０】
前記固有ＩＤが前記第１のデータ・チャンクの内容に基づいて生成される、請求項１記載の方法。
【請求項１１】
前記固有ＩＤが前記第１のデータ・チャンクの前記内容から生成されたハッシュ値を含む、請求項１０記載の方法。
【請求項１２】
前記第１のデータ・チャンクが、コピー・オン・ライトを使用して前記データ記憶システムに保管され、前記第１の仮想計算機および前記第２の仮想計算機によって共用される、請求項１記載の方法。
【請求項１３】
前記第１のデータ・チャンクの未変更コピーが前記第２の仮想計算機を配備するために使用可能になるように、前記データ記憶システム内の前記第１のデータ・チャンクを変更する前に、前記第１のデータ・チャンクのコピーが生成される、請求項１２記載の方法。
【請求項１４】
前記データ記憶システム内の前記第１のデータ・チャンクを変更したことに応じて、前記第１のデータ・チャンクに関連する前記固有ＩＤが前記データ記憶システム内で更新される、請求項１３記載の方法。
【請求項１５】
前記第１のデータ・チャンクが、コピー・オン・ライトを使用して前記メモリに保管され、前記第１の仮想計算機および前記第２の仮想計算機によって共用される、請求項１記載の方法。
【請求項１６】
前記第１のデータ・チャンクの前記未変更コピーが前記第２の仮想計算機を配備するために使用可能になるように、前記メモリ内の前記第１のデータ・チャンクを変更する前に、前記第１のデータ・チャンクのコピーが前記メモリ内に生成される、請求項１５記載の方法。
【請求項１７】
前記メモリ内の前記第１のデータ・チャンクを変更したことに応じて、前記第１のデータ・チャンクに関連する前記固有ＩＤが前記メモリ内で更新される、請求項１６記載の方法。
【請求項１８】
コンピューティング・システムのメモリに１組のデータをロードするための方法であって、前記方法が、
データ記憶システムからマッピング情報を受信することであって、前記マッピング情報が前記データ記憶システムに保管された第１のデータ・チャンクを固有ＩＤに関連付けて、前記第１のデータ・チャンクを含む第１の組のデータをコンピューティング・システムのメモリにロードすることをサポートすることと、
前記マッピング情報を使用して、前記データ記憶システムからの第２の組のデータを前記メモリにロードすることに関連して、前記第１のデータ・チャンクのコピーがすでに前記メモリにロードされているかどうかを判断することと、
前記第１のデータ・チャンクのいずれのコピーもまだ前記メモリにロードされていないと判断したことに応じて、前記第１のデータ・チャンクを前記データ記憶システムから取り出すことと、
前記第１のデータ・チャンクのいずれのコピーもまだ前記メモリにロードされていないと判断したことに応じて、前記第１のデータ・チャンクを前記メモリにロードすること
を含む、方法。
【請求項１９】
前記第１のデータ・チャンクの少なくとも第１のコピーがすでに前記メモリにロードされていると判断したことに応じて、前記メモリにすでにロードされた前記第１のデータ・チャンクの前記第１のコピーを使用することをさらに含む、請求項１８記載の方法。
【請求項２０】
コンピューティング・システムのメモリに１組のデータをロードするためのシステムであって、前記システムが、
データ記憶システムからマッピング情報を受信するための論理装置であって、前記マッピング情報が前記データ記憶システムに保管された第１のデータ・チャンクを固有ＩＤに関連付けて、前記第１のデータ・チャンクを含む第１の組のデータをコンピューティング・システムのメモリにロードすることをサポートする論理装置と、
前記マッピング情報を使用して、前記データ記憶システムからの第２の組のデータを前記メモリにロードすることに関連して、前記第１のデータ・チャンクのコピーがすでに前記メモリにロードされているかどうかを判断するための論理装置と、
前記第１のデータ・チャンクのいずれのコピーもまだ前記メモリにロードされていないと判断したことに応じて、前記第１のデータ・チャンクを前記データ記憶システムから取り出すための論理装置と、
前記第１のデータ・チャンクのいずれのコピーもまだ前記メモリにロードされていないと判断したことに応じて、前記第１のデータ・チャンクを前記メモリにロードするための論理装置と
を含む、システム。
【請求項２１】
前記第１のデータ・チャンクの少なくとも第１のコピーがすでに前記メモリにロードされていると判断したことに応じて、前記メモリにすでにロードされた前記第１のデータ・チャンクの前記第１のコピーを使用するための論理装置をさらに含む、請求項２０記載のシステム。
【請求項２２】
コンピュータ・プログラムであって、コンピュータ上で実行されると、
データ記憶システムからマッピング情報を受信することであって、前記マッピング情報が前記データ記憶システムに保管された第１のデータ・チャンクを固有ＩＤに関連付けて、前記第１のデータ・チャンクを含む第１の組のデータを前記コンピュータのメモリにロードすることをサポートすることと、
前記マッピング情報を使用して、前記データ記憶システムからの第２の組のデータを前記メモリにロードすることに関連して、前記第１のデータ・チャンクのコピーがすでに前記メモリにロードされているかどうかを判断することと、
前記第１のデータ・チャンクのいずれのコピーもまだ前記メモリにロードされていないと判断したことに応じて、前記第１のデータ・チャンクを前記データ記憶システムから取り出すことと、
前記第１のデータ・チャンクのいずれのコピーもまだ前記メモリにロードされていないと判断したことに応じて、前記第１のデータ・チャンクを前記メモリにロードすること
を前記コンピュータに実行させる、コンピュータ・プログラム。
【請求項２３】
コンピュータ上で実行されると、前記第１のデータ・チャンクの少なくとも第１のコピーがすでに前記メモリにロードされていると判断したことに応じて、前記メモリにすでにロードされた前記第１のデータ・チャンクの前記第１のコピーを使用することを前記コンピュータにさらに実行させる、請求項２２記載のコンピュータ・プログラム。
【国際調査報告】
2013513841.tif 000008
2013513841.tif 000009
2013513841.tif 000010
2013513841.tif 000011
2013513841.tif 000012