(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-08-31
(45)【発行日】2023-09-08
(54)【発明の名称】冗長システム及びデータ同期方法
(51)【国際特許分類】
G06F 16/178 20190101AFI20230901BHJP
G06F 3/06 20060101ALI20230901BHJP
G06F 11/20 20060101ALI20230901BHJP
【FI】
G06F16/178
G06F3/06 304E
G06F3/06 304F
G06F11/20 697
(21)【出願番号】P 2019097799
(22)【出願日】2019-05-24
【審査請求日】2022-03-24
(73)【特許権者】
【識別番号】000006666
【氏名又は名称】アズビル株式会社
(74)【代理人】
【識別番号】110003166
【氏名又は名称】弁理士法人山王内外特許事務所
(74)【代理人】
【識別番号】100101133
【氏名又は名称】濱田 初音
(74)【代理人】
【識別番号】100199749
【氏名又は名称】中島 成
(74)【代理人】
【識別番号】100197767
【氏名又は名称】辻岡 将昭
(74)【代理人】
【識別番号】100201743
【氏名又は名称】井上 和真
(72)【発明者】
【氏名】新海 庸平
【審査官】甲斐 哲雄
(56)【参考文献】
【文献】特開2011-209834(JP,A)
【文献】特開2009-064121(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/10-16/188
G06F 3/06
G06F 11/16-11/20
(57)【特許請求の範囲】
【請求項1】
複数のコントローラにより構成された冗長システムであって、
前記各コントローラは、
互いに異なる同期方法であり、得られたデータを待機系のコントローラのデータと同期させる複数の同期部と、
自機が現用系の場合に、得られたデータを当該データの種別に応じて前記複数の同期部のうちの1つに出力する出力部と、
を備え
、
前記出力部は、得られたデータの種別が、当該データの重要度あるいは当該データの更新頻度が冗長システムにおいて最も高い第1のデータであれば、当該第1のデータを複数の同期部のうちの1つであるデータベース同期モジュールに出力し、
前記データベース同期モジュールは、前記第1のデータに基づく自機のデータベースの更新が正常終了した場合、当該第1のデータのコピーを待機系のコントローラに送信し、前記第1のデータに基づく自機のデータベースの更新が正常終了しなかった場合、当該第1のデータのコピーを待機系のコントローラに送信しない
ことを特徴とする冗長システム。
【請求項2】
前記出力部は、前記得られたデータの
種別が、当該データの重要度あるいは当該データの更新頻度が冗長システムにおいて前記第1のデータの次に高い第2のデータであれば、当該第2のデータを複数の同期部のうちの1つであるDRBD(登録商標)に出力し、
前記DRBDは、前記第2のデータに基づく自機のSSD内のデータの更新が終了すると、当該第2のデータのコピーを待機系のコントローラに送信する
ことを特徴とする請求項1記載の冗長システム。
【請求項3】
前記出力部は、前記得られたデータが待機系のコントローラのデータと同期しないデータである場合、当該データを前記複数の同期部のいずれにも出力しないことを特徴とする請求項1又は請求項2記載の冗長システム。
【請求項4】
冗長システムを構成する複数のコントローラによるデータ同期方法であって、
前記各コントローラは、
互いに異なる同期方法であり、得られたデータを待機系のコントローラのデータと同期させる複数の同期部を備え、
出力部が、自機が現用系の場合に、得られたデータを当該データの種別に応じて前記複数の同期部のうちの1つに出力
し、
前記出力部は、得られたデータの種別が、当該データの重要度あるいは当該データの更新頻度が冗長システムにおいて最も高い第1のデータであれば、当該第1のデータを複数の同期部のうちの1つであるデータベース同期モジュールに出力し、
前記データベース同期モジュールは、前記第1のデータに基づく自機のデータベースの更新が正常終了した場合、当該第1のデータのコピーを待機系のコントローラに送信し、前記第1のデータに基づく自機のデータベースの更新が正常終了しなかった場合、当該第1のデータのコピーを待機系のコントローラに送信しない
ことを特徴とするデータ同期方法。
【発明の詳細な説明】
【技術分野】
【0001】
この発明は、冗長システムを構成する複数のコントローラ間でデータを同期させる技術に関する。
【背景技術】
【0002】
従来、プラントなどのプロセス制御に用いるプロセス制御システムにおいて、高信頼性を要求される場合には、複数のコントローラを設ける冗長構造をもつ構成が用いられている。このように、コントローラを多重化してシステムを冗長させることで、システムはより安定した運用を行える。このような冗長構造をもつ従来のプラント制御システムは、例えば、現用系として稼働する第1のコントローラと、待機系として稼働する第2のコントローラを備え、第1のコントローラに異常が発生すると、待機系だった第2のコントローラを現用系に切り替える。一般的に、このような冗長システムでは、2台の装置が同じ内容のデータを保持するよう、互いの装置間でデータを同期させる処理が行われる(例えば特許文献1参照)。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
冗長システムを構成する装置間でデータを同期させる方法はいくつか知られている。しかし、ビル等の施設内に設置されている複数の監視対象機器を監視する施設監視システムにおいて、2台のコントローラ間でそれらの汎用的な技術を用いてデータの同期を行うと、不具合が生じる場合がある。
【0005】
例えば、施設監視システムは、2台のコントローラによる二重化構成とされ、各コントローラはそれぞれデータベースを備えている。データベースには、例えば監視対象機器(以下、「監視ポイント」という。)から収集した当該監視ポイントの現在値を示すデータなど、施設監視システムにおいて比較的重要度の高いデータ、あるいは更新頻度の高いデータが格納される。
【0006】
コントローラは、データベース内のこれらのデータを更新する際、更新トランザクションを実行する。コントローラは、更新トランザクションが正常に終了(コミット)すると、当該データをデータベースに書き込み、データベースの更新を完了する。一方、コントローラは、更新トランザクションの実行中に何らかの障害が発生すると、当該更新を無効とし、データベースを更新前の状態に戻す。したがって、当該更新の途中状態のデータが他方のコントローラに同期されることは本来は望ましくない。
【0007】
しかし、2台のコントローラ間で汎用的な技術によりデータの同期を行った場合、その方法によっては更新途中の不完全なデータが他方のコントローラのデータベースに同期されてしまう場合があった。また、その場合、他方のコントローラで当該不完全なデータが含まれたデータベースを復元しようとすると、データベースそのものが壊れてしまうおそれもあった。
【0008】
この発明は、上記のような課題を解決するためになされたもので、複数のコントローラ間において、データを正確に同期させることを目的としている。
【課題を解決するための手段】
【0009】
この発明に係る冗長システムは、複数のコントローラにより構成され、各コントローラは、互いに異なる同期方法であり、得られたデータを待機系のコントローラのデータと同期させる複数の同期部と、自機が現用系の場合に、得られたデータを当該データの種別に応じて複数の同期部のうちの1つに出力する出力部と、を備え、出力部は、得られたデータの種別が、当該データの重要度あるいは当該データの更新頻度が冗長システムにおいて最も高い第1のデータであれば、当該第1のデータを複数の同期部のうちの1つであるデータベース同期モジュールに出力し、データベース同期モジュールは、第1のデータに基づく自機のデータベースの更新が正常終了した場合、当該第1のデータのコピーを待機系のコントローラに送信し、第1のデータに基づく自機のデータベースの更新が正常終了しなかった場合、当該第1のデータのコピーを待機系のコントローラに送信しないことを特徴とする。
【発明の効果】
【0010】
この発明によれば、上記のように構成したので、複数のコントローラ間において、データを正確に同期させることができる。
【図面の簡単な説明】
【0011】
【
図1】実施の形態1に係る冗長システムの構成例を示す図である。
【
図2】実施の形態1におけるデータの種別及び設定部の設定内容の例を示す図である。
【
図3】実施の形態1におけるコントローラにインストールされているソフトウェアの構成例を示す図である。
【
図4】実施の形態1における第1の更新データ又はそのコピーの流れを示す図である。
【
図5】実施の形態1における第2の更新データ又はそのコピーの流れを示す図である。
【
図6】実施の形態1における第3の更新データの流れを示す図である。
【
図7】実施の形態1におけるコントローラによる同期処理の流れを示すフローチャートである。
【発明を実施するための形態】
【0012】
以下、この発明の実施の形態について図面を参照しながら詳細に説明する。
実施の形態1.
図1は、この発明の実施の形態1に係る冗長システムの構成例を示している。冗長システム1は、複数(ここでは2台)のコントローラ10(10A、10B)と、複数の監視ポイント200と、不図示の監視装置とを含んで構成されている。コントローラ10A、10Bと、各監視ポイント200と、監視装置とは、システムバス150を介して相互に通信可能に接続されている。ここでは、コントローラが2台で構成されているため、冗長システム1を二重化システム1として説明する。しかしながら、コントローラの台数は必ずしも2台でなくともよく、いずれか1台のコントローラが現用系(アクティブ)として稼働できる構成であれば、3台以上であってもよい。
【0013】
二重化システム1は、二重化機能を備えている。二重化機能は、2台のコントローラ10A、10Bで監視ポイント200の監視、制御を行う機能である。すなわち、二重化システム1は、通常時はコントローラ10Aを現用系、コントローラ10Bを待機系(スタンバイ)として稼働させ、現用系のコントローラ10Aが監視ポイント200の監視、制御、及びデータの収集等の処理を行う。コントローラ10Aは、データベース25Aが構築されたSSD(Solid State Drive)20Aを備えており、コントローラ10Aは、監視ポイント200から収集したデータを、SSD20A内のデータベース25Aに格納する。
【0014】
また、二重化機能は、データベースの同期も管理する。例えば、二重化システム1では、現用系のコントローラ10Aが起動した状態で、待機系のコントローラ10Bが起動すると、待機系のコントローラ10Bは、現用系のコントローラ10Aに対し、データベース25Aのコピーを要求する。この要求を受け付けたコントローラ10Aは、コントローラ10Bに対し、データベース25Aのコピーを送信する。コントローラ10Bは、コントローラ10Aからデータベース25Aのコピーを受信すると、当該コピーを用いて、自機が備えるSSD20B内にデータベース25Bを構築する。
【0015】
その後、コントローラ10Aは、データベース25Aの更新を完了する度に、当該データベース25Aを更新したデータのコピーをコントローラ10Bに送信する。コントローラ10Bは、コントローラ10Aから受信した更新データのコピーをデータベース25Bに書き込み、データベース25Bの更新を完了する。このようにして、二重化システム1は、データベース25A、25Bの同期を行う。
【0016】
また、二重化システム1は、現用系のコントローラ10Aに障害などの問題が発生した場合、待機系のコントローラ10Bを現用系に切り替える。現用系に切り替わったコントローラ10Bは、監視ポイント200の監視、制御、及びデータの収集等の処理を継続し、監視ポイント200から収集したデータを、SSD20B内のデータベース25Bに格納する。
【0017】
ここで、実施の形態1では、コントローラ10A、10Bは、データベース25A、25Bに格納されるデータをはじめとする種々のデータを、複数の種別に分類してSSD20A、20Bに記憶している。次に、SSD20A、20Bに記憶されるデータの種別について、
図2を参照しながら説明する。
【0018】
例えば、SSD20Aには
図2に示すように、データが「第1のデータ」、「第2のデータ」、「第3のデータ」の3つの種別に分かれて記憶されている。ここで、「第1のデータ」とは、「データベース25Aに格納し、かつデータベース25Bのデータと同期するデータ」であり、「第2のデータ」とは、「データベース25Aに格納しないが、SSD20Bのデータと同期するデータ」である。また、「第3のデータ」とは、「SSD20Bのデータと同期しないデータ」である。
【0019】
この分類は、例えば二重化システム1におけるデータの重要度、あるいは二重化システム1におけるデータの更新頻度に基づいて定められるものであり、「第1のデータ」が重要度あるいは更新頻度が最も高く、次に「第2のデータ」、最後に「第3のデータ」の順に、重要度あるいは更新頻度が高くなっている。
【0020】
「第1のデータ」には、例えば監視ポイント200から収集した現在値(例えば、当該ポイント200が温度センサであればその検出温度)、監視ポイント200に関する事象ログ(例えば当該ポイント200において何時何分に障害が発生した)などが含まれる。これらのデータは、二重化システム1において比較的重要度が高く、かつ更新頻度も高いものと考えられる。したがって、二重化システム1では、これらのデータを1つの種別として取り扱うこととし、これらのデータはデータベース25Aに格納し、かつデータベース25Bのデータと同期させる。
【0021】
「第2のデータ」には、例えば、コントローラ10Aに関する各種設定データ、コントローラ10Aにインストールされているソフトウェア及びハードウェアのライセンスに関するデータ、二重化システム1のシステム構成に関するデータなどが含まれる。これらのデータは、二重化システム1において、第1のデータほど重要度あるいは更新頻度は高くないが、SSD20Bとの間では同期させた方がよいと考えられるデータである。したがって、二重化システム1では、これらのデータを1つの種別として取り扱うこととし、これらのデータはデータベース25Aには格納しないが、SSD20Bのデータとは同期させる。
【0022】
「第3のデータ」には、例えばコントローラ10AのOS関連のプログラム、コントローラ10Aにインストールされている各種アプリケーションプログラム、コントローラ10Aのシステムログ、コントローラ10Aに搭載されているハードウェアの固有情報などが含まれる。これらのデータは、SSD20Bとの間で同期せずともよいと考えられるデータであるため、二重化システム1ではこれらのデータを1つの種別として取り扱うこととし、これらのデータはSSD20Bのデータとは同期させない。
【0023】
また、コントローラ10Aは、
図2に示すように、設定部45Aを備えている。設定部45Aには、上記した第1のデータ及び第2のデータをどのような方法でSSD20Bのデータと同期させるかが設定されている。設定部45Aは、例えばコントローラ10Aが備える不図示のメモリに構成されている。
【0024】
例えば、設定部45Aには、第1のデータを二重化システム1が備える二重化機能によりSSD20B(データベース25B)のデータと同期させることが設定されている。同様に、設定部45Aには、第2のデータを、データの同期方法として広く知られているDRBD(Distributed Replicated Block Device、登録商標)によりSSD20Bのデータと同期させることが設定されている。なお、設定部45Aには、第3のデータはSSD20Bのデータと同期しないことが設定されていてもよい。
【0025】
なお、ここで説明したデータの種別とその具体例、及びデータの種別毎の同期方法は、例えばコントローラ10Aの設計段階でユーザ(管理者)により決められればよい。また、第2のデータの同期方法として例示したDRBDはあくまで一例であり、第2のデータの同期方法はその他の方法であってもよい。
【0026】
また、詳しい説明は省略するが、待機系のコントローラ10Bが備えるSSD20Bも、上述したSSD20Aと同様の構成を有している。すなわち、SSD20Bにも、データが「第1のデータ」、「第2のデータ」、「第3のデータ」に分かれて記憶されている。また、コントローラ10Bは、上述した設定部45Aと同様の内容が設定された設定部45Bを備えている。
【0027】
次に、コントローラ10A、10Bにインストールされているソフトウェアの構成例について、
図3を参照して説明する。
図3に示すように、コントローラ10Aとコントローラ10Bとは、基本的に同一のソフトウェア構成を有している。なお、
図3において、実線矢印は前述の「第1のデータ」を更新するデータ(以下、「第1の更新データ」と称する。)の流れを示し、破線矢印は「第2のデータ」を更新するデータ(以下、「第2の更新データ」と称する。)の流れを示し、一点鎖線の矢印は「第3のデータ」を更新するデータ(以下、「第3の更新データ」と称する。)の流れを示している。
【0028】
<コントローラ10Aのソフトウェア構成例>
コントローラ10Aには、各種アプリケーション51A、データベース同期モジュール52A、データベース管理システム(DBMS)53A、ファイルシステム54A、DRBD55A、ディスクドライバ56A、及び通信ドライバ57Aがインストールされている。
【0029】
各種アプリケーション51Aは、第1の更新データ、第2の更新データ、第3の更新データを受け付ける機能を有するとともに、受け付けた各更新データを処理する機能を有する。
【0030】
例えば、各種アプリケーション51Aは、監視ポイント200から収集した当該ポイント200の現在値を示すデータを第1の更新データとして受け付け、当該データを適宜処理する。また、各種アプリケーション51Aは、例えばユーザにより不図示の入力部を介して入力された二重化システム1のシステム構成に関するデータを第2の更新データとして受け付け、当該データを適宜処理する。また、各種アプリケーション51Aは、例えばコントローラ10Aが不図示のネットワークを介して受信したコントローラ10AのOS関連のプログラムに関するデータを第3の更新データとして受け付け、当該データを適宜処理する。
【0031】
また、各種アプリケーション51Aは、設定部45Aの設定内容に基づき、当該処理後のデータを、後述する2つの同期部(データベース同期モジュール52A、DRBD55A)のうちの1つに出力する機能を有する。
【0032】
例えば、各種アプリケーション51Aは、第1の更新データを処理すると、当該処理後の第1の更新データをデータベース同期モジュール52Aに出力する。また、各種アプリケーション51Aは、第2の更新データを処理すると、当該処理後の第2の更新データをDRBD55Aに出力する。なお、図の例では、各種アプリケーション51Aは、DRBD55Aに対してはファイルシステム54Aを介して第2の更新データを出力している。ただし、各種アプリケーション51Aは、第3の更新データを処理した場合は、当該処理後の第3の更新データをいずれの同期部(データベース同期モジュール52A、DRBD55A)にも出力せず、ファイルシステム54Aに出力する。ここでは、各種アプリケーション51Aは、本発明の「出力部」を構成する。
【0033】
データベース同期モジュール52Aは、各種アプリケーション51Aにより出力された第1の更新データを、データベース管理システム53Aに出力する機能とともに、当該第1の更新データのコピーを、通信ドライバ57Aを介してコントローラ10Bに送信する機能を有する。ここでは、データベース同期モジュール52Aは、本発明の「同期部」を構成する。
【0034】
データベース管理システム(DBMS)53Aは、データベース25Aに対するデータの格納や、データベース25Aからのデータの読み出し等、データベース25Aを管理するために必要となる処理を行う。DBMS53Aは、データベース同期モジュール52Aにより出力された第1の更新データに基づき、データベース25Aを更新するための更新トランザクションを実行する。更新トランザクションが正常に終了(コミット)すると、DBMS53Aは、当該第1の更新データをファイルシステム54Aに出力する。
【0035】
ファイルシステム54Aは、SSD20Aに記憶されるデータをファイルとして管理するもので、ファイルの保存機能や暗号化機能などの各種機能を提供する。ここで、ファイルシステム54Aは、DBMS53Aから出力された第1の更新データをディスクドライバ56Aに出力する。また、ファイルシステム54Aは、各種アプリケーション51Aから出力された第2の更新データをDRDB55Aに出力し、各種アプリケーション51Aから出力された第3の更新データをディスクドライバ56Aに出力する。
【0036】
DRBD55Aは、ネットワーク越しにSSD20Aをリアルタイムに複製する機能を有する汎用のソフトウェアである。DRBD55Aは、ファイルシステム54Aにより出力された第2の更新データをディスクドライバ56Aに出力する。また、DRBD55Aは、第2の更新データのコピーを通信ドライバ57Aに出力する。ここでは、DRBD55Aは、本発明の「同期部」を構成する。
【0037】
ディスクドライバ56Aは、SSD20をOSによって制御可能にするためのソフトウェアである。このディスクドライバ56Aは、ファイルシステム54Aにより出力された第1の更新データ及び第3の更新データ、並びにDRBD55Aにより出力された第2の更新データをSSD20Aに記憶させる。このとき、第1の更新データは、SSD20A内のデータベース25Aに格納される。
【0038】
通信ドライバ57Aは、コントローラ10Aが備える不図示のネットワークインタフェースカード(NIC)をOSによって制御可能にするためのソフトウェアである。この通信ドライバ57Aは、データベース同期モジュール52Aにより出力された第1の更新データのコピー及びDRBD55Aにより出力された第2の更新データのコピーを、ネットワークで接続された待機系のコントローラ10Bの後述する通信ドライバ57Bに送信する。
【0039】
<コントローラ10Bのソフトウェア構成例>
コントローラ10Bには、各種アプリケーション51B、データベース同期モジュール52B、データベース管理システム(DBMS)53B、ファイルシステム54B、DRBD55B、ディスクドライバ56B、及び通信ドライバ57Bがインストールされている。なお、データベース管理システム(DBMS)53B、ファイルシステム54B、ディスクドライバ56B、及び通信ドライバ57Bは、コントローラ10Aにインストールされているものと同様であるため、ここでは説明を省略する。
【0040】
各種アプリケーション51Bは、第1の更新データ、第2の更新データ、第3の更新データを受け付ける機能を有するとともに、受け付けた各更新データを処理する機能を有する。また、各種アプリケーション51Bは、設定部45Bの設定内容に基づき、当該処理後のデータを、後述する2つの同期部(データベース同期モジュール52B、DRBD55B)のうちの1つに出力する機能を有する。
【0041】
なお、待機系のコントローラ10Bでは、各種アプリケーション51Bは、第3の更新データを受け付け、適宜処理する。また、待機系のコントローラ10Bでは、第3の更新データを受け付けるため、各種アプリケーション51Bは、処理後の第3の更新データをいずれの同期部(データベース同期モジュール52B、DRBD55B)にも出力せず、ファイルシステム54Bに出力する。その後、ファイルシステム54Bに出力された第3の更新データは、ディスクドライバ56Bを介してSSD20Bに書き込まれる。ここでは、各種アプリケーション51Bは、本発明の「出力部」を構成する。
【0042】
データベース同期モジュール52Bは、コントローラ10Aのデータベース同期モジュール52Aから通信ドライバ57Aを介して送信された第1の更新データのコピーを、通信ドライバ57Bを介して受信する機能を有する。また、データベース同期モジュール52Bは、受信した第1の更新データのコピーを、DBMS53B、ファイルシステム54B、ディスクドライバ56Bを介してデータベース25Bに書き込み、データベース25Bの更新を完了する。ここでは、データベース同期モジュール52Bは、本発明の「同期部」を構成する。
【0043】
DRBD55Bは、コントローラ10AのDRDB55Aから通信ドライバ57Aを介して送信された第2の更新データのコピーを、通信ドライバ57Bを介して受信する機能を有する。DRDB55Bは、受信した第2の更新データのコピーを、ディスクドライバ56Bを介してSSD20Bに書き込み、SSD20Bの更新を完了する。ここでは、DRBD55Bは、本発明の「同期部」を構成する。
【0044】
次に、種別毎の具体的なデータの流れについて、
図4から
図7を参照して説明する。
図4は第1の更新データ又はそのコピーの流れを示し、
図5は第2の更新データ又はそのコピーの流れを示し、
図6は第3の更新データの流れを示している。
図7は、コントローラによる同期処理の流れを示すフローチャートである。
【0045】
<第1の更新データ>
図4は、第1の更新データ又はそのコピーの流れを示している。まず、各種アプリケーション51Aは、
図7のステップST1に示すように、例えば監視ポイント200から収集した当該ポイント200の現在値などのデータを、第1の更新データとして受け付ける(
図4の符号1a)。
【0046】
各種アプリケーション51Aは、受け付けた第1の更新データを適宜処理し(ステップST2)、設定部45Aを参照して、当該処理後の第1の更新データの同期方法を確認する(ステップST3)。第1の更新データは、二重化機能により同期させることが設定されているので(ステップST4)、各種アプリケーション51Aは、当該設定に基づき、第1の更新データをデータベース同期モジュール52Aに出力する(1b)。データベース同期モジュール52Aは、当該第1の更新データのコピーを取得するとともに、当該第1の更新データをDBMS53Aに出力する(1c)。
【0047】
DBMS53Aは、第1の更新データに基づくデータベース25Aの更新トランザクションを実行し、更新トランザクションが正常に終了(コミット)した場合に、第1の更新データをファイルシステム54A、ディスクドライバ56Aを介してSSD20A内のデータベース25Aに書き込み、データベース25Aの更新を完了する(1d~1f)。
【0048】
また、データベース同期モジュール52Aは、DBMS53Aによるデータベース25Aの更新が完了すると、取得していた第1の更新データのコピーを通信ドライバ57Aを介してコントローラ10Bに送信する(1g、1h)。
【0049】
コントローラ10Bでは、データベース同期モジュール52Bが通信ドライバ57Bを介して当該第1の更新データのコピーを受信する(1i)。データベース同期モジュール52Bは、受信した当該第1の更新データのコピーを、DBMS53B、ファイルシステム54B、ディスクドライバ56Bを介してデータベース25Bに書き込み、データベース25Bの更新を完了する(1j~1m)。
【0050】
なお、DBMS53Aは、第1の更新データに基づくデータベース25Aの更新トランザクションが何らかの異常により終了できなかった場合は、ロールバック処理を実行し、データベース25Aの更新を無効とする。この場合、データベース同期モジュール52Aは、第1の更新データのコピーをコントローラ10Bに送信しない。
【0051】
このように、二重化システム1は、第1の更新データをデータベース25Aに書き込むとともに、第1の更新データのコピーをデータベース25Bに書き込み、データベース25A、データベース25Bを同期させる。特に、二重化システム1は、コントローラ10Aで第1の更新データに基づく更新トランザクションが正常に終了した場合に、当該第1の更新データのコピーをコントローラ10Bに送信し、コントローラ10Bでは、受信した当該第1の更新データのコピーをデータベース25Bに書き込む。これにより、二重化システム1は、システムにとって重要度あるいは更新頻度が高いデータが不完全な状態で同期されることを回避し、データを正確に同期させることができる。
【0052】
<第2の更新データ>
図5は、第2の更新データ又はそのコピーの流れを示している。まず、各種アプリケーション51Aは、
図7のステップST1に示すように、例えばユーザにより不図示の入力部を介して入力された二重化システム1のシステム構成に関するデータを、第2の更新データとして受け付ける(
図5の符号2a)。
【0053】
各種アプリケーション51Aは、受け付けた第2の更新データを適宜処理し(ステップST2)、設定部45Aを参照して、当該第2の更新データの同期方法を確認する(ステップST3)。第2の更新データは、DRBDにより同期させることが設定されているので(ステップST5)、各種アプリケーション51Aは、当該設定に基づき、第2の更新データをファイルシステム54Aを介してDRBD55Aに出力する(2b、2c)。DRBD55Aは、当該第2の更新データのコピーを取得するとともに、当該第2の更新データをディスクドライバ56Aを介してSSD20Aに書き込み、SSD20Aの更新を完了する(2d、2e)。
【0054】
また、DRBD55Aは、SSD20Aの更新を完了すると、当該第2の更新データのコピーを通信ドライバ57Aを介してコントローラ10Bに送信する(2f、2g)。
【0055】
コントローラ10Bでは、DRBD55Bが通信ドライバ57Bを介して当該第2の更新データのコピーを受信する(2h)。そして、DRBD55Bは、受信した第2の更新データのコピーをディスクドライバ56Bを介してSSD20Bに書き込み、SSD20Bの更新を完了する(2i、2j)。
【0056】
DRBDは、リアルタイムでデータをコピーできたり、どのようなファイルシステムにも対応できるといった長所がある。一方、DRDBは、データのコピーを送信している途中でネットワーク障害が発生した場合、ファイルが破損するおそれがあったり、ファイルを構成するブロック単位ではデータを保証できるがファイル単位ではデータを保証できない、といった短所もある。
【0057】
そこで、二重化システム1は、第1のデータほどは重要度あるいは更新頻度が高くないと考えられるデータを第2のデータとして取り扱い、第2のデータはDRBDなどの汎用的な技術により同期させる。これにより、二重化システム1は、第1のデータと第2のデータとの間で同期方法の棲み分けを行うとともに、重要度あるいは更新頻度に見合った方法で適切かつ簡易にデータを同期させることができる。
【0058】
<第3の更新データ>
図6は、第3の更新データの流れを示している。まず、各種アプリケーション51Aは、
図7のステップST1に示すように、例えば不図示のネットワークを介してコントローラ10Aが受信したコントローラ10AのOS関連のプログラムに関するデータを、第3の更新データとして受け付ける(
図6の符号3a)。
【0059】
各種アプリケーション51Aは、受け付けた第3の更新データを適宜処理し(ステップST2)、設定部45Aを参照して、当該第3の更新データの同期方法を確認する(ステップST3)。第3の更新データは、SSD20Bとの間で同期しないことが設定されているので(ステップST6)、各種アプリケーション51Aは、当該設定に基づき、第3の更新データを同期部(データベース同期モジュール52A、DRBD55A)には出力せず、ファイルシステム54Aに出力する(3b)。ファイルシステム54Aは、ディスクドライバ56Aを介して第3の更新データをSSD20Aに書き込み、SSD20Aの更新を完了する(3c、3d)。
【0060】
また、コントローラ10Bでは、各種アプリケーション51Bが、同様にコントローラ10BのOS関連のプログラムに関するデータを、第3の更新データとして受け付ける(3e)。各種アプリケーション51Bは、受け付けた第3の更新データを適宜処理し(ステップST2)、設定部45Bを参照して、当該第3の更新データの同期方法を確認する(ステップST3)。第3のデータは、SSD20Aとの間で同期しないことが設定されているので(ステップST6)、各種アプリケーション51Bは、当該設定に基づき、第3の更新データを同期部(データベース同期モジュール52B、DRBD55B)には出力せず、ファイルシステム54Bに出力する(3f)。ファイルシステム54Bは、ディスクドライバ56Bを介して第3の更新データをSSD20Bに書き込み、SSD20Bの更新を完了する(3g、3h)。
【0061】
以上、実施の形態1では、コントローラ10Aが現用系として稼働している場合の例を説明した。しかしながら、コントローラ10Aに異常が発生し、コントローラ10Bが待機系から現用系に切り替わった場合、コントローラ10Bは上記説明したコントローラ10Aと同様の流れで処理を行えばよい。また、3台以上のコントローラで冗長システムを構成した場合であっても、いずれか1台のコントローラが現用系として稼働すればよく、当該現用系のコントローラは、他の待機系のコントローラとの間で、上記と同様の流れでデータの同期を行えばよい。
【0062】
以上のように、実施の形態1によれば、二重化システム1は、2台のコントローラ10A、10Bにより構成され、コントローラ10A、10Bは、互いに異なる同期方法であり、得られたデータを待機系のコントローラのデータと同期させる複数の同期部(データベース同期モジュール52A、DRBD55A、又はデータベース同期モジュール52B、DRBD55B)と、自機が現用系の場合に、得られたデータを当該データの種別に応じて複数の同期部のうちの1つに出力する出力部(各種アプリケーション51A又は51B)とを備える。これにより、二重化システム1は、コントローラ10A、10B間においてデータを正確に同期させることができる。
【0063】
また、実施の形態1によれば、出力部は、得られたデータの重要度あるいはデータの更新頻度に応じて、当該データを複数の同期部のうちの1つに出力する。これにより、二重化システム1は、システムにおけるデータの重要度あるいは更新頻度に応じて、適切な同期方法を選択することができる。
【0064】
また、実施の形態1によれば、出力部は、得られたデータが待機系のコントローラのデータと同期しないデータである場合、当該データを複数の同期部のいずれにも出力しない。これにより、二重化システム1は、同期の要否についても棲み分けを行い、不必要なデータの同期を避けつつコントローラ10A、10Bの処理負荷を軽減することができる。
【0065】
なお、本願発明はその発明の範囲内において、実施の形態の任意の構成要素の変形、もしくは実施の形態において任意の構成要素の省略が可能である。
【符号の説明】
【0066】
1 二重化システム(冗長システム)
10 コントローラ
10A 現用系のコントローラ
10B 待機系のコントローラ
20A、20B SSD
25A、25B データベース
45A、45B 設定部
51A、51B 各種アプリケーション(出力部)
52A、52B データベース同期モジュール(同期部)
53A、53B データベース管理システム(DBMS)
54A、54B ファイルシステム
55A、55B DRBD(同期部)
56A、56B ディスクドライバ
57A、57B 通信ドライバ
150 システムバス
200 監視ポイント