(57)【要約】【課題】  物理マシンの間で仮想マシンを定期的に複製する際に、複製元と複製先のディスクデータが一致している場合に、データ転送量を削減する。【解決手段】  本発明は、複製元システムと複製先システムのディスクデータが一致している場合に、複製元システムは、ページキャッシュアドレスを取得し、該ページページキャッシュアドレスに該当するビットを除いてメモリページを、メモリ残量が所定の量になるまで複製先システムに送信し、所定の量になったら仮想マシンを停止し、残りのメモリページとデバイス状態を該複製先システムに送信し、複製先システムは、複製元システムから全メモリページを受信し、デバイス状態を受信し、仮想マシンに反映させ、その後、ページキャッシュをクリアする。【選択図】  図１
2014219918.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.
【発明の概要】
【発明が解決しようとする課題】
【００２７】
しかしながら、上記の非特許文献1の技術は、仮想マシンのメモリデータを全て転送する必要があるため、転送量が大きいという問題がある。また、メモリの内、読み出したディスクデータを保持しているページキャッシュに関しては、複製元と複製先でディスクデータを共有しているシステムでは、既に複製先にも存在するデータであるため、冗長な転送であるという問題がある。
【００２８】
本発明は、上記の点に鑑みなされたもので、複製元と複製先のディスクデータが一致している場合（例えば、共有ディスクやNFS(Network File System)の利用）に、データ転送量を削減することが可能な仮想マシンのメモリ複製方法及びシステム及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００２９】
上記の課題を解決するため、本発明は、物理マシンの間で仮想マシンを定期的に複製する仮想マシンのメモリ複製システムであって、
複製元システムと複製先システムを有し、
前記複製元システムと前記複製先システムのディスクデータが一致している場合に、
前記複製元システムは、
ページキャッシュアドレスを取得し、該ページページキャッシュアドレスに該当するビットを除いてメモリページを、メモリ残量が所定の量になるまで前記複製先システムに送信し、所定の量になったら仮想マシンを停止し、残りのメモリページとデバイス状態を該複製先システムに送信する手段を有し、
前記複製先システムは、
前記複製元システムから全メモリページを受信し、デバイス状態を受信し、仮想マシンに反映させる手段を有する。
【００３０】
また、本発明は、前記複製先システムにおいて、
前記複製元システムから受信したメモリページ及びデバイス状態を前記仮想マシンに反映させた後、ページキャッシュをクリアする手段を含む。
【発明の効果】
【００３１】
上記のように本発明は、複製元から複製先に仮想マシンを複製する際に、ページキャッシュメモリに関しては、ビットを立てないので、転送量が削減できる。また、複製先で仮想マシンを再開する際に、ページキャッシュをクリアする処理を実行し、仮想マシン状態をページキャッシュが存在しない状態へと遷移させることで、複製先で仮想マシンを再開させても矛盾が生じない。
【図面の簡単な説明】
【００３２】
【図１】従来及び本発明におけるシステム構成図である。
【図２】従来技術における仮想マシン送信部の全体フローチャートである。
【図３】従来技術におけるＳ１１０の詳細フローチャートである。
【図４】従来技術におけるＳ１２０の詳細フローチャートである。
【図５】従来技術におけるＳ１３０の詳細フローチャートである。
【図６】従来技術における複製先システムの仮想マシン受信部のフローチャートである。
【図７】本発明の一実施の形態におけるＳ１１０の詳細フローチャートである。
【図８】本発明の一実施の形態における仮想マシン受信部のフローチャートである。
【図９】本発明と従来技術の仮想マシン複製に必要なデータ転送量の比較である。
【図１０】本発明と従来技術の仮想マシン複製にかかる時間の比較である。
【発明を実施するための形態】
【００３３】
以下、図面と共に本発明の実施の形態を説明する。
【００３４】
図１に示すシステムにおいて、複製元システム１００で仮想マシン１１０の複製が開始されると、転送すべきメモリページのトラッキング（具体的な処理は、非特許文献1を参照）を行う。その際に、本発明では、ページキャッシュアドレスを取得し、ページキャッシュメモリに該当するビットは落とす。次に、反復コピーのフェーズでは、残りメモリ量が一定量以下になるまで、メモリの送信を行う。残りメモリ量が一定量以下になると、仮想マシンを停止し、残りのメモリとCPU、デバイス状態を複製先システム２００に送信する。
【００３５】
複製先システム２００では、全メモリページを受信するまで、メモリの受信を行う。全メモリ受信後、CPUなど他デバイス状態と受信したデータを仮想マシンに反映する。更に、ページキャッシュをクリアする処理を実行する。こうすることにより、複製先の仮想マシン状態が、ページキャッシュがない状態となるため、複製先で仮想マシンを再開しても矛盾が生じなくなる。
【００３６】
以下に、前述の図２のフローチャートに沿って説明する。
【００３７】
次に、複製元システム１００の仮想マシン制御部１２０内の仮想マシン送信部１２１の処理について、フローチャートを基に説明する。
【００３８】
本発明の仮想マシン送信部１２１の処理は、図２のステップ１１０の処理において、従来の技術とは異なる。
【００３９】
図７は、本発明の一実施の形態におけるステップ１１０の処理の詳細フローチャートである。
【００４０】
ステップ２１０）仮想マシン送信部１２１は、仮想マシン１１０のメモリアドレスの内、特にページキャッシュのアドレスを取得する。
【００４１】
ステップ２２０）  ページキャッシュ以外の全メモリページに対応するビットを立てる。
【００４２】
本発明では、図２のステップ１２０の反復コピーの処理については、従来技術と同様であるので、その説明を省略する。
【００４３】
また、図２のステップ１３０の仮想マシン１１０を停止し、全データを複製先システム２００に送信する処理は、従来技術と同様であるため、その説明を省略する。
【００４４】
図８は、本発明の一実施の形態における複製先システムの仮想マシン受信部のフローチャートである。
【００４５】
ステップ５１０）  仮想マシン受信部２２１は、複製元システム１００からメモリページを受信する。
【００４６】
ステップ５２０）  複製元システム１００から全メモリページを受信した場合はステップ５３０に移行する。そうでない場合は、ステップ５１０に移行する。
【００４７】
ステップ５３０）  複製元システム１００から、CPU、デバイス状態を受信する。
【００４８】
ステップ５４０）  仮想マシン受信部２２１は、受信したデータを複製先システム２００の仮想マシン２１０に反映する。
【００４９】
ステップ５５０）  仮想マシン受信部２２１は、ページキャッシュをクリアする。
【００５０】
本発明は、仮想マシンを複製する際に必要なメモリ転送量を削減するという課題に対し、仮想マシンを複製する際に、複製元システム１００と複製先システム２００で共有するディスクにデータが存在するページキャッシュに関しては、転送をしないことで、複製に必要なメモリ転送量を削減することができる。また、メモリ転送量を削減することで、複製にかかる時間も削減することができる。
【００５１】
図９に、本発明と従来技術の仮想マシン複製に必要なデータ転送量の比較を示す。
【００５２】
同図の縦軸は、複製元システム１００から複製先システム２００に仮想マシンを複製した際に生じた全データ転送量を示す。横軸は、仮想マシンメモリ(1.5GB)の内、ページキャッシュが占めるサイズを示している。本実験では、仮想マシンのページキャッシュサイズを0MBから1200MNBに100MBずつ変化させて、各ページキャッシュサイズの場合に、仮想マシン複製に必要だったデータ転送量を測定した。本発明により、ページキャッシュサイズは転送せずに、仮想マシンを複製することができるため、仮想マシンメモリの内、ページキャッシュの量が多いほど、複製に必要なデータ転送量を削減することが可能であることを確認できた。なお、図９の実験環境において、ゲストOSのメモリは1.5GB、さらに無負荷の状態で、仮想マシン複製を実行した。
【００５３】
また、図１０は、本発明と従来技術の仮想マシン複製にかかる時間の比較を示す。
【００５４】
同図の縦軸は、複製元システム１００から複製先システム２００に仮想マシンを複製するのにかかった時間であり、横軸は仮想マシンメモリ（1.5GB）の内、ページキャッシュ占めるサイズを示している。本実験では、仮想マシンのページキャッシュサイズを0MBから1200MBに100MBずつ変化させて、各ページキャッシュサイズの場合に、仮想マシン複製にかかった時間を測定した。本発明により、図１０で示したとおり、複製に必要なデータ転送量を削減することができ、結果として複製に必要な時間もページキャッシュサイズに比例して削減できていることが確認できた。なお、図１０の実験環境において、ゲストOSのメモリは1.5GB、さらに無負荷の状態で、仮想マシン複製を実行した。
【００５５】
本発明では、ページキャッシュを転送しないために、ページキャッシュアドレスを取得し、ページキャッシュに対応するビットは立てない。また、複製元ではなく、複製先でページキャッシュをクリアするという処理を実行させるため、例えば、非特許文献2（B, Curry., G, Lefebvre., D, Meyer., M, Feeley., N, Hutchinson., A, Warfield.: Remus: High Availability via Asynchronous Virtual Machine Replication, 5th USENIX Symposium on Networked Systems Design and Implementation, pp.161-174 (2008)）のような、定期的に仮想マシン状態を複製させるシステムに適用した際も、複製元サーバ性能に影響を与えることなく、仮想マシン複製に必要な転送量の削減効果を得ることができる。
【００５６】
なお、上記の図１の複製元システム１００及び複製先システム２００内の各構成要素の動作をプログラムとして構築し、複製元システム（装置）、複製先システム(装置)として利用されるコンピュータにインストールして実行させる、または、ネットワークを介して流通させることが可能である。
【００５７】
本発明は、上記の実施の形態に限定されることなく、特許請求の範囲内において、種々変更・応用が可能である。
【符号の説明】
【００５８】
１００  複製元システム
１１０  仮想マシン
１２０  仮想マシン制御部
１２１  仮想マシン送信部
１３０  ハードウェア
２００  複製先システム
２１０  仮想マシン
２２０  仮想マシン制御部
２２１  仮想マシン受信部
２３０  ハードウェア
３００  ディスク
【図１】
2014219918.tif 000003
【図２】
2014219918.tif 000004
【図３】
2014219918.tif 000005
【図４】
2014219918.tif 000006
【図５】
2014219918.tif 000007
【図６】
2014219918.tif 000008
【図７】
2014219918.tif 000009
【図８】
2014219918.tif 000010
【図９】
2014219918.tif 000011
【図１０】
2014219918.tif 000012