(57)【要約】【課題】仮想マシンをサスペンドすることなくライブマイグレーションを実行する。【解決手段】仮想マシンに割り当てられた第１物理マシン２０Ａの第１ローカルメモリ２２２に記憶されたデータを、移行元の第１物理マシン２０Ａ及び移行先の第２物理マシン３０Ａの両方からアクセス可能な共有メモリ４２にコピーすると共に、コピーが完了したデータへのアクセス先アドレスを第１ローカルメモリ２２２から共有メモリ４２に変換する。仮想マシンの制御を第１物理マシン２０Ａから第２物理マシン３０Ａに切り換え、共有メモリ４２に記憶されたデータを、仮想マシンに割り当てられた第２物理マシン３０Ａの第２ローカルメモリ３２２にコピーすると共に、コピーが完了したデータへのアクセス先アドレスを共有メモリ４２から第２ローカルメモリ３２２に変換する。【選択図】図１
2017227969.tif 000002
【特許請求の範囲】
【請求項１】
仮想マシンを第１物理マシンから第２物理マシンへ移行させる処理をコンピュータに実行させる制御プログラムであって、
前記仮想マシンに割り当てられた前記第１物理マシンの第１ローカルメモリに記憶されたデータを、前記第１物理マシン及び前記第２物理マシンの両方からアクセス可能な共有メモリにコピーすると共に、コピーが完了したデータに前記仮想マシンからアクセスする際の物理アドレスを、前記第１ローカルメモリから前記共有メモリのアドレスに変換し、
前記第１ローカルメモリの全データについて、前記共有メモリへのコピーが完了すると、前記仮想マシンの制御を前記第１物理マシンから前記第２物理マシンに切り換え、
前記共有メモリに記憶されたデータを、前記仮想マシンに割り当てられた前記第２物理マシンの第２ローカルメモリにコピーすると共に、コピーが完了したデータに前記仮想マシンからアクセスする際の物理アドレスを、前記共有メモリから前記第２ローカルメモリのアドレスに変換する
ことを含む処理を前記コンピュータに実行させる制御プログラム。
【請求項２】
前記第１ローカルメモリから前記共有メモリへのデータのコピー中に、該データへの書き込み命令が行われた場合には、該書き込み命令の実行を、該データの前記共有メモリへのコピーが完了するまで待機させ、コピー完了後に、前記共有メモリにコピーされたデータに対して前記書き込み命令を実行させ、
前記共有メモリから前記第２ローカルメモリへのデータのコピー中に、該データへの書き込み命令が行われた場合には、該書き込み命令の実行を、該データの前記第２ローカルメモリへのコピーが完了するまで待機させ、コピー完了後に、前記第２ローカルメモリにコピーされたデータに対して前記書き込み命令を実行さる
請求項１に記載の制御プログラム。
【請求項３】
前記仮想マシンに割り当てられた前記第１ローカルメモリ、前記第２ローカルメモリ、及び前記共有メモリの各々の領域を複数に分割したブロック毎に、前記第１ローカルメモリから前記共有メモリへのデータのコピー、前記第１ローカルメモリから前記共有メモリへの物理アドレスの変換、前記共有メモリから前記第２ローカルメモリへのデータのコピー、及び前記共有メモリから前記第２ローカルメモリへの物理アドレスの変換を行う請求項１又は請求項２に記載の制御プログラム。
【請求項４】
前記ブロックの各々のサイズを、前記第１物理マシン及び前記第２物理マシンのオペレーションシステムが管理可能な最小サイズとする請求項３に記載の制御プログラム。
【請求項５】
前記共有メモリを、前記第１物理マシン及び前記第２物理マシン以外の記憶領域に設ける請求項１〜請求項４のいずれか１項に記載の制御プログラム。
【請求項６】
前記共有メモリを、前記第１物理マシン又は前記第２物理マシンが備える記憶領域に設ける請求項１〜請求項４のいずれか１項に記載の制御プログラム。
【請求項７】
前記第１物理マシンが備える記憶領域に前記共有メモリが設けられた場合、
前記第１物理マシンに、前記共有メモリに対応するメモリトークンを設定し、
前記第２物理マシンに、前記メモリトークンに対応し、かつ前記共有メモリにアクセスするためのアクセストークンを設定する
請求項６に記載の制御プログラム。
【請求項８】
前記第２物理マシンが備える記憶領域に前記共有メモリが設けられた場合、
前記第２物理マシンに、前記共有メモリに対応するメモリトークンを設定し、
前記第１物理マシンに、前記メモリトークンに対応し、かつ前記共有メモリにアクセスするためのアクセストークンを設定する
請求項６に記載の制御プログラム。
【請求項９】
仮想マシンを第１物理マシンから第２物理マシンへ移行させる制御システムであって、
前記仮想マシンに割り当てられた前記第１物理マシンの第１ローカルメモリに記憶されたデータを、前記第１物理マシン及び前記第２物理マシンの両方からアクセス可能な共有メモリにコピーする処理を前記第１物理マシンのハイパーバイザーに実行させる第１制御部と、
前記第１ローカルメモリから前記共有メモリへのコピーが完了したデータに前記仮想マシンからアクセスする際の物理アドレスを、前記第１ローカルメモリから前記共有メモリのアドレスに変換する第１変換部と、
前記第１ローカルメモリの全データについて、前記共有メモリへのコピーが完了し、前記ハイパーバイザーにより前記仮想マシンの制御が前記第１物理マシンから前記第２物理マシンに切り換えられると、前記共有メモリに記憶されたデータを、前記仮想マシンに割り当てられた前記第２物理マシンの第２ローカルメモリにコピーする処理を前記第２物理マシンのハイパーバイザーに実行させる第２制御部と、
前記共有メモリから前記第２ローカルメモリへのコピーが完了したデータに前記仮想マシンからアクセスする際の物理アドレスを、前記共有メモリから前記第２ローカルメモリのアドレスに変換する第２変換部と、
を含む制御システム。
【請求項１０】
仮想マシンを第１物理マシンから第２物理マシンへ移行させる処理をコンピュータに実行させる制御方法であって、
前記仮想マシンに割り当てられた前記第１物理マシンの第１ローカルメモリに記憶されたデータを、前記第１物理マシン及び前記第２物理マシンの両方からアクセス可能な共有メモリにコピーすると共に、コピーが完了したデータに前記仮想マシンからアクセスする際の物理アドレスを、前記第１ローカルメモリから前記共有メモリのアドレスに変換し、
前記第１ローカルメモリの全データについて、前記共有メモリへのコピーが完了すると、前記仮想マシンの制御を前記第１物理マシンから前記第２物理マシンに切り換え、
前記共有メモリに記憶されたデータを、前記仮想マシンに割り当てられた前記第２物理マシンの第２ローカルメモリにコピーすると共に、コピーが完了したデータに前記仮想マシンからアクセスする際の物理アドレスを、前記共有メモリから前記第２ローカルメモリのアドレスに変換する
ことを含む処理を前記コンピュータに実行させる制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
開示の技術は、制御プログラム、制御システム、及び制御方法に関する。
【背景技術】
【０００２】
ある物理マシン上で稼働中の仮想マシンを、別の物理マシンに移動させるマイグレーションの手法として、コールドマイグレーションという手法がある。コールドマイグレーションでは、仮想マシンを停止させた状態で移動させるため、移動元の物理マシンで仮想マシンが使用しているメモリの情報は転送の必要がない。そのため、仮想化管理ソフトウェアは、仮想マシンの構成情報のみを移動先の物理マシンへ送信し、移動先の物理マシン上で、仮想マシンの起動を行う。コールドマイグレーションの場合、保守作業中は仮想マシンを停止させるため、仮想マシンによる業務の運用を継続することはできない。
【０００３】
一方、ＵＮＩＸ（登録商標）サーバやIntel Architecture（ＩＡ）サーバなどの仮想化を採用したコンピュータシステムは、ライブマイグレーション機能を有する。ライブマイグレーションは、仮想マシンによる業務等の運用を可能な限り継続したまま、仮想マシンを移動させるマイグレーションの手法である。ライブマイグレーションでは、ネットワークを使用して、仮想マシンのメモリ情報を移動元から移動先へ送信し、移動先の物理マシンのメモリにコピーした後、仮想マシンの運用を移動元から移動先に切り替える処理が行われる。
【０００４】
このようなライブマイグレーションに関し、例えば、仮想マシンのメモリデータを、移動元物理ホストから移動先物理ホストに送信して、移動元物理ホストの仮想マシンと移動先物理ホストの仮想マシンとを同期させるシステムが提案されている。このシステムでは、仮想マシン毎に、移動元物理ホストの仮想マシンとのデータの同期を判定し、判定結果に基づき、全ての仮想マシンについてデータが同期している場合に、移動元物理ホストから移動先物理ホストに仮想マシンを切り換えさせる。この切り換え指示があるまで、メモリのデータの送信を継続する。
【０００５】
また、マイグレーションに共有メモリを用いる技術が提案されている。例えば、第１仮想計算機に専用の第１専用メモリ内にオペレーティング・システム及びアプリケーションを有する第１仮想計算機のマイグレーションに関するシステムが提案されている。このシステムでは、第１仮想計算機の通信キューは、第１及び第２コンピュータ又は第１及び第２ＬＰＡＲによって共用される共用メモリに常駐する。そして、オペレーティング・システム及びアプリケーションは、第１専用メモリから共用メモリにコピーされた後、共用メモリから第２コンピュータ又は第２ＬＰＡＲ（Logical Partition）内の第１仮想計算機に専用の第２専用メモリにコピーされる。第１仮想計算機は、第２コンピュータ又は第２ＬＰＡＲ内でレジュームされる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】国際公開２０１４／０１０２１３号
【特許文献２】特開２００５−３２７２７９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ライブマイグレーション中の仮想マシンのメモリ情報は、仮想マシンが稼働しているため、常に更新が行われる。したがって、仮想マシンをサスペンドすることなく、ライブマイグレーション元とライブマイグレーション先での仮想マシンのメモリ情報を完全に一致させることができない。すなわち、ライブマイグレーションによって仮想マシンを移動する場合、メモリ情報をライブマイグレーション先へ転送するためには、必ず仮想マシンのサスペンドが必要であり、その間、仮想マシンによる業務の運用を継続することができない。
【０００８】
開示の技術は、一つの側面として、仮想マシンをサスペンドすることなくライブマイグレーションを実行することを目的とする。
【課題を解決するための手段】
【０００９】
開示の技術は、一つの態様として、仮想マシンを第１物理マシンから第２物理マシンへ移行させる。前記仮想マシンに割り当てられた前記第１物理マシンの第１ローカルメモリに記憶されたデータを、前記第１物理マシン及び前記第２物理マシンの両方からアクセス可能な共有メモリにコピーする。また、コピーが完了したデータに前記仮想マシンからアクセスする際の物理アドレスを、前記第１ローカルメモリから前記共有メモリのアドレスに変換する。そして、前記第１ローカルメモリの全データについて、前記共有メモリへのコピーが完了すると、前記仮想マシンの制御を前記第１物理マシンから前記第２物理マシンに切り換える。次に、前記共有メモリに記憶されたデータを、前記仮想マシンに割り当てられた前記第２物理マシンの第２ローカルメモリにコピーする。また、コピーが完了したデータに前記仮想マシンからアクセスする際の物理アドレスを、前記共有メモリから前記第２ローカルメモリのアドレスに変換する。
【発明の効果】
【００１０】
開示の技術は、一つの側面として、仮想マシンをサスペンドすることなくライブマイグレーションを実行することができる、という効果を有する。
【図面の簡単な説明】
【００１１】
【図１】第１実施形態に係る制御システムの概略構成を示すブロック図である。
【図２】アドレス変換テーブルの一例を示す図である。
【図３】第１実施形態に係る制御システムのハードウェア構成を示す概略図である。
【図４】制御システムで実行されるライブマイグレーション処理全体の概要を示すフローチャートである。
【図５】第１実施形態におけるマイグレーション元処理及びマイグレーション先処理の一例を示すフローチャートである。
【図６】共有メモリへのコピー処理の一例を示すフローチャートである。
【図７】マイグレーション元のローカルメモリから共有メモリへのコピー及びアドレス変換を説明するための図である。
【図８】アドレス変換テーブルにおけるアドレスの書き換えの一例を示す図である。
【図９】共有メモリからのコピー処理の一例を示すフローチャートである。
【図１０】共有メモリからマイグレーション先のローカルメモリへのコピー及びアドレス変換を説明するための図である。
【図１１】第２実施形態に係る制御システムの概略構成を示すブロック図である。
【図１２】第２実施形態に係る制御システムのハードウェア構成を示す概略図である。
【図１３】ＣＰＵチップの概略構成を示すブロック図である。
【図１４】第２実施形態におけるマイグレーション元処理及びマイグレーション先処理の一例を示すフローチャートである。
【図１５】第２実施形態の変形例に係る制御システムの概略構成を示すブロック図である。
【図１６】第２実施形態の変形例におけるマイグレーション元処理及びマイグレーション先処理の一例を示すフローチャートである。
【図１７】ダーティページトラッキングを説明するための図である。
【図１８】ライブマイグレーションでサスペンドが生じる例を説明するための図である。
【図１９】ライブマイグレーションでサスペンドが生じる例を説明するための図である。
【発明を実施するための形態】
【００１２】
以下、図面を参照して開示の技術に係る実施形態の一例を詳細に説明する。
【００１３】
まず、以下の各実施形態の詳細を説明する前に、ライブマイグレーション時における仮想マシンのサスペンドについて説明する。ライブマイグレーションは、仮想マシンによる業務等の運用を可能な限り継続したまま、仮想マシンを移動させる手法ではあるが、従来のライブマイグレーションでは、短時間ながらも仮想マシンをサスペンドさせることが必要である。
【００１４】
仮想マシンのライブマイグレーションを行う場合、ハイパーバイザーが、マイグレーション元の物理マシンにおいて仮想マシンに割り当てられたメモリ（以下、「仮想マシンメモリ」ともいう）のデータを、マイグレーション先の仮想マシンメモリにコピーする。コピーされるデータは、通常、ネットワークによるデータ転送によって、マイグレーション元の物理マシンからマイグレーション先の物理マシンへ転送される。ライブマイグレーション中は仮想マシンが動作中であるため、このデータ転送の間も、仮想マシン上で動作するアプリケーションによって仮想マシンメモリのデータは随時更新される。
【００１５】
ハイパーバイザーは、ダーティページトラッキング機能を使用して、ライブマイグレーション中にデータが更新された仮想マシンメモリ（ダーティページ）を検出する。具体的には、図１７に示すように、ダーティページトラッキングが開始されると、ハイパーバイザーが、アドレス変換テーブルの全エントリの属性を読み込みのみを許可する属性（「ＲＥＡＤ」）に変更する（図１７の（１））。なお、アドレス変換テーブルは、メモリを複数に分割した各ブロックに対応するエントリ毎に、論理（仮想）アドレスと物理アドレスとの対応付けを記憶したテーブルである。また、各エントリには、そのエントリに対応するブロックに対して許可されるアクセスの属性も対応付けて記憶されている。
【００１６】
そして、Central Processing Unit（ＣＰＵ）から、エントリ８に対応する物理メモリの領域への書き込みが行われると（図１７の（２）及び（３））、該当のメモリ領域は属性が「ＲＥＡＤ」であることから、トラップが発生する（図１７の（４））。トラップは、ハイパーバイザーに通知され（図１７の（５））、ハイパーバイザーが、アドレス変換テーブルの該当のエントリを書き込みも可能な属性（「ＲＥＡＤ／ＷＲＩＴＥ」）に変更する（図１７の（６））。そして、ハイパーバイザーは、メモリへの書き込みをリトライさせる（図１７の（７））。ハイパーバイザーは、（７）で更新されたメモリ領域をダーティページとして検出する。ハイパーバイザーは、このダーティページのデータ転送を繰り返すことで、マイグレーション元とマイグレーション先とで、仮想マシンメモリのデータの同期をとる。
【００１７】
図１８を参照して、ライブマイグレーション元での仮想マシンメモリに対する更新処理速度が、データが転送されるネットワーク帯域の上限を超えない場合を例に、ライブマイグレーション中のデータ転送について、より詳細に説明する。
【００１８】
図１８中の（１）は、マイグレーション元及びマイグレーション先の各々の仮想マシンメモリのデータ転送前の状態である。まず、ハイパーバイザーは、マイグレーション元の仮想マシンメモリの全データを、マイグレーション先へ転送する（図１８の（２））。そして、ハイパーバイザーは、マイグレーション先の仮想マシンメモリに、転送されたデータをコピーする（図１８の（３））。このデータ転送の間にも、マイグレーション元の仮想マシンは稼働しているため、マイグレーション元の仮想マシンメモリの一部が更新される（図１８の（４））。すなわち、マイグレーション元の仮想マシンメモリには、（２）でマイグレーション先に転送されたデータよりも新しいデータが書き込まれている。そこで、ハイパーバイザーが、（４）において更新されたメモリ、すなわち、（２）でデータ転送した時点以降に更新されたメモリのデータを、マイグレーション先に転送し（図１８の（５））、マイグレーション先のメモリにコピーする（図１８の（６））。
【００１９】
（５）のデータ転送の間にも、マイグレーション元の仮想マシンメモリの一部が更新されるため（図１８の（７））、ハイパーバイザーは、差分のデータ転送（図１８の（８））、及びマイグレーション先のメモリへのコピー（図１８の（９））を繰り返す。ハイパーバイザーは、例えば、マイグレーション元とマイグレーション先とで、仮想マシンメモリの差分が所定値より小さくなるまで、更新された仮想マシンメモリのデータ転送を繰り返し実施する。ハイパーバイザーは、仮想マシンメモリの差分が所定値より小さくなった時点で、マイグレーション元の仮想マシンをサスペンドする（図１８の（１０））。これにより、マイグレーション元の仮想マシンメモリは、更新処理が一時的に停止される。そして、最後に、ハイパーバイザーは、（８）のデータ転送から（１０）のサスペンドまでの間に更新されたメモリのデータ（図１８の（１１））をマイグレーション先に転送し（図１８の（１２））、マイグレーション先のメモリにコピーする（図１８の（１３））。これにより、マイグレーション元とマイグレーション先とで、仮想マシンメモリのデータが完全に同期するため、マイグレーション先において仮想マシンをレジュームさせることで、ライブマイグレーションが完了する。
【００２０】
次に、図１９を参照して、ライブマイグレーション元での仮想マシンメモリに対する更新処理速度が、データが転送されるネットワーク帯域の上限を超える場合を例に、ライブマイグレーション中のデータ転送について、より詳細に説明する。
【００２１】
図１９の例では、例えば、ネットワーク帯域を１０Ｇｂｐｓとし、仮想マシンメモリの１ブロック（図１９中の仮想マシンメモリの各マス）に対して、２．５Ｇｂｐｓの転送速度が必要であると仮定する。つまり、１秒間に最大４つのブロックのデータしか転送できない環境であると仮定する。
【００２２】
（１）〜（４）については、図１８の場合と同様である。ただし、図１９の例では、データの更新速度がデータ転送速度を超えている。そのため、（４）でデータが更新された仮想マシンメモリの一部のブロック（図１９の例では５ブロック中４ブロック）のデータのみが転送され（図１９の（５））、マイグレーション先の仮想メモリにコピーされる（図１９の（６））。
【００２３】
（５）のデータ転送の間にも、マイグレーション元の仮想マシンメモリの一部が更新されるため（図１９の（７））、ハイパーバイザーは、差分のデータ転送（図１９の（８））、マイグレーション先の仮想マシンメモリへのコピー（図１９の（９））を繰り返す。ここでも、（７）でデータが更新された仮想マシンメモリの一部のブロックのデータしか転送されないため、データ転送処理を繰り返しても、マイグレーション元とマイグレーション先とで、仮想マシンメモリのデータの差分が小さくならない。すなわち、マイグレーション元とマイグレーション先とで、仮想マシンメモリの同期処理が進まない状態となる。
【００２４】
そこで、ハイパーバイザーは、図１９のように、マイグレーション元での仮想マシンメモリの更新速度が、データ転送速度を上回っていることを検出すると、マイグレーション元の仮想マシンをサスペンドする（図１９の（１０））。これにより、マイグレーション元の仮想マシンメモリは、更新処理が一時的に停止される。そして、ハイパーバイザーは、（８）のデータ転送から（１０）のサスペンドまでの間に更新されたメモリのデータ（図１８の（１１））をマイグレーション先に転送し（図１９の（１２））、仮想マシンメモリにコピーする（図１９の（１３））。また、（４）、（７）、及び（１１）で更新されたメモリのデータのうち、マイグレーション先へ未転送のデータ（図１９の（１４））を、マイグレーション先に転送し（図１９の（１５））、仮想マシンメモリにコピーする（図１９の（１６））。
【００２５】
これにより、マイグレーション元とマイグレーション先とで、仮想マシンメモリのデータが完全に同期するため、マイグレーション先において仮想マシンをレジュームさせることで、ライブマイグレーションが完了する。
【００２６】
上記のいずれの例においても、従来の仮想マシンのライブマイグレーションでは、短い時間ではあるが、仮想マシンをサスペンドするため、その間の仮想マシンによる業務を継続することができない。
【００２７】
また、ハイパーバイザーは、マイグレーション元の仮想マシンをサスペンドするタイミングを、ダーティページトラッキング機能により計算されるダーティ率（メモリ全体に対するダーティページの割合）に基づいて判定する。このダーティ率の検出にもオーバーヘッドを伴うという問題がある。
【００２８】
そこで、以下の各実施形態では、仮想マシンのライブマイグレーションにおいて、マイグレーション元の仮想マシンをサスペンドさせることなく、マイグレーション先へ移行させる。以下、各実施形態について詳述する。
【００２９】
＜第１実施形態＞
図１に、第１実施形態に係る制御システム１０Ａの機能的な構成を、ハードウェア構成との関連も含めて概略的に示す。図１に示すように、第１実施形態に係る制御システム１０Ａは、マイグレーション元の物理マシン２０Ａと、マイグレーション先の物理マシン３０Ａと、共有メモリ４２とを含む。
【００３０】
物理マシン２０Ａでは、ハイパーバイザー２３が動作する。ハイパーバイザー２３は、ＣＰＵのコア２１ｎ（図１では、ｎ＝１，２，３，４）と、ローカルメモリ２２ｎ（図１では、ｎ＝１，２）とを利用して、制御ドメインとしての仮想マシン２５、及びゲストドメインとしての仮想マシン２７を構築する。なお、図１では、仮想マシン２５に、コア２１１及びコア２１２と、ローカルメモリ２２１とが割り当てられ、仮想マシン２７に、コア２１３及びコア２１４と、ローカルメモリ２２２とが割り当てられている例を示している。また、図１では、ゲストドメインとしての仮想マシン２７が１つの例を示しているが、ゲストドメインとしての仮想マシン２７は複数であってもよい。
【００３１】
制御ドメインとしての仮想マシン２５では、仮想化管理ソフトウェア２６が動作する。仮想化管理ソフトウェア２６は、ハイパーバイザー２３を利用して、物理マシン２０Ａ上に構築された仮想化環境を管理する。また、仮想化管理ソフトウェア２６には、機能部として、共有メモリ制御部１２Ａが組み込まれる。共有メモリ制御部１２Ａは、ライブマイグレーション時における共有メモリ４２のメモリ領域の取得及び開放等を制御する（詳細は後述）。
【００３２】
ゲストドメインとしての仮想マシン２７は、本実施形態においてライブマイグレーションの対象となる仮想マシンである。仮想マシン２７では、アプリケーション２８が実行される。アプリケーション２８からの指示により、コア２１ｎが、論理アドレス（仮想アドレス）を指定してメモリへアクセスする際、ハイパーバイザー２３は、アドレス変換テーブル２４を参照して、論理アドレスを物理アドレスに変換する。これにより、コア２１ｎは、所定のデータにアクセスする。
【００３３】
図２に、アドレス変換テーブル２４の一例を示す。図２の例では、アドレス変換テーブル２４には、物理マシン２０Ａが有するメモリ領域を所定単位（例えば、８ｋＢ）毎に分割した各ブロックを１エントリとし、エントリ毎に、論理アドレスと物理アドレスとが対応付けて記憶されている。また、アドレス変換テーブル２４には、各エントリに対応するブロックに対する読み込みのみを許可するか（「ＲＥＡＤ」）、読み込み及び書き込みを許可するか（「ＲＥＡＤ／ＷＲＩＴＥ」）を示す属性も、各エントリに対応付けて記憶されている。
【００３４】
ハイパーバイザー２３には、機能部として、アドレスマップ変換部１４が組み込まれる。アドレスマップ変換部１４は、ライブマイグレーション時に、アドレス変換テーブル２４において論理アドレスと対応付けられた物理アドレスを、ローカルメモリ２２ｎのアドレスから共有メモリ４２のアドレスへ変換する（詳細は後述）。
【００３５】
物理マシン３０Ａでも、物理マシン２０Ａと同様に、ハイパーバイザー３３が動作する。ハイパーバイザー３３は、ＣＰＵのコア３１ｎ（図１では、ｎ＝１，２，３，４）と、ローカルメモリ３２ｎ（図１では、ｎ＝１，２）とを利用して、制御ドメインとしての仮想マシン３５、及びゲストドメインとしての仮想マシン３７を構築する。なお、図１では、仮想マシン３５に、コア３１１及びコア３１２と、ローカルメモリ３２１とが割り当てられ、仮想マシン３７に、コア３１３及びコア３１４と、ローカルメモリ３２２とが割り当てられている例を示している。また、図１では、ゲストドメインとしての仮想マシン３７が１つの例を示しているが、ゲストドメインとしての仮想マシン２７は複数であってもよい。
【００３６】
制御ドメインとしての仮想マシン３５では、仮想化管理ソフトウェア３６が動作する。仮想化管理ソフトウェア３６は、機能部として、共有メモリ制御部１６Ａを含む。共有メモリ制御部１６Ａは、ライブマイグレーション時における共有メモリ４２からローカルメモリ３２ｎへのデータのコピー完了を、マイグレーション元の共有メモリ制御部１２Ａへ通知する（詳細は後述）。
【００３７】
ゲストドメインとしての仮想マシン３７は、マイグレーション元の仮想マシン２７と同じ構成情報に基づいて、マイグレーション先の物理マシン３０Ａに構築される仮想マシンである。仮想マシン３７では、マイグレーション元の仮想マシン２７と同様に、アプリケーション２８が実行される。アプリケーション２８からの指示により、コア３１ｎが、論理アドレスを指定してメモリへアクセスする際、ハイパーバイザー３３は、アドレス変換テーブル３４を参照して、論理アドレスを物理アドレスに変換する。これにより、コア３１ｎは、所定のデータにアクセスする。アドレス変換テーブル３４のデータ構造は、例えば、図２に示すように、アドレス変換テーブル２４と同様である。
【００３８】
ハイパーバイザー３３には、機能部として、アドレスマップ変換部１８が組み込まれる。アドレスマップ変換部１８は、ライブマイグレーション時に、アドレス変換テーブル３４において論理アドレスと対応付けられた物理アドレスを、共有メモリ４２のアドレスからローカルメモリ３２ｎのアドレスへ変換する（詳細は後述）。
【００３９】
なお、本実施形態では、説明の便宜上、共有メモリ制御部を、マイグレーション元で機能する部分（共有メモリ制御部１２Ａ）と、マイグレーション先で機能する部分（共有メモリ制御部１６Ａ）とを区別して説明する。同様に、アドレスマップ変換部を、マイグレーション元で機能する部分（アドレスマップ変換部１４）と、マイグレーション先で機能する部分（アドレスマップ変換部１８）とを区別して説明する。ただし、共有メモリ制御部及びアドレスマップ変換部の各々は、マイグレーション元で機能する部分と、マイグレーション先で機能する部分とを両方を含んでもよい。この場合、共有メモリ制御部及びアドレスマップ変換部が組み込まれた物理マシンが、マイグレーション元又はマイグレーション先のいずれであるかに応じて、必要な機能が実行されればよい。
【００４０】
なお、共有メモリ制御部１２Ａは、開示の技術の第１制御部、アドレスマップ変換部１４は、開示の技術の第１変換部、共有メモリ制御部１６Ａは、開示の技術の第２制御部、アドレスマップ変換部１８は、開示の技術の第２変換部の一例である。
【００４１】
共有メモリ４２は、複数のノードからアクセス可能なメモリである。ここで、各ノードは、同一の物理マシン又は異なる物理マシンにおいて、異なるOperating System（ＯＳ）上で動作する各仮想マシンのことである。共有メモリ４２にアクセス可能な複数のノードには、同一の物理マシン上で動作する異なる仮想マシンだけでなく、異なる物理マシン上で動作する複数の仮想マシンも含む。本実施形態では、共有メモリ４２は、物理マシン２０Ａ上の仮想マシン２７からも、物理マシン３０Ａ上の仮想マシン３７からもアクセス可能なメモリである。
【００４２】
例えば、物理マシン２０Ａ上の仮想マシン２７に割り当てられたコア２１４は、仮想マシン２７に割り当てられたローカルメモリ２２２に直接アクセスすることができる（図１の一点破線Ｅ）。加えて、コア２１４は、自装置外に存在する共有メモリ４２にも直接アクセスすることができる（図１の二点破線Ｆ）。同様に、物理マシン３０Ａ上の仮想マシン３７に割り当てられたコア３１４は、仮想マシン３７に割り当てられたローカルメモリ３２２に直接アクセスすることができる（図１の一点破線Ｇ）。加えて、コア３１４は、自装置外に存在する共有メモリ４２にも直接アクセスすることができる（図１の二点破線Ｈ）。
【００４３】
図３に、第１実施形態に係る制御システム１０Ａのハードウェア構成の概略図を示す。
【００４４】
物理マシン２０Ａは、コア２１１、コア２１２、及びローカルメモリ２２１を含むＣＰＵチップ２１Ｐと、コア２１３、コア２１４、及びローカルメモリ２２２を含むＣＰＵチップ２１Ｑとを含む。コア２１ｎは、同一チップ内に搭載されたローカルメモリ２２ｎ、及び共有メモリ４２に直接アクセスすることができる。
【００４５】
また、物理マシン２０Ａは、不揮発性の記憶部５１と、通信interface（Ｉ／Ｆ）５２と、記憶媒体５４に対するデータの読み込み及び書き込みを制御するRead/Write（Ｒ／Ｗ）部５３とを備える。ＣＰＵチップ２１Ｐ、２１Ｑ、記憶部５１、通信Ｉ／Ｆ５２、及びＲ／Ｗ部５３は、バスを介して互いに接続される。
【００４６】
記憶部５１は、Hard Disk Drive（ＨＤＤ）、Solid State Drive（ＳＳＤ）、フラッシュメモリ等によって実現できる。記憶媒体としての記憶部５１には、仮想マシンのライブマイグレーション時に実行される制御プログラム６０Ａが記憶されている。制御プログラム６０Ａは、共有メモリ制御プロセス６２Ａと、アドレスマップ変換プロセス６４とを有する。
【００４７】
制御ドメインとしての仮想マシン２５に割り当てられたコア２１１、２１２は、制御プログラム６０Ａを記憶部５１から読み出してローカルメモリ２２１に展開し、制御プログラム６０Ａが有するプロセスを順次実行する。コア２１１、２１２は、共有メモリ制御プロセス６２Ａを実行することで、図１に示す共有メモリ制御部１２Ａとして動作する。また、コア２１１、２１２は、アドレスマップ変換プロセス６４を実行することで、図１に示すアドレスマップ変換部１４として動作する。
【００４８】
物理マシン３０Ａは、コア３１１、コア３１２、及びローカルメモリ３２１を含むＣＰＵチップ３１Ｐと、コア３１３、コア３１４、及びローカルメモリ３２２を含むＣＰＵチップ３１Ｑとを含む。コア３１ｎは、同一チップ内に搭載されたローカルメモリ３２ｎ、及び共有メモリ４２に直接アクセスすることができる。
【００４９】
また、物理マシン３０Ａは、不揮発性の記憶部７１と、通信Ｉ／Ｆ７２と、Ｒ／Ｗ部７３とを備える。ＣＰＵチップ３１Ｐ、３１Ｑ、記憶部７１、通信Ｉ／Ｆ７２、及びＲ／Ｗ部７３は、バスを介して互いに接続される。
【００５０】
記憶部７１は、ＨＤＤ、ＳＳＤ、フラッシュメモリ等によって実現できる。記憶媒体としての記憶部７１には、仮想マシンのライブマイグレーション時に実行される制御プログラム８０Ａが記憶されている。制御プログラム８０Ａは、共有メモリ制御プロセス８６Ａと、アドレスマップ変換プロセス８８とを有する。
【００５１】
制御ドメインとしての仮想マシン３５に割り当てられたコア３１１、３１２は、制御プログラム８０Ａを記憶部７１から読み出してローカルメモリ３２１に展開し、制御プログラム８０Ａが有するプロセスを順次実行する。コア３１１、３１２は、共有メモリ制御プロセス８６Ａを実行することで、図１に示す共有メモリ制御部１６Ａとして動作する。また、コア３１１、３１２は、アドレスマップ変換プロセス８８を実行することで、図１に示すアドレスマップ変換部１８として動作する。
【００５２】
共有メモリ４２は、物理マシン２０Ａ及び物理マシン３０Ａの各々とインターコネクトで接続される記憶媒体で実現することができる。例えば、共有メモリ４２は、物理マシン２０Ａ及び物理マシン３０Ａとは別の物理マシン４０内の記憶領域で構成することができる。また、共有メモリ４２は、物理マシン２０Ａ及び物理マシン３０Ａとは別の外部記憶装置、可搬型記憶媒体等であってもよい。
【００５３】
なお、制御プログラム６０Ａ、８０Ａにより実現される機能は、例えば半導体集積回路、より詳しくはApplication Specific Integrated Circuit（ＡＳＩＣ）等で実現することも可能である。
【００５４】
次に、第１実施形態に係る制御システム１０Ａの作用について説明する。まず、図４を参照して、制御システム１０Ａで実行されるライブマイグレーション処理全体の概要について説明する。
【００５５】
まず、ライブマイグレーション開始前の状態Ａでは、ライブマイグレーションの対象である仮想マシン２７は、仮想マシン２７に割り当てられた物理マシン２０Ａのローカルメモリ２２２上で動作している。
【００５６】
ライブマイグレーションが開始されると、ステップＳ１１で、ハイパーバイザー２３が、ローカルメモリ２２２に記憶されたデータを、エントリ毎に共有メモリ４２へコピーする。そして、ステップＳ１２で、アドレスマップ変換部１４が、コピーが完了したエントリの物理アドレスをコピー先の共有メモリ４２のアドレスへ変更する。これにより、コピー完了後のエントリが示すアドレスに対する更新処理は、共有メモリ４２に対して行われることになる。
【００５７】
全エントリについて、ローカルメモリ２２２から共有メモリ４２へのデータのコピーが完了すると、仮想マシン２７は、共有メモリ４２上で動作する状態Ｂとなる。この状態で、マイグレーション元の仮想マシン２７から、マイグレーション先の仮想マシン３７へ制御を切り替える。このとき、マイグレーション先のハイパーバイザー３３が参照するアドレス変換テーブル３４は、マイグレーション元のアドレス変換テーブル２４と同じである。したがって、マイグレーション先の仮想マシン３７も、共有メモリ４２上で動作する状態Ｂとなる。
【００５８】
次に、ステップＳ１３で、ハイパーバイザー３３が、共有メモリ４２に記憶されたデータを、エントリ毎にローカルメモリ３２２へコピーする。そして、ステップＳ１４で、アドレスマップ変換部１８が、コピーが完了したエントリの物理アドレスをコピー先のローカルメモリ３２２のアドレスへ変更する。これにより、コピー完了後のエントリが示すアドレスに対する更新処理は、ローカルメモリ３２２に対して行われることになる。
【００５９】
全エントリについて、共有メモリ４２からローカルメモリ３２２へのデータのコピーが完了すると、仮想マシン３７は、ローカルメモリ３２２上で動作する状態Ｃとなる。
【００６０】
このように、共有メモリ４２をライブマイグレーション中のメモリ転送経路として使用することで、仮想マシンをサスペンドすることなく、ライブマイグレーションを実施することができる。
【００６１】
次に、図５を参照して、ライブマイグレーション時に、マイグレーション元の物理マシン２０Ａで実行されるマイグレーション元処理、及びマイグレーション先の物理マシン３０Ａで実行されるマイグレーション先処理について、より詳細に説明する。
【００６２】
ライブマイグレーションの開始が指示されると、ステップＳ２１で、共有メモリ制御部１２Ａが、仮想マシン２７に割り当てられているローカルメモリ２２２と同じサイズのメモリ領域を共有メモリ４２上で取得する。
【００６３】
次に、ステップＳ２２で、共有メモリ制御部１２Ａが、取得した共有メモリ４２のメモリ領域の物理アドレスをハイパーバイザー２３に通知し、ローカルメモリ２２２から共有メモリ４２へのデータのコピーを依頼する。
【００６４】
次に、ステップＳ３０で、共有メモリ制御部１２Ａは、ハイパーバイザー２３が、ダーティページトラッキング機能を利用して実行する「共有メモリへのコピー処理」を待ち合わせる。
【００６５】
ここで、図６を参照して、共有メモリへのコピー処理について説明する。
【００６６】
ステップＳ３１で、アドレスマップ変換部１４は、アドレス変換テーブル２４に含まれるエントリのうち、共有メモリ制御部１２Ａから通知された物理アドレスに対応するエントリを１つ選択する。例えば、図２に示すアドレス変換テーブル２４から、図７に示すように、Ｎｏ．３のエントリが選択されたとする（図７の（１））。Ｎｏ．３のエントリは、図７の下段左図に示すように、マイグレーション元の物理マシン２０Ａのローカルメモリ２２２の物理アドレス「ＰＡ３」で示されるブロックに対応するものとする。
【００６７】
次に、ステップＳ３２で、アドレスマップ変換部１４が、アドレス変換テーブル２４において、選択されたエントリの属性を、読み込みのみを許可する属性「ＲＥＡＤ」に変更する（図７の（２））。
【００６８】
次に、ステップＳ３３で、ハイパーバイザー２３は、選択されたエントリに対応するローカルメモリ２２２のデータの共有メモリ４２へのコピーを開始する（図７の（３））。
【００６９】
次に、ステップＳ３４で、ハイパーバイザー２３が、選択されたエントリに対応するローカルメモリ２２２のブロック、すなわちデータをコピー中のブロックに対して、コア２１３又は２１４からのアクセスがあったか否かを判定する。アクセスがあった場合は、処理はステップＳ３５へ移行し、アクセスがない場合には、処理はステップＳ３７へ移行する。
【００７０】
ステップＳ３５では、コア２１３又は２１４からのアクセスが、ＲＥＡＤ命令か否かで処理が分岐し、ＲＥＡＤ命令の場合には、次のステップＳ３６で、ローカルメモリ２２２に対してＲＥＡＤ命令が実行される。
【００７１】
次に、ステップＳ３７で、ハイパーバイザー２３が、上記ステップＳ３３で開始したコピーが完了したか否かを判定する。コピーが完了していない場合には、処理はステップＳ３４に戻り、コピーが完了した場合には、処理はステップＳ３８へ移行する。
【００７２】
ステップＳ３８では、アドレスマップ変換部１４が、上記ステップＳ３１で選択したエントリの物理アドレスを、ローカルメモリ２２２のアドレスからコピー先の共有メモリ４２のアドレスに変更する（図７の（４））。また、アドレスマップ変換部１４が、該当のエントリの属性を、「ＲＥＡＤ」から、読み込み及び書き込みを許可する属性「ＲＥＡＤ／ＷＲＩＴＥ」に変更する（図７の（５））。
【００７３】
一方、ステップＳ３５が否定判定の場合、コア２１３又は２１４からのアクセスは、ＷＲＩＴＥ命令である。この場合、ステップＳ３９で、属性が「ＲＥＡＤ」であるエントリが示すローカルメモリ２２２のブロックに対するＷＲＩＴＥ命令により、トラップが発生する。このトラップにより、ハイパーバイザー２３は、コピー中のエントリが示すローカルメモリ２２２のブロックに対するＷＲＩＴＥ命令が発行されたことを検出する。
【００７４】
そこで、ハイパーバイザー２３は、ＷＲＩＴＥ命令を一時的に抑止し、ステップＳ４０で、該当のエントリについてのコピーが完了するまで待機する。コピーが完了すると、次のステップＳ４１で、アドレスマップ変換部１４が、上記ステップＳ３８と同様に、選択したエントリの物理アドレスを、ローカルメモリ２２２のアドレスからコピー先の共有メモリ４２のアドレスに変更する（図７の（４））。また、アドレスマップ変換部１４が、該当のエントリの属性を、「ＲＥＡＤ」から「ＲＥＡＤ／ＷＲＩＴＥ」に変更する（図７の（５））。
【００７５】
次に、ステップＳ４２で、ハイパーバイザー２３が、トラップ発生により一時抑止していたＷＲＩＴＥ命令をリトライ（再実行）させる。リトライされるＷＲＩＴＥ命令は、アドレスマップ変換部１４によって書き換えられたアドレス変換テーブル２４にしたがって、共有メモリ４２に対して実行される。
【００７６】
次に、ステップＳ４３で、アドレスマップ変換部１４が、共有メモリ制御部１２Ａから通知された物理アドレスに対応するエントリの全てについて、共有メモリ４２へのコピーが完了したか否かを判定する。コピーを未実施のエントリが存在する場合には、処理はステップＳ３１に戻り、コピー未実施のエントリを選択して、ステップＳ３２〜Ｓ４２の処理を繰り返す。全エントリについてコピーが完了した場合には、共有メモリへのコピー処理は終了し、処理は図５に示すマイグレーション元処理に戻る。全エントリについてコピーが完了すると、アドレス変換テーブル２４は、例えば、図８の上段に示す状態から、中段に示す状態に変換される。
【００７７】
上記の共有メモリへのコピー処理のステップＳ３２〜Ｓ４２の処理は、エントリ毎に実行されるため、アドレス変換テーブル２４において現在選択されていないエントリについては、属性が「ＲＥＡＤ／ＷＲＩＴＥ」である。したがって、コア２１３又は２１４からのアクセスは、ＲＥＡＤ命令であってもＷＲＩＴＥ命令であってもトラップされることなく実行される。この際、まだ共有メモリ４２へのコピーが完了していないエントリについては、ローカルメモリ２２２の該当のブロックに対してアクセスされる。一方、共有メモリ４２へのコピーが完了している場合には、ステップＳ３８又はＳ４１で、物理アドレスが共有メモリ４２のアドレスに書き換えられているため、共有メモリ４２の該当のブロックに対してアクセスされる。すなわち、コピー中のブロックに対してのみダーティページトラッキングが行われることに相当する。
【００７８】
図５に示すマイグレーション元処理に戻る。ステップＳ５１で、マイグレーション元の仮想化管理ソフトウェア２６が、マイグレーション先の仮想化管理ソフトウェア３６へ、上記ステップＳ３０の処理後のアドレス変換テーブル２４を送信し、仮想マシンの制御の切替を通知する。マイグレーション先の仮想化管理ソフトウェア３６は、受信したアドレス変換テーブル２４を、自装置のハイパーバイザー３３が参照するアドレス変換テーブル３４に設定し、共有メモリ４２上で仮想マシン３７を動作させる。これにより、仮想マシンの制御が、マイグレーション元からマイグレーション先に切り替えられる。
【００７９】
次に、マイグレーション先処理のステップＳ５２で、共有メモリ制御部１６Ａが、ハイパーバイザー３３に、共有メモリ４２からローカルメモリ３２２へのデータのコピーを依頼する。
【００８０】
次に、ステップＳ６０で、共有メモリ制御部１６Ａは、ハイパーバイザー３３が、ダーティページトラッキング機能を利用して実行する「共有メモリからのコピー処理」を待ち合わせる。
【００８１】
ここで、図９を参照して、共有メモリからのコピー処理について説明する。
【００８２】
ステップＳ６１で、アドレスマップ変換部１８は、共有メモリ４２からローカルメモリ３２２へのデータのコピーが必要なブロックに対応するエントリを、アドレス変換テーブル３４から１つ選択する。コピーが必要なブロックに対応するエントリは、マイグレーション元から取得したアドレス変換テーブル２４に基づいて、マイグレーション先のアドレス変換テーブル３４に設定したエントリである。例えば、図８中段に示すアドレス変換テーブル３４から、図１０に示すように、Ｎｏ．３のエントリが選択されたとする（図１０の（１））。Ｎｏ．３のエントリは、図１０の下段左図に示すように、共有メモリ４２の物理アドレス「ＳＨＭ３」で示されるブロックに対応するものとする。
【００８３】
次に、ステップＳ６２で、アドレスマップ変換部１８が、アドレス変換テーブル３４において、選択されたエントリの属性を「ＲＥＡＤ」に変更する（図１０の（２））。
【００８４】
次に、ステップＳ６３で、ハイパーバイザー３３は、選択されたエントリに対応する共有メモリ４２のデータのローカルメモリ３２２へのコピーを開始する（図１０の（３））。
【００８５】
次に、ステップＳ６４で、ハイパーバイザー２３が、選択されたエントリに対応するローカルメモリ２２２のブロックに対して、コア３１３又は３１４からのアクセスがあったか否かを判定する。アクセスがあった場合は、処理はステップＳ６５へ移行し、アクセスがない場合には、処理はステップＳ６７へ移行する。
【００８６】
ステップＳ６５では、コア３１３又は３１４からのアクセスが、ＲＥＡＤ命令か否かで処理が分岐し、ＲＥＡＤ命令の場合には、次のステップＳ６６で、ローカルメモリ２２２に対してＲＥＡＤ命令が実行される。
【００８７】
次に、ステップＳ６７で、ハイパーバイザー２３が、選択されたエントリのコピーが完了したか否かを判定し、コピーが完了していない場合には、処理はステップＳ６４に戻り、コピーが完了した場合には、処理はステップＳ６８へ移行する。
【００８８】
ステップＳ６８では、アドレスマップ変換部１８が、上記ステップＳ６１で選択したエントリの物理アドレスを、共有メモリ４２のアドレスからコピー先のローカルメモリ３２２のアドレスに変更する（図１０の（４））。また、アドレスマップ変換部１８が、該当のエントリの属性を、「ＲＥＡＤ」から「ＲＥＡＤ／ＷＲＩＴＥ」に変更する（図１０の（５））。
【００８９】
一方、ステップＳ６５が否定判定、すなわち、ＷＲＩＴＥ命令の場合、ステップＳ６９で、属性が「ＲＥＡＤ」のエントリに対応するブロックに対するＷＲＩＴＥ命令によりトラップが発生する。そして、このトラップにより、ハイパーバイザー３３が、コピー中のエントリが示す共有メモリ４２のブロックに対するＷＲＩＴＥ命令が発行されたことを検出する。
【００９０】
そこで、ハイパーバイザー３３は、ＷＲＩＴＥ命令を一時的に抑止し、ステップＳ７０で、該当のエントリについてのコピーが完了するまで待機する。コピーが完了すると、次のステップＳ７１で、アドレスマップ変換部１８が、上記ステップＳ６８と同様に、選択したエントリの物理アドレスを、共有メモリ４２のアドレスからコピー先のローカルメモリ３２２のアドレスに変更する（図１０の（４））。また、アドレスマップ変換部１８が、該当のエントリの属性を、「ＲＥＡＤ」から「ＲＥＡＤ／ＷＲＩＴＥ」に変更する（図１０の（５））。
【００９１】
次に、ステップＳ７２で、ハイパーバイザー３３が、トラップ発生により一時抑止していたＷＲＩＴＥ命令をリトライさせる。
【００９２】
次に、ステップＳ７３で、アドレスマップ変換部１８が、アドレス変換テーブル３４においてコピーが必要な全エントリについて、ローカルメモリ３２２へのコピーが完了したか否かを判定する。コピーを未実施のエントリが存在する場合には、処理はステップＳ６１に戻り、コピー未実施のエントリを選択して、ステップＳ６２〜Ｓ７２の処理を繰り返す。全エントリについてコピーが完了した場合には、共有メモリからのコピー処理は終了し、処理は図５に示すマイグレーション先処理に戻る。全エントリについてコピーが完了すると、アドレス変換テーブル３４は、例えば、図８の中段に示す状態から、下段に示す状態に変換される。
【００９３】
次に、図５に示すマイグレーション先処理のステップＳ８１で、マイグレーション先の仮想化管理ソフトウェア３６は、共有メモリ４２からローカルメモリ３２２へのコピー完了を、マイグレーション元の仮想化管理ソフトウェア２６に通知する。そして、マイグレーション先処理は終了する。
【００９４】
この通知を受けて、マイグレーション元では、ステップＳ８２で、共有メモリ制御部１２Ａが、共有メモリ４２の使用が完了したと判断し、上記ステップＳ２１で取得した共有メモリ４２のメモリ領域を開放し、マイグレーション元処理は終了する。
【００９５】
以上説明したように、第１実施形態に係る制御システム１０Ａによれば、マイグレーション元の物理マシン及びマイグレーション先の物理マシンの両方からアクセス可能な共有メモリを用意する。そして、マイグレーション元のローカルメモリのデータを共有メモリにコピーすると共に、アクセス先を共有メモリに変更する。マイグレーション元の物理マシンは共有メモリにも直接アクセス可能であるため、コピーが完了したデータについては、共有メモリに対してアクセスを行うことができるため、仮想マシンをサスペンドさせる必要がない。また、マイグレーション元のローカルメモリから全てのデータが共有メモリへコピーされると、仮想マシンの制御をマイグレーション先へ切り換える。そして、共有メモリのデータをマイグレーション先のローカルメモリにコピーすると共に、アクセス先をマイグレーション先のローカルメモリに変更する。マイグレーション先の物理マシンは共有メモリにも直接アクセス可能であるため、コピーが完了していないデータについては、共有メモリに対してアクセスを行うことができるため、仮想マシンをサスペンドさせる必要がない。このように、マイグレーション元及び先の両方からアクセス可能な共有メモリを経由して、マイグレーション元のローカルメモリからマイグレーション先のローカルメモリへデータをコピーする。そのため、仮想マシンをサスペンドさせることなくライブマイグレーションを実施することができる。
【００９６】
仮想マシンをサスペンドさせることなくライブマイグレーションを実施することができることにより、物理マシンの保守作業などのために、その物理マシン上で稼動する仮想マシンによる業務を停止することなく、故障部品の交換などの保守作業が可能になる。
【００９７】
また、第１実施形態に係る制御システム１０Ａによれば、メモリ領域を複数に分割したブロック毎に、マイグレーション元のローカルメモリから共有メモリへのコピー、及びアドレス変換を行う。このため、コピー前のブロックについては、マイグレーション元のローカルメモリに対して、コピー後のブロックについては、共有メモリに対して、ＷＲＩＴＥ命令が実行される。共有メモリからマイグレーション先のローカルメモリへのコピー時においても同様で、コピー前のブロックについては、共有メモリに対して、コピー後のブロックについては、マイグレーション先のローカルメモリに対して、ＷＲＩＴＥ命令が実行される。また、コピー中のブロックに対するＷＲＩＴＥ命令が発行された場合には、コピーが完了するまでＷＲＩＴＥ命令を抑止した上で、コピー完了後にＷＲＩＴＥ命令をリトライする。したがって、同一ブロックについては、ローカルメモリと共有メモリ間のコピーは必ず１回で完了するため、ローカルメモリと共有メモリとでメモリ状態が同期するまでコピーを繰り返す等の処理は必要ない。
【００９８】
なお、コピー中のブロックに対するＷＲＩＴＥ命令が発行された場合に、コピーが完了するまでＷＲＩＴＥ命令を抑止させる処理は、ＯＳにより実行される仮想マシンのサスペンド処理に比べて簡易な処理であり、抑止時間も短時間である。また、メモリ領域を分割した各ブロックのサイズが小さいほど、各ブロックのコピー完了までの時間が短くなると共に、コピー中にそのブロックに対してＷＲＩＴＥ命令が発行される確率も低くなるため、ＷＲＩＴＥ命令の抑止による影響は小さくなる。例えば、各ブロックのサイズを、ＯＳにより管理可能なメモリの最小サイズ（例えば、４ｋＢや８ｋＢ）とすることができる。
【００９９】
また、第１実施形態に係る制御システム１０Ａによれば、ライブマイグレーション時に仮想マシンのサスペンドが必要ないため、ライブマイグレーションのオーバーヘッドの要因の一つであるダーティ率の検出も不要である。したがって、結果的にライブマイグレーション処理の高速化にも繋がる。
【０１００】
＜第２実施形態＞
次に、第２実施形態について説明する。第２実施形態では、マイグレーション元の物理マシンの物理メモリにノード間の共有メモリが設けられる場合について説明する。なお、第２実施形態に係る制御システムにおいて、第１実施形態に係る制御システム１０Ａと同一の部分については、同一符号を付して詳細な説明を省略する。
【０１０１】
図１１に、第２実施形態に係る制御システム１０Ｂの機能的な構成を、ハードウェア構成との関連も含めて概略的に示す。図１１に示すように、第２実施形態に係る制御システム１０Ｂは、マイグレーション元の物理マシン２０Ｂと、マイグレーション先の物理マシン３０Ｂとを含む。また、マイグレーション元の物理マシン２０Ｂの物理メモリの一部は、共有メモリ４２として利用される。図１１では、仮想マシン２７に割り当てられる物理メモリの一部が共有メモリ４２として利用される例を示している。
【０１０２】
マイグレーション元の仮想化管理ソフトウェア２６には、共有メモリ制御部１２Ｂが組み込まれている。共有メモリ制御部１２Ｂは、第１実施形態における共有メモリ制御部１２Ａと同様に、共有メモリ４２の取得及び開放等の制御を行う。
【０１０３】
また、共有メモリ制御部１２Ｂは、マイグレーション元の物理マシン２０Ｂに設けられた共有メモリ４２に対するアクセスを制御するためのメモリトークン４５ｎ（図１１では、ｎ＝２）を、共有メモリ毎に設定する。図１１では、共有メモリ４２に対して、メモリトークン４５２が設定されている例を示している。また、共有メモリ制御部１２Ｂは、メモリトークン４５ｎと対になるアクセストークン４６ｎ（図１１では、ｎ＝１，２，３，４）を生成し、メモリトークン４５ｎが設定された共有メモリ４２に対するアクセスを行う他のノードへ送信する。
【０１０４】
マイグレーション先の仮想化管理ソフトウェア３６には、共有メモリ制御部１６Ｂが組み込まれている。共有メモリ制御部１６Ｂは、第１実施形態における共有メモリ制御部１６Ａと同様に、ライブマイグレーション時における共有メモリ４２からローカルメモリ３２ｎへのデータのコピー完了を、マイグレーション元の共有メモリ制御部１２Ｂへ通知する。
【０１０５】
また、共有メモリ制御部１６Ｂは、共有メモリ４２へのアクセスに利用するアクセストークン４６ｎを取得し、共有メモリ４２へアクセスするコア３１ｎに対応付けて設定する。図１１では、共有メモリ４２に設定されたメモリトークン４５２と対になるアクセストークン４６１、４６２、４６３、及び４６４の各々が、マイグレーション先のコア３１１、３１２、３１３、及び３１４の各々に対応付けて設定された例を示している。
【０１０６】
各ノードは、自ノードに設けられた共有メモリにアクセスする場合には、アクセストークン４６ｎを必要とすることなく、直接アクセスが可能である。一方、他ノードに設けられた共有メモリ４２にアクセスする場合には、アクセストークン４６ｎが必要である。
【０１０７】
例えば、図１１では、仮想マシン２７に割り当てられたコア２１４は、自ノードに設けられた共有メモリ４２に対しては、アクセストークンを設定することなく、直接アクセス可能である（図１１の一点破線Ｉ）。また、他ノードである仮想マシン３７に割り当てられたコア３１４が、直接共有メモリ４２へアクセスするとする（図１１の一点破線Ｊ）。この場合、共有メモリ４２に設定されたメモリトークン４５２と対になるアクセストークン４６４を利用したアクセスではないため、アクセスが拒絶される。一方、コア３１４に、メモリトークン４５２と対になるアクセストークン４６４が設定され、コア３１４がアクセストークン４６４を利用して共有メモリ４２にアクセスするとする（図１１の二点破線Ｋ）。この場合、メモリトークン４５２とアクセストークン４６４とが対応するため、コア３１４から共有メモリ４２へのアクセスが許可される。
【０１０８】
なお、共有メモリ制御部１２Ｂは、開示の技術の第１制御部、共有メモリ制御部１６Ｂは、開示の技術の第２制御部の一例である。
【０１０９】
図１２に、第２実施形態に係る制御システム１０Ｂのハードウェア構成の概略図を示す。
【０１１０】
物理マシン２０Ｂは、コア２１１、コア２１２、及びローカルメモリ２２１を含むＣＰＵチップ２１Ｒと、コア２１３、コア２１４、ローカルメモリ２２２、及び共有メモリ４２を含むＣＰＵチップ２１Ｓとを含む。物理マシン２０Ｂは、不揮発性の記憶部５１と、通信Ｉ／Ｆ５２と、Ｒ／Ｗ部５３とを備える。ＣＰＵチップ２１Ｒ、２１Ｓ、記憶部５１、通信Ｉ／Ｆ５２、及びＲ／Ｗ部５３は、バスを介して互いに接続される。
【０１１１】
図１３を参照して、ＣＰＵチップ２１Ｒ、２１Ｓについてより詳細に説明する。各ＣＰＵチップは同一の構成であるため、ここでは、ＣＰＵチップ２１Ｓについて説明する。
【０１１２】
ＣＰＵチップ２１Ｒには、メモリ２２と、メモリトークンレジスタ４５と、二次キャッシュ８１と、コア２１３、２１４とが含まれる。メモリ２２の一部の領域はローカルメモリ２２２として利用され、他の一部の領域は共有メモリ４２として利用される。メモリトークンレジスタ４５には、共有メモリ４２に対応するメモリトークン４５２を示す値が設定される。なお、共有メモリ４２が複数のセグメントを有し、セグメント毎にアクセス可否を制御する場合には、メモリトークン４５ｎもセグメント毎に設定される。そこで、メモリトークンレジスタ４５は、セグメント毎のメモリトークン４５ｎを設定するために、予め複数用意されていてもよい。
【０１１３】
コア２１３には、ストランド毎に、命令キャッシュ及びデータキャッシュを含む一次キャッシュ８２と、命令制御部８３と、命令バッファ８４と、演算部８５と、レジスタ部８６と、アクセストークンレジスタ４６とが設けられる。命令制御部８３及び演算部８５は、各ストランドに共通して設けられる。アクセストークンレジスタ４６には、他ノードに設けられた共有メモリ４２にアクセスする際に必要なアクセストークン４６ｎを示す値が設定される。コア２１４の構成も同様である。
【０１１４】
メモリトークンレジスタ４５に設定されたメモリトークン、及びアクセストークンレジスタ４６に設定されたアクセストークンに基づいて、ハードウェアにより、共有メモリ４２へのアクセス可否を制御することができる。
【０１１５】
図１２に戻って、記憶部５１には、仮想マシンのライブマイグレーション時に実行される制御プログラム６０Ｂが記憶されている。制御プログラム６０Ｂは、共有メモリ制御プロセス６２Ｂと、アドレスマップ変換プロセス６４とを有する。
【０１１６】
制御ドメインとしての仮想マシン２５に割り当てられたコア２１１、２１２は、制御プログラム６０Ｂを記憶部５１から読み出してローカルメモリ２２１に展開し、制御プログラム６０Ｂが有するプロセスを順次実行する。コア２１１、２１２は、共有メモリ制御プロセス６２Ｂを実行することで、図１１に示す共有メモリ制御部１２Ｂとして動作する。アドレスマップ変換プロセス６４については、第１実施形態と同様である。
【０１１７】
物理マシン３０Ｂは、コア３１１、コア３１２、及びローカルメモリ３２１を含むＣＰＵチップ３１Ｒと、コア３１３、コア３１４、及びローカルメモリ３２２を含むＣＰＵチップ３１Ｓとを含む。ＣＰＵチップ３１Ｒ、３１Ｓの各々の構成は、図１３に示すＣＰＵチップ２１Ｓの構成と同様である。また、物理マシン３０Ｂは、不揮発性の記憶部７１と、通信Ｉ／Ｆ７２と、Ｒ／Ｗ部７３とを備える。ＣＰＵチップ３１Ｒ、３１Ｓ、記憶部７１、通信Ｉ／Ｆ７２、及びＲ／Ｗ部７３は、バスを介して互いに接続される。
【０１１８】
記憶部７１には、仮想マシンのライブマイグレーション時に実行される制御プログラム８０Ｂが記憶されている。制御プログラム８０Ｂは、共有メモリ制御プロセス８６Ｂと、アドレスマップ変換プロセス８８とを有する。
【０１１９】
制御ドメインとしての仮想マシン３５に割り当てられたコア３１１、３１２は、制御プログラム８０Ｂを記憶部７１から読み出してローカルメモリ３２１に展開し、制御プログラム８０Ｂが有するプロセスを順次実行する。コア３１１、３１２は、共有メモリ制御プロセス８６Ｂを実行することで、図１１に示す共有メモリ制御部１６Ｂとして動作する。アドレスマップ変換プロセス８８については、第１実施形態と同様である。
【０１２０】
なお、制御プログラム６０Ｂ、８０Ｂにより実現される機能は、例えば半導体集積回路、より詳しくはＡＳＩＣ等で実現することも可能である。
【０１２１】
次に、図１４に示すマイグレーション元処理及びマイグレーション先処理を参照して、第２実施形態に係る制御システム１０Ｂの作用について説明する。なお、第１実施形態におけるマイグレーション元処理及びマイグレーション先処理（図５）と同様の処理については、同一符号を付して詳細な説明を省略する。
【０１２２】
ライブマイグレーションの開始が指示されると、ステップＳ２１で、共有メモリ制御部１２Ｂが、物理マシン２０Ｂの物理メモリ上に、共有メモリ４２のメモリ領域を取得する。
【０１２３】
次に、ステップＳ１０１で、共有メモリ制御部１２Ｂが、取得した共有メモリ４２に対応するメモリトークン４５ｎを示す値を、取得した共有メモリ４２に対応するメモリトークンレジスタ４５に設定する。
【０１２４】
次に、ステップＳ１０２で、共有メモリ制御部１２Ｂが、メモリトークン４５ｎと対になるアクセストークン４６ｎを生成し、アクセストークン４６ｎを、マイグレーション先の仮想化管理ソフトウェア３６へ送信する。
【０１２５】
次に、マイグレーション先処理のステップＳ１０３で、マイグレーション先の共有メモリ制御部１６Ｂが、マイグレーション元から送信されたアクセストークン４６ｎを取得する。
【０１２６】
一方、マイグレーション元処理のステップＳ２２では、共有メモリ制御部１２Ｂが、ハイパーバイザー２３へ、ローカルメモリ２２２から共有メモリ４２へのデータのコピーを依頼する。
【０１２７】
次に、ステップＳ３０で、共有メモリ制御部１２Ｂは、ハイパーバイザー２３が、ダーティページトラッキング機能を利用して実行する「共有メモリへのコピー処理（図６）」を待ち合わせる。
【０１２８】
ローカルメモリ２２２から共有メモリ４２へのコピーが全エントリについて完了すると、処理は次のステップＳ１０４へ移行する。ステップＳ１０４で、共有メモリ制御部１２Ｂが、ローカルメモリ２２２から共有メモリ４２へのコピー完了を、マイグレーション先の仮想化管理ソフトウェア３６へ通知する。
【０１２９】
この通知を受けて、マイグレーション先処理のステップＳ１０５では、共有メモリ制御部１６Ｂが、上記ステップＳ１０３で取得したアクセストークン４６ｎを、対応するコアの３１ｎのアクセストークンレジスタ４６に設定する。例えば、アクセストークン４６１、４６２、４６３、及び４６４の各々が、仮想マシン３７に割り当てられたコア３１１、３１２、３１３、及び３１４の各々に対応するアクセストークンレジスタ４６に設定される。これにより、設定されたアクセストークン４６ｎを利用して、コア３１ｎから共有メモリ４２へのアクセスが可能になる。
【０１３０】
次に、ステップＳ１０６で、共有メモリ制御部１６Ｂが、アクセストークンの設定完了を、マイグレーション元の仮想化管理ソフトウェア２６へ通知する。
【０１３１】
この通知を受けて、マイグレーション元処理のステップＳ５１で、マイグレーション元の仮想化管理ソフトウェア２６が、仮想マシンの制御を、マイグレーション元からマイグレーション先に切り替える。
【０１３２】
次に、マイグレーション先処理のステップＳ５２で、共有メモリ制御部１６Ｂが、ハイパーバイザー３３に、共有メモリ４２からローカルメモリ３２２へのデータのコピーを依頼する。そして、次のステップＳ６０で、共有メモリ制御部１６Ｂは、ハイパーバイザー３３が、ダーティページトラッキング機能を利用して実行する「共有メモリからのコピー処理（図９）」を待ち合わせる。
【０１３３】
共有メモリ４２からローカルメモリ３２２へのコピーが全エントリについて完了すると、処理は次のステップＳ１０７へ移行する。ステップＳ１０７では、共有メモリ制御部１６Ｂが、共有メモリ４２へアクセスするためにアクセストークンレジスタ４６に設定したアクセストークン４６ｎをクリアする。
【０１３４】
次に、ステップＳ８１で、マイグレーション先の仮想化管理ソフトウェア３６が、共有メモリ４２からローカルメモリ３２２へのコピー完了を、マイグレーション元の仮想化管理ソフトウェア２６に通知し、マイグレーション先処理は終了する。
【０１３５】
この通知を受けて、マイグレーション元では、ステップＳ１０８で、共有メモリ制御部１２Ｂが、共有メモリ４２に対応するメモリトークンレジスタ４５に設定したメモリトークン４５ｎをクリアする。
【０１３６】
次に、ステップＳ８２で、共有メモリ制御部１２Ｂが、上記ステップＳ２１で取得した共有メモリ４２を開放し、マイグレーション元処理は終了する。
【０１３７】
以上説明したように、第２実施形態に係る制御システム１０Ｂによれば、メモリトークン及びアクセストークンを利用して、ノード間の共有メモリへのアクセス可否を制御する。これにより、マイグレーション先の物理マシンからは直接アクセスできないマイグレーション元の物理メモリに共有メモリを設けることができる。この場合も、第１実施形態と同様に、仮想マシンをサスペンドさせることなくライブマイグレーションを実施することができる。
【０１３８】
なお、上記第２実施形態では、マイグレーション元の物理マシンに共有メモリを設ける場合について説明したが、マイグレーション先の物理マシンに共有メモリを設けてもよい。この場合を、第２実施形態の変形例に係る制御システム１０Ｃとし、図１５に、制御システム１０Ｃの機能的な構成を、ハードウェア構成との関連も含めて概略的に示す。
【０１３９】
図１５に示すように、第２実施形態の変形例に係る制御システム１０Ｃは、マイグレーション元の物理マシン２０Ｃと、マイグレーション先の物理マシン３０Ｃとを含む。また、マイグレーション先の物理マシン２０Ｃの物理メモリの一部は、共有メモリ４２として利用される。図１５では、仮想マシン３７に割り当てられる物理メモリの一部が共有メモリ４２として利用される例を示している。
【０１４０】
この場合、例えば、仮想マシン３７に割り当てられたコア３１４は、自ノードに設けられた共有メモリ４２に対しては、アクセストークンを設定することなく、直接アクセス可能である（図１５の一点破線Ｌ）。また、他ノードである仮想マシン２７に割り当てられたコア２１４が、直接共有メモリ４２へアクセスするとする（図１５の一点破線Ｍ）。この場合、共有メモリ４２に設定されたメモリトークン４５２と対になるアクセストークン４６４を利用したアクセスではないため、アクセスが拒絶される。一方、コア２１４に、メモリトークン４５２と対になるアクセストークン４６４が設定され、コア２１４がアクセストークン４６４を利用して共有メモリ４２にアクセスするとする（図１５の二点破線Ｎ）。この場合、メモリトークン４５２とアクセストークン４６４とが対応するため、コア３１４から共有メモリ４２へのアクセスが許可される。
【０１４１】
次に、図１６に示すマイグレーション元処理及びマイグレーション先処理を参照して、第２実施形態の変形例に係る制御システム１０Ｃの作用について説明する。なお、第１実施形態におけるマイグレーション元処理及びマイグレーション先処理（図５）と同様の処理については、同一符号を付して詳細な説明を省略する。
【０１４２】
ライブマイグレーションの開始が指示されると、ステップＳ１１１で、マイグレーション元の仮想化管理ソフトウェア２６が、マイグレーション先の仮想化管理ソフトウェア３６に、ライブマイグレーションの開始を通知する。
【０１４３】
この通知を受けて、マイグレーション先処理のステップＳ１１２で、マイグレーション先の共有メモリ制御部１６Ｃが、物理マシン３０Ｃの物理メモリ上に、共有メモリ４２のメモリ領域を取得する。
【０１４４】
次に、ステップＳ１１３で、共有メモリ制御部１６Ｃが、取得した共有メモリ４２に対応するメモリトークン４５ｎを示す値を、取得した共有メモリ４２に対応するメモリトークンレジスタ４５に設定する。
【０１４５】
次に、ステップＳ１１４で、共有メモリ制御部１６Ｃが、メモリトークン４５ｎと対になるアクセストークン４６ｎを生成し、アクセストークン４６ｎを、マイグレーション元の仮想化管理ソフトウェア２６へ送信する。
【０１４６】
次に、マイグレーション元処理のステップＳ１１５で、マイグレーション元の共有メモリ制御部１２Ｃが、マイグレーション先から送信されたアクセストークン４６ｎを取得し、対応するコアの２１ｎのアクセストークンレジスタ４６に設定する。例えば、アクセストークン４６１、４６２、４６３、及び４６４の各々が、仮想マシン２７に割り当てられたコア２１１、２１２、２１３、及び２１４の各々に対応するアクセストークンレジスタ４６に設定される。これにより、設定されたアクセストークン４６ｎを利用して、コア２１ｎから共有メモリ４２へのアクセスが可能になる。
【０１４７】
次に、ステップＳ２２で、共有メモリ制御部１２Ｃが、ハイパーバイザー２３へ、ローカルメモリ２２２から共有メモリ４２へのデータのコピーを依頼する。そして、次のステップＳ３０で、共有メモリ制御部１２Ｃは、ハイパーバイザー２３が、ダーティページトラッキング機能を利用して実行する「共有メモリへのコピー処理（図６）」を待ち合わせる。
【０１４８】
ローカルメモリ２２２から共有メモリ４２へのコピーが全エントリについて完了すると、次のステップＳ５１で、マイグレーション元の仮想化管理ソフトウェア２６が、仮想マシンの制御を、マイグレーション元からマイグレーション先に切り替える。
【０１４９】
次に、マイグレーション先処理のステップＳ５２で、共有メモリ制御部１６Ｃが、ハイパーバイザー３３に、共有メモリ４２からローカルメモリ３２２へのデータのコピーを依頼する。そして、次のステップＳ６０で、共有メモリ制御部１６Ｃは、ハイパーバイザー３３が、ダーティページトラッキング機能を利用して実行する「共有メモリからのコピー処理（図９）」を待ち合わせる。
【０１５０】
共有メモリ４２からローカルメモリ３２２へのコピーが全エントリについて完了すると、処理はステップＳ８１へ移行する。ステップＳ８１では、マイグレーション先の仮想化管理ソフトウェア３６が、共有メモリ４２からローカルメモリ３２２へのコピー完了を、マイグレーション元の仮想化管理ソフトウェア２６に通知する。
【０１５１】
この通知を受けて、ステップＳ１０８で、マイグレーション元の共有メモリ制御部１２Ｃが、共有メモリ４２へアクセスするためにアクセストークンレジスタ４６に設定したアクセストークン４６ｎをクリアし、マイグレーション元処理は終了する。
【０１５２】
一方、マイグレーション先では、次のステップＳ１１７で、共有メモリ制御部１６Ｃが、共有メモリ４２に対応するメモリトークンレジスタ４５に設定したメモリトークン４５ｎをクリアする。次に、ステップＳ１１８で、共有メモリ制御部１６Ｃが、上記ステップＳ１１２で取得した共有メモリ４２を開放し、マイグレーション先処理は終了する。
【０１５３】
以上説明したように、マイグレーション先の物理マシンの物理メモリに共有メモリを設けた場合でも、第２実施形態と同様に、開示の技術を適用することができる。
【０１５４】
なお、共有メモリ制御部１２Ｃは、開示の技術の第１制御部、共有メモリ制御部１６Ｃは、開示の技術の第２制御部の一例である。
【０１５５】
また、上記各実施形態では、マイグレーション元のローカルメモリから、共有メモリを経由して、マイグレーション先のローカルメモリへデータをコピーする場合について説明したが、これに限定されない。マイグレーション元の仮想マシンが、外部の共有メモリ又はマイグレーション元に設けられた共有メモリ上で稼動している場合にも、開示の技術を適用することができる。この場合、第１及び第２実施形態において、マイグレーション元のローカルメモリから共有メモリへの全エントリについてのコピー完了以降の処理を実行すればよい。また、マイグレーション先の仮想マシンを共有メモリ上でレジュームする場合にも、開示の技術を適用することができる。この場合、全エントリについて、外部の共有メモリ又はマイグレーション先に設けられた共有メモリへのコピーが完了した地点で、ライブマイグレーションを終了すればよい。
【０１５６】
また、上記では、開示の技術に係る制御プログラムの一例である制御プログラム６０Ａ、８０Ａ、６０Ｂ、８０Ｂが記憶部５１、７１に予め記憶（インストール）されている態様を説明したが、これに限定されない。開示の技術に係る制御プログラムは、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、ＵＳＢメモリ等の記憶媒体に記憶された形態で提供することも可能である。
【０１５７】
以上の各実施形態に関し、更に以下の付記を開示する。
【０１５８】
（付記１）
仮想マシンを第１物理マシンから第２物理マシンへ移行させる処理をコンピュータに実行させる制御プログラムであって、
前記仮想マシンに割り当てられた前記第１物理マシンの第１ローカルメモリに記憶されたデータを、前記第１物理マシン及び前記第２物理マシンの両方からアクセス可能な共有メモリにコピーすると共に、コピーが完了したデータに前記仮想マシンからアクセスする際の物理アドレスを、前記第１ローカルメモリから前記共有メモリのアドレスに変換し、
前記第１ローカルメモリの全データについて、前記共有メモリへのコピーが完了すると、前記仮想マシンの制御を前記第１物理マシンから前記第２物理マシンに切り換え、
前記共有メモリに記憶されたデータを、前記仮想マシンに割り当てられた前記第２物理マシンの第２ローカルメモリにコピーすると共に、コピーが完了したデータに前記仮想マシンからアクセスする際の物理アドレスを、前記共有メモリから前記第２ローカルメモリのアドレスに変換する
ことを含む処理を前記コンピュータに実行させる制御プログラム。
【０１５９】
（付記２）
前記第１ローカルメモリから前記共有メモリへのデータのコピー中に、該データへの書き込み命令が行われた場合には、該書き込み命令の実行を、該データの前記共有メモリへのコピーが完了するまで待機させ、コピー完了後に、前記共有メモリにコピーされたデータに対して前記書き込み命令を実行させ、
前記共有メモリから前記第２ローカルメモリへのデータのコピー中に、該データへの書き込み命令が行われた場合には、該書き込み命令の実行を、該データの前記第２ローカルメモリへのコピーが完了するまで待機させ、コピー完了後に、前記第２ローカルメモリにコピーされたデータに対して前記書き込み命令を実行さる
付記１に記載の制御プログラム。
【０１６０】
（付記３）
前記仮想マシンに割り当てられた前記第１ローカルメモリ、前記第２ローカルメモリ、及び前記共有メモリの各々の領域を複数に分割したブロック毎に、前記第１ローカルメモリから前記共有メモリへのデータのコピー、前記第１ローカルメモリから前記共有メモリへの物理アドレスの変換、前記共有メモリから前記第２ローカルメモリへのデータのコピー、及び前記共有メモリから前記第２ローカルメモリへの物理アドレスの変換を行う付記１又は付記２に記載の制御プログラム。
【０１６１】
（付記４）
前記ブロックの各々のサイズを、前記第１物理マシン及び前記第２物理マシンのオペレーションシステムが管理可能な最小サイズとする付記３に記載の制御プログラム。
【０１６２】
（付記５）
前記共有メモリを、前記第１物理マシン及び前記第２物理マシン以外の記憶領域に設ける付記１〜付記４のいずれか１項に記載の制御プログラム。
【０１６３】
（付記６）
前記共有メモリを、前記第１物理マシン又は前記第２物理マシンが備える記憶領域に設ける付記１〜付記４のいずれか１項に記載の制御プログラム。
【０１６４】
（付記７）
前記第１物理マシンが備える記憶領域に前記共有メモリが設けられた場合、
前記第１物理マシンに、前記共有メモリに対応するメモリトークンを設定し、
前記第２物理マシンに、前記メモリトークンに対応し、かつ前記共有メモリにアクセスするためのアクセストークンを設定する
付記６に記載の制御プログラム。
【０１６５】
（付記８）
前記第２物理マシンが備える記憶領域に前記共有メモリが設けられた場合、
前記第２物理マシンに、前記共有メモリに対応するメモリトークンを設定し、
前記第１物理マシンに、前記メモリトークンに対応し、かつ前記共有メモリにアクセスするためのアクセストークンを設定する
付記６に記載の制御プログラム。
【０１６６】
（付記９）
仮想マシンを第１物理マシンから第２物理マシンへ移行させる制御システムであって、
前記仮想マシンに割り当てられた前記第１物理マシンの第１ローカルメモリに記憶されたデータを、前記第１物理マシン及び前記第２物理マシンの両方からアクセス可能な共有メモリにコピーする処理を前記第１物理マシンのハイパーバイザーに実行させる第１制御部と、
前記第１ローカルメモリから前記共有メモリへのコピーが完了したデータに前記仮想マシンからアクセスする際の物理アドレスを、前記第１ローカルメモリから前記共有メモリのアドレスに変換する第１変換部と、
前記第１ローカルメモリの全データについて、前記共有メモリへのコピーが完了し、前記ハイパーバイザーにより前記仮想マシンの制御が前記第１物理マシンから前記第２物理マシンに切り換えられると、前記共有メモリに記憶されたデータを、前記仮想マシンに割り当てられた前記第２物理マシンの第２ローカルメモリにコピーする処理を前記第２物理マシンのハイパーバイザーに実行させる第２制御部と、
前記共有メモリから前記第２ローカルメモリへのコピーが完了したデータに前記仮想マシンからアクセスする際の物理アドレスを、前記共有メモリから前記第２ローカルメモリのアドレスに変換する第２変換部と、
を含む制御システム。
【０１６７】
（付記１０）
前記第１制御部は、前記第１物理マシンのハイパーバイザーに、前記第１ローカルメモリから前記共有メモリへのデータのコピー中に、該データへの書き込み命令が行われた場合には、該書き込み命令の実行を、該データの前記共有メモリへのコピーが完了するまで待機させ、コピー完了後に、前記共有メモリにコピーされたデータに対して前記書き込み命令を実行させ、
前記第２制御部は、前記第２物理マシンのハイパーバイザーに、前記共有メモリから前記第２ローカルメモリへのデータのコピー中に、該データへの書き込み命令が行われた場合には、該書き込み命令の実行を、該データの前記第２ローカルメモリへのコピーが完了するまで待機させ、コピー完了後に、前記第２ローカルメモリにコピーされたデータに対して前記書き込み命令を実行さる
付記９に記載の制御システム。
【０１６８】
（付記１１）
前記仮想マシンに割り当てられた前記第１ローカルメモリ、前記第２ローカルメモリ、及び前記共有メモリの各々の領域を複数に分割したブロック毎に、
前記第１制御部は、前記第１物理マシンのハイパーバイザーに、前記第１ローカルメモリから前記共有メモリへデータをコピーする処理を実行させ、
前記第１変換部は、前記第１ローカルメモリから前記共有メモリへ物理アドレスを変換し、
前記第２制御部は、前記第２物理マシンのハイパーバイザーに、前記共有メモリから前記第２ローカルメモリへデータコピーする処理を実行させ、
前記第２変換部は、前記共有メモリから前記第２ローカルメモリへ物理アドレスを変換する
付記９又は付記１０に記載の制御システム。
【０１６９】
（付記１２）
前記ブロックの各々のサイズを、前記第１物理マシン及び前記第２物理マシンのオペレーションシステムが管理可能な最小サイズとする付記１１に記載の制御システム。
【０１７０】
（付記１３）
前記共有メモリを、前記第１物理マシン及び前記第２物理マシン以外の記憶領域に設ける付記９〜付記１２のいずれか１項に記載の制御システム。
【０１７１】
（付記１４）
前記共有メモリを、前記第１物理マシン又は前記第２物理マシンが備える記憶領域に設ける付記９〜付記１２のいずれか１項に記載の制御システム。
【０１７２】
（付記１５）
前記第１物理マシンが備える記憶領域に前記共有メモリが設けられた場合、
前記第１制御部は、前記第１物理マシンに、前記共有メモリに対応するメモリトークンを設定すると共に、前記メモリトークンに対応し、かつ前記共有メモリにアクセスするためのアクセストークンを前記第２物理マシンへ送信し、
前記第２制御部は、前記第１制御部から送信されたアクセストークンを、前記第２物理マシンに設定する
付記１４に記載の制御システム。
【０１７３】
（付記１６）
前記第２物理マシンが備える記憶領域に前記共有メモリが設けられた場合、
前記第２制御部は、前記第２物理マシンに、前記共有メモリに対応するメモリトークンを設定すると共に、前記メモリトークンに対応し、かつ前記共有メモリにアクセスするためのアクセストークンを前記第１物理マシンへ送信し、
前記第１制御部は、前記第２制御部から送信されたアクセストークンを、前記第１物理マシンに設定する
付記１４に記載の制御システム。
【０１７４】
（付記１７）
仮想マシンを第１物理マシンから第２物理マシンへ移行させる処理をコンピュータに実行させる制御方法であって、
前記仮想マシンに割り当てられた前記第１物理マシンの第１ローカルメモリに記憶されたデータを、前記第１物理マシン及び前記第２物理マシンの両方からアクセス可能な共有メモリにコピーすると共に、コピーが完了したデータに前記仮想マシンからアクセスする際の物理アドレスを、前記第１ローカルメモリから前記共有メモリのアドレスに変換し、
前記第１ローカルメモリの全データについて、前記共有メモリへのコピーが完了すると、前記仮想マシンの制御を前記第１物理マシンから前記第２物理マシンに切り換え、
前記共有メモリに記憶されたデータを、前記仮想マシンに割り当てられた前記第２物理マシンの第２ローカルメモリにコピーすると共に、コピーが完了したデータに前記仮想マシンからアクセスする際の物理アドレスを、前記共有メモリから前記第２ローカルメモリのアドレスに変換する
ことを含む処理を前記コンピュータに実行させる制御方法。
【０１７５】
（付記１８）
仮想マシンを第１物理マシンから第２物理マシンへ移行させる処理をコンピュータに実行させる制御プログラムであって、
前記仮想マシンに割り当てられた前記第１物理マシンの第１ローカルメモリに記憶されたデータを、前記第１物理マシン及び前記第２物理マシンの両方からアクセス可能な共有メモリにコピーすると共に、コピーが完了したデータに前記仮想マシンからアクセスする際の物理アドレスを、前記第１ローカルメモリから前記共有メモリのアドレスに変換し、
前記第１ローカルメモリの全データについて、前記共有メモリへのコピーが完了すると、前記仮想マシンの制御を前記第１物理マシンから前記第２物理マシンに切り換え、
前記共有メモリに記憶されたデータを、前記仮想マシンに割り当てられた前記第２物理マシンの第２ローカルメモリにコピーすると共に、コピーが完了したデータに前記仮想マシンからアクセスする際の物理アドレスを、前記共有メモリから前記第２ローカルメモリのアドレスに変換する
ことを含む処理を前記コンピュータに実行させる制御プログラムが記憶された記憶媒体。
【符号の説明】
【０１７６】
１０Ａ、１０Ｂ、１０Ｃ      制御システム
１２Ａ、１２Ｂ、１２Ｃ      マイグレーション元の共有メモリ制御部
１４   マイグレーション元のアドレスマップ変換部
１６Ａ、１６Ｂ、１６Ｃ      マイグレーション先の共有メモリ制御部
１８   マイグレーション先のアドレスマップ変換部
２０Ａ、２０Ｂ、２０Ｃ      マイグレーション元の物理マシン
２１ｎ マイグレーション元のコア
２２ｎ マイグレーション元のローカルメモリ
２３   マイグレーション元のハイパーバイザー
２４   マイグレーション元のアドレス変換テーブル
２６   マイグレーション元の仮想化管理ソフトウェア
２７   マイグレーション元の仮想マシン
３０Ａ、３０Ｂ、３０Ｃ      マイグレーション先の物理マシン
３１ｎ マイグレーション先のコア
３２ｎ マイグレーション先のローカルメモリ
３３   マイグレーション先のハイパーバイザー
３４   マイグレーション先のアドレス変換テーブル
３６   マイグレーション先の仮想化管理ソフトウェア
３７   マイグレーション先の仮想マシン
４２   共有メモリ
４５ｎ メモリトークン
４６ｎ アクセストークン
２１、３１    ＣＰＵチップ
２２   メモリ
４５   メモリトークンレジスタ
４６   アクセストークンレジスタ
５１、７１    記憶部
５４   記憶媒体
６０Ａ、８０Ａ、６０Ｂ、８０Ｂ     制御プログラム
【図１】
2017227969.tif 000003
【図２】
2017227969.tif 000004
【図３】
2017227969.tif 000005
【図４】
2017227969.tif 000006
【図５】
2017227969.tif 000007
【図６】
2017227969.tif 000008
【図７】
2017227969.tif 000009
【図８】
2017227969.tif 000010
【図９】
2017227969.tif 000011
【図１０】
2017227969.tif 000012
【図１１】
2017227969.tif 000013
【図１２】
2017227969.tif 000014
【図１３】
2017227969.tif 000015
【図１４】
2017227969.tif 000016
【図１５】
2017227969.tif 000017
【図１６】
2017227969.tif 000018
【図１７】
2017227969.tif 000019
【図１８】
2017227969.tif 000020
【図１９】
2017227969.tif 000021