JP2015022380A - 情報処理装置、仮想マシンの移行方法及び仮想マシンの移行プログラム - Google Patents

情報処理装置、仮想マシンの移行方法及び仮想マシンの移行プログラム Download PDF

Info

Publication number
JP2015022380A
JP2015022380A JP2013148044A JP2013148044A JP2015022380A JP 2015022380 A JP2015022380 A JP 2015022380A JP 2013148044 A JP2013148044 A JP 2013148044A JP 2013148044 A JP2013148044 A JP 2013148044A JP 2015022380 A JP2015022380 A JP 2015022380A
Authority
JP
Japan
Prior art keywords
virtual machine
information
information processing
processing apparatus
transfer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2013148044A
Other languages
English (en)
Inventor
俊太郎 松村
Shuntaro Matsumura
俊太郎 松村
英児 中村
Hideji Nakamura
英児 中村
勇一 成瀬
Yuichi Naruse
勇一 成瀬
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2013148044A priority Critical patent/JP2015022380A/ja
Publication of JP2015022380A publication Critical patent/JP2015022380A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】仮想マシンを異なる情報処理装置に移行させる際に、仮想マシンの移行時間を短くし、かつ性能の低下を軽減すること。
【解決手段】本願の開示する情報処理装置は、仮想マシンを動作させる。情報処理装置は、第1の転送部と、停止制御部と、第2の転送部とを有する。第1の転送部は、仮想マシンを他の情報処理装置に移行させる際に、メモリ領域に格納された情報のうち、仮想マシンの移行直後に当該仮想マシンによるアクセス頻度の予測値が所定の閾値よりも高い情報を前記他の情報処理装置に転送する。停止制御部は、第1の転送部によって情報が転送された後に、仮想マシンを停止させて、仮想マシンの起動に用いられる構成情報を他の情報処理装置に転送する。第2の転送部は、他の情報処理装置において、仮想マシンが起動された場合、未転送の情報を他の情報処理装置に転送する。
【選択図】図3

Description

