(57)【要約】【課題】  障害発生時にミラー同期に失敗するデータの量を少なくする。【解決手段】  データミラー型クラスタシステム１１を構成するサーバ装置１２と１３とは、それぞれ、データベース２２，３２と、共用メモリ２９，３９とを備え、トランザクションを直接相手サーバ装置１３と１２に高速転送できるインターコネクト１４により接続される。運用系サーバ装置１２でデータベース２２の更新があると、運用系サーバ装置１２は自らのデータベース２２の更新を行うと共に、共有メモリ２９に変更のあったデータを書き込む。書き込まれたデータは、インターコネクト１４を通じて、待機系サーバ装置１３の共有メモリ３９に転送される。待機系サーバ装置１３は、自共有メモリ３９に書き込まれたデータをデータベース３２に反映する。【選択図】  図１
2005293315.tif 000002
【特許請求の範囲】
【請求項１】
一台が運用系、少なくとももう一台が待機系として動作するサーバ装置から構成され、運用系データベース上のデータ変更を待機系のデータベースに反映するデータミラー型クラスタシステムであって、
各サーバ装置は、それぞれのデータベースと、両サーバ装置からアクセス可能な共有メモリとを備え、トランザクションを相手サーバ装置に転送できるインターコネクトにより相互に接続されており、
各サーバ装置は、運用系として動作しているときに、データベース上のデータの変更を共有メモリに書き込む運用系メモリドライバ手段と、
待機系として動作しているときに、前記インターコネクトを介して共有メモリ上に転送されてきたデータをデータベースに書き込む待機系メモリドライバ手段と、
を備えるデータミラー型クラスタシステム。
【請求項２】
前記運用系メモリドライバ手段は、前記インターコネクトを介して、前記待機系サーバ装置に存在する共有メモリにデータを直接書き込む、ことを特徴とする請求項１又は２に記載のデータミラー型クラスタシステム。
【請求項３】
前記インターコネクタと共有メモリとの少なくとも一方は多重化されている、ことを特徴とする請求項１又は２に記載のデータミラー型クラスタシステム。
【請求項４】
各サーバ装置は、外部回路と接続するための入出力ポートを備え、前記インターコネクトは、一方のサーバ装置が他方のサーバ装置の共有メモリにアクセスするための専用回路である、ことを特徴とする請求項１、２又は３に記載のデータミラー型クラスタシステム。
【請求項５】
互いにアクセス可能な共有メモリを備え、相互に接続された複数台のサーバ装置から構成され、運用系データベース上のデータ変更を待機系のデータベースに反映するデータミラー型クラスタシステムの同期制御方法であって、
運用系サーバ装置のデータベース上のデータの更新を検出し、運用系サーバ装置に物理的に存在する共有メモリに書き込むステップと、
前記運用系サーバ装置上の共有メモリに書き込まれたデータを前記インターコネクトを介して前記待機系サーバ装置に物理的に存在する共有メモリ上に反映するステップと、
待機系サーバ装置の共有メモリ上のデータの更新を検出し、待機系サーバ装置のデータベースに反映するステップと、
を備えることを特徴とするデータミラー型クラスタシステムの同期制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データミラー型クラスタシステムに関し、特に、複数のサーバのデータを高速に同期させることが可能なクラスタシステムに関する。
【背景技術】
【０００２】
データミラー型のクラスタシステムでは、ＬＡＮなどのインターコネクトを介してサーバ間のデータを同期させている。しかし、インターコネクトとして、ＴＣＰ／ＩＰなどを使用する場合にはそのプロトコルの為のソフトウェアスタックが深く、又Ｉ／Ｏカードを介して通信を行うためＬａｔｅｎｃｙ（待ち時間）が大きくなる。
【０００３】
データミラー型のクラスタシステムは、動作系で更新されるデータベースのデータを、随時待機系にコピーし、データの同期を取る必要があり、このようにＬａｔｅｎｃｙが大きいシステムでは、データ同期のタイミング間隔が大きくなり、一回の同期で転送するデータの量が大きくなる。結果、障害が発生して同期に失敗すると、失われる情報量も大きくなることになる。
【０００４】
特許文献１は、クラスタシステムの同期制御方法を開示するが、Ｌａｔｅｎｃｙを小さくするための工夫は開示されていない。
また、特許文献２は、二重化されたシステムにおいて自系アドレス空間と他系アドレス空間とをもち、自系と他系のアドレスの対象性を持つ構成が開示されているが、この構成では、自系と他系のアドレスの管理が複雑である。
また、特許文献３には、各コンピュータ装置に第１と第２の主記憶装置を配置し、一方の装置の第１の主記憶装置へのデータの格納があると、ＤＭＡ(Direct
Memory Access)転送により、他方の装置の第２の主記憶装置に該当データを書き込むことによりデータの同期を取る方法が開示されている。しかし、この構成では、第１と第２の主記憶の管理が複雑であるという問題が生ずる。
【特許文献１】特開平０４−２９９４３５号公報
【特許文献２】特開平０８−２２１２８９号公報
【特許文献３】特開平１１−１４９３８８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明は、上記実情に鑑みてなされたものであり、本発明は、障害発生時にミラー同期に失敗するデータの量を少なくすることを目的とする。
また、本発明は、制御・管理が容易なクラスタシステムとその制御方法を提供することを他の目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するため、この発明のデータミラー型クラスタシステムは、
一台が運用系、少なくとももう一台が待機系として動作するサーバ装置から構成され、運用系データベース上のデータ変更を待機系のデータベースに反映するデータミラー型クラスタシステムであって、
各サーバ装置は、それぞれのデータベースと、両サーバ装置からアクセス可能な共有メモリとを備え、トランザクションを相手サーバ装置に転送できるインターコネクトにより相互に接続されており、
各サーバ装置は、運用系として動作しているときに、データベース上のデータの変更を共有メモリに書き込む運用系メモリドライバ手段と、
待機系として動作しているときに、前記インターコネクトを介して共有メモリ上に転送されてきたデータをデータベースに書き込む待機系メモリドライバ手段と、
を備えることを特徴とする。
【０００７】
例えば、前記運用系メモリドライバ手段は、前記インターコネクトを介して、前記待機系サーバ装置に存在する共有メモリ上にデータを直接書き込む。
【０００８】
前記インターコネクトは、多重化されることが望ましい。
【０００９】
各サーバ装置は、外部回路と接続するための入出力ポートを備え、前記インターコネクトは、一方のサーバ装置が他方のサーバ装置の共有メモリにアクセスするための専用回路である、ことが望ましい。
【００１０】
上記目的を達成するため、この発明の同期制御方法は、
互いにアクセス可能な共有メモリを備え、相互に接続された複数台のサーバ装置から構成され、運用系データベース上のデータ変更を待機系のデータベースに反映するデータミラー型クラスタシステムの同期制御方法であって、
運用系サーバ装置のデータベース上のデータの更新を検出し、運用系サーバ装置に物理的に存在する共有メモリに書き込むステップと、
前記運用系サーバ装置上の共有メモリに書き込まれたデータを前記インターコネクトを介して前記待機系サーバ装置に物理的に存在する共有メモリ上に反映するステップと、
待機系サーバ装置の共有メモリ上のデータの更新を検出し、待機系サーバ装置のデータベースに反映するステップと、
を備えることを特徴とする。
【発明の効果】
【００１１】
本発明は、複数のサーバ装置で共有メモリとインターコネクタによりデータの同期を取るため、高速でLatencyの低いミラー型クラスタを構成することができる。これにより、データの可用性が従来に比して向上し、障害発生時のロールバック時間が短縮され、システムの可用性の向上を図る事が出来る。また、複数のサーバ装置で共用メモリを使用するため、管理が容易である。
【発明を実施するための最良の形態】
【００１２】
この発明の実施の形態に係るデータミラー型クラスタシステムを図面を参照して説明する。
本実施の形態のデータミラー型クラスタシステム１１は、図１に示すように、２台のサーバ装置１２と１３とから構成される。サーバ装置１２と１３とは、それぞれ、ＣＰＵ(Central
Processing Unit)からのトランザクションを直接他のノード（サーバ装置）１３と１２に高速転送できるインターコネクト１４により相互に接続されており、データミラー型クラスタを構成している。
【００１３】
サーバ装置１２は、ＣＰＵモジュール２１とデータベース２２とクロスバースイッチ（XBAR SW)２３と、Ｉ／Ｏ(Input/Output)装置２４を備える。
ＣＰＵモジュール２１は、１又は複数のＣＰＵ２５と、メモリ２６と、メモリコントローラ２７とを備える。
【００１４】
ＣＰＵ２５は、このサーバ装置１２の制御・データ処理を実行する。
メモリ２６は主記憶装置、補助記憶装置等を含む。メモリ２６の一部は、サーバ装置１３からもインターコネクト１４を介して直接アクセス（リード／ライト）可能な共用メモリ２９として機能する。メモリコントローラ２７は、ＣＰＵ２５の制御下に、メモリ２６及びデータベース２２をアクセスするためのものであり、共有メモリ２９を監視する共有メモリドライバを備える。
【００１５】
データベース２２は、物理的には、Ｉ／Ｏ装置（ポート）２４に接続されており、その内容がメモリ２６に展開されており、メモリコントローラ２７によりアクセス制御が行われる。
クロスバースイッチ２３は、メモリコントローラ２７とインターコネクト１４に接続されており、メモリコントローラ２７とインターコネクト１４間のデータの伝送を制御する。
Ｉ／Ｏ装置２４は、メモリコントローラ２７に接続されており、外部装置との間で情報を送受信する。Ｉ／Ｏ装置２４は、外部装置とデータを送受信する点においては、インターコネクト１４と共通するが、インターコネクト１４と異なり汎用性を有し、一般に、外部との通信のためにドライバの起動、初期化などの処理が必要で、高速性においてインターコネクト１４に劣る。
【００１６】
サーバ装置１３は、実質的にサーバ装置１２と同様の構成を有し、ＣＰＵモジュール３１とデータベース３２とクロスバースイッチ３３とＩ／Ｏ装置３４とを備える。
ＣＰＵモジュール３１は、１又は複数のＣＰＵ３５と、メモリ３６と、メモリコントローラ３７とを備える。
【００１７】
ＣＰＵ３５は、このサーバ装置１３の制御・データ処理を実行する。
メモリ３６は主記憶装置、補助記憶装置等を含む。メモリ３６の一部は、サーバ装置１２からもインターコネクト１４を介して直接アクセス（リード／ライト）可能な共用メモリ２９として機能する。メモリコントローラ３７は、ＣＰＵ３５の制御下に、メモリ３６及びデータベース３２をアクセスするためのものであり、共有メモリ３９を監視する共有メモリドライバを備える。
【００１８】
データベース３２は、Ｉ／Ｏ装置２４に接続されており、メモリ３６に展開され、メモリコントローラ３７によりアクセス制御が行われる。
クロスバースイッチ３３は、メモリコントローラ３７とインターコネクト１４に接続されており、メモリコントローラ３７とインターコネクト１４間のデータの伝送を制御する。
【００１９】
２台のサーバ装置１２，１３のうち、一台は運用系として動作し一台は待機系として動作する。図１に示す例では、サーバ装置１２が運用系サーバ装置として動作し、サーバ装置１３が待機系サーバ装置として動作している。
【００２０】
また、各サーバ装置１２，１３の共有メモリ２９，３９へのリード／ライトは、インターコネクト１４を通じて相手の共有メモリ３９，２９にもリード／ライトされる。
【００２１】
インターコネクト１４は、高速でデータ転送が可能な専用ラインなどから構成されており、インターコネクト自体も二重化されている。
【００２２】
運用系サーバ装置１２でデータベース２２の更新があった場合、運用系サーバ装置１２は自らのデータベース２２の更新を行うと共に、共有メモリ２９に変更のあったデータを書き込む。書き込まれたデータは、クロスバースイッチ２３とインターコネクト１４とクロスバースイッチ３３を通じて、待機系サーバ装置１３の共有メモリ３６に転送され書き込まれる。待機系サーバ装置１３のメモリコントローラ３７内の共有メモリドライバは、共有メモリ３９に書き込まれたデータをデータベース３２に反映することによってデータミラー型のクラスタを実現する。
【００２３】
運用系サーバ装置１２で障害が発生した場合、アプリケーションの実行は待機系サーバ装置１３に引き継がれる。この時、同期がなされていない（コミットされていない）データは、失敗データとして破棄され、再実行をする必要がある。本発明に於けるインターコネクト１４を用いた共有メモリ２９，３９を用いることによって、運用系／待機系間のデータ同期間隔を短く取るとることが可能となり、これまでのミラー型クラスタに比べ破棄されるデータを少なく抑える事ができる。
【００２４】
次に、上記構成のデータミラー型クラスタシステムのメモリの割付について図２を参照して説明する。
図２は運用系サーバ装置１２と待機系サーバ装置１３それぞれのメモリマップを示す。前述したように、運用系サーバ装置１２と待機系サーバ装置１３とは、互いにリードライト可能な共有メモリ２９と３９とを有しており、共有メモリ２９と３９にはそれぞれ物理メモリの一部として、論理アドレスが付与されている。
【００２５】
例えば、運用系サーバ装置１２の論理メモリマップ１０１について考えると、運用系サーバ装置１２に割り当てられている論理アドレスの一部が共有メモリ領域１０３により占められている。同様に、待機系サーバ装置１３の論理メモリマップ１０２について考えると、待機系サーバ装置１３に割り当てられている論理アドレスの一部が共有メモリ領域１０４により占められている。
【００２６】
換言すると、運用系サーバ装置１２に存在する共有メモリ２９は、運用系サーバ装置１２のＣＰＵ２５からは論理アドレス１０３の空間として認識され、待機系サーバ装置１３のＣＰＵ３５からは論理アドレス１０４の空間として認識され、待機系サーバ装置１３に存在する共有メモリ３９には、運用系サーバ装置１２のＣＰＵ２５からは論理アドレス１０３の空間として認識され、待機系サーバ装置１３のＣＰＵ３５からは論理アドレス１０４の空間として認識される。
【００２７】
次に、上記構成のクラスタシステムの動作を図２と図３を参照して説明する。
運用系サーバ装置１２のメモリコントローラ２７と待機系サーバ装置１３のメモリコントローラ３７では、それぞれ共有メモリ２９と３９を監視する共有メモリドライバが動作している。
【００２８】
運用系サーバ装置１２（ＣＰＵ２５）は、データベース２２上のデータ、例えば、顧客データベースなどのデータを変更する際には、メモリ２６上に展開されているデータ（１１０）を変更する。
【００２９】
共有メモリ２９と３９を監視している運用系と待機系のドライバは、それぞれ、図３（ａ）、（ｂ）に示す処理を、例えば定期的な割り込みで実行しており、まず、運用系サーバ装置１２の共有メモリドライバは、図３（ａ）に示すように、データベースの変更（データ１１０）を検知し（ステップＳ１１）、変更箇所のデータ１１０を共有メモリ２９の論理アドレス１０８のエリアに書き込む（ステップＳ１２）。この書き込みは、インターコネクト１４を通じて待機側の共有メモリ３９のエリア１０６に直接行われる（ステップＳ１３）（運用側には論理アドレス１０８に対応する物理メモリは存在せず、待機系の共有メモリ３９がインターコネクト１４を介して見えているだけである）。続いて、待機系から同期データ受信完了通知を受信するのを待機する状態に入る（ステップＳ１４）。なお、ステップＳ１４の待機状態は、待機系から同期データ受信完了通知を受信することにより解除され、処理が終了する。一方、ステップＳ１４の状態が所定時間以上継続する場合には、タイムアウトとして、エラー処理に移る。
【００３０】
一方、待機系サーバ装置１３の共有メモリドライバは、図３（ｂ）に示すように、共有メモリ３９のエリア１０６に格納されているデータの変更を検知し（ステップＳ２１）、自データベース３２に変更を反映させる（１１１；ステップＳ２２）。続いて、運用側のローカル物理メモリが反映されている共有メモリ３９（エリア１０７）に対して同期データ受信完了を示す書き込み（ＡＣＫ１１２）を行う（ステップＳ２３）。同期データ受信完了の書き込み（ＡＣＫ１１２）は、インターコネクト１４を通じて共有メモリ２９（運用側にローカルに存在する物理メモリ２９（エリア１０５））に直接書き込まれる。運用側の共有メモリドライバはこれを検知して同期完了と認識し、ステップ１４の待機を終了する。
【００３１】
この様に、本発明では共有メモリ（２９，３９；１０３／１０４）を使用して運用側と待機側のデータベースの同期をとる。
【００３２】
運用系に障害が発生した場合、データミラー型のクラスタシステムでは同期化されていない（コミットされていない）データについては、同期化失敗として待機系のアプリケーションへ動作を引き継ぐ。この時、失敗したデータについて、再度登録を行うなどの処置が必要となる。
【００３３】
従来のデータミラー型クラスタでは、ＴＣＰ／ＩＰを使用するなどしてクラスタを構成していた。このため、図４に示すように、データ同期のＬａｔｅｎｃｙ２０１が大きい。結果同期処理を頻繁に行う事ができなかった。この為、同期の為の変更データのサイズが大きくなり、障害発生時の破損データのサイズ（２０２）も大きくなる事から再登録に時間がかかっていた。
【００３４】
これに対し、本実施の形態の手法では、運用系のシステムが変更内容を共有メモリに書き込むだけで、待機系の共有メモリにも同様の変更が反映され、データベース３２にも反映される。このように、Ｌａｔｅｎｃｙの低い共有メモリを使用する事により、頻繁にデータ同期を行う事ができる。この為、障害発生の際のデータの破損（２０３）を小さくする事ができ、再登録時間を短縮することができる。
【００３５】
次に、図５（ａ）、（ｂ）を参照して、共有メモリを実現するインターコネクト１４に障害が発生した場合について説明する。
図５（ａ）に示すように、インターコネクト１４は二重化されており、片方のデータパス（通常運用インターコネクト）３０１は通常運用時に使用され、もう一方のパス（代替運用インターコネクト）３０２は通常運用時のデータパスに障害が発生した際の代替えパスとして使用される。この事は、共有メモリ２９，３９を実現する為のインターコネクトに関しても二重化されているということを意味する。換言すれば、図５（ｂ）に示すように、共有メモリが２セット配置されることを意味する。これにより、このミラー型クラスタシステムの可用性と信頼性を更に高める。
【００３６】
データのミラーリングを担当する共有メモリドライバは、共有メモリのアドレス（３０５／３０６）によって、どちらのデータパスを使用するかを選択する事ができる。今、共有メモリ領域１（３０５）で定義される通常運用時のデータパス（３０１）に障害が発生したとする。動作系（３０３）のメモリドライバは待機系（３０４）に対して書き込んだデータに対する同期完了の書き込みが行われない事をタイムアウトによって検知する（図３（ａ）、ステップＳ１４参照）。同期タイムアウトを検知した動作系（３０３）のメモリドライバは、共有メモリのアドレスを共有メモリ領域２（３０６）に変更し、代替えパス側に対して再度同期データを書き込みデータの同期を完了させる。又、インターコネクトにはハードウエアでリンクの状態を検出する障害検出回路（３０７）が配置されている。この障害検出回路３０７は、二重化されているインターコネクト３０１と３０２の両方に障害が発生した場合、運用系／待機系共にハードウエアにより両インターコネクト３０１，３０２の障害を検知し、インターコネクト障害のフラグを立てる。待機系３０４のＣＰＵは、アプリケーションに対して、自らのデータベースが無効であるというフラグをセットする。
【００３７】
保守／復旧を行いインターコネクトのリンクが回復した時点で、ハードウエアから割り込みが上がり、これを契機に運用側はデータベースを全て待機系に書き込む事によって、データベースの再同期を行う。
【００３８】
以上のように、インターコネクトで実現される共有メモリを使用することによって、データベースの高速同期が可能となり、障害が発生した際のデータの可用性を高める事が出来る。
【００３９】
なお、この発明は上記実施の形態に限定されず、種々の変形及び応用が可能である。
例えば、上述のシステム構成や処理手順は任意に変更可能である。
また、運用系と待機系をそれぞれ１台としたが、待機系を２台以上としてもよい。
また、図５の構成において、共有メモリ領域は１つでインターコネクトが多重化されているような構成も可能である。
【図面の簡単な説明】
【００４０】
【図１】本発明の実施の形態にかかるクラスタシステムの構成を示すブロック図である。
【図２】運用系と待機系のメモリ構成を示す図である。
【図３】（ａ）と（ｂ）とは、それぞれ、運用系と待機系の同期処理用ドライバの動作を説明するフローチャートである。
【図４】従来のミラー型クラスタシステムと本願の実施の形態に係るミラー型クラスタシステムにおける、同期動作のタイミングとＬａｔｅｎｃｙ及び同期の為の変更データのサイズとを説明するための図である。
【図５】（ａ）、（ｂ）は、インターコネクトに障害が発生した場合の動作を説明するための図である。
【符号の説明】
【００４１】
１１    データミラー型クラスタシステム
１２  運用系サーバ装置
１３  待機系サーバ装置
１４  インターコネクト
２１  ＣＰＵモジュール
２２  データベース
２３  クロスバースイッチ
２４  Ｉ／Ｏ装置
２５  ＣＰＵ
２６  メモリ
２７  メモリコントローラ
２９  共有メモリ
３１  ＣＰＵモジュール
３２  データベース
３３  クロスバースイッチ
３４  Ｉ／Ｏ装置
３５  ＣＰＵ
３６  メモリ
３７  メモリコントローラ
３９  共有メモリ
【図１】
2005293315.tif 000003
【図２】
2005293315.tif 000004
【図３】
2005293315.tif 000005
【図４】
2005293315.tif 000006
【図５】
2005293315.tif 000007