(57)【要約】【課題】ライブマイグレーションを短時間で行う制御プログラム，制御方法及びクラウドシステムを提供する。【解決手段】それぞれに仮想マシンが構築される複数の物理マシンと，移動元物理マシン上に構築されている移動元仮想マシンが動作している間に，移動元仮想マシンを移動先物理マシン上に移動させるマイグレーション処理を実行するマイグレーション処理部とを有し，マイグレーション処理部は，移動元仮想マシンの第１のメモリに記憶された第１のデータを，第１のメモリから移動先物理マシンの第２のメモリに転送し，転送中に第１のメモリに書き込まれた第２のデータを，第２のメモリに転送し，第１のデータ及び第２のデータの転送完了予定時間が許容時間を上回っている場合，第１のメモリに対する書き込みを制限するメモリデータ転送処理部を有する。【選択図】図１６
2015118436.tif 000002
【特許請求の範囲】
【請求項１】
それぞれに仮想マシンが構築される複数の物理マシンと，
移動元物理マシン上に構築されている移動元仮想マシンが動作している間に，該移動元仮想マシンを移動先物理マシン上に移動させるマイグレーション処理を実行するマイグレーション処理部とを有し，
前記マイグレーション処理部は，
前記移動元仮想マシンの第１のメモリに記憶された第１のデータを，前記第１のメモリから前記移動先物理マシンの第２のメモリに転送し，前記転送中に前記第１のメモリに書き込まれた第２のデータを，前記第２のメモリに転送し，前記第１のデータ及び前記第２のデータの転送完了予定時間が許容時間を上回っている場合，前記第１のメモリに対する書き込みを制限するメモリデータ転送処理部を有する情報処理システム。
【請求項２】
請求項１において，
前記メモリデータ転送処理部は，前記書き込みの制限を，単位時間内に書き込みがあった前記第１のメモリ内のメモリ領域数が閾値を上回った場合に，次の単位時間まで前記書き込みを遅らせることで行う情報処理システム。
【請求項３】
請求項１において，
前記メモリデータ転送処理部は，前記書き込みの制限を，前記書き込みの処理時間を前記書き込みの制限が行われない場合より長くすることで行う情報処理システム。
【請求項４】
請求項１において，
前記メモリデータ転送処理部は，前記書き込みの制限を，前記第１のメモリ内の転送中または転送済のそれぞれのメモリ領域に対する最初の書き込みに対して行う情報処理システム。
【請求項５】
請求項１において，
さらに，前記第１のデータまたは前記第２のデータを，前記第１のメモリから前記第２のメモリに転送するときの単位時間内の転送数を計測する転送メモリ領域数計測部を有し，
前記メモリデータ転送処理部は，前記転送完了予定時間を，前記転送メモリ領域数計測部により計測した前記単位時間内の転送メモリ領域数から，前記単位時間内の書き込みがあった前記第１のメモリ内の書き込みメモリ領域数を差し引いて前記単位時間内の有効転送メモリ領域数を算出し，前記第１のデータのデータ量を前記有効転送メモリ領域数で除算することにより算出する情報処理システム。
【請求項６】
請求項１において，
前記メモリデータ転送処理部は，前記転送完了予定時間を，前記第１のデータの転送開始から前記第１のメモリ内の前記第２のデータが基準値を下回るまでの時間として算出する情報処理システム。
【請求項７】
請求項４において，
前記メモリデータ転送処理部は，前記第１のメモリ内の転送中または転送済のメモリ領域を書き込み禁止状態にし，前記書き込み禁止状態のメモリ領域に対して書き込みの要求があった場合にエラーを出力し，前記エラーの出力に応答して書き込み可能であるメモリ領域を確保して該メモリ領域に書き込みを行い，
前記メモリデータ転送処理部は，前記書き込みの制限を，前記書き込み可能であるメモリ領域の確保から該メモリ領域への書き込みまでの少なくとも一部の処理を，単位時間内に書き込みがあった前記第１のメモリ内のメモリ領域数が閾値を上回った場合に，次の単位時間まで遅らせることで行う情報処理システム。
【請求項８】
請求項４において，
前記メモリデータ転送処理部は，前記第１のメモリ内の転送中または転送済のメモリ領域を書き込み禁止状態にし，前記書き込み禁止状態のメモリ領域に対して書き込み要求があった場合にエラーを出力し，前記エラーの出力に応答して書き込み可能であるメモリ領域を確保して該メモリ領域に書き込みを行い，
前記メモリデータ転送処理部は，前記書き込みの制限を，前記書き込み可能であるメモリ領域の確保から該メモリ領域への書き込みまでの少なくとも一部の処理を，該処理の処理時間を前記書き込みの制限が行われない場合より長くすることで行う情報処理システム。
【請求項９】
請求項７または８において，
前記メモリデータ転送処理部は，前記書き込み可能であるメモリ領域の確保を，新たなメモリ領域を割当てることで行う情報処理システム。
【請求項１０】
請求項７または８において，
前記メモリデータ転送処理部は，前記書き込み可能であるメモリ領域の確保を，前記書き込み禁止状態を解除し，該解除したメモリ領域の書き込みを可能にすることで行う情報処理システム。
【請求項１１】
移動元物理マシン上に構築されている移動元仮想マシンが動作している間に，該移動元仮想マシンを移動先物理マシン上に移動させるマイグレーション処理をコンピュータに実行させる制御プログラムであって，
前記マイグレーション処理は，
前記移動元仮想マシンの第１のメモリに記憶された第１のデータを，前記第１のメモリから前記移動先物理マシンの第２のメモリに転送し，前記転送中に前記第１のメモリに書き込まれた第２のデータを，前記第２のメモリに転送し，前記第１のデータ及び前記第２のデータの転送完了予定時間が許容時間を上回っている場合，前記第１のメモリに対する書き込みを制限するメモリデータ転送工程を有する制御プログラム。
【請求項１２】
移動元物理マシン上に構築されている移動元仮想マシンが動作している間に，該移動元仮想マシンを移動先物理マシン上に移動させるマイグレーション処理を実行する制御方法であって，
前記マイグレーション処理は，
前記移動元仮想マシンの第１のメモリに記憶された第１のデータを，前記第１のメモリから前記移動先物理マシンの第２のメモリに転送し，前記転送中に前記第１のメモリに書き込まれた第２のデータを，前記第２のメモリに転送し，前記第１のデータ及び前記第２のデータの転送完了予定時間が許容時間を上回っている場合，前記第１のメモリに対する書き込みを制限するメモリデータ転送工程を有する制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，情報処理システム，制御プログラム及び制御方法に関する。
【背景技術】
【０００２】
クラウドサービスは，データセンタ内の複数のサーバなどのハードウエア群を，クラウド利用者とのサービス契約に基づいて仮想化し，その仮想マシン等のインフラをネットワーク経由のサービスとしてクラウド利用者に提供する。
【０００３】
このようなクラウドサービスでは，仮想化ソフトウエア（ハイパバイザ）が物理マシンを複数の仮想マシンに割当てて，各仮想マシンにインストールされたアプリケーションプログラムによるサービスの提供を可能にする。したがって，データセンタに配備された複数の物理マシンには，それぞれ複数の仮想マシンが割当てられる。
【０００４】
マイグレーション，とりわけライブマイグレーションは，アプリケーションによるサービスを停止することなく，仮想マシンを別の物理マシンに移動する技術であり，クラウドサービスにおいて重要な機能である。たとえば，ある物理マシン上の仮想マシンによるＷｅｂシステムへのアクセスが予想を超えて増大した結果，その仮想マシンの高い負荷により物理マシンのＣＰＵの使用率が１００％に達してしまうような場合，その仮想マシンや別の仮想マシンを他の余裕のある物理マシンに移動することが必要になる。このように，複数の仮想マシンの負荷を分散させるために，ライブマイグレーションが利用される。または，物理マシンを再起動させる必要がある場合に，その物理マシン上の仮想マシンを他の物理マシンに移動させるためにライブマイグレーションが利用される（例えば，特許文献１乃至特許文献４参照）。
【０００５】
ライブマイグレーションは，仮想化ソフトウエアが有する一つの機能である。仮想化ソフトウエアは，管理サーバからのライブマイグレーションの指示に応答して，移動先物理マシンのメモリ領域を確保し，移動対象である移動元仮想マシンのメモリ内容を移動先物理マシンのメモリにネットワーク経由でコピーする。これにより移動元仮想マシンのメモリ内容と移動先仮想マシンのメモリ内容とが同期すると，仮想化ソフトウエアは，移動元仮想マシンをサスペンドし，移動先仮想マシンをリジュームし，ハードディスクのデータも移動先仮想マシンに引き継がせる。そして，最後に，移動元仮想マシンのメモリ内容を移動元物理マシンから削除して，処理が完了する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特表２００４−５３０１９６号公報
【特許文献２】特開２０１３−０４７９２０号公報
【特許文献３】特開２００５−１９００５７号公報
【特許文献４】特開２０１１−０３９７９０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ライブマイグレーションの所要時間の大部分が，メモリ内容の転送処理（コピー処理）に要する時間である。このメモリ内容の転送は，移動元仮想マシンをサスペンドすることなく行われるので，コピー処理中に移動元仮想マシンによるメモリへの新たな書き込み発生し，その新たに更新された内容を更に転送処理し，更新されたデータ量が実質的にゼロになるまで転送処理が繰り返される。したがって，このメモリ内容の転送処理の時間を短くすることが，ライブマイグレーションの所要時間を短くするために有効である。
【０００８】
従来，ＯＳがサポートするメモリ容量が少なく，データセンタのネットワーク帯域に余裕があり，仮想マシン上のアプリケーションプログラムの負荷状況も高くなかったため，メモリ内容の転送処理の時間は比較的短かった。
【０００９】
しかしながら，近年，（１）ＯＳはテラバイトを超えるメモリ容量をサポートすることがあり，（２）データベースをメモリ上に展開するオンラインデータベースの技術が登場し，さらに，（３）データセンタの大規模化によりネットワーク帯域に余裕がなくなり，（４）アプリケーションの負荷状況が高くなり転送中の新たなデータ更新が頻繁に発生するようになってきており，また，（５）複数の仮想マシンに対して同時にライブマイグレーションを実行する場合には，１つの仮想マシンに割当て可能なネットワーク帯域が狭くなっている。そのため，メモリ内容の転送処理により長い時間がかかるようになり，ライブマイグレーションの所要時間が長期化する傾向にある。
【００１０】
そこで，一つの実施の形態の目的は，ライブマイグレーションを短時間で行う情報処理システム，制御プログラム及び制御方法を提供することにある。
【課題を解決するための手段】
【００１１】
実施の形態の一つの側面によれば，それぞれに仮想マシンが構築される複数の物理マシンと，
移動元物理マシン上に構築されている移動元仮想マシンが動作している間に，該移動元仮想マシンを移動先物理マシン上に移動させるマイグレーション処理を実行するマイグレーション処理部とを有し，
前記マイグレーション処理部は，
前記移動元仮想マシンの第１のメモリに記憶された第１のデータを，前記第１のメモリから前記移動先物理マシンの第２のメモリに転送し，前記転送中に前記第１のメモリに書き込まれた第２のデータを，前記第２のメモリに転送し，前記第１のデータ及び前記第２のデータの転送完了予定時間が許容時間を上回っている場合，前記第１のメモリに対する書き込みを制限するメモリデータ転送処理部を有する。
【発明の効果】
【００１２】
ライブマイグレーションを短時間で行うことができる。
【図面の簡単な説明】
【００１３】
【図１】本実施の形態におけるクラウドシステムの全体構成を示す図である。
【図２】ハードウエア群のソフトウエアの構成例を示す図である。
【図３】管理サーバのソフトウエアの構成例を示す図である。
【図４】データセンタ内のクラウドサービスポータルサイトと管理サーバとハードウエア群のハードウエア構成を示す図である。
【図５】マイグレーション処理を説明するフローチャート図である。
【図６】マイグレーション処理を説明する図である。
【図７】マイグレーション処理を説明する図である。
【図８】マイグレーション処理を説明する図である。
【図９】マイグレーション処理を説明する図である。
【図１０】メモリ内容の転送処理Ｓ３を説明するフローチャート図である。
【図１１】メモリ内容の転送処理を説明する図である。
【図１２】メモリ内容の転送処理を説明する図である。
【図１３】メモリ内容の転送処理を説明する図である。
【図１４】マイグレーション処理が許容時間内に完了する場合の一例を示す図である。
【図１５】マイグレーション処理が許容時間内に完了しない場合の一例を示す図である。
【図１６】メモリ書き込み処理の概略を説明するフローチャート図である。
【図１７】マイグレーション処理部を説明する図である。
【図１８】メモリ内容の転送処理Ｓ３を説明するフローチャート図である。
【図１９】メモリ割当てテーブルの一例を示す図である。
【図２０】メモリ領域更新テーブル及びダーティページ数管理テーブルの一例を示す図である。
【図２１】メモリ書き込み処理の詳細を説明するフローチャート図である。
【図２２】第１のエラー処理Ｓ３４を説明するフローチャート図である。
【図２３】メモリ割当てテーブル，メモリ領域更新テーブル，ダーティページ数管理テーブルの一例を示す図である。
【図２４】メモリ割当てテーブル，メモリ領域更新テーブル，ダーティページ数管理テーブルの一例を示す図である。
【図２５】メモリ割当てテーブル，メモリ領域更新テーブル，ダーティページ数管理テーブルの一例を示す図である。
【図２６】メモリ割当てテーブル，メモリ領域更新テーブル，ダーティページ数管理テーブルの一例を示す図である。
【図２７】メモリ割当てテーブル，メモリ領域更新テーブル，ダーティページ数管理テーブルの一例を示す図である。
【図２８】メモリ割当てテーブル，メモリ領域更新テーブル，ダーティページ数管理テーブルの一例を示す図である。
【図２９】第２のエラー処理Ｓ３４を説明するフローチャート図である。
【図３０】メモリ書き込み制限処理を説明するフローチャート図である。
【図３１】メモリ書き込み遅延処理Ｓ１０４を説明するフローチャート図である。
【図３２】ダーティページ数管理テーブル，転送メモリ領域数管理テーブルの一例を示す図である。
【図３３】ダーティページ数管理テーブル，転送メモリ領域数管理テーブルの一例を示す図である。
【図３４】メモリ書き込み遅延処理Ｓ１０４を説明するフローチャート図である。
【図３５】差分圧縮を行う場合の転送対象メモリ領域転送処理Ｓ４５を説明するフローチャート図である。
【発明を実施するための形態】
【００１４】
［クラウドシステムの構成］
図１は，本実施の形態におけるクラウドシステムの全体構成を示す図である。データセンタ８内に，ハードウエア群５と，クラウドサービスポータルサイト２と，管理サーバ３とが設けられている。そして，データセンタ８には，インターネットやイントラネット等のネットワーク７を介して，クラウド利用者端末１とクラウド利用者のサービスのクライアント端末６とが接続可能になっている。
【００１５】
ハードウエア群５は，複数の物理マシンを有し，各物理マシンはＣＰＵとメモリ（ＤＲＡＭ）とハードディスク（ＨＤＤ）等のストレージとネットワークとを有する。ハードウエア群５のリソースは，複数の仮想マシンＶＭに割当てられる。クラウドサービスポータルサイト２や管理サーバ３は，例えば，これらの仮想マシンＶＭによって構築されてもよい。
【００１６】
クラウドシステムによりクラウド利用者に提供されるクラウドサービスは，コンピュータシステムを構築し稼働させるための基盤，即ち，仮想マシンやネットワーク等のインフラストラクチャそのものを，ネットワーク７経由で提供するサービスである。
【００１７】
クラウド利用者は，その端末１からクラウドサービスポータルサイト２にアクセスして，仮想マシンに必要な仕様，例えばＣＰＵのクロック周波数，メモリの容量（ＧＢ），ハードディスクの容量（ＭＢ／ｓｅｃ，ＩＯＰＳ），及びネットワークの帯域幅（Ｇｂｐｓ）を選択し，それらについてクラウド利用契約を締結する。また，クラウド利用者端末１は，クラウドサービスポータルサイト２にアクセスして，仮想マシンの稼働状況を監視したり，仮想マシンの動作を操作したりする。
【００１８】
管理サーバ３は，仮想化ソフトウエア（ハイパバイザ）４と連携して，ハードウエア群５内の物理マシンなどを管理し，仮想マシンＶＭにハードウエアを割当てて仮想マシンＶＭを構築し,管理する。
【００１９】
仮想化ソフトウエア４は，管理サーバ３からの指示に応じて，ハードウエア群５の物理マシンのＣＰＵ，メモリ，ハードディスク，ネットワークを割当てて仮想マシンを動作させる基盤ソフトウエアである。仮想化ソフトウエア４は，例えば，ハードウエア群５内のサーバ上で動作する。
【００２０】
仮想マシンＶＭは，上記のハードウエアが割当てられることに加えて，ＯＳ，ミドルウエアＭＷ，アプリケーションＡＰ，データベースＤＢなどを有するイメージファイルをそのハードディスク内に有し，例えば，起動時にイメージファイルをハードディスクからメモリに書き込み，所望のサービスに対応する動作を行う。
【００２１】
クライアント端末６は，クラウド利用者によって運営されるサービスの提供を受けるクライアントの端末である。クライアント端末６は，通常，クラウド利用者の仮想マシンＶＭにネットワーク７を介してアクセスし，クラウド利用者が運営するサービスの提供を受ける。
【００２２】
データセンタの運用者が利用する管理サーバ３は，各物理マシンの負荷状態を監視し，過負荷状態の物理マシン上の仮想マシンＶＭを他の物理マシン上に転送するために，マイグレーションの指示を仮想化ソフトウエア４に対して行う。また，管理サーバ３は，別の理由で仮想マシンＶＭを他の物理マシンに転送する場合も，マイグレーションの指示を仮想化ソフトウエア４に対して行う。このマイグレーションの指示に応答して，仮想化ソフトウエア４は，仮想マシンＶＭのマイグレーション処理を実行する。
【００２３】
図２は，ハードウエア群のソフトウエアの構成例を示す図である。ハードウエア群５は，図示しないＣＰＵ（プロセッサ）などのハードウエアに加えて，ソフトウエア（プログラム）を記憶するソフトウエア記憶領域４１０と，テーブルを構築する情報を記憶するテーブル情報記憶領域４２０とを有する。仮想化ソフトウエア４は，図２の例ではソフトウエア記憶領域４１０に記憶されている。仮想化ソフトウエア４は，コンピュータのＣＰＵにより実行されることで，ハードウエア群５のリソースを仮想マシンＶＭに割当てて，仮想マシンＶＭを動作させる。
【００２４】
ソフトウエア記憶領域４１０に記憶されたプログラムは，ハードウエア群５のＣＰＵにより実行されることで，例えば，仮想マシンを作成する仮想マシン作成プログラム４１１は仮想マシン作成部として動作し，仮想マシンを起動する仮想マシン起動プログラム４１２は仮想マシン起動部として動作し，仮想マシンをシャットダウンする仮想マシンシャットダウンプログラム４１３は仮想マシンシャットダウン部として動作し，起動状態の仮想マシンを一時停止，つまりサスペンドする仮想マシンサスペンドプログラム４１４は仮想マシンサスペンド部として動作し，サスペンド状態の仮想マシンを再開，つまりリジュームする仮想マシンリジュームプログラム４１５は仮想マシンリジューム部として動作し，仮想マシンの動作情報を収集する仮想マシン動作情報収集プログラム４１６は仮想マシン動作情報収集部として動作する。さらに，ソフトウエア記憶領域４１０に記憶されたプログラムは，ハードウエア群５のＣＰＵにより実行されることで，例えば，管理サーバ３からのマイグレーション指示に応答して仮想マシンを他の物理マシン上に転送するマイグレーション処理を行うマイグレーション処理プログラム４１７はマイグレーション処理部として動作し，仮想マシンのメモリ領域に対する書き込み要求があった場合に，メモリ書き込み処理を行う仮想マシン書き込み処理プログラム４１８は仮想マシン書き込み処理部として動作する。メモリ書き込み処理の詳細については，図１６及び図２１で説明する。
【００２５】
テーブル情報記憶領域４２０は，例えば，仮想マシンＶＭの仮想アドレスと物理アドレスとを対応させて記憶するメモリ割当てテーブル４２１などの情報が記憶されている。なお，仮想アドレスとは，仮想マシンにおいてプロセスごとに割当てられた論理的なアドレスのことであり，物理アドレスとは，メモリに割当てられた物理的なアドレスのことである。
【００２６】
図３は，管理サーバのソフトウエアの構成例を示す図である。管理サーバ３は，図示しないＣＰＵ（プロセッサ）などのハードウエアに加えて，記憶媒体３３６を有する。また，記憶媒体３３６は，ソフトウエア（プログラム）を記憶するソフトウエア記憶領域３１０と，テーブルを構築する情報を記憶するテーブル情報記憶領域３２０とを有する。
【００２７】
ソフトウエア記憶領域３１０に記憶されたプログラムは，管理サーバ３のＣＰＵにより実行されることで，例えば，クラウドサービスポータルサイト２でクラウド契約を締結したクラウド利用者への課金処理などのクラウド利用者管理を行うクラウド利用者管理プログラム３１１はクラウド利用者管理部として動作し，クラウド契約に基づいてハードウエアリソースを割当てて仮想マシンＶＭを作成する仮想マシン作成プログラム３１２は仮想マシン作成部として動作し，仮想マシンを管理する仮想マシン管理プログラム３１３は仮想マシン管理部として動作し，仮想マシンの動作を監視する仮想マシン監視プログラム３１４は仮想マシン監視部として動作する。
【００２８】
さらに，ソフトウエア記憶領域３１０に記憶されたプログラムは，管理サーバ３のＣＰＵにより実行されることで，例えば，仮想マシンの起動を仮想化ソフトウエア４に指示する仮想マシン起動制御プログラム３１５は仮想マシン起動制御部として動作し，起動状態の仮想マシンのシャットダウンを仮想化ソフトウエア４に指示する仮想マシンシャットダウン制御プログラム３１６は仮想マシンシャットダウン制御部として動作し，起動状態の仮想マシンのサスペンドを仮想化ソフトウエア４に指示する仮想マシンサスペンド制御プログラム３１７は仮想マシンサスペンド制御部として動作し，サスペンド状態の仮想マシンのリジュームを仮想化ソフトウエア４に指示する仮想マシンリジューム制御プログラム３１８は仮想マシンリジューム制御部として動作し，仮想マシンのマイグレーションを仮想化ソフトウエア４に指示する仮想マシンマイグレーション制御プログラム３１９は仮想マシンマイグレーション制御部として動作する。
【００２９】
テーブル情報管理領域３２０には，例えば，仮想化ソフトウエア４から報告される仮想マシンの動作情報を含む仮想マシン動作情報テーブル３２１と，仮想マシンとクラウド利用者とその契約などを管理する仮想マシン管理テーブル３２２などの情報が記憶されている。
【００３０】
図４は，データセンタ内のクラウドサービスポータルサイトと管理サーバとハードウエア群のハードウエア構成を示す図である。管理サーバ３は，プロセッサであるＣＰＵ３３０と，メモリ３３２と，外部インターフェース３３４と，ソフトウエア等を記憶する記憶媒体３３６とを有し，それらがバス３３８を介して接続されている。記憶媒体３３６は，例えば，ソフトウエア３１０を読み出し可能であるＨＤＤである。また，ハードウエア群５は，管理サーバ３と同様に，プロセッサであるＣＰＵ５３０と，メモリ５３２と，外部インターフェースＩＦ５３４と，ソフトウエア等を記憶する記憶媒体５３６とを有し，それらがバス５３８を介して接続されている。ハードウエア群５内の記憶媒体５３６内には，図２で説明した仮想化ソフトウエア４などが記憶される。
【００３１】
更に，クラウドサービスポータルサイト２も，管理サーバ３と同様に，プロセッサであるＣＰＵと，メモリと，外部インターフェースＩＦと，サイト制御ソフトウエア等を記憶する記憶媒体とを有し，それらがバスを介して接続されている。
【００３２】
［マイグレーション］
次に，仮想化ソフトウエア４によるマイグレーションの処理について説明する。ここでは，特に，移動元物理マシン上で動作中の移動元仮想マシンを，その動作を停止することなく，移動先物理マシンに移動させるライブマイグレーションについて説明する。
【００３３】
図５は，仮想化ソフトウエア４によるマイグレーション処理のフローチャート図である。また，図６〜図９は，マイグレーション処理を説明する図である。図６〜図９を参照しながら，図５のフローチャートの処理を以下で説明する。
【００３４】
管理サーバ３からのマイグレーションの指示（Ｓ１のＹＥＳ）に応答して，仮想化ソフトウエア４はコンピュータによりマイグレーション処理を実行される。管理サーバ３からのマイグレーション指示には，移動元物理マシンと移動元仮想マシンを特定する情報（例えばＩＰアドレス）と，移動先物理マシンと移動先仮想マシンを特定する情報若しくは移動先物理マシンは任意の物理マシンでよいと指定する情報とが含まれている。
【００３５】
図６に示されるとおり，移動元物理マシン１０−Ｘには，仮想化ソフトウエア４−Ｘにより２つの仮想マシンＶＭＡ，ＶＭＢ−Ｘが動作中である。それぞれの仮想マシンＶＭＡ，ＶＭＢ−Ｘには，物理マシン１０−Ｘ内のメモリ１２Ａ，１２ＢとＣＰＵのレジスタ１１Ａ，１１Ｂとがそれぞれ割当てられている。また，移動元物理マシン１０−Ｘには，ハードディスクＨＤＤが接続され，仮想マシンＶＭＡ，ＶＭＢ−Ｘからアクセスされている。一方，移動先物理マシン１０−Ｙには，仮想化ソフトウエア４−Ｙにより１つの仮想マシンＶＭＣが動作中である。そして，移動元仮想マシンＶＭＢ−Ｘを移動元物理マシン１０−Ｘから移動先物理マシン１０−Ｙに移動するマイグレーション処理が行われるものとする。
【００３６】
仮想マシンＶＭＢ−Ｘが起動されると，ハードディスクＨＤＤ内のＯＳや，ミドルウエア，アプリケーションがメモリ１２Ｂ（または第１のメモリ）にダウンロードされる。そして，仮想マシンＶＭＢ−Ｘが動作を開始すると，ＣＰＵ内のレジスタ１１Ｂとメモリ１２Ｂとにデータが書き込まれそして読み出される。
【００３７】
仮想化ソフトウエア４−Ｘは，移動先物理マシンの仮想化ソフトウエア４−Ｙに，移動先仮想マシンのメモリ領域を確保させる（Ｓ２）。これにより，図６に示されるとおり，移動先物理マシン１０−Ｙ内のメモリにメモリ２２Ｂの領域が確保され，移動先物理マシン１０−Ｙに仮想マシンＶＭＢ−Ｙの枠組みが構成される。
【００３８】
次に，図７に示されているとおり，仮想化ソフトウエア４−Ｘは，移動元仮想マシンＶＭＢ−Ｘのメモリ１２Ｂ内の内容（第１のデータ）を，移動先仮想マシンＶＭＢ−Ｙのメモリ２２Ｂ（または第２のメモリ）に転送しコピーする（Ｓ３）。このメモリ内容の転送処理は，長い処理時間を要する。更に，メモリ内容を転送中に動作中の仮想マシンＶＭＢ−Ｘがメモリ１２Ｂにデータを書き込むと，その書き込みがあったメモリ領域，すなわちダーティページ（差分ページ）のデータ（差分データまたは第２のデータ）がメモリ１２Ｂからメモリ２２Ｂに再転送されコピーされる。このメモリ内容の再転送は，両メモリ１２Ｂ，２２Ｂがほぼ同期するまで繰り返し行われる。そして，メモリ内容の転送中に発生したダーティページの量が小さくなれば，仮想化ソフトウエア４はメモリ内容の転送を終了する。これにより，メモリ２２Ｂ内には，動作中の仮想マシンＶＭＢ−Ｘのメモリとほぼ同じ内容（データ）が書き込まれる。メモリ内容の転送処理の詳細については，図１０，図１４，図１５で説明する。
【００３９】
そして，図８に示されているとおり，仮想化ソフトウエア４−Ｘは，移動元仮想マシンＶＭＢ−Ｘをサスペンドする（Ｓ４）。これにより，移動元仮想マシンＶＭＢ−Ｘの動作は停止し，メモリ１２Ｂへのさらなる書き込みや，ＣＰＵ内のレジスタ１１Ｂの変更は発生しない。
【００４０】
なお，仮想マシンのサスペンドとは仮想マシンの一時停止であり，その処理は，仮想マシンへのＣＰＵなどのハードウエアの割当の停止，仮想マシンのメモリ内のデータや情報のハードディスクへの退避，コンテキスト，即ち仮想マシンのＣＰＵが実行中の命令アドレス，各種レジスタ（汎用レジスタや浮動小数点レジスタなど）内のデータのハードディスクへの退避，仮想マシンに割当てていたハードウエアリソースの開放を含む。
【００４１】
一方，仮想マシンのリジュームとは一時的停止状態の仮想マシンを再開することであり，その処理は，仮想マシンへのハードウエアリソースの割当て，コンテキストをハードディスクから読み出してメモリ内に復元すること，仮想マシンのメモリ内のデータや情報をハードディスクから読み出してメモリ内へ復元すること，仮想マシンへのＣＰＵなどのハードウエアの割当ての再開を含む。
【００４２】
移動元仮想マシンＶＭＢ−Ｘをサスペンドした後，図８に示されているとおり，仮想化ソフトウエア４−Ｘは，移動元仮想マシンのメモリ１２Ｂに残っているダーティページのデータと，ＣＰＵのレジスタ１１Ｂのデータ（コンテキスト）を，移動先仮想マシンＶＭＢ−Ｙのメモリ２２ＢとＣＰＵのレジスタ２１Ｂに転送する（Ｓ５）。メモリ１２Ｂに残っているダーティページがわずかであれば，ここで転送する必要があるデータ量もごくわずかになり，移動元仮想マシンＶＭＢ−Ｘと移動先仮想マシンＶＭＢ−Ｙが同時に停止状態になる時間も短時間になる。
【００４３】
そして，図９に示されるとおり，仮想化ソフトウエア４−Ｙは，移動先仮想マシンＶＭＢ−Ｙをリジュームする（Ｓ６）。具体的なリジューム処理は，前述のとおりである。移動先仮想マシンＶＭＢ−Ｙは，メモリ２２ＢとＣＰＵのレジスタ２１Ｂ内に，移動元仮想マシンＶＭＢ−Ｘのメモリ１２Ｂとレジスタ１１Ｂと同じデータが転送されているので，仮想化ソフトウエア４が移動先仮想マシンＶＭＢ−Ｙをリジュームすると，移動元仮想マシンＶＭＢ−Ｘと同じ動作を再開する。また，移動先仮想マシンＶＭＢ−Ｙは，ハードディスクＨＤＤへのアクセスも移動元仮想マシンＶＭＢ−Ｘと同様に再開する。
【００４４】
最後に，図９に示されるとおり，仮想化ソフトウエア４−Ｘは，移動元仮想マシンＶＭＢ−Ｘを削除する（Ｓ７）。具体的には，メモリ１２Ｂ内のデータを削除し，ＣＰＵのレジスタ１１Ｂをリセットする。以上で，仮想マシンのライブマイグレーション処理が完了する。
【００４５】
［メモリ内容の転送処理］
図１０は，メモリ内容の転送処理Ｓ３を説明するフローチャート図である。図１１〜図１３は，メモリ内容の転送処理を説明する図である。図１１に示されるとおり，仮想化ソフトウエア４−Ｘは，最初に，移動元物理マシン１０−Ｘ内の移動元仮想マシンＶＭＢ−Ｘに割当てられているメモリ１２Ｂの全メモリ内容（データ）を，移動先物理マシン１０−Ｙ内の移動先仮想マシンＶＭＢ−Ｙに割当てられる予定のメモリ２２Ｂに転送しコピーする（Ｓ１１）。このメモリ内容の転送中に，動作中の移動元仮想マシンＶＭＢ−Ｘによるメモリ１２Ｂ内の転送中または転送済のメモリ領域への書き込みが発生した場合，データが更新されたメモリ領域であるダーティページＤＰ１が生成される。仮想化ソフトウエア４−Ｘは，メモリ転送中に更新されたメモリ領域（ダーティページＤＰ１）を記録する（Ｓ１２）。
【００４６】
全メモリ転送が完了すると（Ｓ１３のＹＥＳ），図１２に示されるとおり，仮想化ソフトウエア４−Ｘは，全メモリ内容の転送中にメモリ１２Ｂ内に生成されたダーティページＤＰ１を，移動先のメモリ２２Ｂに再度転送してコピーする（Ｓ１４）。このダーティページＤＰ１の転送中に，動作中の移動元仮想マシンＶＭＢ−Ｘによるメモリ１２Ｂへの書き込みが再度発生し，データが更新されたメモリ領域であるダーティページＤＰ２が生成される。仮想化ソフトウエア４−Ｘは，メモリ転送中にデータ更新されたメモリ領域（ダーティページＤＰ２）を記録する（Ｓ１５）。
【００４７】
上記の処理工程Ｓ１４，Ｓ１５は，メモリ１２Ｂ内のダーティページが基準値未満になるまで（Ｓ１６のＮＯ），繰り返される。メモリ１２Ｂ内のダーティページが基準値未満になると（Ｓ１６のＹＥＳ），メモリ内容の転送は終了する。
【００４８】
そして，図５のフローチャートで説明したとおり，仮想化ソフトウエア４−Ｘは，移動元仮想マシンＶＭＢ−Ｘをサスペンドし，図１３に示されるとおり，メモリ１２Ｂ内の残ったダーティページＤＰＮと，ＣＰＵ内のレジスタ１１Ｂのデータ（コンテキスト）を，移動先仮想マシンＶＭＢ−Ｙのメモリ２２Ｂとレジスタ２１Ｂに転送してコピーする（Ｓ５）。そして，移動先仮想マシンＶＭＢ−Ｙがリジュームされ，移動元仮想マシンＶＭＢ−Ｘが削除されて，ライブマイグレーションが完了する。
【００４９】
図１４は，マイグレーション処理が許容時間内に完了する場合の一例を示す図である。横軸は，時間軸であり，縦軸は，移動元物理マシンのメモリから移動先物理マシンのメモリへ転送すべき残りの転送データ量を示している。また，図１４における基準値は，残りの転送データ量がこの値まで減少したときに，移動元仮想マシンをサスペンドするための目安として用いるものである。さらに，移動元仮想マシンのサスペンドを行うまでの許容時間として，時間ｔ２が設定されているものとする（以下，許容時間ｔ２とする）。
【００５０】
図１４に示されるように，時間の経過に従って残りの転送データ量が減少している。すなわち，メモリ内容の転送数が，発生するダーティページ数の上回っている状態であることを示している。そして，残りの転送データ量が基準値まで減少したときに，移動元仮想マシンのサスペンドが行われ（図１４の時間ｔ０），残りの転送データがなくなるまで転送が行われる（図１４の時間ｔ１）。すなわち，移動元仮想マシンの停止は，移動元仮想マシンのサスペンドが行われた後，少なくとも残り転送データの転送が終了するまで行われる（図１４の停止時間ｔｓ）。
【００５１】
図１４の例に対し，図１５の例は，マイグレーション処理が許容時間内に完了しない場合の一例を示す図である。図１５に示されるように，時間の経過に対して残りの転送データ量の減少ペースが図１４の例と比較して少なくなっている。すなわち，図１５は，メモリ内容の転送数が発生するダーティページ数を上回っているものの，その差が図１４の例と比較して小さくなっている場合の例である。
【００５２】
図１５に示すように，許容時間ｔ２において，残りの転送量が基準値まで減少していないにもかかわらず，移動元仮想マシンのサスペンドを行っている。そのため，移動元仮想マシンの停止時間に転送するデータ量が増大し，図１４の例と比較して移動元仮想マシンの停止時間ｔｓが長くなっている。
【００５３】
［本実施の形態におけるマイグレーションのメモリ転送］
図１０，図１４及び図１５で説明したとおり，マイグレーション処理において，メモリ内容の転送中に移動元仮想マシンのメモリへのデータの更新が頻繁に発生すると，発生するダーティページの量が増大する。その結果，残りの転送データ量が基準値に達するまでのメモリ内容の転送処理時間が長くなり，または終了しないという状況になり，好ましくない。
【００５４】
そこで，本実施の形態では，移動元仮想マシンのメモリ内容の転送完了予定時間が許容値を超えると予測される場合に，移動元仮想マシンのメモリ内容への書き込みを制限することにより，転送処理の終了時間を遅延する。
【００５５】
［第１の実施の形態］
最初に第１の実施の形態について説明する。図１６は，メモリ書き込み処理の概略を説明するフローチャート図である。仮想化ソフトウエア４は，仮想マシンのメモリ領域に対する書き込みの要求が発生した場合（Ｓ２１），転送完了予定時間Ｔ_０と許容時間の比較を行う（Ｓ２２）。この転送完了予定時間Ｔ_０は，ある単位時間内に転送を行った転送メモリ領域数と，その単位時間内に発生したダーティページ数とに基づいて，移動元仮想マシンのメモリに記憶されたデータを，移動先物理マシンのメモリに転送するまでに要する時間を予測したものである。また，許容時間は，例えば，サービス要件との兼ね合いから予め定めた転送完了予定時間Ｔ_０の最大許容時間である。
【００５６】
この転送完了予定時間Ｔ_０は，移動元仮想マシンのメモリから移動先物理マシンのメモリに転送すべきデータ量を，転送データ速度で除算することによって算出することができる。以下，転送完了予定時間Ｔ_０の具体的な算出方法について説明する。
【００５７】
初めに，転送すべきデータ量について説明する。マイグレーションにおいては，図７に示されているように，移動元仮想マシンのメモリ内のデータを転送した後，図８に示されているように，移動元仮想マシンをサスペンドして，移動元仮想マシンのメモリに残っているダーティページのデータと，ＣＰＵのレジスタのデータ（コンテキスト）を転送する（以下，このダーティページのデータと，コンテキストとの合計を最終転送データとする）。そのため，転送すべきデータ量は，移動元仮想マシンのメモリ内の全データ量から最終転送データ量を減算することによって算出することができる。すなわち，次の式（１）の通りである。なお，この最終転送データ量は，図１３，図１４の基準値に対応する。
転送すべきデータ量＝仮想元マシンのメモリ内の全データ量−最終転送データ量  （１）
次に，転送データ速度について説明する。移動元仮想マシンのメモリ内容の転送中において，転送中のメモリ領域または転送済のメモリ領域への書き込みが発生した場合，ダーティページが発生する。このダーティページが発生した場合，移動元仮想マシンから移動先物理マシンへ，発生したダーティページの再転送を行う必要がある。したがって，ある単位時間に移動元仮想マシンから移動先物理マシンへ転送した転送メモリ領域数から，その単位時間に新たに発生したダーティページ数を減算したものが，その単位時間の有効転送メモリ領域数になる。なお，有効転送メモリ領域数とは，転送すべき残りのメモリ領域数の単位時間当たりの減少数である。よって，転送データ速度（単位時間毎の転送データ量）は，単位時間毎の有効転送メモリ領域数に１メモリ領域当たりのデータ量を乗算することによって算出することができる。すなわち次の式（２）の通りである。
転送データ速度＝（ある単位時間に転送した転送メモリ領域数−その単位時間に新たに発生したダーティページ数）＊１メモリ領域当たりのデータ量      （２）
また，この転送データ速度は，ある計測時間内に移動元仮想マシンから移動先物理マシンへ転送した転送メモリ領域数から，その計測時間内に新たに発生したダーティページ数を減算し，その計測時間内の有効転送メモリ領域数を求め，この計測時間内の有効転送メモリ領域数に１メモリ領域当たりのデータ量を乗算したものを計測時間で除算して求めてもよい。すなわち次の式（３）の通りである。
転送データ速度＝（ある計測時間内に転送した転送メモリ領域数−その計測時間内に新たに発生したダーティページ数）＊１メモリ領域当たりのデータ量／計測時間    （３）
そして，上記式（１）において求めた転送すべきデータ量を，上記式（２）または式（３）において求めた転送データ速度で除算することによって，転送完了予定時間Ｔ_０を算出することができる。すなわち以下の式（４）の通りである。
転送完了予定時間Ｔ_０＝転送すべきデータ量／転送データ速度      （４）
ここで，転送完了予定時間Ｔ_０の算出過程において，単位時間毎の有効転送メモリ領域数が，０よりも大きければ，転送完了予定時間Ｔ_０は少なくとも正の有限値になる。しかし，サービス要件等からの制限がある場合には，転送完了予定時間Ｔ_０を所定の許容時間以下にすることが求められる。そのため，この場合においては，算出した転送完了予定時間Ｔ_０が正の有限値であるか否かの判断を行うのではなく，転送完了予定時間Ｔ_０と許容時間との比較を行うことによって，後述する書き込み制限処理を実行するか否かを判断する必要がある。
【００５８】
［書き込み制限処理］
図１６に戻り，転送完了予定時間Ｔ_０が許容時間を下回っている場合（Ｓ２２のＮＯ），書き込みの要求があった書き込み先のメモリ領域に，書き込み制限処理を行わない通常の書き込み処理を行う（Ｓ２４）。一方，転送完了予定時間Ｔ_０が許容時間を上回っている場合は（Ｓ２２のＹＥＳ），書き込み制限処理を行った上で書き込み処置を行う（Ｓ２３）。
【００５９】
この書き込み制限処理は，例えば，現在の単位時間内に発生したダーティページ数が，予め定めた閾値を超えている場合に，書き込み処理を制限して後の単位時間（例えば，次の単位時間）まで遅延させる処理のことであり，この処理を行うことによって，書き込み処理の終了を遅延させるものである。または，この書き込み制限処理は，書き込み処理の処理時間を通常より長くすることによって，書き込み処理の終了を遅延させる処理であってもよい。
【００６０】
このように，第１の実施の形態の情報処理システムは，転送完了予定時間Ｔ_０が許容時間を上回っている場合に，移動元仮想マシンのメモリ内容への書き込みを制限する。これにより，有効転送メモリ領域数が増加し，転送完了予定時間Ｔ_０を減少させるように制御することが可能になる。そのため，第１の実施の形態の情報処理システムは，マイグレーションを行うための通信帯域が制限されている状況下においても，メモリ内容の転送時間を短縮化し，許容時間以内にメモリ内容の転送を終了することが可能になる。
【００６１】
[第２の実施の形態]
次に，第２の実施の形態について説明する。図１７は，マイグレーション処理部を説明する図である。図２で説明したように，マイグレーション処理プログラム４１７は，ハードウエア群５のＣＰＵにより実行されることで，マイグレーション処理部４５０として動作する。マイグレーション処理部４５０は，管理サーバ３からのマイグレーション指示に応答して，移動元仮想マシンのメモリに記憶されたデータを他の物理マシン（移動先物理マシン）のメモリに転送する。
【００６２】
マイグレーション処理部４５０は，ハードウエア群５のＣＰＵによるマイグレーション処理プログラム４１７の実行により，移動先物理マシンに新たなメモリ領域を確保する転送先メモリ領域制御部４３１と，移動元仮想マシンのメモリ内容を移動元物理マシンから移動先物理マシンに転送するメモリデータ転送処理部４３２と，移動元仮想マシンのメモリ領域のメモリ内容を，移動元物理マシンのメモリのデータを移動先物理マシンのメモリに転送するときの，単位時間毎の転送メモリ領域数を計測する転送メモリ領域数計測部４３３と，書き込み不可のメモリ領域（書き込み禁止状態にあるメモリ領域）に書き込みの要求があった場合に，エラー処理を行う書き込みエラー処理部４３４の機能を実現する。エラー処理の詳細については，図２１で説明する。
【００６３】
また，図２で説明したテーブル情報記憶領域４２０には，移動元仮想マシンのメモリ内の各メモリ領域が，ダーティページであるか否かを記憶するメモリ領域更新テーブル４４１と，単位時間毎に発生したダーティページ数を集計して記憶するダーティページ数管理テーブル４４２と，転送メモリ領域数計測部４３３において計測した単位時間毎の転送メモリ領域数を記憶する転送メモリ領域数管理テーブル４４３の情報が記憶されている。なお，ダーティページ数管理テーブル４４２における単位時間と，書き込み転送メモリ領域数管理テーブル４４３における単位時間とは常に同期している。
【００６４】
［メモリ転送処理］
図１８は，メモリ内容の転送処理Ｓ３を説明するフローチャート図である。メモリ内容の転送処理Ｓ３は，仮想化ソフトウエア４が，移動元仮想マシンのメモリのデータを移動先物理マシンのメモリに転送しコピーするものであり，各メモリ領域を順次転送する。以下，転送処理Ｓ３において現に転送を行っているメモリ領域を「転送対象メモリ領域」とする。なお，このメモリ領域は，転送する単位領域のことであり，通信回線の状況等によって変更可能なものであってよい。
【００６５】
仮想化ソフトウエア４は，初めに，転送対象メモリ領域をメモリ割当てテーブル４２１内の最初のメモリ領域にする（Ｓ４１）。具体的には，メモリ内容の転送処理Ｓ３の開始時においては，メモリ割当てテーブル４２１内に記憶されている先頭のメモリ領域を転送対象メモリ領域として設定する。なお，必ずメモリ割当てテーブル４２１に記憶されているメモリ領域の順に転送を行う必要はなく，転送状況等に応じて任意の順に転送するものであってよい。
【００６６】
次に，仮想化ソフトウエア４は，メモリ内容の転送処理Ｓ３で参照するメモリ割当てテーブル４２１，メモリ領域更新テーブル４４１及びダーティページ数管理テーブル４４２の設定を行う（Ｓ４２〜Ｓ４４）。以下，メモリ割当てテーブル４２１，メモリ領域更新テーブル４４１及びダーティページ数管理テーブル４４２の構成について説明する。
【００６７】
図１９は，メモリ割当てテーブルの一例を示す図である。メモリ割当てテーブル４２１は，移動元仮想マシンのメモリ領域毎の仮想アドレスと，仮想アドレスと１対１で対応する物理アドレス（または割当てメモリアドレス）と，各メモリ領域が，書き込み可能であるかまたは書き込み不可であるかを示す属性とを有する。このように，メモリ割当てテーブル４２１は，メモリ領域毎の仮想アドレスと物理アドレスとの対応及びメモリ領域毎の属性を記憶するものである。図１９の例では，メモリ割当てテーブル４２１は，仮想アドレスがそれぞれＶ−ＡＤＤ−０，Ｖ−ＡＤＤ−１，Ｖ−ＡＤＤ−２，Ｖ−ＡＤＤ−３である４つのメモリ領域に関する情報を記憶しており，仮想アドレスＶ−ＡＤＤ−０と物理アドレスＰ−ＡＤＤ−ａ，仮想アドレスＶ−ＡＤＤ−１と物理アドレスＰ−ＡＤＤ−ｂ，仮想アドレスＶ−ＡＤＤ−２と物理アドレスＰ−ＡＤＤ−ｃ，仮想アドレスＶ−ＡＤＤ−３と物理アドレスＰ−ＡＤＤ−ｄとをそれぞれ対応されて記憶している。また，この例における属性は，書き込み不可を示す「０」が４つのメモリ領域の全てに設定されている。書き込み可能の場合は，属性に「１」が記憶される。
【００６８】
図２０は，メモリ領域更新テーブル及びダーティページ数管理テーブルの一例を示す図である。メモリ領域更新テーブル４４１は，仮想マシンのメモリ内における各メモリ領域がダーティページであるか否かを記憶するものであり，仮想マシンのメモリ内におけるメモリ領域毎の仮想アドレスと，各メモリ領域がダーティページであるか否かを記憶するダーティビットとを有する。また，ダーティページ数管理テーブル４４２は，単位時間毎に発生したダーティページ数を集計するものであり，集計単位である単位時間と，単位時間毎に集計したダーティページ数とを有する。なお，以下の説明において，「ＤＰ」は，ダーティページのことを示している。
【００６９】
図２０の例におけるメモリ領域更新テーブル４４１は，仮想アドレスＶ−ＡＤＤ−０，Ｖ−ＡＤＤ−１，Ｖ−ＡＤＤ−２，Ｖ−ＡＤＤ−３と，それぞれに対応するダーティビットとを記憶している。また，この例におけるダーティビットは，それぞれのメモリ領域がダーティビットでないことを示す「０」が，４つのメモリ領域の全てに設定されている。それぞれのメモリ領域がダーティビットである場合には，ダーティビットに「１」が記憶される。また，図２０の例におけるダーティページ数管理テーブルは，単位時間ｔ０において「１０」のメモリ領域に書き込みがあり，単位時間ｔ１において「１４」のメモリ領域に書き込みがあり，単位時間ｔ２において「１１」のメモリ領域に書き込みがあったことを示している。
【００７０】
なお，単位時間毎のメモリ領域数は，書き込みがあったメモリ領域数を集計するものである。そのため，ある単位時間内にあるメモリ領域に複数回の書き込みがあった場合であっても，書き込みメモリ領域数は「１」として加算される。また，ダーティページ数管理テーブル４４２は，メモリ内容の転送が行われている間，単位時間毎に書き込みメモリ領域数を集計し続ける。
【００７１】
図１８に戻り，仮想化ソフトウエア４は，メモリ割当てテーブル４２１内の転送対象メモリ領域の属性を書き込み不可にする（Ｓ４２）。これにより，転送中または転送済のメモリ領域に対して書き込み要求が発生した場合に書き込みエラーが発生し，図２２において後述するように，エラー処理が実行されるようになる。また，仮想化ソフトウエア４は，メモリ領域更新テーブル４４１内の転送対象メモリ領域のダーティビットに「０」を設定し（Ｓ４３），ダーティページ数管理テーブル４４２内の転送対象メモリ領域のダーティページ数に「０」を設定する（Ｓ４４）。これにより，転送中または転送済のメモリ領域に対して書き込みの要求が発生した場合に，その書き込みの要求があったメモリ領域の情報（仮想アドレス）を記憶することが可能になる。
【００７２】
次に，仮想化ソフトウエア４は，転送対象メモリ領域のメモリ内容の転送を行う（Ｓ４５）。転送対象メモリ領域のメモリ内容の転送完了後，全メモリ領域の転送が完了しており，且つ転送が完了していないダーティページが基準値を下回っていれば，メモリ転送処理Ｓ３は終了する（Ｓ４６のＹＥＳ）。移動元仮想マシンのサスペンド前においては，ダーティページは発生し続けるため，ダーティページの転送が完全に終了する時間を予測することが困難であり，また，転送が完全に終了するまでに長時間を要する場合がある。そのため，移動元仮想マシンのメモリ内のダーティページが，基準値を下回った時点でサスペンドを行うことによって，マイグレーション全体に要する処理時間の予測を容易にし，またマイグレーションの処理時間が長時間に及ぶことを防止することができる。なお，この基準値は，例えば，仮想マシンの停止予定時間の許容時間によって決定する。
【００７３】
また，図１８のメモリ転送処理Ｓ３は，全メモリ領域の転送を完了させた後にダーティページの転送を行うものを想定しているが，全メモリ領域の転送が完了する前にダーティページの転送を開始するものであってもよい。
【００７４】
一方，転送対象メモリ領域のメモリ内容の転送後，全メモリ領域の転送が完了しており，且つ転送が完了していないダーティページが基準値を下回るという条件を満たしていない場合には（Ｓ４６のＮＯ），転送対象メモリ領域を割当てテーブルの次のメモリに設定する（Ｓ４７）。そして，全メモリ領域の転送が完了しており，且つ転送が完了していないダーティページが基準値を下回るまでＳ４２からＳ４７の処理を繰り返す。なお，この転送対象メモリ領域のメモリ内容の転送は，各テーブルの更新等の管理が可能であれば，パラレルに転送するものであってもよい。
【００７５】
［メモリ書き込み処理］
図２１は，メモリ書き込み処理を詳細に説明するフローチャート図である。メモリ書き込み処理は，図１８のメモリ転送処理中に発生し，書き込み元の仮想マシンから書き込み要求があったときに行われる。図２で説明した仮想マシン書き込み処理プログラム４１８は，ハードウエア群５のＣＰＵにより実行されることで，仮想マシン書き込み処理部として動作する。初めに，仮想マシン書き込み処理部は，移動元仮想マシンからそのメモリ内のメモリ領域に対する書き込みの要求を受信する（Ｓ３１）。移動元仮想マシンは，メモリの仮想アドレスのみを認識しており，物理アドレスについては認識していない。そのため，移動元仮想マシンは，仮想アドレスに基づいてメモリ書き込み要求を行う。なお，書き込み処理は，仮想マシン書き込み処理部が書き込みの要求を受信するまでは実行されない。
【００７６】
その後，書き込みの要求を受信した仮想マシン書き込み処理部は，メモリ割当てテーブル４２１を参照して，書き込みの要求があった仮想アドレスの属性を取得する（Ｓ３２）。メモリ割当てテーブル４２１については，図１９で詳細に説明したので，その説明を省略する。
【００７７】
Ｓ３２において取得した属性が書き込み可能であった場合（Ｓ３３のＮＯ），仮想マシン書き込み処理部は，仮想アドレスに対応する物理アドレスをメモリ割当てテーブル４２１から取得し（Ｓ３８），移動元仮想マシンに対して，取得した物理アドレスを送信する（Ｓ３９）。Ｓ３２において取得した属性が書き込み可能である場合は，図１８のメモリ転送処理Ｓ３において書き込み不可の設定（Ｓ４２）が行われていないことになるため，そのメモリ領域の転送はまだ行われていないことになる。なお，物理アドレスに基づくメモリ領域への書き込みは，物理アドレスを取得した書き込み元の仮想マシンが行うものであってもよいし，仮想マシン書き込み処理部が行うものであってもよい。
【００７８】
一方，Ｓ３２において取得した属性が書き込み不可であった場合（Ｓ３３のＹＥＳ），仮想マシン書き込み処理部は，エラー処理を実行する（Ｓ３４）。このエラー処理は，書き込み不可のメモリ領域に対して書き込みを行ったことによって出力されたエラーに応答して実行されるものである。すなわち，Ｓ３２において取得した属性が書き込み不可である場合は，メモリ転送処理Ｓ３において書き込み不可の設定が行われていることになるため，そのメモリ領域は，転送中または転送済であることを示している。このエラー処理は，具体的には，メモリ割当てテーブル４２１の属性と，メモリ領域更新テーブル４４１のダーティビットと，ダーティページ数管理テーブル４４２のダーティページ数とを更新した後，メモリ書き込み処理に書き込み許可を返す。このエラー処理の詳細については，図２２で説明する。
【００７９】
エラー処理から書き込み許可を受信した後（Ｓ３５），仮想マシン書き込み処理部は，メモリ割当てテーブル４２１を参照して，書き込み要求の仮想アドレスに対応する物理アドレスを取得し（Ｓ３６），取得した物理アドレスに対して，メモリ書き込みを実行する（Ｓ３７）。Ｓ３７またはＳ３９の処理後，メモリ書き込み処理は，次の書き込みの要求が発生するまで待機する。
【００８０】
［エラー処理１］
図２２は，第１のエラー処理Ｓ３４を説明するフローチャート図である。初めに，マイグレーション処理部４５０は，書き込みの要求があったメモリ領域に代えて，移動元仮想マシンにおける未割当てのメモリ内から新たなメモリ領域を割当てる（Ｓ５１）。すなわち，書き込み不可のメモリ領域（転送中または転送済のメモリ領域）に対して書き込みの要求があった場合は，エラー処理Ｓ３４は，このメモリ領域に書き込みを実行することなく，新たなメモリ領域を割当てて確保する。次に，新たなメモリ領域の割当てに対応して，メモリ割当てテーブル４２１の物理アドレスを新たなメモリ領域の物理アドレスに更新し（Ｓ５２），属性を書き込み可能に更新する（Ｓ５３）。すなわち，新たなメモリ領域を割当てることにより，ダーティページの転送を行う際に，新たに割当てられたメモリ領域のみを転送すればよいため，転送処理を簡略化することができる。
【００８１】
ここで，割当てられた新たなメモリ領域は，メモリ割当てテーブル４２１の属性が書き込み可能に更新されるため，この新たなメモリ領域に対してさらに書き込みがあった場合には，メモリ書き込み処理のＳ３３がＮＯになるため，エラー処理が実行されずに書き込みが実行される。そのため，仮想化ソフトウエア４は，新たなメモリ領域を割当てた後，この新たなメモリ領域に対してさらに書き込みの要求があっても，新たなメモリ領域の割当ては行わない。すなわち，転送中または転送済のそれぞれのメモリ領域（メモリ割当てテーブル４２１の属性が書き込み不可であるメモリ領域）に対する最初の書き込みに対してのみ，新たなメモリ領域の割当てが行われ，さらに後述するメモリ書き込み制限処理が行われる。これにより，新たなメモリ領域の割当てが頻発することを防止し，メモリ等のリソースを節約することができる。
【００８２】
次に，マイグレーション処理部４５０は，メモリ領域更新テーブル４４１のダーティビットを「１」に更新する（Ｓ５４）。これにより，ダーティビットの転送を行う際に，メモリ領域更新テーブル４４１のみを参照し，ダーティビットが「１」になっているメモリ領域のみを転送することにより，ダーティページの転送を行うことができる。また，マイグレーション処理部４５０は，ダーティページ数管理テーブル４４２のダーティページ数に「１」を加算する（Ｓ５５）。これにより，各単位時間内に発生した新たなメモリ領域数を集計することが可能になる。なお，Ｓ５２〜Ｓ５５の処理の実行順序は，順不同である。さらに，マイグレーション処理部４５０は，Ｓ５２〜Ｓ５５の処理後，メモリ書き込み処理に対して書き込み許可を通知し（Ｓ５６），メモリ書き込み処理において書き込みが実行される。
【００８３】
［テーブル更新の具体例］
図２３から図２８は，メモリ割当てテーブル，メモリ領域更新テーブル，ダーティページ数管理テーブルの一例を示す図である。
【００８４】
図２３から図２８を参照しながら，図２２のエラー処理Ｓ３４のＳ５２〜Ｓ５５についての具体例の説明をする。ここでは，Ｖ−ＡＤＤ−０，Ｖ−ＡＤＤ−１，Ｖ−ＡＤＤ−２，Ｖ−ＡＤＤ−３の４つのメモリ領域の転送処理中にエラーが発生したについて考える。具体的に，Ｖ−ＡＤＤ−０を転送し（転送中に書き込みなし），Ｖ−ＡＤＤ−１を転送し（転送中にＶ−ＡＤＤ−１に書き込みあり），Ｖ−ＡＤＤ−２を転送し（転送中に書き込みなし），Ｖ−ＡＤＤ−３を転送する場合（転送中にＶ−ＡＤＤ−０に書き込みあり）について説明を行う。なお，この例において，全ての転送及び書き込みは同一単位時間内ｔ０に行われたものとする。
【００８５】
転送開始時において，全ての仮想アドレスの属性に書き込み可能を示す「１」が設定されている。これは，転送開始前においては，全てのメモリ領域に対して書き込みが可能であることからも明らかである。次に，Ｖ−ＡＤＤ−０の転送開始時において，図２３に示すようにＶ−ＡＤＤ−０の属性に書き込み不可を示す「０」が設定される。すなわち，Ｖ−ＡＤＤ−０の書き込みが不可になり，Ｖ−ＡＤＤ−１，Ｖ−ＡＤＤ−２，Ｖ−ＡＤＤ−３の書き込みは可能である状態になる。ここでは書き込みは発生していないため，メモリ領域更新テーブル４４１及びダーティページ数管理テーブル４４２に変化はない。
【００８６】
Ｖ−ＡＤＤ−０の転送終了後であってＶ−ＡＤＤ−１の転送開始時においては，図２４に示すように，Ｖ−ＡＤＤ−１の属性に「０」が設定される。すなわち，Ｖ−ＡＤＤ−０，Ｖ−ＡＤＤ−１の書き込みが不可になり，Ｖ−ＡＤＤ−２，Ｖ−ＡＤＤ−３の書き込みは可能である状態になる。このＶ−ＡＤＤ−１の転送中にＶ−ＡＤＤ−１の書き込みが発生すると，図２５に示すように，Ｖ−ＡＤＤ−１の物理アドレスは，Ｐ−ＡＤＤ−ｂから新たなメモリ領域（この例においてはＰ−ＡＤＤ−ｆ）に更新され，属性に「１」が設定される。また，この書き込みに伴い，メモリ領域更新テーブル４４１内のＶ−ＡＤＤ−１のダーティビットに「１」が設定され，ダーティページ数管理テーブル４４２内のｔ０のダーティページ数に「１」が設定される。
【００８７】
Ｖ−ＡＤＤ−１の転送終了後であってＶ−ＡＤＤ−２の転送開始時においては，図２６に示すように，Ｖ−ＡＤＤ−２の属性に「０」が設定される。すなわち，Ｖ−ＡＤＤ−０の書き込みが不可になり，Ｖ−ＡＤＤ−１，Ｖ−ＡＤＤ−２，Ｖ−ＡＤＤ−３の書き込みは可能である状態になる。ここでは書き込みは発生していないため，メモリ領域更新テーブル４４１及びダーティページ数管理テーブル４４２に変化はない。
【００８８】
Ｖ−ＡＤＤ−２の転送終了後であってＶ−ＡＤＤ−３の転送開始時においては，図２７に示すように，Ｖ−ＡＤＤ−３の属性に「０」が設定される。すなわち，Ｖ−ＡＤＤ−０，Ｖ−ＡＤＤ−２，Ｖ−ＡＤＤ−３の書き込みが不可になり，Ｖ−ＡＤＤ−１の書き込みは可能である状態になる。このＶ−ＡＤＤ−３の転送中にＶ−ＡＤＤ−０の書き込みが発生すると，図２８に示すように，Ｖ−ＡＤＤ−０の物理アドレスは，Ｐ−ＡＤＤ−ａから新たなメモリ領域（この例においてはＰ−ＡＤＤ−ｅ）に更新され，属性に「１」が設定される。また，この書き込みに伴い，メモリ領域更新テーブル４４１内のＶ−ＡＤＤ−１のダーティビットに「１」が設定され，ダーティページ数管理テーブル４４２内のｔ０のダーティページ数に「２」が設定される。
【００８９】
これにより，Ｖ−ＡＤＤ−０，Ｖ−ＡＤＤ−１，Ｖ−ＡＤＤ−２，Ｖ−ＡＤＤ−３の４つのメモリ領域の転送終了後，メモリ領域更新テーブルのダーティビットが「１」になっているメモリ領域（この例においては，Ｖ−ＡＤＤ−０とＶ−ＡＤＤ−１）を確認することによって，ダーティページの仮想アドレス等の情報を容易に把握することができる。また，ダーティページ数管理テーブルのダーティページ数を参照することによって，各単位時間内に発生したダーティページ数を容易に把握することができる。
【００９０】
［エラー処理２］
図２９は，第２のエラー処理Ｓ３４を説明するフローチャート図である。図２２で説明した第１のエラー処理は，書き込み不可のメモリ領域に書き込みの要求があった場合に，新たなメモリ領域を割当て，この新たなメモリ領域に対して書き込みを行うものであった。これに対し，図２９で説明する第２のエラー処理は，書き込み不可のメモリ領域に書き込みの要求があった場合に，その書き込み不可であるメモリ領域を書き込み可能に更新（メモリ領域の書き込み禁止状態を解除）し，その書き込み可能に更新したメモリ領域に対して書き込みを行うものである。
【００９１】
図２９のエラー処理において，マイグレーション処理部４５０は，書き込みの要求のあったメモリ領域に対して，メモリ割当てテーブル４２１の属性を書き込み可能に更新する（Ｓ６１）。すなわち，図２２のエラー処理のように新たなメモリ領域を割当てることなく，書き込みの要求のあったメモリ領域に対して書き込みを認める。次に，マイグレーション処理部４５０は，メモリ領域更新テーブル４４１のダーティビットを「１」に更新し（Ｓ６２），ダーティページ数管理テーブル４４２のダーティページ数に「１」を加算し（Ｓ６３），さらに，Ｓ６２１〜Ｓ６３の処理後，メモリ書き込み処理に対して書き込み許可を通知する（Ｓ６４）。これらの処理内容は，図２２のエラー処理と同様である。
【００９２】
これにより，新たなメモリ領域を割当てる必要がないため，新たなメモリ領域を割当てるために必要なメモリ等のリソースを，さらに節約することが可能になる。また，ダーティページの転送を行う際には，メモリ領域更新テーブル４４１を参照して，ダーティビットが「１」に更新されたメモリ領域のみを転送すればよいため，転送処理が簡略化される。
【００９３】
なお，図２９のエラー処理も，図２２のエラー処理と同様に，書き込み可能に更新されたメモリ領域に対してさらに書き込みがあった場合には，メモリ書き込み処理のＳ３３がＮＯになるため，エラー処理が実行されずに書き込みが実行される。すなわち，転送中または転送済のそれぞれのメモリ領域（メモリ割当てテーブル４２１の属性が書き込み不可であるメモリ領域）に対する最初の書き込みに対してのみ，後述するメモリ書き込み制限処理が行われる。
【００９４】
［メモリ書き込み制限処理］
図３０は，メモリ書き込み制限処理を説明するフローチャートである。メモリ書き込み制限処理は，転送処理Ｓ３について算出した転送完了予定時間Ｔ_０が予め定めた許容時間を上回っている場合，図２１のエラー処理Ｓ３４のいずれかの処理を遅延させるものである。すなわち，転送完了予定時間Ｔ_０が許容時間を上回っている場合には，マイグレーションを行うために必要な帯域が十分ではないと判断し，移動元仮想マシンのメモリ内容への書き込みを制限する。具体的に，エラー処理Ｓ３４は，図２２のエラー処理であれば，Ｓ５１からＳ５６の少なくとも一部の処理，図２９のエラー処理であれば，Ｓ６１からＳ６４の少なくとも一部の処理を遅延して行うなどの制限を行う。
【００９５】
例えば，図２２のエラー処理においては，新たなメモリ領域の割当てを行う際（Ｓ５１）やメモリ書き込み処理への書き込み許可を通知する際（Ｓ５６）にメモリ書き込み制限処理を実行する。または，図２９のエラー処理においては，書き込み要求のあったメモリ領域の属性を書き込み可能に更新する際（Ｓ６１）やメモリ書き込み処理への書き込み許可を通知する際（Ｓ６４）にメモリ書き込み制限処理を実行する。これにより，転送完了予定時間Ｔ_０が許容時間を上回っている場合には，エラー処理Ｓ３４を遅延することが可能になり，さらに書き込み処理を遅延させることが可能になる。よって，単位時間内のダーティページの発生頻度を抑えることが可能になるため，転送処理Ｓ３の転送時間（または転送完了予定時間Ｔ_０）を短縮させることが可能になる。以下，メモリ書き込み制限処理について，図３０に基づいて説明する。
【００９６】
まず，仮想化ソフトウエア４は，バックグランドで，単位時間毎の転送メモリ領域数を計測し，転送メモリ領域数管理テーブル４４３に記憶し続ける（Ｓ１０１）。そして，転送メモリ領域数管理テーブル４４３に記憶した転送済のメモリ領域数と，ダーティページ数管理テーブル４４２に記憶した新たに転送すべきダーティページ数とを取得して，所定時間毎に仮想マシンのメモリ内容の転送完了予定時間Ｔ_０を算出する（Ｓ１０２）。転送完了予定時間Ｔ_０の算出については，図１６で詳細に説明したので，その説明を省略する。
【００９７】
また，仮想化ソフトウエア４は，Ｓ１０２で算出した転送完了予定時間Ｔ_０の中から最新の値（直近に算出した値）を取得し，予め定めた許容時間と比較する（Ｓ１０３）。なお，転送完了予定時間Ｔ_０は，可能な限り頻繁に算出することが好ましく，少なくとも単位時間毎に算出を行う。また，許容時間は，転送処理の途中であっても変更可能である。
【００９８】
Ｓ１０３の比較の結果，転送完了予定時間Ｔ_０が許容時間を下回っていれば（Ｓ１０３のＮＯ），書き込み制限処理は終了し，エラー処理Ｓ３４に戻る。一方，転送完了予定時間Ｔ_０が許容値を上回った場合（Ｓ１０３のＹＥＳ），メモリ書き込みを遅延させる（Ｓ１０４）。このメモリ書き込みの遅延の詳細については，図３１〜図３４で説明する。
【００９９】
［メモリ書き込み遅延処理１］
ここではメモリ書き込み遅延処理Ｓ１０４について説明する。図３１は，メモリ書き込み制限処理Ｓ１０４を説明するフローチャート図である。このメモリ書き込み遅延処理Ｓ１０４は，単位時間内に発生したダーティページ数が所定の閾値を上回った場合に，これ以降にその単位時間内に発生した書き込みを制限するものである。以下，メモリ書き込み遅延処理Ｓ１０４の具体的な処理内容について説明を行う。
【０１００】
初めに，マイグレーション処理部４５０は，ダーティページ数管理テーブル４４２から現在の単位時間内のダーティページ数を取得する（Ｓ１１１）。そしてＳ１１１において取得したダーティページ数と予め定めた閾値とを比較を行う（Ｓ１１２）。この閾値は，例えば，転送メモリ領域数管理テーブル４４３に記憶された直近の転送メモリ領域数との関係で求める。ここで，この閾値は，図１６で説明した単位時間毎の有効転送メモリ領域数を確保するために，直近の単位時間内の転送メモリ領域数に応じて，単位時間内に許可をする書き込みメモリ領域数を定めたものである。そのため，例えば，単位時間内の有効転送メモリ領域数として，「４」を確保する必要がある場合には，直近の転送メモリ領域数からこの「４」を減算した数を閾値として用いるものであってよい。閾値は，単位時間毎の有効転送メモリ領域数が大なら大きくなり，小なら小さくなる。以下，単位時間内の有効転送メモリ領域数として，「４」を確保する必要がある場合について説明を行う。
【０１０１】
図３２及び図３３は，ダーティページ数管理テーブル，転送メモリ領域数管理テーブルの一例を示す図である。図３２及び図３３に用いてＳ１１２の処理について説明を行う。図３２及び図３３は，単位時間ｔ３の集計を行っているダーティページ数管理テーブル４４２及び転送メモリ領域数管理テーブル４４３の例である。図３２において，単位時間ｔ３の転送メモリ領域数管理テーブル４４３の転送ページ数は集計中であるため，閾値の計算に用いることができない。そのため，その直近の単位時間ｔ２の転送メモリ領域数である「１１」に基づいて閾値の計算を行う。この場合における閾値は，単位時間ｔ２の転送ページ数「１１」から「４」を差し引いた「７」が閾値として設定される。そのため，ダーティページ数管理テーブル４４２の単位時間ｔ3のダーティページ数は「２」であるため，これが「７」になるまでは，Ｓ１１２の分岐はＮＯになるということになる。一方，図３３に示すように，ダーティページ数管理テーブルのダーティページ数が「７」を超えている場合，それ以降の書き込みに対するＳ１１２の分岐はＹＥＳになる。
【０１０２】
図３１に戻り，現在の単位時間内のダーティページ数が閾値を上回った場合（Ｓ１１２のＹＥＳ），次の単位時間になるまで書き込みを遅延させる（Ｓ１１３）。具体的に，図３３においては，ダーティページ数管理テーブルのダーティページ数は「９」であり，閾値として設定した「７」を超えているため，次の単位時間まで遅延することになる。一方、現在の単位時間内のダーティページ数が閾値を下回っている場合には（Ｓ１１２のＮＯ），書き込みの遅延を行わない。
【０１０３】
これにより，単位時間内に発生したダーティページ数が閾値を上回った場合には，これ以降にその単位時間内に発生した書き込みを制限することができる。よって，転送処理Ｓ３の転送時間を短縮させることが可能になる。なお，次の単位時間まで遅延した書き込みは，次の単位時間の初めに処理するものであってよい。また，次の単位時間まで遅延した書き込みが複数発生した場合において，書き込みの要求が発生した順に処理を行うために，書き込みの要求が発生した順に格納するキューを導入して制御を行うものであってもよい。
【０１０４】
［メモリ書き込み遅延処理２］
メモリ書き込み遅延処理Ｓ１０４について説明する。図３４は，メモリ書き込み制限処理Ｓ１０４を説明するフローチャート図である。図３１のメモリ書き込み遅延処理Ｓ１０４は，現在の単位時間内のダーティページ数と閾値とを比較し，現在の単位時間内のダーティページ数が，閾値を上回っている場合に書き込みを遅延させるものである。これに対し，図３４のメモリ書き込み遅延処理Ｓ１０４は，全ての書き込みについて，書き込みの処理時間を書き込み制限が行われない場合より長くするように設定するものである。これにより，書き込みがある時間帯に集中した発生した場合に，これを他の時間帯に分散して処理をすることが可能になる。
【０１０５】
マイグレーション処理部４５０は，ＣＰＵカウンタを起動し（Ｓ１２１），このＣＰＵカウンタによって，書き込みの処理時間を長くする（Ｓ１２２）。図３４では，書き込みの遅延を行うために，仮想マシンのハードウエア群５の機能であるＣＰＵカウンタを用いる場合を想定しているが，その他のソフトウエア等を用いることによって，書き込みの遅延を行うものであってもよい。また，書き込みの処理時間が，通常の処理時間よりも単位時間分だけ長くなるように設定することにより，書き込みを確実に後の単位時間において実行させるようにしてもよい。
【０１０６】
［最終転送データの転送処理］
ここで，図５に基づき，メモリ内容の転送処理の完了後（Ｓ３）における最終転送データの転送処理（Ｓ５）についてさらに説明を行う。メモリ内容の転送処理の完了後（Ｓ３），移動元仮想マシンのサスペンドを行い（Ｓ４），移動先仮想マシンのリジュームを行うまでに（Ｓ６），最終転送データの転送処理（Ｓ５）を行う。この移動元仮想マシンのサスペンドを行ってから移動先仮想マシンのリジュームを行うまでの間，仮想マシンは停止した状態になる。そのため，この仮想マシンの停止状態を可能な限り短くする必要がある。
【０１０７】
この移動元仮想マシンのサスペンドを行ってから移動先仮想マシンのリジュームを行うまでの時間（以下，仮想マシン停止時間Ｔ_１とする。）は，最終転送データを，移動元仮想マシンのサスペンド後における転送データ速度で割ることによって求めることができる。すなわち以下の式（５）の通りである。
仮想マシン停止時間Ｔ_１＝最終転送データ／サスペンド後の転送データ速度    （５）
この仮想マシン停止時間Ｔ_１は，移動元仮想マシンにおいて書き込みが発生しないため，移動元仮想マシンのサスペンド前のメモリ転送処理Ｓ３と比較して，図１６で説明した有効転送メモリ領域数を十分に確保することができる。一方，最終転送データが大きい状態（未転送のダーティページが多くの残った状態）で移動元仮想マシンのサスペンドを行った場合には，最終転送データが大きくなるため，仮想マシンの停止時間が長くなることになる。
【０１０８】
［ダーティページの圧縮を行う場合の転送完了予定時間Ｔ_Ｎ］
図３５は，差分圧縮を行う場合の転送対象メモリ領域転送処理Ｓ４５を説明するフローチャート図である。図３５に示すように，メモリ転送処理Ｓ３において，転送対象メモリ領域のメモリ内容を圧縮してから転送を行うものであってもよい。すなわち，先に送信したデータとダーティページとの差分が小さい場合，その差分データのビット分布は，「０」に偏ることになるため，この差分データを大幅な圧縮が可能になる。そのため，先に送信したデータとダーティページとの差分が小さい場合においては，ダーティページを大幅に圧縮して転送することが可能になる。差分圧縮を行う場合の転送対象メモリ領域転送処理Ｓ４５の具体的な処理内容を以下に説明する。
【０１０９】
図３５に示すように，転送対象メモリ領域がダーティページであるか否かの判断を行い（Ｓ２０１），転送対象メモリ領域がダーティページである場合には，差分圧縮を行ってから（Ｓ２０２），転送対象メモリ領域の転送を行う（Ｓ２０３）。一方，転送対象メモリ領域がダーティページでない場合には，差分圧縮を行うことなく転送を行う（Ｓ２０４）。この差分圧縮を行うことによって，転送すべきデータ量を抑えることが可能になるため，転送完了予定時間（以下、差分圧縮を行う場合の転送完了予定時間を転送完了予定時間Ｔ_Ｎとする）を短縮することが可能になる。なお，転送完了予定時間Ｔ_Ｎは，以下の式（６）によって算出することができる。
転送完了予定時間Ｔ_Ｎ＝（差分データ圧縮率＊ダーティページ数＋ダーティページ以外のメモリ領域数）＊１メモリ領域当たりのデータ量−最終転送データ量）／転送データ速度      （６）
上記式（６）において，転送データ速度は，上記式（２）または式（３）で説明した転送データ速度を同様にして算出することができる。
【０１１０】
また，この最終転送データは，移動元仮想マシンのメモリに残っているダーティページのデータとコンテキストからなるところ，仮想マシン停止時間Ｔ_１におけるダーティページについても，この差分圧縮を用いることが可能である。そのため，この差分圧縮を用いることによって，仮想マシン停止時間Ｔ_１を短縮することが可能になる。
【０１１１】
以上の実施の形態をまとめると，以下の付記のとおりである。
【０１１２】
（付記１）
それぞれに仮想マシンが構築される複数の物理マシンと，
移動元物理マシン上に構築されている移動元仮想マシンが動作している間に，該移動元仮想マシンを移動先物理マシン上に移動させるマイグレーション処理を実行するマイグレーション処理部とを有し，
前記マイグレーション処理部は，
前記移動元仮想マシンの第１のメモリに記憶された第１のデータを，前記第１のメモリから前記移動先物理マシンの第２のメモリに転送し，前記転送中に前記第１のメモリに書き込まれた第２のデータを，前記第２のメモリに転送し，前記第１のデータ及び前記第２のデータの転送完了予定時間が許容時間を上回っている場合，前記第１のメモリに対する書き込みを制限するメモリデータ転送処理部を有する情報処理システム。
【０１１３】
（付記２）
付記１において，
前記メモリデータ転送処理部は，前記書き込みの制限を，単位時間内に書き込みがあった前記第１のメモリ内のメモリ領域数が閾値を上回った場合に，次の単位時間まで前記書き込みを遅らせることで行う情報処理システム。
【０１１４】
（付記３）
付記１において，
前記メモリデータ転送処理部は，前記書き込みの制限を，前記書き込みの処理時間を前記書き込みの制限が行われない場合より長くすることで行う情報処理システム。
【０１１５】
（付記４）
付記１において，
前記メモリデータ転送処理部は，前記書き込みの制限を，前記第１のメモリ内の転送中または転送済のそれぞれのメモリ領域に対する最初の書き込みに対して行う情報処理システム。
【０１１６】
（付記５）
付記１において，
さらに，前記第１のデータまたは前記第２のデータを，前記第１のメモリから前記第２のメモリに転送するときの単位時間内の転送数を計測する転送メモリ領域数計測部を有し，
前記メモリデータ転送処理部は，前記転送完了予定時間を，前記転送メモリ領域数計測部により計測した前記単位時間内の転送メモリ領域数から，前記単位時間内の書き込みがあった前記第１のメモリ内の書き込みメモリ領域数を差し引いて前記単位時間内の有効転送メモリ領域数を算出し，前記第１のデータのデータ量を前記有効転送メモリ領域数で除算することにより算出する情報処理システム。
【０１１７】
（付記６）
付記１において，
前記メモリデータ転送処理部は，前記転送完了予定時間を，前記第１のデータの転送開始から前記第１のメモリ内の前記第２のデータが基準値を下回るまでの時間として算出する情報処理システム。
【０１１８】
（付記７）
付記４において，
前記メモリデータ転送処理部は，前記第１のメモリ内の転送中または転送済のメモリ領域を書き込み禁止状態にし，前記書き込み禁止状態のメモリ領域に対して書き込みの要求があった場合にエラーを出力し，前記エラーの出力に応答して書き込み可能であるメモリ領域を確保して該メモリ領域に書き込みを行い，
前記メモリデータ転送処理部は，前記書き込みの制限を，前記書き込み可能であるメモリ領域の確保から該メモリ領域への書き込みまでの少なくとも一部の処理を，単位時間内に書き込みがあった前記第１のメモリ内のメモリ領域数が閾値を上回った場合に，次の単位時間まで遅らせることで行う情報処理システム。
【０１１９】
（付記８）
付記４において，
前記メモリデータ転送処理部は，前記第１のメモリ内の転送中または転送済のメモリ領域を書き込み禁止状態にし，前記書き込み禁止状態のメモリ領域に対して書き込み要求があった場合にエラーを出力し，前記エラーの出力に応答して書き込み可能であるメモリ領域を確保して該メモリ領域に書き込みを行い，
前記メモリデータ転送処理部は，前記書き込みの制限を，前記書き込み可能であるメモリ領域の確保から該メモリ領域への書き込みまでの少なくとも一部の処理を，該処理の処理時間を前記書き込みの制限が行われない場合より長くすることで行う情報処理システム。
【０１２０】
（付記９）
付記７または８において，
前記メモリデータ転送処理部は，前記書き込み可能であるメモリ領域の確保を，新たなメモリ領域を割当てることで行う情報処理システム。
【０１２１】
（付記１０）
付記７または８において，
前記メモリデータ転送処理部は，前記書き込み可能であるメモリ領域の確保を，前記書き込み禁止状態を解除し，該解除したメモリ領域の書き込みを可能にすることで行う情報処理システム。
【０１２２】
（付記１１）
付記７において，
前記メモリデータ転送処理部では，前記書き込みの制限を，前記新たなメモリ領域の割当てを次の単位時間まで遅らせることで行う情報処理システム。
【０１２３】
（付記１２）
付記７において，
前記メモリデータ転送処理部では，前記書き込みの制限を，前記新たなメモリ領域への書き込みを次の単位時間まで遅らせることで行う情報処理システム。
【０１２４】
（付記１３）
付記８において，
前記メモリデータ転送処理部では，前記書き込みの制限を，前記新たなメモリ領域の割当ての処理時間を長くすることで行う情報処理システム。
【０１２５】
（付記１４）
付記８において，
前記メモリデータ転送処理部では，前記書き込みの制限を，前記新たなメモリ領域への書き込みの処理時間を長くすることで行う情報処理システム。
【０１２６】
（付記１５）
移動元物理マシン上に構築されている移動元仮想マシンが動作している間に，該移動元仮想マシンを移動先物理マシン上に移動させるマイグレーション処理をコンピュータに実行させる制御プログラムであって，
前記マイグレーション処理は，
前記移動元仮想マシンの第１のメモリに記憶された第１のデータを，前記第１のメモリから前記移動先物理マシンの第２のメモリに転送し，前記転送中に前記第１のメモリに書き込まれた第２のデータを，前記第２のメモリに転送し，前記第１のデータ及び前記第２のデータの転送完了予定時間が許容時間を上回っている場合，前記第１のメモリに対する書き込みを制限するメモリデータ転送工程を有する制御プログラム。
【０１２７】
（付記１６）
移動元物理マシン上に構築されている移動元仮想マシンが動作している間に，該移動元仮想マシンを移動先物理マシン上に移動させるマイグレーション処理を実行する制御方法であって，
前記マイグレーション処理は，
前記移動元仮想マシンの第１のメモリに記憶された第１のデータを，前記第１のメモリから前記移動先物理マシンの第２のメモリに転送し，前記転送中に前記第１のメモリに書き込まれた第２のデータを，前記第２のメモリに転送し，前記第１のデータ及び前記第２のデータの転送完了予定時間が許容時間を上回っている場合，前記第１のメモリに対する書き込みを制限するメモリデータ転送工程を有する制御方法。
【符号の説明】
【０１２８】
３  管理サーバ，４，４−Ｘ，４−Ｙ  仮想化ソフトウエア，４５０  マイグレーション処理部，１０Ｘ  移動元物理マシン，１０−Ｙ  移動先物理マシン，ＶＭＢ−Ｘ  移動元仮想マシン，ＶＭＢ−Ｙ  移動先仮想マシン，１２Ｂ  移動元メモリ，２２Ｂ  移動先メモリ
【図１】
2015118436.tif 000003
【図２】
2015118436.tif 000004
【図３】
2015118436.tif 000005
【図４】
2015118436.tif 000006
【図５】
2015118436.tif 000007
【図６】
2015118436.tif 000008
【図７】
2015118436.tif 000009
【図８】
2015118436.tif 000010
【図９】
2015118436.tif 000011
【図１０】
2015118436.tif 000012
【図１１】
2015118436.tif 000013
【図１２】
2015118436.tif 000014
【図１３】
2015118436.tif 000015
【図１４】
2015118436.tif 000016
【図１５】
2015118436.tif 000017
【図１６】
2015118436.tif 000018
【図１７】
2015118436.tif 000019
【図１８】
2015118436.tif 000020
【図１９】
2015118436.tif 000021
【図２０】
2015118436.tif 000022
【図２１】
2015118436.tif 000023
【図２２】
2015118436.tif 000024
【図２３】
2015118436.tif 000025
【図２４】
2015118436.tif 000026
【図２５】
2015118436.tif 000027
【図２６】
2015118436.tif 000028
【図２７】
2015118436.tif 000029
【図２８】
2015118436.tif 000030
【図２９】
2015118436.tif 000031
【図３０】
2015118436.tif 000032
【図３１】
2015118436.tif 000033
【図３２】
2015118436.tif 000034
【図３３】
2015118436.tif 000035
【図３４】
2015118436.tif 000036
【図３５】
2015118436.tif 000037