(57)【要約】【課題】仮想マシンを移行させる場合に、仮想マシンの停止時間を極力短くする。【解決手段】仮想マシンを移行させる際に、仮想マシンサーバ１００のハイパーバイザ１６０は、仮想マシンのＣＰＵのレジスタとキャッシュメモリの情報を移行先である仮想マシンサーバ２００に送信する。仮想マシンサーバ２００のハイパーバイザ２６０は、仮想マシンサーバ１００からＣＰＵのレジスタとキャッシュメモリの情報とを受信すると、それらの情報を仮想マシンに設定して仮想マシンを起動させる。【選択図】図１
2010134710.tif 000002
【特許請求の範囲】
【請求項１】
第１のサーバで稼働している仮想マシンを、該第１のサーバと通信ネットワークを介して接続されている第２のサーバに移行させる仮想マシンの移行方法であって、
前記第１のサーバで稼働している仮想マシンの仮想ハードウェア構成情報とＣＰＵ （Central Processing Unit；中央処理装置）内に記憶された記憶情報とを、前記第２のサーバに送信する送信ステップと、
前記第１のサーバで稼働している仮想マシンの稼働を停止させる停止ステップと、
前記第２のサーバにおいて、前記第１のサーバから送信されたハードウェア構成情報と記憶情報とに基づいて、仮想マシンを構成、起動させる起動ステップと、
を備えることを特徴とする、仮想マシンの移行方法。
【請求項２】
前記第１のサーバにおいて、前記停止ステップによる仮想マシンの稼働の停止後に、前記送信ステップによる送信中に更新された前記記憶情報の差分情報を、前記第２のサーバに送信するステップをさらに備え、
前記起動ステップは、前記第１のサーバから送信されたハードウェア構成情報と記憶情報と該記憶情報の差分情報とに基づいて、仮想マシンを構成、起動させる
ことを特徴とする、請求項１に記載の仮想マシンの移行方法。
【請求項３】
前記第２のサーバにおいて、前記起動ステップで起動された仮想マシン上でメモリ情報が必要となる処理が実施された際に、当該処理を中断するステップと、
前記第２のサーバにおいて、前記メモリ情報の取得要求を前記第１のサーバに送信するステップと、
前記第１のサーバにおいて、前記メモリ情報の取得要求が要求するメモリ情報を取得するステップと、
前記第１のサーバにおいて、前記取得したメモリ情報を前記第２のサーバに送信するステップと、
前記第２のサーバにおいて、前記第１のサーバから送信されたメモリ情報を記憶するステップと、
前記第２のサーバにおいて、前記保存したメモリ情報を用いて中断した処理を再開して実施するステップと、
を備えることを特徴とする、請求項１又は２に記載の仮想マシンの移行方法。
【請求項４】
前記第１のサーバにおいて、前記第１のサーバのパフォーマンスを示すデータを取得するステップと、
前記取得したパフォーマンスを示すデータに基づいて、前記起動ステップにより前記第２のサーバ上で起動された仮想マシンのメモリ情報を、前記第２のサーバに送信するか否かを判別する判別ステップと、
前記判別ステップでメモリ情報を前記第２のサーバに送信すると判別した場合に、該メモリ情報を前記第２のサーバに送信するステップと、
を備えることを特徴とする、請求項１乃至３の何れか１項に記載の仮想マシンの移行方法。
【請求項５】
前記第１のサーバにおいて、前記判別ステップでメモリ情報を前記第２のサーバに送信しないと判別した場合に、前記パフォーマンスを示すデータに基づいて該メモリ情報を二次記憶装置に移動させるか否かを判別する第２の判別ステップと、
前記第２の判別ステップでメモリ情報を二次記憶装置に移動させると判別した場合に、該メモリ情報を該二次記憶装置に移動させるステップと、
をさらに備えることを特徴とする、請求項４に記載の仮想マシンの移行方法。
【請求項６】
仮想マシンが稼働しているサーバであって、
前記稼働している仮想マシンを移行先となる他のサーバへ移行させる際に、該仮想マシンの仮想ハードウェア構成情報とＣＰＵ （Central Processing Unit；中央処理装置）内に記憶された記憶情報とを前記移行先となるサーバに送信する送信手段と、
前記稼働している仮想マシンの稼働を停止させる仮想マシン停止手段と、
前記送信手段による送信の処理が完了後、当該サーバのパフォーマンスを示すデータを取得するパフォーマンスデータ取得手段と、
前記パフォーマンスデータ取得手段で取得したパフォーマンスを示すデータに基づいて、前記仮想マシンのメモリ情報を前記移行先となるサーバに送信するか否かを判別する判別手段と、
メモリ情報を前記移行先となるサーバに送信すると判別した場合に、該メモリ情報を該移行先となるサーバに送信するメモリ情報送信手段と、
を備えることを特徴とするサーバ。
【請求項７】
仮想マシンが稼働しているサーバであって、
前記稼働している仮想マシン上でメモリ情報が必要となる処理が実施された際に、当該処理を中断する仮想マシン中断手段と、
前記メモリ情報の取得要求を前記仮想マシンの移行元であるサーバに送信するメモリ取得要求送信手段と、
前記仮想マシンの移行元であるサーバから送信されたメモリ情報を記憶するメモリ情報記憶手段と、
前記メモリ情報記憶手段で記憶したメモリ情報を用いて中断した処理を再開して実施する処理再開実施手段と、
を備えることを特徴とするサーバ。
【請求項８】
仮想マシンが稼働しているコンピュータを、
前記稼働している仮想マシンを移行先となるサーバへ移行させる際に、該仮想マシンの仮想ハードウェア構成情報とＣＰＵ （Central Processing Unit；中央処理装置）内に記憶された記憶情報とを前記移行先となるサーバに送信する送信手段、
前記稼働している仮想マシンの稼働を停止させる仮想マシン停止手段、
前記送信手段による送信の処理が完了後、当該サーバのパフォーマンスを示すデータを取得するパフォーマンスデータ取得手段、
前記パフォーマンスデータ取得手段で取得したパフォーマンスを示すデータに基づいて、前記仮想マシンのメモリ情報を前記移行先となるサーバに送信するか否かを判別する判別手段、
前記判別手段でメモリ情報を前記移行先となるサーバに送信すると判別した場合に、該メモリ情報を該移行先となるサーバに送信するメモリ情報送信手段、
として機能させるプログラム。
【請求項９】
仮想マシンが稼働しているコンピュータを、
前記稼働している仮想マシン上でメモリ情報が必要となる処理が実施された際に、当該処理を中断する仮想マシン中断手段、
前記メモリ情報の取得要求を前記仮想マシンの移行元であるサーバに送信するメモリ取得要求送信手段、
前記仮想マシンの移行元であるサーバから送信された前記メモリ情報を記憶するメモリ情報記憶手段、
前記メモリ情報記憶手段で記憶したメモリ情報を用いて中断した処理を再開して実施する処理再開実施手段、
として機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、サーバ上で起動している仮想マシンを他のサーバに移行させる、仮想マシンの移行方法、サーバ、及び、プログラムに関する。
【背景技術】
【０００２】
仮想マシンを実行する仮想マシンサーバに負荷が集中してパフォーマンスが低下した場合などに当該仮想マシンを他の仮想マシンサーバに移行（マイグレーション）することにより、継続的な仮想マシンの運用を可能にした技術がある（例えば、特許文献１）。
【０００３】
上述の技術では、まず、移行元で動作している仮想マシンの構成情報をネットワーク等を介して移行先に転送し、その後、移行元の仮想マシンを停止し、仮想マシンのメモリイメージを移行先に転送した後、移行先の仮想マシンサーバで仮想マシンを起動する。
【０００４】
【特許文献１】特開２００８−３３４８３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
仮想マシンのメモリイメージは、サイズが比較的大きいため、転送に時間がかかる。そのため、仮想マシンのメモリイメージの転送が完了した後に転送先で仮想マシンを起動するのでは、仮想マシンの停止時間が長くなってしまい、上述の技術では、緊急時などに、継続的に仮想マシンを稼動させることが困難になる。
【０００６】
本発明は、上記実情に鑑みてなされたものであり、仮想マシンをサーバ間で移行させる場合に、仮想マシンの停止時間を極力短くすることができる、仮想マシンの移行方法、サーバ、及び、プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するために、本発明の第１の観点に係る仮想マシンの移行方法は、
第１のサーバで稼働している仮想マシンを、該第１のサーバと通信ネットワークを介して接続されている第２のサーバに移行させる仮想マシンの移行方法であって、
前記第１のサーバで稼働している仮想マシンの仮想ハードウェア構成情報とＣＰＵ （Central Processing Unit；中央処理装置）内に記憶された記憶情報とを、前記第２のサーバに送信する送信ステップと、
前記第１のサーバで稼働している仮想マシンの稼働を停止させる停止ステップと、
前記第２のサーバにおいて、前記第１のサーバから送信されたハードウェア構成情報と記憶情報とに基づいて、仮想マシンを構成、起動させる起動ステップと、
を備えることを特徴とする。
【０００８】
前記第１のサーバにおいて、前記停止ステップによる仮想マシンの稼働の停止後に、前記送信ステップによる送信中に更新された前記記憶情報の差分情報を、前記第２のサーバに送信するステップをさらに備え、
前記起動ステップは、前記第１のサーバから送信されたハードウェア構成情報と記憶情報と該記憶情報の差分情報とに基づいて、仮想マシンを構成、起動させてもよい。
【０００９】
前記第２のサーバにおいて、前記起動ステップで起動された仮想マシン上でメモリ情報が必要となる処理が実施された際に、当該処理を中断するステップと、
前記第２のサーバにおいて、前記メモリ情報の取得要求を前記第１のサーバに送信するステップと、
前記第１のサーバにおいて、前記メモリ情報の取得要求が要求するメモリ情報を取得するステップと、
前記第１のサーバにおいて、前記取得したメモリ情報を前記第２のサーバに送信するステップと、
前記第２のサーバにおいて、前記第１のサーバから送信されたメモリ情報を記憶するステップと、
前記第２のサーバにおいて、前記保存したメモリ情報を用いて中断した処理を再開して実施するステップとを備えてもよい。
【００１０】
前記第１のサーバにおいて、前記第１のサーバのパフォーマンスを示すデータを取得するステップと、
前記取得したパフォーマンスを示すデータに基づいて、前記起動ステップにより前記第２のサーバ上で起動された仮想マシンのメモリ情報を、前記第２のサーバに送信するか否かを判別する判別ステップと、
前記判別ステップでメモリ情報を前記第２のサーバに送信すると判別した場合に、該メモリ情報を前記第２のサーバに送信するステップとを備えてもよい。
【００１１】
前記第１のサーバにおいて、前記判別ステップでメモリ情報を前記第２のサーバに送信しないと判別した場合に、前記パフォーマンスを示すデータに基づいて該メモリ情報を二次記憶装置に移動させるか否かを判別する第２の判別ステップと、
前記第２の判別ステップでメモリ情報を二次記憶装置に移動させると判別した場合に、該メモリ情報を該二次記憶装置に移動させるステップとをさらに備えてもよい。
【００１２】
上記目的を達成するために、本発明の第２の観点に係るサーバは、
仮想マシンが稼働しているサーバであって、
前記稼働している仮想マシンを移行先となる他のサーバへ移行させる際に、該仮想マシンの仮想ハードウェア構成情報とＣＰＵ （Central Processing Unit；中央処理装置）内に記憶された記憶情報とを前記移行先となるサーバに送信する送信手段と、
前記稼働している仮想マシンの稼働を停止させる仮想マシン停止手段と、
前記送信手段による送信の処理が完了後、当該サーバのパフォーマンスを示すデータを取得するパフォーマンスデータ取得手段と、
前記パフォーマンスデータ取得手段で取得したパフォーマンスを示すデータに基づいて、前記仮想マシンのメモリ情報を前記移行先となるサーバに送信するか否かを判別する判別手段と、
メモリ情報を前記移行先となるサーバに送信すると判別した場合に、該メモリ情報を該移行先となるサーバに送信するメモリ情報送信手段と、
を備えることを特徴とする。
【００１３】
上記目的を達成するために、本発明の第３の観点に係るサーバは、
仮想マシンが稼働しているサーバであって、
前記稼働している仮想マシン上でメモリ情報が必要となる処理が実施された際に、当該処理を中断する仮想マシン中断手段と、
前記メモリ情報の取得要求を前記仮想マシンの移行元であるサーバに送信するメモリ取得要求送信手段と、
前記仮想マシンの移行元であるサーバから送信されたメモリ情報を記憶するメモリ情報記憶手段と、
前記メモリ情報記憶手段で記憶したメモリ情報を用いて中断した処理を再開して実施する処理再開実施手段と、
を備えることを特徴とする。
【００１４】
上記目的を達成するために、本発明の第４の観点に係るプログラムは、
仮想マシンが稼働しているコンピュータを、
前記稼働している仮想マシンを移行先となるサーバへ移行させる際に、該仮想マシンの仮想ハードウェア構成情報とＣＰＵ （Central Processing Unit；中央処理装置）内に記憶された記憶情報とを前記移行先となるサーバに送信する送信手段、
前記稼働している仮想マシンの稼働を停止させる仮想マシン停止手段、
前記送信手段による送信の処理が完了後、当該サーバのパフォーマンスを示すデータを取得するパフォーマンスデータ取得手段、
前記パフォーマンスデータ取得手段で取得したパフォーマンスを示すデータに基づいて、前記仮想マシンのメモリ情報を前記移行先となるサーバに送信するか否かを判別する判別手段、
前記判別手段でメモリ情報を前記移行先となるサーバに送信すると判別した場合に、該メモリ情報を該移行先となるサーバに送信するメモリ情報送信手段、
として機能させることを特徴とする。
【００１５】
上記目的を達成するために、本発明の第５の観点に係るプログラムは、
仮想マシンが稼働しているコンピュータを、
前記稼働している仮想マシン上でメモリ情報が必要となる処理が実施された際に、当該処理を中断する仮想マシン中断手段、
前記メモリ情報の取得要求を前記仮想マシンの移行元であるサーバに送信するメモリ取得要求送信手段、
前記仮想マシンの移行元であるサーバから送信された前記メモリ情報を記憶するメモリ情報記憶手段、
前記メモリ情報記憶手段で記憶したメモリ情報を用いて中断した処理を再開して実施する処理再開実施手段、
として機能させることを特徴とする。
【発明の効果】
【００１６】
本発明によれば、ＣＰＵ内に記憶された記憶情報が移動された時点で、移行先のサーバ上で仮想マシンは起動する。そのため、仮想マシンを仮想マシンサーバ間で移行させる場合に、停止時間を極力短くすることができる。
【発明を実施するための最良の形態】
【００１７】
以下、本発明の実施形態に係る仮想マシンシステムについて、図面を参照して説明する。
本発明の実施形態に係る仮想マシンシステムは、図１に示すように、ＬＡＮ等のネットワークを介して相互に接続された、仮想マシンサーバ１００と仮想マシンサーバ２００とを備えて構成される。仮想マシンシステムは、仮想マシンサーバ１００で稼働している仮想マシンを、仮想マシンサーバ２００に移行して稼働させることを特徴とする。
【００１８】
移行元となる仮想マシンサーバ１００は、仮想マシンを動作させるためのサーバである。仮想マシンサーバ１００は、物理ハードウェア的には、ＣＰＵ（Central Processing Unit）１１０と主記憶装置１２０と二次記憶装置１３０と通信装置１４０とを備えて構成される。
【００１９】
ＣＰＵ１１０は、四則演算や論理演算などの算術的な処理を行なうＡＬＵ（Arithmetic and Logic Unit）、レジスタ、および、キャッシュメモリ等を備え、主記憶装置１２０や二次記憶装置１３０に予め記憶された各種プログラム等を読み出して実行することにより、仮想マシンサーバ１００全体の動作を制御したり、複数の仮想マシンを論理的に実現する。
【００２０】
主記憶装置１２０は、ＲＡＭ（Random Access Memory）等から構成され、ＣＰＵ１１０が動作するためのプログラムを格納したり、ＣＰＵ１１０が動作するためのワークエリアとなる
【００２１】
二次記憶装置１３０は、ハードディスク装置等から構成され、ＣＰＵ１１０が動作するためのプログラムや、主記憶装置１２０の退避領域となるスワップファイルなどが格納される。また、二次記憶装置１３０は、コピー済ページリスト１３１と、ページ変換テーブル１３２とを記憶する。
【００２２】
コピー済ページリスト１３１は、図３に示すように、仮想マシンの仮想ハードウェア（主記憶装置）上の物理アドレスに対応するページ番号（以下、ＰＮ−ＶＭＰＭＡとする）のリストを記憶する。コピー済ページリスト１３１に記憶されているページ番号が示すページに記憶されている情報（メモリページ）は、移行先の仮想マシンサーバ２００への移行が完了していることを示している。
【００２３】
ページ変換テーブル１３２は、物理ハードウェアと仮想ハードウェアとのページの対応関係を示したテーブルである。図４に示すように、ページ変換テーブル１３２は、仮想マシンの仮想ハードウェア（主記憶装置）上の物理アドレスに対応するページ番号（以下、ＰＮ−ＶＭＰＭＡとする）と、物理ハードウェア（例えば、主記憶装置１２０）上の物理アドレスに対応するページ番号（以下、ＰＮ−ＰＭＡとする）又は物理ディスク（例えば、二次記憶装置１３０）上のメモリページの記録開始位置（以下、ＳＡ−ＰＤＡとする）とを対応付けて記憶する。また、ページ変換テーブル１３２の各レコードには、スワップ退避フラグとコピー済フラグとが設けられている。スワップ退避フラグは、当該レコードに対応する情報が二次記憶装置１３０に記憶（退避）されているか否かを示すフラグである。コピー済フラグは、当該レコードに対応する情報の仮想マシンサーバ２００への移行が完了しているか否かを示すフラグである。
【００２４】
また、ソフトウェア的には、仮想マシンサーバ１００は、仮想マシンを制御するためのハイパーバイザ１６０を搭載している。仮想マシンを制御するためのハイパーバイザ１６０は、仮想マシンサーバ１００上で複数の仮想マシンを構築、制御する。
【００２５】
ハイパーバイザ１６０は、機能的には、図２（Ａ）に示すように、仮想マシン実行管理部１６１と、ハードウェア構成管理部１６２と、コマンド処理部１６３と、マイグレーション実行制御部１６４と、ＣＰＵ制御部１６５と、メモリ制御部１６６と、ファイル制御部１６７と、通信制御部１６８の各部を備える。
【００２６】
仮想マシン実行管理部１６１は、仮想マシンを用いて、演算処理等の各種処理を実行したり、仮想マシンの停止、起動、中断などを制御する。
【００２７】
ハードウェア構成管理部１６２は、仮想マシンサーバ１００、および、仮想マシンサーバ１００で動作している仮想マシンのハードウェア構成に関する情報（例えば、ＣＰＵのクロック数、主記憶装置のサイズ、二次記憶装置の容量、通信装置の種類やポート数、等）を記憶、管理している。また、ハードウェア構成管理部１６２は、仮想マシンにハードウェアリソースを割り当てたり、リソースの解放を行う。
【００２８】
コマンド処理部１６３は、ユーザからのコマンドを受信したり、コマンドの処理結果を返信する。
【００２９】
マイグレーション実行制御部１６４は、仮想マシンの移行（マイグレーション）に関する処理の全体を制御する。
【００３０】
ＣＰＵ制御部１６５は、仮想マシンの仮想ハードウェアのＣＰＵを制御する。また、ＣＰＵ制御部は、仮想マシンのＣＰＵのキャッシュメモリのスナップショットを取得したり、スナップショットに基づいてキャッシュメモリを設定する機能を有する。
【００３１】
メモリ制御部１６６は、コピー済ページリスト１３１とページ変換テーブル１３２内のレコードを参照、更新、作成したりすることにより、仮想マシンの主記憶装置（メモリ）内の情報を管理、制御する。
【００３２】
ファイル制御部１６７は、仮想マシンの二次記憶装置内の情報を管理、制御する。また、ファイル制御部１６７は、仮想マシンの主記憶装置に記憶されている情報を、仮想マシンの二次記憶装置に記憶（退避）させるスワップアウト処理を行う。また、ファイル制御部１６７は、仮想マシンの主記憶装置に記憶（退避）されている情報を、仮想マシンの二次記憶装置に戻すスワップイン処理を行う。
【００３３】
通信制御部１６８は、他の仮想マシンと通信するための機能を有する。
【００３４】
図１に戻り、通信装置１４０は、ＮＩＣ（Network Interface Card）等から構成され、移行先の仮想マシンサーバ２００等と通信するための装置である。
【００３５】
また、仮想マシンサーバ１００上には、複数の仮想マシンが構築されている。仮想マシンは、仮想マシンサーバ１００のリソースを使用して仮想的に実現されるコンピュータである。仮想マシンの仮想ハードウェア構成（ＣＰＵ、主記憶装置、二次記憶装置、通信装置）は、仮想マシンサーバ１００のハードウェアリソースが割り当てられることによって実現される。また、仮想サーバ上には、ＯＳ（Operation System）、および、アプリケーションが動作している。
【００３６】
仮想マシンサーバ２００は、仮想マシンサーバ１００と実質的に同一の構成を有する。仮想マシンサーバ２００のＣＰＵ２１０、主記憶装置２２０、二次記憶装置２３０、コピー済ページリスト２３１、ページ変換テーブル２３２、通信装置２４０、ＯＳ２５０、および、ハイパーバイザ２６０は、移行元の仮想マシンサーバ１００のＣＰＵ１１０、主記憶装置１２０、二次記憶装置１３０、コピー済ページリスト１３１、ページ変換テーブル１３２、通信装置１４０、ＯＳ１５０、および、ハイパーバイザ１６０と実質的に同一の機能を有するため、各部の説明は省略する。
【００３７】
仮想マシンサーバ２００のハイパーバイザ２６０の機能構成図を図２（Ｂ）に示す。ハイパーバイザ２６０は、機能的には、図２（Ｂ）に示すように、仮想マシン実行管理部２６１と、ハードウェア構成管理部２６２と、コマンド処理部２６３と、マイグレーション実行制御部２６４と、ＣＰＵ制御部２６５と、メモリ制御部２６６と、ファイル制御部２６７と、通信制御部２６８とを備え、こららの各部は、仮想マシンサーバ１００のハイパーバイザ１６０の仮想マシン実行管理部１６１と、ハードウェア構成管理部１６２と、コマンド処理部１６３と、マイグレーション実行制御部１６４と、ＣＰＵ制御部１６５と、メモリ制御部１６６と、ファイル制御部１６７と、通信制御部１６８の各部と実質的に同一の機能を有するため、これら各部の説明は省略する。
【００３８】
図１に戻り、仮想マシンサーバ２００上には、複数の仮想マシンが構築されている。こららの仮想マシンは、仮想マシンサーバ１００上に構築されている複数の仮想マシンと、実質的に同様な構成である。
【００３９】
続いて、仮想マシンシステムの動作について説明する。
最初に、仮想マシンサーバ１００から仮想マシンサーバ２００に仮想マシンを移行（マイグレーション）させる、マイグレーション処理について、図５、図６を参照して説明する。
【００４０】
例えば、仮想マシンサーバ１００において、ユーザからのマイグレーションの開始を要求するコマンドをハイパーバイザ１６０のコマンド処理部１６３が受信すると（ステップＳ１０１）、ハイパーバイザ１６０のマイグレーション実行制御部１６４は、通信制御部１６８を制御して、仮想マシンサーバ２００に対して、マイグレーションの開始要求を送信する（ステップＳ１０２）。なお、この開始要求には、ハードウェア構成管理部１６２から読み出した、仮想マシンの仮想ハードウェアの構成情報（ＣＰＵのクロック数、メモリサイズ、ハードディスク装置のサイズ、通信装置の種類やポート数等）が含まれているものとする。
【００４１】
移行先の仮想マシンサーバ２００のハイパーバイザ２６０の通信制御部２６８がマイグレーションの開始要求を受信すると（ステップＳ２０１）、マイグレーション実行制御部２６４は、該開始要求に含まれる移行対象の仮想マシンのハードウェア構成情報と、ハードウェア構成管理部２６２から読み出した物理ハードウェアの構成情報とを比較し、仮想マシンが仮想マシンサーバ２００に移行可能であるか否かを判別する（ステップＳ２０２）。
具体的には、マイグレーション実行制御部２６４は、移行対象となる仮想マシンのＣＰＵとＣＰＵ２１０の型番を比較して互換性があるか否かを判別したり、移行対象となる仮想マシンのハードウェア構成情報と仮想マシンサーバ２００のハードウェア構成の整合性を確認したり、移行対象となる仮想マシンが要求するリソース（ＣＰＵサイクル、メモリ、スワップファイル等）を仮想マシンサーバ２００で割り当て可能であるか否かを判断する等して、移行可能か否かの判別を行えばよい。
【００４２】
移行が不可能であると判別した場合（ステップＳ２０２；Ｎｏ）、マイグレーション実行制御部２６４は、通信制御部２６８を制御して、移行不可能を示す処理結果を、移行元の仮想マシンサーバ１００に送信する（ステップＳ２０４）。
【００４３】
移行が可能であると判別した場合（ステップＳ２０２；Ｙｅｓ）ハイパーバイザ２６０のハードウェア構成管理部２６２は、ステップＳ２０１で受信したマイグレーション開始要求に含まれる仮想マシンのハードウェア構成情報に基づいて、仮想マシンの仮想ハードウェアに対してリソースの割り当てを行う（ステップＳ２０３）。そして、割り当て処理が完了すると、マイグレーション実行制御部２６４は、通信制御部２６８を制御して、リソース割り当ての完了を示す処理結果通知を仮想マシンサーバ１００に送信する（ステップＳ２０４）。
【００４４】
移行元の仮想マシンサーバ１００のハイパーバイザ１６０の通信制御部１６８は、移行先の仮想マシンサーバ２００から処理結果通知を受信する（ステップＳ１０３）。そして、ハイパーバイザ１６０のマイグレーション実行制御部１６４は、受信した処理結果通知から、仮想マシンの移行が可能であるか否かを判別する（ステップＳ１０４）。
【００４５】
移行が不可能であると判別した場合（ステップＳ１０４；移行不可）、移行先へ仮想マシンを移行することは不可能となり、マイグレーション実行制御部１６４は、マイグレーション処理を終了する。
【００４６】
移行が可能であると判別した場合（ステップＳ１０４；移行可）、マイグレーション実行制御部１６４は、ＣＰＵ制御部１６５を用いて、移行対象の仮想マシンのＣＰＵのキャッシュメモリのスナップショットを取得する（ステップＳ１０５）。そして、マイグレーション実行制御部１６４は、通信制御部１６８を制御して、取得したスナップショットを仮想マシンサーバ２００に送信する（図６、ステップＳ１０６）。
【００４７】
移行先の仮想マシンサーバ２００のハイバーバイザ２６０の通信制御部２６８が、キャッシュメモリのスナップショットを受信すると（ステップＳ２０５）、マイグレーション実行制御部２６４は、受信したスナップショットに基づいて、仮想マシンのＣＰＵのキャッシュメモリを設定する（ステップＳ２０６）。そして、キャッシュメモリの設定が完了すると、マイグレーション実行制御部２６４は、通信制御部２６８を介して、キャッシュメモリの設定が完了したことを、移行元の仮想マシンサーバ１００に通知する（ステップＳ２０７）。
【００４８】
移行元の仮想マシンサーバ１００のハイパーバイザ１６０の通信制御部１６８がキャッシュメモリ設定の完了の通知を受信すると（ステップＳ１０７）、マイグレーション実行制御部１６４は、仮想マシン実行管理部１６１を制御して、移行対象の仮想マシンの動作を中断する（ステップＳ１０８）。
【００４９】
そして、マイグレーション実行制御部１６４は、ＣＰＵ制御部１６５を用いて、ステップＳ１０６のキャッシュメモリの送信中に更新された仮想マシンのＣＰＵのキャッシュメモリの差分情報とレジスタ情報とを取得し、移行先の仮想マシンサーバ２００に送信する（ステップＳ１０９）。
【００５０】
移行先の仮想マシンサーバ２００のハイパーバイザ２６０の通信制御部２６８が、キャッシュメモリの差分情報とレジスタ情報とを受信すると（ステップＳ２０８）、マイグレーション実行制御部２６４は、それらの情報に基づいて、仮想マシンのＣＰＵのキャッシュメモリとレジスタとを設定する（ステップＳ２０９）。この設定により、移行先の仮想マシンサーバ２００の仮想マシンのキャッシュメモリとレジスタの状態は、移行元の仮想マシンサーバ１００の仮想マシンのキャッシュメモリとレジスタの状態と実質的に同一になる。
【００５１】
続いて、マイグレーション実行制御部２６４は、仮想マシン実行管理部１６１を制御して、キャッシュメモリとレジスタを設定した仮想マシンを実行させる（ステップＳ２１０）。
【００５２】
そして、仮想マシンが実行されると、マイグレーション実行制御部２６４は、通信制御部２６８を介して、その旨を示す通知を仮想マシンサーバ１００に送信する（ステップＳ２１１）。仮想マシンサーバ１００のハイパーバイザ１６０の通信制御部１６８が、移行先の仮想マシンサーバ２００で仮想マシンが実行されたことを示す通知を受信して（ステップＳ１１０）、マイグレーション処理は終了する。
【００５３】
このように、移行元の仮想マシンサーバ１００で起動していた仮想マシンが移行先の仮想マシンサーバ２００上に移動されて起動される。なお、この段階では、移行先の仮想マシンサーバ２００で起動された仮想マシンの主記憶装置とスワップファイルの情報は移動されておらず、移行元の仮想マシンサーバ１００側にある状態である。
【００５４】
続いて、移行先の仮想マシンサーバ２００で起動している仮想マシンで演算処理などが実行され、主記憶装置に記憶されている情報（以下、メモリ情報とする）が必要となった場合の処理について、図７〜図９を参照して説明する。
【００５５】
移行先の仮想マシンサーバ２００で起動している仮想マシンで演算処理などが実行され、当該仮想マシンの主記憶装置上の情報（メモリ情報）にアクセスする必要が生じた場合、まず、ＣＰＵのＡＬＵは、当該メモリ情報に対してＲｅａｄ／Ｗｒｉｔｅ命令を発行する（ステップＳ３０１）。
【００５６】
続いて、仮想マシンサーバ２００のＯＳは、仮想マシンからＲｅａｄ／Ｗｒｉｔｅ命令が発行されると、所定のページテーブルなどを用いて、当該Ｒｅａｄ／Ｗｒｉｔｅ命令に設定されている仮想マシンの仮想メモリ上の読出アドレスを、仮想ハードウェア（主記憶装置）上の物理アドレスに変換する（ステップＳ３０２）。なお、説明を容易にするために、このステップＳ３０２の処理によって変換された仮想ハードウェア上の物理アドレスをＶＭＰＭＡ１として、以下説明する。
【００５７】
続いて、仮想マシンサーバ２００の仮想マシンのＣＰＵのＡＬＵは、アクセス対象のメモリ情報が、キャッシュメモリに記憶（キャッシュ）されているか否かを判別する（ステップＳ３０３）。
【００５８】
メモリ情報がキャッシュメモリに記憶されていると判別した場合（ステップＳ３０３；Ｙｅｓ）、ＣＰＵのＡＬＵは、そのキャッシュメモリに記憶されているメモリ情報を用いて所定の処理を実行し、処理は終了する。
【００５９】
メモリ情報がキャッシュメモリに記憶されていないと判別した場合（ステップＳ３０３；Ｎｏ）、
【００６０】
続いて、仮想マシンサーバ２００のハイパーバイザ２６０の仮想マシン実行管理部２６１は、Ｒｅａｄ／Ｗｒｉｔｅ命令の発行を検知すると、Ｒｅａｄ／Ｗｒｉｔｅ命令による処理を一時的に停止する（ステップＳ３０４）。
【００６１】
続いて、仮想マシン実行管理部２６１は、ステップＳ３０２で変換したＶＭＰＭＡ１に対応するページ番号（以下、ＰＮ−ＶＭＰＭＡ１とする）を所定のページテーブル等から取得する。そして、仮想マシン実行管理部２６１は、メモリ制御部２６６を制御して、取得したＰＮ−ＶＭＰＭＡ１がコピー済ページリスト２３１に登録されているか否かを判別する（ステップＳ３０５）。
【００６２】
ＰＮ−ＶＭＰＭＡ１がコピー済ページリスト２３１に登録されていると判別した場合（ステップＳ３０５；Ｙｅｓ）、メモリ情報は仮想マシンサーバ２００に既に存在していることとなる。続いて、仮想マシン実行管理部２６１は、メモリ制御部２６６を介して、ページ変換テーブル２３２を参照して、ＰＮ−ＶＭＰＭＡ１に、物理ハードウェア（主記憶装置２２０）上の物理アドレスに対応するページ番号（ＰＮ−ＰＭＡ１とする）と二次記憶装置２３０上の記録開始位置（ＳＡ−ＰＤＡ１）のどちらが対応付けられているかを判別する（ステップＳ３０６）。
【００６３】
ＰＮ−ＰＭＡ１が対応付けられていると判別した場合（ステップＳ３０６；ＰＮ−ＰＭＡ１）、仮想マシン実行管理部２６１は、ＯＳ２５０が備える所定のページテーブル等を参照して、ＰＮ−ＰＭＡ１に対応した物理ＨＷ上（主記憶装置２２０上）の物理アドレス（ＰＭＡ１）を取得する（ステップＳ３０７）。
【００６４】
続いて、仮想マシン実行管理部２６１は、Ｒｅａｄ／Ｗｒｉｔｅ命令に設定されているメモリ情報への読出アドレスを、取得したＰＭＡ１に変更する（ステップＳ３０８）。そして、仮想マシン実行管理部２６１は、ステップＳ３０４で停止した処理を再開して、Ｒｅａｄ／Ｗｒｉｔｅ命令を実行する（ステップＳ３０９）。以上で処理は終了する。
【００６５】
ＳＡ−ＰＤＡ１が対応付けられていると判別した場合（ステップＳ３０６；ＳＡ−ＰＤＡ１）、仮想マシン実行管理部２６１は、ＳＡ−ＰＤＡ１が示す二次記憶装置２３０の記録開始位置から、１ページ分の情報（ファイル）を読み出す（ステップＳ３１０）。
【００６６】
そして、仮想マシン実行管理部２６１は、ファイル制御部２６７を制御して、読み出した情報（ファイル）を主記憶装置２２０に保存、即ち、スワップインする（ステップＳ３１１）。
【００６７】
また、仮想マシン実行管理部２６１は、ファイル制御部２６７を制御して、スワップインしたファイルの代わりに、主記憶装置２２０に保存されているファイルを二次記憶装置２３０に移動、即ち、スワップアウトする（ステップＳ３１２）。なお、スワップアウトされたファイルがスワップアウトされる前に記憶されていた主記憶装置２２０上の物理アドレスに対応するページ番号をＰＮ−ＰＭＡ２’として以下説明する。
【００６８】
続いて、仮想マシン実行管理部２６１は、メモリ制御部２６６を制御して、ステップＳ３１１とステップＳ３１２とで実施されたスワップイン、および、スワップアウトの処理を、ページ変換テーブル２３２に反映させる（ステップＳ３１３）。
具体的には、仮想マシン実行管理部２６１は、メモリ制御部２６６を制御して、ＰＮ−ＶＭＰＭＡ１と、ステップＳ３１１でスワップインしたファイルのＰＮ−ＰＭＡとの組を、ページ変換テーブル２３２に新規レコードとして登録する。なお、この登録したレコードのスワップ退避フラグはＦａｌｓｅに、コピー済フラグはＴｒｕｅに設定する（スワップインの反映）。
また、仮想マシン実行管理部２６１は、ＰＮ−ＰＭＡ２’が登録されているページ変換テーブル１３２のレコードのＰＮ−ＰＭＡを、ステップＳ３１２でスワップアウトされたファイルのＳＡ−ＰＤＡに、また、当該レコードのスワップ退避フラグをＴｒｕｅに変更する（スワップアウトの反映）。
【００６９】
続いて、仮想マシン実行管理部２６１は、Ｒｅａｄ／Ｗｒｉｔｅ命令に設定されているメモリ情報への読出アドレスを、スワップインされたファイルの物理ハードウェア上の物理アドレスに変換する（ステップＳ３１４）。そして、仮想マシン実行管理部２６１は、ステップＳ３０４で停止した処理を再開して、Ｒｅａｄ／Ｗｒｉｔｅ命令を実行する（ステップＳ３０９）。以上で、処理は終了する。
【００７０】
ＰＮ−ＶＭＰＭＡ１がコピー済ページリスト１３１に登録されていないと判別した場合（ステップＳ３０５；Ｎｏ）、メモリ情報は、移行元の仮想マシンサーバ１００に存在することとなる。そのため、仮想マシン実行管理部２６１は、仮想マシンのＯＳで使用されているページテーブル等を用いて、ＰＮ−ＶＭＰＭＡ１から仮想ＨＷ上の物理アドレス（ＶＭＰＭＡ１）を取得し（ステップＳ３１５）、仮想マシン実行管理部２６１は、通信制御部２６８を介して、移行元の仮想マシンサーバ１００に、取得したＶＭＰＭＡ１を取得先としたメモリ情報の取得要求を送信する（ステップＳ３１６）。
【００７１】
移行元の仮想マシンサーバ１００のハイパーバイザ１６０の通信制御部１６８が、メモリ情報の取得要求を受信すると（図８、ステップＳ４１０）、マイグレーション実行制御部１６４は、ＯＳ１５０で使用されている一般的なページテーブル等を参照して、該取得要求に含まれるＶＭＰＭＡ１に対応するページ番号（ＰＮ−ＶＭＰＭＡ１）を取得する（ステップＳ４１１）。
【００７２】
続いて、マイグレーション実行制御部１６４は、メモリ制御部１６６を用いてページ変換テーブル１３２を参照し、ステップＳ４１１で取得したＰＮ−ＶＭＰＭＡ１に、物理ハードウェア（主記憶装置１２０）上の物理アドレスに対応するページ番号（以下、ＰＮ−ＰＭＡ１とする）と物理ディスク（二次記憶装置１３０）上の記録開始位置（以下、ＳＡ−ＰＤＡ１とする）のどちらが対応付けられているかを判別する（ステップＳ４１２）。
【００７３】
ＰＮ−ＰＭＡ１が対応付けられていると判別した場合（ステップＳ４１２；ＰＮ−ＰＭＡ１）、マイグレーション実行制御部１６４は、ＯＳ１５０が使用する所定のページテーブルを参照して、ＰＮ−ＰＭＡ１に対応した物理ハードウェア（主記憶装置１２０）上の物理アドレス（ＰＭＡ１）を判別するとともに、メモリ制御部１６６を制御して、ＰＭＡ１に格納されている情報（メモリページ）を読み出す（ステップＳ４１３）。
【００７４】
続いて、マイグレーション実行制御部１６４は、読み出した情報（メモリページ）を移行先の仮想マシンサーバ２００に送信する（ステップＳ４１４）。また、この送信が完了した後、マイグレーション実行制御部１６４は、ページ変換テーブル１３２のＰＮ−ＰＭＡ１が記憶されているレコードのコピー済フラグをＴｒｕｅに更新する。
【００７５】
ＳＡ−ＰＤＡ１が対応付けられていると判別した場合（ステップＳ４１２；ＳＡ−ＰＤＡ１）、マイグレーション実行制御部１６４は、ファイル制御部１６７を制御して、二次記憶装置１３０のＳＡ−ＰＤＡ１が示す記録開始位置から、１ページ分の情報（メモリページ）を読み出す（ステップＳ４１５）。そして、マイグレーション実行制御部１６４は、通信制御部１６８を介して、読み出した情報（メモリページ）を移行先の仮想マシンサーバ２００に送信する（ステップＳ４１４）。また、この送信が完了した後、マイグレーション実行制御部１６４は、ページ変換テーブル１３２のＳＡ−ＰＤＡ１が記憶されているレコードのコピー済フラグをＴｒｕｅに更新する。
【００７６】
仮想マシンサーバ２００のハイパーバイザ２６０の通信制御部２６８が、仮想マシンサーバ１００から情報（メモリページ）を受信すると（図９、ステップＳ３１７）、仮想マシン実行管理部２６１は、受信した情報（メモリページ）を記憶するための空きページが主記憶装置２２０に有るか否かを判別する（ステップＳ３１８）。
【００７７】
空きが主記憶装置２２０に有ると判別した場合（ステップＳ３１８；Ｙｅｓ）、仮想マシン実行管理部２６１は、主記憶装置２２０の空きページに、移行元の仮想マシンサーバ１００から受信した情報（メモリページ）を記憶し（ステップＳ３１９）、処理をステップＳ３２３に移す。なお、この記憶した位置のＰＮ−ＶＭＰＭＡとＰＮ−ＰＭＡを、ＰＮ−ＶＭＰＭＡ２とＰＮ−ＰＭＡ２として以下説明する。
【００７８】
また、空きが主記憶装置２２０にないと判別した場合（ステップＳ３１８；Ｎｏ）、仮想マシン実行管理部２６１は、ファイル制御部２６７を用いて、主記憶装置２２０の任意のページ（ＰＮ−ＰＭＡ’とする）に記憶されているメモリページを、二次記憶装置２３０の任意のページ（ＳＡ−ＰＤＡ’とする）に退避（スワップアウト）させる（ステップＳ３２０）。
【００７９】
続いて、仮想マシン実行管理部２６１は、メモリ制御部２６６を制御して、ステップＳ３２０で実施したスワップアウトの処理を、ページ変換テーブル２３２に反映させる（ステップＳ３２１）。具体的には、仮想マシン実行管理部２６１は、ＰＮ−ＰＭＡ’が登録されているページ変換テーブル２３２のレコードの「ＰＮ−ＰＭＡ／ＳＡ−ＰＤＡ」をＳＡ−ＰＤＡ’に、また、当該レコードのスワップ退避フラグをＴｒｕｅに変更する。
【００８０】
続いて、仮想マシン実行管理部２６１は、メモリ制御部２６６を制御して、退避された空きページに、仮想マシンサーバ１００から受信した情報（メモリページ）を記憶する（ステップＳ３２２）。なお、この記録した位置のＰＮ−ＶＭＰＭＡとＰＮ−ＰＭＡを、ＰＮ−ＶＭＰＭＡ２とＰＮ−ＰＭＡ２として以下説明する。
【００８１】
続いて、ステップＳ３２３において、仮想マシン実行管理部２６１は、メモリ制御部２６６を制御して、仮想マシンサーバ１００から受信した情報（メモリページ）の格納先をページ変換テーブル２３２に登録する（ステップＳ３２３）。
具体的には、ＰＮ−ＶＭＰＭＡ２とＰＮ−ＰＭＡ２との組を、ページ変換テーブル２３２に新規レコードとして登録する。なお、この登録したレコードのスワップ退避フラグはＦａｌｓｅに、コピー済フラグはＴｒｕｅに設定する。
【００８２】
続いて、仮想マシン実行管理部２６１は、メモリ制御部２６６を制御して、コピー済ページリスト２３１に、ＰＮ−ＰＭＡ２を登録する（ステップＳ３２４）。
【００８３】
そして、仮想マシン実行管理部２６１は、ＯＳ２５０に備えられている所定のページテーブル等を参照して、ＰＮ−ＰＭＡ２に対応した物理ハードウェア（主記憶装置２２０）上の物理アドレス（ＰＭＡ２）を取得する（ステップＳ３２５）。そして、仮想マシン実行管理部２６１は、Ｒｅａｄ／Ｗｒｉｔｅ命令に設定されているメモリ情報への読出アドレスを、取得したＰＭＡ２に変更する（ステップＳ３２６）。そして、仮想マシン実行管理部２６１は、ステップＳ３０４で停止した処理を再開して、Ｒｅａｄ／Ｗｒｉｔｅ命令を実行する（図７、ステップＳ３０９）。以上で処理は終了する。
【００８４】
このように、移行先の仮想マシンサーバ２００で起動している仮想マシンで演算処理などが実行され、仮想ハードウェアの主記憶装置に記憶されている情報にアクセスする必要が生じた際には、該情報が仮想マシンサーバ２００にあるか否かが判別され、無い場合には、移行元の仮想マシンサーバ１００で該情報が取得されて送信される。
【００８５】
上述のマイグレーション処理の完了時点では、仮想マシンサーバ２００に移行された仮想マシンの仮想ハードウェアの主記憶装置に関する情報は、移行元の仮想マシンサーバ１００の主記憶装置１２０、又は二次記憶装置１３０のスワップファイルに記憶されている状態である。
【００８６】
一般的に、仮想マシンサーバ１００の主記憶装置１２０は、他の起動している仮想マシンで頻繁に使用されるため競合が発生し易く、パフォーマンスのボトルネックとなる可能性が高い。従って、この主記憶装置１２０に記憶されている移行された仮想マシンの主記憶装置の情報は、できるだけ早く解放する必要がある。
【００８７】
本実施形態では、マイグレーション処理が終了した後、移行元の仮想マシンサーバ１００のリソースの空き状況を監視しながら、移行された仮想マシンの主記憶装置の情報を移行先の仮想マシンサーバ２００に移動させ、移動させたリソースを解放する処理（リソース解放処理）が実施される。以下、このリソース解放処理について、図１０〜図１２を参照して詳細に説明する。
【００８８】
マイグレーション処理が終了後、移行元の仮想マシンサーバ１００のハイパーバイザ１６０のマイグレーション実行制御部１６４は、ＯＳ１５０の機能等を使用して、ＣＰＵ１１０の使用率を取得する（ステップＳ５０１）。
【００８９】
そして、マイグレーション実行制御部１６４は、取得したＣＰＵ１１０の使用率が、所定の閾値（例えば８０％）より少ないか否かを判別する（ステップＳ５０２）。
【００９０】
ＣＰＵ１１０の使用率が閾値以上であると判別した場合（ステップＳ５０２；Ｎｏ）、ＣＰＵ１１０の負荷が大きすぎるため、主記憶装置１２０に記憶されている情報のコピーなどの以後の処理ができない。そのため、マイグレーション実行制御部１６４は、所定の時間（例えば５００ｍｓ）だけ処理を待ち（ステップＳ５０３）、再度、ＣＰＵ１１０の使用率の取得と、閾値を用いた判別処理（ステップＳ５０１、Ｓ５０２）を繰り返す。
【００９１】
ＣＰＵ１１０の使用率が閾値より少ないと判別した場合（ステップＳ５０２；Ｙｅｓ）、マイグレーション実行制御部１６４は、メモリ制御部１６６を制御してページ変換テーブル１３２を参照し、仮想マシンサーバ２００に未だ移行していない仮想マシンの主記憶装置の情報（メモリページ）が有るか否かを判別する（ステップＳ５０４）。
具体的には、ページ変換テーブル１３２にコピー済フラグのＦａｌｓｅのレコードが有る場合に、未だ移行していない仮想マシンのメモリページが有る（ステップＳ５０４；Ｙｅｓ）、と判別すればよい。
【００９２】
未だ移行していない仮想マシンのメモリページは無いと判別した場合（ステップＳ５０４；Ｎｏ）、仮想マシンサーバ１００から仮想マシンサーバ２００へのメモリページの移行は完了していることとなり、処理は終了する。
【００９３】
未だ移行していないメモリページが有ると判別した場合（ステップＳ５０４；Ｙｅｓ）、マイグレーション実行制御部１６４は、メモリ制御部１６６を制御してページ変換テーブル１３２を参照し、そのメモリページが主記憶装置１２０に記憶されているか否かを判別する（ステップＳ５０５）。
具体的には、マイグレーション実行制御部１６４は、ページ変換テーブル１３２にコピー済フラグがＦａｌｓｅで、ＰＮ−ＰＭＡが対応付けられているレコードが有る場合に、メモリページは主記憶装置１２０に記憶されている（ステップＳ５０５；Ｙｅｓ）と判別すればよい。
【００９４】
メモリページが主記憶装置１２０に記憶されていないと判別した場合（ステップＳ５０５；Ｎｏ）、メモリページは二次記憶装置１３０のスワップファイルに記憶されていることとなる。そして、仮想マシン実行管理部１６１は、スワップファイルのサイズ（スワップサイズ）を取得する（図１２、ステップＳ５１４）。
【００９５】
そして、マイグレーション実行制御部１６４は、取得したスワップサイズが、所定の閾値（例えば、５０Ｍｂ）より小さいか否かを判別する（ステップＳ５１５）。
【００９６】
スワップサイズが閾値より小さいと判別した場合（ステップＳ５１５；Ｙｅｓ）、処理をステップＳ５１７に移す。
【００９７】
スワップサイズが閾値以上であると判別した場合（ステップＳ５１５；Ｎｏ）、マイグレーション実行制御部１６４は、移行対象となる仮想マシンの仮想ハードウェアの主記憶装置のサイズに対するスワップサイズの割合（コピー完了率）が、所定の閾値（例えば、２０％）より小さいか否かを判別する（ステップＳ５１６）。
【００９８】
コピー完了率が閾値以上であると判別した場合（ステップＳ５１６；Ｎｏ）、処理を図１０のステップＳ５０３に移す。
コピー完了率が閾値より小さいと判別した場合（ステップＳ５１６；Ｙｅｓ）、マイグレーション実行制御部１６４は、処理をステップＳ５１７に移す。
【００９９】
ステップＳ５１７において、マイグレーション実行制御部１６４は、メモリ制御部１６６を制御してページ変換テーブル１３２を参照し、主記憶装置１２０に記憶されている移行対象の仮想マシンのメモリページを取得する（ステップＳ５１７）。
具体的には、マイグレーション実行制御部１６４は、メモリ制御部１６６を制御して、ページ変換テーブル１３２にコピー済フラグがＦａｌｓｅで、ＰＮ−ＰＭＡが対応付けられているレコードのＰＮ−ＰＭＡが示す主記憶装置１２０上のページ位置に記憶されているメモリページを取得すればよい。なお、取得したメモリページに対応するページ番号（ＰＮ−ＰＭＡ）をＰＮ−ＰＭＡ””として以下説明する。
【０１００】
続いて、マイグレーション実行制御部１６４は、ファイル制御部１６７を制御して、取得したメモリページを、二次記憶装置１３０の任意のページ（ＳＡ−ＰＤＡ””とする）に退避（スワップアウト）させる（ステップＳ５１８）。
【０１０１】
そして、マイグレーション実行制御部１６４は、メモリ制御部１６６を制御して、ステップＳ５１８で実施したスワップアウトの処理を、ページ変換テーブル１３２に反映させる（ステップＳ５１９）。
具体的には、マイグレーション実行制御部１６４は、ＰＮ−ＰＭＡ””が登録されているページ変換テーブル１３２のレコードのＰＮ−ＰＭＡをＳＡ−ＰＤＡ””に、また、当該レコードのスワップ退避フラグをＴｒｕｅに変更する。
【０１０２】
続いて、マイグレーション実行制御部１６４は、処理を図１０のステップＳ５０３に移す。
【０１０３】
図１０に戻り、メモリページが主記憶装置１２０に記憶されていると判別した場合（ステップＳ５０５；Ｙｅｓ）、仮想マシン実行管理部１６１は、ＯＳ１５０の機能等を用いて、仮想マシンサーバ１００のネットワーク使用率を取得する（ステップＳ５０６）。
【０１０４】
そして、仮想マシン実行管理部１６１は、取得したネットワーク使用率が、所定の閾値（例えば５０％）より少ないか否かを判別する（ステップＳ５０７）。
【０１０５】
ネットワーク使用率が閾値以上と判別した場合（ステップＳ５０７；Ｎｏ）、仮想マシン実行管理部１６１は、ＯＳ１５０の機能等を用いて、二次記憶装置１３０のディスクＩ／Ｏ使用率を取得する（図１２、ステップＳ５１２）。
【０１０６】
そして、仮想マシン実行管理部１６１は取得したディスクＩ／Ｏ使用率が、所定の閾値（例えば５０％）より少ないか否かを判別する（ステップＳ５１３）。
【０１０７】
ディスクＩ／Ｏ使用率が閾値以上であると判別した場合（ステップＳ５１３；Ｎｏ）、処理を図１０のステップＳ５０３に移す。
また、ディスクＩ／Ｏ使用率が閾値より少ないと判別した場合（ステップＳ５１３；Ｙｅｓ）、仮想マシン実行管理部１６１は、処理を上述したステップＳ５１７に移す。
【０１０８】
図１０に戻り、ネットワーク使用率が閾値より少ないと判別した場合（ステップＳ５０７；Ｙｅｓ）、仮想マシン実行管理部１６１は、メモリ制御部１６６を制御してページ変換テーブル１３２を参照し、主記憶装置１２０に記憶されている移行された仮想マシンの主記憶装置の情報（メモリページ）と、そのメモリページの仮想ハードウェア上の物理アドレスに対応したページ番号（以下、ＰＮ−ＶＭＰＭＡ３とする）とを取得する（ステップＳ５０８）。そして、仮想マシン実行管理部１６１は、通信制御部１６８を介して、取得したメモリページとＰＮ−ＶＭＰＭＡ３とを、移行先の仮想マシンサーバ２００に送信する（ステップＳ５０９）。
なお、具体的には、コピー済フラグがＦａｌｓｅでＰＮ−ＰＭＡが対応付けられているページ変換テーブル２３２のレコードのＰＮ−ＶＭＰＭＡをＰＮ−ＶＭＰＭＡ３として取得すればよい。
【０１０９】
移行先の仮想マシンサーバ２００のハイパーバイザ２６０の通信制御部２６８が、移行元の仮想マシンサーバ１００からメモリページと、該メモリページに対応するＰＮ−ＶＭＰＭＡ３とを受信すると（図１１、ステップＳ６０１）、仮想マシン実行管理部２６１は、受信したメモリページを記憶するための空きページが主記憶装置２２０に有るか否かを判別する（ステップＳ６０２）。
【０１１０】
空きが主記憶装置２２０に有ると判別した場合（ステップＳ６０２；Ｙｅｓ）、仮想マシン実行管理部２６１は、主記憶装置２２０の空きページに、移行元の仮想マシンサーバ１００から受信した情報（メモリページ）を記憶し（ステップＳ６０３）、処理をステップＳ６０７に移す。なお、この記憶した主記憶装置２２０上の物理アドレスに対応したページ番号を、ＰＮ−ＰＭＡ３として以下説明する。
【０１１１】
また、空きが主記憶装置２２０にないと判別した場合（ステップＳ６０２；Ｎｏ）、仮想マシン実行管理部２６１は、ファイル制御部２６７を用いて、主記憶装置２２０の任意のページ（ＰＮ−ＰＭＡ”とする）に記憶されているメモリページを、二次記憶装置２３０の任意のページ（ＳＡ−ＰＤＡ”とする）に退避（スワップアウト）させる（ステップＳ６０４）。
【０１１２】
続いて、仮想マシン実行管理部２６１は、メモリ制御部２６６を制御して、ステップＳ６０４で実施したスワップアウトの処理をページ変換テーブル２３２に反映させる（ステップＳ６０５）。具体的には、仮想マシン実行管理部２６１は、ＰＮ−ＰＭＡ”が登録されているページ変換テーブル１３２のレコードのＰＮ−ＰＭＡをＳＡ−ＰＤＡ”に、また、当該レコードのスワップ退避フラグをＴｒｕｅに変更する。
【０１１３】
続いて、仮想マシン実行管理部２６１は、メモリ制御部２６６を制御して、退避された空きページに、移行元の仮想マシンサーバ１００から受信した情報（メモリページ）を記憶する（ステップＳ６０６）。なお、この記憶した主記憶装置２２０上の物理アドレスに対応したページ番号を、ＰＮ−ＰＭＡ３として以下説明する。
【０１１４】
続いて、ステップＳ６０７において、仮想マシン実行管理部２６１は、メモリ制御部２６６を制御して、移行元の仮想マシンサーバ１００から受信した情報（メモリページ）の格納先をページ変換テーブル２３２に登録する（ステップＳ６０７）。
具体的には、ＰＮ−ＶＭＰＭＡ３とＰＮ−ＰＭＡ３との組を、ページ変換テーブル２３２に新規レコードとして登録する。なお、この登録したレコードのスワップ退避フラグはＦａｌｓｅに、コピー済フラグはＴｒｕｅに設定する。
【０１１５】
続いて、仮想マシン実行管理部２６１は、メモリ制御部２６６を制御して、コピー済ページリスト２３１に、ＰＮ−ＰＭＡ３を登録する（ステップＳ６０８）。
【０１１６】
続いて、仮想マシン実行管理部２６１は、移行元の仮想マシンサーバ１００から受信したメモリページの移行が完了したことを示す処理結果を、通信制御部２６８を介して送信する（ステップＳ６０９）。
【０１１７】
移行元の仮想マシンサーバ１００のハイパーバイザ１６０の通信制御部１６８が仮想マシンサーバ２００からの処理結果を受信すると（図１０、ステップＳ５１０）、マイグレーション実行制御部１６４は、ページ変換テーブル１３２のＰＮ−ＶＭＰＭＡ３のレコードのコピー済フラグをＴｒｕｅに更新する（ステップＳ５１１）。そして、マイグレーション実行制御部１６４は、ステップＳ５０９で送信したメモリページを解放し（ステップＳ５２０）、ステップＳ５０３の処理に戻り、以降の処理を繰り返す。
【０１１８】
このように、仮想マシン移行後の移行元の仮想マシンサーバ１００においては、ＣＰＵ１１０の使用状況、二次記憶装置１３０の状態、および、ネットワーク使用率に基づいて、仮想マシンの主記憶装置の情報を仮想マシンサーバ２００に送信するのか二次記憶装置１３０（スワップファイル）に退避するのかが判別され、判別された処理が実行される。
【０１１９】
なお、本発明は上記実施形態に限定されず、種々の応用及び変形が可能である。
【０１２０】
例えば、図１３に示すように、仮想マシンサーバ１００と仮想マシンサーバ２００とに接続された、共有ディスク装置３００をさらに備えるように仮想マシンシステムを構成してもよい。
共有ディスク装置３００には、仮想マシンサーバ１００から仮想マシンサーバ２００に移行される仮想マシンの仮想ハードウェアの二次記憶装置の情報が記憶される。そして、この情報は仮想マシンサーバ１００と仮想マシンサーバ２００の両方から、仮想ハードウェアの二次記憶装置として共有利用される。そのため、仮想マシンサーバ１００、２００上の仮想マシンには、二次記憶装置は構成されず、仮想マシン移行の際には、二次記憶装置の移行にかかる処理時間を短縮することができる。
【０１２１】
また、上記実施形態では、マイグレーション処理（図５、図６）において、移行先の仮想マシンサーバ１００から送信された仮想マシンのキャッシュメモリのスナップショットに基づいて、移行先の仮想マシンサーバ２００の仮想マシンのキャッシュメモリを設定した。しかし、仮想マシンのキャッシュメモリの情報を外部から操作できない場合も考えられる。
【０１２２】
このような場合のマイグレーション処理について、図１４のフローチャートを参照して説明する。なお、図１４に示すフローチャートと、図５、６に示すフローチャートとで実質的に同一のステップについては、同一の符号を付し、そのステップについては簡潔に説明する。
【０１２３】
まず、仮想マシンサーバ１００において、マイグレーション開始コマンドを受信し（ステップＳ１０１）、仮想マシンサーバ２００に対して、マイグレーションの開始要求を送信する（ステップＳ１０２）。
【０１２４】
移行先の仮想マシンサーバ２００では、開始要求を受信すると（ステップＳ２０１）、マイグレーション実行制御部２６４は、仮想マシンが仮想マシンサーバ２００に移行可能であるか否かを判別する（ステップＳ２０２）。
【０１２５】
移行が不可能であると判別した場合（ステップＳ２０２；Ｎｏ）、移行不可能を示す処理結果を、移行元の仮想マシンサーバ１００に送信する（ステップＳ２０４）。
【０１２６】
移行が可能であると判別した場合（ステップＳ２０２；Ｙｅｓ）、ハードウェア構成管理部２６２は、仮想マシンのハードウェア構成情報に基づいて、仮想マシンの仮想ハードウェアに対してリソースの割り当てを行う（ステップＳ２０３）。そして、割り当て処理が完了すると、マイグレーション実行制御部２６４は、リソース割り当ての完了を示す処理結果通知を仮想マシンサーバ１００に送信する（ステップＳ２０４）。
【０１２７】
移行元の仮想マシンサーバ１００のハイパーバイザ１６０の通信制御部１６８は、移行先の仮想マシンサーバ２００から処理結果通知を受信し（ステップＳ１０３）、仮想マシンの移行が可能であるか否かを判別する（ステップＳ１０４）。
【０１２８】
移行が不可能であると判別した場合（ステップＳ１０４；移行不可）、マイグレーション実行制御部１６４は、マイグレーション処理を終了する。
【０１２９】
移行が可能であると判別した場合（ステップＳ１０４；移行可）、マイグレーション実行制御部１６４は、仮想マシン実行管理部１６１を制御して、移行対象の仮想マシンの動作を中断する（ステップＳ１０８）。
【０１３０】
続いて、マイグレーション実行制御部１６４は、ＣＰＵ制御部１６５を用いて、ステップＳ１０６のキャッシュメモリの送信中に更新された仮想マシンのＣＰＵのレジスタ情報を取得し、移行先の仮想マシンサーバ２００に送信する（ステップＳ１１１）。
【０１３１】
移行先の仮想マシンサーバ２００のハイパーバイザ２６０の通信制御部２６８が、レジスタ情報を受信すると（ステップＳ２１２）、マイグレーション実行制御部２６４は、それらの情報に基づいて、仮想マシンのＣＰＵのレジスタを設定する（ステップＳ２１３）。この設定により、移行先の仮想マシンサーバ２００の仮想マシンのレジスタの状態は、移行元の仮想マシンサーバ１００の仮想マシンのレジスタの状態と実質的に同一になる。
【０１３２】
続いて、マイグレーション実行制御部２６４は、仮想マシン実行管理部１６１を制御して、レジスタを設定した仮想マシンを実行させる（ステップＳ２１０）。
【０１３３】
そして、仮想マシンが実行されると、マイグレーション実行制御部２６４は、通信制御部２６８を介して、その旨を示す通知を仮想マシンサーバ１００に送信する（ステップＳ２１１）。仮想マシンサーバ１００のハイパーバイザ１６０の通信制御部１６８が、移行先の仮想マシンサーバ２００で仮想マシン実行されたことを示す通知を受信して（ステップＳ１１０）、マイグレーション処理は終了する。
【０１３４】
このように、このマイグレーション処理の変形例では、ＣＰＵ内のキャッシュメモリの情報は移行対象とならず、レジスタの情報のみが移行される。なお、この変形例では、キャッシュメモリの情報は移行されないので、図５、図６に示したマイグレーション処理よりも、処理に時間がかからない。
【０１３５】
また、仮想マシンサーバ１００、２００は、専用のシステムによらず、通常のコンピュータシステムを用いて実現可能である。たとえば、前記の動作を実行するためのコンピュータプログラムを、コンピュータが読みとり可能な記録媒体（フレキシブルディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ等）に格納して配布し、当該コンピュータプログラムをコンピュータにインストールすることにより、前述の処理を実行する装置を構成してもよい。また、インターネット等の通信ネットワーク上のサーバ装置が有する記憶装置に当該コンピュータプログラムを格納しておき、通常のコンピュータシステムがダウンロード等することで仮想マシンサーバ１００、２００を構成してもよい。
【０１３６】
また、本システムの機能を、ＯＳ（オペレーティングシステム）とアプリケーションプログラムの分担、またはＯＳとアプリケーションプログラムとの協働により実現する場合などには、アプリケーションプログラム部分のみを記録媒体や記憶装置に格納してもよい。
【０１３７】
また、その他、具体的な細部構成等についても適宜変更可能である。
【図面の簡単な説明】
【０１３８】
【図１】本発明の実施形態に係る仮想マシンシステムの構成図である。
【図２】ハイパーバイザの機能構成図である。
【図３】コピー済ページリストの構成例を示す図である。
【図４】ページ変換テーブルの構成例を示す図である。
【図５】マイグレーション処理を説明するためのフローチャートである。
【図６】マイグレーション処理を説明するためのフローチャートである。
【図７】移行先の仮想マシンでメモリ情報が必要となった場合の処理を説明するためのフローチャートである。
【図８】移行先の仮想マシンでメモリ情報が必要となった場合の処理を説明するためのフローチャートである。
【図９】移行先の仮想マシンでメモリ情報が必要となった場合の処理を説明するためのフローチャートである。
【図１０】リソース解放処理を説明するためのフローチャートである。
【図１１】リソース解放処理を説明するためのフローチャートである。
【図１２】リソース解放処理を説明するためのフローチャートである。
【図１３】共有ディスク装置が新たに備えられた仮想マシンシステムの構成図である。
【図１４】マイグレーション処理の変形例を説明するためのフローチャートである。
【符号の説明】
【０１３９】
１００、２００ 仮想マシンサーバ
１１０、２１０ ＣＰＵ
１２０、２２０ 主記憶装置
１３０、２３０ 二次記憶装置
１３１、２３１ コピー済ページリスト
１３２、２３２ ページ変換テーブル
１４０、２４０ 通信装置
【図１】
2010134710.tif 000003
【図２】
2010134710.tif 000004
【図３】
2010134710.tif 000005
【図４】
2010134710.tif 000006
【図５】
2010134710.tif 000007
【図６】
2010134710.tif 000008
【図７】
2010134710.tif 000009
【図８】
2010134710.tif 000010
【図９】
2010134710.tif 000011
【図１０】
2010134710.tif 000012
【図１１】
2010134710.tif 000013
【図１２】
2010134710.tif 000014
【図１３】
2010134710.tif 000015
【図１４】
2010134710.tif 000016