(57)【要約】【課題】  効率的な仮想マシンデプロイ及び管理エンジンを提供する。【解決手段】仮想マシンデプロイ及び管理エンジンは、デプロイ時間マトリクスに基づいて、仮想マシンを物理ホストコンピュータにデプロイする。デプロイ時間マトリクスは、仮想マシンをあらゆるホストコンピュータからあらゆる他のホストコンピュータにクローニング又はデプロイするのに使用される大まかな時間量を指定する。仮想マシンデプロイ及び管理エンジンは、デプロイ時間に基づいてデプロイ経路を選択し、クローン動作又はデプロイ動作を実行する。【選択図】      図６
2015046159.tif 000002
【特許請求の範囲】
【請求項１】
計算システムであって、
ソースホストコンピュータ及び１つ以上のターゲットホストコンピュータを含む複数のホストコンピュータと、
前記複数のホストコンピュータを接続するネットワークと、
前記複数のホストコンピュータへの仮想マシンのデプロイを管理するように構成される管理サーバと、
を備え、前記管理サーバは、
前記ソースホストコンピュータに常駐する仮想マシンを前記ターゲットホストコンピュータにデプロイする要求を受信すること、
前記複数のホストコンピュータ間でのデプロイ時間を決定すること、
決定されるデプロイ時間に基づいて、ソースホストコンピュータから複数のターゲットホストコンピュータのうちの第１のターゲットホストコンピュータへの経路を決定すること、
前記決定されたデプロイ時間に基づいて、仮想マシンのコピーとして、前記ソースホストコンピュータから第１のターゲットホストコンピュータに第１の仮想マシンコピーをデプロイすること、
を行うように構成される、計算システム。
【請求項２】
前記管理サーバは、
前記第１の仮想マシンコピーが前記第１のターゲットホストコンピュータにデプロイされた後、前記デプロイされた第１の仮想マシンコピーからローカルにデプロイし、第２の仮想マシンコピーを前記第１のターゲットホストコンピュータにデプロイするように更に構成される、請求項１に記載の計算システム。
【請求項３】
前記第１の仮想マシンコピーは、前記第１のターゲットホストコンピュータの第１のデータ記憶装置に記憶され、前記管理サーバは、
前記第１のデータ記憶装置からの前記第１の仮想マシンコピーを使用して、前記第１のターゲットホストコンピュータの第２のデータ記憶装置に第２の仮想マシンコピーをローカルにデプロイするように更に構成される、請求項１に記載の計算システム。
【請求項４】
前記管理サーバは、
コンピュータのネットワークによって接続された前記複数のホストコンピュータでの変更イベントの検出に応答して、前記複数のホストコンピュータ間の前記デプロイ時間を変更すること、
前記変更されたデプロイ時間に基づいて、前記ソースホストコンピュータから前記第１のターゲットホストコンピュータへの第２の経路を決定すること、
前記決定された第２の経路に基づいて、前記仮想マシンの前記コピーを前記第１のターゲットホストコンピュータにデプロイすること、
を行うように更に構成される、請求項１に記載の計算システム。
【請求項５】
前記変更イベントは、前記ソースホストコンピュータから前記第１のターゲットホストコンピュータへの前記経路に配置される前記複数のホストコンピュータのうちの少なくとも１つの故障を含む、請求項４に記載の計算システム。
【請求項６】
前記変更イベントは、コンピュータのネットワーク上の前記複数のホストコンピュータのうちの２つ以上のホストコンピュータ間のリンクの故障を含み、
前記リンクは、前記ソースホストコンピュータから前記第１のターゲットホストコンピュータへの前記経路に配置される、請求項４に記載の計算システム。
【請求項７】
前記決定されるデプロイ時間はデプロイ時間マトリクスに記憶される、請求項１に記載の計算システム。
【請求項８】
前記管理サーバは、
前記決定されたデプロイ時間に基づいて、第１のターゲットホストコンピュータから第２のターゲットホストコンピュータへの経路を決定すること、
前記仮想マシンの前記コピーを前記ソースホストコンピュータから前記第１のターゲットホストコンピュータにデプロイすると、前記第１のターゲットホストコンピュータから前記第２のターゲットホストコンピュータへの前記決定された経路に基づいて、前記仮想マシンのコピーを前記第１のターゲットホストコンピュータから前記第２のターゲットホストコンピュータにデプロイすること、
を行うように更に構成される、請求項１に記載の計算システム。
【請求項９】
コンピュータネットワークに接続された複数のホストでの仮想マシンのデプロイを管理する方法であって、前記複数のホストは、ソースホストコンピュータ及び１つ以上のターゲットホストコンピュータを含み、前記方法は、
前記ソースホストコンピュータに常駐する仮想マシンを前記複数のターゲットホストコンピュータにデプロイする要求を受信すること、
前記複数のホストコンピュータ間でのデプロイ時間を決定すること、
決定されたデプロイ時間に基づいて、前記ソースホストコンピュータから前記複数のターゲットホストコンピュータのうちの第１のターゲットホストコンピュータへの経路を決定すること、
決定される経路に基づいて、前記仮想マシンの第１のコピーを前記ソースホストコンピュータから前記第１のターゲットホストコンピュータにデプロイすること、
を備える、方法。
【請求項１０】
前記仮想マシンの前記第１のコピーがデプロイされた後、第２の仮想マシンコピーを前記仮想マシンの前記第１のコピーから前記第１のターゲットホストコンピュータにローカルにデプロイすることを更に備える、請求項９に記載の方法。
【請求項１１】
前記仮想マシンの前記第１のコピーは、前記第１のターゲットホストコンピュータの第１のデータ記憶装置にデプロイされ、
前記方法は、
前記第１のデータ記憶装置からの前記仮想マシンの前記第１のコピーを使用して、第２の仮想マシンコピーを前記第１のターゲットホストコンピュータの第２のデータ記憶装置にローカルにデプロイすることを更に備える、請求項９に記載の方法。
【請求項１２】
前記コンピュータネットワークによって接続された前記複数のホストでの変更イベントの検出に応答して、前記複数のホスト間の前記デプロイ時間を変更すること、
前記変更されたデプロイ時間に基づいて、前記ソースホストコンピュータから前記第１のターゲットホストコンピュータへの第２の経路を決定すること、
前記決定される第２の経路に基づいて、前記仮想マシンのコピーを前記第１のターゲットホストコンピュータにデプロイすること、
を更に備える、請求項９に記載の方法。
【請求項１３】
前記変更イベントは、
前記ソースホストコンピュータから前記第１のターゲットホストコンピュータへの前記経路に配置される前記複数のホストのうちの少なくとも１つの故障、及び
前記コンピュータネットワーク上での２つ以上のホスト間でのリンクの故障
のうちのいずれかを含み、
前記リンクは、前記ソースホストコンピュータから前記第１のターゲットホストコンピュータへの前記経路に配置される、請求項１２に記載の方法。
【請求項１４】
前記決定されるデプロイ時間に基づいて、第１のターゲットホストコンピュータから第２のターゲットホストコンピュータへの経路を決定すること、
前記仮想マシンの前記第１のコピーを前記ソースホストコンピュータから前記第１のターゲットホストコンピュータにデプロイすると、
前記第１のターゲットホストコンピュータから前記第２のターゲットホストコンピュータへの前記決定された経路に基づいて、前記仮想マシンの更なるコピーを前記第１のターゲットホストコンピュータから前記第２のターゲットホストコンピュータにデプロイすること、
を更に備える、請求項９に記載の方法。
【請求項１５】
請求項９〜１４のいずれか一項に記載の方法を実行するコンピュータ可読プログラムコードを記憶した非一時的なコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的にはコンピュータ及びコンピュータシステムの分野に関する。より詳細には、本発明は、コンピュータシステム内の仮想マシンのデプロイ及び管理に関する。
【背景技術】
【０００２】
仮想マシン（VM : Virtual Machine）は、実際の物理コンピュータシステムのソフトウェア抽象化又は「仮想化」である。各ＶＭは、物理コンピュータの全体構造を表すことができ、したがって、通常、仮想システムハードウェア及びゲストシステムソフトウェアの両方を有する。仮想システムハードウェアは通常、少なくとも１つの仮想ＣＰＵと、仮想メモリと、仮想ディスク等の少なくとも１つの記憶装置と、１つ以上の仮想装置とを含む。ＶＭの全ての仮想ハードウェア構成要素をソフトウェアで実施して、対応する物理構成要素をエミュレートすることができる。ゲストシステムソフトウェアは通常、必要に応じて、ゲストオペレーティングシステム及びドライバを含む。
【０００３】
往々にして、リソースを新しい仮想マシンに割り振り、オペレーティングシステムをロードしてブートし、次に特定のアプリケーションをロードして開始することによって最初から新しい仮想マシンを開始するのではなく、システムオペレータは、現在実行中であるマシン及び電源が落とされているマシンを含め、既存の仮想マシンのコピーである新しい作業仮想マシンを作成することが役立つと判断する。このようにして仮想マシンを開始するために、典型的なプロセスは、適するホストでの新しい仮想マシンの作成から開始し、新しい仮想マシンは既存のソース仮想マシンのコピーである。実行状態である既存のソース仮想マシンの内容をクローニングするには、ソースマシンファイルシステムの「スナップショット」が、通常はソースマシンに常駐するソフトウェアを用いてとられる。スナップショットは、ある瞬間でのソースマシンファイルシステムの完全な状態のイメージを提供する。電源が落とされている仮想マシンをクローニングするには、スナップショットは必要ない。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
新しいＶＭがソースマシンのコピーであるために、新しいＶＭは、新しい仮想マシンに関連付けられた記憶装置にクローニングされる。クローニングが完了した後、新しいＶＭのオペレーティングシステムをロードしてブートすることができ、新しいＶＭの特定のアプリケーションをロードし開始することができる。このクローニング動作を実行する多くの方法がある。典型的な計算環境では、新しいＶＭは、ネットワークを介してソースマシンに接続され、データはそのネットワークを介して転送される。ＶＭ記憶装置はローカルであってもよく（ＶＭをホストする物理マシンに直接取り付けられるディスクドライブの全部又は一部等）、又はＶＭからアクセス可能なストレージエリアネットワーク（Storage Area Network : ＳＡＮ）にリモートに配置することもできる。特定のハードウェア及びソフトウェアの詳細に関係なく、クローニング動作には相当量の時間がかかることがある。時間量は、実施の詳細、結果としての平均データ転送速度、及び転送しなければならないソースマシンファイルシステムのサイズに従って変わる。２００８年に一般的に使用されている典型的なマシン及びネットワークでは、ソースファイルシステムのサイズは５０ＧＢ以上であり得、典型的なデータ転送速度は約２０ＭＢ／ｓであり得る。したがって、完全なクローニング動作は少なくとも２５００秒又は約４０分かかり得る。特にはるかに大きなファイルシステムを有し得るデータ集約アプリケーション（data-intensive applications）を実行中のサーバの場合、かなり長い時間が希ではない。
【課題を解決するための手段】
【０００５】
本発明によれば、請求項１に記載のコンピュータシステムが提供される。
本発明によれば、請求項９に記載の方法が提供される。
本発明によれば、請求項１５に記載のコンピュータ可読記憶媒体が提供される。
【０００６】
一例では、コンピュータネットワークに接続された複数のホストでの仮想マシンのデプロイを管理する方法が記載される。複数のホストは、ソースホストコンピュータ及び１つ以上のターゲットホストコンピュータを含む。方法は、ソースホストコンピュータに常駐する仮想マシンを、第１のターゲットホストを有する複数のターゲットホストコンピュータにデプロイする要求を受信することができる。方法は、複数のホスト間でのデプロイ時間を決定すること、及び決定されるデプロイ時間に基づいて、ソースホストコンピュータから第１のターゲットホストへの経路を決定することを更に含む。方法は、決定される経路に基づいて、仮想マシンのコピーをソースホストコンピュータから第１のターゲットホストにデプロイすることを含む。
【０００７】
一例では、コンピュータネットワークに接続される複数のホストでの仮想マシンのデプロイを管理するコンピュータ可読プログラムコードを記憶する、非一時的なコンピュータ可読記憶媒体が記載される。複数のホストは、ソースホストコンピュータ及び１つ以上のターゲットホストコンピュータを含む。コンピュータ可読プログラムコードは、ソースホストコンピュータに常駐する仮想マシンを、第１のターゲットホストを有する複数のターゲットホストコンピュータにデプロイする要求を受信するコンピュータ可読プログラムコードと、複数のホスト間でのデプロイ時間を決定するコンピュータ可読プログラムコードとを含む。コンピュータ可読プログラムコードは、決定されるデプロイ時間に基づいて、ソースホストコンピュータから第１のターゲットホストへの経路を決定するコンピュータ可読プログラムコードと、決定される経路に基づいて、仮想マシンのコピーをソースホストコンピュータから第１のターゲットホストにデプロイするコンピュータ可読プログラムコードとを更に含む。
【０００８】
一例では、仮想化計算システムが記載される。仮想化計算システムは、ソースホストコンピュータと、第１のターゲットホストを有する複数のターゲットホストコンピュータと、ソースホストコンピュータとターゲットホストコンピュータとを接続するネットワークとを含む。仮想化計算システムは、複数のターゲットホストコンピュータへの仮想マシンのデプロイを管理するように構成される管理サーバを更に含む。管理サーバは、ソースホストコンピュータに常駐している仮想マシンを複数のターゲットホストコンピュータにデプロイする要求を受信し、複数のホスト間でのデプロイ時間を決定し、決定されるデプロイ時間に基づいて、ソースホストコンピュータから第１のターゲットホストへの経路を決定するように構成される。管理サーバは、決定される経路に基づいて、ソースホストコンピュータから第１のターゲットホストに仮想マシンのコピーをデプロイするように更に構成される。
【０００９】
一例では、第１の仮想マシンコピーがデプロイされた後、第２の仮想マシンコピーは、仮想マシンのデプロイコピーから第１のターゲットホストにローカルにデプロイされる。
一例では、第１の仮想マシンのデプロイコピーは、第１のターゲットホストの第１のデータ記憶装置に記憶され、第２の仮想マシンは、第１の仮想マシンのデプロイコピーを使用して、第１のターゲットホストの第２のデータ記憶装置にローカルにデプロイされる。
【００１０】
一例では、コンピュータネットワークによって接続される複数のホストでの変更イベントの検出に応答して、複数のホスト間のデプロイ時間を変更することができ、変更されたデプロイ時間に基づいて、ソースホストコンピュータから第１のターゲットホストへの第２の経路を決定することができ、仮想マシンのコピーは、決定される第２の経路に基づいて第１のターゲットホストにデプロイすることができる。
【００１１】
変更イベントは、ソースホストコンピュータから第１のターゲットホストへの経路に配置される複数のホストのうちの少なくとも１つの故障を含むことができる。
変更イベントは、コンピュータネットワーク上の２つ以上のホスト間のリンクの故障を含み、リンクは、ソースホストコンピュータから第１のターゲットホストコンピュータへの経路に配置される。
【００１２】
決定されるデプロイ時間は、デプロイ時間マトリクスに記憶することができる。
第１のターゲットホストから第２のターゲットホストへの経路を、決定されるデプロイ時間に基づいて決定することができ、仮想マシンのコピーをソースホストコンピュータから第１のターゲットホストにデプロイすると、第１のターゲットホストからの仮想マシンのコピーは、第１のターゲットホストから第２のターゲットホストへの決定される経路に基づいて、第２のターゲットホストにデプロイすることができる。
【図面の簡単な説明】
【００１３】
【図１】実施形態を実施し得る、管理ホストと、ソースホストと、ターゲットホストとで構成されるコンピュータネットワークを示すブロック図である。
【図２】仮想マシンデプロイ及び管理エンジン（VMDME : Virtual Machine Deployment and Management Engine）によって実行されて、仮想マシンを、コンピュータネットワークに接続されたホストにデプロイするステップを示す流れ図である。
【図３Ａ】仮想マシンデプロイが行われる、ソースをターゲットホストに接続するコンピュータネットワークを示すブロック図である。
【図３Ｂ】ＶＭＤＭＥによって使用され、仮想マシンをデプロイする経路を決定するデプロイ時間マトリクスを示す表である。
【図４Ａ】ＶＭＤＭＥによって実行され、２つのデータ記憶装置に接続されるターゲットホストへの仮想マシンのコピーをデプロイさせるステップを示すブロック図である。
【図４Ｂ】ＶＭＤＭＥによって実行され、２つのデータ記憶装置に接続されるターゲットホストへの仮想マシンのコピーをデプロイさせるステップを示すブロック図である。
【図４Ｃ】ＶＭＤＭＥによって実行され、２つのデータ記憶装置に接続されるターゲットホストへの仮想マシンのコピーをデプロイさせるステップを示すブロック図である。
【図５Ａ】ＶＭＤＭＥによって実行され、デプロイ時間マトリクスから決定される経路に従って、仮想マシンをソースから、コンピュータネットワークで接続されたホストにデプロイさせるステップを示すブロック図である。
【図５Ｂ】ＶＭＤＭＥによって実行され、デプロイ時間マトリクスから決定される経路に従って、仮想マシンをソースから、コンピュータネットワークで接続されたホストにデプロイさせるステップを示すブロック図である。
【図５Ｃ】ＶＭＤＭＥによって実行され、デプロイ時間マトリクスから決定される経路に従って、仮想マシンをソースから、コンピュータネットワークで接続されたホストにデプロイさせるステップを示すブロック図である。
【図６】仮想マシンデプロイを行う、ソースをターゲットホストに接続するコンピュータネットワークを示すブロック図であり、ネットワークでのリンクは、デプロイ時間の変更を受ける。
【図７Ａ】コンピュータネットワークでのリンクの１つのデプロイ時間の変更前後のデプロイ時間マトリクスを示す表である。
【図７Ｂ】コンピュータネットワークでのリンクの１つのデプロイ時間の変更前後のデプロイ時間マトリクスを示す表である。
【図８Ａ】ＶＭＤＭＥによって実行され、コンピュータネットワークに接続されたホストに仮想マシンをデプロイさせるステップを示すブロック図であり、デプロイ中、コンピュータネットワークでのリンクの１つのデプロイ時間に変更が生じる。
【図８Ｂ】ＶＭＤＭＥによって実行され、コンピュータネットワークに接続されたホストに仮想マシンをデプロイさせるステップを示すブロック図であり、デプロイ中、コンピュータネットワークでのリンクの１つのデプロイ時間に変更が生じる。
【図８Ｃ】ＶＭＤＭＥによって実行され、コンピュータネットワークに接続されたホストに仮想マシンをデプロイさせるステップを示すブロック図であり、デプロイ中、コンピュータネットワークでのリンクの１つのデプロイ時間に変更が生じる。
【図９】仮想マシンのデプロイ時間中にソース又はホストが利用可能ではないことに応答して、ＶＭＤＭＥによって実行されるステップを示す流れ図である。
【図１０Ａ】ＶＭＤＭＥによって実行され、コンピュータネットワークに接続された仮想マシンをデプロイさせるステップを示すブロック図であり、デプロイ中、ソースホストが故障する。
【図１０Ｂ】ＶＭＤＭＥによって実行され、コンピュータネットワークに接続された仮想マシンをデプロイさせるステップを示すブロック図であり、デプロイ中、ソースホストが故障する。
【図１０Ｃ】ＶＭＤＭＥによって実行され、コンピュータネットワークに接続された仮想マシンをデプロイさせるステップを示すブロック図であり、デプロイ中、ソースホストが故障する。
【図１１】仮想マシンデプロイが行われる、ソースをターゲットホストに接続するコンピュータネットワークを示すブロック図である。
【図１２Ａ】コンピュータネットワークでのリンクが故障する前後のデプロイ時間マトリクスを示す表である。
【図１２Ｂ】コンピュータネットワークでのリンクが故障する前後のデプロイ時間マトリクスを示す表である。
【図１３Ａ】ＶＭＤＭＥによって実行され、コンピュータネットワークに接続される仮想マシンをデプロイさせるステップを示すブロック図であり、デプロイ中、コンピュータネットワークでのリンクが故障する。
【図１３Ｂ】ＶＭＤＭＥによって実行され、コンピュータネットワークに接続される仮想マシンをデプロイさせるステップを示すブロック図であり、デプロイ中、コンピュータネットワークでのリンクが故障する。
【図１３Ｃ】ＶＭＤＭＥによって実行され、コンピュータネットワークに接続される仮想マシンをデプロイさせるステップを示すブロック図であり、デプロイ中、コンピュータネットワークでのリンクが故障する。
【発明を実施するための形態】
【００１４】
図１は、実施形態を実施し得るホストコンピュータネットワークの一例を示すブロック図である。複数のホストは、ソースホスト１４０及び１つ以上のターゲットホスト１５０（例えば、１５０１〜１５０Ｍ）を含め、ネットワーク１７０に接続される。ホストは、デスクトップコンピュータ、ラップトップ、又はサーバコンピュータとすることができ、それぞれ仮想化システムアーキテクチャを実施することが可能である。図１を参照すると、ソースホスト１４０は、ネットワーク１７０に接続されたホストを表し、物理ハードウェアプラットフォーム１５９と、ハイパーバイザ１４８と、１つ以上のＶＭ（仮想マシン）を実行することができるＶＭ実行空間１５４とを含む。物理ハードウェアプラットフォーム１５９は、１つ以上のＣＰＵ１５６と、ランダムアクセスメモリ（ＲＡＭ）１５７と、ネットワークインタフェース（ＮＩＣ）１５８とで構成される。ハードウェアプラットフォーム１５９は、ｘ８６アーキテクチャ等の任意のいくつかのシステムアーキテクチャを実施することができる。
【００１５】
ソースホスト１４０は物理データ記憶装置１４５に接続される。いくつかの実施形態では、データ記憶装置１４５は単一のディスク記憶媒体とすることができる。データ記憶装置１４５はＳＣＳＩ、ファイバチャネル、又はｉＳＣＳＩ記憶装置アレイとすることもできる。記憶装置アレイは、ネットワーク接続ストレージ（ＮＡＳ：Ｎｅｔｗｏｒｋ−Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ）ファイラ（filer）又はストレージエリアネットワーク（SAN : Storage Area Network）を介するブロックベースの装置等の任意のタイプのものとすることができる。さらに、ホスト１５０は１つ以上のデータ記憶装置１８０（例えば、１８０１〜１８０Ｍ）に接続することができ、このデータ記憶装置は、上述したタイプの記憶装置のものとしてもよい。さらに、データ記憶装置１８０は、単一のホスト１５０専用としてもよく、又は２つ以上のホスト１５０間で、若しくはソースホスト１４０と共有してもよい。
【００１６】
ハイパーバイザ１４８は、ハードウェアプラットフォーム１５９でカプセル化されるハードウェア及びＣＰＵのリソースを管理し、ＶＭ実行空間１５４での１つ以上のＶＭ１５５の実行を可能にするソフトウェアである。ＶＭ１５５ごとに、ハイパーバイザ１４８は、仮想ＣＰＵ及び仮想記憶装置等のエミュレートされるハードウェアを含む仮想ハードウェアプラットフォーム１５１を管理する。ハイパーバイザ１４８の一例は、ＶＭｗａｒｅのｖＳｐｈｅｒｅ製品の構成要素として含まれ、この製品は、カリフォルニア州パロアルト（Ｐａｌｏ  Ａｌｔｏ）に所在のＶＭｗａｒｅ，Ｉｎｃ．から市販されている。ハイパーバイザがホストオペレーティングシステムと併せて実施されるホスト仮想マシンシステム等の他の仮想化コンピュータシステムも意図されることを認識されたい。
【００１７】
図１に示されるように、ＶＭ１５５はＶＭ実行空間１５４で実行される。一般に、ＶＭは物理コンピュータのソフトウェア実施である。ＶＭは、アプリケーションを実行可能なゲストオペレーティングシステムのインストールをサポートする仮想ハードウェアプラットフォームを実施する。ゲストオペレーティングシステムの例としては、Ｍｉｃｒｏｓｏｆｔ  ＷＩＮＤＯＷＳ（登録商標）、ＬＩＮＵＸ（登録商標）等の任意の周知の市販のオペレーティングシステムが挙げられる。図１に示されるように、ＶＭ１５５は、仮想ハードウェアプラットフォーム１５１と、ゲストオペレーティングシステム１５２と、１つ以上のゲストアプリケーション１５３とを含む。ＶＭ１５５は、物理コンピュータに対応する単一の仮想化ユニットとして記述されるが、本明細書に記載の技法に従って、ＶＭの他の実施形態を利用してもよいことを認識されたい。例えば、いくつかの実施形態では、ＶＭ１５５は、仮想アプライアンスと呼ばれることがある１つ以上のＶＭの集まりとすることができ、これは、１つのユニットとしてパッケージされ、維持され、更新され、管理されて、特定のサービスセットを提供する１つ以上のアプリケーションを実行する。仮想アプライアンスの一例は、ｖＡｐｐ製品であり得、この製品はカリフォルニア州パロアルト（Ｐａｌｏ  Ａｌｔｏ）に所在のＶＭｗａｒｅ，Ｉｎｃ．から市販されている。他の実施形態では、ＶＭ１５５は、単にテンプレートと呼ばれることがある仮想マシンテンプレートであることができ、これは、管理者が予め構成された仮想マシンの多くのコピーをリモートホストにデプロイ（deploy）又はクローニングするのに使用し得る仮想マシンから作成される再使用可能なイメージである。
【００１８】
さらに、ＶＭ１５５の状態（例えば、仮想メモリの内容、仮想ディスク記憶装置の内容、及び仮想ＣＰＵの実行状態）は、データ記憶装置１４５内のＶＭイメージ１６０を含む複数のデータファイルに記憶されたデータで表すことができる。いくつかの実施形態では、ＶＭイメージ１６０を含む１組のデータファイルは、仮想ディスク内容を記憶する１つ以上のファイル（例えば、ＶＭＤＫすなわち仮想マシンディスクファイル１６１）と、ＶＭ１５５の仮想ハードウェア構成データを記憶する１つ以上のファイル（例えば、ＶＭＸファイル１６２）と、トラブルシューティングに使用することができるＶＭ１５５の活動ログを記憶する１つ以上のログファイル１６３とを含み得る。ＶＭ１５５の現在状態を完全に記述する他のデータファイルをＶＭイメージ１６０に含むこともできる。ＶＭ１５５に対応するＶＭイメージ１６０を単に「ＶＭ１６０」と同義で呼び得ることを認識されたい。
【００１９】
図１は管理ホスト１００も示し、管理ホスト１００は管理サーバ１２０をホストする。ホスト１５０Ｍの場合と同様に、管理ホスト１００は、デスクトップ、ラップトップ、又は仮想化システムアーキテクチャを実施可能なサーバ級コンピュータとすることができる。管理サーバ１２０は、ネットワーク１７０に接続されたホストの単一制御点として機能するコンピュータプログラムを含むことができる。管理サーバ１２０は、図１に示されるように、中央サーバに存在して実行してもよく、又は代替的に、ソースホスト１４０若しくはホスト１５０Ｍのうちの１つでのＶＭに存在して実行してもよい。管理サーバ１２０は、ソースホスト１４０及び各ホスト１５０Ｍとの通信を維持し、ホスト間での負荷平衡及びデータ記憶装置間での作業負荷平衡等の管理タスクを実行する。
【００２０】
管理サーバ１２０は、ホスト１５０ＭへのＶＭのデプロイも管理する。ＶＭデプロイは、（１）いくつかのＶＭを提供して、１つ以上のホスト１５０Ｍで実行させる要求を受信することであって、複数のＶＭを単一のホスト１５０に提供し得る、受信すること、（２）ソースホスト１４０に常駐する、「ソース」ＶＭと呼ばれる特定の仮想マシンのデータ記憶装置１４５に記憶されているＶＭイメージ１６０のデータファイルにアクセスすること、（３）ＶＭを提供すべきホスト１５０ＭにＶＭイメージ１６０のコピーを送信すること、及び（４）各ホスト１５０に関連付けられた各データ記憶装置１８０にＶＭイメージ１６０の送信されたコピーを記憶すること、を伴う。これらのステップが、特定のホスト１５０に対して完了した後、ＶＭはそのホスト１５０にデプロイされる。ＶＭがホスト１５０にデプロイされると、ＶＭを開始し、そのホストで実行を開始することができる。
【００２１】
大規模な計算環境（大規模組織のデータセンタ等）では、管理者は多くの場合、様々な目的で多数のＶＭをデプロイすることが求められる。例えば、ＶＭを従業員にデプロイして、様々な職務を実行させることができ、又はＶＭをデプロイして、データベース又はプリントサーバとして実行することができる。これには、ＶＭ１６０の多数のコピーの送信が伴い、ネットワーク１７０に負荷を掛けるおそれがある。従来のＶＭデプロイ実施では、単一のソースＶＭ１６０を、ネットワークでのＶＭのデプロイ全体のソースとして使用していた。この手法にはいくつかの欠点がある。例えば、単一のソースＶＭデプロイが使用される場合、デプロイ全体に単一故障点が存在する。換言すれば、デプロイプロセスには冗長性が内蔵されない。次に、ホスト１５０に多くのＶＭをデプロイする必要がある場合、単一ソースデプロイは、ソースＶＭ１６０の複数のコピーをホスト１５０に送信することになり、結果として、ネットワークトラフィックが増大する。さらに、単一ソースＶＭデプロイは、ソースホストと宛先ホストとの経路の調整を提供せず、これにより、ソースホスト及び宛先ホストが互いから地理的に離れている場合、非効率性が生じる。
【００２２】
単一ソースＶＭデプロイの欠点に対処するために、管理サーバ１２０は仮想マシンデプロイ及び管理エンジン（Virtual Machine Deployment and Management Engine : ＶＭＤＭＥ）１３０を含む。ＶＭＤＭＥ１３０は、ネットワーク１７０に接続された複数のターゲットホスト１５０へのソースＶＭのデプロイを開始し管理する。図１に示されるように、ソースホスト１４０はソースＶＭ１５５をホストし、ＶＭ１５５の状態情報（state information）はＶＭ１６０に記憶される。上述したように、ＶＭ１６０は、ネットワーク１７０に接続された他のホスト１５０にデプロイすべきデータを含む。ＶＭＤＭＥ１３０は、デプロイ時間マトリクス（deployment time matrix）１３５を使用して、ＶＭ（例えば、ＶＭ１６０）の動作の、ネットワーク１７０に接続された任意のホスト１５０へのクローニング動作又はデプロイ動作を実行するように構成される。
【００２３】
一実施形態では、ＶＭＤＭＥ１３０は、あらゆるホストからあらゆる他のホストへのＶＭのクローニング又はデプロイに必要なデプロイ時間マトリクスを計算するように構成される。例えば、示される実施形態では、デプロイ時間マトリクス１３５は、ソースホスト１４０から各ターゲットホスト１５０へのデプロイ時間を指定するとともに、ホスト１５０自体の各対間のデプロイ時間を指定する。デプロイ時間は、管理サーバ１２０が仮想マシンをソースから宛先にクローニング又はデプロイするのにかかる大まかな時間量を表す。
【００２４】
いくつかの実施形態では、ＶＭＤＭＥ１３０は、ネットワーク１７０を介していくつかのバイトを送信し、ホスト１５０を接続するリンク（link）を介するポイントツーポイントデータ送信時間を測定することにより、デプロイ時間マトリクス１３５を初期化する。データ送信時間は、デプロイ時間マトリクス１３５に記憶されるデプロイ時間を計算する基礎として使用される。さらに、ＶＭＤＭＥ１３０の実施形態は、ネットワーク容量又は利用率の変化等の、ホスト１５０間のデータ送信時間に影響を及ぼす可能性がある変化について、ネットワーク１７０を監視し得る。ＶＭＤＭＥ１３０の実施形態はまた、データデプロイ時間に影響を及ぼし得るホスト１５０のＣＰＵ利用率及びメモリ利用率、又はホスト１５０に接続されたデータ記憶装置１８０のディスクＩ／Ｏ活動を監視することもできる。ネットワーク変更の結果としてデータ送信時間の任意の変更が検出されるか、又はホスト及びデータ記憶装置の活動の結果としてデプロイ時間の任意の変更が検出されると、ＶＭＤＭＥ１３０はそれに従って、デプロイ時間マトリクス１３５を更新し得る。
【００２５】
図２は、図１に示されるように、ＶＭＤＭＥ１３０の実施形態によって実行され、ソースＶＭ１６０を複数のターゲットホスト１５０にデプロイするプロセスのステップを示す流れ図である。ステップ２００において、ＶＭＤＭＥ１３０は、システム管理者又はエンドユーザから、いくつかのＶＭを１組のホスト１５０にデプロイするデプロイ要求を受信する。実施形態では、ＶＭＤＭＥ１３０は、各ターゲットホストで利用可能なリソース（例えば、空き容量）に基づいて、各ターゲットホストにデプロイするＶＭの数を決定する。いくつかの実施形態では、管理者は、ユーザインタフェース又は他のタイプの入力機構を通して要求を行う。いくつかの実施形態では、デプロイ要求は、第１のソースホスト１４０と、ソースホスト１４０に接続されたデータ記憶装置１４５に記憶されたソースＶＭ１６０と、デプロイされたＶＭを受け取るべき１組のターゲットホスト１５０と、各ホスト１５０にデプロイすべきＶＭの数と、デプロイされたＶＭのコピーを記憶すべき１組のデータ記憶装置１８０とを指定する。
【００２６】
ステップ２０５において、ＶＭＤＭＥ１３０は、デプロイ時間マトリクス１３５を決定し、初期化する。上述したように、デプロイ時間マトリクス１３５は、ネットワーク１７０に接続されたホスト１５０Ｍの各対間のリンクを介するポイントツーポイントデータ送信時間を提供する。データ送信時間は、いくつかの実施形態では、ＶＭＤＭＥ１３０がいくつかの数のバイトをホスト１５０ａからホスト１５０ｂに送信することによって決定される。但し、ａ≠ｂである。決定された送信時間は、送信バイトが、ホスト１５０ａとホスト１５０ｂとの間のリンクを介して移るのにかかる時間であり、送信バイトは、コンピュータネットワーク１７０内の他のいかなるホスト１５０も通過しない。同様にして、ソースホスト１４０と各ホスト１５０との間のデータ送信時間が決定される。上述したように、ホスト間のデータ送信時間は、例えば、ネットワーク容量、ディスクＩ／Ｏ、ネットワークトラフィック、及び個々のホストでのＣＰＵ負荷等のいくつかの要因に依存し得る。
【００２７】
次に、ステップ２１０において、ＶＭＤＭＥ１３０は、ホスト１５０ａごとに、１組の好ましい経路を決定し、好ましい各経路は、ネットワーク１７０を介してホスト１５０ａからあらゆる他のホスト１５０ｂに進む。但し、ａ≠ｂである。一実施形態では、好ましい経路は、ソースＶＭ１６０をデプロイするのにＶＭＤＭＥ１３０が選択する元となるデプロイ経路である。例えば、ネットワーク１７０に接続された３つのホスト（例えば、ホスト１５０１、１５０２、及び１５０３）がある場合、ＶＭＤＭＥ１３０は、９つの別個の好ましい経路（すなわち、３つのホスト１５０ａ×（ホスト１５０ｂごとに２つの経路＋ソースホスト１４０からホスト１５０ａへの１つの経路）＝９つの経路）を決定する。好ましい経路は、デプロイ時間マトリクス１３５に基づいて決定される。一実施形態では、一対のホスト（すなわちソースホスト１４０及びホスト１５０）間の好ましい経路は、ネットワーク１７０の支配的な状態を所与として、ホスト間の最短デプロイ時間を有する。一対のホスト１５０（例えば、ホスト１５０１及びホスト１５０２）間の好ましい経路は、直接リンクを介してもよく、又は別のホスト（例えば、１５０３）を通過してもよい。例えば、ホスト１５０１からホスト１５０２へのデプロイ時間が２分であり、ホスト１５０２からホスト１５０３へのデプロイ時間が５分であり、ホスト１５０１からホスト１５０３へのデータ送信時間が１０分である場合、ホスト１５０１からホスト１５０３への好ましい経路はホスト１５０２を通過する（２分＋５分＜１０分であるため）。
【００２８】
図３Ａ及び図３Ｂはそれぞれ、図２のステップ２０５及び２１０に示されるような、デプロイ時間マトリクス１３５及び１組の好ましい経路の決定を示すブロック図及び表である。図３Ａは、実施形態によるソースホスト及びネットワーク３００に接続された３つのターゲットホストを示す。示されるように、ソースホスト１４０とホスト１５０１、１５０２、及び１５０３のそれぞれとの間には直接リンク（すなわち、いかなる介在リンクもないリンク）がある。さらに、一般的に言えば、各ホスト１５０ａは他の各ホスト１５０ｂと直接リンクされる。但し、ａ≠ｂである。示されるように、デプロイ時間が各リンクに関連付けられる。例えば、ソースホスト１４０からホスト１５０１へのデプロイ時間は１０分であり、ホスト１５０１からホスト１５０３へのデプロイ時間は１５分であるなどである。
【００２９】
図３Ａに示されるデプロイ時間は、図３Ｂに示されるデプロイ時間マトリクス１３５の実施形態を初期化する際に使用される。一実施形態では、デプロイ時間マトリクス１３５は、複数の行及び列を有する表とすることができる。図３Ｂを参照すると、第１の列は「リンク」と記される。この列は、ホスト１５０の各対間の全ての直接リンクを記載する。「デプロイ時間」と記される図３Ｂの第２の列は、図３Ａに示される個々の各リンクのデプロイ時間を指定する。第３の列は、「好ましい経路」と記され、２つのホスト１５０間の特定のリンクが、全体デプロイの現在段階での、ソースホストと任意のターゲットホストとの間の任意の好ましいリンクにあるか否かを指定する。「Ｙｅｓ」エントリは、特定のリンクが、ソースホストと１つ以上のターゲットとの間の好ましいリンクにあることを指定し、一方、「Ｎｏ」エントリは、リンクが任意のいかなる好ましい経路上にもないことを指定する。一対のホスト１５０（又はソースホスト１４０とホスト１５０）間の好ましい経路は、上述したように、それらのホスト間の最短デプロイ時間を有するネットワーク経路である。例えば、図３Ｂを参照すると、ソースホスト１４０とホスト１５０１との間のリンクは、ソースホスト１４０からホスト１５０１への最短デプロイ時間を有するネットワーク経路の一部であるため、好ましい経路にあるものとして識別される。実際に、ソースホスト１４０とホスト１５０１との間のリンクは、ソースホスト１４０とホスト１５０１との間の好ましい経路全体を含む。
【００３０】
同様にして、ホスト１５０１とホスト１５０２との間のリンクが、ソースホスト１４０とホスト１５０２との間で最短デプロイ時間を有するネットワーク経路の一部であるため、好ましい経路にあるものとして図３Ｂにおいて識別される。実際には、デプロイ時間マトリクス１３５の１行目及び４行目に示されるように、ソースホスト１４０とホスト１５０１との間のリンクと、ホスト１５０１とホスト１５０２との間のリンクとを含む経路は、合計デプロイ時間２０分（すなわち、１０分＋１０分）を有する。これとは対照的に、ソースホスト１４０とホスト１５０１との間のリンクは、デプロイ時間マトリクス１３５の２行目に示されるように、デプロイ時間３０分を有する。
【００３１】
上述したように、ソースホストとターゲットホストとの間のいかなる好ましい経路上にもないリンクは、好ましい経路列において「Ｎｏ」エントリで識別される。例えば、図３Ｂを参照すると、２行目のソースホスト１４０からホスト１５０２へのリンクは、それぞれが最短デプロイ時間を有する、ソースホスト１４０からホスト１５０１、１５０２、及び１５０３の任意のホストへのいかなる経路上にもないため、好ましい経路上にない。
【００３２】
図３Ｂに示されるデプロイ時間マトリクス１３５の４列目は「前提条件（Precondition）」と記される。この列は、特定のリンクが、好ましい経路の一部としてデプロイ可能になるために満たさなければならない前提条件を指定する。一般に、満たさなければならない前提条件は、ホストへのＶＭのデプロイである。例えば、ソースホスト１４０からホスト１５０１へのリンクは、指定される前提条件を有さない。換言すれば、このリンクは最初から、いかなるＶＭデプロイも行われる前に、ソースＶＭが最初にソースホスト１４０に記憶されるため、好ましい経路（すなわち、ソースホスト１４０からホスト１５０１への経路）にデプロイ可能である。これとは対照的に、ホスト１５０１からホスト１５０２へのリンクは、ＶＭがホスト１５０１にデプロイされた後、好ましい経路（特に、ソースホスト１４０からホスト１５０２への好ましい経路）にデプロイ可能になる。これは、先に示したように、ソースホスト１４０からホスト１５０２への好ましい経路がソースホスト１４０からホスト１５０１に進み、次に、ホスト１５０１からホスト１５０２に進むため、該当する。したがって、ＶＭをソースホスト１４０からホスト１５０２に、それらの間の好ましい経路を介してデプロイするために、ＶＭＤＭＥ１３０はまず、ソースホスト１４０からホスト１５０１にデプロイし、次に、ホスト１５０１からホスト１５０２にデプロイしなければならない。
【００３３】
再び図２を参照すると、ステップ２１０において、好ましい経路が決定された後、ＶＭＤＭＥ１３０は、ステップ２２０において、ＶＭ１６０の全体デプロイの現在段階でソースとして機能すべきソースホスト及びソースＶＭを決定する。例えば、ステップ２００において受信される要求で指定されたソースホスト１４０はまず、ＶＭ１６０の全体デプロイのソースホストとして機能する。しかし、ＶＭはターゲットホスト１５０にデプロイされるため、デプロイされたターゲットホスト１５０のうちの１つ以上は、ＶＭ１６０の全体デプロイの後続段階でソースホストとして機能し得る。例えば、ＶＭＤＭＥ１３０が、全体デプロイのある段階中、デプロイ時間マトリクス１３５に基づいて、デプロイホスト１５０１と、まだデプロイされていない別のホスト１５０２への経路が、初期ソースホスト１４０と同じターゲットホスト１５０２への経路よりも短いデプロイ時間を有すると判断する場合、ＶＭＤＭＥ１３０は、ホスト１５０１を現在のデプロイ段階のソースとし、ホスト１５０１からターゲットホスト１５０２にデプロイする。
【００３４】
同様に、ステップ２２５において、ＶＭＤＭＥ１３０は、ＶＭ１６０の全体デプロイの現在段階においてデプロイすべき１組の現在ターゲットホストを決定する。１組の現在ターゲットホストは、ステップ２００において要求内で提供される１組のホスト１５０の部分集合である。例えば、全体デプロイの現在段階では、ＶＭＤＭＥ１３０は、現在のソース１５０１から、まだデプロイされていないホスト１５０３への好ましい経路が別のホスト１５０２を通過すると判断し得る。したがって、ＶＭＤＭＥ１３０は、ホスト１５０２を現在のターゲットホストとし、全体デプロイの現在段階において、ＶＭ１６０のコピーをホスト１５０１からホスト１５０２にデプロイする。ホスト１５０２へのデプロイが首尾良く完了し、ホスト１５０２と１５０３との間のデータ送信時間が変わらないままであると仮定すると、ＶＭＤＭＥ１３０は、デプロイの後続段階で、ホスト１５０３を現在ターゲットホストとし、ＶＭ１６０のコピーをホスト１５０２からホスト１５０３にデプロイする。
【００３５】
ステップ２３０において、ＶＭＤＭＥ１３０は、決定された現在のソースホストから決定された現在のターゲットホストへの、デプロイ時間マトリクス１３５に基づいて決定される好ましい経路に沿ったＶＭ１６０のコピーのデプロイを開始する。いくつかの実施形態では、デプロイは、それぞれがＶＭ１６０のコピーをホスト１５０に送信し、ＶＭ１６０のコピーを、ホスト１５０に接続されたデータ記憶装置１８０に記憶するいくつかの並列スレッドを開始することによって実行される。
【００３６】
ステップ２３５において、ＶＭＤＭＥ１３０の実施形態は、必要であれば、第１のＶＭに既にデプロイされたホスト１５０での「ローカル」ＶＭデプロイを開始する。ホスト１５０でのローカルＶＭデプロイは、ホスト１５０に接続されたデータ記憶装置１８０からホスト１５０に既にデプロイされたＶＭ１６０の、これもまたホスト１５０に接続されたデータ記憶装置１８０に記憶された１つ以上の同一のＶＭへのコピーである。ローカルＶＭデプロイは、２つ以上のＶＭをホスト１５０にデプロイすべきイベントにおいて、ホスト１５０に対して開始される。ＶＭをローカルにデプロイすることにより、ソースホストからホスト１５０にＶＭ１６０の複製コピーを送信することが回避される。例えば、ステップ２００において受信される要求により、ホスト１５０が、ホスト１５０にデプロイされるＶＭ１６０の２つのコピーを有するべきであると指定される場合、ＶＭＤＭＥ１３０は、好ましい経路を介してＶＭ１６０の第１のコピーをホスト１５０にデプロイする。ＶＭ１６０の第１のコピーがホスト１５０に首尾良くデプロイされた後、ＶＭＤＭＥ１３０は、第１のデプロイＶＭのコピーを、ホスト１５０に接続されたデータ記憶装置１８０にコピーする。したがって、そうすることにより、ＶＭＤＭＥ１３０は、ネットワーク１７０を介してＶＭ１６０のコピーを２回送信することを回避する。
【００３７】
さらに、ホスト１５０が２つ以上のデータ記憶装置１８０に接続され、２つ以上のＶＭを接続された各データ記憶装置にデプロイすべき場合、ＶＭＤＭＥ１３０は、デプロイ時間マトリクス１３５から決定される好ましい経路を介して、ＶＭ１６０の第１のコピーを接続された第１のデータ記憶装置１８０にデプロイする。ＶＭ１６０の第１のコピーをデプロイした後、ＶＭＤＭＥ１３０は、ホスト１５０に接続された第２のデータ記憶装置１８０に、デプロイされた第１のＶＭをコピーする。各データ記憶装置１８０で要求される追加のＶＭは、そのデータ記憶装置１８０に既に記憶されているＶＭからコピーされる。これは、複数のＶＭをデータ記憶装置間でコピーすることから生じるいかなる遅延も回避することによってデプロイ時間を更に短縮する。
【００３８】
図４Ａ、図４Ｂ、及び図４Ｃは、ＶＭＤＭＥ１３０の実施形態による単一のターゲットホストへのソースＶＭのデプロイの一例の段階を示すブロック図である。図４Ａでは、ソースホスト１４０は、ＶＭ１６０が記憶されたデータ記憶装置１４５に接続される。さらに、ターゲットホスト１５０はデータ記憶装置１８０１及び１８０２に接続される。ＶＭＤＭＥ１３０は、管理サーバ１２０の制御下で実行され、ＶＭ１６０の６つのコピーをソースホスト１４０からホスト１５０にデプロイするデプロイ要求を受信し、３つのコピーはデータ記憶装置１８０１にデプロイすべきであり、３つのコピーはデータ記憶装置１８０２にデプロイすべきである。示されるように、ＶＭＤＭＥ１３０は、ＶＭ１６０の第１のコピー（ＶＭ４６０１）を、ターゲットホスト１５０に接続されたデータ記憶装置１８０１にデプロイする。図４Ａ及び続く図では、破線で示されるＶＭはデプロイ中であるが、完全にはデプロイされていない。
【００３９】
図４Ｂでは、データ記憶装置１８０１へのＶＭ４６０１のデプロイが完了する。この時点で、第１のＶＭをホスト１５０にデプロイした後、ＶＭＤＭＥ１３０は、残りの５つのＶＭを「ローカルに」デプロイすべきか否かを判断する。換言すれば、ＶＭ１６０の追加のコピーを、ネットワークを介してホスト１５０に送信する代わりに、ＶＭＤＭＥ１３０は、既にデプロイされたＶＭ４６０１をソースとして使用して、残りのＶＭをデプロイする。したがって、ＶＭＤＭＥ１３０は、ＶＭ１６０の３つのコピーを各データ記憶装置１８０にデプロイすべきであるため、データ記憶装置１８０１へのＶＭ４６０２及び４６０３のデプロイ及びデータ記憶装置１８０２へのＶＭ４６０４のデプロイを開始する。
【００４０】
図４Ｃに示されるように、ＶＭ４６０２、４６０３、及び４６０４は完全にデプロイされている。ＶＭ１６０の全体デプロイの最後の段階において、ＶＭＤＭＥ１３０は、残りの２つのＶＭ（すなわち、ＶＭ４６０５及びＶＭ４６０６）を、これらのＶＭをソースホスト１４０からデプロイする（そのようなデプロイは、ソースホスト１４０からホスト１５０２へのネットワーク遅延による影響を受ける）のではなく、又はこれらのＶＭをデータ記憶装置１８０１からコピーする（そのようなコピーは、データ記憶装置１８０１と１８０２とのデータ経路での任意の待ち時間による影響を受ける）のではなく、デプロイされたコピーＶＭ４６０４からデータ記憶装置１８０２にコピーする。ＶＭ４６０５及び４６０６が完全にデプロイされた後、デプロイ全体が完了する。
【００４１】
図２を再び参照すると、決定された１組の現在のターゲットホストへのデプロイが完了した後、ＶＭＤＭＥ１３０は、ステップ２４０において、デプロイが、ステップ２００において受信される要求において指定される全てのターゲットホスト１５０に対して行われたか否かを判断する。ステップ２００においてデプロイ要求において指定される要求された数のＶＭが各ターゲットホスト１５０にデプロイされた場合、ＶＭ１６０の全体デプロイが終了する。
【００４２】
しかし、ＶＭがまだデプロイされていないホスト１５０が残っている場合、ＶＭＤＭＥ１３０は、ステップ２５０において、ネットワーク１７０又はホスト１５０の任意のリソースの変化の検出に応答して、デプロイ時間マトリクス１３５を更新する。ＶＭＤＭＥ１３０によって検出されるリソースの変化は、ホスト１５０間の任意のリンクの容量の変化、ソースホスト１４０と任意のホスト１５０との間の任意のリンクの容量の変化、ネットワーク１７０のトポロジの変化、ホスト１５０間のリンクの故障、及び１つ以上のホスト１５０のリソースの変化（ＣＰＵ若しくはメモリの利用率の変化又はディスクＩ／Ｏ活動の変化を含み得る）を含む。ＶＭＤＭＥ１３０がデプロイ時間マトリクス１３５に対して行う変更は、ホスト１５０間のデプロイ時間の更新、ソースホスト１４０とホスト１５０との間でのデプロイ時間の更新、及びホスト１５０間のリンクが現在、好ましい経路上にあるか否かを含む。前のデプロイ段階中に特定されるデプロイ時間及び他のメトリックを使用して、デプロイ時間及び好ましい経路情報を現在のデプロイ段階において更新し得る。さらに、任意のネットワーク１７０のリソースの変更が検出されない場合、デプロイ時間マトリクス１３５は変わらないままである。
【００４３】
デプロイプロセスは次に、ステップ２１０に戻り、ＶＭ１６０の全体デプロイの次の段階に好ましい経路を決定する。図２に示されるプロセスは、ステップ２００においてデプロイ要求で受信される全てのホスト１５０が完全にデプロイされるまで繰り返される。
【００４４】
図５Ａ、図５Ｂ、及び図５Ｃは、ＶＭＤＭＥ１３０の実施形態によって実行され、ＶＭの複数のコピーを複数のホスト１５０にデプロイするステップを示すブロック図であり、各ホスト１５０は別個のデータ記憶装置１８０に接続され、２つ以上のＶＭが各ホスト１５０にデプロイされるべきである。示される実施形態では、ＶＭＤＭＥ１３０は、ＶＭ１６０の３つのコピーをソースホスト１４０から３つのホスト１５０１、１５０２、及び１５０３のそれぞれにデプロイする。図５Ａ、図５Ｂ、及び図５Ｃに示されるＶＭデプロイは、図３Ｂに示されるデプロイ時間マトリクス１３５に基づいて決定される好ましい経路に従って進む。
【００４５】
任意のＶＭをデプロイする前に、ＶＭＤＭＥ１３０は、デプロイ時間マトリクス１３５を使用して、ソースホスト１４０からホスト１５０１への好ましい経路が、直接リンクを介してソースホスト１４０からホスト１５０１に進むことを決定し、これは、図３Ｂに示されるように、デプロイ時間１０分を有する。さらに、ＶＭＤＭＥ１３０は、ソースホスト１４０からホスト１５０２への好ましい経路がソースホスト１４０からホスト１５０１に進み、次にホスト１５０１からホスト１５０２に進むことを決定し、合計デプロイ時間は１５分である（すなわち、１０分＋５分）。最後に、ＶＭＤＭＥ１３０は、ソースホスト１４０からホスト１５０３に２つの好ましい経路があることを特定し、各経路は同じデプロイ時間を有する：（１）ソースホスト１４０からホスト１５０１（デプロイ時間１０分）、次にホスト１５０１からホスト１５０３に直接（１５分）、又は（２）ソースホスト１４０からホスト１５０１（１０分）、次にホスト１５０１からホスト１５０２（１０分）、次にホスト１５０２からホスト１５０３（５分）。したがって、ソースホスト１４０からホスト１５０３への好ましい各経路は同じデプロイ時間２５分（すなわち、１０分＋１５分＝１０分＋１０分＋５分）を有する。
【００４６】
図５Ａを参照すると、ＶＭＤＭＥ１３０は、ＶＭ１６０のコピーをＶＭ４６０１にデプロイし、これはホスト１５０１のデータ記憶装置１８０１に記憶される。図５Ｂでは、ＶＭ４６０１はホスト１５０１に首尾良くデプロイされている。ＶＭＤＭＥ１３０は次に、ソースホスト１４０からホスト１５０２への好ましい経路内の第２のリンクに従って、ホスト１５０１上のＶＭ４６０１の、ホスト１５０２上のＶＭ４６０４へのデプロイを開始する。また、上述したように、ホスト１５０１からホスト１５０２へのリンクも、ソースホスト１４０からホスト１５０３への好ましい第２の経路内のリンクでもある。したがって、ＶＭ４６０４へのＶＭ４６０１のデプロイは、ソースホスト１４０からのＶＭ１６０のデプロイをホスト１５０３に進ませる。さらに、ＶＭＤＭＥ１３０は、ソースホスト１４０からホスト１５０３への好ましい第１の経路内の第２のリンクに従って、ＶＭ４６０５への直接のＶＭ４６０１のデプロイを開始する。最後に、図５Ｂは、ＶＭ１６０の３つのコピーを各ターゲットホストにコピーすべきであるため、ＶＭＤＭＥがＶＭ４６０２及びＶＭ４６０３をホスト１５０１に「ローカルに」（すなわち、デプロイされたＶＭ４６０１をＶＭ４６０２及び４６０３にコピーすることにより）デプロイすることを示す。
【００４７】
図５Ｃに示されるように、ホスト１５０１上のＶＭ４６０２及び４６０３へのローカルデプロイが完了する。さらに、ホスト１５０２上のＶＭ４６０４へのデプロイ及びホスト１５０３上のＶＭ４６０５へのデプロイも完了している。したがって、ＶＭＤＭＥ１３０は、ＶＭ４６０４からホスト１５０２上のＶＭ４６０６及びＶＭ４６０７へのローカルデプロイ及びＶＭ４６０５からホスト１５０３上のＶＭ４６０８及びＶＭ４６０９へのローカルデプロイを開始する。なお、図５Ｂに示されたホスト１５０１からホスト１５０３へのデプロイは、ＶＭＤＭＥ１３０が図５Ｃに示されるデプロイを開始する前に既に開始されている（又は完了している）ため、図５Ｃでは、ホスト１５０２からホスト１５０３へのリンク（上述したように、ソースホスト１４０からホスト１５０３への好ましい第２の経路内のリンク）では、ＶＭのデプロイは必要なかった。
【００４８】
一実施形態によれば、ＶＭＤＭＥ１３０は、ＶＭＤＭＥ１３０にデプロイ時間を再計算させ得るコンピュータネットワーク１７０によって接続された複数のホスト１５０での１つ以上の変化イベントを検出し得る。変化イベントの例は、コンピュータネットワーク１７０での変化（例えば、待ち時間、接続性）、ホスト間の選択された（例えば、ソースホストコンピュータから第１のターゲットホストへの）経路に配置される１つ以上のホストの故障、及びホスト間の選択された（例えば、ソースホストコンピュータから第１のターゲットホストへの）経路に配置されるコンピュータネットワーク上の２つ以上のホスト間のリンクの故障を含み得る。更に詳細に後述するように、ＶＭＤＭＥ１３０は、複数のホスト間でのデプロイ時間の更新及び変更を行い、変更されたデプロイ時間に基づいて新しいデプロイ経路を選択し得る。
【００４９】
図６は、実施形態により、ソースを３つのホストに接続し、２つのホスト間のリンクに関連付けられたデプロイ時間が変化するネットワーク６００のブロック図である。示されるように、ソースホスト１４０はホスト１５０１、１５０２、及び１５０３のそれぞれにリンクされる。さらに、各ホスト１５０ａはその他の各ホスト１５０ｂにリンクされる。但し、ａ≠ｂである。デプロイ時間が各リンクに関連付けられる。イベント６１０は、４５分から１０分への、ソースホスト１４０からホスト１５０３へのリンクのデプロイ時間の変化を示す。
【００５０】
図６に示されるデプロイ時間の変化は、ＶＭＤＭＥ１３０の実施形態によって検出され、次に、デプロイ時間マトリクス１３５にその変更を反映させる。ＶＭＤＭＥ１３０が、図６に示される変化に応答してデプロイ時間マトリクス１３５に対して行う変更は、図７Ａ及び図７Ｂに示される。
【００５１】
図７Ａは、ソースホスト１４０からホスト１５０３へのデプロイ時間が変化する前の、図６に示されるコンピュータネットワークの状態を反映するデプロイ時間マトリクス１３５を示す。図７Ａに示されるように、以下のエントリが強調表示される：３行目、いかなる好ましい経路上にもない、ソースホスト１４０からホスト１５０３へのリンクを指す、７行目、ソースホスト１４０とホスト１５０３との間の好ましい経路上にある、ホスト１５０２からホスト１５０３へのリンクを指す、９行目、いかなる好ましい経路上にもない、ホスト１５０３からホスト１５０２へのリンクを指す。
【００５２】
ソースホスト１４０からホスト１５０３へのリンクのデプロイ時間が４５分から１０分に変化したことの検出に応答して、ＶＭＤＭＥ１３０は、図７Ａにおいて強調表示される３行を、図７Ｂに示されるように更新する。まず、ソースホスト１４０からホスト１５０３へのリンクに関する３行目を参照すると、デプロイ時間は４５分から１０分に更新される。さらに、デプロイ時間の短縮により、好ましい経路、すなわち、ソースホスト１４０とホスト１５０３との間の好ましい経路に現れる、ソース１４０からホスト１５０３へのリンクが生じる。したがって、「Ｙｅｓ」エントリが３行目の好ましい経路列に配置される。
【００５３】
なお、図７Ｂを参照すると、７行目は、ホスト１５０２からホスト１５０３へのリンクがもはや、いかなる好ましい経路上にもないことを反映するように更新される。変更６１０前に、ホスト１５０２からホスト１５０３へのリンクは、ソースホスト１４０からホスト１５０１（図６及び図７Ａでは、デプロイ時間１０分を有する）に進み、次にホスト１５０１からホスト１５０２（１０分）に進み、次にホスト１５０２からホスト１５０３（５分）に進む、ソースホスト１４０からホスト１５０３への好ましい経路の一部であった。したがって、変更６１０前、ソースホスト１４０からホスト１５０３への好ましい経路は、合計デプロイ時間１０分＋１０分＋５分＝２５分を有した。しかし、変更６１０後、ソースホスト１４０とホスト１５０３との間の新しいデプロイ時間は、ソースホスト１４０からホスト１５０３への新しい好ましい経路が、ソースホスト１４０とホスト１５０３との間のリンクであるため、１０分である。したがって、ソースホスト１４０からホスト１５０３への好ましい経路はもはや、ホスト１５０２からホスト１５０３へのリンクを含まない。ホスト１５０２からホスト１５０３へのリンクは、他のいかなる好ましい経路上にもないため、７行目の好ましい経路エントリは「Ｎｏ」に設定される。さらに、ホスト１５０２からホスト１５０３へのリンクは、いかなる好ましい経路上にもないため、７行目の前提条件列のエントリはリセットされる。
【００５４】
最後に、図７Ｂに示されるように、ＶＭＤＭＥ１３０は、変更６１０後、ホスト１５０３からホスト１５０２へのリンクが好ましい経路、すなわち、ソースホスト１４０からホスト１５０２への新しい好ましい経路の一部であることを反映するように、デプロイ時間マトリクス１３５の９行目を更新する。変更６１０前、ソースホスト１４０からホスト１５０２への好ましい経路は、ソースホスト１４０からホスト１５０１に進み（図６及び図７Ａに示されるように、デプロイ時間１０分を有した）、次にホスト１５０１からホスト１５０２に進んだ（１０分）。したがって、変更６１０前、ソースホスト１４０からホスト１５０２への好ましい経路は、合計デプロイ時間１０分＋１０分＝２０分を有した。しかし、変更６１０後、ソースホスト１４０からホスト１５０２への新しい好ましい経路は、ソースホスト１４０からホスト１５０３に進み（図７Ｂに示されるように、デプロイ時間１０分を有する）、次にホスト１５０３からホスト１５０２に進む（５分）。したがって、ソースホスト１４０からホスト１５０２への新しい好ましい経路は、合計デプロイ時間１０分＋５分＝１５分を有し、ホスト１５０３とホスト１５０２との間のリンクを含む。したがって、ＶＭＤＭＥ１３０は、デプロイ時間マトリクス１３５の９行目の好ましい経路列を「Ｙｅｓ」に設定する。最後に、図７Ｂは、９行目の前提条件列エントリが、ＶＭがホスト１５０３に首尾良くデプロイされた後、このリンクが好ましい経路上でデプロイ可能になったことを反映するように、ＶＭＤＭＥ１３０によって更新されることを示す。
【００５５】
図８Ａ、図８Ｂ、及び図８Ｃは、ＶＭＤＭＥ１３０の実施形態によって実行され、ネットワークリンクのデプロイ時間の変更に応答して、ＶＭ１６０のコピーをデプロイするステップを示すブロック図である。特に、示される実施形態は、ＶＭＤＭＥ１３０が、ソースホスト１４０とホスト１５０３との間のデプロイ時間の変更６１０を検出することに応答して、図６、図７Ａ、及び図７Ｂに記載のように、ソースホスト１４０からターゲットホスト１５０１、１５０２、及び１５０３にいかにデプロイするかを説明する。
【００５６】
図８Ａでは、ＶＭＤＭＥ１３０は、ソースホスト１４０からホスト１５０１へのＶＭ１６０のデプロイを開始する。続けて、ＶＭＤＭＥは変更６１０を検出する。変更６１０が行われる前に、ソースホスト１４０からホスト１５０１への好ましい経路は、図７Ａに示されるデプロイ時間マトリクス１３５から決定されるように、ソースホスト１４０からホスト１５０３への直接リンクである。さらに、変更６１０前、ホスト１４０からホスト１５０２及び１５０３のそれぞれへの好ましい経路は、ホスト１５０１を通過する。したがって、ＶＭＤＭＥ１３０は、ＶＭ１６０のコピーをホスト１５０１上のＶＭ４６０１にデプロイする。
【００５７】
図８Ａに更に示されるように、ＶＭＤＭＥ１３０は、ソースホスト１４０からホスト１５０３へのデプロイ時間の変更６１０を検出する。変更６１０の検出に応答して、ＶＭＤＭＥ１３０は、図７Ｂに示したように、変更を反映するようにデプロイ時間マトリクス１３５を更新する。上述したように、デプロイ時間の変更により、ソースホスト１４０からホスト１５０２及び１５０３への好ましい経路が変更される。特に、図６及び図７Ｂに示したように、ソースホスト１４０からホスト１５０２及び１５０３への新しい好ましい経路はホスト１５０３を通過する。したがって、ＶＭＤＭＥ１３０は、ソースホスト１４０からホスト１５０３上のＶＭ４６０２にＶＭ１６０をデプロイする。なお、ソースホスト１４０からホスト１５０１上のＶＭ４６０１へのデプロイは、ソースホスト１４０からホスト１５０１への好ましい経路が変更６１０によって影響を受けないため、変わらずに進められる。
【００５８】
図８Ｂに示されるように、ＶＭ４６０１はホスト１５０１に完全にデプロイされ、ＶＭ４６０２はホスト１５０３に完全にデプロイされる。ソースホスト１４０からホスト１５０２への新しい好ましい経路により、図６に示され、図７Ｂに示される更新されたデプロイ時間マトリクス１３５において更新されるように、ＶＭＤＭＥ１３０は、ＶＭ４６０２のコピーをホスト１５０２上のＶＭ４６０３にデプロイする。さらに、ＶＭＤＭＥ１３０は、ＶＭ１６０の３つのコピーを各ターゲットホストにデプロイすべきであるため、ホスト１５０３上のＶＭ４６０４及び４６０５へのＶＭ４６０２のローカルデプロイを開始する。最後に、図８Ｃに示されるように、ＶＭ４６０３はホスト１５０２に完全にデプロイされる。次に、ＶＭＤＭＥ１３０は、ＶＭ１６０の３つのコピーを各ターゲットホストにデプロイすべきであるため、ホスト１５０１上のＶＭ４６０６及び４６０７並びにホスト１５０２上のＶＭ４６０８及び４６０９のローカルデプロイを開始する。
【００５９】
ソースＶＭのデプロイの任意の段階中、ＶＭＤＭＥ１３０の実施形態は、コンピュータネットワーク１７０での１つ以上のホスト又はリンクの故障を検出し得る。故障の検出に応答して、ＶＭＤＭＥ１３０の実施形態は、検出された故障から回復するステップを実行して、ＶＭのデプロイを続ける。図９は、図１に示されるソースホスト１４０又はホスト１５０が故障したとの判断に応答して、ＶＭＤＭＥ１３０の実施形態が従うプロセスを示す流れ図である。ステップ９００において、ＶＭＤＭＥ１３０は、図２において先に説明したように、ソースＶＭの全体デプロイの現在段階においてコンピュータネットワーク１７０に接続されたホストの各対に好ましい経路を決定する。ステップ９１０において、全体デプロイの現在段階のソースホスト及びターゲットホストが決定される。ＶＭＤＭＥ１３０は次に、ステップ９２０において、現在のデプロイ段階のソースホストが利用可能であるか否かを判断する。ソースが利用可能ではない場合、ＶＭＤＭＥ１３０は、ステップ９２５において、任意のホスト１５０への任意のＶＭデプロイが首尾良く完了したか否かを判断する。ＶＭＤＭＥ１３０が、ＶＭが首尾良くデプロイされなかったと判断する場合、全体デプロイプロセスは、ステップ９６０において終了する。例えば、初期デプロイ段階中、任意のデプロイが完了する前に、ソースホスト１４０が故障する場合、故障したソースホスト１４０の代わりにデプロイ元となるデプロイＶＭが存在しないため、デプロイプロセスは終了する。しかし、ＶＭＤＭＥ１３０が、ステップ９２５において、ＶＭが首尾良くデプロイされたと判断する場合、ステップ９３５において、ＶＭＤＭＥ１３０は、既にデプロイされたホスト１５０から、まだデプロイされていないターゲットホストへの代替のデプロイ経路が存在するか否かを判断する。実施形態では、ＶＭＤＭＥ１３０は、デプロイ時間マトリクス１３５を使用してこの判断を行う。代替の経路が存在しないとＶＭＤＭＥ１３０が判断する場合、ステップ９４５において、ＶＭＤＭＥ１３０は、決定された代替の経路を介してＶＭのデプロイを開始する。
【００６０】
再びステップ９２０を参照すると、ＶＭＤＭＥ１３０が、現在のデプロイ段階のソースが利用可能であると判断する場合、ステップ９３０において、ＶＭＤＭＥ１３０は、現在のデプロイ段階の全てのターゲットホストが、好ましい経路上で利用可能であるか否かを判断する。ターゲットホストが利用可能な場合、ステップ９４０において、ＶＭＤＭＥ１３０は、現在のデプロイ段階において、ソースから各ターゲットホストに、好ましい経路を介してＶＭをデプロイし、好ましい経路はデプロイ時間マトリクス１３５から決定されている。しかし、ＶＭＤＭＥ１３０が、現在のデプロイ段階でのターゲットホスト１５０が好ましい経路上で利用可能ではないと判断する場合、ステップ９３５において、ＶＭＤＭＥ１３０は、ホスト１５０への代替のデプロイ経路が存在するか否かを判断する。ここでも、実施形態では、代替のデプロイ経路が、デプロイ時間マトリクス１３５に基づいて決定される。ＶＭＤＭＥ１３０が、ソースからターゲットホスト１５０への代替の経路があると判断する場合、ステップ９４５において、ＶＭＤＭＥ１３０は、決定された代替の経路を介するデプロイを開始する。その他の場合、ＶＭＤＭＥ１３０は、ステップ９６０において、現在のデプロイを終了する。
【００６１】
ステップ９４５において、ＶＭＤＭＥ１３０は、任意のＶＭデプロイが失敗したか否かを判断する。実施形態では、失敗したデプロイは、完了前に終了したＶＭの部分デプロイである。例えば、別のホスト１５０ｂからのホスト１５０ａのデプロイは、デプロイ中、ホスト１５０ａが故障する場合に失敗し得る。そのような場合、ホスト１５０ｂに部分的にデプロイされた（すなわち、ホスト１５０ｂが、失敗したＶＭデプロイをホストする）とＶＭＤＭＥ１３０が判断する。そのような判断がなされると、ステップ９５５において、ＶＭＤＭＥ１３０は、判断された失敗デプロイを削除し、現在のデプロイ段階を続ける。
【００６２】
図１０Ａ、図１０Ｂ、及び図１０Ｃは、ＶＭＤＭＥ１３０の実施形態によって実行され、ホスト１５０１、１５０２、及び１５０３のそれぞれへのＶＭ１６０の３つのコピーのデプロイ中、ソースホスト１４０の故障から回復するステップを示すブロック図である。図１０Ａを参照すると、ＶＭＤＭＥ１３０は、デプロイ時間マトリクス１３５から、ソースホスト１４０から各ホスト１５０への好ましい経路がソース１４０と各ホスト１５０との間のリンクであると判断しており、各ホストへのＶＭ１６０のコピーのデプロイを開始する。しかし、１０００において、ソースホスト１４０は故障する。図１０Ａに示されるように、故障１０００前に、ＶＭ１６０は、ホスト１５０１上のＶＭ４６０１に首尾良くデプロイされている。しかし、ホスト１５０２上のＶＭ４６０２及びホスト１５０３上のＶＭ４６０３へのデプロイは完了してない（すなわち、これらは失敗したデプロイである）。したがって、図１０Ａの１００１に示されるように、ＶＭＤＭＥ１３０はこれらの失敗したデプロイを削除する。
【００６３】
図１０Ｂは、ソースホスト１４０が故障したとＶＭＤＭＥ１３０が判断し、デプロイＶＭ４６０１をソースとして使用してデプロイを続けることを示す。したがって、ホスト１５０１からホスト１５０２及びホスト１５０３のそれぞれへの経路が利用可能であるため、ＶＭＤＭＥ１３０は、ホスト１５０２上のＶＭ４６０２及びホスト１５０３へのＶＭ４６０３へのＶＭ４６０１のデプロイに進む。さらに、ＶＭＤＭＥ１３０は、ＶＭ１６０の３つのコピーを各ホストにデプロイすべきであるため、ＶＭ４６０１からホスト１５０１上のＶＭ４６０４及び４６０５へのローカルデプロイを開始する。
【００６４】
図１０Ｃでは、ＶＭ４６０２はホスト１５０２に首尾良くデプロイされており、ＶＭ４６０２はホスト１５０３に首尾良くデプロイされている。したがって、ＶＭＤＭＥ１３０は、ＶＭ１６０の３つのコピーを各ホストにデプロイすべきであるため、ＶＭ４６０２からホスト１５０２上のＶＭ４６０６及び４６０７へのローカルデプロイ及びＶＭ４６０３からホスト１５０３上のＶＭ４６０８及び４６０９へのローカルデプロイを開始する。
【００６５】
さらに、ＶＭＤＭＥ１３０の実施形態は、コンピュータネットワークでの１つ以上のリンクの故障から回復するステップを実行する。図１１はコンピュータネットワーク１１００を示し、このネットワークでは、ソースホスト１４０及び３つのターゲットホスト１５０１、１５０２、及び１５０３がリンクされる。先に示したように、デプロイ時間が、ソースホスト１４０から各ホストへの各リンクに関連付けられる。さらに、１１１０において破線の十字で示されるように、ホスト１５０１と１５０２との間のリンクが故障する（fail）。
【００６６】
故障（failure）１１１０に応答して、ＶＭＤＭＥ１３０は、故障から生じる好ましい経路へのあらゆる変更を反映するように、デプロイ時間マトリクス１３５を更新する。図１２Ａは、故障１１１０前のデプロイ時間マトリクス１３５を示す。図１２Ｂは、故障１１１０後のデプロイ時間マトリクス１３５を示す。図１２Ｂに示されるデプロイ時間マトリクス１３５で強調表示されるように、４行目のホスト１５０１からホスト１５０２へのリンク及び６行目の逆のリンクが除去される。これは、図１２Ｂにおいて取り消し線で示される。
【００６７】
さらに、７行目は、ホスト１５０２から１５０３へのリンクを参照し、強調表示される。図１２Ａを参照すると、このリンクは、７行目の好ましい経路列の「Ｙｅｓ」エントリで示されるように、好ましい経路上に現れるものとして識別される。故障１１１０の前、ホスト１５０２からホスト１５０３へのリンクは、ソースホスト１４０から１５０３への好ましい経路の一部であり、好ましい経路は、（１）ソースホスト１４０からホスト１５０１へのリンク（デプロイ時間１０分を有する）、（２）ホスト１５０１へのホスト１５０２へのリンク（１０分）、及び（３）ホスト１５０２からホスト１５０３へのリンク（５分）を含む。したがって、故障１１１０の前、ソースホスト１４０からホスト１５０３への好ましい経路は、合計デプロイ時間１０分＋１０分＋５分＝２５分を有する。
【００６８】
しかし、故障１１１０の後、ソースホスト１４０からホスト１５０３への好ましい経路は、（１）ソースホスト１４０からホスト１５０１へのリンク（デプロイ時間１０分を有する）及び（２）ホスト１５０１からホスト１５０３へのリンク（２５分）を含む。したがって、故障１１１０の後、ソースホスト１４０からホスト１５０３への好ましい経路は、合計デプロイ時間１０分＋２５分＝３５分を有する。なお、ソースホスト１４０からホスト１５０３への好ましい経路はもはや、ホスト１５０２からホスト１５０３へのリンクを含まない。ホスト１５０２からホスト１５０３へのリンクはもはや、いかなる好ましい経路にもないため、デプロイ時間マトリクス１３５は、ＶＭＤＭＥ１３０が７行目の好ましい経路エントリを「Ｙｅｓ」から「Ｎｏ」に変更することによって更新される。また、ホスト１５０１からホスト１５０２へのリンクが好ましい経路上にあるため、５行目に示されるように、好ましい経路エントリは、「Ｎｏ」から「Ｙｅｓ」に変更される。加えて、図１２Ｂのデプロイ時間マトリクス１３５の９行目に示されるように、ホスト１５０３からホスト１５０２へのリンクは、ＶＭをまず、ホスト１５０３にデプロイしなければならないという前提条件を受けて、ホスト１５０３からホスト１５０２への好ましい経路上にデプロイ可能である。
【００６９】
図１３Ａ、図１３Ｂ、及び図１３Ｃは、ＶＭＤＭＥ１３０の実施形態によって実行され、図１１に示される故障１１１０に応答して、ソースホスト１４０上のＶＭ１６０の３つのコピーを３つのホスト１５０１、１５０２、及び１５０３のそれぞれにデプロイするステップを示す。図１３Ａでは、ＶＭＤＭＥ１３０は、図１２Ａに示されるデプロイ時間マトリクス１３５から決定される好ましい経路に従って、ＶＭのデプロイを開始する。したがって、ＶＭ１６０をまず、ホスト１５０１上のＶＭ４６０１にデプロイする。ＶＭ４６０１が首尾良くデプロイされた後、ＶＭＤＭＥ１３０は、ＶＭ４６０１からホスト１５０２上のＶＭ４６０２へのデプロイを開始する。図１３Ａに示されるように、故障１１１０は、ホスト１５０２へのデプロイが開始された後に発生する。したがって、故障１１１０が発生した後、部分的な（すなわち、失敗した）デプロイがホスト１５０２に存在する。したがって、ＶＭＤＭＥ１３０は、１３０１において、失敗したデプロイを削除する。図１３Ａに示されるように、故障１１１０に応答して、ＶＭＤＭＥはデプロイ時間マトリクスを更新し、新しい好ましい経路に基づいて、ＶＭ４６０３はホスト１５０１上のＶＭ４６０１からホスト１５０３にデプロイされる。ＶＭ１６０の３つのコピーを各ホストにデプロイすべきであるため、ＶＭＤＭＥ１３０は、ＶＭ４６０１からホスト１５０１上のＶＭ４６０４及び４６０５へのローカルデプロイも開始する。
【００７０】
図１３Ｂでは、ＶＭ４６０３はホスト１５０３に首尾良くデプロイされている。次に、ＶＭＤＭＥ１３０は、デプロイ時間マトリクス１３５を使用して、ホスト１５０２上のＶＭ４６０２をＶＭ４６０３からデプロイすべきと判断する。さらに、ＶＭＤＭＥ１３０は、ホスト１５０３へのＶＭのデプロイを完了するために、ＶＭ４６０３からＶＭ４６０６及び４６０７からのローカルデプロイを開始する。図１３Ｃを参照すると、ＶＭ４６０１、４６０４、及び４６０５はホスト１５０１に首尾良くデプロイされており、ＶＭ４６０３、４６０６、及び４６０７はホスト１５０３に首尾良くデプロイされている。さらに、ＶＭ４６０２はホスト１５０２に完全にデプロイされている。したがって、ＶＭＤＭＥ１３０は、ホスト１５０２上のＶＭ４６０８及び４６０９へのＶＭ４６０２のデプロイを開始し、ホスト１５０２へのデプロイを完了する。
【００７１】
したがって、本開示の実施形態は、デプロイ時間マトリクスを使用してＶＭをホストコンピュータ群にデプロイしクローニングするシステム及び方法を提供する。ＶＭのクローニング又はデプロイを行う既知の手法は、単一のソース仮想マシン又はテンプレートを基準としてとり、全てのクローン動作又はデプロイ動作は、その単一のソース仮想マシンから呼び出される。従来の手法を使用して、同じ宛先での同じソースＶＭの複数のインスタンスを作成すると、ソースホストからのデータ及び内容を、ありとあらゆるクローン動作又はデプロイ動作の宛先ホストにコピーする必要がある。さらに、ソースホスト及び宛先ホストが別個のエンティティである場合、あらゆるクローン動作又はデプロイ動作により、ＶＭデータはネットワークを通って移動して宛先に到達し、それにより、大量のネットワーク帯域幅を消費する。単一のソースＶＭを、デプロイ動作又はクローン動作の基準として使用することで、故障の単一の点（single point of failure）も導入される：ソースホストが故障するか、又はソースＶＭが破損する場合、全てのクローン動作又はデプロイ動作が影響を受ける。これとは対照的に、本開示の実施形態は、デプロイ時間マトリクスを使用して、ホストコンピュータ群にＶＭを分散してデプロイしクローニングすることによって上記問題に対処する改良された技法を提供する。
【００７２】
１つ以上の実施形態について、理解を明確にするためにいくらか詳細に説明したが、本開示の趣旨から逸脱せずに、特定の変更及び変形を行い得ることを認識されたい。本明細書に記載の様々な実施形態は、コンピュータシステムに記憶されたデータに関わる様々なコンピュータ実施動作を利用し得る。例えば、これらの動作は、物理数量の物理的な操作を必要とし得る−必ずしもではないが、通常、これらの数量は電気信号又は磁気信号の形態をとり得、それらの信号又はそれらの信号の表現は、記憶、転送、結合、比較、又は他の様式で操作することが可能である。さらに、そのような操作は多くの場合、生成、産出、識別、決定、又は比較等の用語で呼ばれる。本開示の１つ以上の実施形態の部分をなす本明細書に記載のあらゆる動作は、有用なマシン動作であり得る。加えて、本開示の１つ以上の実施形態は、これらの動作を実行するデバイス又は装置にも関する。装置は、必要とされる特定の目的に向けて特に構築されてもよく、又はコンピュータに記憶されたコンピュータプログラムによって選択的にアクティブ化されるか、若しくは構成される汎用コンピュータであってもよい。特に、様々な汎用マシンを、本明細書の教示に従って書かれたコンピュータプログラムと併用してもよく、又は必要とされる動作を実行するようにより専用化された装置を構築するほうが好都合であることもある。
【００７３】
本明細書に記載される様々な実施形態は、ハンドヘルド装置、マイクロプロセッサシステム、マイクロプロセッサベース若しくはプログラマブル消費者電子装置、ミニコンピュータ、メインフレームコンピュータ等を含む他のコンピュータシステム構成を用いて実施することもできる。
【００７４】
本開示の１つ以上の実施形態は、１つ若しくは複数のコンピュータプログラムとして、又は１つ若しくは複数のコンピュータ可読媒体において具現される１つ若しくは複数のコンピュータプログラムモジュールとして実施し得る。コンピュータ可読媒体という用語は、データを記憶することができる任意のデータ記憶装置を指し、その後、データをコンピュータシステムに入力することができるコンピュータ可読媒体は、コンピュータによって読み取れるようにコンピュータプログラムを具現する任意の既存又は後に開発される技術に基づき得る。コンピュータ可読媒体の例としては、ハードドライブ、ネットワーク接続ストレージ（ＮＡＳ）、読み取り専用メモリ、ランダムアクセスメモリ（例えば、フラッシュメモリ装置）、ＣＤ（コンパクトディスク）、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、又はＣＤ−ＲＷ、ＤＶＤ（デジタル多用途ディスク）、磁気テープ、並びに他の光学データ記憶装置及び非光学データ記憶装置が挙げられる。コンピュータ可読媒体は、コンピュータ可読コードが分散して記憶され実行されるように、ネットワーク結合コンピュータシステムに分散することもできる。
【００７５】
本開示の１つ以上の実施形態が、理解を明確にするためにいくらか詳細に説明されたが、特許請求の範囲内で特定の変更及び変形を行い得ることが理解されるだろう。したがって、記載される実施形態は、限定ではなく例示として考慮されるべきであり、特許請求の範囲は、本明細書において与えられる詳細に限定されるべきではなく、特許請求の範囲及びその均等物内で変更可能である。特許請求の範囲では、要素及び／又はステップは、特許請求の範囲において明示される場合を除き、いかなる特定の順序の動作も暗示しない。
【００７６】
多くの変更、変形、追加、及び改良が可能である。単数形として本明細書に記載される構成要素、動作、又は構造物に、複数形を提供し得る。様々な構成要素、動作、及びデータ記憶装置間の境界は、いくらか任意のものであり、特定の動作は、特定の例示的な構成の文脈の中で示される。機能の他の割り振りも考えられ、本開示の範囲内にあり得る。一般に、例示的な構成において別個の構成要素として提示される構造物及び機能は、結合された構造物又は構成要素として実施し得る。同様に、単一の構成要素として提示される構造物及び機能は別個の構成要素として実施し得る。これら及び他の変更、変形、追加、及び改良は、添付される特許請求の範囲内にあり得る。
【符号の説明】
【００７７】
１００  管理ホスト
１２０  管理サーバ
１３５  デプロイ時間マトリクス
１４０  ホスト
１４５  データ記憶装置
１４８  ハイパーバイザ
１５０  ターゲットホスト
１５０Ｍ  ホスト
１５０ａ  ホスト
１５０ｂ  ホスト
１５１  仮想ハードウェアプラットフォーム
１５２  ゲストオペレーティングシステム
１５３  ゲストアプリケーション
１５４  ＶＭ実行空間
１５６  ＣＰＵ
１５９  ハードウェアプラットフォーム
１６０  ＶＭイメージ
１６１  仮想マシンディスクファイル
１６２  ＶＭＸファイル
１６３  ログファイル
１７０  コンピュータネットワーク
１８０  データ記憶装置
３００  ネットワーク
６００  ネットワーク
１１００  コンピュータネットワーク
１５０  ホスト
１８０  データ記憶装置
【図１】
2015046159.tif 000003
【図２】
2015046159.tif 000004
【図３Ａ】
2015046159.tif 000005
【図３Ｂ】
2015046159.tif 000006
【図４Ａ】
2015046159.tif 000007
【図４Ｂ】
2015046159.tif 000008
【図４Ｃ】
2015046159.tif 000009
【図５Ａ】
2015046159.tif 000010
【図５Ｂ】
2015046159.tif 000011
【図５Ｃ】
2015046159.tif 000012
【図６】
2015046159.tif 000013
【図７Ａ】
2015046159.tif 000014
【図７Ｂ】
2015046159.tif 000015
【図８Ａ】
2015046159.tif 000016
【図８Ｂ】
2015046159.tif 000017
【図８Ｃ】
2015046159.tif 000018
【図９】
2015046159.tif 000019
【図１０Ａ】
2015046159.tif 000020
【図１０Ｂ】
2015046159.tif 000021
【図１０Ｃ】
2015046159.tif 000022
【図１１】
2015046159.tif 000023
【図１２Ａ】
2015046159.tif 000024
【図１２Ｂ】
2015046159.tif 000025
【図１３Ａ】
2015046159.tif 000026
【図１３Ｂ】
2015046159.tif 000027
【図１３Ｃ】
2015046159.tif 000028