(57)【要約】【課題】マイグレーション後に処理を再開するまでの時間を短縮することを課題とする。【解決手段】第１のＶＭホストが、第２のＶＭホストで実行される処理を中断させて第１のＶＭホストで実行する場合に、処理が中断するまでに第２のＶＭホストの記憶領域に格納したデータを第１のＶＭホストへ転送する際にかかる第１の時間を算出する。第１のＶＭホストは、中断した処理を最初から実行する際に用いるデータを当該データが格納される領域から第１のＶＭホストへ転送する際にかかる転送時間および中断するまでにかかった処理時間から第２の時間を算出する。第１のＶＭホストは、第１の時間が第２の時間より早い場合には、中断した処理を中断した時点から再開し、第２の時間が第１の時間より早い場合には、中断した処理を最初から実行する。【選択図】図１１
2015075898.tif 000002
【特許請求の範囲】
【請求項１】
第１のコンピュータが、
前記第１のコンピュータと異なる第２のコンピュータで実行される処理を中断させて前記第１のコンピュータで実行する場合に、前記処理が中断するまでに前記第２のコンピュータの記憶領域に格納したデータを前記第１のコンピュータへ転送する際にかかる第１の時間と、前記中断した処理を最初から実行する際に用いるデータを該データが格納される領域から前記第１のコンピュータへ転送する際にかかる転送時間および前記中断するまでにかかった処理時間から第２の時間とを算出し、
前記第１の時間が前記第２の時間より早い場合には、前記中断した処理を中断した時点から再開し、前記第２の時間が前記第１の時間より早い場合には、前記中断した処理を最初から実行する、
処理を含むことを特徴とする処理再開方法。
【請求項２】
前記実行する処理は、前記第２の時間が前記第１の時間より早いにも関らず、前記中断した処理に対応するアプリケーションが処理を最初から再実行できないアプリケーションである場合には、前記中断した処理を中断した時点から再開することを特徴とする請求項１に記載の処理再開方法。
【請求項３】
前記実行する処理は、移動元の前記第２のコンピュータと移動先の前記第１のコンピュータとがストレージ装置を共有している場合には、前記中断した処理を中断した時点から再開することを特徴とする請求項１に記載の処理再開方法。
【請求項４】
前記算出する処理は、前記第２のコンピュータまたは前記第１のコンピュータから、前記処理が中断したことまたは前記処理を再開することが通知された場合に、前記第１の時間と前記第２の時間とを算出することを特徴とする請求項１に記載の処理再開方法。
【請求項５】
第１のコンピュータに、
前記第１のコンピュータと異なる第２のコンピュータで実行される処理を中断させて前記第１のコンピュータで実行する場合に、前記処理が中断するまでに前記第２のコンピュータの記憶領域に格納したデータを前記第１のコンピュータへ転送する際にかかる第１の時間と、前記中断した処理を最初から実行する際に用いるデータを該データが格納される領域から前記第１のコンピュータへ転送する際にかかる転送時間および前記中断するまでにかかった処理時間から第２の時間とを算出し、
前記第１の時間が前記第２の時間より早い場合には、前記中断した処理を中断した時点から再開し、前記第２の時間が前記第１の時間より早い場合には、前記中断した処理を最初から実行する、
処理をさせることを特徴とする処理再開プログラム。
【請求項６】
第１のコンピュータと第２のコンピュータとを有する情報処理システムにおいて、
前記第１のコンピュータは、
前記第１のコンピュータで動作させる仮想マシンを前記第２のコンピュータにマイグレーションさせる移動制御部を有し、
前記第２のコンピュータは、
前記第１のコンピュータから前記第２のコンピュータに移動する仮想マシンが移動に伴って中断するまでに格納したデータを、前記第１のコンピュータに転送する際にかかる第１の時間を算出する第１算出部と、
前記中断した処理を最初から実行する際に用いるデータを当該データが格納される領域から前記第１のコンピュータへ転送する際にかかる転送時間および前記中断するまでにかかった処理時間から、第２の時間を算出する第２算出部と、
前記第１の時間が前記第２の時間より早い場合には、前記中断した処理を中断した時点から再開し、前記第２の時間が前記第１の時間より早い場合には、前記中断した処理を最初から実行する再開実行部と
を有することを特徴とする情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、処理再開方法、処理再開プログラムおよび情報処理システムに関する。
【背景技術】
【０００２】
物理サーバの物理リソースを用いて仮想マシン（ＶＭ：Virtual  Machine）を実行させる技術が知られており、例えばこのような物理サーバをＶＭホストと呼び、仮想マシンをＶＭゲストなどと呼ぶ。
【０００３】
また、ＶＭホスト上で動作するＶＭゲストを他のＶＭホストへ移動させるマイグレーション技術が知られている。例えば、メンテナンス等でＶＭホストを停止や再起動する場合に、メンテナンス対象のＶＭホスト上で動作するＶＭゲストを別のＶＭホストへ移動させて、ＶＭゲストが実行する業務を継続させる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−１７９１００号公報
【特許文献２】国際公開第２００４／０８６２４６号
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記技術では、ＶＭゲストがマイグレーション後に処理を再開するまでに時間がかかる場合がある。
【０００６】
例えば、管理装置は、マイグレーションを開始すると、マイグレーション対象のＶＭゲストの処理を一時停止し、ＶＭゲストが当該処理に使用するデータを移動元のＶＭホストから移動先のＶＭホストへ転送する。ＶＭゲストは、マイグレーションが完了した後であっても、データ転送が完了するまで処理を再開することができず、データ転送量が多い場合には、処理再開までに時間がかかる。
【０００７】
また、マイグレーションが完了した場合に、ＶＭゲストが、一時停止させていた処理を最初からやり直すことも考えられる。しかし、データの転送速度や残っている処理量等によっては、最初からやり直す場合よりもデータ転送の完了を待って処理を再開した方が処理全体を早く完了できる場合もある。
【０００８】
１つの側面では、マイグレーション後に処理を再開するまでの時間を短縮できる処理再開方法、処理再開プログラムおよび情報処理システムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
１つの態様では、第１のコンピュータが、前記第１のコンピュータと異なる第２のコンピュータで実行される処理を中断させて前記第１のコンピュータで実行する場合に、前記処理が中断するまでに前記第２のコンピュータの記憶領域に格納したデータを前記第１のコンピュータへ転送する際にかかる第１の時間を算出する。第１のコンピュータが、前記中断した処理を最初から実行する際に用いるデータを該データが格納される領域から前記第１のコンピュータへ転送する際にかかる転送時間および前記中断するまでにかかった処理時間から第２の時間を算出する。第１のコンピュータが、前記第１の時間が前記第２の時間より早い場合には、前記中断した処理を中断した時点から再開し、前記第２の時間が前記第１の時間より早い場合には、前記中断した処理を最初から実行する。
【発明の効果】
【００１０】
本発明の一側面として、マイグレーション後に処理を再開するまでの時間を短縮できる。
【図面の簡単な説明】
【００１１】
【図１】図１は、実施例１に係るシステムの全体構成例を示す図である。
【図２】図２は、実施例１に係るクラウド管理サーバの機能構成を示す機能ブロック図である。
【図３】図３は、ＶＭホスト管理テーブルに記憶される情報の例を示す図である。
【図４】図４は、ＶＭゲスト管理テーブルに記憶される情報の例を示す図である。
【図５】図５は、物理ストレージ管理テーブルに記憶される情報の例を示す図である。
【図６】図６は、仮想ストレージ管理テーブルに記憶される情報の例を示す図である。
【図７】図７は、仮想ディスク管理テーブルに記憶される情報の例を示す図である。
【図８】図８は、帯域管理テーブルに記憶される情報の例を示す図である。
【図９】図９は、ＶＭホストの階層構造の例を示す図である。
【図１０】図１０は、実施例１に係るＶＭホストの機能構成を示す機能ブロック図である。
【図１１】図１１は、実施例１に係るＶＭゲストの機能構成を示す機能ブロック図である。
【図１２】図１２は、アプリ特性テーブルに記憶される情報の例を示す図である。
【図１３】図１３は、再開判定を説明する図である。
【図１４】図１４は、実施例１に係る処理のシーケンス図である。
【図１５】図１５は、実施例１に係るクラウド管理サーバが実行する処理の流れを示すフローチャートである。
【図１６】図１６は、実施例１に係る移動元のＶＭホストが実行する処理の流れを示すフローチャートである。
【図１７】図１７は、実施例１に係る移動先のＶＭホストが実行するマイグレーション処理の流れを示すフローチャートである。
【図１８】図１８は、実施例１に係る移動先のＶＭホストが実行するＩ／Ｏ要求処理の流れを示すフローチャートである。
【図１９】図１９は、実施例１に係る移動対象のＶＭゲストが実行する処理の流れを示すフローチャートである。
【図２０】図２０は、実施例２に係る処理のシーケンス図である。
【図２１】図２１は、実施例２に係るクラウド管理サーバが実行する処理の流れを示すフローチャートである。
【図２２】図２２は、実施例２に係る移動元のＶＭホストが実行する処理の流れを示すフローチャートである。
【図２３】図２３は、実施例２に係る移動対象のＶＭゲストが実行する処理の流れを示すフローチャートである。
【図２４】図２４は、ハードウェア構成例を示す図である。
【発明を実施するための形態】
【００１２】
以下に、本願の開示する処理再開方法、処理再開プログラムおよび情報処理システムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例１】
【００１３】
［全体構成図］
図１は、実施例１に係るシステムの全体構成例を示す図である。図１に示すように、このシステムは、ストレージ装置２、ストレージ装置３、クラウド管理サーバ１０、ＶＭホスト３０、ＶＭホスト６０を有する。各ＶＭホストは、仮想マシンであるＶＭゲストを動作させる。また、各装置は、ネットワーク５を介して接続される。
【００１４】
図１に示すシステムは、クラウドシステムを提供するクラウド事業者が提供するシステムである。具体的には、クラウド事業者は、クラウドシステムの利用者が所望するＶＭゲストを動作させるための環境を提供する。
【００１５】
クラウド利用者は、クラウド事業者が提供する環境をネットワーク５経由で利用する。具体的には、クラウド利用者が、端末等を用いてＶＭゲストの配備要求をクラウド管理サーバ１０に送信すると、クラウド管理サーバ１０が、図１に示した各装置を用いてＶＭゲストをシステム上に配備する。クラウド利用者は、配備されたＶＭゲストをネットワーク５経由で利用する。
【００１６】
ここで、クラウド事業者がＶＭゲストを配備する際に利用する各装置について説明する。クラウド管理サーバ１０は、システム内の各ストレージ装置、ＶＭホスト、ＶＭゲストなどを管理するサーバ装置である。このクラウド管理サーバ１０は、ＶＭゲストの生成、削除、マイグレーションを実行するサーバ装置である。
【００１７】
ストレージ装置２は、ＶＭホスト３０やＶＭホスト３０で動作する各ＶＭゲストが使用するデータ等を記憶する記憶装置であり、ＶＭホスト３０とクラウド管理サーバ１０とがアクセスすることができる。
【００１８】
ストレージ装置３は、ＶＭホスト６０やＶＭホスト６０で動作する各ＶＭゲストが使用するデータ等を記憶する記憶装置であり、ＶＭホスト６０とクラウド管理サーバ１０とがアクセスすることができる。
【００１９】
なお、この例では、各ＶＭホストと各ストレージ装置とが別々の筐体で実現される例を説明するが、これに限定されるものではない。例えば、各ＶＭホストが内部にストレージ装置を有していてもよい。また、各ＶＭホストで共有するストレージ装置を採用することもできる。
【００２０】
ＶＭホスト３０は、プロセッサ、メモリ、ハードウェアなどの物理リソースを用いてＶＭゲストを実行する物理サーバである。このＶＭホスト３０で実行されるＶＭゲスト４０は、ストレージ装置２にアクセスして、データの格納や読み出しを実行する。
【００２１】
同様に、ＶＭホスト６０は、プロセッサ、メモリ、ハードウェアなどの物理リソースを用いてＶＭゲストを実行する物理サーバである。このＶＭホスト６０で実行されるＶＭゲスト７０は、ストレージ装置３にアクセスして、データの格納や読み出しを実行する。
【００２２】
このようなシステムでは、クラウド事業者等の都合により、ＶＭゲストをマイグレーションさせる場合がある。具体的には、ＶＭホストにパッチを適用したり、ＶＭホストの物理的な故障により部品の交換が発生したりして、ＶＭホストを停止または再起動する場合に、ＶＭゲストを別のＶＭホストにマイグレーションさせて、ＶＭゲストの業務を継続させる。
【００２３】
そして、ＶＭホストは、ＶＭゲストのマイグレーションが発生した場合に、ＶＭゲストの処理を中断させてマイグレーションさせることになるが、マイグレーション後に処理を再開するまでの時間を短縮できる。
【００２４】
具体的には、ＶＭホストが動作させるＶＭゲストは、第２のＶＭホストから第１のＶＭホストに移動する前に使用していた記憶領域に記憶されるデータを、第２のＶＭホストから第１のＶＭホストに転送する場合にかかる第１の時間を算出する。また、ＶＭゲストは、移動に伴って中断した処理の実行に用いるデータを第２のＶＭホストから第１のＶＭホストへ転送する場合にかかる転送時間と、中断するまでに実行された処理にかかった処理時間とから、第２の時間を算出する。その後、ＶＭゲストは、第１の時間が第２の時間より早い場合には、中断した処理を中断した時点から再開し、第２の時間が第１の時間より早い場合には、中断した処理を最初から実行する。
【００２５】
したがって、ＶＭゲストが、マイクレーション先で、マイグレーションで中断した途中データを転送して処理再開するまでの時間と、最初からやり直すまでにかかる時間を算出し、時間が早い方を選択するので、処理を早く再開できる。
【００２６】
［クラウド管理サーバの構成］
図２は、実施例１に係るクラウド管理サーバの機能構成を示す機能ブロック図である。図２に示すように、クラウド管理サーバ１０は、通信制御部１１、記憶部１２、制御部２０を有する。
【００２７】
通信制御部１１は、他の装置の間の通信を制御する処理部であり、例えばネットワークインタフェースカードなどである。例えば、通信制御部１１は、利用者の端末からＶＭゲストの配備要求を受信し、クラウド管理者の端末やＶＭホストやＶＭゲストから各種要求を受信する。また、通信制御部１１は、利用者の端末にＶＭゲストの配備結果を送信し、クラウド管理者の端末やＶＭホストやＶＭゲストから各種応答を送信する。
【００２８】
記憶部１２は、メモリやハードディスクなどの記憶装置であり、制御部２０が実行するプログラムなどを記憶する。この記憶部１２には、ＶＭホスト管理テーブル１３、ＶＭゲスト管理テーブル１４、物理ストレージ管理テーブル１５、仮想ストレージ管理テーブル１６、仮想ディスク管理テーブル１７、帯域管理テーブル１８が記憶される。
【００２９】
ＶＭホスト管理テーブル１３は、クラウドシステム内の物理サーバであるＶＭホストに関する情報を管理するテーブルである。図３は、ＶＭホスト管理テーブルに記憶される情報の例を示す図である。図３に示すように、ＶＭホスト管理テーブル１３は、「ＶＭホストＩＤ、Ｐｏｄ  ＩＤ、ＩＰ（Internet  Protocol）アドレス、状態、ＶＭゲスト割当り量、参照可能仮想ストレージＩＤ」を対応付けて記憶する。
【００３０】
ここで記憶される「ＶＭホストＩＤ」は、ＶＭホストを識別する識別子であり、例えばホスト名などである。「Ｐｏｄ  ＩＤ」は、属するクラウドのグループを識別する識別子である。「ＩＰアドレス」は、ＶＭホストに設定されているＩＰアドレスである。「状態」は、ＶＭホストの稼動状況を示す情報であり、稼動中の場合には「稼動中」、保守中の場合には「保守中」、停止中の場合には「停止中」が設定される。
【００３１】
「ＶＭゲスト割当て量」は、ＶＭホストで動作可能なＶＭゲストの最大数と、そのうちどのくらいのＶＭゲストが動作しているかを示す情報である。「参照可能仮想ストレージＩＤ」は、ＶＭホストが参照することができる仮想ストレージを識別する識別子である。なお、仮想ストレージとは、例えば１つ以上の物理ストレージを用いて論理的に構築された仮想的なストレージである。
【００３２】
図３の場合、ＶＭホストＩＤが「Ｈｏｓｔ＿００１」であるＶＭホストには、クラウドグループ「Ａ」に属し、ＩＰアドレスとして「192.168.1.10」が設定されている。この「Ｈｏｓｔ＿００１」であるＶＭホストは、「稼動中」であり、動作可能なＶＭの台数が「２０台」でそのうち「５台」が動作中であり、「ＶＳ＿００１」の仮想ストレージにアクセスすることができる。
【００３３】
別例では、ＶＭホストＩＤが「Ｈｏｓｔ＿１０１」であるＶＭホストには、クラウドグループ「Ｂ」に属し、ＩＰアドレスとして「192.168.2.2」が設定されている。この「Ｈｏｓｔ＿１０１」であるＶＭホストは、「保守中」であり、動作可能なＶＭの台数が「１２台」で１台も動作していない状態で、「ＶＳ＿１０１」の仮想ストレージにアクセスすることができる。
【００３４】
ＶＭゲスト管理テーブル１４は、ＶＭホスト上で動作するＶＭゲストに関する情報を記憶するテーブルである。図４は、ＶＭゲスト管理テーブルに記憶される情報の例を示す図である。図４に示すように、ＶＭゲスト管理テーブル１４は、「ＶＭゲストＩＤ、ＶＭホストＩＤ、ＩＰアドレス、状態、割当て仮想ディスクＩＤ」を対応付けて記憶する。
【００３５】
ここで記憶される「ＶＭゲストＩＤ」は、ＶＭゲストを識別する識別子である。「ＶＭホストＩＤ」は、ＶＭゲストを動作させるＶＭホストを識別する識別子であり、例えばホスト名などである。「ＩＰアドレス」は、ＶＭゲストに設定されているＩＰアドレスである。「状態」は、ＶＭゲストの稼動状況を示す情報であり、稼動中の場合には「稼動中」、停止中の場合には「停止中」、マイグレーションン中の場合には「移動中」などが設定される。「割当て仮想ディスクＩＤ」は、ＶＭゲストに割当てられた仮想ディスクを識別する識別子であり、ＶＭゲストがアクセス可能な仮想ディスクの情報である。
【００３６】
例えば、図４の場合、ＶＭゲストＩＤが「Ｇｕｅｓｔ＿０１」であるＶＭゲストは、ＶＭホストＩＤが「Ｈｏｓｔ＿００１」であるＶＭホスト上で動作しており、ＩＰアドレスとして「192.168.10.20」が設定されており、現在は「停止中」である。このＶＭゲストは、「ＶＤＩＳＫ＿００１」で識別される仮想ディスクと「ＶＤＩＳＫ＿００２」で識別される仮想ディスクにアクセス可能であり、これらの仮想ディスクのデータを格納していることを示す。
【００３７】
また、ＶＭゲストＩＤが「Ｇｕｅｓｔ＿０２」であるＶＭゲストは、ＶＭホストＩＤが「Ｈｏｓｔ＿００２」であるＶＭホスト上で動作しており、ＩＰアドレスとして「192.168.11.30」が設定されており、現在は「稼働中」である。このＶＭゲストは、「ＶＤＩＳＫ＿０３０」で識別される仮想ディスクにアクセス可能であり、これらの仮想ディスクのデータを格納していることを示す。
【００３８】
物理ストレージ管理テーブル１５は、クラウドシステム上の物理ストレージに関する情報を記憶するテーブルである。図５は、物理ストレージ管理テーブルに記憶される情報の例を示す図である。図５に示すように、物理ストレージ管理テーブル１５は、「ストレージＩＤ、ＩＰアドレス（管理）、ＩＰアドレス（アクセス）、状態、使用量」を対応付けて記憶する。
【００３９】
ここで記憶される「ストレージＩＤ」は、ストレージ装置を識別する識別子である。「ＩＰアドレス（管理）」は、ストレージ装置の保守等に利用するＩＰアドレスであり、管理者端末がこのＩＰアドレスにアクセスして保守管理を行う。「ＩＰアドレス（アクセス）」は、ＶＭホストやＶＭゲストがアクセスするＩＰアドレスであり、ユーザ端末は、このＩＰアドレスにアクセスすることで、データの書き込みや読み出しを実行できる。
【００４０】
「状態」は、ストレージ装置の稼動状況を示す情報であり、稼動中の場合には「稼動中」、保守中の場合には「保守中」、停止中の場合には「停止中」が設定される。「使用量」は、物理ストレージ装置の使用容量を示す情報であり、最大容量および使用容量が設定される。
【００４１】
図５の場合、ストレージＩＤが「Ｓ＿Ａ０１」であるストレージは、管理用のＩＰアドレスとして「192.168.100.2」が設定されており、アクセス用のＩＰアドレスとして「192.168.1.131」が設定されており、現在は「稼動中」である。そして、このストレージは、最大容量が２ＴＢであり、そのうち３００ＧＢが使用されていることを示す。
【００４２】
仮想ストレージ管理テーブル１６は、物理ストレージを用いて提供される仮想ストレージに関する情報を記憶するテーブルである。図６は、仮想ストレージ管理テーブルに記憶される情報の例を示す図である。図６に示すように、仮想ストレージ管理テーブル１６は、「仮想ストレージＩＤ、物理ストレージＩＤ、使用量」を対応付けて記憶する。
【００４３】
ここで記憶される「仮想ストレージＩＤ」は、仮想ストレージを識別する識別子である。「物理ストレージＩＤ」は、仮想ストレージを提供する物理ストレージを識別する識別子である。「使用量」は、仮想ストレージ装置の使用容量を示す情報であり、最大容量および使用容量が設定される。
【００４４】
図６の場合、仮想ストレージＩＤが「ＶＳ＿００１」である仮想ストレージは、物理ストレージＩＤが「Ｓ＿Ａ０１」である物理ストレージと「Ｓ＿Ａ０２」である物理ストレージとによって提供される。この仮想ストレージの最大容量は４ＴＢであり、そのうち７５０ＧＢが使用されていることを示す。
【００４５】
仮想ディスク管理テーブル１７は、ＶＭゲストがアクセス可能な仮想ディスクに関する情報を管理するテーブルである。なお、仮想ディスクとは、例えば仮想ストレージによって提供される論理的な記憶領域である。図７は、仮想ディスク管理テーブルに記憶される情報の例を示す図である。図７に示すように、仮想ディスク管理テーブル１７は、「仮想ディスクＩＤ、仮想ストレージＩＤ、容量」を対応付けて記憶する。
【００４６】
ここで記憶される「仮想ディスクＩＤ」は、仮想ディスクを識別する識別子である。「仮想ストレージＩＤ」は、仮想ディスクを保持する仮想ストレージを識別する識別子である。「容量」は、仮想ディスクの記憶容量である。
【００４７】
図７の場合、仮想ディスクＩＤが「ＶＤＩＳＫ＿０３０」である仮想ディスクは、仮想ストレージＩＤが「ＶＳ＿００１」である仮想ストレージ上に存在し、１０ＧＢの容量が割り与えられていることを示す。
【００４８】
帯域管理テーブル１８は、クラウド上の帯域を管理するテーブルである。図８は、帯域管理テーブルに記憶される情報の例を示す図である。図８に示すように、帯域管理テーブル１８は、各Ｐｏｄ間の帯域を記憶する。例えば、Ｐｏｄ  ＩＤが「Ａ」のグループとＰｏｄ  ＩＤが「Ｂ」のグループとの間の回線は２００Ｍｂｐｓであることを示す。同様に、Ｐｏｄ  ＩＤが「Ａ」のグループとＰｏｄ  ＩＤが「Ｃ」のグループとの間の回線は１００Ｍｂｐｓであり、Ｐｏｄ  ＩＤが「Ｂ」のグループとＰｏｄ  ＩＤが「Ｃ」のグループとの間の回線は５００Ｍｂｐｓであることを示す。
【００４９】
制御部２０は、プロセッサなどの電子回路であり、クラウド管理サーバ１０全体の処理を司る処理部である。この制御部２０は、クラウド管理部２１とマイグレーション実行部２２とを有する。例えば、クラウド管理部２１やマイグレーション実行部２２は、制御部２０が実行するプロセスの一例やプロセッサが有する電子回路の一例である。
【００５０】
クラウド管理部２１は、図１に示したクラウドシステムを管理する処理部である。例えば、クラウド管理部２１は、管理者等からＶＭホスト、ＶＭゲスト、物理ストレージ、仮想ストレージ、仮想ディスク、帯域などの情報を管理者等から受け付けて、該当するテーブルを更新する。また、クラウド管理部２１は、ＶＭホストやＶＭゲストの状態、各ストレージやディスクの使用量を監視し、該当するテーブルを更新する。
【００５１】
マイグレーション実行部２２は、ＶＭゲストのマイグレーションを実行する処理部である。具体的には、マイグレーション実行部２２は、管理者からマイグレーション指示を受け付けた場合やＶＭホストの故障等が発生したことを検知した場合に、当該ＶＭホストで動作するＶＭゲストを他のＶＭホストへマイグレーションさせる。
【００５２】
なお、マイグレーションは一般的なマイグレーションと同様であるので、詳細な説明は省略する。例えば、マイグレーション実行部２２は、移動元のＶＭホストに該当ＶＭゲストの処理停止や移動先のＶＭホストにマイグレーションが発生する旨を通知する。そして、マイグレーション実行部２２は、該当するＶＭゲストのメモリ情報、レジスタなどのプロセッサに関する情報等を、移動元のＶＭホストから移動先のＶＭホストへコピーする。
【００５３】
［ＶＭホストの階層構造］
図９は、ＶＭホストの階層構造の例を示す図である。なお、ここでは、一例として１台のＶＭホストでＶＭを動作させる例を説明する。また、ここでは、一例としてＶＭホスト３０を例にして説明する。
【００５４】
ＶＭホスト３０は、一般的な物理サーバであり、ハードウェア、プロセッサ、メモリ等を有する。具体的には、図９に示すように、ＶＭホスト３０は、ハードウェア３０ａ上でオペレーティングシステム３０ｂを動作させ、オペレーティングシステム３０ｂを用いてハイパーバイザなどの仮想化ソフトウェア３０ｃを動作させて、仮想環境を提供する。また、仮想化ソフトウェア３０ｃは、複数のＶＭゲストを動作させる。なお、ここで示した階層構造は、仮想化技術の一例を用いて実装した場合を例示したものであり、これに限定されるものではなく、他の一般的な仮想化技術を用いることができる。
【００５５】
［ＶＭホストの機能構成］
図１０は、実施例１に係るＶＭホストの機能構成を示す機能ブロック図である。なお、ＶＭホスト３０とＶＭホスト６０とは同様の構成を有するので、ここでは、ＶＭホスト３０を例にして説明する。図１０に示すように、ＶＭホスト３０は、通信制御部３１、記憶部３２、制御部３３を有する。
【００５６】
なお、ＶＭホスト６０は、通信制御部３１と同様の処理を実行する通信制御部６１、記憶部３２と同様の情報を記憶する記憶部６２、制御部３３と同様の処理を実行する制御部６３を有するものとする。また、制御部６３は、リソース割当部３４と同様の処理を実行するリソース割当部６４と、通知部３５と同様の処理を実行する通知部６５とを有する。
【００５７】
通信制御部３１は、他の装置の間の通信を制御する処理部であり、例えばネットワークインタフェースカードなどである。例えば、通信制御部３１は、クラウド管理サーバ１０からマイグレーション指示等の各種要求を受信する。また、通信制御部３１は、ＶＭホスト３０が移動先のＶＭホストである場合、移動元のＶＭホストからマイグレーションにかかるＶＭゲストの情報や仮想ディスクに記憶される情報を受信する。同様に、通信制御部３１は、ＶＭホスト３０が移動元のＶＭホストである場合、マイグレーションにかかるＶＭゲストの情報や仮想ディスクに記憶される情報を移動先のＶＭホストに送信する。
【００５８】
記憶部３２は、メモリやハードウェアなどの記憶装置である。記憶部３２は、制御部３３が実行する各種プログラムや各種データなどを記憶する。
【００５９】
制御部３３は、プロセッサなどの電子回路であり、リソース割当部３４と通知部３５とを有する。なお、リソース割当部３４と通知部３５は、プロセッサが実行するプロセスの一例やプロセッサが有する電子回路の一例である。
【００６０】
リソース割当部３４は、ＶＭゲストへの物理リソースの割当を制御する処理部である。具体的には、リソース割当部３４は、メモリ、プロセッサ、通信インタフェースなどのハードウェアをＶＭゲストに割当てて、ＶＭゲストを動作させる。また、リソース割当部３４は、ＶＭゲストが停止した場合に、当該ＶＭゲストに割当てていたハードウェアの割当を終了し、割当てられていたリソースを解放する。
【００６１】
例えば、リソース割当部３４は、ＶＭホスト３０が有するプロセッサにおける所定処理能力をＶＭが使用するプロセッサとして割り当てる。こうすることで、リソース割当部３４は、ＶＭゲストに仮想的なプロセッサを割り当てる。また、リソース割当部３４は、ＶＭホスト３０が有するメモリにおける所定領域をＶＭが使用するメモリとして割り当てる。こうすることで、リソース割当部３４は、ＶＭゲストに仮想的なメモリを割り当てる。
【００６２】
通知部３５は、マイグレーションに関する情報をＶＭゲストに通知する処理部である。例えば、通知部３５は、ＶＭホスト３０にマイグレーションしてきたＶＭゲストに対して、マイグレーションが実行されて完了したことを通知する。また、通知部３５は、ＶＭホスト３０からマイグレーションするＶＭゲストに対して、マイグレーションが開始されることを通知する。
【００６３】
［ＶＭゲストの機能構成］
図１１は、実施例１に係るＶＭゲストの機能構成を示す機能ブロック図である。なお、各ＶＭゲストは同様の構成を有するので、ここでは、ＶＭゲスト４０として説明する。図１１に示すように、ＶＭゲスト４０は、通信制御部４１、記憶部４２、制御部４４を有する。
【００６４】
通信制御部４１は、他の装置の通信を制御するインタフェースであり、ＶＭホストの物理インタフェースを用いて構築された仮想インタフェースである。例えば、通信制御部４１は、マイグレーションの開始、完了などをＶＭホストから受信する。また、通信制御部４１は、他のＶＭゲストや利用者端末等から各種データや指示を受信する。
【００６５】
記憶部４２は、ＶＭホストのメモリやハードディスクを用いて構築された仮想的な記憶装置であり、例えば仮想メモリなどである。この記憶部４２は、制御部４４が実行するプログラムを記憶し、アプリ特性テーブル４３を記憶する。
【００６６】
アプリ特性テーブル４３は、ＶＭゲスト４０が実行するアプリケーションに関する情報を記憶するテーブルである。図１２は、アプリ特性テーブルに記憶される情報の例を示す図である。図１２に示すように、アプリ特性テーブル４３は、「アプリ名、巻き戻し可否、入力データサイズ、出力データサイズ」を対応付けて記憶する。なお、ここで記憶される情報は一例であり、例えばプログラムの格納位置などをさらに記憶することもできる。
【００６７】
ここで記憶される「アプリ名」は、アプリケーションを識別する識別しである。「巻き戻し可否」は、処理を巻き戻して実行できるアプリケーションか否かを示す情報であり、処理中で再実行可能か否かを示す。「入力データサイズ」は、アプリケーションの実行に利用される入力データのサイズである。例えば、バッチジョブを実行するアプリケーションの場合、「処理プログラム＋入力データ＝入力データサイズ」となる。「出力データサイズ」は、アプリケーションが出力したデータのサイズである。
【００６８】
一例を挙げると、バッチジョブを実行するアプリケーションの場合、「入力データサイズ＝処理プログラム（１ＫＢ）＋入力データ（１ＧＢ）＝１０２４．１ＭＢ」となり、「出力データサイズ＝０ＭＢ」となる。また、チェックポイントを行うアプリケーションの場合、「入力データサイズ＝０ＭＢ」となり、「出力データサイズ＝チェックポイントで保存した途中結果のデータサイズ」となる。
【００６９】
図１２の例では、巻き戻し可否に「Ｔｒｕｅ」が設定される「アプリＡ」は、途中から再実行が可能なバッチジョブであることを示す。また、巻き戻し可否に「Ｆａｌｓｅ」が設定される「アプリＢ」は、途中からの再実行が好ましくないジョブであることを示す。
【００７０】
制御部４４は、ＶＭホストのプロセッサを用いて構築された仮想プロセッサなどである。この制御部４４は、アプリ実行部４５、通知受信部４６、第１時間算出部４７、第２時間算出部４８、判定部４９を有する。なお、各処理部は、制御部４４が実行するプロセスの一例である。
【００７１】
アプリ実行部４５は、所望のアプリケーションを実行する処理部である。例えば、アプリ実行部４５は、利用者等から指示されたアプリケーションのプログラムを記憶部４２から読み出して実行する。
【００７２】
また、アプリ実行部４５は、マイグレーションが開始されると実行中のアプリケーションを中断する。そして、アプリ実行部４５は、判定部４９から通知された方法で、中断したアプリケーションを再開する。例えば、アプリ実行部４５は、中断した時点から再開したり、中断するまでの処理を破棄して最初から再開したりする。
【００７３】
通知受信部４６は、マイグレーションの開始や完了に関する通知を受信する処理部である。なお、通知受信部４６は、各通知を受信した場合、通知内容等を第１時間算出部４７、第２時間算出部４８等に通知する。
【００７４】
例えば、通知受信部４６は、マイグレーション対象である当該ＶＭゲスト３０のマイグレーションが実行される前に、移動元のＶＭホストから、マイグレーション対象であることとマイグレーションが開始されることとを受信する。また、通知受信部４６は、マイグレーション対象である当該ＶＭゲスト３０のマイグレーションが完了される前に、移動先のＶＭホストから、マイグレーションが完了したことを受信する。
【００７５】
第１時間算出部４７は、マイグレーションするＶＭゲストが移動前に使用していた記憶領域に記憶されるデータを、移動元のＶＭホストから移動先のＶＭホストに転送する場合にかかる第１の時間を算出する処理部である。具体的には、第１時間算出部４７は、通知受信部４６からマイグレーションの開始や完了が通知されると、マイグレーション対象のＶＭゲストに割当てられる仮想ディスクに記憶されるデータを移動元から移動先へ転送する際にかかるデータ転送時間を算出する。
【００７６】
例えば、データ転送時間を「Ｔｄａｔａ」、入力データサイズ（処理プログラム＋入力データ）を「Ｓｊｏｂ」、出力データサイズを「Ｓｏｕｔ」、マイグレーション元と先との間の利用可能な帯域を「Ｂｗｗ」と仮定する。この場合、第１時間算出部４７は、「Ｔｄａｔａ＝（Ｓｊｏｂ＋Ｓｏｕｔ）／Ｂｗｗ」を第１の時間として算出する。そして、第１時間算出部４７は、算出結果を判定部４９に出力する。
【００７７】
第２時間算出部４８は、ＶＭゲストがマイグレーションに伴って中断した処理の実行に用いるデータを移動元から移動先へ転送する場合にかかる転送時間と、中断するまでに実行された処理にかかった処理時間とから、第２の時間を算出する処理部である。
【００７８】
具体的には、第２時間算出部４８は、通知受信部４６からマイグレーションの開始や完了が通知されると、アプリケーションのプログラム、言い換えるとジョブを移動元から取得するのにかかるジョブの再取得時間を算出する。また、第２時間算出部４８は、マイグレーション先でアプリケーションを最初からやり直した場合に、中断点に到達するまでにかかる所要時間を算出する。その後、第２時間算出部４８は、ジョブの再取得時間と所要時間と加算して、第２の時間を算出する。
【００７９】
例えば、ジョブの再取得時間を「Ｔｇｅｔ」、入力データサイズ（処理プログラム＋入力データ）を「Ｓｊｏｂ」、マイグレーション元と先との間の利用可能な帯域を「Ｂｗｗ」と仮定する。また、ジョブの中断点に到達するまでの所要時間を「Ｔｅｘｅ」と仮定する。なお、「Ｔｅｘｅ」は、いわゆるＣＰＵ（Central  Processing  Unit）タイムであり、アプリケーションの監視やログ等から取得することができる。
【００８０】
この場合、第２時間算出部４８は、「Ｔｇｅｔ＝Ｓｊｏｂ／Ｂｗｗ」と算出し、「第２の時間＝Ｔｇｅｔ＋Ｔｅｘｅ」を算出し、算出結果を判定部４９に出力する。なお、図１に示したクラウドシステムがマスタ・ワーカ型のシステムである場合には、Ｂｗｗの代わりに、マスタサーバとマイグレーション先の間の利用可能な帯域である「Ｂｍｗ」を用いる。
【００８１】
マスタ・ワーカ型のシステムとは、マスタと呼ばれる物理サーバが、ＶＭゲスト等が実行するアプリケーション、すなわちジョブを一元的に管理する形態のシステム例である。つまり、各ＶＭゲストは、マスタサーバからジョブを読み出して実行する。このため、マイグレーションしたＶＭゲストは、移動元のＶＭホストではなく、マスタサーバからジョブを読み出して実行する。
【００８２】
判定部４９は、第１の時間が第２の時間より早い場合には、中断したジョブを中断した時点から再開すると判定し、第２の時間が第１の時間より早い場合には、中断したジョブを最初から実行すると判定する処理部である。
【００８３】
上記した例で説明すると、判定部４９は、「Ｔｄａｔａ＜（Ｔｇｅｔ＋Ｔｅｘｅ）」である場合には、マイグレーション時に中断したジョブを中断した時点から再開すると判定し、そのことをアプリ実行部４５に通知する。一方、判定部４９は、「Ｔｄａｔａ＞（Ｔｇｅｔ＋Ｔｅｘｅ）」である場合には、マイグレーション時に中断したジョブを最初からやり直すと判定し、そのことをアプリ実行部４５に通知する。なお、判定部４９は、「Ｔｄａｔａ＝（Ｔｇｅｔ＋Ｔｅｘｅ）」である場合には、いずれの方式で実行するかを任意に設定できる。
【００８４】
ここで、図１３を用いて再開方式の判定を具体的に説明する。図１３は、再開判定を説明する図である。図１３に示すように、判定部４９は、マイグレーション先において、「データ転送時間（Ｔｄａｔａ）」と、「ジョブの再取得時間（Ｔｇｅｔ）＋マイグレーション元で既に実行済みであるジョブを再度実行した場合にかかる時間（Ｔｅｘｅ）」との比較を実行する。なお、図１３の（ａ）は、マイグレーションで中断したジョブをそのまま継続して実行した場合の時間経過を示す。
【００８５】
図１３の（ｂ）に示すように、Ｔｄａｔａよりも（Ｔｇｅｔ＋Ｔｅｘｅ）の方が早い場合、中断されたジョブを最初から実行しなおした方が、図１３の（ａ）より早くジョブを再開することができる。この条件に該当する場合、判定部４９は、最初から実行しなおすと判定して、データ転送を待たずにジョブを再開させる。この結果、未実行部分をより早く開始でき、ジョブ全体を早めることができる。すなわち、アプリケーション全体の処理完了を早めることができる。
【００８６】
また、図１３の（ｃ）に示すように、（Ｔｇｅｔ＋Ｔｅｘｅ）の方がＴｄａｔａよりも遅い場合、最初からジョブを実行しなおすと、未実行部分を開始する時間が図１３の（ａ）よりも遅くなる。つまり、中断されたジョブを中断した箇所から再開する方が、より早く未実行部分を再開することができる。この条件に該当する場合、判定部４９は、データ転送を待って、中断した箇所からジョブを再開させる。この結果、未実行部分をより早く開始でき、ジョブ全体を早めることができる。
【００８７】
［処理の流れ］
次に、各装置が実行する処理の流れを説明する。ここでは、システム全体の処理シーケンス、クラウド管理サーバの処理、移動元のＶＭホストの処理、移動先のＶＭホストの処理、ＶＭゲストの処理について説明する。なお、ここでは、ＶＭホスト３０で動作するＶＭゲスト４０をＶＭホスト６０へマイグレーションさせる例で説明する。
【００８８】
（シーケンス）
図１４は、実施例１に係る処理のシーケンス図である。図１４に示すように、クラウド管理サーバ１０は、管理者等からマイグレーション指示を受信する（Ｓ１０１）。すると、クラウド管理サーバ１０は、マイグレーション対象のＶＭゲストを動作させる移動元のＶＭホスト３０に対して、マイグレーション指示を送信する（Ｓ１０２とＳ１０３）。
【００８９】
そして、移動元のＶＭホスト３０は、該当するＶＭゲスト４０へのＣＰＵの割当を停止する（Ｓ１０４とＳ１０５）。続いて、移動元のＶＭホスト３０は、ＶＭゲスト４０のレジスタやメモリの状態を含む実行コンテキストを移動先のＶＭホスト６０へ転送する（Ｓ１０６とＳ１０７）。ここで、ＶＭゲスト４０にＣＰＵが割当てられていないため、ＶＭゲストで動作していたジョブの実行が中断する。その後、移動元のＶＭホスト３０は、実行コンテキストの転送完了をクラウド管理サーバ１０へ送信する（Ｓ１０８とＳ１０９）。
【００９０】
その後、クラウド管理サーバ１０は、ＶＭゲスト管理テーブル１４や仮想ディスク管理テーブル１７等を参照し、仮想ディスクの転送要否を判定する（Ｓ１１０）。そして、クラウド管理サーバ１０は、ストレージを共有しておらず、ＶＭゲスト４０が使用する仮想ディスクにデータが格納されており、転送を行うと判定したことを移動先のＶＭホスト６０に通知する（Ｓ１１１とＳ１１２）。
【００９１】
その後、クラウド管理サーバ１０は、移動先のＶＭホスト６０がアクセス可能なストレージ装置３に、マイグレーション対象のＶＭゲスト４０に割当てられていた仮想ディスクを同じ容量の仮想ディスクを生成する（Ｓ１１３とＳ１１４）。そして、生成が完了すると、クラウド管理サーバ１０は、仮想ディスクの生成完了を移動先のＶＭホスト６０に通知する（Ｓ１１５とＳ１１６）。
【００９２】
続いて、移動先のＶＭホスト６０は、クラウド管理サーバ１０から通知された仮想ディスの割当情報に基づいて、仮想ディスクの割当情報を更新する（Ｓ１１７）。その後、移動先のＶＭホスト６０は、マイグレーションしてきたＶＭゲスト４０へＣＰＵの割当開始し、ＣＰＵの割当が完了したことをＶＭゲスト４０に通知する（Ｓ１１８とＳ１１９）。
【００９３】
そして、クラウド管理サーバ１０は、ＶＭゲストに割当てられている仮想ディスクに記憶される情報を、移動元のＶＭホストがアクセス可能なストレージ装置２から読み出して、ストレージ装置３に転送する（Ｓ１２０〜Ｓ１２２）。
【００９４】
ＶＭゲスト４０は、上述した第１の時間および第２の時間を算出して、中断したジョブの再開方式を判定し（Ｓ１２３）、判定結果にしたがってジョブの実行を再開する（Ｓ１２３）。このとき、ＶＭゲスト４０は、中断した処理を中断した箇所から再開すると判定した場合には、移動先ＶＭホスト６０の該当データのＩ／Ｏ（Input／Output）を要求する（Ｓ１２４とＳ１２５）。なお、ＶＭゲスト４０は、中断した処理を最初から実行しなおすと判定した場合には、移動元のＶＭホスト３０からジョブを取得して再実行する。
【００９５】
そして、移動先のＶＭホスト６０は、ＶＭゲスト４０から受信したＩ／Ｏ要求をストレージ装置３に実行する（Ｓ１２６とＳ１２７）。このとき、移動先のＶＭホスト６０は、読み出し対象のデータがストレージ装置２から未転送である場合には、待機状態となる。そして、移動先のＶＭホスト６０は、データをストレージ装置３から読み出すと、そのＩ／Ｏ結果を要求元のＶＭゲスト４０に送信する（Ｓ１２８とＳ１２９）。
【００９６】
（クラウド管理サーバの処理）
図１５は、実施例１に係るクラウド管理サーバが実行する処理の流れを示すフローチャートである。図１５に示すように、クラウド管理サーバ１０のマイグレーション実行部２２は、管理者等からＶＭゲスト４０のマイグレーション指示を受信する（Ｓ２０１）。例えば、マイグレーション実行部２２は、マイグレーションさせるＶＭゲスト４０のＩＤと移動先のＶＭホスト６０のＩＤとを受信する。
【００９７】
続いて、マイグレーション実行部２２は、ＶＭゲスト管理テーブル１４を参照して、受信したマイグレーション対象のＶＭゲスト４０のＩＤに対応するＶＭホストを特定し、これを移動元のＶＭホスト３０とする（Ｓ２０２）。
【００９８】
そして、マイグレーション実行部２２は、移動元のＶＭホスト３０に対して、ＶＭゲスト４０の実行コンテキストを移動先のＶＭホスト６０へ転送するように指示する（Ｓ２０３）。
【００９９】
その後、マイグレーション実行部２２は、実行コンテキストの転送完了の通知を受信すると（Ｓ２０４：Ｙｅｓ）、管理者等に実行コンテキストの転送完了を通知する（Ｓ２０５）。
【０１００】
そして、マイグレーション実行部２２は、ＶＭホスト管理テーブル１３や物理ストレージ管理テーブル１５等を参照し、移動元のＶＭホスト３０と移動先のＶＭホスト６０とがストレージを共有しているかを確認する（Ｓ２０６）。
【０１０１】
ここで、ストレージを共有していると判定した場合（Ｓ２０７：Ｙｅｓ）、マイグレーション実行部２２は、仮想ディスクの転送が行わないことを移動先のＶＭホスト６０に通知する（Ｓ２０８）。そして、マイグレーション実行部２２は、マイグレーションが完了したことを管理者等に通知する（Ｓ２０９）。
【０１０２】
一方、マイグレーション実行部２２は、ストレージを共有していないと判定した場合（Ｓ２０７：Ｎｏ）、仮想ディスクの転送を行うことを移動先のＶＭホスト６０に通知する（Ｓ２１０）。
【０１０３】
そして、マイグレーション実行部２２は、移動先のＶＭホスト６０が参照できるストレージ装置３に、ＶＭゲスト４０用の仮想ディスクを作成する（Ｓ２１１）。例えば、マイグレーション実行部２２は、ＶＭゲスト４０が移動前にストレージ装置２で使用していたサイズと同じサイズで同じ個数の仮想ディスクを、ストレージ装置３に作成する。
【０１０４】
その後、マイグレーション実行部２２は、移動先のＶＭホスト６０に、新しく作成した仮想ディスク６０のＩＤを通知する（Ｓ２１２）。そして、マイグレーション実行部２２は、ストレージ装置２から仮想ディスクに記憶されるデータを読み出して、ストレージ装置３に新たに作成した仮想ディスクに、コピーする処理を開始する（Ｓ２１３）。
【０１０５】
そして、マイグレーション実行部２２は、全ての仮想ディスクのコピーが完了すると（Ｓ２１４：Ｙｅｓ）、仮想ディスクのデータ転送完了およびマイグレーションの完了を管理者等に通知する（Ｓ２１５）。
【０１０６】
（移動元のＶＭホストの処理）
図１６は、実施例１に係る移動元のＶＭホストが実行する処理の流れを示すフローチャートである。図１６に示すように、移動元のＶＭホスト３０のリソース割当部３４は、自装置上で動作するＶＭゲスト４０のマイグレーション指示を受信する（Ｓ３０１）。例えば、リソース割当部３４は、マイグレーション対象のＶＭゲスト４０のＩＤと移動先のＶＭホスト６０のＩＤとを、クラウド管理サーバ１０から受信する。
【０１０７】
続いて、リソース割当部３４は、通知されたマイグレーション対象のＶＭゲスト４０へのＣＰＵの割当てを中止する（Ｓ３０２）。そして、リソース割当部３４は、移動先のＶＭホスト６０にＶＭゲスト４０の実行コンテキストを転送する（Ｓ３０３）。
【０１０８】
その後、リソース割当部３４は、実行コンテキストの転送が完了すると（Ｓ３０４：Ｙｅｓ）、クラウド管理サーバ１０に、実行コンテキストの転送完了を通知する（Ｓ３０５）。
【０１０９】
（移動先のＶＭホストのマイグレーション処理）
図１７は、実施例１に係る移動先のＶＭホストが実行するマイグレーション処理の流れを示すフローチャートである。
【０１１０】
図１７に示すように、移動先のＶＭホスト６０の通知部６５は、移動元のＶＭゲスト３０からマイグレーション対象のＶＭゲスト４０の実行コンテキストを受信する（Ｓ４０１）。続いて、通知部６５は、クラウド管理サーバ１０から、仮想ディスクの転送要否を受信する（Ｓ４０２）。
【０１１１】
そして、リソース割当部６４は、仮想ディスクの転送が行われない場合（Ｓ４０３：Ｎｏ）、ＶＭゲスト４０へのＣＰＵの割当を開始する（Ｓ４０４）。なお、ここでは、マイグレーションしたことをＶＭゲストに通知しない。
【０１１２】
一方、リソース割当部６４は、仮想ディスクの転送が行われる場合（Ｓ４０３：Ｙｅｓ）、新たに作成された仮想ディスクのＩＤがクラウド管理サーバ１０から通知されたかを判定する（Ｓ４０５）。
【０１１３】
そして、リソース割当部６４は、新たに作成された仮想ディスクのＩＤがクラウド管理サーバ１０から通知されると（Ｓ４０５：Ｙｅｓ）、ＶＭゲスト４０に割当てる仮想ディスクの情報を更新する（Ｓ４０６）。例えば、リソース割当部６４は、クラウド管理サーバ１０に情報を送信して、各種テーブルを更新させる。
【０１１４】
その後、リソース割当部６４は、ＶＭゲスト４０へのＣＰＵ割当てを開始し、マイグレーションしたことをＶＭゲスト４０に通知する（Ｓ４０７）。
【０１１５】
（移動先のＶＭホストのＩ／Ｏ要求処理）
図１８は、実施例１に係る移動先のＶＭホストが実行するＩ／Ｏ要求処理の流れを示すフローチャートである。図１８に示すように、移動先のＶＭホスト６０の通知部６５は、マイグレーションしてきたＶＭゲスト４０から仮想ディスクへのＩ／Ｏ要求を受信する（Ｓ５０１）。
【０１１６】
続いて、移動先のＶＭホスト６０の制御部６３は、クラウド管理サーバ１０のＶＭゲスト管理テーブル１４を参照し、ストレージ装置３における仮想ディスクＩＤを特定する（Ｓ５０２）。そして、移動先のＶＭホスト６０の制御部６３は、ストレージ装置３に、仮想ディスクＩＤ等を指定してＩ／Ｏ要求を送信する（Ｓ５０３）。
【０１１７】
その後、移動先のＶＭホスト６０の制御部６３は、正常にＩ／Ｏが処理された場合（Ｓ５０４：Ｙｅｓ）、Ｉ／Ｏ結果をＶＭゲスト４０に応答する（Ｓ５０５）。
【０１１８】
一方、移動先のＶＭホスト６０の制御部６３は、正常にＩ／Ｏが処理されなかった場合（Ｓ５０４：Ｎｏ）、データ未転送による読み出し失敗かを判定する（Ｓ５０６）。つまり、ＶＭホスト６０は、読み出し対象のデータが移動前のストレージ装置２から移動先のストレージ装置３へまだ転送されていないために、エラーが発生したかを判定する。
【０１１９】
そして、移動先のＶＭホスト６０の制御部６３は、データ未転送による読み出し失敗ではなく、通常のリードエラー等である場合には（Ｓ５０６：Ｎｏ）、Ｉ／ＯエラーをＶＭゲスト４０に応答する（Ｓ５０７）。
【０１２０】
一方、移動先のＶＭホスト６０の制御部６３は、データ未転送による読み出し失敗である場合（Ｓ５０６：Ｙｅｓ）、例えば５秒など一定時間待機した後（Ｓ５０８）、Ｓ５０３を再度実行する。
【０１２１】
（ＶＭゲストの処理）
図１９は、実施例１に係る移動対象のＶＭゲストが実行する処理の流れを示すフローチャートである。図１９に示すように、ＶＭゲスト４０のアプリ実行部４５は、アプリケーションを実行し、実行時間であるＣＰＵ  Ｔｉｍｅを計測して仮想メモリ等に記録する（Ｓ６０１）。ここで記録された時間を「Ｔｅｘｅ」とする。
【０１２２】
その後、ＶＭゲスト４０の通知受信部４６が移動先のＶＭホスト６０からマイグレーションしたことを受信すると（Ｓ６０２：Ｙｅｓ）、判定部４９は、実行しているアプリケーションは巻き戻せる特性を有しているかを判定する（Ｓ６０３）。具体的には、判定部４９は、アプリ特性テーブル４３を参照して判定する。
【０１２３】
例えば、バッチジョブを実行するアプリケーションである場合、ジョブの途中までの実行結果を破棄して、ジョブを最初からやり直すことができる。また、チェックポイントで途中結果を保存するアプリケーションである場合、チェックポイントからのやり直しができる。巻き戻しが可能な特性のアプリケーションかどうかは、アプリ開発者が特性情報として設定する。
【０１２４】
そして、判定部４９は、実行しているアプリケーションは巻き戻せる特性を有していない場合（Ｓ６０３：Ｎｏ）、実行中の処理を継続する再開方式を選択する（Ｓ６０４）。つまり、アプリ実行部４５は、マイグレーションに伴って中断した実行中の処理を、中断点から再開する。
【０１２５】
一方、第１時間算出部４７は、実行しているアプリケーションは巻き戻せる特性を有している場合（Ｓ６０３：Ｙｅｓ）、上述した「Ｔｄａｔａ」を算出する（Ｓ６０５）。具体的には、第１時間算出部４７は、移動先のＶＭホスト６０経由でクラウド管理サーバ１０に仮想ディスクの転送速度を問合せて算出する。
【０１２６】
続いて、第２時間算出部４８は、上述した「Ｔｇｅｔ」を算出する（Ｓ６０６）。具体的には、第２時間算出部４８は、例えば、第２時間算出部４８は、バッチジョブを実行するアプリケーションである場合、ジョブの再取得にかかる時間を算出する。また、第２時間算出部４８は、チェックポイントで途中結果を保存しているアプリケーションである場合、保存した途中結果を取得するのにかかる時間を算出する。
【０１２７】
その後、判定部４９は、「Ｔｇｅｔ＋Ｔｅｘｅ≦Ｔｄａｔａ」ではなく、「Ｔｇｅｔ＋Ｔｅｘｅ＞Ｔｄａｔａ」である場合（Ｓ６０７：Ｎｏ）、実行中の処理を継続する再開方式を選択する（Ｓ６０４）。
【０１２８】
一方、判定部４９は、「Ｔｇｅｔ＋Ｔｅｘｅ≦Ｔｄａｔａ」である場合（Ｓ６０７：Ｙｅｓ）、現在実行中の処理を破棄し、巻き戻し点から再実行する再開方式を選択する（Ｓ６０８）。例えば、アプリ実行部４５は、バッチジョブを実行するアプリケーションである場合、最初からやり直す。また、アプリ実行部４５は、チェックポイントで途中結果を保存しているアプリケーションである場合、チェックポイントから再実行する。
【０１２９】
［具体例］
次に、ＶＭゲスト「Ｇｕｅｓｔ＿０２」をＶＭホスト「Ｈｏｓｔ＿１０２」にマイグレーションする例で説明する。なお、ＶＭゲスト「Ｇｕｅｓｔ＿０２」は、アプリＡを実行しているものとする。
【０１３０】
クラウド管理サーバ１０は、ＶＭゲスト管理テーブル１４から、ＶＭゲスト「Ｇｕｅｓｔ＿０２」がＶＭホスト「Ｈｏｓｔ＿００２」で動いていることを特定する。また、クラウド管理サーバ１０は、ＶＭゲスト管理テーブル１４から、ＶＭゲスト「Ｇｕｅｓｔ＿０２」には仮想ディスク「ＶＤＩＳＫ＿０３０」が割り当てられていることを特定する。また、クラウド管理サーバ１０は、仮想ディスク管理テーブル１７から、仮想ディスク「ＶＤＩＳＫ＿０３０」のサイズが「１０ＧＢ」であることを特定する。
【０１３１】
クラウド管理サーバ１０は、仮想ディスク管理テーブル１７から、仮想ディスク「ＶＤＩＳＫ＿０３０」が仮想ストレージ「ＶＳ＿００１」から切り出されていることを特定する。また、クラウド管理サーバ１０は、ＶＭホスト管理テーブル１３から、ＶＭホスト「Ｈｏｓｔ＿１０２」が仮想ストレージ「ＶＳ＿００１」を参照できないことを特定する。
【０１３２】
クラウド管理サーバ１０は、ＶＭホスト管理テーブル１３から、ＶＭホスト「Ｈｏｓｔ＿１０２」が参照できる仮想ストレージが「ＶＳ＿１０１」であることを特定する。このため、クラウド管理サーバ１０は、仮想ディスク「ＶＤＩＳＫ＿０３０」の中身を仮想ストレージ「ＶＳ＿００１」から切りした新しい仮想ディスクに転送すると判定する。
【０１３３】
また、クラウド管理サーバ１０は、ＶＭホスト管理テーブル１３から、移動元のＶＭホスト「Ｈｏｓｔ＿００２」のＰｏｄが「Ａ」であり、移動先のＶＭホスト「Ｈｏｓｔ＿１０２」の「Ｐｏｄ」が「Ｂ」であることを特定する。また、クラウド管理サーバ１０は、帯域管理テーブル１８から、Ｐｏｄ「Ａ」と「Ｂ」の間のネットワーク帯域が「２００Ｍｂｐｓ」であることを特定する。
【０１３４】
さらに、ＶＭゲスト「Ｇｕｅｓｔ＿０２」は、アプリ特性テーブル４３を参照して、実行を中断したアプリＡの入力データサイズが「１０２４．２ＭＢ」であることを特定する。また、ＶＭゲスト「Ｇｕｅｓｔ＿０２」は、バッチジョブのジョブプールとの通信に利用できるネットワークの帯域が「１００Ｍｂｐｓ」であることをクラウド管理サーバ１０の帯域管理テーブル１８等から特定する。
【０１３５】
なお、バッチジョブのジョブプールとは、未実行のジョブが置かれている場所である。例えば、マスタ・ワーカ型のシステムでは、マスタサーバがジョブプールを有するので、マスタサーバと移動先のＶＭホストとの間の帯域を利用する。また、一般的なシステムの場合、移動先のＶＭホストと移動先のＶＭホストとの間の帯域を利用する。
【０１３６】
このような情報を用いて、ＶＭゲスト「Ｇｕｅｓｔ＿０２」は、ジョブプールからジョブを再取得する時間「Ｔｇｅｔ」を「１０２４．２ＭＢ／１００Ｍｂｐｓ≒８２秒」（約１．４分）と算出する。また、ＶＭゲスト「Ｇｕｅｓｔ＿０２」は、仮想ディスク「ＶＤＩＳＫ＿０３０」を転送するのにかかる時間「Ｔｄａｔａ」を「１０ＧＢ／２００Ｍｂｐｓ≒４１０秒」（約７分）と算出する。
【０１３７】
（例１）
ここで、ＶＭゲスト「Ｇｕｅｓｔ＿０２」は、ジョブを開始してから、ＣＰＵ時間（処理時間）が５分の時に、マイグレーションしたことの通知を受けたとする。そして、ＶＭゲスト「Ｇｕｅｓｔ＿０２」は、「Ｔｄａｔａ＝７分」であることから、このまま中断点からジョブを継続するには、仮想ディスクの中身の転送完了を７分待つことになる。
【０１３８】
また、ＶＭゲスト「Ｇｕｅｓｔ＿０２」は、ジョブを最初から再実行するには、ジョブプールからジョブを再取得するのに「１．４分」、ジョブを最初から再実行して中断点に至るのに「５分」かかる。つまり、「Ｔｇｅｔ＋Ｔｅｘｅ＝１．４＋５＝６．４分」となる。
【０１３９】
これらの結果、ＶＭゲスト「Ｇｕｅｓｔ＿０２」は、「Ｔｇｅｔ＋Ｔｅｘｅ≦Ｔｄａｔａ」となるので、仮想ディスクの中身の転送完了を待たずに、ジョブを再取得して、最初からやり直す再開方式を選択する。
【０１４０】
（例２）
ここで、ＶＭゲスト「Ｇｕｅｓｔ＿０２」は、ジョブを開始して、ＣＰＵ時間（処理時間）が１０分の時に、マイグレーションしたことの通知を受けたとする。そして、ＶＭゲスト「Ｇｕｅｓｔ＿０２」は、「Ｔｄａｔａ＝７分」であることから、このまま中断点からジョブを継続するには、仮想ディスクの中身の転送完了を７分待つことになる。
【０１４１】
また、ＶＭゲスト「Ｇｕｅｓｔ＿０２」は、ジョブを最初から再実行するには、ジョブプールからジョブを再取得するのに「１．４分」、ジョブを最初から再実行して中断点に至るのに「１０分」かかる。つまり、「Ｔｇｅｔ＋Ｔｅｘｅ＝１．４＋１０＝１１．４分」となる。
【０１４２】
これらの結果、ＶＭゲスト「Ｇｕｅｓｔ＿０２」は、「Ｔｇｅｔ＋Ｔｅｘｅ＞Ｔｄａｔａ」となるので、データ転送の完了を待って、中断点から再開する方式を選択する。
【０１４３】
［効果］
このように、ＶＭゲストが、マイクレーション先で、マイグレーションで中断した途中データを転送して処理再開するまでの時間と、最初からやり直すまでにかかる時間を算出し、時間が早い方を選択することができる。つまり、ＶＭゲストは、マイグレーション時に中断した処理をマイグレーション先で再開する際に、未実行の部分を再開するまでにかかる時間を計算する。そして、ＶＭゲストは、より早く再開できる方式で中断した処理を実行できる。
【０１４４】
このように、ＶＭゲストは、処理を早く再開できるので、アプリケーション全体の処理にかかる時間も短縮できる。また、処理を実行するＶＭゲスト自身が再開方式を判定して処理を再開するので、ＶＭホスト等の第３者が方式判定する場合に比べて、方式判定にかかる時間も短縮できる。
【実施例２】
【０１４５】
実施例１では、マイグレーション先のＶＭゲストがマイグレーションしてきたＶＭゲストにマイグレーションの完了を通知すると、ＶＭゲストが再開方法等を判定する例を説明したが、これに限定されるものではない。例えば、マイグレーション元のＶＭホストがマイグレーションするＶＭゲストにマイグレーションが開始されることを通知することもできる。
【０１４６】
そこで、実施例２では、マイグレーション元のＶＭホストがマイグレーションするＶＭゲストにマイグレーションが開始されることを通知し、ＶＭゲストが再開方法等を判定する例を説明する。なお、移動先のＶＭホストが実行する処理は、実施例１と同様なので詳細な説明を省略する。
【０１４７】
（シーケンス）
図２０は、実施例２に係る処理のシーケンス図である。図２０に示すように、クラウド管理サーバ１０は、管理者等からマイグレーション指示を受信する（Ｓ７０１）。すると、クラウド管理サーバ１０は、マイグレーション対象のＶＭゲストが使用する仮想ディスクの転送要否を判定する（Ｓ７０２）。続いて、クラウド管理サーバ１０は、仮想ディスクの転送要否とマイグレーション指示とを移動元のＶＭホスト３０に送信する（Ｓ７０３とＳ７０４）。
【０１４８】
そして、移動元のＶＭホスト３０は、対象のＶＭゲスト４０に、マイグレーションが実行されることを通知する（Ｓ７０５とＳ７０６）。この通知を受けたＶＭゲスト４０は、上述した第１の時間および第２の時間を算出して、中断するジョブの再開方式を判定し（Ｓ７０７）、判定結果を移動元ＶＭホスト３０に通知する（Ｓ７０８とＳ７０９）。
【０１４９】
その後、移動元のＶＭホスト３０は、該当するＶＭゲスト４０へのＣＰＵの割当を停止する（Ｓ７１０とＳ７１１）。続いて、移動元のＶＭホスト３０は、ＶＭゲスト４０のレジスタやメモリの状態を含む実行コンテキストを移動先のＶＭホスト６０へ転送する（Ｓ７１２とＳ７１３）。ここで、ＶＭゲスト４０にＣＰＵが割当てられていないため、ＶＭゲストで動作していたジョブの実行が中断する。
【０１５０】
その後、移動元のＶＭホスト３０は、実行コンテキストの転送完了をクラウド管理サーバ１０へ送信する（Ｓ７１４とＳ７１５）。また、移動元のＶＭホスト３０は、移動先のＶＭホスト６０に、仮想ディスクの転送要否の判定結果を通知する（Ｓ７１６とＳ７１７）。
【０１５１】
その後のＳ７１８からＳ７３３で実行される仮想ディスクの生成、ＣＰＵの割当、Ｉ／Ｏ処理は、実施例１で説明したＳ１１３〜Ｓ１２９と同様の処理なので、詳細な説明は省略する。
【０１５２】
（クラウド管理サーバの処理）
図２１は、実施例２に係るクラウド管理サーバが実行する処理の流れを示すフローチャートである。図２１に示すように、クラウド管理サーバ１０のマイグレーション実行部２２は、管理者等からＶＭゲスト４０のマイグレーション指示を受信する（Ｓ８０１）。
【０１５３】
続いて、マイグレーション実行部２２は、ＶＭゲスト管理テーブル１４等を参照して、受信したマイグレーション対象のＶＭゲストのＩＤに対応するＶＭホストを特定し、これを移動元のＶＭホスト３０とする（Ｓ８０２）。
【０１５４】
また、マイグレーション実行部２２は、ＶＭホスト管理テーブル１３や物理ストレージ管理テーブル１５等を参照し、移動元のＶＭホスト３０と移動先のＶＭホスト６０とがストレージを共有しているかを確認する（Ｓ８０３）。
【０１５５】
そして、マイグレーション実行部２２は、ストレージを共有していると判定した場合（Ｓ８０４：Ｙｅｓ）、移動元のＶＭホスト３０に対して、ＶＭゲスト４０の実行コンテキストを移動先のＶＭホスト６０へ転送するように指示する（Ｓ８０５）。このとき、マイグレーション実行部２２は、仮想ディスクの転送を行わないこともあわせて、移動元のＶＭホスト３０に通知する。
【０１５６】
その後、マイグレーション実行部２２は、実行コンテキストの転送完了の通知を受信すると（Ｓ８０６：Ｙｅｓ）、管理者等に実行コンテキストの転送完了を通知する（Ｓ８０７）。また、マイグレーション実行部２２は、仮想ディスクの転送を行わないこと移動先のＶＭホスト６０に通知して（Ｓ８０８）、処理を終了する。
【０１５７】
一方、ストレージを共有していないと判定した場合（Ｓ８０４：Ｎｏ）、移動元のＶＭホスト３０に対して、ＶＭゲスト４０の実行コンテキストを移動先のＶＭホスト６０へ転送するように指示する（Ｓ８０９）。このとき、マイグレーション実行部２２は、仮想ディスクの転送を行うこともあわせて、移動元のＶＭホスト３０に通知する。
【０１５８】
その後、マイグレーション実行部２２は、実行コンテキストの転送完了の通知を受信すると（Ｓ８１０：Ｙｅｓ）、管理者等に実行コンテキストの転送完了を通知する（Ｓ８１１）。また、マイグレーション実行部２２は、仮想ディスクの転送を行うこと移動先のＶＭホスト６０に通知する（Ｓ８１２）。
【０１５９】
その後のＳ８１３〜Ｓ８１７で実行される仮想ディスクの生成等の処理は、実施例１で説明したＳ２１１〜Ｓ２１５と同様の処理なので、詳細な説明は省略する。
【０１６０】
（移動元のＶＭホストの処理）
図２２は、実施例２に係る移動元のＶＭホストが実行する処理の流れを示すフローチャートである。
【０１６１】
図２２に示すように、移動元のＶＭホスト３０の通知部３５は、クラウド管理サーバ１０から、ＶＭゲスト４０のマイグレーション指示と仮想ディスクの転送要否を受信する（Ｓ９０１）。
【０１６２】
そして、リソース割当部３４は、仮想ディスクの転送が行われる場合（Ｓ９０２：Ｙｅｓ）、ＶＭゲスト４０にマイグレーションすることを通知し（Ｓ９０３）、ＶＭゲスト４０から再開方式を判定したことの通知を受信したかを判定する（Ｓ９０４）。なお、リソース割当部３４は、仮想ディスクの転送が行われない場合（Ｓ９０２：Ｎｏ）、Ｓ９０３およびＳ９０４を実行することなく、Ｓ９０５を実行する。
【０１６３】
そして、リソース割当部３４は、ＶＭゲスト４０から再開方式を判定したことの通知を受信すると（Ｓ９０４：Ｙｅｓ）、ＶＭゲスト４０へのＣＰＵの割当を中止する（Ｓ９０５）。なお、ここでは、マイグレーションすることは、ＶＭゲスト４０に通知されない。
【０１６４】
その後のＳ９０６〜Ｓ９０８の処理は、実施例１で説明したＳ３０３〜Ｓ３０５と同様の処理なので、詳細な説明は省略する。
【０１６５】
（ＶＭゲストの処理）
図２３は、実施例２に係る移動対象のＶＭゲストが実行する処理の流れを示すフローチャートである。図２３に示すように、ＶＭゲスト４０のアプリ実行部４５は、アプリケーションを実行し、実行時間であるＣＰＵ  Ｔｉｍｅを計測して仮想メモリ等に記録する（Ｓ１００１）。ここで記録された時間を「Ｔｅｘｅ」とする。
【０１６６】
そして、ＶＭゲスト４０の通知受信部４６が移動元のＶＭホスト３０からマイグレーションしたことを受信すると（Ｓ１００２：Ｙｅｓ）、判定部４９は、実行しているアプリケーションは巻き戻せる特性を有しているかを判定する（Ｓ１００３）。
【０１６７】
その後のＳ１００４〜Ｓ１００８処理は、実施例１で説明したＳ６０４〜Ｓ６０８と同様の処理なので、詳細な説明は省略する。
【０１６８】
（効果）
このように、実施例２に係るＶＭゲスト４０は、マイグレーション前に移動元のＶＭホスト３０から通知を受信して、再開方式を判定することができる。したがって、ＶＭゲスト４０は、マイグレーションが完了するとすぐに、ジョブの再開を実行することができる。この結果、実施例１に比べて、アプリケーション全体の処理時間の短縮が期待できる。
【実施例３】
【０１６９】
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下に異なる実施例を説明する。
【０１７０】
（共有ディスク）
上記実施例１や２では、移動元のＶＭホストと移動先のＶＭホストがストレージを共有していない例を説明したが、これに限定されるものではない。例えば、移動元のＶＭホストと移動先のＶＭホストがストレージを共有している場合、ＶＭゲストは、中断点から再開する方式を選択することができる。なお、ストレージを共有していることを条件にマイグレーション先を選択することは、マイグレーション先が限定的になる可能性もある。
【０１７１】
（データ転送）
実施例１や２では、ＶＭゲストがいずれの再開方式を用いる決定した場合であっても、移動元の仮想ディスクの情報を移動先に転送する例を説明したが、これに限定されるものではない。例えば、ＶＭゲストが、最初からやり直すと決定したタイミングで、仮想ディスクのコピーが実行中である場合には、当該コピーを中止してもよい。また、ＶＭゲストが、移動前に最初からやり直すと決定した場合、仮想ディスクのコピーを実行しないようにすることもできる。このようにすることで、無用な処理を抑制できるので、仮想ゲストのＣＰＵの負荷を軽減でき、再開するジョブの実行時間の短縮にも繋がる。また、ネットワーク帯域の浪費を抑制できる。
【０１７２】
（再開方式）
例えば、ＶＭゲストの処理を中断点からそのまま継続するために用いるデータまたはファイルが、仮想ディスクのどの部分にあるかの情報を特定できる場合は、再開方式の判断をより細かく実施することもできる。例えば、仮想ディスクの中身のデータの転送が、仮想ディスクの先頭から実施され、仮想ディスクの先頭近くにデータまたはファイルあることを想定する。この場合、データが転送されるのを待った方が、処理を最初からやり直すよりも有利になる場合がある。つまり、このような場合には、ＶＭゲストは、最初からやり直す方式を用いると決定した場合であっても、データ転送を待って中断点からやり直す方式を採用する。
【０１７３】
（システム）
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともできる。あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【０１７４】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散や統合の具体的形態は図示のものに限られない。つまり、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【０１７５】
（ハードウェア）
次に、ＶＭホストやクラウド管理サーバのハードウェア構成例を説明するが、各サーバは同様の構成を有するので、ここでは一例を説明する。図２４は、ハードウェア構成例を示す図である。図２４に示すように、サーバ１００は、ＮＩＣ（Network  Interface  Card）１００ａ、入力装置１００ｂ、表示装置１００ｃ、記憶装置１００ｄ、ＣＰＵ１００ｅがバス１００ｆで接続される。
【０１７６】
ＮＩＣ１００ａは、通信インタフェースであり、他の装置の間の無線通信を制御する。入力装置１００ｂは、例えばマウスやキーボードなどであり、管理者等からの操作を受け付ける。表示装置１００ｃは、例えばディスプレイやタッチパネルなどであり、各種情報を表示する。
【０１７７】
記憶装置１００ｄは、例えばメモリやハードディスクなどであり、ＣＰＵ１００ｅが実行するプログラムや各種データを記憶する。例えば、記憶装置１００ｄは、図２に示した各テーブルを記憶する。
【０１７８】
ＣＰＵ１００ｅは、サーバ装置全体を司る処理部であり、各種プログラムを読み出してプロセスを実行する。例えば、ＣＰＵ１００ｅは、図２で説明した各処理部と同様の機能を実現するプロセスを実行する。また、ＣＰＵ１００ｅは、図１０や図１１で説明した各処理部と同様の機能を実現するプロセスを実行する。
【０１７９】
このようにサーバ１００は、プログラムを読み出して実行することで、処理再開方法を実行する情報処理装置として動作する。また、サーバ１００は、媒体読取装置によって記録媒体から上記プログラムを読み出し、読み出された上記プログラムを実行することで上記した実施例と同様の機能を実現することもできる。なお、この他の実施例でいうプログラムは、サーバ１００によって実行されることに限定されるものではない。例えば、他のコンピュータまたはサーバがプログラムを実行する場合や、これらが協働してプログラムを実行するような場合にも、本発明を同様に適用することができる。
【符号の説明】
【０１８０】
１０  クラウド管理サーバ
１１  通信制御部
１２  記憶部
１３  ＶＭホスト管理テーブル
１４  ＶＭゲスト管理テーブル
１５  物理ストレージ管理テーブル
１６  仮想ストレージ管理テーブル
１７  仮想ディスク管理テーブル
１８  帯域管理テーブル
２０  制御部
２１  クラウド管理部
２２  マイグレーション実行部
３０  ＶＭホスト
３１  通信制御部
３２  記憶部
３３  制御部
３４  リソース割当部
３５  通知部
４０  ＶＭゲスト
４１  通信制御部
４２  記憶部
４３  アプリ特性テーブル
４４  制御部
４５  アプリ実行部
４６  通知受信部
４７  第１時間算出部
４８  第２時間算出部
４９  判定部
【図１】
2015075898.tif 000003
【図２】
2015075898.tif 000004
【図３】
2015075898.tif 000005
【図４】
2015075898.tif 000006
【図５】
2015075898.tif 000007
【図６】
2015075898.tif 000008
【図７】
2015075898.tif 000009
【図８】
2015075898.tif 000010
【図９】
2015075898.tif 000011
【図１０】
2015075898.tif 000012
【図１１】
2015075898.tif 000013
【図１２】
2015075898.tif 000014
【図１３】
2015075898.tif 000015
【図１４】
2015075898.tif 000016
【図１５】
2015075898.tif 000017
【図１６】
2015075898.tif 000018
【図１７】
2015075898.tif 000019
【図１８】
2015075898.tif 000020
【図１９】
2015075898.tif 000021
【図２０】
2015075898.tif 000022
【図２１】
2015075898.tif 000023
【図２２】
2015075898.tif 000024
【図２３】
2015075898.tif 000025
【図２４】
2015075898.tif 000026