(57)【特許請求の範囲】
【請求項１】
運用系の物理マシン上で動作する仮想マシンの実行状態及び該運用系のストレージに生じた変更を、待機系の物理マシンに転送し、待機系の仮想マシン及び該待機系のストレージに反映させて該仮想マシンの実行状態及びストレージを同一状態に保つ仮想マシン同期方法であって、
前記運用系の仮想マシンにおいて、
命令判定手段が、前記運用系のストレージへの書き込みを行う際に、ストレージ書き込み命令が、前回同期時から変更が生じたメモリページ（以下、「ダーティーページ」と記す）によるもの、または、前記ストレージの同一箇所への書き込みによるものであるかを判定する書き込み命令判定ステップと、
データ転送手段が、前記書き込み命令判定ステップにおいて、前記ダーティーページによるものまたは前記ストレージの同一箇所への書き込みによるものである場合には、前記待機系に、当該運用系の仮想マシンの実行状態及び運用系のストレージのストレージデータを転送するデータ転送ステップと、
を行うことを特徴とする仮想マシン同期方法。
【請求項２】
運用系の物理マシン上で動作する仮想マシンの実行状態及び該運用系のストレージに生じた変更を、待機系の物理マシンに転送し、待機系の仮想マシン及び該待機系のストレージに反映させて該仮想マシンの実行状態及びストレージを同一状態に保つ同期システムであって、
前記運用系の仮想マシンは、
前記運用系のストレージへの書き込みを行う際に、ストレージ書き込み命令が、前回同期時から変更が生じたメモリページ（以下、「ダーティーページ」と記す）によるもの、または、前記ストレージの同一箇所への書き込みによるものであるかを判定する書き込み命令判定手段と、
前記書き込み命令判定手段において、前記ダーティーページによるものまたは前記ストレージの同一箇所への書き込みによるものである場合には、前記待機系に、当該運用系の仮想マシンの実行状態及び運用系のストレージのストレージデータからなる同期データを転送するデータ転送手段と、
を有し、
前記待機系の仮想マシンは、
前記運用系の仮想マシンから転送された前記同期データを受信し、該同期データの実行状態の差分を反映させる更新手段を有する
ことを特徴とする同期システム。
【請求項３】
運用系の物理マシン上で動作する仮想マシンの実行状態及び該運用系のストレージに生じた変更を、待機系の物理マシンに転送し、待機系の仮想マシン及び該待機系のストレージに反映させて該仮想マシンの実行状態及びストレージを同一状態に保つ運用系の仮想マシンであって、
前記運用系のストレージへの書き込みを行う際に、ストレージ書き込み命令が、前回同期時から変更が生じたメモリページ（以下、「ダーティーページ」と記す）によるもの、または、前記ストレージの同一箇所への書き込みによるものであるかを判定する書き込み命令判定手段と、
前記書き込み命令判定手段において、前記ダーティーページによるものまたは前記ストレージの同一箇所への書き込みによるものである場合には、前記待機系に、当該運用系の仮想マシンの実行状態及び運用系のストレージのストレージデータを転送するデータ転送手段と、
を有することを特徴とする運用系の仮想マシン。
【請求項４】
コンピュータを、請求項３記載の運用系の仮想マシンとして機能させるための同期プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想マシン同期方法及びシステム及び運用系の仮想マシン及びプログラムに係り、特に、ストレージ書き込み情報に着目した仮想マシン同期方法及びシステム及び運用系の仮想マシン及びプログラムに関する。
【背景技術】
【０００２】
物理マシンを２台以上用意し、冗長化することで、信頼性の高いシステムを実現するためにはシステムを同期させる必要がある。
【０００３】
そのための方法として、定期的（例えば、25msごと）に同期を行い、運用系と待機系の仮想マシンの実行状態及びストレージを同一に保つシステムがある（例えば、非特許文献1参照）。このシステムは、ネットワークアウトプットを発行する前に、同期することで、ネットワーク先との整合性を保っている。
【０００４】
また、ネットワークアウトプットもしくはストレージ書き込みを契機に仮想マシンの実行状態を同期することで、常に運用系と待機系の仮想マシンの実行状態を同一に保つシステムがある（例えば、非特許文献２参照）。
【０００５】
当該技術の処理を以下に示す。
【０００６】
図１は、従来の同期システムの構成を示す。
【０００７】
運用系及び待機系共に、仮想マシン制御部１０を有し、それぞれ図２、図３に示す動作を行う。
【０００８】
図２において、運用系マシンの処理について説明する。
【０００９】
運用系の仮想マシン２０Ａがストレージ書き込みを行おうとすると、運用系の仮想マシン制御部１０Ａの同期制御部１１Ａが、これを捕捉し、同期を開始する（ステップ１１０）。同期制御部１１Ａの仮想マシンの実行状態動機制御部１２Ａは、待機系のマシンに対して仮想マシンの実行状態及びストレージデータを転送する（ステップ１２０）。待機系Ｂのマシンから全データの受信完了通知が送信されてきたかを判定し、受信している場合は「真」を、未受信の場合は「偽」を出力する。
【００１０】
次に、図３において、待機系の仮想マシンＢの処理を説明する。
【００１１】
待機系Ｂの仮想マシン制御部１０Ｂでは、運用系Ａから同期用のデータを受信したかを判定し、受信した場合は運用系仮想マシンの実行状態の差分を取得する（ステップ２１０）。仮想マシンの実行状態動機制御部１２Ｂは、受信した運用系仮想マシンの実行状態の差分を待機系仮想マシンの実行状態に反映させ（ステップ２２０）、送信側の運用系の仮想マシンＢに対して全データ受信完了通知を送信する（ステップ２３０）。  
また、マスタとスレーブの記憶装置のデータに不一致がある場合に、差分を転送して同期する技術がある（例えば、特許文献1参照）。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】特許第４４７２９９５号公報
【非特許文献】
【００１３】
【非特許文献１】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).
【非特許文献２】田村芳明、柳澤佳里、佐藤孝治、盛合敏：Kemari: 仮想マシン間の同期による耐故障クラスタリング、情報処理学会論文誌コンピューティングシステム、Vol. 3，  No.1, pp. 13-24 (2010).
【発明の概要】
【発明が解決しようとする課題】
【００１４】
しかしながら、上記の非特許文献1の技術は、仮想マシンの実行状態及びストレージの状態をストレージ書き込みを契機に同期していないので、運用系と待機系のストレージを同一状態に保つことができないため、前回同同期時から故障発生までに、運用系のストレージに書き込まれたデータが損失してしまうという問題がある。
【００１５】
また、運用系の故障後、待機系の仮想マシンのアプリケーションを動作させた場合、アプリケーションのストレージ書き込みの順序保証ができないため、ストレージの同一箇所への書き込み順序が逆転していると、上書きが発生するため、運用系と待機系のストレージを同一状態に保つことができない、という問題がある。
【００１６】
また、上記の非特許文献２の技術は、仮想マシンの実行状態を全てのストレージ書き込みを契機に同期しているので、同期させる回数が多いという問題がある。
【００１７】
また、上記の特許文献１の技術は、同期は周期的に行われるため、マスタの故障のタイミングによってはデータが失われてしまう、という問題がある。
【００１８】
本発明は、上記の点に鑑みなされたもので、運用系のストレージ書き込まれたデータが失われず、仮想マシンの実行状態及びストレージを同期させる回数が少なくてすむ仮想マシン同期方法及びシステム及び運用系の仮想マシン及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１９】
上記の課題を解決するため、本発明は、運用系の物理マシン上で動作する仮想マシンの実行状態及び該運用系のストレージに生じた変更を、待機系の物理マシンに転送し、待機系の仮想マシン及び該待機系のストレージに反映させて該仮想マシンの実行状態及びストレージを同一状態に保つ仮想マシン同期方法であって、
前記運用系の仮想マシンにおいて、
命令判定手段が、前記運用系のストレージへの書き込みを行う際に、ストレージ書き込み命令が、前回同期時から変更が生じたメモリページ（以下、「ダーティーページ」と記す）によるもの、または、前記ストレージの同一箇所への書き込みによるものであるかを判定する書き込み命令判定ステップと、
データ転送手段が、前記書き込み命令判定ステップにおいて、前記ダーティーページによるものまたは前記ストレージの同一箇所への書き込みによるものである場合には、前記待機系に、当該運用系の仮想マシンの実行状態及び運用系のストレージのストレージデータを転送するデータ転送ステップと、を行う。
【発明の効果】
【００２０】
上記のように本発明は、特定のタイミングで同期処理を行うことにより、運用系システムに故障が生じた際に、運用系と同様のストレージデータを待機系で再現することが可能となる。
【００２１】
具体的には、全てのストレージ書き込み命令があった場合に同期処理を行うのではなく、ストレージへの書き込みの命令がダーティーページ、ストレージの同一箇所への書き込みのいずれかであった場合のみ待機系との同期を行うため、同期回数を低減することができる。
【００２２】
また、ダーティーページを利用した書き込みを契機として同期するため、ストレージに書き込むべきデータは、待機系に転送されるため、運用系がストレージ書き込み後に故障した場合であっても、データは失われない。
【００２３】
さらに、運用系が故障した時点で、待機系の仮想マシンのアプリケーションが実行状態を基に動作した際に、ストレージの書き込み順序が変わったとしても、同一箇所のへの書き込みをさせないため、ストレージデータが失われることがない。
【図面の簡単な説明】
【００２４】
【図１】従来の同期システムの構成図である。
【図２】従来の運用系同期制御部のフローチャートである。
【図３】従来の待機系同期制御部のフローチャートである。
【図４】本発明の一実施の形態における同期システムの構成図である。
【図５】本発明の一実施の形態における運用系同期制御部のフローチャートである。
【図６】本発明の一実施の形態における運用系同期制御部のＳ３２０の詳細フローチャートである。
【図７】本発明の一実施の形態における物理マシンの構成を示す図（その１）である。
【図８】本発明の一実施の形態における物理マシンの構成を示す図（その２）である。
【図９】本発明と従来技術の同期回数比較評価を示す図である。
【図１０】本発明と従来技術のスループット比較評価を示す図である。
【発明を実施するための形態】
【００２５】
以下図面と共に、本発明の実施の形態を説明する。
【００２６】
図４は、本発明の一実施の形態における同期システムの構成を示す。
【００２７】
同図に示す同期システムの前提として、運用系の仮想マシン２０Ａでは、アプリケーションが動作しているため、実行状態とストレージ４０Ａのデータは常に更新されていき、また、待機系の仮想マシン２０Ｂでは、アプリケーションが動作していないため、実行状態とストレージ４０Ｂのデータは変化しないものとする。この前提において、本システムは、特定のタイミングで同期処理を行うことにより、運用系のシステムＡに故障が生じた際に、運用系と同様のストレージデータを待機系Ｂで再現する。
【００２８】
同図に示す運用系及び待機系のシステムの仮想マシン制御部１００Ａ、１００Ｂの同期制御部１１０Ａ，１１０Ｂには、仮想マシンの実行状態同期制御部１１１Ａ、１１１Ｂに加え、ストレージの同期制御部１１２Ａ，１１２Ｂを有する。
【００２９】
上記の構成の動作を以下に示す。
【００３０】
図５は、本発明の一実施の形態における運用系同期制御部のフローチャートである。
【００３１】
ステップ３１０）  運用系の同期制御部１１０Ａは、運用系仮想マシン２０Ａが、ストレージ４０Ａへの書き込みを行う際に、当該書き込み処理を捕捉する。書き込み処理がある場合には、ストレージ書き込み命令を抽出する。
【００３２】
ステップ３２０）  同期制御部１１０Ａは、ストレージの書き込みの種類が、前回同期時から変更が生じたメモリページであるダーティーページを利用した書き込み、もしくは、ストレージ４０Ａの同一箇所への書き込みであった場合は「真」をそうでない場合は「偽」を出力する。詳細な動作については図６で後述する。当該処理は、運用系Ａと待機系Ｂの仮想マシンの実行状態及びストレージデータの内容を一致させる処理を開始すべきか同かを判断する処理である。
【００３３】
ステップ３３０）  ステップ３２０の出力値を入力値として受け取り、「真」の場合は同期を開始するため、ステップ３５０に移行する。「偽」の場合はステップ３４０に移行する。
【００３４】
ステップ３４０）  ステップ３３０で取得した値が「偽」である場合は、ストレージの同期制御部１１２Ａが、主記憶装置などの記憶部（図示せず）にストレージ書き込み命令を保存し、ステップ３１０に移行する。
【００３５】
ステップ３５０）  同期制御部１１１Ａは、待機系に仮想マシン２０Ａの実行状態及びストレージ４０Ａのストレージデータを転送する。
【００３６】
ステップ３６０）  待機系Ｂからの受信完了通知を待機し、待機系Ｂから全データの受信完了通知が送信されてきたかを判断し、受信した場合はステップ３７０に移行する。
【００３７】
ステップ３７０）  ステップ３４０で記憶部（図示せず）に保存したストレージ書き込み命令を破棄する。これは、次回同期時には不要な情報であるため削除する。
【００３８】
次に、上記のステップ３２０の処理について説明する。
【００３９】
図６は、本発明の一実施の形態における運用系同期制御部のＳ３２０の詳細フローチャートである。
【００４０】
ステップ４１０）  同期制御部１１０Ａは、ダーティーページを利用したストレージ書き込みかを判定し、ダーティーページの場合はステップ４４０に移行する。ダーティーページか否かを判別する方法としては、文献「Clark, C., Fraser, K., Hand, S., Hansen, J.G., Jul, E., Limpach, C., Paratt, I. and Warfield, A.: Live Migration of Virtual Machines, 2nd USENIX Symposium on Networked Systems Design and Implementation, Boston, MA, USA, pp. 273-286 (2005)」を参照されたい。ダーティーページを利用した書き込みが発生した場合は、運用系と待機系の仮想マシンの事項状態及びストレージを一致させる処理を開始する。
【００４１】
ステップ４２０）  ステップ４１０においてダーティーページでない場合は、ストレージの同一箇所への書き込みかを判定する。具体的には、運用系の同期制御部１１０Ａ内の記憶部（図示せず）に保存してあるストレージ書き込み命令を参照し、前回同期時から、ストレージの同一箇所（例えば、同一セレクタ）への書き込みが発生した場合は「真」となり、ステップ４４０に移行し、そうでない場合は「偽」となり、ステップ４３０に移行する。当該処理は、前回同期時から、ストレージの同一箇所への書き込みが発生した場合は、運用系と待機系の仮想マシンの実行状態及びストレージを一致させるための処理である。
【００４２】
ステップ４３０）  「偽」を出力値とする。
【００４３】
ステップ４４０）  ステップ４２０の結果が「真」であり、待機系から受信完了通知を受信した場合は「真」を出力値とする。当該処理を行うことでストレージに書き込むべきデータは、待機系に転送されるので、運用系がストレージ書き込み後に故障してもデータは失われない。また、運用系が故障し、待機系の仮想マシンのアプリケーションが事項状態を基に動作した際に、ストレージ書き込みの順序が変わったとしても、同一箇所への書き込みをさせないので、ストレージデータは失われない。
【００４４】
図７は、本発明の一実施の形態における物理マシンの構成（その１）を示す。
【００４５】
同図に示すように、物理マシンの構成として、運用系マシン数Ｎ：待機系マシン１の構成とすることが可能である。但し、仮想マシンの構成に関しては、運用系仮想マシン数１：待機系仮想マシン数Ｎと、運用系仮想マシンのバックアップとなる待機系仮想マシンが１つ以上必要なる。なお、ある運用系仮想マシンのバックアップ先の待機系仮想マシンが複数ある場合は、運用系の故障後、どちらを先に運用系とするか選択する必要がある。また、運用系マシンＡと運用系マシンＢの利用するストレージデータは、待機系マシンＣのストレージ内のそれぞれ別領域に同期させる。
【００４６】
図８は、本発明の一実施の形態における物理マシンの構成（その２）を示す。
【００４７】
同図に示すように、物理マシンの構成として、運用系マシン１：待機系マシンＮの構成とすることが可能である。但し、仮想マシンの構成に関しては、運用系仮想マシン数１：待機系仮想マシン数Ｎと、運用系仮想マシンのバックアップとなる待機系仮想マシンが１つ以上必要なる。なお、ある運用系仮想マシンのバックアップ先の待機系仮想マシンが複数ある場合は、運用系の故障後、どちらを先に運用系とするか選択する必要がある。また、待機系マシンＡ，Ｂの仮想マシンと、それらの各ストレージは、両方とも、運用系の仮想マシン及びストレージと同期している。
【００４８】
上記の図７、図８に示すように、運用系マシン、待機系マシンをＮ：１、もしくは、１：Ｎとする構成であっても１：１の構成と同様の効果を得ることが可能であり、台数を増やしても効果が減少することはない。
【００４９】
次に、本発明と従来技術の性能評価の結果を示す。
【００５０】
図９は、本発明と従来技術の同期回数比較評価を示す。
【００５１】
同図（ａ）に示すような実験環境を２台用意し、１台を運用系システム、１台を待機系システムとする。運用系のゲストＯＳ上で、プログラムのインストールが必要なファイルシステムのパフォーマンス測定ツールであるiozoneベンチマークツールを以下のオプションで実行し、負荷をかけた。
【００５２】
実行オプション：iozone-I 0 -r 32 -s 128m-f<ファイル名＞
その結果、運用系システムのゲストＯＳ上でiozoneベンチマークを実行し、発生した同期回数を比較した結果は図９（ｂ）に示すとおりである。同図からわかるように、本発明は、従来技術（非特許文献２）と比較して、iozone実行時に起きた同期回数が１４６０回から１６回に削減され、９９％減となった。
【００５３】
また、同期回数の削減による運用系システム性能への影響を図１０に示す。実験環境は図９（ａ）と同様である。図１０のグラフは、運用系システムのゲストＯＳ上で、iozoneベンチマークを実行したときのＩ／Ｏスループットを示している。本発明は、従来技術（非特許文献２）と比較して、iozoneベンチマークによるＩ／Ｏスループットが、６１６７KB/s（従来技術）から１２４４７KB/s（本発明）となり、１０２％向上したことがわかる。
【００５４】
なお、運用系及び待機系の同期制御部の動作をプログラムとして構築し、仮想マシンとして利用される物理マシンにインストールして実行させることが可能である。
【００５５】
本発明は上記の実施の形態に限定されることなく、特許請求の範囲内において、種々変更応用が可能である。
【符号の説明】
【００５６】
Ａ  運用系側のシステム
Ｂ  待機系側のシステム
２０Ａ  運用系側の仮想マシン
２０Ｂ  待機系側の仮想マシン
３０Ａ  運用系側のハードウェア
３０Ｂ  待機系側のハードウェア
４０Ａ  運用系側のストレージ
４０Ｂ  待機系側のストレージ
１００Ａ  運用系側の仮想マシン制御部
１００Ｂ  待機計側の仮想マシン制御部
１１０Ａ  運用系側の同期制御部
１１０Ｂ  待機系側の同期制御部
１１１Ａ  運用系側の仮想マシンの実行状態同期制御部
１１１Ｂ  待機計側の仮想マシンの実行状態同期制御部
１１２Ａ  運用系側のストレージの同期制御部
１１２Ｂ  待機系側のストレージの同期制御部
【図１】
0005702651.tif 000002
【図２】
0005702651.tif 000003
【図３】
0005702651.tif 000004
【図４】
0005702651.tif 000005
【図５】
0005702651.tif 000006
【図６】
0005702651.tif 000007
【図７】
0005702651.tif 000008
【図８】
0005702651.tif 000009
【図９】
0005702651.tif 000010
【図１０】
0005702651.tif 000011