仮想マシンの移行方法、サーバ、及び、プログラム
【課題】仮想マシンを移行させる場合に、仮想マシンの停止時間を極力短くする。
【解決手段】仮想マシンを移行させる際に、仮想マシンサーバ100のハイパーバイザ160は、仮想マシンのCPUのレジスタとキャッシュメモリの情報を移行先である仮想マシンサーバ200に送信する。仮想マシンサーバ200のハイパーバイザ260は、仮想マシンサーバ100からCPUのレジスタとキャッシュメモリの情報とを受信すると、それらの情報を仮想マシンに設定して仮想マシンを起動させる。
【解決手段】仮想マシンを移行させる際に、仮想マシンサーバ100のハイパーバイザ160は、仮想マシンのCPUのレジスタとキャッシュメモリの情報を移行先である仮想マシンサーバ200に送信する。仮想マシンサーバ200のハイパーバイザ260は、仮想マシンサーバ100からCPUのレジスタとキャッシュメモリの情報とを受信すると、それらの情報を仮想マシンに設定して仮想マシンを起動させる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、サーバ上で起動している仮想マシンを他のサーバに移行させる、仮想マシンの移行方法、サーバ、及び、プログラムに関する。
【背景技術】
【0002】
仮想マシンを実行する仮想マシンサーバに負荷が集中してパフォーマンスが低下した場合などに当該仮想マシンを他の仮想マシンサーバに移行(マイグレーション)することにより、継続的な仮想マシンの運用を可能にした技術がある(例えば、特許文献1)。
【0003】
上述の技術では、まず、移行元で動作している仮想マシンの構成情報をネットワーク等を介して移行先に転送し、その後、移行元の仮想マシンを停止し、仮想マシンのメモリイメージを移行先に転送した後、移行先の仮想マシンサーバで仮想マシンを起動する。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2008−33483号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
仮想マシンのメモリイメージは、サイズが比較的大きいため、転送に時間がかかる。そのため、仮想マシンのメモリイメージの転送が完了した後に転送先で仮想マシンを起動するのでは、仮想マシンの停止時間が長くなってしまい、上述の技術では、緊急時などに、継続的に仮想マシンを稼動させることが困難になる。
【0006】
本発明は、上記実情に鑑みてなされたものであり、仮想マシンをサーバ間で移行させる場合に、仮想マシンの停止時間を極力短くすることができる、仮想マシンの移行方法、サーバ、及び、プログラムを提供することを目的とする。
【課題を解決するための手段】
【0007】
上記目的を達成するために、本発明の第1の観点に係る仮想マシンの移行方法は、
第1のサーバで稼働している仮想マシンを、該第1のサーバと通信ネットワークを介して接続されている第2のサーバに移行させる仮想マシンの移行方法であって、
前記第1のサーバで稼働している仮想マシンの仮想ハードウェア構成情報と仮想CPU(Central Processing Unit;中央処理装置)内に記憶された記憶情報とを、前記第2のサーバに送信する送信ステップと、
前記第1のサーバで稼働している仮想マシンの稼働を停止させる停止ステップと、
前記第1のサーバにおいて、前記停止ステップによる仮想マシンの稼働の停止後に、前記送信ステップによる送信中に更新された前記記憶情報の差分情報を、前記第2のサーバに送信する差分送信ステップと、
前記第2のサーバにおいて、前記第1のサーバから送信された仮想ハードウェア構成情報と記憶情報と該記憶情報の差分情報とに基づいて、仮想マシンを構成、起動させる起動ステップと、
前記第2のサーバにおいて、前記起動ステップで起動された仮想マシンが、仮想マシン上の記憶位置と物理マシン上の記憶位置との対応関係を示す変換情報を参照して、仮想CPU以外の仮想メモリ領域に記憶されるメモリ情報を前記第1のサーバまたは前記第2のサーバから読み出すメモリ情報読出ステップと、
を備えることを特徴とする。
【0008】
前記第2のサーバにおいて、前記起動ステップで起動された仮想マシン上で前記メモリ情報が必要となる処理が実施された際に、当該処理を中断するステップと、
前記第2のサーバにおいて、前記メモリ情報の取得要求を前記第1のサーバに送信するステップと、
前記第1のサーバにおいて、前記メモリ情報の取得要求が要求するメモリ情報を取得するステップと、
前記第1のサーバにおいて、前記取得したメモリ情報を前記第2のサーバに送信するステップと、
前記第2のサーバにおいて、前記第1のサーバから送信されたメモリ情報を記憶するステップと、
前記第2のサーバにおいて、前記保存したメモリ情報を用いて中断した処理を再開して実施するステップとを備えてもよい。
【0009】
前記第1のサーバにおいて、前記第1のサーバのパフォーマンスを示すデータを取得するステップと、
前記取得したパフォーマンスを示すデータに基づいて、前記起動ステップにより前記第2のサーバ上で起動された仮想マシンの前記メモリ情報を、前記第2のサーバに送信するか否かを判別する判別ステップと、
前記判別ステップで前記メモリ情報を前記第2のサーバに送信すると判別した場合に、該メモリ情報を前記第2のサーバに送信するステップとを備えてもよい。
【0010】
前記第1のサーバにおいて、前記判別ステップで前記メモリ情報を前記第2のサーバに送信しないと判別した場合に、前記パフォーマンスを示すデータに基づいて該メモリ情報を二次記憶装置に移動させるか否かを判別する第2の判別ステップと、
前記第2の判別ステップでメモリ情報を二次記憶装置に移動させると判別した場合に、該メモリ情報を該二次記憶装置に移動させるステップとをさらに備えてもよい。
【0011】
上記目的を達成するために、本発明の第2の観点に係るサーバは、
移行元のサーバから、該サーバで稼働している仮想マシンの仮想ハードウェア構成情報と仮想CPU(Central Processing Unit;中央処理装置)内に記憶された記憶情報と該記憶情報の差分情報とを受信する受信手段と、
前記受信手段が受信した仮想ハードウェア構成情報と仮想CPU内に記憶された記憶情報とに基づいて仮想マシンを構成、起動させる起動手段と、
前記起動手段による起動した仮想マシンが、該仮想マシン上の記憶位置と物理マシン上の記憶位置との対応関係を示す変換情報を参照して、仮想CPU以外の仮想メモリ領域に記憶されるメモリ情報を自身の物理記憶領域または仮想マシンの移行元のサーバから読み出すメモリ情報読出手段と、
を備えることを特徴とする。
【0012】
上記目的を達成するために、本発明の第3の観点に係るプログラムは、
コンピュータを、
移行元のサーバから、該サーバで稼働している仮想マシンの仮想ハードウェア構成情報と仮想CPU(Central Processing Unit;中央処理装置)内に記憶された記憶情報と該記憶情報の差分情報とを受信する受信手段、
前記受信手段が受信した仮想ハードウェア構成情報と仮想CPU内に記憶された記憶情報とに基づいて仮想マシンを構成、起動させる起動手段、
前記起動手段による起動した仮想マシンが、該仮想マシン上の記憶位置と物理マシン上の記憶位置との対応関係を示す変換情報を参照して、仮想CPU以外の仮想メモリ領域に記憶されるメモリ情報を自身の物理記憶領域または仮想マシンの移行元のサーバから読み出すメモリ情報読出手段、
として機能させることを特徴とする。
【0013】
上記目的を達成するために、本発明の他の観点に係る仮想マシンの移行方法は、
第1のサーバで稼働している仮想マシンを、該第1のサーバと通信ネットワークを介して接続されている第2のサーバに移行させる仮想マシンの移行方法であって、
前記第1のサーバで稼働している仮想マシンの仮想ハードウェア構成情報とCPU (Central Processing Unit;中央処理装置)内に記憶された記憶情報とを、前記第2のサーバに送信する送信ステップと、
前記第1のサーバで稼働している仮想マシンの稼働を停止させる停止ステップと、
前記第2のサーバにおいて、前記第1のサーバから送信されたハードウェア構成情報と記憶情報とに基づいて、仮想マシンを構成、起動させる起動ステップと、
を備えることを特徴とする。
【0014】
前記第1のサーバにおいて、前記停止ステップによる仮想マシンの稼働の停止後に、前記送信ステップによる送信中に更新された前記記憶情報の差分情報を、前記第2のサーバに送信するステップをさらに備え、
前記起動ステップは、前記第1のサーバから送信されたハードウェア構成情報と記憶情報と該記憶情報の差分情報とに基づいて、仮想マシンを構成、起動させてもよい。
【0015】
前記第2のサーバにおいて、前記起動ステップで起動された仮想マシン上でメモリ情報が必要となる処理が実施された際に、当該処理を中断するステップと、
前記第2のサーバにおいて、前記メモリ情報の取得要求を前記第1のサーバに送信するステップと、
前記第1のサーバにおいて、前記メモリ情報の取得要求が要求するメモリ情報を取得するステップと、
前記第1のサーバにおいて、前記取得したメモリ情報を前記第2のサーバに送信するステップと、
前記第2のサーバにおいて、前記第1のサーバから送信されたメモリ情報を記憶するステップと、
前記第2のサーバにおいて、前記保存したメモリ情報を用いて中断した処理を再開して実施するステップとを備えてもよい。
【0016】
前記第1のサーバにおいて、前記第1のサーバのパフォーマンスを示すデータを取得するステップと、
前記取得したパフォーマンスを示すデータに基づいて、前記起動ステップにより前記第2のサーバ上で起動された仮想マシンのメモリ情報を、前記第2のサーバに送信するか否かを判別する判別ステップと、
前記判別ステップでメモリ情報を前記第2のサーバに送信すると判別した場合に、該メモリ情報を前記第2のサーバに送信するステップとを備えてもよい。
【0017】
前記第1のサーバにおいて、前記判別ステップでメモリ情報を前記第2のサーバに送信しないと判別した場合に、前記パフォーマンスを示すデータに基づいて該メモリ情報を二次記憶装置に移動させるか否かを判別する第2の判別ステップと、
前記第2の判別ステップでメモリ情報を二次記憶装置に移動させると判別した場合に、該メモリ情報を該二次記憶装置に移動させるステップとをさらに備えてもよい。
【0018】
上記目的を達成するために、本発明の他の観点に係るサーバは、
仮想マシンが稼働しているサーバであって、
前記稼働している仮想マシンを移行先となる他のサーバへ移行させる際に、該仮想マシンの仮想ハードウェア構成情報とCPU (Central Processing Unit;中央処理装置)内に記憶された記憶情報とを前記移行先となるサーバに送信する送信手段と、
前記稼働している仮想マシンの稼働を停止させる仮想マシン停止手段と、
前記送信手段による送信の処理が完了後、当該サーバのパフォーマンスを示すデータを取得するパフォーマンスデータ取得手段と、
前記パフォーマンスデータ取得手段で取得したパフォーマンスを示すデータに基づいて、前記仮想マシンのメモリ情報を前記移行先となるサーバに送信するか否かを判別する判別手段と、
メモリ情報を前記移行先となるサーバに送信すると判別した場合に、該メモリ情報を該移行先となるサーバに送信するメモリ情報送信手段と、
を備えることを特徴とする。
【0019】
上記目的を達成するために、本発明の他の観点に係るサーバは、
仮想マシンが稼働しているサーバであって、
前記稼働している仮想マシン上でメモリ情報が必要となる処理が実施された際に、当該処理を中断する仮想マシン中断手段と、
前記メモリ情報の取得要求を前記仮想マシンの移行元であるサーバに送信するメモリ取得要求送信手段と、
前記仮想マシンの移行元であるサーバから送信されたメモリ情報を記憶するメモリ情報記憶手段と、
前記メモリ情報記憶手段で記憶したメモリ情報を用いて中断した処理を再開して実施する処理再開実施手段と、
を備えることを特徴とする。
【0020】
上記目的を達成するために、本発明の他の観点に係るプログラムは、
仮想マシンが稼働しているコンピュータを、
前記稼働している仮想マシンを移行先となるサーバへ移行させる際に、該仮想マシンの仮想ハードウェア構成情報とCPU (Central Processing Unit;中央処理装置)内に記憶された記憶情報とを前記移行先となるサーバに送信する送信手段、
前記稼働している仮想マシンの稼働を停止させる仮想マシン停止手段、
前記送信手段による送信の処理が完了後、当該サーバのパフォーマンスを示すデータを取得するパフォーマンスデータ取得手段、
前記パフォーマンスデータ取得手段で取得したパフォーマンスを示すデータに基づいて、前記仮想マシンのメモリ情報を前記移行先となるサーバに送信するか否かを判別する判別手段、
前記判別手段でメモリ情報を前記移行先となるサーバに送信すると判別した場合に、該メモリ情報を該移行先となるサーバに送信するメモリ情報送信手段、
として機能させることを特徴とする。
【0021】
上記目的を達成するために、本発明の他の観点に係るプログラムは、
仮想マシンが稼働しているコンピュータを、
前記稼働している仮想マシン上でメモリ情報が必要となる処理が実施された際に、当該処理を中断する仮想マシン中断手段、
前記メモリ情報の取得要求を前記仮想マシンの移行元であるサーバに送信するメモリ取得要求送信手段、
前記仮想マシンの移行元であるサーバから送信された前記メモリ情報を記憶するメモリ情報記憶手段、
前記メモリ情報記憶手段で記憶したメモリ情報を用いて中断した処理を再開して実施する処理再開実施手段、
として機能させることを特徴とする。
【発明の効果】
【0022】
本発明によれば、CPU内に記憶された記憶情報が移動された時点で、移行先のサーバ上で仮想マシンは起動する。そのため、仮想マシンを仮想マシンサーバ間で移行させる場合に、停止時間を極力短くすることができる。
【図面の簡単な説明】
【0023】
【図1】本発明の実施形態に係る仮想マシンシステムの構成図である。
【図2】ハイパーバイザの機能構成図である。
【図3】コピー済ページリストの構成例を示す図である。
【図4】ページ変換テーブルの構成例を示す図である。
【図5】マイグレーション処理を説明するためのフローチャートである。
【図6】マイグレーション処理を説明するためのフローチャートである。
【図7】移行先の仮想マシンでメモリ情報が必要となった場合の処理を説明するためのフローチャートである。
【図8】移行先の仮想マシンでメモリ情報が必要となった場合の処理を説明するためのフローチャートである。
【図9】移行先の仮想マシンでメモリ情報が必要となった場合の処理を説明するためのフローチャートである。
【図10】リソース解放処理を説明するためのフローチャートである。
【図11】リソース解放処理を説明するためのフローチャートである。
【図12】リソース解放処理を説明するためのフローチャートである。
【図13】共有ディスク装置が新たに備えられた仮想マシンシステムの構成図である。
【図14】マイグレーション処理の変形例を説明するためのフローチャートである。
【発明を実施するための形態】
【0024】
以下、本発明の実施形態に係る仮想マシンシステムについて、図面を参照して説明する。
本発明の実施形態に係る仮想マシンシステムは、図1に示すように、LAN等のネットワークを介して相互に接続された、仮想マシンサーバ100と仮想マシンサーバ200とを備えて構成される。仮想マシンシステムは、仮想マシンサーバ100で稼働している仮想マシンを、仮想マシンサーバ200に移行して稼働させることを特徴とする。
【0025】
移行元となる仮想マシンサーバ100は、仮想マシンを動作させるためのサーバである。仮想マシンサーバ100は、物理ハードウェア的には、CPU(Central Processing Unit)110と主記憶装置120と二次記憶装置130と通信装置140とを備えて構成される。
【0026】
CPU110は、四則演算や論理演算などの算術的な処理を行なうALU(Arithmetic and Logic Unit)、レジスタ、および、キャッシュメモリ等を備え、主記憶装置120や二次記憶装置130に予め記憶された各種プログラム等を読み出して実行することにより、仮想マシンサーバ100全体の動作を制御したり、複数の仮想マシンを論理的に実現する。
【0027】
主記憶装置120は、RAM(Random Access Memory)等から構成され、CPU110が動作するためのプログラムを格納したり、CPU110が動作するためのワークエリアとなる
【0028】
二次記憶装置130は、ハードディスク装置等から構成され、CPU110が動作するためのプログラムや、主記憶装置120の退避領域となるスワップファイルなどが格納される。また、二次記憶装置130は、コピー済ページリスト131と、ページ変換テーブル132とを記憶する。
【0029】
コピー済ページリスト131は、図3に示すように、仮想マシンの仮想ハードウェア(主記憶装置)上の物理アドレスに対応するページ番号(以下、PN−VMPMAとする)のリストを記憶する。コピー済ページリスト131に記憶されているページ番号が示すページに記憶されている情報(メモリページ)は、移行先の仮想マシンサーバ200への移行が完了していることを示している。
【0030】
ページ変換テーブル132は、物理ハードウェアと仮想ハードウェアとのページの対応関係を示したテーブルである。図4に示すように、ページ変換テーブル132は、仮想マシンの仮想ハードウェア(主記憶装置)上の物理アドレスに対応するページ番号(以下、PN−VMPMAとする)と、物理ハードウェア(例えば、主記憶装置120)上の物理アドレスに対応するページ番号(以下、PN−PMAとする)又は物理ディスク(例えば、二次記憶装置130)上のメモリページの記録開始位置(以下、SA−PDAとする)とを対応付けて記憶する。また、ページ変換テーブル132の各レコードには、スワップ退避フラグとコピー済フラグとが設けられている。スワップ退避フラグは、当該レコードに対応する情報が二次記憶装置130に記憶(退避)されているか否かを示すフラグである。コピー済フラグは、当該レコードに対応する情報の仮想マシンサーバ200への移行が完了しているか否かを示すフラグである。
【0031】
また、ソフトウェア的には、仮想マシンサーバ100は、仮想マシンを制御するためのハイパーバイザ160を搭載している。仮想マシンを制御するためのハイパーバイザ160は、仮想マシンサーバ100上で複数の仮想マシンを構築、制御する。
【0032】
ハイパーバイザ160は、機能的には、図2(A)に示すように、仮想マシン実行管理部161と、ハードウェア構成管理部162と、コマンド処理部163と、マイグレーション実行制御部164と、CPU制御部165と、メモリ制御部166と、ファイル制御部167と、通信制御部168の各部を備える。
【0033】
仮想マシン実行管理部161は、仮想マシンを用いて、演算処理等の各種処理を実行したり、仮想マシンの停止、起動、中断などを制御する。
【0034】
ハードウェア構成管理部162は、仮想マシンサーバ100、および、仮想マシンサーバ100で動作している仮想マシンのハードウェア構成に関する情報(例えば、CPUのクロック数、主記憶装置のサイズ、二次記憶装置の容量、通信装置の種類やポート数、等)を記憶、管理している。また、ハードウェア構成管理部162は、仮想マシンにハードウェアリソースを割り当てたり、リソースの解放を行う。
【0035】
コマンド処理部163は、ユーザからのコマンドを受信したり、コマンドの処理結果を返信する。
【0036】
マイグレーション実行制御部164は、仮想マシンの移行(マイグレーション)に関する処理の全体を制御する。
【0037】
CPU制御部165は、仮想マシンの仮想ハードウェアのCPUを制御する。また、CPU制御部は、仮想マシンのCPUのキャッシュメモリのスナップショットを取得したり、スナップショットに基づいてキャッシュメモリを設定する機能を有する。
【0038】
メモリ制御部166は、コピー済ページリスト131とページ変換テーブル132内のレコードを参照、更新、作成したりすることにより、仮想マシンの主記憶装置(メモリ)内の情報を管理、制御する。
【0039】
ファイル制御部167は、仮想マシンの二次記憶装置内の情報を管理、制御する。また、ファイル制御部167は、仮想マシンの主記憶装置に記憶されている情報を、仮想マシンの二次記憶装置に記憶(退避)させるスワップアウト処理を行う。また、ファイル制御部167は、仮想マシンの主記憶装置に記憶(退避)されている情報を、仮想マシンの二次記憶装置に戻すスワップイン処理を行う。
【0040】
通信制御部168は、他の仮想マシンと通信するための機能を有する。
【0041】
図1に戻り、通信装置140は、NIC(Network Interface Card)等から構成され、移行先の仮想マシンサーバ200等と通信するための装置である。
【0042】
また、仮想マシンサーバ100上には、複数の仮想マシンが構築されている。仮想マシンは、仮想マシンサーバ100のリソースを使用して仮想的に実現されるコンピュータである。仮想マシンの仮想ハードウェア構成(CPU、主記憶装置、二次記憶装置、通信装置)は、仮想マシンサーバ100のハードウェアリソースが割り当てられることによって実現される。また、仮想サーバ上には、OS(Operation System)、および、アプリケーションが動作している。
【0043】
仮想マシンサーバ200は、仮想マシンサーバ100と実質的に同一の構成を有する。仮想マシンサーバ200のCPU210、主記憶装置220、二次記憶装置230、コピー済ページリスト231、ページ変換テーブル232、通信装置240、OS250、および、ハイパーバイザ260は、移行元の仮想マシンサーバ100のCPU110、主記憶装置120、二次記憶装置130、コピー済ページリスト131、ページ変換テーブル132、通信装置140、OS150、および、ハイパーバイザ160と実質的に同一の機能を有するため、各部の説明は省略する。
【0044】
仮想マシンサーバ200のハイパーバイザ260の機能構成図を図2(B)に示す。ハイパーバイザ260は、機能的には、図2(B)に示すように、仮想マシン実行管理部261と、ハードウェア構成管理部262と、コマンド処理部263と、マイグレーション実行制御部264と、CPU制御部265と、メモリ制御部266と、ファイル制御部267と、通信制御部268とを備え、こららの各部は、仮想マシンサーバ100のハイパーバイザ160の仮想マシン実行管理部161と、ハードウェア構成管理部162と、コマンド処理部163と、マイグレーション実行制御部164と、CPU制御部165と、メモリ制御部166と、ファイル制御部167と、通信制御部168の各部と実質的に同一の機能を有するため、これら各部の説明は省略する。
【0045】
図1に戻り、仮想マシンサーバ200上には、複数の仮想マシンが構築されている。こららの仮想マシンは、仮想マシンサーバ100上に構築されている複数の仮想マシンと、実質的に同様な構成である。
【0046】
続いて、仮想マシンシステムの動作について説明する。
最初に、仮想マシンサーバ100から仮想マシンサーバ200に仮想マシンを移行(マイグレーション)させる、マイグレーション処理について、図5、図6を参照して説明する。
【0047】
例えば、仮想マシンサーバ100において、ユーザからのマイグレーションの開始を要求するコマンドをハイパーバイザ160のコマンド処理部163が受信すると(ステップS101)、ハイパーバイザ160のマイグレーション実行制御部164は、通信制御部168を制御して、仮想マシンサーバ200に対して、マイグレーションの開始要求を送信する(ステップS102)。なお、この開始要求には、ハードウェア構成管理部162から読み出した、仮想マシンの仮想ハードウェアの構成情報(CPUのクロック数、メモリサイズ、ハードディスク装置のサイズ、通信装置の種類やポート数等)が含まれているものとする。
【0048】
移行先の仮想マシンサーバ200のハイパーバイザ260の通信制御部268がマイグレーションの開始要求を受信すると(ステップS201)、マイグレーション実行制御部264は、該開始要求に含まれる移行対象の仮想マシンのハードウェア構成情報と、ハードウェア構成管理部262から読み出した物理ハードウェアの構成情報とを比較し、仮想マシンが仮想マシンサーバ200に移行可能であるか否かを判別する(ステップS202)。
具体的には、マイグレーション実行制御部264は、移行対象となる仮想マシンのCPUとCPU210の型番を比較して互換性があるか否かを判別したり、移行対象となる仮想マシンのハードウェア構成情報と仮想マシンサーバ200のハードウェア構成の整合性を確認したり、移行対象となる仮想マシンが要求するリソース(CPUサイクル、メモリ、スワップファイル等)を仮想マシンサーバ200で割り当て可能であるか否かを判断する等して、移行可能か否かの判別を行えばよい。
【0049】
移行が不可能であると判別した場合(ステップS202;No)、マイグレーション実行制御部264は、通信制御部268を制御して、移行不可能を示す処理結果を、移行元の仮想マシンサーバ100に送信する(ステップS204)。
【0050】
移行が可能であると判別した場合(ステップS202;Yes)ハイパーバイザ260のハードウェア構成管理部262は、ステップS201で受信したマイグレーション開始要求に含まれる仮想マシンのハードウェア構成情報に基づいて、仮想マシンの仮想ハードウェアに対してリソースの割り当てを行う(ステップS203)。そして、割り当て処理が完了すると、マイグレーション実行制御部264は、通信制御部268を制御して、リソース割り当ての完了を示す処理結果通知を仮想マシンサーバ100に送信する(ステップS204)。
【0051】
移行元の仮想マシンサーバ100のハイパーバイザ160の通信制御部168は、移行先の仮想マシンサーバ200から処理結果通知を受信する(ステップS103)。そして、ハイパーバイザ160のマイグレーション実行制御部164は、受信した処理結果通知から、仮想マシンの移行が可能であるか否かを判別する(ステップS104)。
【0052】
移行が不可能であると判別した場合(ステップS104;移行不可)、移行先へ仮想マシンを移行することは不可能となり、マイグレーション実行制御部164は、マイグレーション処理を終了する。
【0053】
移行が可能であると判別した場合(ステップS104;移行可)、マイグレーション実行制御部164は、CPU制御部165を用いて、移行対象の仮想マシンのCPUのキャッシュメモリのスナップショットを取得する(ステップS105)。そして、マイグレーション実行制御部164は、通信制御部168を制御して、取得したスナップショットを仮想マシンサーバ200に送信する(図6、ステップS106)。
【0054】
移行先の仮想マシンサーバ200のハイバーバイザ260の通信制御部268が、キャッシュメモリのスナップショットを受信すると(ステップS205)、マイグレーション実行制御部264は、受信したスナップショットに基づいて、仮想マシンのCPUのキャッシュメモリを設定する(ステップS206)。そして、キャッシュメモリの設定が完了すると、マイグレーション実行制御部264は、通信制御部268を介して、キャッシュメモリの設定が完了したことを、移行元の仮想マシンサーバ100に通知する(ステップS207)。
【0055】
移行元の仮想マシンサーバ100のハイパーバイザ160の通信制御部168がキャッシュメモリ設定の完了の通知を受信すると(ステップS107)、マイグレーション実行制御部164は、仮想マシン実行管理部161を制御して、移行対象の仮想マシンの動作を中断する(ステップS108)。
【0056】
そして、マイグレーション実行制御部164は、CPU制御部165を用いて、ステップS106のキャッシュメモリの送信中に更新された仮想マシンのCPUのキャッシュメモリの差分情報とレジスタ情報とを取得し、移行先の仮想マシンサーバ200に送信する(ステップS109)。
【0057】
移行先の仮想マシンサーバ200のハイパーバイザ260の通信制御部268が、キャッシュメモリの差分情報とレジスタ情報とを受信すると(ステップS208)、マイグレーション実行制御部264は、それらの情報に基づいて、仮想マシンのCPUのキャッシュメモリとレジスタとを設定する(ステップS209)。この設定により、移行先の仮想マシンサーバ200の仮想マシンのキャッシュメモリとレジスタの状態は、移行元の仮想マシンサーバ100の仮想マシンのキャッシュメモリとレジスタの状態と実質的に同一になる。
【0058】
続いて、マイグレーション実行制御部264は、仮想マシン実行管理部161を制御して、キャッシュメモリとレジスタを設定した仮想マシンを実行させる(ステップS210)。
【0059】
そして、仮想マシンが実行されると、マイグレーション実行制御部264は、通信制御部268を介して、その旨を示す通知を仮想マシンサーバ100に送信する(ステップS211)。仮想マシンサーバ100のハイパーバイザ160の通信制御部168が、移行先の仮想マシンサーバ200で仮想マシンが実行されたことを示す通知を受信して(ステップS110)、マイグレーション処理は終了する。
【0060】
このように、移行元の仮想マシンサーバ100で起動していた仮想マシンが移行先の仮想マシンサーバ200上に移動されて起動される。なお、この段階では、移行先の仮想マシンサーバ200で起動された仮想マシンの主記憶装置とスワップファイルの情報は移動されておらず、移行元の仮想マシンサーバ100側にある状態である。
【0061】
続いて、移行先の仮想マシンサーバ200で起動している仮想マシンで演算処理などが実行され、主記憶装置に記憶されている情報(以下、メモリ情報とする)が必要となった場合の処理について、図7〜図9を参照して説明する。
【0062】
移行先の仮想マシンサーバ200で起動している仮想マシンで演算処理などが実行され、当該仮想マシンの主記憶装置上の情報(メモリ情報)にアクセスする必要が生じた場合、まず、CPUのALUは、当該メモリ情報に対してRead/Write命令を発行する(ステップS301)。
【0063】
続いて、仮想マシンサーバ200のOSは、仮想マシンからRead/Write命令が発行されると、所定のページテーブルなどを用いて、当該Read/Write命令に設定されている仮想マシンの仮想メモリ上の読出アドレスを、仮想ハードウェア(主記憶装置)上の物理アドレスに変換する(ステップS302)。なお、説明を容易にするために、このステップS302の処理によって変換された仮想ハードウェア上の物理アドレスをVMPMA1として、以下説明する。
【0064】
続いて、仮想マシンサーバ200の仮想マシンのCPUのALUは、アクセス対象のメモリ情報が、キャッシュメモリに記憶(キャッシュ)されているか否かを判別する(ステップS303)。
【0065】
メモリ情報がキャッシュメモリに記憶されていると判別した場合(ステップS303;Yes)、CPUのALUは、そのキャッシュメモリに記憶されているメモリ情報を用いて所定の処理を実行し、処理は終了する。
【0066】
メモリ情報がキャッシュメモリに記憶されていないと判別した場合(ステップS303;No)、
【0067】
続いて、仮想マシンサーバ200のハイパーバイザ260の仮想マシン実行管理部261は、Read/Write命令の発行を検知すると、Read/Write命令による処理を一時的に停止する(ステップS304)。
【0068】
続いて、仮想マシン実行管理部261は、ステップS302で変換したVMPMA1に対応するページ番号(以下、PN−VMPMA1とする)を所定のページテーブル等から取得する。そして、仮想マシン実行管理部261は、メモリ制御部266を制御して、取得したPN−VMPMA1がコピー済ページリスト231に登録されているか否かを判別する(ステップS305)。
【0069】
PN−VMPMA1がコピー済ページリスト231に登録されていると判別した場合(ステップS305;Yes)、メモリ情報は仮想マシンサーバ200に既に存在していることとなる。続いて、仮想マシン実行管理部261は、メモリ制御部266を介して、ページ変換テーブル232を参照して、PN−VMPMA1に、物理ハードウェア(主記憶装置220)上の物理アドレスに対応するページ番号(PN−PMA1とする)と二次記憶装置230上の記録開始位置(SA−PDA1)のどちらが対応付けられているかを判別する(ステップS306)。
【0070】
PN−PMA1が対応付けられていると判別した場合(ステップS306;PN−PMA1)、仮想マシン実行管理部261は、OS250が備える所定のページテーブル等を参照して、PN−PMA1に対応した物理HW上(主記憶装置220上)の物理アドレス(PMA1)を取得する(ステップS307)。
【0071】
続いて、仮想マシン実行管理部261は、Read/Write命令に設定されているメモリ情報への読出アドレスを、取得したPMA1に変更する(ステップS308)。そして、仮想マシン実行管理部261は、ステップS304で停止した処理を再開して、Read/Write命令を実行する(ステップS309)。以上で処理は終了する。
【0072】
SA−PDA1が対応付けられていると判別した場合(ステップS306;SA−PDA1)、仮想マシン実行管理部261は、SA−PDA1が示す二次記憶装置230の記録開始位置から、1ページ分の情報(ファイル)を読み出す(ステップS310)。
【0073】
そして、仮想マシン実行管理部261は、ファイル制御部267を制御して、読み出した情報(ファイル)を主記憶装置220に保存、即ち、スワップインする(ステップS311)。
【0074】
また、仮想マシン実行管理部261は、ファイル制御部267を制御して、スワップインしたファイルの代わりに、主記憶装置220に保存されているファイルを二次記憶装置230に移動、即ち、スワップアウトする(ステップS312)。なお、スワップアウトされたファイルがスワップアウトされる前に記憶されていた主記憶装置220上の物理アドレスに対応するページ番号をPN−PMA2’として以下説明する。
【0075】
続いて、仮想マシン実行管理部261は、メモリ制御部266を制御して、ステップS311とステップS312とで実施されたスワップイン、および、スワップアウトの処理を、ページ変換テーブル232に反映させる(ステップS313)。
具体的には、仮想マシン実行管理部261は、メモリ制御部266を制御して、PN−VMPMA1と、ステップS311でスワップインしたファイルのPN−PMAとの組を、ページ変換テーブル232に新規レコードとして登録する。なお、この登録したレコードのスワップ退避フラグはFalseに、コピー済フラグはTrueに設定する(スワップインの反映)。
また、仮想マシン実行管理部261は、PN−PMA2’が登録されているページ変換テーブル132のレコードのPN−PMAを、ステップS312でスワップアウトされたファイルのSA−PDAに、また、当該レコードのスワップ退避フラグをTrueに変更する(スワップアウトの反映)。
【0076】
続いて、仮想マシン実行管理部261は、Read/Write命令に設定されているメモリ情報への読出アドレスを、スワップインされたファイルの物理ハードウェア上の物理アドレスに変換する(ステップS314)。そして、仮想マシン実行管理部261は、ステップS304で停止した処理を再開して、Read/Write命令を実行する(ステップS309)。以上で、処理は終了する。
【0077】
PN−VMPMA1がコピー済ページリスト131に登録されていないと判別した場合(ステップS305;No)、メモリ情報は、移行元の仮想マシンサーバ100に存在することとなる。そのため、仮想マシン実行管理部261は、仮想マシンのOSで使用されているページテーブル等を用いて、PN−VMPMA1から仮想HW上の物理アドレス(VMPMA1)を取得し(ステップS315)、仮想マシン実行管理部261は、通信制御部268を介して、移行元の仮想マシンサーバ100に、取得したVMPMA1を取得先としたメモリ情報の取得要求を送信する(ステップS316)。
【0078】
移行元の仮想マシンサーバ100のハイパーバイザ160の通信制御部168が、メモリ情報の取得要求を受信すると(図8、ステップS410)、マイグレーション実行制御部164は、OS150で使用されている一般的なページテーブル等を参照して、該取得要求に含まれるVMPMA1に対応するページ番号(PN−VMPMA1)を取得する(ステップS411)。
【0079】
続いて、マイグレーション実行制御部164は、メモリ制御部166を用いてページ変換テーブル132を参照し、ステップS411で取得したPN−VMPMA1に、物理ハードウェア(主記憶装置120)上の物理アドレスに対応するページ番号(以下、PN−PMA1とする)と物理ディスク(二次記憶装置130)上の記録開始位置(以下、SA−PDA1とする)のどちらが対応付けられているかを判別する(ステップS412)。
【0080】
PN−PMA1が対応付けられていると判別した場合(ステップS412;PN−PMA1)、マイグレーション実行制御部164は、OS150が使用する所定のページテーブルを参照して、PN−PMA1に対応した物理ハードウェア(主記憶装置120)上の物理アドレス(PMA1)を判別するとともに、メモリ制御部166を制御して、PMA1に格納されている情報(メモリページ)を読み出す(ステップS413)。
【0081】
続いて、マイグレーション実行制御部164は、読み出した情報(メモリページ)を移行先の仮想マシンサーバ200に送信する(ステップS414)。また、この送信が完了した後、マイグレーション実行制御部164は、ページ変換テーブル132のPN−PMA1が記憶されているレコードのコピー済フラグをTrueに更新する。
【0082】
SA−PDA1が対応付けられていると判別した場合(ステップS412;SA−PDA1)、マイグレーション実行制御部164は、ファイル制御部167を制御して、二次記憶装置130のSA−PDA1が示す記録開始位置から、1ページ分の情報(メモリページ)を読み出す(ステップS415)。そして、マイグレーション実行制御部164は、通信制御部168を介して、読み出した情報(メモリページ)を移行先の仮想マシンサーバ200に送信する(ステップS414)。また、この送信が完了した後、マイグレーション実行制御部164は、ページ変換テーブル132のSA−PDA1が記憶されているレコードのコピー済フラグをTrueに更新する。
【0083】
仮想マシンサーバ200のハイパーバイザ260の通信制御部268が、仮想マシンサーバ100から情報(メモリページ)を受信すると(図9、ステップS317)、仮想マシン実行管理部261は、受信した情報(メモリページ)を記憶するための空きページが主記憶装置220に有るか否かを判別する(ステップS318)。
【0084】
空きが主記憶装置220に有ると判別した場合(ステップS318;Yes)、仮想マシン実行管理部261は、主記憶装置220の空きページに、移行元の仮想マシンサーバ100から受信した情報(メモリページ)を記憶し(ステップS319)、処理をステップS323に移す。なお、この記憶した位置のPN−VMPMAとPN−PMAを、PN−VMPMA2とPN−PMA2として以下説明する。
【0085】
また、空きが主記憶装置220にないと判別した場合(ステップS318;No)、仮想マシン実行管理部261は、ファイル制御部267を用いて、主記憶装置220の任意のページ(PN−PMA’とする)に記憶されているメモリページを、二次記憶装置230の任意のページ(SA−PDA’とする)に退避(スワップアウト)させる(ステップS320)。
【0086】
続いて、仮想マシン実行管理部261は、メモリ制御部266を制御して、ステップS320で実施したスワップアウトの処理を、ページ変換テーブル232に反映させる(ステップS321)。具体的には、仮想マシン実行管理部261は、PN−PMA’が登録されているページ変換テーブル232のレコードの「PN−PMA/SA−PDA」をSA−PDA’に、また、当該レコードのスワップ退避フラグをTrueに変更する。
【0087】
続いて、仮想マシン実行管理部261は、メモリ制御部266を制御して、退避された空きページに、仮想マシンサーバ100から受信した情報(メモリページ)を記憶する(ステップS322)。なお、この記録した位置のPN−VMPMAとPN−PMAを、PN−VMPMA2とPN−PMA2として以下説明する。
【0088】
続いて、ステップS323において、仮想マシン実行管理部261は、メモリ制御部266を制御して、仮想マシンサーバ100から受信した情報(メモリページ)の格納先をページ変換テーブル232に登録する(ステップS323)。
具体的には、PN−VMPMA2とPN−PMA2との組を、ページ変換テーブル232に新規レコードとして登録する。なお、この登録したレコードのスワップ退避フラグはFalseに、コピー済フラグはTrueに設定する。
【0089】
続いて、仮想マシン実行管理部261は、メモリ制御部266を制御して、コピー済ページリスト231に、PN−PMA2を登録する(ステップS324)。
【0090】
そして、仮想マシン実行管理部261は、OS250に備えられている所定のページテーブル等を参照して、PN−PMA2に対応した物理ハードウェア(主記憶装置220)上の物理アドレス(PMA2)を取得する(ステップS325)。そして、仮想マシン実行管理部261は、Read/Write命令に設定されているメモリ情報への読出アドレスを、取得したPMA2に変更する(ステップS326)。そして、仮想マシン実行管理部261は、ステップS304で停止した処理を再開して、Read/Write命令を実行する(図7、ステップS309)。以上で処理は終了する。
【0091】
このように、移行先の仮想マシンサーバ200で起動している仮想マシンで演算処理などが実行され、仮想ハードウェアの主記憶装置に記憶されている情報にアクセスする必要が生じた際には、該情報が仮想マシンサーバ200にあるか否かが判別され、無い場合には、移行元の仮想マシンサーバ100で該情報が取得されて送信される。
【0092】
上述のマイグレーション処理の完了時点では、仮想マシンサーバ200に移行された仮想マシンの仮想ハードウェアの主記憶装置に関する情報は、移行元の仮想マシンサーバ100の主記憶装置120、又は二次記憶装置130のスワップファイルに記憶されている状態である。
【0093】
一般的に、仮想マシンサーバ100の主記憶装置120は、他の起動している仮想マシンで頻繁に使用されるため競合が発生し易く、パフォーマンスのボトルネックとなる可能性が高い。従って、この主記憶装置120に記憶されている移行された仮想マシンの主記憶装置の情報は、できるだけ早く解放する必要がある。
【0094】
本実施形態では、マイグレーション処理が終了した後、移行元の仮想マシンサーバ100のリソースの空き状況を監視しながら、移行された仮想マシンの主記憶装置の情報を移行先の仮想マシンサーバ200に移動させ、移動させたリソースを解放する処理(リソース解放処理)が実施される。以下、このリソース解放処理について、図10〜図12を参照して詳細に説明する。
【0095】
マイグレーション処理が終了後、移行元の仮想マシンサーバ100のハイパーバイザ160のマイグレーション実行制御部164は、OS150の機能等を使用して、CPU110の使用率を取得する(ステップS501)。
【0096】
そして、マイグレーション実行制御部164は、取得したCPU110の使用率が、所定の閾値(例えば80%)より少ないか否かを判別する(ステップS502)。
【0097】
CPU110の使用率が閾値以上であると判別した場合(ステップS502;No)、CPU110の負荷が大きすぎるため、主記憶装置120に記憶されている情報のコピーなどの以後の処理ができない。そのため、マイグレーション実行制御部164は、所定の時間(例えば500ms)だけ処理を待ち(ステップS503)、再度、CPU110の使用率の取得と、閾値を用いた判別処理(ステップS501、S502)を繰り返す。
【0098】
CPU110の使用率が閾値より少ないと判別した場合(ステップS502;Yes)、マイグレーション実行制御部164は、メモリ制御部166を制御してページ変換テーブル132を参照し、仮想マシンサーバ200に未だ移行していない仮想マシンの主記憶装置の情報(メモリページ)が有るか否かを判別する(ステップS504)。
具体的には、ページ変換テーブル132にコピー済フラグのFalseのレコードが有る場合に、未だ移行していない仮想マシンのメモリページが有る(ステップS504;Yes)、と判別すればよい。
【0099】
未だ移行していない仮想マシンのメモリページは無いと判別した場合(ステップS504;No)、仮想マシンサーバ100から仮想マシンサーバ200へのメモリページの移行は完了していることとなり、処理は終了する。
【0100】
未だ移行していないメモリページが有ると判別した場合(ステップS504;Yes)、マイグレーション実行制御部164は、メモリ制御部166を制御してページ変換テーブル132を参照し、そのメモリページが主記憶装置120に記憶されているか否かを判別する(ステップS505)。
具体的には、マイグレーション実行制御部164は、ページ変換テーブル132にコピー済フラグがFalseで、PN−PMAが対応付けられているレコードが有る場合に、メモリページは主記憶装置120に記憶されている(ステップS505;Yes)と判別すればよい。
【0101】
メモリページが主記憶装置120に記憶されていないと判別した場合(ステップS505;No)、メモリページは二次記憶装置130のスワップファイルに記憶されていることとなる。そして、仮想マシン実行管理部161は、スワップファイルのサイズ(スワップサイズ)を取得する(図12、ステップS514)。
【0102】
そして、マイグレーション実行制御部164は、取得したスワップサイズが、所定の閾値(例えば、50Mb)より小さいか否かを判別する(ステップS515)。
【0103】
スワップサイズが閾値より小さいと判別した場合(ステップS515;Yes)、処理をステップS517に移す。
【0104】
スワップサイズが閾値以上であると判別した場合(ステップS515;No)、マイグレーション実行制御部164は、移行対象となる仮想マシンの仮想ハードウェアの主記憶装置のサイズに対するスワップサイズの割合(コピー完了率)が、所定の閾値(例えば、20%)より小さいか否かを判別する(ステップS516)。
【0105】
コピー完了率が閾値以上であると判別した場合(ステップS516;No)、処理を図10のステップS503に移す。
コピー完了率が閾値より小さいと判別した場合(ステップS516;Yes)、マイグレーション実行制御部164は、処理をステップS517に移す。
【0106】
ステップS517において、マイグレーション実行制御部164は、メモリ制御部166を制御してページ変換テーブル132を参照し、主記憶装置120に記憶されている移行対象の仮想マシンのメモリページを取得する(ステップS517)。
具体的には、マイグレーション実行制御部164は、メモリ制御部166を制御して、ページ変換テーブル132にコピー済フラグがFalseで、PN−PMAが対応付けられているレコードのPN−PMAが示す主記憶装置120上のページ位置に記憶されているメモリページを取得すればよい。なお、取得したメモリページに対応するページ番号(PN−PMA)をPN−PMA””として以下説明する。
【0107】
続いて、マイグレーション実行制御部164は、ファイル制御部167を制御して、取得したメモリページを、二次記憶装置130の任意のページ(SA−PDA””とする)に退避(スワップアウト)させる(ステップS518)。
【0108】
そして、マイグレーション実行制御部164は、メモリ制御部166を制御して、ステップS518で実施したスワップアウトの処理を、ページ変換テーブル132に反映させる(ステップS519)。
具体的には、マイグレーション実行制御部164は、PN−PMA””が登録されているページ変換テーブル132のレコードのPN−PMAをSA−PDA””に、また、当該レコードのスワップ退避フラグをTrueに変更する。
【0109】
続いて、マイグレーション実行制御部164は、処理を図10のステップS503に移す。
【0110】
図10に戻り、メモリページが主記憶装置120に記憶されていると判別した場合(ステップS505;Yes)、仮想マシン実行管理部161は、OS150の機能等を用いて、仮想マシンサーバ100のネットワーク使用率を取得する(ステップS506)。
【0111】
そして、仮想マシン実行管理部161は、取得したネットワーク使用率が、所定の閾値(例えば50%)より少ないか否かを判別する(ステップS507)。
【0112】
ネットワーク使用率が閾値以上と判別した場合(ステップS507;No)、仮想マシン実行管理部161は、OS150の機能等を用いて、二次記憶装置130のディスクI/O使用率を取得する(図12、ステップS512)。
【0113】
そして、仮想マシン実行管理部161は取得したディスクI/O使用率が、所定の閾値(例えば50%)より少ないか否かを判別する(ステップS513)。
【0114】
ディスクI/O使用率が閾値以上であると判別した場合(ステップS513;No)、処理を図10のステップS503に移す。
また、ディスクI/O使用率が閾値より少ないと判別した場合(ステップS513;Yes)、仮想マシン実行管理部161は、処理を上述したステップS517に移す。
【0115】
図10に戻り、ネットワーク使用率が閾値より少ないと判別した場合(ステップS507;Yes)、仮想マシン実行管理部161は、メモリ制御部166を制御してページ変換テーブル132を参照し、主記憶装置120に記憶されている移行された仮想マシンの主記憶装置の情報(メモリページ)と、そのメモリページの仮想ハードウェア上の物理アドレスに対応したページ番号(以下、PN−VMPMA3とする)とを取得する(ステップS508)。そして、仮想マシン実行管理部161は、通信制御部168を介して、取得したメモリページとPN−VMPMA3とを、移行先の仮想マシンサーバ200に送信する(ステップS509)。
なお、具体的には、コピー済フラグがFalseでPN−PMAが対応付けられているページ変換テーブル232のレコードのPN−VMPMAをPN−VMPMA3として取得すればよい。
【0116】
移行先の仮想マシンサーバ200のハイパーバイザ260の通信制御部268が、移行元の仮想マシンサーバ100からメモリページと、該メモリページに対応するPN−VMPMA3とを受信すると(図11、ステップS601)、仮想マシン実行管理部261は、受信したメモリページを記憶するための空きページが主記憶装置220に有るか否かを判別する(ステップS602)。
【0117】
空きが主記憶装置220に有ると判別した場合(ステップS602;Yes)、仮想マシン実行管理部261は、主記憶装置220の空きページに、移行元の仮想マシンサーバ100から受信した情報(メモリページ)を記憶し(ステップS603)、処理をステップS607に移す。なお、この記憶した主記憶装置220上の物理アドレスに対応したページ番号を、PN−PMA3として以下説明する。
【0118】
また、空きが主記憶装置220にないと判別した場合(ステップS602;No)、仮想マシン実行管理部261は、ファイル制御部267を用いて、主記憶装置220の任意のページ(PN−PMA”とする)に記憶されているメモリページを、二次記憶装置230の任意のページ(SA−PDA”とする)に退避(スワップアウト)させる(ステップS604)。
【0119】
続いて、仮想マシン実行管理部261は、メモリ制御部266を制御して、ステップS604で実施したスワップアウトの処理をページ変換テーブル232に反映させる(ステップS605)。具体的には、仮想マシン実行管理部261は、PN−PMA”が登録されているページ変換テーブル132のレコードのPN−PMAをSA−PDA”に、また、当該レコードのスワップ退避フラグをTrueに変更する。
【0120】
続いて、仮想マシン実行管理部261は、メモリ制御部266を制御して、退避された空きページに、移行元の仮想マシンサーバ100から受信した情報(メモリページ)を記憶する(ステップS606)。なお、この記憶した主記憶装置220上の物理アドレスに対応したページ番号を、PN−PMA3として以下説明する。
【0121】
続いて、ステップS607において、仮想マシン実行管理部261は、メモリ制御部266を制御して、移行元の仮想マシンサーバ100から受信した情報(メモリページ)の格納先をページ変換テーブル232に登録する(ステップS607)。
具体的には、PN−VMPMA3とPN−PMA3との組を、ページ変換テーブル232に新規レコードとして登録する。なお、この登録したレコードのスワップ退避フラグはFalseに、コピー済フラグはTrueに設定する。
【0122】
続いて、仮想マシン実行管理部261は、メモリ制御部266を制御して、コピー済ページリスト231に、PN−PMA3を登録する(ステップS608)。
【0123】
続いて、仮想マシン実行管理部261は、移行元の仮想マシンサーバ100から受信したメモリページの移行が完了したことを示す処理結果を、通信制御部268を介して送信する(ステップS609)。
【0124】
移行元の仮想マシンサーバ100のハイパーバイザ160の通信制御部168が仮想マシンサーバ200からの処理結果を受信すると(図10、ステップS510)、マイグレーション実行制御部164は、ページ変換テーブル132のPN−VMPMA3のレコードのコピー済フラグをTrueに更新する(ステップS511)。そして、マイグレーション実行制御部164は、ステップS509で送信したメモリページを解放し(ステップS520)、ステップS503の処理に戻り、以降の処理を繰り返す。
【0125】
このように、仮想マシン移行後の移行元の仮想マシンサーバ100においては、CPU110の使用状況、二次記憶装置130の状態、および、ネットワーク使用率に基づいて、仮想マシンの主記憶装置の情報を仮想マシンサーバ200に送信するのか二次記憶装置130(スワップファイル)に退避するのかが判別され、判別された処理が実行される。
【0126】
なお、本発明は上記実施形態に限定されず、種々の応用及び変形が可能である。
【0127】
例えば、図13に示すように、仮想マシンサーバ100と仮想マシンサーバ200とに接続された、共有ディスク装置300をさらに備えるように仮想マシンシステムを構成してもよい。
共有ディスク装置300には、仮想マシンサーバ100から仮想マシンサーバ200に移行される仮想マシンの仮想ハードウェアの二次記憶装置の情報が記憶される。そして、この情報は仮想マシンサーバ100と仮想マシンサーバ200の両方から、仮想ハードウェアの二次記憶装置として共有利用される。そのため、仮想マシンサーバ100、200上の仮想マシンには、二次記憶装置は構成されず、仮想マシン移行の際には、二次記憶装置の移行にかかる処理時間を短縮することができる。
【0128】
また、上記実施形態では、マイグレーション処理(図5、図6)において、移行先の仮想マシンサーバ100から送信された仮想マシンのキャッシュメモリのスナップショットに基づいて、移行先の仮想マシンサーバ200の仮想マシンのキャッシュメモリを設定した。しかし、仮想マシンのキャッシュメモリの情報を外部から操作できない場合も考えられる。
【0129】
このような場合のマイグレーション処理について、図14のフローチャートを参照して説明する。なお、図14に示すフローチャートと、図5、6に示すフローチャートとで実質的に同一のステップについては、同一の符号を付し、そのステップについては簡潔に説明する。
【0130】
まず、仮想マシンサーバ100において、マイグレーション開始コマンドを受信し(ステップS101)、仮想マシンサーバ200に対して、マイグレーションの開始要求を送信する(ステップS102)。
【0131】
移行先の仮想マシンサーバ200では、開始要求を受信すると(ステップS201)、マイグレーション実行制御部264は、仮想マシンが仮想マシンサーバ200に移行可能であるか否かを判別する(ステップS202)。
【0132】
移行が不可能であると判別した場合(ステップS202;No)、移行不可能を示す処理結果を、移行元の仮想マシンサーバ100に送信する(ステップS204)。
【0133】
移行が可能であると判別した場合(ステップS202;Yes)、ハードウェア構成管理部262は、仮想マシンのハードウェア構成情報に基づいて、仮想マシンの仮想ハードウェアに対してリソースの割り当てを行う(ステップS203)。そして、割り当て処理が完了すると、マイグレーション実行制御部264は、リソース割り当ての完了を示す処理結果通知を仮想マシンサーバ100に送信する(ステップS204)。
【0134】
移行元の仮想マシンサーバ100のハイパーバイザ160の通信制御部168は、移行先の仮想マシンサーバ200から処理結果通知を受信し(ステップS103)、仮想マシンの移行が可能であるか否かを判別する(ステップS104)。
【0135】
移行が不可能であると判別した場合(ステップS104;移行不可)、マイグレーション実行制御部164は、マイグレーション処理を終了する。
【0136】
移行が可能であると判別した場合(ステップS104;移行可)、マイグレーション実行制御部164は、仮想マシン実行管理部161を制御して、移行対象の仮想マシンの動作を中断する(ステップS108)。
【0137】
続いて、マイグレーション実行制御部164は、CPU制御部165を用いて、ステップS106のキャッシュメモリの送信中に更新された仮想マシンのCPUのレジスタ情報を取得し、移行先の仮想マシンサーバ200に送信する(ステップS111)。
【0138】
移行先の仮想マシンサーバ200のハイパーバイザ260の通信制御部268が、レジスタ情報を受信すると(ステップS212)、マイグレーション実行制御部264は、それらの情報に基づいて、仮想マシンのCPUのレジスタを設定する(ステップS213)。この設定により、移行先の仮想マシンサーバ200の仮想マシンのレジスタの状態は、移行元の仮想マシンサーバ100の仮想マシンのレジスタの状態と実質的に同一になる。
【0139】
続いて、マイグレーション実行制御部264は、仮想マシン実行管理部161を制御して、レジスタを設定した仮想マシンを実行させる(ステップS210)。
【0140】
そして、仮想マシンが実行されると、マイグレーション実行制御部264は、通信制御部268を介して、その旨を示す通知を仮想マシンサーバ100に送信する(ステップS211)。仮想マシンサーバ100のハイパーバイザ160の通信制御部168が、移行先の仮想マシンサーバ200で仮想マシン実行されたことを示す通知を受信して(ステップS110)、マイグレーション処理は終了する。
【0141】
このように、このマイグレーション処理の変形例では、CPU内のキャッシュメモリの情報は移行対象とならず、レジスタの情報のみが移行される。なお、この変形例では、キャッシュメモリの情報は移行されないので、図5、図6に示したマイグレーション処理よりも、処理に時間がかからない。
【0142】
また、仮想マシンサーバ100、200は、専用のシステムによらず、通常のコンピュータシステムを用いて実現可能である。たとえば、前記の動作を実行するためのコンピュータプログラムを、コンピュータが読みとり可能な記録媒体(フレキシブルディスク、CD−ROM、DVD−ROM等)に格納して配布し、当該コンピュータプログラムをコンピュータにインストールすることにより、前述の処理を実行する装置を構成してもよい。また、インターネット等の通信ネットワーク上のサーバ装置が有する記憶装置に当該コンピュータプログラムを格納しておき、通常のコンピュータシステムがダウンロード等することで仮想マシンサーバ100、200を構成してもよい。
【0143】
また、本システムの機能を、OS(オペレーティングシステム)とアプリケーションプログラムの分担、またはOSとアプリケーションプログラムとの協働により実現する場合などには、アプリケーションプログラム部分のみを記録媒体や記憶装置に格納してもよい。
【0144】
また、その他、具体的な細部構成等についても適宜変更可能である。
【符号の説明】
【0145】
100、200 仮想マシンサーバ
110、210 CPU
120、220 主記憶装置
130、230 二次記憶装置
131、231 コピー済ページリスト
132、232 ページ変換テーブル
140、240 通信装置
【技術分野】
【0001】
本発明は、サーバ上で起動している仮想マシンを他のサーバに移行させる、仮想マシンの移行方法、サーバ、及び、プログラムに関する。
【背景技術】
【0002】
仮想マシンを実行する仮想マシンサーバに負荷が集中してパフォーマンスが低下した場合などに当該仮想マシンを他の仮想マシンサーバに移行(マイグレーション)することにより、継続的な仮想マシンの運用を可能にした技術がある(例えば、特許文献1)。
【0003】
上述の技術では、まず、移行元で動作している仮想マシンの構成情報をネットワーク等を介して移行先に転送し、その後、移行元の仮想マシンを停止し、仮想マシンのメモリイメージを移行先に転送した後、移行先の仮想マシンサーバで仮想マシンを起動する。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2008−33483号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
仮想マシンのメモリイメージは、サイズが比較的大きいため、転送に時間がかかる。そのため、仮想マシンのメモリイメージの転送が完了した後に転送先で仮想マシンを起動するのでは、仮想マシンの停止時間が長くなってしまい、上述の技術では、緊急時などに、継続的に仮想マシンを稼動させることが困難になる。
【0006】
本発明は、上記実情に鑑みてなされたものであり、仮想マシンをサーバ間で移行させる場合に、仮想マシンの停止時間を極力短くすることができる、仮想マシンの移行方法、サーバ、及び、プログラムを提供することを目的とする。
【課題を解決するための手段】
【0007】
上記目的を達成するために、本発明の第1の観点に係る仮想マシンの移行方法は、
第1のサーバで稼働している仮想マシンを、該第1のサーバと通信ネットワークを介して接続されている第2のサーバに移行させる仮想マシンの移行方法であって、
前記第1のサーバで稼働している仮想マシンの仮想ハードウェア構成情報と仮想CPU(Central Processing Unit;中央処理装置)内に記憶された記憶情報とを、前記第2のサーバに送信する送信ステップと、
前記第1のサーバで稼働している仮想マシンの稼働を停止させる停止ステップと、
前記第1のサーバにおいて、前記停止ステップによる仮想マシンの稼働の停止後に、前記送信ステップによる送信中に更新された前記記憶情報の差分情報を、前記第2のサーバに送信する差分送信ステップと、
前記第2のサーバにおいて、前記第1のサーバから送信された仮想ハードウェア構成情報と記憶情報と該記憶情報の差分情報とに基づいて、仮想マシンを構成、起動させる起動ステップと、
前記第2のサーバにおいて、前記起動ステップで起動された仮想マシンが、仮想マシン上の記憶位置と物理マシン上の記憶位置との対応関係を示す変換情報を参照して、仮想CPU以外の仮想メモリ領域に記憶されるメモリ情報を前記第1のサーバまたは前記第2のサーバから読み出すメモリ情報読出ステップと、
を備えることを特徴とする。
【0008】
前記第2のサーバにおいて、前記起動ステップで起動された仮想マシン上で前記メモリ情報が必要となる処理が実施された際に、当該処理を中断するステップと、
前記第2のサーバにおいて、前記メモリ情報の取得要求を前記第1のサーバに送信するステップと、
前記第1のサーバにおいて、前記メモリ情報の取得要求が要求するメモリ情報を取得するステップと、
前記第1のサーバにおいて、前記取得したメモリ情報を前記第2のサーバに送信するステップと、
前記第2のサーバにおいて、前記第1のサーバから送信されたメモリ情報を記憶するステップと、
前記第2のサーバにおいて、前記保存したメモリ情報を用いて中断した処理を再開して実施するステップとを備えてもよい。
【0009】
前記第1のサーバにおいて、前記第1のサーバのパフォーマンスを示すデータを取得するステップと、
前記取得したパフォーマンスを示すデータに基づいて、前記起動ステップにより前記第2のサーバ上で起動された仮想マシンの前記メモリ情報を、前記第2のサーバに送信するか否かを判別する判別ステップと、
前記判別ステップで前記メモリ情報を前記第2のサーバに送信すると判別した場合に、該メモリ情報を前記第2のサーバに送信するステップとを備えてもよい。
【0010】
前記第1のサーバにおいて、前記判別ステップで前記メモリ情報を前記第2のサーバに送信しないと判別した場合に、前記パフォーマンスを示すデータに基づいて該メモリ情報を二次記憶装置に移動させるか否かを判別する第2の判別ステップと、
前記第2の判別ステップでメモリ情報を二次記憶装置に移動させると判別した場合に、該メモリ情報を該二次記憶装置に移動させるステップとをさらに備えてもよい。
【0011】
上記目的を達成するために、本発明の第2の観点に係るサーバは、
移行元のサーバから、該サーバで稼働している仮想マシンの仮想ハードウェア構成情報と仮想CPU(Central Processing Unit;中央処理装置)内に記憶された記憶情報と該記憶情報の差分情報とを受信する受信手段と、
前記受信手段が受信した仮想ハードウェア構成情報と仮想CPU内に記憶された記憶情報とに基づいて仮想マシンを構成、起動させる起動手段と、
前記起動手段による起動した仮想マシンが、該仮想マシン上の記憶位置と物理マシン上の記憶位置との対応関係を示す変換情報を参照して、仮想CPU以外の仮想メモリ領域に記憶されるメモリ情報を自身の物理記憶領域または仮想マシンの移行元のサーバから読み出すメモリ情報読出手段と、
を備えることを特徴とする。
【0012】
上記目的を達成するために、本発明の第3の観点に係るプログラムは、
コンピュータを、
移行元のサーバから、該サーバで稼働している仮想マシンの仮想ハードウェア構成情報と仮想CPU(Central Processing Unit;中央処理装置)内に記憶された記憶情報と該記憶情報の差分情報とを受信する受信手段、
前記受信手段が受信した仮想ハードウェア構成情報と仮想CPU内に記憶された記憶情報とに基づいて仮想マシンを構成、起動させる起動手段、
前記起動手段による起動した仮想マシンが、該仮想マシン上の記憶位置と物理マシン上の記憶位置との対応関係を示す変換情報を参照して、仮想CPU以外の仮想メモリ領域に記憶されるメモリ情報を自身の物理記憶領域または仮想マシンの移行元のサーバから読み出すメモリ情報読出手段、
として機能させることを特徴とする。
【0013】
上記目的を達成するために、本発明の他の観点に係る仮想マシンの移行方法は、
第1のサーバで稼働している仮想マシンを、該第1のサーバと通信ネットワークを介して接続されている第2のサーバに移行させる仮想マシンの移行方法であって、
前記第1のサーバで稼働している仮想マシンの仮想ハードウェア構成情報とCPU (Central Processing Unit;中央処理装置)内に記憶された記憶情報とを、前記第2のサーバに送信する送信ステップと、
前記第1のサーバで稼働している仮想マシンの稼働を停止させる停止ステップと、
前記第2のサーバにおいて、前記第1のサーバから送信されたハードウェア構成情報と記憶情報とに基づいて、仮想マシンを構成、起動させる起動ステップと、
を備えることを特徴とする。
【0014】
前記第1のサーバにおいて、前記停止ステップによる仮想マシンの稼働の停止後に、前記送信ステップによる送信中に更新された前記記憶情報の差分情報を、前記第2のサーバに送信するステップをさらに備え、
前記起動ステップは、前記第1のサーバから送信されたハードウェア構成情報と記憶情報と該記憶情報の差分情報とに基づいて、仮想マシンを構成、起動させてもよい。
【0015】
前記第2のサーバにおいて、前記起動ステップで起動された仮想マシン上でメモリ情報が必要となる処理が実施された際に、当該処理を中断するステップと、
前記第2のサーバにおいて、前記メモリ情報の取得要求を前記第1のサーバに送信するステップと、
前記第1のサーバにおいて、前記メモリ情報の取得要求が要求するメモリ情報を取得するステップと、
前記第1のサーバにおいて、前記取得したメモリ情報を前記第2のサーバに送信するステップと、
前記第2のサーバにおいて、前記第1のサーバから送信されたメモリ情報を記憶するステップと、
前記第2のサーバにおいて、前記保存したメモリ情報を用いて中断した処理を再開して実施するステップとを備えてもよい。
【0016】
前記第1のサーバにおいて、前記第1のサーバのパフォーマンスを示すデータを取得するステップと、
前記取得したパフォーマンスを示すデータに基づいて、前記起動ステップにより前記第2のサーバ上で起動された仮想マシンのメモリ情報を、前記第2のサーバに送信するか否かを判別する判別ステップと、
前記判別ステップでメモリ情報を前記第2のサーバに送信すると判別した場合に、該メモリ情報を前記第2のサーバに送信するステップとを備えてもよい。
【0017】
前記第1のサーバにおいて、前記判別ステップでメモリ情報を前記第2のサーバに送信しないと判別した場合に、前記パフォーマンスを示すデータに基づいて該メモリ情報を二次記憶装置に移動させるか否かを判別する第2の判別ステップと、
前記第2の判別ステップでメモリ情報を二次記憶装置に移動させると判別した場合に、該メモリ情報を該二次記憶装置に移動させるステップとをさらに備えてもよい。
【0018】
上記目的を達成するために、本発明の他の観点に係るサーバは、
仮想マシンが稼働しているサーバであって、
前記稼働している仮想マシンを移行先となる他のサーバへ移行させる際に、該仮想マシンの仮想ハードウェア構成情報とCPU (Central Processing Unit;中央処理装置)内に記憶された記憶情報とを前記移行先となるサーバに送信する送信手段と、
前記稼働している仮想マシンの稼働を停止させる仮想マシン停止手段と、
前記送信手段による送信の処理が完了後、当該サーバのパフォーマンスを示すデータを取得するパフォーマンスデータ取得手段と、
前記パフォーマンスデータ取得手段で取得したパフォーマンスを示すデータに基づいて、前記仮想マシンのメモリ情報を前記移行先となるサーバに送信するか否かを判別する判別手段と、
メモリ情報を前記移行先となるサーバに送信すると判別した場合に、該メモリ情報を該移行先となるサーバに送信するメモリ情報送信手段と、
を備えることを特徴とする。
【0019】
上記目的を達成するために、本発明の他の観点に係るサーバは、
仮想マシンが稼働しているサーバであって、
前記稼働している仮想マシン上でメモリ情報が必要となる処理が実施された際に、当該処理を中断する仮想マシン中断手段と、
前記メモリ情報の取得要求を前記仮想マシンの移行元であるサーバに送信するメモリ取得要求送信手段と、
前記仮想マシンの移行元であるサーバから送信されたメモリ情報を記憶するメモリ情報記憶手段と、
前記メモリ情報記憶手段で記憶したメモリ情報を用いて中断した処理を再開して実施する処理再開実施手段と、
を備えることを特徴とする。
【0020】
上記目的を達成するために、本発明の他の観点に係るプログラムは、
仮想マシンが稼働しているコンピュータを、
前記稼働している仮想マシンを移行先となるサーバへ移行させる際に、該仮想マシンの仮想ハードウェア構成情報とCPU (Central Processing Unit;中央処理装置)内に記憶された記憶情報とを前記移行先となるサーバに送信する送信手段、
前記稼働している仮想マシンの稼働を停止させる仮想マシン停止手段、
前記送信手段による送信の処理が完了後、当該サーバのパフォーマンスを示すデータを取得するパフォーマンスデータ取得手段、
前記パフォーマンスデータ取得手段で取得したパフォーマンスを示すデータに基づいて、前記仮想マシンのメモリ情報を前記移行先となるサーバに送信するか否かを判別する判別手段、
前記判別手段でメモリ情報を前記移行先となるサーバに送信すると判別した場合に、該メモリ情報を該移行先となるサーバに送信するメモリ情報送信手段、
として機能させることを特徴とする。
【0021】
上記目的を達成するために、本発明の他の観点に係るプログラムは、
仮想マシンが稼働しているコンピュータを、
前記稼働している仮想マシン上でメモリ情報が必要となる処理が実施された際に、当該処理を中断する仮想マシン中断手段、
前記メモリ情報の取得要求を前記仮想マシンの移行元であるサーバに送信するメモリ取得要求送信手段、
前記仮想マシンの移行元であるサーバから送信された前記メモリ情報を記憶するメモリ情報記憶手段、
前記メモリ情報記憶手段で記憶したメモリ情報を用いて中断した処理を再開して実施する処理再開実施手段、
として機能させることを特徴とする。
【発明の効果】
【0022】
本発明によれば、CPU内に記憶された記憶情報が移動された時点で、移行先のサーバ上で仮想マシンは起動する。そのため、仮想マシンを仮想マシンサーバ間で移行させる場合に、停止時間を極力短くすることができる。
【図面の簡単な説明】
【0023】
【図1】本発明の実施形態に係る仮想マシンシステムの構成図である。
【図2】ハイパーバイザの機能構成図である。
【図3】コピー済ページリストの構成例を示す図である。
【図4】ページ変換テーブルの構成例を示す図である。
【図5】マイグレーション処理を説明するためのフローチャートである。
【図6】マイグレーション処理を説明するためのフローチャートである。
【図7】移行先の仮想マシンでメモリ情報が必要となった場合の処理を説明するためのフローチャートである。
【図8】移行先の仮想マシンでメモリ情報が必要となった場合の処理を説明するためのフローチャートである。
【図9】移行先の仮想マシンでメモリ情報が必要となった場合の処理を説明するためのフローチャートである。
【図10】リソース解放処理を説明するためのフローチャートである。
【図11】リソース解放処理を説明するためのフローチャートである。
【図12】リソース解放処理を説明するためのフローチャートである。
【図13】共有ディスク装置が新たに備えられた仮想マシンシステムの構成図である。
【図14】マイグレーション処理の変形例を説明するためのフローチャートである。
【発明を実施するための形態】
【0024】
以下、本発明の実施形態に係る仮想マシンシステムについて、図面を参照して説明する。
本発明の実施形態に係る仮想マシンシステムは、図1に示すように、LAN等のネットワークを介して相互に接続された、仮想マシンサーバ100と仮想マシンサーバ200とを備えて構成される。仮想マシンシステムは、仮想マシンサーバ100で稼働している仮想マシンを、仮想マシンサーバ200に移行して稼働させることを特徴とする。
【0025】
移行元となる仮想マシンサーバ100は、仮想マシンを動作させるためのサーバである。仮想マシンサーバ100は、物理ハードウェア的には、CPU(Central Processing Unit)110と主記憶装置120と二次記憶装置130と通信装置140とを備えて構成される。
【0026】
CPU110は、四則演算や論理演算などの算術的な処理を行なうALU(Arithmetic and Logic Unit)、レジスタ、および、キャッシュメモリ等を備え、主記憶装置120や二次記憶装置130に予め記憶された各種プログラム等を読み出して実行することにより、仮想マシンサーバ100全体の動作を制御したり、複数の仮想マシンを論理的に実現する。
【0027】
主記憶装置120は、RAM(Random Access Memory)等から構成され、CPU110が動作するためのプログラムを格納したり、CPU110が動作するためのワークエリアとなる
【0028】
二次記憶装置130は、ハードディスク装置等から構成され、CPU110が動作するためのプログラムや、主記憶装置120の退避領域となるスワップファイルなどが格納される。また、二次記憶装置130は、コピー済ページリスト131と、ページ変換テーブル132とを記憶する。
【0029】
コピー済ページリスト131は、図3に示すように、仮想マシンの仮想ハードウェア(主記憶装置)上の物理アドレスに対応するページ番号(以下、PN−VMPMAとする)のリストを記憶する。コピー済ページリスト131に記憶されているページ番号が示すページに記憶されている情報(メモリページ)は、移行先の仮想マシンサーバ200への移行が完了していることを示している。
【0030】
ページ変換テーブル132は、物理ハードウェアと仮想ハードウェアとのページの対応関係を示したテーブルである。図4に示すように、ページ変換テーブル132は、仮想マシンの仮想ハードウェア(主記憶装置)上の物理アドレスに対応するページ番号(以下、PN−VMPMAとする)と、物理ハードウェア(例えば、主記憶装置120)上の物理アドレスに対応するページ番号(以下、PN−PMAとする)又は物理ディスク(例えば、二次記憶装置130)上のメモリページの記録開始位置(以下、SA−PDAとする)とを対応付けて記憶する。また、ページ変換テーブル132の各レコードには、スワップ退避フラグとコピー済フラグとが設けられている。スワップ退避フラグは、当該レコードに対応する情報が二次記憶装置130に記憶(退避)されているか否かを示すフラグである。コピー済フラグは、当該レコードに対応する情報の仮想マシンサーバ200への移行が完了しているか否かを示すフラグである。
【0031】
また、ソフトウェア的には、仮想マシンサーバ100は、仮想マシンを制御するためのハイパーバイザ160を搭載している。仮想マシンを制御するためのハイパーバイザ160は、仮想マシンサーバ100上で複数の仮想マシンを構築、制御する。
【0032】
ハイパーバイザ160は、機能的には、図2(A)に示すように、仮想マシン実行管理部161と、ハードウェア構成管理部162と、コマンド処理部163と、マイグレーション実行制御部164と、CPU制御部165と、メモリ制御部166と、ファイル制御部167と、通信制御部168の各部を備える。
【0033】
仮想マシン実行管理部161は、仮想マシンを用いて、演算処理等の各種処理を実行したり、仮想マシンの停止、起動、中断などを制御する。
【0034】
ハードウェア構成管理部162は、仮想マシンサーバ100、および、仮想マシンサーバ100で動作している仮想マシンのハードウェア構成に関する情報(例えば、CPUのクロック数、主記憶装置のサイズ、二次記憶装置の容量、通信装置の種類やポート数、等)を記憶、管理している。また、ハードウェア構成管理部162は、仮想マシンにハードウェアリソースを割り当てたり、リソースの解放を行う。
【0035】
コマンド処理部163は、ユーザからのコマンドを受信したり、コマンドの処理結果を返信する。
【0036】
マイグレーション実行制御部164は、仮想マシンの移行(マイグレーション)に関する処理の全体を制御する。
【0037】
CPU制御部165は、仮想マシンの仮想ハードウェアのCPUを制御する。また、CPU制御部は、仮想マシンのCPUのキャッシュメモリのスナップショットを取得したり、スナップショットに基づいてキャッシュメモリを設定する機能を有する。
【0038】
メモリ制御部166は、コピー済ページリスト131とページ変換テーブル132内のレコードを参照、更新、作成したりすることにより、仮想マシンの主記憶装置(メモリ)内の情報を管理、制御する。
【0039】
ファイル制御部167は、仮想マシンの二次記憶装置内の情報を管理、制御する。また、ファイル制御部167は、仮想マシンの主記憶装置に記憶されている情報を、仮想マシンの二次記憶装置に記憶(退避)させるスワップアウト処理を行う。また、ファイル制御部167は、仮想マシンの主記憶装置に記憶(退避)されている情報を、仮想マシンの二次記憶装置に戻すスワップイン処理を行う。
【0040】
通信制御部168は、他の仮想マシンと通信するための機能を有する。
【0041】
図1に戻り、通信装置140は、NIC(Network Interface Card)等から構成され、移行先の仮想マシンサーバ200等と通信するための装置である。
【0042】
また、仮想マシンサーバ100上には、複数の仮想マシンが構築されている。仮想マシンは、仮想マシンサーバ100のリソースを使用して仮想的に実現されるコンピュータである。仮想マシンの仮想ハードウェア構成(CPU、主記憶装置、二次記憶装置、通信装置)は、仮想マシンサーバ100のハードウェアリソースが割り当てられることによって実現される。また、仮想サーバ上には、OS(Operation System)、および、アプリケーションが動作している。
【0043】
仮想マシンサーバ200は、仮想マシンサーバ100と実質的に同一の構成を有する。仮想マシンサーバ200のCPU210、主記憶装置220、二次記憶装置230、コピー済ページリスト231、ページ変換テーブル232、通信装置240、OS250、および、ハイパーバイザ260は、移行元の仮想マシンサーバ100のCPU110、主記憶装置120、二次記憶装置130、コピー済ページリスト131、ページ変換テーブル132、通信装置140、OS150、および、ハイパーバイザ160と実質的に同一の機能を有するため、各部の説明は省略する。
【0044】
仮想マシンサーバ200のハイパーバイザ260の機能構成図を図2(B)に示す。ハイパーバイザ260は、機能的には、図2(B)に示すように、仮想マシン実行管理部261と、ハードウェア構成管理部262と、コマンド処理部263と、マイグレーション実行制御部264と、CPU制御部265と、メモリ制御部266と、ファイル制御部267と、通信制御部268とを備え、こららの各部は、仮想マシンサーバ100のハイパーバイザ160の仮想マシン実行管理部161と、ハードウェア構成管理部162と、コマンド処理部163と、マイグレーション実行制御部164と、CPU制御部165と、メモリ制御部166と、ファイル制御部167と、通信制御部168の各部と実質的に同一の機能を有するため、これら各部の説明は省略する。
【0045】
図1に戻り、仮想マシンサーバ200上には、複数の仮想マシンが構築されている。こららの仮想マシンは、仮想マシンサーバ100上に構築されている複数の仮想マシンと、実質的に同様な構成である。
【0046】
続いて、仮想マシンシステムの動作について説明する。
最初に、仮想マシンサーバ100から仮想マシンサーバ200に仮想マシンを移行(マイグレーション)させる、マイグレーション処理について、図5、図6を参照して説明する。
【0047】
例えば、仮想マシンサーバ100において、ユーザからのマイグレーションの開始を要求するコマンドをハイパーバイザ160のコマンド処理部163が受信すると(ステップS101)、ハイパーバイザ160のマイグレーション実行制御部164は、通信制御部168を制御して、仮想マシンサーバ200に対して、マイグレーションの開始要求を送信する(ステップS102)。なお、この開始要求には、ハードウェア構成管理部162から読み出した、仮想マシンの仮想ハードウェアの構成情報(CPUのクロック数、メモリサイズ、ハードディスク装置のサイズ、通信装置の種類やポート数等)が含まれているものとする。
【0048】
移行先の仮想マシンサーバ200のハイパーバイザ260の通信制御部268がマイグレーションの開始要求を受信すると(ステップS201)、マイグレーション実行制御部264は、該開始要求に含まれる移行対象の仮想マシンのハードウェア構成情報と、ハードウェア構成管理部262から読み出した物理ハードウェアの構成情報とを比較し、仮想マシンが仮想マシンサーバ200に移行可能であるか否かを判別する(ステップS202)。
具体的には、マイグレーション実行制御部264は、移行対象となる仮想マシンのCPUとCPU210の型番を比較して互換性があるか否かを判別したり、移行対象となる仮想マシンのハードウェア構成情報と仮想マシンサーバ200のハードウェア構成の整合性を確認したり、移行対象となる仮想マシンが要求するリソース(CPUサイクル、メモリ、スワップファイル等)を仮想マシンサーバ200で割り当て可能であるか否かを判断する等して、移行可能か否かの判別を行えばよい。
【0049】
移行が不可能であると判別した場合(ステップS202;No)、マイグレーション実行制御部264は、通信制御部268を制御して、移行不可能を示す処理結果を、移行元の仮想マシンサーバ100に送信する(ステップS204)。
【0050】
移行が可能であると判別した場合(ステップS202;Yes)ハイパーバイザ260のハードウェア構成管理部262は、ステップS201で受信したマイグレーション開始要求に含まれる仮想マシンのハードウェア構成情報に基づいて、仮想マシンの仮想ハードウェアに対してリソースの割り当てを行う(ステップS203)。そして、割り当て処理が完了すると、マイグレーション実行制御部264は、通信制御部268を制御して、リソース割り当ての完了を示す処理結果通知を仮想マシンサーバ100に送信する(ステップS204)。
【0051】
移行元の仮想マシンサーバ100のハイパーバイザ160の通信制御部168は、移行先の仮想マシンサーバ200から処理結果通知を受信する(ステップS103)。そして、ハイパーバイザ160のマイグレーション実行制御部164は、受信した処理結果通知から、仮想マシンの移行が可能であるか否かを判別する(ステップS104)。
【0052】
移行が不可能であると判別した場合(ステップS104;移行不可)、移行先へ仮想マシンを移行することは不可能となり、マイグレーション実行制御部164は、マイグレーション処理を終了する。
【0053】
移行が可能であると判別した場合(ステップS104;移行可)、マイグレーション実行制御部164は、CPU制御部165を用いて、移行対象の仮想マシンのCPUのキャッシュメモリのスナップショットを取得する(ステップS105)。そして、マイグレーション実行制御部164は、通信制御部168を制御して、取得したスナップショットを仮想マシンサーバ200に送信する(図6、ステップS106)。
【0054】
移行先の仮想マシンサーバ200のハイバーバイザ260の通信制御部268が、キャッシュメモリのスナップショットを受信すると(ステップS205)、マイグレーション実行制御部264は、受信したスナップショットに基づいて、仮想マシンのCPUのキャッシュメモリを設定する(ステップS206)。そして、キャッシュメモリの設定が完了すると、マイグレーション実行制御部264は、通信制御部268を介して、キャッシュメモリの設定が完了したことを、移行元の仮想マシンサーバ100に通知する(ステップS207)。
【0055】
移行元の仮想マシンサーバ100のハイパーバイザ160の通信制御部168がキャッシュメモリ設定の完了の通知を受信すると(ステップS107)、マイグレーション実行制御部164は、仮想マシン実行管理部161を制御して、移行対象の仮想マシンの動作を中断する(ステップS108)。
【0056】
そして、マイグレーション実行制御部164は、CPU制御部165を用いて、ステップS106のキャッシュメモリの送信中に更新された仮想マシンのCPUのキャッシュメモリの差分情報とレジスタ情報とを取得し、移行先の仮想マシンサーバ200に送信する(ステップS109)。
【0057】
移行先の仮想マシンサーバ200のハイパーバイザ260の通信制御部268が、キャッシュメモリの差分情報とレジスタ情報とを受信すると(ステップS208)、マイグレーション実行制御部264は、それらの情報に基づいて、仮想マシンのCPUのキャッシュメモリとレジスタとを設定する(ステップS209)。この設定により、移行先の仮想マシンサーバ200の仮想マシンのキャッシュメモリとレジスタの状態は、移行元の仮想マシンサーバ100の仮想マシンのキャッシュメモリとレジスタの状態と実質的に同一になる。
【0058】
続いて、マイグレーション実行制御部264は、仮想マシン実行管理部161を制御して、キャッシュメモリとレジスタを設定した仮想マシンを実行させる(ステップS210)。
【0059】
そして、仮想マシンが実行されると、マイグレーション実行制御部264は、通信制御部268を介して、その旨を示す通知を仮想マシンサーバ100に送信する(ステップS211)。仮想マシンサーバ100のハイパーバイザ160の通信制御部168が、移行先の仮想マシンサーバ200で仮想マシンが実行されたことを示す通知を受信して(ステップS110)、マイグレーション処理は終了する。
【0060】
このように、移行元の仮想マシンサーバ100で起動していた仮想マシンが移行先の仮想マシンサーバ200上に移動されて起動される。なお、この段階では、移行先の仮想マシンサーバ200で起動された仮想マシンの主記憶装置とスワップファイルの情報は移動されておらず、移行元の仮想マシンサーバ100側にある状態である。
【0061】
続いて、移行先の仮想マシンサーバ200で起動している仮想マシンで演算処理などが実行され、主記憶装置に記憶されている情報(以下、メモリ情報とする)が必要となった場合の処理について、図7〜図9を参照して説明する。
【0062】
移行先の仮想マシンサーバ200で起動している仮想マシンで演算処理などが実行され、当該仮想マシンの主記憶装置上の情報(メモリ情報)にアクセスする必要が生じた場合、まず、CPUのALUは、当該メモリ情報に対してRead/Write命令を発行する(ステップS301)。
【0063】
続いて、仮想マシンサーバ200のOSは、仮想マシンからRead/Write命令が発行されると、所定のページテーブルなどを用いて、当該Read/Write命令に設定されている仮想マシンの仮想メモリ上の読出アドレスを、仮想ハードウェア(主記憶装置)上の物理アドレスに変換する(ステップS302)。なお、説明を容易にするために、このステップS302の処理によって変換された仮想ハードウェア上の物理アドレスをVMPMA1として、以下説明する。
【0064】
続いて、仮想マシンサーバ200の仮想マシンのCPUのALUは、アクセス対象のメモリ情報が、キャッシュメモリに記憶(キャッシュ)されているか否かを判別する(ステップS303)。
【0065】
メモリ情報がキャッシュメモリに記憶されていると判別した場合(ステップS303;Yes)、CPUのALUは、そのキャッシュメモリに記憶されているメモリ情報を用いて所定の処理を実行し、処理は終了する。
【0066】
メモリ情報がキャッシュメモリに記憶されていないと判別した場合(ステップS303;No)、
【0067】
続いて、仮想マシンサーバ200のハイパーバイザ260の仮想マシン実行管理部261は、Read/Write命令の発行を検知すると、Read/Write命令による処理を一時的に停止する(ステップS304)。
【0068】
続いて、仮想マシン実行管理部261は、ステップS302で変換したVMPMA1に対応するページ番号(以下、PN−VMPMA1とする)を所定のページテーブル等から取得する。そして、仮想マシン実行管理部261は、メモリ制御部266を制御して、取得したPN−VMPMA1がコピー済ページリスト231に登録されているか否かを判別する(ステップS305)。
【0069】
PN−VMPMA1がコピー済ページリスト231に登録されていると判別した場合(ステップS305;Yes)、メモリ情報は仮想マシンサーバ200に既に存在していることとなる。続いて、仮想マシン実行管理部261は、メモリ制御部266を介して、ページ変換テーブル232を参照して、PN−VMPMA1に、物理ハードウェア(主記憶装置220)上の物理アドレスに対応するページ番号(PN−PMA1とする)と二次記憶装置230上の記録開始位置(SA−PDA1)のどちらが対応付けられているかを判別する(ステップS306)。
【0070】
PN−PMA1が対応付けられていると判別した場合(ステップS306;PN−PMA1)、仮想マシン実行管理部261は、OS250が備える所定のページテーブル等を参照して、PN−PMA1に対応した物理HW上(主記憶装置220上)の物理アドレス(PMA1)を取得する(ステップS307)。
【0071】
続いて、仮想マシン実行管理部261は、Read/Write命令に設定されているメモリ情報への読出アドレスを、取得したPMA1に変更する(ステップS308)。そして、仮想マシン実行管理部261は、ステップS304で停止した処理を再開して、Read/Write命令を実行する(ステップS309)。以上で処理は終了する。
【0072】
SA−PDA1が対応付けられていると判別した場合(ステップS306;SA−PDA1)、仮想マシン実行管理部261は、SA−PDA1が示す二次記憶装置230の記録開始位置から、1ページ分の情報(ファイル)を読み出す(ステップS310)。
【0073】
そして、仮想マシン実行管理部261は、ファイル制御部267を制御して、読み出した情報(ファイル)を主記憶装置220に保存、即ち、スワップインする(ステップS311)。
【0074】
また、仮想マシン実行管理部261は、ファイル制御部267を制御して、スワップインしたファイルの代わりに、主記憶装置220に保存されているファイルを二次記憶装置230に移動、即ち、スワップアウトする(ステップS312)。なお、スワップアウトされたファイルがスワップアウトされる前に記憶されていた主記憶装置220上の物理アドレスに対応するページ番号をPN−PMA2’として以下説明する。
【0075】
続いて、仮想マシン実行管理部261は、メモリ制御部266を制御して、ステップS311とステップS312とで実施されたスワップイン、および、スワップアウトの処理を、ページ変換テーブル232に反映させる(ステップS313)。
具体的には、仮想マシン実行管理部261は、メモリ制御部266を制御して、PN−VMPMA1と、ステップS311でスワップインしたファイルのPN−PMAとの組を、ページ変換テーブル232に新規レコードとして登録する。なお、この登録したレコードのスワップ退避フラグはFalseに、コピー済フラグはTrueに設定する(スワップインの反映)。
また、仮想マシン実行管理部261は、PN−PMA2’が登録されているページ変換テーブル132のレコードのPN−PMAを、ステップS312でスワップアウトされたファイルのSA−PDAに、また、当該レコードのスワップ退避フラグをTrueに変更する(スワップアウトの反映)。
【0076】
続いて、仮想マシン実行管理部261は、Read/Write命令に設定されているメモリ情報への読出アドレスを、スワップインされたファイルの物理ハードウェア上の物理アドレスに変換する(ステップS314)。そして、仮想マシン実行管理部261は、ステップS304で停止した処理を再開して、Read/Write命令を実行する(ステップS309)。以上で、処理は終了する。
【0077】
PN−VMPMA1がコピー済ページリスト131に登録されていないと判別した場合(ステップS305;No)、メモリ情報は、移行元の仮想マシンサーバ100に存在することとなる。そのため、仮想マシン実行管理部261は、仮想マシンのOSで使用されているページテーブル等を用いて、PN−VMPMA1から仮想HW上の物理アドレス(VMPMA1)を取得し(ステップS315)、仮想マシン実行管理部261は、通信制御部268を介して、移行元の仮想マシンサーバ100に、取得したVMPMA1を取得先としたメモリ情報の取得要求を送信する(ステップS316)。
【0078】
移行元の仮想マシンサーバ100のハイパーバイザ160の通信制御部168が、メモリ情報の取得要求を受信すると(図8、ステップS410)、マイグレーション実行制御部164は、OS150で使用されている一般的なページテーブル等を参照して、該取得要求に含まれるVMPMA1に対応するページ番号(PN−VMPMA1)を取得する(ステップS411)。
【0079】
続いて、マイグレーション実行制御部164は、メモリ制御部166を用いてページ変換テーブル132を参照し、ステップS411で取得したPN−VMPMA1に、物理ハードウェア(主記憶装置120)上の物理アドレスに対応するページ番号(以下、PN−PMA1とする)と物理ディスク(二次記憶装置130)上の記録開始位置(以下、SA−PDA1とする)のどちらが対応付けられているかを判別する(ステップS412)。
【0080】
PN−PMA1が対応付けられていると判別した場合(ステップS412;PN−PMA1)、マイグレーション実行制御部164は、OS150が使用する所定のページテーブルを参照して、PN−PMA1に対応した物理ハードウェア(主記憶装置120)上の物理アドレス(PMA1)を判別するとともに、メモリ制御部166を制御して、PMA1に格納されている情報(メモリページ)を読み出す(ステップS413)。
【0081】
続いて、マイグレーション実行制御部164は、読み出した情報(メモリページ)を移行先の仮想マシンサーバ200に送信する(ステップS414)。また、この送信が完了した後、マイグレーション実行制御部164は、ページ変換テーブル132のPN−PMA1が記憶されているレコードのコピー済フラグをTrueに更新する。
【0082】
SA−PDA1が対応付けられていると判別した場合(ステップS412;SA−PDA1)、マイグレーション実行制御部164は、ファイル制御部167を制御して、二次記憶装置130のSA−PDA1が示す記録開始位置から、1ページ分の情報(メモリページ)を読み出す(ステップS415)。そして、マイグレーション実行制御部164は、通信制御部168を介して、読み出した情報(メモリページ)を移行先の仮想マシンサーバ200に送信する(ステップS414)。また、この送信が完了した後、マイグレーション実行制御部164は、ページ変換テーブル132のSA−PDA1が記憶されているレコードのコピー済フラグをTrueに更新する。
【0083】
仮想マシンサーバ200のハイパーバイザ260の通信制御部268が、仮想マシンサーバ100から情報(メモリページ)を受信すると(図9、ステップS317)、仮想マシン実行管理部261は、受信した情報(メモリページ)を記憶するための空きページが主記憶装置220に有るか否かを判別する(ステップS318)。
【0084】
空きが主記憶装置220に有ると判別した場合(ステップS318;Yes)、仮想マシン実行管理部261は、主記憶装置220の空きページに、移行元の仮想マシンサーバ100から受信した情報(メモリページ)を記憶し(ステップS319)、処理をステップS323に移す。なお、この記憶した位置のPN−VMPMAとPN−PMAを、PN−VMPMA2とPN−PMA2として以下説明する。
【0085】
また、空きが主記憶装置220にないと判別した場合(ステップS318;No)、仮想マシン実行管理部261は、ファイル制御部267を用いて、主記憶装置220の任意のページ(PN−PMA’とする)に記憶されているメモリページを、二次記憶装置230の任意のページ(SA−PDA’とする)に退避(スワップアウト)させる(ステップS320)。
【0086】
続いて、仮想マシン実行管理部261は、メモリ制御部266を制御して、ステップS320で実施したスワップアウトの処理を、ページ変換テーブル232に反映させる(ステップS321)。具体的には、仮想マシン実行管理部261は、PN−PMA’が登録されているページ変換テーブル232のレコードの「PN−PMA/SA−PDA」をSA−PDA’に、また、当該レコードのスワップ退避フラグをTrueに変更する。
【0087】
続いて、仮想マシン実行管理部261は、メモリ制御部266を制御して、退避された空きページに、仮想マシンサーバ100から受信した情報(メモリページ)を記憶する(ステップS322)。なお、この記録した位置のPN−VMPMAとPN−PMAを、PN−VMPMA2とPN−PMA2として以下説明する。
【0088】
続いて、ステップS323において、仮想マシン実行管理部261は、メモリ制御部266を制御して、仮想マシンサーバ100から受信した情報(メモリページ)の格納先をページ変換テーブル232に登録する(ステップS323)。
具体的には、PN−VMPMA2とPN−PMA2との組を、ページ変換テーブル232に新規レコードとして登録する。なお、この登録したレコードのスワップ退避フラグはFalseに、コピー済フラグはTrueに設定する。
【0089】
続いて、仮想マシン実行管理部261は、メモリ制御部266を制御して、コピー済ページリスト231に、PN−PMA2を登録する(ステップS324)。
【0090】
そして、仮想マシン実行管理部261は、OS250に備えられている所定のページテーブル等を参照して、PN−PMA2に対応した物理ハードウェア(主記憶装置220)上の物理アドレス(PMA2)を取得する(ステップS325)。そして、仮想マシン実行管理部261は、Read/Write命令に設定されているメモリ情報への読出アドレスを、取得したPMA2に変更する(ステップS326)。そして、仮想マシン実行管理部261は、ステップS304で停止した処理を再開して、Read/Write命令を実行する(図7、ステップS309)。以上で処理は終了する。
【0091】
このように、移行先の仮想マシンサーバ200で起動している仮想マシンで演算処理などが実行され、仮想ハードウェアの主記憶装置に記憶されている情報にアクセスする必要が生じた際には、該情報が仮想マシンサーバ200にあるか否かが判別され、無い場合には、移行元の仮想マシンサーバ100で該情報が取得されて送信される。
【0092】
上述のマイグレーション処理の完了時点では、仮想マシンサーバ200に移行された仮想マシンの仮想ハードウェアの主記憶装置に関する情報は、移行元の仮想マシンサーバ100の主記憶装置120、又は二次記憶装置130のスワップファイルに記憶されている状態である。
【0093】
一般的に、仮想マシンサーバ100の主記憶装置120は、他の起動している仮想マシンで頻繁に使用されるため競合が発生し易く、パフォーマンスのボトルネックとなる可能性が高い。従って、この主記憶装置120に記憶されている移行された仮想マシンの主記憶装置の情報は、できるだけ早く解放する必要がある。
【0094】
本実施形態では、マイグレーション処理が終了した後、移行元の仮想マシンサーバ100のリソースの空き状況を監視しながら、移行された仮想マシンの主記憶装置の情報を移行先の仮想マシンサーバ200に移動させ、移動させたリソースを解放する処理(リソース解放処理)が実施される。以下、このリソース解放処理について、図10〜図12を参照して詳細に説明する。
【0095】
マイグレーション処理が終了後、移行元の仮想マシンサーバ100のハイパーバイザ160のマイグレーション実行制御部164は、OS150の機能等を使用して、CPU110の使用率を取得する(ステップS501)。
【0096】
そして、マイグレーション実行制御部164は、取得したCPU110の使用率が、所定の閾値(例えば80%)より少ないか否かを判別する(ステップS502)。
【0097】
CPU110の使用率が閾値以上であると判別した場合(ステップS502;No)、CPU110の負荷が大きすぎるため、主記憶装置120に記憶されている情報のコピーなどの以後の処理ができない。そのため、マイグレーション実行制御部164は、所定の時間(例えば500ms)だけ処理を待ち(ステップS503)、再度、CPU110の使用率の取得と、閾値を用いた判別処理(ステップS501、S502)を繰り返す。
【0098】
CPU110の使用率が閾値より少ないと判別した場合(ステップS502;Yes)、マイグレーション実行制御部164は、メモリ制御部166を制御してページ変換テーブル132を参照し、仮想マシンサーバ200に未だ移行していない仮想マシンの主記憶装置の情報(メモリページ)が有るか否かを判別する(ステップS504)。
具体的には、ページ変換テーブル132にコピー済フラグのFalseのレコードが有る場合に、未だ移行していない仮想マシンのメモリページが有る(ステップS504;Yes)、と判別すればよい。
【0099】
未だ移行していない仮想マシンのメモリページは無いと判別した場合(ステップS504;No)、仮想マシンサーバ100から仮想マシンサーバ200へのメモリページの移行は完了していることとなり、処理は終了する。
【0100】
未だ移行していないメモリページが有ると判別した場合(ステップS504;Yes)、マイグレーション実行制御部164は、メモリ制御部166を制御してページ変換テーブル132を参照し、そのメモリページが主記憶装置120に記憶されているか否かを判別する(ステップS505)。
具体的には、マイグレーション実行制御部164は、ページ変換テーブル132にコピー済フラグがFalseで、PN−PMAが対応付けられているレコードが有る場合に、メモリページは主記憶装置120に記憶されている(ステップS505;Yes)と判別すればよい。
【0101】
メモリページが主記憶装置120に記憶されていないと判別した場合(ステップS505;No)、メモリページは二次記憶装置130のスワップファイルに記憶されていることとなる。そして、仮想マシン実行管理部161は、スワップファイルのサイズ(スワップサイズ)を取得する(図12、ステップS514)。
【0102】
そして、マイグレーション実行制御部164は、取得したスワップサイズが、所定の閾値(例えば、50Mb)より小さいか否かを判別する(ステップS515)。
【0103】
スワップサイズが閾値より小さいと判別した場合(ステップS515;Yes)、処理をステップS517に移す。
【0104】
スワップサイズが閾値以上であると判別した場合(ステップS515;No)、マイグレーション実行制御部164は、移行対象となる仮想マシンの仮想ハードウェアの主記憶装置のサイズに対するスワップサイズの割合(コピー完了率)が、所定の閾値(例えば、20%)より小さいか否かを判別する(ステップS516)。
【0105】
コピー完了率が閾値以上であると判別した場合(ステップS516;No)、処理を図10のステップS503に移す。
コピー完了率が閾値より小さいと判別した場合(ステップS516;Yes)、マイグレーション実行制御部164は、処理をステップS517に移す。
【0106】
ステップS517において、マイグレーション実行制御部164は、メモリ制御部166を制御してページ変換テーブル132を参照し、主記憶装置120に記憶されている移行対象の仮想マシンのメモリページを取得する(ステップS517)。
具体的には、マイグレーション実行制御部164は、メモリ制御部166を制御して、ページ変換テーブル132にコピー済フラグがFalseで、PN−PMAが対応付けられているレコードのPN−PMAが示す主記憶装置120上のページ位置に記憶されているメモリページを取得すればよい。なお、取得したメモリページに対応するページ番号(PN−PMA)をPN−PMA””として以下説明する。
【0107】
続いて、マイグレーション実行制御部164は、ファイル制御部167を制御して、取得したメモリページを、二次記憶装置130の任意のページ(SA−PDA””とする)に退避(スワップアウト)させる(ステップS518)。
【0108】
そして、マイグレーション実行制御部164は、メモリ制御部166を制御して、ステップS518で実施したスワップアウトの処理を、ページ変換テーブル132に反映させる(ステップS519)。
具体的には、マイグレーション実行制御部164は、PN−PMA””が登録されているページ変換テーブル132のレコードのPN−PMAをSA−PDA””に、また、当該レコードのスワップ退避フラグをTrueに変更する。
【0109】
続いて、マイグレーション実行制御部164は、処理を図10のステップS503に移す。
【0110】
図10に戻り、メモリページが主記憶装置120に記憶されていると判別した場合(ステップS505;Yes)、仮想マシン実行管理部161は、OS150の機能等を用いて、仮想マシンサーバ100のネットワーク使用率を取得する(ステップS506)。
【0111】
そして、仮想マシン実行管理部161は、取得したネットワーク使用率が、所定の閾値(例えば50%)より少ないか否かを判別する(ステップS507)。
【0112】
ネットワーク使用率が閾値以上と判別した場合(ステップS507;No)、仮想マシン実行管理部161は、OS150の機能等を用いて、二次記憶装置130のディスクI/O使用率を取得する(図12、ステップS512)。
【0113】
そして、仮想マシン実行管理部161は取得したディスクI/O使用率が、所定の閾値(例えば50%)より少ないか否かを判別する(ステップS513)。
【0114】
ディスクI/O使用率が閾値以上であると判別した場合(ステップS513;No)、処理を図10のステップS503に移す。
また、ディスクI/O使用率が閾値より少ないと判別した場合(ステップS513;Yes)、仮想マシン実行管理部161は、処理を上述したステップS517に移す。
【0115】
図10に戻り、ネットワーク使用率が閾値より少ないと判別した場合(ステップS507;Yes)、仮想マシン実行管理部161は、メモリ制御部166を制御してページ変換テーブル132を参照し、主記憶装置120に記憶されている移行された仮想マシンの主記憶装置の情報(メモリページ)と、そのメモリページの仮想ハードウェア上の物理アドレスに対応したページ番号(以下、PN−VMPMA3とする)とを取得する(ステップS508)。そして、仮想マシン実行管理部161は、通信制御部168を介して、取得したメモリページとPN−VMPMA3とを、移行先の仮想マシンサーバ200に送信する(ステップS509)。
なお、具体的には、コピー済フラグがFalseでPN−PMAが対応付けられているページ変換テーブル232のレコードのPN−VMPMAをPN−VMPMA3として取得すればよい。
【0116】
移行先の仮想マシンサーバ200のハイパーバイザ260の通信制御部268が、移行元の仮想マシンサーバ100からメモリページと、該メモリページに対応するPN−VMPMA3とを受信すると(図11、ステップS601)、仮想マシン実行管理部261は、受信したメモリページを記憶するための空きページが主記憶装置220に有るか否かを判別する(ステップS602)。
【0117】
空きが主記憶装置220に有ると判別した場合(ステップS602;Yes)、仮想マシン実行管理部261は、主記憶装置220の空きページに、移行元の仮想マシンサーバ100から受信した情報(メモリページ)を記憶し(ステップS603)、処理をステップS607に移す。なお、この記憶した主記憶装置220上の物理アドレスに対応したページ番号を、PN−PMA3として以下説明する。
【0118】
また、空きが主記憶装置220にないと判別した場合(ステップS602;No)、仮想マシン実行管理部261は、ファイル制御部267を用いて、主記憶装置220の任意のページ(PN−PMA”とする)に記憶されているメモリページを、二次記憶装置230の任意のページ(SA−PDA”とする)に退避(スワップアウト)させる(ステップS604)。
【0119】
続いて、仮想マシン実行管理部261は、メモリ制御部266を制御して、ステップS604で実施したスワップアウトの処理をページ変換テーブル232に反映させる(ステップS605)。具体的には、仮想マシン実行管理部261は、PN−PMA”が登録されているページ変換テーブル132のレコードのPN−PMAをSA−PDA”に、また、当該レコードのスワップ退避フラグをTrueに変更する。
【0120】
続いて、仮想マシン実行管理部261は、メモリ制御部266を制御して、退避された空きページに、移行元の仮想マシンサーバ100から受信した情報(メモリページ)を記憶する(ステップS606)。なお、この記憶した主記憶装置220上の物理アドレスに対応したページ番号を、PN−PMA3として以下説明する。
【0121】
続いて、ステップS607において、仮想マシン実行管理部261は、メモリ制御部266を制御して、移行元の仮想マシンサーバ100から受信した情報(メモリページ)の格納先をページ変換テーブル232に登録する(ステップS607)。
具体的には、PN−VMPMA3とPN−PMA3との組を、ページ変換テーブル232に新規レコードとして登録する。なお、この登録したレコードのスワップ退避フラグはFalseに、コピー済フラグはTrueに設定する。
【0122】
続いて、仮想マシン実行管理部261は、メモリ制御部266を制御して、コピー済ページリスト231に、PN−PMA3を登録する(ステップS608)。
【0123】
続いて、仮想マシン実行管理部261は、移行元の仮想マシンサーバ100から受信したメモリページの移行が完了したことを示す処理結果を、通信制御部268を介して送信する(ステップS609)。
【0124】
移行元の仮想マシンサーバ100のハイパーバイザ160の通信制御部168が仮想マシンサーバ200からの処理結果を受信すると(図10、ステップS510)、マイグレーション実行制御部164は、ページ変換テーブル132のPN−VMPMA3のレコードのコピー済フラグをTrueに更新する(ステップS511)。そして、マイグレーション実行制御部164は、ステップS509で送信したメモリページを解放し(ステップS520)、ステップS503の処理に戻り、以降の処理を繰り返す。
【0125】
このように、仮想マシン移行後の移行元の仮想マシンサーバ100においては、CPU110の使用状況、二次記憶装置130の状態、および、ネットワーク使用率に基づいて、仮想マシンの主記憶装置の情報を仮想マシンサーバ200に送信するのか二次記憶装置130(スワップファイル)に退避するのかが判別され、判別された処理が実行される。
【0126】
なお、本発明は上記実施形態に限定されず、種々の応用及び変形が可能である。
【0127】
例えば、図13に示すように、仮想マシンサーバ100と仮想マシンサーバ200とに接続された、共有ディスク装置300をさらに備えるように仮想マシンシステムを構成してもよい。
共有ディスク装置300には、仮想マシンサーバ100から仮想マシンサーバ200に移行される仮想マシンの仮想ハードウェアの二次記憶装置の情報が記憶される。そして、この情報は仮想マシンサーバ100と仮想マシンサーバ200の両方から、仮想ハードウェアの二次記憶装置として共有利用される。そのため、仮想マシンサーバ100、200上の仮想マシンには、二次記憶装置は構成されず、仮想マシン移行の際には、二次記憶装置の移行にかかる処理時間を短縮することができる。
【0128】
また、上記実施形態では、マイグレーション処理(図5、図6)において、移行先の仮想マシンサーバ100から送信された仮想マシンのキャッシュメモリのスナップショットに基づいて、移行先の仮想マシンサーバ200の仮想マシンのキャッシュメモリを設定した。しかし、仮想マシンのキャッシュメモリの情報を外部から操作できない場合も考えられる。
【0129】
このような場合のマイグレーション処理について、図14のフローチャートを参照して説明する。なお、図14に示すフローチャートと、図5、6に示すフローチャートとで実質的に同一のステップについては、同一の符号を付し、そのステップについては簡潔に説明する。
【0130】
まず、仮想マシンサーバ100において、マイグレーション開始コマンドを受信し(ステップS101)、仮想マシンサーバ200に対して、マイグレーションの開始要求を送信する(ステップS102)。
【0131】
移行先の仮想マシンサーバ200では、開始要求を受信すると(ステップS201)、マイグレーション実行制御部264は、仮想マシンが仮想マシンサーバ200に移行可能であるか否かを判別する(ステップS202)。
【0132】
移行が不可能であると判別した場合(ステップS202;No)、移行不可能を示す処理結果を、移行元の仮想マシンサーバ100に送信する(ステップS204)。
【0133】
移行が可能であると判別した場合(ステップS202;Yes)、ハードウェア構成管理部262は、仮想マシンのハードウェア構成情報に基づいて、仮想マシンの仮想ハードウェアに対してリソースの割り当てを行う(ステップS203)。そして、割り当て処理が完了すると、マイグレーション実行制御部264は、リソース割り当ての完了を示す処理結果通知を仮想マシンサーバ100に送信する(ステップS204)。
【0134】
移行元の仮想マシンサーバ100のハイパーバイザ160の通信制御部168は、移行先の仮想マシンサーバ200から処理結果通知を受信し(ステップS103)、仮想マシンの移行が可能であるか否かを判別する(ステップS104)。
【0135】
移行が不可能であると判別した場合(ステップS104;移行不可)、マイグレーション実行制御部164は、マイグレーション処理を終了する。
【0136】
移行が可能であると判別した場合(ステップS104;移行可)、マイグレーション実行制御部164は、仮想マシン実行管理部161を制御して、移行対象の仮想マシンの動作を中断する(ステップS108)。
【0137】
続いて、マイグレーション実行制御部164は、CPU制御部165を用いて、ステップS106のキャッシュメモリの送信中に更新された仮想マシンのCPUのレジスタ情報を取得し、移行先の仮想マシンサーバ200に送信する(ステップS111)。
【0138】
移行先の仮想マシンサーバ200のハイパーバイザ260の通信制御部268が、レジスタ情報を受信すると(ステップS212)、マイグレーション実行制御部264は、それらの情報に基づいて、仮想マシンのCPUのレジスタを設定する(ステップS213)。この設定により、移行先の仮想マシンサーバ200の仮想マシンのレジスタの状態は、移行元の仮想マシンサーバ100の仮想マシンのレジスタの状態と実質的に同一になる。
【0139】
続いて、マイグレーション実行制御部264は、仮想マシン実行管理部161を制御して、レジスタを設定した仮想マシンを実行させる(ステップS210)。
【0140】
そして、仮想マシンが実行されると、マイグレーション実行制御部264は、通信制御部268を介して、その旨を示す通知を仮想マシンサーバ100に送信する(ステップS211)。仮想マシンサーバ100のハイパーバイザ160の通信制御部168が、移行先の仮想マシンサーバ200で仮想マシン実行されたことを示す通知を受信して(ステップS110)、マイグレーション処理は終了する。
【0141】
このように、このマイグレーション処理の変形例では、CPU内のキャッシュメモリの情報は移行対象とならず、レジスタの情報のみが移行される。なお、この変形例では、キャッシュメモリの情報は移行されないので、図5、図6に示したマイグレーション処理よりも、処理に時間がかからない。
【0142】
また、仮想マシンサーバ100、200は、専用のシステムによらず、通常のコンピュータシステムを用いて実現可能である。たとえば、前記の動作を実行するためのコンピュータプログラムを、コンピュータが読みとり可能な記録媒体(フレキシブルディスク、CD−ROM、DVD−ROM等)に格納して配布し、当該コンピュータプログラムをコンピュータにインストールすることにより、前述の処理を実行する装置を構成してもよい。また、インターネット等の通信ネットワーク上のサーバ装置が有する記憶装置に当該コンピュータプログラムを格納しておき、通常のコンピュータシステムがダウンロード等することで仮想マシンサーバ100、200を構成してもよい。
【0143】
また、本システムの機能を、OS(オペレーティングシステム)とアプリケーションプログラムの分担、またはOSとアプリケーションプログラムとの協働により実現する場合などには、アプリケーションプログラム部分のみを記録媒体や記憶装置に格納してもよい。
【0144】
また、その他、具体的な細部構成等についても適宜変更可能である。
【符号の説明】
【0145】
100、200 仮想マシンサーバ
110、210 CPU
120、220 主記憶装置
130、230 二次記憶装置
131、231 コピー済ページリスト
132、232 ページ変換テーブル
140、240 通信装置
【特許請求の範囲】
【請求項1】
第1のサーバで稼働している仮想マシンを、該第1のサーバと通信ネットワークを介して接続されている第2のサーバに移行させる仮想マシンの移行方法であって、
前記第1のサーバで稼働している仮想マシンの仮想ハードウェア構成情報と仮想CPU(Central Processing Unit;中央処理装置)内に記憶された記憶情報とを、前記第2のサーバに送信する送信ステップと、
前記第1のサーバで稼働している仮想マシンの稼働を停止させる停止ステップと、
前記第1のサーバにおいて、前記停止ステップによる仮想マシンの稼働の停止後に、前記送信ステップによる送信中に更新された前記記憶情報の差分情報を、前記第2のサーバに送信する差分送信ステップと、
前記第2のサーバにおいて、前記第1のサーバから送信された仮想ハードウェア構成情報と記憶情報と該記憶情報の差分情報とに基づいて、仮想マシンを構成、起動させる起動ステップと、
前記第2のサーバにおいて、前記起動ステップで起動された仮想マシンが、仮想マシン上の記憶位置と物理マシン上の記憶位置との対応関係を示す変換情報を参照して、仮想CPU以外の仮想メモリ領域に記憶されるメモリ情報を前記第1のサーバまたは前記第2のサーバから読み出すメモリ情報読出ステップと、
を備えることを特徴とする、仮想マシンの移行方法。
【請求項2】
前記第2のサーバにおいて、前記起動ステップで起動された仮想マシン上で前記メモリ情報が必要となる処理が実施された際に、当該処理を中断するステップと、
前記第2のサーバにおいて、前記メモリ情報の取得要求を前記第1のサーバに送信するステップと、
前記第1のサーバにおいて、前記メモリ情報の取得要求が要求するメモリ情報を取得するステップと、
前記第1のサーバにおいて、前記取得したメモリ情報を前記第2のサーバに送信するステップと、
前記第2のサーバにおいて、前記第1のサーバから送信されたメモリ情報を記憶するステップと、
前記第2のサーバにおいて、前記保存したメモリ情報を用いて中断した処理を再開して実施するステップと、
を備えることを特徴とする、請求項1に記載の仮想マシンの移行方法。
【請求項3】
前記第1のサーバにおいて、前記第1のサーバのパフォーマンスを示すデータを取得するステップと、
前記取得したパフォーマンスを示すデータに基づいて、前記起動ステップにより前記第2のサーバ上で起動された仮想マシンの前記メモリ情報を、前記第2のサーバに送信するか否かを判別する判別ステップと、
前記判別ステップで前記メモリ情報を前記第2のサーバに送信すると判別した場合に、該メモリ情報を前記第2のサーバに送信するステップと、
を備えることを特徴とする、請求項1又は2に記載の仮想マシンの移行方法。
【請求項4】
前記第1のサーバにおいて、前記判別ステップで前記メモリ情報を前記第2のサーバに送信しないと判別した場合に、前記パフォーマンスを示すデータに基づいて該メモリ情報を二次記憶装置に移動させるか否かを判別する第2の判別ステップと、
前記第2の判別ステップでメモリ情報を二次記憶装置に移動させると判別した場合に、該メモリ情報を該二次記憶装置に移動させるステップと、
をさらに備えることを特徴とする、請求項3に記載の仮想マシンの移行方法。
【請求項5】
移行元のサーバから、該サーバで稼働している仮想マシンの仮想ハードウェア構成情報と仮想CPU(Central Processing Unit;中央処理装置)内に記憶された記憶情報と該記憶情報の差分情報とを受信する受信手段と、
前記受信手段が受信した仮想ハードウェア構成情報と仮想CPU内に記憶された記憶情報とに基づいて仮想マシンを構成、起動させる起動手段と、
前記起動手段による起動した仮想マシンが、該仮想マシン上の記憶位置と物理マシン上の記憶位置との対応関係を示す変換情報を参照して、仮想CPU以外の仮想メモリ領域に記憶されるメモリ情報を自身の物理記憶領域または仮想マシンの移行元のサーバから読み出すメモリ情報読出手段と、
を備えることを特徴とするサーバ。
【請求項6】
コンピュータを、
移行元のサーバから、該サーバで稼働している仮想マシンの仮想ハードウェア構成情報と仮想CPU(Central Processing Unit;中央処理装置)内に記憶された記憶情報と該記憶情報の差分情報とを受信する受信手段、
前記受信手段が受信した仮想ハードウェア構成情報と仮想CPU内に記憶された記憶情報とに基づいて仮想マシンを構成、起動させる起動手段、
前記起動手段による起動した仮想マシンが、該仮想マシン上の記憶位置と物理マシン上の記憶位置との対応関係を示す変換情報を参照して、仮想CPU以外の仮想メモリ領域に記憶されるメモリ情報を自身の物理記憶領域または仮想マシンの移行元のサーバから読み出すメモリ情報読出手段、
として機能させるプログラム。
【請求項1】
第1のサーバで稼働している仮想マシンを、該第1のサーバと通信ネットワークを介して接続されている第2のサーバに移行させる仮想マシンの移行方法であって、
前記第1のサーバで稼働している仮想マシンの仮想ハードウェア構成情報と仮想CPU(Central Processing Unit;中央処理装置)内に記憶された記憶情報とを、前記第2のサーバに送信する送信ステップと、
前記第1のサーバで稼働している仮想マシンの稼働を停止させる停止ステップと、
前記第1のサーバにおいて、前記停止ステップによる仮想マシンの稼働の停止後に、前記送信ステップによる送信中に更新された前記記憶情報の差分情報を、前記第2のサーバに送信する差分送信ステップと、
前記第2のサーバにおいて、前記第1のサーバから送信された仮想ハードウェア構成情報と記憶情報と該記憶情報の差分情報とに基づいて、仮想マシンを構成、起動させる起動ステップと、
前記第2のサーバにおいて、前記起動ステップで起動された仮想マシンが、仮想マシン上の記憶位置と物理マシン上の記憶位置との対応関係を示す変換情報を参照して、仮想CPU以外の仮想メモリ領域に記憶されるメモリ情報を前記第1のサーバまたは前記第2のサーバから読み出すメモリ情報読出ステップと、
を備えることを特徴とする、仮想マシンの移行方法。
【請求項2】
前記第2のサーバにおいて、前記起動ステップで起動された仮想マシン上で前記メモリ情報が必要となる処理が実施された際に、当該処理を中断するステップと、
前記第2のサーバにおいて、前記メモリ情報の取得要求を前記第1のサーバに送信するステップと、
前記第1のサーバにおいて、前記メモリ情報の取得要求が要求するメモリ情報を取得するステップと、
前記第1のサーバにおいて、前記取得したメモリ情報を前記第2のサーバに送信するステップと、
前記第2のサーバにおいて、前記第1のサーバから送信されたメモリ情報を記憶するステップと、
前記第2のサーバにおいて、前記保存したメモリ情報を用いて中断した処理を再開して実施するステップと、
を備えることを特徴とする、請求項1に記載の仮想マシンの移行方法。
【請求項3】
前記第1のサーバにおいて、前記第1のサーバのパフォーマンスを示すデータを取得するステップと、
前記取得したパフォーマンスを示すデータに基づいて、前記起動ステップにより前記第2のサーバ上で起動された仮想マシンの前記メモリ情報を、前記第2のサーバに送信するか否かを判別する判別ステップと、
前記判別ステップで前記メモリ情報を前記第2のサーバに送信すると判別した場合に、該メモリ情報を前記第2のサーバに送信するステップと、
を備えることを特徴とする、請求項1又は2に記載の仮想マシンの移行方法。
【請求項4】
前記第1のサーバにおいて、前記判別ステップで前記メモリ情報を前記第2のサーバに送信しないと判別した場合に、前記パフォーマンスを示すデータに基づいて該メモリ情報を二次記憶装置に移動させるか否かを判別する第2の判別ステップと、
前記第2の判別ステップでメモリ情報を二次記憶装置に移動させると判別した場合に、該メモリ情報を該二次記憶装置に移動させるステップと、
をさらに備えることを特徴とする、請求項3に記載の仮想マシンの移行方法。
【請求項5】
移行元のサーバから、該サーバで稼働している仮想マシンの仮想ハードウェア構成情報と仮想CPU(Central Processing Unit;中央処理装置)内に記憶された記憶情報と該記憶情報の差分情報とを受信する受信手段と、
前記受信手段が受信した仮想ハードウェア構成情報と仮想CPU内に記憶された記憶情報とに基づいて仮想マシンを構成、起動させる起動手段と、
前記起動手段による起動した仮想マシンが、該仮想マシン上の記憶位置と物理マシン上の記憶位置との対応関係を示す変換情報を参照して、仮想CPU以外の仮想メモリ領域に記憶されるメモリ情報を自身の物理記憶領域または仮想マシンの移行元のサーバから読み出すメモリ情報読出手段と、
を備えることを特徴とするサーバ。
【請求項6】
コンピュータを、
移行元のサーバから、該サーバで稼働している仮想マシンの仮想ハードウェア構成情報と仮想CPU(Central Processing Unit;中央処理装置)内に記憶された記憶情報と該記憶情報の差分情報とを受信する受信手段、
前記受信手段が受信した仮想ハードウェア構成情報と仮想CPU内に記憶された記憶情報とに基づいて仮想マシンを構成、起動させる起動手段、
前記起動手段による起動した仮想マシンが、該仮想マシン上の記憶位置と物理マシン上の記憶位置との対応関係を示す変換情報を参照して、仮想CPU以外の仮想メモリ領域に記憶されるメモリ情報を自身の物理記憶領域または仮想マシンの移行元のサーバから読み出すメモリ情報読出手段、
として機能させるプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【公開番号】特開2012−234564(P2012−234564A)
【公開日】平成24年11月29日(2012.11.29)
【国際特許分類】
【出願番号】特願2012−173216(P2012−173216)
【出願日】平成24年8月3日(2012.8.3)
【分割の表示】特願2008−310120(P2008−310120)の分割
【原出願日】平成20年12月4日(2008.12.4)
【出願人】(000102728)株式会社エヌ・ティ・ティ・データ (438)
【公開日】平成24年11月29日(2012.11.29)
【国際特許分類】
【出願日】平成24年8月3日(2012.8.3)
【分割の表示】特願2008−310120(P2008−310120)の分割
【原出願日】平成20年12月4日(2008.12.4)
【出願人】(000102728)株式会社エヌ・ティ・ティ・データ (438)
[ Back to top ]