(57)【要約】【課題】複数のコントローラ間において、データを正確に同期させる。【解決手段】  冗長システム１は、２台のコントローラ１０Ａ、１０Ｂにより構成され、コントローラ１０Ａ、１０Ｂは、互いに異なる同期方法であり、得られたデータを待機系のコントローラのデータと同期させる複数の同期部（データベース同期モジュール５２Ａ、ＤＲＢＤ５５Ａ、又はデータベース同期モジュール５２Ｂ、ＤＲＢＤ５５Ｂ）と、自機が現用系の場合に、得られたデータを当該データの種別に応じて複数の同期部のうちの１つに出力する出力部（各種アプリケーション５１Ａ又は５１Ｂ）と、を備える。【選択図】図３
2020194216.tif 000002
【特許請求の範囲】
【請求項１】
複数のコントローラにより構成された冗長システムであって、
前記各コントローラは、
互いに異なる同期方法であり、得られたデータを待機系のコントローラのデータと同期させる複数の同期部と、
自機が現用系の場合に、得られたデータを当該データの種別に応じて前記複数の同期部のうちの１つに出力する出力部と、
を備えたことを特徴とする冗長システム。
【請求項２】
前記出力部は、前記得られたデータの重要度あるいは当該データの更新頻度に応じて、当該データを前記複数の同期部のうちの１つに出力することを特徴とする請求項１記載の冗長システム。
【請求項３】
前記出力部は、前記得られたデータが待機系のコントローラのデータと同期しないデータである場合、当該データを前記複数の同期部のいずれにも出力しないことを特徴とする請求項１又は請求項２記載の冗長システム。
【請求項４】
冗長システムを構成する複数のコントローラによるデータ同期方法であって、
前記各コントローラは、
互いに異なる同期方法であり、得られたデータを待機系のコントローラのデータと同期させる複数の同期部を備え、
出力部が、自機が現用系の場合に、得られたデータを当該データの種別に応じて前記複数の同期部のうちの１つに出力することを特徴とするデータ同期方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、冗長システムを構成する複数のコントローラ間でデータを同期させる技術に関する。
【背景技術】
【０００２】
従来、プラントなどのプロセス制御に用いるプロセス制御システムにおいて、高信頼性を要求される場合には、複数のコントローラを設ける冗長構造をもつ構成が用いられている。このように、コントローラを多重化してシステムを冗長させることで、システムはより安定した運用を行える。このような冗長構造をもつ従来のプラント制御システムは、例えば、現用系として稼働する第１のコントローラと、待機系として稼働する第２のコントローラを備え、第１のコントローラに異常が発生すると、待機系だった第２のコントローラを現用系に切り替える。一般的に、このような冗長システムでは、２台の装置が同じ内容のデータを保持するよう、互いの装置間でデータを同期させる処理が行われる（例えば特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平０５−０８９０７２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
冗長システムを構成する装置間でデータを同期させる方法はいくつか知られている。しかし、ビル等の施設内に設置されている複数の監視対象機器を監視する施設監視システムにおいて、２台のコントローラ間でそれらの汎用的な技術を用いてデータの同期を行うと、不具合が生じる場合がある。
【０００５】
例えば、施設監視システムは、２台のコントローラによる二重化構成とされ、各コントローラはそれぞれデータベースを備えている。データベースには、例えば監視対象機器（以下、「監視ポイント」という。）から収集した当該監視ポイントの現在値を示すデータなど、施設監視システムにおいて比較的重要度の高いデータ、あるいは更新頻度の高いデータが格納される。
【０００６】
コントローラは、データベース内のこれらのデータを更新する際、更新トランザクションを実行する。コントローラは、更新トランザクションが正常に終了（コミット）すると、当該データをデータベースに書き込み、データベースの更新を完了する。一方、コントローラは、更新トランザクションの実行中に何らかの障害が発生すると、当該更新を無効とし、データベースを更新前の状態に戻す。したがって、当該更新の途中状態のデータが他方のコントローラに同期されることは本来は望ましくない。
【０００７】
しかし、２台のコントローラ間で汎用的な技術によりデータの同期を行った場合、その方法によっては更新途中の不完全なデータが他方のコントローラのデータベースに同期されてしまう場合があった。また、その場合、他方のコントローラで当該不完全なデータが含まれたデータベースを復元しようとすると、データベースそのものが壊れてしまうおそれもあった。
【０００８】
この発明は、上記のような課題を解決するためになされたもので、複数のコントローラ間において、データを正確に同期させることを目的としている。
【課題を解決するための手段】
【０００９】
この発明に係る冗長システムは、複数のコントローラにより構成され、各コントローラは、互いに異なる同期方法であり、得られたデータを待機系のコントローラのデータと同期させる複数の同期部と、自機が現用系の場合に、得られたデータを当該データの種別に応じて複数の同期部のうちの１つに出力する出力部と、を備えることを特徴とする。
【発明の効果】
【００１０】
この発明によれば、上記のように構成したので、複数のコントローラ間において、データを正確に同期させることができる。
【図面の簡単な説明】
【００１１】
【図１】実施の形態１に係る冗長システムの構成例を示す図である。
【図２】実施の形態１におけるデータの種別及び設定部の設定内容の例を示す図である。
【図３】実施の形態１におけるコントローラにインストールされているソフトウェアの構成例を示す図である。
【図４】実施の形態１における第１の更新データ又はそのコピーの流れを示す図である。
【図５】実施の形態１における第２の更新データ又はそのコピーの流れを示す図である。
【図６】実施の形態１における第３の更新データの流れを示す図である。
【図７】実施の形態１におけるコントローラによる同期処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００１２】
以下、この発明の実施の形態について図面を参照しながら詳細に説明する。
実施の形態１．
図１は、この発明の実施の形態１に係る冗長システムの構成例を示している。冗長システム１は、複数（ここでは２台）のコントローラ１０（１０Ａ、１０Ｂ）と、複数の監視ポイント２００と、不図示の監視装置とを含んで構成されている。コントローラ１０Ａ、１０Ｂと、各監視ポイント２００と、監視装置とは、システムバス１５０を介して相互に通信可能に接続されている。ここでは、コントローラが２台で構成されているため、冗長システム１を二重化システム１として説明する。しかしながら、コントローラの台数は必ずしも２台でなくともよく、いずれか１台のコントローラが現用系（アクティブ）として稼働できる構成であれば、３台以上であってもよい。
【００１３】
二重化システム１は、二重化機能を備えている。二重化機能は、２台のコントローラ１０Ａ、１０Ｂで監視ポイント２００の監視、制御を行う機能である。すなわち、二重化システム１は、通常時はコントローラ１０Ａを現用系、コントローラ１０Ｂを待機系（スタンバイ）として稼働させ、現用系のコントローラ１０Ａが監視ポイント２００の監視、制御、及びデータの収集等の処理を行う。コントローラ１０Ａは、データベース２５Ａが構築されたＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）２０Ａを備えており、コントローラ１０Ａは、監視ポイント２００から収集したデータを、ＳＳＤ２０Ａ内のデータベース２５Ａに格納する。
【００１４】
また、二重化機能は、データベースの同期も管理する。例えば、二重化システム１では、現用系のコントローラ１０Ａが起動した状態で、待機系のコントローラ１０Ｂが起動すると、待機系のコントローラ１０Ｂは、現用系のコントローラ１０Ａに対し、データベース２５Ａのコピーを要求する。この要求を受け付けたコントローラ１０Ａは、コントローラ１０Ｂに対し、データベース２５Ａのコピーを送信する。コントローラ１０Ｂは、コントローラ１０Ａからデータベース２５Ａのコピーを受信すると、当該コピーを用いて、自機が備えるＳＳＤ２０Ｂ内にデータベース２５Ｂを構築する。
【００１５】
その後、コントローラ１０Ａは、データベース２５Ａの更新を完了する度に、当該データベース２５Ａを更新したデータのコピーをコントローラ１０Ｂに送信する。コントローラ１０Ｂは、コントローラ１０Ａから受信した更新データのコピーをデータベース２５Ｂに書き込み、データベース２５Ｂの更新を完了する。このようにして、二重化システム１は、データベース２５Ａ、２５Ｂの同期を行う。
【００１６】
また、二重化システム１は、現用系のコントローラ１０Ａに障害などの問題が発生した場合、待機系のコントローラ１０Ｂを現用系に切り替える。現用系に切り替わったコントローラ１０Ｂは、監視ポイント２００の監視、制御、及びデータの収集等の処理を継続し、監視ポイント２００から収集したデータを、ＳＳＤ２０Ｂ内のデータベース２５Ｂに格納する。
【００１７】
ここで、実施の形態１では、コントローラ１０Ａ、１０Ｂは、データベース２５Ａ、２５Ｂに格納されるデータをはじめとする種々のデータを、複数の種別に分類してＳＳＤ２０Ａ、２０Ｂに記憶している。次に、ＳＳＤ２０Ａ、２０Ｂに記憶されるデータの種別について、図２を参照しながら説明する。
【００１８】
例えば、ＳＳＤ２０Ａには図２に示すように、データが「第１のデータ」、「第２のデータ」、「第３のデータ」の３つの種別に分かれて記憶されている。ここで、「第１のデータ」とは、「データベース２５Ａに格納し、かつデータベース２５Ｂのデータと同期するデータ」であり、「第２のデータ」とは、「データベース２５Ａに格納しないが、ＳＳＤ２０Ｂのデータと同期するデータ」である。また、「第３のデータ」とは、「ＳＳＤ２０Ｂのデータと同期しないデータ」である。
【００１９】
この分類は、例えば二重化システム１におけるデータの重要度、あるいは二重化システム１におけるデータの更新頻度に基づいて定められるものであり、「第１のデータ」が重要度あるいは更新頻度が最も高く、次に「第２のデータ」、最後に「第３のデータ」の順に、重要度あるいは更新頻度が高くなっている。
【００２０】
「第１のデータ」には、例えば監視ポイント２００から収集した現在値（例えば、当該ポイント２００が温度センサであればその検出温度）、監視ポイント２００に関する事象ログ（例えば当該ポイント２００において何時何分に障害が発生した）などが含まれる。これらのデータは、二重化システム１において比較的重要度が高く、かつ更新頻度も高いものと考えられる。したがって、二重化システム１では、これらのデータを１つの種別として取り扱うこととし、これらのデータはデータベース２５Ａに格納し、かつデータベース２５Ｂのデータと同期させる。
【００２１】
「第２のデータ」には、例えば、コントローラ１０Ａに関する各種設定データ、コントローラ１０Ａにインストールされているソフトウェア及びハードウェアのライセンスに関するデータ、二重化システム１のシステム構成に関するデータなどが含まれる。これらのデータは、二重化システム１において、第１のデータほど重要度あるいは更新頻度は高くないが、ＳＳＤ２０Ｂとの間では同期させた方がよいと考えられるデータである。したがって、二重化システム１では、これらのデータを１つの種別として取り扱うこととし、これらのデータはデータベース２５Ａには格納しないが、ＳＳＤ２０Ｂのデータとは同期させる。
【００２２】
「第３のデータ」には、例えばコントローラ１０ＡのＯＳ関連のプログラム、コントローラ１０Ａにインストールされている各種アプリケーションプログラム、コントローラ１０Ａのシステムログ、コントローラ１０Ａに搭載されているハードウェアの固有情報などが含まれる。これらのデータは、ＳＳＤ２０Ｂとの間で同期せずともよいと考えられるデータであるため、二重化システム１ではこれらのデータを１つの種別として取り扱うこととし、これらのデータはＳＳＤ２０Ｂのデータとは同期させない。
【００２３】
また、コントローラ１０Ａは、図２に示すように、設定部４５Ａを備えている。設定部４５Ａには、上記した第１のデータ及び第２のデータをどのような方法でＳＳＤ２０Ｂのデータと同期させるかが設定されている。設定部４５Ａは、例えばコントローラ１０Ａが備える不図示のメモリに構成されている。
【００２４】
例えば、設定部４５Ａには、第１のデータを二重化システム１が備える二重化機能によりＳＳＤ２０Ｂ（データベース２５Ｂ）のデータと同期させることが設定されている。同様に、設定部４５Ａには、第２のデータを、データの同期方法として広く知られているＤＲＢＤ（Distributed Replicated Block Device、登録商標）によりＳＳＤ２０Ｂのデータと同期させることが設定されている。なお、設定部４５Ａには、第３のデータはＳＳＤ２０Ｂのデータと同期しないことが設定されていてもよい。
【００２５】
なお、ここで説明したデータの種別とその具体例、及びデータの種別毎の同期方法は、例えばコントローラ１０Ａの設計段階でユーザ（管理者）により決められればよい。また、第２のデータの同期方法として例示したＤＲＢＤはあくまで一例であり、第２のデータの同期方法はその他の方法であってもよい。
【００２６】
また、詳しい説明は省略するが、待機系のコントローラ１０Ｂが備えるＳＳＤ２０Ｂも、上述したＳＳＤ２０Ａと同様の構成を有している。すなわち、ＳＳＤ２０Ｂにも、データが「第１のデータ」、「第２のデータ」、「第３のデータ」に分かれて記憶されている。また、コントローラ１０Ｂは、上述した設定部４５Ａと同様の内容が設定された設定部４５Ｂを備えている。
【００２７】
次に、コントローラ１０Ａ、１０Ｂにインストールされているソフトウェアの構成例について、図３を参照して説明する。図３に示すように、コントローラ１０Ａとコントローラ１０Ｂとは、基本的に同一のソフトウェア構成を有している。なお、図３において、実線矢印は前述の「第１のデータ」を更新するデータ（以下、「第１の更新データ」と称する。）の流れを示し、破線矢印は「第２のデータ」を更新するデータ（以下、「第２の更新データ」と称する。）の流れを示し、一点鎖線の矢印は「第３のデータ」を更新するデータ（以下、「第３の更新データ」と称する。）の流れを示している。
【００２８】
＜コントローラ１０Ａのソフトウェア構成例＞
コントローラ１０Ａには、各種アプリケーション５１Ａ、データベース同期モジュール５２Ａ、データベース管理システム（ＤＢＭＳ）５３Ａ、ファイルシステム５４Ａ、ＤＲＢＤ５５Ａ、ディスクドライバ５６Ａ、及び通信ドライバ５７Ａがインストールされている。
【００２９】
各種アプリケーション５１Ａは、第１の更新データ、第２の更新データ、第３の更新データを受け付ける機能を有するとともに、受け付けた各更新データを処理する機能を有する。
【００３０】
例えば、各種アプリケーション５１Ａは、監視ポイント２００から収集した当該ポイント２００の現在値を示すデータを第１の更新データとして受け付け、当該データを適宜処理する。また、各種アプリケーション５１Ａは、例えばユーザにより不図示の入力部を介して入力された二重化システム１のシステム構成に関するデータを第２の更新データとして受け付け、当該データを適宜処理する。また、各種アプリケーション５１Ａは、例えばコントローラ１０Ａが不図示のネットワークを介して受信したコントローラ１０ＡのＯＳ関連のプログラムに関するデータを第３の更新データとして受け付け、当該データを適宜処理する。
【００３１】
また、各種アプリケーション５１Ａは、設定部４５Ａの設定内容に基づき、当該処理後のデータを、後述する２つの同期部（データベース同期モジュール５２Ａ、ＤＲＢＤ５５Ａ）のうちの１つに出力する機能を有する。
【００３２】
例えば、各種アプリケーション５１Ａは、第１の更新データを処理すると、当該処理後の第１の更新データをデータベース同期モジュール５２Ａに出力する。また、各種アプリケーション５１Ａは、第２の更新データを処理すると、当該処理後の第２の更新データをＤＲＢＤ５５Ａに出力する。なお、図の例では、各種アプリケーション５１Ａは、ＤＲＢＤ５５Ａに対してはファイルシステム５４Ａを介して第２の更新データを出力している。ただし、各種アプリケーション５１Ａは、第３の更新データを処理した場合は、当該処理後の第３の更新データをいずれの同期部（データベース同期モジュール５２Ａ、ＤＲＢＤ５５Ａ）にも出力せず、ファイルシステム５４Ａに出力する。ここでは、各種アプリケーション５１Ａは、本発明の「出力部」を構成する。
【００３３】
データベース同期モジュール５２Ａは、各種アプリケーション５１Ａにより出力された第１の更新データを、データベース管理システム５３Ａに出力する機能とともに、当該第１の更新データのコピーを、通信ドライバ５７Ａを介してコントローラ１０Ｂに送信する機能を有する。ここでは、データベース同期モジュール５２Ａは、本発明の「同期部」を構成する。
【００３４】
データベース管理システム（ＤＢＭＳ）５３Ａは、データベース２５Ａに対するデータの格納や、データベース２５Ａからのデータの読み出し等、データベース２５Ａを管理するために必要となる処理を行う。ＤＢＭＳ５３Ａは、データベース同期モジュール５２Ａにより出力された第１の更新データに基づき、データベース２５Ａを更新するための更新トランザクションを実行する。更新トランザクションが正常に終了（コミット）すると、ＤＢＭＳ５３Ａは、当該第１の更新データをファイルシステム５４Ａに出力する。
【００３５】
ファイルシステム５４Ａは、ＳＳＤ２０Ａに記憶されるデータをファイルとして管理するもので、ファイルの保存機能や暗号化機能などの各種機能を提供する。ここで、ファイルシステム５４Ａは、ＤＢＭＳ５３Ａから出力された第１の更新データをディスクドライバ５６Ａに出力する。また、ファイルシステム５４Ａは、各種アプリケーション５１Ａから出力された第２の更新データをＤＲＤＢ５５Ａに出力し、各種アプリケーション５１Ａから出力された第３の更新データをディスクドライバ５６Ａに出力する。
【００３６】
ＤＲＢＤ５５Ａは、ネットワーク越しにＳＳＤ２０Ａをリアルタイムに複製する機能を有する汎用のソフトウェアである。ＤＲＢＤ５５Ａは、ファイルシステム５４Ａにより出力された第２の更新データをディスクドライバ５６Ａに出力する。また、ＤＲＢＤ５５Ａは、第２の更新データのコピーを通信ドライバ５７Ａに出力する。ここでは、ＤＲＢＤ５５Ａは、本発明の「同期部」を構成する。
【００３７】
ディスクドライバ５６Ａは、ＳＳＤ２０をＯＳによって制御可能にするためのソフトウェアである。このディスクドライバ５６Ａは、ファイルシステム５４Ａにより出力された第１の更新データ及び第３の更新データ、並びにＤＲＢＤ５５Ａにより出力された第２の更新データをＳＳＤ２０Ａに記憶させる。このとき、第１の更新データは、ＳＳＤ２０Ａ内のデータベース２５Ａに格納される。
【００３８】
通信ドライバ５７Ａは、コントローラ１０Ａが備える不図示のネットワークインタフェースカード（ＮＩＣ）をＯＳによって制御可能にするためのソフトウェアである。この通信ドライバ５７Ａは、データベース同期モジュール５２Ａにより出力された第１の更新データのコピー及びＤＲＢＤ５５Ａにより出力された第２の更新データのコピーを、ネットワークで接続された待機系のコントローラ１０Ｂの後述する通信ドライバ５７Ｂに送信する。
【００３９】
＜コントローラ１０Ｂのソフトウェア構成例＞
コントローラ１０Ｂには、各種アプリケーション５１Ｂ、データベース同期モジュール５２Ｂ、データベース管理システム（ＤＢＭＳ）５３Ｂ、ファイルシステム５４Ｂ、ＤＲＢＤ５５Ｂ、ディスクドライバ５６Ｂ、及び通信ドライバ５７Ｂがインストールされている。なお、データベース管理システム（ＤＢＭＳ）５３Ｂ、ファイルシステム５４Ｂ、ディスクドライバ５６Ｂ、及び通信ドライバ５７Ｂは、コントローラ１０Ａにインストールされているものと同様であるため、ここでは説明を省略する。
【００４０】
各種アプリケーション５１Ｂは、第１の更新データ、第２の更新データ、第３の更新データを受け付ける機能を有するとともに、受け付けた各更新データを処理する機能を有する。また、各種アプリケーション５１Ｂは、設定部４５Ｂの設定内容に基づき、当該処理後のデータを、後述する２つの同期部（データベース同期モジュール５２Ｂ、ＤＲＢＤ５５Ｂ）のうちの１つに出力する機能を有する。
【００４１】
なお、待機系のコントローラ１０Ｂでは、各種アプリケーション５１Ｂは、第３の更新データを受け付け、適宜処理する。また、待機系のコントローラ１０Ｂでは、第３の更新データを受け付けるため、各種アプリケーション５１Ｂは、処理後の第３の更新データをいずれの同期部（データベース同期モジュール５２Ｂ、ＤＲＢＤ５５Ｂ）にも出力せず、ファイルシステム５４Ｂに出力する。その後、ファイルシステム５４Ｂに出力された第３の更新データは、ディスクドライバ５６Ｂを介してＳＳＤ２０Ｂに書き込まれる。ここでは、各種アプリケーション５１Ｂは、本発明の「出力部」を構成する。
【００４２】
データベース同期モジュール５２Ｂは、コントローラ１０Ａのデータベース同期モジュール５２Ａから通信ドライバ５７Ａを介して送信された第１の更新データのコピーを、通信ドライバ５７Ｂを介して受信する機能を有する。また、データベース同期モジュール５２Ｂは、受信した第１の更新データのコピーを、ＤＢＭＳ５３Ｂ、ファイルシステム５４Ｂ、ディスクドライバ５６Ｂを介してデータベース２５Ｂに書き込み、データベース２５Ｂの更新を完了する。ここでは、データベース同期モジュール５２Ｂは、本発明の「同期部」を構成する。
【００４３】
ＤＲＢＤ５５Ｂは、コントローラ１０ＡのＤＲＤＢ５５Ａから通信ドライバ５７Ａを介して送信された第２の更新データのコピーを、通信ドライバ５７Ｂを介して受信する機能を有する。ＤＲＤＢ５５Ｂは、受信した第２の更新データのコピーを、ディスクドライバ５６Ｂを介してＳＳＤ２０Ｂに書き込み、ＳＳＤ２０Ｂの更新を完了する。ここでは、ＤＲＢＤ５５Ｂは、本発明の「同期部」を構成する。
【００４４】
次に、種別毎の具体的なデータの流れについて、図４から図７を参照して説明する。図４は第１の更新データ又はそのコピーの流れを示し、図５は第２の更新データ又はそのコピーの流れを示し、図６は第３の更新データの流れを示している。図７は、コントローラによる同期処理の流れを示すフローチャートである。
【００４５】
＜第１の更新データ＞
図４は、第１の更新データ又はそのコピーの流れを示している。まず、各種アプリケーション５１Ａは、図７のステップＳＴ１に示すように、例えば監視ポイント２００から収集した当該ポイント２００の現在値などのデータを、第１の更新データとして受け付ける（図４の符号１ａ）。
【００４６】
各種アプリケーション５１Ａは、受け付けた第１の更新データを適宜処理し（ステップＳＴ２）、設定部４５Ａを参照して、当該処理後の第１の更新データの同期方法を確認する（ステップＳＴ３）。第１の更新データは、二重化機能により同期させることが設定されているので（ステップＳＴ４）、各種アプリケーション５１Ａは、当該設定に基づき、第１の更新データをデータベース同期モジュール５２Ａに出力する（１ｂ）。データベース同期モジュール５２Ａは、当該第１の更新データのコピーを取得するとともに、当該第１の更新データをＤＢＭＳ５３Ａに出力する（１ｃ）。
【００４７】
ＤＢＭＳ５３Ａは、第１の更新データに基づくデータベース２５Ａの更新トランザクションを実行し、更新トランザクションが正常に終了（コミット）した場合に、第１の更新データをファイルシステム５４Ａ、ディスクドライバ５６Ａを介してＳＳＤ２０Ａ内のデータベース２５Ａに書き込み、データベース２５Ａの更新を完了する（１ｄ〜１ｆ）。
【００４８】
また、データベース同期モジュール５２Ａは、ＤＢＭＳ５３Ａによるデータベース２５Ａの更新が完了すると、取得していた第１の更新データのコピーを通信ドライバ５７Ａを介してコントローラ１０Ｂに送信する（１ｇ、１ｈ）。
【００４９】
コントローラ１０Ｂでは、データベース同期モジュール５２Ｂが通信ドライバ５７Ｂを介して当該第１の更新データのコピーを受信する（１ｉ）。データベース同期モジュール５２Ｂは、受信した当該第１の更新データのコピーを、ＤＢＭＳ５３Ｂ、ファイルシステム５４Ｂ、ディスクドライバ５６Ｂを介してデータベース２５Ｂに書き込み、データベース２５Ｂの更新を完了する（１ｊ〜１ｍ）。
【００５０】
なお、ＤＢＭＳ５３Ａは、第１の更新データに基づくデータベース２５Ａの更新トランザクションが何らかの異常により終了できなかった場合は、ロールバック処理を実行し、データベース２５Ａの更新を無効とする。この場合、データベース同期モジュール５２Ａは、第１の更新データのコピーをコントローラ１０Ｂに送信しない。
【００５１】
このように、二重化システム１は、第１の更新データをデータベース２５Ａに書き込むとともに、第１の更新データのコピーをデータベース２５Ｂに書き込み、データベース２５Ａ、データベース２５Ｂを同期させる。特に、二重化システム１は、コントローラ１０Ａで第１の更新データに基づく更新トランザクションが正常に終了した場合に、当該第１の更新データのコピーをコントローラ１０Ｂに送信し、コントローラ１０Ｂでは、受信した当該第１の更新データのコピーをデータベース２５Ｂに書き込む。これにより、二重化システム１は、システムにとって重要度あるいは更新頻度が高いデータが不完全な状態で同期されることを回避し、データを正確に同期させることができる。
【００５２】
＜第２の更新データ＞
図５は、第２の更新データ又はそのコピーの流れを示している。まず、各種アプリケーション５１Ａは、図７のステップＳＴ１に示すように、例えばユーザにより不図示の入力部を介して入力された二重化システム１のシステム構成に関するデータを、第２の更新データとして受け付ける（図５の符号２ａ）。
【００５３】
各種アプリケーション５１Ａは、受け付けた第２の更新データを適宜処理し（ステップＳＴ２）、設定部４５Ａを参照して、当該第２の更新データの同期方法を確認する（ステップＳＴ３）。第２の更新データは、ＤＲＢＤにより同期させることが設定されているので（ステップＳＴ５）、各種アプリケーション５１Ａは、当該設定に基づき、第２の更新データをファイルシステム５４Ａを介してＤＲＢＤ５５Ａに出力する（２ｂ、２ｃ）。ＤＲＢＤ５５Ａは、当該第２の更新データのコピーを取得するとともに、当該第２の更新データをディスクドライバ５６Ａを介してＳＳＤ２０Ａに書き込み、ＳＳＤ２０Ａの更新を完了する（２ｄ、２ｅ）。
【００５４】
また、ＤＲＢＤ５５Ａは、ＳＳＤ２０Ａの更新を完了すると、当該第２の更新データのコピーを通信ドライバ５７Ａを介してコントローラ１０Ｂに送信する（２ｆ、２ｇ）。
【００５５】
コントローラ１０Ｂでは、ＤＲＢＤ５５Ｂが通信ドライバ５７Ｂを介して当該第２の更新データのコピーを受信する（２ｈ）。そして、ＤＲＢＤ５５Ｂは、受信した第２の更新データのコピーをディスクドライバ５６Ｂを介してＳＳＤ２０Ｂに書き込み、ＳＳＤ２０Ｂの更新を完了する（２ｉ、２ｊ）。
【００５６】
ＤＲＢＤは、リアルタイムでデータをコピーできたり、どのようなファイルシステムにも対応できるといった長所がある。一方、ＤＲＤＢは、データのコピーを送信している途中でネットワーク障害が発生した場合、ファイルが破損するおそれがあったり、ファイルを構成するブロック単位ではデータを保証できるがファイル単位ではデータを保証できない、といった短所もある。
【００５７】
そこで、二重化システム１は、第１のデータほどは重要度あるいは更新頻度が高くないと考えられるデータを第２のデータとして取り扱い、第２のデータはＤＲＢＤなどの汎用的な技術により同期させる。これにより、二重化システム１は、第１のデータと第２のデータとの間で同期方法の棲み分けを行うとともに、重要度あるいは更新頻度に見合った方法で適切かつ簡易にデータを同期させることができる。
【００５８】
＜第３の更新データ＞
図６は、第３の更新データの流れを示している。まず、各種アプリケーション５１Ａは、図７のステップＳＴ１に示すように、例えば不図示のネットワークを介してコントローラ１０Ａが受信したコントローラ１０ＡのＯＳ関連のプログラムに関するデータを、第３の更新データとして受け付ける（図６の符号３ａ）。
【００５９】
各種アプリケーション５１Ａは、受け付けた第３の更新データを適宜処理し（ステップＳＴ２）、設定部４５Ａを参照して、当該第３の更新データの同期方法を確認する（ステップＳＴ３）。第３の更新データは、ＳＳＤ２０Ｂとの間で同期しないことが設定されているので（ステップＳＴ６）、各種アプリケーション５１Ａは、当該設定に基づき、第３の更新データを同期部（データベース同期モジュール５２Ａ、ＤＲＢＤ５５Ａ）には出力せず、ファイルシステム５４Ａに出力する（３ｂ）。ファイルシステム５４Ａは、ディスクドライバ５６Ａを介して第３の更新データをＳＳＤ２０Ａに書き込み、ＳＳＤ２０Ａの更新を完了する（３ｃ、３ｄ）。
【００６０】
また、コントローラ１０Ｂでは、各種アプリケーション５１Ｂが、同様にコントローラ１０ＢのＯＳ関連のプログラムに関するデータを、第３の更新データとして受け付ける（３ｅ）。各種アプリケーション５１Ｂは、受け付けた第３の更新データを適宜処理し（ステップＳＴ２）、設定部４５Ｂを参照して、当該第３の更新データの同期方法を確認する（ステップＳＴ３）。第３のデータは、ＳＳＤ２０Ａとの間で同期しないことが設定されているので（ステップＳＴ６）、各種アプリケーション５１Ｂは、当該設定に基づき、第３の更新データを同期部（データベース同期モジュール５２Ｂ、ＤＲＢＤ５５Ｂ）には出力せず、ファイルシステム５４Ｂに出力する（３ｆ）。ファイルシステム５４Ｂは、ディスクドライバ５６Ｂを介して第３の更新データをＳＳＤ２０Ｂに書き込み、ＳＳＤ２０Ｂの更新を完了する（３ｇ、３ｈ）。
【００６１】
以上、実施の形態１では、コントローラ１０Ａが現用系として稼働している場合の例を説明した。しかしながら、コントローラ１０Ａに異常が発生し、コントローラ１０Ｂが待機系から現用系に切り替わった場合、コントローラ１０Ｂは上記説明したコントローラ１０Ａと同様の流れで処理を行えばよい。また、３台以上のコントローラで冗長システムを構成した場合であっても、いずれか１台のコントローラが現用系として稼働すればよく、当該現用系のコントローラは、他の待機系のコントローラとの間で、上記と同様の流れでデータの同期を行えばよい。
【００６２】
以上のように、実施の形態１によれば、二重化システム１は、２台のコントローラ１０Ａ、１０Ｂにより構成され、コントローラ１０Ａ、１０Ｂは、互いに異なる同期方法であり、得られたデータを待機系のコントローラのデータと同期させる複数の同期部（データベース同期モジュール５２Ａ、ＤＲＢＤ５５Ａ、又はデータベース同期モジュール５２Ｂ、ＤＲＢＤ５５Ｂ）と、自機が現用系の場合に、得られたデータを当該データの種別に応じて複数の同期部のうちの１つに出力する出力部（各種アプリケーション５１Ａ又は５１Ｂ）とを備える。これにより、二重化システム１は、コントローラ１０Ａ、１０Ｂ間においてデータを正確に同期させることができる。
【００６３】
また、実施の形態１によれば、出力部は、得られたデータの重要度あるいはデータの更新頻度に応じて、当該データを複数の同期部のうちの１つに出力する。これにより、二重化システム１は、システムにおけるデータの重要度あるいは更新頻度に応じて、適切な同期方法を選択することができる。
【００６４】
また、実施の形態１によれば、出力部は、得られたデータが待機系のコントローラのデータと同期しないデータである場合、当該データを複数の同期部のいずれにも出力しない。これにより、二重化システム１は、同期の要否についても棲み分けを行い、不必要なデータの同期を避けつつコントローラ１０Ａ、１０Ｂの処理負荷を軽減することができる。
【００６５】
なお、本願発明はその発明の範囲内において、実施の形態の任意の構成要素の変形、もしくは実施の形態において任意の構成要素の省略が可能である。
【符号の説明】
【００６６】
１  二重化システム（冗長システム）
１０  コントローラ
１０Ａ  現用系のコントローラ
１０Ｂ  待機系のコントローラ
２０Ａ、２０Ｂ  ＳＳＤ
２５Ａ、２５Ｂ  データベース
４５Ａ、４５Ｂ  設定部
５１Ａ、５１Ｂ  各種アプリケーション（出力部）
５２Ａ、５２Ｂ  データベース同期モジュール（同期部）
５３Ａ、５３Ｂ  データベース管理システム（ＤＢＭＳ）
５４Ａ、５４Ｂ  ファイルシステム
５５Ａ、５５Ｂ  ＤＲＢＤ（同期部）
５６Ａ、５６Ｂ  ディスクドライバ
５７Ａ、５７Ｂ  通信ドライバ
１５０  システムバス
２００  監視ポイント
【図１】
2020194216.tif 000003
【図２】
2020194216.tif 000004
【図３】
2020194216.tif 000005
【図４】
2020194216.tif 000006
【図５】
2020194216.tif 000007
【図６】
2020194216.tif 000008
【図７】
2020194216.tif 000009