JP2016212485A - 仮想マシン同期システム、仮想マシン同期方法および仮想マシン同期プログラム - Google Patents

仮想マシン同期システム、仮想マシン同期方法および仮想マシン同期プログラム Download PDF

Info

Publication number
JP2016212485A
JP2016212485A JP2015092783A JP2015092783A JP2016212485A JP 2016212485 A JP2016212485 A JP 2016212485A JP 2015092783 A JP2015092783 A JP 2015092783A JP 2015092783 A JP2015092783 A JP 2015092783A JP 2016212485 A JP2016212485 A JP 2016212485A
Authority
JP
Japan
Prior art keywords
output information
virtual machine
buffer
network output
primary
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
JP2015092783A
Other languages
English (en)
Inventor
優美子 笠江
Yumiko Kasae
優美子 笠江
駿介 車谷
Shunsuke Kurumaya
駿介 車谷
慎次 森下
Shinji Morishita
慎次 森下
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 JP2015092783A priority Critical patent/JP2016212485A/ja
Publication of JP2016212485A publication Critical patent/JP2016212485A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Hardware Redundancy (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】ネットワーク出力を比較する処理の効率を向上させ、仮想マシンの同期処理の実行頻度を削減すること。
【解決手段】プライマリ物理マシンは、プライマリ仮想マシンネットワーク出力専用バッファ121に記憶されたネットワーク出力とセカンダリ仮想マシンネットワーク出力専用バッファ122に記憶されたネットワーク出力とを比較し、ネットワーク出力が一致するか否かを判定する。この結果、所定の時間内においてプライマリ仮想マシンネットワーク出力専用バッファ121に記憶されたネットワーク出力とセカンダリ仮想マシンネットワーク出力専用バッファ122に記憶されたネットワーク出力とが一致しないと判定された場合には、チェックポイント転送処理を行う。
【選択図】図2

Description

本発明は、仮想マシン同期システム、仮想マシン同期方法および仮想マシン同期プログラムに関する。
従来、計算機(以後、物理マシンという)上のオペレーティングシステム(OS)において、ソフトウェアによってエミュレートされたハードウェア上で動作する仮想計算機(仮想マシン)の中で動作するアプリケーションを対象としたフォールトトレラントシステムが知られている。
このようなフォールトトレラントシステムにおける仮想マシン上のアプリケーションがネットワークを介してクライアントプログラムと通信を行う場合において、異なる物理マシン上の仮想マシンの同期を取るには、ライブマイグレーションの仕組を利用して、プライマリ仮想マシンの実行状態とディスク状態をセカンダリ仮想マシンに転送するチェックポイント転送処理を行うことが一般的である。このチェックポイント転送処理は、処理負荷が大きいため、頻繁に実行するとアプリケーションの処理性能が低下する。
ところが、アプリケーションの処理が進むとプライマリとセカンダリの状態が同一でなくなる可能性が高くなるため、同期状態を維持しつつ、チェックポイント転送処理の頻度を少なくすることが求められている。
これに対して、プライマリ仮想マシンへのネットワーク入力を複製することでプライマリとセカンダリのネットワーク入力の同期を担保し、それぞれのネットワーク出力を比較して、比較結果が一致しない場合にのみチェックポイント転送処理を行う技術があった。
例えば、各仮想マシンからのL2フレーム出力(以後、ネットワーク出力という)を、クライアントプログラムへ返答する前に集め、各仮想マシンから出力された順番に各ネットワーク出力内容の比較を行う。比較の結果、ネットワーク出力内容が一致しない場合においてのみ、チェックポイント転送処理を実行し、同期状態とした上で、プライマリ仮想マシンのネットワーク出力をクライアントプログラムへ返答する。
また、比較の結果、ネットワーク出力内容が一致する場合は、プライマリ仮想マシンとセカンダリ仮想マシンは同一の返答ができるという同期状態であるとし、チェックポイント転送処理を行わずに、プライマリ仮想マシンのネットワーク出力をクライアントプログラムへ返答する。
YaoZu Dong, Wei Ye, YunHong Jiang, Ian Pratt, ShiQing Ma, Jian Li, HaiBing Guan, "COLO: COarse-grained LOck-stepping Virtual Machines for Non-stop Service",4th ACM Symposium on Cloud Computing(SoCC2013),Oct,2013
しかしながら、上記したネットワーク出力を比較して、比較結果が一致しない場合にのみチェックポイント転送処理を行う技術では、ネットワーク出力の順番が一致しているかどうかも比較の対象としているため、例えば、多くのアプリケーションがマルチプロセスで動作するような場合に、チェックポイント転送処理が多発する場合があるという課題があった。
上述した課題を解決し、目的を達成するために、本発明の仮想マシン同期システムは、第一の物理マシン上で動作するプライマリ仮想マシンと、第二の物理マシン上で動作するセカンダリ仮想マシンとを有する仮想マシン同期システムであって、前記第一の物理マシンは、前記プライマリ仮想マシンにより外部のプログラムへ第一の出力情報を出力する処理を検知した場合に、該第一の出力情報を第一のバッファに格納する格納部と、前記セカンダリ仮想マシンから転送された第二の出力情報を受信し、該第二の出力情報を第二のバッファに格納する受信部と、前記第一のバッファに記憶された所定範囲の第一の出力情報と前記第二のバッファに記憶された所定範囲の第二の出力情報とを比較し、前記第一の出力情報と前記第二の出力情報とが一致するか否かを判定する比較部と、前記比較部によって前記第一の出力情報と前記第二の出力情報とが一致すると判定された場合には、前記第一の出力情報を前記プログラムに送信する送信部と、前記比較部によって前記第一の出力情報と前記第二の出力情報とが一致しないと判定された場合には、前記プライマリ仮想マシンの状態を前記セカンダリ仮想マシンに転送するチェックポイント転送処理を行う転送部と、を有することを特徴とする。
また、本発明の仮想マシン同期方法は、第一の物理マシン上で動作するプライマリ仮想マシンと、第二の物理マシン上で動作するセカンダリ仮想マシンとを有する仮想マシン同期システムによって実行される仮想マシン同期方法であって、前記第一の物理マシンが、前記プライマリ仮想マシンにより外部のプログラムへ第一の出力情報を出力する処理を検知した場合に、該第一の出力情報を第一のバッファに格納する格納工程と、前記セカンダリ仮想マシンから転送された第二の出力情報を受信し、該第二の出力情報を第二のバッファに格納する受信工程と、前記第一のバッファに記憶された所定範囲の第一の出力情報と前記第二のバッファに記憶された所定範囲の第二の出力情報とを比較し、前記第一の出力情報と前記第二の出力情報とが一致するか否かを判定する比較工程と、前記比較工程によって前記第一の出力情報と前記第二の出力情報とが一致すると判定された場合には、前記第一の出力情報を前記プログラムに送信する送信工程と、前記比較工程によって前記第一の出力情報と前記第二の出力情報とが一致しないと判定された場合には、前記プライマリ仮想マシンの状態を前記セカンダリ仮想マシンに転送するチェックポイント転送処理を行う転送工程と、を含んだことを特徴とする。
また、本発明の仮想マシン同期プログラムは、第一の物理マシン上で動作するプライマリ仮想マシンにより外部のプログラムへ第一の出力情報を出力する処理を検知した場合に、該第一の出力情報を第一のバッファに格納する格納ステップと、第二の物理マシン上で動作するセカンダリ仮想マシンから転送された第二の出力情報を受信し、該第二の出力情報を第二のバッファに格納する受信ステップと、前記第一のバッファに記憶された所定範囲の第一の出力情報と前記第二のバッファに記憶された所定範囲の第二の出力情報とを比較し、前記第一の出力情報と前記第二の出力情報とが一致するか否かを判定する比較ステップと、前記比較ステップによって前記第一の出力情報と前記第二の出力情報とが一致すると判定された場合には、前記第一の出力情報を前記プログラムに送信する送信ステップと、前記比較ステップによって前記第一の出力情報と前記第二の出力情報とが一致しないと判定された場合には、前記プライマリ仮想マシンの状態を前記セカンダリ仮想マシンに転送するチェックポイント転送処理を行う転送ステップと、をコンピュータに実行させる。
本発明によれば、ネットワーク出力を比較する処理の効率を向上させ、仮想マシンの同期処理の実行頻度を削減することができるという効果を奏する。
図1は、第一の実施の形態に係る仮想マシン同期システムの構成の一例を示す図である。 図2は、第一の実施の形態に係るプライマリ物理マシン内のエミュレータおよびセカンダリ物理マシン内のエミュレータの機能構成を示すブロック図である。 図3は、各専用バッファから取り出したネットワーク出力内容を比較する処理を説明する図である。 図4は、第一の実施の形態に係るプライマリ物理マシンにおけるプライマリ仮想マシンのネットワーク出力の蓄積処理の流れを示すフローチャートである。 図5は、第一の実施の形態に係るプライマリ物理マシンにおけるセカンダリ物理マシンのネットワーク出力の蓄積処理の流れを示すフローチャートである。 図6は、第一の実施の形態に係るプライマリ物理マシンにおける仮想マシン同期処理の流れを示すフローチャートである。 図7は、仮想マシン同期プログラムを実行するコンピュータを示す図である。
以下に、本願に係る仮想マシン同期システム、仮想マシン同期方法および仮想マシン同期プログラムの実施形態を図面に基づいて詳細に説明する。なお、この実施形態により本願に係る仮想マシン同期システム、仮想マシン同期方法および仮想マシン同期プログラム
が限定されるものではない。
[第一の実施の形態]
以下の実施の形態では、第一の実施の形態に係る仮想マシン同期システムの構成、プライマリ物理マシン内のエミュレータおよびセカンダリ物理マシン内のエミュレータの機能構成、プライマリ物理マシンの処理の流れを順に説明し、最後に第一の実施の形態による効果を説明する。
[仮想マシン同期システムの構成]
図1は、第一の実施の形態に係る仮想マシン同期システムの構成の一例を示す図である。第一の実施の形態に係る仮想マシン同期システム1は、プライマリ物理マシン10と、セカンダリ物理マシン20とを有するフォールトトレラントシステムである。
プライマリ物理マシン10は、プライマリ仮想マシン11、プライマリエミュレータ12、VMM(Virtual Machine Monitor)13、物理マシンカーネル14およびネットワーク(NW)入力複製部15を有する。セカンダリ物理マシン20は、セカンダリ仮想マシン21、セカンダリエミュレータ22、VMM23および物理マシンカーネル24を有する。
仮想マシン同期システム1では、プライマリ物理マシン10およびセカンダリ物理マシン20上のオペレーティングシステムにおいてソフトウェアによってエミュレートされたハードウェア上でプライマリ仮想マシン11およびセカンダリ仮想マシン21が動作する。
プライマリエミュレータ12は、プライマリ仮想マシン11からのネットワーク出力(L2フレーム)を格納するネットワーク出力格納部12aと、プライマリ仮想マシン11とセカンダリ仮想マシン21のネットワーク出力を収集して出力内容の比較を行うネットワーク出力制御部12bと、プライマリ仮想マシン11とセカンダリ仮想マシン21が同期状態ではないと判断した場合にチェックポイント転送を実施するチェックポイント転送部12cと、送信部12dとを有する。
セカンダリエミュレータ22は、セカンダリ仮想マシン21からのネットワーク出力をフックするネットワーク出力フック部22aと、フックしたネットワーク出力をネットワーク出力制御部12bまで転送するネットワーク出力転送部22bと、チェックポイント転送を受信してセカンダリ仮想マシン21の状態をプライマリ仮想マシン11と同期状態にするチェックポイント転送受信部22cを有する。
VMM13、23は、仮想マシンの生成など仮想マシンに関する各種制御を実行するハイパーバイザ等のソフトウェアである。物理マシンカーネル14、24は、動作中のプログラムの実行状態を管理したり、ハードウェア資源を管理したりする。ネットワーク入力複製部15は、クライアントプログラム30からのネットワーク入力を複製してセカンダリ物理マシン20へ転送する。
[エミュレータの構成]
次に、図2を用いて、図1に示したプライマリ物理マシン10内のプライマリエミュレータ12およびセカンダリ物理マシン20内のセカンダリエミュレータ22の機能構成を説明する。図2は、第一の実施の形態に係るプライマリ物理マシン内のエミュレータおよびセカンダリ物理マシン内のエミュレータの機能構成を示すブロック図である。
図2に示すように、プライマリエミュレータ12は、ネットワーク出力格納部12a、ネットワーク出力制御部12b、チェックポイント転送部12cおよび送信部12dを有する。以下にこれらの各部の処理を説明する。
ネットワーク出力格納部12aは、プライマリ仮想マシン11により外部のクライアントプログラム30へネットワーク出力を出力する処理をフックした場合に、該ネットワーク出力を後述するプライマリ仮想マシンネットワーク出力専用バッファ121に格納する。
ネットワーク出力制御部12bは、プライマリ仮想マシンネットワーク出力専用バッファ121と、セカンダリ仮想マシンネットワーク出力専用バッファ122と、セカンダリ仮想マシンネットワーク受信部123と、閾値設定部124と、閾値超過監視部125と、ネットワーク出力ペア比較部126と、返答命令発行部127と、チェックポイント転送命令発行部128とを有する。
プライマリ仮想マシンネットワーク出力専用バッファ121は、フックされたプライマリ仮想マシン11からのネットワーク出力を出力された順番に記憶する。セカンダリ仮想マシンネットワーク出力専用バッファ122は、セカンダリ物理マシン20から転送されてきたセカンダリ仮想マシン21のネットワーク出力を記憶する。
セカンダリ仮想マシンネットワーク受信部123は、セカンダリ仮想マシン21から転送されたネットワーク出力を受信し、該ネットワーク出力をセカンダリ仮想マシンネットワーク出力専用バッファ122に格納する。
閾値設定部124は、探索を継続する期間(タイムアウト時間など)を示す閾値を設定する。閾値超過監視部125は、ネットワーク出力ペア比較部126によりネットワーク出力同士の比較を開始してから所定の時間が経過したかを監視する。具体的には、閾値超過監視部125は、ネットワーク出力ペア比較部126がネットワーク出力のペアを探索する処理を実行中に、閾値設定部124により設定された閾値を超過していないかを監視する。
ここで、閾値を超過した場合には、後述するチェックポイント転送部12cが、チェックポイント転送処理を実施して、プライマリ仮想マシン11とセカンダリ仮想マシン21を同期状態にし、プライマリ仮想マシン11のネットワーク出力をユーザプログラム側へ返答するようにする。これにより、バッファ内でペアとなるネットワーク出力を発見するのに時間を要してしまい、いつまでもクライアントプログラム30側へネットワーク出力が返送されないことを防ぎつつ、クライアントプログラム30への最大返答時間を保証することが可能となる。
ネットワーク出力ペア比較部126は、プライマリ仮想マシンネットワーク出力専用バッファ121に記憶された所定範囲のネットワーク出力とセカンダリ仮想マシンネットワーク出力専用バッファ122に記憶された所定範囲のネットワーク出力とを比較し、ネットワーク出力が一致するか否かを判定する。具体的には、ネットワーク出力ペア比較部126は、所定の時間内において、各バッファ121、122から同一の内容を持つネットワーク出力のペアを探索する。
このように、プライマリ仮想マシン11のネットワーク出力を出力された順番に複数個バッファするプライマリ仮想マシンネットワーク出力専用バッファ121と、セカンダリ仮想マシン21のネットワーク出力を複数個バッファするセカンダリ仮想マシンネットワーク出力専用バッファ122とでネットワーク出力内容の比較を行う際に、プライマリ仮想マシンネットワーク出力専用バッファ121からネットワーク出力を取り出し、当該ネットワーク出力とペアとなる同一の内容を持つネットワーク出力を、セカンダリ仮想マシンネットワーク出力専用バッファ122の中から探索する。これにより、ネットワーク出力の順序の違いが頻発する場合においても、チェックポイント転送処理の実行頻度の削減が可能となる。
返答命令発行部127は、プライマリ仮想マシンネットワーク出力専用バッファ121に記憶されたネットワーク出力をクライアントプログラム30に送信する返答命令を送信部12dに発行する。具体的には、返答命令発行部127は、ネットワーク出力ペア比較部126によって所定の時間内に各バッファ121、122から同一の内容を持つネットワーク出力のペアが探索された場合に、返答命令を送信部12dに発行する。
チェックポイント転送命令発行部128は、チェックポイント転送の実行命令をチェックポイント転送部12cに発行する。具体的には、チェックポイント転送命令発行部128は、閾値超過監視部125によりネットワーク出力のペアを探索する処理が閾値を超過して行われていると判定された場合には、チェックポイント転送の実行命令をチェックポイント転送部12cに発行する。
チェックポイント転送部12cは、ネットワーク出力ペア比較部126によってプライマリ仮想マシンネットワーク出力専用バッファ121に記憶されたネットワーク出力とセカンダリ仮想マシンネットワーク出力専用バッファ122に記憶されたネットワーク出力とが一致しないと判定された場合には、プライマリ仮想マシン11の状態をセカンダリ仮想マシン21に転送するチェックポイント転送処理を行う。
具体的には、チェックポイント転送部12cは、所定の時間内においてプライマリ仮想マシンネットワーク出力専用バッファ121に記憶されたネットワーク出力とセカンダリ仮想マシンネットワーク出力専用バッファ122に記憶されたネットワーク出力とが一致しないと判定された場合には、チェックポイント転送処理を行う。
送信部12dは、ネットワーク出力ペア比較部126によってプライマリ仮想マシンネットワーク出力専用バッファ121に記憶されたネットワーク出力とセカンダリ仮想マシンネットワーク出力専用バッファ122に記憶されたネットワーク出力とが一致すると判定された場合には、プライマリ仮想マシンネットワーク出力専用バッファ121に記憶されたネットワーク出力をクライアントプログラム30に送信する。
ここで、図3を用いて、各専用バッファ121、122から取り出したネットワーク出力内容を比較する処理を説明する。図3は、各専用バッファ121、122から取り出したネットワーク出力内容を比較する処理を説明する図である。図3に示すように、ネットワーク出力ペア比較部126は、プライマリ仮想マシンネットワーク出力専用バッファ121に記憶されたネットワーク出力の内容とセカンダリ仮想マシンネットワーク出力専用バッファ122に記憶されたネットワーク出力の内容とを比較する(図3の(1)参照)。
そして、比較の結果、ネットワーク出力が一致する場合には(図3の(2)参照)、送信部12dは、プライマリ仮想マシンネットワーク出力専用バッファ121から取り出したネットワーク出力をクライアントプログラム30へ返答する(図3の(3)参照)。また、比較の結果、ネットワーク出力が一致しない場合には(図3の(4)参照)、チェックポイント転送部12cは、チェックポイント転送の実行命令が発行され、プライマリ仮想マシン11とセカンダリ仮想マシン21を同期状態にする(図3の(5)参照)。
このように、仮想マシン同期システム1では、バッファの範囲でネットワーク出力が一致するか否かを比較し、一致するのであればネットワーク出力の順序は不問とすることで、チェックポイント転送処理を削減することができる。例えば、多くのアプリケーションがマルチプロセスで動作するような場合であっても、ネットワーク出力の順序を不問とすることで、チェックポイント転送処理が多発することを抑止することが可能である。
また、第一の実施の形態に係る仮想マシン同期システム1は、仮想マシンを利用したフォールトトレラントシステムであるため、特別なハードウェアが必要なく、また仮想マシン上のOSやアプリケーションに手を入れずにフォールトトレラントシステムを実現しつつ、ネットワーク出力順序の違いの影響によるチェックポイント転送処理の実行頻度の削減を可能とする。
例えば、フォールトトレラントの対象となる仮想マシン上のアプリケーションが、近年利用されている多くのアプリケーションのようにマルチプロセスで実装されており、プライマリ仮想マシン11とセカンダリ仮想マシン21でネットワーク出力の順序の違いが頻発する場合においても、チェックポイント転送処理の頻度を削減することが可能となる。
また、バッファされた各仮想マシンのネットワーク出力の中から、同一の内容を持つネットワーク出力のペアを発見するための探索を継続する期間について閾値を設け、閾値を超えた場合はチェックポイント転送処理を実施することで、クライアントプログラムへの最大返答時間を保証することが可能となる。また、プライマリ仮想マシン11とセカンダリ仮想マシン21のネットワーク出力の順序の違いについてバッファで吸収するため、予めネットワーク入力に順序性を示す情報を付与しておくなどといった特別な作りこみが必要ない。
[プライマリ物理マシンの処理の流れ]
図4〜図6を用いて、第一の実施の形態に係るプライマリ物理マシン10における処理について説明する。まず、図4を用いて、第一の実施の形態に係るプライマリ物理マシン10におけるプライマリ仮想マシン11のネットワーク出力の蓄積処理の流れを説明する。図4は、第一の実施の形態に係るプライマリ物理マシンにおけるプライマリ仮想マシンのネットワーク出力の蓄積処理の流れを示すフローチャートである。
図4に示すように、ネットワーク出力格納部12aは、プライマリ仮想マシン11からのネットワーク出力をフックすると(ステップS101肯定)、プライマリ仮想マシンネットワーク出力専用バッファ121に、出力された順番に蓄積していく(ステップS102)。蓄積したプライマリ仮想マシンネットワーク出力専用バッファ121内のネットワーク出力は、プライマリ仮想マシン11が出力した順番に再度取り出すことができるように管理される。
次に、図5を用いて、第一の実施の形態に係るプライマリ物理マシン10におけるセカンダリ仮想マシン21のネットワーク出力の蓄積処理の流れを説明する。図5は、第一の実施の形態に係るプライマリ物理マシンにおけるセカンダリ仮想マシンのネットワーク出力の蓄積処理の流れを示すフローチャートである。
図5に示すように、セカンダリ仮想マシンネットワーク受信部123は、ネットワーク出力転送部22bからのネットワーク出力を受信すると(ステップS201肯定)、セカンダリ仮想マシンネットワーク出力専用バッファ122に、受信した順番に蓄積していく(ステップS202)。蓄積したセカンダリ仮想マシンネットワーク出力専用バッファ122内のネットワーク出力は、ネットワーク出力転送部22bが転送した順番に再度取り出すことができるように管理される。
次に、図6を用いて、第一の実施の形態に係るプライマリ物理マシンにおける仮想マシン同期処理の流れを説明する。図6は、第一の実施の形態に係るプライマリ物理マシンにおける仮想マシン同期処理の流れを示すフローチャートである。
図6に示すように、まず、プライマリ物理マシン10のネットワーク出力ペア比較部126は、プライマリ仮想マシンネットワーク出力専用バッファ121内にネットワーク出力が存在した場合、当該バッファからネットワーク出力(L2フレーム)を先頭から1つ取り出す。この時、プライマリ仮想マシンネットワーク出力専用バッファ121の中のネットワーク出力は出力された順番に管理されているため、ネットワーク出力の出力された順番の中で最も古いL2フレームが取り出される。
この結果、取り出しに成功した場合には(ステップS301肯定)、参照ポインタをセカンダリ仮想マシンネットワーク出力専用バッファ122の先頭のネットワーク出力を参照するようにセットする(ステップS302)。参照ポインタは、セカンダリ仮想マシンネットワーク出力専用バッファ122の中から、次に取り出すべきセカンダリ仮想マシン21のネットワーク出力を指示するポインタである。
次に、プライマリ仮想マシンネットワーク出力専用バッファ121から当該ネットワーク出力を取り出した瞬間を0とした経過時間について、閾値設定部124で設定されている閾値を、閾値超過監視部125で超過していないか判定する(ステップS303)。当該閾値は、プライマリ仮想マシンネットワーク出力専用バッファ121から当該ネットワーク出力が取り出された時刻からの時間経過の上限を示すタイムアウト時間で規定され、閾値設定部124で予め設定することができる。当該閾値としては、例えば、数10ミリ秒から数100ミリ秒に設定することが考えられる。閾値超過監視部125内では、当該ネットワーク出力を取り出してからの経過時間を測定するための時刻情報など、閾値超過の有無の判断に必要な情報の監視を実施する。
この結果、設定した閾値を超過していた場合(ステップS303否定)、即座にチェックポイント転送の実行命令を発行してチェックポイント転送を実行し(ステップS308)、プライマリ仮想マシン11とセカンダリ仮想マシン21を同期状態にする。また、プライマリ仮想マシンネットワーク出力専用バッファ121内に存在する全てのネットワーク出力をクライアントプログラム30へ返答し、各専用バッファ121、122内に存在するネットワーク出力情報を全て削除して(ステップS309)、フローを終了する。
一方、設定した閾値を超過していない場合(ステップS303肯定)、セカンダリ仮想マシンネットワーク出力専用バッファ122から参照ポインタで示されているネットワーク出力を1つ取り出す。
この結果、取り出しに失敗した場合には(ステップS304否定)、ステップS303の処理に戻る。また、取り出しに成功した場合には(ステップS304肯定)、ネットワーク出力ペア比較部126は、各専用バッファ121、122から取り出したネットワーク出力内容の比較を行う(ステップS305)。比較するネットワーク出力内容としては、各仮想マシンから出力されたL2フレームの、L2やL3のヘッダ情報や処理結果である。ただし、ヘッダ情報のうち、例えばTCPヘッダのオプション内のタイムスタンプなどのような、たとえプライマリ仮想マシンとセカンダリ仮想マシンで一致していなくてもクライアントプログラムとのコネクション維持に影響の出ない情報については比較を実施しないこととする。
比較の結果、ネットワーク出力内容が一致していた場合(ステップS305:一致)、取り出したネットワーク出力のうちプライマリ仮想マシンネットワーク出力専用バッファ121から取り出したネットワーク出力のユーザプログラムへの返答を実行し、各専用バッファ121、122内に存在する当該ネットワーク出力のみを削除する(ステップS307)。
また、比較の結果、1つでもネットワーク出力内容の不一致があった場合(ステップS305:不一致)、プライマリ仮想マシンのネットワーク出力順序とセカンダリ仮想マシンのネットワーク出力順序が異なっていた可能性がある。そのため、参照ポインタをセカンダリ仮想マシンネットワーク出力専用バッファ122内の次のネットワーク出力を取り出すようにセットする(ステップS306)。そして、閾値の範囲内で一致するネットワーク出力ペアの探索を繰り返す。
[第一の実施の形態の効果]
このように、第一の実施の形態に係るプライマリ物理マシン10では、各仮想マシン11、21からのネットワーク出力を各専用バッファ121、122に複数蓄積し、各バッファ121、122内から同一のネットワーク出力内容を持つネットワーク出力を探索することで、プライマリ仮想マシンとセカンダリ仮想マシンのネットワーク出力の順序が異なることが頻発する場合においても、順序の違いがバッファ内で吸収され、チェックポイント転送処理の実行頻度を削減することが可能となる。
また、第一の実施の形態に係るプライマリ物理マシン10では、ネットワーク出力ペアを探索中に、閾値超過監視部125によって探索を継続する期間を示す閾値を超過していないか監視し、超過した場合はチェックポイント転送部12cが実行されるため、クライアントプログラム30側へネットワーク出力が返答されるまでの最大返答時間を保証することが可能となる。
また、第一の実施の形態に係るプライマリ物理マシン10では、各仮想マシン11、21からのネットワーク出力をバッファする各専用バッファ121、122への蓄積に関する機能と、ネットワーク出力ペア探索機能とを分類することで、並列的に機能を実行でき、処理の効率性を維持することができる。
また、本実施の形態の適用先は、各仮想マシン11、21が動作する物理マシンのエミュレーションレイヤであるため、フォールトトレラント性を実現するための特別なハードウェアが必要なく、また、仮想マシン上のOSやアプリケーションに手を加えずにフォールトトレラントシステムを実現するという特徴を残しつつ、プライマリ仮想マシン11とセカンダリ仮想マシン21のネットワーク出力の順序の違いの影響によるチェックポイント転送の実行頻度を削減することが可能となる。
[閾値をパケット数により規定]
なお、上述した第一の実施の形態では、閾値として、プライマリ仮想マシンネットワーク出力専用バッファ121からネットワーク出力を取り出してから経過した時間を規定する場合について説明したが、これに限定されるものではなく、閾値として、プライマリ仮想マシンネットワーク出力専用バッファ121に蓄積されたパケット数を規定しても良い。
この場合、閾値超過監視部125は、プライマリ仮想マシンネットワーク出力専用バッファ121に記憶されるネットワーク出力が、所定のパケット数を超えたかを監視する。具体的には、閾値超過監視部125は、閾値設定部124で設定されたパケット数を基準として、プライマリ仮想マシンネットワーク出力専用バッファ121に蓄積されたネットワーク出力のパケット数を閾値超過監視部125で監視する。
チェックポイント転送部12cは、閾値超過監視部125によってプライマリ仮想マシンネットワーク出力専用バッファ121に記憶されるネットワーク出力が、所定のパケット数を超えることが監視されるまでの間に、各専用バッファ121、122に記憶されたネットワーク出力が一致しなかったことが監視された場合には、チェックポイント転送処理を行う。つまり、プライマリ仮想マシンネットワーク出力専用バッファ121に蓄積されたネットワーク出力のパケット数が閾値を超過した場合に、チェックポイント転送を実施する。
[複数のセカンダリ仮想マシンネットワーク出力専用バッファ]
また、セカンダリ仮想マシン21からのネットワーク出力をバッファする際に、複数のセカンダリ仮想マシンネットワーク出力専用バッファ122を用意しておき、ネットワーク出力が持つ情報(例えば、宛先ポート番号)を元に、ネットワーク出力の分類を行うようにしてもよい。例えば、セカンダリ仮想マシンネットワーク出力専用バッファ122として、格納されるネットワーク出力が持つ宛先IPアドレスや宛先ポート番号の種別がそれぞれ異なる複数のセカンダリ仮想マシンネットワーク出力専用バッファ122を有する。そして、セカンダリ仮想マシンネットワーク受信部123は、セカンダリ仮想マシン21から転送されたネットワーク出力を受信し、該ネットワーク出力が持つ情報の種別に応じて、複数のセカンダリ仮想マシンネットワーク出力専用バッファ122のうち、いずれかのバッファにネットワーク出力を格納する。
そして、ネットワーク出力ペア比較部12bは、各専用バッファ121、122に記憶されたネットワーク出力について、同一種別の情報を持つネットワーク出力同士を比較し、ネットワーク出力同士が一致するか否かを判定する。これによって、プライマリ仮想マシン11のネットワーク出力と同一のネットワーク出力を探索する際に、分類されたバッファのうち、当該プライマリ仮想マシンネットワーク出力と同一の情報を持つバッファのみを探索すれば良いため、探索の効率性を向上させることができる。
[システム構成等]
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
また、本実施形態において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
[プログラム]
図7は、仮想マシン同期プログラムを実行するコンピュータを示す図である。コンピュータ1000は、例えば、メモリ1010、CPU(Central Processing Unit)1020を有する。また、コンピュータ1000は、ハードディスクドライブインタフェース1030、ディスクドライブインタフェース1040、シリアルポートインタフェース1050、ビデオアダプタ1060、ネットワークインタフェース1070を有する。これらの各部は、バス1080によって接続される。
メモリ1010は、ROM(Read Only Memory)1011及びRAM(Random Access Memory)1012を含む。ROM1011は、例えば、BIOS(Basic Input Output System)等のブートプログラムを記憶する。ハードディスクドライブインタフェース1030は、ハードディスクドライブ1031に接続される。ディスクドライブインタフェース1040は、ディスクドライブ1041に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ1041に挿入される。シリアルポートインタフェース1050は、例えばマウス1051、キーボード1052に接続される。ビデオアダプタ1060は、例えばディスプレイ1061に接続される。
ハードディスクドライブ1031は、例えば、OS1091、アプリケーションプログラム1092、プログラムモジュール1093、プログラムデータ1094を記憶する。すなわち、プライマリ物理マシン10の各処理を規定するプログラムは、コンピュータにより実行可能なコードが記述されたプログラムモジュール1093として実装される。プログラムモジュール1093は、例えばハードディスクドライブ1031に記憶される。例えば、プライマリ物理マシン10における機能構成と同様の処理を実行するためのプログラムモジュール1093が、ハードディスクドライブ1031に記憶される。なお、ハードディスクドライブ1031は、SSD(Solid State Drive)により代替されてもよい。
また、上述した実施形態の処理で用いられる設定データは、プログラムデータ1094として、例えばメモリ1010やハードディスクドライブ1031に記憶される。そして、CPU1020が、メモリ1010やハードディスクドライブ1031に記憶されたプログラムモジュール1093やプログラムデータ1094を必要に応じてRAM1012に読み出して実行する。
なお、プログラムモジュール1093やプログラムデータ1094は、ハードディスクドライブ1031に記憶される場合に限らず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ1041等を介してCPU1020によって読み出されてもよい。あるいは、プログラムモジュール1093及びプログラムデータ1094は、ネットワーク(LAN(Local Area Network)、WAN(Wide Area Network)等)を介して接続された他のコンピュータに記憶されてもよい。そして、プログラムモジュール1093及びプログラムデータ1094は、他のコンピュータから、ネットワークインタフェース1070を介してCPU1020によって読み出されてもよい。
1 仮想マシン同期システム
10 プライマリ物理マシン
11 プライマリ仮想マシン
12 プライマリエミュレータ
13、23 VMM
14、24 物理マシンカーネル
15 ネットワーク入力複製部
20 セカンダリ物理マシン
21 セカンダリ仮想マシン
22 セカンダリエミュレータ

Claims (6)

  1. 第一の物理マシン上で動作するプライマリ仮想マシンと、第二の物理マシン上で動作するセカンダリ仮想マシンとを有する仮想マシン同期システムであって、
    前記第一の物理マシンは、
    前記プライマリ仮想マシンにより外部のプログラムへ第一の出力情報を出力する処理を検知した場合に、該第一の出力情報を第一のバッファに格納する格納部と、
    前記セカンダリ仮想マシンから転送された第二の出力情報を受信し、該第二の出力情報を第二のバッファに格納する受信部と、
    前記第一のバッファに記憶された所定範囲の第一の出力情報と前記第二のバッファに記憶された所定範囲の第二の出力情報とを比較し、前記第一の出力情報と前記第二の出力情報とが一致するか否かを判定する比較部と、
    前記比較部によって前記第一の出力情報と前記第二の出力情報とが一致すると判定された場合には、前記第一の出力情報を前記プログラムに送信する送信部と、
    前記比較部によって前記第一の出力情報と前記第二の出力情報とが一致しないと判定された場合には、前記プライマリ仮想マシンの状態を前記セカンダリ仮想マシンに転送するチェックポイント転送処理を行う転送部と、
    を有することを特徴とする仮想マシン同期システム。
  2. 前記比較部により前記第一の出力情報と前記第二の出力情報との比較を開始してから所定の時間が経過したかを監視する監視部をさらに有し、
    前記転送部は、前記監視部によって前記所定の時間が経過したことが監視されるまでの間に、前記比較部によって前記第一の出力情報と前記第二の出力情報とが一致しなかったと判定された場合には、前記チェックポイント転送処理を行うことを特徴とする請求項1に記載の仮想マシン同期システム。
  3. 前記第一のバッファに記憶される第一の出力情報が、所定のパケット数を超えたかを監視する監視部をさらに有し、
    前記転送部は、前記監視部によって前記第一のバッファに記憶される第一の出力情報が、所定のパケット数を超えることが監視されるまでの間に、前記比較部によって前記第一の出力情報と前記第二の出力情報とが一致しなかったと判定された場合には、前記チェックポイント転送処理を行うことを特徴とする請求項1に記載の仮想マシン同期システム。
  4. 前記第二のバッファとして、格納される第二の出力情報の種別がそれぞれ異なる複数の第二のバッファを有し、
    前記受信部は、前記セカンダリ仮想マシンから転送された第二の出力情報を受信し、該第二の出力情報の種別に応じて、前記複数の第二のバッファのうち、いずれかのバッファに前記第二の出力情報を格納し、
    前記比較部は、同一種別の第一の出力情報と第二の出力情報とを比較し、前記第一の出力情報と前記第二の出力情報とが一致するか否かを判定することを特徴とする請求項1〜3のいずれか一つに記載の仮想マシン同期システム。
  5. 第一の物理マシン上で動作するプライマリ仮想マシンと、第二の物理マシン上で動作するセカンダリ仮想マシンとを有する仮想マシン同期システムによって実行される仮想マシン同期方法であって、
    前記第一の物理マシンが、
    前記プライマリ仮想マシンにより外部のプログラムへ第一の出力情報を出力する処理を検知した場合に、該第一の出力情報を第一のバッファに格納する格納工程と、
    前記セカンダリ仮想マシンから転送された第二の出力情報を受信し、該第二の出力情報を第二のバッファに格納する受信工程と、
    前記第一のバッファに記憶された所定範囲の第一の出力情報と前記第二のバッファに記憶された所定範囲の第二の出力情報とを比較し、前記第一の出力情報と前記第二の出力情報とが一致するか否かを判定する比較工程と、
    前記比較工程によって前記第一の出力情報と前記第二の出力情報とが一致すると判定された場合には、前記第一の出力情報を前記プログラムに送信する送信工程と、
    前記比較工程によって前記第一の出力情報と前記第二の出力情報とが一致しないと判定された場合には、前記プライマリ仮想マシンの状態を前記セカンダリ仮想マシンに転送するチェックポイント転送処理を行う転送工程と、
    を含んだことを特徴とする仮想マシン同期方法。
  6. 第一の物理マシン上で動作するプライマリ仮想マシンにより外部のプログラムへ第一の出力情報を出力する処理を検知した場合に、該第一の出力情報を第一のバッファに格納する格納ステップと、
    第二の物理マシン上で動作するセカンダリ仮想マシンから転送された第二の出力情報を受信し、該第二の出力情報を第二のバッファに格納する受信ステップと、
    前記第一のバッファに記憶された所定範囲の第一の出力情報と前記第二のバッファに記憶された所定範囲の第二の出力情報とを比較し、前記第一の出力情報と前記第二の出力情報とが一致するか否かを判定する比較ステップと、
    前記比較ステップによって前記第一の出力情報と前記第二の出力情報とが一致すると判定された場合には、前記第一の出力情報を前記プログラムに送信する送信ステップと、
    前記比較ステップによって前記第一の出力情報と前記第二の出力情報とが一致しないと判定された場合には、前記プライマリ仮想マシンの状態を前記セカンダリ仮想マシンに転送するチェックポイント転送処理を行う転送ステップと、
    をコンピュータに実行させるための仮想マシン同期プログラム。
JP2015092783A 2015-04-30 2015-04-30 仮想マシン同期システム、仮想マシン同期方法および仮想マシン同期プログラム Pending JP2016212485A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015092783A JP2016212485A (ja) 2015-04-30 2015-04-30 仮想マシン同期システム、仮想マシン同期方法および仮想マシン同期プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015092783A JP2016212485A (ja) 2015-04-30 2015-04-30 仮想マシン同期システム、仮想マシン同期方法および仮想マシン同期プログラム

Publications (1)

Publication Number Publication Date
JP2016212485A true JP2016212485A (ja) 2016-12-15

Family

ID=57551843

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015092783A Pending JP2016212485A (ja) 2015-04-30 2015-04-30 仮想マシン同期システム、仮想マシン同期方法および仮想マシン同期プログラム

Country Status (1)

Country Link
JP (1) JP2016212485A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111400046A (zh) * 2020-03-16 2020-07-10 广州虎牙科技有限公司 数据库资源管理方法、装置、资源管理设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004110803A (ja) * 2002-08-30 2004-04-08 Nec Computertechno Ltd フォールトトレラントコンピュータ、そのトランザクション同期制御方法及びプログラム
JP2004318702A (ja) * 2003-04-18 2004-11-11 Nec Corp 情報処理装置
JP2008234141A (ja) * 2007-03-19 2008-10-02 Nec Corp フォールトトレラントコンピュータシステム及びデータ送信制御方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004110803A (ja) * 2002-08-30 2004-04-08 Nec Computertechno Ltd フォールトトレラントコンピュータ、そのトランザクション同期制御方法及びプログラム
JP2004318702A (ja) * 2003-04-18 2004-11-11 Nec Corp 情報処理装置
JP2008234141A (ja) * 2007-03-19 2008-10-02 Nec Corp フォールトトレラントコンピュータシステム及びデータ送信制御方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
笠江 優美子,外4名: "仮想マシン間の低オーバヘッドな冗長構成維持手法実現に向けた既存方式の特性評価", 情報処理学会 研究報告 システムソフトウェアとオペレーティング・システム(OS), vol. 2015−OS−132, JPN6018011941, 19 February 2015 (2015-02-19), JP, pages 1 - 8, ISSN: 0003899090 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111400046A (zh) * 2020-03-16 2020-07-10 广州虎牙科技有限公司 数据库资源管理方法、装置、资源管理设备及存储介质
CN111400046B (zh) * 2020-03-16 2024-02-27 广州虎牙科技有限公司 数据库资源管理方法、装置、资源管理设备及存储介质

Similar Documents

Publication Publication Date Title
USRE47852E1 (en) Snapshot and replication of a multi-stream application on multiple hosts at near-sync frequency
US10156986B2 (en) Gang migration of virtual machines using cluster-wide deduplication
US10411953B2 (en) Virtual machine fault tolerance method, apparatus, and system
US9489230B1 (en) Handling of virtual machine migration while performing clustering operations
US11409619B2 (en) Recovering a virtual machine after failure of post-copy live migration
US8015431B2 (en) Cluster system and failover method for cluster system
US10152398B2 (en) Pipelined data replication for disaster recovery
US9600380B2 (en) Failure recovery system and method of creating the failure recovery system
WO2019195969A1 (zh) 数据同步处理的方法和装置
Jo et al. Transparent fault tolerance of device drivers for virtual machines
US10445295B1 (en) Task-based framework for synchronization of event handling between nodes in an active/active data storage system
US9529656B2 (en) Computer recovery method, computer system, and storage medium
US9195528B1 (en) Systems and methods for managing failover clusters
Wang et al. {PLOVER}: Fast, multi-core scalable virtual machine fault-tolerance
Fukai et al. Live migration in bare-metal clouds
US10649862B1 (en) Reducing failback performance duration in data replication systems
JP2016212485A (ja) 仮想マシン同期システム、仮想マシン同期方法および仮想マシン同期プログラム
Ong et al. VCCP: A transparent, coordinated checkpointing system for virtualization-based cluster computing
US10394664B1 (en) In-memory parallel recovery in a distributed processing system
Shi et al. SyncSnap: Synchronized live memory snapshots of virtual machine networks
US11994965B2 (en) Storage system, failover control method, and recording medium
Kukreti et al. CloneHadoop: Process Cloning to Reduce Hadoop's Long Tail
US20220398175A1 (en) Storage system, failover control method, and recording medium
US11994933B2 (en) Repairing high-availability virtual machine placements in a computing cluster
US20240045747A1 (en) Repairing high-availability virtual machine placements in a computing cluster

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170622

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180327

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180403

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20181023