(57)【特許請求の範囲】
【請求項１】
仮想マシンを移行するためのコンピュート・ノードであって、
仮想マシンを宛先コンピュート・ノードに移行するためのリクエストを受信する仮想マシン移行モジュールであって、前記リクエストは、サービス・レベル要求を含む、仮想マシン移行モジュールと、
前記仮想マシンを移行するのに必要とされるプラットフォーム・リソースを判定し、前記サービス・レベル要求を満たすかどうかを判定するサービス・レベル管理モジュールと、
（ｉ）前記必要とされるプラットフォーム・リソースが当該コンピュート・ノードに現在利用可能であるかどうかを判定し、（ｉｉ）前記必要とされるプラットフォーム・リソースが現在利用可能であるという判定に応じて、予測される移行時間の間、前記必要とされるプラットフォーム・リソースを予約する、リソース管理モジュールと、
を備え、
前記仮想マシン移行モジュールは、さらに、前記必要とされるプラットフォーム・リソースの予約に応じて、前記の予約したプラットフォーム・リソースを用いて、前記仮想マシンを前記宛先コンピュート・ノードに移行し、
前記リソース管理モジュールは、さらに、前記必要とされるプラットフォーム・リソースが当該コンピュート・ノードに現在利用可能でないという判定に応じて、当該コンピュート・ノードの現在利用可能なプラットフォーム・リソースを判定し、
前記サービス・レベル管理モジュールは、さらに、前記現在利用可能なプラットフォーム・リソースに基づいて、前記仮想マシンを移行するための前記リクエストに関する達成可能なサービス・レベルを判定し、
前記仮想マシン移行モジュールは、さらに、（ｉ）前記達成可能なサービス・レベルをデータ・センタ・マネージャに送信し、（ｉｉ）前記達成可能なサービス・レベルに応じて、前記データ・センタ・マネージャからレスポンスを受信し、
前記リソース管理モジュールは、さらに、前記データ・センタ・マネージャからの肯定的なレスポンスの受信に応じて、前記予測される移行時間の間、前記現在利用可能なプラットフォーム・リソースを予約する、コンピュート・ノード。
【請求項２】
ハードウェア・リソース・モニタ
をさらに備え、
前記必要とされるプラットフォーム・リソースが当該コンピュート・ノードに現在利用可能であるかどうかを前記判定することは、前記ハードウェア・リソース・モニタに問い合わせることを含む、請求項１記載のコンピュート・ノード。
【請求項３】
前記ハードウェア・リソース・モニタは、当該コンピュート・ノードのプロセッサのハードウェア・リソース・モニタ又は当該コンピュート・ノードのＩ／Ｏサブシステムのハードウェア・リソース・モニタを含む、請求項２記載のコンピュート・ノード。
【請求項４】
ハードウェア予約マネージャ
をさらに備え、
前記必要とされるプラットフォーム・リソースを前記予約することは、前記ハードウェア予約マネージャを用いて前記必要とされるプラットフォーム・リソースを予約することを含む、請求項１記載のコンピュート・ノード。
【請求項５】
前記ハードウェア予約マネージャは、当該コンピュート・ノードのプロセッサのハードウェア予約マネージャ又は当該コンピュート・ノードのＩ／Ｏサブシステムのハードウェア予約マネージャを含む、請求項４記載のコンピュート・ノード。
【請求項６】
前記サービス・レベル要求は、最大ダウンタイム要求、最大総移行時間要求、又は最大ネットワーク帯域幅使用要求を含む、請求項１記載のコンピュート・ノード。
【請求項７】
前記プラットフォーム・リソースは、プロセッサ・リソース、メモリ・リソース、及びＩ／Ｏリソースのうち少なくとも１つを含む、請求項１記載のコンピュート・ノード。
【請求項８】
前記仮想マシン移行モジュールは、さらに、前記データ・センタ・マネージャからの否定的なレスポンスの受信に応じて、前記仮想マシンを移行するための前記リクエストをキャンセルする、請求項１記載のコンピュート・ノード。
【請求項９】
仮想マシンを移行するための方法であって、
コンピュート・ノードにより、仮想マシンを宛先コンピュート・ノードに移行するためのリクエストを受信する受信ステップであって、前記リクエストは、サービス・レベル要求を含む、受信ステップと、
前記コンピュート・ノードにより、前記仮想マシンを移行するのに必要とされるプラットフォーム・リソースを判定し、前記サービス・レベル要求を満たすかどうかを判定するステップと、
前記コンピュート・ノードにより、前記必要とされるプラットフォーム・リソースが前記コンピュート・ノードに現在利用可能であるかどうかを判定する判定ステップと、
前記コンピュート・ノードにより、前記必要とされるプラットフォーム・リソースが現在利用可能であるという判定に応じて、予測される移行時間の間、前記必要とされるプラットフォーム・リソースを予約する予約ステップと、
前記コンピュート・ノードにより、前記必要とされるプラットフォーム・リソースの予約に応じて、前記の予約したプラットフォーム・リソースを用いて、前記仮想マシンを前記宛先コンピュート・ノードに移行するステップと、
を含み、
前記必要とされるプラットフォーム・リソースが前記コンピュート・ノードに現在利用可能でないという判定に応じて、
前記コンピュート・ノードにより、前記コンピュート・ノードの現在利用可能なプラットフォーム・リソースを判定するステップと、
前記コンピュート・ノードにより、前記現在利用可能なプラットフォーム・リソースに基づいて、前記仮想マシンを移行するための前記リクエストに関する達成可能なサービス・レベルを判定するステップと、
前記コンピュート・ノードにより、前記達成可能なサービス・レベルをデータ・センタ・マネージャに送信するステップと、
前記コンピュート・ノードにより、前記達成可能なサービス・レベルに応じて、前記データ・センタ・マネージャからレスポンスを受信するステップと、
前記コンピュート・ノードにより、前記データ・センタ・マネージャからの肯定的なレスポンスの受信に応じて、前記予測される移行時間の間、前記現在利用可能なプラットフォーム・リソースを予約するステップと、
をさらに含む、方法。
【請求項１０】
前記判定ステップは、前記コンピュート・ノードのハードウェア・リソース・モニタに問い合わせる問い合わせステップを含む、請求項９記載の方法。
【請求項１１】
前記問い合わせステップは、前記コンピュート・ノードのプロセッサのハードウェア・リソース・モニタに問い合わせるステップ又は前記コンピュート・ノードのＩ／Ｏサブシステムのハードウェア・リソース・モニタに問い合わせるステップを含む、請求項１０記載の方法。
【請求項１２】
前記予約ステップは、前記コンピュート・ノードのハードウェア予約マネージャを用いて、前記必要とされるプラットフォーム・リソースを予約するステップを含む、請求項９記載の方法。
【請求項１３】
ハードウェア予約マネージャを前記用いることは、前記コンピュート・ノードのプロセッサのハードウェア予約マネージャを用いること又は前記コンピュート・ノードのＩ／Ｏサブシステムのハードウェア予約マネージャを用いることを含む、請求項１２記載の方法。
【請求項１４】
前記プラットフォーム・リソースは、プロセッサ・リソース、メモリ・リソース、及びＩ／Ｏリソースのうち少なくとも１つを含む、請求項９記載の方法。
【請求項１５】
前記コンピュート・ノードにより、前記データ・センタ・マネージャからの否定的なレスポンスの受信に応じて、前記仮想マシンを移行するための前記リクエストをキャンセルするステップ
をさらに含む、請求項９記載の方法。
【請求項１６】
コンピューティング・デバイスであって、
プロセッサと、
複数の命令を記憶したメモリであって、前記複数の命令が前記プロセッサにより実行されたとき、前記複数の命令は、当該コンピューティング・デバイスに、請求項９乃至１５いずれか一項記載の方法を実行させる、メモリと、
を備えた、コンピューティング・デバイス。
【請求項１７】
コンピューティング・デバイスに、請求項９乃至１５いずれか一項記載の方法を実行させるプログラム。
【請求項１８】
請求項１７記載のプログラムを記憶したマシン読み取り可能な記憶媒体。
【請求項１９】
請求項９乃至１５いずれか一項記載の方法を実行する手段を備えた、コンピューティング・デバイス。
【発明の詳細な説明】
【背景技術】
【０００１】
データ・センタは、顧客にサービスを提供する仮想化にますます依拠するようになってきている。通常のデータ・センタは、ノードと呼ばれる密にパックされたコンピューティング・サーバのクラスタを含み得る。各ノードは、多くの仮想マシンを実行し得る。通常、各ノードは、ハイパバイザ又は他の仮想化フレームワークを含み、完全なデータ・センタは、特定のコンピュート・ノード上での仮想マシンのインスタンス化を管理する１以上のデータ・センタ・マネージャを含む。仮想マシンは、ソース・ノードから宛先ノードに仮想マシンの完全な状態（state）を転送することにより、ノード間で転送することができる、すなわち、「移行する」ことができる。仮想マシン移行は、「ライブ」で実行され得る、すなわち、仮想マシンの状態を妨げることなく、提供されるサービスに対する最小限の中断で実行され得る。しかしながら、通常の仮想化されたデータ・センタは、仮想マシン移行に関して、緊急性及び高可用性を保証することができない。したがって、仮想マシン移行は、通常、仮想マシンが利用できなくなったときに、いくらかの量のダウンタイムを生じさせ、そのダウンタイムは、仮想マシン・サイズ、仮想マシン負荷、ネットワーク・トラフィック、及び予測できない場合がある他のファクタに応じて変わり得る。
【０００２】
通信ネットワーク機能は、ネットワーク・データ・センタにますます統合されるようになってきている。例えば、歴史的に多くの中継塔間で分散されてきたセルラ基地局機能は、現在では、仮想化されたネットワーク・データ・センタに統合することができる。しかしながら、通信ネットワークは、通常、極度に高い信頼性要件を有する。したがって、仮想マシンの一般的なライブ移行は、通信ネットワーク機能のための信頼性要件を常に達成するという難しさを有し得る。
【図面の簡単な説明】
【０００３】
本明細書で説明するコンセプトが、限定ではなく例として添付の図面に示される。例示の単純さ及び明瞭さのため、図面に示す要素は、必ずしも縮尺通りに描かれているわけではない。適切であると考えられる場合、参照ラベルは、対応する要素又は類似の要素を示すために、図面間で繰り返される。
【図１】ライブ仮想マシン移行のためのシステムの少なくとも１つの実施形態の簡略化されたブロック図。
【図２】図１のシステムにより達成され得るシミュレーション結果を示すチャート。
【図３】図１のシステムにより確立され得る様々な環境の少なくとも１つの実施形態の簡略化されたブロック図。
【図４】図１及び図３のシステムのコンピュート・ノードにより実行され得る、ライブ仮想マシン移行のための方法の少なくとも１つの実施形態の簡略化されたフロー図。
【図５】図１及び図３のシステムのコンピュート・ノードにより実行され得る、仮想マシン・ページを送信するための方法の少なくとも１つの実施形態の簡略化されたフロー図。
【図６】図１及び図３のシステムのコンピュート・ノードにより実行され得る、仮想マシン・ページを受信するための方法の少なくとも１つの実施形態の簡略化されたフロー図。
【図７】図１及び図３のシステムのコンピュート・ノードにより実行され得る、サービス・レベル要求についてネゴシエートするための方法の少なくとも１つの実施形態の簡略化されたフロー図。
【図８】図１及び図３のシステムのデータ・センタ・マネージャにより実行され得る、サービス・レベル要求についてネゴシエートするための方法の少なくとも１つの実施形態の簡略化されたフロー図。
【発明を実施するための形態】
【０００４】
本開示のコンセプトは、様々な変形形態及び代替形態を受け入れる余地があるが、その特定の実施形態が、例として図面に示され、本明細書において詳細に説明される。しかしながら、本開示のコンセプトを、開示する特定の形態に限定する意図はなく、反対に、意図は、本開示及び添付の特許請求の範囲と整合する全ての変形形態、均等形態、及び代替形態をカバーすることにあることを理解すべきである。
【０００５】
「一実施形態」、「ある実施形態」、「例示的な実施形態」等の明細書における言及は、説明する実施形態が特定の特徴、構造、又は特性を含み得るが、全ての実施形態がそのような特定の特徴等を含んでもよいし、あるいは必ずしもそのような特定の特徴等を含み得る必要がなくてもよいことを示す。さらに、このような語句は、必ずしも同じ実施形態を指すわけではない。さらに、特定の特徴、構造、又は特性がある実施形態との関連で記載されている場合には、明示されていようといまいと、他の実施形態との関連でそのような特定の特徴、構造、又は特性を実装することは当業者の知識の範囲内であるとする。さらに、「Ａ、Ｂ、及びＣのうち少なくとも１つ」という形のリストに含まれる項目は、（Ａ）；（Ｂ）；（Ｃ）；（Ａ及びＢ）；（Ａ及びＣ）；（Ｂ及びＣ）；又は、（Ａ、Ｂ、及びＣ）を意味し得ることを理解すべきである。同様に、「Ａ、Ｂ、又はＣのうち少なくとも１つ」という形でリストされる項目は、（Ａ）；（Ｂ）；（Ｃ）；（Ａ及びＢ）；（Ａ及びＣ）；（Ｂ及びＣ）；又は、（Ａ、Ｂ、及びＣ）を意味し得る。
【０００６】
開示する実施形態は、場合により、ハードウェア、ファームウェア、ソフトウェア、又はこれらの任意の組合せにより実装することができる。開示する実施形態はまた、１以上のプロセッサにより読み込まれ実行され得る、一時的な又は非一時的な１以上のマシン読み取り可能な記憶媒体（例えば、コンピュータ読み取り可能な記憶媒体）により運ばれる命令又はそのような媒体に記憶された命令として実装することができる。マシン読み取り可能な記憶媒体は、マシンにより読み取ることができる形態の情報を記憶又は送信する記憶デバイス、メカニズム、又は他の物理的構造（例えば、揮発性メモリ若しくは不揮発性メモリ、メディア・ディスク、又は他のメディア・デバイス）として具現化することができる。
【０００７】
図面において、いくつかの構造的特徴又は方法的特徴が、特定の配置及び／又は順序で示され得る。しかしながら、そのような特定の配置及び／又は順序が必要とされるわけではないことを理解すべきである。そうではなく、いくつかの実施形態において、そのような特徴は、例示する図に示される形及び／又は順序と異なる形及び／又は順序で構成され得る。さらに、特定の図面内に構造的特徴又は方法的特徴が含まれることは、そのような特徴が全ての実施形態において必要とされることを意味しない、いくつかの実施形態において、そのような特徴が含まれないことを意味しない、又はそのような特徴が他の特徴と組み合わされないことを意味しない。
【０００８】
次に図１を参照すると、例示的な実施形態において、ライブ仮想マシン移行のためのシステム１００は、ネットワーク１０６を介して通信する、複数のコンピュート・ノード１０２及びデータ・センタ・マネージャ１０４を含む。使用の際、以下でより詳細に説明するように、各コンピュート・ノード１０２は、計算タスクを実行する１以上の仮想マシンをインスタンス化することができる。データ・センタ・マネージャ１０４は、特定の必要とされるサービス・レベル（例えば、最大ダウンタイム、総移行時間、又はネットワーク帯域幅使用）を指定して、仮想マシンを宛先コンピュート・ノード１０２に移行するよう、ソース・コンピュート・ノード１０２に指示することができる。ソース・コンピュート・ノード１０２は、指定されたサービス・レベルを達成するのに必要とされるプラットフォーム・リソースと、そのような必要とされるプラットフォーム・リソースが利用可能であるかどうかとを判定する。必要とされるプラットフォーム・リソースが利用可能である場合、ソース・コンピュート・ノード１０２は、そのようなリソースを予約し、予約されたリソースを用いて移行を実行する。必要とされるプラットフォーム・リソースが利用可能でない場合、ソース・コンピュート・ノード１０２は、達成可能なサービス・レベルを判定して、低減されているが達成可能なサービス・レベルを用いて移行を進めるかどうかについてデータ・センタ・マネージャ１０４とネゴシエートすることができる。必要とされるリソースを判定しそのようなリソースを予約することは、特に大きな仮想マシン又は高メモリ負荷を伴う仮想マシンに関して、仮想マシン移行の信頼性及びパフォーマンスを向上させ得る。さらに、移行のダウンタイム及び／又は総移行時間の決定論（determinism）が向上され得る。すなわち、実際のダウンタイム及び／又は総移行時間が、より予測可能なものとなり得る。さらに、データ・センタ・マネージャ１０４は、例えば、電力消費、計算負荷、地理的位置、又は他のものに基づいて計算タスクを分散させるために、指定されたサービス・レベルが達成可能であるかどうかに関する、コンピュート・ノード１０２から受信した情報に基づいて、改善された移行プランを作成することができる。したがって、ライブ仮想マシン移行の増大した信頼性、パフォーマンス、及び決定論は、通信ネットワークのワークロードのための仮想化されたソリューションの適合性を向上させ得る。
【０００９】
次に図２を参照すると、チャート２００は、システム１００を用いて達成され得るシミュレーション実験結果を示している。曲線２０２は、秒単位の総仮想マシン移行時間を示し、曲線２０４は、ミリ秒単位の仮想マシン・ダウンタイムを示している。両方のカーブ２０２、２０４における第１のデータ点は、一般的なオープン・ソース・マシン・エミュレータ及びバーチャライザであるＱＥＭＵ１．６．０を用いた仮想マシン転送のシミュレーション結果を示している。チャート２００に示されるように、一般的なバーチャライザは、毎秒１２００００ページというページ・ダーティ・レート（仮想マシンのメモリ負荷を示す）を仮定すると、６９．１１秒という総移行時間と、４８９ミリ秒というダウンタイムとを達成し得る。両方のカーブ２０２、２０４における第２のデータ点は、本明細書で開示する技術のうちのいくつかを具現化するＱＥＭＵ１．６．０のパッチ・バージョン（patched  version）を用いた仮想マシン転送のシミュレーション結果を示している。チャート２００に示されるように、パッチ・バーチャライザ（patched  virtualizer）は、毎秒４００１００ページというページ・ダーティ・レートを仮定すると、４１．６６秒という総移行時間と、４７２ミリ秒というダウンタイムとを達成し得る。したがって、チャート２００に示された結果は、システム１００が、はるかに高いメモリ負荷（すなわち、３倍以上の負荷）を処理すると同時に、総移行時間及びダウンタイムを低減させることができることを示している。本明細書で説明するハードウェア・サポートを含むシステム１００の実施形態は、パフォーマンス、決定論、及び／又は信頼性におけるさらなる改善を提供することができる。
【００１０】
再度図１を参照すると、各コンピュート・ノード１０２は、本明細書で説明する機能を実行することができる任意のタイプの計算デバイス又はコンピュータ・デバイスとして具現化され得る。そのような計算デバイス又はコンピュータ・デバイスとして、コンピュータ、マルチプロセッサ・システム、サーバ、ラック・マウント・サーバ、ブレード・サーバ、ラップトップ・コンピュータ、ノートブック・コンピュータ、ネットワーク・アプライアンス、ウェブ・アプライアンス、分散コンピューティング・システム、プロセッサベースのシステム、及び／又は消費家電デバイスがあるが、これらに限定されるものではない。図１に示されるように、各コンピュート・ノード１０２は、例示的に、２つのプロセッサ１２０、入力／出力サブシステム１２８、メモリ１３４、データ・ストレージ・デバイス１３６、及び通信回路１３８を含む。もちろん、コンピュート・ノード１０２は、他の実施形態において、サーバ・デバイスにおいて一般的に見つけられるコンポーネント（例えば、様々な入力／出力デバイス）等の、他のコンポーネント又はさらなるコンポーネントを含んでもよい。さらに、いくつかの実施形態において、例示的なコンポーネントのうちの１以上は、別のコンポーネントに組み込まれてもよいし、別のコンポーネントの一部を形成してもよい。例えば、メモリ１３４又はその一部は、いくつかの実施形態において、１以上のプロセッサ１２０に組み込まれてもよい。
【００１１】
各プロセッサ１２０は、本明細書で説明する機能を実行することができる任意のタイプのプロセッサとして具現化され得る。例示的なプロセッサ１２０の各々は、マルチコア・プロセッサであるが、他の実施形態では、各プロセッサ１２０は、シングルコア・プロセッサ若しくはマルチコア・プロセッサ、デジタル信号プロセッサ、マイクロコントローラ、又は他のプロセッサ若しくは処理／制御回路として具現化されてもよい。各プロセッサ１２０は、例示的に、４つのプロセッサ・コア１２２、リソース・モニタ１２４、及び予約マネージャ（reservation  manager）１２６を含む。プロセッサ・コア１２２の各々は、プログラムされた命令を実行することができる独立した処理ユニットである。例示的なコンピュート・ノード１０２の各々は、４つのプロセッサ・コア１２２を有する２つのプロセッサ１２０を含むが、各コンピュート・ノード１０２は、他の実施形態において、それぞれが１以上のプロセッサ・コア１２２を有する１以上のプロセッサ１２０を含んでもよい。詳細には、本明細書で開示する技術は、単一プロセッサ又はシングルコア・コンピュート・ノード１０２にも適用可能である。
【００１２】
リソース・モニタ１２４は、プロセッサ１２０及び／又はコンピュート・ノード１０２によるプラットフォーム・リソースの利用に関する正確なリアルタイム情報を提供することができる任意のハードウェア・コンポーネントとして具現化され得る。例えば、リソース・モニタ１２４は、プロセッサ１２０及び／又はプロセッサ・コア１２２の計算リソース又は他の実行リソースの使用、メモリ１３４の使用、又は通信回路１３８の使用等のＩ／Ｏ使用に関する情報を提供することができる。予約マネージャ１２６は、特定のソフトウェア・コンテキスト（例えば、プロセス又はスレッド）の使用のために、プロセッサ１２０及び／又はコンピュート・ノード１０２の１以上のプラットフォーム・リソースを指定された時間期間の間排他的に予約することができる任意のハードウェア・コンポーネントとして具現化され得る。特定のプラットフォーム・リソースは、予約されると、オペレーティング・システム、仮想マシン・モニタ、又はコンピュート・ノード１０２のハイパバイザを含む、コンピュート・ノード１０２の他のソフトウェア・コンテキストにより、取って代わることができない、競合することができない、あるいは使用することができない。例えば、予約マネージャ１２６は、特定のソフトウェア・コンテキストの使用のために、プロセッサ・コア１２２のうちの１以上を予約することができる。そのようなプロセッサ・コア１２２は、予約されると、他のソフトウェア・コンテキストにより、妨げることができない、取って代わることができない、あるいは使用することができない。別の例として、予約マネージャ１２６は、ディスクにページ・アウトすることができない又は妨げることができないメモリ１３４の特定のページを予約することができる、あるいは低減させることができない特定の量のＩ／Ｏ帯域幅を予約することができる。例示的なプロセッサ１２０は、リソース・モニタ１２４及び予約マネージャ１２６を含むが、他の実施形態では、プロセッサ１２０は、そのような機能のためのハードウェア・サポートを含まなくてもよい。例えば、プロセッサ１２０は、一般的なサーバ・プロセッサ１２０、デスクトップ・プロセッサ１２０、又はモバイル・プロセッサ１２０として具現化され得る。
【００１３】
メモリ１３４は、本明細書で説明する機能を実行することができる任意のタイプの揮発性メモリ若しくは不揮発性メモリ、又はデータ・ストレージとして具現化され得る。動作の際、メモリ１３４は、オペレーティング・システム、アプリケーション、プログラム、ライブラリ、及びドライバ等の、コンピュート・ノード１０２の動作中に使用される様々なデータ及びソフトウェアを記憶することができる。メモリ１３４は、Ｉ／Ｏサブシステム１２８を介して、プロセッサ１２０に通信可能に接続される。Ｉ／Ｏサブシステム１２８は、プロセッサ１２０、メモリ１３４、及びコンピュート・ノード１０２の他のコンポーネントとの入力／出力オペレーションを容易にする回路及び／又はコンポーネントとして具現化され得る。例えば、Ｉ／Ｏサブシステム１２８は、メモリ・コントローラ・ハブ、入力／出力コントロール・ハブ、ファームウェア・デバイス、通信リンク（すなわち、ポイント・ツー・ポイント・リンク、バス・リンク、有線、ケーブル、ライト・ガイド、プリント回路基板トレース等）、並びに／又は入力／出力オペレーションを容易にする他のコンポーネント及びサブシステムとして、具現化され得る、あるいは、これらを含み得る。いくつかの実施形態において、Ｉ／Ｏサブシステム１２８は、システム・オン・チップ（ＳｏＣ）の一部を形成し、プロセッサ１２０、メモリ１３４、及びコンピュート・ノード１０２の他のコンポーネントとともに、単一の集積回路チップに組み込まれ得る。
【００１４】
例示的なＩ／Ｏサブシステム１２８は、リソース・モニタ１３０及び予約マネージャ１３２をさらに含む。これらのコンポーネントは、それぞれ、プロセッサ１２０のリソース・モニタ１２４及び予約マネージャ１２６と同様の機能を実行する。プロセッサ１２０のリソース・モニタ１２４及び予約マネージャ１２６の説明は、Ｉ／Ｏサブシステム１２８の対応するコンポーネントに適用することができ、本開示を曖昧にしないようにするために、本明細書において繰り返さない。追加的に又は代替的に、いくつかの実施形態において、リソース・モニタ１３０は、プロセッサ１２０のコンポーネントとは異なるプラットフォーム・リソースをモニタリングしてもよいし、予約マネージャ１３２は、プロセッサ１２０のコンポーネントとは異なるプラットフォーム・リソースを予約してもよい。例えば、Ｉ／Ｏサブシステム１２８のこれらのコンポーネントは、メモリ１３４、及び／又は通信回路１３８の帯域幅等のＩ／Ｏリソースをモニタリング及び予約することができる。また、いくつかの実施形態において、Ｉ／Ｏサブシステム１２８は、メモリ・サブシステム等のコンピューティング・デバイス１００の特定のサブシステムに専用の１以上の専用リソース・モニタ１３０及び／又は専用予約マネージャ１３２を含み得る。プロセッサ１２０と同様に、いくつかの実施形態において、Ｉ／Ｏサブシステム１２８は、このような機能のためのハードウェア・サポートを含まなくてもよい。例えば、Ｉ／Ｏサブシステム１２８は、一般的なサーバ・チップセット、デスクトップ・チップセット、又はモバイル・チップセットとして具現化され得る。
【００１５】
データ・ストレージ・デバイス１３６は、データの短期間の記憶又は長期間の記憶のために構成された任意のタイプの１以上のデバイスとして具現化され得る。そのようなデバイスとして、例えば、メモリ・デバイス及び回路、メモリ・カード、ハード・ディスク・ドライブ、ソリッド・ステート・ドライブ、又は他のデータ・ストレージ・デバイスがある。データ・ストレージ・デバイス１３６を使用して、仮想マシン・アプリケーションを記憶することができる。あるいは、データ・ストレージ・デバイス１３６は、仮想マシン・メモリ・ページのためのバッキング・ストア（backing  store）として使用することができる。
【００１６】
コンピュート・ノード１０２の通信回路１３８は、ネットワーク１０６を介したコンピュート・ノード１０２、データ・センタ・マネージャ１０４、及び／又は他のリモート・デバイス間の通信を可能にすることができる任意の通信回路、デバイス、又はそれらの集合として具現化され得る。通信回路１３８は、１以上の任意の通信技術（例えば、有線通信又は無線通信）と関連プロトコル（例えば、イーサネット（登録商標）、Ｂｌｕｅｔｏｏｔｈ（登録商標）、Ｗｉ−Ｆｉ（登録商標）、ＷｉＭＡＸ（登録商標）等）とを使用してそのような通信を行うよう構成され得る。いくつかの実施形態において、通信回路１３８は、コンピュート・ノード１０２の他のコンポーネントからのネットワーク機能を速める、あるいはオフロードするための専用ハードウェアを含み得る。例えば、いくつかの実施形態において、通信回路１３８は、ネットワーク・トラフィックのハードウェア・アクセラレーテッド圧縮（hardware-accelerated  compression）のためのサポートを含み得る。
【００１７】
データ・センタ・マネージャ１０４は、システム１００のコンピュート・ノード１０２間で分散されている仮想マシン又は他のコンピュート・インスタンスを管理するよう構成される。データ・センタ・マネージャ１０４は、本明細書で説明する機能を実行することができる任意のタイプのサーバ・コンピューティング・デバイス又はデバイスの集合として具現化され得る。したがって、データ・センタ・マネージャ１０４は、単一のサーバ・コンピューティング・デバイス、又はサーバ及び関連デバイスの集合として具現化され得る。例えば、いくつかの実施形態において、データ・センタ・マネージャ１０４は、ネットワーク１０６にわたって分散されている複数のコンピューティング・デバイスから形成され、パブリック・クラウド又はプライベート・クラウドにおいて動作する「仮想サーバ」として具現化され得る。したがって、データ・センタ・マネージャ１０４は、単一のサーバ・コンピューティング・デバイスとして具現化されたものとして図１に示されているが、データ・センタ・マネージャ１０４は、以下で説明する機能を円滑にするために協働する複数のデバイスとして具現化されてもよいことを理解すべきである。例示的に、データ・センタ・マネージャ１０４は、プロセッサ１４０、Ｉ／Ｏサブシステム１４２、メモリ１４４、データ・ストレージ・デバイス１４６、通信回路１４８、及び／又はサーバ又は同様のコンピューティング・デバイスにおいて一般的に見つけられる他のコンポーネント及びデバイスを含む。データ・センタ・マネージャ１０４のそのような個々のコンポーネントは、コンピュート・ノード１０２の対応するコンポーネントと同様であり得、コンピュート・ノード１０２の対応するコンポーネントの説明は、データ・センタ・マネージャ１０４の対応するコンポーネントに適用することができ、本開示を曖昧にしないようにするために、本明細書において繰り返さない。
【００１８】
以下でより詳細に説明するように、コンピュート・ノード１０２及びデータ・センタ・マネージャ１０４は、ネットワーク１０６を介して、互いに、且つ／あるいはシステム１００の他のデバイスとデータを送受信するよう構成され得る。ネットワーク１０６は、任意の数の様々な有線ネットワーク及び／又は無線ネットワークとして具現化され得る。例えば、ネットワーク１０６は、有線ローカル・エリア・ネットワーク（ＬＡＮ）又は無線ＬＡＮ、有線ワイド・エリア・ネットワーク（ＷＡＮ）又は無線ＷＡＮ、セルラ・ネットワーク、及び／又はインターネット等のパブリックにアクセス可能なグローバル・ネットワークとして具現化され得る、あるいは、これらを含み得る。したがって、ネットワーク１０６は、システム１００のデバイス間の通信を円滑にする、さらなるコンピュータ、ルータ、及びスイッチ等の任意の数のさらなるデバイスを含み得る。
【００１９】
次に図３を参照すると、例示的な実施形態において、コンピュート・ノード１０２ａは、オペレーション中、環境３００を確立する。例示的な環境３００は、仮想マシン・モニタ３０２、サービス・レベル管理モジュール３０８、及びリソース管理モジュール３１０を含む。環境３００の様々なモジュールは、ハードウェア、ファームウェア、ソフトウェア、又はそれらの組合せとして具現化され得る。
【００２０】
仮想マシン・モニタ３０２は、任意の仮想マシン・モニタ、ハイパバイザ、汎用オペレーティング・システム、専用オペレーティング・システム、又はコンピュート・ノード１０２ａ上で仮想化されたワークロードを実行することを可能にする他のコンポーネントとして具現化され得る。仮想マシン・モニタ３０２は、仮想マシン移行モジュール３０４及び１以上の仮想マシン３０６をさらに含み得る。
【００２１】
仮想マシン移行モジュール３０４は、コンピュート・ノード１０２ａ（「ソース」コンピュート・ノード１０２ａ）から「宛先」コンピュート・ノード１０２ｂに仮想マシン３０６を移行するためのリクエストをデータ・センタ・マネージャ１０４から受信するよう構成される。このリクエストはまた、最大ダウンタイム及び／又は最大総移行時間等の、移行のサービス・レベル要求を指定し得る。以下でさらに説明するように、仮想マシン移行モジュール３０４は、さらに、ソース・コンピュート・ノード１０２ａの予約されたプラットフォーム・リソースを用いて、リクエストされた仮想マシン３０６を宛先コンピュート・ノード１０２ｂに転送するよう構成される。いくつかの実施形態において、仮想マシン移行モジュール３０４は、さらに、元々リクエストされたサービス・レベル要求が現在利用可能なプラットフォーム・リソースを用いて達成可能でない場合に、データ・センタ・マネージャ１０４と低減されたサービス・レベル要求についてネゴシエートするよう構成され得る。
【００２２】
各仮想マシン３０６は、ネットワーク機能仮想化（ＮＦＶ）ワークロード等の計算負荷をソース・コンピュート・ノード１０２ａ上で実行するよう構成される。各仮想マシン３０６は、現在の状態を規定する。そのような現在の状態として、例えば、現在の仮想メモリ状態、現在の仮想プロセッサ状態、及び／又は現在のエミュレートされた仮想デバイス状態若しくは副次的に仮想化された仮想デバイス状態がある。各仮想マシン３０６の状態は、メモリ１３４内の複数のメモリ・ページとして具現化され得る。したがって、仮想マシン３０６は、これらのメモリ・ページを宛先コンピュート・ノード１０２ｂに転送することにより、宛先コンピュート・ノード１０２ｂに移行することができる。以下で説明するように、仮想マシン３０６は、データ・センタ・マネージャ１０４により、インスタンス化され、移行され、管理され得る。
【００２３】
サービス・レベル管理モジュール３０８は、リクエストされたサービス・レベル要求において、仮想マシン３０６を宛先コンピュート・ノード１０２ｂに移行するためにどのプラットフォーム・リソースが必要とされるかを判定するよう構成される。サービス・レベル管理モジュール３０８は、いくつかの実施形態において、さらに、ソース・コンピュート・ノード１０２ａの現在利用可能なプラットフォーム・リソースに基づいて、どのサービス・レベルが達成可能であるかを判定するよう構成される。以下でさらに説明するように、プラットフォーム・リソースは、仮想マシン３０６の移行プロセスを実行するために使用することができる、ソース・コンピュート・ノード１０２ａの任意のハードウェア、ソフトウェア、又はＩ／Ｏリソースとして具現化され得る。プラットフォーム・リソースは、例えば、プロセッサ・リソース、メモリ・リソース、又はネットワーク帯域幅等のＩ／Ｏリソースを含み得る。
【００２４】
リソース管理モジュール３１０は、仮想マシン３０６を宛先コンピュート・ノード１０２ｂに移行するのに必要とされるプラットフォーム・リソースが、リクエストされたサービス・レベル要求において、ソース・コンピュート・ノード１０２ａに利用可能であるかどうかを判定するよう構成される。リソース管理モジュール３１０は、オペレーティング・システム又は仮想マシン・モニタ３０２等のソフトウェアを用いて、あるいはパフォーマンス・カウンタ又はリソース・モニタ１２４、１３０等のハードウェアを用いて、プラットフォーム・リソースの使用をモニタリングすることができる。リソース管理モジュール３１０は、さらに、仮想マシン移行モジュール３０４が仮想マシン３０６を移行するためのプラットフォーム・リソースを予約するよう構成される。リソース管理モジュール３１０は、予測される総移行時間等の制限された時間の間、プラットフォーム・リソースを予約することができる。リソース管理モジュール３１０は、オペレーティング・システム又は仮想マシン・モニタ３０２等のソフトウェアを用いて、あるいは予約マネージャ１２６、１３２等のハードウェアを用いて、プラットフォーム・リソースを予約することができる。
【００２５】
図３を参照すると、例示的な実施形態において、宛先コンピュート・ノード１０２ｂは、オペレーション中、環境３２０を確立する。例示的な環境３２０は、仮想マシン・モニタ３０２を含む。仮想マシン・モニタ３０２は、仮想マシン移行モジュール３０４及び複数の仮想マシン３０６を含む。環境３２０の様々なモジュールは、ハードウェア、ファームウェア、ソフトウェア、又はそれらの組合せとして具現化され得る。
【００２６】
仮想マシン・モニタ３０２は、ソース・コンピュート・ノード１０２ａの仮想マシン・モニタと同様である。したがって、仮想マシン・モニタ３０２は、任意の仮想マシン・モニタ、ハイパバイザ、汎用オペレーティング・システム、専用オペレーティング・システム、又は宛先コンピュート・ノード１０２ｂ上で仮想化されたワークロードを実行することを可能にする他のコンポーネントとして具現化され得る。同様に、仮想マシン移行モジュール３０４は、ソース・コンピュート・ノード１０２ａの仮想マシン移行モジュール３０４と同様である。したがって、仮想マシン移行モジュール３０４は、ソース・コンピュート・ノード１０２ａから仮想マシン３０６を受信するよう構成される。上述したように、仮想マシン３０６の各々は、宛先コンピュート・ノード１０２ｂ上で計算ワークロードを実行するよう構成される。ソース・コンピュート・ノード１０２ａから仮想マシン３０６の状態を受信した後、宛先コンピュート・ノード１０２ｂは、仮想マシン３０６を再開し、移行を完了する。
【００２７】
図３を参照すると、例示的な実施形態において、データ・センタ・マネージャ１０４は、オペレーション中、環境３４０を確立する。例示的な環境３４０は、仮想マシン・スケジューラ・モジュール３４２及びサービス・レベル・ネゴシエーション・モジュール３４４を含む。環境３４０の様々なモジュールは、ハードウェア、ファームウェア、ソフトウェア、又はそれらの組合せとして具現化され得る。
【００２８】
仮想マシン・スケジューラ・モジュール３４２は、システム１００の様々なコンピュート・ノード１０２上での実行のために、仮想マシン３０６をスケジュールするよう構成される。詳細には、仮想マシン・スケジューラ・モジュール３４２は、仮想マシン３０６をソース・コンピュート・ノード１０２ａから宛先コンピュート・ノード１０２ｂに移行するためのリクエストを発するよう構成される。仮想マシン３０６を移行するためのリクエストは、ソース・コンピュート・ノード１０２ａにより達成されるサービス・レベル要求を含み得る。仮想マシン・スケジューラ・モジュール３４２は、任意の適切なソースからのコマンドに基づいて、仮想マシン３０６の移行リクエストを生成することができる。例えば、仮想マシン・スケジューラ・モジュール３４２は、ウェブベースの制御インタフェース、コマンド・ライン・インタフェース、又は任意の他の適切なインタフェースを介して、システム管理者からコマンドを受信することができる。別の例として、いくつかの実施形態において、仮想マシン・スケジューラ・モジュール３４２は、例えば、電力消費、負荷、又は地形（geography）に応じてワークロードのバランスを取るために、コンピューティング・サービスの要求に基づいて、仮想マシン３０６を移行するためのコマンドを受信及び／又は生成することができる。
【００２９】
サービス・レベル・ネゴシエーション・モジュール３４４は、ソース・コンピュート・ノード１０２ａがリクエストされたサービス・レベルを達成することができないことに応じて、ソース・コンピュート・ノード１０２ａから達成可能なサービス・レベルを受信するよう構成される。それに応じて、サービス・レベル・ネゴシエーション・モジュール３４４は、達成可能なサービス・レベルが許容可能であるかどうかを判定し、仮想マシン３０６の移行を進めるかどうかを示す適切なレスポンスをソース・コンピュート・ノード１０２ａに送信するよう構成される。例えば、ソース・コンピュート・ノード１０２ａは、リクエストされたサービス・レベル要求を満たすために十分なプラットフォーム・リソースが利用可能でないときに、達成可能なサービス・レベルを示すことができる。サービス・レベル・ネゴシエーション・モジュール３４４は、承認のためにユーザに促すことを含め、達成可能なサービス・レベルが許容可能であるかどうかを判定するための基準を適用することができる。
【００３０】
次に図４を参照すると、使用の際、ソース・コンピュート・ノード１０２ａは、仮想マシン３０６を移行するための方法４００を実行することができる。方法４００は、ブロック４０２で開始する。ブロック４０２において、ソース・コンピュート・ノード１０２ａは、データ・センタ・マネージャ１０４から移行リクエストを受信したかどうかを判定する。受信していない場合、方法４００は、ブロック４０２にループ・バックして、移行リクエストのモニタリングを続ける。移行リクエストが受信された場合、方法４００は、ブロック４０４に進む。
【００３１】
ブロック４０４において、ソース・コンピュート・ノード１０２ａは、データ・センタ・マネージャ１０４から仮想マシン移行のためのリクエストを受信する。仮想マシン移行のためのリクエストは、移行される仮想マシン３０６、宛先コンピュート・ノード１０２ｂ、及び移行の１以上のサービス・レベル要求を指定し得る。サービス・レベル要求は、仮想マシン３０６を宛先コンピュート・ノード１０２ｂに移行するときに達成される、任意の制限、閾、メトリック、又は、他のパフォーマンス基準及び／若しくは信頼性基準を指定し得る。いくつかの実施形態では、ブロック４０６において、ソース・コンピュート・ノード１０２ａは、リクエストとともに、ダウンタイム要求を受信することができる。ダウンタイム要求は、仮想マシン３０６が移行中に停止される、あるいは利用可能でない最大時間を指定し得る。例えば、いくつかの通信ネットワーク機能仮想化（ＮＦＶ）ワークロードにおいて、ダウンタイム要求は、マイクロ秒又はミリ秒として表現され得る。いくつかの実施形態では、ブロック４０８において、ソース・コンピュート・ノード１０２ａは、移行時間要求を受信することができる。移行時間要求は、最大総移行時間を指定し得る、すなわち、移行のためのリクエストを受信してから宛先コンピュート・ノード１０２ｂ上で仮想マシン３０６を起動するまでの最大時間を指定し得る。
【００３２】
ブロック４１０において、ソース・コンピュート・ノード１０２ａは、移行のための仮想マシン３０６を準備する。ソース・コンピュート・ノード１０２ａは、仮想マシン３０６を移行するのに必要とされる任意のタスクを実行することができる。例えば、ソース・コンピュート・ノード１０２ａは、宛先コンピュート・ノード１０２ｂがネットワーク１０６を介して到達可能かどうか、宛先コンピュート・ノード１０２ｂが仮想マシン３０６を受信することができるかどうか、又は他の互換性チェックを実行することができるかどうかを判定することができる。ブロック４１２において、ソース・コンピュート・ノード１０２ａは、宛先コンピュート・ノード１０２ｂに転送されるメモリ１３４のページを特定する。転送されるメモリ・ページは、仮想マシン３０６のメモリ状態に対応するメモリ・ページ；仮想マシン３０６の仮想化されたエミュレートされたデバイス状態若しくは副次的に仮想化されたデバイス状態に対応するメモリ・ページ；仮想レジスタ状態及び仮想プロセッサ・フラグを含む、仮想マシン３０６の仮想プロセッサ状態に対応するメモリ・ページ；又は、仮想マシン３０６の現在の状態に対応する任意の他のメモリ・ページを含み得る。
【００３３】
ブロック４１４において、ソース・コンピュート・ノード１０２ａは、指定されたサービス・レベル要求において、仮想マシン３０６の移行を完了するのに必要とされるプラットフォーム・リソースを判定する。仮想マシン３０６の移行を完了するのに必要とされるプラットフォーム・リソースは、転送されるメモリ・ページの数、メモリ・ページに対して実行されるデータ圧縮若しくは他の処理、又は、計算、記憶、若しくは仮想マシン３０６の転送の通信の複雑さに影響を及ぼす任意の他のファクタに依存し得る。いくつかの実施形態では、ブロック４１６において、ソース・コンピュート・ノード１０２ａは、仮想マシン３０６の移行を完了するのに必要とされるプロセッサ１２０のリソースを判定することができる。例えば、いくつかの実施形態において、ソース・コンピュート・ノード１０２ａは、プロセッサ１２０又はプロセッサ・コア１２２の全体（すなわち、１００％のＣＰＵ使用率）が仮想マシン３０６の移行を完了するのに必要とされることを判定することができる。ブロック４１８において、ソース・コンピュート・ノード１０２ａは、仮想マシン３０６の移行を完了するのに必要とされるメモリ１３４のリソースを判定することができる。例えば、いくつかの実施形態において、ソース・コンピュート・ノード１０２ａは、転送される全てのメモリ・ページを超えるメモリ１３４内の空間が仮想マシン３０６の移行を完了するのに必要とされることを判定することができる。いくつかの実施形態では、ブロック４２０において、ソース・コンピュート・ノード１０２ａは、仮想マシン３０６の移行を完了するのに必要とされるＩ／Ｏリソースを判定することができる。例えば、ソース・コンピュート・ノード１０２ａは、転送を完了するのに必要とされるネットワーク帯域幅を判定することができる。追加的に又は代替的に、ソース・コンピュート・ノード１０２ａは、特定のＩ／Ｏハードウェア機能が必要とされるかどうかを判定することができる。例えば、ソース・コンピュート・ノード１０２ａは、ネットワーク・トラフィックのハードウェア・アクセラレーテッド圧縮のためのサポートが必要とされるかどうかを判定することができる。
【００３４】
ブロック４２２において、ソース・コンピュート・ノード１０２ａは、どのプラットフォーム・リソースがソース・コンピュート・ノード１０２ａに現在利用可能であるかを判定する。上述したように、プラットフォーム・リソースは、プロセッサ１２０のリソース、メモリ１３４のリソース、又はＩ／Ｏリソースを含み得る。ソース・コンピュート・ノード１０２ａは、プロセッサ１２０のハードウェア・パフォーマンス・カウンタ若しくはパフォーマンス・モニタリング・ユニット（ＰＭＵ）、又はパフォーマンス・サブシステム等のオペレーティング・システムベースのハードウェア・モニタリング・サブシステム若しくはハイパバイザベースのハードウェア・モニタリング・サブシステムを含め、利用可能なプラットフォーム・リソースを判定するための任意の方法を使用することができる。レイテンシを低減させること及び／又はパフォーマンス測定の正確性を改善することは、仮想マシン３０６の移行プロセスの信頼性及び／又は決定論を向上させ得る。いくつかの実施形態では、ブロック４２４において、ソース・コンピュート・ノード１０２ａは、プロセッサ１２０のリソース・モニタ１２４及び／又はＩ／Ｏサブシステム１２８のリソース・モニタ１３０から、現在利用可能なプラットフォーム・リソースに関する即時データを取得することができる。従来のＰＭＵ又はソフトウェア・リソース・モニタリング・サブシステムとは違って、リソース・モニタ１２４、１３０は、低減されたタイム・ドリフトで、現在利用可能なプラットフォーム・リソースに関するリアルタイムの正確な情報を提供することができる。さらに、リソース・モニタ１２４、１３０は、従来のシステムによりモニタリングすることができないメモリ１３４のリソース及びＩ／Ｏリソースに関するリアルタイム情報を提供することができる。
【００３５】
ブロック４２６において、ソース・コンピュート・ノード１０２ａは、リクエストされたサービス・レベル要求において、仮想マシン３０６の移行を実行するために十分なプラットフォーム・リソースが現在利用可能であるかどうかを判定する。ソース・コンピュート・ノード１０２ａは、例えば、ブロック４１４において上述した判定された必要とされるプラットフォーム・リソースと、ブロック４２２において上述した判定された現在利用可能なプラットフォーム・リソースとを比較することができる。十分なプラットフォーム・リソースが現在利用可能である場合、方法４００は、以下で説明するブロック４３０に進む。十分なプラットフォーム・リソースが現在利用可能でない場合、方法４００は、ブロック４２８に進む。
【００３６】
十分なプラットフォーム・リソースが現在利用可能でない場合、ブロック４２８において、ソース・コンピュート・ノード１０２ａは、データ・センタ・マネージャ１０４と低減されたサービス・レベル要求についてネゴシエートする。ソース・コンピュート・ノード１０２ａは、利用可能なプラットフォーム・リソースを用いて達成され得る低減されたサービス・レベル要求について、うまくネゴシエートすることができる。ソース・コンピュート・ノード１０２ａは、実質的にブロック４１４に関して上述した計算の逆を行うことで、現在利用可能なプラットフォーム・リソースに基づいて、達成可能なサービス・レベルを判定することができる。代替的に、ソース・コンピュート・ノード１０２ａは、低減されたサービス・レベル要求についてデータ・センタ・マネージャ１０４と同意がされなかった場合、仮想マシン３０６の移行をキャンセルしてもよい。サービス・レベル要求のネゴシエーションについては、図７及び図８を参照して以下でさらに説明する。
【００３７】
必要とされるプラットフォーム・リソースが利用可能であることを判定した後、又は低減されたサービス・レベル要求についてネゴシエートした後、ブロック４３０において、ソース・コンピュート・ノード１０２ａは、予測される移行時間の期間の間、プラットフォーム・リソースを予約する。ソース・コンピュート・ノード１０２ａは、ブロック４１４に関して上記で判定された必要とされるプラットフォーム・リソース又はブロック４２８に関して上述したネゴシエートされたプラットフォーム・リソースを予約することができる。予測される移行時間は、適用可能なサービス・レベル要求の最大総移行時間に対応し得る、あるいは、利用可能なプラットフォーム・リソースに基づいて、ソース・コンピュート・ノード１０２ａにより計算され得る。プラットフォーム・リソースを予約することは、そのようなプラットフォーム・リソースを、仮想マシン３０６の移行プロセスにより排他的に又はほぼ排他的に使用可能にする。例えば、計算リソースを予約するために、ソース・コンピュート・ノード１０２ａは、仮想マシン３０６の移行プロセスのために、プロセッサ・アフィニティ（processor  affinity）を設定することができる。別の例として、メモリ１３４のリソースを予約するために、ソース・コンピュート・ノード１０２ａは、メモリ１３４内に常駐するように、特定のメモリ・ページを固定することができる、ワイヤリングすることができる（wire）、あるいは指定することができる。しかしながら、いくつかの実施形態において、予約されたプラットフォーム・リソースは、それでも、所定の状況では、妨げられ得る、あるいは取って代わられ得る（すなわち、この予約は、「ベスト・エフォート型」の予約であり得る）。例えば、仮想マシン３０６の移行プロセスが、特定のプロセッサ・コア１２２上で実行される唯一のプロセスとして指定されていたとしても、仮想マシン３０６の移行プロセスは、それでも、オペレーティング・システム、仮想マシン・モニタ３０２、又はソース・コンピュート・ノード１０２ａの他の制御プロセスにより、妨げられ得る、あるいは取って代わられ得る。
【００３８】
代替的に、いくつかの実施形態では、ブロック４３２において、ソース・コンピュート・ノード１０２ａは、プロセッサ１２０の予約マネージャ１２６及び／又はＩ／Ｏサブシステム１２８の予約マネージャ１３２を用いて、プラットフォーム・リソースを排他的に予約してもよい。オペレーティング・システムベースのリソース予約又はハイパバイザベースのリソース予約とは違って、予約マネージャ１２６、１３２は、指定された時間期間の間予約されたプラットフォーム・リソースを排他的に妨げられないように制御しながら、仮想マシン３０６の移行プロセスを提供することができる。例えば、仮想マシン３０６の移行プロセスは、オペレーティング・システム、仮想マシン・モニタ３０２、又はハイパバイザにより妨げられることなく、又はそれらに取って代わられることなく、１以上のプロセッサ・コア１２２への排他的アクセスを有することができる。同様に、仮想マシン３０６の移行プロセスには、メモリ１３４、ある量の通信回路１３８のＩ／Ｏ帯域幅、及び／又は特定のＩ／Ｏハードウェア機能の一部への排他的アクセスが許可され得る。
【００３９】
ブロック４３２において、ソース・コンピュート・ノード１０２ａは、予約されたプラットフォーム・リソースを用いて、リクエストされた仮想マシン３０６の仮想マシン状態を宛先コンピュート・ノード１０２ｂに転送する。そうするために、ソース・コンピュート・ノード１０２ａは、反復的にメモリ・ページを宛先コンピュート・ノード１０２ｂに転送することができ、必要ならば、転送が完了する前に変化したメモリ・ページ（「ダーティ」ページ）を再送信することができる。ソース・コンピュート・ノード１０２ａは、転送時間を低減させるためにメモリ・ページをパケット化及び圧縮することができ、転送を完了するのに必要な任意の他の処理を実行することができる。仮想マシン３０６の状態の転送が完了した後、仮想マシン３０６は、ソース・コンピュート・ノード１０２ａ上で停止され、宛先コンピュート・ノード１０２ｂ上で再開される。仮想マシン３０６の状態の転送については、図５及び図６を参照して以下でさらに説明する。
【００４０】
仮想マシン３０６の状態を転送した後、ブロック４３４において、ソース・コンピュート・ノード１０２ａは、ブロック４３０において上述した予約されたプラットフォーム・リソースを解放する。いくつかの実施形態では、ソース・コンピュート・ノード１０２ａは、必要に応じてハードウェア予約マネージャ１２６、１３２を用いて、プラットフォーム・リソースを解放することができる。予約されたリソースを解放した後、方法４００は、さらなる移行リクエストを待つために、ブロック４０２にループ・バックする。
【００４１】
次に図５を参照すると、使用の際、ソース・コンピュート・ノード１０２ａは、仮想マシン状態を転送するための方法５００を実行することができる。方法５００は、上述した方法４００の一部として、例えば、ブロック４３４の全て又は一部として実行することができる。方法５００は、ブロック５０２で開始する。ブロック５０２において、ソース・コンピュート・ノード１０２ａは、予約されたプラットフォーム・リソースを用いて転送されるメモリ・ページを最適化する。ソース・コンピュート・ノード１０２ａは、送信のためのメモリ・ページを準備するために、メモリ・ページに対して、任意の処理、シリアル化、パケット化、又は他のアルゴリズムを実行することができる。ブロック５０４において、ソース・コンピュート・ノード１０２ａは、転送されるメモリ・ページを圧縮することができる。メモリ・ページを圧縮することは、高度にリソース集約型であり得る。したがって、メモリ・ページを圧縮することに対しては、専用プロセッサ１２０及び／若しくはプロセッサ・コア１２２、又は通信回路１３８の専用ハードウェア・アクセラレーテッド圧縮サポートを使用することが有効であり得る。
【００４２】
ブロック５０６において、ソース・コンピュート・ノード１０２ａは、メモリ・ページを宛先コンピュート・ノード１０２ｂに転送する。ソース・コンピュート・ノード１０２ａは、転送されるメモリ・ページを特定、選択、又は追跡するための任意の技術を使用することができる。例えば、ソース・コンピュート・ノード１０２ａは、全ての特定されたメモリ・ページを続けて送信し、次いで、ダーティ・ページを再送信することができる。ブロック５０８において、ソース・コンピュート・ノード１０２ａは、メモリ・ページの転送が完了したかどうかを判定する。ソース・コンピュート・ノード１０２ａが、残存するメモリ・ページを単一オペレーション（すなわち、「単一ショット」転送）で宛先コンピュート・ノード１０２ｂに転送することができたと判定したとき、転送は完了する。ソース・コンピュート・ノード１０２ａは、この判定、ダーティ・メモリ・ページの数、メモリ負荷（例えば、ページ・ダーティ・レート）、又はメモリ・ページを転送する残存時間に関連する任意の他のファクタを基礎とし得る。転送が完了していない場合、方法５００は、ブロック５０６にループ・バックして、メモリ・ページの転送を続ける。転送が完了した場合、方法５００は、ブロック５１０に進む。
【００４３】
ブロック５１０において、ソース・コンピュート・ノード１０２ａは、仮想マシン３０６を停止する。仮想マシン３０６が停止された後、仮想マシン３０６によりさらなる作業は実行されず、これは、新たなダーティ・ページが生成され得ないことを意味する。さらに、仮想マシン３０６が停止された後、仮想マシン３０６によりさらなるサービスは提供されない。したがって、仮想マシン３０６の移行のダウンタイムの期間は、仮想マシン３０６が停止されたときに開始する。
【００４４】
ブロック５１２において、ソース・コンピュート・ノード１０２ａは、予約されたプラットフォーム・リソースを用いて、残存するダーティ・メモリ・ページを宛先コンピュート・ノード１０２ｂに転送する。上述したように、転送は、単一オペレーションで実行され得る。いくつかの実施形態では、ブロック５１４において、ソース・コンピュート・ノード１０２ａは、転送する前に、ダーティ・メモリ・ページを圧縮することができる。例えば、ソース・コンピュート・ノード１０２ａは、ネットワーク１０６を介して送信されなければならないデータの量を低減させるために、差分圧縮を適用することができる。上述したように、ソース・コンピュート・ノード１０２ａは、専用プロセッサ・リソース及び／又はＩ／Ｏリソースを用いて圧縮を実行することができる。
【００４５】
ブロック５１６において、ソース・コンピュート・ノード１０２ａは、予約されたプラットフォーム・リソースを用いて、残存する仮想マシン３０６の状態を宛先コンピュート・ノード１０２ｂに転送する。例えば、ソース・コンピュート・ノード１０２ａは、仮想マシン３０６の仮想プロセッサ状態、又は仮想化されたエミュレートされたデバイス状態若しくは副次的に仮想化されたデバイス状態を転送することができる。仮想マシン３０６の状態の送信後、方法５００は完了する。ソース・コンピュート・ノード１０２ａは、予約されたリソースを解放し、図４を参照して上述した仮想マシン３０６の移行を完了することができる。
【００４６】
次に図６を参照すると、使用の際、宛先コンピュート・ノード１０２ｂは、仮想マシン状態を受信するための方法６００を実行することができる。方法６００は、ブロック６０２で開始する。ブロック６０２において、宛先コンピュート・ノード１０２ｂは、ソース・コンピュート・ノード１０２ａから宛先コンピュート・ノード１０２ｂに仮想マシン３０６を移行するためのリクエストが受信されたかどうかを判定する。リクエストは、ソース・コンピュート・ノード１０２ａ、データ・センタ・マネージャ１０４、又はこれらのデバイスの組合せから生成され得る。リクエストが受信されていない場合、方法６００は、ブロック６０２にループ・バックして、移行リクエストのモニタリングを続ける。移行リクエストが受信された場合、方法６００は、ブロック６０４に進む。
【００４７】
ブロック６０４において、宛先コンピュート・ノード１０２ｂは、ソース・コンピュート・ノード１０２ａからメモリ・ページを受信する。上述したように、受信されたメモリ・ページは、仮想マシン３０６の仮想メモリ状態、仮想プロセッサ状態、及び／又はエミュレートされた仮想デバイス状態若しくは副次的に仮想化された仮想デバイス状態に対応し得る。メモリ・ページが受信されると、メモリ・ページは、メモリ１３４にコピーされ、伸張され、あるいは仮想マシン３０６による使用のために準備される。ブロック６０６において、宛先コンピュート・ノード１０２ｂは、メモリ・ページの転送が完了したかどうかを判定する。転送は、ソース・コンピュート・ノード１０２ａから受信されたインジケーションに基づいて完了する。転送が完了していない場合、方法６００は、ブロック６０４にループ・バックして、メモリ・ページの受信を続ける。転送が完了した場合、方法６００は、ブロック６０８に進む。
【００４８】
ブロック６０８において、宛先コンピュート・ノード１０２ｂは、ソース・コンピュート・ノード１０２ａから残存するダーティ・メモリ・ページを受信する。ダーティ・メモリ・ページの送信は、図５のブロック５１２に関してすでに説明されている。ブロック６１０において、宛先コンピュート・ノード１０２ｂは、ソース・コンピュート・ノード１０２ａから仮想マシン３０６の状態を受信する。仮想マシン３０６の状態の送信は、図５のブロック５１６に関してすでに説明されている。
【００４９】
全てのメモリ・ページ及び仮想マシン３０６の状態を受信した後、ブロック６１２において、宛先コンピュート・ノード１０２ｂは、仮想マシン３０６を再開する。仮想マシン３０６が再開された後、仮想マシン３０６は、完全に動作中であり、リクエストをサービスすることができる。したがって、移行ダウンタイム及び総移行時間は、仮想マシン３０６が宛先コンピュート・ノード１０２ｂにより再開されたときに終了する。仮想マシン３０６を再開した後、方法６００は、さらなる移行リクエストを待つために、ブロック６０２にループ・バックする。
【００５０】
次に図７を参照すると、使用の際、ソース・コンピュート・ノード１０２ａは、サービス・レベル要求についてネゴシエートするための方法７００を実行することができる。方法７００は、上述した方法４００の一部として、例えば、ブロック４２８の全て又は一部として実行することができる。方法７００は、ブロック７０２で開始する。ブロック７０２において、ソース・コンピュート・ノード１０２ａは、ソース・コンピュート・ノード１０２ａの現在利用可能なプラットフォーム・リソースに基づいて、達成可能なサービス・レベルを判定する。例えば、ソース・コンピュート・ノード１０２ａは、転送すべきメモリ・ページの量、現在のメモリ負荷若しくは推定されるメモリ負荷、又はコンピュート・ノード１０２の現在利用可能なプラットフォーム・リソース（例えば、現在利用可能な、プロセッサ・リソース、メモリ・リソース、又はＩ／Ｏリソース）と比較して仮想マシン３０６を移行するのに必要とされる処理量を制御する他のファクタに基づいて、達成可能なサービス・レベルを判定することができる。達成可能なサービス・レベルは、パフォーマンス限界及び／又は信頼性限界、閾、メトリック、又は仮想マシン３０６を移行する間に達成可能であると予測される他の基準の任意の組合せとして表現され得る。いくつかの実施形態では、ブロック７０４において、ソース・コンピュート・ノード１０２ａは、達成可能な最大ダウンタイムを判定することができる。いくつかの実施形態では、ブロック７０６において、コンピュート・ノード１０２ａは、達成可能な最大総移行時間を判定することができる。
【００５１】
ブロック７０８において、ソース・コンピュート・ノード１０２ａは、達成可能なサービス・レベルをデータ・センタ・マネージャ１０４に送信する。図８を参照して以下でさらに説明するように、データ・センタ・マネージャ１０４は、達成可能なサービス・レベルが許容可能であるかどうかを判定することができる。ブロック７１０において、ソース・コンピュート・ノード１０２ａは、達成可能なサービス・レベルが許容可能であるかどうか、したがって、肯定的なものであるか否定的なものであるかを示すレスポンスをデータ・センタ・マネージャ１０４から受信する。ブロック７１２において、コンピュート・ノード１０２ａは、レスポンスが肯定的であるかどうかを判定する。肯定的ではない場合、方法７００は、ブロック７１４に進み、ブロック７１４において、ソース・コンピュート・ノード１０２ａは、仮想マシン３０６の移行をキャンセルする。移行をキャンセルした後、方法７００、図４を参照して上述した方法４００、又は任意の他の仮想マシン３０６の移行プロセスは、終了し得る。ブロック７１２に戻ると、データ・センタ・マネージャ１０４からのレスポンスが肯定的なものであった場合、方法７００は、ブロック７１６に進む。
【００５２】
ブロック７１６において、ソース・コンピュート・ノード１０２ａは、達成可能なサービス・レベルにおいて、仮想マシン３０６を移行する。図５を参照して上述したように、ソース・コンピュート・ノード１０２ａは、達成可能なサービス・レベルにおいて仮想マシン３０６の移行を実行するために、現在利用可能なプラットフォーム・リソースを予約することができる。仮想マシン３０６の移行は、図４〜図６を参照して上述したように進み得る。
【００５３】
次に図８を参照すると、使用の際、データ・センタ・マネージャ１０４は、サービス・レベル要求についてネゴシエートするための方法８００を実行することができる。方法８００は、ブロック８０２で開始する。ブロック８０２において、データ・センタ・マネージャ１０４は、移行リクエストを受信したかどうかを判定する。受信していない場合、方法８００は、ブロック８０２にループ・バックして、移行リクエストのモニタリングを続ける。移行リクエストが受信された場合、方法８００は、ブロック８０４に進む。
【００５４】
ブロック８０４において、データ・センタ・マネージャ１０４は、仮想マシン移行のためのリクエストを受信する。リクエストは、システム１００の管理者等の、データ・センタ・マネージャ１０４のユーザから受信されてもよいし、ユーザの介入なく、例えば、データ・センタ・マネージャ１０４の負荷分散プロセスにより生成されてもよい。仮想マシン移行のためのリクエストは、移行される仮想マシン３０６、ソース・コンピュート・ノード１０２ａ、宛先コンピュート・ノード１０２ｂ、及び移行の１以上のサービス・レベル要求を指定し得る。サービス・レベル要求は、仮想マシン３０６をソース・コンピュート・ノード１０２ａから宛先コンピュート・ノード１０２ｂに移行するときに達成される、任意の制限、閾、メトリック、又は、他のパフォーマンス基準及び／若しくは信頼性基準を指定し得る。いくつかの実施形態では、ブロック８０６において、データ・センタ・マネージャ１０４は、リクエストとともに、ダウンタイム要求を受信することができる。ダウンタイム要求は、仮想マシン３０６が移行中に停止される、あるいは利用可能でない最大時間を指定し得る。例えば、いくつかの通信ネットワーク機能仮想化（ＮＦＶ）ワークロードにおいて、ダウンタイム要求は、マイクロ秒又はミリ秒として表現され得る。いくつかの実施形態では、ブロック８０８において、データ・センタ・マネージャ１０４は、移行時間要求を受信することができる。移行時間要求は、最大総移行時間を指定し得る、すなわち、ソース・コンピュート・ノード１０２ａにより移行のためのリクエストを受信してから宛先コンピュート・ノード１０２ｂ上で仮想マシン３０６を起動するまでの最大時間を指定し得る。
【００５５】
ブロック８１０において、データ・センタ・マネージャ１０４は、サービス・レベル要求を含む、仮想マシン３０６の移行リクエストをソース・コンピュート・ノード１０２ａに送信する。図４及び図７を参照して上述したように、ソース・コンピュート・ノード１０２ａは、ソース・コンピュート・ノード１０２ａの現在利用可能なプラットフォーム・リソースを用いてサービス・レベル要求を達成することができるかどうかを判定することができる。達成することができない場合、ソース・コンピュート・ノード１０２ａは、達成可能なサービス・レベルをデータ・センタ・マネージャ１０４に送信することができる。ブロック８１２において、データ・センタ・マネージャ１０４は、ソース・コンピュート・ノード１０２ａからのレスポンスをモニタリングする。ブロック８１４において、データ・センタ・マネージャ１０４は、レスポンスが受信されたかどうかを判定する。レスポンスが受信されていない場合、方法８００は、ブロック８０２にループ・バックして、仮想マシン移行コマンドのモニタリングを続ける。そのような状況において、ソース・コンピュート・ノード１０２ａは、サービス・レベル要求を達成することができ、仮想マシン３０６の移行に進むことができる。ブロック８１４に戻ると、レスポンスが、ソース・コンピュート・ノード１０２ａから受信された場合、方法８００は、ブロック８１６に進む。
【００５６】
ブロック８１６において、データ・センタ・マネージャ１０４は、ソース・コンピュート・ノード１０２ａから達成可能なサービス・レベルを受信する。上述したように、達成可能なサービス・レベルは、パフォーマンス限界及び／又は信頼性限界、閾、メトリック、又は仮想マシン３０６を移行する間に達成可能であると予測される他の基準の任意の組合せとして表現され得る。例えば、達成可能なサービス・レベルは、最大ダウンタイム及び／又は最大総移行時間を含み得る。
【００５７】
ブロック８１８において、データ・センタ・マネージャ１０４は、ソース・コンピュート・ノード１０２ａから受信した達成可能なサービス・レベルが許容可能であるかどうかを判定する。データ・センタ・マネージャ１０４は、サービス・レベルが許容可能であるかどうかを判定するための任意の基準を使用することができる。許容可能なサービス・レベルは、移行される特定の仮想マシン３０６のワークロードに依存し得る。例えば、データ・センタ・マネージャ１０４は、達成可能なサービス・レベルが、通信ネットワーク機能仮想化（ＮＦＶ）ワークロード、データ・センタのワークロード、又は他の適切なワークロードの要件を満たすかどうかを判定することができる。いくつかの実施形態では、ブロック８２０において、データ・センタ・マネージャ１０４は、達成可能なサービス・レベルが許容可能であるかどうかを判定するために、ユーザに促すことができる。
【００５８】
ブロック８２２において、データ・センタ・マネージャ１０４は、達成可能なサービス・レベルが許容可能であるかどうかを示すレスポンスをソース・コンピュート・ノード１０２ａに送信する。ブロック８２４において、データ・センタ・マネージャ１０４は、達成可能なサービス・レベルが許容可能であるかどうかに基づいて分岐する。許容可能である場合、方法８００は、ブロック８０２にループ・バックして、仮想マシン移行コマンドのモニタリングを続ける。許容可能でない場合、方法８００は、ブロック８２６に進む。ブロック８２６において、データ・センタ・マネージャ１０４は、ソース・コンピュート・ノード１０２ａから宛先コンピュート・ノード１０２ｂへの仮想マシン３０６の移行をキャンセルする。仮想マシン３０６の移行をキャンセルした後、データ・センタ・マネージャ１０４は、同じコンピュート・ノード１０２又は異なるコンピュート・ノード１０２上の移行を再スケジュール、再送信、又は再実行することができる。追加的に又は代替的に、いくつかの状況において、データ・センタ・マネージャ１０４は、移行することなく、仮想マシン３０６を現在のコンピュート・ノード１０２上で継続することを可能にしてもよい。移行をキャンセルした後、方法８００は、ブロック８０２にループ・バックして、さらなる移行コマンドのモニタリングを続ける。
【００５９】
実施例
本明細書で開示した技術の例示的な実施例を以下で提供する。本技術の実施形態は、以下で説明する実施例のうちの１以上、及び任意の組合せを含み得る。
【００６０】
実施例１は、仮想マシンを移行するためのコンピュート・ノードを含む。当該コンピュート・ノードは、仮想マシンを宛先コンピュート・ノードに移行するためのリクエストを受信する仮想マシン移行モジュールであって、前記リクエストは、サービス・レベル要求を含む、仮想マシン移行モジュールと、前記仮想マシンを移行するのに必要とされるプラットフォーム・リソースを判定し、前記サービス・レベル要求を満たすかどうかを判定するサービス・レベル管理モジュールと、（ｉ）前記必要とされるプラットフォーム・リソースが当該コンピュート・ノードに現在利用可能であるかどうかを判定し、（ｉｉ）前記必要とされるプラットフォーム・リソースが現在利用可能であるという判定に応じて、予測される移行時間の間、前記必要とされるプラットフォーム・リソースを予約する、リソース管理モジュールと、を備え、前記仮想マシン移行モジュールは、さらに、前記必要とされるプラットフォーム・リソースの予約に応じて、前記の予約したプラットフォーム・リソースを用いて、前記仮想マシンを前記宛先コンピュート・ノードに移行する。
【００６１】
実施例２は、実施例１の主題を含み、当該コンピュート・ノードは、ハードウェア・リソース・モニタをさらに備え、前記必要とされるプラットフォーム・リソースが当該コンピュート・ノードに現在利用可能であるかどうかを前記判定することは、前記ハードウェア・リソース・モニタに問い合わせることを含む。
【００６２】
実施例３は、実施例１又は実施例２の主題を含み、前記ハードウェア・リソース・モニタは、当該コンピュート・ノードのプロセッサのハードウェア・リソース・モニタ又は当該コンピュート・ノードのＩ／Ｏサブシステムのハードウェア・リソース・モニタを含む。
【００６３】
実施例４は、実施例１〜実施例３のいずれかの主題を含み、当該コンピュート・ノードは、ハードウェア予約マネージャをさらに備え、前記必要とされるプラットフォーム・リソースを前記予約することは、前記ハードウェア予約マネージャを用いて前記必要とされるプラットフォーム・リソースを予約することを含む。
【００６４】
実施例５は、実施例１〜実施例４のいずれかの主題を含み、前記ハードウェア予約マネージャは、当該コンピュート・ノードのプロセッサのハードウェア予約マネージャ又は当該コンピュート・ノードのＩ／Ｏサブシステムのハードウェア予約マネージャを含む。
【００６５】
実施例６は、実施例１〜実施例５のいずれかの主題を含み、前記サービス・レベル要求は、最大ダウンタイム要求又は最大総移行時間要求を含む。
【００６６】
実施例７は、実施例１〜実施例６のいずれかの主題を含み、前記サービス・レベル要求は、最大ネットワーク帯域幅使用要求を含む。
【００６７】
実施例８は、実施例１〜実施例７のいずれかの主題を含み、前記プラットフォーム・リソースは、プロセッサ・リソース、メモリ・リソース、及びＩ／Ｏリソースのうち少なくとも１つを含む。
【００６８】
実施例９は、実施例１〜実施例８のいずれかの主題を含み、前記リソース管理モジュールは、さらに、前記必要とされるプラットフォーム・リソースが当該コンピュート・ノードに現在利用可能でないという判定に応じて、当該コンピュート・ノードの現在利用可能なプラットフォーム・リソースを判定し、前記サービス・レベル管理モジュールは、さらに、前記現在利用可能なプラットフォーム・リソースに基づいて、前記仮想マシンを移行するための前記リクエストに関する達成可能なサービス・レベルを判定し、前記仮想マシン移行モジュールは、さらに、（ｉ）前記達成可能なサービス・レベルをデータ・センタ・マネージャに送信し、（ｉｉ）前記達成可能なサービス・レベルに応じて、前記データ・センタ・マネージャからレスポンスを受信し、前記リソース管理モジュールは、さらに、前記データ・センタ・マネージャからの肯定的なレスポンスの受信に応じて、前記予測される移行時間の間、前記現在利用可能なプラットフォーム・リソースを予約する。
【００６９】
実施例１０は、実施例１〜実施例９のいずれかの主題を含み、前記仮想マシン移行モジュールは、さらに、前記データ・センタ・マネージャからの否定的なレスポンスの受信に応じて、前記仮想マシンを移行するための前記リクエストをキャンセルする。
【００７０】
実施例１１は、実施例１〜実施例１０のいずれかの主題を含み、当該コンピュート・ノードは、ハードウェア・リソース・モニタをさらに備え、前記現在利用可能なプラットフォーム・リソースを前記判定することは、前記ハードウェア・リソース・モニタに問い合わせることを含む。
【００７１】
実施例１２は、実施例１〜実施例１１のいずれかの主題を含み、前記ハードウェア・リソース・モニタは、当該コンピュート・ノードのプロセッサのハードウェア・リソース・モニタ又は当該コンピュート・ノードのＩ／Ｏサブシステムのハードウェア・リソース・モニタを含む。
【００７２】
実施例１３は、実施例１〜実施例１２のいずれかの主題を含み、当該コンピュート・ノードは、ハードウェア予約マネージャをさらに備え、前記現在利用可能なプラットフォーム・リソースを前記予約することは、前記ハードウェア予約マネージャを用いて前記現在利用可能なプラットフォーム・リソースを予約することを含む。
【００７３】
実施例１４は、実施例１〜実施例１３のいずれかの主題を含み、前記ハードウェア予約マネージャは、当該コンピュート・ノードのプロセッサのハードウェア予約マネージャ又は当該コンピュート・ノードのＩ／Ｏサブシステムのハードウェア予約マネージャを含む。
【００７４】
実施例１５は、仮想マシンを移行するためのデータ・センタ・マネージャを含む。当該データ・センタ・マネージャは、ソース・コンピュート・ノードの仮想マシンを宛先コンピュート・ノードに移行するためのリクエストを、当該データ・センタ・マネージャから前記ソース・コンピュート・ノードに送信する仮想マシン・スケジューラ・モジュールであって、前記リクエストは、前記ソース・コンピュート・ノードにより満たされるサービス・レベル要求を含む、仮想マシン・スケジューラ・モジュールと、前記リクエストの送信に応じて、前記ソース・コンピュート・ノードから達成可能なサービス・レベルを受信し、ここで、前記達成可能なサービス・レベルは、前記ソース・コンピュート・ノードの現在利用可能なプラットフォーム・リソースを用いて前記仮想マシンを移行するのに達成可能なサービス・レベルを示す、前記達成可能なサービス・レベルが許容可能であるかどうかを判定し、前記達成可能なサービス・レベルが許容可能であるという判定に応じて、肯定的なレスポンスを前記ソース・コンピュート・ノードに送信する、サービス・レベル・ネゴシエーション・モジュールと、を備える。
【００７５】
実施例１６は、実施例１５の主題を含み、前記サービス・レベル・ネゴシエーション・モジュールは、さらに、前記達成可能なサービス・レベルが許容可能でないという判定に応じて、否定的なレスポンスを前記ソース・コンピュート・ノードに送信する。
【００７６】
実施例１７は、実施例１５又は実施例１６の主題を含み、前記達成可能なサービス・レベルは、最大ダウンタイム又は最大総移行時間を含む。
【００７７】
実施例１８は、実施例１５〜実施例１７のいずれかの主題を含み、前記達成可能なサービス・レベル要求は、最大ネットワーク帯域幅使用要求を含む。
【００７８】
実施例１９は、仮想マシンを移行するための方法を含む。当該方法は、コンピュート・ノードにより、仮想マシンを宛先コンピュート・ノードに移行するためのリクエストを受信する受信ステップであって、前記リクエストは、サービス・レベル要求を含む、受信ステップと、前記コンピュート・ノードにより、前記仮想マシンを移行するのに必要とされるプラットフォーム・リソースを判定し、前記サービス・レベル要求を満たすかどうかを判定するステップと、前記コンピュート・ノードにより、前記必要とされるプラットフォーム・リソースが前記コンピュート・ノードに現在利用可能であるかどうかを判定する判定ステップと、前記コンピュート・ノードにより、前記必要とされるプラットフォーム・リソースが現在利用可能であるという判定に応じて、予測される移行時間の間、前記必要とされるプラットフォーム・リソースを予約する予約ステップと、前記コンピュート・ノードにより、前記必要とされるプラットフォーム・リソースの予約に応じて、前記の予約したプラットフォーム・リソースを用いて、前記仮想マシンを前記宛先コンピュート・ノードに移行するステップと、を含む。
【００７９】
実施例２０は、実施例１９の主題を含み、前記判定ステップは、前記コンピュート・ノードのハードウェア・リソース・モニタに問い合わせる問い合わせステップを含む。
【００８０】
実施例２１は、実施例１９又は実施例２０の主題を含み、前記問い合わせステップは、前記コンピュート・ノードのプロセッサのハードウェア・リソース・モニタに問い合わせるステップ又は前記コンピュート・ノードのＩ／Ｏサブシステムのハードウェア・リソース・モニタに問い合わせるステップを含む。
【００８１】
実施例２２は、実施例１９〜実施例２１のいずれかの主題を含み、前記予約ステップは、前記コンピュート・ノードのハードウェア予約マネージャを用いて、前記必要とされるプラットフォーム・リソースを予約するステップを含む。
【００８２】
実施例２３は、実施例１９〜実施例２２のいずれかの主題を含み、ハードウェア予約マネージャを前記用いることは、前記コンピュート・ノードのプロセッサのハードウェア予約マネージャを用いること又は前記コンピュート・ノードのＩ／Ｏサブシステムのハードウェア予約マネージャを用いることを含む。
【００８３】
実施例２４は、実施例１９〜実施例２３のいずれかの主題を含み、前記サービス・レベル要求は、最大ダウンタイム要求又は最大総移行時間要求を含む。
【００８４】
実施例２５は、実施例１９〜実施例２４のいずれかの主題を含み、前記サービス・レベル要求は、最大ネットワーク帯域幅使用要求を含む。
【００８５】
実施例２６は、実施例１９〜実施例２５のいずれかの主題を含み、前記プラットフォーム・リソースは、プロセッサ・リソース、メモリ・リソース、及びＩ／Ｏリソースのうち少なくとも１つを含む。
【００８６】
実施例２７は、実施例１９〜実施例２６のいずれかの主題を含み、当該方法は、前記必要とされるプラットフォーム・リソースが前記コンピュート・ノードに現在利用可能でないという判定に応じて、前記コンピュート・ノードにより、前記コンピュート・ノードの現在利用可能なプラットフォーム・リソースを判定するステップと、前記コンピュート・ノードにより、前記現在利用可能なプラットフォーム・リソースに基づいて、前記仮想マシンを移行するための前記リクエストに関する達成可能なサービス・レベルを判定するステップと、前記コンピュート・ノードにより、前記達成可能なサービス・レベルをデータ・センタ・マネージャに送信するステップと、前記コンピュート・ノードにより、前記達成可能なサービス・レベルに応じて、前記データ・センタ・マネージャからレスポンスを受信するステップと、前記コンピュート・ノードにより、前記データ・センタ・マネージャからの肯定的なレスポンスの受信に応じて、前記予測される移行時間の間、前記現在利用可能なプラットフォーム・リソースを予約するステップと、をさらに含む。
【００８７】
実施例２８は、実施例１９〜実施例２７のいずれかの主題を含み、当該方法は、前記コンピュート・ノードにより、前記データ・センタ・マネージャからの否定的なレスポンスの受信に応じて、前記仮想マシンを移行するための前記リクエストをキャンセルするステップをさらに含む。
【００８８】
実施例２９は、実施例１９〜実施例２８のいずれかの主題を含み、現在利用可能なプラットフォーム・リソースを前記判定するステップは、前記コンピュート・ノードのハードウェア・リソース・モニタに問い合わせるステップを含む。
【００８９】
実施例３０は、実施例１９〜実施例２９のいずれかの主題を含み、前記コンピュート・ノードのハードウェア・リソース・モニタに前記問い合わせるステップは、前記コンピュート・ノードのプロセッサのハードウェア・リソース・モニタに問い合わせるステップ又は前記コンピュート・ノードのＩ／Ｏサブシステムのハードウェア・リソース・モニタに問い合わせるステップを含む。
【００９０】
実施例３１は、実施例１９〜実施例３０のいずれかの主題を含み、前記現在利用可能なプラットフォーム・リソースを前記予約するステップは、前記コンピュート・ノードのハードウェア予約マネージャを用いて、前記現在利用可能なプラットフォーム・リソースを予約するステップを含む。
【００９１】
実施例３２は、実施例１９〜実施例３１のいずれかの主題を含み、ハードウェア予約マネージャを前記用いることは、前記コンピュート・ノードのプロセッサのハードウェア予約マネージャを用いること又は前記コンピュート・ノードのＩ／Ｏサブシステムのハードウェア予約マネージャを用いることを含む。
【００９２】
実施例３３は、仮想マシンを移行するための方法を含む。当該方法は、データ・センタ・マネージャにより、ソース・コンピュート・ノードの仮想マシンを宛先コンピュート・ノードに移行するためのリクエストを、前記ソース・コンピュート・ノードに送信する送信ステップであって、前記リクエストは、前記ソース・コンピュート・ノードにより満たされるサービス・レベル要求を含む、送信ステップと、前記データ・センタ・マネージャにより、前記リクエストの送信に応じて、前記ソース・コンピュート・ノードから達成可能なサービス・レベルを受信する受信ステップであって、前記達成可能なサービス・レベルは、前記ソース・コンピュート・ノードの現在利用可能なプラットフォーム・リソースを用いて前記仮想マシンを移行するのに達成可能なサービス・レベルを示す、受信ステップと、前記データ・センタ・マネージャにより、前記達成可能なサービス・レベルが許容可能であるかどうかを判定するステップと、前記データ・センタ・マネージャにより、前記達成可能なサービス・レベルが許容可能であるという判定に応じて、肯定的なレスポンスを前記ソース・コンピュート・ノードに送信するステップと、を含む。
【００９３】
実施例３４は、実施例３３の主題を含み、当該方法は、前記データ・センタ・マネージャにより、前記達成可能なサービス・レベルが許容可能でないという判定に応じて、否定的なレスポンスを前記ソース・コンピュート・ノードに送信するステップをさらに含む。
【００９４】
実施例３５は、実施例３３又は実施例３４の主題を含み、前記達成可能なサービス・レベルは、最大ダウンタイム又は最大総移行時間を含む。
【００９５】
実施例３６は、実施例３３〜実施例３５のいずれかの主題を含み、前記達成可能なサービス・レベル要求は、最大ネットワーク帯域幅使用要求を含む。
【００９６】
実施例３７は、コンピューティング・デバイスを含む。当該コンピューティング・デバイスは、プロセッサと、複数の命令を記憶したメモリであって、前記複数の命令が前記プロセッサにより実行されたとき、前記複数の命令は、当該コンピューティング・デバイスに、実施例１９〜実施例３６いずれかの方法を実行させる、メモリと、を備える。
【００９７】
実施例３８は、複数の命令を記憶した１以上のマシン読み取り可能な記憶媒体を含む。前記複数の命令が実行されたことに応じて、前記複数の命令は、コンピューティング・デバイスに、実施例１９〜実施例３６いずれかの方法を実行させる。
【００９８】
実施例３９は、コンピューティング・デバイスを含む。当該コンピューティング・デバイスは、実施例１９〜実施例３６いずれかの方法を実行する手段を備える。
【００９９】
実施例４０は、仮想マシンを移行するためのコンピュート・ノードを含む。当該コンピュート・ノードは、仮想マシンを宛先コンピュート・ノードに移行するためのリクエストを受信する第１受信手段であって、前記リクエストは、サービス・レベル要求を含む、第１受信手段と、前記仮想マシンを移行するのに必要とされるプラットフォーム・リソースを判定し、前記サービス・レベル要求を満たすかどうかを判定する第１判定手段と、前記必要とされるプラットフォーム・リソースが当該コンピュート・ノードに現在利用可能であるかどうかを判定する第２判定手段と、前記必要とされるプラットフォーム・リソースが現在利用可能であるという判定に応じて、予測される移行時間の間、前記必要とされるプラットフォーム・リソースを予約する第１予約手段と、前記必要とされるプラットフォーム・リソースの予約に応じて、前記の予約したプラットフォーム・リソースを用いて、前記仮想マシンを前記宛先コンピュート・ノードに移行する移行手段と、を備える。
【０１００】
実施例４１は、実施例４０の主題を含み、前記第２判定手段は、当該コンピュート・ノードのハードウェア・リソース・モニタに問い合わせる問い合わせ手段を含む。
【０１０１】
実施例４２は、実施例４０又は実施例４１の主題を含み、前記問い合わせ手段は、当該コンピュート・ノードのプロセッサのハードウェア・リソース・モニタに問い合わせる手段又は当該コンピュート・ノードのＩ／Ｏサブシステムのハードウェア・リソース・モニタに問い合わせる手段を含む。
【０１０２】
実施例４３は、実施例４０〜実施例４２のいずれかの主題を含み、前記第１予約手段は、前記ハードウェア予約マネージャを用いて前記必要とされるプラットフォーム・リソースを予約する手段を含む。
【０１０３】
実施例４４は、実施例４０〜実施例４３のいずれかの主題を含み、前記ハードウェア予約マネージャを用いて前記必要とされるプラットフォーム・リソースを予約する前記手段は、当該コンピュート・ノードのプロセッサのハードウェア予約マネージャを用いる手段又は当該コンピュート・ノードのＩ／Ｏサブシステムのハードウェア予約マネージャを用いる手段を含む。
【０１０４】
実施例４５は、実施例４０〜実施例４４のいずれかの主題を含み、前記サービス・レベル要求は、最大ダウンタイム要求又は最大総移行時間要求を含む。
【０１０５】
実施例４６は、実施例４０〜実施例４５のいずれかの主題を含み、前記サービス・レベル要求は、最大ネットワーク帯域幅使用要求を含む。
【０１０６】
実施例４７は、実施例４０〜実施例４６のいずれかの主題を含み、前記プラットフォーム・リソースは、プロセッサ・リソース、メモリ・リソース、及びＩ／Ｏリソースのうち少なくとも１つを含む。
【０１０７】
実施例４８は、実施例４０〜実施例４７のいずれかの主題を含み、当該コンピュート・ノードは、前記必要とされるプラットフォーム・リソースが当該コンピュート・ノードに現在利用可能でないという判定に応じて、当該コンピュート・ノードの現在利用可能なプラットフォーム・リソースを判定する第３判定手段と、前記現在利用可能なプラットフォーム・リソースに基づいて、前記仮想マシンを移行するための前記リクエストに関する達成可能なサービス・レベルを判定する第４判定手段と、前記達成可能なサービス・レベルをデータ・センタ・マネージャに送信する送信手段と、前記達成可能なサービス・レベルに応じて、前記データ・センタ・マネージャからレスポンスを受信する第２受信手段と、前記データ・センタ・マネージャからの肯定的なレスポンスの受信に応じて、前記予測される移行時間の間、前記現在利用可能なプラットフォーム・リソースを予約する第２予約手段と、をさらに備える。
【０１０８】
実施例４９は、実施例４０〜実施例４８のいずれかの主題を含み、当該コンピュート・ノードは、前記データ・センタ・マネージャからの否定的なレスポンスの受信に応じて、前記仮想マシンを移行するための前記リクエストをキャンセルするキャンセル手段をさらに備える。
【０１０９】
実施例５０は、実施例４０〜実施例４９のいずれかの主題を含み、前記第３判定手段は、当該コンピュート・ノードのハードウェア・リソース・モニタに問い合わせる手段を含む。
【０１１０】
実施例５１は、実施例４０〜実施例５０のいずれかの主題を含み、ハードウェア・リソース・モニタに問い合わせる前記手段は、当該コンピュート・ノードのプロセッサのハードウェア・リソース・モニタに問い合わせる手段又は当該コンピュート・ノードのＩ／Ｏサブシステムのハードウェア・リソース・モニタに問い合わせる手段を含む。
【０１１１】
実施例５２は、実施例４０〜実施例５１のいずれかの主題を含み、前記第２予約手段は、当該コンピュート・ノードのハードウェア予約マネージャを用いて前記現在利用可能なプラットフォーム・リソースを予約する手段を含む。
【０１１２】
実施例５３は、実施例４０〜実施例５２のいずれかの主題を含み、前記ハードウェア予約マネージャを用いて前記現在利用可能なプラットフォーム・リソースを予約する前記手段、当該コンピュート・ノードのプロセッサのハードウェア予約マネージャを用いる手段又は当該コンピュート・ノードのＩ／Ｏサブシステムのハードウェア予約マネージャを用いる手段を含む。
【０１１３】
実施例５４は、仮想マシンを移行するためのデータ・センタ・マネージャを含む。当該データ・センタ・マネージャは、ソース・コンピュート・ノードの仮想マシンを宛先コンピュート・ノードに移行するためのリクエストを、前記ソース・コンピュート・ノードに送信する第１送信手段であって、前記リクエストは、前記ソース・コンピュート・ノードにより満たされるサービス・レベル要求を含む、第１送信手段と、前記リクエストの送信に応じて、前記ソース・コンピュート・ノードから達成可能なサービス・レベルを受信する受信手段であって、前記達成可能なサービス・レベルは、前記ソース・コンピュート・ノードの現在利用可能なプラットフォーム・リソースを用いて前記仮想マシンを移行するのに達成可能なサービス・レベルを示す、受信手段と、前記達成可能なサービス・レベルが許容可能であるかどうかを判定する判定手段と、前記達成可能なサービス・レベルが許容可能であるという判定に応じて、肯定的なレスポンスを前記ソース・コンピュート・ノードに送信する第２送信手段と、を備える。
【０１１４】
実施例５５は、実施例５４の主題を含み、当該データ・センタ・マネージャは、前記達成可能なサービス・レベルが許容可能でないという判定に応じて、否定的なレスポンスを前記ソース・コンピュート・ノードに送信する第３送信手段をさらに備える。
【０１１５】
実施例５６は、実施例５４又は実施例５５の主題を含み、前記達成可能なサービス・レベルは、最大ダウンタイム又は最大総移行時間を含む。
【０１１６】
実施例５７は、実施例５４〜実施例５６のいずれかの主題を含み、前記達成可能なサービス・レベル要求は、最大ネットワーク帯域幅使用要求を含む。
【符号の説明】
【０１１７】
１０２  コンピュート・ノード
１０２ａ  ソース・コンピュート・ノード
１０２ｂ  宛先コンピュート・ノード
１０４  データ・センタ・マネージャ
１０６  ネットワーク
１２０、１４０  プロセッサ
１２２  プロセッサ・コア
１２４、１３０  リソース・モニタ
１２６、１３２  予約マネージャ
１２８、１４２  Ｉ／Ｏサブシステム
１３４、１４４  メモリ
１３６、１４６  データ・ストレージ・デバイス
１３８、１４８  通信回路
３０２  仮想マシン・モニタ
３０４  仮想マシン移行モジュール
３０６  仮想マシン
３０８  サービス・レベル管理モジュール
３１０  リソース管理モジュール
３４２  仮想マシン・スケジューラ・モジュール
３４４  サービス・レベル・ネゴシエーション・モジュール
【図１】
0006005795.tif 000002
【図２】
0006005795.tif 000003
【図３】
0006005795.tif 000004
【図４】
0006005795.tif 000005
【図５】
0006005795.tif 000006
【図６】
0006005795.tif 000007
【図７】
0006005795.tif 000008
【図８】
0006005795.tif 000009