(57)【特許請求の範囲】
【請求項１】
実行するアプリケーションをその中に有するコンピュータシステムにおいて読み出し入出力要求を処理する方法であって、前記アプリケーションはマシンメモリページにマッピングされた仮想メモリページを含み、前記方法は、
各々がそれにマッピングされた少なくとも２つの仮想メモリページを有するマシンメモリページの第１のグループと、各々がそれにマッピングされた１つのみの仮想メモリページを有するマシンメモリページの第２のグループとのための追跡データ構造を保持するステップであって、前記追跡データ構造が、各々の前記マシンメモリページのために、そこからその内容が読み出されたか、又は読み出されているストレージボリュームにおける対応する位置を示すステップと、
読み出し要求に応じて、前記第１のグループ又は前記第２のグループにおけるマシンメモリページが、前記読み出し要求において示された前記ストレージボリュームの位置に格納されたデータを包含しているか又は包含する予定であることを、前記追跡データ構造を用いて判定し、前記読み出し要求に関連づけられた仮想メモリページを前記マシンメモリページにマッピングするステップと、
第１のメモリ書き込み要求に応じて、前記第１のグループにおけるマシンメモリページの内容を第１のマシンメモリページにコピーし、前記第１のメモリ書き込み要求に関連づけられた仮想メモリページを前記第１のマシンメモリページにマッピングするステップと、
第２のメモリ書き込み要求に応じて、前記第２のグループにおけるマシンメモリページの内容を第２のマシンメモリページにコピーし、前記第２のメモリ書き込み要求に関連づけられた仮想メモリページを前記第２のマシンメモリページにマッピングするステップと
を含み、前記第１のグループ及び前記第２のグループにおける前記マシンメモリページの少なくとも１つは、前記ストレージボリュームに対して発行された現在処理中の読み出し要求のターゲットメモリ位置であることを特徴とする方法。
【請求項２】
前記アプリケーションが仮想マシンのインスタンスであり、前記仮想メモリページがゲスト物理メモリページであることを特徴とする請求項１記載の方法。
【請求項３】
前記追跡データ構造が、前記マシンメモリページの各々に対して、どのくらいの仮想メモリページが前記マシンメモリページにマッピングされているのかを示す参照カウントを示し、前記読み出し要求に応じて、前記第１のグループ又は前記第２のグループにおいて前記マシンメモリページに関連づけられた前記参照カウントが増加されることを特徴とする請求項１記載の方法。
【請求項４】
前記第１のメモリ書き込み要求に応じて、前記第１のグループにおいて前記マシンメモリページに関連づけられた前記参照カウントは減少され、前記第２のメモリ書き込み要求に応じて、前記第２のグループにおいて前記マシンメモリページに関連づけられた前記参照カウントは減少されることを特徴とする請求項３記載の方法。
【請求項５】
前記マシンメモリページにマッピングされた仮想メモリページを有しない前記マシンメモリページに対応する前記追跡データ構造のエントリの１つ以上を削除することにより前記追跡データ構造を更新するステップ
を更に含むことを特徴とする請求項４に記載の方法。
【請求項６】
前記第１のグループと前記第２のグループとにおける前記マシンメモリページの少なくとも１つは、前記ストレージボリュームに対して発行され完了された読み出し要求のターゲットメモリ位置であることを特徴とする請求項１記載の方法。
【請求項７】
実行するアプリケーションをその中に有するコンピュータシステムにおいて読み出し入出力要求を処理する方法であって、前記アプリケーションはマシンメモリページにマッピングされた仮想記憶ページを含み、前記方法は、
マシンメモリページにマッピングされた少なくとも２つの仮想記憶ページを各々が有する、前記マシンメモリページの第１のグループと、前記マシンメモリページにマッピングされた１つのみの仮想メモリページを各々が有する、マシンメモリページの第２のグループと、前記マシンメモリページにマッピングされた仮想メモリページを各々が有しない、マシンメモリページの第３のグループとのための追跡データ構造を保持するステップであって、前記追跡データ構造が、各々の前記マシンメモリページのために、そこからその内容が読み出されたか、又は読み出されているストレージボリュームにおける対応する位置を示し、参照カウントが、どのくらいの仮想メモリページが前記マシンメモリページにマッピングされているのかを示すステップと、
読み出し要求に応じて、前記第１のグループ、前記第２のグループ及び前記第３のグループの１つにおけるマシンメモリページに、前記読み出し要求に関連づけられた仮想メモリページをマッピングし、前記マシンメモリページに関連づけられた前記参照カウントを増加させるステップと
を含み、前記第１のグループと前記第２のグループと前記第３のグループとにおける前記マシンメモリページの少なくとも１つは、前記ストレージボリュームに対して発行され現在処理中である読み出し要求のターゲットメモリ位置であることを特徴とする方法。
【請求項８】
前記アプリケーションは仮想マシンのインスタンスであり、前記仮想メモリページはゲスト物理メモリページであることを特徴とする請求項７記載の方法。
【請求項９】
前記第１のグループと前記第２のグループと前記第３のグループとにおける前記マシンメモリページの少なくとも１つは、前記ストレージボリュームに対して発行され完了された読み出し要求のターゲットメモリ位置であることを特徴とする請求項７記載の方法。
【請求項１０】
前記第３のグループにおける前記マシンメモリページに関連づけられた１つ以上のエントリを削除するために前記追跡データ構造を更新するステップ
を更に含むことを特徴とする請求項７記載の方法。
【請求項１１】
第１のメモリ書き込み要求に応じて、前記第１のグループにおけるマシンメモリページの内容を第１のマシンメモリページにコピーし、前記第１のメモリ書き込み要求に関連づけられた仮想メモリページを前記第１のマシンメモリページにマッピングするステップと、
第２のメモリ書き込み要求に応じて、前記第２のグループにおけるマシンメモリページの内容を第２のマシンメモリページにコピーし、前記第２のメモリ書き込み要求に関連づけられた仮想メモリページを前記第２のマシンメモリページにマッピングするステップと、
を更に含むことを特徴とする請求項７記載の方法。
【請求項１２】
実行する仮想マシンをその中に有するコンピュータシステムにおいて読み出し入出力要求を処理する方法であって、前記仮想マシンは、ゲスト物理メモリページを介してマシンメモリページにマッピングされたゲスト仮想メモリページを含み、前記方法は、
一組のマシンメモリページのための追跡データ構造を保持するステップであって、前記追跡データ構造が、各々の前記マシンメモリページのために、その内容が読み出されたか、又は読み出されているストレージボリュームにおける対応する位置を示し、参照カウントが、どのくらいの仮想メモリページが前記マシンメモリページにマッピングされているのかを示し、保留状態フラグが、前記ストレージボリュームからの読み出しが保留中であるか否かを示すステップと、
読み出し要求に応じて、追跡されている前記マシンメモリページの１つが、読み出し要求において示された前記ストレージボリュームの位置に格納されたデータを包含しているか又は包含する予定であるかを、前記追跡データ構造を用いて判定するステップと、
前記読み出し要求において示された前記ストレージボリュームの位置に格納されたデータを包含しているか又は包含する予定である、追跡されているマシンメモリページがあるならば、前記読み出し要求に関連づけられたゲスト物理メモリページを前記マシンメモリページにマッピングするステップと、
前記読み出し要求において示された前記ストレージボリュームの位置に格納されたデータを包含しているか又は包含する予定である、追跡されているマシンメモリページがないならば、前記読み出し要求に示された前記ストレージボリュームの位置に格納されたデータのための前記ストレージボリュームに対して要求を発行し、前記要求されたデータが格納される前記マシンメモリページに対する前記読み出し要求に関連づけられたゲスト物理メモリページをマッピングし、ページ共有ヒントを包含するデータ構造に新たなエントリを追加するステップであって、前記新たなエントリが、前記読み出し要求に関連づけられた前記ゲスト物理メモリページと前記ゲスト物理メモリページに関連づけられた前記仮想マシンとを識別するステップと
を含むことを特徴とする方法。
【請求項１３】
前記要求されたデータが格納される前記マシンメモリページに対応する前記追跡データ構造に新たなエントリを追加するステップであって、前記新たなエントリが、前記読み出し要求において示された前記ストレージボリュームの位置を含み、参照カウントが、１つのゲスト物理メモリページが前記マシンメモリページにマッピングされていることを示し、保留状態フラグが、前記ストレージボリュームからの読み出しが保留中であるか完了しているかを示すように設定されるステップ
を更に含むことを特徴とする請求項１２記載の方法。
【請求項１４】
仮想マシンのためのホストプラットホームとそれに接続されたストレージボリュームとを備えるコンピュータシステムであって、仮想マシンのための前記ホストプラットホームは、１つ以上のプロセッサ及びマシンメモリを含み、前記マシンメモリは、マシンメモリページにマッピングされた少なくとも２つの仮想記憶ページを各々が有する、マシンメモリページの第１のグループと、マシンメモリページにマッピングされた１つのみの仮想メモリページを各々が有する、前記マシンメモリページの第２のグループと、マシンメモリページにマッピングされた仮想メモリページを各々が有しない、前記マシンメモリページの第３のグループと、のための追跡データ構造をその中に格納し、前記追跡データ構造が、各々の前記マシンメモリページのために、そこからその内容が読み出されたか、又は読み出されているストレージボリュームにおける対応する位置を示し、参照カウントが、どのくらいの仮想メモリページが前記マシンメモリページにマッピングされているのかを示し、保留状態フラグが、前記ストレージボリュームからの読み出しが保留中であるか否かを示し、前記仮想マシンのいずれかによって発行された読み出し要求は、前記追跡データ構造に基づいて前記ストレージボリュームに条件付きで発行されることを特徴とするコンピュータシステム。
【請求項１５】
前記プロセッサは、前記仮想マシンによって発行された読み出し要求を処理し、読み出し要求を発行するのに先立って、前記読み出し要求において示されるものと同じである前記ストレージボリュームの位置からのデータを包含しているか又は包含する予定のマシンメモリページが存在するか否かを判定するために追跡データ構造をチェックするようにプログラミングされることを特徴とする請求項１４記載のコンピュータシステム。
【請求項１６】
前記プロセッサは、前記マシンメモリページが、前記読み出し要求において示されるものと同じである前記ストレージボリュームの位置からのデータを包含しているか又は包含する予定であることが判定されるならば、マシンメモリページに仮想メモリページをマッピングし、前記マシンメモリページに関連づけられた前記参照カウントを増加させるようにプログラミングされることを特徴とする請求項１４記載のコンピュータシステム。
【請求項１７】
前記プロセッサは、共有マシンメモリページに対して書き込むための要求に応じて新たなマシンメモリページに対して前記共有マシンメモリページの内容をコピーし、前記共有マシンメモリページに関連づけられた前記参照カウントを減少させるように、更にプログラミングされることを特徴とする請求項１６記載のコンピュータシステム。
【請求項１８】
前記プロセッサは、新たなマシンメモリページに関連づけられたエントリを前記追跡データ構造に追加し、前記新たなマシンメモリページに対して保持されるメタデータの中に共有ヒントを挿入するように、更にプログラミングされることを特徴とする請求項１４記載のコンピュータシステム。
【発明の詳細な説明】
【関連出願の相互参照】
【０００１】
[0001]本出願は、２００９年５月１９日に出願された米国特許仮出願第６１／１７９，６１２号の優先権を主張する。本仮出願の内容全体は、参考文献として本明細書に援用される。
【技術分野】
【０００２】
本発明は、仮想マシンシステムにおけるショートカット入出力に関する。
【背景技術】
【０００３】
[0002]仮想マシン（ＶＭ）は、オペレーティングシステム（ＯＳ）が専用の物理的マシンの外見上の制御により実行できる環境を提供する。複数のＶＭは、一般的なハードウェアマシン上で実行でき、各ＶＭは、一般的なハードウェアマシン上で実行する他のＶＭから保護及び分離されて動作してもよい。各ＶＭは、典型的には、ユーザレベルのアプリケーション及びカーネルモードサービスの両方を含む、対応するＯＳのための完全な実行状態をカプセル化する。
【０００４】
[0003]ＶＭは、デスクトップコンピュータ上で一般的に見られる従来のデスクトップ環境のインスタンスを実行してもよい。仮想デスクトップインフラストラクチャ（ＶＤＩ）システムは、一般的なハードウェアマシン上でデスクトップ環境のインスタンスを実行するように特に構成されたＶＭのシステムである。クライアント装置は、一般的なハードウェアマシンに対してネットワーク接続を介してＶＤＩシステム内のデスクトップ環境の特定インスタンスをアクセスしてもよい。クライアント装置は、その後、適合するネットワークアクセスにより任意の位置からユーザに対してデスクトップ環境を提示することができる。
【０００５】
[0004]デスクトップ環境の各インスタンスは、デスクトップＯＳ及び関連するアプリケーションを備える。デスクトップＯＳ及びアプリケーションは、インスタンスに関連づけられる大容量ストレージボリューム内に存在する。各インスタンスは、デスクトップコンピュータに取り付けられたハードディスクによって提供されるものと同様のプライベートなストレージスペースを提供する固有の大容量ストレージボリュームに関連づけられる。大容量ストレージボリュームは、大容量ストレージボリュームに関連づけられた、共有の読み出し専用の「基本ディスク」及び固有の一組の差分ブロックに由来してもよい。
【０００６】
[0005]デスクトップ環境の個別のインスタンスの大容量ストレージボリュームは、大容量ストレージ装置上に存在する。大容量ストレージ装置は、１つ以上の磁気ハードディスクドライブを用いて、従来通りに実現されている。但し、大容量ストレージ装置媒体はいずれの形式で用いられてもよい。例えば、最新のコンピュータシステムにおいて、大容量ストレージ装置媒体は、ソリッドステートドライブ（ＳＳＤ）又はＳＳＤアレイを備えていてもよい。
【０００７】
[0006]複数のデスクトップ環境がＶＤＩシステムによって起動されるとき、各デスクトップ環境は、関連づけられるＶＭによって提供される、外見上はプライベートなハードウェアマシン上のＯＳのそれぞれのインスタンスを個々に起動する。但し、現実には、一般的なハードウェアマシンは、複数のデスクトップ環境の各々を起動するために必要なステップ及び命令をすべて実行している。「ブートストーム（Ｂｏｏｔ  Ｓｔｏｒｍ）」は、複数のデスクトップ環境がそれぞれのＶＭの中で一斉に起動を試みるときに生じる一般的なハードウェアマシンに関してのリソースの利用度合の急激且ついつか致命的になる増大を表す。ブートストームは、典型的には、入出力（Ｉ／Ｏ）要求、ディスクアクセス要求、及びメモリ割当て要求の急激な増大を特徴とする。各デスクトップ環境が起動するとき、特定の一組の一般的に使用されるディスクブロックは、大容量ストレージ装置から一般的なハードウェアマシン内のシステムメモリの中に読み込まれる。一般的に使用されるディスクブロックの多くは、ＯＳのデータセグメントである。従来のＶＤＩシステムにおいて、各ディスクブロックは、大容量ストレージ装置から読み出され、その後、一般的なハードウェアマシン上のシステムメモリの物理メモリページに格納されるかもしれない。次に、各物理メモリページは、ディスクブロックを要求したＶＭに対してプライベートにマッピングされる。その結果、一般的に用いられているブロックの各々のコピーは、大容量ストレージシステムから要求され、システムメモリ内に余分に格納されるかもしれず、結果として入出力及びストレージの非能率に通じる。
【０００８】
[0007]例えば、従来のＶＤＩシステムにおいて、デスクトップ環境のＮ個のインスタンスが一般的なハードウェアマシン上で起動されるならば、一組の一般的に使用されるブロックからの各ブロックのＮ個のコピーは、大容量ストレージシステムから別々に要求され、Ｎ個の別々のコピーとしてシステムメモリ内に最初に格納される。同様に、Ｍ人の個別のユーザがそれぞれの仮想デスクトップ環境から特定の一般的なアプリケーションを開始すれば、アプリケーションによって用いられる各ブロックへのＭ個の別々の要求は、大容量ストレージシステムに対して別々に伝送され、対応するデータは、システムメモリ内のＭ個の別々のブロックに格納される。一般的なアプリケーションの開始シナリオと同様にブートストームのシナリオにおいても、大幅なメモリ及び入出力の容量は、デスクトップ環境の複数のインスタンスを起動して実行する複数のＶＭを支援するために利用される。残念なことに、このメモリ及び入出力容量の多くは、余分に利用され、従って、そうでなければＶＤＩシステムアーキテクチャによって得られた有利性が制限される。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】米国特許第６，７８９，１５６号
【特許文献２】米国特許第７，６２０，７６６号
【発明の概要】
【発明が解決しようとする課題】
【００１０】
[0008]従って、当該技術分野で必要とされるものは、ＶＤＩ及び他の同様のシステムにおけるシステムリソースの利用度合を低減するための技術である。
【課題を解決するための手段】
【００１１】
[0009]本発明の１つ以上の実施形態は、要求されたデータブロックが以前のアクセスからメモリ内に既に格納されているか、又は保留の要求の終了次第メモリ内に格納されるか否かに依存して、一般的にアクセスされるストレージボリュームに対する読み出し要求を条件付きで発行するための方法とシステムを提供する。その結果、ストレージボリュームに対して発行された入出力要求の総数を、特に、ＶＤＩシステムを支援する個別の仮想マシンによって作られた多数の読み出しを、ストレージボリュームにおけるアドレスと同じアドレスにあるＶＤＩシステムにおいて、著しく低減することができる。
【００１２】
[0010]本発明の１つの実施形態による、実行するアプリケーションをその中に有するコンピュータシステムにおける読み出し入出力要求を処理する方法は、マシンメモリページにマッピングされた少なくとも２つの仮想メモリページを各々が有する、マシンメモリページの第１のグループと、マシンメモリページにマッピングされた１つのみの仮想メモリページを各々が有する、マシンメモリページの第２のグループとのための追跡データ構造を利用し、追跡データ構造が、各々のマシンメモリページのために、そこからその内容が読み出されたか、又は読み出されているストレージボリュームにおける対応する位置を示す。この方法によれば、読み出し要求に応じて、追跡データ構造が、第１のグループ又は第２のグループにおけるマシンメモリページが読み出し要求において示されたストレージボリュームの位置に格納されたデータを包含しているか又は包含する予定であることを判定するために用いられ、読み出し要求に関連づけられた仮想メモリページが、このマシンメモリページにマッピングされる。更に、第１のグループ又は第２のグループのいずれかのマシンメモリページに対するメモリ書き込み要求に応じて、関連づけられたマシンメモリの内容が、新たなマシンメモリページにコピーされ、メモリ書き込み要求に関連づけられた仮想メモリページが、新たなマシンメモリページにマッピングされる。
【００１３】
[0011]本発明の別の実施形態による、実行するアプリケーションをその中に有するコンピュータシステムにおける読み出し入出力要求を処理する方法は、マシンメモリページにマッピングされた少なくとも２つの仮想記憶ページを各々が有する、マシンメモリページの第１のグループと、マシンメモリページにマッピングされた１つのみの仮想メモリページを各々が有する、マシンメモリページの第２のグループと、マシンメモリページにマッピングされた仮想メモリページを各々が有しない、マシンメモリページの第３のグループとのための追跡データ構造を利用し、追跡データ構造が、各々のマシンメモリページのために、そこからその内容が読み出されたか、又は読み出されているストレージボリュームにおける対応する位置を示し、参照カウントが、どのくらいの仮想メモリページがマシンメモリページにマッピングされているのかを示す。この方法によれば、読み出し要求に応じて、読み出し要求に関連づけられた仮想メモリページが、第１のグループ、第２のグループ及び第３のグループのうちの１つにおけるマシンメモリページにマッピングされ、マシンメモリページに関連づけられた参照カウントが、増加させられる。
【００１４】
[0012]本発明の更に別の実施形態による、実行する仮想マシンをその中に有するコンピュータシステムにおける読み出し入出力要求を処理する方法は、一組のマシンメモリページのための追跡データ構造を利用し、追跡データ構造が、各々のマシンメモリページのために、その内容が読み出されたか、又は読み出されているストレージボリュームにおける対応する位置を示し、参照カウントが、どのくらいの仮想メモリページが前記マシンメモリページにマッピングされているのかを示し、保留状態フラグが、ストレージボリュームからの読み出しが保留中であるか否かを示す。この方法は、読み出し要求に応じて、追跡されているマシンメモリページの１つが、読み出し要求において示されたストレージボリュームの位置に格納されたデータを包含しているか又は包含する予定であるかを、追跡データ構造を用いて判定するステップと、読み出し要求において示されたストレージボリュームの位置に格納されたデータを包含しているか又は包含する予定である、追跡されているマシンメモリページがあるならば、読み出し要求に関連づけられたゲスト物理メモリページをマシンメモリページにマッピングするステップと、読み出し要求において示されたストレージボリュームの位置に格納されたデータを包含しているか又は包含する予定である、追跡されているマシンメモリページがないならば、読み出し要求に示されたストレージボリュームの位置に格納されたデータのためのストレージボリュームに対して要求を発行し、要求されたデータが格納されるマシンメモリページに対する読み出し要求に関連づけられたゲスト物理メモリページをマッピングし、読み出し要求に関連づけられたゲスト物理メモリページをページ共有ヒントによりマーキングするステップとを含む。
【００１５】
[0013]本発明の１つの実施形態によるコンピュータシステムは、仮想マシンのためのホストプラットホームと、それに接続されたストレージボリュームとを含む。仮想マシンのためのホストプラットホームは、１つ以上のプロセッサと、マシンメモリページにマッピングされた少なくとも２つの仮想メモリページを各々が有する、マシンメモリページの第１のグループと、マシンメモリページにマッピングされた１つのみの仮想メモリページを各々が有する、マシンメモリページの第２のグループと、マシンメモリページにマッピングされた仮想メモリページを各々が有しない、マシンメモリページの第３のグループとのための追跡データ構造をその中に格納したシステムメモリとを含む。追跡データ構造が、各々のマシンメモリページのために、そこからその内容が読み出されたか、又は読み出されているストレージボリュームにおける対応する位置を示し、参照カウントが、どのくらいの仮想メモリページが前記マシンメモリページにマッピングされているのかを示し、保留状態フラグが、ストレージボリュームからの読み出しが保留中であるか否かを示す。仮想マシンのいずれかによって発行された読み出し要求は、この追跡データ構造に基づいてストレージボリュームに条件付きで発行される。
【００１６】
[0014]他の実施形態は、開示された方法の１つ以上の態様を処理装置が実施することを可能にする命令を含むコンピュータ読み取り可能な記憶媒体を、制限なく、含む。
【図面の簡単な説明】
【００１７】
【図１】[0015]本発明の１つ以上の態様を実施するように構成されたコンピュータシステムを図示するブロック図である。
【図２】[0016]本発明の１つの実施形態による、ベースボリュームと、ベースボリュームのリンクされたクローンとを図示する。
【図３Ａ】[0017]本発明の１つの実施形態による、ゲスト物理ページ番号（ＧＰＰＮ）を介する、仮想マシン（ＶＭ）内のゲスト仮想ページ番号（ＧＶＰＮ）からマシンページ番号（ＭＰＮ）へのメモリマッピングを図示する。
【図３Ｂ】[0018]本発明の１つの実施形態による、第２のＧＰＰＮを介する、第２のＶＭの内の第２のＧＶＰＮから第２のＭＰＮへの第２のメモリマッピングを図示する。
【図３Ｃ】[0019]本発明の１つの実施形態による、それによって共有のための第１のＭＰＮに対して第２のＧＰＰＮが再マッピングされ、第２のＭＰＮがリリースされる「フリップ」操作を図示する。
【図３Ｄ】[0020]本発明の１つの実施形態による、第２のＶＭのためのプライベートＭＰＮへの共有ＭＰＮのコピーオンライトの再マッピング（Ｃｏｐｙ−ｏｎ−Ｗｒｉｔｅ  Ｒｅｍａｐｐｉｎｇ）を図示する。
【図３Ｅ】[0021]本発明の１つの実施形態による、第１のＶＭにより引き起こされたコピーオンライトの再マッピングの結果として、取り残されている共有ＭＰＮを図示する。
【図４】[0022]本発明の１つの実施形態による、少なくとも追跡されるページの各々の参照カウント及び保留状態ビットを含むように構成されたページ追跡テーブルを図示する。
【図５】[0023]本発明の１つの実施形態による、入出力要求を追跡してショートカットするために、ハイパーバイザによって実行される方法ステップのフローチャートである。
【図６Ａ】[0024]本発明の１つの実施形態による、仮想マシン内のＧＶＰＮから、入出力読み出し要求に関連づけられたＭＰＮへのメモリマッピングを図示する。
【図６Ｂ】[0025]本発明の１つの実施形態による、１つのＭＰＮに関連づけられた要求されたデータブロックの、別のＭＰＮに対するコピー操作を図示する。
【図７】[0026]本発明の１つの実施形態による、入出力要求を追跡しショートカットするために、ハイパーバイザによって実行される方法ステップのフローチャートである。
【発明を実施するための形態】
【００１８】
[0027]図１は、本発明の１つ以上の態様を実施するように構成されたコンピュータシステム１００を図示するブロック図である。１つの実施形態において、コンピュータシステム１００は、仮想デスクトップインフラストラクチャ（ＶＤＩ）システムを実施するように構成され、それによって、仮想デスクトップ環境の複数の個別のインスタンスのための状態は、マシンメモリ１１０内に存在し、個別のインスタンスのための処理は、プロセッサ複合体１１２によって実行される。コンピュータシステム１００は、プロセッサ複合体１１２と、マシンメモリ１１０と、大容量ストレージシステム１１４とを含む。プロセッサ複合体１１２は、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）インタフェースのような任意の技術的に実現可能な電気的インタフェースを介して、マシンメモリ１１０に連結されていてもよい。他の構成において、プロセッサ複合体１１２は、業界標準のハイパートランスポート（ＨｙｐｅｒＴｒａｎｓｐｏｒｔ）（商標）、ＰＣＩエクスプレス（ＰＣＩ−Ｅｘｐｒｅｓｓ）（商標）、インテル（Ｉｎｔｅｌ）（商標）ＱｕｉｃｋＰａｔｈインターコネクト（ＱＰＩ）、又は他の技術的に実現可能なトランスポートインタフェースのような媒介相互接続を介して、マシンメモリ１１０に連結されていてもよい。介在する相互接続に関する詳細な記述は、明瞭さのために本明細書には示されない。プロセッサ複合体１１２は、シリアルアドバンストテクノロジーアタッチメント（ＳＡＴＡ）、シリアル接続小型コンピュータ用周辺機器インタフェース（ＳＡＳ）又は他の技術的に実現可能なネイティブストレージインタフェースなどのネイティブストレージインタフェースを介して、大容量ストレージシステム１１４に連結されていてもよい。他の構成において、プロセッサ複合体１１２は、ファイバチャンネル（Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ）、インターネット小型コンピュータ用周辺機器インタフェース（ｉＳＣＳＩ）、又は他の技術的に実現可能なネットワーク使用可能ストレージインタフェースなどのネットワーク使用可能ストレージインタフェースを介して、大容量ストレージシステム１１４に連結されている。
【００１９】
[0028]プロセッサ複合体１１２は、メモリインタフェース１４０と、１つ以上の中央処理装置（ＣＰＵ）１４２−１〜１４２−ｍとを、制限なく含む。メモリインタフェース１４０は、１つ以上のＣＰＵ１４２にマシンメモリ１１０を連結するように構成されている。１つ以上の各ＣＰＵ１４２は、マシンメモリ１１０内に格納されたプログラム命令を実行するように構成されている。プログラム命令は、実行するためにマシンメモリ１１０内に格納可能なソフトウェアモジュールとして編成されている。１つ以上のＣＰＵ１４２の各々は、ゲスト物理アドレス〜マシンアドレス、又はゲスト仮想アドレス〜ゲスト物理アドレス〜マシンアドレスのネスト化された変換マッピングなどのアドレス変換を実行するように構成されたメモリ管理ユニット（ＭＭＵ）１４１を、制限なく含む。ディスクインタフェース１４４及びネットワークインタフェース１４６は、プロセッサ複合体１１２に連結されている。ディスクインタフェース１４４は、１つ以上のＣＰＵ１４２に大容量ストレージシステム１１４を連結するように構成されている。ディスクインタフェース１４４は、ディスクシステムの制御に関連する実装固有の機能性を含んでいてもよい。このような機能性は、例えば、独立ディスク冗長アレイ（ＲＡＩＤ）及びキャッシングのための制御を含んでいてもよい。大容量ストレージシステム１１４は、磁気ディスクドライブ、ソリッドステートドライブ、又は永続的なストレージに対してデータを読み書きするように構成された他の構成要素などの、任意の技術的に実現可能なストレージ素子を備えていてもよい。ネットワークインタフェース１４６は、１つ以上のＣＰＵ１４２にネットワークポート１１６を連結するように構成されている。ネットワークインタフェース１４６は、プロセッサ複合体１１２内の１つ以上のＣＰＵ１４２にネットワークポート１１６を連結するように構成されている。ネットワークインタフェースは、ネットワークポート１１６を介してデータパケットを送受信するために必要とされる任意の機能性を含んでいてもよい。１つの構成において、ネットワークポート１１６は、業界標準のイーサネット（登録商標）ポートである。
【００２０】
[0029]マシンメモリ１１０は、全体的なＶＤＩシステムの一部としてデスクトップ環境のインスタンスを提供するためにプロセッサ複合体１１２によって用いられるカーネル１３４、ハイパーバイザ１３６、及び仮想マシン（ＶＭ）１２０をその中に格納している。ハイパーバイザ１３６は、ＶＭ１２０に対して実行時環境を提供し、かつ対応するＶＭ１２０の１つに関連する少なくとも１つの仮想マシンモニタ（ＶＭＭ）１３０を実行するように構成されたソフトウェア仮想化レイヤである。各ＶＭ１２０は、１対１の方式で、ＶＭＭ１３０の１つに関連づけられている。ハイパーバイザ１３６は、同一のデータを含むメモリのページを共有するためのページ共有メカニズムを実施するように構成されている共有モジュール１３８を含む。ページ共有は、以下でより詳細に記述されている。ハイパーバイザ１３６は、また、今後のディスクブロック要求で要求されてもよい（さもないとクライアント処理によって参照されない）ディスクデータのブロックに対応するメモリのページを保持するように構成された孤立キャッシュ（Ｏｒｐｈａｎ  Ｃａｃｈｅ）１３９を含む。
【００２１】
[0030]図示されるように、ＶＭ１２０−１は、１つ以上の仮想プロセッサ１２２と、ゲストシステムソフトウェア１２７とを含む。アプリケーション１２８は、ゲストシステムソフトウェア１２７のための従来のユーザ空間アプリケーション又はカーネル空間アプリケーションのための従来のランタイムモデルに従って開始し実行してもよい。１つの実施形態において、ゲストシステムソフトウェア１２７は、汎用オペレーティングシステムなどのゲストオペレーティングシステム（ＯＳ）１２４を含む。ゲストシステムソフトウェア１２７は、また、ウィンドウ管理システムなどのユーザインタフェース１２６を含む。ゲストＯＳ１２４は、従来通りに、プロセス制御、メモリ管理、及びアプリケーション１２８によって必要とされる他のサービスを提供し、かつユーザに対してデスクトップ環境を提示するように構成されている。ゲストＯＳ１２４は、仮想プロセッサ１２２を介してアクセス可能な対応する仮想装置（図示せず）を管理するように構成されたゲストドライバ（ＤＲＶＳ）１２５を含む。実際のハードウェアプロセッサシステムの対応するシステムハードウェアコンポーネントをエミュレートするために、仮想装置は、ソフトウェアで実施される。仮想装置は、グラフィックスフレームバッファ、ネットワークインタフェース、大容量ストレージインタフェース、周辺機器、及びシステムメモリを制限なく含んでいてもよい。通常の実行の間に、アプリケーション１２８は、ゲスト仮想ページ番号（ＧＶＰＮ）として編成された、仮想アドレス空間をターゲットとするロード要求及び格納要求を生成する。ゲスト仮想アドレス空間内のＧＶＰＮに対する要求は、仮想プロセッサ１２２内のエミュレートされたＭＭＵ機能によって、対応するゲスト物理アドレス及びゲスト物理ページ番号（ＧＰＰＮ）に対してマッピングされていてもよい。ゲスト物理メモリは、対応する固有のＧＰＰＮにより、ページと呼ばれる別のユニットとして、各々編成されている。アプリケーション１２８及びゲストシステムソフトウェア１２７は、大容量ストレージシステム１１４に対して入出力ブロック要求などの入出力要求を生成してもよい。ＶＭ１２０−１は、その仮想ストレージデバイスがゲストＯＳ１２４からの入出力要求に応じて直接ＧＰＰＮにアクセスすることを可能にする、仮想ダイレクトメモリアクセス（ＤＭＡ）を実施してもよい。
【００２２】
[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]ステップ７１４において、要求されたディスクブロックがページ追跡テーブル１７５によって追跡されるならば、本方法は、ステップ７２０に進む。要求されたディスクブロックがエントリによってページ追跡テーブル１７５に表わされているならば、要求されたディスクブロックは、追跡されているものと判定される。要求されたディスクブロックは、追跡されているが、保留状態ビット４１６ならば保留である。
【００６１】
[0070]ステップ７２０において、ハイパーバイザ１３６は、ページ追跡テーブル１７５に示される、対応する追跡されるＭＰＮのＭＰＮにマッピングするために、要求されたディスクブロックに関連づけられたＧＰＰＮのページマッピングをフリップする。ステップ７２２において、ページ追跡メタデータは、増分された参照カウント４１４を反映するために更新される。ステップ７２４において、ページ共有メタデータは、例えば、付加的なＧＰＰＮが共有ＭＰＮにマッピングされている共有モジュール１３８に通知するために更新される。
【００６２】
[0071]ステップ７５０において、本方法は、マッピングされたＭＰＮの形式で、要求されたデータページを返す。１つの実施形態において、対応するページの保留状態ビット４１６が依然として設定されているならば、本方法は、保留状態ビットが戻る前にクリアされるまで待機する。本方法は、ステップ７９０において終了する。
【００６３】
[0072]ステップ７１４に戻って、要求されたディスクブロックがページ追跡テーブル１７５によって追跡されていないならば、次に、本方法は、ステップ７３０に進む。そこでは、ハイパーバイザ１３６は、大容量ストレージシステム１１４から要求されたディスクブロックを検索するために読み出された入出力操作の実行を開始する。ステップ７３２において、要求されたディスクブロックのためのデータは、対応する読み書きマッピングされたＭＰＮに格納される。ステップ７３３において、読み書きマッピングされたＭＰＮに関連づけられたデータは、次に、読み取り専用アクセスのためにマッピングされる、第２のＭＰＮによって参照されたメモリのページにコピーされる。ステップ７３４において、ターゲット参照４１０、ＭＰＮ４１２（読み取り専用アクセスのためにマッピングされた参照ＭＰＮ）、参照カウント４１４及び保留状態ビット４１６を備えるページ追跡メタデータと共に、エントリがページ追跡テーブル１７５に追加される。１つの実施形態において、参照カウント４１４の初期値は２に設定されている。ＭＰＮ４１２によって参照されたメモリのページ内への、要求されたブロックデータの書き込みが終了するまで、保留状態ビット４１６は、１に設定されており、その後保留状態ビット４１６がクリアされる。ステップ７３６において、要求されたディスクブロック及び関連するＶＭ識別子に関連づけられたＧＰＰＮは、ページ共有ヒント情報構造に追加される。
【００６４】
[0073]ステップ７１２に戻ると、要求されたディスクブロックに共有される十分な可能性がないならば、次に、本方法は、ステップ７４０に進む。そこでは、ハイパーバイザ１３６は、大容量ストレージシステム１１４から要求されたディスクブロックを検索するために読み出し入出力操作の実行を開始する。ステップ７４２において、要求されたディスクブロックのためのデータは、対応するマッピングされたＭＰＮによって参照された１ページ以上のメモリに格納される。
【００６５】
[0074]要するに、一般的に要求されたデータブロックのための入出力操作をショートカットするための技術が開示されている。ページ追跡テーブルは、ディスクブロックとマシンページ番号との間の関連性を保持する。共有されるディスクブロックは、ページ追跡テーブル内で追跡され、一方で、他を追跡する必要はない。要求が追跡されるディスクブロックのために受け取られる場合、データは、ＶＭ内で要求されたブロックに割り当てられたページの再マッピングにより、要求するＶＭに提示される。このように、入出力要求の結果は、要求するＶＭに関して透過的に達成される。ディスクブロックは、ディスクボリューム識別子又はディスクブロック参照カウントなどの任意の技術的に実現可能な基準に基づいて共有される可能性があると見なされる。
【００６６】
[0075]本発明の１つの有利性は、入出力操作がゲストＶＭに関して透過的に低減できるということである。付加的な１つの有利性は、ディスクブロックデータの付加的なインスタンスが共有を通じて最小限に抑えられるので、付加的なマシンメモリのごく一部のみが必要とされるということである。
【００６７】
[0076]本明細書に記述された本発明の実施形態において、仮想化されたシステムのコンテキストにおいて「仮想（ｖｉｒｔｕａｌ）」は、ＧＶＰＮにおけるようなゲスト仮想、又はＧＰＰＮにおけるようなゲスト物理を意味し、ＶＰＮにおけるような非仮想化されたシステムのコンテキストにおいては、単なる仮想を意味する。
【００６８】
[0077]添付された特許請求の範囲に記載される本発明の幅広い精神及び範囲から逸脱せずに、本明細書に記述された特定の実施形態に対して、様々な変形及び変更がなされてもよいことは、認識されるべきである。
【００６９】
[0078]本明細書に記述された様々な実施形態は、コンピュータシステムに格納されたデータを含む様々なコンピュータで実現される操作を利用してもよい。例えば、これらの操作は、通常は（必然的にではなく）物理量の物理的操作を必要としてもよい。これらの物理量は、それら（又はそれらを表現したもの）が格納され、組み合わされ、転送され、比較され、又は他の方法で操作可能な、電気的又は磁気的信号の形式をとってもよい。更に、このような操作は、多くの場合、生成、識別、判定、比較などの用語に関連する。本発明の１つ以上の実施形態の一部を形成する本明細書に記述された任意の操作は、有用な機械操作であってもよい。更に、本発明の１つ以上の実施形態は、また、これらの操作を実行するためのデバイス又は装置に関連する。装置は、特定の必要とされた目的のために、特別に構成されてもよいし、又は、コンピュータに格納されたコンピュータプログラムによって、選択的に起動され、又は構成された汎用コンピュータであってもよい。特に、様々な汎用機は、本明細書に教示と共に記述されたコンピュータプログラムと共に用いられてもよいし、又は、必要な操作を実行するために、より特定の装置を構成するほうが好都合であるかもしれない。
【００７０】
[0079]本明細書に記述された様々な実施形態は、携帯端末、マイクロプロセッサシステム、マイクロプロセサベースの民生用電子機器又はプログラミング可能な民生用電子機器、ミニコンピュータ、メインフレームコンピュータなどを含む他のコンピュータシステム構成により実施されてもよい。
【００７１】
[0080]本発明の１つ以上の実施形態は、１つ以上のコンピュータプログラム、又は１つ以上のコンピュータ読み取り可能媒体で具体化された１つ以上のコンピュータプログラムモジュールとして実施されてもよい。用語「コンピュータ読み取り可能媒体」は、コンピュータプログラムをコンピュータによって読み出されることを可能にする方式で具体化するための任意の既存の（又は後に）開発される技術に基づいてもよいコンピュータシステムのコンピュータ読み取り可能媒体に、その後入力可能なデータを格納できる任意のデータストレージデバイスを表す。コンピュータ読み取り可能媒体の例は、ハードドライブ、ネットワーク接続ストレージ（ＮＡＳ）、読み出し専用メモリ、ランダムアクセスメモリ（例えば、フラッシュメモリデバイス）、ＣＤ（コンパクトディスク）、ＣＤ−ＲＯＭ、ＣＤ−Ｒ又はＣＤ−ＲＷ、ＤＶＤ（ディジタルバーサタイルディスク）、磁気テープ、及び他の光学／光学以外のデータストレージデバイスを含む。コンピュータ読み取り可能なコードが分散方式において格納され実行されるように、コンピュータ読み取り可能媒体は、ネットワーク連結のコンピュータシステム上で分散されていてもよい。
【００７２】
[0081]本発明の１つ以上の実施形態は、理解の明瞭さのために幾分詳細に記述されたが、一部の変更及び変形が特許請求の範囲内でなされてもよいことは、明白だろう。従って、記述された実施形態は、例示であり限定的でないように考慮され、特許請求の範囲が本明細書になされた詳細な記述に限定されないが、特許請求の範囲及びその等価範囲内で変更されてもよい。特許請求の範囲において、構成要素及び／又はステップは、明示的に特許請求の範囲において明示されない限り、操作の特有の順序性を暗に示さない。
【００７３】
[0082]複数のインスタンスが、単一のインスタンスとして本明細書に記述されたコンポーネント、操作又は構造に対して提供されてもよい。最後に、様々なコンポーネント、操作及びデータストアの間の境界は、多少便宜的であり、特有の操作は、特定の例示された構成のコンテキストにおいて図示される。機能性の他の割当てが、予見され、本発明の範囲内にあってもよい。一般に、典型的な構成における別々のコンポーネントとして提供された構造及び機能性は、組み合わせた構造又はコンポーネントとして実施されてもよい。同様に、単一のコンポーネントとして提供された構造及び機能性が、別々のコンポーネントとして実施されてもよい。これら及び他の変更、変形、付加及び改善は、添付された特許請求の範囲内にあってもよい。
【図１】
0005592942.tif 000002
【図２】
0005592942.tif 000003
【図３Ａ】
0005592942.tif 000004
【図３Ｂ】
0005592942.tif 000005
【図３Ｃ】
0005592942.tif 000006
【図３Ｄ】
0005592942.tif 000007
【図３Ｅ】
0005592942.tif 000008
【図４】
0005592942.tif 000009
【図５】
0005592942.tif 000010
【図６Ａ】
0005592942.tif 000011
【図６Ｂ】
0005592942.tif 000012
【図７】
0005592942.tif 000013