(57)【特許請求の範囲】
【請求項１】
ローミング・リモート・デスクトップを提供するための方法であって、
複数の仮想マシン（ＶＭ）ホストサイトが、同一の複数のベースディスクをそれぞれ維持する工程であって、前記複数のＶＭホストサイトは親ＶＭとリンククローンのＶＭとの間の差分を記憶する再実行ログを維持するようにさらに構成されている、前記工程と、
ＶＭ管理センタが、クライアント機器の場所の近くの１つのＶＭホストサイトを識別する工程と、
前記ＶＭ管理センタが、識別された前記ＶＭホストサイトにおける１つのＶＭホストに１つのリンククローンのＶＭを移動させる工程と、
前記クライアント機器が、前記１つのリンククローンのＶＭとリモートデスクトップ接続を確立する工程とを備え、
前記１つのリンククローンのＶＭは、任意の所与の時間において、前記複数のベースディスクのうちの１つにアクティブにリンクされ、１つ以上の他のベースディスクにパッシブにリンクされ、アクティブリンクとパッシブリンクとは、前記１つのリンククローンのＶＭの再実行ログを表すファイルにおけるメタデータとして維持され、
識別された前記ＶＭホストサイトにおける前記１つのＶＭホストに前記１つのリンククローンのＶＭを移動させた後、前記１つのリンククローンのＶＭと、識別された前記ＶＭホストサイトにおける１つのベースディスクとの間における前記リンクをアクティブリンクに変え、前記１つのリンククローンのＶＭと、残りの前記複数のベースディスクとの間における残りの前記リンクはパッシブリンクであり、
前記複数のベースディスクのうち前記１つのリンククローンのＶＭがリンクする１つのベースディスクに対する更新は、前記ベースディスクのうちの更新された前記ベースディスクの複製として前記アクティブリンクと前記パッシブリンクとに基づいて識別される他のベースディスクに伝達される、方法。
【請求項２】
前記ＶＭ管理センタが、前記クライアント機器から前記クライアント機器の前記場所を受信する工程をさらに備え、前記場所は、緯度及び経度と、Ｗｉ−Ｆｉルータのインターネットプロトコル（ＩＰ）アドレスと、インターネットサービスプロバイダのＩＰアドレスと、プライベートＩＰアドレスとのうちの１つに基づいて、前記クライアント機器によって決定される、請求項１に記載の方法。
【請求項３】
前記クライアント機器の前記場所は、前記クライアント機器が前記１つのリンククローンのＶＭに接続を試行する際に受信され、前記移動は、前記クライアント機器が前記１つのリンククローンのＶＭに接続される前に実行される、請求項２に記載の方法。
【請求項４】
前記リンククローンのＶＭの前記移動は、コールドマイグレーションである、請求項１に記載の方法。
【請求項５】
前記移動は、ワイドエリアネットワーク（ＷＡＮ）を通じた移動である、請求項１に記載の方法。
【請求項６】
ローミング・リモート・デスクトップを提供するための動作をコンピュータに実行させるためのプログラムを含む非一時的なコンピュータ可読記憶媒体であって、前記動作は、
同一の複数のベースディスクを複数の仮想マシン（ＶＭ）ホストサイトのそれぞれにおいて維持する工程であって、前記複数のＶＭホストサイトは親ＶＭとリンククローンのＶＭとの間の差分を記憶する再実行ログを維持するようにさらに構成されている、前記工程と、
クライアント機器の場所の近くの１つのＶＭホストサイトを識別する工程と、
識別された前記ＶＭホストサイトにおける１つのＶＭホストに１つのリンククローンのＶＭを移動させる工程と、
前記クライアント機器と前記１つのリンククローンのＶＭとの間においてリモートデスクトップ接続を確立する工程とを備え、
前記１つのリンククローンのＶＭは、任意の所与の時間において、前記複数のベースディスクのうちの１つにアクティブにリンクされ、１つ以上の他のベースディスクにパッシブにリンクされ、アクティブリンクとパッシブリンクとは、前記１つのリンククローンのＶＭの再実行ログを表すファイルにおけるメタデータとして維持され、
識別された前記ＶＭホストサイトにおける前記１つのＶＭホストに前記１つのリンククローンのＶＭを移動させた後、前記１つのリンククローンのＶＭと、識別された前記ＶＭホストサイトにおける１つのベースディスクとの間における前記リンクをアクティブリンクに変え、前記１つのリンククローンのＶＭと、残りの前記複数のベースディスクとの間における残りの前記リンクはパッシブリンクであり、
前記複数のベースディスクのうち前記１つのリンククローンのＶＭがリンクする１つのベースディスクに対する更新は、前記ベースディスクのうちの更新された前記ベースディスクの複製として前記アクティブリンクと前記パッシブリンクとに基づいて識別される他のベースディスクに伝達される、コンピュータ可読記憶媒体。
【請求項７】
前記動作は、前記クライアント機器から前記クライアント機器の前記場所を受信する工程をさらに備え、前記場所は、緯度及び経度と、Ｗｉ−Ｆｉルータのインターネットプロトコル（ＩＰ）アドレスと、インターネットサービスプロバイダのＩＰアドレスと、プライベートＩＰアドレスとのうちの１つに基づいて、前記クライアント機器によって決定される、請求項６に記載のコンピュータ可読記憶媒体。
【請求項８】
前記クライアント機器の前記場所は、前記クライアント機器が前記１つのリンククローンのＶＭに接続を試行する際に受信され、前記移動は、前記クライアント機器が前記１つのリンククローンのＶＭに接続される前に実行される、請求項７に記載のコンピュータ可読記憶媒体。
【請求項９】
前記リンククローンのＶＭの前記移動は、コールドマイグレーションである、請求項６に記載のコンピュータ可読記憶媒体。
【請求項１０】
前記移動は、ワイドエリアネットワーク（ＷＡＮ）を通じた移動である、請求項６に記載のコンピュータ可読記憶媒体。
【請求項１１】
プロセッサと、
メモリと、を備えるシステムであって、該メモリは、ローミング・デスクトップを提供するための動作を前記プロセッサに実行させるためのプログラムを含み、前記動作は、
同一の複数のベースディスクを複数の仮想マシン（ＶＭ）ホストサイトのそれぞれにおいて維持する工程であって、前記複数のＶＭホストサイトは親ＶＭとリンククローンのＶＭとの間の差分を記憶する再実行ログを維持するようにさらに構成されている、前記工程と、
クライアント機器の場所の近くの１つのＶＭホストサイトを識別する工程と、
識別された前記ＶＭホストサイトにおける１つのＶＭホストに１つのリンククローンのＶＭを移動させる工程と、
前記クライアント機器と前記１つのリンククローンのＶＭとの間においてリモートデスクトップ接続を確立する工程とを備え、
前記１つのリンククローンのＶＭは、任意の所与の時間において、前記複数のベースディスクのうちの１つにアクティブにリンクされ、１つ以上の他のベースディスクにパッシブにリンクされ、アクティブリンクとパッシブリンクとは、前記１つのリンククローンのＶＭの再実行ログを表すファイルにおけるメタデータとして維持され、
識別された前記ＶＭホストサイトにおける前記１つのＶＭホストに前記１つのリンククローンのＶＭを移動させた後、前記１つのリンククローンのＶＭと、識別された前記ＶＭホストサイトにおける１つのベースディスクとの間における前記リンクをアクティブリンクに変え、前記１つのリンククローンのＶＭと、残りの前記複数のベースディスクとの間における残りの前記リンクはパッシブリンクであり、
前記複数のベースディスクのうち前記１つのリンククローンのＶＭがリンクする１つのベースディスクに対する更新は、前記ベースディスクのうちの更新された前記ベースディスクの複製として前記アクティブリンクと前記パッシブリンクとに基づいて識別される他のベースディスクに伝達される、システム。
【請求項１２】
前記動作は、前記クライアント機器から前記クライアント機器の前記場所を受信する工程をさらに備え、前記場所は、緯度及び経度と、Ｗｉ−Ｆｉルータのインターネットプロトコル（ＩＰ）アドレスと、インターネットサービスプロバイダのＩＰアドレスと、プライベートＩＰアドレスとのうちの１つに基づいて、前記クライアント機器によって決定される、請求項１１に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ローミング・リモート・デスクトップを提供するための方法及びシステムに関する。
【背景技術】
【０００２】
サーバベースコンピューティングによって、サーバに対して離れた場所に存在する、ネットワークに接続されたクライアント機器が、サーバ上のコンピューティングリソースにアクセスすることと、クライアント機器から離れた特定の“ホスト”マシンを制御することとが可能になる。この種の対話は、一般に、“リモート”セッションと呼ばれる。例えば、クライアント機器は、リモートサーバ上で動作するユーザのデスクトップにアクセスするために、ＲＤＰ（Ｒｅｍｏｔｅ  Ｄｅｓｋｔｏｐ  Ｐｒｏｔｏｃｏｌ）、ＶＮＣ（Ｖｉｒｔｕａｌ  Ｎｅｔｗｏｒｋ  Ｃｏｍｐｕｔｉｎｇ）、又はＰＣｏＩＰ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ  ｏｖｅｒ  Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）等、リモート・デスクトップ・プロトコルを使用するデスクトップ・クライアント・ソフトウェアを動作させる。リモートセッションでは、クライアント機器は、キーボード又はマウスの入力等のユーザ入力をリモートサーバに送信する。次に、デスクトップ・クライアント・ソフトウェアは、グラフィカル・ユーザ・インタフェース（ＧＵＩ）のイメージを（イメージデータの形式で）リモートサーバから受信する。デスクトップ・クライアント・ソフトウェアによって受信されるＧＵＩ及びイメージデータは、リモートサーバにおいて動作しているオペレーティングシステム及びアプリケーションによって生成される。いくつかの例では、ＧＵＩ及びイメージデータは仮想マシン（ＶＭ）によって生成され、この仮想マシンが、リモートサーバ上における実行と、クライアント機器から受信されるユーザ入力の処理とを行う。
【０００３】
モバイル機器は、他の構成要素に加え、大きな表示領域とタッチ感知面とを完備した高度なコンピューティングプラットフォームを提供するように発展してきている。そうしたモバイル機器のコンピューティング性能は着実に上昇してきており、掌からリモートセッションを開始することを可能にしている。さらに、そのようなモバイル機器によって、ユーザは、ＶＭに対するリモートデスクトップ接続を様々な場所から確立できる。例えば、ユーザは、ＶＭに対するリモートデスクトップ接続をある都市（ｃｉｔｙ）において開始し、別の都市から同じＶＭに再接続する。そのような場合、ＶＭは、典型的には、そのＶＭが最初にプロビジョニングされたサーバ上で動作を継続している。本明細書において使用するように、プロビジョニングとは、ＶＭを生成し、利用可能な状態にする（ｄｅｐｌｏｙ）プロセスであり、プロセッサ、メモリ、ネットワーク、ディスク記憶部等、そのＶＭに関連するリソースの割当及び構成を行うことを含む。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ＶＭが最初にプロビジョニングされるサーバは、ユーザの新たな場所から遠い場合があり、ネットワーク接続は長い距離を経るほど遅くなる傾向があるので、これによって、リモート・セッション・エクスペリエンスに影響を与える。
【課題を解決するための手段】
【０００５】
本明細書において提示される実施形態では、ローミング・リモート・デスクトップを提供するための技術を提供する。その技術は、クライアント機器の場所に最も近い仮想マシン（ＶＭ）ホストサイトを識別する工程と、識別されたＶＭホストサイトにおけるＶＭホストにリンククローンのＶＭを移動（マイグレーション）させる工程とを備える。さらに
、この技術は、クライアント機器とリンククローンのＶＭとの間においてリモートデスクトップ接続を確立する工程を備える。
【０００６】
本発明のさらなる実施形態は、コンピュータシステムによる実行時に、上述した技術のうちの１つ以上をコンピュータシステムに実行させる命令を記憶しているコンピュータ可読記憶媒体と、上述した技術のうちの１つ以上を実行するようにプログラムされたコンピュータシステムとを含む。
【図面の簡単な説明】
【０００７】
【図１】本発明の一実施形態による、より優れたネットワーク性能とユーザエクスペリエンスとのためにリンククローンのＶＭを移動させるための手法を示す図。
【図２】リンククローンが階層においてどのように関係付けられ得るかについて示す概念図。
【図３】本発明の一実施形態による、リンククローンのＶＭと、複数の場所におけるベースＶＭとの間におけるアクティブリンクとパッシブリンクとを示す図。
【図４】本発明の一実施形態による、クライアント機器の場所に基づいてリンククローンのＶＭを移動させるための方法を示す図。
【発明を実施するための形態】
【０００８】
本明細書において提示される実施形態は、クライアント機器とＶＭとの間におけるより良い接続を提供するために、クライアント機器の場所に基づいてＶＭを移動させるための技術を提供する。一実施形態では、リンククローンのＶＭが、クライアント機器から開始されたリモートセッションに関してプロビジョニングされる。本明細書において使用するように、“リンククローン”は、親ＶＭと同じベースディスクを使用する、親ＶＭの複製であり、親ＶＭとリンククローンとの間の差分を追跡するための一連の“再実行（ＲＥＤＯ）ログ”（“デルタディスク”としても知られている）を伴う。後に、クライアント機器は、場所（例えば、緯度及び経度の座標、都市名、国名、オフィス名、クライアント機器が接続されているＷｉ−Ｆｉ（登録商標）ルータ又はインターネットサービスプロバイダ（ＩＳＰ）のＩＰアドレス、クライアント機器のプライベートＩＰアドレス等）をＶＭ管理センタに送信する。そのＶＭ管理センタでは、マイグレーションアプリケーションが、クライアント機器とリンククローンのＶＭとが同じ場所に存在するか否かを判定する。ここで、“同じ場所”は、所与の半径内、同じ都市内、同じ国内、同じオフィス内、所与のレイテンシ未満であること等、任意の適した態様で定義されてよい。クライアント機器とリンククローンのＶＭとが同じ場所に存在しない場合、マイグレーションアプリケーションは、クライアント機器の場所に最も近いＶＭホストサイトを識別することと、リンククローンのＶＭと、その関連する再実行ログとを、識別されたＶＭホストサイトにおけるＶＭホストと記憶装置とにそれぞれ移動させるように、ハイパーバイザ又は別の構成要素（例えば、ＶＭ管理センタ）に命令することとを行う。リンククローンがベースＶＭから独立して移動できるように、仮想（ｖｉｔｕａｌ）インフラストラクチャの設定の一部として、同一のベースＶＭが複数のＶＭホストサイトにおいて維持されてもよいことに注意する。リンククローンのＶＭの移動は、“コールド”で、すなわちＶＭが“電源オフ”の状態で実行されてもよい。移動後、リンククローンのＶＭは、識別されたホストサイトにおけるベースＶＭに“アクティブに”リンクされる一方、他のＶＭホストサイトにおけるベースＶＭに対する“パッシブ”リンクを維持していてもよい。
【０００９】
以下の説明では、多くの具体的な詳細が、本発明の完全な理解を提供するために述べられている。しかしながら、本発明は、その具体的な詳細のうちのいくつかが存在せずに実施される場合があることは当業者に対して明らかである。他の例では、本発明を不必要に不明瞭にすることを避けるために、周知の処理動作と実装の詳細とは、詳細には説明されていない。
【００１０】
図１は、一実施形態による、より良いネットワーク性能とユーザエクスペリエンスとのためにリンククローンのＶＭを移動させるための手法を示す。示すように、仮想インフラストラクチャは、ＶＭ管理センタ１３０と、２つの異なる場所における、ＶＭホストコンピュータ１１５ａ，１１５ｂ及び記憶装置１２０ａ，１２０ｂとを含む。各場所において１つのＶＭホスト及び記憶装置のみを示しているが、実際は、仮想インフラストラクチャは、任意の距離だけ隔たった任意の数の場所（例えば、異なる複数の都市、異なる複数の国等）において複数のＶＭホストサイトを含んでもよく、その各々は、共有記憶部にネットワークで接続された任意の数のＶＭホストからなる群を含んでもよい。
【００１１】
示すように、ＶＭホスト１１５ａと、そのハードウェアリソース１１８ａ（例えば、ＣＰＵ、ＲＡＭ、及びネットワーク・インタフェース・カード（ＮＩＣ）１１９ａ）とは、ソフトウェア・インタフェース・レイヤ（本明細書において“ハイパーバイザ”とも呼ばれる）１１７ａを通じてＶＭ（例えば、リンククローンのＶＭ１１６）をサポートする。同様に、ＶＭホスト１１５ｂと、そのハードウェアリソース（例えば、ＣＰＵ、メモリ、及びネットワーク・インタフェース・コントローラ（ＮＩＣ）１１９ｂ）とは、ハイパーバイザ１１７ｂを通じてＶＭをサポートする。ハイパーバイザ１１７ａ，１１７ｂは、ＶＭホスト１１５ａ，１１５ｂのオペレーティングシステムの最上位において動作する場合もあれば、ＶＭホストのハードウェア構成要素上で直接、動作する場合もある。各ＶＭは、例えば、仮想ＣＰＵ、仮想メモリ、仮想ディスク、及び仮想装置を含む仮想ハードウェアプラットフォームを実装する場合がある。ＶＭＭ１１４ａ及びＶＭＭ１１４ｂ等の仮想マシンモニタ（ＶＭＭ）のデバイスエミュレータは、対応するＶＭに関してハードウェアエミュレーションを提供する。さらに、ＶＭ自体の仮想ハードウェアプラットフォームは、ゲストオペレーティングシステムの実行と、ゲストオペレーティングシステム上で動作しているクライアント・アプリケーション・プログラムの実行とをサポートしている。例示的なゲストオペレーティングシステムは、マイクロソフトウィンドウズ（登録商標）及びリナックス（登録商標）を含む。
【００１２】
示すように、各ＶＭホスト１１５ａ，１１５ｂは、各ＮＩＣ１１９ａ，１１９ｂを通じてイーサネット（登録商標）ネットワーク１４０（例えば、インターネット）に接続している。各ＶＭホスト１１５ａ，１１５ｂは、記憶装置１２０ａ，１２０ｂにさらに接続され、各記憶装置は、例えば、ＮＡＳ（ｎｅｔｗｏｒｋ  ａｔｔａｃｈｅｄ  ｓｔｏｒａｇｅ）装置又はＳＡＮ（ｓｔｏｒａｇｅ  ａｒｒａｙ  ｎｅｔｗｏｒｋ）装置の場合がある。ＮＡＳ装置は、ネットワークファイルシステム（ＮＦＳ）と、１つ以上のディスクとを含む。本明細書において使用するように、“ディスク”は、後でコンピュータシステムに入力されるデータを記憶できる任意のデータ記憶装置を指し、コンピュータ上のメモリ又は入力／出力キャッシュを含み、ディスクキャッシュは、より永続的な記憶媒体、ハードドライブ、磁気テープ、又はソリッドステートドライブに書込されるデータを含む。ＮＡＳ装置は、ファイルシステムとしてホストコンピュータに向けられている。したがって、ホストコンピュータは、ファイル方式のコマンドによってＮＡＳ装置にアクセスする。ＮＦＳによって、様々なファイル名からディスク上の対応する場所への対応付けが提供される。これに対し、ＳＡＮ装置は、ディスクから論理的にプロビジョニングされた１つ以上の論理ユニット（ＬＵＮ）を含む。ＳＡＮ装置は、ＳＣＳＩ等の定義されたプロトコルによって、ブロックレベルの記憶をホストコンピュータに提供する。ここで、ＬＵＮは、関連するホストコンピュータに対し、線形のブロックアドレス指定可能な記憶アレイを提供する。記憶装置１２０ａ，１２０ｂは、図１では、ＮＩＣ１１９ａ及びＮＩＣ１１９ｂを介してＶＭホスト１１５，１１５ｂにそれぞれ接続されているが、ＶＭホストは、代わりに、“ホストバスアダプタ”（ＨＢＡ）等、ディスクインタフェースを介してＳＡＮ装置に接続されてもよい。
【００１３】
ＶＭ管理センタ１３０は、中央サーバにおいて存在し実行するコンピュータプログラムであり、その中央サーバは、この目的専用の別個のコンピューティングシステムとして存在する場合がある。代わりに、ＶＭ管理センタ１３０は、ＶＭホスト１１５ａ上又はＶＭホスト１１５ｂ上で実行してもよい。ＶＭ管理センタ１３０は、各ＶＭホスト１１５ａ，１１５ｂと通信しており、ＶＭホスト１１５ａ，１１５ｂを管理すること、各ＶＭホスト１１５ａ，１１５ｂ内において動作しているＶＭを管理すること、ＶＭのプロビジョニング、あるＶＭホストから別のＶＭホストにＶＭを移動させること、物理リソース（例えば、プロセッサやメモリ）を割当てること、ＶＭホスト同士間のロードバランシング等を含む管理タスクを実行するが、これらに限定されない。
【００１４】
新たなＶＭのプロビジョニングを行う場合、所望の特性を有する既存のＶＭを複製することにより開始することが有利な場合がある。本明細書において、このプロセスを“クローニング”と呼ぶ。クローニングの一形態によって、継続的な態様で親ＶＭ（例えば、リンククローンの初めの生成の元となったベースＶＭ）と仮想ディスクを共有する仮想マシンの複製が生成され、これを本明細書においてリンククローニングと呼ぶ。これは、フルクローニングと対照的であり、そのフルクローニングでは、仮想マシンの完全で独立した複製が生成される。説明するように、リンククローンは、親ＶＭと同じベースディスクを使用するとともに、親ＶＭとリンククローンとの間の差分を追跡するための一連の“再実行ログ”（“デルタディスク”としても知られる）を使用する、親ＶＭの複製である。その再実行ログは、ベースディスクと比較した差分（デルタ）のみを含む。したがって、ベースディスクは元のままであり、将来のクローニングに関して利用可能であると同時に、テンプレートの様々なクローンは、ベースディスクや、他のクローンの再実行ログに影響を与えることなく、各再実行ログに書込できる。以下においてさらに説明するように、特定の時点におけるＶＭの仮想ディスクの状態を捕捉するために、追加の再実行ログが生成されてもよい。その新たな再実行ログは、直前の再実行ログを指し示しており、次に、その直前の再実行ログは、その前の再実行ログを指し示している等、これは、ベースディスクに到達するまで行われる。リンククローニングは、フルクローニングと比較してディスクスペースを節約して使用し、複数の仮想マシンが同じインストールソフトウェアを使用することを可能にする。
【００１５】
図１に示すように、リンククローンのＶＭ１１６と、その関連する再実行ログ１２５とはそれぞれ、クライアント機器１１０が場所１から場所２に場所移動した後、ＶＭホスト１１５ａからＶＭホスト１１５ｂに、記憶装置１２０ａから記憶装置１２０ｂに移動する。ここで、クライアント機器１１０は、ラップトップコンピュータ、個人用情報端末（ＰＤＡ）、タブレットコンピュータ、携帯電話等、任意のモバイルコンピューティング機器であってよい。一実施形態では、クライアント機器１１０は、リモートセッションを確立しつつ、その場所をＶＭ管理センタ１３０に送信する場合がある。クライアント機器１１０の場所が、クライアント機器１１０がリモートセッションのために接続を行っているＶＭの場所と異なる場合、ＶＭ管理センタ１３０上で動作しているマイグレーションアプリケーション１３５は、クライアント機器１１０の場所又はその近くにおける、ＶＭを移動させるためのＶＭホストサイト（さらに、そのホストサイトにおける、特定のＶＭホストと、記憶装置）を識別する場合がある。例えば、マイグレーションアプリケーション１３５は、ＶＭホスト１１５ｂと記憶装置１２０ｂとは、クライアント機器１１０と同じ場所（例えば、同じ都市）に存在し、したがって、移動の行先であると判定する場合がある。そのような移動の行先を識別した後、ＶＭ管理センタ１３０は、ＶＭホスト１１５ａに対してコマンドを発し、示すように、リンククローンのＶＭ１１６と、関連するファイル（再実行ログ１２５を含む）とを、ＶＭホスト１１５ａからＶＭホスト１１５ｂに、記憶装置１２０ａから記憶装置１２０ｂに移す（例えば、複製及び削除の動作によって）ようにＶＭホスト１１５ａに指示する。ＶＭホスト１１５ａ内におけるハイパーバイザ１１７ａ又は別のソフトウェア構成要素は、移動を実行するためのプログラムを含む場合がある。
【００１６】
示すように、同一のベースディスク１２８ａ，１２８ｂが、場所１及び２の両方におけるＶＭホストサイトにそれぞれ維持されている。これによって、ベースディスク１２８ａ（例えば、５０ＧＢ）よりも典型的にはサイズが小さい（例えば、１０ＭＢ）再実行ログ１２５が、ベースディスク１２８ａも移動させることなく、移動されることが可能になり、したがって、移動時間を低減する。以下においてさらに詳細に説明するように、再実行ログ１２５におけるメタデータは、移動の行先におけるベースＶＭに対するアクティブリンクと、移動後の他の場所におけるベースＶＭに対するパッシブリンクとを示す。本明細書において使用するように、リンククローンのＶＭと、ベースＶＭとの間のリンクは、リンククローンのＶＭの再実行ログでは得られない仮想ディスクデータがベースＶＭのベースディスクからアクセスされる場合、“アクティブ”である。これに対し、“パッシブ”リンクは、データがリンククローンのＶＭの再実行ログでは得られない場合において、ベースディスクがアクセスされないベースＶＭに対して維持される。一実施形態では、各リンククローンは、クライアント機器に最も近い場所におけるベースＶＭに対する唯一のアクティブリンクを有するが、他の場所におけるベースＶＭに対するパッシブリンクを複数有していてよい。
【００１７】
一実施形態では、リンククローン１１６の移動は、ＶＭが現在は実行していないか、又はスケジューリングの待ち行列中に存在するように、リンククローンのＶＭ１１６が“電源オフ”の状態で移されて“コールド”で実行される場合がある。これによって、ＶＭ１１６に関連するメモリコンテンツ（サイズが大きい場合がある（例えば、４ＧＢ））を移すことが避けられる。移動中、ベースディスク１２８ａも、リンククローンのＶＭ１１６のメモリコンテンツも移されないので、移動は比較的迅速に達成され、このことは、例えば、ＶＭ１１６がインターネット等のＷＡＮによって移動される必要がある場合に重要なことがある。例えば、移動は、クライアント機器１１０とリンククローンのＶＭ１１６との間の接続プロセスの一部として実行されてもよい。
【００１８】
図２は、リンククローンが階層においてどのように関係付けられ得るかについての概念図である。示すように、階層２００には、ベースディスクＶＭ１（２１０）と、複数の再実行ログ２２０，２２２，２３０，２３２，２４０，２４２，２５０とが含まれる。階層２００は、木として示されており、各ＶＭに対するＶＭＭによって管理される。木の一番上では、ＶＭ１（２１０）は、テンプレートのＶＭ等のＶＭに関連したベースディスクを表している。次に、ベースディスクＶＭ１（２１０）に関連したＶＭがクローニングされ、２つの再実行ログＶＭ１ａ（２２０），ＶＭ１ｇ（２２２）が形成される。次に、再実行ログＶＭ１ａ（２２０）に関連したＶＭがクローニングされ、２つの再実行ログＶＭ１ｂ（２３０），ＶＭ１ｃ（２３２）が形成される。そのプロセスは、階層２００が形成されるまで継続する。第１レベルは、ベースディスクＶＭ１（２１０）を含み、第２レベルは、再実行ログＶＭ１ａ（２２０），ＶＭ１ｇ（２２２）含む等、水平の列の各々は、階層２００のレベルを表している。階層２００におけるあるレベルのベースディスク又は再実行ログが、階層２００における近接したレベルのベースディスク又は再実行ログに関連する場合、親子関係が存在する。例えば、ベースディスクＶＭ１（２１０）は、再実行ログＶＭ１ａ（２２０），ＶＭ１ｇ（２２２）によって表される２つの子再実行ログの親である。これに対して、階層２００、再実行ログＶＭ１ｇ（２２２）、ＶＭ１ｂ（２３０）、ＶＭ１ｆ（２４０）、ＶＭ１ｅ（２５０）は、子を有していない。
【００１９】
再実行ログを生成することの利点は、仮想ディスクのフルイメージが記憶されるのではなく、特定の時点における、再実行ログと各親ディスクとの間の差分のみが記憶されることである。フルクローニングの例では、図２に示す再実行ログは、差分情報のみではなくフルディスクイメージを含み得る。再実行ログを記憶することによって、より効率的な記憶が得られ、より速く記憶装置の間において移せる場合と比較して、フルクローニングの
場合、必要な記憶量は大きくなり得る。例えば、ベースディスクと、関連する再実行ログとは、ＳＡＮ又はＮＡＳの装置内におけるファイルとして記憶されてもよい。リンククローニングを利用することによって、ＳＡＮ又はＮＡＳの装置上で必要な仮想ディスクの記憶スペースの量は、フルクローニングと比較して低減される。さらに、リンククローニングによって、より速くＶＭのプロビジョニングを行うこと、及びより速くＶＭを移すことができる。リンククローンが生成された後、さらに、元の（ｓｏｕｒｃｅ）ＶＭと行先のＶＭからのディスクの書込は、個々の再実行ログに記憶され、ベースディスクが目的地の記憶装置上において利用可能である限り、リンククローンのＶＭを移動させる場合、再実行ログが移されるだけでよい。
【００２０】
図３は、一実施形態による、リンククローンのＶＭ１１６と、複数の場所におけるベースＶＭ１２９ａ，１２９ｂ，１２９ｃとの間におけるアクティブリンクとパッシブリンクとを示す。パネルＡに示すように、ベースディスク１２８ａ，１２８ｂ，１２８ｃは、同一の複製であり、リンククローンのＶＭ１１６の再実行ログ１２５に対する親である。すなわち、再実行ログ１２５は、ベースディスク１２８ａ，１２８ｂ，１２８ｃの各々を指し示しており、再実行ログ１２５と、ベースディスク１２８ａ，１２８ｂ，１２８ｃの各々との間の差分のみが、再実行ログ１２５に記憶される。一実施形態では、リンク１２６，１２７ａ，１２７ｂは、再実行ログ１２５を表すファイル（例えば、．ＶＭＤＫ形式のディスクイメージファイル）におけるメタデータとして維持される。
【００２１】
示すように、リンククローンのＶＭ１１６と、ベースＶＭ１２９ａとの間におけるリンク１２６は、“アクティブ”であるのに対して、リンククローンのＶＭ１１６と、ベースＶＭ１２９ｂ，１２９ｃとの間におけるリンク１２７ａ，１２７ｂは、“パッシブ”である。説明するように、リンククローンのＶＭと、ベースＶＭとの間におけるリンクは、リンククローンのＶＭの再実行ログでは得られない仮想ディスクデータがベースＶＭのベースディスクからアクセスされる場合、“アクティブ”である。これに対し、“パッシブ”リンクは、データがリンククローンのＶＭの再実行ログでは得られない場合において、ベースディスクがアクセスされないベースＶＭに対して維持される。アクティブリンク及びパッシブリンクは、複数の場所におけるどのベースディスクが再実行ログとともに使用されるかを示す場合がある。さらに、再実行ログが依存できる１つのベースディスクに対する更新は、再実行ログとベースディスクとを含む仮想ディスクにおけるデータ破損を避けるために、ベースディスクの全ての他の複製に伝達される。ここで、再実行ログが依存するベースディスクは、リンククローンのＶＭがアクティブ又はパッシブにリンクされる、ベースＶＭとして識別される場合がある。
【００２２】
パネルＢは、クライアント機器１１０が場所２に場所移動された後に実行される移動動作の結果を示す。そのような場所移動に応じて、リンククローン１１６と、その関連した再実行ログ１２５とは、場所２におけるＶＭホストサイトのＶＭホストと記憶装置とに移動している。これによって、クライアント機器１１０とリンククローンのＶＭ１１６との間における、より速い接続が提供される（ネットワークのパケットは、クライアント機器１１０と、場所２におけるＶＭホストサイトとの間において、より短い距離を移動し、より少ないルータやスイッチ等を移動し得るので）。リンククローンのＶＭ１１６は、場所２におけるＶＭホストサイトに複製された後、さらに、アクティブリンク１２６ｂを用いて場所２におけるベースＶＭ１２９ｂを指し示すように、そして、パッシブリンク１２７ｃ，１２７ｂの各々を用いて場所１及び３におけるＶＭホストサイトのベースＶＭ１２９ａ，１２９ｃを指し示すように修正される。リンク１２６ｂ，１２７ｂ，１２７ｃが、再実行ログ１２５を表すファイルにメタデータとして維持される場合、そのようなメタデータは、アクティブリンク１２６ｂと、パッシブリンク１２７ｂ，１２７ｃとを示すように更新される場合がある。次に、再実行ログ１２５上では得られないデータは、アクティブリンク１２６ｂに基づいてベースディスク１２８ｂからアクセスされる。これによって、
場所１及び３におけるＶＭホストサイト（場所２におけるＶＭホストサイトよりも遠い）のベースディスク１２８ａ，１２８ｃからデータにアクセスする場合と比較して、仮想ディスクのアクセス時間を低減する。
【００２３】
図４は、一実施形態による、クライアント機器の場所に基づいてリンククローンのＶＭを移動させるための方法４００を示す。そのような移動は、ＶＭに対する接続プロセスの一部として実行される場合もあれば、クライアント機器が場所を変えたことの検知に応じて実行される等、能動的に実行される場合もある。示すように、方法４００は、クライアント機器１１０がＶＭ管理センタ１３０に場所を送信する、工程４１０から始まる。クライアント機器１１０は、グローバル・ポジショニング・システム（ＧＰＳ）情報、クライアント機器１１０が接続されているＷｉ−Ｆｉルータ又はインターネットサービスプロバイダ（ＩＳＰ）のインターネットプロトコル（ＩＰ）アドレス、クライアント機器１１０のプライベートＩＰアドレス等に基づいて、クライアント機器１１０の場所を決定する場合がある。例えば、現在、ＧＰＳ受信機は、多くの携帯電話に一体化されており、ＶＭ管理センタ１３０に後で送信される、緯度及び経度の座標を提供するのに使用されることがある。別例として、クライアント機器１１０は、クライアント機器１１０が接続されているＷｉ−Ｆｉルータ又はＩＳＰのＩＰアドレスを、国、都市、地方、地域コード、緯度及び経度等に変換し、その場所情報をＶＭ管理センタ１３０に送る。ＩＰアドレスの範囲に基づく、そのような変換のためのデータベースは、周知であり公に利用可能である。さらに別例として、会社は異なる場所において異なるＩＰアドレスの範囲を使用する場合（例えば、ある場所では、１９２．１６８．１．ｘであり、別の場所では、１９２．１６８．２．ｘである）、クライアント機器が会社のオフィスのネットワークに接続するとき、クライアント機器は、プライベートＩＰアドレスについてのＩＰアドレスの範囲によって、クライアント機器の場所を決定する場合がある。代わりに、クライアント機器１１０は、Ｗｉ−Ｆｉルータ若しくはＩＳＰのＩＰアドレス、又はプライベートＩＰアドレスを送り、ＶＭ管理センタ１３０自体が、国、都市、地方、地域コード、緯度及び経度等にアドレスを変換する場合がある。
【００２４】
工程４２０では、ＶＭ管理センタ１３０上で動作しているマイグレーションアプリケーション１３５は、クライアント機器１１０と、クライアント機器が接続されるリンククローンのＶＭ１１６とが同じ場所に存在するか否かを判定する。一実施形態では、マイグレーションアプリケーション１３５は、緯度及び経度の座標、ＩＰアドレス等についてのＶＭホストサイトのデータベースを維持する場合がある。次いで、マイグレーションアプリケーション１３５は、クライアント機器１１０から受信した場所を、ＶＭがプロビジョニングされているＶＭホストサイトの場所と比較できる。説明するように、“同じ場所”は、所与の半径内、同じ都市内、同じ国内、同じオフィス内、所与のレイテンシ未満であること等、任意の適した態様で定義されてよい。例えば、マイグレーションアプリケーション１３５は、クライアント機器１１０の緯度及び経度の座標と、ＶＭホストサイトの緯度及び経度の座標との間の距離を計算し、クライアント機器１１０とＶＭホストサイトとが所与の距離未満隔たっているか否かを判定してもよい。別例として、マイグレーションアプリケーション１３５は、ＶＭホストのＩＰアドレスと、クライアント機器１１０によって提供されるＷｉ−Ｆｉルータ又はＩＳＰのＩＰアドレスとの比較に基づいて、クライアント機器１１０とＶＭホストサイトとが同じ都市の場所に存在するか否かを判定してもよい。
【００２５】
マイグレーションアプリケーション１３５が、クライアント機器１１０とリンククローンのＶＭ１１６とが同じ場所に存在すると判定した場合、方法４００は、工程４１０に戻る。ここで、クライアント機器１１０は、クライアント機器１１０がリンククローンのＶＭ１１６に再び接続を試行するとき等、後で再び場所を送信してもよい。しかしながら、マイグレーションアプリケーション１３５が、クライアント機器１１０とリンククローン
のＶＭ１１６とが同じ場所に存在しないと判定した場合、方法４００は、工程４３０に続く。ここで、マイグレーションアプリケーション１３５は、クライアント機器１１０の場所においてホスト及び記憶装置が利用可能か否かを判定する。説明したように、マイグレーションアプリケーション１３５は、ＶＭホストサイトのデータベースを維持する場合があり、そのような場合、マイグレーションアプリケーション１３５は、クライアント機器１１０の場所におけるＶＭホストサイトを識別するためにデータベースに問い合わせ、次いで、ＶＭホストサイトにおいて利用可能な特定のＶＭホスト及び記憶装置を識別できる。一実施形態では、マイグレーションアプリケーション１３５は、識別されたホスト及び記憶装置が、移動されるＶＭをサポートするのに十分なリソースを有するように確保できる。
【００２６】
クライアントの場所におけるＶＭホストサイトにおいて利用可能なＶＭホスト及び記憶装置が存在しない場合、方法４００は、工程４４０に続く。ここで、ＶＭ管理センタ１３０は、クライアント機器の近くの別の場所におけるホスト及び記憶装置を識別する。クライアント機器１１０とリンククローンのＶＭ１１６とが同じ場所に存在するか否かを判定するのと同様、ＶＭ管理センタ１３０は、クライアント機器１１０から受信した場所を、緯度及び経度の座標、都市、国、地方等に基づいて、利用可能なＶＭホストサイトの場所と比較し、クライアント機器１１０の場所の近くのＶＭホストサイトにおける利用可能なホスト及び記憶装置を識別できる。利用可能なＶＭホスト及び記憶装置の中で最も近接した距離にあること、所与の距離内であること、所与のレイテンシ未満であること等、“近く”についての任意の適した定義が使用されてよいことに注意する。
【００２７】
ホスト及び記憶装置がクライアントの場所又はその近くにおいて識別された後、工程４５０では、マイグレーションアプリケーション１３５は、識別されたホスト及び記憶装置へ、リンククローンのＶＭ１１６のコールドマイグレーションを行うための命令を発する。説明したように、コールドマイグレーションは、ＶＭに関連するメモリコンテンツ（サイズが大きい場合がある（例えば、４ＧＢ））が移されないように電源オフの状態でＶＭが移される移動である。さらに、移動するＶＭはリンククローンなので、再実行ログ１２５が依存するベースディスク１２７ａが、識別された記憶装置に既に記憶されている場合、再実行ログ１２５（典型的にはサイズが小さい（例えば、５０ＭＢ））がその記憶装置に複製されるだけでよい。一実施形態では、ベースディスク１２７の複製が様々な場所における複数の記憶装置の各々に記憶されることが可能であり、これによって、様々な場所のうちの１つにリンククローンのＶＭ１１６を移動させるには、再実行ログ１２５を複製するだけでよい。
【００２８】
工程４６０では、マイグレーションアプリケーション１３５は、リンククローンのＶＭ１１６と、ＶＭ１１６が移動した行先の場所におけるベースＶＭ１２９ｂとの間のリンクを“アクティブ”に変える。説明するように、ＶＭ１１６とベースＶＭ１２９ａ，１２９ｂとの間のリンクは、リンククローンのＶＭ１１６の再実行ログ１２５を表すファイル（例えば、ＶＭＤＫファイル）におけるメタデータとして維持される。一実施形態では、マイグレーションアプリケーション１３５は、ＶＭ１１６と、行先の場所におけるベースＶＭ１２９ｂとの間のリンクが“アクティブ”として記される一方、全ての他のリンクが“パッシブ”として記されるように、再実行ログ１２５を表すファイルのメタデータを修正するために、ハイパーバイザ又は別の構成要素（例えば、ＶＭ管理センタ１３０）に命令を発する場合がある。
【００２９】
工程４７０では、クライアント機器１１０は、リンククローンのＶＭ１１６に接続される。すなわち、リモートセッションが確立されるとともに、ＧＵＩ及びイメージデータが、リンククローンのＶＭ１１６において動作しているオペレーティングシステム及びアプリケーションによって生成され、その後クライアント機器１１０に送信される。次いで、
クライアント機器１１０は、ＶＭ１１６において処理されるように、ユーザ入力をＶＭ１１６に送信してもよい。リンククローンのＶＭ１１６を移動させるのと同時にクライアント機器１１０をＶＭ１１６に接続することに関して主に上述したが、代替実施形態では、移動は他の時に実行されてもよいことに注意する。例えば、クライアント機器１１０は、クライアント機器１１０が異なるＷｉ−Ｆｉルータ又はＩＳＰに接続するとき、ＶＭ管理センタ１３０に場所を送信してもよく、マイグレーションアプリケーション１３５は、ＶＭ１１６と再実行ログ１２５とがクライアント機器１１０とは異なる場所に存在する場合、ＶＭ１１６と、その関連する再実行ログ１２５とを移動させるためのコマンドを発することがある。
【００３０】
有利に、本明細書において説明した実施形態では、リモートデスクトップアプリケーションによってＶＭにアクセスするクライアント機器の場所に基づいて、リンククローンのＶＭが移動させられる。具体的には、リンククローンのＶＭは、クライアント機器と同じ場所、又はクライアント機器の近くの場所におけるＶＭホストサイトに移動させられる。これによって、クライアント機器と、リンククローンのＶＭとの間における、より速い接続が提供される。さらに、リンククローンのＶＭのコールドマイグレーションを行うには、再実行ログを移すだけでよく、その再実行ログは、典型的にはサイズが小さく、したがって、迅速に移される。このことは、例えば、ＶＭがインターネット等のＷＡＮによって移動させられる必要がある場合に重要なことがある。
【００３１】
本明細書において説明した様々な実施形態は、コンピュータシステムに記憶されるデータを伴う、コンピュータに実装される様々な動作を利用する場合がある。例えば、その動作は、物理量の物理的な操作を必要とする場合があり、その量は、必然的ではないが通常、電気信号又は磁気信号の形態を取ることがあり、これら、又はこれらを表すものは、記憶され、移され、組み合わされ、比較され、又は別様に操作されることが可能である。さらに、そのような操作は、大抵、生成すること、識別すること、判定すること、又は比較すること等の語により呼ばれる。本発明の１つ以上の実施形態の一部を構成する、本明細書において説明した任意の動作は、有用な機械の動作の場合がある。さらに、本発明の１つ以上の実施形態は、その動作を実行するための機器又は装置にも関係している。その装置は、具体的で必要な目的のために特別に製造される場合もあれば、コンピュータに記憶されるコンピュータプログラムによって選択的に作動又は構成される汎用目的コンピュータの場合もある。特に、様々な汎用目的機械が、本明細書における教示に従って書かれるコンピュータプログラムとともに使用される場合もあれば、必要な動作を実行するように、より特別な装置を製造することがより好都合な場合もある。
【００３２】
本明細書において説明した様々な実施形態は、ハンドヘルド機器、マイクロプロセッサシステム、マイクロプロセッサ方式の民生用電気機器又は書込可能な民生用電気機器、ミニコンピュータ、メインフレームコンピュータ等を含む、他のコンピュータシステム構成を用いて実施されてもよい。
【００３３】
本発明の１つ以上の実施形態は、１つ以上のコンピュータ可読媒体において具現化される、１つ以上のコンピュータプログラム又は１つ以上のコンピュータプログラムモジュールとして実装されてもよい。コンピュータ可読媒体の語は、後にコンピュータシステムに入力されるデータを記憶できる任意のデータ記憶装置を指し、コンピュータ可読媒体は、コンピュータプログラムがコンピュータによって読まれることを可能にする態様でコンピュータプログラムを具現化するための任意の既存の技術又は以後に開発される技術に基づく場合がある。コンピュータ可読媒体の例は、ハードドライブ、ＮＡＳ（ｎｅｔｗｏｒｋ
ａｔｔａｃｈｅｄ  ｓｔｏｒａｇｅ）、リードオンリメモリ、ランダムアクセスメモリ（例えば、フラッシュメモリデバイス）、ＣＤ（コンパクトディスク）（ＣＤ−ＲＯＭ、ＣＤ−Ｒ、又はＣＤ−ＲＷ）、ＤＶＤ（デジタル・バーサタイル・ディスク）、磁気テー
プ、並びに他の光学式のデータ記憶装置及び光学式ではないデータ記憶装置を含む。さらに、コンピュータ可読媒体は、コンピュータ可読コードが配布される態様で記憶及び実行されるように、ネットワークに接続したコンピュータシステムによって配布されてもよい。
【００３４】
本発明の１つ以上の実施形態は、理解の明快さのために幾分詳細に説明されてきたが、特許請求の範囲内において、ある程度の変更及び改変がなされることは明らかである。したがって、説明した実施形態は、例示として、非限定的なものとして考慮されるべきであり、特許請求の範囲は、本明細書において与えられた詳細に限定されず、特許請求の範囲及びその均等範囲内において改変されてもよい。特許請求の範囲において、要素、工程、又はその両方は、特許請求の範囲において明確に述べられていない限り、動作の特定の順序を意味しない。
【００３５】
様々な実施形態にしたがった仮想化システムは、ホスト方式の実施形態、ホスト方式ではない実施形態として実装される場合もあれば、２つの間の区別を曖昧にする傾向がある実施形態として実施される場合もあり、これら全てが想定されている。さらに、様々な仮想化の動作は、ハードウェアにおいて全部又は一部が実装されてもよい。例えば、ハードウェアの実装では、ディスクデータではないデータをセキュアにするように、記憶部のアクセス要求の変形のためのルックアップテーブルが利用される場合がある。
【００３６】
多くの変形、改変、追加、及び改良が、仮想化の程度にかかわらず可能である。したがって、仮想化ソフトウェアは、仮想化の機能を実行する、ホスト、コンソール、又はゲストのオペレーティングシステムの構成要素を含む場合がある。１つのインスタンスとして本明細書において説明した構成要素、動作、又は構造に対して複数のインスタンスが提供されてもよい。最後に、様々な構成要素、動作、及びデータの記憶同士の境界は、幾分任意であり、特定の動作が、具体的な例示の構成の文脈において示されている。機能の他の割当が想定されており、その割当は本発明の範囲内に含まれ得る。一般に、例示的な構成において別々の構成要素として提示された構造及び機能は、組み合わされた構造又は構成要素として実装されてもよい。同様に、１つの構成要素として提示された構造及び機能は、別々の構成要素として実装されてもよい。これら及び他の変形、改変、追加、及び改良が、添付の特許請求の範囲内に含まれ得る。
【図２】
0005922307.tif 000002
【図１】
0005922307.tif 000003
【図３】
0005922307.tif 000004
【図４】
0005922307.tif 000005