(57)【要約】  仮想マシン処理システム（１０）のメモリ保持部（１０６）は第一計算機（１００）のメモリイメージ（ＩＭＧ）を保持しておく。更新記録部（２０３）は、移送された仮想マシン（ＶＭ）を第二計算機（２００）の仮想マシン実行部（２０２）が実行して更新された、メモリイメージ（ＩＭＧ１）の部分領域を示す更新情報（ＵＤ）を記録する。返送部（１６０）は、アンドゥ要求を受け付けると、更新情報（ＵＤ）が示す部分データ（ＰＤ）を第二計算機（２００）から第一計算機（１００）に送信する。第一計算機（１００）の仮想マシン実行部（１０２）は、メモリ保持部（１０６）に保持されたメモリイメージ（ＩＭＧ）と、第二計算機（２００）より受信した部分データ（ＰＤ）と、を用いて仮想マシン（ＶＭ）の継続処理を実行する。
2011093051.tif 000002
【特許請求の範囲】
【請求項１】
仮想マシンのメモリイメージを記憶する仮想マシン記憶手段と、前記仮想マシンを実行して前記メモリイメージを更新する仮想マシン実行手段と、をそれぞれ備え、互いにネットワークを介して接続された第一計算機および第二計算機と、
前記第一計算機の前記仮想マシン実行手段が実行している仮想マシンのメモリイメージを前記第二計算機に送信して前記仮想マシンを前記第一計算機から前記第二計算機に移送する移送手段と、
前記第一計算機の前記仮想マシン記憶手段に記憶されたメモリイメージを保持しておくメモリ保持手段と、
移送された前記仮想マシンを前記第二計算機の前記仮想マシン実行手段が実行して更新された、前記メモリイメージの部分領域を示す更新情報を記録する更新記録手段と、
移送された前記仮想マシンを前記第二計算機から前記第一計算機に戻すアンドゥ要求を受け付けると、前記更新記録手段を参照して、前記更新情報が示す前記部分領域のデータを前記第二計算機から前記第一計算機に送信する返送手段と、を含み、
前記第一計算機の前記仮想マシン実行手段が、前記メモリ保持手段に保持された前記メモリイメージと、前記第二計算機より受信した前記部分領域のデータと、を用いて前記仮想マシンの継続処理を実行する仮想マシン処理システム。
【請求項２】
前記メモリ保持手段は、
前記移送手段による前記仮想マシンの移送が完了したことを示す完了情報を受信し、さらに、保持している前記メモリイメージを破棄する破棄条件が前記完了情報の受信後に満たされた場合に、前記メモリイメージを破棄することを特徴とする請求項１に記載の仮想マシン処理システム。
【請求項３】
前記破棄条件が、
前記第一計算機のメモリの空き領域が所定以下となったとき、
前記完了情報を受信してから所定時間が経過したとき、
前記更新記録手段による前記更新情報の記録が終了したことを示す記録終了通知を受信したとき、または
保持している前記メモリイメージを破棄する要求を受け付けたとき、
のいずれか一以上である請求項２に記載の仮想マシン処理システム。
【請求項４】
前記メモリ保持手段が前記メモリイメージを破棄したことを示すメモリ破棄通知を前記第二計算機に送信する請求項３に記載の仮想マシン処理システム。
【請求項５】
前記更新記録手段は、
移送された前記仮想マシンの実行を前記第二計算機の前記仮想マシン実行手段が開始してから所定時間が経過したとき、
前記メモリイメージを破棄したことを示すメモリ破棄通知を受信したとき、または
前記更新情報の記録を終了する要求を受け付けたとき、
のいずれか一以上の記録終了条件が満たされた場合に、前記更新情報の記録を終了することを特徴とする請求項１から４のいずれかに記載の仮想マシン処理システム。
【請求項６】
前記更新記録手段は、前記更新情報の記録を終了したことを示す記録終了通知を前記第一計算機に送信する請求項５に記載の仮想マシン処理システム。
【請求項７】
前記第一計算機が、前記部分領域のデータを前記第二計算機から受信した後に前記継続処理の実行を開始することを特徴とする請求項１から６のいずれかに記載の仮想マシン処理システム。
【請求項８】
前記返送手段が前記部分領域のデータを前記第一計算機に送信する間に、前記第二計算機は前記仮想マシンの実行を継続して前記メモリイメージを追加更新し、
前記返送手段は、前記メモリイメージのうち追加更新された部分領域のデータを、前記第一計算機にさらに送信する請求項７に記載の仮想マシン処理システム。
【請求項９】
前記アンドゥ要求を受け付けた前記第一計算機は、前記メモリ保持手段に保持されている前記メモリイメージを用いて前記仮想マシンを実行して当該メモリイメージの一部を更新した後に、更新された当該メモリイメージと、前記第二計算機より受信した前記部分領域のデータと、を用いて前記仮想マシンの継続処理を実行することを特徴とする請求項１から６のいずれかに記載の仮想マシン処理システム。
【請求項１０】
前記アンドゥ要求を受け付けた前記返送手段は、前記更新記録手段に記録されている前記更新情報を前記第一計算機に送信し、
前記第一計算機は、前記メモリ保持手段に保持されている前記メモリイメージのうち前記更新情報が示す以外の領域を更新した後に、前記部分領域のデータを受信して前記仮想マシンの継続処理を実行する請求項９に記載の仮想マシン処理システム。
【請求項１１】
前記メモリ保持手段は、前記第二計算機の前記仮想マシン記憶手段に記憶された他のメモリイメージをさらに保持し、
前記更新記録手段は、前記第一計算機の前記仮想マシン実行手段により更新された、前記メモリイメージの部分領域を示す他の更新情報をさらに記録することを特徴とする請求項１から１０のいずれかに記載の仮想マシン処理システム。
【請求項１２】
前記仮想マシンの前記継続処理が実行された後に、当該仮想マシンをさらに前記第一計算機から前記第二計算機に戻すリドゥ要求を受け付けると、
前記移送手段は、前記更新記録手段を参照して、前記他の更新情報が示す前記部分領域のデータを前記第一計算機から前記第二計算機に送信し、
前記第二計算機の前記仮想マシン実行手段は、前記メモリ保持手段に保持された前記他のメモリイメージと、前記第一計算機より受信した前記部分領域のデータと、を用いて前記仮想マシンを再び実行する請求項１１に記載の仮想マシン処理システム。
【請求項１３】
第一計算機が実行している仮想マシンのメモリイメージを第二計算機に送信して、前記仮想マシンを前記第一計算機から前記第二計算機に移送する移送ステップと、
前記第一計算機の前記メモリイメージを保持しておくメモリ保持ステップと、
移送された前記仮想マシンを前記第二計算機が実行して更新された、前記メモリイメージの部分領域を示す更新情報を記録する更新記録ステップと、
移送された前記仮想マシンを前記第二計算機から前記第一計算機に戻すアンドゥステップと、を含み、かつ、
前記アンドゥステップが、
記録された前記更新情報が示す前記部分領域のデータを前記第二計算機から前記第一計算機に送信する返送ステップと、
保持された前記第一計算機の前記メモリイメージと、送信された前記部分領域のデータと、を用いて、前記第一計算機で前記仮想マシンの継続処理を実行する継続実行ステップと、
を含む仮想マシン処理方法。
【請求項１４】
前記アンドゥステップにおいて、前記返送ステップを一回または複数回おこなった後に前記継続実行ステップを行うことを特徴とする請求項１３に記載の仮想マシン処理方法。
【請求項１５】
前記アンドゥステップにおいて、保持された前記第一計算機の前記メモリイメージを用いて前記第一計算機が前記仮想マシンを実行した後に前記返送ステップをおこなうことを特徴とする請求項１３に記載の仮想マシン処理方法。
【請求項１６】
前記アンドゥステップが、
前記更新情報を前記第一計算機に送信する更新情報送信ステップと、
保持された前記第一計算機の前記メモリイメージを用いて前記第一計算機が前記仮想マシンを実行し、当該メモリイメージのうち前記更新情報が示す以外の領域を更新する先行処理ステップと、をさらに含み、
前記返送ステップで送信された前記部分領域のデータと、前記先行処理ステップにて更新された前記メモリイメージと、を用いて前記継続実行ステップをおこなうことを特徴とする請求項１５に記載の仮想マシン処理方法。
【請求項１７】
ネットワークを介して接続された他の計算機から、前記他の計算機が実行している仮想マシンのメモリイメージを受信して前記仮想マシンの移送を受け付ける受信手段と、
受信した前記メモリイメージを記憶する仮想マシン記憶手段と、
移送された前記仮想マシンを実行して、記憶された前記メモリイメージを更新する仮想マシン実行手段と、
記憶された前記メモリイメージのうち前記仮想マシン実行手段によって更新された部分領域を示す更新情報を記録する更新記録手段と、
移送された前記仮想マシンを前記他の計算機に戻すアンドゥ要求を受け付けると、前記更新記録手段を参照して、前記更新情報が示す前記部分領域のデータを前記他の計算機に送信する送信手段と、
を含む計算機。
【請求項１８】
仮想マシンを実行する仮想マシン実行手段を有する計算機にデータ処理を実行させるコンピュータプログラムを前記計算機に読み出し可能に格納した記憶媒体であって、
前記データ処理が、
ネットワークを介して接続された他の計算機から、前記他の計算機が実行している仮想マシンのメモリイメージを受信して前記仮想マシンの移送を受け付ける受信処理と、
受信した前記メモリイメージを記憶する仮想マシン記憶処理と、
移送された前記仮想マシンを実行して、記憶された前記メモリイメージを更新する仮想マシン実行処理と、
記憶された前記メモリイメージのうち前記仮想マシン実行手段によって更新された部分領域を示す更新情報を記録する更新記録処理と、
移送された前記仮想マシンを前記他の計算機に戻すアンドゥ要求を受け付けると、前記更新情報が示す前記部分領域のデータを前記他の計算機に送信する送信処理と、
を含むこと特徴とする記憶媒体。
【請求項１９】
仮想マシンのメモリイメージを記憶する仮想マシン記憶手段と、
前記仮想マシンを実行して前記メモリイメージを更新する仮想マシン実行手段と、
ネットワークを介して接続された他の計算機に前記メモリイメージを送信して前記仮想マシンを移送する送信手段と、
前記メモリイメージのうち他の計算機で更新された部分領域のデータを受信する受信手段と、
を含み、
前記仮想マシン記憶手段が、移送された前記仮想マシンにかかるメモリイメージを保持し、
前記仮想マシン実行手段が、保持された前記メモリイメージと、受信した前記部分領域のデータと、を用いて前記仮想マシンの継続処理を実行する計算機。
【請求項２０】
仮想マシンを実行する計算機にデータ処理を実行させるコンピュータプログラムを前記計算機に読み出し可能に格納した記憶媒体であって、
前記データ処理が、
仮想マシンのメモリイメージを記憶する仮想マシン記憶処理と、
前記仮想マシンを実行して前記メモリイメージを更新する仮想マシン実行処理と、
ネットワークを介して接続された他の計算機に前記メモリイメージを送信して前記仮想マシンを移送する送信処理と、
移送された前記仮想マシンにかかるメモリイメージを保持する保持処理と、
前記メモリイメージのうち他の計算機で更新された部分領域のデータを受信する受信処理と、
保持された前記メモリイメージと、受信した前記部分領域のデータと、を用いて前記仮想マシンの継続処理を実行する仮想マシン継続処理と、
を含むこと特徴とする記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想マシン処理システム、仮想マシン処理方法、仮想マシンを実行する計算機、および計算機のためのコンピュータプログラムを格納している記憶媒体に関する。より具体的には、ネットワークを介して仮想マシンを移送する仮想マシン処理システム、仮想マシン処理方法、計算機およびプログラムを格納している記憶媒体に関する。
【背景技術】
【０００２】
仮想化技術は、単一の物理的な計算機の上で１つ以上の仮想的な計算機を動作させる技術である。仮想的な計算機を仮想マシンという。
また、計算機が仮想マシンを動作させることを、計算機が仮想マシンをホストするという。仮想マシン上では、物理的な計算機と同様に、オペレーティングシステム（ＯＳ）とアプリケーションが動作する。
仮想化技術により種々のメリットが得られるが、一例として、データセンタ等の運用効率を高めることができる。例えば、負荷の低い複数の物理サーバをそれぞれ仮想マシンで置き換えることにより、目的の複数の機能を単一の物理サーバでホストすることができ、サーバの利用効率が高まる。【０００３】
近年、計算機がホストしている仮想マシンを、当該仮想マシンが提供するサービスを停止することなく、ネットワークを介して別の計算機に移送する技術が実用化されている。この技術をライブ（動的）マイグレーションという。
ライブマイグレーションを用いると、状況に応じて仮想マシンの配置を変更することができる。例えば、高負荷のサーバからいくつかの仮想マシンを低負荷のサーバに移送すれば、サービスの速度と信頼性が向上し、サービス品質を高めることができる。また、例えば、低負荷のサーバから総ての仮想マシンを移送し、当該サーバの電源を切れば消費電力を削減することができる。さらに、例えば、障害が発生する可能性が高いサーバから仮想マシンを退避することで、処理の信頼性を高めることができる。【０００４】
この種の技術に関し、特許文献１には、低負荷のサーバがホストしている仮想マシンを別のサーバに移送し、仮想マシンをホストしていないサーバを電源オフ状態にすることで、消費電力を削減する技術が記されている。【０００５】
また、非特許文献１はライブマイグレーション方式の１つであるＩｔｅｒａｔｉｖｅ  Ｐｒｅ−ｃｏｐｙ方式（ＩＰＣ方式）を記している。ＩＰＣ方式では、移送先計算機が仮想マシンの処理を引き継ぐ前に、仮想マシンが必要とする総てのデータを移送元計算機から移送先計算機に転送する。そして、移送先計算機が処理を引き継いだ後は、移送元計算機からデータを転送しない。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特表２００７−５３６６５７号公報
【非特許文献】
【０００７】
【非特許文献１】Christopher Clark, et al, "Live Migration of Virtual Machines", Proceedings of the 2nd conference on Symposium on Networked Systems Design & Implementation, pp 273-286, 2005.
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ライブマイグレーションは、計算機で実行されていた仮想マシンのメモリイメージを移送元から移送先に移し、移送先の計算機で当該仮想マシンの実行を引き継ぐことにより完了する。
しかしながら、特許文献１および非特許文献１に記載のライブマイグレーションでは、仮想マシンの移送が完了した移送先計算機が過負荷になると、過負荷状態の解消に長時間を要する問題がある。このような問題は、例えば、サービスへのアクセスが急増することを予期できなかった場合や、人的な操作ミス、運用管理ソフトウェアの不具合などによって起こる。【０００９】
移送先計算機の過負荷状態を解消するためには、過負荷の計算機からいくつかの仮想マシンを別の計算機（例えば移送元計算機や、第三の計算機）に移送する必要がある。しかしながら、移送のためのデータ転送にもＣＰＵとネットワークを使用するため、ＣＰＵやネットワークが過負荷になった移送先計算機から仮想マシンを移送することには長時間を要する。そして、移送先計算機の過負荷状態が長時間になれば、仮想マシンが提供するサービスの品質が長時間低下する。【００１０】
本発明は、上記課題に鑑みてなされたものであり、ライブマイグレーションにより仮想マシンの移送が完了した移送先計算機で過負荷状態が生じたとしても、これを短時間で解消することのできる技術を提供するものである。
【課題を解決するための手段】
【００１１】
本発明の仮想マシン処理システムは、仮想マシンのメモリイメージを記憶する仮想マシン記憶手段と、前記仮想マシンを実行して前記メモリイメージを更新する仮想マシン実行手段と、をそれぞれ備え、互いにネットワークを介して接続された第一計算機および第二計算機と、前記第一計算機の前記仮想マシン実行手段が実行している仮想マシンのメモリイメージを前記第二計算機に送信して前記仮想マシンを前記第一計算機から前記第二計算機に移送する移送手段と、前記第一計算機の前記仮想マシン記憶手段に記憶されたメモリイメージを保持しておくメモリ保持手段と、移送された前記仮想マシンを前記第二計算機の前記仮想マシン実行手段が実行して更新された、前記メモリイメージの部分領域を示す更新情報を記録する更新記録手段と、移送された前記仮想マシンを前記第二計算機から前記第一計算機に戻すアンドゥ要求を受け付けると、前記更新記録手段を参照して、前記更新情報が示す前記部分領域のデータを前記第二計算機から前記第一計算機に送信する返送手段と、を含み、前記第一計算機の前記仮想マシン実行手段が、前記メモリ保持手段に保持された前記メモリイメージと、前記第二計算機より受信した前記部分領域のデータと、を用いて前記仮想マシンの継続処理を実行する。【００１２】
また、本発明の仮想マシン処理方法は、第一計算機が実行している仮想マシンのメモリイメージを第二計算機に送信して、前記仮想マシンを前記第一計算機から前記第二計算機に移送する移送ステップと、前記第一計算機の前記メモリイメージを保持しておくメモリ保持ステップと、移送された前記仮想マシンを前記第二計算機が実行して更新された、前記メモリイメージの部分領域を示す更新情報を記録する更新記録ステップと、移送された前記仮想マシンを前記第二計算機から前記第一計算機に戻すアンドゥステップと、を含み、かつ、前記アンドゥステップが、記録された前記更新情報が示す前記部分領域のデータを前記第二計算機から前記第一計算機に送信する返送ステップと、保持された前記第一計算機の前記メモリイメージと、送信された前記部分領域のデータと、を用いて、前記第一計算機で前記仮想マシンの継続処理を実行する継続実行ステップと、を含む。【００１３】
また、本発明の計算機は、ネットワークを介して接続された他の計算機から、前記他の計算機が実行している仮想マシンのメモリイメージを受信して前記仮想マシンの移送を受け付ける受信手段と、受信した前記メモリイメージを記憶する仮想マシン記憶手段と、移送された前記仮想マシンを実行して、記憶された前記メモリイメージを更新する仮想マシン実行手段と、記憶された前記メモリイメージのうち前記仮想マシン実行手段によって更新された部分領域を示す更新情報を記録する更新記録手段と、移送された前記仮想マシンを前記他の計算機に戻すアンドゥ要求を受け付けると、前記更新記録手段を参照して、前記更新情報が示す前記部分領域のデータを前記他の計算機に送信する送信手段と、を含む。【００１４】
また、本発明の記憶媒体は、仮想マシンを実行する仮想マシン実行手段を有する計算機にデータ処理を実行させるコンピュータプログラムを前記計算機に読み出し可能に格納した記憶媒体であって、前記データ処理が、ネットワークを介して接続された他の計算機から、前記他の計算機が実行している仮想マシンのメモリイメージを受信して前記仮想マシンの移送を受け付ける受信処理と、受信した前記メモリイメージを記憶する仮想マシン記憶処理と、移送された前記仮想マシンを実行して、記憶された前記メモリイメージを更新する仮想マシン実行処理と、記憶された前記メモリイメージのうち前記仮想マシン実行手段によって更新された部分領域を示す更新情報を記録する更新記録処理と、移送された前記仮想マシンを前記他の計算機に戻すアンドゥ要求を受け付けると、前記更新情報が示す前記部分領域のデータを前記他の計算機に送信する送信処理と、を含む。【００１５】
また、本発明の計算機は、仮想マシンのメモリイメージを記憶する仮想マシン記憶手段と、前記仮想マシンを実行して前記メモリイメージを更新する仮想マシン実行手段と、ネットワークを介して接続された他の計算機に前記メモリイメージを送信して前記仮想マシンを移送する送信手段と、前記メモリイメージのうち他の計算機で更新された部分領域のデータを受信する受信手段と、を含み、前記仮想マシン記憶手段が、移送された前記仮想マシンにかかるメモリイメージを保持し、前記仮想マシン実行手段が、保持された前記メモリイメージと、受信した前記部分領域のデータと、を用いて前記仮想マシンの継続処理を実行する。【００１６】
また、本発明のコンピュータプログラムは、仮想マシンを実行する計算機にデータ処理を実行させるコンピュータプログラムを前記計算機に読み出し可能に格納した記憶媒体であって、前記データ処理が、仮想マシンのメモリイメージを記憶する仮想マシン記憶処理と、前記仮想マシンを実行して前記メモリイメージを更新する仮想マシン実行処理と、ネットワークを介して接続された他の計算機に前記メモリイメージを送信して前記仮想マシンを移送する送信処理と、移送された前記仮想マシンにかかるメモリイメージを保持する保持処理と、前記メモリイメージのうち他の計算機で更新された部分領域のデータを受信する受信処理と、保持された前記メモリイメージと、受信した前記部分領域のデータと、を用いて前記仮想マシンの継続処理を実行する仮想マシン継続処理と、を含む。【００１７】
なお、本発明の仮想マシン処理システムの各種の構成要素は、個々に独立した存在である必要はなく、複数の構成要素が一個のハードウェアとして形成されていること、一つの構成要素が複数のハードウェアで形成されていること、ある構成要素が他の構成要素の一部であること、ある構成要素の一部と他の構成要素の一部とが重複していること、等を許容する。【００１８】
また、本発明の仮想マシン処理方法は、複数の工程を順番に記載してあるが、その記載の順番は複数の工程を実行する順番を限定するものではない。このため、本発明の仮想マシン処理方法を実施するときには、その複数の工程の順番は内容的に支障しない範囲で変更することができる。
さらに、本発明の仮想マシン処理方法は、複数の工程が個々に相違するタイミングで実行されることに限定されない。このため、ある工程の実行中に他の工程が発生すること、ある工程の実行タイミングと他の工程の実行タイミングとの一部ないし全部が重複していること、等を許容する。
【発明の効果】
【００１９】
本発明によれば、ライブマイグレーションにより移送が完了した仮想マシンを、短時間で移送元計算機に戻すアンドゥ処理が高速で実現される。このため、移送先計算機に過負荷状態が生じたとしても、これを短時間で解消することができ、サービス品質の低下が抑えられる。
【図面の簡単な説明】
【００２０】
上述した目的、およびその他の目的、特徴および利点は、以下に述べる好適な実施の形態、およびそれに付随する以下の図面によってさらに明らかになる。【００２１】
【図１】本発明の第一実施形態にかかる仮想マシン処理システムを示す機能ブロック図である。
【図２】第一実施形態の仮想マシン処理システムの構成図である。
【図３】更新記録部の具体例を示す模式図である。
【図４】第一実施形態にかかる仮想マシン処理方法のフローチャートである。
【図５】第一実施形態にかかる仮想マシンの移送ステップを示すフローチャートである。
【図６】第一実施形態にかかる仮想マシンの返送ステップを示すフローチャートである。
【図７】本発明の第二実施形態にかかる仮想マシン処理システムを示す機能ブロック図である。
【図８】本発明の第三実施形態にかかる仮想マシン処理システムを示す機能ブロック図である。
【図９】第三実施形態にかかる仮想マシンの返送ステップを示すフローチャートである。
【発明を実施するための形態】
【００２２】
以下、本発明の実施形態を図面に基づいて説明する。尚、すべての図面において、同様な構成要素には同様の符号を付し、適宜説明を省略する。
【００２３】
＜第一実施形態＞
（仮想マシン処理システム）
図１は、本実施形態にかかる仮想マシン処理システム１０を示す機能ブロック図である。図２は、仮想マシン処理システム１０の構成図である。
【００２４】
はじめに、本実施形態の仮想マシン処理システム１０の概要について説明する。
仮想マシン処理システム１０は、第一計算機１００および第二計算機２００、移送部１５０、メモリ保持部１０６、更新記録部２０３ならびに返送部１６０を含む。
第一計算機１００および第二計算機２００は、仮想マシンＶＭのメモリイメージＩＭＧを記憶する仮想マシン記憶部１０１、２０１と、仮想マシンＶＭを実行してメモリイメージＩＭＧを更新する仮想マシン実行部１０２、２０２と、をそれぞれ備えている。第一計算機１００と第二計算機２００とは互いにネットワーク３００を介して接続されている。
移送部１５０は、第一計算機１００の仮想マシン実行部１０２が実行している仮想マシンＶＭのメモリイメージＩＭＧを第二計算機２００に送信して仮想マシンＶＭを第一計算機１００から第二計算機２００に移送する。
メモリ保持部１０６は、第一計算機１００の仮想マシン記憶部１０１に記憶されたメモリイメージＩＭＧを保持しておく。
更新記録部２０３は、移送された仮想マシンＶＭを第二計算機２００の仮想マシン実行部２０２が実行して更新された、メモリイメージＩＭＧ１の部分領域を示す更新情報ＵＤを記録する。
返送部１６０は、移送された仮想マシンＶＭを第二計算機２００から第一計算機１００に戻すアンドゥ要求を受け付けると、更新記録部２０３を参照して、更新情報ＵＤが示す部分領域のデータ（部分データＰＤ）を第二計算機２００から第一計算機１００に送信する。
そして、本実施形態の仮想マシン処理システム１０は、第一計算機１００の仮想マシン実行部１０２が、メモリ保持部１０６に保持されたメモリイメージＩＭＧと、第二計算機２００より受信した部分データＰＤと、を用いて仮想マシンＶＭの継続処理を実行する。
【００２５】
本実施形態の仮想マシン処理システム１０における移送先にあたる第二計算機２００は、仮想マシン記憶部２０１、仮想マシン実行部２０２、更新記録部２０３、送信部２０４および受信部２０５を含んで構成されている。
受信部２０５は、ネットワーク３００を介して接続された他の計算機（第一計算機１００）から、当該他の計算機（第一計算機１００）が実行している仮想マシンＶＭのメモリイメージＩＭＧを受信して仮想マシンＶＭの移送を受け付ける。
仮想マシン記憶部２０１は、受信したメモリイメージＩＭＧを記憶する。
仮想マシン実行部２０２は、移送された仮想マシンＶＭを実行して、記憶されたメモリイメージＩＭＧをメモリイメージＩＭＧ１に更新する。
更新記録部２０３は、記憶されたメモリイメージＩＭＧのうち仮想マシン実行部２０２によってメモリイメージＩＭＧ１に更新された部分領域を示す更新情報ＵＤを記録する。
送信部２０４は、移送された仮想マシンＶＭを他の計算機（第一計算機１００）に戻すアンドゥ要求を受け付けると、更新記録部２０３を参照して、更新情報ＵＤが示す部分領域のデータ（部分データＰＤ）を他の計算機（第一計算機１００）に送信する。
【００２６】
一方、仮想マシン処理システム１０における移送元にあたる第一計算機１００は、仮想マシン記憶部１０１、仮想マシン実行部１０２、送信部１０４および受信部１０５を含んで構成されている。
仮想マシン記憶部１０１は、仮想マシンＶＭのメモリイメージＩＭＧを記憶する。
仮想マシン実行部１０２は、仮想マシンＶＭを実行してメモリイメージＩＭＧを更新する。
送信部１０４は、ネットワーク３００を介して接続された他の計算機（第二計算機２００）にメモリイメージＩＭＧを送信して仮想マシンＶＭを移送する。
受信部１０５は、メモリイメージＩＭＧのうち他の計算機（第二計算機２００）で更新された部分領域のデータ（部分データＰＤ）を受信する。
そして、仮想マシン記憶部１０１は、移送された仮想マシンＶＭにかかるメモリイメージＩＭＧを保持し、仮想マシン実行部１０２は、保持されたメモリイメージＩＭＧと、受信した部分データＰＤと、を用いて仮想マシンＶＭの継続処理を実行する。
【００２７】
ここで、本実施形態でいう計算機は、コンピュータプログラムを読み取って対応する処理動作を実行できるように、ＣＰＵ（Central Processing Unit）、ＲＯＭ（Read Only Memory）、ＲＡＭ（Random Access Memory）、インタフェースユニット、等の汎用デバイスで構築されたハードウェア、所定の処理動作を実行するように構築された専用の論理回路、これらの組み合わせ、等として実施することができる。
【００２８】
また、本実施形態の各種の構成要素は、その機能を実現するように形成されていればよく、たとえば、所定の機能を発揮する専用のハードウェア、所定の機能がコンピュータプログラムにより付与された情報処理装置、コンピュータプログラムにより情報処理装置に実現された所定の機能、これらの任意の組み合わせ、等として実現することができる。
【００２９】
なお、本実施形態の仮想マシン処理システム１０においてメモリイメージや各種情報を記憶または記録するとは、仮想マシン処理システム１０を構成する装置が、少なくともデータを保持する機能を有することを意味している。
【００３０】
第一計算機１００および第二計算機２００は、それぞれ一つの筐体からなる単一の物理計算機であることに限られない。例えば、第二計算機２００に関しては、移送されてきた仮想マシンＶＭのメモリイメージＩＭＧを記憶する仮想マシン記憶部２０１と、アンドゥ要求に応じて第一計算機１００に送信される部分データＰＤを記憶する記憶部とが、物理的に離間した他の記憶装置によって実現されてもよい。
【００３１】
また、仮想マシン処理システム１０においては、更新記録部およびメモリ保持部は、第一計算機１００と第二計算機２００の内部にそれぞれ実装されてもよく、またはネットワーク３００に接続された他の処理装置に実装されてもよい。以下、本実施形態では、第一計算機１００の内部に更新記録部１０３とメモリ保持部１０６が実装され、第二計算機２００の内部に更新記録部２０３が実装されている場合について説明する。なお、第二計算機２００にはメモリ保持部２０６が設けられてもよく、かかる態様は第二実施形態で後述する。
【００３２】
次に、本実施形態の仮想マシン処理システム１０についてより詳細に説明する。
仮想マシン処理システム１０は、仮想マシンＶＭの移送元にあたる第一計算機１００から、移送先にあたる第二計算機２００に対して、ネットワーク３００を介してライブマイグレーションで仮想マシンＶＭを移送する。そして、本実施形態の仮想マシン処理システム１０は、移送が完了した仮想マシンＶＭを短時間で移送元の第一計算機１００に戻せるシステムである。
以下では、移送が完了した仮想マシンＶＭを移送元の計算機に戻すことをアンドゥともいい、移送を完了前にこれを取り消すキャンセルとは区別する。
【００３３】
ここで、非特許文献１にかかるＩＰＣ方式では、移送の完了後に移送元計算機で仮想マシンのページを解放してデータを破棄し、移送の完了後に移送先計算機で仮想マシンの更新ページ番号を記録しない。そのため、従来のＩＰＣ方式では、移送の完了後に仮想マシンを移送元計算機に戻すためには、移送先計算機の仮想マシンの総てのデータを移送元計算機に転送することが必要であり、アンドゥ処理に多大なリソースと時間を要することとなる。
これに対し、本実施形態の仮想マシン処理システム１０は、仮想マシンＶＭの移送の完了後も、移送元の第一計算機１００で仮想マシンＶＭのメモリイメージＩＭＧを破棄しない。そして、仮想マシンＶＭの移送の完了後に移送先の第二計算機２００で仮想マシンＶＭの更新ページ番号を記録しておき、アンドゥ要求があると、移送先の第二計算機２００が更新したページの部分データＰＤを移送元の第一計算機１００に転送する。これにより、短時間でのアンドゥを実現する。
【００３４】
アンドゥ要求は種々の要因によって発生する。代表的なものとして、ユーザ（オペレータ）からの操作入力があった場合のほか、第二計算機２００に不具合が生じた場合が挙げられる。すなわち、本実施形態において仮想マシン処理システム１０またはその構成要素がアンドゥ要求を受け付けるとは、外部要求や割り込み要求に基づいて、移送完了後の仮想マシンＶＭを移送元（第一計算機１００）に戻すアンドゥ処理が開始されることを意味する。
【００３５】
ネットワーク３００は、仮想マシンＶＭの移送に関わるデータを転送するネットワークである。ネットワーク３００は、例えば、Ｅｔｈｅｒｎｅｔ（登録商標）である。ネットワーク３００は、仮想マシンＶＭの移送に関わるデータ以外のデータの転送に用いてもよい。
ネットワーク３００には共有ストレージ３１０が接続されている。共有ストレージ３１０には、仮想マシンＶＭの本体プログラムや、仮想マシンＶＭを実行することでユーザに提供される各種機能またはコンテンツに関するデータが記憶されている。
【００３６】
（第一計算機）
図２の構成図に示すように、第一計算機１００は、それぞれバス１３０に接続されたＣＰＵ１１０、送信部１０４、受信部１０５および主記憶装置１２０を備えている。
以下、第一計算機１００の機能を説明する。
【００３７】
仮想マシン記憶部１０１は、仮想マシンＶＭのプログラムを含むデータをメモリイメージＩＭＧとして記憶する手段である。仮想マシン記憶部１０１は、主記憶装置（メインメモリ）１２０または仮想記憶（バーチャルメモリ：図示せず）に割り当てられる（図２を参照）。図２には仮想マシン記憶部１０１が一つのみ図示されているが、主記憶装置１２０には、仮想マシンＶＭの数だけ仮想マシン記憶部１０１があってよい。
【００３８】
仮想マシン実行部１０２は、仮想マシンＶＭを管理し、仮想マシンＶＭのプログラムを実行する手段である。仮想マシン実行部１０２は、具体的には、ＣＰＵ１１０、共有ストレージ３１０および主記憶装置１２０とで構成される（図２を参照）。ＣＰＵ１１０は、仮想マシンＶＭの実行に必要なデータを共有ストレージ３１０から呼び出して主記憶装置１２０に格納し、当該仮想マシンＶＭを実行し、得られた出力データを共有ストレージ３１０に書き込む。かかる処理は、第一計算機１００のＯＳ上で動作する仮想化ソフトウェア（ＳＷ）によって行なわれる。
仮想マシン実行部１０２が仮想マシンＶＭを実行することで、仮想マシン記憶部１０１に記憶されたメモリイメージＩＭＧは更新される。本実施形態において、仮想マシン実行部１０２が仮想マシンＶＭを実行してメモリイメージＩＭＧが更新される具体的な態様は様々である。一例として、仮想マシン記憶部１０１に記憶されたメモリイメージＩＭＧを仮想マシン実行部１０２が書き換える場合のほか、仮想マシン実行部１０２が仮想マシンＶＭを実行したことに起因して他の手段によりメモリイメージＩＭＧが更新される場合を含む。
【００３９】
ここで、仮想マシンＶＭのメモリイメージＩＭＧとは、仮想化ソフトウェアによって処理されているアプリケーションやデータに関する、主記憶装置や仮想記憶に格納されたメモリデータそのものを意味する。
そして、メモリイメージＩＭＧを更新するとは、メモリイメージＩＭＧの一部または全部が書き換えられることを意味する。ここで、更新前のメモリイメージＩＭＧの少なくとも一部に対して同一のデータを上書きすることも、メモリイメージＩＭＧを更新するという。したがって、メモリイメージＩＭＧの更新の有無を判断するにあたり、メモリイメージＩＭＧのデータビットに現に変更があるか否かを問わない。
【００４０】
更新記録部１０３は、仮想マシン実行部１０２が更新したメモリイメージＩＭＧの部分領域を示す更新情報を記録する手段である。図２では、仮想マシン記憶部１０１と同様に更新記録部１０３が主記憶装置１２０に設けられている状態が例示されているが、これに限られない。メモリイメージＩＭＧと更新情報とは、互いに異なる記憶装置に記憶されてもよい。
【００４１】
仮想マシン実行部１０２がメモリイメージＩＭＧを更新する単位、および当該更新を更新記録部１０３が記録する単位は特に限定されず、互いに同一でも相違してもよい。
ここで、データはメモリ（主記憶装置１２０）等が記憶し、ＯＳや仮想化ソフトウェアはメモリの領域を「ページ」と呼ばれる単位に等分して管理する。本実施形態では、仮想マシン実行部１０２が更新したメモリイメージＩＭＧの領域をページ単位で記録する。ページの大きさは、例えば、４ＫＢや４ＭＢであり、メモリイメージＩＭＧは多数のページに分割され、当該ページをそれぞれ識別するためのページ番号が設定されている。
【００４２】
送信部１０４は、仮想マシンＶＭの移送時に、メモリイメージＩＭＧを第二計算機２００の受信部２０５に送信する通信インタフェースである。受信部１０５は、仮想マシンＶＭのアンドゥ処理時に部分データＰＤを送信部２０４から受信する通信インタフェースである。
【００４３】
送信部１０４は、第一計算機１００から第二計算機２００にライブマイグレーションを行なうときに、総てのメモリイメージＩＭＧをページ単位で受信部２０５に順に送信する。したがって、図１に示すように、第一計算機１００の送信部１０４と第二計算機２００の受信部２０５とは、仮想マシン処理システム１０における移送部１５０を構成する。
なお、ライブマイグレーション時に受信部２０５に送信されるデータには、仮想マシンＶＭのメモリイメージＩＭＧのほか、仮想マシンＶＭの処理の引き継ぎに必要な情報を含む。かかる情報には、例えば、ＣＰＵのレジスタの状態を示すメッセージがあるが、簡単のため以下の説明では省略する。
【００４４】
本実施形態の仮想マシン処理システム１０は、第二計算機２００に移送された時点における仮想マシンＶＭのメモリイメージＩＭＧを、第一計算機１００に所定時間だけ保持しておき、当該所定時間内に行なわれたアンドゥ処理を高速化することを特徴とする。
具体的には、第一計算機１００の受信部１０５は、第二計算機２００に移送された時点のメモリイメージＩＭＧと、第二計算機２００で仮想マシンＶＭが継続処理されて更新されたメモリイメージＩＭＧ１と、の差分を含む部分データＰＤを、送信部２０４から受信する。本実施形態では、更新後のメモリイメージＩＭＧ１のうち、仮想マシン実行部２０２で更新されたページのデータを第一計算機１００に送信することで仮想マシンＶＭのライブマイグレーションのアンドゥ処理が行なわれる。
すなわち、第一計算機１００の受信部１０５と第二計算機２００の送信部２０４とは、仮想マシン処理システム１０における返送部１６０を構成する。
【００４５】
図１に示すメモリ保持部１０６は、仮想マシンＶＭの移送時のメモリイメージＩＭＧの保持および消去を制御する手段であり、具体的にはＣＰＵ１１０および主記憶装置１２０により実現される（図２を参照）。
ここで、メモリ保持部１０６が第一計算機１００の仮想マシン記憶部１０１に記憶されたメモリイメージＩＭＧを保持するとは、メモリイメージＩＭＧを呼び出し可能に保存しておくことをいう。メモリ保持部１０６の具体的な処理としては、仮想マシン記憶部１０１に記憶されたメモリイメージＩＭＧを、主記憶装置１２０から退避させることなくそのまま保存しておくほか、メモリイメージＩＭＧを他の記憶領域に転送して保存してもよい。または、メモリ保持部１０６は、圧縮処理などを施してメモリイメージＩＭＧを復元可能に変換した状態でこれを保存してもよい。
【００４６】
なお、メモリ保持部１０６は、第二計算機２００への移送完了時の仮想マシンＶＭのメモリイメージＩＭＧを保持し続けてもよく、または保持しているメモリイメージＩＭＧをその後に更新してもよい。すなわち、移送先の第二計算機２００で実行された仮想マシンＶＭの処理結果の少なくとも一部がアンドゥ処理時に第一計算機１００にフィードバックできればよい。そのかぎりにおいて、移送元の第一計算機１００に保持しておくメモリイメージＩＭＧをライブマイグレーションの完了後に更新してもよい。
【００４７】
後述するように、メモリ保持部１０６は、移送された仮想マシンＶＭを移送元に戻すアンドゥ要求を受け付けると、移送時のメモリイメージＩＭＧを用いて仮想マシン実行部１０２により仮想マシンＶＭの継続処理を実行させる。
【００４８】
（第二計算機）
図２の構成図に示すように、第二計算機２００は、それぞれバス２３０に接続されたＣＰＵ２１０、送信部２０４、受信部２０５および主記憶装置２２０を備えており、第一計算機１００とハードウェア構成が共通している。
以下、第二計算機２００の機能を説明する。
【００４９】
受信部２０５は、仮想マシンＶＭからメモリイメージＩＭＧを受信して仮想マシンＶＭの移送を受け付ける。
仮想マシン記憶部２０１は、受信した仮想マシンＶＭのメモリイメージＩＭＧを主記憶装置１２０に記憶する。
図２に示すように、仮想マシン記憶部２０１は、主記憶装置２２０または仮想記憶（バーチャルメモリ：図示せず）に割り当てられている。主記憶装置２２０には、第二計算機２００のＯＳと、当該ＯＳ上で動作する仮想化ソフトウェア（ＳＷ）とが配備されている。仮想マシンＶＭのメモリイメージＩＭＧは、仮想化ソフトウェア上でホストされる。
仮想マシンＶＭのメモリイメージＩＭＧは、仮想マシンＯＳ、アプリケーション、およびこれらの仮想マシンＯＳやアプリケーションが使用するデータを含む。一つの仮想マシンＯＳに対して複数のアプリケーションを起動してもよい。
【００５０】
仮想マシン実行部２０２は、仮想マシンＶＭを管理し、メモリイメージＩＭＧを処理することで仮想マシンＶＭを実行する手段である。具体的には、ＣＰＵ２１０、共有ストレージ３１０および主記憶装置２２０とで構成される。移送された仮想マシンＶＭを仮想マシン実行部２０２が実行することにより、メモリイメージＩＭＧは一部または全部が更新されてメモリイメージＩＭＧ１（図１を参照）となる。
【００５１】
更新記録部２０３は、仮想マシンＶＭの移送の完了後に、仮想マシン実行部２０２が更新した仮想マシン記憶部２０１の部分領域を示す更新情報ＵＤを記録する。更新記録部２０３は、例えば、仮想化ソフトウェアが、仮想マシンＶＭのページ更新を監視し、更新ページ番号を主記憶装置２２０に記録することで実現される。主記憶装置２２０には、仮想マシン実行部２０２が実行する仮想マシンＶＭの数だけ仮想マシン記憶部２０１が設けられている。
更新情報ＵＤのデータ形式は特に限定されないが、本実施形態では更新記録部１０３と同様に、ページ単位でメモリイメージＩＭＧ１の更新を記録する。
【００５２】
図３は、更新記録部２０３の具体例を示す模式図である。更新記録部２０３には、更新情報ＵＤとして、仮想マシン実行部２０２によってメモリイメージＩＭＧからメモリイメージＩＭＧ１に更新された仮想マシンＶＭの更新ページのページ番号がリスト形式で記録されている。図３では、５４０、１３１５、１８１０という３つのページ番号が更新記録部２０３に記録されている状態を例示している。これは、メモリイメージＩＭＧ１のうち、上記３箇所のページ番号の部分領域において、メモリイメージＩＭＧから更新されたことを示している。例えば、図２に示すように、仮想マシンＯＳが起動しているアプリケーションがメモリイメージＩＭＧのページ番号１３１５の指し示すページのデータを更新すると、更新記録部２０３に更新情報ＵＤとして「１３１５」が記録される。
【００５３】
ただし、本実施形態に代えて、更新情報ＵＤとして他のデータを用いてもよい。具体的には、更新されたページの番号ではなく、更新されたページに関するメモリイメージ（部分イメージ）自体を、当該部分イメージのページ番号と対応付けて更新記録部２０３に格納してもよい。
【００５４】
図１、２に戻り、送信部２０４は、アンドゥ処理時に、更新記録部２０３を参照して、第二計算機２００が更新したページに関する部分データＰＤを第二計算機２００から第一計算機１００に送信する。
ここで、更新記録部２０３を参照するとは、更新記録部２０３に記録された更新情報ＵＤに基づいて、メモリイメージのうちの更新された部分領域を呼び出すことをいう。一例として、更新記録部２０３が、リスト形式で表されたページ番号である場合（図３を参照）、更新記録部２０３を参照するとは、記録されたページ番号の一部または全部を取得することを意味する。
【００５５】
なお、図１、２では、部分データＰＤが主記憶装置２２０の仮想マシン記憶部２０１から呼び出されて受信部１０５に送信される状態が図示されているが、これに限られない。例えば、仮想マシン実行部２０２により更新されたメモリイメージＩＭＧの部分データＰＤを、ネットワーク３００に接続された記憶装置（図示せず）に対して、当該部分データＰＤのページ番号と対応付けて格納しておいてもよい。そして、アンドゥ処理時には当該記憶装置からページ番号とともに部分データＰＤを第一計算機１００に転送してもよい。このように、仮想マシン処理システム１０においては、更新記録部２０３が第二計算機２００のハードウェアの内部に設けられるか否かは任意である。
【００５６】
図１、２では、説明の簡単化のために、移送元の第一計算機１００と移送先の第二計算機２００とを区別して表したが、各計算機は移送元と移送先の両方の機能を持つ。つまり、各計算機は、移送元（第一計算機１００）としても移送先（第二計算機２００）としても振る舞うことができる。
【００５７】
（仮想マシン処理方法）
図４は、本方法のフローチャートである。以下、図１〜４を用いて、本実施形態の仮想マシン処理方法（以下、本方法という場合がある。）について説明する。
【００５８】
本方法は、移送ステップＳ１００、メモリ保持ステップＳ２００、更新記録ステップＳ４００およびアンドゥステップＳ８００を含む。
移送ステップＳ１００では、第一計算機１００が実行している仮想マシンＶＭのメモリイメージＩＭＧを第二計算機２００に送信して、仮想マシンＶＭを第一計算機１００から第二計算機２００に移送する。
メモリ保持ステップＳ２００では、第一計算機１００のメモリイメージＩＭＧを保持しておく。
更新記録ステップＳ４００では、移送された仮想マシンＶＭを第二計算機２００が実行してメモリイメージＩＭＧからメモリイメージＩＭＧ１に更新された、メモリイメージＩＭＧ１の部分領域を示す更新情報ＵＤを記録する。
アンドゥステップＳ８００では、移送された仮想マシンＶＭを第二計算機２００から第一計算機１００に戻す。
【００５９】
そして、本方法のアンドゥステップＳ８００は、返送ステップＳ６００と継続実行ステップＳ７００とをさらに含む。
返送ステップＳ６００では、記録された更新情報ＵＤが示す部分領域のデータ（部分データＰＤ）を第二計算機２００から第一計算機１００に送信する。
継続実行ステップＳ７００では、保持された第一計算機１００のメモリイメージＩＭＧと、送信された部分領域のデータ（部分データＰＤ）と、を用いて、第一計算機１００で仮想マシンＶＭの継続処理を実行する。
【００６０】
ここで、返送ステップＳ６００と継続実行ステップＳ７００とは、時間的な先後の入れ替えおよび重複を許容する。すなわち、返送ステップＳ６００が完了してから継続実行ステップＳ７００を開始してもよいが、返送ステップＳ６００よりも先にまたはこれと重複して継続実行ステップＳ７００を開始してもよい。
【００６１】
なお、本実施形態によれば、仮想マシンの移送処理およびアンドゥ処理を第一計算機１００および第二計算機２００に実行させる第一および第二のコンピュータプログラムが提供される。また、本実施形態によれば、第一のコンピュータプログラムが第一計算機１００に読み出し可能に格納された記憶媒体（図示せず）、および第二のコンピュータプログラムが第二計算機２００に読み出し可能に格納された記憶媒体（図示せず）が提供される。
【００６２】
第一のコンピュータプログラムは、仮想マシンＶＭを実行する計算機（第一計算機１００）のためのコンピュータプログラムであり、仮想マシン記憶処理、仮想マシン実行処理、送信処理、保持処理、受信処理および仮想マシン継続処理を当該計算機に実行させる。
仮想マシン記憶処理では、仮想マシンＶＭのメモリイメージＩＭＧを記憶する。
仮想マシン実行処理では、仮想マシンＶＭを実行してメモリイメージＩＭＧを更新する。
送信処理では、ネットワーク３００を介して接続された他の計算機（第二計算機２００）にメモリイメージＩＭＧを送信して仮想マシンＶＭを移送する。
保持処理では、移送された仮想マシンＶＭにかかるメモリイメージＩＭＧを保持する。
受信処理では、メモリイメージＩＭＧのうち他の計算機（第二計算機２００）で更新された部分領域のデータ（部分データＰＤ）を受信する。
仮想マシン継続処理では、保持されたメモリイメージＩＭＧと、受信した部分領域のデータ（部分データＰＤ）と、を用いて仮想マシンＶＭの継続処理を実行する。
【００６３】
なお、コンピュータプログラムに対応した各種動作を計算機に実行させることは、各種デバイスを計算機に動作制御させることも意味している。例えば、計算機に各種データを記憶させることは、計算機に固定されている主記憶装置等の情報記憶媒体にＣＰＵが各種データを格納することのほか、データ処理装置に交換自在に装填されている情報記憶媒体にＣＰＵが各種データを格納すること、等を許容する。
【００６４】
また、第二のコンピュータプログラムは、仮想マシンＶＭを実行する仮想マシン実行部２０２を有する計算機（第二計算機２００）のためのコンピュータプログラムであり、受信処理、仮想マシン記憶処理、仮想マシン実行処理、更新記録処理および送信処理を当該計算機に実行させる。
受信処理では、ネットワーク３００を介して接続された他の計算機（第一計算機１００）から、他の計算機（第一計算機１００）が実行している仮想マシンＶＭのメモリイメージＩＭＧを受信して仮想マシンＶＭの移送を受け付ける。
仮想マシン記憶処理では、受信したメモリイメージＩＭＧを記憶する。
仮想マシン実行処理では、移送された仮想マシンＶＭを実行して、記憶されたメモリイメージＩＭＧを更新してメモリイメージＩＭＧ１とする。
更新記録処理では、記憶されたメモリイメージＩＭＧのうち仮想マシン実行部２０２によって更新された部分領域を示す更新情報ＵＤを記録する。
送信処理では、移送された仮想マシンＶＭを他の計算機（第一計算機１００）に戻すアンドゥ要求を受け付けると、更新情報ＵＤが示す部分領域のデータ（部分データＰＤ）を他の計算機（第一計算機１００）に送信する。
【００６５】
以下、本方法をさらに詳細に説明する。
図５は、仮想マシンの移送ステップＳ１００を示すフローチャートである。本方法においては、第一計算機１００から第二計算機２００への仮想マシンＶＭの移送はＩＰＣ方式で行う場合を例に説明する。
【００６６】
まず、第一計算機１００の送信部１０４は、ネットワーク３００を介して第二計算機２００の受信部２０５に接続する（ステップＳ１０２）。
次に、第一計算機１００の更新記録部１０３は、移送対象の仮想マシンＶＭの更新ページ番号の記録を開始する（ステップＳ１０４）。
そして、第一計算機１００の送信部１０４は、当該仮想マシンＶＭのメモリイメージＩＭＧの総てのデータを、第二計算機２００の受信部２０５に送信する（ステップＳ１０６）。
【００６７】
ここで、ＩＰＣ方式では、仮想マシンＶＭのメモリイメージＩＭＧを第一計算機１００から第二計算機２００に転送する間に、仮想マシンＶＭの実行を第一計算機１００で継続する（ステップＳ１０８）。したがって、ステップＳ１０６の終了時点で、仮想マシン記憶部１０１に記憶されているメモリイメージＩＭＧは更新されている。更新記録部１０３は、かかる更新領域を更新情報ＵＤ０として記録する。更新領域は、ページ単位で管理および記録される。
【００６８】
ステップＳ１０６が終了すると、ＣＰＵ１１０は、更新記録部１０３（主記憶装置１２０）が更新情報ＵＤ０として記録している更新ページの数を検索し、これが所定の閾値以下であるか否かを判断する（ステップＳ１１０）。この閾値は、更新情報ＵＤ０に記録された更新ページのデータを送信部１０４から受信部２０５に一度で送信できる数に設定されている。
【００６９】
ステップＳ１１０が否定された場合（ステップＳ１１０：ＮＯ）、送信部１０４は更新ページのデータを受信部２０５に転送し、転送したページ番号の記録を更新情報ＵＤ０から削除して（ステップＳ１１２）、ステップＳ１０８に戻る。そして、更新ページのデータを送信部１０４が送信する間、仮想マシン実行部１０２は仮想マシンＶＭの実行を継続する（ステップＳ１０８）。
【００７０】
一方、更新ページの数が閾値以下の場合（ステップＳ１１０：ＹＥＳ）、仮想マシン実行部１０２は、移送対象の仮想マシンＶＭの処理を中断する（ステップＳ１１４）。また、更新記録部１０３は、更新ページ番号の記録を終了する（ステップＳ１１６）。
ステップＳ１１４の後にステップＳ１１６を実行することにより、第一計算機１００で更新された総ての更新ページ番号が更新記録部１０３に記録される。このため、下記のステップＳ１１８において、更新ページのデータが第二計算機２００に漏れなく送信される。
【００７１】
なお、ステップＳ１０６からステップＳ１１２の処理をキャンセルしても、第一計算機１００では仮想マシンＶＭの処理が継続している（ステップＳ１０８）ため、ネットワーク障害が発生しても仮想マシンの障害にはならない。
【００７２】
そして、第一計算機１００の送信部１０４は、更新情報ＵＤ０に記録された残りの更新ページのデータ、およびその他に必要な情報を、第二計算機２００の受信部２０５に送信する（ステップＳ１１８）。
ステップＳ１１４以降、移送ステップＳ１００の終了までの間、仮想マシン処理システム１０において仮想マシンＶＭが停止する。しかしながら、ステップＳ１１８で送信されるデータ量は僅かであるため、ステップＳ１１８に要する時間は数ミリ秒から数百ミリ秒と短く、仮想マシンＶＭが停止したことによるサービス品質への悪影響は小さい。
【００７３】
第二計算機２００の送信部２０４は、移送部１５０（送信部１０４、受信部２０５）による仮想マシンＶＭの移送が完了したことを示す完了情報ＦＩを第一計算機１００の受信部１０５に送信する（ステップＳ１２０）。
【００７４】
図４に戻り、第一計算機１００では、移送完了時点における仮想マシンＶＭのメモリイメージＩＭＧを、メモリ保持部１０６が保持する（メモリ保持ステップＳ２００）。すなわち、仮想マシン記憶部１０１が記憶している仮想マシンＶＭのメモリイメージＩＭＧは、即座には破棄しない。
このとき、メモリ保持部１０６は、メモリイメージＩＭＧを主記憶装置１２０内の記憶位置にそのまま留めてもよく、または第一計算機１００の内部または外部に設けられた他の記憶装置に退避させてもよい。以下、メモリ保持部１０６が仮想マシン記憶部１０１（主記憶装置１２０）にメモリイメージＩＭＧを保管する場合を例に説明する。
【００７５】
第二計算機２００の仮想マシン記憶部２０１は、受信部２０５が受信したメモリイメージＩＭＧを記憶する。そして、第二計算機２００が有するＯＳおよび仮想化ソフトウェアと、共有ストレージ３１０に記憶されたプログラムおよびデータとを用いて、仮想マシンＶＭの処理を再開する。
そして、第二計算機２００の仮想マシン実行部２０２は、仮想マシンＶＭを実行し、メモリイメージＩＭＧをメモリイメージＩＭＧ１に更新する（ステップＳ３００）。
【００７６】
更新記録部２０３は、メモリイメージＩＭＧからメモリイメージＩＭＧ１に更新された部分領域を示す更新ページ番号を、更新情報ＵＤとして記録する（更新記録ステップＳ４００）。
【００７７】
移送された仮想マシンＶＭを第一計算機１００に戻すアンドゥ要求があるまで（ステップＳ５００：ＮＯ）、第二計算機２００は仮想マシンＶＭの処理を継続する。
【００７８】
次に、移送が完了した仮想マシンＶＭを移送元の第一計算機１００に戻すアンドゥステップＳ８００を詳細に説明する。本実施形態では、ＩＰＣ方式により仮想マシンＶＭをアンドゥ処理する。
【００７９】
図６は、アンドゥステップＳ８００のうちの返送ステップＳ６００を示すフローチャートである。アンドゥ処理の開始時における仮想マシン記憶部２０１の状態をメモリイメージＩＭＧ１とする。
【００８０】
まず、第二計算機２００の送信部２０４は第一計算機１００の受信部１０５に接続し（ステップＳ６１１）、仮想マシン記憶部１０１が当該仮想マシンＶＭのメモリイメージＩＭＧを保管していることを確認する。
【００８１】
仮想マシン記憶部１０１が仮想マシンＶＭのメモリイメージＩＭＧを保管していない場合、仮想マシンＶＭのアンドゥ処理にあたってはメモリイメージＩＭＧ１の全データを送信する必要がある。しかしながら、本方法では、メモリ保持部１０６が仮想マシン記憶部１０１のメモリイメージＩＭＧを保管しているため、アンドゥ処理にあたって転送すべきデータはメモリイメージＩＭＧからの差分のみで足りる。
【００８２】
メモリ保持部１０６が仮想マシン記憶部１０１のメモリイメージＩＭＧを破棄する条件については後述する。
【００８３】
そして、ＩＰＣ方式でアンドゥ処理する間にも、第二計算機２００の仮想マシン実行部２０２により仮想マシンＶＭの実行が継続され（ステップＳ６１２）、仮想マシン記憶部２０１のメモリイメージＩＭＧ１はさらに更新される。
【００８４】
次に、ＣＰＵ２１０は、更新記録部２０３（主記憶装置２２０）が記憶している更新ページの数を検索し、これが所定の閾値以下であるか否かを判断する（ステップＳ６１３）。この閾値は、更新情報ＵＤに記録された更新ページのデータを送信部２０４から受信部１０５に一度で送信できる数に設定されている。
なお、この閾値は、移送ステップＳ１００において第一計算機１００の更新記録部１０３を検索する場合（ステップＳ１０６）の閾値と等しくてもよく、または相違してもよい。
【００８５】
更新情報ＵＤに記録された更新ページの数が閾値よりも多く、ステップＳ６１３が否定された場合（ステップＳ６１３：ＮＯ）、送信部２０４は、更新情報ＵＤが示す部分領域のデータ（部分データＰＤ）を第一計算機１００に送信する。具体的には、更新情報ＵＤに記録された更新ページのデータを受信部１０５に転送する。そして、転送したページ番号の記録を更新情報ＵＤから削除して（ステップＳ６１４）、ステップＳ６１２に戻る。
【００８６】
更新ページのデータを送信部２０４が送信する間、仮想マシン実行部２０２は仮想マシンＶＭの実行を継続する（ステップＳ６１２）。このため、仮想マシン記憶部２０１に記憶されたメモリイメージＩＭＧ１は、メモリイメージＩＭＧ２へと更新される。
【００８７】
図３に示したように、更新記録部２０３は、更新情報ＵＤに加えて、ステップＳ６１４で更新された部分領域のページ番号を、更新情報ＵＤ２として記録する。更新情報ＵＤ２に記録された部分領域のデータを部分データＰＤ２とする。
図３は、更新情報ＵＤとして記録されたページ番号：５４０、１３１５、１８１０に加えて、メモリイメージＩＭＧ１のページ番号：１９２０の部分領域が更新された状態を示している。すなわち、メモリイメージＩＭＧ１からメモリイメージＩＭＧ２に更新された部分領域を示すページ番号が、更新記録部２０３に更新情報ＵＤ２として記録される。
また、図３は、ステップＳ６１４において、転送したページ番号：５４０の記録を更新情報ＵＤから削除する状態を模式的に示している。
【００８８】
すなわち、本方法では、返送部１６０（送信部２０４および受信部１０５）が部分領域のデータ（部分データＰＤ）を第一計算機１００に送信する間に、第二計算機２００は仮想マシンＶＭの実行を継続する。第二計算機２００は、仮想マシンＶＭの継続的な実行によりメモリイメージＩＭＧ１を追加更新してメモリイメージＩＭＧ２とする。そして、返送部１６０は、メモリイメージＩＭＧ２のうち追加更新された部分領域のデータ（部分データＰＤ２）を、第一計算機１００にさらに送信する。
【００８９】
一方、更新ページの数が閾値以下の場合（ステップＳ６１３：ＹＥＳ）、仮想マシン実行部２０２は、返送対象の仮想マシンＶＭの処理を中断する（ステップＳ６１５）。また、更新記録部２０３は、更新ページ番号の記録を終了する（ステップＳ６１６）。
ステップＳ６１５の後にステップＳ６１６を実行することにより、第二計算機２００で更新された総ての更新ページ番号が更新記録部２０３に記録される。このため、第二計算機２００で追加更新された部分データＰＤ２が、下記のステップＳ６１７において第一計算機１００に漏れなく送信される。
【００９０】
第二計算機２００の送信部２０４は、更新情報ＵＤ、ＵＤ２に記録された残りの更新ページにかかる部分データＰＤ、ＰＤ２、およびその他に必要な情報を、第一計算機１００の受信部１０５に送信する（ステップＳ６１７）。かかる送信データのデータ量は僅かであるため、仮想マシンＶＭがステップＳ６１５以降に停止する時間は短い。このため、アンドゥ処理がサービス品質にもたらす悪影響は小さい。
【００９１】
以上、ＩＰＣ方式を行う本方法のアンドゥステップＳ８００においては、更新情報ＵＤ、ＵＤ２が示す部分領域のデータ（部分データＰＤ、ＰＤ２）を第二計算機２００から第一計算機１００に送信するステップＳ６１４、Ｓ６１７を一回または複数回おこなった後に継続実行ステップＳ７００を行う。
【００９２】
図４に戻り、継続実行ステップＳ７００では、第一計算機１００により仮想マシンＶＭの継続処理が実行される。
【００９３】
本方法では、第一計算機１００が部分領域のデータ（部分データＰＤ、ＰＤ２）を第二計算機２００から受信した後に継続処理（継続実行ステップＳ７００）の実行を開始する。
【００９４】
以上、本実施形態ではＩＰＣ方式によって仮想マシンＶＭのライブマイグレーションをアンドゥ処理することを説明した。ただし、本発明はこれに限られるものではない。第三実施形態にて後述するように、アンドゥ要求があると移送元の第一計算機１００で直ちに仮想マシンＶＭの処理を引き継ぎ、更新情報が示す部分領域のデータをその後に受信するポストコピー方式でもよい。
【００９５】
なお、第一計算機１００から第二計算機２００に仮想マシンＶＭを移送してから、メモリ保持部１０６は所定の条件を満たした場合にメモリイメージＩＭＧを破棄してもよい。また、更新記録部２０３による更新情報ＵＤ（ページ番号）の記録も、永続的に行うことは必ずしも必要ではなく、所定の条件を満たした場合に更新情報ＵＤの記録を終了してよい。これにより、主記憶装置１２０、２２０に過大な負荷を与えることなく、仮想マシンＶＭのライブマイグレーションのアンドゥ処理を実用的に用いることができる。
【００９６】
より具体的には、メモリ保持部１０６は、移送部１５０による仮想マシンＶＭの移送が完了したことを示す完了情報ＦＩを受信し、さらに、保持しているメモリイメージＩＭＧを破棄する破棄条件が完了情報ＦＩの受信後に満たされた場合に、メモリイメージＩＭＧを破棄することとしている。
【００９７】
本実施形態の破棄条件は、以下の４つのいずれか一以上である。
（１）第一計算機１００のメモリの空き領域が所定以下となったとき；
（２）完了情報ＦＩを受信してから所定時間が経過したとき；
（３）更新記録部２０３による更新情報ＵＤの記録が終了したことを示す記録終了通知ＸＰを受信したとき；
（４）保持しているメモリイメージＩＭＧを破棄する要求を受け付けたとき。
【００９８】
上記（１）の場合、保持しているメモリイメージＩＭＧを破棄してメモリ（主記憶装置１２０）の空き領域を確保することにより、仮想マシンＶＭの移送後の第一計算機１００の動作を高速化する。すなわち、仮想マシンＶＭのアンドゥ処理の高速化に代えて、第一計算機１００における他の仮想マシンの動作速度の高速化を図ることで、第一計算機１００が提供するサービスの総合的な品質を向上することが可能である。
上記（２）の場合、第二計算機２００に移送されてから相当時間が経過したことで、以降はアンドゥ処理が行われる可能性が低いと推定してメモリイメージＩＭＧを破棄するものである。これにより、特に複数の仮想マシンのライブマイグレーションが行われた場合に、第一計算機１００の過負荷を好適に解消することができる。
上記（３）の場合、第二計算機２００による更新情報ＵＤの記録終了の時点以降は、第一計算機１００に保持されたメモリイメージＩＭＧと、第二計算機２００から送信される部分データＰＤ（およびＰＤ２）のみでは、第二計算機２００における仮想マシンＶＭの最新のメモリイメージを復元することができない。このため、以降はアンドゥ要求を受け付けないこととし、第一計算機１００からメモリイメージＩＭＧを破棄する。
上記（４）は、ユーザ（オペレータ）からの操作入力または運用管理ソフトウェアからのシステムメッセージ等により、メモリイメージＩＭＧを破棄する命令を受けた場合である。
【００９９】
図１、２に示すように、メモリ保持部１０６は、メモリイメージＩＭＧを破棄したことを示すメモリ破棄通知ＮＬを第二計算機２００に送信する。
【０１００】
一方、更新記録部２０３は、以下の３つの記録終了条件のいずれか一以上が満たされた場合に、更新情報ＵＤの記録を終了する。
（１）移送された仮想マシンＶＭの実行を第二計算機２００の仮想マシン実行部２０２が開始してから所定時間が経過したとき；
（２）保持しているメモリイメージＩＭＧをメモリ保持部１０６が破棄したことを示すメモリ破棄通知ＮＬを受信したとき、
（３）更新情報ＵＤの記録を終了する要求を受け付けたとき。
【０１０１】
上記（１）は、所定時間の経過により、アンドゥ処理が行われる可能性が低いと推定され、また更新情報ＵＤが示す部分データＰＤのデータ量が多くなるため、以降はアンドゥ要求を受け付けないこととしたものである。具体的には、第二計算機２００のＣＰＵ２１０は、ステップＳ３００（図４を参照）の開始以降の経過時間を計測し、これが予め設定された所定の閾値時間を超えた場合に、更新記録部２０３による更新情報ＵＤの記録を終了するとよい。
上記（２）は、第一計算機１００からメモリ破棄通知ＮＬを受信した場合に更新記録部２０３による更新情報ＵＤの記録を終了するものである。
上記（３）は、ユーザ（オペレータ）からの操作入力または運用管理ソフトウェアからのシステムメッセージ等により、更新情報ＵＤの記録を終了する命令を受けた場合である。
【０１０２】
更新記録部２０３は、更新情報ＵＤの記録を終了したことを示す記録終了通知ＸＰを第一計算機１００に送信する。
【０１０３】
以上、本方法によれば、移送の完了後に移送元の第一計算機１００で仮想マシンＶＭのメモリイメージＩＭＧを即座には破棄せず、かつ移送の完了後に移送先の第二計算機２００で仮想マシンＶＭの更新ページ番号を記録する。そして、アンドゥ要求があると、移送先の第二計算機２００が更新したページの部分データＰＤ、ＰＤ２のみを移送元の第一計算機１００に戻す。これにより、移送が完了した仮想マシンＶＭを短時間で移送元の計算機に戻すことができる。
また、第一計算機１００のメモリ保持部１０６によるメモリイメージＩＭＧの保持、および第二計算機２００の更新記録部２０３による更新情報ＵＤの記録は、所定の条件の成立によって終了する。これにより、主記憶装置１２０、２２０などのシステムリソースに過大な負荷を与えることなく、ライブマイグレーションのアンドゥ処理が実用的に実現される。
【０１０４】
＜第二実施形態＞
図７は、本実施形態の仮想マシン処理システム１０の機能ブロック図である。
本実施形態の仮想マシン処理システム１０は、アンドゥ処理により第一計算機１００に戻された仮想マシンＶＭを、再び第二計算機２００にライブマイグレーションで移送（以下、リドゥ処理という）するものである。
【０１０５】
本実施形態の仮想マシン処理システム１０は、第二計算機２００の仮想マシン記憶部２０１に記憶された他のメモリイメージＩＭＧ２を保持するメモリ保持部２０６を備える点で第一実施形態と相違する。
また、本実施形態の更新記録部１０３は、第一計算機１００の仮想マシン実行部１０２により更新された、メモリイメージＩＭＧ３の部分領域を示す更新情報ＵＤ３を記録する。
【０１０６】
そして、仮想マシンＶＭの継続処理（継続実行ステップＳ７００：図４を参照）が実行された後に、当該仮想マシンＶＭをさらに第一計算機１００から第二計算機２００に戻すリドゥ要求を受け付けると、仮想マシン処理システム１０は以下の処理を行う。
まず、移送部１５０（送信部１０４、受信部２０５）は、更新記録部１０３を参照して、更新情報ＵＤ３が示す部分領域のデータ（部分データＰＤ３）を第一計算機１００から第二計算機２００に送信する。
そして、第二計算機２００の仮想マシン実行部２０２は、メモリ保持部２０６に保持されたメモリイメージＩＭＧ２と、第一計算機１００より受信した部分領域のデータ（部分データＰＤ３）と、を用いて仮想マシンＶＭを再び実行する。
【０１０７】
すなわち、第二計算機２００は、返送ステップＳ６００のステップＳ６１５（図６を参照）における仮想マシンＶＭの最新のメモリイメージＩＭＧ２を、メモリ保持部２０６により仮想マシン記憶部２０１に保管しておく。そして、仮想マシン処理システム１０がリドゥ要求を受け付けると、仮想マシン記憶部２０１に保管されたメモリイメージＩＭＧ２と、第一計算機１００の更新記録部１０３に記憶された更新情報ＵＤ３が示す部分データＰＤ３とを用いて、仮想マシンＶＭの継続処理を第二計算機２００で再開する。
【０１０８】
メモリ保持部２０６によるメモリイメージＩＭＧ２の破棄条件は、メモリ保持部１０６に関する上述の破棄条件と同様、以下の４つのいずれか一以上とすることができる。
（１）第二計算機２００のメモリの空き領域が所定以下となったとき；
（２）アンドゥ処理が完了してから所定時間が経過したとき；
（３）更新記録部１０３による更新情報ＵＤ３の記録が終了したことを示す記録終了通知ＸＰを第一計算機１００から受信したとき；
（４）保持しているメモリイメージＩＭＧ２を破棄する要求を受け付けたとき。
【０１０９】
メモリイメージＩＭＧ２を破棄したメモリ保持部２０６は、送信部２０４を介して第一計算機１００にメモリ破棄通知ＮＬを送信してもよい。そして、メモリ破棄通知ＮＬを受信した第一計算機１００は、更新記録部１０３による更新情報ＵＤ３の記録を終了するとよい。
【０１１０】
本実施形態では、アンドゥの完了後も移送先（アンドゥ元）の第二計算機２００で仮想マシンＶＭのメモリイメージＩＭＧ２を保管し、アンドゥ完了後に移送元（アンドゥ先）の第一計算機１００で仮想マシンＶＭの更新ページ番号（更新情報ＵＤ３）を記録する。これにより、アンドゥのアンドゥ（リドゥ処理）を行うときには、第一計算機１００で更新したページのデータにあたる部分データＰＤ３を移送先（アンドゥ元）の第二計算機２００に転送すればよい。
【０１１１】
＜第三実施形態＞
本実施形態の仮想マシン処理システム１０は、仮想マシンＶＭのライブマイグレーションをポストコピー方式でアンドゥ処理するものである。
図８は、本実施形態の仮想マシン処理システム１０の機能ブロック図である。
【０１１２】
本実施形態の仮想マシン処理システム１０において、アンドゥ要求を受け付けた第一計算機１００は、メモリ保持部１０６に保持されているメモリイメージＩＭＧを用いて仮想マシンＶＭを実行して当該メモリイメージＩＭＧの一部を更新する（図８を参照）。そして、第一計算機１００は、メモリイメージＩＭＧをメモリイメージＩＭＧ４に更新した後に、更新された当該メモリイメージＩＭＧ４と、第二計算機２００より受信した部分領域のデータ（部分データＰＤ）と、を用いて仮想マシンＶＭの継続処理を実行する。
【０１１３】
より具体的には、アンドゥ要求を受け付けた返送部１６０（受信部１０５および送信部２０４）は、更新記録部２０３に記録されている更新情報ＵＤを第一計算機１００に送信する。一方、第一計算機１００は、メモリ保持部１０６に保持されているメモリイメージＩＭＧのうち更新情報ＵＤが示す以外の領域を更新してメモリイメージＩＭＧ４とした後に、部分領域のデータ（部分データＰＤ）を受信して仮想マシンＶＭの継続処理を実行する。
【０１１４】
ここで、アンドゥ要求にしたがって返送部１６０が第一計算機１００に更新情報ＵＤを送信するとは、更新記録ステップＳ４００で更新記録部２０３が記録した更新情報ＵＤに対応する部分領域が示されたデータを受信部１０５に送信することを意味する。すなわち、送信部２０４から受信部１０５に送信される更新情報ＵＤと、更新記録部２０３が記録している更新情報ＵＤとが同一のデータであることを要するものではない。
【０１１５】
すなわち、本実施形態の送信部２０４は、アンドゥ処理時におけるメモリイメージＩＭＧ１の部分データＰＤに先だって、更新情報ＵＤを受信部１０５に送信する。具体的には、送信部２０４は、更新情報ＵＤとして更新ページ番号リストを送信する。
【０１１６】
これを受信した受信部１０５は、更新ページ番号リストを仮想マシン実行部１０２に伝える。仮想マシン実行部１０２は、更新ページ番号リストと、仮想マシン記憶部１０１に記憶されたメモリイメージＩＭＧとを用いて仮想マシンＶＭの処理を再開する。
【０１１７】
第一計算機１００は、更新ページ番号リストを参照し、メモリイメージＩＭＧのうち更新されていないページについての更新処理を開始する。
【０１１８】
更新記録部１０３は、メモリイメージＩＭＧをメモリイメージＩＭＧ４としたことを示す更新情報ＵＤ３を記録する。
送信部１０４は受信部２０５に対して、更新情報ＵＤが示す部分領域のデータ（部分データＰＤ）を送信するための要求メッセージＲＱを送信する。
【０１１９】
要求メッセージＲＱは、受信部１０５に部分データＰＤを優先的に送信するように要求するメッセージである。
【０１２０】
そして、送信部２０４から部分データＰＤを受信した第一計算機１００は、受信部１０５からの更新完了通知を待ってから当該データを処理する。まだ受信していない更新ページのデータであっても、そのページを仮想マシン実行部１０２が総て書き換える場合、または、そのページのデータが不要になった場合は、更新ページ番号リストに記録されたページ番号を削除して、これを受信しなくてもよい。仮想マシン実行部１０２は、仮想マシンＶＭの処理と並行して、未受信の更新ページのデータがなくなるまで部分データＰＤを受信する。
【０１２１】
なお、図８に示すように、第二計算機２００のメモリ保持部２０６は、アンドゥ処理時の仮想マシン記憶部２０１のメモリイメージＩＭＧ１を仮想マシン記憶部２０１に保持しておいてもよい。これにより、仮想マシンＶＭのライブマイグレーションのリドゥ処理時に、仮想マシン実行部２０２による迅速な引き継ぎ処理が可能となる。
【０１２２】
本方法では、第二計算機２００から更新情報ＵＤ（更新ページ番号リスト）を受信した後に、第一計算機１００は、この更新情報ＵＤに含まれていない部分領域に関して仮想マシン実行部１０２での処理を開始する。これにより、第一計算機１００と第二計算機２００とで重複した部分領域の更新処理を行うことがない。
【０１２３】
図９は、本方法にかかる仮想マシンＶＭの返送ステップＳ６００を示すフローチャートである。また、本実施形態における仮想マシン処理方法の全体のフローチャートは図４であり、第一実施形態と共通する。したがって、移送ステップＳ１００からステップＳ５００までは説明を省略する。
【０１２４】
まず、第二計算機２００の送信部２０４は第一計算機１００の受信部２０５に接続し（ステップＳ６２１）、仮想マシン記憶部１０１が当該仮想マシンＶＭのアンドゥ用のメモリイメージＩＭＧを保管していることを確認する。
【０１２５】
次に、仮想マシン実行部２０２は、当該仮想マシンＶＭの処理を中断する（ステップＳ６２２）。そして、第二計算機２００の送信部２０４は、更新記録部２０３が記憶している更新情報ＵＤの総ての更新ページ番号を、更新ページ番号リストとして受信部１０５に送信する（ステップＳ６２３）。
【０１２６】
第一計算機１００の仮想マシン実行部１０２は、更新ページ番号リストを受けとって、当該仮想マシンＶＭの処理を再開する（ステップＳ６２４）。ここで、仮想マシン実行部１０２は、仮想マシンＶＭの処理を継続しつつ（ステップＳ６２５）、未受信の更新ページの部分データＰＤがすぐに必要か否かを判断する（ステップＳ６２６）。
【０１２７】
上記判断において、部分データＰＤがすぐに必要であれば（ステップＳ６２６：ＹＥＳ）、必要な部分データＰＤを受信するように受信部１０５に要求する。部分データＰＤが受信されて必要なデータが揃うと、該当する更新ページ番号を更新ページ番号リストから削除して（ステップＳ６２７）、ステップＳ６２５に戻る。
【０１２８】
未受信ですぐに必要な部分データＰＤが無いと判断された場合（ステップＳ６２６：ＮＯ）、仮想マシン実行部１０２は、仮想マシンＶＭの処理と並行して、未受信の部分データＰＤが残っているかを判断する（ステップＳ６２８）。この判断において、未受信のデータがあれば（ステップＳ６２８：ＹＥＳ）、未受信の部分データＰＤをいくつか受信して、該当する更新ページ番号を更新ページ番号リストから削除（ステップＳ６２９）して、ステップＳ６２５に戻る。未受信のデータがなくなれば（ステップＳ６２８：ＮＯ）、アンドゥ処理は終了する。
【０１２９】
そして、継続実行ステップＳ７００（図４を参照）では、第一計算機１００でメモリイメージＩＭＧから更新されたメモリイメージＩＭＧ４と、第二計算機２００から受信した部分データＰＤとを用いて仮想マシンＶＭの処理をさらに実行する。
【０１３０】
以上、本方法は、アンドゥステップＳ８００において、保持された第一計算機１００のメモリイメージＩＭＧを用いて第一計算機１００が仮想マシンＶＭを実行（ステップＳ６２４）してメモリイメージＩＭＧ４とした後に返送ステップ（ステップＳ６２７）をおこなう。返送ステップでは、部分領域のデータ（部分データＰＤ）を第二計算機２００から第一計算機１００に送信する。
【０１３１】
言い換えると、本方法のアンドゥステップＳ８００は、更新情報ＵＤを第一計算機１００に送信する更新情報送信ステップ（ステップＳ６２３）と、保持された第一計算機１００のメモリイメージＩＭＧを用いて第一計算機１００が仮想マシンＶＭを実行し、当該メモリイメージＩＭＧのうち更新情報ＵＤが示す以外の領域を更新する先行処理ステップ（ステップＳ６２５）と、をさらに含む。そして、本方法では、ステップＳ６２７で送信された部分領域のデータ（部分データＰＤ）と、先行処理ステップ（ステップＳ６２４）にて更新されたメモリイメージＩＭＧ４と、を用いて継続実行ステップＳ７００をおこなう。
【０１３２】
本方法は、アンドゥ処理をポストコピー方式でおこなうため、アンドゥ時には移送先の第二計算機２００から移送元の第一計算機１００に更新ページ番号リストを送信して、第一計算機１００が直ちに仮想マシンＶＭの処理を引き継ぐ。これにより、第一実施形態のようにＩＰＣ方式のアンドゥ処理を行う場合よりも早く、移送先の第二計算機２００の負荷を低下させることができる。
【０１３３】
なお、上記各実施形態では、メモリ保持部１０６に保持されたメモリイメージＩＭＧをアンドゥ処理の実行時まで更新しない場合を例に説明したが、本発明はこれに限られない。
すなわち、仮想マシン実行部２０２により仮想マシン記憶部２０１のメモリイメージが所定量だけ更新されるたびに、送信部２０４は受信部１０５に部分データＰＤを送信し、メモリ保持部１０６が保持しているメモリイメージＩＭＧをその都度更新してもよい。そして、第二計算機２００では、送信された部分データＰＤに対応する更新情報ＵＤを更新記録部２０３のリストから削除する。
かかる処理は、第二計算機２００による仮想マシンＶＭの処理（ステップＳ３００：図４を参照）と並行して、かつ仮想マシン処理システム１０の処理負荷の低いときに行うとよい。
これにより、アンドゥ処理の実行時に第二計算機２００から第一計算機１００に送信すべき部分データＰＤのデータ量が削減でき、さらに迅速なアンドゥ処理が実現する。
【０１３４】
なお、上記実施形態では仮想マシン処理システム１０の各部がコンピュータプログラムにより各種機能として論理的に実現されることを例示した。しかし、このような各部の各々を固有のハードウェアとして形成することもでき、またはソフトウェアとハードウェアとの組み合わせとして実現することもできる。
【０１３５】
この出願は、２０１０年１月２９日に出願された日本出願特願２０１０−０１９５５８を基礎とする優先権を主張し、その開示の総てをここに取り込む。
【図１】
2011093051.tif 000003
【図２】
2011093051.tif 000004
【図３】
2011093051.tif 000005
【図４】
2011093051.tif 000006
【図５】
2011093051.tif 000007
【図６】
2011093051.tif 000008
【図７】
2011093051.tif 000009
【図８】
2011093051.tif 000010
【図９】
2011093051.tif 000011
【手続補正書】
【提出日】平成24年7月19日(2012.7.19)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
仮想マシンのメモリイメージを記憶する仮想マシン記憶手段と、前記仮想マシンを実行して前記メモリイメージを更新する仮想マシン実行手段と、をそれぞれ備え、互いにネットワークを介して接続された第一計算機および第二計算機と、
前記第一計算機の前記仮想マシン実行手段が実行している仮想マシンのメモリイメージを前記第二計算機に送信して前記仮想マシンを前記第一計算機から前記第二計算機に移送する移送手段と、
前記第一計算機の前記仮想マシン記憶手段に記憶されたメモリイメージを保持しておくメモリ保持手段と、
移送された前記仮想マシンを前記第二計算機の前記仮想マシン実行手段が実行して更新された、前記メモリイメージの部分領域を示す更新情報を記録する更新記録手段と、
移送された前記仮想マシンを前記第二計算機から前記第一計算機に戻すアンドゥ要求を受け付けると、前記更新記録手段を参照して、前記更新情報が示す前記部分領域のデータを前記第二計算機から前記第一計算機に送信する返送手段と、を含み、
前記第一計算機の前記仮想マシン実行手段が、前記メモリ保持手段に保持された前記メモリイメージと、前記第二計算機より受信した前記部分領域のデータと、を用いて前記仮想マシンの継続処理を実行する仮想マシン処理システム。
【請求項２】
前記メモリ保持手段は、
前記移送手段による前記仮想マシンの移送が完了したことを示す完了情報を受信し、さらに、保持している前記メモリイメージを破棄する破棄条件が前記完了情報の受信後に満たされた場合に、前記メモリイメージを破棄することを特徴とする請求項１に記載の仮想マシン処理システム。
【請求項３】
前記破棄条件が、
前記第一計算機のメモリの空き領域が所定以下となったとき、
前記完了情報を受信してから所定時間が経過したとき、
前記更新記録手段による前記更新情報の記録が終了したことを示す記録終了通知を受信したとき、または
保持している前記メモリイメージを破棄する要求を受け付けたとき、
のいずれか一以上である請求項２に記載の仮想マシン処理システム。
【請求項４】
前記メモリ保持手段が前記メモリイメージを破棄したことを示すメモリ破棄通知を前記第二計算機に送信する請求項３に記載の仮想マシン処理システム。
【請求項５】
前記更新記録手段は、
移送された前記仮想マシンの実行を前記第二計算機の前記仮想マシン実行手段が開始してから所定時間が経過したとき、
前記メモリイメージを破棄したことを示すメモリ破棄通知を受信したとき、または
前記更新情報の記録を終了する要求を受け付けたとき、
のいずれか一以上の記録終了条件が満たされた場合に、前記更新情報の記録を終了することを特徴とする請求項１から４のいずれかに記載の仮想マシン処理システム。
【請求項６】
前記更新記録手段は、前記更新情報の記録を終了したことを示す記録終了通知を前記第一計算機に送信する請求項５に記載の仮想マシン処理システム。
【請求項７】
前記第一計算機が、前記部分領域のデータを前記第二計算機から受信した後に前記継続処理の実行を開始することを特徴とする請求項１から６のいずれかに記載の仮想マシン処理システム。
【請求項８】
前記返送手段が前記部分領域のデータを前記第一計算機に送信する間に、前記第二計算機は前記仮想マシンの実行を継続して前記メモリイメージを追加更新し、
前記返送手段は、前記メモリイメージのうち追加更新された部分領域のデータを、前記第一計算機にさらに送信する請求項７に記載の仮想マシン処理システム。
【請求項９】
前記アンドゥ要求を受け付けた前記第一計算機は、前記メモリ保持手段に保持されている前記メモリイメージを用いて前記仮想マシンを実行して当該メモリイメージの一部を更新した後に、更新された当該メモリイメージと、前記第二計算機より受信した前記部分領域のデータと、を用いて前記仮想マシンの継続処理を実行することを特徴とする請求項１から６のいずれかに記載の仮想マシン処理システム。
【請求項１０】
前記アンドゥ要求を受け付けた前記返送手段は、前記更新記録手段に記録されている前記更新情報を前記第一計算機に送信し、
前記第一計算機は、前記メモリ保持手段に保持されている前記メモリイメージのうち前記更新情報が示す以外の領域を更新した後に、前記部分領域のデータを受信して前記仮想マシンの継続処理を実行する請求項９に記載の仮想マシン処理システム。
【請求項１１】
前記メモリ保持手段は、前記第二計算機の前記仮想マシン記憶手段に記憶された他のメモリイメージをさらに保持し、
前記更新記録手段は、前記第一計算機の前記仮想マシン実行手段により更新された、前記メモリイメージの部分領域を示す他の更新情報をさらに記録することを特徴とする請求項１から１０のいずれかに記載の仮想マシン処理システム。
【請求項１２】
前記仮想マシンの前記継続処理が実行された後に、当該仮想マシンをさらに前記第一計算機から前記第二計算機に戻すリドゥ要求を受け付けると、
前記移送手段は、前記更新記録手段を参照して、前記他の更新情報が示す前記部分領域のデータを前記第一計算機から前記第二計算機に送信し、
前記第二計算機の前記仮想マシン実行手段は、前記メモリ保持手段に保持された前記他のメモリイメージと、前記第一計算機より受信した前記部分領域のデータと、を用いて前記仮想マシンを再び実行する請求項１１に記載の仮想マシン処理システム。
【請求項１３】
第一計算機が実行している仮想マシンのメモリイメージを第二計算機に送信して、前記仮想マシンを前記第一計算機から前記第二計算機に移送する移送ステップと、
前記第一計算機の前記メモリイメージを保持しておくメモリ保持ステップと、
移送された前記仮想マシンを前記第二計算機が実行して更新された、前記メモリイメージの部分領域を示す更新情報を記録する更新記録ステップと、
移送された前記仮想マシンを前記第二計算機から前記第一計算機に戻すアンドゥステップと、を含み、かつ、
前記アンドゥステップが、
記録された前記更新情報が示す前記部分領域のデータを前記第二計算機から前記第一計算機に送信する返送ステップと、
保持された前記第一計算機の前記メモリイメージと、送信された前記部分領域のデータと、を用いて、前記第一計算機で前記仮想マシンの継続処理を実行する継続実行ステップと、
を含む仮想マシン処理方法。
【請求項１４】
前記アンドゥステップにおいて、前記返送ステップを一回または複数回おこなった後に前記継続実行ステップを行うことを特徴とする請求項１３に記載の仮想マシン処理方法。
【請求項１５】
前記アンドゥステップにおいて、保持された前記第一計算機の前記メモリイメージを用いて前記第一計算機が前記仮想マシンを実行した後に前記返送ステップをおこなうことを特徴とする請求項１３に記載の仮想マシン処理方法。
【請求項１６】
前記アンドゥステップが、
前記更新情報を前記第一計算機に送信する更新情報送信ステップと、
保持された前記第一計算機の前記メモリイメージを用いて前記第一計算機が前記仮想マシンを実行し、当該メモリイメージのうち前記更新情報が示す以外の領域を更新する先行処理ステップと、をさらに含み、
前記返送ステップで送信された前記部分領域のデータと、前記先行処理ステップにて更新された前記メモリイメージと、を用いて前記継続実行ステップをおこなうことを特徴とする請求項１５に記載の仮想マシン処理方法。
【請求項１７】
ネットワークを介して接続された他の計算機から、前記他の計算機が実行している仮想マシンのメモリイメージを受信して前記仮想マシンの移送を受け付ける受信手段と、
受信した前記メモリイメージを記憶する仮想マシン記憶手段と、
移送された前記仮想マシンを実行して、記憶された前記メモリイメージを更新する仮想マシン実行手段と、
記憶された前記メモリイメージのうち前記仮想マシン実行手段によって更新された部分領域を示す更新情報を記録する更新記録手段と、
移送された前記仮想マシンを前記他の計算機に戻すアンドゥ要求を受け付けると、前記更新記録手段を参照して、前記更新情報が示す前記部分領域のデータを前記他の計算機に送信する送信手段と、
を含む計算機。
【請求項１８】
仮想マシンを実行する仮想マシン実行手段を有する計算機にデータ処理を実行させるコンピュータプログラムであって、
前記データ処理が、
ネットワークを介して接続された他の計算機から、前記他の計算機が実行している仮想マシンのメモリイメージを受信して前記仮想マシンの移送を受け付ける受信処理と、
受信した前記メモリイメージを記憶する仮想マシン記憶処理と、
移送された前記仮想マシンを実行して、記憶された前記メモリイメージを更新する仮想マシン実行処理と、
記憶された前記メモリイメージのうち前記仮想マシン実行手段によって更新された部分領域を示す更新情報を記録する更新記録処理と、
移送された前記仮想マシンを前記他の計算機に戻すアンドゥ要求を受け付けると、前記更新情報が示す前記部分領域のデータを前記他の計算機に送信する送信処理と、
を含むこと特徴とするコンピュータプログラム。
【請求項１９】
仮想マシンのメモリイメージを記憶する仮想マシン記憶手段と、
前記仮想マシンを実行して前記メモリイメージを更新する仮想マシン実行手段と、
ネットワークを介して接続された他の計算機に前記メモリイメージを送信して前記仮想マシンを移送する送信手段と、
前記メモリイメージのうち他の計算機で更新された部分領域のデータを受信する受信手段と、
を含み、
前記仮想マシン記憶手段が、移送された前記仮想マシンにかかるメモリイメージを保持し、
前記仮想マシン実行手段が、保持された前記メモリイメージと、受信した前記部分領域のデータと、を用いて前記仮想マシンの継続処理を実行する計算機。
【請求項２０】
仮想マシンを実行する計算機にデータ処理を実行させるコンピュータプログラムであって、
前記データ処理が、
仮想マシンのメモリイメージを記憶する仮想マシン記憶処理と、
前記仮想マシンを実行して前記メモリイメージを更新する仮想マシン実行処理と、
ネットワークを介して接続された他の計算機に前記メモリイメージを送信して前記仮想マシンを移送する送信処理と、
移送された前記仮想マシンにかかるメモリイメージを保持する保持処理と、
前記メモリイメージのうち他の計算機で更新された部分領域のデータを受信する受信処理と、
保持された前記メモリイメージと、受信した前記部分領域のデータと、を用いて前記仮想マシンの継続処理を実行する仮想マシン継続処理と、
を含むこと特徴とするコンピュータプログラム。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０００１
【補正方法】変更
【補正の内容】
【０００１】
本発明は、仮想マシン処理システム、仮想マシン処理方法、仮想マシンを実行する計算機、および計算機のためのコンピュータプログラムに関する。より具体的には、ネットワークを介して仮想マシンを移送する仮想マシン処理システム、仮想マシン処理方法、計算機およびプログラムに関する。
【国際調査報告】
2011093051.tif 000012
2011093051.tif 000013
2011093051.tif 000014
2011093051.tif 000015