本発明は、情報処理装置、仮想マシンの移行方法及び仮想マシンの移行プログラムに関する。
従来、企業などの利用者は、業務用のシステムなどを構築する際、開発或いは運用のための事業所や機材、回線、OS(Operating System)やミドルウェアなどのソフトウェア環境、開発環境などを入手して、システムを稼働するためのインフラを構築する。
また、利用者は、利用実績に応じて課金するサービス「HaaS(Hardware as a Service)」を利用する場合がある。HaaSでは、大規模なデータセンタに設置された情報処理装置(或いは、物理サーバ)に、ソフトウェアで構成されたサーバ(以下、仮想マシン)を起動する。そして、利用者は、インターネットを通じ必要に応じて仮想サーバを利用する。これにより、利用者は、サーバの構築費用や維持費用を削減可能となる。
また、自然災害や電源装置などの障害によりデータセンタが機能を停止する場合がある。このようなことから、サービス提供者は、データセンタを複数拠点に配置し、障害の予兆を検出した場合、障害の予兆を検出したデータセンタで稼動する仮想マシンを他のデータセンタに移行させる。これにより、サービス提供者は、特定データセンタの機能停止時でも、HaaSサービスを提供し続けることが可能となる。なお、実行中の仮想マシンを停止させずに物理的に異なる情報処理装置へ移行することを「ライブ移行」と言う。
ここで、ライブ移行では、「プレコピー型」の移行方式が一般的である。プレコピー型のライブ移行では、仮想マシンが利用するメモリの内容を一旦移行先の情報処理装置Pdにコピーした後、コピー中に変更されたメモリの内容を移行先の情報処理装置Pdにコピーする。そして、変更されたメモリの内容をコピーした後に、仮想マシンのCPU(Central Processing Unit)情報などを移行先の情報処理装置Pdに転送し、移行先の情報処理装置Pdで仮想マシンを起動させる。なお、ここで言う「メモリの内容」とは、仮想マシンのメモリ領域に格納されたデータを示す。
この一方で、プレコピー型のライブ移行では、仮想マシンがメモリの内容を多く変更する場合、変更内容のコピー処理を繰り返すことになるので、仮想マシンの移行時間、または仮想マシンの停止時間が長くなる。このようなことから、仮想マシンを移行先の情報処理装置Pdに移行させてから、メモリの内容をコピーする「ポストコピー型」の移行方式が知られている。このポストコピー型のライブ移行では、仮想マシンの移行時間を短くすることが可能となる。
広渕 崇宏、山幡 為佐久、伊藤 智、"準仮想化ページフォルトを用いたポストコピー型ライブマイグレーションの性能向上手法"、情報処理学会、第24回コンピュータシステム・シンポジウム、2012/12/6
しかしながら、従来の技術では、仮想マシンを異なる情報処理装置に移行させた後からコピーが完了するまで性能が低下する場合があるという課題がある。具体的には、ポストコピー型の場合、移行先の情報処理装置Pdで仮想マシンが起動後、仮想マシンが参照するデータが移行元の情報処理装置から未転送である場合、移行元の情報処理装置からデータの転送完了を待つ必要がある。
この場合、移行先の情報処理装置Pdは、仮想マシンが参照するデータを移行元の情報処理装置に要求して、未転送のデータを取得する。また、仮想マシンは、この未転送のデータを取得するまで停止する。このため、例えば、移行元の情報処理装置と移行先の情報処理装置との帯域が細い場合には、未転送のデータを取得するまでの時間が長くなる。未転送のデータを取得する時間が長い場合、仮想マシンの停止時間が長くなり、移行後の仮想マシンの性能が低下する。
開示の実施形態は、上述に鑑みてなされたものであって、仮想マシンを異なる情報処理装置に移行させる際に、仮想マシンの移行時間を短くし、かつ仮想マシン移行後の性能の低下を軽減することを目的とする。
本願の開示する情報処理装置は、仮想マシンを動作させる。情報処理装置は、第1の転送部と、停止制御部と、第2の転送部とを有する。第1の転送部は、仮想マシンを他の情報処理装置に移行させる際に、メモリ領域に格納された情報のうち、仮想マシンの移行直後に当該仮想マシンによるアクセス頻度の予測値が所定の閾値よりも高い情報を前記他の情報処理装置に転送する。停止制御部は、第1の転送部によって情報が転送された後に、仮想マシンを停止させて、仮想マシンの起動に用いられる構成情報を他の情報処理装置に転送する。第2の転送部は、他の情報処理装置において、仮想マシンが起動された場合、未転送の情報を他の情報処理装置に転送する。
開示する情報処理装置の一つの態様によれば、仮想マシンを異なる情報処理装置に移行させる際に、仮想マシンの移行時間を短くし、かつ性能の低下を軽減することができるという効果を奏する。
図1は、第1の実施形態に係るコンピュータシステムの全体構成例を示す図である。 図2は、第1の実施形態に係る仮想マシンが有する情報処理装置の構成例を示す図である。 図3は、第1の実施形態に係るコンピュータシステムにおけるライブ移行の処理動作を示す図である。 図4は、仮想デバイスが実現する機能部の構成例を示す図である。 図5は、第1の実施形態に係る転送用メモリ管理テーブルのデータ構造の一例を示す図である。 図6は、第1の実施形態に係る転送データテーブルのデータ構造の一例を示す図である。 図7は、第1の実施形態に係る受信用メモリ管理テーブルのデータ構造の一例を示す図である。 図8は、第1の実施形態に係る第1の転送部による処理手順を示すフローチャートである。 図9は、転送処理と同期せずにメモリ領域に格納されたデータの読み書きを検出した場合の処理手順を示すフローチャートである。 図10は、第1の実施形態に係る転送処理の手順を示すフローチャートである。 図11は、第1の実施形態に係る停止制御部による仮想マシンの移行処理の手順を示すフローチャートである。 図12は、第1の実施形態に係る第2の転送部による処理手順を示すフローチャートである。 図13は、第1の実施形態に係る第2の転送部によるデータの転送処理と同期せずに移行先の情報処理装置Pdで動作する仮想マシンが未転送のメモリ領域に格納されたデータの読み書きを必要とした場合に発生する割込み転送処理の処理手順を示すフローチャートである。 図14は、第1の実施形態に係る第2の転送部によるデータの転送処理と同期せずに移行先の情報処理装置Pdで動作する仮想マシンが未転送のディスク領域に格納されたデータの読み書きを必要とした場合に発生する割込み転送処理の処理手順を示すフローチャートである。 図15は、第1の実施形態に係る第1の受信部による処理手順を示すフローチャートである。 図16は、第1の実施形態に係る展開処理の処理手順を示すフローチャートである。 図17は、第1の実施形態に係る起動制御部による処理手順を示すフローチャートである。 図18は、第1の実施形態に係る第2の受信部による処理手順を示すフローチャートである。 図19は、第1の実施形態に係る移行先の情報処理装置Pdで動作する仮想マシンが未転送のメモリを要求し、転送処理とは非同期でページフォルトが発生したときの、第2の受信部による処理手順を示すフローチャートである。 図20は、第1の実施形態に係る移行先の情報処理装置Pdで動作する仮想マシンがディスクの読み出しを要求し、転送処理とは非同期で仮想マシンが情報処理装置PdにディスクI/Oを要求したときの、第2の受信部による処理手順を示すフローチャートである。 図21は、コンピュータシステムによる処理を実行するための仮想マシンの移行プログラムによる情報処理がコンピュータを用いて具体的に実現されることを示す図である。
以下に、開示する情報処理装置、仮想マシンの移行方法及び仮想マシンの移行プログラムの実施形態について、図面に基づいて詳細に説明する。なお、本実施形態により開示する発明が限定されるものではない。各実施形態は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
(第1の実施形態)
図1は、第1の実施形態に係るコンピュータシステムの全体構成例を示す図である。図1に示すように、コンピュータシステムは、情報処理装置10と、情報処理装置40とを有する。図1に示すように、情報処理装置10と、情報処理装置40とが、任意のネットワーク5を介して互いに通信可能に接続される。
情報処理装置10及び情報処理装置40は、例えばデータベースサーバなどであり、契約者である利用者に対してサービスを提供する。このため情報処理装置10及び情報処理装置40には、サービスを利用するクライアント端末(図1には図示しない)がネットワーク5を介して接続される。なお、図1では、情報処理装置10と、情報処理装置40とを示したが、コンピュータシステムに含まれる情報処理装置の数は、図1に図示した数に限定されるものではない。
図1に示すように、情報処理装置10は、ハードウェア21と、ホストOS22と、仮想マシンソフトウェア23とを有する。
ハードウェア21は、情報処理装置10を構成する電子回路や周辺機器であり、例えば、メモリ、CPUなどである。また、ハードウェア21は、ディスクのイメージファイルを記憶する。つまり、ハードウェア21は、仮想マシン30上で起動させるゲストOS32のイメージを記憶する。なお、ゲストOS32については、後述する。
ホストOS22は、仮想マシン30を動作させる基盤となるOSであり、ハードウェア21を用いて実行される。仮想マシンソフトウェア23は、ハードウェア21を用いて仮想マシン30を提供するソフトウェアであり、ここでは、仮想マシン30を動作させる。例えば、仮想マシンソフトウェア23は、仮想ディスク、仮想メモリ、仮想CPUなどを含んだ仮想ハードウェア31をゲストOS32に割当てて、仮想マシン30を動作させる。
仮想マシン30aは、例えば、仮想ハードウェア31aと、ゲストOS32aとを有する。仮想ハードウェア31aは、仮想マシンソフトウェア23から提供された仮想ディスク、仮想物理メモリ、仮想CPUなどを用いてゲストOS32aを動作させて、各種処理を実行する仮想的な情報処理装置である。ゲストOS32aは、プログラムやアプリケーションを動作させる。仮想マシン30bの構成は、仮想マシン30aの構成と同様である。すなわち、仮想マシン30bは、仮想ハードウェア31bと、ゲストOS32bとを有する。なお、以下では、仮想マシン30aと仮想マシン30bとを区別しない場合には、仮想マシン30と記載する。同様に、仮想ハードウェア31aと仮想ハードウェア31bとを区別しない場合には、仮想ハードウェア31と記載する。また、ゲストOS32aとゲストOS32bとを区別しない場合には、ゲストOS32と記載する。また、図1では、情報処理装置10で仮想マシン30が2台動作する場合を図示したが、情報処理装置10で動作する仮想マシン30の数は、任意に変更可能である。
情報処理装置40は、ハードウェア51と、ホストOS52と、仮想マシンソフトウェア53と、仮想マシン60aと、仮想マシン60bとを有する。情報処理装置40の構成は、情報処理装置10の構成と同様であるので詳細な説明を省略する。また、仮想マシン60aの構成は仮想マシン30の構成と同様であり、仮想ハードウェア61aと、ゲストOS62aとを有する。同様に、仮想マシン60bの構成は仮想マシン30の構成と同様であり、仮想ハードウェア61bと、ゲストOS62bとを有する。なお、以下では、仮想マシン60aと仮想マシン60bとを区別しない場合には、仮想マシン60と記載する。同様に、仮想ハードウェア61aと仮想ハードウェア61bとを区別しない場合には、仮想ハードウェア61と記載する。また、ゲストOS62aとゲストOS62bとを区別しない場合には、ゲストOS62と記載する。また、図1では、情報処理装置40で仮想マシン60が2台動作する場合を図示したが、情報処理装置40で動作する仮想マシン60の数は、任意に変更可能である。
このようなコンピュータシステムにおいて、例えば、情報処理装置10において障害の予兆を検出した場合、情報処理装置10で動作させる仮想マシン30を他の情報処理装置40に移行する。なお、実行中の仮想マシン30を物理的に異なるホスト間で移行することを「ライブ移行」と言う。なお、以下の説明では、障害の予兆を検出した際に仮想マシン30を起動している情報処理装置10を「移行元の情報処理装置」或いは「移行元の物理マシン」と記載する。また、ライブ移行後に仮想マシン30を動作させる情報処理装置40を「移行先の情報処理装置」或いは「移行先の物理マシン」と記載する。
続いて、図2及び図3を用いて、第1の実施形態に係るライブ移行について説明する。図2は、第1の実施形態に係る仮想マシン30が有する仮想ハードウェア31の構成例を示す図であり、図3は、第1の実施形態に係るコンピュータシステムにおけるライブ移行の処理動作を示す図である。
図2に示す例では、移行元の情報処理装置Psで動作する仮想マシン30の仮想ハードウェア31の構成と、ライブ移行後に移行先の情報処理装置Pdで動作する仮想マシン30の仮想ハードウェア31の構成とを示す。なお、説明の便宜上、移行元の情報処理装置Psで動作する仮想マシン30を「仮想マシンA」と記載し、移行先の情報処理装置Pdで動作する仮想マシン30を「仮想マシンB」と記載する。
図2に示すように、仮想マシンAの仮想ハードウェア31は、仮想CPU71(仮想CPU#0〜仮想CPU#Nを含む)、仮想メモリ72、仮想NIC73、仮想ディスク74(仮想ディスク#0及び仮想ディスク#1を含む)のほか、ライブ移行用の仮想デバイス75を有する。なお、仮想ディスク74は情報処理装置10と情報処理装置40とで共有される共有ディスクを利用してもよい。
仮想CPU71は、情報処理装置10が有する物理CPUにおける所定処理能力を仮想マシン30で動作するゲストOS32が使用するCPUとして割り当てることで実現された仮想的なCPUであり、各種の演算処理を実行する。また、仮想CPU71は、図示しない仮想レジスタを有する。仮想レジスタは、情報処理装置10が有する物理レジスタ・物理メモリ・物理ディスクにおける所定領域を仮想マシン30で動作するゲストOS32が使用する領域として割り当てることで実現された仮想的なレジスタである。例えば、仮想レジスタは、仮想CPU71によって仮想メモリ72から読み出されたプログラムやデータを記憶する。
仮想メモリ72は、例えばRAM(Random Access Memory)、ROM(Read Only Memory)、VGA(Video Graphics Array)などであり、情報処理装置10が有する物理メモリにおける所定領域を仮想マシン30で動作するゲストOS32が使用するメモリとして割り当てることで実現された仮想的なメモリである。
仮想NIC73は、ゲストOSからNICとして認識され、物理CPUで動作するソフトウェアとして実現される。また仮想NIC73が物理NICを制御することで、ゲストOSは物理NICを通じて他装置と通信することができる。
仮想ディスク74は、情報処理装置10が有する物理ディスクにおける所定領域を仮想マシン30で動作するゲストOS32が使用する領域として割り当てることで実現された仮想的なディスクである。
ライブ移行用の仮想デバイス75は、ゲストOS上で動作するデバイス・ドライバーを経由して、ゲストOS上の各種データを参照・更新する。なお、ライブ移行用の仮想デバイス75が有する機能をBIOS(Basic Input/Output System)やファームウェアで実装してもよい。また、以下では、ライブ移行用の仮想デバイス75を、「仮想デバイス75」と記載する。
なお、仮想マシンBの仮想ハードウェア31の構成は、仮想マシンAの仮想ハードウェア31の構成と同様であるので、同一の符号を付与し詳細な説明は省略する。また、以下の説明では、移行元の情報処理装置を「Ps」、移行先の情報処理装置を「Pd」、移行対象の仮想マシンを「VM」、VMを構成する仮想CPU、仮想メモリ、仮想ディスク、仮想デバイスをそれぞれcpu、mem、disk、vdと記載する場合がある。また、VM、cpu、mem、disk、vdの添字には動作している情報処理装置を記載する。例えば、「VM[Ps]」は、移行元の情報処理装置Psで動作している仮想マシンAのことを示し、「VM[Pd]」は、移行先の情報処理装置Pdで動作している仮想マシンBのことを示す。
図3では、移行元の情報処理装置Psで動作させる仮想マシンAを、移行先の情報処理装置Pdに移行させる場合を示す。図3には2つの縦軸を示しており、左側に示す縦軸は移行元の情報処理装置Psの時間経過を示し、右側に示す縦軸は移行先の情報処理装置Pdの時間経過を示す。
図3に示すように、仮想マシンAを起動させている移行元の情報処理装置Psは、障害の予兆を検出した場合、アクセス頻度が高いなど、プレコピーの対象とするメモリ領域を決定する(ステップS1)。ここで言う「メモリ領域」とは、仮想メモリ72の領域を示す。そして、移行元の情報処理装置Psは、メモリのトラッキング機能を有効化する(ステップS2)。これにより、移行元の情報処理装置Psは、メモリ領域に対する読み出しや書き込みを把握可能となる。
移行元の情報処理装置Psは、アクセス頻度の高いメモリ領域を、移行先の情報処理装置Pdにコピーする(ステップS3)。移行元の情報処理装置Psは、コピー処理の終了後、仮想マシンAを停止する(ステップS4)。なお、図3では、移行元の情報処理装置Psの時間経過を示す縦軸において、仮想マシンAが起動中である期間を太線矢印で示す。
移行元の情報処理装置Psは、仮想マシンAを停止させた後、CPU情報と、書き込み頻度が高いメモリ領域とを、移行先の情報処理装置Pdにコピーする(ステップS5)。そして、移行先の情報処理装置Pdは、仮想マシンBを動作させる(ステップS6)。
移行元の情報処理装置Psは、移行先の情報処理装置Pdにおいて仮想マシンBが起動した後、未コピーのメモリ領域を移行先の情報処理装置Pdにコピーする(ステップS7)。続いて、移行元の情報処理装置Psは、ディスク領域を移行先の情報処理装置Pdにコピーする(ステップS8)。
なお、ステップS7及びステップS8の実行中に、仮想マシンBが未コピーのメモリ領域や未コピーのディスク領域に対してアクセスした場合、移行元の情報処理装置Psは、アクセスされた未コピーのメモリ領域や未コピーのディスク領域を移行先の情報処理装置Pdにコピーする。移行元の情報処理装置Psは、コピー処理の終了後、仮想マシンAを削除する(ステップS9)。なお、図3では、移行先の情報処理装置Pdの時間経過を示す縦軸において、仮想マシンBが起動中である期間を太線矢印で示す。
このように、アクセス頻度の高いメモリ領域をプレコピー処理として転送してから仮想マシンを移行させることで、仮想マシンを異なる情報処理装置に移行させる際に、仮想マシンの移行時間を短くし、かつライブ移行後の性能の低下を軽減することができる。
以下では、ライブ移行のより詳細について図4〜図20を用いて説明する。図4では、仮想デバイス75が実現する機能部100について説明する。図4は、仮想デバイス75が実現する機能部100の構成例を示す図である。図4に示すように仮想デバイス75が実現する機能部100は、転送用メモリ管理テーブル101と、転送データテーブル102と、受信用メモリ管理テーブル103と、受信データテーブル104と、第1の転送部111と、停止制御部112と、第2の転送部113と、第1の受信部114と、起動制御部115と、第2の受信部116とを有する。仮想デバイス75が有する機能のうち、第1の転送部111、停止制御部112、及び第2の転送部113は、移行元の情報処理装置Psにおいて機能し、第1の受信部114、起動制御部115及び第2の受信部116は、移行先の情報処理装置Pdにおいて機能する。
転送用メモリ管理テーブル101は、移行先の情報処理装置Pdに転送した物理メモリの履歴と、メモリトラッキング機能が有効化された後に、読み書きされた物理メモリとを記憶する。図5は、第1の実施形態に係る転送用メモリ管理テーブル101のデータ構造の一例を示す図である。図5に示すように、転送用メモリ管理テーブル101は、例えば、「アドレス」と、「データID」と、「読み出し回数」と、「書き込み回数」と、「転送済フラグ」とを対応付けた情報を記憶する。
ここで、転送用メモリ管理テーブル101が記憶する「アドレス」は、データが格納されている仮想マシン上の物理アドレスを示す。また、転送用メモリ管理テーブル101が記憶する「データID」は、アドレスに対応付けて格納されているデータを一意に識別するための識別子を示す。また、転送用メモリ管理テーブル101が記憶する「読み出し回数」は、対応するアドレスにデータが読み出された回数を示す。また、転送用メモリ管理テーブル101が記憶する「書き込み回数」は、対応するアドレスにデータが書き込まれた回数を示す。また、転送用メモリ管理テーブル101が記憶する「転送済フラグ」は、対応するアドレスを移行先の情報処理装置Pdに転送し、かつアドレスへのデータ書き込みにより無効化されていないかどうかを識別した情報を示す。
転送データテーブル102は、移行元の情報処理装置Psで動作する仮想マシンの物理メモリ内のデータ情報を記憶する。図6は、第1の実施形態に係る転送データテーブル102のデータ構造の一例を示す図である。図6に示すように、転送データテーブル102は、例えば、「データID」と、「ハッシュ値」と、「データ」とを対応付けた情報を記憶する。
ここで、転送データテーブル102が記憶する「データID」は、データを一意に識別するための識別子を示す。また、転送データテーブル102が記憶する「ハッシュ値」は、データをハッシュ変換した値を示す。また、転送データテーブル102が記憶する「データ」は、移行元の情報処理装置Psから移行後の情報処理装置Pdに転送した物理メモリのデータを示す。なお、転送データテーブルが記憶する「データID」は、転送用メモリ管理テーブル101が記憶する「データID」と対応する。
受信用メモリ管理テーブル103は、移行元の情報処理装置Psから受信した物理メモリの履歴を記憶する。図7は、第1の実施形態に係る受信用メモリ管理テーブル103のデータ構造の一例を示す図である。図7に示すように、受信用メモリ管理テーブル103は、例えば、「仮想マシンの物理アドレス」と、「ホストマシンの仮想アドレス」と、「書き込み可能フラグ」とを対応付けた情報を記憶する。
ここで、受信用メモリ管理テーブル103は、「ホストマシンの仮想アドレス」に「null」が格納される場合、「仮想マシンの物理アドレス」に対応付けられたデータを受信していないことを示す。また、「ホストマシンの仮想アドレス」に「null」が格納されていない場合、すなわち、「仮想マシンの物理アドレス」に対応付けられたデータを受信している場合、「書き込み可能フラグ」には「オン」又は「オフ」のいずれかが格納される。ここで、受信用メモリ管理テーブル103は、「書き込み可能フラグ」に「オフ」が格納される場合、書き込みを禁止していることを示し、「書き込み可能フラグ」に「オン」が格納される場合、書き込みを許可していることを示す。
受信データテーブル104は、移行先の情報処理装置Pdで動作する仮想マシンの物理メモリ内のデータ情報を記憶する。受信データテーブル104のデータ構造は、図6に示した転送データテーブル102のデータ構造と同一であるので、図示は省略する。すなわち、受信データテーブル104は、例えば、「データID」と、「ハッシュ値」と、「データ」とを対応付けた情報を記憶する。
ここで、受信データテーブル104が記憶する「データ」は、「書き込み可能フラグ」がオフに設定されている場合、受信用メモリ管理テーブルの「ホストマシンの仮想アドレス」として利用可能である。なお、「書き込み可能フラグ」をオンに設定するときは、メモリ領域を確保してコピー処理が必要となる。
第1の転送部111は、仮想マシンAを他の情報処理装置40に移行させる際に、メモリ領域に格納された情報のうち、仮想マシンAの移行直後に仮想マシンBによるアクセス頻度の予測値が所定の閾値よりも高い情報を他の情報処理装置40に転送する。
例えば、第1の転送部111は、メモリ領域に格納された情報のうち仮想マシンA内で動作中のプロセスが利用している物理メモリの一覧を取得する。より具体的には、第1の転送部111は、仮想マシンAの直近(例えば、1分)でロードアベレージが0ではないプロセス・スレッドが利用可能な仮想メモリ(メモリ空間)が参照する物理メモリの一覧を、チャンク(ページ・サイズ(例えば、Intel64,AMD64では4KiB)の乗数、例えば、64KiB)単位で取得する。ここで、第1の転送部111は、カーネルメモリによって管理されるプロセス・スレッド情報を参照する方法で物理メモリの一覧を収集する。なお、取得した物理メモリの一覧のことを「プレコピー対象情報」と呼ぶ。
続いて、第1の転送部111は、仮想マシンAのメモリトラッキング機能を有効化する。これにより第1の転送部111は、仮想マシンAによるメモリ領域への読み書きを、ページ単位で検出できるようになる。
そして、第1の転送部111は、収集したプレコピー対象情報に記憶されるメモリ領域に格納されたデータを、移行先の情報処理装置Pdに転送する。ここで、第1の転送部111は、データを圧縮して転送する。より具体的には、第1の転送部111は、仮想マシンの移行直後にアクセス頻度の予測値が所定の閾値よりも高い情報であって、同一の情報が他の情報処理装置40に転送済みではない場合に、当該情報と当該情報が格納される位置情報とを他の情報処理装置40に転送し、同一の情報が他の情報処理装置40に転送済みである場合に、当該情報が格納される位置情報を他の情報処理装置40に転送する。
例えば、第1の転送部111は、ブロック・サイズ(例えば、8KiB)でメモリの内容のハッシュ値を取得する。なお、ここで言う「メモリの内容」とは、メモリ領域に格納されたデータを示す。そして、第1の転送部111は、同一のハッシュ値を持つ転送済ページがあり、転送データテーブル102の「メモリ」内容を照合し同一であればメモリ位置とデータIDとを「ページ情報」として転送する。一方、第1の転送部111は、ハッシュ値またはメモリ内容が同一の転送済ページがない場合には、メモリ位置と、新たに割り当てたデータIDと、データとを含んだ「ページ情報」として転送する。第1の転送部111は、データの転送後に、転送用メモリ管理テーブル101の「転送済フラグ」をオンにする。
また、第1の転送部111は、転送中にページへの読み出しを検出した時、ページを含むブロック領域をプレコピーの対象にする。そして、第1の転送部111は、ページ単位で読み出し件数をカウントして、カウントした値をアドレスと対応付けて転送用メモリ管理テーブル101に記憶させる。
また、第1の転送部111は、転送中にページへの書き込みを検出した時、ページ単位で書き込み件数をカウントし、カウントした値をアドレスと対応付けて転送用メモリ管理テーブル101に記憶させる。ここで、第1の転送部111は、転送中にページへの書き込みを検出した時、該ページはプレコピーの対象外とする。すなわち、第1の転送部111は、内容が頻繁に変更されるプロセス・スレッドのスタック領域をプレコピー対象から除外する。言い換えると、第1の転送部111は、アクセス頻度の予測値が所定の閾値よりも高い情報であって、当該情報が更新されていない場合に、当該情報を他の情報処理装置40に転送する。なお、第1の転送部111は、すでにデータを転送したページへの書き込みを検出した場合も同様に、転送用メモリ管理テーブル101にアドレスと書き込み回数と転送済フラグとを対応付けて登録する。
停止制御部112は、第1の転送部111によって情報が転送された後に、仮想マシンAを停止させて、仮想マシンAの起動に用いられる構成情報を他の情報処理装置40に転送する。ここで、仮想マシンAの起動に用いられる構成情報には、CPU情報やBIOSなどのROMの情報などが含まれる。
例えば、停止制御部112は、仮想マシンAを停止する。そして、停止制御部112は、仮想マシンAが使用していたCPU情報や、BIOSなどのROMの情報を移行先の情報処理装置Pdに転送する。なお、CPU情報には、移行前の仮想マシンが実行していたプログラム及びプログラムの実行位置を示す情報などが含まれる。
続いて、停止制御部112は、各CPUのTLB(Translation Look‐aside Buffer)に登録されている物理メモリ、またはプレコピー中に実行されたプロセス・スレッドのスタックメモリについて、未転送のメモリ情報を転送する。このTLBに登録されている物理メモリやスタックメモリには、移行前の仮想マシンが各種演算処理を実行する際に、参照したデータや更新したデータが含まれる。
また、停止制御部112は、第1の転送部111によって転送された情報のうち、仮想マシンが起動される前に更新された情報を特定した無効化情報を他の情報処理装置40に転送する。言い換えると、停止制御部112は、プレコピー処理で転送したデータのうち、データの転送後に変更されたメモリ位置の一覧を示す無効化情報を生成し、生成した無効化情報を移行先の情報処理装置Pdに転送する。そして、停止制御部112は、移行後の仮想マシンによる無効化情報に登録された情報へのアクセスを禁止させる。
第2の転送部113は、他の情報処理装置40において、仮想マシンBが起動された場合、未転送のリソース情報を他の情報処理装置40に転送する。なお、リソース情報には、「メモリ領域に格納されたデータ」及び「ディスク領域に格納されたデータ」が含まれる。なお、リソース情報のことを「ポストコピー情報」とも言う。
例えば、第2の転送部113は、「読み出し回数の多いメモリ領域に格納されたデータ」、「書き込み回数の多いメモリ領域に格納されたデータ」、「ディスク領域に格納されたデータ」の順番で残ったポストコピー情報を転送する。ここで第2の転送部113は、ポストコピー情報のコピー時には、第1の転送部111と同様にデータを圧縮して転送する。ただし、第2の転送部113は、ディスク情報については、同一内容のページ転送の圧縮を行わない。
また、第2の転送部113は、他の情報処理装置40で動作させる仮想マシンBによって参照される情報を当該他の情報処理装置40から要求された場合、当該情報を優先的に当該他の情報処理装置40に転送する。例えば、第2の転送部113は、移行先の情報処理装置Pdからデータの取得要求を受付けた場合、要求されたデータを移行先の情報処理装置Pdに転送する。ここで、第2の転送部113は、「ページフォルトが起こったメモリ領域」、「読み出しが行われたディスク領域」、「ポストコピー処理」の優先順位でデータをコピーする。「ポストコピー処理」とは、ポストコピー情報を転送する処理を示す。
第2の転送部113は、ポストコピー処理の終了後、仮想マシンAを削除する。なお、第2の転送部113が、ディスク領域に格納されたデータを移行先の情報処理装置Pdに転送するので、コンピュータシステムでは、共有ディスクを設けなくてもよい。
第1の受信部114は、他の情報処理装置10で動作する仮想マシンAの移行直後に仮想マシンBによるアクセス頻度の予測値が所定の閾値よりも高い情報を当該他の情報処理装置10から受信する。そして、第1の受信部114は、受信した情報をメモリ領域に格納する。
ここで、複数のメモリ空間が1つの物理メモリを指すことが可能である。このため、第1の受信部114は、移行先のメモリ領域に既に転送済みの物理メモリの情報があれば、物理メモリの識別子を基に仮想マシンのアドレス空間と物理メモリとを対応付けた変換テーブルを変更するだけでよい。すなわち、第1の受信部114は、新たに物理メモリの割り当てと展開の処理を実行しなくてもよい。これにより、第1の受信部114は、従来の圧縮転送処理(gzipなど)に比べ、特に移行先の情報処理装置Pdで動作する仮想マシンの展開処理において、CPUやメモリの負荷を低減できる。
起動制御部115は、仮想マシンAの停止後に、仮想マシンAの起動に用いられる構成情報を、他の情報処理装置10から受信し、受信した構成情報を用いて仮想マシンBを起動させる。
また、起動制御部115は、無効化情報を受信した場合、転送されたメモリ位置に関するメモリを無効化する。
第2の受信部116は、仮想マシンBを起動させた後に、未転送の情報を他の情報処理装置10から受信する。
また、第2の受信部116は、仮想マシンBが参照するデータのうち、メモリ領域やディスク領域に転送されていないデータへのアクセスが行われた場合、仮想マシンAにデータを要求する。例えば、第2の受信部116は、メモリ領域に転送されていないデータについてはページフォルトで検出する。そして、第2の受信部116は、移行元の情報処理装置Psから要求したデータを取得してメモリ領域やディスク領域を更新する。これにより仮想マシンBは、取得したデータを用いて処理を継続可能となる。なお、第2の受信部116は、データを受信する前にディスクへの書き込みが行われた場合、受信したデータは破棄する。
次に、図8〜図14を用いて、移行元の情報処理装置Psにおける処理手順について説明する。図8は、第1の実施形態に係る第1の転送部111による処理手順を示すフローチャートである。図8に示すように、第1の転送部111は、メモリ領域に格納された情報のうち、転送対象の物理メモリの一覧(プレコピー対象情報)を取得する(ステップS101)。例えば、第1の転送部111は、メモリ領域に格納された情報のうち仮想マシンA内で動作中のプロセスが利用している物理メモリの一覧を取得する。続いて、第1の転送部111は、メモリトラッキング機能を有効化する(ステップS102)。
第1の転送部111は、プレコピー処理を終了するか否かを判定する(ステップS103)。すなわち、第1の転送部111は、プレコピー対象情報に記憶されるメモリ領域に格納されたデータの全てを転送したか否かを判定する。ここで、第1の転送部111は、プレコピー処理を終了していないと判定した場合(ステップS103、No)、メモリ領域に格納されたデータの書き込みを検出したか否かを判定する(ステップS104)。なお、ここでは、プレコピー対象情報に記憶されるメモリ領域に加えて、仮想マシンAに割当てられたメモリ領域を対象とする。
ここで、第1の転送部111は、メモリ領域に格納されたデータの書き込みを検出したと判定した場合(ステップS104、Yes)、ステップS103に移行して、プレコピー処理を終了するか否かを判定し、次の物理メモリを移行先の情報処理装置Pdに転送する処理を引き続き実行する。また、第1の転送部111は、メモリ領域に格納されたデータの書き込みを検出しなかったと判定した場合(ステップS104、No)、ステップS105に移行して、物理メモリの一覧を移行先の情報処理装置Pdに転送する処理を引き続き実行する。なお、第1の転送部111は、プレコピー処理を終了したと判定した場合(ステップS103、Yes)、処理を終了する。
図9は、図8のフローチャートを実行中に、転送処理と同期せずにメモリ領域に格納されたデータの読み書きを検出した場合の処理手順を示すフローチャートである。ここで、第1の転送部111は、メモリ領域に格納されたデータの読み書きが行われた場合、メモリトラッキングによる割り込み処理などで図9の処理を開始する。第1の転送部111は、この処理では、メモリへの書き込みが検出したか否かを判定する(ステップS111)。第1の転送部111は、メモリ領域に格納されたデータの読み出しを検出したと判定した場合(ステップS111、No)、読み出し回数を1増やす(ステップS112)。例えば、第1の転送部111は、読み出しを検出したデータが格納されるアドレスと、読み出し回数とを対応付けて転送用メモリ管理テーブル101に記憶させ、割り込みなどの処理を終了する。
第1の転送部111は、メモリ領域に格納されたデータの書き込みを検出したと判定した場合(ステップS111、Yes)、書き込み回数を1増やし(ステップS113)、転送済みフラグをオフにする(ステップS114)。例えば、第1の転送部111は、書き込みを検出したデータが格納されるアドレスと、書き込み回数と、転送済みフラグとを対応付けて転送用メモリ管理テーブル101に記憶させ、割り込みなどの処理を終了する。
続いて図10を用いて、データを移行先の情報処理装置Pdに転送する転送処理の詳細について説明する。図10は、第1の実施形態に係る転送処理の手順を示すフローチャートである。なお、この処理は、図8に示すステップS105の処理に対応する。
図10に示すように、第1の転送部111は、ブロック・サイズ単位でメモリ領域から読み出したデータのハッシュ値を取得する(ステップS201)。続いて、第1の転送部111は、転送データテーブル102を参照し、取得したハッシュ値と同一のハッシュ値が存在するか否かを判定する(ステップS202)。
ここで、第1の転送部111は、取得したハッシュ値と同一のハッシュ値が存在すると判定した場合(ステップS202、Yes)、メモリの内容が同一であるか否かを判定する(ステップS203)。なお、ここで言う「メモリの内容」とは、仮想マシンの物理メモリ領域に格納されたデータを示す。例えば、第1の転送部111は、転送データテーブル102を参照し、ハッシュ値を取得したデータが登録されているか否かを判定する。ここで、第1の転送部111は、ハッシュ値を取得したデータが格納されているアドレスが、転送データテーブル102に登録されている場合、ハッシュ値を取得したデータが更新されており、メモリの内容が同一ではないと判定する。また、第1の転送部111は、ハッシュ値を取得したデータが、転送データテーブル102に登録されている場合、ハッシュ値を取得したデータが更新されておらずメモリの内容が同一であると判定する。
ここで、第1の転送部111は、メモリの内容が同一であると判定した場合(ステップS203、Yes)、移行先の情報処理装置PdにデータIDと、ハッシュ値を取得したデータが格納されたメモリ領域のアドレスを転送する(ステップS205)。一方、第1の転送部111は、メモリの内容が同一ではないと判定した場合(ステップS203、No)、データIDと、ハッシュ値と、ハッシュ値を取得したデータが格納されたメモリ領域のアドレスとを移行先の情報処理装置Pdに転送する(ステップS204)。また、第1の転送部111は、取得したハッシュ値と同一のハッシュ値が存在しないと判定した場合(ステップS202、No)、ステップS204に移行し、データIDと、ハッシュ値と、ハッシュ値を取得したデータが格納されたメモリ領域のアドレスとを移行先の情報処理装置Pdに転送する。
次に、図11を用いて、停止制御部112による仮想マシンの移行処理について説明する。図11は、第1の実施形態に係る停止制御部112による仮想マシンの移行処理の手順を示すフローチャートである。図11に示すように、停止制御部112は、仮想マシンAを停止させる(ステップS301)。そして、停止制御部112は、CPU情報を移行先の情報処理装置Pdに転送する(ステップS302)。ここで、CPU情報には、仮想マシンAが起動中に実行していたプログラム及びプログラムの実行位置を示す情報などが含まれる。そして、停止制御部112は、TLBに登録されている物理メモリ、スタックメモリについて未転送のデータを転送する(ステップS303)。なお、ステップS302及びステップS303における詳細な処理手順は、図10に示した転送処理の手順と同様である。
続いて、停止制御部112は、無効化情報を移行先の情報処理装置Pdに転送する(ステップS304)。例えば、停止制御部112は、転送用メモリ管理テーブル101に登録されているデータのうち、「転送済フラグ」がオフのデータを特定する。そして、停止制御部112は、特定した転送用メモリ管理テーブル101の「アドレス」を無効化情報として登録し、移行先の情報処理装置Pdに転送する。
次に図12を用いて、第2の転送部113による処理手順を説明する。図12は、第1の実施形態に係る第2の転送部113による処理手順を示すフローチャートである。図12に示すように、第2の転送部113は、メモリ領域に格納されたデータのうち未転送であったデータの転送が終了したか否かを判定する(ステップS401)。
ここで、第2の転送部113は、メモリ領域に格納されたデータのうち未転送であったデータの転送が終了していないと判定した場合(ステップS401、No)、ステップS402に移行してメモリ領域に格納されたデータを移行先の情報処理装置Pdに転送する。第2の転送部113は、メモリ領域に格納されたデータを「ポストコピー情報」として移行先の情報処理装置Pdに「読み出し回数が多い」、「書き込み回数が多い」、「物理アドレスの値が小さい」の順番で転送する(ステップS402)。なお、ステップS402における詳細な処理手順は、図10に示した転送処理の手順と同様である。
一方、第2の転送部113は、メモリ領域に格納されたデータのうち未転送であったデータの転送が終了したと判定した場合(ステップS401、Yes)、ステップS403に移行する。
第2の転送部113は、ディスク領域に格納されたデータのうち未転送であったデータの転送が終了したか否かを判定する(ステップS403)。ここで、第2の転送部113は、ディスク領域に格納されたデータのうち未転送であったデータの転送が終了していないと判定した場合(ステップS403、No)、ステップS404に移行して引き続きディスク領域に格納されたデータを移行先の情報処理装置Pdに転送する。第2の転送部113は、ディスク領域に格納されたデータを「ポストコピー情報」として移行先の情報処理装置Pdに転送する(ステップS404)。
一方、第2の転送部113は、ディスク領域に格納されたデータのうち未転送であったデータの転送が終了したと判定した場合(ステップS403、Yes)、処理を終了する。
次に、図13及び図14を用いて、第2の転送部113による割込み転送処理の処理手順について説明する。図13は、第1の実施形態に係る第2の転送部113によるデータの転送処理と同期せずに移行先の情報処理装置Pdで動作する仮想マシンBが未転送のメモリ領域に格納されたデータの読み書きを必要とした場合に発生する割込み転送処理の処理手順を示すフローチャートである。ここで、第2の転送部113は、移行先の情報処理装置Pdからメモリの転送要求を受付けたことを契機に図13の割込み転送処理を開始する。この処理では、第2の転送部113は、第2の転送部113による「ポストコピー情報」の転送処理を中断し(ステップS501)、要求されたメモリ領域に格納されたデータを移行先の情報処理装置Pdに転送する割込み転送処理を実行する(ステップS502)。なお、このステップS502における詳細な処理手順は、図10に示した転送処理の手順と同様である。第2の転送部113は、割込み転送処理が完了したら、第2の転送部113による「ポストコピー情報」の転送処理を再開し(ステップS503)、割込み転送処理を終了する。
図14は、第1の実施形態に係る第2の転送部113によるデータの転送処理と同期せずに移行先の情報処理装置Pdで動作する仮想マシンBが未転送のディスク領域に格納されたデータの読み書きを必要とした場合に発生する割込み転送処理の処理手順を示すフローチャートである。ここで、第2の転送部113は、移行先の情報処理装置Pdからディスクの転送要求を受付けたことを契機に図14の割込み転送処理を開始する。この処理では、第2の転送部113は、第2の転送部113による「ポストコピー情報」の転送処理を中断し(ステップS511)、要求されたディスク領域に格納されたデータを移行先の情報処理装置Pdに転送する割込み転送処理を実行する(ステップS512)。第2の転送部113は、割込み転送処理が完了したら、第2の転送部113による「ポストコピー情報」の転送処理を再開し(ステップS513)、割込み転送処理を終了する。
次に、図15〜図20を用いて、移行先の情報処理装置Pdにおける処理手順について説明する。図15は、第1の実施形態に係る第1の受信部114による処理手順を示すフローチャートである。図15に示すように、第1の受信部114は、「ページ情報」を移行元の情報処理装置Psから受信したか否かを判定する(ステップS601)。
第1の受信部114は、「ページ情報」を移行元の情報処理装置Psから受信したと判定した場合(ステップS601、Yes)、「ページ情報」の展開処理を実行する(ステップS602)。なお、「ページ情報」の展開処理の詳細については後述する。一方、第1の受信部114は、「ページ情報」を移行元の情報処理装置Psから受信しなかったと判定した場合(ステップS601、No)、引き続き、「ページ情報」を移行元の情報処理装置Psから受信したか否かを判定する。
第1の受信部114は、ステップS602の後、転送予定の全ての「ページ情報」の受信を終了したか否かを判定する(ステップS603)。ここで、第1の受信部114は、転送予定の全ての「ページ情報」の受信を終了したと判定した場合(ステップS603、Yes)、処理を終了する。一方、第1の受信部114は、転送予定の全ての「ページ情報」の受信を終了しなかったと判定した場合(ステップS603、No)、ステップS601に移行して、引き続き「ページ情報」を移行元の情報処理装置Psから受信したか否かを判定する。
次に、図16を用いて、ページ情報の展開処理の処理手順について説明する。図16は、第1の実施形態に係る展開処理の処理手順を示すフローチャートである。なお、この処理は、図15に示すステップS602の処理に対応する。
図16に示すように、第1の受信部114は、データがコピー済みであるか否かを判定する(ステップS701)。ここで、第1の受信部114は、データがコピー済みではないと判定した場合(ステップS701、No)、受信したデータをメモリ領域に格納し、仮想マシンからの書き込みアクセス権を削除する(ステップS702)。これにより、受信データテーブル104の「データ」の上書きによるメモリ内容の破損を防止する。例えば、第1の受信部114は、ハッシュ値として受信したデータを復号化してメモリ領域に格納する。一方、第1の受信部114は、データがコピー済みであると判定した場合(ステップS701、Yes)、ステップS702をスキップする。第1の受信部114は、ページ情報に含まれるアドレスを物理メモリに対応付けて格納する(ステップS703)。ステップS703の終了後、第1の受信部114は、「ページ情報」の展開処理を終了する。
次に、図17を用いて、起動制御部115による処理手順について説明する。図17は、第1の実施形態に係る起動制御部115による処理手順を示すフローチャートである。図17に示すように、起動制御部115は、CPU情報を移行元の情報処理装置Psから受信したか否かを判定する(ステップS801)。ここで、起動制御部115は、CPU情報を移行元の情報処理装置Psから受信しなかったと判定した場合(ステップS801、No)、ステップS801に移行して、引き続きCPU情報を移行元の情報処理装置Psから受信したか否かを判定する。
一方、起動制御部115は、CPU情報を移行元の情報処理装置Psから受信したと判定した場合(ステップS801、Yes)、CPU情報の展開処理を実行する(ステップS802)。なお、起動制御部115によるCPU情報の展開処理は、図16に示した第1の受信部114によるページ情報の展開処理と同様である。
続いて、起動制御部115は、転送予定の全てのCPU情報を受信したか否かを判定する(ステップS803)。ここで、起動制御部115は、転送予定の全てのCPU情報を受信していないと判定した場合(ステップS803、No)、ステップS801に移行して、引き続きCPU情報を移行元の情報処理装置Psから受信したか否かを判定する。一方、起動制御部115は、転送予定の全てのCPU情報を受信したと判定した場合(ステップS803、Yes)、無効化情報を移行元の情報処理装置Psから受信する(ステップS804)。
そして、起動制御部115は、無効化情報に登録されたメモリ領域を無効化し(ステップS805)、仮想マシンBを起動させる(ステップS806)。起動制御部115は、ステップS806の後、処理を終了する。
次に、図18〜図20を用いて、第2の受信部116による処理手順について説明する。図18は、第1の実施形態に係る第2の受信部116による処理手順を示すフローチャートである。図18に示すように、第2の受信部116は、転送予定の全てのポストコピー情報を受信したか否かを判定する(ステップS901)。ここで、第2の受信部116は、転送予定の全てのポストコピー情報を受信したと判定した場合(ステップS901、Yes)、処理を終了する。一方、第2の受信部116は、転送予定のポストコピー情報が残存すると判定した場合(ステップS901、No)、ステップS902に移行する。
第2の受信部116は、転送された情報にデータを含むと判定した場合(ステップS902、Yes)、転送されたデータの展開処理を実行する(ステップS903)。なお、第2の受信部116によるポストコピー情報の展開処理は、図13に示した第1の受信部114によるページ情報の展開処理と同様である。一方、第2の受信部116は、転送された情報にデータを含まないと判定した場合(ステップS902、No)、ステップS904に移行する。
第2の受信部116は、ポストコピーされた情報がメモリ領域のポストコピー情報であるか否かを判定する(ステップS904)。第2の受信部は、ポストコピーされた情報がメモリ領域のポストコピー情報であると判定した場合(ステップS904、Yes)、展開されたメモリ領域を仮想マシンの物理メモリにマッピングし、仮想マシンからの書き込みアクセス権を削除し(ステップS905)、ステップS901に移行する。
一方、第2の受信部116は、ポストコピー情報がメモリ領域のポストコピー情報ではないと判定した場合(ステップS904、No)、すなわちディスク領域のポストコピー情報であると判定した場合、該当するディスク領域が仮想マシンによって書き込まれているか否かを判定する(ステップS906)。第2の受信部116は、該当するディスク領域が仮想マシンによって書き込まれていないと判定した場合(ステップS906、No)、受信したポストコピー情報をディスクに格納する(ステップS907)。ステップS906、およびS907の処理が完了したら、ステップS901に移行する。
続いて、図19は、第1の実施形態に係る移行先の情報処理装置Pdで動作する仮想マシンBが未転送のメモリを要求し、転送処理とは非同期でページフォルトが発生したときの、第2の受信部116による処理手順を示すフローチャートである。ここで、仮想マシンBが未転送のメモリを参照したときに、ホストマシンでページフォルトが発生する。第2の受信部116は、ページフォルトが発生したことを契機に以下の処理を実行する。
第2の受信部116は、ページフォルトが発生した仮想マシンBの物理メモリアドレスが受信済みであるか否かを判定する(ステップS911)。第2の受信部116は、未転送のデータを参照したと判定した場合(ステップS911、No)、仮想マシンBが参照したデータを移行元の情報処理装置Psに要求し、メモリ内容の受信処理を実行する(ステップS912)。一方、第2の受信部116は、未転送のデータを参照していないと判定した場合(ステップS911、Yes)、ステップS913に移行する。
第2の受信部116は、ページフォルトの原因が、メモリの読み出しによるものか、メモリの書き込みによるものかを判定する(ステップS913)。第2の受信部116は、ページフォルトの原因が、メモリの書き込みによるものと判定した場合(ステップS913、Yes)、メモリ書き込み用のページを新たに割り当て、受信したデータをコピーする(ステップS914)。ステップS913、およびステップ914の後、この処理を終了する。一方、第2の受信部116は、ページフォルトの原因が、メモリの書き込みによらないと判定した場合(ステップS913、No)、すなわちページフォルトの原因が、メモリの読み出しによるものと判定した場合、処理を終了する。
図20は、第1の実施形態に係る移行先の情報処理装置Pdで動作する仮想マシンBがディスクの読み出しを要求し、転送処理とは非同期で仮想マシンが情報処理装置にディスクI/Oを要求したときの、第2の受信部116による処理手順を示すフローチャートである。ここで、仮想マシンBが未転送のディスク領域に対して読み出しを行うと、仮想マシンの処理がホストマシンに復帰する。第2の受信部116は、ディスクの読み出しが要求されたことを契機に以下の処理を実行する。すなわち、第2の受信部116は、仮想マシンBが参照したデータを移行元の情報処理装置Psに要求し、所定のディスク領域に書き出す(ステップS921)。この後、第2の受信部116は、処理を終了する。
上述したように、第1の実施形態に係る情報処理装置10において、アクセス頻度の高いメモリ領域をプレコピー処理として転送してから仮想マシンを移行させることで、仮想マシンを異なる情報処理装置に移行させる際に、仮想マシンの移行時間を短くし、かつライブ移行後の性能の低下を軽減することができる。
具体的には、アクセス頻度の高いメモリ領域をプレコピー処理として転送することで、仮想マシンの停止期間を短縮化できる。また、アクセス頻度の高いメモリ領域をプレコピー処理として転送することで、仮想マシンの移行後にページフォルトの発生を低減することにより、移行後の仮想マシンの性能が低下することを軽減できる。このように、第1の実施形態によれば、仮想マシンの停止期間の短縮化と、仮想マシンの再開後にページフォルトの発生頻度の軽減とを両立することができる。
また、仮想マシンでは、同一の物理アドレスに格納されたデータを異なる仮想アドレスに対応付けて管理する場合があるが、第1の実施形態によれば、アクセス頻度の高いメモリ領域のうち、移行直前に仮想マシン上で動作しているプロセス・スレッドのアドレス空間に該当する物理メモリのみをプレコピー処理として転送する。ここで、第1の実施形態によれば、例えば、4KiB又は8KiB単位で識別子をつけ、同一の情報がある場合に、送信済の識別子のみ転送する。これにより、移行先の情報処理装置Pdでメモリ・ディスクの展開・コピーが不要となり、CPUやメモリの負荷を軽減することができる。
また、第1の実施形態によれば、内容が頻繁に変更されるプロセス・スレッドのスタック領域をプレコピー対象から除外する。これにより、移行先の情報処理装置Pdでメモリ・ディスクの展開・コピー回数を軽減することができるので、CPUやメモリの負荷を軽減することができる。
また、第1の実施形態によれば、プレコピー処理で転送したデータのうち、データの転送後に変更されたメモリ位置の一覧を示す無効化情報を生成し、生成した無効化情報を移行先の情報処理装置Pdに転送する。そして、移行先の情報処理装置Pdでは、無効化情報に登録されたメモリ領域へのアクセスを禁止する。これにより、移行元の情報処理装置Psと移行先の情報処理装置Pdとでデータの整合性を図ることができる。
(第2の実施形態)
さて、これまで本発明の実施形態について説明したが、本発明は上述した実施形態以外にも、その他の実施形態にて実施されてもよい。そこで、以下では、その他の実施形態を示す。
(システム構成)
また、本実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部又は一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部又は一部を公知の方法で自動的に行うこともできる。この他、上述文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については(例えば、図1〜図20)、特記する場合を除いて任意に変更することができる。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。
(プログラム)
図21は、コンピュータシステムによる処理を実行するための仮想マシンの移行プログラムによる情報処理がコンピュータを用いて具体的に実現されることを示す図である。図21に例示するように、コンピュータ1000は、例えば、メモリ1010と、CPU1020と、ハードディスクドライブインタフェース1030と、ディスクドライブインタフェース1040と、シリアルポートインタフェース1050と、ビデオアダプタ1060と、ネットワークインタフェース1070とを有する。これらの各部は、バス1080によって接続される。
メモリ1010は、ROM(Read Only Memory)1011およびRAM1012を含む。ROM1011は、例えば、BIOS(Basic Input/Output System)等のブートプログラムを記憶する。ハードディスクドライブインタフェース1030は、ハードディスクドライブ1090に接続される。ディスクドライブインタフェース1040は、ディスクドライブ1100に接続される。ディスクドライブ1100には、例えば、磁気ディスクや光ディスク等の着脱可能な記憶媒体が挿入される。シリアルポートインタフェース1050には、例えば、マウス1110およびキーボード1120が接続される。ビデオアダプタ1060には、例えば、ディスプレイ1130が接続される。
ここで、図21に例示するように、ハードディスクドライブ1090は、例えば、OS1091、アプリケーションプログラム1092、プログラムモジュール1093、プログラムデータ1094を記憶する。すなわち、開示の技術に係る仮想マシンの移行プログラムは、コンピュータによって実行される指令が記述されたプログラムモジュール1093として、例えばハードディスクドライブ1090に記憶される。具体的には、上記実施形態で説明した仮想デバイス75の各部と同様の情報処理を実行する手順各々が記述されたプログラムモジュール1093が、ハードディスクドライブ1090に記憶される。
また、仮想マシンの移行プログラムによる情報処理に用いられるデータは、プログラムデータ1094として、例えばハードディスクドライブ1090に記憶される。そして、CPU1020が、ハードディスクドライブ1090に記憶されたプログラムモジュール1093やプログラムデータ1094を必要に応じてRAM1012に読み出し、各種の手順を実行する。
なお、仮想マシンの移行プログラムに係るプログラムモジュール1093やプログラムデータ1094は、ハードディスクドライブ1090に記憶される場合に限られない。例えば、プログラムモジュール1093やプログラムデータ1094は、着脱可能な記憶媒体に記憶されても良い。この場合、CPU1020は、ディスクドライブ1100などの着脱可能な記憶媒体を介してデータを読み出す。また、同様に、仮想マシンの移行プログラムに係るプログラムモジュール1093やプログラムデータ1094は、ネットワーク(LAN(Local Area Network)、WAN(Wide Area Network)等)を介して接続された他のコンピュータに記憶されても良い。この場合、CPU1020は、ネットワークインタフェース1070を介して他のコンピュータにアクセスすることで各種データを読み出す。
(その他)
なお、本実施形態で説明した仮想マシンの移行プログラムは、インターネットなどのネットワークを介して配布することができる。また、仮想マシンの移行プログラムは、ハードディスク、フレキシブルディスク(FD)、CD−ROM、MO、DVDなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行することもできる。
10、40 情報処理装置
30、60 仮想マシン
75 仮想デバイス
101 転送用メモリ管理テーブル
102 転送データテーブル
103 受信用メモリ管理テーブル
104 受信データテーブル
111 第1の転送部
112 停止制御部
113 第2の転送部
114 第1の受信部
115 起動制御部
116 第2の受信部

Claims (8)

  1. 仮想マシンを動作させる情報処理装置において、
    前記仮想マシンを他の情報処理装置に移行させる際に、メモリ領域に格納された情報のうち、仮想マシンの移行直後に当該仮想マシンによるアクセス頻度の予測値が所定の閾値よりも高い情報を前記他の情報処理装置に転送する第1の転送部と、
    前記第1の転送部によって前記情報が転送された後に、前記仮想マシンを停止させて、前記仮想マシンの起動に用いられる構成情報を前記他の情報処理装置に転送する停止制御部と、
    前記他の情報処理装置において、前記仮想マシンが起動された場合、未転送の情報を前記他の情報処理装置に転送する第2の転送部と
    を有することを特徴とする情報処理装置。
  2. 前記第1の転送部は、前記アクセス頻度の予測値が所定の閾値よりも高い情報であって、同一の情報が前記他の情報処理装置に転送済みではない場合に、当該情報と当該情報が格納される位置情報とを前記他の情報処理装置に転送し、同一の情報が前記他の情報処理装置に転送済みである場合に、当該情報が格納される位置情報を前記他の情報処理装置に転送することを特徴とする請求項1に記載の情報処理装置。
  3. 前記第1の転送部は、前記アクセス頻度の予測値が所定の閾値よりも高い情報であって、当該情報が更新されていない場合に、当該情報を前記他の情報処理装置に転送することを特徴とする請求項1又は2に記載の情報処理装置。
  4. 前記停止制御部は、前記第1の転送部によって転送された情報のうち、前記仮想マシンが起動される前に更新された情報を特定した無効化情報を前記他の情報処理装置に転送し、当該無効化情報に登録された情報へのアクセスを禁止させることを特徴とする請求項1〜3のいずれか一つに記載の情報処理装置。
  5. 前記第2の転送部は、前記他の情報処理装置で動作させる前記仮想マシンによって参照される情報を当該他の情報処理装置から要求された場合、当該情報を優先的に当該他の情報処理装置に転送することを特徴とする請求項1〜4のいずれか一つに記載の情報処理装置。
  6. 他の情報処理装置で動作する仮想マシンの移行直後に当該仮想マシンによるアクセス頻度の予測値が所定の閾値よりも高い情報を当該他の情報処理装置から受信する第1の受信部と、
    前記仮想マシンの停止後に、当該仮想マシンの起動に用いられる構成情報を、前記他の情報処理装置から受信し、受信した前記構成情報を用いて当該仮想マシンを起動させる起動制御部と、
    前記仮想マシンを起動させた後に、未転送の情報を前記他の情報処理装置から受信する第2の受信部と
    を更に有することを特徴とする請求項1〜5のいずれか一つに記載の情報処理装置。
  7. 仮想マシンを動作させる情報処理装置が、
    前記仮想マシンを他の情報処理装置に移行させる際に、メモリ領域に格納された情報のうち、仮想マシンの移行直後に当該仮想マシンによるアクセス頻度の予測値が所定の閾値よりも高い情報を前記他の情報処理装置に転送する第1の転送工程と、
    前記第1の転送工程によって前記情報が転送された後に、前記仮想マシンを停止させて、前記仮想マシンの起動に用いられる構成情報を前記他の情報処理装置に転送する停止制御工程と、
    前記他の情報処理装置において、前記仮想マシンが起動された場合、未転送の情報を前記他の情報処理装置に転送する第2の転送工程と
    を含んだことを特徴とする仮想マシンの移行方法。
  8. 仮想マシンを動作させる情報処理装置に、
    前記仮想マシンを他の情報処理装置に移行させる際に、メモリ領域に格納された情報のうち、仮想マシンの移行直後に当該仮想マシンによるアクセス頻度の予測値が所定の閾値よりも高い情報を前記他の情報処理装置に転送する第1の転送手順と、
    前記第1の転送手順によって前記情報が転送された後に、前記仮想マシンを停止させて、前記仮想マシンの起動に用いられる構成情報を前記他の情報処理装置に転送する停止制御手順と、
    前記他の情報処理装置において、前記仮想マシンが起動された場合、未転送の情報を前記他の情報処理装置に転送する第2の転送手順と
    を実行させることを特徴とする仮想マシンの移行プログラム。
JP2013148044A 2013-07-16 2013-07-16 情報処理装置、仮想マシンの移行方法及び仮想マシンの移行プログラム Pending JP2015022380A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013148044A JP2015022380A (ja) 2013-07-16 2013-07-16 情報処理装置、仮想マシンの移行方法及び仮想マシンの移行プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013148044A JP2015022380A (ja) 2013-07-16 2013-07-16 情報処理装置、仮想マシンの移行方法及び仮想マシンの移行プログラム

Publications (1)

Publication Number Publication Date
JP2015022380A true JP2015022380A (ja) 2015-02-02

Family

ID=52486806

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013148044A Pending JP2015022380A (ja) 2013-07-16 2013-07-16 情報処理装置、仮想マシンの移行方法及び仮想マシンの移行プログラム

Country Status (1)

Country Link
JP (1) JP2015022380A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104636173A (zh) * 2015-03-11 2015-05-20 浪潮集团有限公司 一种快速bios配置方法
JP2017157153A (ja) * 2016-03-04 2017-09-07 富士通株式会社 情報処理装置、仮想マシン移動方法、および仮想マシン制御プログラム
JP2020113031A (ja) * 2019-01-11 2020-07-27 富士通株式会社 情報処理システム、管理装置および管理プログラム
JP2021007027A (ja) * 2016-06-10 2021-01-21 グーグル エルエルシーGoogle LLC 投機的仮想マシン実行

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104636173A (zh) * 2015-03-11 2015-05-20 浪潮集团有限公司 一种快速bios配置方法
JP2017157153A (ja) * 2016-03-04 2017-09-07 富士通株式会社 情報処理装置、仮想マシン移動方法、および仮想マシン制御プログラム
JP2021007027A (ja) * 2016-06-10 2021-01-21 グーグル エルエルシーGoogle LLC 投機的仮想マシン実行
JP7047036B2 (ja) 2016-06-10 2022-04-04 グーグル エルエルシー 投機的仮想マシン実行
JP2020113031A (ja) * 2019-01-11 2020-07-27 富士通株式会社 情報処理システム、管理装置および管理プログラム
JP7197783B2 (ja) 2019-01-11 2022-12-28 富士通株式会社 情報処理システム、管理装置および管理プログラム

Similar Documents

Publication Publication Date Title
US8943498B2 (en) Method and apparatus for swapping virtual machine memory
US8527466B2 (en) Handling temporary files of a virtual machine
US9195494B2 (en) Hashing storage images of a virtual machine
EP3502877B1 (en) Data loading method and apparatus for virtual machines
US10747673B2 (en) System and method for facilitating cluster-level cache and memory space
US8458284B2 (en) Systems and methods for efficient live application migration within bandwidth constrained networks
US9367459B2 (en) Scheduling method and multi-core processor system
US9058195B2 (en) Virtual machines failover
US7792918B2 (en) Migration of a guest from one server to another
US11809901B2 (en) Migrating the runtime state of a container between two nodes
US11729218B2 (en) Implementing a service mesh in the hypervisor
JP6123626B2 (ja) 処理再開方法、処理再開プログラムおよび情報処理システム
US8732427B2 (en) Systems and methods for collapsing a derivative version of a primary storage volume
JP2015022380A (ja) 情報処理装置、仮想マシンの移行方法及び仮想マシンの移行プログラム
US20120159482A1 (en) Seamless application integration apparatus and method
US20170277632A1 (en) Virtual computer system control method and virtual computer system
US10902014B1 (en) Reducing network traffic when replicating memory data across hosts
US10341177B2 (en) Parallel computing system and migration method
US11314700B1 (en) Non-native transactional support for distributed computing environments
US10432727B1 (en) Reducing network traffic when replicating memory data across hosts
JP5417303B2 (ja) 仮想計算機システム及びそのインストール方法
Song et al. Tsmc: A novel approach for live virtual machine migration
US9652296B1 (en) Efficient chained post-copy virtual machine migration
US20230342172A1 (en) Scalable asynchronous communication for encrypted virtual machines
US20220308909A1 (en) Exposing untrusted devices to virtual machines