(57)【要約】      （修正有）【課題】仮想マシンのライブマイグレーションを短時間で行う。【解決手段】移動元物理サーバ上の仮想マシンを移動先物理サーバ上に移動させるマイグレーション処理において，移動元仮想マシンのメモリのデータを移動元物理サーバから移動先物理サーバへ転送し，移動元仮想マシンによる移動元物理サーバのメモリへのデータの更新頻度を，メモリの単位領域毎に計測する。メモリデータ転送工程中に移動元仮想マシンによって更新されたメモリデータを，第１の更新頻度の単位領域のデータを第２のより高い更新頻度の単位領域に優先して再転送し，移動元仮想マシンをサスペンドした後に，移動先物理サーバ上の移動先仮想マシンをリジュームさせる。【選択図】図６
2014191752.tif 000002
【特許請求の範囲】
【請求項１】
移動元物理サーバ上に構築されている移動元仮想マシンを移動先物理サーバ上に移動させるマイグレーション処理をコンピュータに実行させるマイグレーション処理プログラムであって，
前記マイグレーション処理は，
前記移動元仮想マシンのメモリのデータを，前記移動元物理サーバのメモリから前記移動先物理サーバのメモリに転送するメモリデータ転送工程と，
前記移動元仮想マシンによる前記移動元物理サーバのメモリへのデータの更新頻度を，前記メモリの単位領域毎に計測する更新頻度計測工程と，
メモリデータ転送工程中に前記移動元仮想マシンによって更新されたメモリデータを，第１の更新頻度の単位領域のデータを前記第１の更新頻度より高い第２の更新頻度の単位領域に優先して，前記移動元物理サーバのメモリから前記移動先物理サーバのメモリに再転送するメモリデータ再転送工程と，
前記移動元仮想マシンをサスペンドした後に，前記移動先物理サーバ上の移動先仮想マシンをリジュームさせるリジューム工程と，を有するマイグレーション処理プログラム。
【請求項２】
請求項１において，
前記メモリデータ再転送工程中に，前記移動元仮想マシンのメモリ内のデータ更新され且つ未転送の単位領域の数が第１の基準値未満になる場合，前記メモリデータ再転送工程を終了して前記リジューム工程を実行するマイグレーション処理プログラム。
【請求項３】
請求項２において，
前記メモリデータ再転送工程中に，再転送した単位領域の数が第２の基準値を超えても，前記移動元仮想マシンのメモリ内のデータ更新され且つ未転送の単位領域の数が第１の基準値未満にならない場合，前記メモリデータ再転送工程を終了して前記リジューム工程を実行するマイグレーション処理プログラム。
【請求項４】
請求項１において，
前記更新頻度計測工程では，前記メモリの単位領域毎にデータの更新頻度を更新テーブルに記録し，
前記メモリデータ再転送工程では，前記更新テーブルをコピーした転送判断テーブルの更新頻度を参照して，当該更新頻度が第１の閾値以下の単位領域のデータを再転送し，その後，前記更新頻度が前記第１の閾値より高い第２の閾値以下の単位領域のデータを再転送するマイグレーション処理プログラム。
【請求項５】
請求項４において，
前記更新頻度計測工程では，前記メモリデータ転送工程中のデータの更新回数を前記更新頻度として前記更新テーブルに記録し，さらに，前記メモリデータ再転送工程中のデータの更新回数を前記更新頻度として前記更新テーブルに記録するマイグレーション処理プログラム。
【請求項６】
請求項４において，
前記メモリデータ再転送工程中に，前記データ更新された単位領域のデータを転送したときに，前記更新テーブル内の前記転送した単位領域の更新頻度をリセットするマイグレーション処理プログラム。
【請求項７】
請求項６において，
前記メモリデータ再転送工程では，前記転送判断テーブル内のデータ更新された単位領域のデータ転送が全て終了するたびに，前記更新テーブルを前記転送判断テーブルにコピーし，前記第１の閾値及び第２の閾値に基づく単位領域のデータの再転送の処理を繰り返すマイグレーション処理プログラム。
【請求項８】
移動元物理サーバ上に構築されている移動元仮想マシンを移動先物理サーバ上に移動させるマイグレーション処理をコンピュータに実行させるマイグレーション処理方法であって，
前記マイグレーション処理は，
前記移動元仮想マシンのメモリのデータを，前記移動元物理サーバのメモリから前記移動先物理サーバのメモリに転送するメモリデータ転送工程と，
前記移動元仮想マシンによる前記移動元物理サーバのメモリへのデータの更新頻度を，前記メモリの単位領域毎に計測する更新頻度計測工程と，
メモリデータ転送工程中に前記移動元仮想マシンによって更新されたメモリデータを，第１の更新頻度の単位領域のデータを前記第１の更新頻度より高い第２の更新頻度の単位領域に優先して，前記移動元物理サーバのメモリから前記移動先物理サーバのメモリに再転送するメモリデータ再転送工程と，
前記移動元仮想マシンをサスペンドした後に，前記移動先物理サーバ上の移動先仮想マシンをリジュームさせるリジューム工程と，を有するマイグレーション処理方法。
【請求項９】
それぞれに仮想マシンが構築される複数の物理サーバと，
移動元物理サーバ上に構築されている移動元仮想マシンを移動先物理サーバ上に移動させるマイグレーション処理を実行するマイグレーション処理手段とを有し，
前記マイグレーション処理手段は，
前記移動元仮想マシンのメモリのデータを，前記移動元物理サーバのメモリから前記移動先物理サーバのメモリに転送するメモリデータ転送手段と，
前記移動元仮想マシンによる前記移動元物理サーバのメモリへのデータの更新頻度を，前記メモリの単位領域毎に計測する更新頻度計測手段と，
メモリデータ転送工程中に前記移動元仮想マシンによって更新されたメモリデータを，第１の更新頻度の単位領域のデータを前記第１の更新頻度より高い第２の更新頻度の単位領域に優先して，前記移動元物理サーバのメモリから前記移動先物理サーバのメモリに再転送するメモリデータ再転送手段と，
前記移動元仮想マシンをサスペンドした後に，前記移動先物理サーバ上の移動先仮想マシンをリジュームさせるリジューム手段と，を有するクラウドシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，マイグレーション処理プログラム，マイグレーション方法及びクラウドシステムに関する。
【背景技術】
【０００２】
クラウドサービスは，データセンタ内の複数のサーバなどのハードウエア群を，クラウド利用者とのサービス契約に基づいて仮想化し，その仮想マシン等のインフラをネットワーク経由のサービスとしてクラウド利用者に提供する。
【０００３】
このようなクラウドサービスでは，仮想化ソフトウエア（ハイパバイザ）が物理サーバ（または物理マシン）を複数の仮想マシンに割り当てて，各仮想マシンにインストールされたアプリケーションプログラムによるサービスの提供を可能にする。したがって，データセンタに配備された複数の物理サーバには，それぞれ複数の仮想マシンが割り当てられる。
【０００４】
マイグレーション，とりわけライブマイグレーションは，アプリケーションによるサービスを停止することなく，仮想マシンを別の物理サーバに移動する技術であり，クラウドサービスにおいて重要な機能である。たとえば，ある物理サーバ上の仮想マシンによるWebシステムへのアクセスが予想を超えて増大した結果，その仮想マシンの高い負荷により物理サーバのCPUの使用率が１００％に達してしまうような場合，その仮想マシンや別の仮想マシンを他の余裕のある物理サーバに移動することが必要になる。このように，複数の仮想マシンの負荷を分散させるために，ライブマイグレーションが利用される。または，物理サーバを再起動させる必要がある場合に，その物理サーバ上の仮想マシンを他の物理サーバに移動させるためにライブマイグレーションが利用される。
【０００５】
ライブマイグレーションは，仮想化ソフトウエアが有する一つの機能である。仮想化ソフトウエアは，管理サーバからのライブマイグレーションの指示に応答して，移動先物理マシンのメモリ領域を確保し，移動対象である移動元仮想マシンのメモリ内容を移動先物理マシンのメモリにネットワーク経由でコピーする。これにより移動元仮想マシンのメモリ内容と移動先仮想マシンのメモリ内容とが同期すると，仮想化ソフトウエアは，移動元仮想マシンをサスペンドし，移動先仮想マシンをリジュームし，ハードディスクのデータも移動先仮想マシンに引き継がせる。そして，最後に，移動元仮想マシンのメモリ内容を移動元物理マシンから削除して，処理が完了する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００８−２２５５４６号公報
【特許文献２】特開２００９−１４６１６１号公報
【特許文献３】特開２０１０−１９８２０４号公報
【非特許文献】
【０００７】
【非特許文献１】<http://www.atmarkit.co.jp/fwin2k/operation/livemig01/livemig01_01.html>
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ライブマイグレーションの所要時間の大部分が，メモリ内容のコピー処理に要する時間である。このメモリ内容のコピーは，移動元仮想マシンをサスペンドすることなく行われるので，コピー処理中に移動元仮想マシンによるメモリへの新たな書き込み発生し，その新たに更新された内容を更にコピー処理し，更新されたデータ容量が実質的にゼロになるまでコピー処理が繰り返される。したがって，このメモリ内容のコピー処理の時間を短くすることが，ライブマイグレーションの所要時間を短くするために有効である。
【０００９】
従来，OSがサポートするメモリ容量が少なく，データセンタのネットワーク帯域に余裕があり，仮想マシン上のアプリケーションプログラムの負荷状況も高くなかったため，メモリ内容のコピー処理の時間は比較的短かった。
【００１０】
しかしながら，近年，OSはテラバイトを超えるメモリ容量をサポートすることがあり，データベースをメモリ上に展開するオンラインデータベースの技術が登場し，さらに，データセンタの大規模化によりネットワーク帯域に余裕がなくなり，また，アプリケーションの負荷状況が高くなりコピー中の新たなデータ更新が頻繁に発生するようになってきている。そのため，メモリ内容のコピー処理により長い時間がかかるようになり，ライブマイグレーションの所要時間が長期化する傾向にある。
【００１１】
そこで，一つの実施の形態の目的は，ライブマイグレーションを短時間で行うマイグレーション処理プログラム，マイグレーション方法及びクラウドシステムを提供することにある。
【課題を解決するための手段】
【００１２】
実施の形態の一つの側面によれば，移動元物理サーバ上に構築されている移動元仮想マシンを移動先物理サーバ上に移動させるマイグレーション処理をコンピュータに実行させるマイグレーション処理プログラムであって，
前記マイグレーション処理は，
前記移動元仮想マシンのメモリのデータを，前記移動元物理サーバのメモリから前記移動先物理サーバのメモリに転送するメモリデータ転送工程と，
前記移動元仮想マシンによる前記移動元物理サーバのメモリへのデータの更新頻度を，前記メモリの単位領域毎に計測する更新頻度計測工程と，
メモリデータ転送工程中に前記移動元仮想マシンによって更新されたメモリデータを，第１の更新頻度の単位領域のデータを前記第１の更新頻度より高い第２の更新頻度の単位領域に優先して，前記移動元物理サーバのメモリから前記移動先物理サーバのメモリに再転送するメモリデータ再転送工程と，
前記移動元仮想マシンをサスペンドした後に，前記移動先物理サーバ上の移動先仮想マシンをリジュームさせるリジューム工程と，を有する。
【発明の効果】
【００１３】
ライブマイグレーション処理をより短時間で終了できる。
【図面の簡単な説明】
【００１４】
【図１】本実施の形態におけるクラウドシステムの全体構成を示す図である。
【図２】仮想化ソフトウエアが有する機能の一例を示す図である。
【図３】管理サーバの構成例を示す図である。
【図４】仮想化ソフトウエア４によるマイグレーション処理のフローチャート図である。
【図５】マイグレーション処理を説明する図である。
【図６】マイグレーション処理を説明する図である。
【図７】マイグレーション処理を説明する図である。
【図８】マイグレーション処理を説明する図である。
【図９】メモリ内容の転送処理Ｓ３の概略を示すフローチャート図である。
【図１０】メモリ内容の転送処理を説明する図である。
【図１１】メモリ内容の転送処理を説明する図である。
【図１２】メモリ内容の転送処理を説明する図である。
【図１３】第１の実施の形態におけるメモリ内容の転送処理の概略を示すフローチャート図である。
【図１４】第１の実施の形態におけるメモリ内容の転送処理の概略を説明する図である。
【図１５】第１の実施の形態におけるメモリ内容の転送処理の具体的なフローチャート図である。
【図１６】更新テーブルの一例を示す図である。
【図１７】工程Ｓ２０での更新テーブルへの更新情報（更新フラグと更新回数）の記録のフローチャート図である。
【図１８】更新テーブルの更新処理Ｓ２０４の処理を説明する図である。
【図１９】更新テーブル内の転送済みページ領域のリセット処理Ｓ２８を説明する図である。
【図２０】メモリ内容の転送例１のフローチャート図である。
【図２１】メモリ内容の転送例１のフローチャート図である。
【図２２】メモリ内容の転送例２のフローチャート図である。
【図２３】メモリ内容の転送例２のフローチャート図である。
【図２４】第２の実施の形態におけるメモリ内容の転送処理の概略を示すフローチャート図である。
【図２５】第２の実施の形態によるメモリ内容の転送例３のフローチャート図である。
【図２６】第２の実施の形態によるメモリ内容の転送例３のフローチャート図である。
【図２７】データセンタ内のクラウドサービスポータルサイトと管理サーバとハードウエア群のハードウエア構成を示す図である。
【発明を実施するための形態】
【００１５】
［クラウドシステムの構成］
図１は，本実施の形態におけるクラウドシステムの全体構成を示す図である。データセンタ８内に，ハードウエア群５と，クラウドサービスポータルサイト２と，管理サーバ３とが設けられている。そして，データセンタ８には，インターネットやイントラネット等のネットワーク７を介して，クラウド利用者端末１とクラウド利用者のサービスのクライアント端末とが接続可能になっている。
【００１６】
ハードウエア群５は，複数の物理サーバ（または物理マシン）を有し，各物理サーバはCPUとメモリ（DRAM）とハードディスク（HDD）等の大容量メモリとネットワークとを有する。ハードウエア群５のリソースは，複数の仮想マシンVMに割り当てられる。クラウドサービスポータルサイト２や管理サーバ３は，例えば，これらの仮想マシンVMによって構築されても良い。
【００１７】
クラウドシステムによりクラウド利用者に提供されるクラウドサービスは，コンピュータシステムを構築し稼働させるための基盤，即ち，仮想マシンやネットワーク等のインフラストラクチャそのものを，ネットワーク７経由で提供するサービスである。
【００１８】
クラウド利用者は，その端末１からクラウドサービスポータルサイト２にアクセスして，仮想マシンに必要な仕様，例えばCPUのクロック周波数，メモリの容量（GB），ハードディスクの容量（MB/sec，IOPS），及びネットワークの帯域幅（Gbps）を選択し，それらについてクラウド利用契約を締結する。また，クラウド利用者端末１は，クラウドサービスポータルサイト２にアクセスして，仮想マシンの稼働状況を監視したり，仮想マシンの動作を操作したりする。
【００１９】
管理サーバ３は，仮想化ソフトウエア（ハイパバイザ）４と連携して，ハードウエア群５内の物理サーバなどを管理し，仮想マシンVMにハードウエアを割り当てて仮想マシンVMを構築し,管理する。
【００２０】
仮想化ソフトウエア４は，管理サーバ３からの指示に応じて，ハードウエア群５の物理サーバのCPU，メモリ，ハードディスク，ネットワークを割り当てて仮想マシンを動作させる基盤ソフトウエアである。仮想化ソフトウエア４は，例えば，ハードウエア群５内のサーバ上で動作する。
【００２１】
仮想マシンVMは，上記のハードウエアが割り当てられることに加えて，OS，ミドルウエアMW，アプリケーションAP，データベースDBなどを有するイメージファイルをそのハードディスク内に有し，例えば，起動時にイメージファイルをハードディスクからメモリに書き込み，所望のサービスに対応する動作を行う。
【００２２】
クライアント端末６は，クラウド利用者によって運営されるサービスの提供を受けるクライアントの端末である。クライアント端末６は，通常，クラウド利用者の仮想マシンVMにネットワーク７を介してアクセスし，クラウド利用者が運営するサービスの提供を受ける。
【００２３】
データセンタの運用者は，管理サーバ３を介して，各物理サーバの負荷状態を監視し，過負荷状態の物理サーバ上の仮想マシンVMを他の物理サーバ上に転送するために，マイグレーションの指示を仮想化ソフトウエア４に対して行う。また，別の理由で仮想マシンVMを他の物理サーバに転送する場合も，マイグレーションの指示を仮想化ソフトウエア４に対して行う。このマイグレーションの指示に応答して，仮想化ソフトウエア４は，仮想マシンVMのマイグレーション処理を実行する。
【００２４】
図２は，仮想化ソフトウエアが有する機能の一例を示す図である。仮想化ソフトウエア４は，ハードウエア群５のリソースを仮想マシンVMに割り当てて，仮想マシンVMを動作させる。そのために，仮想化ソフトウエア４は，例えば，仮想マシンを作成する仮想マシン作成部４０１と，仮想マシンを起動する仮想マシン起動部４０２と，仮想マシンをシャットダウンする仮想マシンシャットダウン部４０３と，起動状態の仮想マシンを一時停止，つまりサスペンドする仮想マシンサスペンド部４０４と，サスペンド状態の仮想マシンを再開，つまりリジュームする仮想マシンリジューム部４０５と，仮想マシンの動作情報を収集する仮想マシン動作情報収集部４０６とを有する。さらに，仮想化ソフトウエア４は，管理サーバ３からのマイグレーション指示に応答して仮想マシンを他の物理サーバ上に転送するマイグレーション処理を行うマイグレーション処理部４０８を有する。
【００２５】
図３は，管理サーバの構成例を示す図である。管理サーバ３は，図示しないCPUなどのハードウエアに加えて，ソフトウエア３０１と記憶部３１０とを有する。
【００２６】
管理サーバ内のソフトウエア３０１は，例えば，クラウドサービスポータルサイト２でクラウド契約を締結したクラウド利用者への課金処理などのクラウド利用者管理を行うクラウド利用者管理部３０２と，クラウド契約に基づいてハードウエアリソースを割り当てて仮想マシンVMを作成する仮想マシン作成部３０３と，仮想マシンを管理する仮想マシン管理部３０３と，仮想マシンの動作を監視する仮想マシン監視部３０４とを有する。
【００２７】
さらに，ソフトウエア３０１は，仮想マシンの起動を仮想化ソフトウエア４に指示する仮想マシン起動制御部３０５と，起動状態の仮想マシンのシャットダウンを仮想化ソフトウエア４に指示する仮想マシンシャットダウン制御部３０６と，起動状態の仮想マシンのサスペンドを仮想化ソフトウエア４に指示する仮想マシンサスペンド制御部３０７と，サスペンド状態の仮想マシンのリジュームを仮想化ソフトウエア４に指示する仮想マシンリジューム制御部３０８と，仮想マシンのマイグレーションを仮想化ソフトウエア４に指示する仮想マシンマイグレーション制御部３０９などを有する。
【００２８】
管理サーバ内の記憶部３２０には，例えば，仮想化ソフトウエア４から報告される仮想マシンの動作情報を含む仮想マシン動作情報テーブル３２１と，仮想マシンとクラウド利用者とその契約などを管理する仮想マシン管理テーブル３２２などを有する。
【００２９】
図２７は，データセンタ内のクラウドサービスポータルサイトと管理サーバとハードウエア群のハードウエア構成を示す図である。管理サーバ３は，プロセッサであるCPU３３０と，メモリ３３２と，外部インターフェース３３４と，図３の管理サーバのソフトウエア３０１やテーブル類３２１，３２２を格納する記憶媒体３３６とを有し，それらがバスを介して接続されている。
【００３０】
更に，クラウドサービスポータルサイト２も，管理サーバ３と同様に，プロセッサであるCPUと，メモリと，外部インターフェースIFと，サイト制御ソフトウエア等を格納する記憶媒体とを有し，それらがバスを介して接続されている。また，ハードウエア資源群５は，管理サーバ３と同様に，プロセッサであるCPUと，メモリと，外部インターフェースIFと，ソフトウエア等を格納する記憶媒体とを有するコンピュータ群である。ハードウエア資源群５内の記憶媒体内に図２の仮想化ソフトウエア４などが格納される。
【００３１】
［マイグレーション］
次に，仮想化ソフトウエア４によるマイグレーションの処理について説明する。ここでは，特に，移動元物理マシン上で動作中の移動元仮想マシンを，その動作を停止することなく，移動先物理マシンに移動させるライブマイグレーションについて説明する。
【００３２】
図４は，仮想化ソフトウエア４によるマイグレーション処理のフローチャート図である。また，図５〜８は，マイグレーション処理を説明する図である。図５〜８を参照しながら，図４のフローチャートの処理を以下で説明する。
【００３３】
管理サーバ３からのマイグレーションの指示（Ｓ１のＹＥＳ）に応答して，仮想化ソフトウエア４はマイグレーション処理を実行する。管理サーバ３からのマイグレーション指示には，移動元物理サーバと移動元仮想マシンを特定する情報（例えばＩＰアドレス）と，移動先物理サーバと移動先仮想マシンを特定する情報若しくは移動先物理サーバは任意の物理サーバでよいと指定する情報とが含まれている。
【００３４】
図５に示されるとおり，移動元物理サーバ１０−Ｘには，仮想化ソフトウエア４−Ｘにより２つの仮想マシンＶＭＡ，ＶＭＢ−Ｘが動作中である。それぞれの仮想マシンＶＭＡ，ＶＭＢ−Ｘには，物理サーバ１０−Ｘ内のメモリ１２Ａ，１２ＢとＣＰＵのレジスタ１１Ａ，１１Ｂとが割り当てられている。また，移動元物理サーバ１０−Ｘには，ハードディスクＨＤＤが接続され，仮想マシンＶＭＡ，ＶＭＢ−Ｘからアクセスされている。一方，移動先物理サーバ１０−Ｙには，仮想化ソフトウエア４−Ｙにより１つの仮想マシンＶＭＣが動作中である。そして，移動元仮想マシンＶＭＢ−Ｘを移動元物理サーバ１０−Ｘから移動先物理サーバ１０−Ｙに移動するマイグレーション処理が行われるものとする。
【００３５】
仮想マシンＶＭＢ−Ｘが起動されると，ハードディスクＨＤＤ内のＯＳや，ミドルウエア，アプリケーションがメモリ１２Ｂにダウンロードされる。そして，仮想マシンＶＭＢ−Ｘが動作を開始すると，ＣＰＵ内のレジスタ１１Ｂとメモリ１２Ｂとにデータが書き込まれそして読み出される。
【００３６】
仮想化ソフトウエア４−Ｘは，移動先物理サーバの仮想化ソフトウエア４−Ｙに，移動先仮想マシンのメモリ領域を確保させる（Ｓ２）。これにより，図５に示されるとおり，移動先物理サーバ１０−Ｙ内のメモリにメモリ２２Ｂの領域が確保され，移動先物理サーバ１０−Ｙに仮想マシンＶＭＢ−Ｙの枠組みが構成される。
【００３７】
次に，図６に示されているとおり，仮想化ソフトウエア４−Ｘは，移動元仮想マシンＶＭＢ−Ｘのメモリ１２Ｂ内の内容（データ）を，移動先仮想マシンＶＭＢ−Ｙのメモリ２２Ｂに転送しコピーする（Ｓ３）。このメモリ内容の転送処理は，長い処理時間を要する。更に，メモリ内容を転送中に動作中の仮想マシンＶＭＢ−Ｘがメモリ１２Ｂにデータを書き込むと，その更新されたページ領域，すなわちダーティページ（差分ページ）のデータ（差分データ）が再度メモリ１２Ｂからメモリ２２Ｂに転送されコピーされる。このメモリ内容の転送は，両メモリ１２Ｂ，２２Ｂがほぼ同期するまで継続される。そして，メモリ内容の転送中に発生したダーティページの量が小さくなれば，仮想化ソフトウエア４はメモリ転送を終了する。これにより，メモリ２２Ｂ内には，動作中の仮想マシンＶＭＢ−Ｘのメモリとほぼ同じ内容（データ）が書き込まれる。
【００３８】
そして，図７に示されているとおり，仮想化ソフトウエア４−Ｘは，移動元仮想マシンＶＭＢ−Ｘをサスペンドする（Ｓ４）。これにより，移動元仮想マシンＶＭＢ−Ｘの動作は停止し，メモリ１２Ｂへのさらなる書き込みや，ＣＰＵ内のレジスタ１１Ｂの変更は発生しない。
【００３９】
なお，仮想マシンのサスペンドとは仮想マシンの一時停止であり，その処理は，仮想マシンへのCPUなどのハードウエアの割当の停止，仮想マシンのメモリ内のデータや情報のハードディスクへの退避，コンテキスト，即ち仮想マシンのCPUが実行中の命令アドレス，各種レジスタ（汎用レジスタや浮動小数点レジスタなど）内のデータのハードディスクへの退避，仮想マシンに割り当てていたハードウエアリソースの開放を含む。
【００４０】
一方，仮想マシンのリジュームとは一時的停止状態の仮想マシンを再開することであり，その処理は，仮想マシンへのハードウエアリソースの割り当て，コンテキストをハードディスクから読み出してメモリ内に復元すること，仮想マシンのメモリ内のデータや情報をハードディスクから読み出してメモリ内へ復元すること，仮想マシンへのCPUなどのハードウエアの割り当ての再開を含む。
【００４１】
移動元仮想マシンＶＭＢ−Ｘをサスペンドした後，図７に示されているとおり，仮想化ソフトウエア４−Ｘは，移動元仮想マシンのメモリ１２Ｂに残っているダーティページのデータと，ＣＰＵのレジスタ１１Ｂのデータ（コンテキスト）を，移動先仮想マシンＶＭＢ−Ｙのメモリ２２ＢとＣＰＵのレジスタ２１Ｂに転送する（Ｓ５）。この転送するデータ量はごくわずかであり，移動元仮想マシンＶＭＢ−Ｘと移動先仮想マシンＶＭＢ−Ｙが同時に停止状態になる時間もごく短時間である。
【００４２】
そして，図８に示されるとおり，仮想化ソフトウエア４ーＹは，移動先仮想マシンＶＭＢ−Ｙをリジュームする（Ｓ６）。具体的なリジューム処理は，前述のとおりである。移動先仮想マシンＶＭＢ−Ｙは，メモリ２２ＢとＣＰＵのレジスタ２１Ｂ内に，移動元仮想マシンＶＭＢ−Ｘのメモリ１２Ｂとレジスタ１１Ｂと同じデータがコピーされているので，仮想化ソフトウエア４が移動先仮想マシンＶＭＢ−Ｙをリジュームすると，移動元仮想マシンＶＭＢ−Ｘと同じ動作を再開する。また，移動先仮想マシンＶＭＢ−Ｙは，ハードディスクＨＤＤへのアクセスも移動元仮想マシンＶＭＢ−Ｘと同様に再開する。
【００４３】
最後に，図８に示されるとおり，仮想化ソフトウエア４−Ｘは，移動元仮想マシンＶＭＢ−Ｘを削除する（Ｓ７）。具体的には，メモリ１２Ｂ内のデータを削除し，ＣＰＵのレジスタ１１Ｂをリセットする。以上で，仮想マシンのライブマイグレーション処理が完了する。
【００４４】
［メモリ内容の転送処理］
図９は，メモリ内容の転送処理Ｓ３の概略を示すフローチャート図である。図１０，図１１，図１２は，メモリ内容の転送処理を説明する図である。図１０に示されるとおり，仮想化ソフトウエア４−Ｘは，最初に，移動元物理サーバ１０−Ｘ内の移動元仮想マシンＶＭＢ−Ｘに割り当てられているメモリ領域１２Ｂの全メモリ内容を，移動先物理サーバ１０−Ｙ内の移動先仮想マシンＶＭＢ−Ｙに割り当てられる予定のメモリ２２Ｂに転送しコピーする（Ｓ１１）。このメモリ内容の転送中に，動作中の移動元仮想マシンＶＭＢ−Ｘによるメモリ１２Ｂへの書き込みが発生し，データが更新されたページ領域であるダーティページＤＰ１が生成される。仮想化ソフトウエア４−Ｘは，メモリ転送中に更新されたページ領域（ダーティページＤＰ１）を記録する（Ｓ１２）。
【００４５】
全メモリ転送が完了すると（Ｓ１３のＹＥＳ），図１１に示されるとおり，仮想化ソフトウエア４−Ｘは，全メモリ内容の転送中にメモリ１２Ｂ内に生成されたダーティページＤＰ１を，移動先のメモリ２２Ｂに再度転送してコピーする（Ｓ１４）。このダーティページＤＰ１の転送中に，動作中の移動元仮想マシンＶＭＢ−Ｘによるメモリ１２Ｂへの書き込みが再度発生し，データが更新されたページ領域であるダーティページＤＰ２が生成される。仮想化ソフトウエア４−Ｘは，メモリ転送中にデータ更新されたページ領域（ダーティページＤＰ２）を記録する（Ｓ１５）。
【００４６】
上記の処理工程Ｓ１４，Ｓ１５は，メモリ１２Ｂ内のダーティページが基準値未満になるまで（Ｓ１６のＮＯ），繰り返される。メモリ１２Ｂ内のダーティページが基準値未満になると（Ｓ１６のＹＥＳ），メモリ内容の転送は終了する。
【００４７】
そして，図４のフローチャートで説明したとおり，仮想化ソフトウエア４−Ｘは，移動元仮想マシンＶＭＢ−Ｘをサスペンドし，図１２に示されるとおり，メモリ１２Ｂ内の残ったダーティページＤＰＮと，ＣＰＵ内のレジスタ１１Ｂのデータ（コンテキスト）を，移動先仮想マシンＶＭＢ−Ｙのメモリ２２Ｂとレジスタ２１Ｂに転送してコピーする（Ｓ５）。そして，移動先仮想マシンＶＭＢ−Ｙがリジュームされ，移動元仮想マシンＶＭＢ−Ｘが削除されて，ライブマイグレーションが完了する。
【００４８】
［本実施の形態におけるマイグレーション中のメモリ転送］
図９で説明したとおり，マイグレーション処理において，メモリ内容の転送中に移動元メモリへのデータの更新が頻繁に発生すると，発生するダーティページの量が増大する。その結果，メモリ内容の転送処理がいつまでも終了せず，メモリ内容の転送処理時間が長くなる。このようなメモリ内容転送処理の長時間化は，マイグレーション処理の長時間化を招き，好ましくない。
【００４９】
そこで，本実施の形態では，データの更新頻度（またはある期間中の更新回数。以下同様）が低いページ領域（メモリの単位領域）のダーティページから優先的に転送処理を行うことにより，データの更新頻度が高いページ領域のダーティページをできるだけ後でメモリ転送して，メモリ転送中に発生するダーティページの量を抑制し，メモリ転送が短時間で終了するようにする。
【００５０】
［第１の実施の形態］
図１３は，第１の実施の形態におけるメモリ内容の転送処理の概略を示すフローチャート図である。図１４は，第１の実施の形態におけるメモリ内容の転送処理の概略を説明する図である。仮想化ソフトウエア４−Ｘは，最初に，移動元仮想マシンの全メモリ内容を移動先仮想マシンを構築する移動先物理サーバのメモリ２２Ｂに転送しコピーする（Ｓ１１１）。このメモリ内容の転送中に，動作中の移動元仮想マシンＶＭＢ−Ｘによりメモリ１２Ｂに書き込みが発生し，データが更新されたページ領域であるダーティページＤＰ１が生成される場合がある。その場合は，仮想化ソフトウエア４−Ｘは，メモリ転送中に更新されたページ領域（ダーティページＤＰ１）と更新回数を記録する（Ｓ１１２）。
【００５１】
このページ領域は，転送する単位領域であり，必ずしもページ領域である必要はない。また，記録される更新回数は，上記の例では全メモリ内容の転送中の回数であるので，直前の更新頻度に対応する。したがって，仮想化ソフトウエアは，全メモリ内容の転送工程中にデータ更新されたページ領域の記録（後述する更新フラグ）を取っておけば，更新回数（後述する更新カウント）の記録は全メモリ内容の転送工程中の最後の所定時間，例えば５分，だけ記録をとるようにしてもよい。
【００５２】
全メモリ転送が完了すると（Ｓ１１３のＹＥＳ），仮想化ソフトウエア４−Ｘは，転送対象のページ領域の判定に利用する更新回数閾値（更新カウンタ閾値）を最小値に設定する（Ｓ１１４）。そして，仮想化ソフトウエア４−Ｘは，全メモリ内容の転送中に転送元のメモリ１２Ｂ内に生成されたダーティページのうち，更新カウンタ閾値以下の更新回数のページ領域を，即ち更新頻度が少ないダーティページを優先して，メモリ内容を移動先のメモリ２２Ｂに転送する（Ｓ１１５）。このダーティページＤＰ１の転送中に，動作中の移動元仮想マシンＶＭＢ−Ｘによりメモリ１２Ｂに書き込みが発生し，ダーティページが生成されると，仮想化ソフトウエア４−Ｘは，そのダーティページと更新回数を記録する（Ｓ１１６）。
【００５３】
仮想化ソフトウエア４−Ｘは，上記の処理工程Ｓ１１５，Ｓ１１６を，メモリ１２Ｂ内のダーティページが第１の基準値未満にならない間は（Ｓ１１７のＮＯ），更新カウンタ閾値を所定値増加した値に設定しながら（Ｓ１１８），繰り返す。メモリ１２Ｂ内のダーティページが第１の基準値未満になると（Ｓ１１７のＹＥＳ），メモリ内容の転送は終了する。
【００５４】
または，仮想化ソフトウエア４−Ｘは，上記の処理工程Ｓ１１５，Ｓ１１６を，転送したダーティページ数が第２の基準値を超えないで且つ未転送のダーティページ数が第１の基準値未満にならない間は（Ｓ１１７のＮＯ），更新カウンタ閾値を所定値増加した値に設定しながら（Ｓ１１８），繰り返す。メモリ１２Ｂ内のダーティページが第１の基準値未満になるか，または転送したダーティページ数が第２の基準値を超えた場合は（Ｓ１１７のＹＥＳ），メモリ内容の転送は終了する。
【００５５】
すなわち，図１４に示したとおり，仮想化ソフトウエア４は，送信元のメモリ１２Ｂ内のページ領域毎にある期間における更新回数，すなわち更新頻度Ｕ１−Ｕ４を記録しておき，更新頻度が低いダーティページから先にメモリ転送を行う。これにより，更新頻度が高いダーティページのメモリ転送ができるだけ後で行われて，その転送処理後からメモリ転送の終了条件の判定工程Ｓ１１７までの時間が更新頻度が高いダーティページほど短くなり，メモリ転送の終了条件の判定工程Ｓ１１７までに発生するダーティページの量を抑制することができる。
【００５６】
この工程Ｓ１１７のメモリ内容の転送処理の終了条件は，未転送のダーティページが第１の基準値未満になるという第１の終了条件でもよく，または，第１の終了条件または転送済みページ数が第２の基準値を超えるという第２の終了条件にしても良い。転送済みページ数が第２の基準値を超えるとは，相当数のダーティページを転送しても未転送のダーティページが第１の基準値未満にならない場合であり，その場合は，メモリ内容の転送処理を強制的に終了するようにしてもよい。
【００５７】
次に，第１の実施の形態におけるメモリ内容の転送処理の具体的に説明する。図１５は，第１の実施の形態におけるメモリ内容の転送処理の具体的なフローチャート図である。
【００５８】
まず，仮想化ソフトウエア４−Ｘは，バックグランドで，移動元仮想マシンのメモリ１２Ｂに書き込みが行われデータが更新されたことを示す更新情報を更新テーブルに記録し続ける（Ｓ２０）。そして，メモリ内容の転送処理Ｓ３で，仮想化ソフトウエア４−Ｘは，移動元仮想マシンの全メモリ領域を移動先仮想マシンのメモリに転送する（Ｓ２１）。この処理Ｓ２０は，図１３の処理Ｓ１１２，Ｓ１１６に対応し，処理Ｓ２１は，図１３の処理Ｓ１１１に対応する。
【００５９】
図１６は，更新テーブルの一例を示す図である。更新テーブルは，更新情報として，メモリ１２Ｂ内の１つのアドレスで選択される単位領域であるページ領域毎に，書き込みが行われてデータが更新されたか否かを示す更新フラグと，その更新回数を示す更新カウンタとを有する。ページ領域毎で更新情報を記録することに代えて，メモリ内容の転送単位の複数ページ領域毎に更新情報を記録してもよい。このように，更新テーブルには，メモリのある単位領域毎に更新情報が記録される。
【００６０】
図１６の例では，ページ領域Ａは，更新フラグが「１」でありデータの更新が発生したこと，つまりダーティページであることを示していて，更新カウンタが「３」であり更新回数が３回であることを示している。ページ領域Ｂ，Ｃも同様である。また，ページ領域Ｄは，更新フラグが「０」でありデータの更新が未だ発生していないこと，つまりダーティページではないことを示していて，したがって，更新カウンタは「０」である。
【００６１】
この更新カウンタの値は，更新回数を示していて，一定時間内に計測した更新カウンタの値は，更新頻度を示していることになる。
【００６２】
図１７は，工程Ｓ２０での更新テーブルへの更新情報（更新フラグと更新回数）の記録のフローチャート図である。また，図１８は，更新テーブルの更新処理Ｓ２０４の処理を説明する図である。
【００６３】
図１７において，仮想化ソフトウエア（ハイパバイザ）４−Ｘは，メモリ１２Ｂ内の全てのページ領域を読み出し専用に設定しておく（Ｓ２０１）。移動元仮想マシンＶＭＢ−Ｘがメモリ１２Ｂ内の読み出し専用ページ領域に書き込みを行おうとすると，その書き込みは書き込み違反であるため仮想化ソフトウエア４−Ｘに割り込みが発生する（Ｓ２０２のＹＥＳ）。そこで，仮想化ソフトウエア４−Ｘは，書き込みが発生したページ領域を書き込み可能ページに変更する（Ｓ２０３）。これにより，移動元仮想マシンＶＭＢ−Ｘによる書き込み処理が実行される。
【００６４】
このように，仮想化ソフトウエア４−Ｘは，上記の書き込み違反による割り込みの発生により，移動元仮想マシンＶＭＢ−Ｘによるメモリ１２Ｂへの書き込み処理を検出することができる。そして，仮想化ソフトウエア４−Ｘは，更新テーブルの更新処理を実行する（Ｓ２０４）。具体的には，その書き込みが行われたページ領域に対応する更新フラグを「１」にし，更新カウンタを＋１する。更新フラグが既に「１」の場合は更新フラグの変更は行わずに更新カウンタを＋１する。
【００６５】
図１８は，この工程Ｓ２０４におけるメモリへの書き込み発生時の更新テーブルの更新処理を示す図である。図１８の例では，ページ領域Ａでは，更新フラグが「０」から「１」に変更され，更新カウンタが「０」から「１」に＋１されている。また，ページ領域Ｃでは，更新カウンタが既に「１」であったため，更新カウンタが「４」から「５」に＋１されている。
【００６６】
図１７に戻り，上記更新処理Ｓ２０４の後，仮想化ソフトウエア４−Ｘは，書き込みが発生したページ領域を読み出し専用ページに変更する（Ｓ２０５）。これにより，その後書き込みが発生した場合は，前述の書き込み違反による割り込みが発生するので，仮想化ソフトウエア４−Ｘは，その書き込みが行われることを検出することができる。
【００６７】
図１５にもどり，メモリ１２Ｂ内の全メモリ内容のメモリ２２Ｂへの転送が完了すると（Ｓ２１），仮想化ソフトウエア４−Ｘは，準備処理として，更新カウンタ閾値を初期値の最小値に設定する（Ｓ２２）。そして，仮想化ソフトウエア４−Ｘは，工程Ｓ２１の全メモリ内容の転送中にバックグランドで記録された更新テーブルを，転送判断テーブルにコピーする（Ｓ２３）。この転送判断テーブルは，図１８に示した更新テーブルをコピーしたものであり，その全メモリ内容の転送処理Ｓ２１の後，全メモリ内容の転送処理Ｓ２１中にデータ更新されたページ領域（ダーティページ）の再転送を行う判断時に参照される。
【００６８】
図２０，図２１は，メモリ内容の転送処理の第１の具体例を示す図である。この例については後に詳述するが，図２０には，全メモリ内容の転送（Ｓ２１）中に更新された更新テーブルＵＴ１が，転送判断テーブルＤＴ１にコピー（Ｓ２３）されている。
【００６９】
次に，仮想化ソフトウエア４−Ｘは，ダーティページの再転送処理を行う。まず，仮想化ソフトウエア４−Ｘは，更新判断テーブルの最初のページ領域から順に参照する（Ｓ２４）。その参照したページ領域の更新フラグが「１」であり（Ｓ２５のＹＥＳ），更新カウンタが更新カウンタ閾値以下の場合（Ｓ２６のＹＥＳ），仮想化ソフトウエア４−Ｘは，そのページ領域内の内容（データ）を移動先仮想マシンのメモリ２２Ｂに転送し（Ｓ２７），更新テーブル内の転送済みダーティページ領域の更新フラグと更新カウンタをリセットして「０」にする（Ｓ２８）。上記の転送判断テーブルの参照ページ領域の更新フラグが「１」で且つ更新カウンタが更新カウンタ閾値以下である条件を満たさない場合（Ｓ２５のＮＯまたはＳ２６のＮＯ），仮想化ソフトウエア４−Ｘは，その参照ページ領域のメモリ内容の転送を行わない。
【００７０】
図２０の例では，転送判断テーブルＤＴ１のページ領域Ｂが上記の更新フラグが「１」で更新カウンタ値が更新カウンタ閾値以下の条件を満たして，転送されている（Ｓ２７（１））。そして，更新テーブルＵＴ３のページ領域Ｂの更新フラグと更新カウンタが「０」にリセットされている（Ｓ２８（１））。
【００７１】
図１９は，更新テーブル内の転送済みページ領域のリセット処理Ｓ２８を説明する図である。図１９の更新テーブルでは，ページ領域Ａが転送された例であり，ページ領域Ａの更新フラグが「１」から「０」にリセットされ，更新カウンタが「３」から「０」にリセットされている。図２０に示したページ領域Ｂのリセットも同様である。
【００７２】
仮想化ソフトウエア４−Ｘは，転送判断テーブル内の最終ページ領域まで（Ｓ２９のＮＯ），上記の処理Ｓ２４−Ｓ２８を繰り返す。これにより，更新フラグが「１」であり，設定されている更新カウンタ閾値（この時点では初期値の最小値）以下の更新カウンタ値のページ領域（ダーティページ）の内容が全て移動先のメモリに転送される。
【００７３】
そして，仮想化ソフトウエア４−Ｘは，図１３の工程Ｓ１１７と同じメモリ転送終了判定を行う（Ｓ３０）。このメモリ転送終了判定では，仮想化ソフトウエアは，更新テーブルを参照して，未転送のダーティページが第１の基準値未満に減少したか否かの第１の条件と，ダーティページの転送回数がメモリ１２Ｂのページ領域の数の所定倍数である第２の基準値を超えたかの第２の条件とを判断する。第１の条件が満たされ，または第２の条件が満たされれば，メモリ転送処理は終了する（Ｓ３０のＹＥＳ）。つまり，第１の条件は，十分にダーティページが減少したことを判断する条件であり，第２の条件は，メモリの更新頻度が高くメモリ転送を強制的に終了させるか否かの判断する条件である。
【００７４】
メモリ転送終了判定がＮＯの場合（Ｓ３０のＮＯ），仮想化ソフトウエア４−Ｘは，更新カウンタ閾値を所定値だけ増大させて（Ｓ３１），処理Ｓ２３−Ｓ３０を繰り返す。つまり，仮想化ソフトウエア４−Ｘは，それまでに記録されてきた更新テーブルを転送判断テーブルにコピーして，その転送判断テーブルを参照して，新たな更新カウンタ閾値以下のダーティページの転送処理を行う。
【００７５】
このように，更新カウンタ閾値を増大させることで，次の処理Ｓ２３−Ｓ３０では，更新頻度がより高いダーティページについても，メモリ内容の転送処理が行われる。つまり，更新頻度がより高いダーティページは，より低いダーティページよりも後に転送処理が行われる。よって，転送処理後からメモリ転送終了判定されるまでの時間が，更新頻度がより高いページ領域のほうがより低いページ領域よりも短くなり，新たなダーティページの数を抑制することができる。この点については，以下の具体例で説明する。
【００７６】
［メモリ内容の転送例１］
次に，図１５のフローチャート図に示したメモリ内容の転送処理Ｓ３について，転送例１を説明する。この転送例１では，移動元仮想マシンのメモリの内容を転送し，未転送で残っているダーティページが第１の基準値未満に減少したことで，メモリ内容の転送処理Ｓ３が終了する例である。
【００７７】
図２０，図２１は，メモリ内容の転送例１を示す図である。図中，左側にメモリ転送処理が具体例に対応して示され，各工程の番号は，図１５のフローチャート図の工程の番号に対応している。また，図中，中央に転送判断テーブルと更新テーブルの変遷が示され，右側にメモリへの書き込みと更新テーブルへの更新処理が示されている。
【００７８】
まず，仮想化ソフトウエア４−Ｘは，全メモリ内容を転送する（Ｓ２１）。仮想化ソフトウエアは，全メモリ内容の転送中に発生したメモリへの書き込み処理に応答して，更新テーブルを更新して書き込み処理を記録する（Ｓ２０）。その結果，全メモリ内容の転送処理Ｓ２１が終わった段階で，更新テーブルＵＴ１が生成されている。この時点の更新テーブルＵＴ１では，ページ領域Ａ，Ｂ，Ｃで更新フラグが「１」になっており，更新カウンタはそれぞれ「７」「２」「５」である。仮想化ソフトウエア４−Ｘは，この更新テーブルＵＴ１を転送判断テーブルＤＴ１にコピーする（Ｓ２３）。この転送判断テーブルＤＴ１の更新カウンタ値は，全メモリ内容の転送処理中に発生した書き込み回数であるので，直前の更新頻度である。
【００７９】
そこで，仮想化ソフトウエア４−Ｘは，更新カウンタ閾値を最小値（例えばＶｔｈ＝４）に設定する（Ｓ２２）。そして，仮想化ソフトウエアは，転送判断テーブルＤＴ１のページ領域を先頭から順番に検索して（Ｓ２４（１）），更新フラグが「１」であり更新カウンタの値が更新カウンタ閾値（Ｖｔｈ＝４）以下のページ領域（ダーティページ）を検出し，ページ領域Ｂを転送対象のダーティページであると判定し，ページ領域Ｂのデータを転送処理する（Ｓ２７（１））。
【００８０】
ページ領域Ｂのデータを転送中に，ページ領域Ａへの書き込みが発生し，更新テーブルにそれが記録され，ページ領域Ａの更新カウント値が＋１され，更新ページＵＴ３に変更されている（Ｓ２０）。そして，ページ領域Ｂの転送処理Ｓ２７（１）が終了すると，仮想化ソフトウエアは，更新テーブルＴＵ３の転送済みページ領域Ｂの更新フラグを「０」に更新カウントを「０」にそれぞれリセットする（Ｓ２８（１））。これにより，ページ領域Ｂの転送は完了したことが記録される。そして，転送判断テーブルＤＴ１内には，ページ領域Ｂ以外に更新カウント閾値Ｖｔｈ＝４以下のページ領域は存在しない。
【００８１】
そこで，図２１に示されるとおり，仮想化ソフトウエアは，更新カウンタ閾値を増大してＶｔｈ＝８に変更し（Ｓ３１（２）），更新テーブルＵＴ３を転送判断テーブルＤＴ２としてコピーする（Ｓ２３）。そして，仮想化ソフトウエアは，転送判断テーブルＤＴ２のページ領域を先頭から順番に検索して（Ｓ２４（１）），更新フラグが「１」であり更新カウンタの値が更新カウンタ閾値（Ｖｔｈ＝８）以下のページ領域（ダーティページ）を検出し，ページ領域Ａを転送対象のダーティページであると判定し，ページ領域Ａのデータを転送処理し（Ｓ２７（２）），更新テーブルＴＵ４内の転送済みページ領域Ａの更新記録をリセットする（Ｓ２８（２））。さらに，仮想化ソフトウエアは，転送判断テーブルＤＴ２を検索して（Ｓ２４（３）），ページ領域Ｃを検出し，それを転送し（Ｓ２７（３）），更新テーブルＤＴ６内の転送済みページ領域Ｃのデータをリセットする（Ｓ２８（３））。
【００８２】
このページ領域Ｃの転送中に，ページ領域Ａに書き込みが４回発生し，更新テーブルＵＴ５のようにページ領域Ａの更新フラグが「１」に変更され，更新カウンタが「４」に変更されている（Ｓ２０）。つまり，新たにページ領域Ａがダーティページになっている。
【００８３】
そこで，仮想化ソフトウエアは，更新カウンタ閾値を増大してＶｔｈ＝１２に変更し，更新テーブルＵＴ６を転送判断テーブルＤＴ３としてコピーする。そして，仮想化ソフトウエアは，転送判断テーブルＤＴ３のページ領域を先頭から順番に検索して，ページ領域Ａを転送対象のダーティページであると判定し，ページ領域Ａのデータを転送処理し，更新テーブルＴＵ６内の転送済みページ領域Ａのデータをリセットする（Ｓ３１（４）−Ｓ２８（４））。そして，仮想化ソフトウエアは，更新テーブルＵＴ６内に残っているダーティページ数が第１の基準値（この例では５）未満になったことを検出して（Ｓ３０のＹＥＳ），メモリ内容の転送処理を終了する。
【００８４】
図２０，図２１の左側に示されるとおり，転送終了判定工程Ｓ３０での，転送頻度が低いページ領域Ｂの転送後からの経過時間Ｔ１より，転送頻度が高いページ領域Ａの転送後からの経過時間Ｔ２のほうが短く，さらに，ページ領域Ｃの転送後からの経過時間Ｔ３が更に短い。よって，ページ領域Ｂは転送頻度が低いので転送後からの経過時間Ｔ１が長くても新たにページ領域Ｂへの書き込みが発生する蓋然性は低い。逆に，ページ領域Ａ，Ｃは転送頻度が高いが転送後からの経過時間Ｔ２，Ｔ３が短いので新たにページ領域Ａ，Ｃへの書き込みが発生する蓋然性も低い。したがって，転送頻度が低いページ領域を優先的に転送することで，未転送のダーティページの量を有効に減らすことができ，メモリ内容の転送処理の時間を短縮できる。
【００８５】
［メモリ内容の転送例２］
次に，メモリ内容の転送例２について説明する。この例２では，図１５のフローチャート図に示されるメモリ内容の転送を行い，転送済みページ数が第２の基準値（ここでは１５ページ）を超えて転送しても，未転送の更新ページであるダーティページが第１の基準値（この例では５）未満にならずに，メモリ内容の転送処理が強制的に終了している。
【００８６】
図２２，図２３は，メモリ内容の転送例２のフローチャート図である。図２０，図２１と同様に，左からメモリ転送処理，転送判断テーブル，更新テーブル，メモリへの書き込みと更新処理の流れが示されている。
【００８７】
仮想化ソフトウエアは，まず全メモリ内容を転送する（Ｓ２１）。そして，仮想化ソフトウエアは，更新カウンタ閾値を最小値，この転送例２ではＶｔｈ＝２，に設定し，更新テーブルＵＴ１を転送判断テーブルＤＴ１にコピーする（Ｓ２３）。そして，仮想化ソフトウエアは，転送判断テーブルＤＴ１を先頭から順番に検索して，更新フラグが「１」であり更新カウンタがＶｔｈ＝２以下のページ領域Ｂを検出し，ページ領域Ｂの内容を転送する（Ｓ２７（１））。仮想化ソフトウエアは，ページ領域Ｂの転送中に，ページ領域Ａ，Ｃに書き込みが発生したことに応答して，更新テーブルを更新する（Ｓ２０）。そして，仮想化ソフトウエアは，ページ領域Ｂの転送が終了すると，更新テーブルＵＴ３内の転送済みページ領域Ｃをリセットする（Ｓ２８（１））。
【００８８】
図２３に移り，仮想化ソフトウエアは，更新カウンタ閾値を増大してＶｔｈ＝４にし（Ｓ３１（２）），更新テーブルＵＴ３を転送判断テーブルＤＴ２にコピーする（Ｓ２３）。そして，上記と同様に転送判断テーブルＤＴ３を先頭から順に検索して（Ｓ３１（２）），ページ領域Ｄの内容を転送し（Ｓ２７（２）），転送後に更新テーブルＵＴ４内のページ領域Ｄをリセットする（Ｓ２８（２））。ただし，ページ領域Ｄを転送中に，メモリへの書き込みが大量に発生し，ページ領域Ａ，Ｂ，Ｃの更新カウンタ値が増大している。
【００８９】
そして，仮想化ソフトウエアは，更新テーブルＵＴ５内の未転送のダーティページが第１の基準値未満になる前に，転送済みダーティページ数が第２の基準値を超えてしまったことを検出して（Ｓ３０のＹＥＳ），メモリ内容の転送処理を強制終了する。
【００９０】
［第２の実施の形態］
図２４は，第２の実施の形態におけるメモリ内容の転送処理の概略を示すフローチャート図である。第１の実施の形態の図１３のフローチャートと異なるところは，工程Ｓ１２０，Ｓ１１９である。
【００９１】
第２の実施の形態では，仮想化ソフトウエアは，まず全メモリ内容を転送する（Ｓ１１１，Ｓ１１２，Ｓ１１３）。全メモリ内容の転送が終了すると（Ｓ１１３のＹＥＳ），全メモリ内容転送中に発生したダーティページの再転送処理（Ｓ１１４−Ｓ１２０）にはいる。ここまでは，第１の実施の形態と同じである。そして，ダーティページの再転送処理では，仮想化ソフトウエアは，更新テーブルを転送判断テーブルにコピーし，転送テーブルをリセットする（Ｓ１２０）。そして，仮想化ソフトウエアは，転送判断テーブルを先頭から順番に検索して，更新カウンタ閾値以下のダーティページを検出し転送する（Ｓ１１５）。仮想化ソフトウエアは，転送判断テーブル内のダーティページを全て転送するまで（Ｓ１１９のＹＥＳ），更新カウンタ閾値を最小値から増大させながら（Ｓ１１４，Ｓ１１８），処理Ｓ１１５−Ｓ１１８を繰り返す。そして，転送判断テーブル内のダーティページを転送中に発生したメモリへの書き込みは，更新テーブルに記録する（Ｓ１１６）。これにより，更新テーブルの更新回数に最新のダーティページの発生状況を反映させることができると共に，再転送周期毎に更新テーブルをリセットするので（Ｓ１２０），更新テーブルの更新回数は再転送周期毎の転送頻度を反映した値になる。
【００９２】
仮想化ソフトウエアは，転送判断テーブル内のダーティページを全て転送完了しても（Ｓ１１９のＹＥＳ），メモリ内容の転送処理の完了条件を満たさない場合は（Ｓ１１７のＮＯ），再度，更新テーブルを転送判断テーブルにコピーし更新テーブルをリセットして（Ｓ１２０），工程Ｓ１１４−Ｓ１１８を再度実行する。この時の更新テーブルをコピーした転送判断テーブルは，最新のダーティページの発生状況を反映しているので，更新カウンタが小さいダーティページから優先して転送する処理によりダーティページの発生をより有効に抑制することができる。
【００９３】
このように，仮想化ソフトウエアは，全メモリ内容の転送後に発生している更新テーブル内の最初のダーティページ群を更新カウンタ値が小さいものを優先して再転送し，再転送中に発生するダーティページを，リセット済みの更新テーブル内に新たに記録する。最初のダーティページ群の再転送が完了すると，再転送中に発生した第２のダーティページ群を同様に更新カウンタ値が小さいものを優先して転送し，再転送中に発生するダーティページを，リセット済みの更新テーブル内に新たに記録する。この更新カウント値が小さいものを優先して転送する処理を繰り返すことで，各繰り返しの再転送周期中に発生するダーティページ数を抑制することができ，メモリな用の転送処理に要する時間を短くすることができる。
【００９４】
［メモリ内容の転送処理例３］
次に，図２４のフローチャートの処理について，具体例に基づいて説明する。
【００９５】
図２５，図２６は，第２の実施の形態によるメモリ内容の転送例３のフローチャート図である。図２５に示されるように，仮想化ソフトウエアは，全メモリ内容を転送中に（Ｓ１１１），更新テーブルＵＴ１０にダーティページの発生を記録する（Ｓ１１２）。全メモリ内容の転送が完了すると，仮想化ソフトウエアは，更新テーブルＵＴ１０を転送判断テーブルＤＴ１０にコピーし，更新テーブルＵＴ１０をリセットして更新テーブルＵＴ１１にする（Ｓ１２０）。
【００９６】
ここから，第１周期Ｐ１でのダーティページの再転送処理が始まる。仮想化ソフトウエアは，更新カウンタ閾値Ｖｔｈを最小値に設定し（Ｓ１１４（１）），転送判断テーブルＤＴ１０を検索して，更新カウンタ値が更新カウンタ閾値以下のダーティページを検出し，検出したページ領域を転送し，転送判断テーブルＤＴ１０と更新テーブルＵＴ１１内の転送済みページ領域の更新フラグと更新カウンタをリセットする（Ｓ１１５（１））。さらに，仮想化ソフトウエアは，更新カウンタ閾値Ｖｔｈを増大させながら（Ｓ１１８），転送判断テーブルＤＴ１０を検索して，同様の処理を繰り返す。この第１周期Ｐ１でのダーティページ転送処理中に発生した新たなダーティページは，仮想化ソフトウエアにより，工程Ｓ１２０でリセット済みの更新テーブルＵＴ１１に記録される（Ｓ１１６）。
【００９７】
第１周期Ｐ１でのダーティページの再転送処理により，転送判断テーブルＤＴ１０内のダーティページが全て転送されると，仮想化ソフトウエアは，第２周期Ｐ２でのダーティページの再転送処理を始める。つまり，仮想化ソフトウエアは，第２周期Ｐ２では，第１周期Ｐ１中に発生したダーティページの再転送処理を行う。
【００９８】
図２５の最後と図２６の最初に示されるとおり，第２周期Ｐ２も第１周期Ｐ１と同様に，仮想化ソフトウエアは，更新テーブルＵＴ１２を転送判断テーブルＤＴ１１にコピーし，更新テーブルＵＴ１２をリセットして更新テーブルＵＴ１３にする（Ｓ１２０）。そして，仮想化ソフトウエアは，更新カウンタ閾値Ｖｔｈを最小値に設定し（Ｓ１１４−２（１）），転送判断テーブルＤＴ１１を検索して，更新カウンタ値が更新カウンタ閾値以下のダーティページを検出し，検出したページ領域を転送し，転送判断テーブルＤＴ１１と更新テーブルＵＴ１３内の転送済みページ領域の更新フラグと更新カウンタをリセットする（Ｓ１１５−２（１））。さらに，仮想化ソフトウエアは，更新カウンタ閾値Ｖｔｈを増大させながら（Ｓ１１８−２），転送判断テーブルＤＴ１０を検索して，同様の処理を繰り返す。この第２周期Ｐ２でのダーティページ再転送処理中に発生した新たなダーティページは，仮想化ソフトウエアにより，工程Ｓ１２０でリセット済みの更新テーブルＵＴ１３に記録される（Ｓ１１６−２）。
【００９９】
そして，仮想化ソフトウエアは，転送判断テーブルＤＴ１１内と更新テーブルＵＴ１４内の未転送ダーティページの数が第１の基準値未満になったことを検出して，メモリ内容の転送処理を終了する。この終了判定の処理については，図２６には示されていない。
【０１００】
以上の通り，第２の実施の形態では，各ダーティページ転送周期毎に，更新テーブルがリセットされ，更新カウンタ閾値がリセットされる。そして，各ダーティページ再転送周期内では，転送判断テーブル内の更新頻度を示す更新カウンタ値が小さいダーティページから優先して転送され，更新カウンタ値が大きいつまり更新頻度が高いダーティページの転送は遅く行われる。その結果，ダーティページの発生数を抑制することができ，メモリ内容の転送処理に要する時間を短くすることができる。
【０１０１】
以上に実施の形態をまとめると，以下の付記のとおりである。
【０１０２】
（付記１）
移動元物理サーバ上に構築されている移動元仮想マシンを移動先物理サーバ上に移動させるマイグレーション処理をコンピュータに実行させるマイグレーション処理プログラムであって，
前記マイグレーション処理は，
前記移動元仮想マシンのメモリのデータを，前記移動元物理サーバのメモリから前記移動先物理サーバのメモリに転送するメモリデータ転送工程と，
前記移動元仮想マシンによる前記移動元物理サーバのメモリへのデータの更新頻度を，前記メモリの単位領域毎に計測する更新頻度計測工程と，
メモリデータ転送工程中に前記移動元仮想マシンによって更新されたメモリデータを，第１の更新頻度の単位領域のデータを前記第１の更新頻度より高い第２の更新頻度の単位領域に優先して，前記移動元物理サーバのメモリから前記移動先物理サーバのメモリに再転送するメモリデータ再転送工程と，
前記移動元仮想マシンをサスペンドした後に，前記移動先物理サーバ上の移動先仮想マシンをリジュームさせるリジューム工程と，を有するマイグレーション処理プログラム。
【０１０３】
（付記２）
付記１において，
前記メモリデータ再転送工程中に，前記移動元仮想マシンのメモリ内のデータ更新され且つ未転送の単位領域の数が第１の基準値未満になる場合，前記メモリデータ再転送工程を終了して前記リジューム工程を実行するマイグレーション処理プログラム。
【０１０４】
（付記３）
付記２において，
前記メモリデータ再転送工程中に，再転送した単位領域の数が第２の基準値を超えても，前記移動元仮想マシンのメモリ内のデータ更新され且つ未転送の単位領域の数が第１の基準値未満にならない場合，前記メモリデータ再転送工程を終了して前記リジューム工程を実行するマイグレーション処理プログラム。
【０１０５】
（付記４）
付記１において，
前記更新頻度計測工程では，前記メモリの単位領域毎にデータの更新頻度を更新テーブルに記録し，
前記メモリデータ再転送工程では，前記更新テーブルをコピーした転送判断テーブルの更新頻度を参照して，当該更新頻度が第１の閾値以下の単位領域のデータを再転送し，その後，前記更新頻度が前記第１の閾値より高い第２の閾値以下の単位領域のデータを再転送するマイグレーション処理プログラム。
【０１０６】
（付記５）
付記４において，
前記更新頻度計測工程では，前記メモリデータ転送工程中のデータの更新回数を前記更新頻度として前記更新テーブルに記録し，さらに，前記メモリデータ再転送工程中のデータの更新回数を前記更新頻度として前記更新テーブルに記録するマイグレーション処理プログラム。
【０１０７】
（付記６）
付記４において，
前記メモリデータ再転送工程中に，前記データ更新された単位領域のデータを転送したときに，前記更新テーブル内の前記転送した単位領域の更新頻度をリセットするマイグレーション処理プログラム。
【０１０８】
（付記７）
付記６において，
前記メモリデータ再転送工程では，前記転送判断テーブル内のデータ更新された単位領域のデータ転送が全て終了するたびに，前記更新テーブルを前記転送判断テーブルにコピーし，前記第１の閾値及び第２の閾値に基づく単位領域のデータの再転送の処理を繰り返すマイグレーション処理プログラム。
【０１０９】
（付記８）
付記４または６において，
前記メモリデータ再転送工程では，前記第１の閾値及び第２の閾値に加えて，さらに前記第２の閾値よりも高い第３の閾値に基づいて前記データ更新された単位領域のデータ転送を行うマイグレーション処理プログラム。
【０１１０】
（付記９）
移動元物理サーバ上に構築されている移動元仮想マシンを移動先物理サーバ上に移動させるマイグレーション処理をコンピュータに実行させるマイグレーション処理方法であって，
前記マイグレーション処理は，
前記移動元仮想マシンのメモリのデータを，前記移動元物理サーバのメモリから前記移動先物理サーバのメモリに転送するメモリデータ転送工程と，
前記移動元仮想マシンによる前記移動元物理サーバのメモリへのデータの更新頻度を，前記メモリの単位領域毎に計測する更新頻度計測工程と，
メモリデータ転送工程中に前記移動元仮想マシンによって更新されたメモリデータを，第１の更新頻度の単位領域のデータを前記第１の更新頻度より高い第２の更新頻度の単位領域に優先して，前記移動元物理サーバのメモリから前記移動先物理サーバのメモリに再転送するメモリデータ再転送工程と，
前記移動元仮想マシンをサスペンドした後に，前記移動先物理サーバ上の移動先仮想マシンをリジュームさせるリジューム工程と，を有するマイグレーション処理方法。
【０１１１】
（付記１０）
付記９において，
前記更新頻度計測工程では，前記メモリの単位領域毎にデータの更新頻度を更新テーブルに記録し，
前記メモリデータ再転送工程では，前記更新テーブルをコピーした転送判断テーブルの更新頻度を参照して，当該更新頻度が第１の閾値以下の単位領域のデータを再転送し，その後，前記更新頻度が前記第１の閾値より高い第２の閾値以下の単位領域のデータを再転送するマイグレーション処理方法。
【０１１２】
（付記１１）
それぞれに仮想マシンが構築される複数の物理サーバと，
移動元物理サーバ上に構築されている移動元仮想マシンを移動先物理サーバ上に移動させるマイグレーション処理を実行するマイグレーション処理手段とを有し，
前記マイグレーション処理手段は，
前記移動元仮想マシンのメモリのデータを，前記移動元物理サーバのメモリから前記移動先物理サーバのメモリに転送するメモリデータ転送手段と，
前記移動元仮想マシンによる前記移動元物理サーバのメモリへのデータの更新頻度を，前記メモリの単位領域毎に計測する更新頻度計測手段と，
メモリデータ転送工程中に前記移動元仮想マシンによって更新されたメモリデータを，第１の更新頻度の単位領域のデータを前記第１の更新頻度より高い第２の更新頻度の単位領域に優先して，前記移動元物理サーバのメモリから前記移動先物理サーバのメモリに再転送するメモリデータ再転送手段と，
前記移動元仮想マシンをサスペンドした後に，前記移動先物理サーバ上の移動先仮想マシンをリジュームさせるリジューム手段と，を有するクラウドシステム。
【０１１３】
（付記１２）
付記１１において，
前記更新頻度計測手段は，前記メモリの単位領域毎にデータの更新頻度を更新テーブルに記録し，
前記メモリデータ再転送手段は，前記更新テーブルをコピーした転送判断テーブルの更新頻度を参照して，当該更新頻度が第１の閾値以下の単位領域のデータを再転送し，その後，前記更新頻度が前記第１の閾値より高い第２の閾値以下の単位領域のデータを再転送するクラウドシステム。
【符号の説明】
【０１１４】
１０Ｘ：移動元物理サーバ              １０−Ｙ：移動先物理サーバ
４−Ｘ：仮想化ソフトウエア            ４−Ｙ：仮想化ソフトウエア
ＶＭＢ−Ｘ：移動元仮想マシン          ＶＭＢ−Ｙ：移動先仮想マシン
１２Ｂ：移動元メモリ                  ２２Ｂ：移動先メモリ
【図１】
2014191752.tif 000003
【図２】
2014191752.tif 000004
【図３】
2014191752.tif 000005
【図４】
2014191752.tif 000006
【図５】
2014191752.tif 000007
【図６】
2014191752.tif 000008
【図７】
2014191752.tif 000009
【図８】
2014191752.tif 000010
【図９】
2014191752.tif 000011
【図１０】
2014191752.tif 000012
【図１１】
2014191752.tif 000013
【図１２】
2014191752.tif 000014
【図１３】
2014191752.tif 000015
【図１４】
2014191752.tif 000016
【図１５】
2014191752.tif 000017
【図１６】
2014191752.tif 000018
【図１７】
2014191752.tif 000019
【図１８】
2014191752.tif 000020
【図１９】
2014191752.tif 000021
【図２０】
2014191752.tif 000022
【図２１】
2014191752.tif 000023
【図２２】
2014191752.tif 000024
【図２３】
2014191752.tif 000025
【図２４】
2014191752.tif 000026
【図２５】
2014191752.tif 000027
【図２６】
2014191752.tif 000028
【図２７】
2014191752.tif 000029