(57)【要約】【課題】複数のコンピュータを用いるユーザの利便性を向上させることが可能なプログラム等を提供する。【解決手段】ホットプラグ対応のＵＳＢメモリ３が物理マシンＢ１に装着された場合に、ＶＭ２１とＵＳＢメモリ３を特定するための固有のメモリＩＤとを対応づけた記憶部を参照する。判断部は、ＵＳＢメモリ３のメモリＩＤに対応するＶＭ２１が物理マシンＢ１内に存在するか否かを判断する。出力部は、判断部により存在しないと判断した場合に、ＵＳＢメモリ３のメモリＩＤに対応するＶＭ２１を物理マシンＢ１で実行するために必要な仮想化データの取得要求を物理マシンＡ１へ出力する。【選択図】図１
2010250620.tif 000002
【特許請求の範囲】
【請求項１】
仮想マシンを制御するコンピュータに用いられるプログラムであって、
コンピュータを、
ホットプラグ対応の装置がコンピュータに装着された場合に、仮想マシンと前記装置の識別情報とを対応づけた記憶部を参照し、前記装着された装置の識別情報に対応する仮想マシンが前記コンピュータ内に存在するか否かを判断する判断部と、
該判断部により存在しないと判断した場合に、前記装着された装置の識別情報に対応する仮想マシンを前記コンピュータで実行するために必要な前記仮想マシンに係る仮想化データの取得要求を外部へ出力する出力部と
して機能させるプログラム。
【請求項２】
前記コンピュータが前記装置の取り外しに関する情報を検出した場合に、前記仮想マシンを中断する中断部
をさらに機能させる請求項１に記載のプログラム。
【請求項３】
前記判断部により存在すると判断した場合に、前記中断部により中断した前記装置の識別情報に対応する仮想マシンを起動する起動部
をさらに機能させる請求項２に記載のプログラム。
【請求項４】
外部から出力された仮想マシンに係る仮想化データを受け付ける受け付け部と、
受け付けた仮想化データに基づき、前記コンピュータ内に前記仮想マシンを生成する生成部と
をさらに機能させる請求項１乃至３のいずれか一つに記載のプログラム。
【請求項５】
前記出力部は、
仮想マシンに係る仮想化データの取得要求を受信した場合、前記仮想化データを外部へ出力し、
仮想化データを外部へ出力した後に、前記コンピュータ内の仮想マシンに係る仮想化データを消去する消去部
をさらに機能させる請求項４に記載のプログラム。
【請求項６】
仮想マシンを制御するコンピュータであって、
ホットプラグ対応の装置が装着された場合に、仮想マシンと前記装置の識別情報とを対応づけた記憶部を参照し、前記装着された装置の識別情報に対応する仮想マシンが内部に存在するか否かを判断する判断部と、
該判断部により存在しないと判断した場合に、前記装着された装置の識別情報に対応する仮想マシンを実行するために必要な前記仮想マシンに係る仮想化データの取得要求を他のコンピュータへ出力する出力部と
を備えるコンピュータ。
【請求項７】
コンピュータにより仮想マシンを制御する仮想マシン制御方法であって、
ホットプラグ対応の装置がコンピュータに装着された場合に、仮想マシンと前記装置の識別情報とを対応づけた記憶部を参照し、前記装着された装置の識別情報に対応する仮想マシンが前記コンピュータ内に存在するか否かを判断する判断ステップと、
該判断ステップにより存在しないと判断した場合に、前記装着された装置の識別情報に対応する仮想マシンを前記コンピュータで実行するために必要な前記仮想マシンに係る仮想化データの取得要求を他のコンピュータへ出力する出力ステップと
含む仮想マシン制御方法。
【請求項８】
相互に接続された複数のコンピュータにより仮想マシンを制御する仮想マシン制御システムであって、
一のコンピュータは、
ホットプラグ対応の装置が一のコンピュータに装着された場合に、仮想マシンと前記装置の識別情報とを対応づけた記憶部を参照し、前記装着された装置の識別情報に対応する仮想マシンが前記一のコンピュータ内に存在するか否かを判断する判断部と、
該判断部により存在しないと判断した場合に、前記装着された装置の識別情報に対応する仮想マシンを前記一のコンピュータで実行するために必要な前記仮想マシンに係る仮想化データの取得要求を他のコンピュータへ出力する出力部と
を備える仮想マシン制御システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想マシンを制御するコンピュータに用いられるプログラム、コンピュータ、仮想マシン制御方法及び仮想マシン制御システムに関する。
【背景技術】
【０００２】
近年、複数の仮想マシンを仮想的に制御するコンピュータが普及している。コンピュータの負荷分散またはバックアップを目的として、他のコンピュータへ仮想マシンに係る仮想化データをマイグレーションする技術が利用されている（例えば、特許文献１参照）。従来は他のコンピュータのハードウェアリソースの確認を行った上で、マイグレーションの予約を行う、または、一定条件下で自動的にマイグレーションを行っていた。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−５３６６５７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来の方法は、マイグレーションのためにオペレータがマニュアルで予約する必要があり、またマイグレーションのための条件付け等が必要であるという問題があった。
【０００５】
本発明は斯かる事情に鑑みてなされたものである。その目的は、仮想マシンとホットプラグ対応の装置の識別情報とを対応づけて制御することにより、複数のコンピュータを用いるユーザの利便性を向上させることが可能なプログラム等を提供することにある。
【課題を解決するための手段】
【０００６】
本願に開示するプログラムは、仮想マシンを制御するコンピュータに用いられるプログラムであって、コンピュータを、ホットプラグ対応の装置がコンピュータに装着された場合に、仮想マシンと前記装置の識別情報とを対応づけた記憶部を参照し、前記装着された装置の識別情報に対応する仮想マシンが前記コンピュータ内に存在するか否かを判断する判断部と、該判断部により存在しないと判断した場合に、前記装着された装置の識別情報に対応する仮想マシンを前記コンピュータで実行するために必要な前記仮想マシンに係る仮想化データの取得要求を外部へ出力する出力部として機能させる。
【発明の効果】
【０００７】
当該装置の一観点によれば、装置の装着または取り外しをトリガに仮想マシンのマイグレーションが実行され、複数のコンピュータを使用するユーザの利便性を向上させることが可能となる。
【図面の簡単な説明】
【０００８】
【図１】仮想マシン制御システムの概要を示す説明図である。
【図２】物理マシン及びＶＭのハードウェア及びソフトウェアを示すブロック図である。
【図３】初期登録画面を示す説明図である。
【図４】状態ファイルのレコードレイアウトを示す説明図である。
【図５】管理ファイルのレコードレイアウトを示す説明図である。
【図６】管理ファイルの変化を示す説明図である。
【図７】物理マシン及びＶＭのハードウェア及びソフトウェアを示すブロック図である。
【図８】管理ファイルの変化を示す説明図である。
【図９】初期登録処理の手順を示すフローチャートである。
【図１０】初期登録処理の手順を示すフローチャートである。
【図１１】ＵＳＢメモリの装着及び取り外しに関する処理手順を示すフローチャートである。
【図１２】ＵＳＢメモリの装着及び取り外しに関する処理手順を示すフローチャートである。
【図１３】ＵＳＢメモリの装着及び取り外しに関する処理手順を示すフローチャートである。
【図１４】マイグレーション処理の手順を示すフローチャートである。
【図１５】マイグレーション処理の手順を示すフローチャートである。
【図１６】マイグレーション処理の手順を示すフローチャートである。
【図１７】仮想化データの移行処理を示すフローチャートである。
【図１８】仮想化データの移行処理を示すフローチャートである。
【図１９】仮想化データの移行処理を示すフローチャートである。
【図２０】初期登録処理の手順を示すフローチャートである。
【図２１】初期登録処理の手順を示すフローチャートである。
【図２２】仮想化データの移行処理手順を示すフローチャートである。
【図２３】仮想化データの移行処理手順を示すフローチャートである。
【図２４】仮想化データの移行処理手順を示すフローチャートである。
【図２５】実施の形態３に係る管理ファイルのレコードレイアウトを示す説明図である。
【図２６】実施の形態４に係る仮想マシン制御システムの概要を示す説明図である。
【図２７】同期処理の手順を示すフローチャートである。
【図２８】同期処理の手順を示すフローチャートである。
【図２９】同期処理の手順を示すフローチャートである。
【図３０】同期処理の手順を示すフローチャートである。
【図３１】同期処理の手順を示すフローチャートである。
【図３２】同期処理の手順を示すフローチャートである。
【図３３】実施の形態５に係る仮想マシン制御システムの概要を示す説明図である。
【図３４】同期処理の手順を示すフローチャートである。
【図３５】同期処理の手順を示すフローチャートである。
【図３６】同期処理の手順を示すフローチャートである。
【図３７】同期処理の手順を示すフローチャートである。
【図３８】同期処理の手順を示すフローチャートである。
【図３９】同期処理の手順を示すフローチャートである。
【図４０】停止処理の手順を示すフローチャートである。
【図４１】停止処理の手順を示すフローチャートである。
【図４２】実施の形態７に係る仮想マシン制御システムの概要を示す説明図である。
【図４３】仮想化データの記憶処理の手順を示すフローチャートである。
【図４４】仮想化データの記憶処理の手順を示すフローチャートである。
【図４５】実施の形態８に係る仮想マシン制御システムの概要を示す説明図である。
【図４６】複数の装置の初期登録処理の手順を示すフローチャートである。
【図４７】複数の装置の初期登録処理の手順を示すフローチャートである。
【図４８】管理ファイルレコードレイアウトを示す説明図である。
【図４９】実施の形態９に係る物理マシン及びＶＭのハードウェア及びソフトウェアを示すブロック図である。
【発明を実施するための形態】
【０００９】
実施の形態１
以下実施の形態を、図面を参照して説明する。図１は仮想マシン制御システムの概要を示す説明図である。仮想マシン制御システムはコンピュータ１、１、１、・・・、仮想マシン２、２、２、・・・、及び、装置３等を含む。コンピュータ１は例えばパーソナルコンピュータ、サーバコンピュータ、またはＰＤＡ（Personal Digital Assistant）等、少なくとも一つの仮想マシン２を制御することが可能な情報処理装置である。以下では、コンピュータ１をパーソナルコンピュータに適用する例を挙げて説明し、コンピュータ１を物理マシン１という。
【００１０】
複数の物理マシンＡ１、Ｂ１、Ｃ１（以下、場合により１で代表する）は、インターネットまたはＬＡＮ（Local Area Network）等を含む通信網Ｎを介して相互に接続されている。物理マシン１は仮想マシン（以下、ＶＭ：(Virtual Machine)という）２１乃至２４（以下、場合により２で代表する）を制御する。図１に示す例では、物理マシンＡ１はＶＭ２１及びＶＭ２２を制御し、物理マシンＢ１はＶＭ２３を制御し、物理マシンＣ１はＶＭ２４を制御する。なお、本実施の形態においては物理マシン１を３つ挙げる例を挙げて説明するが、少なくとも２つ存在していれば良くこの数に限るものではない。またＶＭ２の数を４つとする例を挙げて説明するが、少なくとも一つ存在すれば良く同じくこの数に限るものではない。
【００１１】
物理マシンＡ１はホットプラグ（ホットスワップまたは活性挿抜とも称する）対応が可能な装置３、３、３・・・の装着及び取り外しが可能である。すなわち、物理マシンＡ１の電源をオン状態としたまま、装置３の装着及び取り外しを行うことができ、物理マシンＡ１は装置３の装着及び取り外しを検出することができる。装置３は、例えばＰＣカード、ＵＳＢ（universal serial bus）、ＩＥＥＥ（Institute of Electrical and Electronics Engineers）１３９４等の規格に基づくホットプラグ対応型のものが用いられる。装置３は例えば、メモリまたはハードディスク等の記録媒体、マウスまたはキーボード等の入力装置、液晶ディスプレイまたは有機ＥＬ（electroluminescence）ディスプレイ等の表示装置、または、ＬＡＮカード等の通信装置等である。以下では、装置３の一例としてＵＳＢメモリ３を用いた例を挙げて説明する。
【００１２】
続いて仮想マシン制御システムの概要について説明する。ＵＳＢメモリ３にはＵＳＢメモリ３を特定するための固有の識別情報（以下メモリＩＤという）が記憶されており、当該メモリＩＤと各ＶＭ２とが対応づけられている。このメモリＩＤはＵＳＢメモリ３の製造時等に記憶されるシリアルコードまたはＭＡＣ（Media Access Control）アドレス等である。物理マシンＡ１はＵＳＢメモリ３の装着を検出した場合、メモリＩＤに対応するＶＭ２１を起動する。物理マシンＡ１はＵＳＢメモリ３の取り外しを検出した場合、ＶＭ２１を中断または停止する。
【００１３】
ここで、再度物理マシンＡ１がＵＳＢメモリ３の装着を検出した場合、再びＶＭ２１を起動する。同様に物理マシンＡ１はＵＳＢメモリ３の取り外しを検出した場合、ＶＭ２１を中断または停止する。ユーザは他の場所で物理マシンＢ１またはＣ１の使用を希望する場合がある。この場合、ユーザはＵＳＢメモリ３を物理マシンＢ１へ差し込む。物理マシンＢ１は、メモリＩＤに対応するＶＭ２が存在しないと判断した場合、他の物理マシン１へ、ＶＭ２１の仮想化データの取得要求を行う。つまり、ＶＭ２１を物理マシンＢ１にて実行するために必要な仮想化データの取得要求を行う。ＶＭ２１の仮想化データは物理マシンＢ１へマイグレーションされる。これにより、物理マシンＢ１にてＶＭ２１を使用することができる。以下詳細を説明する。
【００１４】
図２は物理マシンＡ１及びＶＭ２のハードウェア及びソフトウェアを示すブロック図である。物理マシンＡ１はハードウェアリソースＡ１０及び仮想化レイヤＡ１７を含む。ハードウェアリソースＡ１０は、ＣＰＵＡ１１、記憶部であるＲＡＭ（Random Access Memory）Ａ１２及びＨＤ(Hard Disk)Ａ１５、入力部Ａ１３、表示部Ａ１４、ＮＩＣ（Network Interface Card）Ａ１６及び時計部Ａ１８を含む。その他ハードウェアリソースＡ１０は、電源制御部Ａ１９及びＵＳＢポートＡ１７等を含む。ハードウェアリソースＡ１０は仮想化ソフトウェアである仮想化レイヤＡ１７の制御下におかれる。ＣＰＵＡ１１は仮想化レイヤＡ１７及び仮想化レイヤＡ１７Ａ上の制御モジュールＡ１７０の指示に従い、バス（図示せず）を介して接続される各ハードウェアを制御する。
【００１５】
メモリとしてのＲＡＭＡ１２は例えばＳＲＡＭ（Static ＲＡＭ）、ＤＲＡＭ（Dynamic ＲＡＭ）、フラッシュメモリ等である。ＲＡＭＡ１２は、ＣＰＵＡ１１による仮想化レイヤＡ１７等各種プログラムの実行時に発生する種々のデータを一時的に記憶する。ＨＤＡ１５は、ハードディスクを用いる例を挙げて説明するが、大容量メモリであっても良い。ＨＤＡ１５はＶＭ２にて作成されたファイル及び仮想化レイヤＡ１７の指示により記憶すべき各種データ等を記憶する。ＮＩＣＡ１６はイーサーネットカード等であり、物理マシンＢ１及びＣ１、並びに、他のＷｅｂサーバ等とＨＴＴＰ（HyperText Transfer Protocol）等により情報を送受信する。時計部Ａ１８は時刻情報をＣＰＵＡ１１へ出力する。
【００１６】
入力部Ａ１３は例えばキーボードまたはマウス等であり、入力された情報をＣＰＵＡ１１へ出力する。また表示部Ａ１４は液晶ディスプレイまたは有機ＥＬディスプレイ等でありＣＰＵＡ１１の指示に従い、情報を表示する。ＵＳＢポートＡ１７は、ＵＳＢメモリ３の差し込み口である。なお、ＵＳＢポートＡ１７は複数存在しても良いことはもちろんである。
【００１７】
仮想化レイヤＡ１７と連携する制御モジュールＡ１７０はＶＭ２の起動、中断または停止、ＶＭ２のマイグレーション、及び、物理マシン１の電源管理を含む各種処理を行う。制御モジュールＡ１７０は起動部Ａ１７１、中断部Ａ１７２、停止部Ａ１７３、同期部Ａ１７４、出力部Ａ１７５、デバイスドライバＡ１７６、ＶＭ管理部Ａ１７７、消去部Ａ１７８、及び、判断部Ａ１７９を含む。その他制御モジュールＡ１７０は受け付け部Ａ１７１１及びバックエンドドライバＡ１７１２等を含む。制御モジュールＡ１７０はＲＡＭＡ１２にロードされて実行される。なお、制御モジュールＡ１７０は説明を容易にするために、主要なモジュールのみを図２に記載し、他はフローチャート内において図示した。
【００１８】
ＲＡＭＡ１２またはＨＤＡ１５には管理ファイルＡ１５１、状態ファイルＡ１５３及びＩＰアドレスファイルＡ１５４等が記憶されている。なお、本実施の形態においてはハードウェアリソースＡ１０上で仮想化レイヤＡ１７が直接動作するハイパーバイザー型の仮想化ソフトウェアを用いる例を説明するが、これに限るものではない。Windows（登録商標）またはLinux（登録商標）上で仮想化ソフトウェアが動作するホスト型を用いても良いことはもちろんである。
【００１９】
停止状態にある物理マシン１の起動を希望するユーザは、図示しない電源ボタンを操作することにより物理マシン１を起動する。電源制御部Ａ１９は図示しない交流電源からの電力を物理マシン１へ供給する。これにより、物理マシン１が起動し、また仮想化レイヤＡ１７及び制御モジュールＡ１７０も起動する。次いでＵＳＢメモリ３をＵＳＢポートＡ１７へ装着する。デバイスドライバＡ１７６はホットプラグに対応しておりＵＳＢポートＡ１７に接続されたＵＳＢメモリ３の装着及び取り外しを検出する。なお、デバイスドライバＡ１７６はＵＳＢポートＡ１７以外のハードウェアリソースＡ１０の制御をも行う。ＵＳＢメモリ３の内部のメモリには当該ＵＳＢメモリ３固有に付与されるメモリＩＤが記憶されている。デバイスドライバＡ１７６はＵＳＢメモリ３からメモリＩＤを取得し、判断部Ａ１７９へ出力する。
【００２０】
判断部Ａ１７９は、ＶＭ２を特定するための固有の識別情報（以下、ＶＭＩＤという）とメモリＩＤとを対応づけて記憶した管理ファイルＡ１５１を参照し、メモリＩＤに対応するＶＭＩＤが物理マシンＡ１に存在するか否かを判断する。判断部Ａ１７９は存在しないと判断した場合、初期登録処理またはマイグレーション処理を実行する。なおマイグレーション処理及び管理ファイルＡ１５１の詳細は後述する。
【００２１】
図３は初期登録画面を示す説明図である。判断部Ａ１７９は管理ファイルＡ１５１を参照し、メモリＩＤに対応するＶＭＩＤが物理マシンＡ１及び他の物理マシン１に存在しないと判断した場合、初期登録画面１４１をＨＤＡ１５から読み出す。判断部Ａ１７９は出力部Ａ１７５を介して表示部Ａ１４へ初期登録画面１４１を出力する。表示部Ａ１４には、デバイスドライバＡ１７６が取得したメモリＩＤ、ＶＭＩＤの入力画面１４２及びＯＫボタン１４３等が表示される。ユーザはＵＳＢメモリ３とＶＭ２とを対応づけるべく、ＶＭＩＤを、入力部Ａ１３を介して入力する。入力部Ａ１３からＯＫボタン１４３の操作情報が入力された場合、判断部Ａ１７９は入力部Ａ１３を介して入力ボックス１４２に入力されたＶＭＩＤを受け付ける。判断部Ａ１７９は受け付けたＶＭＩＤとメモリＩＤとを対応づけて管理ファイルＡ１５１に記憶する。なお、本実施の形態においてはＶＭＩＤを直接入力する例を挙げて説明したが、これに限るものではない。例えば、複数のＶＭ２が物理マシンＡ１に存在する場合、出力部Ａ１７５は表示部Ａ１４に対し、各ＶＭ２の対応するＶＭＩＤまたはＶＭ２に付与された名前を出力しても良い。ユーザは表示部Ａ１４に表示されたＶＭＩＤまたは名前を入力部Ａ１３を介して選択するようにしても良い。
【００２２】
以下では、初期登録が完了したものとして説明する。ＵＳＢポートＡ１７にＵＳＢメモリ３が装着された場合、デバイスドライバＡ１７６は装着を検出する。デバイスドライバＡ１７６はＵＳＢメモリ３から出力されるメモリＩＤを判断部Ａ１７９へ出力する。判断部Ａ１７９は管理ファイルＡ１５１を参照し、メモリＩＤに対応するＶＭ２が物理マシンＡ１に存在すると判断した場合、メモリＩＤに対応するＶＭＩＤを読み出す。判断部Ａ１７９は読み出したＶＭＩＤ及び起動命令を起動部Ａ１７１へ出力する。本実施の形態においては、ＶＭ２１を起動する例を挙げて説明する。
【００２３】
生成部としての起動部Ａ１７１はＶＭ２１を起動すると共に、起動命令をＶＭ管理部Ａ１７７へ出力する。すなわち、起動部Ａ１７１は、受け付けた仮想化データに基づき、物理マシンＡ１内にＶＭ２１を生成する生成部として動作する。起動の際には仮想スイッチ（仮想ＨＵＢとも称する）として機能するバックエンドドライバＡ１７１２（接続部及び解除部）は、ＶＭ２１のフロントエンドドライバ２１３との接続を行う。すなわち、バックエンドドライバＡ１７１２はＶＭ２１と当該ＶＭ２１を制御する物理マシンＡ１との接続、または、ＶＭ２１と当該ＶＭ２１を遠隔にて制御する他の物理マシンＢ１との接続を行う接続部として動作する。さらに、バックエンドドライバＡ１７１２はＶＭ２１と当該ＶＭ２１を制御する物理マシンＡ１との接続を解除、または、ＶＭ２１と当該ＶＭ２１を遠隔にて制御する他の物理マシンＢ１との接続を解除する解除部として動作する。なお、本実施の形態においては、ＵＳＢメモリ３の装着により、ＶＭ２を起動する例を挙げたがこれに限るものではない。例えば、従来と同じく入力部Ａ１３からＶＭＩＤ及びＶＭ２の起動命令を受け付けたことをトリガに、ＶＭ２を起動しても良い。この場合、起動部Ａ１７１は入力部Ａ１３から入力されたＶＭＩＤ及びＶＭ２の起動命令受け付ける。起動命令はＶＭＩＤに対応するＶＭを起動する。
【００２４】
ＶＭ２１は仮想化レイヤＡ１７の制御下で動作する。ＶＭ２１に対してインストールされたＯＳ(Operating System)２１１は各種アプリケーション２１２を実行する。アプリケーション２１２は例えば文書作成用アプリケーション、ブラウザ、表計算文書作成用アプリケーション、ＰＤＦ（登録商標：Portable Document Format）ビューワ、メーラ、または、プレゼンテーション用文書作成アプリケーション等である。その他、アプリケーション２１２は、音楽若しくは映像再生アプリケーション、または、ＤＶＤ（Digital Versatile Disc）再生用アプリケーション等であっても良い。
【００２５】
ＶＭ２１は表示部Ａ１４へ画面情報を出力する。ユーザは入力部Ａ１３により操作情報を入力する。同様に他のユーザはＮＩＣＡ１６を介して接続される物理マシンＢ１を用いてＶＭ２２を利用することができる。その他、ＵＳＢポートＡ１７に装置３としてのキーボード及びモニタを接続することにより、ＶＭ２２を起動しても良い。この点については他の実施の形態において説明する。
【００２６】
続いてＶＭ２の中断及び停止について説明する。ＶＭ２の中断及び停止は、入力部Ａ１３からＶＭＩＤ及びＶＭ２の中断命令または停止命令を入力する。その他、ＵＳＢメモリ３の取り外しに基づきＶＭ２を中断または停止する。本実施の形態においてはＵＳＢメモリ３の取り外しに基づきＶＭ２を中断する例を挙げて説明する。デバイスドライバＡ１７６はＵＳＢメモリ３の取り外しに関する情報を検出する。具体的には、デバイスドライバＡ１７６はＵＳＢポートＡ１７からＵＳＢメモリ３が取り外されたことを検出する。この場合、デバイスドライバＡ１７６は取り外し情報及びメモリＩＤを中断部Ａ１７２へ出力する。
【００２７】
その他、入力部Ａ１３からＵＳＢメモリ３の取り外しを要求する情報（以下、同様に取り外し情報という）が入力された場合、中断部Ａ１７２は取り外し情報及びメモリＩＤを受け付ける。これはＵＳＢメモリ３内部の記憶内容の破損を防止するためである。中断部Ａ１７２はメモリＩＤに対応するＶＭＩＤを管理ファイルＡ１５１から読み出す。中断部Ａ１７２はＶＭＩＤに対応するＶＭ２を中断する。以下では、説明を容易にするために、ユーザが直接ＵＳＢメモリ３を取り外す例を挙げて説明する。
【００２８】
ＶＭ２１の中断は、例えばＶＭ２１が使用しているＲＡＭＡ１２の領域内の情報をＨＤＡ１５へ記憶させＶＭ２１をハイバーネーション（hibernation） (もしくは休止)することをいう。この場合、ＶＭ２１が使用していたＲＡＭＡ１２の領域は解放される。ハイバーネーション (もしくは休止)の後、再度ＶＭ２１を起動した場合、ＨＤＡ１５へ記憶させた情報がＲＡＭＡ１２の領域に記憶され、中断時の作業内容が復元される。その他ＶＭ２１の中断は、ＶＭ２１が使用しているＲＡＭＡ１２の領域内の情報を、ＲＡＭＡ１２内に保持する。そして、電源制御部Ａ１９によりＲＡＭＡ１２に通電し続けるサスペンド (もしくはスリープ、スタンバイ)であっても良い。サスペンド (もしくはスリープ、スタンバイ)の後、再度ＶＭ２１を起動した場合、ＶＭ２１は保持されたＲＡＭＡ１２の領域内の情報を利用することで、中断時の作業内容が早期に復元される。以下では、中断を後者のサスペンドであるものとして説明する。
【００２９】
入力部Ａ１３からＶＭ２１の停止命令が出力された場合、停止部Ａ１７３はこれを受け付け、ＶＭ２１を停止する。停止部Ａ１７３は、停止命令をＶＭ管理部Ａ１７７へ出力する。これにより、ＶＭ２１が使用していたハードウェアリソースＡ１０は解放される。なお、ＶＭ２１の停止とは、ＶＭ２１が使用しているＯＳ２１１及びアプリケーション２１２を全て終了し、ＲＡＭＡ１２の領域内の情報をＨＤＡ１５に記憶することなく解放することをいう。
【００３０】
ＶＭ管理部Ａ１７７はＶＭ２１及びＶＭ２２の運転状態、中断状態または停止状態を監視し、ＨＤＡ１５に記憶された所定条件下で、ハードウェアリソースＡ１０の割り当てを行う。ＶＭ管理部Ａ１７７は状態ファイルＡ１５３に各ＶＭ２の状態を記憶する。図４は状態ファイルＡ１５３のレコードレイアウトを示す説明図である。状態ファイルＡ１５３はＶＭＩＤフィールド及び状態フィールド等を含む。ＶＭＩＤフィールドには、ＶＭ２を特定するためのＶＭＩＤが記憶されている。状態フィールドにはＶＭＩＤに対応づけて、ＶＭ２の状態が記憶されている。状態は運転状態、中断状態または停止状態のいずれかが記憶される。
【００３１】
図４の例では、ＶＭＩＤが「ＶＭ０１」のＶＭ２１は、対応するＵＳＢメモリ３が装着されていることから運転状態にあることを示す。また、ＶＭＩＤが「ＶＭ０２」のＶＭ２２は、対応するＵＳＢメモリ３が取り外されていることから中断状態にあることを示す。ＶＭ管理部Ａ１７７は起動部Ａ１７１、停止部Ａ１７３及び中断部Ａ１７２それぞれの出力に基づき、各ＶＭ２の状態を監視する。ＶＭ管理部Ａ１７７は状態の変化を検出した場合、ＶＭＩＤに対応づけて状態を状態ファイルＡ１５３に記憶する。
【００３２】
図５は管理ファイルＡ１５１のレコードレイアウトを示す説明図である。管理ファイルＡ１５１は物理マシンＩＤフィールド、ＶＭＩＤフィールド、ＶＭ状態フィールド、メモリＩＤフィールド及び装着状態フィールド等を含む。物理マシンＩＤフィールドには物理マシン情報としての物理マシン１を特定するための固有の識別情報が記憶されている。本実施の形態においては物理マシンＡ１の物理マシンＩＤを「ＰＡ」、物理マシンＢ１の物理マシンＩＤを「ＰＢ」、物理マシンＣ１の物理マシンＩＤを「ＰＣ」としている。ＶＭＩＤフィールドには、物理マシンＩＤに対応づけて、物理マシン１に存在するＶＭ２のＶＭＩＤが記憶されている。図５の例では、物理マシンＡ１にＶＭＩＤ「ＶＭ０１」で示すＶＭ２１及びＶＭＩＤ「ＶＭ０２」で示すＶＭ２２が存在している。
【００３３】
一方、物理マシンＢ１にＶＭＩＤ「ＶＭ０３」で示すＶＭ２３が存在している。ＶＭ状態フィールドにはＶＭＩＤに対応づけて各ＶＭ２の状態が記憶されている。メモリＩＤフィールドにはＶＭＩＤに対応するメモリＩＤが記憶されている。装着状態フィールドにはＶＭＩＤに対応づけてＵＳＢメモリ３が装着状態にあるか、または取り外し状態にあるかの情報を記憶している。ＶＭ管理部Ａ１７７はＶＭ２が起動、中断、または停止状態にあるかを監視し、ＶＭＩＤに対応づけてＶＭ２の状態を管理ファイルＡ１５１に記憶する。判断部Ａ１７９は上述した如く初期登録されたメモリＩＤをＶＭＩＤに対応づけて管理ファイルＡ１５１に記憶する。
【００３４】
デバイスドライバＡ１７６はＵＳＢメモリ３の装着及び取り外しを検出した場合に、ＶＭＩＤに対応づけて装着状態または取り外し状態のいずれかを管理ファイルＡ１５１に記憶する。図５に示す如く本実施の形態における管理ファイルＡ１５１は物理マシンＡ１自身のＶＭ２及びＵＳＢメモリ３に関する情報だけではなく、他の物理マシンＢ１のＶＭ２及びＵＳＢメモリ３に関する情報をも記憶している。なお、説明を容易にするために物理マシンＣ１の記載は省略している。
【００３５】
同期部Ａ１７４はＵＳＢメモリ３の初期登録により管理ファイルＡ１５１に新たなレコードが生成された場合、及び、ＵＳＢメモリ３の装着または取り外し等により、装着状態フィールドの記憶内容に変更があった場合、同期処理を行う。各物理マシン１の同期部Ａ１７４は、新たなレコード生成及び装着状態の記憶内容の変更が発生した場合、相互に管理ファイルＡ１５１の同期処理を行う。ＩＰアドレスファイルＡ１５４には物理マシン情報として他の物理マシン１のＩＰアドレスが物理マシンＩＤに対応づけて記憶されている。
【００３６】
同期部Ａ１７４は変更前と変更後との差分データ及び自身の物理マシンＩＤを、ＮＩＣＡ１６を介して、他の物理マシン１のＩＰアドレス宛へ出力する。同期部Ａ１７４は逆に物理マシンＩＤ及び差分データを、ＮＩＣＡ１６を介して受信した場合、管理ファイルＡ１５１に差分データを記憶する。図５の例では、差分データを受信した場合、物理マシンＩＤ「ＰＢ」に対応するレコードが同期される。例えば物理マシンＩＤ「ＰＢ」の物理マシンＢ１からＵＳＢメモリ３が取り外された場合、同期処理が行われる。メモリＩＤ「Ｍ０３」に対応するＶＭ２３の状態は「中断」と記憶され、装着状態は「取り外し」となる。なお、実施の形態で述べる各種ファイルレコードレイアウトはあくまで一例であり、これに限るものではない。データ間の関係さえ維持されていれば、設計に応じて自由なデータの持たせ方をすれば良い。
【００３７】
物理マシンＡ１からメモリＩＤ「Ｍ０１」のＵＳＢメモリ３を取り外し、再度装着した場合の処理を説明する。図６は管理ファイルＡ１５１の変化を示す説明図である。図６ＡはメモリＩＤ「Ｍ０１」のＵＳＢメモリ３が取り外されていることから、装着状態は「取り外し」と記憶されている。図６Ｂは物理マシンＡ１にメモリＩＤ「Ｍ０１」のＵＳＢメモリ３が装着された状態を示す。デバイスドライバＡ１７６はＵＳＢメモリ３の装着を検出する。デバイスドライバＡ１７６はメモリＩＤ及び装着情報を判断部Ａ１７９へ出力する。判断部Ａ１７９は管理ファイルＡ１５１を参照し、自身の物理マシンＩＤ「ＶＭ０１」にメモリＩＤに対応するＶＭＩＤが記憶されているか否かを判断する。
【００３８】
判断部Ａ１７９は記憶されていると判断した場合、起動部Ａ１７１へＶＭＩＤ及び起動命令を出力する。ＶＭ２１が起動した場合、起動部Ａ１７１はＶＭＩＤに対応づけて状態を「運転」へ変更する。併せて判断部Ａ１７９は、管理ファイルＡ１５１のメモリＩＤ「Ｍ０１」に対応する装着状態を「取り外し」から「装着」へ変更する。これにより図６Ｂに示す状態となる。同期部Ａ１７４は変更後の差分データを、他の物理マシン１へＮＩＣＡ１６を介して出力する。なお、本実施の形態においては、管理ファイルＡ１５１の記憶内容に変更が生じた場合に、同期をとる例を挙げたが、これに限るものではない。例えば、一定時間毎（例えば、１分毎）に同期をとるようにしても良い。
【００３９】
図７は物理マシンＢ１及びＶＭ２のハードウェア及びソフトウェアを示すブロック図である。物理マシンＢ１はＶＭ２３を制御している以外は、物理マシンＡ１と実質的に同一である。制御モジュールＢ１７０及びハードウェアリソースＢ１０等に符号Ａに代えて符号Ｂを付加している。制御モジュールＢ１７０及びハードウェアリソースＢ１０の詳細な説明は省略する。
【００４０】
続いて、メモリＩＤ「Ｍ０１」のＵＳＢメモリ３が物理マシンＢ１に装着された場合の処理を説明する。図８は管理ファイルＢ１５１の変化を示す説明図である。図８ＡはＵＳＢメモリ３の装着前における管理ファイルＢ１５１のレコードレイアウトを示す説明図である。物理マシンＢ１の物理マシンＩＤ「ＰＢ」に対応づけて、物理マシンＢ１に存在するＶＭ２３（ＶＭＩＤは「ＶＭ０３」）のレコードが記憶されている。ここでユーザはメモリＩＤ「Ｍ０１」のＵＳＢメモリ３をＵＳＢポートＢ１７に装着する。
【００４１】
デバイスドライバＢ１７６はＵＳＢメモリ３の装着を検出する。デバイスドライバＢ１７６は判断部Ｂ１７９へ装着情報及びメモリＩＤを出力する。判断部Ｂ１７９はメモリＩＤ及び管理ファイルＢ１５１を参照し、自身の物理マシンＢ１内にメモリＩＤに対応するＶＭ２が存在するか否かを判断する。図８Ａの例では、メモリＩＤ「Ｍ０１」に対応するＶＭ２１（ＶＭＩＤ「ＶＭ０１」）は存在しないと判断する。判断部Ｂ１７９は他の物理マシン１にメモリＩＤに対応するＶＭ２が存在するか否かを、メモリＩＤ及び管理ファイルＢ１５１を参照し判断する。図８Ａの例では、物理マシンＩＤ「ＰＡ」に対応する物理マシンＡ１にＶＭＩＤ「ＶＭ０１」に対応するＶＭ２１が存在すると判断する。
【００４２】
判断部Ｂ１７９はＶＭＩＤを出力部Ｂ１７５へ出力する。出力部Ｂ１７５は、ＶＭ２１を物理マシンＢ１で実行するのに必要なＶＭ２１に係る仮想化データの取得要求をＶＭＩＤに対応するＶＭ２１へ出力する。この際、出力部Ｂ１７５はＶＭＩＤに対応するＩＰアドレスをＩＰアドレスファイルＢ１５４から読み出す。そして出力部Ｂ１７５は、マイグレーションのために、読み出したＩＰアドレス宛へ、仮想化データの取得要求及びＶＭＩＤを物理マシンＡ１へ出力する。
【００４３】
物理マシンＡ１のＶＭ管理部Ａ１７７は仮想化データの取得要求及びＶＭＩＤを受け付けた場合、ＶＭＩＤに対応する仮想化データをカプセル化（encapsulation）する。ＶＭ管理部Ａ１７７はカプセル化したＶＭ２１の仮想化データを、ＮＩＣＡ１６を介して物理マシンＢ１へ出力する。なお、仮想化データは、ＶＭ２のハードウェアリソースＡ１０に対するハードウェア情報、ＢＩＯＳ（Basic Input / Output System）情報、ＶＭ２１が使用していたＨＤＡ１５の情報、ＶＭ２１が実行していたアプリケーション２１２に係るファイル等を含む。ハードウェア情報はＣＰＵＡ１１のレジスタ情報等のコンテキスト情報、並びに、各ハードウェアのＩ／Ｏレジスタ値及びＨＤＡ１５のアクセスモード等のデバイス情報等である。この仮想化データはファイルにカプセル化される。ＶＭ２の仮想化データは他の物理マシン１へマイグレーションすることにより、他の物理マシン１においてＶＭ２を制御することができる。
【００４４】
物理マシンＢ１の受け付け部Ｂ１７１１はＮＩＣＢ１６を介して受け付けた仮想化データ及びＶＭＩＤを受け付ける。受け付け部Ｂ１７１１は受け付けた仮想化データ及びＶＭＩＤを起動部Ｂ１７１へ出力する。起動部Ｂ１７１は仮想化データに基づき、ＶＭ２１を起動（生成）する。ＶＭ管理部Ｂ１７７は状態ファイルＢ１５３に新たに生成されたＶＭＩＤのレコードを生成し、状態「運転」を記憶する。ＶＭ管理部Ｂ１７７は管理ファイルＢ１５１の自身の物理マシンＢ１の物理マシンＩＤのレコードにＶＭＩＤ、状態、メモリＩＤ及び装着状態を記憶する。本例では、図８Ｂに示す如く、物理マシンＩＤ「ＰＡ」のレコードに、ＶＭＩＤが「ＶＭ０１」、ＶＭ２の状態が「運転」、メモリＩＤが「Ｍ０１」、装着状態が「装着」と記憶される。
【００４５】
物理マシンＢ１のバックエンドドライバＢ１７１２とＶＭ２１のフロントドライバ２１３とが接続され、ＶＭ２１は物理マシンＢ１の制御下におかれる。一方、物理マシンＡ１の停止部Ａ１７３はＶＭ２１の仮想化データを出力後、中断状態にあるＶＭ２１を停止する。消去部Ａ１７８はＶＭ２１の仮想化データをＲＡＭＡ１２及びＨＤＡ１５から消去し、ＶＭ２１に対するハードウェアリソースＡ１０を解放する。ＶＭ管理部Ａ１７７は状態ファイルＡ１５３からＶＭ２１のＶＭＩＤに対応するレコードを消去する。また、ＶＭ管理部Ａ１７７は、管理ファイルＡ１５１から、自身の物理マシンＩＤ「ＰＡ」の内、ＶＭ２１に対応するＶＭＩＤのレコードを消去する。
【００４６】
同期部Ａ１７４及び同期部Ｂ１７４は各管理ファイルＡ１５１及び管理ファイルＢ１５１の同期を行う。これにより、図８Ｂに示す如く、ＶＭＩＤが「ＶＭ０１」のレコードが物理マシンＢ１の物理マシンＩＤ「ＰＢ」内に移行する。
【００４７】
以上のハードウェアにおいて、各ソフトウェア処理を、フローチャートを用いて説明する。図９及び図１０は初期登録処理の手順を示すフローチャートである。デバイスドライバＡ１７６はＵＳＢポートＡ１７にＵＳＢメモリ３が装着されたか否かを判断する（ステップＳ９１）。デバイスドライバＡ１７６は装着されていないと判断した場合（ステップＳ９１でＮＯ）、以上の処理を繰り返す。デバイスドライバＡ１７６はＵＳＢメモリ３が装着されたと判断した場合（ステップＳ９１でＹＥＳ）、ＵＳＢメモリ３の内部メモリに記憶されたメモリＩＤを取得する（ステップＳ９２）。
【００４８】
デバイスドライバＡ１７６は取得したメモリＩＤ及び装着を検出したことを示す装着情報を判断部Ａ１７９へ出力する（ステップＳ９３）。判断部Ａ１７９は管理ファイルＡ１５１内にメモリＩＤに対応するＶＭＩＤが記憶されているか否かを判断する（ステップＳ９４）。判断部Ａ１７９は管理ファイルＡ１５１内にメモリＩＤに対応するＶＭＩＤが既に記憶されていると判断した場合（ステップＳ９４でＹＥＳ）、初期登録処理を終えるべく、処理を終了する。一方、判断部Ａ１７９は管理ファイルＡ１５１内にメモリＩＤに対応するＶＭＩＤが記憶されていないと判断した場合（ステップＳ９４でＮＯ）、ＨＤＡ１５から初期登録画面１４１を読み出す（ステップＳ９５）。
【００４９】
判断部Ａ１７９は読み出した初期登録画面１４１を表示部Ａ１４へ出力する（ステップＳ９６）。判断部Ａ１７９は入力部Ａ１３を介して、ＶＭＩＤを受け付けたか否かを判断する（ステップＳ９７）。判断部Ａ１７９はＶＭＩＤを受け付けていないと判断した場合（ステップＳ９７でＮＯ）、ステップＳ９７の処理を繰り返す。判断部Ａ１７９はＶＭＩＤを受け付けたと判断した場合（ステップＳ９７でＹＥＳ）、管理ファイルＡ１５１に物理マシンＩＤ、ＶＭＩＤ及びメモリＩＤを対応づけて記憶する（ステップＳ９８）。
【００５０】
同期部Ａ１７４はＩＰアドレスファイルＡ１５４から他の物理マシン１のＩＰアドレスを読み出す（ステップＳ９９）。同期部Ａ１７４は管理ファイルＡ１５１のステップＳ９８による変更後のデータを読み出す（ステップＳ１０１）。同期部Ａ１７４は、ＩＰアドレスを参照し、変更後のデータを、ＮＩＣＡ１６を介して、他の物理マシン１へ出力する（ステップＳ１０２）。
【００５１】
図１１乃至図１３はＵＳＢメモリ３の装着及び取り外しに関する処理手順を示すフローチャートである。デバイスドライバＡ１７６はＵＳＢポートＡ１７にＵＳＢメモリ３が装着されたか否かを判断する（ステップＳ１１１）。デバイスドライバＡ１７６は装着されていないと判断した場合（ステップＳ１１１でＮＯ）、以上の処理を繰り返す。デバイスドライバＡ１７６はＵＳＢメモリ３が装着されたと判断した場合（ステップＳ１１１でＹＥＳ）、ＵＳＢメモリ３の内部メモリに記憶されたメモリＩＤを取得する（ステップＳ１１２）。
【００５２】
デバイスドライバＡ１７６はメモリＩＤ及び装着情報を判断部Ａ１７９へ出力する（ステップＳ１１３）。判断部Ａ１７９は管理ファイルＡ１５１内にメモリＩＤに対応するＶＭＩＤが記憶されているか否かを判断する（ステップＳ１１３１）。判断部Ａ１７９は管理ファイルＡ１５１内にメモリＩＤに対応するＶＭＩＤが記憶されていないと判断した場合（ステップＳ１１３１でＮＯ）、ステップＳ９５へ移行する（ステップＳ１１３２）。判断部Ａ１７９は管理ファイルＡ１５１内にメモリＩＤに対応するＶＭＩＤが記憶されていると判断した場合（ステップＳ１１３１でＹＥＳ）、ＨＤＡ１５から自身の物理マシンＩＤを読み出す（ステップＳ１１４）。
【００５３】
判断部Ａ１７９は物理マシンＡ１内にメモリＩＤに対応づけられたＶＭ２が存在するか否かを判断すべく以下の処理を行う。判断部Ａ１７９は管理ファイルＡ１５１内に、自身の物理マシンＩＤとメモリＩＤとＶＭＩＤとがアンド条件で対応づけて記憶されているか否かを判断する（ステップＳ１１５）。判断部Ａ１７９は自身の物理マシンＩＤとメモリＩＤとＶＭＩＤとがアンド条件で対応づけて記憶されていないと判断した場合（ステップＳ１１５でＮＯ）、ＵＳＢメモリ３に対応するＶＭ２が物理マシンＡ１に存在しないと判断する（ステップＳ１１６）。その後、後述するマイグレーション処理へ移行する。
【００５４】
判断部Ａ１７９は自身の物理マシンＩＤとメモリＩＤとＶＭＩＤとがアンド条件で対応づけて記憶されていると判断した場合（ステップＳ１１５でＹＥＳ）、ＵＳＢメモリ３に対応する物理マシンＡ１が存在すると判断する（ステップＳ１１７）。判断部Ａ１７９はメモリＩＤに対応するＶＭＩＤ及び起動命令を起動部Ａ１７１へ出力する（ステップＳ１１８）。起動部Ａ１７１はＶＭＩＤに対応するＶＭ２１を起動する（ステップＳ１１９）。ＶＭ管理部Ａ１７７はＶＭ２１の起動を検出し、状態ファイルＡ１５３にＶＭＩＤ及び状態「運転」を記憶する（ステップＳ１２１）。
【００５５】
判断部Ａ１７９は管理ファイルＡ１５１に起動したＶＭ２１の状態「運転」及びＵＳＢメモリ３の装着状態「装着」を記憶する（ステップＳ１２２）。同期部Ａ１７４はＩＰアドレスファイルＡ１５４から他の物理マシン１のＩＰアドレスを読み出す（ステップＳ１２３）。同期部Ａ１７４は管理ファイルＡ１５１の変更後のレコードを読み出す（ステップＳ１２４）。図５の例では、物理マシンＩＤ「ＰＡ」、ＶＭＩＤ「ＶＭ０１」、ＶＭ状態「運転」、メモリＩＤ「Ｍ０１」、装着状態「装着」が読み出される。
【００５６】
同期部Ａ１７４は変更後のレコードをＩＰアドレス宛へ出力する（ステップＳ１２５）。これにより、管理ファイルＡ１５１と、物理マシンＢ１の管理ファイルＢ１５１とが同期される。その後、デバイスドライバＡ１７６はＵＳＢメモリ３の取り外しを検出したか否かを判断する（ステップＳ１２６）。デバイスドライバＡ１７６はＵＳＢメモリ３の取り外しを検出していない場合（ステップＳ１２６でＮＯ）、ステップＳ１２６の処理を繰り返す。デバイスドライバＡ１７６はＵＳＢメモリ３の取り外しを検出した場合（ステップＳ１２６でＹＥＳ）、メモリＩＤ及び取り外し情報を判断部Ａ１７９へ出力する（ステップＳ１２７）。
【００５７】
判断部Ａ１７９はメモリＩＤに対応するＶＭＩＤを管理ファイルＡ１５１から読み出す（ステップＳ１２８）。判断部Ａ１７９はＶＭＩＤ及びメモリＩＤを中断部Ａ１７２へ出力する（ステップＳ１２９）。中断部Ａ１７２はＶＭ２１を中断する（ステップＳ１２１０）。ＶＭ管理部Ａ１７７はＶＭ２１の中断を検出し、状態ファイルＡ１５３にＶＭＩＤ及び状態「中断」を記憶する（ステップＳ１２１１）。中断部Ａ１７２はＶＭ２１の仮想化データをＲＡＭＡ１２にＶＭＩＤに対応づけて記憶しておく。
【００５８】
判断部Ａ１７９は管理ファイルＡ１５１に中断したＶＭ２１の状態「中断」及びＵＳＢメモリ３の装着状態「取り外し」を記憶する（ステップＳ１２１２）。同期部Ａ１７４は管理ファイルＡ１５１の変更後のレコードを読み出す（ステップＳ１２１３）。図６Ａの例では、物理マシンＩＤ「ＰＡ」、ＶＭＩＤ「ＶＭ０１」、ＶＭ状態「中断」、メモリＩＤ「Ｍ０１」、装着状態「取り外し」が読み出される。同期部Ａ１７４は変更後のレコードを、ステップＳ１２３で読み出したＩＰアドレス宛へ出力する（ステップＳ１２１４）。これにより、管理ファイルＡ１５１と、物理マシンＢ１の管理ファイルＢ１５１とが同期される。
【００５９】
図１４乃至図１６はマイグレーション処理の手順を示すフローチャートである。物理マシンＢ１において、ステップＳ１１６による判断の後、以下の処理を行う。以下では、物理マシンＢ１に、メモリＩＤ「Ｍ０１」のＵＳＢメモリ３が装着された例を挙げて説明する。物理マシンＢ１の判断部Ｂ１７９はメモリＩＤに対応する物理マシンＩＤ及びＶＭＩＤを読み出す（ステップＳ１４１）。図８Ａの例ではメモリＩＤ「Ｍ０１」に対応する物理マシンＩＤ「ＰＡ」及びＶＭＩＤ「ＶＭ０１」が読み出される。判断部Ｂ１７９は読み出した物理マシンＩＤに対応するＩＰアドレスをＩＰアドレスファイルＢ１５４から読み出す（ステップＳ１４２）。
【００６０】
物理マシンＢ１の出力部Ｂ１７５はＮＩＣＢ１６を介して読み出したＩＰアドレス宛へ、ＶＭＩＤ及び仮想化データの取得要求を出力する（ステップＳ１４３）。物理マシンＡ１の受け付け部Ａ１７１１はＶＭＩＤ及び仮想化データの取得要求を受け付ける（ステップＳ１４４）。受け付け部Ａ１７１１はＶＭＩＤを出力部Ａ１７５へ出力する（ステップＳ１４５）。出力部Ａ１７５はＲＡＭＡ１２から、ＶＭ管理部Ａ１７７によりカプセル化されたＶＭＩＤに対応する仮想化データを読み出す（ステップＳ１４６）。本例ではＶＭ２１の仮想化データが読み出される。出力部Ａ１７５はＶＭＩＤ及び仮想化データを物理マシンＢ１へ出力する（ステップＳ１４７）。
【００６１】
物理マシンＢ１の受け付け部Ｂ１７１１はＶＭＩＤ及び仮想化データを受け付ける（ステップＳ１４８）。受け付けた仮想化データはＲＡＭＢ１２に順次展開されマイグレーションが進行する。受け付け部Ｂ１７１１はＶＭＩＤ及び仮想化データを起動部Ｂ１７１へ出力する（ステップＳ１４９）。起動部Ｂ１７１は仮想化データに基づきＶＭ２１を起動する（ステップＳ１５１）。起動部Ｂ１７１は状態ファイルＢ１５３にＶＭＩＤ「ＶＭ０１」及び状態「運転」を記憶する（ステップＳ１５２）。
【００６２】
起動部Ｂ１７１は管理ファイルＢ１５１に新たなレコードを生成すべく、物理マシンＩＤ、ＶＭＩＤ、ＶＭ２の状態、メモリＩＤ及び装着状態を対応づけて記憶する（ステップＳ１５３）。図８Ｂの例では、物理マシンＩＤ「ＰＢ」、ＶＭＩＤ「ＶＭ０１」、ＶＭ２の状態「運転」、メモリＩＤ「Ｍ０１」及び装着状態「装着」が管理ファイルＢ１５１に記憶される。同期部Ｂ１７４はＩＰアドレスファイルＢ１５４から他の物理マシン１のＩＰアドレスを読み出す（ステップＳ１５４）。
【００６３】
同期部Ｂ１７４は管理ファイルＢ１５１から、ステップＳ１５３において述べた変更後のレコードを読み出す（ステップＳ１５５）。同期部Ｂ１７４は変更後のレコードをステップＳ１５４で読み出したＩＰアドレス宛へ出力する（ステップＳ１５６）。物理マシンＡ１の受け付け部Ａ１７１１は変更後のレコードを受け付ける（ステップＳ１５７）。受け付け部Ａ１７１１は変更後のレコードを管理ファイルＡ１５１に記憶する（ステップＳ１５８）。受け付け部Ａ１７１１はステップＳ１４４で受け付けたＶＭＩＤ及び停止命令を停止部Ａ１７３へ出力する（ステップＳ１５９）。
【００６４】
停止部Ａ１７３はＶＭＩＤに対応するＶＭ２１を停止する（ステップＳ１６１）。消去部Ａ１７８は状態ファイルＡ１５３のＶＭＩＤ「ＶＭ０１」に対応するレコードを消去する（ステップＳ１６２）。消去部Ａ１７８は管理ファイルＡ１５１からＶＭＩＤに対応するレコードを消去する（ステップＳ１６３）。図８Ａの例では、物理マシンＩＤ「ＰＡ」、ＶＭＩＤ「ＶＭ０１」、ＶＭ状態「中断」、メモリＩＤ「Ｍ０１」及び装着状態「取り外し」のレコードが消去される。同期部Ａ１７４はＩＰアドレスファイルＡ１５４から他
物理マシン１のＩＰアドレスを読み出す（ステップＳ１６４）。
【００６５】
消去部Ａ１７８はステップＳ１６３の処理後、消去の情報を同期部Ａ１７４へ出力する。この消去の情報は、少なくともＶＭＩＤまたはメモリＩＤ、及び、データが消去されたことを示す情報である。本実施の形態においては、消去されたレコード（物理マシンＩＤ「ＰＡ」、ＶＭＩＤ「ＶＭ０１」、ＶＭ状態「中断」、メモリＩＤ「Ｍ０１」及び装着状態「取り外し」）及び消去されたことを示す情報を出力する。同期部Ａ１７４は消去部Ａ１７８から出力された消去の情報をＩＰアドレス宛へ出力する（ステップＳ１６５）。
【００６６】
物理マシンＢ１の同期部Ｂ１７４は消去の情報を受け付ける（ステップＳ１６６）。同期部Ｂ１７４は管理ファイルＢ１５１から消去の情報に対応するレコードを消去する（ステップＳ１６７）。図８Ａの例では、消去の情報である物理マシンＩＤ「ＰＡ」、ＶＭＩＤ「ＶＭ０１」、ＶＭ状態「中断」、メモリＩＤ「Ｍ０１」及び装着状態「取り外し」に対応するレコードが同期のため消去される。これにより、ＵＳＢメモリ３を利用することによりＶＭ２との紐付けが行え、物理マシン１間において対応するＶＭ２を迅速に利用することが可能となる。
【００６７】
実施の形態２
実施の形態２は仮想化データを出力しつつＶＭ２の使用を可能とする形態に関する。図１７乃至図１９は仮想化データの移行処理を示すフローチャートである。物理マシンＢ１において、ステップＳ１１６による判断の後、以下の処理を行う。以下では、物理マシンＢ１に、メモリＩＤ「Ｍ０１」のＵＳＢメモリ３が装着された例を挙げて説明する。物理マシンＢ１の判断部Ｂ１７９はメモリＩＤに対応する物理マシンＩＤ及びＶＭＩＤを読み出す（ステップＳ１７１）。判断部Ｂ１７９は読み出した物理マシンＩＤに対応するＩＰアドレスをＩＰアドレスファイルＢ１５４から読み出す（ステップＳ１７２）。また物理マシンＢ１の判断部Ｂ１７９は自身のＩＰアドレスをＨＤＢ１５から読み出す。
【００６８】
物理マシンＢ１の出力部Ｂ１７５はＮＩＣＢ１６を介して読み出した物理マシンＡ１のＩＰアドレス宛へ、物理マシンＢ１のＩＰアドレス、ＶＭＩＤ及び仮想化データの取得要求を出力する（ステップＳ１７３）。物理マシンＡ１の受け付け部Ａ１７１１は、物理マシンＢ１のＩＰアドレス、ＶＭＩＤ及び仮想化データの取得要求を受け付ける（ステップＳ１７４）。受け付け部Ａ１７１１はＶＭＩＤ及び仮想化データを起動部Ａ１７１へ出力する（ステップＳ１７５）。
【００６９】
起動部Ａ１７１はＶＭＩＤに対応するＶＭ２を起動する（ステップＳ１７６）。本実施形態においては、ＶＭ２１が起動する。起動後、物理マシンＡ１のＶＭ２１のフロントエンドドライバ２１３と、物理マシンＢ１のバックエンドドライバＢ１７１２とを接続し、物理マシンＢ１にて、ＶＭ２１を遠隔操作すべく以下の処理を行う。起動部Ａ１７１は起動したＶＭ２のＶＭＩＤ及びバックエンドドライバＢ１７１２の接続要求を、ステップＳ１７４で受け付けた物理マシンＢ１のＩＰアドレス宛へ出力する（ステップＳ１７７）。
【００７０】
物理マシンＢ１の受け付け部Ｂ１７１１は、ＶＭＩＤ及びバックエンドドライバＢ１７１２の接続要求を受け付ける（ステップＳ１７８）。受け付け部Ｂ１７１１の接続要求の受け付けをトリガに、バックエンドドライバＢ１７１２はＶＭＩＤを参照し、ＶＭＩＤに対応するフロントエンドドライバ２１３との接続を行う（ステップＳ１７９）。これに対応して物理マシンＡ１のフロントエンドドライバ２１３は、ステップＳ１７４で受け付けたＩＰアドレスに対応する物理マシンＢ１のバックエンドドライバＢ１７１２との接続を行う（ステップＳ１８１）。
【００７１】
以上のように、物理マシンＢ１でのＶＭ２１の使用を提供しつつ、仮想化データのマイグレーションを並行して行う。物理マシンＡ１の受け付け部Ａ１７１１はＶＭＩＤを出力部Ａ１７５へ出力する（ステップＳ１８２）。出力部Ａ１７５はＲＡＭＡ１２から、ステップＳ１２１０において中断した際に、ＶＭ管理部Ａ１７７によりカプセル化されたＶＭＩＤに対応する仮想化データを読み出す（ステップＳ１８３）。出力部Ａ１７５は、ステップＳ１２１０において中断した際に、ＶＭＩＤに対応する仮想化データの容量を読み出す（ステップＳ１８４）。出力部Ａ１７５はＶＭＩＤに対応する仮想化データの容量、ＶＭＩＤ及び仮想化データを物理マシンＢ１へ出力する（ステップＳ１８５）。
【００７２】
物理マシンＢ１の受け付け部Ｂ１７１１は容量、ＶＭＩＤ及び仮想化データを受け付ける（ステップＳ１８６）。受け付け部Ｂ１７１１はＶＭＩＤ及び仮想化データをＲＡＭＢ１２に記憶する（ステップＳ１８７）。受け付け部Ｂ１７１１はＨＤＢ１５から所定係数を読み出す。受け付け部Ｂ１７１１は読み出した所定係数に容量を乗ずる。受け付け部Ｂ１７１１は記憶した仮想化データは容量に所定係数を乗じた値以上であるか否かを判断する（ステップＳ１８８）。なお、この所定係数は１より小さい値としておけばよい。
【００７３】
受け付け部Ｂ１７１１は記憶した仮想化データは容量に所定係数を乗じた値以上でないと判断した場合（ステップＳ１８８でＮＯ）、ステップＳ１８６へ移行し、仮想化データの記憶処理を引き続き行う。以上の処理を繰り返し行うことにより、物理マシンＡ１に記憶された仮想化データの内容と、物理マシンＢ１に記憶された仮想化データの内容との差分が減少する。受け付け部Ｂ１７１１は記憶した仮想化データが容量に所定係数を乗じた値以上であると判断した場合（ステップＳ１８８でＹＥＳ）、ステップＳ１９１へ移行する。すなわち、物理マシンＡ１に記憶された仮想化データの内容と、物理マシンＢ１に記憶された仮想化データの内容との差分が、所定の閾値以下となった場合、ステップＳ１９１へ移行する。バックエンドドライバＢ１７１２は、ステップＳ１７２で読み出したＩＰアドレス宛へ、ＶＭＩＤ及びフロントエンドドライバ２１３の解除要求を出力する（ステップＳ１９１）。
【００７４】
受け付け部Ａ１７１１はＶＭＩＤ及びフロントエンドドライバ２１３の解除要求を受け付ける（ステップＳ１９２）。ステップＳ１９１及びＳ１９２の解除要求の出力及び受け付けにより物理マシンＡ１と物理マシンＢ１との同期を有効に行うことが可能となる。なお、本実施の形態においてはステップＳ１８８の処理を物理マシンＢ１側において実行する例を挙げたがこれに限るものではない。物理マシンＡ１側において実行しても良い。この場合、ステップＳ１８５の処理後、出力部Ａ１７５は出力した仮想化データが容量に所定係数を乗じた値以上であるか否かを判断する。出力部Ａ１７５は出力した仮想化データが容量に所定係数を乗じた値以上であると判断した場合、解除要求を物理マシンＢ１へ出力する。ステップＳ１９２の後、停止部Ａ１７３はＶＭ２１を一時的に停止し、またフロントエンドドライバ２１３は、物理マシンＢ１のバックエンドドライバＢ１７１２との接続を解除する（ステップＳ１９３）。出力部Ａ１７５はステップＳ１８５と同じく、ＶＭＩＤ及び未出力の残り全ての仮想化データを物理マシンＢ１へ出力する（ステップＳ１９４）。物理マシンＢ１の受け付け部Ｂ１７１１は、ＶＭＩＤ及び残り全ての仮想化データを受け付ける（ステップＳ１９５）。
【００７５】
受け付け部Ｂ１７１１はＶＭＩＤ及び全ての仮想化データをＲＡＭＢ１２に記憶する（ステップＳ１９６）。これにより、全てのＶＭ２１の仮想化データが移行されたことから、物理マシンＢ１上でのＶＭ２１の生成処理を行う。受け付け部Ｂ１７１１はＶＭＩＤ及び仮想化データを起動部Ｂ１７１へ出力する（ステップＳ１９７）。起動部Ｂ１７１は仮想化データに基づきＶＭ２１を起動（生成）する（ステップＳ１９８）。起動部Ｂ１７１は状態ファイルＢ１５３にＶＭＩＤ「ＶＭ０１」及び状態「運転」を記憶する（ステップＳ１９９）。
【００７６】
起動部Ｂ１７１は管理ファイルＢ１５１に新たなレコードを生成すべく、物理マシンＩＤ、ＶＭＩＤ、ＶＭ２の状態、メモリＩＤ及び装着状態を対応づけて記憶する（ステップＳ１９１０）。以降の管理ファイルＢ１５１及びＡ１５１の同期処理は実施の形態１のステップＳ１５４以降の処理と同様であるため詳細な説明は省略する。このように、移行先の物理マシンＢ１にて、物理マシンＡ１に存在するＶＭ２１を実行させつつ、仮想化データのマイグレーションを行うようにしたので、様々な物理マシン１にて、より迅速なＶＭ２の使用が可能となる。
【００７７】
本実施の形態２は以上の如きであり、その他は実施の形態１と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。
【００７８】
実施の形態３
実施の形態３は管理ファイルＡ１５１を同期しない形態に関する。管理ファイルＡ１５１及びＢ１５１は必ずしも同期する必要はない。図２０及び図２１は初期登録処理の手順を示すフローチャートである。以下では、物理マシンＡ１にてＵＳＢメモリ３を初期登録する処理を説明する。初期登録が完了した場合、ＵＳＢメモリ３内の内部メモリにはメモリＩＤに対応するＶＭＩＤが記憶される。デバイスドライバＡ１７６はＵＳＢポートＡ１７にＵＳＢメモリ３が装着されたか否かを判断する（ステップＳ２０１）。デバイスドライバＡ１７６は装着されていないと判断した場合（ステップＳ２０１でＮＯ）、以上の処理を繰り返す。デバイスドライバＡ１７６はＵＳＢメモリ３が装着されたと判断した場合（ステップＳ２０１でＹＥＳ）、ＵＳＢメモリ３の内部メモリに記憶されたメモリＩＤを取得する（ステップＳ２０２）。
【００７９】
続いてデバイスドライバＡ１７６はＵＳＢメモリ３の内部メモリに記憶されたＶＭＩＤを取得する。デバイスドライバＡ１７６はＵＳＢメモリ３内にＶＭＩＤが記憶されているか否かを判断する（ステップＳ２０３）。具体的には、ＵＳＢメモリ３からＶＭＩＤを取得することができたか否かにより判断する。デバイスドライバＡ１７６は、ＵＳＢメモリ３内にＶＭＩＤが記憶されていると判断した場合（ステップＳ２０３でＹＥＳ）、装着されたＵＳＢメモリ３は、初期登録済みであると判断する（ステップＳ２０４）。以降の処理は他のフローチャートにて詳述する。
【００８０】
デバイスドライバＡ１７６は、ＵＳＢメモリ３内にＶＭＩＤが記憶されていないと判断した場合（ステップＳ２０３でＮＯ）、装着されたＵＳＢメモリ３は、未初期登録であると判断し（ステップＳ２０５）、初期登録処理を実行する。デバイスドライバＡ１７６は取得したメモリＩＤ及び装着を検出したことを示す装着情報を判断部Ａ１７９へ出力する（ステップＳ２０６）。判断部Ａ１７９は、ＨＤＡ１５から初期登録画面１４１を読み出す（ステップＳ２０７）。
【００８１】
判断部Ａ１７９は読み出した初期登録画面１４１を表示部Ａ１４へ出力する（ステップＳ２０８）。判断部Ａ１７９は入力部Ａ１３を介して、ＶＭＩＤを受け付けたか否かを判断する（ステップＳ２０９）。判断部Ａ１７９はＶＭＩＤを受け付けていないと判断した場合（ステップＳ２０９でＮＯ）、ステップＳ２０９の処理を繰り返す。判断部Ａ１７９はＶＭＩＤを受け付けたと判断した場合（ステップＳ２０９でＹＥＳ）、管理ファイルＡ１５１に物理マシンＩＤ、ＶＭＩＤ及びメモリＩＤを対応づけて記憶する（ステップＳ２１１）。
【００８２】
デバイスドライバＡ１７６はＵＳＢメモリ３に対し、ステップＳ２１１で記憶したＶＭＩＤを出力する（ステップＳ２１２）。ＵＳＢメモリ３は内部メモリに出力されたＶＭＩＤを記憶する（ステップＳ２１３）。
【００８３】
図２２乃至図２４は仮想化データの移行処理手順を示すフローチャートである。以降の実施の形態においては実施の形態１で述べた仮想化データの移行処理と同様の処理を例に挙げて説明する。ただし、実施の形態２で述べた仮想化データの移行処理と同様の処理を用いても良い。ステップＳ２０４においてＵＳＢメモリ３の初期登録が済んでいると判断した場合、以下の処理を行う。物理マシンＡ１の判断部Ａ１７９は管理ファイルＡ１５１内にメモリＩＤに対応するＶＭＩＤが記憶されているか否かを判断する（ステップＳ２２１）。判断部Ａ１７９は管理ファイルＡ１５１内にメモリＩＤに対応するＶＭＩＤが記憶されていないと判断した場合（ステップＳ２２１でＮＯ）、ＵＳＢメモリ３に対応するＶＭ２が物理マシンＡ１には存在しないと判断する（ステップＳ２２２）。
【００８４】
判断部Ａ１７９は管理ファイルＡ１５１内にメモリＩＤに対応するＶＭＩＤが記憶されていると判断した場合（ステップＳ２２１でＹＥＳ）、ＵＳＢメモリ３に対応するＶＭ２が物理マシンＡ１に存在すると判断する（ステップＳ２２３）。判断部Ａ１７９はメモリＩＤに対応するＶＭＩＤ及び起動命令を起動部Ａ１７１へ出力する（ステップＳ２２４）。起動部Ａ１７１はＶＭＩＤに対応するＶＭ２１を起動する（ステップＳ２２５）。ＶＭ管理部Ａ１７７はＶＭ２１の起動を検出し、状態ファイルＡ１５３にＶＭＩＤ及び状態「運転」を記憶する（ステップＳ２２６）。
【００８５】
判断部Ａ１７９は管理ファイルＡ１５１に、起動したＶＭ２１のＶＭＩＤ、状態「運転」及びＵＳＢメモリ３の装着状態「装着」を記憶する（ステップＳ２２７）。図２５は実施の形態３に係る管理ファイルＡ１５１のレコードレイアウトを示す説明図である。実施の形態１と異なり、物理マシンＡ１自身に存在するＶＭ２の情報のみを記憶している。その後、デバイスドライバＡ１７６はＵＳＢメモリ３の取り外しを検出したか否かを判断する（ステップＳ２２８）。デバイスドライバＡ１７６はＵＳＢメモリ３の取り外しを検出していない場合（ステップＳ２２８でＮＯ）、ステップＳ２２８の処理を繰り返す。デバイスドライバＡ１７６はＵＳＢメモリ３の取り外しを検出した場合（ステップＳ２２８でＹＥＳ）、メモリＩＤ及び取り外し情報を判断部Ａ１７９へ出力する（ステップＳ２２９）。
【００８６】
判断部Ａ１７９はメモリＩＤに対応するＶＭＩＤを管理ファイルＡ１５１から読み出す（ステップＳ２３１）。判断部Ａ１７９はＶＭＩＤ及びメモリＩＤを中断部Ａ１７２へ出力する（ステップＳ２３２）。中断部Ａ１７２はＶＭ２１を中断する（ステップＳ２３３）。ＶＭ管理部Ａ１７７はＶＭ２１の中断を検出し、状態ファイルＡ１５３にＶＭＩＤ及び状態「中断」を記憶する（ステップＳ２３４）。中断部Ａ１７２はＶＭ２１の仮想化データをＲＡＭＡ１２にＶＭＩＤに対応づけて記憶しておく。
【００８７】
判断部Ａ１７９は管理ファイルＡ１５１にＶＭ２１のＶＭＩＤ、状態「中断」及びＵＳＢメモリ３の装着状態「取り外し」を記憶する（ステップＳ２３５）。ステップＳ２２２において、ＵＳＢメモリ３に対応するＶＭ２が物理マシンＡ１に存在しないと判断した場合、ステップＳ２３６へ移行する。以降は、物理マシンＢ１にＶＭ２１が存在するものとして説明する。判断部Ａ１７９は他の物理マシン１のＩＰアドレスをＩＰアドレスファイルＡ１５４から読み出す（ステップＳ２３６）。
【００８８】
物理マシンＡ１の出力部Ａ１７５はＮＩＣＡ１６を介して読み出したＩＰアドレス宛へ、ＶＭＩＤ及び仮想化データの取得要求を出力する（ステップＳ２３７）。物理マシンＢ１の受け付け部Ｂ１７１１はＶＭＩＤ及び仮想化データの取得要求を受け付ける（ステップＳ２３８）。判断部Ｂ１７９は管理ファイルＢ１５１に受け付けたＶＭＩＤが記憶されているか否かを判断する（ステップＳ２３９）。判断部Ｂ１７９は管理ファイルＢ１５１に受け付けたＶＭＩＤが記憶されていないと判断した場合（ステップＳ２３９でＮＯ）、仮想化データが物理マシンＢ１に存在しないことを示す不存在情報を出力する（ステップＳ２４１）。ステップＳ２３９の処理が、他の物理マシンＢ１及びＣ１等で実行されることにより、ＶＭＩＤに対応するＶＭ２が存在する一の物理マシン１が特定される。
【００８９】
判断部Ｂ１７９は管理ファイルＢ１５１に受け付けたＶＭＩＤが記憶されていると判断した場合（ステップＳ２３９でＹＥＳ）、ＶＭＩＤを出力部Ｂ１７５へ出力する（ステップＳ２４２）。出力部Ｂ１７５はＲＡＭＢ１２から、ＶＭ管理部Ｂ１７７によりカプセル化されたＶＭＩＤに対応する仮想化データを読み出す（ステップＳ２４３）。出力部Ｂ１７５はＶＭＩＤ及び仮想化データを物理マシンＡ１へ出力する（ステップＳ２４４）。
【００９０】
物理マシンＡ１の受け付け部Ａ１７１１はＶＭＩＤ及び仮想化データを受け付ける（ステップＳ２４５）。受け付けた仮想化データはＲＡＭＡ１２に順次展開されマイグレーションが進行する。受け付け部Ａ１７１１はＶＭＩＤ及び仮想化データを起動部Ａ１７１へ出力する（ステップＳ２４６）。起動部Ａ１７１は仮想化データに基づきＶＭ２１を起動する（ステップＳ２４７）。起動部Ａ１７１は状態ファイルＡ１５３にＶＭＩＤ「ＶＭ０１」及び状態「運転」を記憶する（ステップＳ２４８）。
【００９１】
起動部Ａ１７１は管理ファイルＡ１５１に新たなレコードを生成すべく、物理マシンＩＤ、ＶＭＩＤ、ＶＭ２の状態、メモリＩＤ及び装着状態を対応づけて記憶する（ステップＳ２４９）。本例では、物理マシンＩＤ「ＰＡ」、ＶＭＩＤ「ＶＭ０１」、ＶＭ２の状態「運転」、メモリＩＤ「Ｍ０１」及び装着状態「装着」が管理ファイルＡ１５１に記憶される。ステップＳ２４４以降、物理マシンＢ１の出力部Ｂ１７５はステップＳ２４４で出力したＶＭＩＤ及び停止命令を停止部Ｂ１７３へ出力する（ステップＳ２４１０）。
【００９２】
停止部Ｂ１７３はＶＭＩＤに対応するＶＭ２１を停止する（ステップＳ２４１１）。消去部Ｂ１７８は状態ファイルＢ１５３のＶＭＩＤ「ＶＭ０１」に対応するレコードを消去する（ステップＳ２４１２）。同様に消去部Ｂ１７８はＶＭＩＤに対応するレコードを消去する（ステップＳ２４１３）。これにより、簡易な構成で物理マシン１間のマイグレーションを実現することが可能となる。
【００９３】
本実施の形態３は以上の如きであり、その他は実施の形態１及び２と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。
【００９４】
実施の形態４
実施の形態４は管理テーブルＡ１５１を外部のコンピュータで管理する形態に関する。図２６は実施の形態４に係る仮想マシン制御システムの概要を示す説明図である。実施の形態３に加えて、通信網Ｎには他のコンピュータ１としてのＤＢサーバコンピュータ（以下ＤＢサーバという）４が設けられている。ＤＢサーバ４内部には管理ファイル１５１が用意されている。ＤＢサーバ４は、実施の形態３で述べた各物理マシン１内の管理ファイルＡ１５１及びＢ１５１の同期を行い、同期後のデータを管理ファイル１５１に記憶する。
【００９５】
図２７乃至３２は同期処理の手順を示すフローチャートである。ステップＳ２０４においてＵＳＢメモリ３の初期登録が済んでいると判断した場合、以下の処理を行う。物理マシンＡ１の判断部Ａ１７９は管理ファイルＡ１５１内にメモリＩＤに対応するＶＭＩＤが記憶されているか否かを判断する（ステップＳ２７１）。判断部Ａ１７９は管理ファイルＡ１５１内にメモリＩＤに対応するＶＭＩＤが記憶されていないと判断した場合（ステップＳ２７１でＮＯ）、ＵＳＢメモリ３に対応するＶＭ２が物理マシンＡ１には存在しないと判断する（ステップＳ２７２）。
【００９６】
判断部Ａ１７９は管理ファイルＡ１５１内にメモリＩＤに対応するＶＭＩＤが記憶されていると判断した場合（ステップＳ２７１でＹＥＳ）、ＵＳＢメモリ３に対応するＶＭ２が物理マシンＡ１に存在すると判断する（ステップＳ２７３）。判断部Ａ１７９はメモリＩＤに対応するＶＭＩＤ及び起動命令を起動部Ａ１７１へ出力する（ステップＳ２７４）。起動部Ａ１７１はＶＭＩＤに対応するＶＭ２１を起動する（ステップＳ２７５）。ＶＭ管理部Ａ１７７はＶＭ２１の起動を検出し、状態ファイルＡ１５３にＶＭＩＤ及び状態「運転」を記憶する（ステップＳ２７６）。
【００９７】
判断部Ａ１７９は管理ファイルＡ１５１に、起動したＶＭ２１のＶＭＩＤ、ＶＭ２の状態「運転」及びＵＳＢメモリ３の装着状態「装着」を記憶する（ステップＳ２７７）。出力部Ａ１７５は、ＮＩＣＡ１６を介して、ＤＢサーバ４へ物理マシンＡ１の物理マシンＩＤ、装着されたＵＳＢメモリ３のメモリＩＤ、ＶＭＩＤ、ＶＭ２の状態及び装着状態を出力する（ステップＳ２７８）。ＤＢサーバ４は管理ファイル１５１に物理マシンＩＤ、メモリＩＤ、ＶＭＩＤ、ＶＭ２の状態及び装着状態を受け付ける（ステップＳ２７９）。ＤＢサーバ４は管理ファイル１５１に受け付けた物理マシンＩＤ、メモリＩＤ、ＶＭＩＤ、ＶＭ２の状態及び装着状態を記憶する（ステップＳ２８１）。
【００９８】
デバイスドライバＡ１７６はＵＳＢメモリ３の取り外しを検出したか否かを判断する（ステップＳ２８２）。デバイスドライバＡ１７６はＵＳＢメモリ３の取り外しを検出していない場合（ステップＳ２８２でＮＯ）、ステップＳ２８２の処理を繰り返す。デバイスドライバＡ１７６はＵＳＢメモリ３の取り外しを検出した場合（ステップＳ２８２でＹＥＳ）、メモリＩＤ及び取り外し情報を判断部Ａ１７９へ出力する（ステップＳ２８３）。
【００９９】
判断部Ａ１７９はメモリＩＤに対応するＶＭＩＤを管理ファイルＡ１５１から読み出す（ステップＳ２８４）。判断部Ａ１７９はＶＭＩＤ及びメモリＩＤを中断部Ａ１７２へ出力する（ステップＳ２８５）。中断部Ａ１７２はＶＭ２１を中断する（ステップＳ２８６）。ＶＭ管理部Ａ１７７はＶＭ２１の中断を検出し、状態ファイルＡ１５３にＶＭＩＤ及び状態「中断」を記憶する（ステップＳ２８７）。中断部Ａ１７２はＶＭ２１の仮想化データをＲＡＭＡ１２にＶＭＩＤに対応づけて記憶しておく。
【０１００】
判断部Ａ１７９は管理ファイルＡ１５１に物理マシンＩＤ、ＶＭ２１のＶＭＩＤ、ＶＭ２の状態「中断」及びＵＳＢメモリ３の装着状態「取り外し」を記憶する（ステップＳ２８８）。出力部Ａ１７５はＤＢサーバ４へ物理マシンＡ１の物理マシンＩＤ、メモリＩＤ、ＶＭＩＤ、ＶＭ２の状態及び取り外し状態を出力する（ステップＳ２８９）。ＤＢサーバ４は管理ファイル１５１に物理マシンＩＤ、メモリＩＤ、ＶＭＩＤ、ＶＭ２の状態及び装着状態を受け付ける。ＤＢサーバ４は管理ファイル１５１に受け付けた物理マシンＩＤ、メモリＩＤ、ＶＭＩＤ、ＶＭ２の状態及び装着状態を記憶する（ステップＳ２９０）。
【０１０１】
ステップＳ２７２において、ＵＳＢメモリ３に対応するＶＭ２が物理マシンＡ１に存在しないと判断した場合、ステップＳ２９１へ移行する。出力部Ａ１７５はＤＢサーバ４へＶＭＩＤ、メモリＩＤ及び物理マシンＩＤの取得要求を出力する（ステップＳ２９１）。なお、ＶＭＩＤ及びメモリＩＤのいずれか一方を出力するようにしても良い。管理サーバ４はＶＭＩＤ、メモリＩＤ及び物理マシンＩＤの取得要求を受け付ける（ステップＳ２９２）。ＤＢサーバ４はＶＭ２が存在する物理マシン１を特定するための物理マシンＩＤを、ＶＭＩＤまたはメモリＩＤを元に、管理ファイル１５１内を検索する。
【０１０２】
ＤＢサーバ４はＶＭＩＤまたはメモリＩＤに対応する物理マシンＩＤを、物理マシンＡ１へ出力する（ステップＳ２９３）。物理マシンＡ１の受け付け部Ａ１７１１は出力された物理マシンＩＤを受け付ける（ステップＳ２９４）。判断部Ａ１７９は受け付けた物理マシンＩＤに対応する他の物理マシン１のＩＰアドレスをＩＰアドレスファイルＡ１５４から読み出す（ステップＳ２９５）。
【０１０３】
物理マシンＡ１の出力部Ａ１７５はＮＩＣＡ１６を介して読み出したＩＰアドレス宛へ、ＶＭＩＤ及び仮想化データの取得要求を出力する（ステップＳ２９６）。以降では、物理マシンＢ１に仮想化データが存在するものとして説明する。物理マシンＢ１の受け付け部Ｂ１７１１はＶＭＩＤ及び仮想化データの取得要求を受け付ける（ステップＳ２９７）。
【０１０４】
判断部Ｂ１７９は受け付けたＶＭＩＤを出力部Ｂ１７５へ出力する（ステップＳ２９８）。出力部Ｂ１７５はＲＡＭＢ１２から、ＶＭ管理部Ｂ１７７によりカプセル化されたＶＭＩＤに対応する仮想化データを読み出す（ステップＳ２９９）。出力部Ｂ１７５はＶＭＩＤ及び仮想化データを物理マシンＡ１へ出力する（ステップＳ３０１）。物理マシンＢ１の出力部Ｂ１７５はＶＭＩＤ及び停止命令を停止部Ｂ１７３へ出力する（ステップＳ３０２）。
【０１０５】
停止部Ｂ１７３はＶＭＩＤに対応するＶＭ２１を停止する（ステップＳ３０３）。消去部Ｂ１７８は状態ファイルＢ１５３のＶＭＩＤ「ＶＭ０１」に対応するレコードを消去する（ステップＳ３０４）。同様に消去部Ｂ１７８はＶＭＩＤに対応するレコードを消去する（ステップＳ３０５）。出力部Ｂ１７５はＤＢサーバ４へＶＭＩＤ及び消去命令を出力する（ステップＳ３０６）。ＤＢサーバ４はＶＭＩＤ及び消去命令を受け付ける（ステップＳ３０７）。ＤＢサーバ４は管理ファイル１５１からＶＭＩＤに対応するレコードを消去する（ステップＳ３０８）。
【０１０６】
物理マシンＡ１の受け付け部Ａ１７１１はステップＳ３０１により出力されたＶＭＩＤ及び仮想化データを受け付ける（ステップＳ３０９）。受け付けた仮想化データはＲＡＭＡ１２に順次展開されマイグレーションが進行する。受け付け部Ａ１７１１はＶＭＩＤ及び仮想化データを起動部Ａ１７１へ出力する（ステップＳ３１１）。起動部Ａ１７１は仮想化データに基づきＶＭ２１を起動する（ステップＳ３１２）。起動部Ａ１７１は状態ファイルＡ１５３にＶＭＩＤ「ＶＭ０１」及び状態「運転」を記憶する（ステップＳ３１３）。
【０１０７】
起動部Ａ１７１は管理ファイルＡ１５１に新たなレコードを生成すべく、物理マシンＩＤ、ＶＭＩＤ、ＶＭ２の状態、メモリＩＤ及び装着状態を対応づけて記憶する（ステップＳ３１４）。出力部Ａ１７５はＤＢサーバ４へ物理マシンＩＤ、ＶＭＩＤ、ＶＭ２の状態、メモリＩＤ及び装着状態を出力する（ステップＳ３１５）。ＤＢサーバ４は物理マシンＩＤ、ＶＭＩＤ、ＶＭ２の状態、メモリＩＤ及び装着状態を受け付ける（ステップＳ３１６）。ＤＢサーバ４は管理ファイル１５１へ物理マシンＩＤ、ＶＭＩＤ、ＶＭ２の状態、メモリＩＤ及び装着状態を記憶する（ステップＳ３１７）。これにより、ＶＭ２が存在する物理マシン１をより効率よく特定することが可能となる。
【０１０８】
本実施の形態４は以上の如きであり、その他は実施の形態１乃至３と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。
【０１０９】
実施の形態５
実施の形態５は仮想化データを外部に記憶する形態に関する。図３３は実施の形態５に係る仮想マシン制御システムの概要を示す説明図である。実施の形態４に加えて、他のコンピュータ１としてのＤＢサーバ４には仮想化データファイル１５２が設けられている。仮想化データファイル１５２にはＶＭＩＤに対応づけて各物理マシン１において制御されるＶＭ２の仮想化データが記憶されている。なお、管理ファイル１５１をＤＢサーバ４に格納し、仮想化データファイル１５２を他のコンピュータ（図示せず）に格納しても良いことはもちろんである。
【０１１０】
図３４乃至３９は同期処理の手順を示すフローチャートである。ステップＳ２０４においてＵＳＢメモリ３の初期登録が済んでいると判断した場合、以下の処理を行う。物理マシンＡ１の判断部Ａ１７９は管理ファイルＡ１５１内にメモリＩＤに対応するＶＭＩＤが記憶されているか否かを判断する（ステップＳ３４１）。判断部Ａ１７９は管理ファイルＡ１５１内にメモリＩＤに対応するＶＭＩＤが記憶されていないと判断した場合（ステップＳ３４１でＮＯ）、ＵＳＢメモリ３に対応するＶＭ２が物理マシンＡ１には存在しないと判断する（ステップＳ３４２）。
【０１１１】
判断部Ａ１７９は管理ファイルＡ１５１内にメモリＩＤに対応するＶＭＩＤが記憶されていると判断した場合（ステップＳ３４１でＹＥＳ）、ＵＳＢメモリ３に対応するＶＭ２が物理マシンＡ１に存在すると判断する（ステップＳ３４３）。判断部Ａ１７９はメモリＩＤに対応するＶＭＩＤ及び起動命令を起動部Ａ１７１へ出力する（ステップＳ３４４）。起動部Ａ１７１はＶＭＩＤに対応するＶＭ２１を起動する（ステップＳ３４５）。ＶＭ管理部Ａ１７７はＶＭ２１の起動を検出し、状態ファイルＡ１５３にＶＭＩＤ及び状態「運転」を記憶する（ステップＳ３４６）。
【０１１２】
判断部Ａ１７９は管理ファイルＡ１５１に、起動したＶＭ２１のＶＭＩＤ、ＶＭ２の状態「運転」及びＵＳＢメモリ３の装着状態「装着」を記憶する（ステップＳ３４７）。出力部Ａ１７５は、ＮＩＣＡ１６を介して、ＤＢサーバ４へ物理マシンＡ１の物理マシンＩＤ、装着されたＵＳＢメモリ３のメモリＩＤ、ＶＭＩＤ、ＶＭ２の状態及び装着状態を出力する（ステップＳ３４８）。ＤＢサーバ４は管理ファイル１５１に物理マシンＩＤ、メモリＩＤ、ＶＭＩＤ、ＶＭ２の状態及び装着状態を受け付ける（ステップＳ３４９）。ＤＢサーバ４は管理ファイル１５１に受け付けた物理マシンＩＤ、メモリＩＤ、ＶＭＩＤ、ＶＭ２の状態及び装着状態を記憶する（ステップＳ３５１）。
【０１１３】
デバイスドライバＡ１７６はＵＳＢメモリ３の取り外しを検出したか否かを判断する（ステップＳ３５２）。デバイスドライバＡ１７６はＵＳＢメモリ３の取り外しを検出していない場合（ステップＳ３５２でＮＯ）、ステップＳ２８２の処理を繰り返す。デバイスドライバＡ１７６はＵＳＢメモリ３の取り外しを検出した場合（ステップＳ３５２でＹＥＳ）、メモリＩＤ及び取り外し情報を判断部Ａ１７９へ出力する（ステップＳ３５３）。
【０１１４】
判断部Ａ１７９はメモリＩＤに対応するＶＭＩＤを管理ファイルＡ１５１から読み出す（ステップＳ３５４）。判断部Ａ１７９はＶＭＩＤ及びメモリＩＤを中断部Ａ１７２へ出力する（ステップＳ３５５）。中断部Ａ１７２はＶＭ２１を中断する（ステップＳ３５６）。ＶＭ管理部Ａ１７７はＶＭ２１の中断を検出し、状態ファイルＡ１５３にＶＭＩＤ及び状態「中断」を記憶する（ステップＳ３５７）。
【０１１５】
判断部Ａ１７９は管理ファイルＡ１５１に物理マシンＩＤ、ＶＭ２１のＶＭＩＤ、ＶＭ２の状態「中断」及びＵＳＢメモリ３の装着状態「取り外し」を記憶する（ステップＳ３５８）。出力部Ａ１７５は中断状態にあるＶＭ２１の仮想化データをＲＡＭＡ１２から読み出し、読み出した仮想化データ及びＶＭＩＤをＤＢサーバ４へ出力する（ステップＳ３５９）。ＤＢサーバ４はＶＭＩＤ及び仮想化データを受け付ける（ステップＳ３６１）。ＤＢサーバ４は管理ファイル１５１にＶＭＩＤ及び仮想化データを対応づけて仮想化データファイル１５２に記憶する（ステップＳ３６２）。なお、ＤＢサーバ４は、ステップＳ２８９及びＳ２９０と同様に、物理マシンＩＤ、メモリＩＤ、ＶＭＩＤ、ＶＭ２の状態及び装着状態を受け付ける。ＤＢサーバ４は管理ファイル１５１に受け付けた物理マシンＩＤ、メモリＩＤ、ＶＭＩＤ、ＶＭ２の状態及び装着状態を記憶する。これにより、ＶＭ２の仮想化データがバックアップデータとしてＤＢサーバ４に蓄積される。
【０１１６】
ステップＳ３４２において、ＵＳＢメモリ３に対応するＶＭ２が物理マシンＡ１に存在しないと判断した場合、ステップＳ３６３へ移行する。出力部Ａ１７５はＤＢサーバ４へＶＭＩＤ及び仮想化データの取得要求を出力する（ステップＳ３６３）。ＤＢサーバ４はＶＭＩＤ及び仮想化データの取得要求を受け付ける（ステップＳ３６４）。ＤＢサーバ４はＶＭＩＤに対応する仮想化データを仮想化データファイル１５２から読み出し、物理マシンＡ１へ出力する（ステップＳ３６５）。ＤＢサーバ４はＶＭＩＤに対応する物理マシンＩＤを管理ファイル１５１から読み出す（ステップＳ３６６）。この場合、ＶＭ２１が前回動作していた物理マシンＢ１の物理マシンＩＤが読み出される。
【０１１７】
ＤＢサーバ４は読み出した物理マシンＩＤに対応するＩＰアドレスを図示しない記憶部から読み出す。なおＤＢサーバ４は物理マシンＩＤに対応づけて各物理マシン１のＩＰアドレスを記憶している。ＤＢサーバ４は読み出したＩＰアドレス宛へ、ＶＭＩＤ及び当該ＶＭＩＤに対応するレコードを消去することを命じる消去情報を出力する（ステップＳ３６７）。この場合、物理マシンＢ１の管理ファイルＢ１５１からＶＭ２１のＶＭＩＤに関するレコードを消去することが必要であることから、物理マシンＢ１へＶＭＩＤ及び消去情報が出力される。
【０１１８】
物理マシンＢ１の受け付け部Ｂ１７１１はＶＭＩＤ及び消去情報を受け付ける（ステップＳ３６８）。判断部Ｂ１７９は受け付けたＶＭＩＤ及び停止命令を停止部Ｂ１７３へ出力する（ステップＳ３６９）。停止部Ｂ１７３はＶＭＩＤに対応するＶＭ２１を停止する（ステップＳ３７１）。消去部Ｂ１７８は状態ファイルＢ１５３のＶＭＩＤ「ＶＭ０１」に対応するレコードを消去する（ステップＳ３７２）。同様に消去部Ｂ１７８はＶＭＩＤに対応するレコードを消去する（ステップＳ３７３）。出力部Ｂ１７５はＤＢサーバ４へＶＭＩＤ及び消去命令を出力する（ステップＳ３７４）。ＤＢサーバ４はＶＭＩＤ及び消去命令を受け付ける（ステップＳ３７５）。ＤＢサーバ４は管理ファイル１５１からＶＭＩＤに対応するレコードを消去する（ステップＳ３７６）。
【０１１９】
物理マシンＡ１の受け付け部Ａ１７１１はステップＳ３６５により出力されたＶＭＩＤ及び仮想化データを受け付ける（ステップＳ３７７）。受け付けた仮想化データはＲＡＭＡ１２に順次展開されマイグレーションが進行する。受け付け部Ａ１７１１はＶＭＩＤ及び仮想化データを起動部Ａ１７１へ出力する（ステップＳ３７８）。起動部Ａ１７１は仮想化データに基づきＶＭ２１を起動する（ステップＳ３７９）。起動部Ａ１７１は状態ファイルＡ１５３にＶＭＩＤ「ＶＭ０１」及び状態「運転」を記憶する（ステップＳ３８１）。
【０１２０】
起動部Ａ１７１は管理ファイルＡ１５１に新たなレコードを生成すべく、物理マシンＩＤ、ＶＭＩＤ、ＶＭ２の状態、メモリＩＤ及び装着状態を対応づけて記憶する（ステップＳ３８２）。出力部Ａ１７５はＤＢサーバ４へ物理マシンＩＤ、ＶＭＩＤ、ＶＭ２の状態、メモリＩＤ及び装着状態を出力する（ステップＳ３８３）。ＤＢサーバ４は物理マシンＩＤ、ＶＭＩＤ、ＶＭ２の状態、メモリＩＤ及び装着状態を受け付ける（ステップＳ３８４）。ＤＢサーバ４は管理ファイル１５１へ物理マシンＩＤ、ＶＭＩＤ、ＶＭ２の状態、メモリＩＤ及び装着状態を記憶する（ステップＳ３８５）。これにより、ＶＭ２の仮想化データが外部の仮想化データファイル１５２に統一して保存されるためデータを的確に保護することが可能となる。またＤＢサーバ４にて一括して仮想化データを記憶するようにしたので、物理マシン１間通信トラフィックを低減することが可能となる。
【０１２１】
本実施の形態５は以上の如きであり、その他は実施の形態１乃至５と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。
【０１２２】
実施の形態６
実施の形態６は一定時間経過後に中断状態にあるＶＭ２を停止状態へ移行させる形態に関する。図４０及び図４１は停止処理の手順を示すフローチャートである。ステップＳ１２８またはＳ２２８と同様に、デバイスドライバＡ１７６はＵＳＢメモリ３の取り外しを検出したか否かを判断する（ステップＳ４０１）。デバイスドライバＡ１７６はＵＳＢメモリ３の取り外しを検出していない場合（ステップＳ４０１でＮＯ）、ステップＳ４０１の処理を繰り返す。デバイスドライバＡ１７６はＵＳＢメモリ３の取り外しを検出した場合（ステップＳ４０１でＹＥＳ）、メモリＩＤ及び取り外し情報を判断部Ａ１７９へ出力する（ステップＳ４０２）。
【０１２３】
判断部Ａ１７９はメモリＩＤに対応するＶＭＩＤを管理ファイルＡ１５１から読み出す（ステップＳ４０３）。判断部Ａ１７９はＶＭＩＤ及びメモリＩＤを中断部Ａ１７２へ出力する（ステップＳ４０４）。中断部Ａ１７２はＶＭ２１を中断する（ステップＳ４０５）。ＶＭ管理部Ａ１７７はＶＭ２１の中断を検出し、状態ファイルＡ１５３にＶＭＩＤ及び状態「中断」を記憶する（ステップＳ４０６）。判断部Ａ１７９は管理ファイルＡ１５１にＶＭ２１のＶＭＩＤ、状態「中断」及びＵＳＢメモリ３の装着状態「取り外し」を記憶する（ステップＳ４０７）。
【０１２４】
中断部Ａ１７２は仮想化データをＶＭＩＤに対応づけてＲＡＭＡ１２に記憶する（ステップＳ４０８）。停止部Ａ１７３はＨＤＡ１５から一定時間を読み出す（ステップＳ４０９）。この所定時間は例えば５時間等であり、入力部Ａ１３から適宜の値を設定することが可能である。停止部Ａ１７３は時計部Ａ１８の出力を参照し、ステップＳ４０５の中断後、一定時間を経過したか否かを判断する（ステップＳ４１１）。停止部Ａ１７３は一定時間を経過していないと判断した場合（ステップＳ４１１でＮＯ）、ステップＳ４１１の処理を繰り返す。
【０１２５】
停止部Ａ１７３は一定時間を経過したと判断した場合（ステップＳ４１１でＹＥＳ）、ＲＡＭＡ１２に記憶した仮想化データをＨＤＡ１５へＶＭＩＤに対応づけて記憶する（ステップＳ４１２）。これによりＶＭ２１に対するＲＡＭＡ１２の領域は解放される。中断部Ａ１７２はＶＭＩＤ及びメモリＩＤを停止部Ｂ１７３へ出力する（ステップＳ４１３）。停止部Ａ１７３はＶＭ２１を中断する（ステップＳ４１４）。ＶＭ管理部Ａ１７７はＶＭ２１の停止を検出し、状態ファイルＡ１５３にＶＭＩＤ及び状態「停止」を記憶する（ステップＳ４１５）。判断部Ａ１７９は管理ファイルＡ１５１にＶＭ２１のＶＭＩＤ、状態「停止」及びＵＳＢメモリ３の装着状態「取り外し」を記憶する（ステップＳ４１６）。これにより、異なる物理マシン１でのＶＭ２の実行を可能にし、ユーザの利便性を高めつつも、ＶＭ２を停止状態へ移行させることで省電力を図ることも可能となる。
【０１２６】
本実施の形態６は以上の如きであり、その他は実施の形態１乃至５と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。
【０１２７】
実施の形態７
実施の形態７はＵＳＢメモリ３の内部メモリにＶＭＩＤ及び仮想化データを記憶する形態に関する。図４２は実施の形態７に係る仮想マシン制御システムの概要を示す説明図である。ＵＳＢメモリ３には内部メモリ３２が設けられている。内部メモリ３２には上述したメモリＩＤ、実施の形態３で述べたＶＭＩＤ及び仮想化データが記憶される。
【０１２８】
図４３及び図４４は仮想化データの記憶処理の手順を示すフローチャートである。物理マシンＡ１のデバイスドライバＡ１７６は、入力部Ａ１３を介してＵＳＢメモリ３の取り外しの要求を受け付けたか否かを判断する（ステップＳ４３１）。デバイスドライバＡ１７６は、入力部Ａ１３を介してＵＳＢメモリ３の取り外しの要求を受け付けていないと判断した場合（ステップＳ４３１でＮＯ）、ステップＳ４３１の処理を繰り返す。デバイスドライバＡ１７６は、入力部Ａ１３を介してＵＳＢメモリ３の取り外しの要求を受け付けたと判断した場合（ステップＳ４３１でＹＥＳ）、メモリＩＤ及び取り外し情報を判断部Ａ１７９へ出力する（ステップＳ４３２）。
【０１２９】
判断部Ａ１７９はメモリＩＤに対応するＶＭＩＤを読み出す（ステップＳ４３３）。判断部Ａ１７９は中断対象のＶＭ２の仮想化データをＶＭＩＤに対応づけてＲＡＭＡ１２に記憶する（ステップＳ４３４）。
【０１３０】
判断部Ａ１７９はＶＭＩＤ及びメモリＩＤを中断部Ａ１７２へ出力する（ステップＳ４３５）。中断部Ａ１７２はＶＭ２１を中断する（ステップＳ４３６）。判断部Ａ１７９はＶＭＩＤ及び仮想化データを、ＵＳＢメモリ３へ出力する（ステップＳ４３７）。ＵＳＢメモリ３は内部メモリ３２にＶＭＩＤ及び仮想化データを記憶する（ステップＳ４３８）。ＶＭ管理部Ａ１７７はＶＭ２１の中断を検出し、状態ファイルＡ１５３にＶＭＩＤ及び状態「中断」を記憶する（ステップＳ４３９）。中断部Ａ１７２は管理ファイルＡ１５１にＶＭ２の状態及び取り外し状態を記憶する（ステップＳ４４１）。中断部Ａ１７２はＵＳＢメモリ３の取り外し許可情報を表示部Ａ１４へ出力する（ステップＳ４４２）。表示部Ａ１４には例えば「ＵＳＢメモリを取り外して下さい。」等のテキストデータが表示される。
【０１３１】
その後、デバイスドライバＡ１７６はＵＳＢメモリ３が装着されたか否かを判断する（ステップＳ４４３）。デバイスドライバＡ１７６はＵＳＢメモリ３が装着されていないと判断した場合（ステップＳ４４３でＮＯ）、ステップＳ４４３の処理を繰り返す。デバイスドライバＡ１７６はＵＳＢメモリ３が装着された判断した場合（ステップＳ４４３でＹＥＳ）、ＵＳＢメモリ３の内部メモリ３２からメモリＩＤを取得する（ステップＳ４４４）。
【０１３２】
物理マシンＡ１の判断部Ａ１７９は管理ファイルＡ１５１内にメモリＩＤに対応するＶＭＩＤが記憶されているか否かを判断する（ステップＳ４４５）。判断部Ａ１７９は管理ファイルＡ１５１内にメモリＩＤに対応するＶＭＩＤが記憶されていると判断した場合（ステップＳ４４５でＹＥＳ）、ＵＳＢメモリ３に対応するＶＭ２が物理マシンＡ１に存在すると判断する（ステップＳ４４６）。判断部Ａ１７９はメモリＩＤに対応するＶＭＩＤ及び起動命令を起動部Ａ１７１へ出力する（ステップＳ４４７）。起動部Ａ１７１はＶＭＩＤに対応するＶＭ２１を起動する（ステップＳ４４８）。
【０１３３】
判断部Ａ１７９は管理ファイルＡ１５１内にメモリＩＤに対応するＶＭＩＤが記憶されていないと判断した場合（ステップＳ４４５でＮＯ）、ＵＳＢメモリ３に対応するＶＭ２が物理マシンＡ１には存在しないと判断する（ステップＳ４４９）。デバイスドライバＡ１７６はＵＳＢメモリ３へ仮想化データの出力要求を出力する（ステップＳ４４１０）。ＵＳＢメモリ３の内部メモリ３２のＶＭＩＤに対応する仮想化データがデバイスドライバＡ１７６へ出力される。デバイスドライバＡ１７６は仮想化データを取得する（ステップＳ４４１１）。
【０１３４】
デバイスドライバＡ１７６は取得した仮想化データ及びＶＭＩＤを起動部Ａ１７１へ出力する（ステップＳ４４１２）。起動部Ａ１７１はＵＳＢメモリ３に記憶された仮想化データに基づき、ＶＭ２を起動する（ステップＳ４４１３）。ステップＳ４４８及びステップＳ４４１３の処理後、ＶＭ管理部Ａ１７７はＶＭ２１の起動を検出し、状態ファイルＡ１５３にＶＭＩＤ及び状態「運転」を記憶する（ステップＳ４４１４）。判断部Ａ１７９は管理ファイルＡ１５１に、起動したＶＭ２１のＶＭＩＤ、状態「運転」及びＵＳＢメモリ３の装着状態「装着」を記憶する（ステップＳ４４１５）。これにより、ＵＳＢメモリ３内の記憶領域を有効活用することが可能となる。他の物理マシン１にアクセスできない、または、仮想化データが破壊された場合等でも、ＵＳＢメモリ３に記憶された仮想化データに基づきＶＭ２を実行することが可能となる。
【０１３５】
本実施の形態７は以上の如きであり、その他は実施の形態１乃至６と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。
【０１３６】
実施の形態８
実施の形態８はＵＳＢメモリ３以外の装置をも適用する形態に関する。図４５は実施の形態８に係る仮想マシン制御システムの概要を示す説明図である。装置３はＵＳＢメモリ３の他、モニタ等の表示装置とキーボード及びマウス等の入出力装置とが一体化された表示入力装置３３であっても良い。その他、モニタ３４１またはキーボード３４２であっても良い。なお、モニタ３４１及びキーボード３４２は両者が物理マシン１に装着されたことを条件に、一の装置が装着されたものとして処理を行っても良い。
【０１３７】
図４６及び図４７は複数の装置３の初期登録処理の手順を示すフローチャートである。デバイスドライバＡ１７６はＵＳＢポートＡ１７に複数の装置３が装着されたか否かを判断する（ステップＳ４６１）。デバイスドライバＡ１７６は装着されていないと判断した場合（ステップＳ４６１でＮＯ）、以上の処理を繰り返す。デバイスドライバＡ１７６は複数の装置３が装着されたと判断した場合（ステップＳ４６１でＹＥＳ）、全ての装置３の内部メモリ３２予め記憶されたメモリＩＤを取得する（ステップＳ４６２）。なおモニタ３４１及びキーボード３４２には、モニタ３４１自身及びキーボード３４２自身を特定するための固有のメモリＩＤが内部のメモリ（図示せず）に記憶されている。
【０１３８】
デバイスドライバＡ１７６は取得した複数のメモリＩＤ及び装着を検出したことを示す装着情報を判断部Ａ１７９へ出力する（ステップＳ４６３）。判断部Ａ１７９は管理ファイルＡ１５１内にメモリＩＤに対応するＶＭＩＤが記憶されているか否かを判断する（ステップＳ４６４）。判断部Ａ１７９は管理ファイルＡ１５１内にメモリＩＤに対応するＶＭＩＤが既に記憶されていると判断した場合（ステップＳ４６４でＮＯ）、初期登録処理を終えるべく、処理を終了する。一方、判断部Ａ１７９は管理ファイルＡ１５１内にメモリＩＤに対応するＶＭＩＤが記憶されていないと判断した場合（ステップＳ４６４でＹＥＳ）、ＨＤＡ１５から初期登録画面１４１を読み出す（ステップＳ４６５）。
【０１３９】
判断部Ａ１７９は読み出した初期登録画面１４１を表示部Ａ１４へ出力する（ステップＳ４６６）。判断部Ａ１７９はキーボード３４２等の装置３を介して、ＶＭＩＤを受け付けたか否かを判断する（ステップＳ４６７）。判断部Ａ１７９はＶＭＩＤを受け付けていないと判断した場合（ステップＳ４６７でＮＯ）、ステップＳ４６７の処理を繰り返す。判断部Ａ１７９はＶＭＩＤを受け付けたと判断した場合（ステップＳ４６７でＹＥＳ）、管理ファイルＡ１５１に物理マシンＩＤ、ＶＭＩＤ及び複数のメモリＩＤを対応づけて記憶する（ステップＳ４６８）。
【０１４０】
図４８は管理ファイルＡ１５１のレコードレイアウトを示す説明図である。モニタ３４１のメモリＩＤを「Ｍ３４１」、キーボード３４２のメモリＩＤを「Ｍ３４２」としている。ＶＭ２２のＶＭＩＤ「ＶＭ０２」に対応づけて、複数の装置３であるモニタ３４１及びキーボード３４２が一体となって対応づけられている。
【０１４１】
同期部Ａ１７４はＩＰアドレスファイルＡ１５４から他の物理マシン１のＩＰアドレスを読み出す（ステップＳ４６９）。同期部Ａ１７４は管理ファイルＡ１５１のステップＳ４６８による変更後のデータを読み出す（ステップＳ４７１）。同期部Ａ１７４は、ＩＰアドレスを参照し、変更後のデータを、ＮＩＣＡ１６を介して、他の物理マシン１へ出力する（ステップＳ４７２）。起動部Ａ１７１は相互に対応づけられた複数の装置３の双方が装着された場合、またはいずれか一方の装置３が装着された場合に、ＶＭ２の起動処理を開始すればよい。一方、中断部Ａ１７２は相互に対応づけられた複数の装置３のいずれか一方の取り外しを検出した場合、または、双方の装置３の取り外しを検出した場合に、対応するＶＭ２を停止すればよい。これにより、様々なホットプラグ対応装置３に対して本実施形態で述べた処理を実現することが可能となる。
【０１４２】
本実施の形態８は以上の如きであり、その他は実施の形態１乃至７と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。
【０１４３】
実施の形態９
図４９は実施の形態９に係る物理マシン１及びＶＭ２のハードウェア及びソフトウェアを示すブロック図である。実施の形態１乃至８に係る物理マシン１を動作させるためのプログラムは、本実施の形態９のように、読み取り部（図示せず）にＣＤ−ＲＯＭ等の可搬型記録媒体１Ａを読み取らせてＨＤＡ１５に記憶しても良い。また、当該プログラムは、インターネット等の通信網を介して接続される他のサーバコンピュータ（図示せず）からダウンロードすることも可能である。以下に、その内容を説明する。
【０１４４】
図４９に示す物理マシン１は、ＶＭ２が物理マシン１に存在するか否かを判断等させるプログラムを、可搬型記録媒体１Ａによりまたは通信網を介して他のサーバコンピュータ（図示せず）からダウンロードする。当該プログラムは、制御モジュールＡ１７０としてインストールされ、ＲＡＭＡ１２にロードして実行される。これにより、上述した物理マシン１として機能する。
【０１４５】
本実施の形態９は以上の如きであり、その他は実施の形態１乃至８と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。
【０１４６】
以上の実施の形態１乃至９を含む実施形態に関し、さらに以下の付記を開示する。
【０１４７】
（付記１）
仮想マシンを制御するコンピュータに用いられるプログラムであって、
コンピュータを、
ホットプラグ対応の装置がコンピュータに装着された場合に、仮想マシンと前記装置の識別情報とを対応づけた記憶部を参照し、前記装着された装置の識別情報に対応する仮想マシンが前記コンピュータ内に存在するか否かを判断する判断部と、
該判断部により存在しないと判断した場合に、前記装着された装置の識別情報に対応する仮想マシンを前記コンピュータで実行するために必要な前記仮想マシンに係る仮想化データの取得要求を外部へ出力する出力部と
して機能させるプログラム。
【０１４８】
（付記２）
前記コンピュータが前記装置の取り外しに関する情報を検出した場合に、前記仮想マシンを中断する中断部
をさらに機能させる付記１に記載のプログラム。
【０１４９】
（付記３）
前記判断部により存在すると判断した場合に、前記中断部により中断した前記装置の識別情報に対応する仮想マシンを起動する起動部
をさらに機能させる付記２に記載のプログラム。
【０１５０】
（付記４）
外部から出力された仮想マシンに係る仮想化データを受け付ける受け付け部と、
受け付けた仮想化データに基づき、前記コンピュータ内に前記仮想マシンを生成する生成部と
をさらに機能させる付記１乃至３のいずれか一つに記載のプログラム。
【０１５１】
（付記５）
前記出力部は、
仮想マシンに係る仮想化データの取得要求を受信した場合、前記仮想化データを外部へ出力し、
仮想化データを外部へ出力した後に、前記コンピュータ内の仮想マシンに係る仮想化データを消去する消去部
をさらに機能させる付記４に記載のプログラム。
【０１５２】
（付記６）
前記起動部は、
仮想マシンに係る仮想化データの取得要求を受信した場合、前記中断部により中断した仮想マシンを起動し、
他のコンピュータと起動した前記仮想マシンとを接続する接続部と、
一定条件下で他のコンピュータと起動した前記仮想マシンとの接続を解除する解除部と
を機能させ、
前記出力部は、
前記接続部による接続後、他のコンピュータへ前記仮想マシンに係る仮想化データの出力を開始し、前記解除部による解除後、前記他のコンピュータへ前記仮想マシンに係る仮想化データを出力し、
前記仮想マシンに係る仮想化データを他のコンピュータへ出力した後に、前記仮想マシンに係る仮想化データを消去する消去部
をさらに機能させる付記３に記載のプログラム。
【０１５３】
（付記７）
外部から出力された仮想マシンに係る仮想化データを受け付ける受け付け部と、
受け付けた仮想化データに基づき、仮想マシンを生成する生成部と
をさらに機能させる付記６に記載のプログラム。
【０１５４】
（付記８）
前記記憶部は、
仮想マシンを特定するための特定情報と装置の識別情報とを記憶する
付記１に記載のプログラム。
【０１５５】
（付記９）
前記記憶部は、
仮想マシンを特定するための特定情報、装置の識別情報及び前記仮想マシンを制御するコンピュータを特定するためのコンピュータ情報を対応づけて記憶しており、
前記記憶部の記憶内容をコンピュータ間で同期する同期部
をさらに機能させる付記１に記載のプログラム。
【０１５６】
（付記１０）
前記出力部は、
前記判断部により存在しないと判断した場合に、前記装置の識別情報に対応する仮想マシンを実行するために必要な前記仮想マシンに係る仮想化データの取得要求を、前記記憶部に記憶した前記識別情報に対応するコンピュータ情報を参照して出力する
付記９に記載のプログラム。
【０１５７】
（付記１１）
前記中断部は、
装置がコンピュータから取り外されたことを示す情報を検出した場合、または、装置の取り外しを要求する情報を検出した場合に、仮想マシンを中断する
付記２に記載のプログラム。
【０１５８】
（付記１２）
前記中断部により仮想マシンを中断した後の一定時間経過後に、前記仮想マシンを停止する停止部
をさらに機能させる付記１１に記載のプログラム。
【０１５９】
（付記１３）
仮想マシンを制御するコンピュータであって、
ホットプラグ対応の装置が装着された場合に、仮想マシンと前記装置の識別情報とを対応づけた記憶部を参照し、前記装着された装置の識別情報に対応する仮想マシンが内部に存在するか否かを判断する判断部と、
該判断部により存在しないと判断した場合に、前記装着された装置の識別情報に対応する仮想マシンを実行するために必要な前記仮想マシンに係る仮想化データの取得要求を他のコンピュータへ出力する出力部と
を備えるコンピュータ。
【０１６０】
（付記１４）
コンピュータにより仮想マシンを制御する仮想マシン制御方法であって、
ホットプラグ対応の装置がコンピュータに装着された場合に、仮想マシンと前記装置の識別情報とを対応づけた記憶部を参照し、前記装着された装置の識別情報に対応する仮想マシンが前記コンピュータ内に存在するか否かを判断する判断ステップと、
該判断ステップにより存在しないと判断した場合に、前記装着された装置の識別情報に対応する仮想マシンを前記コンピュータで実行するために必要な前記仮想マシンに係る仮想化データの取得要求を他のコンピュータへ出力する出力ステップと
含む仮想マシン制御方法。
【０１６１】
（付記１５）
相互に接続された複数のコンピュータにより仮想マシンを制御する仮想マシン制御システムであって、
一のコンピュータは、
ホットプラグ対応の装置が一のコンピュータに装着された場合に、仮想マシンと前記装置の識別情報とを対応づけた記憶部を参照し、前記装着された装置の識別情報に対応する仮想マシンが前記一のコンピュータ内に存在するか否かを判断する判断部と、
該判断部により存在しないと判断した場合に、前記装着された装置の識別情報に対応する仮想マシンを前記一のコンピュータで実行するために必要な前記仮想マシンに係る仮想化データの取得要求を他のコンピュータへ出力する出力部と
を備える仮想マシン制御システム。
【０１６２】
（付記１６）
前記一のコンピュータは、
前記装置の取り外しに関する情報を検出した場合に、前記仮想マシンを中断する中断部
を備える付記１５に記載の仮想マシン制御システム。
【０１６３】
（付記１７）
前記一のコンピュータは、
前記判断部により存在すると判断した場合に、前記中断部により中断した前記装置の識別情報に対応する仮想マシンを起動する起動部
を備える付記１６に記載の仮想マシン制御システム。
【０１６４】
（付記１８）
前記一のコンピュータは、
他のコンピュータから出力された仮想マシンに係る仮想化データを受け付ける受け付け部と、
受け付けた仮想化データに基づき、一のコンピュータ内に前記仮想マシンを生成する生成部と
を備える付記１５乃至１７のいずれか一つに記載の仮想マシン制御システム。
【０１６５】
（付記１９）
前記他のコンピュータは、
仮想マシンに係る仮想化データの取得要求を受信した場合、前記仮想化データを一のコンピュータへ出力する仮想化データ出力部と、
仮想化データを前記一のコンピュータへ出力した後に、他のコンピュータ内の仮想マシンに係る仮想化データを消去する消去部と
を備える付記１８に記載の仮想マシン制御システム。
【０１６６】
（付記２０）
前記他のコンピュータは、
前記装置の取り外しに関する情報を検出した場合に、前記仮想マシンを中断する中断部と、
仮想マシンに係る仮想化データの取得要求を受信した場合、前記中断部により中断した仮想マシンを起動する起動部と、
一のコンピュータと起動した前記仮想マシンとを接続する接続部と、
一定条件下で一のコンピュータと起動した前記仮想マシンとの接続を解除する解除部と、
前記接続部による接続後、前記一のコンピュータへ前記仮想マシンに係る仮想化データの出力を開始し、前記解除部による解除後、前記一のコンピュータへ前記仮想マシンに係る仮想化データを出力する仮想化データ出力部と、
前記仮想マシンに係る仮想化データを一のコンピュータへ出力した後に、前記仮想マシンに係る仮想化データを消去する消去部と
を備える付記１５に記載の仮想マシン制御システム。
【０１６７】
（付記２１）
前記一のコンピュータは、
前記他のコンピュータから出力された仮想マシンに係る仮想化データを受け付ける受け付け部と、
受け付けた仮想化データに基づき、前記一のコンピュータ内に前記仮想マシンを生成する生成部と
を備える付記２０に記載の仮想マシン制御システム。
【符号の説明】
【０１６８】
１、Ａ１、Ｂ１、Ｃ１      物理マシン
１Ａ    可搬型記録媒体
２、２１、２２、２３、２４      ＶＭ
３      ＵＳＢメモリ
３３      表示入力装置
４        ＤＢサーバ
３２      内部メモリ
１４１    初期登録画面
１４２    入力ボックス
１４３    ＯＫボタン
１５１    管理ファイル
１５２    仮想化データファイル
２１１    ＯＳ
２１２    アプリケーション
２１３    フロントエンドドライバ
３４１    モニタ
３４２    キーボード
Ａ１０、Ｂ１０  ハードウェアリソース
Ａ１１、Ｂ１１  ＣＰＵ
Ａ１２、Ｂ１２  ＲＡＭ
Ａ１３、Ｂ１３  入力部
Ａ１４、Ｂ１４  表示部
Ａ１５、Ｂ１５  ＨＤ
Ａ１６、Ｂ１６  ＮＩＣ
Ａ１７Ａ、Ｂ１７Ｂ  仮想化レイヤ
Ａ１８、Ｂ１８  時計部
Ａ１９、Ｂ１９  電源制御部
Ａ１５１、Ｂ１５１  管理ファイル
Ａ１５３、Ｂ１５３  状態ファイル
Ａ１５４、Ｂ１５４  ＩＰアドレスファイル
Ａ１７０、Ｂ１７０  制御モジュール
Ａ１７１、Ｂ１７１  起動部
Ａ１７２、Ｂ１７２  中断部
Ａ１７３、Ｂ１７３  停止部
Ａ１７４、Ｂ１７４  同期部
Ａ１７５、Ｂ１７５  出力部
Ａ１７６、Ｂ１７６  デバイスドライバ
Ａ１７７、Ｂ１７７  ＶＭ管理部
Ａ１７８、Ｂ１７８  消去部
Ａ１７９、Ｂ１７９  判断部
Ａ１７１１、Ｂ１７１１  受け付け部
Ａ１７１２、Ｂ１７１２  バックンエンドドライバ
Ｎ      通信網
【図１】
2010250620.tif 000003
【図２】
2010250620.tif 000004
【図３】
2010250620.tif 000005
【図４】
2010250620.tif 000006
【図５】
2010250620.tif 000007
【図６】
2010250620.tif 000008
【図７】
2010250620.tif 000009
【図８】
2010250620.tif 000010
【図９】
2010250620.tif 000011
【図１０】
2010250620.tif 000012
【図１１】
2010250620.tif 000013
【図１２】
2010250620.tif 000014
【図１３】
2010250620.tif 000015
【図１４】
2010250620.tif 000016
【図１５】
2010250620.tif 000017
【図１６】
2010250620.tif 000018
【図１７】
2010250620.tif 000019
【図１８】
2010250620.tif 000020
【図１９】
2010250620.tif 000021
【図２０】
2010250620.tif 000022
【図２１】
2010250620.tif 000023
【図２２】
2010250620.tif 000024
【図２３】
2010250620.tif 000025
【図２４】
2010250620.tif 000026
【図２５】
2010250620.tif 000027
【図２６】
2010250620.tif 000028
【図２７】
2010250620.tif 000029
【図２８】
2010250620.tif 000030
【図２９】
2010250620.tif 000031
【図３０】
2010250620.tif 000032
【図３１】
2010250620.tif 000033
【図３２】
2010250620.tif 000034
【図３３】
2010250620.tif 000035
【図３４】
2010250620.tif 000036
【図３５】
2010250620.tif 000037
【図３６】
2010250620.tif 000038
【図３７】
2010250620.tif 000039
【図３８】
2010250620.tif 000040
【図３９】
2010250620.tif 000041
【図４０】
2010250620.tif 000042
【図４１】
2010250620.tif 000043
【図４２】
2010250620.tif 000044
【図４３】
2010250620.tif 000045
【図４４】
2010250620.tif 000046
【図４５】
2010250620.tif 000047
【図４６】
2010250620.tif 000048
【図４７】
2010250620.tif 000049
【図４８】
2010250620.tif 000050
【図４９】
2010250620.tif 000051