(57)【要約】【課題】異なる仮想システムに属する同一のＩＰアドレスを有する仮想マシンの間のレプリケーションを効率的に行うこと。【解決手段】図１の（１）で示すように、レプリケーションマネージャｒｐｍが、レプリケーションの指示１４１＿１、２を、それぞれ、ホストＯＳ１、２に送信する。図１の（２）で示すように、ホストＯＳは、自身が動作する物理マシンｐｍ上で動作するゲストＯＳとの共有メモリに、指定に応じた記憶領域を設定する。図１の（３）で示すように、ホストＯＳは、自身が管理するゲストＯＳが転送元装置に指定された場合、ゲストＯＳによって転送用の共有メモリに書込まれたデータを、管理ＬＡＮ１１１を介して宛先装置に送信する。また、図１の（４）で示すように、ホストＯＳは、自身が管理するゲストＯＳが転送先装置に指定された場合、管理ＬＡＮ１１１を介して受信したデータを、受信用の共有メモリに書込む。【選択図】図１
2017162416.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
レプリケーションの宛先装置にデータを転送する転送元装置、または、転送先装置の指定とレプリケーションの対象となる前記指定に応じた記憶領域を示す情報とを含む指示を受け付けたことに応じて、前記指示に前記転送元装置の指定が含まれる場合には前記指定に応じた記憶領域を、前記コンピュータ上で動作する前記転送元装置として指定された仮想マシンと共有する転送用の共有メモリに設定し、前記指示に前記転送先装置の指定が含まれる場合には前記指定に応じた記憶領域を、前記コンピュータ装置上で動作する前記転送先装置として指定された仮想マシンと共有する受信用の共有メモリに設定し、
前記転送元装置として指定された仮想マシンによって前記転送用の共有メモリに書込まれたデータを、仮想マシンからのアクセスに制限がある管理用のネットワークを介して前記宛先装置に送信し、
前記管理用のネットワークを介して受信したデータを、前記転送先装置として指定された受信用の共有メモリに書込む、
処理を実行させることを特徴とするレプリケーションプログラム。
【請求項２】
前記指示は、ユーザを識別する情報をさらに含み、
前記設定する処理は、
前記指示を受け付けたことに応じて、前記指示に前記転送元装置の指定が含まれる場合には前記指定に応じた記憶領域を、前記コンピュータ上で動作する複数の仮想マシンのうちの前記転送元装置として指定された前記ユーザの仮想マシンと共有する転送用の共有メモリに設定し、前記指示に前記転送先装置の指定が含まれる場合には前記指定に応じた記憶領域を、前記転送先装置として指定された前記ユーザの仮想マシンと共有する受信用の共有メモリに設定し、
前記送信する処理は、
前記転送元装置として指定された仮想マシンによって前記転送用の共有メモリに書込まれたデータと前記ユーザを識別する情報とを、前記管理用のネットワークを介して前記宛先装置に送信し、
前記書込む処理は、
前記管理用のネットワークを介して受信したデータを、受信した前記ユーザを識別する情報により特定されており前記転送先装置として指定されたユーザの仮想マシンと共有する受信用の共有メモリに書込む、
ことを特徴とする請求項１に記載のレプリケーションプログラム。
【請求項３】
前記コンピュータに、
前記指示により前記仮想マシンが前記転送元装置に指定された場合、前記指示により前記コンピュータが前記宛先装置に指定されたか否かを判定し、
前記コンピュータが前記宛先装置に指定されたと判定した場合、前記仮想マシンによって前記転送用の共有メモリに書込まれたデータを、前記受信用の共有メモリにコピーし、
前記コンピュータが前記宛先装置に指定されていないと判定した場合、前記仮想マシンによって前記転送用の共有メモリに書込まれたデータを、前記管理用のネットワークを介して前記宛先装置に送信する、
処理を実行させることを特徴とする請求項１または２に記載のレプリケーションプログラム。
【請求項４】
前記送信する処理は、
前記コンピュータが有するデータベースに対して実行された更新クエリの全体が前記転送用の共有メモリに書込まれたことに応じて、前記更新クエリの全体を前記管理用のネットワークを介して前記宛先装置に送信し、
前記書込む処理は、
前記管理用のネットワークを介して受信したデータを、前記受信用の共有メモリに書込み、
前記コンピュータに、
前記受信用の共有メモリに前記データが書込まれた場合、前記データを更新クエリの全体として前記コンピュータが有するデータベースに対して実行する、
処理を実行させることを特徴とする請求項１〜３のいずれか一つに記載のレプリケーションプログラム。
【請求項５】
レプリケーションを指示する指示装置と２つの物理マシンとがそれぞれ接続する冗長化システムであって、
前記指示装置は、
レプリケーションの宛先装置にデータを転送する転送元装置、または、転送先装置の指定とレプリケーションの対象となる前記指定に応じた記憶領域を示す情報とを含む指示を、前記２つの物理マシンのそれぞれに送信し、
前記２つの物理マシンのうち、前記転送元装置に指定された仮想マシンを動作する第１の物理マシンは、
前記指示を前記指示装置から受け付けたことに応じて、前記転送元装置の指定に応じた記憶領域を、前記仮想マシンと共有する転送用の共有メモリに設定し、
前記仮想マシンによって前記転送用の共有メモリに書込まれたデータを、仮想マシンからのアクセスに制限がある管理用のネットワークを介して前記宛先装置に送信し、
前記２つの物理マシンのうち、前記転送先装置に指定された仮想マシンを動作する第２の物理マシンは、
前記指示を前記指示装置から受け付けたことに応じて、前記転送先装置の指定に応じた記憶領域を、前記仮想マシンと共有する受信用の共有メモリに設定し、
前記管理用のネットワークを介して受信したデータを、前記受信用の共有メモリに書込む、
ことを特徴とする冗長化システム。
【請求項６】
コンピュータが、
レプリケーションの宛先装置にデータを転送する転送元装置、または、転送先装置の指定とレプリケーションの対象となる前記指定に応じた記憶領域を示す情報とを含む指示を受け付けたことに応じて、前記指示に前記転送元装置の指定が含まれる場合には前記指定に応じた記憶領域を、前記コンピュータ上で動作する前記転送元装置として指定された仮想マシンと共有する転送用の共有メモリに設定し、前記指示に前記転送先装置の指定が含まれる場合には前記指定に応じた記憶領域を、前記コンピュータ装置上で動作する前記転送先装置として指定された仮想マシンと共有する受信用の共有メモリに設定し、
前記転送元装置として指定された仮想マシンによって前記転送用の共有メモリに書込まれたデータを、仮想マシンからのアクセスに制限がある管理用のネットワークを介して前記宛先装置に送信し、
前記管理用のネットワークを介して受信したデータを、前記転送先装置として指定された受信用の共有メモリに書込む、
処理を実行することを特徴とするレプリケーション方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、レプリケーションプログラム、冗長化システム、およびレプリケーション方法に関する。
【背景技術】
【０００２】
従来、仮想マシンの個数や仮想マシンのＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）アドレスの情報等を含むリソース構成と、仮想マシン上で動作するアプリケーションソフトウェアの構成とを一つにまとめた仮想システムテンプレートを物理マシンに適用して、仮想システムを構築する技術がある。例えば、パブリックネットワークで接続された２つの物理マシンのそれぞれに同一の仮想システムテンプレートを適用することにより、一方の物理マシンで本番系の仮想システムを運用させつつ、他方の物理マシンで待機系の仮想システムを運用させることができる。また、データをリアルタイムにコピーする、レプリケーションと呼ばれる技術がある。
【０００３】
関連する先行技術として、例えば、運用系サーバ装置が自らのデータベースの更新を行うとともに共有メモリに変更のあったデータを書込み、待機系サーバ装置が、共有メモリに書込まれたデータを自らのデータベースに反映するものがある。また、現用系システムの更新されたメモリ上のデータと外部記憶装置のファイルの更新履歴を取得し、通信媒体を介して現用系システムから待機系システムにデータと更新履歴を転送して、待機系システムのメモリと外部記憶装置のファイルに反映させる技術がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−２９３３１５号公報
【特許文献２】特開平１０−０４９４１８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来技術によれば、異なる仮想システムに属する同一のＩＰアドレスを有する仮想マシンの間のレプリケーションを行うことが困難である。具体的には、レプリケーションを行うために２つの仮想マシンを接続することになるが、同一の仮想システムテンプレートから設定された仮想マシンは、同一のローカルＩＰアドレスを有するため、直接接続することができない。そこで、例えば、２つの仮想システムのうちの一方の仮想システムの内部に、他方の仮想システムを構築することも考えられるが、この場合、仮想システムテンプレートの変更を伴う。そして、仮想システムテンプレートの内容を把握していない者が、仮想システムテンプレートの変更を行うことは困難である。また、例えば、パブリックネットワークを介して２つの仮想マシンを接続することも考えられるが、セキュリティ上好ましくない。また、例えば、Ｔｗｉｃｅ  ＮＡＴ（Ｎｅｔｗｏｒｋ  Ａｄｄｒｅｓｓ  Ｔｒａｎｓｌａｔｉｏｎ）を設定することにより、ローカルＩＰアドレスの衝突を回避することも考えられるが、ＩＰアドレスを書き換える際にパケットのコピーが行われるため、レプリケーションにかかる負荷が増大する。
【０００６】
１つの側面では、本発明は、異なる仮想システムに属する同一のＩＰアドレスを有する仮想マシンの間のレプリケーションを効率的に行うことができるレプリケーションプログラム、冗長化システム、およびレプリケーション方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の一側面によれば、レプリケーションの宛先装置にデータを転送する転送元装置、または、転送先装置の指定とレプリケーションの対象となる指定に応じた記憶領域を示す情報とを含む指示を受け付けたことに応じて、指示に転送元装置の指定が含まれる場合には指定に応じた記憶領域を、コンピュータ上で動作する転送元装置として指定された仮想マシンと共有する転送用の共有メモリに設定し、指示に転送先装置の指定が含まれる場合には指定に応じた記憶領域を、コンピュータ装置上で動作する転送先装置として指定された仮想マシンと共有する受信用の共有メモリに設定し、転送元装置として指定された仮想マシンによって転送用の共有メモリに書込まれたデータを、仮想マシンからのアクセスに制限がある管理用のネットワークを介して宛先装置に送信し、管理用のネットワークを介して受信したデータを、転送先装置として指定された受信用の共有メモリに書込むレプリケーションプログラム、冗長化システム、およびレプリケーション方法が提案される。
【発明の効果】
【０００８】
本発明の一態様によれば、異なる仮想システムに属する同一のＩＰアドレスを有する仮想マシンの間のレプリケーションを効率的に行うことができるという効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】図１は、実施の形態１にかかる冗長化システム１００の動作例を示す説明図である。
【図２】図２は、物理マシンのハードウェア構成例を示す説明図である。
【図３】図３は、冗長化システム１００の機能構成例を示す説明図である。
【図４】図４は、レプリケーション管理テーブル３１１の記憶内容の一例を示す説明図である。
【図５】図５は、ＤＢ管理テーブル３１２の記憶内容の一例を示す説明図である。
【図６】図６は、拡張Ｂｉｎｌｏｇ１２１の記憶内容の一例を示す説明図である。
【図７】図７は、共有メモリ管理テーブル３１３の記憶内容の一例を示す説明図である。
【図８】図８は、レプリケーション設定処理手順の一例を示すフローチャートである。
【図９】図９は、共有メモリ設定処理手順の一例を示すフローチャートである。
【図１０】図１０は、フラグ書込み処理手順の一例を示すフローチャートである。
【図１１】図１１は、ログ送信処理手順の一例を示すフローチャートである。
【図１２】図１２は、ログ書込み処理手順の一例を示すフローチャートである。
【図１３】図１３は、実施の形態２にかかる冗長化システム１３００の動作例を示す説明図である。
【図１４】図１４は、冗長化システム１３００の機能構成例を示す説明図である。
【図１５】図１５は、判定処理手順の一例を示すフローチャートである。
【図１６】図１６は、ログコピー処理手順の一例を示すフローチャートである。
【図１７】図１７は、実施の形態３にかかる冗長化システム１７００の動作例を示す説明図である。
【図１８】図１８は、冗長化システム１７００の機能構成例を示す説明図である。
【図１９】図１９は、共有メモリ管理テーブル１８１１の記憶内容の一例を示す説明図である。
【発明を実施するための形態】
【００１０】
以下に図面を参照して、開示のレプリケーションプログラム、冗長化システム、およびレプリケーション方法の実施の形態を詳細に説明する。
【００１１】
（実施の形態１の説明）
図１は、実施の形態１にかかる冗長化システム１００の動作例を示す説明図である。図１に示す冗長化システム１００は、レプリケーションを指示する指示装置となる物理マシンｐｍｍと、物理マシンｐｍ１、ｐｍ２とを有する。ここで、レプリケーションとは、データをリアルタイムでコピーする技術である。対象となるデータはどのようなものでもよく、例えば、ＤＢ（ＤａｔａＢａｓｅ）の内容であったり、ファイルであったりしてもよい。
【００１２】
また、物理マシンｐｍｍ、ｐｍ１、ｐｍ２は、ネットワークとして管理ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）１１１によってそれぞれ接続される。また、物理マシンｐｍ１、２は、さらに、業務ＬＡＮ１１２によってそれぞれ接続される。ここで、業務ＬＡＮ１１２は、ゲストＯＳ間を接続して業務データを転送するためのネットワークであり、ルータやゲートウェイを経由してパブリックネットワークに接続されたクライアント端末と接続する。一方、管理ＬＡＮ１１１は、業務ＬＡＮ１１２とは別のネットワークである。
【００１３】
物理マシンｐｍ１、２は、仮想マシン（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ：ＶＭ）を利用者に提供するコンピュータである。物理マシンｐｍ１、２は、例えば、サーバである。また、例えば、物理マシンｐｍ１、２は、データセンター（Ｄａｔａ  Ｃｅｎｔｅｒ：ＤＣ）内にある。ＶＭは、ハードウェア資源を用いて仮想的に作成されたコンピュータである。ＶＭは、仮想的に作成したコンピュータであればどのようなものでもよい。ＶＭを制御するプログラムとしては、ハイパーバイザがある。ハイパーバイザは、ハードウェアを直接制御する機能を持ち、ファームウェア層で、仮想化マシンアーキテクチャーを提供するプログラムである。
【００１４】
ハイパーバイザは、作成したＶＭの各々のＶＭ上で、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）を動作させることができる。各々のＶＭ上では、ゲストＯＳが動作する。また、ある１つのＶＭ上では、ホストＯＳが動作する。ホストＯＳは、ハイパーバイザを管理するＯＳである。
【００１５】
また、ＶＭの個数や各ＶＭが用いるメモリ量といったＶＭに関する情報および各ＶＭのネットワークのＩＰアドレスの情報といったリソース構成と、ＶＭ上で動作するアプリケーションソフトウェア構成とを一つにまとめた仮想システムテンプレートがある。仮想システムテンプレートの開発者は、仮想システムテンプレートから仮想システムを配備して運用する運用者とは別であり、運用者は仮想システムテンプレートの内部を知らなくてよい。例えば、２つの物理マシンｐｍに同一の仮想システムテンプレートを適用して、本番系のデータベースサーバを有する仮想システムと、待機系のデータベースサーバを有する仮想システムとを運用することができる。
【００１６】
しかしながら、同じ仮想システムテンプレートから配備された本番系と待機系との仮想システムにおいて、本番系のＤＢを有するＶＭと待機系のＤＢを有するＶＭとを接続してレプリケーションを行うことが困難である。なぜならば、レプリケーションを行うために、２つのＶＭの間をオンデマンドで接続することになるが、２つのＶＭが、同じ仮想システムテンプレートから配備されたため、同一のプライベートＩＰアドレスを有するためである。また、２つのＶＭが、ＤＣ内のサーバのハードウェアを利用する際には、会社内でシステムを運用するオンプレミスのように、物理構成を変更することもできない。
【００１７】
同じ仮想システムテンプレートから配備された２つのＶＭの間を接続する技術としては、例えば、本番系のネットワークに、待機系の仮想システムを構築することが考えられる。しかしながら、この場合、仮想システムテンプレートの変更を伴うため、仮想システムテンプレート自体をアップデートする場合には適用できない。また、仮想システムテンプレートを購入して、本番系および待機系の仮想システムを運用する運用者は、仮想システムテンプレートの内部の構成を把握していないため、仮想システムテンプレートの変更を行うことは困難である。
【００１８】
また、同じ仮想システムテンプレートから配備された２つのＶＭの間を接続する技術としては、業務ＬＡＮ１１２経由でレプリケーションを行うことが考えられる。しかしながら、本番系のＤＢの内容が、パブリックネットワークを介して転送されることになるため、セキュリティ上好ましくない。
【００１９】
また、本番系のホストＯＳと待機系のホストＯＳとでＴｗｉｃｅ  ＮＡＴを設定することにより、ローカルＩＰアドレスの衝突を回避することも考えられる。しかしながら、ＩＰアドレスを書き換える際にパケットのコピーが行われるため、レプリケーションにかかる負荷が増大する。
【００２０】
そこで、本実施の形態では、レプリケーションの転送元と転送先でゲストＯＳとホストＯＳ間で共有する記憶領域となる共有メモリを設定し、ホストＯＳが、共有メモリのデータを転送元から転送先に管理ＬＡＮ１１１で転送することについて説明する。
【００２１】
図１を用いて、冗長化システム１００の動作を説明する。物理マシンｐｍｍ、ｐｍ１、ｐｍ２上では、それぞれ、ハイパーバイザｈｖｍ、ｈｖ１、ｈｖ２が動作する。そして、図１では、物理マシンｐｍｍ上で動作するソフトウェアとして、レプリケーションマネージャｒｐｍが示される。レプリケーションマネージャｒｐｍは、冗長化システム１００におけるレプリケーションを管理するソフトウェアである。レプリケーションマネージャｒｐｍは、ＶＭ上で動作してもよいし、物理マシンｐｍｍ上で動作してもよい。レプリケーションマネージャｒｐｍがＶＭ上で動作する場合には、ハイパーバイザｈｖｍ上にＶＭが作成され、作成されたＶＭ上でレプリケーションマネージャｒｐｍが動作する。また、レプリケーションマネージャｒｐｍが物理マシンｐｍｍ上で動作する場合には、物理マシンｐｍｍ上でＯＳが動作し、ＯＳ上でレプリケーションマネージャｒｐｍが動作する。レプリケーションマネージャｒｐｍの機能については、図３で説明する。
【００２２】
また、図１では、物理マシンｐｍ１上で動作するソフトウェアとして、ホストＯＳ１と、ゲストＯＳ１１とが示される。また、図１では、物理マシンｐｍ２上で動作するソフトウェアとして、ホストＯＳ２と、ゲストＯＳ２１とが示される。以下の記載において、「＿ｘ」が付与された符号は、ホストＯＳｘに関する符号であることを示す。同様に、「＿ｘｙ」が付与された符号は、ゲストＯＳｘｙに関する符号であることを示す。
【００２３】
ここで、ゲストＯＳ１１、２１は、管理ＬＡＮ１１１へのアクセスに制限があり、管理ＬＡＮ１１１にはアクセスできない。従って、管理ＬＡＮ１１１は、セキュアな通信を行うことができる。
【００２４】
ここで、ゲストＯＳ１１は、本番系のＤＢシステムを運用しており、ゲストＯＳ２１は、待機系のＤＢシステムを運用しているとする。本実施の形態では、データのレプリケーションとして、本番系と待機系の間でのＤＢのレプリケーションを例として説明する。そして、以下の記載では、レプリケーションの転送元となるＤＢを、「マスタＤＢ」と呼称し、レプリケーションの転送先となるＤＢを、「スレーブＤＢ」と呼称する。
【００２５】
ここで、ＭｙＳＱＬにおける２つのＤＢの間のレプリケーションについて説明する。マスタＤＢを有するマスタサーバは、マスタＤＢに対して実行された更新クエリをＢｉｎｌｏｇという記憶領域に格納する。Ｂｉｎｌｏｇの詳細については図６で説明する。次に、マスタサーバは、スレーブＤＢを有するスレーブサーバにＢｉｎｌｏｇを送信する。スレーブサーバは、受信したＢｉｎｌｏｇをＲｅｌａｙｌｏｇとして保存する。そして、スレーブサーバは、Ｒｅｌａｙｌｏｇから更新クエリをスレーブＤＢに対して実行する。これにより、マスタＤＢとスレーブＤＢとの内容が同一となる。図１の説明では、ＭｙＳＱＬにおけるＤＢのレプリケーションを適用した例を用いて説明する。
【００２６】
図１の例では、ゲストＯＳ１１は、レプリケーションの転送元となるデータを格納する記憶領域となる拡張Ｂｉｎｌｏｇ１２１＿１１と、マスタＤＢ１２２＿１１とを有する。ここで、拡張Ｂｉｎｌｏｇ１２１は、マルチテナントや更新クエリのアトミック性確保のためにＢｉｎｌｏｇを拡張したものである。図１の例では、拡張Ｂｉｎｌｏｇ１２１＿１１は、アドレス０ｘ１１…を先頭アドレスとしてゲストＯＳ１１のメモリ空間にマッピングされている。
【００２７】
また、ゲストＯＳ２１は、レプリケーションの転送先となるデータを格納する記憶領域となるＲｅｌａｙｌｏｇ１３１＿２１と、スレーブＤＢ１３２＿２１とを有する。図１の例では、Ｒｅｌａｙｌｏｇ１３１＿２１は、アドレス０ｘ２２…を先頭アドレスとしてゲストＯＳ２１のメモリ空間にマッピングされている。
【００２８】
ここで、図１の（１）で示すように、レプリケーションマネージャｒｐｍが、レプリケーションの指示１４１＿１、２を、それぞれ、ホストＯＳ１、ホストＯＳ２に送信する。レプリケーションの指示には、レプリケーションの宛先装置にデータを転送する転送元装置、または転送先装置であるゲストＯＳの指定と、レプリケーションの対象となるゲストＯＳに応じた記憶領域を示す情報とを含む。ここで、転送元装置の指定には、宛先装置となるホストＯＳを識別する情報も含まれる。
【００２９】
図１の例では、ホストＯＳ１に送信する指示１４１＿１には、転送元装置としてゲストＯＳ１１の指定と、レプリケーションの対象となるゲストＯＳ１１に応じた記憶領域のメモリアドレス０ｘ１１…とが含まれる。また、指示１４１＿１には、宛先装置を識別する情報としてホストＯＳ２の指定も含まれる。また、ホストＯＳ２に送信する指示１４１＿２には、転送先装置としてゲストＯＳ２１の指定と、レプリケーションの対象となるゲストＯＳ２１に応じた記憶領域のメモリアドレス０ｘ２２…とが含まれる。
【００３０】
指示１４１を受け付けたことに応じて、図１の（２）で示すように、ホストＯＳは、自身のホストＯＳが動作する物理マシンｐｍ上で動作するゲストＯＳとの共有メモリに、指定に応じた記憶領域を設定する。例えば、ホストＯＳ１は、メモリアドレス０ｘ１１…から始まる拡張Ｂｉｎｌｏｇ１２１＿１１を転送用の共有メモリに設定する。ここで、図１以降の点線で示した拡張Ｂｉｎｌｏｇ１２１やＲｅｌａｙｌｏｇ１３１は、ホストＯＳとゲストＯＳとで共有した記憶領域であることを示す。同様に、ホストＯＳ２は、メモリアドレス０ｘ２２…から始まるＲｅｌａｙｌｏｇ１３１＿２１を受信用の共有メモリに設定する。
【００３１】
次に、図１の（３）で示すように、ホストＯＳは、指示１４１により転送元装置に指定された自身の管理するゲストＯＳによって共有メモリに書込まれたデータを、管理ＬＡＮ１１１を介して転送先装置に送信する。ここで、管理ＬＡＮ１１１は、ライブマイグレーション等に使われるゲストＯＳのアクセスの制限があるＬＡＮであるため、ホストＯＳ以外は管理ＬＡＮを覗き見することができず、セキュアな通信が可能である。
【００３２】
図１の例では、指示１４１＿１によりゲストＯＳ１１が転送元装置に指定されているため、ホストＯＳ１は、ゲストＯＳ１１によって拡張Ｂｉｎｌｏｇ１２１＿１１に書込まれた更新クエリを、管理ＬＡＮ１１１を介して宛先装置となるホストＯＳ２に送信する。
【００３３】
また、図１の（４）で示すように、ホストＯＳは、管理ＬＡＮ１１１を介して受信したデータを、指示１４１により転送先装置に指定された自身の管理するゲストＯＳと共有する受信用の共有メモリに書込む。図１の例では、ホストＯＳ２は、管理ＬＡＮ１１１を介して受信した更新クエリを、Ｒｅｌａｙｌｏｇ１３１＿２１に書込む。この後、ゲストＯＳ２１は、Ｒｅｌａｙｌｏｇ１３１＿２１に書込まれた更新クエリをスレーブＤＢ１３２＿２１に対して実行する。
【００３４】
以上により、冗長化システム１００は、同一のＩＰアドレスを有するゲストＯＳ１１とゲストＯＳ２１との間のレプリケーションを効率的に行うことができる。具体的には、冗長化システム１００は、業務ＬＡＮ１１２を用いず管理ＬＡＮ１１１を用いてデータを転送するためにセキュアに行え、また、パケットの変換もしないために負荷を増大させることもなく、レプリケーションを行うことができる。また、冗長化システム１００は、仮想システムテンプレートの変更や特別なハードウェアを用意することなく、レプリケーションを行うことができる。
【００３５】
なお、１つの物理マシンｐｍに存在するゲストＯＳがレプリケーションの転送元装置および転送先装置に指定されてもよい。この場合、ホストＯＳは、自身にデータを送信してもよいし、メモリコピーを行ってもよい。メモリコピーを行う構成については、実施の形態２で説明する。また、１つの物理マシンｐｍに存在するゲストＯＳが、あるレプリケーションの転送元装置または転送先装置に指定されるとともに、他のレプリケーションの転送元装置または転送先装置に指定されてもよい。この場合、１つの物理マシンｐｍに、マスタＤＢ１２２とスレーブＤＢ１３２とが混在する場合がある。１つの物理マシンｐｍにマスタＤＢ１２２とスレーブＤＢ１３２とが混在する場合の構成については、実施の形態３で説明する。
【００３６】
また、上述した説明では、仮想化マシンアーキテクチャーを提供する技術として、ハイパーバイザ型を適用したシステムに本実施の形態を適用した例について説明したが、これに限らない。例えば、ホストＯＳの１アプリケーションとしてＶＭを動作させる、ホスト型を適用したシステムに対しても本実施の形態を適用することができる。次に、物理マシンｐｍｍ、ｐｍ１、ｐｍ２のハードウェア構成について、図２を用いて説明する。
【００３７】
図２は、物理マシンのハードウェア構成例を示す説明図である。物理マシンｐｍｍ、ｐｍ１、ｐｍ２が有するハードウェアは、全て同一でよいため、図２の説明では、単に、物理マシンｐｍとして説明する。図２において、物理マシンｐｍは、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２０１と、ＲＯＭ（Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）２０２と、ＲＡＭ（Ｒａｎｄｏｍ−Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２０３と、を含む。また、物理マシンｐｍは、ディスクドライブ２０４およびディスク２０５と、通信インターフェース２０６、２０７とを含む。また、ＣＰＵ２０１〜ディスクドライブ２０４、通信インターフェース２０６、２０７はバス２０８によってそれぞれ接続される。
【００３８】
ＣＰＵ２０１は、物理マシンｐｍの全体の制御を司る演算処理装置である。また、物理マシンは、複数のＣＰＵを有してもよい。ＲＯＭ２０２は、ブートプログラムなどのプログラムを記憶する不揮発性メモリである。ＲＡＭ２０３は、ＣＰＵ２０１のワークエリアとして使用される揮発性メモリである。
【００３９】
ディスクドライブ２０４は、ＣＰＵ２０１の制御に従ってディスク２０５に対するデータのリードおよびライトを制御する制御装置である。ディスクドライブ２０４には、例えば、磁気ディスクドライブ、光ディスクドライブ、ソリッドステートドライブなどを採用することができる。ディスク２０５は、ディスクドライブ２０４の制御で書込まれたデータを記憶する不揮発性メモリである。例えばディスクドライブ２０４が磁気ディスクドライブである場合、ディスク２０５には、磁気ディスクを採用することができる。また、ディスクドライブ２０４が光ディスクドライブである場合、ディスク２０５には、光ディスクを採用することができる。また、ディスクドライブ２０４がソリッドステートドライブである場合、ディスク２０５には、半導体素子によって形成された半導体メモリ、いわゆる半導体ディスクを採用することができる。
【００４０】
通信インターフェース２０６、２０７は、ネットワークと内部のインターフェースを司り、他の装置からのデータの入出力を制御する制御装置である。具体的に、通信インターフェース２０６は、管理ＬＡＮ１１１を介して他の装置に接続される。また、通信インターフェース２０７は、業務ＬＡＮ１１２を介して他の装置に接続される。通信インターフェース２０６、２０７には、例えば、モデムやＬＡＮアダプタなどを採用することができる。
【００４１】
また、冗長化システム１００の管理者が、物理マシンを直接操作する場合、物理マシンｐｍは、ディスプレイ、キーボード、マウスといったハードウェアを有してもよい。なお、物理マシンｐｍｍは、業務ＬＡＮ１１２には接続していないため、通信インターフェース２０７がなくてもよい。
【００４２】
（冗長化システム１００の機能構成例）
図３は、冗長化システム１００の機能構成例を示す説明図である。冗長化システム１００は、レプリケーション設定部３０１と、共有メモリ設定部３０２と、送信部３０３と、書込み部３０４と、ログ生成部３０５と、ログ実行部３０６とを含む。ここで、レプリケーション設定部３０１は、物理マシンｐｍｍのレプリケーションマネージャｒｐｍが有する機能である。共有メモリ設定部３０２〜書込み部３０４は、物理マシンｐｍ１、ｐｍ２上で動作するホストＯＳが有する機能である。ログ生成部３０５は、物理マシンｐｍ１、ｐｍ２上で動作するゲストＯＳのうちのマスタＤＢ１２２を有するＯＳが有する機能である。また、ログ生成部３０５は、フラグ書込み部３０７を有する。ログ実行部３０６は、物理マシンｐｍ１、ｐｍ２上で動作するゲストＯＳのうちのスレーブＤＢ１３２を有するＯＳが有する機能である。
【００４３】
ここで、図３の例では、物理マシンｐｍ１は、ホストＯＳ１、ゲストＯＳ１１に加え、ゲストＯＳ１２、１３を動作させている。図３では図示していないが、ゲストＯＳ１２、１３も、拡張Ｂｉｎｌｏｇ１２１、マスタＤＢ１２２、ログ生成部３０５を有する。同様に、物理マシンｐｍ２は、ホストＯＳ２、ゲストＯＳ２１に加え、ゲストＯＳ２２、２３を動作させている。図３では図示していないが、ゲストＯＳ２２、２３も、Ｒｅｌａｙｌｏｇ１３１、スレーブＤＢ１３２、ログ実行部３０６を有する。
【００４４】
また、実施の形態１では、図３で示すように、ホストＯＳ１が、共有化される拡張Ｂｉｎｌｏｇ１２１を有し、ホストＯＳ２が、共有化されるＲｅｌａｙｌｏｇ１３１を有するものとする。ホストＯＳは、拡張Ｂｉｎｌｏｇ１２１やＲｅｌａｙｌｏｇ１３１を、ゲストＯＳごとに有する。図３の例では、ホストＯＳ１は、ゲストＯＳ１１の拡張Ｂｉｎｌｏｇ１２１＿１１と、ゲストＯＳ１２の拡張Ｂｉｎｌｏｇ１２１＿１２と、ゲストＯＳ１３の拡張Ｂｉｎｌｏｇ１２１＿１３とを有する。また、ホストＯＳ２は、ゲストＯＳ２１のＲｅｌａｙｌｏｇ１３１＿２１と、ゲストＯＳ２２のＲｅｌａｙｌｏｇ１３１＿２２と、ゲストＯＳ２３のＲｅｌａｙｌｏｇ１３１＿２３とを有する。
【００４５】
また、レプリケーションマネージャｒｐｍは、レプリケーション管理テーブル３１１とＤＢ管理テーブル３１２とにアクセス可能である。レプリケーション管理テーブル３１１とＤＢ管理テーブル３１２とは、物理マシンｐｍｍのＲＡＭ２０３、ディスク２０５といった記憶装置に格納される。
【００４６】
また、ホストＯＳは、共有メモリ管理テーブル３１３にアクセス可能である。共有メモリ管理テーブル３１３は、物理マシンｐｍ１、ｐｍ２のＲＡＭ２０３、ディスク２０５といった記憶装置に格納される。
【００４７】
レプリケーション設定部３０１は、レプリケーションを指示するユーザｕが操作する端末からレプリケーションリクエストを受け付けたことに応じて、レプリケーションの設定を行う。設定した内容は、レプリケーション設定部３０１に格納される。
【００４８】
共有メモリ設定部３０２は、指示１４１を物理マシンｐｍｍから受け付けたことに応じて、指示１４１に含まれる指定に応じた共有メモリを、物理マシンｐｍ上で動作するゲストＯＳと共有する共有メモリに設定する。具体的には、共有メモリ設定部３０２は、指示１４１により自身の管理するゲストＯＳが転送元装置に指定された場合、指示１４１に含まれる指定に応じた共有メモリを、ゲストＯＳと共有する転送用の共有メモリに設定する。また、共有メモリ設定部３０２は、指示１４１により自身の管理するゲストＯＳが転送先装置に指定された場合、指示１４１に含まれる指定に応じた共有メモリを、ゲストＯＳと共有する受信用の共有メモリに設定する。設定した共有メモリの情報は、共有メモリ管理テーブル３１３に格納される。
【００４９】
送信部３０３は、指示１４１により自身の管理するゲストＯＳが転送元装置に指定された場合、ゲストＯＳによって転送用の共有メモリに書込まれたデータを、管理ＬＡＮ１１１を介して宛先装置に送信する。具体的には、図３の例では、ホストＯＳ１が管理するゲストＯＳ１１が、指示１４１＿１により転送元装置に指定されており、ホストＯＳ２が、宛先装置に指定されている。この場合、送信部３０３＿１は、マスタＤＢ１２２＿１１に対して実行された更新クエリの全体が拡張Ｂｉｎｌｏｇ１２１＿１１に書込まれたことに応じて、更新クエリの全体を管理ＬＡＮ１１１を介してホストＯＳ２に送信する。ここで、更新クエリの一部を送信してしまうと、スレーブＤＢ１３２が破壊される恐れがある。従って、本実施の形態では、更新クエリの全体を送信することを担保するために、フラグ書込み部３０７が、拡張Ｂｉｎｌｏｇ１２１の書込みを監視する。
【００５０】
書込み部３０４は、指示１４１により自身の管理するゲストＯＳが転送先装置に指定された場合、管理ＬＡＮ１１１を介して受信したデータを、受信用の共有メモリに書込む。具体的には、図３の例では、ゲストＯＳ１１が、指示１４１＿１により転送元装置に指定されており、ホストＯＳ２が管理するゲストＯＳ２１が、指示１４１＿２により転送先装置に指定されている。この場合、書込み部３０４＿２は、管理ＬＡＮ１１１を介して受信したデータを、Ｒｅｌａｙｌｏｇ１３１＿２１に書込む。
【００５１】
図３における以降の説明では、指示１４１に、レプリケーションを指示するユーザを識別する情報が含まれている場合の機能例について説明する。ユーザを識別する情報は、ユーザを一意に特定できるものであればどのような情報でもよく、例えば、ユーザＩＤ（ＩＤｅｎｔｉｆｙ）である。以下、ユーザを識別する情報を、ユーザＩＤとする。
【００５２】
共有メモリ設定部３０２は、指示１４１を物理マシンｐｍｍから受け付けたことに応じて、自身の物理マシンｐｍ上で動作する複数のＯＳのうちのユーザのＯＳの共有メモリを設定する。例えば、図３の例で、ゲストＯＳ１１〜ゲストＯＳ１３のうち、ユーザｕのＯＳは、ゲストＯＳ１１であるとする。この場合、共有メモリ設定部３０２は、ゲストＯＳ１１の共有メモリとなる拡張Ｂｉｎｌｏｇ１２１＿１１を転送用の共有メモリに設定する。
【００５３】
そして、送信部３０３は、指示１４１により自身が管理するゲストＯＳが転送元装置に指定された場合、ゲストＯＳによって転送用の共有メモリに書込まれたデータとユーザＩＤとを、管理ＬＡＮ１１１を介して宛先装置に送信する。例えば、送信部３０３＿１は、拡張Ｂｉｎｌｏｇ１２１＿１１のエントリと、ユーザｕのユーザＩＤとを、管理ＬＡＮ１１１を介してホストＯＳ２に送信する。
【００５４】
また、書込み部３０４は、指示１４１により自身が管理するゲストＯＳが転送先装置に指定された場合、管理ＬＡＮ１１１を介して受信したデータを、複数のＯＳのうちの、受信したユーザＩＤにより特定されたゲストＯＳの受信用の共有メモリに書込む。例えば、ホストＯＳ２が、拡張Ｂｉｎｌｏｇ１２１＿１１のエントリとユーザｕのユーザＩＤとを、管理ＬＡＮ１１１を介して受信したとする。そして、ゲストＯＳ２１〜ゲストＯＳ２３のうち、ユーザｕのＯＳは、ゲストＯＳ２１であるとする。この場合、書込み部３０４＿２は、Ｒｅｌａｙｌｏｇ１３１＿２１に、拡張Ｂｉｎｌｏｇ１２１＿１１のエントリを書込む。なお、このとき書込むデータは、拡張Ｂｉｎｌｏｇ１２１＿１１の拡張した情報を除く部分である。具体的な書込みの処理については、図１２で説明する。
【００５５】
ログ生成部３０５は、マスタＤＢ１２２に対して実行された更新クエリを拡張Ｂｉｎｌｏｇ１２１に書込む。更新クエリは、例えば、Ｉｎｓｅｒｔ文、Ｕｐｄａｔｅ文、Ｄｅｌｅｔｅ文等である。
【００５６】
ログ実行部３０６は、Ｒｅｌａｙｌｏｇ１３１に書込まれた更新クエリを、スレーブＤＢ１３２に対して実行する。
【００５７】
フラグ書込み部３０７は、更新クエリのアトミック性を担保するため、拡張Ｂｉｎｌｏｇ１２１への書込みを監視し、拡張Ｂｉｎｌｏｇ１２１のエントリ全体を書き終えた場合に、エントリ全体の書込みが完了したことを示すフラグを書込む。具体的な処理は、図１０で説明する。
【００５８】
図４は、レプリケーション管理テーブル３１１の記憶内容の一例を示す説明図である。レプリケーション対象となるＤＢの転送元と転送先との組み合わせを管理するテーブルである。また、レプリケーション管理テーブル３１１のエントリは、レプリケーションの指示を受け付けた際に生成される。図４に示すレプリケーション管理テーブル３１１は、エントリ４０１＿１、２を有する。
【００５９】
レプリケーション管理テーブル３１１は、転送元ＤＢＩＤと、転送先ＤＢＩＤと、転送モードというフィールドを含む。転送元ＤＢＩＤフィールドには、レプリケーションの転送元となるＤＢを識別する情報が格納される。転送先ＤＢＩＤフィールドには、レプリケーションの転送先となるＤＢを識別する情報が格納される。転送モードフィールドには、データを転送する転送モードを識別する情報が格納される。具体的には、転送モードには、マスタＤＢに書込まれたことを割込みにより検出し、書込まれたデータをスレーブＤＢに転送するモードである「割込み」と、一定間隔ごとに転送元ＤＢのデータを転送先ＤＢに転送するモードである「タイマー」とがある。
【００６０】
例えば、エントリ４０１＿１は、転送元ＤＢがマスタＤＢ１２２であり、転送先ＤＢがスレーブＤＢ１３２であり、転送モードが割込みであることを示す。
【００６１】
図５は、ＤＢ管理テーブル３１２の記憶内容の一例を示す説明図である。ＤＢ管理テーブル３１２は、レプリケーション対象となるＤＢを個別に管理するテーブルである。ＤＢ管理テーブル３１２のエントリの１つが、１つのＤＢに対応する。そして、ＤＢ管理テーブル３１２のエントリは、ＤＢを配備する際に登録される。図５に示すＤＢ管理テーブル３１２は、エントリ５０１＿１〜４を有する。
【００６２】
ＤＢ管理テーブル３１２は、ＤＢＩＤと、ホストＩＤと、ゲストＩＤと、ログアドレスと、ログサイズと、ユーザＩＤというフィールドを含む。ＤＢＩＤフィールドには、ＤＢを識別する情報が格納される。ホストＩＤフィールドには、ＤＢを有するゲストＯＳを管理するホストＯＳを識別する情報が格納される。ゲストＩＤフィールドには、ＤＢを有するゲストＯＳを識別する情報が格納される。ログアドレスフィールドには、ゲストＯＳ上でのログのメモリアドレスが格納される。また、ログアドレスフィールドには、ＤＢの種別を示す情報が併せて格納されてもよい。ログサイズフィールドには、ログのサイズが格納される。ユーザＩＤフィールドには、レプリケーションを指示したユーザを識別する情報が格納される。
【００６３】
例えば、エントリ５０１＿１は、レプリケーションで用いられるマスタＤＢ１２２についてのエントリである。そして、エントリ５０１＿１は、ゲストＯＳ１１上でのログとなる拡張Ｂｉｎｌｏｇ１２１のアドレスがＡＤＤＲ１であり、拡張Ｂｉｎｌｏｇ１２１のサイズがＳｉｚｅ１であり、レプリケーションを指示したユーザが、Ｕｓｅｒ１であることを示す。
【００６４】
図６は、拡張Ｂｉｎｌｏｇ１２１の記憶内容の一例を示す説明図である。拡張Ｂｉｎｌｏｇは、Ｂｉｎｌｏｇを拡張したものである。図６に示す拡張Ｂｉｎｌｏｇ１２１＿１１は、エントリ６０１＿１、２を有する。
【００６５】
拡張Ｂｉｎｌｏｇ１２１は、イベントヘッダと、イベントデータと、ユーザＩＤと、完了フラグというフィールドを含む。イベントヘッダフィールドおよびイベントデータフィールドは、拡張する前のＢｉｎｌｏｇが有するフィールドである。具体的には、イベントヘッダフィールドには、更新リクエストのタイムスタンプやタイプが格納される。また、イベントデータフィールドには、Ｑｕｅｒｙの中身が格納される。
【００６６】
ユーザＩＤフィールドには、マルチテナントのためのユーザを識別する情報が格納される。ユーザＩＤフィールドを追加した理由として、一般に、物理マシン上には複数のＶＭが配備され、各ＶＭには別のユーザのＤＢが配備されることがある。そこで、適切にユーザを区分してレプリケーションを行うため、本実施の形態のように、Ｂｉｎｌｏｇを拡張してユーザＩＤを書込むことで、書込み部３０４でユーザＩＤに対応するＲｅｌａｙｌｏｇ１３１を特定することができる。
【００６７】
完了フラグフィールドには、Ｂｉｎｌｏｇのエントリの生成が完了したか否かを示す情報が格納される。具体的には、完了フラグフィールドには、Ｂｉｎｌｏｇのエントリの生成が完了したことを示す「Ｔｒｕｅ」か、Ｂｉｎｌｏｇのエントリの生成が完了していないことを示す「Ｆａｌｓｅ」かが格納される。完了フラグフィールドには、初期値として、「Ｆａｌｓｅ」が格納される。
【００６８】
完了フラグフィールドを追加した理由として、更新リクエストからＢｉｎｌｏｇのエントリが生成される際に、途中までしか生成されていない状態でスレーブＤＢ１３２に反映するとスレーブＤＢ１３２が破壊される恐れがある。そこで、ログ生成部３０５で更新リクエストが完全に書込まれた時に、Ｂｉｎｌｏｇの完了フラグをＴｒｕｅに設定することで、更新リクエストのアトミック性を確保することができる。
【００６９】
例えば、エントリ６０１＿１は、Ｕｓｅｒ１のＤＢに対する更新リクエストに対するエントリの生成が完了していることを示す。
【００７０】
図７は、共有メモリ管理テーブル３１３の記憶内容の一例を示す説明図である。共有メモリ管理テーブル３１３は、共有メモリに設定されたログを管理するテーブルである。また、共有メモリ管理テーブル３１３のエントリは、レプリケーションマネージャｒｐｍから共有メモリ設定の指示を受けた際に作成される。図７に示す共有メモリ管理テーブル３１３＿１は、エントリ７０１＿１、２を有する。また、図７に示す共有メモリ管理テーブル３１３＿２は、エントリ７０２＿１を有する。
【００７１】
共有メモリ管理テーブル３１３は、ゲストアドレスと、ホストアドレスと、サイズと、転送モードと、ユーザＩＤと、宛先ホストＩＤというフィールドを含む。このうち、ゲストアドレスフィールド、サイズ、転送モード、ユーザＩＤは、レプリケーションマネージャｒｐｍから通知される値である。そして、ゲストアドレスフィールド、サイズ、ユーザＩＤには、ＤＢ管理テーブル３１２のログアドレス、ログサイズ、ユーザＩＤの各フィールドと同一の値が格納される。また、転送モードフィールドには、共有メモリ管理テーブル３１３を有する物理マシンｐｍが転送元側となる場合、レプリケーション管理テーブル３１１の転送モードフィールドと同一の値が格納される。一方、共有メモリ管理テーブル３１３を有する物理マシンｐｍが転送先側となる場合、転送モードフィールドには、「Ｎｏｎｅ」が設定される。
【００７２】
ホストアドレスフィールドには、共有メモリに設定されたログのホストＯＳ上でのメモリアドレスが格納される。宛先ホストＩＤフィールドには、共有メモリ管理テーブル３１３を有する物理マシンｐｍが転送元側となる場合、転送先側となるホストを識別する情報が格納される。一方、共有メモリ管理テーブル３１３を有する物理マシンｐｍが転送先となる、宛先ホストＩＤフィールドには、「Ｎｏｎｅ」が設定される。
【００７３】
上述したように、転送モード、宛先ホストＩＤの各フィールドは、転送元側だけで利用するフィールドであるため、ホストＯＳは、Ｎｏｎｅが設定されているエントリが、転送先となるエントリであることを識別することができる。
【００７４】
例えば、エントリ７０１＿１は、図３で示した拡張Ｂｉｎｌｏｇ１２１＿１１の設定である。具体的には、エントリ７０１＿１は、ユーザＩＤがＵｓｅｒ１であり、ホストアドレスａｄｄｒ１であり、サイズがＳｉｚｅ１となる拡張Ｂｉｎｌｏｇ１２１＿１１を、割込みによりホストＯＳ２に転送することを示す。
【００７５】
また、エントリ７０２＿１は、図３で示したＲｅｌａｙｌｏｇ１３１＿２１の設定である。具体的には、エントリ７０２＿１は、ユーザＩＤがＵｓｅｒ１であり、ホストアドレスａｄｄｒ２であり、サイズがＳｉｚｅ２となるＲｅｌａｙｌｏｇ１３１＿２１に、転送元側から受信した拡張Ｂｉｎｌｏｇ１２１＿１１のエントリを書込むことを示す。
【００７６】
次に、冗長化システム１００が実行する処理を、図８〜図１２を用いて説明する。
【００７７】
図８は、レプリケーション設定処理手順の一例を示すフローチャートである。レプリケーション設定処理は、レプリケーションを設定する処理である。レプリケーション設定処理は、レプリケーション設定部３０１が有する機能を実現する処理であり、また、レプリケーションマネージャｒｐｍが実行する処理である。
【００７８】
レプリケーションマネージャｒｐｍは、管理者からレプリケーションリクエストを受け付ける（ステップＳ８０１）。ここで、レプリケーションリクエストには、マスタＤＢとなるＤＢＩＤと、スレーブＤＢとなるＤＢＩＤと、転送モードとが含まれる。
【００７９】
次に、レプリケーションマネージャｒｐｍは、レプリケーション管理テーブル３１１にエントリがあるか否かを判断する（ステップＳ８０２）。なお、初期状態ではレプリケーション管理テーブル３１１にはエントリが１つもない状態である。レプリケーション管理テーブル３１１にエントリがない場合（ステップＳ８０２：Ｎｏ）、レプリケーションマネージャｒｐｍは、レプリケーション管理テーブル３１１にエントリを追加する（ステップＳ８０３）。
【００８０】
ステップＳ８０３の終了後、またはレプリケーション管理テーブル３１１にエントリがある場合（ステップＳ８０２：Ｙｅｓ）、レプリケーションマネージャｒｐｍは、ＤＢ管理テーブル３１２にマスタＤＢ１２２のエントリがあり、かつスレーブＤＢ１３２のエントリがあるか否かを判断する（ステップＳ８０４）。前述した２つのエントリがある場合（ステップＳ８０４：Ｙｅｓ）、レプリケーションマネージャｒｐｍは、ホストＯＳ１に、引数がゲストＩＤ、ログアドレス、サイズ、ユーザＩＤ、転送モード、宛先ホストＩＤとなる共有メモリ設定処理の実行指示を送信する（ステップＳ８０５）。また、レプリケーションマネージャｒｐｍは、ホストＯＳ２に、引数がゲストＩＤ、ログアドレス、サイズ、ユーザＩＤ、Ｎｏｎｅ、Ｎｏｎｅとなる共有メモリ設定処理の実行指示を送信する（ステップＳ８０６）。ステップＳ８０６の終了後、レプリケーションマネージャｒｐｍは、レプリケーション設定処理を終了する。
【００８１】
一方、ＤＢ管理テーブル３１２にマスタＤＢ１２２のエントリがない、またはスレーブＤＢ１３２のエントリがない場合（ステップＳ８０４：Ｎｏ）、レプリケーションマネージャｒｐｍは、レプリケーション設定処理をエラー終了する。レプリケーション設定処理を実行することにより、レプリケーションマネージャｒｐｍは、冗長化システム１００内におけるレプリケーションの設定を行うことができる。
【００８２】
図９は、共有メモリ設定処理手順の一例を示すフローチャートである。共有メモリ設定処理は、共有メモリを設定する処理である。共有メモリ設定処理は、共有メモリ設定部３０２が有する機能を実現する処理であり、また、ホストＯＳが実行する処理である。また、共有メモリ設定処理は、引数として、ゲストＩＤ、ログアドレス、サイズ、ユーザＩＤ、転送モード、宛先ホストＩＤとを受け付ける。
【００８３】
ホストＯＳは、レプリケーション管理テーブル３１１にエントリがあるか否かを判断する（ステップＳ９０１）。レプリケーション管理テーブル３１１にエントリがない場合（ステップＳ９０１：Ｎｏ）、ホストＯＳは、レプリケーション管理テーブル３１１にエントリを追加する（ステップＳ９０２）。このとき、追加されるエントリの内容は、引数として得たログアドレス、サイズ、ユーザＩＤ、転送モード、宛先ホストＩＤである。この段階で、追加されるエントリのホストアドレスフィールドは空白である。
【００８４】
ステップＳ９０２の処理終了後、またはレプリケーション管理テーブル３１１にエントリがある場合（ステップＳ９０１：Ｙｅｓ）、ホストＯＳは、ハイパーバイザｈｖに引数がログアドレス、サイズとなる共有メモリの設定要求を行う（ステップＳ９０３）。そして、ホストＯＳは、ハイパーバイザｈｖから、共有メモリのホストアドレスを取得する（ステップＳ９０４）。次に、ホストＯＳは、エントリに、取得したホストアドレスを設定する（ステップＳ９０５）。そして、ホストＯＳは、転送モードが割込みか否かを判断する（ステップＳ９０６）。転送モードが割込みである場合（ステップＳ９０６：Ｙｅｓ）、ホストＯＳは、共有メモリに書込んだ時にトラップを通知するように設定する（ステップＳ９０７）。ステップＳ９０７の処理終了後、ホストＯＳは、共有メモリ設定処理を終了する。
【００８５】
一方、転送モードが割込みでない場合（ステップＳ９０６：Ｎｏ）、すなわち、転送モードがタイマー、またはＮｏｎｅである場合、ホストＯＳは、共有メモリ設定処理を終了する。共有メモリ設定処理を実行することにより、ホストＯＳは、共有メモリを設定することができる。
【００８６】
ここで、転送元と転送先とについて、共有メモリ設定処理が実行される際の例を説明する。転送元装置に指定されたゲストＯＳを管理するホストＯＳ１は、共有メモリ設定処理を実行することにより、図７で示したエントリ７０１＿１を生成するとともに、拡張Ｂｉｎｌｏｇ１２１＿１１を転送用の共有メモリに設定する。また、転送先装置に指定されたゲストＯＳを管理するホストＯＳ２は、共有メモリ設定処理を実行することにより、図７で示したエントリ７０２＿１を生成するとともに、Ｒｅｌａｙｌｏｇ１３１＿２１を受信用の共有メモリに設定する。
【００８７】
図１０は、フラグ書込み処理手順の一例を示すフローチャートである。フラグ書込み処理は、拡張Ｂｉｎｌｏｇ１２１の完了フラグを書込む処理である。フラグ書込み処理は、フラグ書込み部３０７が有する機能を実現する処理であり、ゲストＯＳが実行する処理である。
【００８８】
ゲストＯＳは、ログ生成部３０５により拡張Ｂｉｎｌｏｇのエントリが生成されるまで待ち受ける（ステップＳ１００１）。次に、ゲストＯＳは、生成されたＢｉｎｌｏｇのエントリが完全に書込まれたか否かを判断する（ステップＳ１００２）。生成されたＢｉｎｌｏｇのエントリが完全に書込まれていない場合（ステップＳ１００２：Ｎｏ）、ゲストＯＳは、ステップＳ１００１の処理に移行する。一方、生成されたＢｉｎｌｏｇのエントリが完全に書込まれた場合（ステップＳ１００２：Ｙｅｓ）、ゲストＯＳは、拡張Ｂｉｎｌｏｇの完了フラグをＴｒｕｅに設定する（ステップＳ１００３）。ステップＳ１００３の処理終了後、ゲストＯＳは、フラグ書込み処理を終了する。フラグ書込み処理を実行することにより、ゲストＯＳは、更新リクエストのアトミック性を確保することができる。
【００８９】
図１１は、ログ送信処理手順の一例を示すフローチャートである。ログ送信処理は、ログを送信する処理である。ログ送信処理は、送信部３０３が有する機能を実現する処理であり、ホストＯＳが実行する処理である。
【００９０】
ホストＯＳは、共有メモリ管理テーブル３１３から、宛先ホストＩＤを取得する（ステップＳ１１０１）。次に、ホストＯＳは、宛先ホストＩＤを有するホストＯＳの書込み部３０４に管理ＬＡＮ１１１を介して接続する（ステップＳ１１０２）。そして、ホストＯＳは、共有メモリ管理テーブル３１３から、ホストアドレスを取得する（ステップＳ１１０３）。次に、ホストＯＳは、転送モードを確認する（ステップＳ１１０４）。転送モードが割込みである場合（ステップＳ１１０４：割込み）、ホストＯＳは、ログ生成部３０５の書込みをトラップする（ステップＳ１１０５）。一方、転送モードがタイマーである場合（ステップＳ１１０４：タイマー）、ホストＯＳは、一定間隔ごとに拡張Ｂｉｎｌｏｇ１２１の内容を読み出す（ステップＳ１１０６）。
【００９１】
ステップＳ１１０５またはステップＳ１１０６の処理終了後、ホストＯＳは、拡張Ｂｉｎｌｏｇ１２１の完了フラグを確認する（ステップＳ１１０７）。拡張Ｂｉｎｌｏｇ１２１の完了フラグがＦａｌｓｅである場合（ステップＳ１１０７：Ｆａｌｓｅ）、ホストＯＳは、ステップＳ１１０４の処理に移行する。一方、拡張Ｂｉｎｌｏｇ１２１の完了フラグがＴｒｕｅである場合（ステップＳ１１０７：Ｔｒｕｅ）、ホストＯＳは、拡張Ｂｉｎｌｏｇ１２１を、宛先ホストＩＤを有するホストＯＳの書込み部３０４に送信する（ステップＳ１１０８）。次に、ホストＯＳは、書込み部３０４からのＡｃｋを待ち受ける（ステップＳ１１０９）。Ａｃｋを受け付けた後、ホストＯＳは、拡張Ｂｉｎｌｏｇ１２１のエントリを消去する（ステップＳ１１１０）。ステップＳ１１１０の処理終了後、ホストＯＳは、ログ送信処理を終了する。ログ送信処理を実行することにより、転送元となったホストＯＳは、マスタＤＢ１２２に書込まれたデータを転送先に送信することができる。
【００９２】
図１２は、ログ書込み処理手順の一例を示すフローチャートである。ログ書込み処理は、ログを受信してＲｅｌａｙｌｏｇ１３１に書込む処理である。ログ書込み処理は、書込み部３０４が有する機能を実現する処理であり、ホストＯＳが実行する処理である。
【００９３】
ホストＯＳは、送信部３０３からの接続を待ち受ける（ステップＳ１２０１）。送信部３０３から接続された場合に、ホストＯＳは、送信部３０３から拡張Ｂｉｎｌｏｇ１２１を管理ＬＡＮ１１１を介して受信する（ステップＳ１２０２）。次に、ホストＯＳは、受信した拡張Ｂｉｎｌｏｇ１２１のユーザＩＤに対応するＲｅｌａｙｌｏｇ１３１を特定する（ステップＳ１２０３）。そして、ホストＯＳは、受信した拡張Ｂｉｎｌｏｇ１２１からユーザＩＤと完了フラグとを除いたエントリの内容を、特定したＲｅｌａｙｌｏｇ１３１に書込む（ステップＳ１２０４）。次に、ホストＯＳは、ログ実行部３０６の処理完了を待ち受ける（ステップＳ１２０５）。ログ実行部３０６が処理完了した後、ホストＯＳは、送信部３０３にＡｃｋを送信する（ステップＳ１２０６）。
【００９４】
ステップＳ１２０６の処理終了後、ホストＯＳは、ログ書込み処理を終了する。ログ書込み処理を実行することにより、ホストＯＳは、マスタＤＢ１２２に書込まれたデータを転送元から受信することができる。
【００９５】
以上説明したように、冗長化システム１００は、レプリケーションの転送元と転送先とにおいて、ゲストＯＳとホストＯＳ間の共有メモリを設定し、転送元のホストＯＳが、共有メモリのデータを転送先に管理ＬＡＮ１１１を介して転送する。これにより、冗長化システム１００は、同一のＩＰアドレスを有するゲストＯＳ１１とゲストＯＳ２１との間のレプリケーションを効率的に行うことができる。具体的には、冗長化システム１００は、業務ＬＡＮ１１２を用いず管理ＬＡＮ１１１を用いてデータを転送するためにセキュアに行え、また、パケットの変換もしないために負荷を増大させることもなく、レプリケーションを行うことができる。また、冗長化システム１００は、仮想システムテンプレートの変更や特別なハードウェアを用意することなく、レプリケーションを行うことができる。
【００９６】
また、冗長化システム１００は、指示１４１に含まれるユーザＩＤにより特定したユーザのゲストＯＳの共有メモリを設定し、転送元では共有メモリのデータとユーザＩＤとを送信し、転送先では受信したユーザＩＤの共有メモリに受信したデータを書込んでもよい。これにより、冗長化システム１００は、マルチテナントに対応することができる。一方で、冗長化システム１００において、レプリケーションを指示するユーザが１人であることが予めわかっている場合には、拡張Ｂｉｎｌｏｇ１２１、ＤＢ管理テーブル３１２、共有メモリ管理テーブル３１３のユーザＩＤフィールドを設けなくてもよい。
【００９７】
また、冗長化システム１００は、マスタＤＢ１２２に対して実行された更新クエリの全体が転送元のゲストＯＳの間の共有メモリに書込まれたことに応じて、管理ＬＡＮ１１１を介して、転送先のホストＯＳに送信してもよい。これにより、更新クエリのアトミック性を担保でき、スレーブＤＢ１３２が破壊されることを防ぐことができる。
【００９８】
また、冗長化システム１００に含まれるゲストＯＳのＩＰアドレスは、仮想システムテンプレートにより設定されたものであってもよい。冗長化システム１００は、仮想システムテンプレートの適用により同一のＩＰアドレスを有するゲストＯＳ同士のレプリケーションを効率的に行うことができる。また、仮想システムテンプレートを適用しない例であっても、本実施の形態を適用することができる。例えば、レプリケーションを管理するユーザが、管理の簡便化のため、本番系の仮想システムのネットワーク設定と、待機系の仮想システムのネットワーク設定とを同一にしている場合である。この場合であっても、本実施の形態を適用して、異なる仮想システムに属する同一ＩＰアドレスを有するゲストＯＳ同士のレプリケーションを効率的に行うことができる。
【００９９】
（実施の形態２の説明）
実施の形態２にかかる冗長化システムは、マスタＤＢを有するゲストＯＳとスレーブＤＢを有するゲストＯＳとが、同一の物理マシン上で動作する構成と、異なる物理マシン上で動作する構成とが混在する際にも対応できるシステムである。このような場合、実施の形態２にかかる冗長化システムは、２つの構成を判定して、メモリ間のコピーと、管理ＬＡＮ１１１を介する転送とを使い分ける。実施の形態１において説明した箇所と同様の箇所については、同一符号を付して図示および説明を省略する。
【０１００】
図１３は、実施の形態２にかかる冗長化システム１３００の動作例を示す説明図である。図１３に示す冗長化システム１３００において、物理マシンｐｍ１は、ホストＯＳ１と、ゲストＯＳ１１と、ゲストＯＳ１２とを動作させる。また、物理マシンｐｍ２は、ホストＯＳ２と、ゲストＯＳ２１とを動作させる。なお、図１３には図示していないが、冗長化システム１３００内には物理マシンｐｍｍが存在する。
【０１０１】
ゲストＯＳ１１は、ゲストＯＳ１１の利用者となるクライアントから届いた更新リクエストから、拡張Ｂｉｎｌｏｇ１２１＿１１のエントリを生成する。ホストＯＳ１は、拡張Ｂｉｎｌｏｇ１２１＿１１に書込まれたことを検出すると、宛先ホストＩＤと、自身のＩＤとを比較する。
【０１０２】
宛先ホストＩＤと、自身のＩＤとが同一、すなわち、図１３の例では、マスタＤＢ１２２＿１１に対応するスレーブＤＢが、スレーブＤＢ１３２＿１２であるとする。この場合、ホストＯＳ１は、拡張Ｂｉｎｌｏｇ１２１＿１１に書込まれたデータをＲｅｌａｙｌｏｇ１３１＿１２にコピーする。そして、ゲストＯＳ１２は、Ｒｅｌａｙｌｏｇ１３１＿１２にコピーされたＳＱＬを実行してスレーブＤＢ１３２＿１２に反映する。
【０１０３】
一方、図１３の例について、宛先ホストＩＤと自身のＩＤとが異なる、すなわち、マスタＤＢ１２２＿１１に対応するスレーブＤＢが、スレーブＤＢ１３２＿２１であるとする。この場合、ホストＯＳ１は、管理ＬＡＮ１１１経由で拡張Ｂｉｎｌｏｇ１２１＿１１に書込まれたデータをホストＯＳ２に送信する。ホストＯＳ２は、受信したデータを、Ｒｅｌａｙｌｏｇ１３１＿２１に書込む。そして、ゲストＯＳ２１は、Ｒｅｌａｙｌｏｇ１３１＿２１にコピーされたＳＱＬを実行してスレーブＤＢ１３２＿２１に反映する。次に、冗長化システム１３００の機能構成例を、図１４を用いて説明する。
【０１０４】
図１４は、冗長化システム１３００の機能構成例を示す説明図である。冗長化システム１３００は、レプリケーション設定部３０１と、共有メモリ設定部３０２と、書込み部３０４と、ログ生成部３０５と、ログ実行部３０６と、判定部１４０１と、コピー部１４０２と、送信部１４０３と、を含む。ここで、共有メモリ設定部３０２、書込み部３０４、判定部１４０１〜送信部１４０３は、物理マシンｐｍ１、ｐｍ２上で動作するホストＯＳが有する機能である。
【０１０５】
ここで、図１４の例では、物理マシンｐｍ１は、ホストＯＳ１、ゲストＯＳ１１、１２を動作させている。そして、ゲストＯＳ１１は、マスタＤＢ１２２＿１１を有し、ゲストＯＳ１２は、スレーブＤＢ１３２＿１１を有する。また、物理マシンｐｍ２は、ホストＯＳ２、ゲストＯＳ２１を動作させている。
【０１０６】
図１４の例では、ホストＯＳ１が、共有化される拡張Ｂｉｎｌｏｇ１２１＿１１と、共有化されるＲｅｌａｙｌｏｇ１３１＿１２を有するものとする。
【０１０７】
判定部１４０１は、更新リクエストを受け付けた際に、転送先のＤＢが転送元のＤＢと同じ物理マシン上に配備されているか、それとも別の物理サーバ上に配備されているかを判定する。
【０１０８】
コピー部１４０２は、転送先のＤＢが転送元のＤＢと同じ物理マシン上に配備されていると判定部１４０１が判定した場合、転送用の共有メモリに書込まれたデータを、受信用の共有メモリにコピーする。例えば、転送先のＤＢが転送元のＤＢと同じ物理マシン上に配備されていると判定部１４０１＿１が判定したとする。この場合、コピー部１４０２＿１は、転送用の共有メモリとなる拡張Ｂｉｎｌｏｇ１２１＿１１のエントリを、受信用の共有メモリとなるＲｅｌａｙｌｏｇ１３１にコピーする。
【０１０９】
送信部１４０３は、転送先のＤＢが転送元のＤＢとは別の物理サーバ上に配備されていると判定部１４０１が判定した場合、ゲストＯＳによって転送用の共有メモリに書込まれたデータを、管理ＬＡＮ１１１を介して宛先装置に送信する。
【０１１０】
図１５は、判定処理手順の一例を示すフローチャートである。判定処理は、マスタＤＢを有するゲストＯＳとスレーブＤＢを有するゲストＯＳとが同一の物理マシン上で動作するか否かを判定する処理である。判定処理は、判定部１４０１が有する機能を実現する処理であり、ホストＯＳが実行する処理である。
【０１１１】
ホストＯＳは、共有メモリ管理テーブル３１３から、宛先ホストＩＤを取得する（ステップＳ１５０１）。次に、ホストＯＳは、取得した宛先ホストＩＤが自身のホストＩＤと同一か否かを判断する（ステップＳ１５０２）。取得した宛先ホストＩＤが自身のホストＩＤと同一である場合（ステップＳ１５０２：Ｙｅｓ）、ホストＯＳは、ログコピー処理を実行する（ステップＳ１５０３）。ログコピー処理の詳細は、図１６で説明する。また、ここで、転送元装置に指定する指示と、転送先装置に指定する指示とは、一つのデータとして結合されたものでもよいし、データとしては別々ではあるが、関連付けられたものでもよい。
【０１１２】
一方、取得した宛先ホストＩＤが自身のホストＩＤとは異なる場合（ステップＳ１５０２：Ｎｏ）、ホストＯＳは、ログ送信処理を実行する（ステップＳ１５０４）。ログ送信処理は、図１１で説明したものと同一である。
【０１１３】
ステップＳ１５０３の処理、またはステップＳ１５０４の処理終了後、ホストＯＳは、判定処理を終了する。判定処理を実行することにより、ホストＯＳは、マスタＤＢを有するゲストＯＳとスレーブＤＢを有するゲストＯＳとが同一の物理マシン上で動作するか否かを判定することができる。
【０１１４】
図１６は、ログコピー処理手順の一例を示すフローチャートである。ログコピー処理は、ログをコピーする処理である。ログコピー処理は、コピー部１４０２が有する機能を実現する処理であり、ホストＯＳが実行する処理である。
【０１１５】
ホストＯＳは、共有メモリ管理テーブル３１３から、ホストアドレスを取得する（ステップＳ１６０１）。次に、ホストＯＳは、転送モードを確認する（ステップＳ１６０２）。転送モードが割込みである場合（ステップＳ１６０２：割込み）、ホストＯＳは、ログ生成部３０５の書込みをトラップする（ステップＳ１６０３）。一方、転送モードがタイマーである場合（ステップＳ１６０２：タイマー）、ホストＯＳは、一定間隔ごとに拡張Ｂｉｎｌｏｇ１２１の内容を読み出す（ステップＳ１６０４）。
【０１１６】
ステップＳ１６０３またはステップＳ１６０４の処理終了後、ホストＯＳは、拡張Ｂｉｎｌｏｇ１２１の完了フラグを確認する（ステップＳ１６０５）。拡張Ｂｉｎｌｏｇ１２１の完了フラグがＦａｌｓｅである場合（ステップＳ１６０５：Ｆａｌｓｅ）、ホストＯＳは、ステップＳ１６０２の処理に移行する。一方、拡張Ｂｉｎｌｏｇ１２１の完了フラグがＴｒｕｅである場合（ステップＳ１６０５：Ｔｒｕｅ）、ホストＯＳは、拡張Ｂｉｎｌｏｇ１２１のユーザＩＤに対応するＲｅｌａｙｌｏｇ１３１を特定する（ステップＳ１６０６）。
【０１１７】
次に、ホストＯＳは、拡張Ｂｉｎｌｏｇ１２１からユーザＩＤと完了フラグとを除いたエントリの内容をＲｅｌａｙｌｏｇ１３１にコピーする（ステップＳ１６０７）。そして、ホストＯＳは、ログ実行部３０６の処理完了を待ち受ける（ステップＳ１６０８）。ログ実行部３０６が処理完了した後、拡張Ｂｉｎｌｏｇ１２１のエントリを消去する（ステップＳ１６０９）。ステップＳ１６０９の処理終了後、ホストＯＳは、ログコピー処理を終了する。ログコピー処理を実行することにより、ホストＯＳは、マスタＤＢ１２２に書込まれたデータをスレーブＤＢ１３２に書込むことができる。
【０１１８】
以上説明したように、冗長化システム１３００は、転送元装置の指定を受けたゲストＯＳを管理するホストＯＳが、自身が管理する他のゲストＯＳが転送先装置の指定を受けたか否かに応じて、メモリ間のコピーと管理ＬＡＮ１１１を介する転送を使い分けてもよい。これにより、冗長化システム１３００は、メモリ間のコピーを使う場合には、管理ＬＡＮ１１１にかかる負荷を抑制することができ、また、管理ＬＡＮ１１１を介さない分、レプリケーションにかかる時間を短縮することができる。また、冗長化システム１３００は、転送元のＤＢや転送先のＤＢがマイグレーションした場合にも対応することができる。
【０１１９】
（実施の形態３の説明）
実施の形態３にかかる冗長化システムは、１つの物理マシンｐｍに、マスタＤＢ１２２とスレーブＤＢ１３２とが混在する際にも対応できるシステムである。実施の形態１において説明した箇所と同様の箇所については、同一符号を付して図示および説明を省略する。
【０１２０】
図１７は、実施の形態３にかかる冗長化システム１７００の動作例を示す説明図である。図１７に示す冗長化システム１７００において、物理マシンｐｍ１は、ゲストＯＳ１１を動作させる。また、物理マシンｐｍ２は、ゲストＯＳ２１とゲストＯＳ２２とを動作させる。また、物理マシンｐｍ３は、ゲストＯＳ３１を動作させる。なお、図１７には図示していないが、冗長化システム１７００内には物理マシンｐｍｍが存在し、物理マシンｐｍ１、ｐｍ２、ｐｍ３は、ホストＯＳを動作させる。
【０１２１】
図１７で示すように、ゲストＯＳ１１が有するマスタＤＢ１２２＿１１と、ゲストＯＳ２１が有するスレーブＤＢ１３２＿２１との間でレプリケーションが行われる。また、ゲストＯＳ２２が有するマスタＤＢ１２２＿２２と、ゲストＯＳ３１が有するスレーブＤＢ１３２＿３１との間でレプリケーションが行われる。このように、物理マシンｐｍ２が、スレーブＤＢ１３２＿２１と、マスタＤＢ１２２＿２２とを有する構成となっている。次に、冗長化システム１７００の機能構成例を、図１８を用いて説明する。
【０１２２】
図１８は、冗長化システム１７００の機能構成例を示す説明図である。図１８では、物理マシンｐｍｍ、ｐｍ１、ｐｍ３の機能構成例は図３で示したものと同一であるため、図示を省略してある。
【０１２３】
ホストＯＳ２は、共有メモリ設定部３０２＿２と、送信部１８０１＿２と、書込み部１８０２＿２とを有する。
【０１２４】
また、ホストＯＳは、共有メモリ管理テーブル１８１１＿２にアクセス可能である。共有メモリ管理テーブル１８１１＿２は、物理マシンｐｍ２のＲＡＭ２０３、ディスク２０５といった記憶装置に格納される。共有メモリ管理テーブル１８１１の記憶内容の一例は、図１９で説明する。
【０１２５】
送信部１８０１＿２は、共有メモリ管理テーブル１８１１＿２の転送モードがＮｏｎｅでないエントリの中から対象となる転送用の共有メモリを特定して、特定した転送用の共有メモリに書込まれたデータを、管理ＬＡＮ１１１を介して宛先装置に送信する。
【０１２６】
書込み部１８０２＿２は、共有メモリ管理テーブル１８１１＿２の転送モードがＮｏｎｅであるエントリの中から対象となる受信用の共有メモリを特定して、管理ＬＡＮ１１１を介して受信したデータを、特定した受信用の共有メモリに書込む。
【０１２７】
図１９は、共有メモリ管理テーブル１８１１の記憶内容の一例を示す説明図である。図１９では、共有メモリ管理テーブル１８１１＿２を用いて説明する。図１９で示す共有メモリ管理テーブル１８１１＿２は、エントリ１９０１＿１〜３を有する。
【０１２８】
共有メモリ管理テーブル１８１１には、転送元装置の指定と転送先装置の指定とが混在している。具体的には、エントリ１９０１＿１、３は、転送モードがＮｏｎｅでないため、転送元装置の指定を受けたエントリである。一方、エントリ１９０１＿２は、転送モードがＮｏｎｅであるため転送先装置の指定を受けたエントリである。送信部１８０１、書込み部１８０２は、共有メモリ管理テーブル１８１１のエントリの転送モードフィールドを参照することにより、転送元装置の指定なのか、転送先装置の指定なのかを特定することができる。また、送信部１８０１、書込み部１８０２は、共有メモリ管理テーブル１８１１のエントリの宛先ホストＩＤフィールドを参照して、転送元装置の指定なのか、転送先装置の指定なのかを特定してもよい。
【０１２９】
以上説明したように、冗長化システム１７００によれば、１つの物理マシンに、マスタＤＢ１２２とスレーブＤＢ１３２とが混在する際にもレプリケーションを行うことができる。
【０１３０】
なお、実施の形態１〜３において、共有メモリに書込まれるデータが、更新クエリであったが、どのようなデータでもよい。例えば、本番系のデータを、単に、待機系のデータにバックアップするシステムに対しても、実施の形態１〜３を適用することができる。また、この場合、共有メモリに書込まれるデータに対してアトミック性を確保しなくてよく、本番系の共有メモリに書込まれたデータを、随時、待機系の共有メモリに書込めばよい。
【０１３１】
なお、本実施の形態で説明した冗長化方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本レプリケーションプログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ−Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本レプリケーションプログラムは、インターネット等のネットワークを介して配布してもよい。
【０１３２】
上述した実施の形態１〜３に関し、さらに以下の付記を開示する。
【０１３３】
（付記１）コンピュータに、
レプリケーションの宛先装置にデータを転送する転送元装置、または、転送先装置の指定とレプリケーションの対象となる前記指定に応じた記憶領域を示す情報とを含む指示を受け付けたことに応じて、前記指示に前記転送元装置の指定が含まれる場合には前記指定に応じた記憶領域を、前記コンピュータ上で動作する前記転送元装置として指定された仮想マシンと共有する転送用の共有メモリに設定し、前記指示に前記転送先装置の指定が含まれる場合には前記指定に応じた記憶領域を、前記コンピュータ装置上で動作する前記転送先装置として指定された仮想マシンと共有する受信用の共有メモリに設定し、
前記転送元装置として指定された仮想マシンによって前記転送用の共有メモリに書込まれたデータを、仮想マシンからのアクセスに制限がある管理用のネットワークを介して前記宛先装置に送信し、
前記管理用のネットワークを介して受信したデータを、前記転送先装置として指定された受信用の共有メモリに書込む、
処理を実行させることを特徴とするレプリケーションプログラム。
【０１３４】
（付記２）前記指示は、ユーザを識別する情報をさらに含み、
前記設定する処理は、
前記指示を受け付けたことに応じて、前記指示に前記転送元装置の指定が含まれる場合には前記指定に応じた記憶領域を、前記コンピュータ上で動作する複数の仮想マシンのうちの前記転送元装置として指定された前記ユーザの仮想マシンと共有する転送用の共有メモリに設定し、前記指示に前記転送先装置の指定が含まれる場合には前記指定に応じた記憶領域を、前記転送先装置として指定された前記ユーザの仮想マシンと共有する受信用の共有メモリに設定し、
前記送信する処理は、
前記転送元装置として指定された仮想マシンによって前記転送用の共有メモリに書込まれたデータと前記ユーザを識別する情報とを、前記管理用のネットワークを介して前記宛先装置に送信し、
前記書込む処理は、
前記管理用のネットワークを介して受信したデータを、受信した前記ユーザを識別する情報により特定されており前記転送先装置として指定されたユーザの仮想マシンと共有する受信用の共有メモリに書込む、
ことを特徴とする付記１に記載のレプリケーションプログラム。
【０１３５】
（付記３）前記コンピュータに、
前記指示により前記仮想マシンが前記転送元装置に指定された場合、前記指示により前記コンピュータが前記宛先装置に指定されたか否かを判定し、
前記コンピュータが前記宛先装置に指定されたと判定した場合、前記仮想マシンによって前記転送用の共有メモリに書込まれたデータを、前記受信用の共有メモリにコピーし、
前記コンピュータが前記宛先装置に指定されていないと判定した場合、前記仮想マシンによって前記転送用の共有メモリに書込まれたデータを、前記管理用のネットワークを介して前記宛先装置に送信する、
処理を実行させることを特徴とする付記１または２に記載のレプリケーションプログラム。
【０１３６】
（付記４）前記送信する処理は、
前記コンピュータが有するデータベースに対して実行された更新クエリの全体が前記転送用の共有メモリに書込まれたことに応じて、前記更新クエリの全体を前記管理用のネットワークを介して前記宛先装置に送信し、
前記書込む処理は、
前記管理用のネットワークを介して受信したデータを、前記受信用の共有メモリに書込み、
前記コンピュータに、
前記受信用の共有メモリに前記データが書込まれた場合、前記データを更新クエリの全体として前記コンピュータが有するデータベースに対して実行する、
処理を実行させることを特徴とする付記１〜３のいずれか一つに記載のレプリケーションプログラム。
【０１３７】
（付記５）前記仮想マシンのＩＰアドレスは、前記コンピュータ上で動作させる仮想マシンのネットワークのＩＰアドレスの設定情報を有するテンプレートにより設定されたものであることを特徴とする付記１〜４のいずれか一つに記載のレプリケーションプログラム。
【０１３８】
（付記６）レプリケーションを指示する指示装置と２つの物理マシンとがそれぞれ接続する冗長化システムであって、
前記指示装置は、
レプリケーションの宛先装置にデータを転送する転送元装置、または、転送先装置の指定とレプリケーションの対象となる前記指定に応じた記憶領域を示す情報とを含む指示を、前記２つの物理マシンのそれぞれに送信し、
前記２つの物理マシンのうち、前記転送元装置に指定された仮想マシンを動作する第１の物理マシンは、
前記指示を前記指示装置から受け付けたことに応じて、前記転送元装置の指定に応じた記憶領域を、前記仮想マシンと共有する転送用の共有メモリに設定し、
前記仮想マシンによって前記転送用の共有メモリに書込まれたデータを、仮想マシンからのアクセスに制限がある管理用のネットワークを介して前記宛先装置に送信し、
前記２つの物理マシンのうち、前記転送先装置に指定された仮想マシンを動作する第２の物理マシンは、
前記指示を前記指示装置から受け付けたことに応じて、前記転送先装置の指定に応じた記憶領域を、前記仮想マシンと共有する受信用の共有メモリに設定し、
前記管理用のネットワークを介して受信したデータを、前記受信用の共有メモリに書込む、
ことを特徴とする冗長化システム。
【０１３９】
（付記７）コンピュータが、
レプリケーションの宛先装置にデータを転送する転送元装置、または、転送先装置の指定とレプリケーションの対象となる前記指定に応じた記憶領域を示す情報とを含む指示を受け付けたことに応じて、前記指示に前記転送元装置の指定が含まれる場合には前記指定に応じた記憶領域を、前記コンピュータ上で動作する前記転送元装置として指定された仮想マシンと共有する転送用の共有メモリに設定し、前記指示に前記転送先装置の指定が含まれる場合には前記指定に応じた記憶領域を、前記コンピュータ装置上で動作する前記転送先装置として指定された仮想マシンと共有する受信用の共有メモリに設定し、
前記転送元装置として指定された仮想マシンによって前記転送用の共有メモリに書込まれたデータを、仮想マシンからのアクセスに制限がある管理用のネットワークを介して前記宛先装置に送信し、
前記管理用のネットワークを介して受信したデータを、前記転送先装置として指定された受信用の共有メモリに書込む、
処理を実行することを特徴とするレプリケーション方法。
【符号の説明】
【０１４０】
１、２  ホストＯＳ
１１、１２、１３、２１、２２、２３  ゲストＯＳ
１００、１３００、１７００  冗長化システム
１１１  管理ＬＡＮ
１１２  業務ＬＡＮ
１２１  拡張Ｂｉｎｌｏｇ
１２２  マスタＤＢ
１３１  Ｒｅｌａｙｌｏｇ
１３２  スレーブＤＢ
３０１  レプリケーション設定部
３０２  共有メモリ設定部
３０３、１４０３  送信部
３０４  書込み部
３０５  ログ生成部
３０６  ログ実行部
３０７  フラグ書込み部
３１１  レプリケーション管理テーブル
３１２  ＤＢ管理テーブル
３１３  共有メモリ管理テーブル
１４０１  判定部
１４０２  コピー部
【図１】
2017162416.tif 000003
【図２】
2017162416.tif 000004
【図３】
2017162416.tif 000005
【図４】
2017162416.tif 000006
【図５】
2017162416.tif 000007
【図６】
2017162416.tif 000008
【図７】
2017162416.tif 000009
【図８】
2017162416.tif 000010
【図９】
2017162416.tif 000011
【図１０】
2017162416.tif 000012
【図１１】
2017162416.tif 000013
【図１２】
2017162416.tif 000014
【図１３】
2017162416.tif 000015
【図１４】
2017162416.tif 000016
【図１５】
2017162416.tif 000017
【図１６】
2017162416.tif 000018
【図１７】
2017162416.tif 000019
【図１８】
2017162416.tif 000020
【図１９】
2017162416.tif 000021