(57)【要約】【課題】  遠隔クラスタシステムがネットワーク障害で分断されたとき、障害発生後に双方のサーバで更新したデータを障害復旧後に双方で差異が生じないように復旧する。【解決手段】  サーバＡ２０ａは通信断絶中に自サーバで更新された差分データをサーバＢ２０ｂに送信する。サーバＢ２０ｂは受信した差分データと通信断絶中に自サーバで更新された差分データとをマージして、サーバＡ２０ａに送信する送信データと自サーバに反映させる反映データとを作成する。サーバＢ２０ｂは送信データをサーバＡ２０ａに送信し、反映データを自サーバに反映させる。サーバＡ２０ａは送信データを自サーバに反映させる。サーバＡ２０ａは復旧処理中に自サーバで更新された差分データを追加差分領域２２ａから読み出してサーバＢ２０ｂに送信し、読み出した差分データが自サーバ反映ずみデータのアップデートを含んでいる場合はアップデート分を自サーバに反映させる。【選択図】      図１
2006146299.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークに相互に接続された第１のサーバと第２のサーバとを備えた遠隔クラスタシステムの通信断絶中のデータを復旧させるスプリットブレインリカバリ方式であって、
前記第１のサーバは、通信断絶中に自サーバで更新された第１の差分データを前記第２のサーバに送信する手段と、前記第２のサーバから送信される送信データを自サーバに反映させる手段とを有し、
前記第２のサーバは、前記第１の差分データと通信断絶中に自サーバで更新された第２の差分データとをマージして前記送信データと自サーバに反映させる反映データとを作成するマージ手段と、前記送信データを前記第１のサーバに送信する手段と、前記反映データを自サーバに反映させる手段とを有することを特徴とするスプリットブレインリカバリ方式。
【請求項２】
前記第１のサーバは、復旧処理中に自サーバで更新された第３の差分データを前記第２のサーバに送信する手段を有し、
前記第２のサーバは、前記第３の差分データが前記送信データのアップデートを含んでいる場合はアップデート分を自サーバに反映させる手段を有することを特徴とする請求項１記載のスプリットブレインリカバリ方式。
【請求項３】
前記マージ手段は、データ更新命令が持つデータ記録先に基づいて前記送信データと前記反映データとを作成することを特徴とする請求項１または２記載のスプリットブレインリカバリ方式。
【請求項４】
ネットワークに相互に接続された第１のサーバと第２のサーバとを備えた遠隔クラスタシステムの通信断絶中のデータを復旧させるスプリットブレインリカバリ方法であって、
前記第１のサーバが、通信断絶中に自サーバで更新された第１の差分データを前記第２のサーバに送信するステップと、
前記第２のサーバが、前記第１の差分データと通信断絶中に自サーバで更新された第２の差分データとをマージして前記第１のサーバに送信する送信データと自サーバに反映させる反映データとを作成するステップと、
前記第２のサーバが、前記送信データを前記第１のサーバに送信するステップと、
前記第２のサーバが、前記反映データを自サーバに反映させるステップと
前記第１のサーバが、前記送信データを自サーバに反映させるステップとを有することを特徴とするスプリットブレインリカバリ方法。
【請求項５】
ネットワークを介して相手サーバと接続されて遠隔クラスタシステムを構成するサーバの通信断絶中のデータを復旧させるスプリットブレインリカバリ方式であって、
通信断絶中に自サーバで更新された第１の差分データを前記相手サーバに送信する手段と、
前記相手サーバが前記第１の差分データと通信断絶中に前記相手サーバで更新された第２の差分データとをマージして前記サーバに反映するデータとして作成した送信データを前記相手サーバから受信する手段と、
前記送信データを自サーバに反映させる手段とを有することを特徴とするスプリットブレインリカバリ方式。
【請求項６】
ネットワークを介して相手サーバと接続されて遠隔クラスタシステムを構成するサーバの通信断絶中のデータを復旧させるスプリットブレインリカバリ方式であって、
通信断絶中に前記相手サーバで更新された第１の差分データを前記相手サーバから受信する手段と、前記第１の差分データと通信断絶中に自サーバで更新された第２の差分データとをマージして前記相手サーバに反映させる送信データと自サーバに反映させる反映データとを作成する手段と、
前記送信データを前記相手サーバに送信する手段と、
前記反映データを自サーバに反映させる手段とを有することを特徴とするスプリットブレインリカバリ方式。
【請求項７】
ネットワークを介して接続されて遠隔クラスタシステムを構成する相手サーバとの通信断絶中に自サーバで更新された第１の差分データを前記相手サーバに送信する処理と、
前記相手サーバが前記第１の差分データと通信断絶中に前記相手サーバで更新された第２の差分データとをマージして前記自サーバに反映するデータとして作成した送信データを前記相手サーバから受信する処理と、
前記送信データを前記自サーバに反映させる処理とをコンピュータに実行させるためのプログラム。
【請求項８】
ネットワークを介して接続されて遠隔クラスタシステムを構成する相手サーバとの通信断絶中に前記相手サーバで更新された第１の差分データを前記相手サーバから受信する処理と、
前記第１の差分データと通信断絶中に自サーバで更新された第２の差分データとをマージして前記相手サーバに反映させる送信データと前記自サーバに反映させる反映データとを作成する処理と、
前記送信データを前記相手サーバに送信する処理と、
前記反映データを前記自サーバに反映させる処理とをコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、スプリットブレインリカバリ方式、スプリットブレインリカバリ方法およびプログラムに関し、特に、遠隔クラスタシステムがネットワーク障害などにより分断されてスプリットブレインが発生した場合に、障害復旧後にデータリカバリを行うスプリットブレインリカバリ方式、スプリットブレインリカバリ方法およびプログラムに関する。
【背景技術】
【０００２】
近年、情報処理システムにおいて、断続的な運用に対する要望が高まっており、システム停止時間を最小限にとどめるクラスタシステムへの需要拡大へとつながっている。また、機器やソフトウェアの障害のみならず、災害時においても障害を克服してシステムを運用し続ける要求が生まれてきている。このような要求に対しては物理的に異なる２点間においてサーバをクラスタリングする必要がある。この遠隔クラスタシステムでは、同一地点で構成されたクラスタシステムでは起こりえなかった問題が発生する。
【０００３】
遠隔クラスタシステムでは、ネットワークの分断により、クラスタを構成するサーバのどちらか一方にのみ接続できるクライアントが、分断されたネットワークセグメントのそれぞれにおいて存在する可能性がある。この現象をスプリットブレインという。スプリットブレインが発生した状態で一方または双方のサーバが業務を継続してデータを更新すると、システムに登録すべきデータが欠落する。従って、ネットワーク障害が復旧しても、双方のサーバのデータに差異が生じることになる。
【０００４】
特許文献１に、スプリットブレインが発生してもデータを保護するシステムが開示されている。これは、ネットワークを介して接続された複数のコンピュータがディスク装置を共有している場合に、スプリットブレインが起きてもファイルシステムの破壊を防止する技術である。この技術は、サーバがディスク装置を共有しない、シェアドナッシング構成の遠隔クラスタシステムには適用できない。
【０００５】
特許文献２に、ミラー化されたディスクの一方が停止した場合の復旧方法が開示されている。アクセスを一時停止しているディスクとは別のディスクに対するライト動作が発生したとき、別のディスクに対してデータをライトしたブロック情報を記憶する。一時停止したディスクを復旧させるとき、そのディスクに別のディスクのブロック情報に示す部分のデータをコピーする。
【０００６】
【特許文献１】特開２００１−１４２０１号公報（第３−５頁、図２）
【特許文献２】特開平１０−１３３９２６号公報（第３−４頁、図１）
【発明の開示】
【発明が解決しようとする課題】
【０００７】
上述したように、従来の遠隔クラスタシステムでは、スプリットブレインが発生するとシステムに登録すべきデータが欠落するため、ネットワーク障害が復旧しても、双方のサーバのデータに差異が生じるという問題点があった。
【０００８】
特許文献２に開示された方法を用いても、差分を単純にコピーするだけであるため、障害復旧後に差分を比較してマージすることはできないという問題点がある。
【０００９】
本発明の目的は、上述した従来の課題を解決するスプリットブレインリカバリ方式、スプリットブレインリカバリ方法およびプログラムを提供することにある。
【課題を解決するための手段】
【００１０】
本発明のスプリットブレインリカバリ方式は、ネットワークに相互に接続された第１のサーバと第２のサーバとを備えた遠隔クラスタシステムの通信断絶中のデータを復旧させるスプリットブレインリカバリ方式であって、
前記第１のサーバは、通信断絶中に自サーバで更新された第１の差分データを前記第２のサーバに送信する手段と、前記第２のサーバから送信される送信データを自サーバに反映させる手段とを有し、
前記第２のサーバは、前記第１の差分データと通信断絶中に自サーバで更新された第２の差分データとをマージして前記送信データと自サーバに反映させる反映データとを作成するマージ手段と、前記送信データを前記第１のサーバに送信する手段と、前記反映データを自サーバに反映させる手段とを有することを特徴とする。
【００１１】
本発明のスプリットブレインリカバリ方式は、前記第１のサーバは、復旧処理中に自サーバで更新された第３の差分データを前記第２のサーバに送信する手段を有し、
前記第２のサーバは、前記第３の差分データが前記送信データのアップデートを含んでいる場合はアップデート分を自サーバに反映させる手段を有することを特徴としてもよい。
【００１２】
本発明のスプリットブレインリカバリ方式は、前記マージ手段は、データ更新命令が持つデータ記録先に基づいて前記送信データと前記反映データとを作成することを特徴としてもよい。
【００１３】
本発明のスプリットブレインリカバリ方法は、ネットワークに相互に接続された第１のサーバと第２のサーバとを備えた遠隔クラスタシステムの通信断絶中のデータを復旧させるスプリットブレインリカバリ方法であって、
前記第１のサーバが、通信断絶中に自サーバで更新された第１の差分データを前記第２のサーバに送信するステップと、
前記第２のサーバが、前記第１の差分データと通信断絶中に自サーバで更新された第２の差分データとをマージして前記第１のサーバに送信する送信データと自サーバに反映させる反映データとを作成するステップと、
前記第２のサーバが、前記送信データを前記第１のサーバに送信するステップと、
前記第２のサーバが、前記反映データを自サーバに反映させるステップと
前記第１のサーバが、前記送信データを自サーバに反映させるステップとを有することを特徴とする。
【００１４】
本発明のスプリットブレインリカバリ方式は、ネットワークを介して相手サーバと接続されて遠隔クラスタシステムを構成するサーバの通信断絶中のデータを復旧させるスプリットブレインリカバリ方式であって、
通信断絶中に自サーバで更新された第１の差分データを前記相手サーバに送信する手段と、
前記相手サーバが前記第１の差分データと通信断絶中に前記相手サーバで更新された第２の差分データとをマージして前記サーバに反映するデータとして作成した送信データを前記相手サーバから受信する手段と、
前記送信データを自サーバに反映させる手段とを有することを特徴とする。
【００１５】
本発明のスプリットブレインリカバリ方式は、ネットワークを介して相手サーバと接続されて遠隔クラスタシステムを構成するサーバの通信断絶中のデータを復旧させるスプリットブレインリカバリ方式であって、
通信断絶中に前記相手サーバで更新された第１の差分データを前記相手サーバから受信する手段と、前記第１の差分データと通信断絶中に自サーバで更新された第２の差分データとをマージして前記相手サーバに反映させる送信データと自サーバに反映させる反映データとを作成する手段と、
前記送信データを前記相手サーバに送信する手段と、
前記反映データを自サーバに反映させる手段とを有することを特徴とする。
【００１６】
本発明のプログラムは、ネットワークを介して接続されて遠隔クラスタシステムを構成する相手サーバとの通信断絶中に自サーバで更新された第１の差分データを前記相手サーバに送信する処理と、
前記相手サーバが前記第１の差分データと通信断絶中に前記相手サーバで更新された第２の差分データとをマージして前記自サーバに反映するデータとして作成した送信データを前記相手サーバから受信する処理と、
前記送信データを前記自サーバに反映させる処理とをコンピュータに実行させる。
【００１７】
本発明のプログラムは、ネットワークを介して接続されて遠隔クラスタシステムを構成する相手サーバとの通信断絶中に前記相手サーバで更新された第１の差分データを前記相手サーバから受信する処理と、
前記第１の差分データと通信断絶中に自サーバで更新された第２の差分データとをマージして前記相手サーバに反映させる送信データと前記自サーバに反映させる反映データとを作成する処理と、
前記送信データを前記相手サーバに送信する処理と、
前記反映データを前記自サーバに反映させる処理とをコンピュータに実行させる。
【発明の効果】
【００１８】
本発明は、障害復旧後にデータマージ処理を行うため、双方のサーバが分断された双方のネットワークに存在するクライアントからのデータ更新要求を処理でき、かつ、データ欠落が防止できる。
【００１９】
また、それぞれのサーバにおいて差分情報として保持された更新データをセカンダリサーバにおいて処理するため、復旧処理が業務に与える影響を小さくできる。
【発明を実施するための最良の形態】
【００２０】
本発明を実施するための最良の形態について図面を参照して詳細に説明する。図１は本発明の実施の形態の全体構成を示すブロック図である。物理的に離れた２地点間に設置されたサーバＡ２０ａとサーバＢ２０ｂとがネットワークを介して接続されて遠隔クラスタシステムを構成している。ネットワークはインターネット１０であるとして説明する。
【００２１】
サーバＡ２０ａには直接またはインターネット１０を介して１台または複数台のクライアントＡ３０ａが接続されている。サーバＢ２０ｂには直接またはインターネット１０を介して１台または複数台のクライアントＢ３０ｂが接続されている。サーバＡ２０ａはデータを格納する記憶装置Ａ２１ａを内蔵または外付けで有する。サーバＢ２０ｂはデータを格納する記憶装置Ｂ２１ｂを内蔵または外付けで有する。記憶装置Ａ２１ａと記憶装置Ｂ２１ｂとはミラーリングされている。記憶装置Ａ２１ａは追加差分領域２２ａを有する。追加差分領域２２ａは、復旧処理中に更新された業務データの内容を記録する。
【００２２】
このような遠隔クラスタシステムにおいて、インターネット１０のある部分で障害が発生し、スプリットブレイン状態となったとする。つまり、サーバＡ２０ａとクライアントＡ３０ａとが存在するネットワークセグメントとサーバＢ２０ｂとクライアントＢ３０ｂとがが存在するセグメントが二分されたとする。この時、本発明では両方のサーバで業務を引き継ぐ障害復旧処理を行う。当然この状態ではお互いのセグメントでデータに矛盾が生じる。障害発生後に更新されたデータは差分情報として記録され、通信が復旧したタイミングで片方のサーバによってマージされ、それぞれのサーバに必要なデータを分配、反映させることによりシステムを復旧させる。
【００２３】
本実施の形態では、クラスタを構成するサーバに対し、「プライマリサーバ」、「セカンダリサーバ」という優先度をシステム内で定義する。以下の説明では、サーバＡ２０ａが「プライマリサーバ」であり、サーバＢ２０ｂが「セカンダリサーバ」であるとする。なお、「プライマリサーバ」と「セカンダリサーバ」とを区別しない場合、つまりサーバＡ２０ａとサーバＢ２０ｂとを区別しない場合は、サーバ２０と記述する。
【００２４】
サーバＡ２０ａは、通信断絶中に自サーバで更新された差分データをサーバＢ２０ｂに送信する機能を有する。サーバＡ２０ａは、また、サーバＢ２０ｂから送信されたデータを自サーバに反映させる機能を有する。サーバＡ２０ａは、さらに、復旧処理中に自サーバで更新された差分データを追加差分領域２２ａから読み込んでサーバＢ２０ｂに送信する機能とアップデート分を自サーバに反映させる機能とを有する。
【００２５】
サーバＢ２０ｂは、通信断絶中にサーバＡ２０ａで更新された差分データと自サーバで更新された差分データとをマージしてサーバＡ２０ａに反映させる送信データと自サーバに反映させる反映データとを作成する機能を有する。サーバＢ２０ｂは、また、作成した送信データをサーバＡ２０ａに送信する機能と、反映データを自サーバに反映させる機能とを有する。
【００２６】
次に動作について説明する。ネットワーク障害が発生し、クラスタを構成するサーバ２０がペアとなっていたサーバ２０と通信不能となった状態から、ネットワークが復旧し、データを再同期してシステムを復旧するまでに両サーバ２０（「プライマリサーバ」、「セカンダリサーバ」）にて行われる動作について説明する。
【００２７】
図２は、障害発生から障害復旧処理までの動作概要を示すフローチャートである。サーバ２０は、相手サーバとの通信が途絶えた場合（ステップＡ１）、相手サーバがダウンしたとみなしてフェイルオーバを行い、縮退状態でシステムの運用を継続する（ステップＡ２）。
【００２８】
途絶えていた相手サーバとの通信が復旧したとき（ステップＡ３）、サーバ２０は相手サーバがダウン状態からの復帰であるかどうかを判断する（ステップＡ４）。ステップＡ４で、相手サーバがダウン状態からの復帰であった場合は、サーバ２０はそのままの状態で運用を継続する。
【００２９】
ステップＡ４で、相手サーバがダウン状態からの復帰でなく、継続運用状態であった場合は、サーバ２０は自サーバが該当クラスタシステムにおいてプライマリサーバに設定されているかを判断する（ステップＡ５）。ステップＡ５で、プライマリサーバであった場合は、サーバ２０はプライマリサーバ復旧処理を行う（ステップＡ６）。ステップＡ５で、セカンダリサーバに設定されている場合は、サーバ２０はセカンダリサーバ復旧処理を行う（ステップＡ７）。
【００３０】
図３は、プライマリサーバ復旧処理の動作を示すフローチャートである。プライマリサーバであるサーバＡ２０ａは、復旧処理中に更新された業務データの内容を記録するための追加差分領域２２ａを記憶装置Ａ２１ａ内に確保する（ステップＢ１）。
【００３１】
サーバＡ２０ａは通信断絶後に自サーバにおいて更新された「差分データ」を記憶装置Ａ２１ａから読み込んでセカンダリサーバであるサーバＢ２０ｂに送信する（ステップＢ２）。
【００３２】
サーバＡ２０ａは、後述するステップＣ３でサーバＢ２０ｂにおいてマージされ、自サーバに反映させる必要のある「差分データ」をサーバＢ２０ｂから受信する（ステップＢ３）。
【００３３】
サーバＡ２０ａは、ステップＢ３で受信した「差分データ」を自サーバに反映させる（ステップＢ４）。
【００３４】
その後、サーバＡ２０ａは、ステップＢ１で確保した追加差分領域２２ａからデータを読み込み、追加差分データがあるかを判断する（ステップＢ５）。ステップＢ５で、追加差分データがあればサーバＡ２０ａはそのデータをサーバＢ２０ｂに送信する（ステップＢ６）。
【００３５】
サーバＡ２０ａは、ステップＢ５で読み込んだ追加差分データがステップＢ４で反映させた「差分データ」のアップデートを含んでいるかを判断する（ステップＢ７）。ステップＢ７でＹＥＳの場合、サーバＡ２０ａは自サーバに追加差分を再度反映させる（ステップＢ４）。
【００３６】
ステップＢ５で追加差分データがなければ、サーバＡ２０ａは追加差分領域２２ａを開放する（ステップＢ８）。 
追加差分領域２２ａを利用してステップＢ５〜Ｂ８の動作を行うことにより、通信が再開して復旧処理を行っている途中の更新データの処理を容易かつ確実に行うことができる。
【００３７】
図４は、セカンダリサーバ復旧処理の動作を示すフローチャートである。セカンダリサーバであるサーバＢ２０ｂは、クラスタシステムにおける資源を非活性化し、業務を停止する（ステップＣ１）。
【００３８】
サーバＢ２０ｂは、通信断絶後にプライマリサーバであるサーバＡ２０ａにおいて更新された「差分データ」をサーバＡ２０ａから受信する（ステップＣ２）。
【００３９】
サーバＢ２０ｂは、通信断絶後に自サーバにおいて更新された「差分データ」を記憶装置Ｂ２１ｂから読み込んで、この「差分データ」とステップＣ２で受信したデータとをマージし（ステップＣ３）、サーバＡ２０ａに送信する「送信データ」と自サーバに反映させる「反映データ」を作成する（ステップＣ４）。
【００４０】
サーバＢ２０ｂは、ステップＣ４で作成した「送信データ」をサーバＡ２０ａに送信する（ステップＣ５）。
【００４１】
サーバＢ２０ｂはさらに、ステップＣ４で作成した「反映データ」を自サーバに反映する（ステップＣ５）。
【００４２】
ステップＣ３の「差分データ」マージ処理について説明する。「差分データ」はクラスタシステム間でデータの同期を取るプログラムが受け取る「データ更新命令」単位で管理される。マージの際は「データ更新命令」の持つ「データ記録先」を比較する。具体的には、セカンダリサーバの「データ更新命令」の中に存在しない「データ記録先」を持つプライマリサーバの「データ更新命令」が存在すれば、セカンダリサーバ用の「反映データ」としてその「データ更新命令」を追加する。逆に、プライマリサーバの「データ更新命令」の中に存在しない「データ記録先」を持つセカンダリサーバの「データ更新命令」が存在すれば、プライマリサーバ用の「反映データ」としてその「データ更新命令」を追加する。同じ「データ記録先」をもつ「データ更新命令」が双方に存在する時は、「データ更新命令」が発行された時間が最新のものが、発行された時間が古い「データ更新命令」をもつサーバ側の「反映データ」に追加される。「データ記録先」に基づくことによりマージ処理を確実に行うことができる。
【００４３】
本発明の実施の形態のサーバＡ２０ａおよびサーバＢ２０ｂの動作はコンピュータ・プログラム処理により行わせることが可能である。すなわち、記録媒体に記録したプログラムをコンピュータに読み込ませるか、あるいは、ネットワークからプログラムをコンピュータに読み込ませて、実施の形態で説明した動作を実行させる。
【図面の簡単な説明】
【００４４】
【図１】本発明の実施の形態の全体構成を示すブロック図である。
【図２】障害発生から障害復旧処理までの動作概要をフローチャートである。
【図３】プライマリサーバ復旧処理の動作を示すフローチャートである。
【図４】セカンダリサーバ復旧処理の動作を示すフローチャートである。
【符号の説明】
【００４５】
１０    インターネット
２０    サーバ
２０ａ    サーバＡ
２０ｂ    サーバＢ
２１ａ    記憶装置Ａ
２１ｂ    記憶装置Ｂ
２２ａ    追加差分領域
３０ａ    クライアントＡ
３０ｂ    クライアントＢ
【図１】
2006146299.tif 000003
【図２】
2006146299.tif 000004
【図３】
2006146299.tif 000005
【図４】
2006146299.tif 000006