(57)【要約】      （修正有）【課題】移送元と移送先のディスクデータが一致している場合（例えば、共有ディスクやNFS(Network File System)の利用）に、データ転送量を削減する。【解決手段】移送元及び移送先のシステムでディスクを共有している場合に、仮想マシンのメモリのうち、読み出したディスクデータを保持しているページキャッシュのページキャッシュアドレスを取得し、該ページキャッシュ以外のビットを立て、残りのメモリ量が一定値以下になるまで、メモリを移送先に送信し、残りのメモリ量が一定値以下になった場合は仮想マシンを停止させ、ディスクにデータが存在するページキャッシュをクリアする。【選択図】図１
2013250886.tif 000002
【特許請求の範囲】
【請求項１】
ある物理マシン上で動作する仮想マシンを、異なる物理マシン上に移送する際の仮想マシンのメモリを複製するための仮想マシンのメモリ複製装置であって、
移送元のシステム及び移送先のシステムでディスクを共有している場合に、
前記移送元のシステムの仮想マシンのメモリ内の、前記ディスクにデータが存在するページキャッシュについては、前記移送先に転送を行わない転送制御手段を有する
ことを特徴とする仮想マシンのメモリ複製装置。
【請求項２】
前記転送制御手段は、
前記仮想マシンのメモリのうち、読み出したディスクデータを保持しているページキャッシュのページキャッシュアドレスを取得し、該ページキャッシュ以外のビットを立て、残りのメモリ量が一定値以下になるまで、メモリを移送先に送信し、残りのメモリ量が一定値以下になった場合は仮想マシンを停止させ、前記ディスクにデータが存在するページキャッシュをクリアする手段を含む
請求項１記載の仮想マシンのメモリ複製装置。
【請求項３】
ある物理マシン上で動作する仮想マシンを、異なる物理マシン上に移送する際の仮想マシンのメモリを複製するための仮想マシンのメモリ複製方法であって、
移送元のシステム及び移送先のシステムでディスクを共有している場合に、
前記移送元のシステムの仮想マシンのメモリ内の、前記ディスクにデータが存在するページキャッシュについては、前記移送先に転送を行わない転送制御ステップを行う
ことを特徴とする仮想マシンのメモリ複製方法。
【請求項４】
前記転送制御ステップにおいて、
前記仮想マシンのメモリのうち、読み出したディスクデータを保持しているページキャッシュのページキャッシュアドレスを取得し、該ページキャッシュ以外のビットを立て、残りのメモリ量が一定値以下になるまで、メモリを移送先に送信し、残りのメモリ量が一定値以下になった場合は仮想マシンを停止させ、前記ディスクにデータが存在するページキャッシュをクリアする
請求項３記載の仮想マシンのメモリ複製方法。
【請求項５】
コンピュータを、
請求項１または２に記載の仮想マシンのメモリ複製装置の各手段として機能させるための仮想マシンのメモリ複製プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想マシンのメモリ複製装置及び方法及びプログラムに係り、特に、物理マシンの間で仮想マシンを移送するシステムにおいて、移送時間の削減や移送のためのメモリ転送量の削減を行うための仮想マシンのメモリ複製装置及び方法及びプログラムに関する。
【背景技術】
【０００２】
ある物理マシン上で動作する仮想マシンを、異なる物理マシン上に移送するためには、移送元から移送先に仮想マシン状態（CPU、メモリ、デバイス状態）を転送し、移送先の物理マシン上で仮想マシンを動作させる必要がある。
【０００３】
そのための方法として、移送元の物理マシン上で動作する仮想マシンのサービス停止時間を最小限に抑えて、移送先の物理マシンに仮想マシン状態を転送する方法がある（例えば、非特許文献1参照）。
【０００４】
以下に、従来技術によるシステムおよび動作を示す。図１は、システム構成を示す。同図に示すシステムは、移送元のシステム１０と移送先のシステム２０から構成される。各システム共に、仮想マシン１１，２１、仮想マシン制御部１２，２２、ハードウェア１３，２３を有する。なお、以下の記載において、移送元および移送先のシステム間の通信は、ハードウェア１３，２３内の通信インタフェース（図示せず）が通信用ネットワークを介して行うものとする。移送元のシステム１０の仮想マシン制御部１２は、仮想マシン送信部１２１を有し、移送先のシステム２０の仮想マシン制御部２２は仮想マシン受信部２２１を有する。
【０００５】
なお、同図ではディスクを同一状態に保つための構成として、１つのディスク３０を示しているが、この例に限定されることなく、移送元・移送先がそれぞれ別々のディスクを利用し、常に同一に保つ処理を行ってもよい。
【０００６】
まず、移送元システム１０の仮想マシン制御部１２内の仮想マシン送信部１２１の処理について説明する。
【０００７】
図２は、仮想マシン送信部の全体フローチャートである。
【０００８】
ステップ１１０）仮想マシン送信部１２１は、移送元システム１０の仮想マシン１１のメモリページをビット単位で管理し、送るべきメモリページのビットを立てる処理を行う。
【０００９】
ステップ１２０）メモリページを管理するビットを順に確認し、ビットが立っている場合、対応するメモリページを移送先の仮想マシン２０に転送し、ビットをクリアする。本処理では、送るべきメモリページ数が十分に小さくなるまで、反復的にメモリを移送先に転送する。その間、仮想マシン１０は停止していないため、既に転送済みのメモリページに変更が生じると、対応するビットを立てる処理を行う。
【００１０】
ステップ１３０）仮想マシン１０を停止し、残りのビットが立っているメモリページと、仮想マシンのCPU、デバイス状態を移送先に転送する。
【００１１】
図３は、従来技術におけるＳ１１０の詳細フローチャートである。
【００１２】
ステップ６１０）全てのメモリページに対応するビットを立てる。
【００１３】
図４は、従来技術におけるＳ１２０の詳細フローチャートである。
【００１４】
ステップ３１０）仮想マシン送信部１２１は、メモリページを管理するビットを確認する。
【００１５】
ステップ３２０）ビットが立っている場合はステップ３３０に移行する。立っていない場合はステップ３１０に移行し、次のビットを確認する。
【００１６】
ステップ３３０）ステップ３２０で確認したビットに対応するメモリページを移送先に送信する。
【００１７】
ステップ３４０）送信したメモリページに対応するビットをクリアする。
【００１８】
ステップ３５０）残りメモリ量が十分に小さい（ユーザが任意に設定）場合は、処理を終了し、ステップ１３０に移行する。そうでない場合は、ステップ３１０に移行する。
【００１９】
図５は、従来技術におけるＳ１３０の詳細フローチャートである。
【００２０】
ステップ７１０）仮想マシンを停止する。（これにより、メモリデータに新たな変更は生じなくなる。）
ステップ７２０）ステップ１２０で転送していない残りのビットが立っているメモリデータとCPU、デバイス状態を移送先に送信する。
【００２１】
次に、移送先システム２０の仮想マシン制御部２２内の仮想マシン受信部２２１の処理について説明する。
【００２２】
図６は、移送先の仮想マシン受信部のフローチャートである。
【００２３】
ステップ５１０）仮想マシン受信部２２１は、移送元システム１０からメモリデータを受信する。
【００２４】
ステップ５２０）移送元システム１０から全メモリデータを受信した場合はステップ５３０に移行する。そうでない場合は、ステップ５１０に移行する。
【００２５】
ステップ５３０）移送元システム１０から、CPU、デバイス状態を受信する。
【００２６】
ステップ５４０）受信したデータを移送先の仮想マシン２１に反映し、仮想マシン２１を再開する。
【先行技術文献】
【非特許文献】
【００２７】
【非特許文献１】Christopher Clark, Keir Fraser, Steven Hand, Jacob Corm Hansen, Eric Jul, Christian Limpach, Ian Pratt, and Andrew Warfield. Live migration of virtual machines. Proceedings of the 2nd conference on Symposium on Networked Systems Design & Implementation, volume 2, pp 273-286, 2005.
【発明の概要】
【発明が解決しようとする課題】
【００２８】
上記の非特許文献１の技術は、仮想マシンのメモリデータを全て転送する必要があるため、転送量が大きいという問題がある。また、メモリの内、読み出したディスクデータを保持しているページキャッシュに関しては、移送元と移送先でディスクデータを共有しているシステムでは、既に移送先にも存在するデータであるため、冗長な転送であるという問題がある。
【００２９】
本発明は、上記の点に鑑みなされたもので、移送元と移送先のディスクデータが一致している場合（例えば、共有ディスクやNFS(Network File System)の利用）に、データ転送量を削減することが可能な仮想マシンのメモリ複製装置及び方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００３０】
上記の課題を解決するため、本発明（請求項１）は、ある物理マシン上で動作する仮想マシンを、異なる物理マシン上に移送する際の仮想マシンのメモリを複製するための仮想マシンのメモリ複製装置であって、
移送元のシステム及び移送先のシステムでディスクを共有している場合に、
前記移送元のシステムの仮想マシンのメモリ内の、前記ディスクにデータが存在するページキャッシュについては、前記移送先に転送を行わない転送制御手段を有する。
【００３１】
また、本発明（請求項２）は、前記転送制御手段において、
前記仮想マシンのメモリのうち、読み出したディスクデータを保持しているページキャッシュのページキャッシュアドレスを取得し、該ページキャッシュ以外のビットを立て、残りのメモリ量が一定値以下になるまで、メモリを移送先に送信し、残りのメモリ量が一定値以下になった場合は仮想マシンを停止させ、前記ディスクにデータが存在するページキャッシュをクリアする手段を含む。
【発明の効果】
【００３２】
上記のように本発明によれば、移送元から移送先に仮想マシンを移送する際に、ページキャッシュメモリに関しては、ビットを立てないので、転送量が削減できる。また、移送元はディスクにデータが存在するページキャッシュをクリアした後に、残りメモリページ、CPU、デバイス状態を移送先に送信し、切り替わるため、移送先はではページキャッシュが存在しない状態から再開するため、移送先で仮想マシンを再開させても矛盾が生じない。
【図面の簡単な説明】
【００３３】
【図１】従来及び本発明のシステム構成図である。
【図２】従来及び本発明の仮想マシン送信部の全体のフローチャートである。
【図３】従来技術におけるS110の詳細フローチャートである。
【図４】従来及び本発明のS120の詳細フローチャートである。
【図５】従来技術におけるS130の詳細フローチャートである。
【図６】従来及び本発明の仮想マシン受信部のフローチャートである。
【図７】本発明の一実施の形態における移送準備フェーズ（S110）の詳細フローチャートである。
【図８】本発明の一実施の形態における仮想マシンを停止し全データを送信するフェーズ（S130）の詳細フローチャートである。
【図９】本発明と従来技術の仮想マシン移送に必要なデータ転送量の比較である。
【図１０】本発明と従来技術の仮想マシン移送にかかる時間の比較である。
【発明を実施するための形態】
【００３４】
以下、図面と共に本発明の実施の形態を説明する。
【００３５】
本発明のシステム構成は、図１と同様である。
【００３６】
移送元システム１０で仮想マシン１１の移送が開始されると、転送すべきメモリページのトラッキング（具体的な処理は、非特許文献1を参照）を行う。その際に、本発明では、図２に示したフローチャートにおいて、移送準備のフェーズでは（ステップ１１０）、ページキャッシュアドレスを取得し、ページキャッシュ以外のビットを立てる。次に、反復コピーのフェーズでは（ステップ１２０）、残りメモリ量が一定量以下になるまで、メモリの送信を行う。残りメモリ量が一定量以下になると、仮想マシン１１を停止し、ディスク３０にデータが存在するページキャッシュをクリアする。（こうすることにより、移送元では元々ページキャッシュが存在しない状態から仮想マシン１１を再開することができ、矛盾が生じなくなる。）最後に、残りのメモリとCPU、デバイス状態を移送先に送信する（ステップ１３０）。
【００３７】
移送先システム２０では、全メモリを受信するまで、メモリの受信を行う。全メモリ受信後、CPUなど他デバイス状態と受信したデータを仮想マシン２１に反映し、仮想マシン２１を再開する。
【００３８】
次に、移送元システム１０の仮想マシン制御部１２内の仮想マシン送信部１２１の処理について、フローチャートを基に説明する。
【００３９】
移送元システムの仮想マシンの概要動作は図２に示す流れと同様であるので、その説明を省略する。
【００４０】
従来の技術では、移送準備のフェーズ（ステップ１１０）では、全てのメモリページに対応するビットを立てる処理を行っていたが、本発明は以下の処理を行う。
【００４１】
図７は、本発明の一実施の形態における移送準備フェーズ(S110)の詳細フローチャートである。
【００４２】
ステップ２１０）仮想マシン送信部１２１では、仮想マシン１１のメモリアドレスの内、特にページキャッシュのアドレスを取得する。
【００４３】
ステップ２２０）ページキャッシュ以外の全メモリページに対応するビットを立てる。
【００４４】
図２の反復コピーのフェーズ（ステップ１２０）の処理は従来技術と同様であるので、その説明を省略する。
【００４５】
図２の仮想マシン１１を停止し、全データを送信するフェーズ（ステップ１３０）では、本発明では、以下の処理を行う。
【００４６】
図８は、本発明の一実施の形態におけるＳ１３０の詳細フローチャートである。
【００４７】
ステップ４１０）仮想マシン１１を停止する。
【００４８】
ステップ４２０）ディスク３０にデータが存在するページキャッシュをクリアする。
【００４９】
ステップ４３０）ビットが立っている残りのメモリページと、CPU、デバイス状態を移送先システム２０に送信する。
【００５０】
以下に、本発明と従来技術の仮想マシン移送に必要なデータ転送量及びデータ転送に要する時間についての比較実験を述べる。
【００５１】
図９は、本発明と従来技術の仮想マシン移送に必要なデータ転送量の比較を示す。実験環境は、ゲストＯＳのメモリは1.5G、さらに、無負荷の状態で仮想マシン移送を実行する。
【００５２】
同図の縦軸は、移送元から移送先に仮想マシンのデータを移送した際に生じた全データ転送量を示している。横軸は、仮想マシンメモリ（1.5GB）の内、ページキャッシュが占めるサイズを示している。本実験では、仮想マシンのページキャッシュサイズを0MBから1200MＢに100MBずつ変化させて、各ページキャッシュサイズの場合に、仮想マシン移送に必要だったデータ転送量を測定した。本発明により、ページキャッシュサイズは転送せずに、仮想マシンを移送することができるため、仮想マシンメモリの内、ページキャッシュの量が多いほど、移送に必要なデータ転送量を削減することができていることが確認できた。
【００５３】
図１０は、本発明と従来技術の仮想マシン移送にかかる時間の比較を示す。実験環境は上記と同様である。
【００５４】
同図の縦軸は、移送元から移送先に仮想マシンを移送するのにかかった時間であり、横軸は、仮想マシンメモリ（1.5GB）の内、ページキャッシュが占めるサイズを示している。本実験では、仮想マシンのページキャッシュサイズを0MBから1200MBに100MBずつ変化させて、各ページキャッシュサイズの場合に、仮想マシン移送にかかった時間を測定した。本発明により、図９で示したとおり、移送に必要なデータ転送量を削減することができ、結果として移送に必要な時間もページキャッシュサイズに比例して削減できていることが確認できた。
【００５５】
上記のように、本発明は、仮想マシンを移送する際に、移送元と移送先で共有するディスクにデータが存在するページキャッシュに関しては、転送をしないことで、移送に必要なメモリ転送量を削減することができる。また、メモリ転送量を削減することで、移送にかかる時間も削減することができる（図９、図１０参照）。
【００５６】
本発明では、ページキャッシュを転送しないために、ページキャッシュアドレスを取得し、ページキャッシュに対応するビットは立てない。また、転送先で仮想マシンを再開したときに、ページキャッシュが存在しないという矛盾が生じるのを防ぐために、仮想マシンを停止した後に、ページキャッシュをクリアする。
【００５７】
上記の図１に示す本実施の形態の移送元及び移送先の動作をプログラムとして構築し、移送元のシステム及び移送先のシステムとして利用されるコンピュータにインストールして実行させる、または、ネットワークを介して流通させることが可能である。
【００５８】
なお、本発明は、上記の実施の形態に限定されることなく、特許請求の範囲内において、種々変更・応用が可能である。
【符号の説明】
【００５９】
１０  移送元システム
１１，２１  仮想マシン
１２，２２  仮想マシン制御部
１３，２３  ハードウェア
２０  移送先システム
３０  ディスク
１２１  仮想マシン送信部
２２１  仮想マシン受信部
【図１】
2013250886.tif 000003
【図２】
2013250886.tif 000004
【図３】
2013250886.tif 000005
【図４】
2013250886.tif 000006
【図５】
2013250886.tif 000007
【図６】
2013250886.tif 000008
【図７】
2013250886.tif 000009
【図８】
2013250886.tif 000010
【図９】
2013250886.tif 000011
【図１０】
2013250886.tif 000012