(57)【要約】      （修正有）【課題】仮想マシンを稼動させているコンピュータの動作が停止し又は停滞した場合に、待機しているコンピュータで迅速に仮想マシンを復元する。【解決手段】システムは、夫々に仮想マシンを稼動させるための第１コンピュータ及び第２コンピュータと、第１コンピュータと第２コンピュータとが共用する記憶領域を含む記憶装置とを有する。第１コンピュータは、第１コンピュータにおいて稼動させる仮想マシンに対応し、且つ第２コンピュータに付与するライセンスデータを、記憶領域に設定する設定部を含み、第２コンピュータは、第１コンピュータの動作が停止し又は停滞した場合に、ライセンスデータを記憶領域から取得する取得部と、取得したライセンスデータを用いて、仮想マシンを復元する復元部とを含む。【選択図】図１６
2016004509.tif 000002
【特許請求の範囲】
【請求項１】
夫々に仮想マシンを稼動させるための第１コンピュータ及び第２コンピュータと、前記第１コンピュータと前記第２コンピュータとが共用する記憶領域を含む記憶装置とを有し、
前記第１コンピュータは、
前記第１コンピュータにおいて稼動させる前記仮想マシンに対応し、且つ前記第２コンピュータに付与するライセンスデータを、前記記憶領域に設定する設定部
を含み、
前記第２コンピュータは、
前記第１コンピュータの動作が停止し又は停滞した場合に、前記ライセンスデータを前記記憶領域から取得する取得部と、
取得した前記ライセンスデータを用いて、前記仮想マシンを復元する復元部と
を含むシステム。
【請求項２】
前記復元部は、前記仮想マシンについてのイメージの暗号化データを復号するための第１キーを、前記ライセンスデータを用いて取得し、前記第１キーを用いて前記暗号化データを復号する
請求項１記載のシステム。
【請求項３】
前記設定部は、前記ライセンスデータを前記記憶領域から取得するための第２キーを、前記第２コンピュータに送信し、
前記取得部は、受信した前記第２キーを用いて、前記ライセンスデータを前記記憶領域から取得する
請求項１又は２記載のシステム。
【請求項４】
前記第２コンピュータは、更に、
前記第１コンピュータの動作が停滞した場合に、前記仮想マシンを停止させる要求を、前記第１コンピュータに送信する送信部
を含み、
前記第１コンピュータは、更に、
前記要求を受信した場合に、前記仮想マシンを停止させる停止部
を含む請求項１乃至３のいずれか１つ記載のシステム。
【請求項５】
前記第１コンピュータは、
前記第２コンピュータにおいて前記仮想マシンが復元されていると判定した場合に、前記第１コンピュータにおける前記仮想マシンを削除する削除部
を含む請求項１乃至４のいずれか１つ記載のシステム。
【請求項６】
第１コンピュータと第２コンピュータとが共用する記憶領域を含む記憶装置に各々接続され、且つ夫々に仮想マシンを稼動させるための前記第１コンピュータ及び前記第２コンピュータによる復元方法であって、
前記第１コンピュータが、前記第１コンピュータにおいて稼動させる前記仮想マシンに対応し、且つ前記第２コンピュータに付与するライセンスデータを、前記記憶領域に設定する処理と、
前記第１コンピュータの動作が停止し又は停滞した場合に、前記第２コンピュータが、前記ライセンスデータを前記記憶領域から取得する処理と、
前記第２コンピュータが、取得した前記ライセンスデータを用いて、前記仮想マシンを復元する処理と
を含む復元方法。
【請求項７】
自らのコンピュータ上で稼動する仮想マシンが停止し又は停滞した場合に前記仮想マシンの復元に用いる待機系のコンピュータに付与し、且つ前記仮想マシンに対応するライセンスデータを、当該待機系のコンピュータと共用する記憶領域に設定する設定部と、
前記仮想マシンを起動する起動部と
を含むコンピュータ。
【請求項８】
仮想マシンを稼動させている稼動系のコンピュータの動作が停止し又は停滞した場合に、前記仮想マシンに対応し、且つ自らのコンピュータに付与されたライセンスデータを、当該稼動系のコンピュータと共用している記憶領域から取得する取得部と、
取得した前記ライセンスデータを用いて、前記仮想マシンを復元する復元部と
を含むコンピュータ。
【請求項９】
自らのコンピュータ上で稼動する仮想マシンが停止し又は停滞した場合に前記仮想マシンの復元に用いる待機系のコンピュータに付与し、且つ前記仮想マシンに対応するライセンスデータを、当該待機系のコンピュータと共用する記憶領域に設定する処理と、
前記仮想マシンを起動する処理と
をコンピュータに実行させるためのプログラム。
【請求項１０】
仮想マシンを稼動させている稼動系のコンピュータの動作が停止し又は停滞した場合に、前記仮想マシンに対応し、且つ自らのコンピュータに付与されたライセンスデータを、当該稼動系のコンピュータと共用している記憶領域から取得する処理と、
取得した前記ライセンスデータを用いて、前記仮想マシンを復元する処理と
をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想マシンの復元技術に関する。
【背景技術】
【０００２】
仮想マシン上のユーザシステムの運用を安定させるために、仮想マシンを稼動させるための物理サーバのようなコンピュータを例えば２つ設けて、稼動系のコンピュータから待機系のコンピュータへ仮想マシンのマイグレーションを行なうようにすることがある。
【０００３】
但し、同じ仮想マシンを異なるコンピュータで同時に稼動させると、処理やデータに矛盾が生じることがある。また、仮想マシンで動作させるソフトウエアのライセンスが複数要ることにもなる。
【０００４】
そのため、従来から、稼動系のコンピュータと待機系のコンピュータとで、同じ仮想マシンを同時に稼動させないようにしている。例えば、稼動系のコンピュータの部品を予防的に交換しようとする場合には、稼動系のコンピュータを停止させる前に、稼動系のコンピュータから待機系のコンピュータへ仮想マシン復元用のデータを送信し、待機系のコンピュータは受信した当該データを用いて仮想マシンの復元を行なう。そして、待機系のコンピュータにおけるユーザシステムの運用を始めるときに、稼動系のコンピュータを停止させる。
【０００５】
つまり、上述した手順では、マイグレーションを行なおうとする段階で、稼動系のコンピュータと待機系のコンピュータとが連携できることが前提となっている。従って、待機系のコンピュータで仮想マシンを復元させるべき事態に至っても、その時点で待機系のコンピュータが稼動系のコンピュータと連携できなければ、すぐにはマイグレーションを行なえないことになる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１１−２１０１５１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明の目的は、一側面では、仮想マシンを稼動させているコンピュータの動作が停止し又は停滞した場合に、待機しているコンピュータで迅速に仮想マシンを復元できるようにすることである。
【課題を解決するための手段】
【０００８】
一態様に係るシステムは、夫々に仮想マシンを稼動させるための第１コンピュータ及び第２コンピュータと、第１コンピュータと第２コンピュータとが共用する記憶領域を含む記憶装置とを有する。そして、第１コンピュータは、第１コンピュータにおいて稼動させる仮想マシンに対応し、且つ第２コンピュータに付与するライセンスデータを、上記記憶領域に設定する設定部を含み、第２コンピュータは、第１コンピュータの動作が停止し又は停滞した場合に、上記ライセンスデータを上記記憶領域から取得する取得部と、取得したライセンスデータを用いて、上記仮想マシンを復元する復元部とを含む。
【発明の効果】
【０００９】
一側面としては、仮想マシンを稼動させているコンピュータの動作が停止し又は停滞した場合に、待機しているコンピュータで迅速に仮想マシンを復元できるようにすることができる。
【図面の簡単な説明】
【００１０】
【図１】図１は、ネットワーク構成の例を示す図である。
【図２】図２は、第１物理サーバのモジュール構成例を示す図である。
【図３】図３は、第２物理サーバのモジュール構成例を示す図である。
【図４】図４は、フェーズの遷移例を示す図である。
【図５】図５は、初期フェーズの概要を説明するための図である。
【図６】図６は、初期フェーズにおけるシーケンス例を示す図である。
【図７】図７は、通常フェーズの概要を説明するための図である。
【図８】図８は、通常フェーズにおけるシーケンス例を示す図である。
【図９】図９は、引継フェーズの概要を説明するための図である。
【図１０】図１０は、引継フェーズにおけるシーケンス例を示す図である。
【図１１】図１１は、解消フェーズの概要を説明するための図である。
【図１２】図１２は、解消フェーズにおけるシーケンス例を示す図である。
【図１３】図１３は、共用ファイルの構成例を示す図である。
【図１４】図１４は、マイグレーション用データの構成例を示す図である。
【図１５】図１５は、ライセンステーブルの例を示す図である。
【図１６】図１６は、制御部のモジュール構成例を示す図である。
【図１７】図１７は、制御用データの構成例を示す図である。
【図１８】図１８は、最初の稼動系におけるメイン処理フローの例を示す図である。
【図１９】図１９は、開始処理フローの例を示す図である。
【図２０】図２０は、構築処理フローの例を示す図である。
【図２１】図２１は、第１設定処理フローの例を示す図である。
【図２２】図２２は、応答処理フローの例を示す図である。
【図２３】図２３は、停止処理フローの例を示す図である。
【図２４】図２４は、最初の待機系におけるメイン処理フローの例を示す図である。
【図２５】図２５は、第２設定処理フローの例を示す図である。
【図２６】図２６は、監視処理フローの例を示す図である。
【図２７】図２７は、移行処理フローの例を示す図である。
【図２８】図２８は、復元処理フローの例を示す図である。
【図２９】図２９は、第１変更処理フローの例を示す図である。
【図３０】図３０は、生成処理フローの例を示す図である。
【図３１】図３１は、再開時のメイン処理フローの例を示す図である。
【図３２】図３２は、再開処理フローの例を示す図である。
【図３３】図３３は、第２変更処理フローの例を示す図である。
【図３４】図３４は、実施の形態２に係る通常フェーズにおけるシーケンス例を示す図である。
【図３５】図３５は、実施の形態２に係る解消フェーズにおけるシーケンス例を示す図である。
【図３６】図３６は、切替部のモジュール構成例を示す図である。
【図３７】図３７は、切替処理フローの例を示す図である。
【図３８】図３８は、コンピュータの機能ブロック図である。
【発明を実施するための形態】
【００１１】
［実施の形態１］
図１に、ネットワーク構成の例を示す。第１物理サーバ１０１ａと、第２物理サーバ１０１ｂとが、ＬＡＮ（Local Area Network）を介して接続されている。ＬＡＮは、ネットワークの例である。この例では、２つの物理サーバと接続されるネットワークの例を示したが、ネットワークは、３以上の物理サーバと接続されるようにしてもよい。物理サーバは、例えば物理サーバＩＤによって識別される。
【００１２】
また、ＬＡＮには、更にディスク装置１０３が接続されている。第１物理サーバ１０１ａと第２物理サーバ１０１ｂのいずれも、ＬＡＮを介してディスク装置１０３にアクセスする。
【００１３】
次に、仮想マシンが稼動する物理サーバのモジュール構成について説明する。図２に、第１物理サーバ１０１ａのモジュール構成例を示す。この例で、第１物理サーバ１０１ａは、ハイパーバイザ２０１、制御用仮想マシン２０３及びゲスト用仮想マシン２１１を有している。物理サーバＩＤの代わりに、制御用仮想マシン２０３のＩＰ（Internet Protocol）アドレスあるいは制御用仮想マシン２０３のＭＡＣ（Media Access Control）アドレスによって、物理サーバを識別するようにしてもよい。
【００１４】
ハイパーバイザ２０１は、１つの制御用仮想マシン２０３を稼動させている。制御用仮想マシン２０３は、ゲスト用仮想マシン２１１を生成し、生成されたゲスト用仮想マシン２１１を管理する機能を有している。制御用仮想マシン２０３では、ＯＳ（Operating System）部２０５が動作している。また、ＯＳ部２０５の環境で、本実施の形態に係る制御を行なう制御部２０９が動作している。
【００１５】
また、ＯＳ部２０５は、ファイル形式でデータを扱うファイルシステム部２０７を有している。本実施の形態におけるファイルシステム部２０７は、ファイルを暗号化して暗号キーを提供する機能、暗号キーによって暗号化されているファイルを復号する機能、暗号キーによってファイルを再び暗号化する機能、暗号化されているファイルの一部分を読むためのリードキーを提供する機能及びリードキーが与えられた場合に暗号化されているファイルの一部分を開示する機能などを有している。
【００１６】
ゲスト用仮想マシン２１１は、ユーザが利用するシステム（ゲスト用システムという。）を運用させる環境となる。ゲスト用仮想マシン２１１では、ＯＳ部２１３が動作している。そして、ＯＳ部２１３の環境で、アプリケーション部２１５が動作する。ＯＳ部２１３及びアプリケーション部２１５が動作することによって、ゲスト用システムが稼動している状態になる。尚、ＯＳ部２０５とＯＳ部２１３は、同じ種類であってもよいし、異なる種類であってもよい。
【００１７】
本実施の形態では、物理サーバ及び物理サーバで動作するモジュール群の全体を系と呼ぶ。図２に示したように、ゲスト用仮想マシン２１１を設け、ＯＳ部２１３及びアプリケーション部２１５を動作させることによって、ゲスト用システムが稼動している系を、稼動系と呼ぶ。この例では、ゲスト用仮想マシン２１１を１つ示しているが、複数のゲスト用仮想マシン２１１が動作するようにしてもよい。
【００１８】
図３に、第２物理サーバ１０１ｂのモジュール構成例を示す。第２物理サーバ１０１ｂは、図２に示した第１物理サーバ１０１ａの場合と同様に、ハイパーバイザ２０１及び制御用仮想マシン２０３を有している。第２物理サーバ１０１ｂは、第１物理サーバ１０１ａをバックアップする。つまり、第２物理サーバ１０１ｂは、第１物理サーバ１０１ａにおける動作が停止し又は停滞した場合に、第１物理サーバ１０１ａに代わってゲスト用仮想マシン２１１を動作させるために待機している。このように、ゲスト用仮想マシン２１１を動作させるための資源を空けて、ゲスト用仮想マシン２１１を受け入れるように準備している系を、待機系と呼ぶ。
【００１９】
図３の例では、ゲスト用仮想マシン２１１を示していないが、バックアップの対象であるゲスト用仮想マシン２１１を動作させるための資源を確保している状態であれば、他のゲスト用仮想マシン２１１を設けていてもよい。
【００２０】
稼動系の物理サーバに何らかの支障が生じ、待機系の物理サーバにゲスト用仮想マシン２１１が移された場合には、新たにゲスト用仮想マシン２１１を稼動させる方の系を新稼動系と呼び、以前にゲスト用仮想マシン２１１を稼動させていた方の系を旧稼動系と呼ぶ。
【００２１】
上述したハイパーバイザ２０１、制御用仮想マシン２０３、ＯＳ部２０５、ファイルシステム部２０７、制御部２０９、ゲスト用仮想マシン２１１、ＯＳ部２１３及びアプリケーション部２１５は、例えばハードウエア資源（例えば、図３８）と、以下で述べる処理をプロセッサに実行させるプログラムとを用いて実現される。
【００２２】
続いて、フェーズの遷移について説明する。図４に、フェーズの遷移例を示す。初期フェーズ（Ｓ４０１）では、稼動系の物理サーバにゲスト用仮想マシン２１１をセットアップし、ゲスト用システムの運用を開始する。更に、待機系の物理サーバにおける準備も行なう。初期フェーズにおける動作の概要については、図５及び図６を用いて後述する。
【００２３】
そして、ゲスト用システムの運用が開始されると、通常フェーズ（Ｓ４０３）に遷移する。通常フェーズでは、待機系の物理サーバが稼動系の物理サーバの動作状態を監視する。例えば、稼動系の物理サーバが故障した場合や、稼動系の物理サーバにおける負荷が超過した場合などに、稼動系の物理サーバにおける動作が停止し又は停滞することがある。通常フェーズにおける動作の概要については、図７及び図８を用いて後述する。
【００２４】
そして、稼動系の物理サーバにおける動作の停止又は停滞を検出すると、引継フェーズ（Ｓ４０５）に遷移する。引継フェーズでは、ゲスト用仮想マシン２１１を待機系の物理サーバへ移す。待機系は、この時点から新稼動系になる。この処理は、マイグレーションに相当する。引継フェーズにおける動作の概要については、図９及び図１０を用いて後述する。
【００２５】
そして、新稼動系におけるゲスト用システムの運用が開始されると、解消フェーズ（Ｓ４０７）に遷移する。解消フェーズにおいて、旧稼動系の物理サーバにおける動作の停止又は停滞が解消すると、旧稼動系は待機系に切り替わる。解消フェーズにおける動作の概要については、図１１及び図１２を用いて後述する。
【００２６】
旧稼動系が待機系に切り替わると、当初の稼動系と待機系の関係が入れ替わった状態になる。そして、新たな関係の下での通常フェーズ（Ｓ４０９）に遷移する。Ｓ４０９乃至Ｓ４１３では、第１物理サーバ１０１ａと第２物理サーバ１０１ｂとが、系としての役割を入れ替えて、Ｓ４０３乃至Ｓ４０７と同様に動作する。
【００２７】
稼動系と待機系とが入れ替わった後に、直ぐに再度稼動系と待機系とを再び入れ替え、元の状態に戻すようにしてもよい。
【００２８】
以下、各フェーズの概要について説明する。まず、図５を用いて、初期フェーズ（Ｓ４０１）の概要を説明する。上部は、セットアップ前の状態を示している。第１物理サーバ１０１ａと第２物理サーバ１０１ｂとに、制御用仮想マシン２０３が設けられている。
【００２９】
下部は、セットアップ後の状態を示している。第１物理サーバ１０１ａが、稼動系になり、第２物理サーバ１０１ｂが、待機系になるものとする。セットアップによって、稼動系である第１物理サーバ１０１ａには、ゲスト用システムを稼動するためのゲスト用仮想マシン２１１が設けられる。ディスク装置１０３には、イメージファイル５０１が設けられる。イメージファイル５０１は、ゲスト用仮想マシン２１１の実体に相当するデータを格納するファイルである。ゲスト用仮想マシン２１１は、ディスク装置１０３に設けられたイメージファイル５０１によって実現される。この例におけるイメージファイル５０１は、仮想ディスクイメージを格納するファイルである。イメージファイル５０１は、仮想ディスクイメージの他に、ゲスト用仮想マシン２１１の構成を定義するデータ、仮想ＢＩＯＳ（Basic Input/Output System）のイメージデータ又はログデータなどを含むようにしてもよい。尚、イメージファイル５０１は、第１物理サーバ１０１ａと第２物理サーバ１０１ｂとが共用する領域に設けられる。この例で、イメージファイル５０１のデータは、暗号化されている
【００３０】
更に、セットアップによって、ディスク装置１０３には、共用ファイル５０３も設けられる。共用ファイル５０３には、第１物理サーバ１０１ａの制御用仮想マシン２０３に付与されるライセンスキー（第１ライセンスキーという。）と、第２物理サーバ１０１ｂの制御用仮想マシン２０３に付与されるライセンスキー（第２ライセンスキーという。）とが格納されている。この段階で、第１ライセンスキーと第２ライセンスキーとは、共にキーＸであるものとする。この例では、当初第１物理サーバ１０１ａが稼動系となるので、図示した第１ライセンスキーのキーＸは、稼動系用のライセンスキーに相当する。同様に、当初第２物理サーバ１０１ｂが待機系となるので、図示した第２ライセンスキーのキーＸは、待機系用のライセンスキーに相当する。マイグレーションを行なう場合には、移行先に相当する物理サーバの制御用仮想マシン２０３が、自身用のライセンスキーを共用ファイル５０３から取得し、そのライセンスキーを用いて、イメージファイル５０１にアクセスする。イメージファイル５０１にアクセスするための手順については、後述する。
【００３１】
この例では、イメージファイル５０１と共用ファイル５０３とを同じディスク装置１０３に格納する例を示しているが、イメージファイル５０１と共用ファイル５０３とを異なるディスク装置１０３に格納するようにしてもよい。
【００３２】
また、稼動系となる第１物理サーバ１０１ａの制御用仮想マシン２０３は、自らが用いるリードキー、つまり稼動系用のリードキーを保持している。この段階で、稼動系用のリードキーはキーＡであるものとする。稼動系用のリードキーは、稼動系用のライセンスキーを読むために用いられる。
【００３３】
同様に、待機系となる第２物理サーバ１０１ｂの制御用仮想マシン２０３は、自らが用いるリードキー、つまり待機系用のリードキーを保持している。この段階で、待機系用のリードキーはキーＢであるものとする。待機系用のリードキーは、待機系用のライセンスキーを読む際に用いられる。
【００３４】
イメージファイル５０１を管理するファイルシステム部２０７は、適正なリードキーを受けた場合に限り、ライセンスキーを渡す。従って、適正なリードキーを保持していることが、ライセンスキーを得るための条件となる。この例では、各物理サーバに、異なるリードキーを割り当てるようにしているが、各物理サーバに、同じリードキーを割り当てるようにしてもよい。
【００３５】
制御用仮想マシン２０３で動作するＯＳ部２０５のファイルシステム部２０７が、リードキーの適否を判定する。但し、ＯＳ部２０５のファイルシステム部２０７以外のデータベースのようなデータ管理モジュールが、リードキーの適否を判定するようにしてもよい。
【００３６】
制御用仮想マシン２０３は、自らが用いるライセンスキーを保持するための領域も有する。但し、この段階で、待機系である第２物理サーバ１０１ｂの制御用仮想マシン２０３は、まだ自らが用いるライセンスキーを取得していない。第２物理サーバ１０１ｂの制御用仮想マシン２０３は、自らが待機系から新稼動系に切り替わる場合に、ライセンスキーを取得して、保持するようにする。
【００３７】
図６に、初期フェーズ（Ｓ４０１）におけるシーケンス例を示す。図５の例における第１物理サーバ１０１ａの制御用仮想マシン２０３が、図６に示した稼動系の制御用仮想マシン２０３に相当する。図５の例における第２物理サーバ１０１ｂの制御用仮想マシン２０３が、図６に示した待機系の制御用仮想マシン２０３に相当する。
【００３８】
稼動系の制御用仮想マシン２０３は、まず、ゲスト用仮想マシン２１１を構築する（Ｓ６０１）。そして、稼動系の制御用仮想マシン２０３は、稼動系としての初期設定を行なう（Ｓ６０３）。
【００３９】
この設定によって、共用ファイル５０３に第１ライセンスキーと第２ライセンスキーとが設定され、稼動系の制御用仮想マシン２０３自身が、稼動系用のリードキー及び稼動系用のライセンスキーを保持するようになる。また、稼動系の制御用仮想マシン２０３は、待機系の制御用仮想マシン２０３に、待機系用のリードキーを送信する（Ｓ６０５）。これらの処理の詳細については、図２１に示した第１設定処理の説明で後述する。
【００４０】
一方、待機系の制御用仮想マシン２０３は、待機系用のリードキーを受信すると、待機系としての初期設定を行なう（Ｓ６０７）。この設定によって、待機系の制御用仮想マシン２０３自身が、待機系用のリードキーを保持するようになる。この処理の詳細については、図２５に示した第２設定処理の説明で後述する。
【００４１】
そして、稼動系の制御用仮想マシン２０３は、ゲスト用仮想マシン２１１におけるゲスト用システムの運用を開始させる（Ｓ６０９）。この処理の詳細については、図１９に示したＳ１９０５の説明で後述する。
【００４２】
次に、図７を用いて、通常フェーズ（Ｓ４０３，Ｓ４０９）の概要を説明する。通常フェーズ（Ｓ４０３，Ｓ４０９）では、待機系の制御用仮想マシン２０３が、稼動系の稼動状況を監視する。上部は、第１物理サーバ１０１ａが正常に稼動している状態を示している。第２物理サーバ１０１ｂの制御用仮想マシン２０３は、リクエスト信号を第１物理サーバ１０１ａに送信し、第１物理サーバ１０１ａから所定期間（以下、第１所定期間という。）内にレスポンス信号を受信した場合に、第１物理サーバ１０１ａは正常に稼動していると判断する。
【００４３】
下部は、第１物理サーバ１０１ａの動作が停止し又は停滞した状態を示している。第２物理サーバ１０１ｂの制御用仮想マシン２０３は、リクエスト信号を第１物理サーバ１０１ａに送信してから第１所定時間内にレスポンスを受信しない場合に、第１物理サーバ１０１ａの動作が停止し又は停滞したと判定する。
【００４４】
第２物理サーバ１０１ｂの制御用仮想マシン２０３は、このような監視のために、例えばｐｉｎｇ（Packet INternet Groper）を用いるようにしてもよい。また、第２物理サーバ１０１ｂの制御用仮想マシン２０３は、リクエスト信号に対するレスポンス信号の受信以外の方法によって、第１物理サーバ１０１ａを監視するようにしてもよい。例えば、第１物理サーバ１０１ａ側で、第１物理サーバ１０１ａ自身の動作状態を計測し、第２物理サーバ１０１ｂがその計測結果を取得し、その計測結果によって第１物理サーバ１０１ａを監視するようにしてもよい。更に具体的には、第１物理サーバ１０１ａは計測結果をディスク装置１０３に記憶させ、第２物理サーバ１０１ｂはディスク装置１０３から計測結果を読むようにしてもよい。
【００４５】
尚、通常フェーズ（Ｓ４０３，Ｓ４０９）では、第１物理サーバ１０１ａの制御用仮想マシン２０３で保持しているリードキー及びライセンスキーは変更されない。同じく、第２物理サーバ１０１ｂの制御用仮想マシン２０３で保持しているリードキー及びライセンスキーも変更されない。更に、共用ファイル５０３における第１ライセンスキー及び第２ライセンスキーも変更されない。
【００４６】
図８に、通常フェーズ（Ｓ４０３，Ｓ４０９）におけるシーケンス例を示す。図７の例における第１物理サーバ１０１ａの制御用仮想マシン２０３が、図８に示した稼動系の制御用仮想マシン２０３に相当する。図７の例における第２物理サーバ１０１ｂの制御用仮想マシン２０３が、図８に示した待機系の制御用仮想マシン２０３に相当する。
【００４７】
この例では、待機系の制御用仮想マシン２０３は、稼動系の制御用仮想マシン２０３へリクエスト信号を送信する（Ｓ８０１）。稼動系の制御用仮想マシン２０３は、リクエスト信号を受信すると、待機系の制御用仮想マシン２０３へレスポンス信号を送信する（Ｓ８０３）。待機系の制御用仮想マシン２０３は、リクエスト信号を送信した時点から第１所定期間内に、レスポンス信号を受信した場合には、待機系の停止又は停滞を検出しない。
【００４８】
稼動系が正常に動作している間、Ｓ８０５及びＳ８０７に示すように、Ｓ８０１及びＳ８０３と同様の処理が繰り返される。
【００４９】
稼動系の動作が停止し又は停滞すると（Ｓ８０９）、待機系の制御用仮想マシン２０３が、稼動系の制御用仮想マシン２０３へリクエスト信号を送信しても（Ｓ８１１）、稼動系の制御用仮想マシン２０３からレスポンス信号が送信されない。待機系の制御用仮想マシン２０３は、リクエスト信号を送信した時点から第１所定期間が経過すると（Ｓ８１３）、待機系の停止又は停滞を検出する（Ｓ８１５）。待機系の停止又は停滞を検出すると、通常フェーズ（Ｓ４０３，Ｓ４０９）を終え、引継フェーズ（Ｓ４０５，Ｓ４１１）に遷移する。
【００５０】
次に、図９を用いて、引継フェーズ（Ｓ４０５，Ｓ４１１）の概要を説明する。引継フェーズ（Ｓ４０５，Ｓ４１１）では、ゲスト用仮想マシン２１１を待機系である第２物理サーバ１０１ｂへ移行させる。
【００５１】
上部は、ゲスト用仮想マシン２１１を移行させる前の状態を示している。この段階では、第１物理サーバ１０１ａの制御用仮想マシン２０３で保持しているリードキー及びライセンスキーは、図５の下部に示したセットアップ後の状態から変更されていない。また、第２物理サーバ１０１ｂの制御用仮想マシン２０３で保持しているリードキー及びライセンスキーも、図５の下部に示したセットアップ後の状態から変更されていない。更に、共用ファイル５０３における第１ライセンスキー及び第２ライセンスキーも、図５の下部に示したセットアップ後の状態から変更されていない。
【００５２】
尚、第１物理サーバ１０１ａの動作が停滞しても、ゲスト用仮想マシン２１１が停止しない場合がある。図中の破線は、未だゲスト用仮想マシン２１１がイメージファイル５０１を用いている場合もあることを示している。
【００５３】
下部は、ゲスト用仮想マシン２１１を移行させた後の状態を示している。第２物理サーバ１０１ｂに、ゲスト用仮想マシン２１１が設けられている。このとき、第２物理サーバ１０１ｂの制御用仮想マシン２０３は、リードキーのキーＢを用いて、第２ライセンスキーのキーＸを読み、キーＸを用いてゲスト用仮想マシン２１１を復元する。
【００５４】
更に、第２物理サーバ１０１ｂの制御用仮想マシン２０３は、ライセンスキーを更新する。この例では、新たなライセンスキーであるキーＹが保持されている。また、第２物理サーバ１０１ｂの制御用仮想マシン２０３は、新たな第２ライセンスキーを読むためのリードキーも更新する。この例では、リードキーがキーＣに変わっている。
【００５５】
この時点で、第１物理サーバ１０１ａの制御用仮想マシン２０３が保持している古いライセンスキーは無効であるので、共用ファイル５０３の第１ライセンスキーに格納されていたキーＸは削除される。
【００５６】
一方、第１物理サーバ１０１ａは停止し又は停滞しているので、第１物理サーバ１０１ａの制御用仮想マシン２０３が保持しているリードキー及びライセンスキーは、未だ更新されていない。更に、第１物理サーバ１０１ａのゲスト用仮想マシン２１１も残ったままである。
【００５７】
図１０に、引継フェーズ（Ｓ４０５，Ｓ４１１）におけるシーケンス例を示す。図９の例における第１物理サーバ１０１ａの制御用仮想マシン２０３が、図１０に示した旧稼動系の制御用仮想マシン２０３に相当する。図９の例における第２物理サーバ１０１ｂの制御用仮想マシン２０３が、図１０に示した新稼動系の制御用仮想マシン２０３に相当する。
【００５８】
新稼動系の制御用仮想マシン２０３は、旧稼動系の制御用仮想マシン２０３にゲスト用仮想マシン２１１を停止させる要求（以下、停止要求という。）を送信する（Ｓ１００１）。この処理の詳細については、図２７に示したＳ２７０１の説明で後述する。
【００５９】
旧稼動系の制御用仮想マシン２０３は、停止要求を受信すると、ゲスト用仮想マシン２１１を停止させる（Ｓ１００３）。このようにゲスト用仮想マシン２１１を停止させることによって、ゲスト用仮想マシン２１１が自然に復旧することによる重複稼動を防ぐ。但し、旧稼動系の物理サーバが既に停止している場合には、特に処理を行なわない。
【００６０】
次に、新稼動系の制御用仮想マシン２０３は、ゲスト用仮想マシン２１１を復元する（Ｓ１００５）。この処理の詳細については、図２８に示した復元処理の説明で後述する。
【００６１】
ゲスト用仮想マシン２１１を復元させると、新稼動系の制御用仮想マシン２０３は、稼動系への設定変更を行なう（Ｓ１００７）。この設定によって、新稼動系の制御用仮想マシン２０３自身が、新しい稼動系用のリードキー及び稼動系用のライセンスキーを保持するようになる。また、共用ファイル５０３の旧稼動系用のライセンスキーを削除し、新稼動系用のライセンスキーを更新する。これらの処理の詳細については、図２９に示した第１変更処理の説明で後述する。
【００６２】
そして、新稼動系の制御用仮想マシン２０３は、ゲスト用仮想マシン２１１にゲスト用システムの運用を再開させる。この処理の詳細については、図２７に示したＳ２７１１の説明で後述する。
【００６３】
次に、図１１を用いて、解消フェーズ（Ｓ４０７，Ｓ４１３）の概要を説明する。解消フェーズ（Ｓ４０７，Ｓ４１３）では、停止又は停滞が解消した旧稼動系を待機系に切り替える。上部は、旧稼動系が待機系へ切り替わる前の状態を示している。図１１の上部に示した状態は、図９の下部に示した状態と同様である。
【００６４】
旧稼動系である第１物理サーバ１０１ａにおける動作の停止又は停滞が解消すると、第１物理サーバ１０１ａに関する設定が更新される。具体的には、共用ファイル５０３の第１ライセンスキーに新しいライセンスキーが設定される。この例では、キーＹが設定されている。更に、第１物理サーバ１０１ａの制御用仮想マシン２０３は、第１ライセンスキーを読むための新しいリードキーを保持するようになる。この例では、キーＤを保持している。また、第１物理サーバ１０１ａの制御用仮想マシン２０３は、古いライセンスキーを削除する。
【００６５】
図１２に、解消フェーズにおけるシーケンス例を示す。図１１の例における第１物理サーバ１０１ａの制御用仮想マシン２０３が、図１２に示した旧稼動系の制御用仮想マシン２０３に相当する。図１１の例における第２物理サーバ１０１ｂの制御用仮想マシン２０３が、図１２に示した新稼動系の制御用仮想マシン２０３に相当する。
【００６６】
例えば、第１物理サーバ１０１ａの修理が完了し、第１物理サーバ１０１ａの電源が投入されると、旧稼動系の制御用仮想マシン２０３が起動する（Ｓ１２０１）。旧稼動系の制御用仮想マシン２０３は、自ら保持するライセンスキーを用いて、共用ファイル５０３の復号を試みる（Ｓ１２０３）。この段階では、古いライセンスキーは無効になっているので、復号は失敗する（Ｓ１２０５）。復号に失敗した場合には、新稼動系でゲスト用仮想マシン２１１が既に復元されていると推定されるので、旧稼動系の制御用仮想マシン２０３は、以下に示すように、自らを待機系に切り替えるための処理に移る。
【００６７】
また、旧稼動系の制御用仮想マシン２０３は、残っていたゲスト用仮想マシン２１１を削除する（Ｓ１２０７）。この処理の詳細については、図３２に示したＳ３２０７の説明で後述する。
【００６８】
更に、旧稼動系の制御用仮想マシン２０３は、待機系への設定変更を行なう（Ｓ１２０９）。自らの設定を変更するために、旧稼動系の制御用仮想マシン２０３は、停止又は停滞が解消した旨の通知（以下、解消の通知という。）を新稼動系の制御用仮想マシン２０３へ送信する（Ｓ１２１１）。
【００６９】
新稼動系の制御用仮想マシン２０３は、解消の通知を受信すると、共用ファイル５０３に待機系用の新しいライセンスキーを設定し、新しい待機系用のリードキーを生成する（Ｓ１２１３）。この例では、第１ライセンスキーに新しいライセンスキーが設定される。そして、新稼動系の制御用仮想マシン２０３は、待機系用のリードキーを旧稼動系の制御用仮想マシン２０３へ送信する（Ｓ１２１５）。旧稼動系の制御用仮想マシン２０３は、受信した待機系用のリードキーを保持する。これらの処理の詳細については、図３３に示した第２変更処理の説明で後述する。以上で、フェーズについての説明を終える。
【００７０】
続いて、共用ファイル５０３の構成について説明する。図１３に、共用ファイル５０３の構成例を示す。共用ファイル５０３は、ゲスト用仮想マシン名１３０１、マイグレーション用データ１３０３、ライセンステーブル１３０５、稼動系の物理サーバＩＤ１３０７及び待機系の物理サーバＩＤ１３０９を含んでいる。ゲスト用仮想マシン名１３０１は、当該共用ファイル５０３によって管理されるゲスト用仮想マシン２１１を識別する名前である。マイグレーション用データ１３０３は、当該ゲスト用仮想マシン２１１を移行する際に用いられるデータである。ライセンステーブル１３０５は、稼動系となる物理サーバ及び待機系となる物理サーバの夫々に付与されるライセンスキーを格納するためのテーブルである。前述した第１ライセンスキーと第２ライセンスキーは、ライセンステーブル１３０５に格納される。稼動系の物理サーバＩＤ１３０７は、現在稼動系となっている物理サーバのＩＤである。待機系の物理サーバＩＤ１３０９は、現在待機系となっている物理サーバのＩＤである。
【００７１】
図１４に、マイグレーション用データ１３０３の構成例を示す。マイグレーション用データ１３０３は、パス名、イメージファイル名、暗号キー、仮想ＣＰＵ仕様、メモリ仕様、仮想ネットワーク仕様及び仮想Ｉ／Ｏ仕様を含んでいる。
【００７２】
パス名は、ディスク装置１０３におけるイメージファイル５０１の所在を示している。イメージファイル名は、イメージファイル５０１の名前である。暗号キーは、イメージファイル５０１を復号し、更に再暗号化するために用いられる。仮想ＣＰＵ仕様、メモリ仕様、仮想ネットワーク仕様及び仮想Ｉ／Ｏ仕様は、ゲスト用仮想マシン２１１に割り当てられる資源に関する仕様である。
【００７３】
図１５に、ライセンステーブル１３０５の例を示す。待機系又は稼動系となる物理サーバ毎に、レコードを有している。レコードは、物理サーバＩＤを格納するためのフィールドと、ライセンスキーを格納するためのフィールドとを有している。
【００７４】
ここで、データとキーとの関係を整理する。ライセンスキーは、共用ファイル５０３を読む際に用いられる。従って、ライセンスキーがなければ、共用ファイル５０３を読むことはできない。マイグレーション用データは共用ファイル５０３に含まれるので、共用ファイル５０３を読めなければ、マイグレーション用データを得られない。また、マイグレーション用データには、イメージファイル５０１を復号するための暗号キーが含まれているので、マイグレーション用データを得られなければ、イメージファイル５０１を復号できない。つまり、適正なライセンスキーを用いなければ、ゲスト用仮想マシン２１１は復元されないという関係になっている。
【００７５】
図１６に、制御部２０９のモジュール構成例を示す。制御部２０９は、開始部１６０１、応答部１６０３、停止部１６０５、再開部１６０７、第２設定部１６０９、監視部１６１１、移行部１６１３、生成部１６１５及び記憶部１６１７を有している。
【００７６】
開始部１６０１は、図６に示した初期フェーズにおける稼動系の制御用仮想マシン２０３の動作に相当する開始処理を行なう。開始部１６０１は、構築部１６２１、第１設定部１６２３及び第１起動部１６２５を有している。構築部１６２１は、図６のＳ６０１に示したように、ゲスト用仮想マシン２１１を構築する処理を行なう。第１設定部１６２３は、図６のＳ６０３に示したように、稼動系としての初期設定の処理を行なう。第１起動部１６２５は、図６のＳ６０９に示したように、ゲスト用システムの運用を開始させる処理を行なう。
【００７７】
応答部１６０３は、図８のＳ８０３及びＳ８０７に示したように、リクエスト信号に対して応答する処理を行なう。この例で、応答部１６０３は、独立したスレッドあるいはプロセスとして動作する。停止部１６０５は、図１０のＳ１００３に示したように、ゲスト用仮想マシン２１１を停止させる処理を行なう。この例で、停止部１６０５は、独立したスレッドあるいはプロセスとして動作する。
【００７８】
再開部１６０７は、図１２に示した解消フェーズにおける旧稼動系の制御用仮想マシン２０３の動作に相当する再開処理を行なう。再開部１６０７は、第１判定部１６３１、第１削除部１６３３、第２変更部１６３５及び第３起動部１６３７を有している。第１判定部１６３１は、図１２のＳ１２０３に示したように、自ら保持するライセンスキーを用いて共用ファイル５０３の復号を試みる。ライセンスキーが無効であるために復号が失敗すれば、ゲスト用仮想マシン２１１が相手側で既に復元されたと判定する。第１削除部１６３３は、図１２のＳ１２０７に示したように、不要になったゲスト用仮想マシン２１１を削除する処理を行なう。第２変更部１６３５は、図１２のＳ１２０９に示したように、待機系への設定変更の処理を行なう。仮に一旦停滞した稼動系がすぐに復旧した場合には、第３起動部１６３７が、そのまま稼動系としての起動処理を行なう。
【００７９】
第２設定部１６０９は、図６のＳ６０７に示したように、待機系としての初期設定の処理を行なう。監視部１６１１は、図８に示した通常フェーズにおける待機系の制御用仮想マシン２０３の動作に相当する監視処理を行なう。
【００８０】
移行部１６１３は、図１０に示した引継フェーズにおける待機系の制御用仮想マシン２０３の動作に相当する移行処理を行なう。移行部１６１３は、送信部１６４１、取得部１６４３、復元部１６４５、第１変更部１６４７及び第２起動部１６４９を有している。送信部１６４１は、図１０のＳ１００１に示したように、停止要求を送信する処理を行なう。取得部１６４３は、復元部１６４５で用いるライセンスキーを取得する処理を行なう。復元部１６４５は、図１０のＳ１００５に示したように、ゲスト用仮想マシン２１１を復元する処理を行なう。第１変更部１６４７は、図１０のＳ１００７に示したように、稼動系への設定変更の処理を行なう。第２起動部１６４９は、図１０のＳ１００９に示したように、ゲスト用システムの運用を再開させる処理を行なう。
【００８１】
生成部１６１５は、図１２のＳ１２１３に示したように、待機系用のリードキーを生成する処理を行なう。
【００８２】
上述した開始部１６０１、応答部１６０３、停止部１６０５、再開部１６０７、第２設定部１６０９、監視部１６１１、移行部１６１３、生成部１６１５、構築部１６２１、第１設定部１６２３、第１起動部１６２５、第１判定部１６３１、第１削除部１６３３、第２変更部１６３５、第３起動部１６３７、送信部１６４１、取得部１６４３、復元部１６４５、第１変更部１６４７及び第２起動部１６４９は、例えばハードウエア資源（例えば、図３８）と、以下で述べる処理をプロセッサに実行させるプログラムとを用いて実現される。
【００８３】
記憶部１６１７は、制御部２０９で用いる制御用データを記憶する。上述した記憶部１６１７は、ハードウエア資源（例えば、図３８）を用いて実現される。
【００８４】
図１７に、制御用データの構成例を示す。制御用データは、ゲスト用仮想マシン名、パス名、共用ファイル名、リードキー、ライセンスキー及び相手の物理サーバＩＤを有している。
【００８５】
ゲスト用仮想マシン名は、本制御用データによって制御されるゲスト用仮想マシン２１１を識別するゲスト用仮想マシン２１１の名前である。パス名は、ディスク装置１０３における共用ファイル５０３の所在を示している。共用ファイル名は、共用ファイル５０３の名前である。リードキーは、上述した通り、自らに付与されたライセンスキーを共用ファイル５０３から読むために用いられる。ライセンスキーは、上述した通り、共用ファイル５０３を復号するために用いられる。相手の物理サーバＩＤは、相手となる物理サーバを識別するためのＩＤである。
【００８６】
以下では、順に最初の稼動系の処理、最初の待機系の処理及び再開時の処理について説明する。
【００８７】
まず、最初に稼動系となる物理サーバ（図５に例示した第１物理サーバ１０１ａに相当する）の制御用仮想マシン２０３が有する制御部２０９における処理について説明する。図１８に、最初の稼動系におけるメイン処理フローの例を示す。制御部２０９が、ゲスト用仮想マシン２１１のセットアップを命じられると、開始部１６０１が、開始処理を実行する（Ｓ１８０１）。開始処理は、図６に示した初期フェーズにおける稼動系の制御用仮想マシンの処理に相当する。
【００８８】
図１９に、開始処理フローの例を示す。最初に、構築部１６２１は、構築処理を実行する（Ｓ１９０１）。構築処理によって、新たなゲスト用仮想マシン２１１が設けられ、ゲスト用仮想マシン２１１にゲスト用システムがセットアップされる。つまり、この処理は、図６のＳ６０１に示したステップに相当する。
【００８９】
図２０に、構築処理フローの例を示す。構築部１６２１は、ゲスト用仮想マシン２１１を生成し、ゲスト用仮想マシン２１１に仮想ＣＰＵ及びメモリを割り当てる（Ｓ２００１）。仮想ＣＰＵ仕様及びメモリ仕様は、図１４に示したマイグレーション用データから読み取られる。
【００９０】
更に、構築部１６２１は、ゲスト用仮想マシン２１１に仮想ネットワークを割り当て（Ｓ２００３）、更に仮想Ｉ／Ｏを割り当てる（Ｓ２００５）。仮想ネットワーク仕様及び仮想Ｉ／Ｏ仕様も、図１４に示したマイグレーション用データから読み取られる。
【００９１】
構築部１６２１は、ディスク装置１０３にイメージファイル５０１を設定する（Ｓ２００７）。このとき、構築部１６２１は、パス名及びイメージファイル名を指定して、ＯＳ部２０５のファイルシステム部２０７に、イメージファイル５０１を生成させる。
【００９２】
更に、構築部１６２１は、ゲスト用システム（ＯＳ部２１３のプログラム、アプリケーション部２１５のプログラム及びユーザデータなど）をインストールする（Ｓ２００９）。この例では、ＯＳ部２０５のファイルシステム部２０７は、仮想ディスクイメージを暗号化した上で、イメージファイル５０１に収めている。このように、仮想ディスクイメージを暗号化することによって、機密性が高められる。構築処理を終えると、図１９に示したＳ１９０３の処理に戻る。
【００９３】
図１９の説明に戻る。第１設定部１６２３は、第１設定処理を実行する（Ｓ１９０３）。この処理は、図６のＳ６０３に示したステップに相当する。
【００９４】
図２１に、第１設定処理フローの例を示す。第１設定部１６２３は、ＯＳ部２０５のファイルシステム部２０７から、イメージファイル５０１の暗号キーを取得する（Ｓ２１０１）。第１設定部１６２３は、ディスク装置１０３に共用ファイル５０３を設けて、マイグレーション用データを設定する（Ｓ２１０３）。このとき、第１設定部１６２３は、Ｓ２１０１で取得した暗号キーを、マイグレーション用データに設定する。第１設定部１６２３は、図１３に示したゲスト用仮想マシン名１３０１に、構築処理（図１９のＳ１９０１）で生成されたゲスト用仮想マシン２１１の名を設定する。第１設定部１６２３は、図２０のＳ２００７で指定したパス名及びイメージファイル名を、マイグレーション用データに設定する。第１設定部１６２３は、図２０のＳ２００１乃至Ｓ２００５でゲスト用仮想マシン２１１に割り当てた仮想ＣＰＵ、メモリ、仮想ネットワーク及び仮想Ｉ／Ｏの各仕様を設定する。
【００９５】
第１設定部１６２３は、共用ファイル５０３を暗号化して、ライセンスキーを生成する（Ｓ２１０５）。ライセンスキーは、暗号化された共用ファイル５０３を復号するための復号キーである。
【００９６】
第１設定部１６２３は、共用ファイル５０３に含まれるライセンステーブルにおける稼動系のレコードに、生成されたライセンスキーを設定する（Ｓ２１０７）。稼動系のレコードは、稼動系の物理サーバのＩＤによって特定される。例えば、稼動系の物理サーバが第１物理サーバ１０１ａである場合には、図１５に示したライセンステーブルの第１レコードが、稼動系のレコードに相当する。そして、図１５の第１レコードのライセンスキーのフィールドに、第１ライセンスキーとして、生成されたライセンスキーが設定される。稼動系用のライセンスキーは、稼動系の制御用仮想マシン２０３が共用ファイル５０３にアクセスする際に用いられる。
【００９７】
このとき、第１設定部１６２３は、ライセンスキーを用いて、ファイルシステム部２０７に共用ファイル５０３を更新させる。そして、ファイルシステム部２０７は、稼動系用のライセンスキーを読むためのキー（稼動系用のリードキー）を、第１設定部１６２３へ返す。
【００９８】
第１設定部１６２３は、ファイルシステム部２０７から稼動系用のリードキーを取得すると（Ｓ２１０９）、制御用データに、稼動系用のリードキー及び稼動系用のライセンスキーを設定する（Ｓ２１１１）。
【００９９】
また、第１設定部１６２３は、共用ファイル５０３に含まれるライセンステーブルにおける待機系のレコードにも、Ｓ２１０５で生成されたライセンスキーを設定する（Ｓ２１１３）。待機系のレコードは、待機系の物理サーバのＩＤによって特定される。例えば、待機系の物理サーバが第２物理サーバ１０１ｂである場合には、図１５に示したライセンステーブルの第２レコードが、待機系のレコードに相当する。そして、図１５の第２レコードのライセンスキーのフィールドに、第２ライセンスキーとして、生成されたライセンスキーが設定される。待機系用のライセンスキーは、待機系の制御用仮想マシン２０３が共用ファイル５０３にアクセスする際に用いられる。
【０１００】
このとき、第１設定部１６２３は、ライセンスキーを渡して、ファイルシステム部２０７に共用ファイル５０３を更新させる。そして、ファイルシステム部２０７は、待機系用のライセンスキーを読むためのキー（待機系用のリードキー）を、第１設定部１６２３へ返す。
【０１０１】
第１設定部１６２３は、ファイルシステム部２０７から待機系用のリードキーを取得すると（Ｓ２１１５）、待機系用のリードキーを待機系の制御用仮想マシン２０３の制御部２０９に送信する（Ｓ２１１７）。第１設定処理を終えると、図１９に示したＳ１９０５の処理に戻る。
【０１０２】
図１９の説明に戻る。第１起動部１６２５は、ゲスト用仮想マシン２１１を起動し、ゲスト用仮想マシン２１１にゲスト用システムを起動させる（Ｓ１９０５）。この処理は、図６のＳ６０９に示したステップに相当する。開始処理を終えると、図１８に示したＳ１８０３の処理に戻る。
【０１０３】
図１８の説明に戻る。開始処理を終えると、通常フェーズに遷移する。制御部２０９は、応答部１６０３による応答処理を起動させる（Ｓ１８０３）。応答処理は、図８に示した通常フェーズにおける稼動系の制御用仮想マシンの処理に相当する。
【０１０４】
図２２に、応答処理フローの例を示す。応答部１６０３は、リクエスト信号の受信を待って、リクエスト信号を受信する（Ｓ２２０１）。応答部１６０３は、リクエスト信号を受信すると、レスポンス信号を返信する（Ｓ２２０３）。この処理は、図８のＳ８０３に示したステップ及び図８のＳ８０７に示したステップに相当する。
【０１０５】
図１８の説明に戻る。制御部２０９は、応答部１６０３による応答処理を起動させると、応答処理の終了を待たずに、停止部１６０５による停止処理を起動させる（Ｓ１８０５）。
【０１０６】
図２３に、停止処理フローの例を示す。この処理は、図１０のＳ１００３に示したステップに相当する。停止部１６０５は、停止要求の受信を待って、停止要求を受信する（Ｓ２３０１）。停止要求を受信すると、停止部１６０５は、ゲスト用仮想マシン２１１を停止させる（Ｓ２３０３）。
【０１０７】
図１８の説明に戻る。制御部２０９は、停止部１６０５による停止処理を起動させると、停止処理の終了を待たずに、最初の稼動系の処理を終える。
【０１０８】
切替処理（Ｓ１８０７）については、実施の形態２において説明する。以上で、最初の稼動系の処理についての説明を終える。
【０１０９】
次に、最初の待機系の処理について説明する。図２４に、待機系におけるメイン処理フローの例を示す。この処理は、最初に待機系となる物理サーバ（図５に例示した第２物理サーバ１０１ｂに相当する）の制御用仮想マシン２０３が有する制御部２０９により実行される。
【０１１０】
第２設定部１６０９は、第２設定処理を実行する（Ｓ２４０１）。第２設定処理は、図６に示した初期フェーズにおける待機系の制御用仮想マシンの処理に相当する。つまり、第２設定処理は、図６のＳ６０７に示したステップに相当する。
【０１１１】
図２５に、第２設定処理フローの例を示す。第２設定部１６０９は、第１設定部１６２３から送信される待機系用のリードキーの受信を待って、待機系用のリードキーを受信する（Ｓ２５０１）。待機系用のリードキーを受信すると、第２設定部１６０９は、制御用データに、待機系用のリードキーを設定する（Ｓ２５０３）。
【０１１２】
そして、第２設定部１６０９は、稼動系におけるゲスト用システムの運用開始を待って（Ｓ２５０５）、ゲスト用システムの運用が開始されると、第２設定処理を終える。例えば、稼動系の制御部２０９が、待機系の制御部２０９へゲスト用システムの運用開始を通知し、待機系の制御部２０９は、この通知によってゲスト用システムの運用開始を判断するようにしてもよい。第２設定処理を終えると、図２４に示したＳ２４０３の処理に戻る。
【０１１３】
図２４の説明に戻る。監視部１６１１は、監視処理を実行する（Ｓ２４０３）。監視処理は、図８に示した通常フェーズにおける待機系の制御用仮想マシンの処理に相当する。
【０１１４】
図２６に、監視処理フローの例を示す。監視部１６１１は、待機系の制御用仮想マシンにおける応答部１６０３へリクエスト信号を送信する（Ｓ２６０１）。この処理は、図８のＳ８０１に示したステップ及びＳ８０５に示したステップに相当する。
【０１１５】
尚、監視部１６１１は、応答部１６０３の代わりにゲスト用仮想マシン２１１へリクエスト信号を送信し、ゲスト用仮想マシン２１１からレスポンス信号を受信するようにしてもよい。
【０１１６】
監視部１６１１は、レスポンス信号を受信したか否かを判定する（Ｓ２６０３）。レスポンス信号を受信したと判定した場合には、監視部１６１１は、次にレスポンス信号を送信するタイミングを待つ（Ｓ２６０５）。そして、Ｓ２６０１の処理を繰り返す。
【０１１７】
一方、レスポンス信号を受信していないと判定した場合には、監視部１６１１は、最後にレスポンス信号を受信してから、第１所定期間を経過したか否かを判定する（Ｓ２６０７）。第１所定期間は、稼動系が停止し又は停滞していると判断するための応答時間に相当する。第１所定期間を越えてもレスポンス信号が返ってこない場合には、稼動系は停止し又は停滞していると判定する。
【０１１８】
第１所定期間を経過していないと判定した場合には、Ｓ２６０３の処理を繰り返す。一方、第１所定期間を経過したと判定した場合には、監視部１６１１は、稼動系の停止又は停滞を検出する（Ｓ２６０９）。この処理は、図８のＳ８１３に示したステップ及びＳ８１５に示したステップに相当する。監視処理を終えると、図２４に示したＳ２４０５の処理に戻る。
【０１１９】
図２４の説明に戻る。監視処理で稼動系の停止又は停滞を検出すると、移行部１６１３は、移行処理を実行する（Ｓ２４０５）。移行処理は、図１０に示した引継フェーズにおける新稼動系の制御用仮想マシンの処理に相当する。
【０１２０】
図２７に、移行処理フローの例を示す。送信部１６４１は、旧稼動系の停止部１６０５に停止要求を送信する（Ｓ２７０１）。この処理は、図１０のＳ１００１に示したステップに相当する。
【０１２１】
取得部１６４３は、制御用データからリードキーを読み（Ｓ２７０３）、リードキーを用いて、共用ファイル５０３からライセンスキーを読む（Ｓ２７０５）。そして、取得部１６４３は、読んだライセンスキーを制御用データに設定する。
【０１２２】
そして、復元部１６４５は、復元処理を実行する（Ｓ２７０７）。この処理は、図１０のＳ１００５に示したステップに相当する。図２８に、復元処理フローの例を示す。
【０１２３】
まず、復元部１６４５は、ライセンスキーを用いて、共用ファイル５０３を復号する（Ｓ２８０１）。そして、復元部１６４５は、ゲスト用仮想マシン２１１を生成し、共用ファイル５０３から読み取った仮想ＣＰＵ仕様及びメモリ仕様に従って、ゲスト用仮想マシン２１１に仮想ＣＰＵ及びメモリを割り当てる（Ｓ２８０３）。更に、復元部１６４５は、共用ファイル５０３から読み取った仮想ネットワーク仕様に従って、ゲスト用仮想マシン２１１に仮想ネットワークを割り当て（Ｓ２８０５）、共用ファイル５０３から読み取った仮想Ｉ／Ｏ仕様に従って、ゲスト用仮想マシン２１１に仮想Ｉ／Ｏを割り当てる（Ｓ２８０７）。
【０１２４】
復元部１６４５は、共用ファイル５０３から読んだ暗号キーをファイルシステム部２０７に渡して、イメージファイル５０１へアクセスする（Ｓ２８０９）。暗号キーが正当であれば、ゲスト用仮想マシン２１１は、イメージファイル５０１を用いる状態、つまり元の状態になる。復元処理を終えると、図２７に示したＳ２７０９の処理に戻る。
【０１２５】
続いて、第１変更部１６４７は、第１変更処理を実行する（Ｓ２７０９）。この処理は、図１０のＳ１００７に示したステップに相当する。
【０１２６】
図２９に、第１変更処理フローの例を示す。第１変更部１６４７は、共用ファイル５０３を暗号化して、新しいライセンスキーを生成する（Ｓ２９０１）。これ以降、古いライセンスキーを用いた共用ファイル５０３の復号は、失敗するようになる。第１変更部１６４７は、共用ファイル５０３に、新稼動系用のライセンスキーを設定する（Ｓ２９０３）。新稼動系のレコードは、新稼動系の物理サーバのＩＤによって特定される。新稼動系は、当該物理サーバ自身の系を指す。例えば図９の例では、第２物理サーバ１０１ｂが新稼動系の物理サーバに相当し、図１５に示したライセンステーブルの第２レコードが、新稼動系のレコードに相当する。そして、図１５の第２レコードのライセンスキーのフィールドに、第２ライセンスキーとして、生成されたライセンスキーが設定される。新稼動系用のライセンスキーは、新稼動系の制御用仮想マシン２０３が共用ファイル５０３にアクセスする際に用いられる。
【０１２７】
このとき、第１変更部１６４７は、ライセンスキーを用いて、ファイルシステム部２０７に共用ファイル５０３を更新させる。そして、ファイルシステム部２０７は、新稼動系用のライセンスキーを読むためのキー（新稼動系用のリードキー）を、第１変更部１６４７へ返す。
【０１２８】
第１変更部１６４７は、新稼動系用のリードキーを取得すると（Ｓ２９０５）、制御用データに、新稼動系用のリードキー及び新稼動系用のライセンスキーを設定する（Ｓ２９０７）。そして、第１変更部１６４７は、共用ファイル５０３における旧稼動系用のライセンスキーを削除する（Ｓ２９０９）。第１変更処理を終えると、図２７に示したＳ２７１１の処理に戻る。
【０１２９】
図２７の説明に戻る。第２起動部１６４９は、ゲスト用仮想マシン２１１を起動し、ゲスト用仮想マシン２１１にゲスト用システムを起動させる（Ｓ２７１１）。この処理は、図１０のＳ１００９に示したステップに相当する。移行処理を終えると、図２４に示したＳ２４０７の処理に戻る。
【０１３０】
図２４の説明に戻る。移行処理を終えると、解消フェーズに遷移する。生成部１６１５は、生成処理を実行する（Ｓ２４０７）。生成処理は、図１２のＳ１２１３に示したステップに相当する。
【０１３１】
図３０に、生成処理フローの例を示す。生成部１６１５は、旧待機系の第２変更部１６３５から送信される解消の通知の受信を待つ。生成部１６１５は、解消の通知を受信すると（Ｓ３００１）、共用ファイル５０３に、待機用のライセンスキーを設定する（Ｓ３００３）。待機用のライセンスキーは、図２９のＳ２９０１で生成された新しいライセンスキーである。
【０１３２】
待機系のレコードは、待機系の物理サーバのＩＤによって特定される。待機系は旧稼動系のことであり、当該物理サーバの相手側の系を指す。例えば図１１の例では、第１物理サーバ１０１ａが待機系の物理サーバに相当し、図１５に示したライセンステーブルの第１レコードが、待機系のレコードに相当する。そして、図１５の第１レコードのライセンスキーのフィールドに、第１ライセンスキーとして、新しいライセンスキーが設定される。待機系用のライセンスキーは、待機系の制御用仮想マシン２０３が共用ファイル５０３にアクセスする際に用いられる。
【０１３３】
このとき、生成部１６１５は、ライセンスキーを用いて、ファイルシステム部２０７に共用ファイル５０３を更新させる。そして、ファイルシステム部２０７は、待機系用のライセンスキーを読むためのキー（待機系用のリードキー）を、生成部１６１５へ返す。
【０１３４】
生成部１６１５は、待機系用のリードキーを取得すると（Ｓ３００５）、待機系の第２変更部１６３５へ、待機系用のリードキーを送信する（Ｓ３００７）。生成処理を終えると、図２４に示したＳ２４０９の処理に戻る。
【０１３５】
図２４の説明に戻る。生成処理（Ｓ２４０７）を終えると、通常フェーズに遷移する。制御部２０９は、応答部１６０３による応答処理を起動させる（Ｓ２４０９）。応答処理は、図１８に示したＳ１８０３の場合と同様である。制御部２０９は、応答部１６０３による応答処理を起動させると、応答処理の終了を待たずに、停止部１６０５による停止処理を起動させる（Ｓ２４１１）。停止処理は、図１８に示したＳ１８０５の場合と同様である。制御部２０９は、停止部１６０５による停止処理を起動させると、停止処理の終了を待たずに、待機系の処理を終える。尚、切替処理（Ｓ２４１３）については、実施の形態２において述べる。
【０１３６】
次に、再開時の処理について説明する。例えば物理サーバの修理を終え、物理サーバに電源が投入され、制御用仮想マシン２０３が起動すると、再開時の処理が開始される。
【０１３７】
図３１に、再開時のメイン処理フローの例を示す。再開部１６０７は、再開処理を実行する（Ｓ３１０１）。再開処理は、図１２に示した解消フェーズにおける旧稼動系の制御用仮想マシンの処理に相当する。
【０１３８】
図３２に、再開処理フローの例を示す。第１判定部１６３１は、制御用データからライセンスキーを読み（Ｓ３２０１）、ライセンスキーを用いて、共用ファイル５０３を復号する（Ｓ３２０３）。この処理は、例えば図１２のＳ１２０３に示したステップに相当する。
【０１３９】
そして、第１判定部１６３１は、復号が成功したか否かを判定する（Ｓ３２０５）。復号が失敗する場合には、既にゲスト用仮想マシン２１１が相手側で復元されていると推定される。従って、復号が成功しなかったと判定した場合には、第１削除部１６３３は、不要になったゲスト用仮想マシン２１１を削除する（Ｓ３２０７）。この処理は、図１２のＳ１２０７に示したステップに相当する。そして、第２変更部１６３５は、第２変更処理を実行する（Ｓ３２０９）。この処理は、図１２のＳ１２０９に示したステップに相当する。
【０１４０】
図３３に、第２変更処理フローの例を示す。第２変更部１６３５は、制御用データにおける古いライセンスキーを消去する（Ｓ３３０１）。また、第２変更部１６３５は、新稼動系の生成部１６１５へ、旧稼動系における停止又は停滞が解消した旨の通知を送信する（Ｓ３３０３）。第２変更部１６３５は、新稼動系の生成部１６１５から送信された待機系用のリードキーを受信すると（Ｓ３３０５）、制御用データに、待機系用のリードキーを設定する（Ｓ３３０７）。
【０１４１】
図３２の説明に戻る。第２変更処理を終えると、再開部１６０７は、再開ステータスに「待機系」を設定する（Ｓ３２１１）。再開ステータスは、一時的に記憶される内部変数であって、例えば再開処理における戻り値に相当する。そして、再開処理を終え、図３１のＳ３１０３に示したステップに戻る。
【０１４２】
一方、復号が成功した場合には、未だゲスト用仮想マシン２１１が相手側で起動されていないと想定される。従って、復号が成功したと判定した場合には、第３起動部１６３７は、ゲスト用仮想マシン２１１を起動し（Ｓ３２１３）、更にゲスト用仮想マシン２１１にゲスト用システムを起動させる（Ｓ３２１５）。そして、再開部１６０７は、再開ステータスに「稼動系」を設定する（Ｓ３２１７）。再開処理を終えると、図３１のＳ３１０３に示したステップに戻る。
【０１４３】
図３１の説明に戻る。制御部２０９は、再開ステータスが「待機系」であるか否かを判定する（Ｓ３１０３）。再開ステータスが「待機系」であると判定した場合には、制御部２０９は、図２４に示した待機系におけるＳ２４０３乃至Ｓ２４１１の処理と同様の処理を実行する。つまり、通常フェーズの待機系として、監視部１６１１は、監視処理を実行する（Ｓ３１０５）。引継フェーズの新稼動系として、移行部１６１３は、移行処理を実行する（Ｓ３１０７）。解消フェーズの新稼動系として、生成部１６１５は、生成処理を実行する（Ｓ３１０９）。そして、通常フェーズの稼動系として、制御部２０９は、応答部１６０３による応答処理を起動し（Ｓ３１１１）、続けて、停止部１６０５による停止処理を起動する（Ｓ３１１３）。切替処理（Ｓ３１１５）については、実施の形態２において説明する。
【０１４４】
一方、Ｓ３１０３において、再開ステータスが「待機系」ではないと判定した場合、つまり、再開ステータスが「稼動系」であると判定した場合には、制御部２０９は、図１８に示した稼動系におけるＳ１８０３乃至Ｓ１８０５の処理と同様の処理を実行する。つまり、通常フェーズにおける稼動系として、制御部２０９は、応答部１６０３による応答処理を起動し（Ｓ３１１７）。停止部１６０５による停止処理を起動する（Ｓ３１１９）。切替処理（Ｓ３１２１）については、実施の形態２において説明する。以上で、本実施の形態における処理についての説明を終える。
【０１４５】
本実施の形態によれば、ゲスト用仮想マシン２１１を稼動させている第１物理サーバ１０１ａの動作が停止し又は停滞した場合に、当該第１物理サーバ１０１ａが事前に待機系と定めておいた第２物理サーバ１０１ｂにおいて、迅速にゲスト用仮想マシン２１１を復元できる。
【０１４６】
また、復元部１６４５は、イメージファイル５０１を復号するための暗号キーを、ライセンスキーを用いて取得し、暗号キーを用いてイメージファイル５０１を復号するので、ライセンスキーによってゲスト用仮想マシン２１１の復元を制御することができる。
【０１４７】
また、第１物理サーバ１０１ａの第１設定部１６２３は、ライセンスキーを共用ファイル５０３から読むためのリードキーを、第２物理サーバ１０１ｂに送信し、第２物理サーバ１０１ｂの取得部１６４３は、受信したリードキーを用いて、共用ファイル５０３からライセンスキーを読むので、第１物理サーバ１０１ａと第２物理サーバ１０１ｂ以外の他のコンピュータがＬＡＮに接続されていたとしても、他のコンピュータがライセンスキーを取得して、不正にあるいは誤ってゲスト用仮想マシン２１１を復元することを防止できる。
【０１４８】
また、第２物理サーバ１０１ｂの送信部１６４１は、第１物理サーバ１０１ａの動作が停滞した場合に、ゲスト用仮想マシン２１１を停止させる要求を、第１物理サーバ１０１ａに送信し、第１物理サーバ１０１ａの停止部１６０５は、上記要求を受信した場合に、ゲスト用仮想マシン２１１を停止させるので、ゲスト用仮想マシン２１１が多重に稼動される事態を防げる。
【０１４９】
また、第１物理サーバ１０１ａの第１削除部１６３３は、第２物理サーバ１０１ｂにおいてゲスト用仮想マシン２１１が復元されていると判定した場合に、第１物理サーバ１０１ａにおけるゲスト用仮想マシン２１１を削除するので、ゲスト用仮想マシン２１１が多重に稼動される事態を防げる。
【０１５０】
［実施の形態２］
上述した実施の形態では、支障が生じた稼動系の物理サーバを一旦停止し、改めて当該物理サーバを再起動させる手順によって、旧稼動系を待機系に切り替える例を示した。
【０１５１】
しかし、支障が生じた稼動系の物理サーバが停止に至らずに、そのまま回復する場合もある。本実施の形態では、例えば稼動系の物理サーバにおける動作の停滞が自然に解消した場合にも、旧稼動系を待機系に切り替えられるようにする。
【０１５２】
図３４に、実施の形態２に係る通常フェーズにおけるシーケンス例を示す。まず、稼動系が正常に動作している状態について説明する。稼動系の制御用仮想マシン２０３は、常時、自ら保持するライセンスキーを用いて、共用ファイル５０３の復号を試みる（Ｓ３４０１）。稼動系として正常に動作している場合には、共用ファイル５０３の復号は成功する（Ｓ３４０３）。共用ファイル５０３の復号が成功した場合には、稼動系としての動作を継続する。そして、Ｓ３４０５及びＳ３４０７に示すように、同様の処理を繰り返す。
【０１５３】
この間、待機系の制御用仮想マシン２０３は、前述した正常時の監視を行なう（Ｓ３４１１）。正常時の監視は、図８のＳ８０１乃至Ｓ８０７のステップで説明した通りである。
【０１５４】
一方、稼動系における動作が停滞すると（Ｓ３４０９）、共用ファイル５０３の復号を試みることにより、復号の成否を判定する処理自体も停滞するが、待機系の制御用仮想マシン２０３は、図８のＳ８１１乃至Ｓ８１５のステップと同様に、リクエスト信号を送信し（Ｓ３４１３）、リクエスト信号を送信した時点から第１所定期間が経過すると（Ｓ３４１５）、待機系の停滞を検出する（Ｓ３４１７）。
【０１５５】
実施の形態１の場合と同様に、待機系の停滞を検出すると通常フェーズ（Ｓ４０３，Ｓ４０９）を終え、引継フェーズ（Ｓ４０５，Ｓ４１１）に遷移する。引継フェーズ（Ｓ４０５，Ｓ４１１）については、実施の形態１の場合と同様である。
【０１５６】
そして、引継フェーズ（Ｓ４０５，Ｓ４１１）を終えると、解消フェーズ（Ｓ４０７，Ｓ４１３）に遷移する。
【０１５７】
図３５に、実施の形態２に係る解消フェーズ（Ｓ４０７，Ｓ４１３）におけるシーケンス例を示す。旧稼動系における動作の停滞が解消すると（Ｓ３５０１）、再び、自ら保持するライセンスキーを用いて、共用ファイル５０３の復号を試みるようになる（Ｓ３５０３）。しかし、旧稼動系の制御用仮想マシン２０３が保持しているライセンスキーは古くなっているので、復号は失敗する（Ｓ３５０５）。本実施の形態では、このように共用ファイル５０３の復号が失敗した場合に、既に新稼動系においてゲスト用仮想マシン２１１が復元されていると判断し、自らを旧稼動系から待機系に切り替える処理を行なうようにする。
【０１５８】
旧稼動系の制御用仮想マシン２０３は、無用になった旧稼動系のゲスト用仮想マシン２１１を停止させ（Ｓ３５０７）、更に停止したゲスト用仮想マシン２１１を削除する（Ｓ３５０９）。図１２のＳ１２０９乃至Ｓ１２１５に示した場合と同様の処理によって、旧自ら稼動系から待機系へ切り替える。つまり、旧稼動系の制御用仮想マシン２０３は、待機系への設定変更を行なう（Ｓ３５１１）。このとき、旧稼動系の制御用仮想マシン２０３は、解消の通知を新稼動系の制御用仮想マシン２０３へ送信する（Ｓ３５１３）。
【０１５９】
新稼動系の制御用仮想マシン２０３は、解消の通知を受信すると、共用ファイル５０３に待機系用の新しいライセンスキーを設定し、新しいライセンスキーを読むためのリードキー、つまり待機系用のリードキーを生成する（Ｓ３５１５）。そして、新稼動系の制御用仮想マシン２０３は、待機系用のリードキーを旧稼動系の制御用仮想マシン２０３へ送信する（Ｓ３５１７）。そして、旧稼動系の制御用仮想マシン２０３は、受信した待機系用のリードキーを保持する。
【０１６０】
実施の形態２に係る制御部２０９は、図１６で説明したモジュールに加えて、切替部３６０１を有している。図３６に、切替部３６０１のモジュール構成例を示す。切替部３６０１は、自らが旧稼動系となったことを判定し、自らを旧稼動系から待機系へ切り替える処理を行なう。この例で、切替部３６０１は、独立したスレッドあるいはプロセスとして動作する。切替部３６０１は、第２判定部３６０３、停止部３６０５、第２削除部３６０７及び第３変更部３６０９を有している。
【０１６１】
第２判定部３６０３は、図３４のＳ３４０１及びＳ３４０５、更に図３５のＳ３５０３に示したように、ライセンスキーを用いて共用ファイル５０３の復号を試み、相手側におけるゲスト用仮想マシン２１１の復元の成否を判定する。停止部３６０５は、図３５のＳ３５０７に示したように、ゲスト用仮想マシン２１１を停止させる処理を行なう。第２削除部３６０７は、図３５のＳ３５０９に示したように、ゲスト用仮想マシン２１１を削除する処理を行なう。そして、第３変更部３６０９は、図３５のＳ３５１１に示したように、待機系への設定変更の処理を行なう。
【０１６２】
上述した切替部３６０１、第２判定部３６０３、停止部３６０５、第２削除部３６０７及び第３変更部３６０９は、例えばハードウエア資源（例えば、図３８）と、以下で述べる処理をプロセッサに実行させるプログラムとを用いて実現される。
【０１６３】
最初の稼動系におけるメイン処理について図１８を用いて説明する。Ｓ１８０５において停止処理を起動させると、制御部２０９は、切替部３６０１による切替処理を起動させる（Ｓ１８０７）。そして、切替処理の終了を待たずに、制御部２０９は、最初の稼動系におけるメイン処理を終える。
【０１６４】
図２４に示した最初の待機系におけるメイン処理についても、Ｓ２４１１において停止処理を起動させると、制御部２０９は、切替部３６０１による切替処理を起動させる（Ｓ２４１３）。そして、切替処理の終了を待たずに、制御部２０９は、最初の待機系におけるメイン処理を終える。
【０１６５】
更に、図３１に示した再開時のメイン処理についても、Ｓ３１１３において停止処理を起動させると、制御部２０９は、切替部３６０１による切替処理を起動させる（Ｓ３１１５）。また、Ｓ３１１９において停止処理を起動させた場合にも、制御部２０９は、切替部３６０１による切替処理を起動させる（Ｓ３１２１）。そして、切替処理の終了を待たずに、制御部２０９は、再開時のメイン処理を終える。
【０１６６】
続いて、切替部３６０１による切替処理について説明する。図３７に、切替処理フローの例を示す。第２判定部３６０３は、記憶部１６１７から制御用データに含まれるライセンスキーを読み、そのライセンスキーを用いて、共用ファイル５０３を復号する（Ｓ３７０１）。この処理は、図３４のＳ３４０１に示したステップ、同じくＳ３４０５に示したステップ及び図３５のＳ３５０３に示したステップに相当する。
【０１６７】
第２判定部３６０３は、復号が成功したか否かを判定する（Ｓ３７０３）。復号が成功したと判定した場合には、第２判定部３６０３は、第２所定期間の経過を待つ（Ｓ３７０５）。第２所定期間は、復号の成否による判定を繰り返す周期に相当する。例えば、第２所定期間を、ゲスト用システムの起動に要する時間よりも短くすれば、ゲスト用システムの運用が開始される前に判定されるようになる。
【０１６８】
一方、Ｓ３７０３において、復号が成功していないと判定した場合、つまり、復号が失敗したと判定した場合には、停止部３６０５は、ゲスト用仮想マシン２１１を停止させる（Ｓ３７０７）。そして、第２削除部３６０７は、停止したゲスト用仮想マシン２１１を削除する（Ｓ３７０９）。これらの処理は、図３５のＳ３５０７及びＳ３５０９に示したステップに相当する。
【０１６９】
そして、第３変更部３６０９は、第３変更処理を実行する（Ｓ３７１１）。第３変更部３６０９による第３変更処理は、再開部１６０７の第２変更部１６３５による第２変更処理と同様である。この処理は、図３５のＳ３５１１に示したステップに相当する。尚、旧稼動系の第３変更部３６０９による第３変更処理に対して、新稼動系の生成部１６１５は、再開部１６０７の第２変更部１６３５による第２変更処理に対する場合と同様の処理を行なう。
【０１７０】
本実施の形態によれば、第１物理サーバ１０１ａが停止しない場合でも、第１物理サーバ１０１ａの第２削除部３６０７は、第２物理サーバ１０１ｂにおいてゲスト用仮想マシン２１１が復元されていると判定した場合に、第１物理サーバ１０１ａにおけるゲスト用仮想マシン２１１を削除するので、ゲスト用仮想マシン２１１が多重に稼動される事態を防げる。
【０１７１】
以上本発明の実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上述の機能ブロック構成はプログラムモジュール構成に一致しない場合もある。
【０１７２】
また、上で説明した各記憶領域の構成は一例であって、上記のような構成でない場合もある。さらに、処理フローにおいても、処理結果が変わらなければ処理の順番を入れ替えても良く、並列に実行させるようにしても良い。
【０１７３】
なお、上で述べた物理サーバは、コンピュータ装置であって、図３８に示すように、メモリ２５０１とＣＰＵ（Central Processing Unit）２５０３とハードディスク・ドライブ（ＨＤＤ：Hard Disk Drive）２５０５と表示装置２５０９に接続される表示制御部２５０７とリムーバブル・ディスク２５１１用のドライブ装置２５１３と入力装置２５１５とネットワークに接続するための通信制御部２５１７とがバス２５１９で接続されている。オペレーティング・システム（ＯＳ：Operating System）及び本実施例における処理を実施するためのアプリケーション・プログラムは、ＨＤＤ２５０５に格納されており、ＣＰＵ２５０３により実行される際にはＨＤＤ２５０５からメモリ２５０１に読み出される。ＣＰＵ２５０３は、アプリケーション・プログラムの処理内容に応じて表示制御部２５０７、通信制御部２５１７、ドライブ装置２５１３を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ２５０１に格納されるが、ＨＤＤ２５０５に格納されるようにしてもよい。本発明の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク２５１１に格納されて頒布され、ドライブ装置２５１３からＨＤＤ２５０５にインストールされる。インターネットなどのネットワーク及び通信制御部２５１７を経由して、ＨＤＤ２５０５にインストールされる場合もある。このようなコンピュータ装置は、上で述べたＣＰＵ２５０３、メモリ２５０１などのハードウエアとＯＳ及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
【０１７４】
以上述べた本発明の実施の形態をまとめると、以下のようになる。
【０１７５】
本実施の形態に係るシステムは、夫々に仮想マシンを稼動させるための第１コンピュータ及び第２コンピュータと、第１コンピュータと第２コンピュータとが共用する記憶領域を含む記憶装置とを有する。そして、第１コンピュータは、第１コンピュータにおいて稼動させる仮想マシンに対応し、且つ第２コンピュータに付与するライセンスデータを、上記記憶領域に設定する設定部を含み、第２コンピュータは、第１コンピュータの動作が停止し又は停滞した場合に、上記ライセンスデータを上記記憶領域から取得する取得部と、取得したライセンスデータを用いて、上記仮想マシンを復元する復元部とを含む。
【０１７６】
このようにすれば、仮想マシンを稼動させている第１コンピュータの動作が停止し又は停滞した場合に、待機している第２コンピュータにおいて迅速に仮想マシンを復元できる。
【０１７７】
上記復元部は、上記仮想マシンについてのイメージの暗号化データを復号するための第１キーを、上記ライセンスデータを用いて取得し、第１キーを用いて上記暗号化データを復号するようにしれもよい。
【０１７８】
このようにすれば、ライセンスデータによって仮想マシンの復元を制御できる。
【０１７９】
上記設定部は、上記ライセンスデータを上記記憶領域から取得するための第２キーを、第２コンピュータに送信するようにしてもよい。上記取得部は、受信した第２キーを用いて、上記ライセンスデータを上記記憶領域から取得するようにしてもよい。
【０１８０】
このようにすれば、他のコンピュータがライセンスデータを取得して、不適切に仮想マシンを復元することを防げる。
【０１８１】
第２コンピュータは、更に、第１コンピュータの動作が停滞した場合に、上記仮想マシンを停止させる要求を、第１コンピュータに送信する送信部を含むようにしてもよい。第１コンピュータは、更に、上記要求を受信した場合に、上記仮想マシンを停止させる停止部を含むようにしてもよい。
【０１８２】
このようにすれば、仮想マシンが多重に稼動される事態を防げる。
【０１８３】
第１コンピュータは、第２コンピュータにおいて上記仮想マシンが復元されていると判定した場合に、第１コンピュータにおける上記仮想マシンを削除する削除部を含むようにしてもよい。
【０１８４】
このようにすれば、仮想マシンが多重に稼動される事態を防げる。
【０１８５】
なお、上で述べた第１コンピュータの処理及び第２コンピュータの処理をコンピュータに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、ＣＤ−ＲＯＭ、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納されるようにしてもよい。尚、中間的な処理結果は、一般的にメインメモリ等の記憶装置に一時保管される。
【０１８６】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０１８７】
（付記１）
夫々に仮想マシンを稼動させるための第１コンピュータ及び第２コンピュータと、前記第１コンピュータと前記第２コンピュータとが共用する記憶領域を含む記憶装置とを有し、
前記第１コンピュータは、
前記第１コンピュータにおいて稼動させる前記仮想マシンに対応し、且つ前記第２コンピュータに付与するライセンスデータを、前記記憶領域に設定する設定部
を含み、
前記第２コンピュータは、
前記第１コンピュータの動作が停止し又は停滞した場合に、前記ライセンスデータを前記記憶領域から取得する取得部と、
取得した前記ライセンスデータを用いて、前記仮想マシンを復元する復元部と
を含むシステム。
【０１８８】
（付記２）
前記復元部は、前記仮想マシンについてのイメージの暗号化データを復号するための第１キーを、前記ライセンスデータを用いて取得し、前記第１キーを用いて前記暗号化データを復号する
付記１記載のシステム。
【０１８９】
（付記３）
前記設定部は、前記ライセンスデータを前記記憶領域から取得するための第２キーを、前記第２コンピュータに送信し、
前記取得部は、受信した前記第２キーを用いて、前記ライセンスデータを前記記憶領域から取得する
付記１又は２記載のシステム。
【０１９０】
（付記４）
前記第２コンピュータは、更に、
前記第１コンピュータの動作が停滞した場合に、前記仮想マシンを停止させる要求を、前記第１コンピュータに送信する送信部
を含み、
前記第１コンピュータは、更に、
前記要求を受信した場合に、前記仮想マシンを停止させる停止部
を含む付記１乃至３のいずれか１つ記載のシステム。
【０１９１】
（付記５）
前記第１コンピュータは、
前記第２コンピュータにおいて前記仮想マシンが復元されていると判定した場合に、前記第１コンピュータにおける前記仮想マシンを削除する削除部
を含む付記１乃至４のいずれか１つ記載のシステム。
【０１９２】
（付記６）
第１コンピュータと第２コンピュータとが共用する記憶領域を含む記憶装置に各々接続され、且つ夫々に仮想マシンを稼動させるための前記第１コンピュータ及び前記第２コンピュータによる復元方法であって、
前記第１コンピュータが、前記第１コンピュータにおいて稼動させる前記仮想マシンに対応し、且つ前記第２コンピュータに付与するライセンスデータを、前記記憶領域に設定する処理と、
前記第１コンピュータの動作が停止し又は停滞した場合に、前記第２コンピュータが、前記ライセンスデータを前記記憶領域から取得する処理と、
前記第２コンピュータが、取得した前記ライセンスデータを用いて、前記仮想マシンを復元する処理と
を含む復元方法。
【０１９３】
（付記７）
自らのコンピュータ上で稼動する仮想マシンが停止し又は停滞した場合に前記仮想マシンの復元に用いる待機系のコンピュータに付与し、且つ前記仮想マシンに対応するライセンスデータを、当該待機系のコンピュータと共用する記憶領域に設定する設定部と、
前記仮想マシンを起動する起動部と
を含むコンピュータ。
【０１９４】
（付記８）
仮想マシンを稼動させている稼動系のコンピュータの動作が停止し又は停滞した場合に、前記仮想マシンに対応し、且つ自らのコンピュータに付与されたライセンスデータを、当該稼動系のコンピュータと共用している記憶領域から取得する取得部と、
取得した前記ライセンスデータを用いて、前記仮想マシンを復元する復元部と
を含むコンピュータ。
【０１９５】
（付記９）
自らのコンピュータ上で稼動する仮想マシンが停止し又は停滞した場合に前記仮想マシンの復元に用いる待機系のコンピュータに付与し、且つ前記仮想マシンに対応するライセンスデータを、当該待機系のコンピュータと共用する記憶領域に設定する処理と、
前記仮想マシンを起動する処理と
をコンピュータに実行させるためのプログラム。
【０１９６】
（付記１０）
仮想マシンを稼動させている稼動系のコンピュータの動作が停止し又は停滞した場合に、前記仮想マシンに対応し、且つ自らのコンピュータに付与されたライセンスデータを、当該稼動系のコンピュータと共用している記憶領域から取得する処理と、
取得した前記ライセンスデータを用いて、前記仮想マシンを復元する処理と
をコンピュータに実行させるためのプログラム。
【符号の説明】
【０１９７】
１０１ａ  第１物理サーバ    １０１ｂ  第２物理サーバ
１０３  ディスク装置    ２０１  ハイパーバイザ
２０３  制御用仮想マシン    ２０５  ＯＳ部
２０７  ファイルシステム部    ２０９  制御部
２１１  ゲスト用仮想マシン    ２１３  ＯＳ部
２１５  アプリケーション部    ５０１  イメージファイル
５０３  共用ファイル    １３０１  ゲスト用仮想マシン名
１３０３  マイグレーション用データ    １３０５  ライセンステーブル
１３０７  稼動系の物理サーバＩＤ    １３０９  待機系の物理サーバＩＤ
１６０１  開始部    １６０３  応答部
１６０５  停止部    １６０７  再開部
１６０９  第２設定部    １６１１  監視部
１６１３  移行部    １６１５  生成部
１６１７  記憶部    １６２１  構築部
１６２３  第１設定部    １６２５  第１起動部
１６３１  第１判定部    １６３３  第１削除部
１６３５  第２変更部    １６３７  第３起動部
１６４１  送信部    １６４３  取得部
１６４５  復元部    １６４７  第１変更部
１６４９  第２起動部    ３６０１  切替部
３６０３  第２判定部    ３６０５  停止部
３６０７  第２削除部    ３６０９  第３変更部
【図１】
2016004509.tif 000003
【図２】
2016004509.tif 000004
【図３】
2016004509.tif 000005
【図４】
2016004509.tif 000006
【図５】
2016004509.tif 000007
【図６】
2016004509.tif 000008
【図７】
2016004509.tif 000009
【図８】
2016004509.tif 000010
【図９】
2016004509.tif 000011
【図１０】
2016004509.tif 000012
【図１１】
2016004509.tif 000013
【図１２】
2016004509.tif 000014
【図１３】
2016004509.tif 000015
【図１４】
2016004509.tif 000016
【図１５】
2016004509.tif 000017
【図１６】
2016004509.tif 000018
【図１７】
2016004509.tif 000019
【図１８】
2016004509.tif 000020
【図１９】
2016004509.tif 000021
【図２０】
2016004509.tif 000022
【図２１】
2016004509.tif 000023
【図２２】
2016004509.tif 000024
【図２３】
2016004509.tif 000025
【図２４】
2016004509.tif 000026
【図２５】
2016004509.tif 000027
【図２６】
2016004509.tif 000028
【図２７】
2016004509.tif 000029
【図２８】
2016004509.tif 000030
【図２９】
2016004509.tif 000031
【図３０】
2016004509.tif 000032
【図３１】
2016004509.tif 000033
【図３２】
2016004509.tif 000034
【図３３】
2016004509.tif 000035
【図３４】
2016004509.tif 000036
【図３５】
2016004509.tif 000037
【図３６】
2016004509.tif 000038
【図３７】
2016004509.tif 000039
【図３８】
2016004509.tif 000040