(57)【要約】【課題】  異なる物理マシン上で動作する仮想マシンの実行状態（ＣＰＵ、メモリ、デバイス）及びストレージを同期させるシステムにおいて、同期のための転送量を削減し、同期のためのリソース利用量を削減する。【解決手段】  本発明は、送信側の仮想マシンのストレージの同期制御手段に、送信側ストレージへの書き込みが発生すると、前回の同期時からの差分のメモリを取得して、実行状態の差分を受信側の仮想マシンに送信する差分送出手段と、当該送信側の仮想マシンのストレージへの書き込み命令を受信側の仮想マシンに送出する書き込み制御手段と、を含み、受信側の仮想マシンのストレージ同期制御手段に、送信側の仮想マシンから受信した書き込み命令に基づいて、当該受信側の仮想マシンのメモリを当該受信側の仮想マシンのストレージに書き込む書き込み手段を含む。【選択図】  図１
2012164075.tif 000002
【特許請求の範囲】
【請求項１】
異なる物理マシン上で動作する仮想マシンのＣＰＵ、メモリ、デバイスの各実行状態及びストレージを同期させる、送信側の仮想マシン及び受信側の仮想マシンを有するストレージ同期システムであって、
前記送信側の仮想マシン及び前記受信側の仮想マシンは、
仮想マシンの実行状態を、該送信側の仮想マシン及び該受信側の仮想マシンで常に同一状態に保つ仮想マシンの実行状態同期制御手段と、
ストレージを該送信側の仮想マシン及び該受信側の仮想マシンで常に同一状態に保つストレージの同期制御手段と、
を有し、
前記送信側の仮想マシンのストレージの同期制御手段は、
送信側ストレージへの書き込みが発生すると、前回の同期時からの差分のメモリを取得して、実行状態の差分を受信側の仮想マシンに送信する差分送出手段と、
当該送信側の仮想マシンのストレージへの書き込み命令を前記受信側の仮想マシンに送出する書き込み制御手段と、
を含み、
前記受信側の仮想マシンのストレージ同期制御手段は、
前記送信側の仮想マシンから受信した前記書き込み命令に基づいて、当該受信側の仮想マシンのメモリを当該受信側の仮想マシンのストレージに書き込む書き込み手段を含む
ことを特徴とするストレージ同期システム。
【請求項２】
前記送信側の仮想マシンの前記書き込み制御手段は、
前記送信側仮想マシンのストレージの書き込み命令として、
ストレージへの書き込み位置、書き込み対象のデータの格納位置、書き込みサイズを含み、
前記受信側の仮想マシンの書き込み手段は、
前記書き込み命令に含まれる前記書き込み位置に、前記書き込み対象のデータの格納位置で指定される受信側仮想マシンのメモリを、前記書き込みサイズ分当該受信側の仮想マシンのストレージに書き込む手段を含む
請求項１記載のストレージ同期システム。
【請求項３】
異なる物理マシン上で動作する仮想マシンのＣＰＵ、メモリ、デバイスの各実行状態及びストレージを同期させる、送信側の仮想マシン及び受信側の仮想マシンを有するストレージ同期システムにおける送信側の仮想マシンであって、
仮想マシンの実行状態を該送信側の仮想マシン及び該受信側の仮想マシンで常に同一状態に保つ仮想マシンの実行状態同期制御手段と、
ストレージを該送信側の仮想マシン及び該受信側の仮想マシンで常に同一状態に保つストレージの同期制御手段と、
を有し、
前記ストレージの同期制御手段は、
送信側ストレージへの書き込みが発生すると、前回の同期時からの差分のメモリを取得して、実行状態の差分を受信側の仮想マシンに送信する差分送出手段と、
当該送信側の仮想マシンのストレージへの書き込み命令を前記受信側の仮想マシンに送出する書き込み制御手段と、
を有し、
前記書き込み制御手段は、
前記送信側仮想マシンのストレージの書き込み命令として、
ストレージへの書き込み位置、書き込み対象のデータの格納位置、書き込みサイズを含む
ことを特徴とする送信側の仮想マシン。
【請求項４】
異なる物理マシン上で動作する仮想マシンのＣＰＵ、メモリ、デバイスの各実行状態及びストレージを同期させる、送信側の仮想マシン及び受信側の仮想マシンを有するストレージ同期システムにおける受信側の仮想マシンであって、
仮想マシンの実行状態を前記送信側の仮想マシン及び当該受信側の仮想マシンで常に同一状態に保つ仮想マシンの実行状態同期制御手段と、
ストレージを前記送信側の仮想マシン及び該受信側の仮想マシンで常に同一状態に保つストレージの同期制御手段と、
を有し、
前記ストレージ同期制御手段は、
前記送信側の仮想マシンから受信した、送信側の仮想マシンのストレージへの書き込み命令に基づいて、当該受信側の仮想マシンのメモリを当該受信側の仮想マシンのストレージに書き込む書き込み手段を有し、
前記書き込み手段は、
前記書き込み命令として、ストレージへの書き込み位置、書き込み対象のデータの格納位置、書き込みサイズを受信し、該書き込み命令に含まれる該書き込み位置に、該書き込み対象のデータの格納位置で指定される受信側仮想マシンのメモリを該書き込みサイズ分当該受信側の仮想マシンのストレージに書き込む手段を含む
ことを特徴とする受信側の仮想マシン。
【請求項５】
異なる物理マシン上で動作する仮想マシンのＣＰＵ、メモリ、デバイスの各実行状態及びストレージを同期させる、送信側の仮想マシン及び受信側の仮想マシンを有するシステムにおけるストレージ同期方法であって、
前記送信側の仮想マシン及び前記受信側の仮想マシンは、
仮想マシンの実行状態を、該送信側の仮想マシン及び該受信側の仮想マシンで常に同一状態に保つ仮想マシンの実行状態同期制御手段と、
ストレージを該送信側の仮想マシン及び該受信側の仮想マシンで常に同一状態に保つストレージの同期制御手段と、
を有し、
前記送信側の仮想マシンのストレージの同期制御手段が、
送信側ストレージへの書き込みが発生すると、前回の同期時からの差分のメモリを取得して、実行状態の差分を受信側の仮想マシンに送信し、
当該送信側の仮想マシンのストレージへの書き込み命令を前記受信側の仮想マシンに送出し、
前記受信側の仮想マシンのストレージ同期制御手段が、
前記送信側の仮想マシンから受信した、前記書き込み命令に基づいて、当該受信側の仮想マシンのメモリを当該受信側の仮想マシンのストレージに書き込む
ことを特徴とするストレージ同期方法。
【請求項６】
前記送信側の仮想マシンは、
前記送信側仮想マシンのストレージの書き込み命令として、
ストレージへの書き込み位置、書き込み対象のデータの格納位置、書き込みサイズを送信し、
前記受信側の仮想マシンは、
前記書き込み命令に含まれる前記書き込み位置に、前記書き込み対象のデータの格納位置で指定される受信側仮想マシンのメモリを、前記書き込みサイズ分当該受信側の仮想マシンのストレージに書き込む
請求項５記載のストレージ同期方法。
【請求項７】
請求項３記載の送信側仮想マシンを構成する各手段としてコンピュータを機能させるためのストレージ同期プログラム。
【請求項８】
請求項４記載の受信側仮想マシンを構成する各手段としてコンピュータを機能させるためのストレージ同期プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ同期システム及び仮想マシン及びストレージ同期方法及びプログラムに係り、特に、異なる物理マシン上で動作する仮想マシンのストレージを同期させるためのストレージ同期システム及び仮想マシン及びストレージ同期方法及びプログラムに関する。
【背景技術】
【０００２】
ストレージを同期させるための技術としては、ある物理マシン上で動作する仮想マシンのサービスを停止せずに、別の物理マシンにストレージも含めてコピーするシステムがある（例えば、非特許文献1参照）。
【０００３】
また、ネットワークアウトプットもしくはストレージ書き込みを契機に仮想マシンの実行状態を同期することで、常にプライマリとセカンダリの仮想マシンの実行状態を同一に保つシステムがある（例えば、非特許文献２参照）。
【０００４】
また、ネットワークアウトプットを発行する前に同期することで、常にプライマリとセカンダリの仮想マシンの実行状態及びストレージを同一に保つシステムがある（例えば、非特許文献３参照）。
【０００５】
さらに、マスタとスレーブのストレージのデータに不一致がある場合に、同期する技術がある（例えば、特許文献1参照）。
【０００６】
以下に、従来技術によるシステム及び動作を示す。
【０００７】
図４は、従来技術によるシステム構成を示す。
【０００８】
同図に示すシステムは、同期データ送信側のシステム１００Ａと受信側のシステム１００Ｂから構成される。
【０００９】
各システム１００共に、仮想マシン１１０、仮想マシン制御部１２０、ハードウェア１３０、ストレージ１４０を有する。なお、以下の記載において、送信側及び受信側のシステム間の通信は、ハードウェア１３０内の通信インタフェース（図示せず）が同期用ネットワークを介して行うものとする。
【００１０】
まず、仮想マシン制御部１２０の処理について説明する。
【００１１】
図５は、従来技術における送信側の同期制御のフローチャートである。
【００１２】
ステップ５１０）  同期データ送信側のシステム１００Ａにおいて、同期制御部１２０Ａの仮想マシン実行状態同期制御部１２１Ａは、タイマ（図示せず）の値を参照して前回同期時から、予め設定した時間が経過したかを判断し、経過している場合にはステップ５２０に移行する。
【００１３】
ステップ５２０）  仮想マシン実行同期制御部１２１Ａは、前回同期時から差分メモリを取得し、送信側仮想マシン１００ＡのＣＰＵ、デバイスの実行状態の差分及び差分メモリを受信側の仮想マシンの実行状態同期制御部１２２Ｂへ送信する。ここで、「差分メモリを取得する」とは、例えば、２GBのメモリ（主記憶装置）を持つ仮想マシンを同期するシステムの場合、同期後に、仮想マシンのメモリのうち、１MBに変更が生じると、次回同期する際は、前回の同期時からの差分（つまり、1MB）のメモリを取得することを指す。
【００１４】
ステップ５３０）  前回同期時から変更が発生した送信側ストレージ１４０Ａの差分データを取得する。ハードウェア１３０Ａの通信インタフェースを介して、差分ストレージ情報（差分ストレージデータ、書き込み位置、書き込みサイズ）を受信側のストレージの同期制御部１２３Ｂに送信する。
【００１５】
ステップ５４０）  同期制御部１２０Ａは、受信側から全データの受信完了通知が送信されてきたかを判断し、受信していない場合は待機し、受信した場合は当該処理を終了する。
【００１６】
図６は、従来技術における受信側の同期制御のフローチャートである。
【００１７】
ステップ６１０）  受信側の仮想マシン１１０Ｂのストレージの同期制御部１２３Ｂは、送信側仮想マシン１００Ａから当該送信側仮想マシンの実行状態の差分及び差分ストレージ情報を受信したかを判断し、受信した場合はステップ６２０に移行する。
【００１８】
ステップ６２０）  仮想マシンの実行状態同期制御部１２２Ｂは、受信した送信側仮想マシン１００Ａの実行状態の差分を受信側仮想マシン１００Ｂの実行状態に反映させる。
【００１９】
ステップ６３０）  ストレージの同期制御部１２３Ｂは、差分ストレージ情報に含まれる書き込み位置に、差分ストレージデータを書き込みサイズ分、受信側ストレージ１４０に書き込む。
【００２０】
ステップ６４０）  ハードウェア１３０Ｂの通信インタフェースを介して送信側に全データ受信完了通知を送信する。
【先行技術文献】
【特許文献】
【００２１】
【特許文献１】特許第4472995号公報
【非特許文献】
【００２２】
【非特許文献１】R. Bradford., E, Kotsovinos., a, Feldmann., H, Schioberg.: Live Wide-Area Migration of virtual Machines with local persistent state. VEE'07, Jun 2007.
【非特許文献２】田村芳明、柳澤佳里、佐藤孝治、盛合敏：Kemari：仮想マシン間の同期による耐故障クラスタリング情報処理学会論文誌コンピューティングシステム、Vol.3, No.1, pp.13-14 (2010).
【非特許文献３】B. Curry., g, Lefbvre., 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).
【発明の概要】
【発明が解決しようとする課題】
【００２３】
しかしながら、上記の非特許文献１の技術は、前回同期時から変更が生じた仮想マシンの実行状態の差分転送と、変更が生じたストレージデータをストレージから読み出して、転送する処理が必要となる。つまり、仮想マシン実行数とストレージデータの転送が必要となり、同期のための転送量及びリソース量が大きいという問題がある。
【００２４】
また、上記の非特許文献２の技術は、仮想マシンが利用するストレージの同期は行っていないため、共有ストレージが必要となる。
【００２５】
また、上記の非特許文献３の技術は、ストレージへの書き込みが発生する度に、ストレージへ書き込むデータの転送を行う必要がある。また、仮想マシンの実行状態も転送するため、同期のための転送量が大きい、という問題がある。
【００２６】
また、上記の特許文献1の技術は、マスタはストレージからデータを読み出す処理と読み出したデータを転送する処理が必要なため、同期にかかる時間及びリソース利用量が大きい、という問題がある。
【００２７】
本発明は、上記の点に鑑みなされたもので、異なる物理マシン上で動作する仮想マシンの実行状態（ＣＰＵ、メモリ、デバイス）及びストレージを同期させるシステムにおいて、同期のための転送量を削減し、同期のためのリソース利用量を削減することが可能なストレージ同期システム及び仮想マシン及びストレージ同期方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００２８】
上記の課題を解決するため、本発明は、異なる物理マシン上で動作する仮想マシンのＣＰＵ、メモリ、デバイスの各実行状態及びストレージを同期させる、送信側の仮想マシン及び受信側の仮想マシンを有するストレージ同期システムであって、
前記送信側の仮想マシン及び前記受信側の仮想マシンは、
仮想マシンの実行状態を、該送信側の仮想マシン及び該受信側の仮想マシンで常に同一状態に保つ仮想マシンの実行状態同期制御手段と、
ストレージを該送信側の仮想マシン及び該受信側の仮想マシンで常に同一状態に保つストレージの同期制御手段と、
を有し、
前記送信側の仮想マシンのストレージの同期制御手段は、
送信側ストレージへの書き込みが発生すると、前回の同期時からの差分のメモリを取得して、実行状態の差分を受信側の仮想マシンに送信する差分送出手段と、
当該送信側の仮想マシンのストレージへの書き込み命令を前記受信側の仮想マシンに送出する書き込み制御手段と、
を含み、
前記受信側の仮想マシンのストレージ同期制御手段は、
前記送信側の仮想マシンから受信した前記書き込み命令に基づいて、当該受信側の仮想マシンのメモリを当該受信側の仮想マシンのストレージに書き込む書き込み手段を含む。
【発明の効果】
【００２９】
上記のように、本発明によれば、異なる物理マシン上で動作する仮想マシンの実行状態（ＣＰＵ、メモリ、デバイス）及びストレージを同期させるシステムにおいて、同期のための転送量を削減すると共に、同期のためのリソースの利用量を削減することが可能となる。
【図面の簡単な説明】
【００３０】
【図１】本発明の一実施の形態における送信側同期制御部のフローチャートである。
【図２】本発明の一実施の形態における受信側同期制御部のフローチャートである。
【図３】本発明と従来技術の同期１回当りのデータ転送量の比較である。
【図４】システム構成図である。
【図５】従来技術における送信側同期制御部のフローチャートである。
【図６】従来技術における受信側同期制御部のフローチャートである。
【発明を実施するための形態】
【００３１】
以下図面と共に、本発明の実施の形態を説明する。
【００３２】
システム構成は、従来と同様であるが、ストレージ同期制御部１２３内部の動作が異なる。なお、以下の記載において、送信側及び受信側のシステム間の通信は、従来技術と同様に、ハードウェア１３０内の通信インタフェース（図示せず）が同期用ネットワークを介して行うものとする。
【００３３】
まず、送信側マシン１００Ａの動作を説明する。
【００３４】
図１は、本発明の一実施の形態における送信側同期制御部のフローチャートである。
【００３５】
本発明の動作は、同期を開始するタイミング（ステップ１１０）と、受信側のストレージ同期制御部１２３Ｂに送信する情報が図５とは異なる。
【００３６】
ステップ１１０）  送信側のストレージの同期制御部１２３Ａは、送信側ストレージ１４０Ａへの書き込みが発生すると、ステップ１２０に移行する。
【００３７】
ステップ１２０）  送信側の仮想マシンの実行状態同期制御部１２２Ａは、前回の同期時から差分メモリを取得し、送信側のシステム１００ＡのＣＰＵ，デバイスの実行状態の差分、取得した差分メモリを、受信側の仮想マシンの実行状態同期制御部１２２Ｂへ送信する。このように、ストレージ書き込みを行う直前に、上記の処理を行うことで、送信側と受信側の仮想マシンの実行状態を一致させることが可能となる。なお、差分メモリの取得方法については図５と同様である。
【００３８】
ステップ１３０）  送信側ストレージ１４０Ａへの書き込み命令を検知すると、ストレージの周期制御部１２３Ａは、書き込み対象のデータの格納位置、ストレージの書き込み位置、書き込みサイズからなる、ストレージ１４０Ａへの書き込み命令を、受信側のストレージ同期制御部１２３Ｂに送信する。なお、当該データは複数個からなることもある。
【００３９】
このように、書き込み命令として受信側に通知するものは、書き込み対象のデータの格納位置、ストレージの書き込み位置、書き込みサイズのみとなり、転送量を削減することができる。
【００４０】
ステップ１４０）  受信側の仮想マシン制御部１２０Ｂからの受信完了通知を受信したら処理を終了する。
【００４１】
次に、受信側マシン１００Ｂの動作を説明する。
【００４２】
図２は、本発明の一実施の形態における受信側同期制御部のフローチャートである。
【００４３】
ステップ２１０）  受信側の仮想マシン制御部１２０Ｂの仮想マシンの実行状態同期制御部１２２Ｂは、送信側の仮想マシン制御部１２０Ａから実行状態の差分及び送信側ストレージへの書き込み命令を受信した場合はステップ２２０に移行する。
【００４４】
ステップ２２０）  送信側の仮想マシン制御部１２０Ａから受信した送信側仮想マシンの実行状態の差分を受信側仮想マシンの実行状態に反映させる。
【００４５】
ステップ２３０）  ストレージの同期制御部１２３Ｂは、受信側の主記憶装置１１１Ｂ（受信側仮想マシンのメモリ）の情報と、送信側ストレージ１４０Ａへの書き込み命令を取得し、当該書き込み命令に含まれる書き込み位置に、書き込み対象のデータの格納位置で指定される受信側仮想マシンのメモリを書き込みサイズ分、受信側ストレージ１４０Ｂに書き込む。これにより、同期のためのリソース（入出力のための帯域）の利用量を削減することが可能となる。
【００４６】
ステップ２４０）  送信側の仮想マシン１００Ａに全データの受信が完了した通知を送信する。
【００４７】
上記のように、本発明は、従来技術と異なり、ストレージデータ自体を受信側仮想マシン１００Ｂに転送する必要がなくなるため、転送量を削減できる。ストレージへの書き込みを行う前に、送信側の仮想マシンの実行状態同期制御部１２２Ａが当該送信側の仮想マシンの実行状態を受信側に送信することにより同期をとることで、受信側のメモリ１１０Ｂは、常にストレージ書き込みを行う直前の送信側仮想マシンのメモリ１１０Ａと一致する。そのため、受信側仮想マシン１００Ｂのメモリ１１０Ａ上にはストレージ１４０Ｂに書き込むデータが存在する。
【００４８】
さらに、ストレージ書き込み命令は、ストレージデータそのものと比較して小さいため、受信側への転送量を削減することができる。比較の例を以下に示す。
【００４９】
表１に示すような実験環境を２台用意し、送信側マシン１００Ａ、受信側マシン１００Ｂとする。なお、送信側のゲストＯＳ上でファイルコピーを実行することで負荷をかけている。
【００５０】
【表１】
2012164075.tif 000003
上記の状態において、送信側仮想マシン１００Ａと受信側仮想マシン１００Ｂを１００回同期させたときの本発明を適用させた場合と従来技術の方法を適用させた場合の同期１回当りのデータ転送量（平均値）を図３に示す。同図からもわかるように、仮想マシン実行状態及びストレージ情報については、1175KBから637KBに54％削減されていることがわかる。また、ストレージ情報は、従来の539KBから0.89KB（0.2％）に削減されている。ここで、ストレージ情報とは、従来技術ではストレージデータであり、本発明の場合はストレージ書き込み命令である。
【００５１】
また、受信側仮想マシン１００Ｂの同期制御部１２１Ｂが、ストレージデータを保持する必要がないため、リソース利用量が削減できる。つまり、ストレージ１４０Ｂに書き出すデータは、受信側仮想マシンのメモリデータである。そのため、受信側の同期制御部１２１Ｂはストレージへの書き込み命令のみを保持すればよい。
【００５２】
なお、上記の実施の形態における送信側仮想マシン１００Ａ及び受信側仮想マシン１００Ｂの動作をプログラムとして構築し、それぞれの仮想マシンとして利用されるコンピュータにインストールして実行させる、または、ネットワークを介して流通させることも可能である。
【００５３】
本発明は、上記の実施の形態に限定されることなく、特許請求の範囲内において種々変更・応用が可能である。
【符号の説明】
【００５４】
１００  同期データの送信側／受信側のシステム
１１０  仮想マシン
１１１  主記憶装置（メモリ）
１２０  仮想マシン制御部
１２１  同期制御部
１２２  仮想マシンの実行状態同期制御部
１２３  ストレージの同期制御部
１３０  ハードウェア
１４０  ストレージ
【図１】
2012164075.tif 000004
【図２】
2012164075.tif 000005
【図３】
2012164075.tif 000006
【図４】
2012164075.tif 000007
【図５】
2012164075.tif 000008
【図６】
2012164075.tif 000009