(57)【要約】【課題】障害等により冗長構成システムのすべてのノードを再起動する場合において、再起動に失敗したノードがあったとしても、速やかにサービスを開始する。【解決手段】ノード１,２が起動されると、データ管理部１２１,２２１は、システム管理部１２０,２２０からの指示を待たずに、補助記憶部１３,２３からチェックポイントとジャーナル（データ）を読み込む。このとき、自ノードのデータ管理部１２１,２２１は、他のノードの状態が既にActive状態か否かを確認し、他のノードの状態がまだActive状態でなければ、自ノードの補助記憶部１３,２３からデータを読み込む。これにより、自ノードがActiveノードとして起動するとき、データの読み込み無しに、Activeノードになれるので、速やかにサービスを開始できる。【選択図】図１
2008191705.tif 000002
【特許請求の範囲】
【請求項１】
複数のノードを備える冗長構成システムにおいて、前記複数のノードの起動時に、前記複数のノードそれぞれがネットワーク経由でお互いの状態を確認し、前記複数のノードのうち、いずれか１つのノードを、サービスを提供するActiveノードとし、前記Activeノード以外のノードをStandbyノードとするノード制御方法であって、
前記ノードのデータ管理部が、
前記ノードのシステム管理部から、前記ノードの起動指示を受信したとき、前記ネットワーク経由で、前記冗長構成システムにおける他のノードへ、前記他のノードのデータ管理部がActive状態か否かの問い合わせ情報を送信し、
前記他のノードからの前記問い合わせ情報の応答により、前記他のノードのデータ管理部がActiveではないと判断したとき、
自ノードの補助記憶部から、この補助記憶部に記憶されたチェックポイントおよびジャーナルを前記自ノードの記憶部上に読み出し、
前記ノードのシステム管理部が、
前記複数のノードのうち、前記チェックポイントおよびジャーナルの読み出しが完了したノードから、いずれか１つのノードを前記Activeノードとして選択し、それ以外のノードを前記Standbyノードとして選択し、
前記ノードのデータ管理部が、
前記ノードのシステム管理部から、前記自ノードのActive化指示を受信したとき、
前記自ノードのデータ管理部をActive化することを特徴とするノード制御方法。
【請求項２】
前記ノードのデータ管理部が、
前記ノードのシステム管理部から、前記自ノードのStandby化指示を受信したとき、
前記自ノードの記憶部上の前記チェックポイントおよびジャーナルを破棄し、
前記ネットワーク経由で、前記Activeノードとして選択された他のノードの補助記憶部から、前記チェックポイントおよびジャーナルを読み出し、
前記自ノードのデータ管理部をStandby化することを特徴とする請求項１に記載のノード制御方法。
【請求項３】
前記ノードのデータ管理部が、
前記他のノードからの前記問い合わせ情報の応答により、前記他のノードのデータ管理部がActiveであると判断したとき、
前記ネットワーク経由で、前記Activeノードとして選択された他のノードの補助記憶部から、前記チェックポイントおよびジャーナルを前記自ノードの記憶部上に読み出し、
前記ノードのデータ管理部が、
前記ノードのシステム管理部から、前記自ノードのStandby化指示を受信したとき、
前記自ノードのデータ管理部をStandby化することを特徴とする請求項１または請求項２に記載のノード制御方法。
【請求項４】
前記ノードのデータ管理部が、
前記ノードのシステム管理部から、前記自ノードのActive化指示を受信したとき、
前記自ノードのデータ管理部をActive化することを特徴とする請求項３に記載のノード制御方法。
【請求項５】
前記ノードのデータ管理部が、
前記ネットワーク経由で、前記Activeノードとして選択された他のノードの補助記憶部から、前記チェックポイントおよびジャーナルを読み出せなかったとき、
前記自ノードの補助記憶部から、前記チェックポイントおよびジャーナルを読み出すことを特徴とする請求項２ないし請求項４のいずれか１項に記載のノード制御方法。
【請求項６】
請求項１ないし請求項５のいずれか１項に記載のノード制御方法を、コンピュータであるノードに実行させることを特徴とするノード制御プログラム。
【請求項７】
サービスを提供するActiveノードおよびそのActiveノードの待機ノードであるStandbyノードを備える冗長構成システムに用いられるノードであって、
前記ノードのシステム管理部から、前記ノードの起動指示を受信したとき、ネットワーク経由で、前記冗長構成システムにおける他のノードへ、前記他のノードのデータ管理部がActive状態か否かの問い合わせ情報を送信し、前記他のノードからの前記問い合わせ情報の応答により、前記他のノードのデータ管理部がActive状態か否かを判断する他ノード状態管理部と、
前記他ノード状態管理部において、前記他のノードのデータ管理部がActive状態でないと判断したとき、自ノードの補助記憶部から、この補助記憶部に記憶されたチェックポイントおよびジャーナルを前記自ノードの記憶部上に読み出す自ノードデータロード部と、
前記冗長構成システムのノードから、前記Activeノードおよび前記Standbyノードを選択するシステム管理部と、
このシステム管理部から、前記自ノードのActive化指示を受信したとき、前記自ノードのデータ管理部をActive化する自ノード状態管理部とを備えることを特徴とするノード。
【請求項８】
前記他ノード状態管理部において、前記システム管理部から、前記自ノードのStandby化指示を受信したとき、
前記他ノードデータロード部は、
前記自ノードの前記記憶部上の前記チェックポイントおよびジャーナルを破棄し、前記ネットワーク経由で、前記Activeノードとして選択された他のノードの補助記憶部から、この補助記憶部に記憶された前記チェックポイントおよびジャーナルを読み出し、
前記自ノード状態管理部は、
前記自ノードのデータ管理部をStandby化することを特徴とする請求項７に記載のノード。
【請求項９】
前記ノードのデータ管理部において、前記他のノードからの前記問い合わせ情報の応答により、前記他のノードのデータ管理部がActive状態であると判断し、
前記ネットワーク経由で、前記Activeノードとして選択された他のノードの補助記憶部から、前記チェックポイントおよびジャーナルを前記自ノードの記憶部上に読み出し、
前記ノードのデータ管理部が、
前記ノードのシステム管理部から、前記自ノードのStandby化指示を受信したとき、
前記自ノードのデータ管理部をStandby化することを特徴とする請求項７または請求項８に記載のノード。
【請求項１０】
前記ノードのデータ管理部は、
前記ノードのシステム管理部から、前記自ノードのActive化指示を受信したとき、
前記自ノードのデータ管理部をActive化することを特徴とする請求項９に記載のノード。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、冗長構成システムのノード制御技術に関する。
【背景技術】
【０００２】
従来、単一ノードにおいて、管理しているデータベースの任意の時点のスナップショット（以下、チェックポイントと呼ぶ）と、チェックポイントからの更新差分情報（以下、ジャーナルと呼ぶ）とをハードディスク等の記憶媒体（補助記憶部）に記録しておき、このデータベースに障害が発生した場合には、ノードは、このチェックポイントとジャーナルとを用いてデータベースを障害直前の状態に復旧（リカバリ）する技術がある。
【０００３】
また、データベースを管理するノードを冗長構成とし、これらのノード間でデータベースを共有するシステム（冗長構成システム）もある。このようなシステムにおいて、サービスを提供するノード（以下、Activeノードと呼ぶ）に障害が発生して待機中のノード（以下、Standbyノードと呼ぶ）に切り替わるとき、長時間を要するという問題がある。
【０００４】
このような問題を解決するため、ActiveノードとStandbyノードと間でデータベースを非共有とする冗長構成システムが提案されている。この冗長構成システムを、図７を用いて説明する。図７は、従来の冗長構成システムを例示した図である。図７において、ノード３はActiveノードであり、ノード４はStandbyノードであるものとする。
【０００５】
図７に示すように、ノード４がStandbyノードとして起動する際には、自ノードのチェックポイントとジャーナルではなく、Activeノードであるノード３のチェックポイントとジャーナルとを読み込んで起動する（Ｓ１）。そして、ノード４が起動した後、Activeノードであるノード３は、自ノードで発生したジャーナルを自ノードの補助記憶部に蓄積する（Ｓ２）。また、このノード３は、この自ノードで発生したジャーナルをノード４へ送信する（Ｓ３）。そして、ノード４は、ノード３から送信されたジャーナルを、自ノードの記憶部に反映し、自身の補助記憶部のジャーナルに蓄積する（Ｓ４）。
【０００６】
このように、Standbyノード（ノード４）とActiveノード（ノード３）との間で、データベースと、チェックポイントおよびジャーナルの同期をとっておくことで、このノード３に障害が発生した場合でも、Standbyノード（ノード４）は自ノードを起動することができる。つまり、Activeノードに障害が発生した場合でも、その障害によるサービス停止時間を短くすることができる。
【０００７】
以下の非特許文献１には、このような冗長構成システムにおける各ノードのActive化／Standby化の制御技術が開示されている。
【非特許文献１】Times Ten  レプリケーション・ガイド  リリース5.0、Times Ten社、東京エレクトロン株式会社、平成15年8月、ｐ.27-32
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかし、前記した従来の冗長構成システムは、いずれかのノードがActiveノードとして起動完了しないと、他のノードは補助記憶部からのデータ（チェックポイントとジャーナル）を読み込まなかった。このため、このような冗長構成システムにおいて障害が発生し、すべてのノードの再起動が必要になったとき、サービス開始までに時間がかかるという問題があった。
【０００９】
このような問題を、図８および図９を用いて詳細に説明する。図８および図９は、従来技術の問題を説明するために引用した図である。ここでは、冗長構成システムのノード３,４が、ノード３→ノード４の順に起動し、このノード３が起動に失敗する場合を例に説明する。なお、システム管理部３２０,４２０は、ActiveノードおよびStandbyノードを選択（決定）する。ここでは、システム管理部３２０,４２０が、冗長構成システムを構成するノード３,４のうち、最初に起動したノードをActiveノードとして選択する場合を例に説明する。データ管理部３２１,４２１は、各ノードの補助記憶部のデータを管理する。なお、以下の説明において、補助記憶部のデータ読み込み（チェックポイントとジャーナルのロード）とは、データ管理部３２１,４２１が補助記憶部のチェックポイントとジャーナルとを使って、記憶部にデータベースを構築することを示す。
【００１０】
図８に示すように、ノード３のシステム管理部３２０は、ノード３の電源投入等を契機として、データ管理部３２１に起動指示を出力する（Ｓ８０１）。そして、起動指示を受けたデータ管理部３２１は自ノードのデータ管理部３２１を起動すると、システム管理部３２０へ起動完了通知を返す（Ｓ８０２）。そして、システム管理部３２０は、ActiveノードおよびStandbyノードを決定する（Ｓ８０３：Active／Standbyの決定）。ここでは、例えば、システム管理部３２０は最初に起動したノード（つまり、自ノードであるノード３）をActiveノードとして決定する。
【００１１】
そして、システム管理部３２０は、データ管理部３２１にActive化指示を行う（Ｓ８０４）。これを受けて、データ管理部３２１はActive化処理を開始する（Ｓ８０５）。そして、データ管理部３２１は自ノードの補助記憶部からデータ（チェックポイントとジャーナル）読み込みを開始する（Ｓ８１４）。
【００１２】
また、ノード４においても同様に、システム管理部４２０は、ノード４の電源投入等を契機として、データ管理部４２１に起動指示を出力する（Ｓ８１１）。そして、起動指示を受けたデータ管理部４２１は起動を完了すると、システム管理部４２０へ起動完了通知を返す（Ｓ８１２）。そして、ノード３のシステム管理部３２０は、ActiveノードおよびStandbyノードを決定する（Ｓ８１３：Active／Standbyの決定）。前記したとおり、ここではノード３が最初に起動しているので、このノード３がActiveノードになる可能性が高い。しかし、ノード４は、ノード３がActiveノードとして起動完了したことを確認しないと、ノード４はStandbyノードになれないので、ノード４のシステム管理部４２０は、Activeノードであるノード３の処理を待つ。つまり、このノード３からのActive化の完了通知（Active化完了通知）の受信を待つ。
【００１３】
図９の説明に移る。ここで、ノード３のシステム管理部３２０が自ノードの異常通知（例えば、ノード３のデータベースにおける障害発生の通知）を受信すると（Ｓ９０１）、ノード３のシステム管理部３２０およびノード４のシステム管理部４２０はActiveノードの変更を行う（Ｓ９０２：Active／Standbyの変更）。例えば、ノード３のシステム管理部３２０が自ノードの障害発生をノード４のシステム管理部４２０へ通知し、これに基づきシステム管理部４２０は、自ノードをActiveノードに変更すると決定する。このような決定をしたシステム管理部４２０は、データ管理部４２１へActive化指示を出力する（Ｓ９０３）。これを受けて、データ管理部４２１はActive化処理を開始し（Ｓ９０４）、自ノードからデータを読み込む（Ｓ９０５）。
【００１４】
一方、障害が発生したノード３は、自ノードの異常に対する後処理を行う（Ｓ９１１）。この後のＳ９１２〜Ｓ９１４の処理は、前記した図８のＳ８１１〜Ｓ８１３の処理と同様なので説明を省略する。このような処理の後、ノード３のシステム管理部３２０は、Activeノードであるノード４の処理を待つ。
【００１５】
一方、ノード４のデータ管理部４２１はActive化を完了すると、システム管理部４２０へActive化完了通知を出力し（Ｓ９１５）、これを受けてシステム管理部４２０はサービスを開始する（Ｓ９１６）。例えば、自ノードのデータベースに記憶されたデータの読み出しや書込みを可能にする。
【００１６】
この後、ノード４のシステム管理部４２０は、自ノードのActive化完了通知をノード３のシステム管理部３２０へ送信し（Ｓ９１７）、このような通知を受信したシステム管理部３２０は、自ノードをStandbyノードと決定する（Ｓ９１８）。そして、データ管理部３２１へ自ノードのStandby化指示を出力する（Ｓ９１９）。これを受けてデータ管理部３２１はStandby化処理を開始し（Ｓ９２０）、Activeノード（ノード４）からのデータ読み込みを行う（Ｓ９２１）。そして、データ管理部３２１は、このようなStandby化を完了すると、Standby化完了通知をシステム管理部３２０へ出力し（Ｓ９２２）、処理を終了する。つまり、ノード４はActiveノードとなり、ノード３はStandbyノードとなる。
【００１７】
このように、従来の冗長構成システムにおいて障害が発生し、システムのすべてのノードを再起動させたとき、Activeノードに決定されたノード（図８、図９に例示したノード３）に障害が発生すると、他のノード（図８、図９に例示したノード４）は、その障害発生後からデータの読み込みを開始する。このとき、ハードディスク等の記憶媒体に記憶されたデータの読み込み処理にはＩ／Ｏ（Input/Output）処理が発生する。このため、Activeノードに決定されたノードが起動に失敗すると、サービス開始に長時間を要してしまうという問題があった。
【００１８】
本発明は、前記した問題を解決し、冗長構成システムの障害等により、すべてのノードを再起動する場合において、この再起動に失敗するノードがあったとしても、速やかにサービス開始できるようにすることを目的とする。
【課題を解決するための手段】
【００１９】
前記した課題を解決するため、本発明は、冗長構成システムのノードが起動されると、このノードのデータ管理部は、システム管理部からの指示を待たずに補助記憶部から記憶部上にチェックポイントとジャーナル（データ）を読み出す（読み込む）構成とした。ここでノードは、データ読み出し前に、他のノード（他のノードのデータ管理部）がまだActive状態ではないことを確認する。そして、他のノードのデータ管理部がまだActive状態でなければ、自ノードの補助記憶部からデータを読み出しておく。つまり、仮Active状態になる。一方、他のノードのデータ管理部が既にActive状態であれば、このActive状態のノードの補助記憶部からデータを読み出しておく。つまり、仮Standby状態になる。このようにすることで、ノードのデータ管理部は、起動後、システム管理部から自ノードのActive化指示を受信したとき、自ノードをすぐにActive状態に遷移させることができる。従って、冗長構成システムのノードのうち、Activeノードとして起動中の他のノードに障害が発生した場合であっても、自ノードがすぐにActiveノードになることができる。つまり、冗長構成システムは速やかにサービスを開始できるので、サービス停止時間を短くすることができる。
【００２０】
なお、データ管理部は、他のノード（他のノードのデータ管理部）がActive状態でないことを確認した上で、自ノードの補助記憶部からデータを読み込むようにしたのは、もし他のノードがActive状態であれば、自ノードがActive状態になる（Activeノードになる）可能性は低いからである。つまり、この場合、自ノードは、Standby状態になる（Standbyノードになる）可能性が高いので、他のノードの補助記憶部からデータを読み込み、Standby状態になるための準備をしておく。一方、データ管理部は、他のノードがまだActive状態でないことの確認ができれば、自ノードがActive状態になる可能性があるので、自ノードの補助記憶部からデータ読み込みを行い、Active状態になるための準備をしておく。
【００２１】
なお、ここでの補助記憶部とは、例えば、ＨＤＤ（Hard Disk Drive）や、フラッシュメモリ等、不揮発性の記憶媒体である。また、記憶部は、例えば、ＲＡＭ（Random Access Memory）、ＨＤＤ（Hard Disk Drive）や、フラッシュメモリ等である。
【００２２】
また、ここでのチェックポイントとは、前記したとおり、ノードが管理しているデータベース中のデータの任意の時点のスナップショットである。また、ジャーナルとは、このチェックポイントからの更新差分情報である。なお、前記したとおり、補助記憶部のデータ読み込み（チェックポイントとジャーナルのロード）とは、ノードが補助記憶部のチェックポイントとジャーナルとを使って、記憶部上にデータベースを構築することを示す。
【００２３】
すなわち、請求項１に記載の発明は、複数のノードを備える冗長構成システムにおいて、前記複数のノードの起動時に、前記複数のノードそれぞれがネットワーク経由でお互いの状態を確認し、前記複数のノードのうち、いずれか１つのノードを、サービスを提供するActiveノードとし、前記Activeノード以外のノードをStandbyノードとするノード制御方法であって、前記ノードのデータ管理部が、前記ノードのシステム管理部から、前記ノードの起動指示を受信したとき、前記ネットワーク経由で、前記冗長構成システムにおける他のノードへ、前記他のノードのデータ管理部がActive状態か否かの問い合わせ情報を送信し、前記他のノードからの前記問い合わせ情報の応答により、前記他のノードのデータ管理部がActiveではないと判断したとき、自ノードの補助記憶部から、この補助記憶部に記憶されたチェックポイントおよびジャーナルを前記自ノードの記憶部上に読み出し、前記ノードのシステム管理部が、前記複数のノードのうち、前記チェックポイントおよびジャーナルの読み出しが完了したノードから、いずれか１つのノードを前記Activeノードとして選択し、それ以外のノードを前記Standbyノードとして選択し、前記ノードのデータ管理部が、前記ノードのシステム管理部から、前記自ノードのActive化指示を受信したとき、前記自ノードのデータ管理部をActive化することを特徴とするノード制御方法とした。
【００２４】
請求項７に記載の発明は、サービスを提供するActiveノードおよびそのActiveノードの待機ノードであるStandbyノードを備える冗長構成システムに用いられるノードであって、前記ノードのシステム管理部から、前記ノードの起動指示を受信したとき、ネットワーク経由で、前記冗長構成システムにおける他のノードへ、前記他のノードのデータ管理部がActive状態か否かの問い合わせ情報を送信し、前記他のノードからの前記問い合わせ情報の応答により、前記他のノードのデータ管理部がActive状態か否かを判断する他ノード状態管理部と、前記他ノード状態管理部において、前記他のノードのデータ管理部がActive状態でないと判断したとき、自ノードの補助記憶部から、この補助記憶部に記憶されたチェックポイントおよびジャーナルを前記自ノードの記憶部上に読み出す自ノードデータロード部と、前記冗長構成システムのノードから、前記Activeノードおよび前記Standbyノードを選択するシステム管理部と、このシステム管理部から、前記自ノードのActive化指示を受信したとき、前記自ノードのデータ管理部をActive化する自ノード状態管理部とを備えることを特徴とするノードとした。
【００２５】
このようにすることで、冗長構成システムのノードのうち、他のノードのデータ管理部がまだActive状態でないことが確認できたノードは、自ノードの補助記憶部からデータを読み出す。つまり、仮Active状態になる。そして、ノードのデータ管理部は、システム管理部から自ノードのActive化指示を受信したとき、自ノードをすぐにActive状態に遷移させることができる。従って、冗長構成システムのノードのうち、Activeノードとして起動中の他のノードに障害が発生した場合であっても、自ノードがすぐにActive状態になることができ、速やかにサービスを開始できる。
【００２６】
請求項２に記載の発明は、請求項１に記載のノード制御方法において、前記ノードのデータ管理部が、前記ノードのシステム管理部から、前記自ノードのStandby化指示を受信したとき、前記自ノードの記憶部上の記憶された前記チェックポイントおよびジャーナルを破棄し、前記ネットワーク経由で、前記Activeノードとして選択された他のノードの補助記憶部から、前記チェックポイントおよびジャーナルを読み出し、前記自ノードのデータ管理部をStandby化することを特徴とするノード制御方法とした。
【００２７】
請求項８に記載の発明は、請求項７に記載のノードにおいて、前記他ノード状態管理部において、前記システム管理部から、前記自ノードのStandby化指示を受信したとき、前記他ノードデータロード部は、前記自ノードの記憶部上の前記チェックポイントおよびジャーナルを破棄し、前記ネットワーク経由で、前記Activeノードとして選択された他のノードの補助記憶部から、この補助記憶部に記憶された前記チェックポイントおよびジャーナルを読み出し、前記自ノード状態管理部は、前記自ノードのデータ管理部をStandby化することを特徴とするノードとした。
【００２８】
このようにすることで、冗長構成システムのノードのうち、他のノードのデータ管理部がまだActive状態でないことが確認できたノードは、自ノードの補助記憶部からデータを読み出す（仮Active状態になる）。そして、このノードのデータ管理部は、システム管理部から自ノードのStandby化指示を受信したとき、いったん自ノードの記憶部上のデータを破棄し、ネットワーク経由で、Activeノードの補助記憶部からデータを読み出し直す。つまり、仮Active状態のノードを、Standby化することができる。
【００２９】
請求項３に記載の発明は、請求項１または請求項２に記載のノード制御方法において、前記ノードのデータ管理部が、前記他のノードからの前記問い合わせ情報の応答により、前記他のノードのデータ管理部がActiveであると判断したとき、前記ネットワーク経由で、前記Activeノードとして選択された他のノードの補助記憶部から、前記チェックポイントおよびジャーナルを前記自ノードの記憶部上に読み出し、前記ノードのデータ管理部が、前記ノードのシステム管理部から、自ノードのStandby化指示を受信したとき、前記自ノードのデータ管理部をStandby化することを特徴とするノード制御方法とした。
【００３０】
請求項９に記載の発明は、請求項７または請求項８に記載のノードにおいて、前記ノードのデータ管理部において、前記他のノードからの前記問い合わせ情報の応答により、前記他のノードのデータ管理部がActive状態であると判断し、前記ネットワーク経由で、前記Activeノードとして選択された他のノードの補助記憶部から、前記チェックポイントおよびジャーナルを前記自ノードの記憶部上に読み出し、前記ノードのデータ管理部が、前記ノードのシステム管理部から、自ノードのStandby化指示を受信したとき、前記自ノードのデータ管理部をStandby化することを特徴とするノードとした。
【００３１】
このようにすることで、冗長構成システムのノードが起動され、他のノードのデータ管理部がActive状態であることが確認できたノードは、他ノードの補助記憶部からデータを読み出す（仮Standby状態になる）。そして、このノードのデータ管理部は、システム管理部から自ノードのStandby化指示を受信したとき、自ノードのデータ管理部をStandby化する。つまり、仮Standby状態のノードを、Standby化することができる。
【００３２】
請求項４に記載の発明は、請求項３に記載のノード制御方法において、前記ノードのデータ管理部が、前記ノードのシステム管理部から、前記自ノードのActive化指示を受信したとき、前記自ノードのデータ管理部をActive化することを特徴とするノード制御方法とした。
【００３３】
請求項１０に記載の発明は、請求項９に記載のノードにおいて、前記ノードのデータ管理部は、前記ノードのシステム管理部から、前記自ノードのActive化指示を受信したとき、前記自ノードのデータ管理部をActive化することを特徴とするノードとした。
【００３４】
このようにすることで、冗長構成システムのノードが起動され、他のノードのデータ管理部がActive状態であることが確認できたノードは、他ノードの補助記憶部からデータを読み出す（仮Standby状態になる）。そして、このノードのデータ管理部は、システム管理部から自ノードのActive指示を受信したとき、自ノードのデータ管理部をActive化する。つまり、仮Standby状態のノードを、Active化することができる。
【００３５】
請求項５に記載の発明は、請求項２ないし請求項４のいずれか１項に記載のノード制御方法において、前記ノードのデータ管理部が、前記ネットワーク経由で、前記Activeノードとして選択された他のノードの補助記憶部から、前記チェックポイントおよびジャーナルを読み込めなかったとき、前記自ノードの補助記憶部から、前記チェックポイントおよびジャーナルを読み出すことを特徴とするノード制御方法とした。
【００３６】
このようにすることで、冗長構成システムのノードが、仮Standby状態になるため、またはStandbyノードになるため、他のノードからのデータ読み込もうとして失敗した場合、仮Active状態になることができる。
【００３７】
請求項６に記載の発明は、請求項１ないし請求項５のいずれか１項に記載のノード制御方法を、コンピュータであるノードに実行させることを特徴とするノード制御プログラムとした。
【００３８】
このような制御プログラムによれば、請求項１ないし請求項５のいずれか１項に記載の制御方法をコンピュータであるノードに実行させることができる。
【発明の効果】
【００３９】
本発明によれば、冗長構成のノードを含むシステムの障害等により、すべてのノードを再起動する場合において、この再起動に失敗するノードがあったとしても、速やかにサービスを開始できる。
【発明を実施するための最良の形態】
【００４０】
以下、本発明を実施するための最良の形態（以下、実施の形態という）を、図面を参照しながら説明する。
【００４１】
＜冗長構成システムの概要＞
まず、図１を用いて本実施の形態の冗長構成システムの概要を説明する。図１は、本実施の形態の冗長構成システムの概要を説明する図である。ここでは、図１の冗長構成システムは、補助記憶部を非共有とするノード１,２の２台のノードにより構成される場合を例に説明する。
【００４２】
ノード１は、システム管理部１２０と、データ管理部１２１と、補助記憶部１３と、記憶部１４とを備える。このシステム管理部１２０は、他のノード（ノード２）と情報を交換して、ActiveノードとStandbyノードとを決定する。また、データ管理部１２１は、補助記憶部１３（または、補助記憶部２３）に記憶されるデータの管理を行う。さらに、このデータ管理部１２１は、他のノード（ノード２）のデータ管理部２２１がActive状態か否かを確認して、自ノードを仮Active状態（詳細は後記）または仮Standby状態（詳細は後記）に遷移させる。また、このデータ管理部１２１は、補助記憶部１３（または、補助記憶部２３）に記憶されるデータを記憶部１４上に読み出す。また、補助記憶部１３は、このデータベースのチェックポイントおよびジャーナルを記憶する。なお、この補助記憶部１３は、ＨＤＤ、フラッシュメモリ等の不揮発性の記憶媒体から構成される。また、記憶部１４は、ＲＡＭ、ＨＤＤ、フラッシュメモリ等の記憶媒体から構成される。さらに、以下の説明において、補助記憶部１３,２３のデータ読み込み（チェックポイントとジャーナルのロード）とは、データ管理部１２１が補助記憶部１３,２３のチェックポイントとジャーナルとを使って、自ノードの記憶部１４（記憶部２４）にデータベースを構築することを示す。
【００４３】
また、このノード１のペアとなるノード２も、システム管理部２２０と、データ管理部２２１と、補助記憶部２３と、記憶部２４とを備える。このシステム管理部２２０と、データ管理部２２１と、補助記憶部２３とは、それぞれ、ノード１のシステム管理部１２０と、データ管理部１２１と、補助記憶部１３と同じ機能なので説明を省略する。このノード１とノード２とはクロスケーブル等により接続され、お互いにデータの送受信を行う。ここでは、冗長構成システムの障害発生後、ノード１,２両方のリセットのため、ノード１,２に電源を投入して再起動させる場合を例に説明する。
【００４４】
電源投入等により、ノード１が起動すると、データ管理部１２１は、ノード２のデータ管理部２２１がActive状態か否かを確認する状態確認を行う。そして、データ管理部１２１は、ノード２のデータ管理部２２１がActive状態でないことを確認すると、自ノードの補助記憶部１３から記憶部１４上にデータ（チェックポイントとジャーナル）を読み込む。つまり、ノード２のデータ管理部２２１がActive状態でなければ、自ノードがActiveノードになる可能性があるので、事前に自身の補助記憶部１３からデータを読み込んで、記憶部１４上にデータベースを構築しておく。以下、このようなノードの状態を仮Active状態と呼ぶ。
【００４５】
また、ノード２も電源投入等により起動する。そして、ノード２のデータ管理部２２１も、ノード１のデータ管理部１２１がActive状態でないことを確認すると、自ノードの補助記憶部２３からデータ（チェックポイントとジャーナル）を読み込み、仮Active状態になる。このように、ノード１,２は、他のノードのデータ管理部１２１,２２１がActive状態でなければ、自ノードがActiveノードになる可能性があるので、事前に自身の補助記憶部１３,２３からデータを読み込んでおき、記憶部１４,２４上にデータベースを構築しておく。
【００４６】
なお、ここでは説明を省略しているが、ノード１,２は他のノードのデータ管理部２２１,１２１がActive状態である場合、この他のノードの補助記憶部２３,１３からデータを読み込む。つまり、ノード１,２は、他のノードのデータ管理部２２１,１２１がActive状態であれば、自ノードがStandbyノードになる可能性があるので、事前に他のノードの補助記憶部２３,１３からデータを読み込んでおき、記憶部２４,１４上にデータベースを構築しておく。以下、このようなノードの状態を仮Standby状態と呼ぶ。
【００４７】
このようにして仮Active状態になったノード１に障害が発生すると、ノード２は以下のような処理を行う。すなわち、ノード２のシステム管理部２２０において、ノード１に障害が発生したことを検知すると、自ノード（ノード２）をActiveノードにすることを決定する。次に、システム管理部２２０からのActive化指示を受けたデータ管理部２２１は自身のActive化処理を行う。そして、Active化処理を完了すると、ノード２はサービスを開始する。このようにノード２は、既にデータの読み込みを済ませてあるので、ノード１が起動に失敗した場合でも、ノード２は速やかにActiveノードに切り替わり、データベースを用いたサービスを開始できる。
【００４８】
なお、起動に失敗したノード１は、その後の電源再投入等により、再起動を開始する。そして、ノード１は、ノード２のデータ管理部２２１がActive状態であることを確認すると、このノード２からデータを読み込み、仮Standby状態になる。この後、システム管理部１２０からのStandby化指示を受信すると、これを受けてデータ管理部１２１はStandby状態になる。
【００４９】
＜ノードの詳細＞
次に、図２を用いて、本実施の形態の冗長構成システムのノード１,２を詳細に説明する。図２は、図１の各ノードの構成を示したブロック図である。ノード１,２は同じ構成であるので、ここでは代表してノード１を説明する。
【００５０】
なお、ノード１は、例えば、コンピュータにより実現され、ノード２等の外部装置とデータ送受信を行うための入出力部１１と、補助記憶部１３および記憶部１４のデータの管理や、ActiveノードおよびStandbyノードの決定等を行う処理部１２と、データベース１４０が構築される記憶部１４と、このデータベース１４０のチェックポイント１３１やジャーナル１３２等を記憶する補助記憶部１３とを含んで構成される。
【００５１】
入出力部１１は、外部装置と各種データの入出力を行うための入出力インタフェースや、通信インタフェース等から構成される。
【００５２】
また、処理部１２は、このノード１が備えるＣＰＵ（Central Processing Unit）によるプログラム実行処理や、専用回路等により実現される。
【００５３】
補助記憶部１３は、ＨＤＤ、フラッシュメモリ等の記憶媒体から構成される。また、記憶部１４は、ＲＡＭ、ＨＤＤ、フラッシュメモリ等の記憶媒体から構成される。なお、処理部１２の機能をソフトウェア的に実現する場合、この補助記憶部１３には、ノード１の機能を実現するためのプログラムが記憶される。つまり、ＣＰＵが、この補助記憶部１３に記憶されるプログラムを記憶部１４上に展開し、実行することで前記した処理部１２の機能を実現する。
【００５４】
なお、以下の説明において、冗長構成システムのStandbyノードが１台である場合を例に説明するが、Standbyノードは複数台であってもよい。また、このノード１,２はＬＡＮ(Local Area Network)、インターネット等のネットワークに接続されていてもよい。さらに、このノード１には、キーボードやマウス等の入力装置、液晶ディスプレイ等の出力装置等が接続されていてもよい。
【００５５】
＜入出力部＞
入出力部１１は、前記したとおり、外部装置と各種データの入出力を司る。例えば、他のノードの状態確認（詳細は後記）、Active化完了通知、他ノードとの間でのデータ等の入出力を司る。
【００５６】
＜処理部＞
処理部１２は、システム管理部１２０と、データ管理部１２１とを備える。
【００５７】
このシステム管理部１２０は、Activeノードになるノード、Standbyノードになるノードを決定する。つまり、システム管理部１２０は、冗長構成システムにおいて、矛盾がないよう、データ管理部１２１の状態（Active状態か、Standby状態か）を管理する。なお、このシステム管理部１２０は、冗長構成システムのノードに実装される公知のミドルウェア等を用いてよい。
【００５８】
データ管理部１２１は、システム管理部１２０から起動指示を受け付けると、他のノード（ノード２）のデータ管理部２２１の状態確認を行い、自ノードが仮Active状態になるか、仮Standby状態になるかを判断する。また、システム管理部１２０からの指示に基づき自ノードのデータ管理部１２１をActive状態に遷移させたり、Standby状態に遷移させたりする。このようなデータ管理部１２１は、インタフェース部１２２と、状態制御部１２３と、データロード部１２６とを備える。なお、データ管理部１２１をActive状態にするとは、外部からのアプリケーション処理を受け付ける状態にすることであり、データ管理部１２１をStandby状態にするとは、Activeノードから送信されるジャーナルを自ノードの補助記憶部１３に反映できる状態にすることを示す。
【００５９】
インタフェース部１２２は、前記したシステム管理部１２０とデータ管理部１２１とのデータ送受信のインタフェースである。例えば、システム管理部１２０からの起動指示や、Active状態またはStandby状態への状態遷移指示（Active化指示またはStandby化指示）を受信したり、データ管理部１２１からの起動完了通知を出力したりするためのインタフェースである。
【００６０】
状態制御部１２３は、自ノードのデータ管理部１２１の状態（Active状態かStandby状態か）を制御する。この状態制御部１２３は、他ノード状態管理部１２４と自ノード状態管理部１２５とを備える。
【００６１】
他ノード状態管理部１２４は、他のノード（例えば、ノード２）に対し、この他のノードのデータ管理部（例えば、ノード２のデータ管理部２２１）の状態がActive状態か否かを問い合わせる情報を送信する。そして、その情報の応答により、データ管理部２２１がActive状態か否かを判断し、この判断結果を記憶部１４の所定領域に記憶しておく。例えば、Active状態か否かを問い合わせる情報の送信後、所定時間経過しても、ノード２からこのノード２のデータ管理部２２１の状態がActive状態である旨の応答がなかった場合、このノード２はActive状態ではないと判断する。そして、その判断結果を記憶部１４の所定領域に記憶しておく。一方、所定時間以内に、ノード２からこのノード２のデータ管理部２２１の状態がActive状態である旨の応答があれば、このノード２はActive状態であると判断する。そして、その判断結果を記憶部１４の所定領域に記憶しておく。
【００６２】
自ノード状態管理部１２５は、記憶部１４に記憶された他のノードのデータ管理部２２１の状態（Active状態か否か）や、システム管理部１２０からの状態遷移指示に基づき自ノードの状態（例えば、仮Active状態、仮Standby状態、Active状態、Standby状態等）を決定する。そして、決定した自ノードの状態を記憶部１４に記憶しておく。また、他のノード（ノード２等）側から、自ノードのデータ管理部（例えば、ノード１のデータ管理部１２１）の状態がActive状態か否かを問い合わせる情報を受信したとき、その応答をノード２へ返す。
【００６３】
データロード部１２６は、自ノードの補助記憶部１３または他のノードの補助記憶部２３から、自ノードの記憶部１４上にデータ（チェックポイント１３１,２３１とジャーナル１３２,２３２）を読み込むことで、記憶部１４上にデータベース１４０を構築する。このようなデータロード部１２６は、自ノードデータロード部１２７と、他ノードデータロード部１２８とを備える。
【００６４】
自ノードデータロード部１２７は、状態制御部１２３からの指示に基づき、自ノードの補助記憶部１３から、自ノードの記憶部１４上にデータを読み込ことで、記憶部１４上にデータベース１４０を構築する。また、他ノードデータロード部１２８は、入出力部１１,２１経由で他のノード（例えば、ノード２）の補助記憶部２３から、データを読み込む。
【００６５】
なお、前記したデータ管理部１２１の機能は、システム管理部１２０の一部に組み込むようにしてもよい。
【００６６】
＜記憶部＞
記憶部１４は、データ管理処理部１２１が構築したデータベース１４０を記憶する。また、図示を省略しているが、自ノードおよび他のノードの状態（例えば、仮Active状態、仮Standby状態、Active状態、Standby状態等）を記憶する。
【００６７】
＜補助記憶部＞
補助記憶部１３は、記憶部１４のデータベース１４０のチェックポイント１３１およびジャーナル１３２を記憶する。
【００６８】
これらの構成の詳細は、動作手順の説明の項で後記する。
【００６９】
＜動作手順＞
次に、図２を参照しつつ、図３を用いてノード１,２の動作手順を説明する。図３は、図２の各ノードの動作手順を例示したフローチャートである。ここでも代表してノード１の動作手順を説明する。
【００７０】
電源投入等により、ノード１が起動すると、データ管理部１２１のインタフェース部１２２は、システム管理部１２０から起動指示を受け付ける（Ｓ３０１）。このような起動指示を受けたデータ管理部１２１は、他のノードの状態確認を行う（Ｓ３０２）。つまり、ノード１の他ノード状態管理部１２４は、他のノード（ノード２）のデータ管理部２２１の状態がActive状態か否かを問い合わせる情報を送信し、その応答を待つ。そして、他ノード状態管理部１２４は、この応答から、ノード２のデータ管理部２２１の状態がActive状態ではないと判断したとき（Ｓ３０３でActive以外）、自ノード状態管理部１２５は自ノードを仮Active状態にすることを決定し（Ｓ３０７）、データロード部１２６に対して、自ノード（ノード１）からのデータ読み込みを指示する。そして、自ノードデータロード部１２７は、ノード１の補助記憶部１３からのデータ読み込みを開始する（Ｓ３０８）。この後、データ読み込みが完了し、自ノードの起動が完了すると、自ノード状態管理部１２５は自ノードの状態が仮Active状態になったことを記憶部１４等に記憶し、起動完了通知をインタフェース部１２２経由でシステム管理部１２０へ出力する（Ｓ３０９）。
【００７１】
一方、Ｓ３０３において、他ノード状態管理部１２４は、ノード２のデータ管理部２２１の状態をActive状態と判断したとき（Ｓ３０３でActive）、自ノード状態管理部１２５は自ノードを仮Standby状態にすることを決定し（Ｓ３０４）、データロード部１２６に対して、他ノード（ノード２）からのデータ読み込みを指示する。そして、他ノードデータロード部１２８は、入出力部１１経由でノード２の補助記憶部２３からのデータ読み込みを開始する（Ｓ３０５）。この後、ノード２の補助記憶部２３からのデータ読み込みに成功し（Ｓ３０６でＮｏ）、自ノードの起動が完了すると、自ノード状態管理部１２５は自ノードの状態が仮Standby状態になったことを記憶部１４等に記憶する。そして、起動完了通知をインタフェース部１２２経由でシステム管理部１２０へ出力する（Ｓ３０９）。
【００７２】
一方、Ｓ３０６において他ノードデータロード部１２８がノード２の補助記憶部２３からのデータ読み込みに失敗した場合（Ｓ３０６でＹｅｓ）、自ノード状態管理部１２５は、自ノードを仮Active状態にすることを決定し（Ｓ３０７）、データロード部１２６に対して、自ノード（ノード１）からのデータ読み込みを指示する。そして、自ノードデータロード部１２７は、補助記憶部１３からデータを読み込む（Ｓ３０９）。
【００７３】
このようにノード１は、他のノードの状態確認を行った上で、自ノードからデータを読み込んで仮Active状態になったり、他ノードからデータを読み込んで仮Standby状態になったりする。
【００７４】
なお、ここでは説明を省略したが、前記した処理によりデータ管理部１２１から起動完了通知を受け付けると、システム管理部１２０は自ノードをActiveノードとするか、Standbyノードとするかを決定する。すなわち、システム管理部１２０は、他のノード（ノード２）のシステム管理部２２０に、このノード２がActiveノードであるかStandbyノードであるかを確認し、その結果、他のノードがActiveノードであるとき、自ノードをStandbyノードにすると決定する。そして、状態遷移指示としてデータ管理部１２１に対し、Standby化指示を出力する。一方、他のノードがStandbyノードであるとき、または障害等が発生しているとき、システム管理部１２０は、自ノードをActiveノードにすると決定する。そして、状態遷移指示として、データ管理部１２１に対しActive化指示を出力する。
【００７５】
この後の処理を、図２を参照しつつ、図４を用いて説明する。図４は、図２の各ノードの動作手順を例示したフローチャートである。ここでも代表してノード１の動作手順を説明する。
【００７６】
まず、データ管理部１２１の状態制御部１２３は、インタフェース部１２２経由でシステム管理部１２０から状態遷移指示を受け付けると（Ｓ４０１）、この指示種別を判断する（Ｓ４０２）。ここで、指示種別がActive化指示である場合（Ｓ４０２でActive化）、データ管理部１２１は自ノード（自ノードのデータ管理部１２１）をActive化した後（Ｓ４０７）、Active化完了を示す状態遷移完了通知をシステム管理部１２０へ出力する（Ｓ４０８）。これを受けて、システム管理部１２０は自ノード全体のActive化処理（例えば、自ノードのアプリケーションモジュールのActive化）を行い、サービスを開始する。つまり、起動後、自ノードまたは他のノードからデータの読み込みをしておいたデータ管理部１２１は、システム管理部１２０からのActive化指示が出力されたとき、アプリケーション１３からのデータ検索処理等を行えるようにする。
【００７７】
一方、Ｓ４０２において、システム管理部１２０からの指示種別がStandby化指示であり（Ｓ４０２でStandby化）、かつ、自ノード状態管理部１２５が自ノードの状態（つまり、データ管理部１２１の状態）を仮Standby状態と判断したとき（Ｓ４０３で仮Standby状態）、データ管理部１２１は自ノード（自ノードのデータ管理部１２１）をStandby化した後（Ｓ４０６）、Standby化完了を示す状態遷移完了通知をシステム管理部１２０へ出力する（Ｓ４０８）。
【００７８】
また、Ｓ４０３において、自ノード状態管理部１２５が自ノードの状態（つまり、データ管理部１２１の状態）を仮Active状態と判断したとき（Ｓ４０３で仮Active状態）、データ管理部１２１は自ノードの状態をStandby化するため以下の処理を行う。すなわち、まず、自ノード状態管理部１２５は、自ノードの補助記憶部１３から読み込んだデータを破棄する（Ｓ４０４）。そして、自ノード状態管理部１２５は、他ノードデータロード部１２８へ他のノードの補助記憶部２３からのデータ読み込みを指示する。これを受けて、他ノードデータロード部１２８は、入出力部１１経由で、他のノードの補助記憶部２３からデータを読み込む（Ｓ４０５）。そして、データ読み込みを完了し、データ管理部１２１は自ノード（自ノードのデータ管理部１２１）をStandby化した後（Ｓ４０６）、Standby化完了を示す状態遷移完了通知をシステム管理部１２０へ出力する（Ｓ４０８）。このような状態遷移完了通知を受けたシステム管理部１２０は自ノード全体のStandby化処理を行う。
【００７９】
＜動作手順の例＞
次に、図２を参照しつつ、図５および図６を用いて、ノード１,２の動作手順の例を説明する。図５および図６は、図２の各ノードの動作手順を例示したフローチャートである。また、ここでは、短時間の時間差をもってノード１,２に電源が投入され、最初に起動したノード１に障害が発生し、後から起動したノード２がActiveノードになる場合を例に説明する。
【００８０】
ノード１において、インタフェース部１２２は、システム管理部１２０から起動指示を受ける（Ｓ５０１）。このような起動指示を受けると状態制御部１２３の他ノード状態管理部１２４は、ノード２のデータ管理部２２１に対し状態確認を行う（Ｓ５０２）。つまり、ノード１の他ノード状態管理部１２４は、ノード２のデータ管理部１２１の状態がActive状態か否かを問い合わせる情報を送信し、その応答を受信する（Ｓ５０３）。この段階では、ノード２はまだ起動されていないため、状態は不定である。このため、ノード１の自ノード状態管理部１２５は、自ノードを仮Active状態にすると決定し（Ｓ５０４）、自ノードデータロード部１２７に対し、自ノードからのデータ読み込みを指示する。そして、自ノードデータロード部１２７は自ノードの補助記憶部１３からのデータ読み込みを開始する（Ｓ５０５）。
【００８１】
一方、ノード２において、インタフェース部２２２は、システム管理部２２０から起動指示を受けると（Ｓ５１１）、ノード１での処理と同様に、他ノード状態管理部２２４は、ノード１のデータ管理部１２１に対し状態確認を行う（Ｓ５１２）。つまり、ノード２の他ノード状態管理部２２４は、ノード１のデータ管理部１２１の状態がActive状態か否かを問い合わせる情報を送信し、その応答を受信する（Ｓ５１３）。この段階では、ノード１はまだ完全にActiveノードにはなっていない。そのため、このノード１からの応答をもとに、ノード２の他ノード状態管理部２２４は、ノード１はActive状態ではないと判断する。そして、自ノード状態管理部２２５は、自ノードを仮Active状態にすると決定し（Ｓ５１４）、自ノードデータロード部２２７に対し、自ノードからのデータ読み込みを指示する。そして、自ノードデータロード部２２７は自ノードの補助記憶部２３からのデータ読み込みを開始する（Ｓ５１５）。
【００８２】
図６の説明に移る。通常、このような冗長構成システムにおいて先に起動を開始したノードが早く起動完了するが、先に起動を開始したノード１の起動中に何らかの障害が発生した場合、データ管理部１２１は、システム管理部１２０へ異常通知（障害が発生したこと）を出力する（図６のＳ６０１）。
【００８３】
異常検知を受信したシステム管理部１２０は、後処理を行い（Ｓ６０２）、ノード１の再起動を行う。なお、障害の状態によっては、データ管理部１２１はシステム管理部１２０へ異常通知を出力することができない場合もあるが、このような場合、システム管理部１２０の備えるプロセス管理機能や、起動監視プロセスのタイムアウトにより異常検知を行うようにしてもよい。
【００８４】
一方、ノード２の自ノードデータロード部２２７において、自ノードからのデータ読み込みが完了すると、データ管理部２２１は、インタフェース部２２２によりシステム管理部２２０へ起動完了通知を出力する（Ｓ６１１）。これを受けたシステム管理部２２０は、冗長構成システムのノードのうち、どのノードをActiveノードとするかを決定する（Ｓ６１２）。なお、ここでのActiveノードの決定は、公知の技術を用いてよいが、サービス停止時間を極力短縮するために、例えば、最初に起動完了したノードをActiveノードとして決定する。すなわち、システム管理部２２０は、他のノード（ノード１）がActiveノードかStandbyノードかの確認を行い、その結果、他のノード（ノード１）が既にActiveノードであれば、自ノード（ノード２）をStandbyノードにすると決定し、まだActiveノードでなければ、自ノード（ノード２）をActiveノードにすると決定する。ここでは、自ノード（ノード２）のシステム管理部２２０は、まだ他のノード（ノード１）がActiveノードではないので、自ノード（ノード２）をActiveノードにすると決定する。
【００８５】
このような決定をしたシステム管理部２２０は、データ管理部２２１へActive化指示を出力する（Ｓ６１３）。そして、データ管理部２２１の自ノード状態管理部２２５は、自ノード（自ノードのデータ管理部２２１）のActive化処理を実行する（Ｓ６１４）。この後、自ノード状態管理部２２５はActive化処理を完了すると、システム管理部２２０へActive化完了通知（Active化完了を示す状態遷移完了通知）を出力する（Ｓ６１５）。これを受けて、システム管理部２２０は、自ノード全体のActive化処理（例えば、自ノードのアプリケーションモジュールのActive化）を行い、サービスを開始する（Ｓ６１６）。
【００８６】
このようにすることで、冗長構成システムにおいてノード１が起動に失敗した場合でも、速やかにサービスを開始できる。なお、図示を省略しているが、ノード２のシステム管理部２２０は、自ノード全体のActive化処理を完了すると、入出力部２１経由で自ノードのActive化完了通知をノード１のシステム管理部１２０へ送信しておく。
【００８７】
一方、起動に失敗し、再起動を行ったノード１は、前記した図５のＳ５０１〜Ｓ５０３と同様に以下の処理を行う。すなわち、データ管理部１２１は、システム管理部１２０からの起動指示を受けると（Ｓ６２１）、他ノード状態管理部１２４により、ノード２のデータ管理部２２１に対し状態確認を行い（Ｓ６２２）、このデータ管理部２２１からその応答を受信する（Ｓ６２３）。
【００８８】
この段階では、ノード２のデータ管理部２２１はActive状態である。そのため、他ノード状態管理部１２４は、ノード２から、データ管理部２２１はActive状態である旨の応答を受信する。これにより、他ノード状態管理部１２４は、ノード２のデータ管理部２２１はActive状態と判断し、自ノード状態管理部１２５は、自ノードを仮Standby状態にすると決定する（Ｓ６２４）。そして、データロード部１２６に対し、ノード２からのデータ読み込みを指示し、他ノードデータロード部１２８は、ノード２の補助記憶部２３からデータを読み出す（Ｓ６２５）。
【００８９】
この後、ノード１のデータ管理部１２１は起動を完了すると、システム管理部１２０へ起動完了通知を出力する（Ｓ６２６）。このような通知を受けたノード１のシステム管理部１２０は、他のノード（ノード２）に、このノード２の状態を問い合わせ、自ノード（ノード１）をStandbyノードにすると決定する（Ｓ６２７）。そして、ノード１のシステム管理部１２０は、データ管理部１２１へStandby化指示を出力し（Ｓ６２８）、これを受けてデータ管理部１２１は、自ノード状態管理部１２５において、自ノード（自ノードのデータ管理部１２１）のStandby化処理を実行する（Ｓ６２９）。次に、自ノード状態管理部１２５は自ノード（自ノードのデータ管理部１２１）のStandby化処理を完了すると、システム管理部１２０へStandby化完了通知を出力し（Ｓ６３０）、処理を終了する。
【００９０】
このようにノード１が起動に失敗し、ノード２がActiveノードになった場合、ノード１はいったん仮Standby状態になり、その後、Standbyノードとして起動する。
【００９１】
なお、ここでは説明を省略したが、前記した処理によりActiveノードとして起動したノード２は、Standbyノードとして起動したノード１へジャーナルの送信を開始する。
【００９２】
また、前記した実施の形態において、仮Standby状態のノードがStandbyノードとして起動する場合について説明したが、Activeノードとして起動する場合もある。例えば、ノード１が仮Standby状態になった後、障害発生等によりノード２側がActive状態ではなくなった場合、これを検知したノード１は仮Standby状態からActive状態に遷移する。つまり、ノード１がActiveノードになり、サービスを開始する。
【００９３】
冗長構成システムのノード１,２が以上のような処理を行うことで、ノード１,２の起動中に障害が発生しても速やかにサービスを開始できるようになる。
【００９４】
本実施の形態に係る冗長構成システムは、コンピュータであるノード１,２が所定のプログラムを実行することで実現することができ、そのプログラムをコンピュータによる読み取り可能な記憶媒体（ＣＤ−ＲＯＭ等）に記憶して提供することも可能である。また、そのプログラムを、インターネット等のネットワークを通して提供することも可能である。
【図面の簡単な説明】
【００９５】
【図１】本実施の形態の冗長構成システムの概要を説明する図である。
【図２】図１の各ノードの構成を示したブロック図である。
【図３】図２の各ノードの動作手順を例示したフローチャートである。
【図４】図２の各ノードの動作手順を例示したフローチャートである。
【図５】図２の各ノードの動作手順を例示したフローチャートである。
【図６】図２の各ノードの動作手順を例示したフローチャートである。
【図７】従来の冗長構成システムを例示した図である。
【図８】従来技術の問題を説明するために引用した図である。
【図９】従来技術の問題を説明するために引用した図である。
【符号の説明】
【００９６】
１,２,３,４  ノード
１１,２１    入出力部
１２,２２    処理部
１３,２３    補助記憶部
１４,２４    記憶部
１２０,２２０,３２０,４２０  システム管理部
１２１,２２１,３２１,４２１  データ管理部
１２２,２２２  インタフェース部
１２３,２２３  状態制御部
１２４,２２４  他ノード状態管理部
１２５,２２５  自ノード状態管理部
１２６,２２６  データロード部
１２７,２２７  自ノードデータロード部
１２８,２２８  他ノードデータロード部
１４０,２４０  データベース
１３１,２３１  チェックポイント
１３２,２３２  ジャーナル
【図１】
2008191705.tif 000003
【図２】
2008191705.tif 000004
【図３】
2008191705.tif 000005
【図４】
2008191705.tif 000006
【図５】
2008191705.tif 000007
【図６】
2008191705.tif 000008
【図７】
2008191705.tif 000009
【図８】
2008191705.tif 000010
【図９】
2008191705.tif 000011