(57)【要約】【課題】クラスタシステムにおいて利便性の高い障害回復の技術を提供する。【解決手段】クラスタシステム１００の各ノード１１０に対応づけられた履歴記憶装置を複数設ける。各ノード１１０は、データ記憶装置１２０が正常動作中は、両方の履歴記憶装置にアクセス履歴を記録する。データ記憶装置１２０の一部に障害が発生したときには、まず、主履歴記憶装置１３０への記録は維持する一方で、副履歴記憶装置１３２への記録は停止する。次に、障害回復処理を実行する一のノードは、各ノード１１０に対応づけられた副履歴記憶装置１３２と接続し、アクセス履歴を参照して障害回復処理を実行する。この障害回復処理と並行して、各ノード１１０は障害の影響を受けないデータへのアクセスを継続して、そのアクセス履歴を主履歴記憶装置１３０に記録する。これにより、障害回復処理と正常なデータへのアクセスとを両立する。【選択図】図４
2008310591.tif 000002
【特許請求の範囲】
【請求項１】
計算機と、第１および第２の履歴記憶装置とを有する複数の計算機システムと、
前記複数の計算機システムの計算機から操作されるデータを記憶するデータ記憶装置と、を備え、
前記計算機は、
自計算機システムの前記第１および第２の履歴記憶装置に、自計算機による前記データ記憶装置へのアクセス履歴を記録する履歴記録部と、
前記複数の計算機システムの第２の履歴記憶装置のそれぞれと自計算機との接続を制御する接続制御部と、
前記データ記憶装置における障害発生時において、障害回復処理を実行する障害回復部と、
前記障害回復処理の終了後、前記第１の履歴記憶装置におけるアクセス履歴を前記第２の履歴記憶装置に反映させる履歴同期部と、
を含み、
前記データ記憶装置の一部の領域において障害が発生したとき、
各計算機の前記履歴記録部は、前記第１の履歴記憶装置へのアクセスを維持したまま前記第２の履歴記憶装置への記録を停止し、
前記複数の計算機システムのうちの一の計算機の接続制御部は、他計算機システムの前記第２の履歴記憶装置と自計算機とを接続し、
前記一の計算機の障害回復部は、前記複数の計算機システムの第２の履歴記憶装置に記録されたアクセス履歴を参照して、前記データ記憶装置の障害回復処理を実行し、
前記一の計算機による障害回復処理の実行中において、他の計算機は、前記データ記憶装置へのアクセス、および、前記第１の履歴記憶装置への前記アクセス履歴の記録を継続し、
各計算機の前記履歴同期部は、前記障害回復処理が終了した後で、自計算機システムの前記第１の履歴記憶装置から前記第２の履歴記憶装置にアクセス履歴の差分を反映することを特徴とするクラスタシステム。
【請求項２】
前記一の計算機の接続制御部は、前記第２の履歴記憶装置のそれぞれを参照先とする１以上のディレクトリを作成し、
前記障害回復部は、前記複数の計算機システムの前記第２の履歴記憶装置に記録されたアクセス履歴を特定のディレクトリから参照するために、前記１以上のディレクトリから参照されるアクセス履歴を参照する１以上のシンボリックリンクファイルを特定のディレクトリに作成し、前記シンボリックリンクファイルを参照して、前記複数の計算機システムの前記第２の履歴記憶装置に記録されたアクセス履歴を参照することを特徴とする請求項１に記載のクラスタシステム。
【請求項３】
所定のデータ記憶装置と接続される複数の計算機のうちの一つであって、
自計算機に対応づけられる第１および第２の履歴記憶装置のそれぞれに前記データ記憶装置に対するアクセス履歴を記録する履歴記録部と、
前記データ記憶装置における障害発生時において、障害回復処理を実行する障害回復部と、
前記障害回復処理の終了後、前記第１の履歴記憶装置におけるアクセス履歴を前記第２の履歴記憶装置に反映させる履歴同期部と、
前記複数の計算機にそれぞれ対応づけられる第２の履歴記憶装置と自計算機との接続を制御する接続制御部と、を備え、
前記データ記憶装置の一部の領域において障害が発生したとき、
前記履歴記録部は、前記第１の履歴記憶装置へのアクセスを維持したまま前記第２の履歴記憶装置への記録を停止し、
前記接続制御部は、前記履歴記録部による前記第２の履歴記憶装置への記録の停止後、他計算機に対応づけられている第２の履歴記憶装置と自計算機とを接続し、
前記障害回復部は、前記複数の計算機にそれぞれ対応づけられている前記第２の履歴記憶装置のアクセス履歴を参照して前記データ記憶装置の障害回復処理を実行し、
前記履歴同期部は、前記障害回復処理中における自計算機によるアクセス履歴を前記第１の履歴記憶装置から前記第２の履歴記憶装置に反映させることを特徴とする計算機。
【請求項４】
所定のデータ記憶装置と接続される複数の計算機のうちの一つにおける障害回復方法であって、
自計算機に対応づけられる第１および第２の履歴記憶装置のそれぞれに前記データ記憶装置に対するアクセス履歴を記録するステップと、
前記データ記憶装置の一部に障害が発生したとき、
前記第１の履歴記憶装置へのアクセスを維持したまま前記第２の履歴記憶装置への記録を停止するステップと、
前記第２の履歴記憶装置への記録の停止後、他計算機に対応づけられている第２の履歴記憶装置と自計算機とを接続するステップと、
前記複数の計算機にそれぞれ対応づけられている前記第２の履歴記憶装置のアクセス履歴を参照して前記データ記憶装置の障害回復処理を実行するステップと、
前記障害回復処理の終了後、前記障害回復処理中における自計算機によるアクセス履歴を前記第１の履歴記憶装置から前記第２の履歴記憶装置に反映させるステップと、
を備えることを特徴とする障害回復方法。
【請求項５】
所定のデータ記憶装置と接続される複数の計算機のうちの一つに、
自計算機に対応づけられる第１および第２の履歴記憶装置のそれぞれに前記データ記憶装置に対するアクセス履歴を記録する履歴記録機能と、
前記データ記憶装置における障害発生時において、障害回復処理を実行する障害回復機能と、
前記障害回復処理の終了後、前記第１の履歴記憶装置におけるアクセス履歴を前記第２の履歴記憶装置に反映させる履歴同期機能と、
前記複数の計算機にそれぞれ対応づけられる第２の履歴記憶装置と自計算機との接続を制御する接続制御機能と、を実現させ、
前記データ記憶装置の一部の領域において障害が発生したとき、
前記履歴記録機能は、前記第１の履歴記憶装置へのアクセスを維持したまま前記第２の履歴記憶装置への記録を停止し、
前記接続制御機能は、前記履歴記録機能による前記第２の履歴記憶装置への記録の停止後、他計算機に対応づけられている第２の履歴記憶装置と自計算機とを接続し、
前記障害回復機能は、前記複数の計算機にそれぞれ対応づけられている前記第２の履歴記憶装置のアクセス履歴を参照して前記データ記憶装置の障害回復処理を実行し、
前記履歴同期機能は、前記障害回復処理中における自計算機によるアクセス履歴を前記第１の履歴記憶装置から前記第２の履歴記憶装置に反映させることを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、障害回復処理の技術に関し、特にクラスタシステムにおける障害回復処理の技術およびそれに適用される障害回復方法に関する。
【背景技術】
【０００２】
国際商取引が盛んに行われ、また、企業間競争が激化している時代背景にあって、情報処理システムには２４時間３６５日連続の正常運転が要求されてきている。特に金融や通信等のミッションクリティカルなシステムの場合、わずかなシステムの停止がビジネスに致命的な打撃を与えることもある。
【０００３】
計算機（以下、「ノード」と呼ぶ。）において情報処理されるデータが重要なものとなり、かつ、データ量が膨大になっている現在、そのデータの保持には高い信頼性が要求される。そのため、データ記憶装置に障害が発生したときに、障害回復処理を実行してデータを復旧するために、データ操作の履歴情報が記録されるのが一般的である。
【０００４】
データ記憶装置に障害が発生した場合、データ記憶装置のバックアップファイルと、バックアップファイル作成時点から障害発生までの間のデータ操作の履歴情報とに基づき、記憶装置の障害回復処理を実行できる（例えば、特許文献１参照）。
【特許文献１】特開２００１−２８２７６２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
一方で、ミッションクリティカルなシステムにおいては、システムの可用性向上と負荷分散のために、複数のノードを設け、複数のノードが並列して稼働するシステム（以下、「クラスタシステム」と呼ぶ。）が採用されることが多い。クラスタシステムにおいては、複数のノードでデータ記憶装置を共有して、それぞれのノードがデータ操作を行う。
【０００６】
クラスタシステムのそもそもの目的は可用性の向上であるため、データ記憶装置の一部に障害が発生したときでも、その障害の影響を受けないサービスについては停止することなく継続して提供されることが望ましい。前述したように、情報処理システムの可用性に対する要求レベルは日々高まっており、短期間のサービス提供停止であっても許容されない場合もある。
【０００７】
しかし、従来の技術では、データ記憶装置に障害が発生すると、障害回復まではクラスタシステム全体のサービスが停止することが多く、ユーザの利便性を損なうことがあった。
【０００８】
本発明は、本発明者による上記着目に基づいて完成された発明であり、その主たる目的は、クラスタシステムにおける利便性の高い障害回復の技術を提供することである。
【課題を解決するための手段】
【０００９】
上記課題を解決するために、本発明のある態様のクラスタシステムは、計算機と、第１および第２の履歴記憶装置とを有する複数の計算機システムと、複数の計算機システムの計算機から操作されるデータを記憶するデータ記憶装置と、を備える。計算機は、自計算機システムの第１および第２の履歴記憶装置に、自計算機によるデータ記憶装置へのアクセス履歴を記録する履歴記録部と、複数の計算機システムの第２の履歴記憶装置のそれぞれと自計算機との接続を制御する接続制御部と、データ記憶装置における障害発生時において、障害回復処理を実行する障害回復部と、障害回復処理の終了後、第１の履歴記憶装置におけるアクセス履歴を第２の履歴記憶装置に反映させる履歴同期部と、を含む。データ記憶装置の一部の領域において障害が発生したとき、各計算機の履歴記録部は、第１の履歴記憶装置へのアクセスを維持したまま第２の履歴記憶装置への記録を停止し、複数の計算機システムのうちの一の計算機の接続制御部は、他計算機システムの第２の履歴記憶装置と自計算機とを接続し、一の計算機の障害回復部は、複数の計算機システムの第２の履歴記憶装置に記録されたアクセス履歴を参照して、データ記憶装置の障害回復処理を実行し、一の計算機による障害回復処理の実行中において、他の計算機は、データ記憶装置へのアクセス、および、第１の履歴記憶装置へのアクセス履歴の記録を継続し、各計算機の履歴同期部は、障害回復処理が終了した後で、自計算機システムの第１の履歴記憶装置から第２の履歴記憶装置にアクセス履歴の差分を反映する。
【００１０】
本明細書におけるクラスタシステムは、複数のノードが並列して、データ記憶装置に記憶されるデータを操作することにより情報処理サービスを提供する。各ノードは、同様のアプリケーションを搭載して同様のサービスを提供するものであってもよく、ＤＢＭＳ（Database Management System）ソフトウェアが動作するデータベースサーバであってもよい。アクセス履歴は、ノードによるデータ操作の履歴情報である。具体的には、データ記憶装置に対するデータの挿入、データ記憶装置により記憶されるデータに対する更新・削除等の操作内容と、その操作時刻と、その操作のトランザクション状態、例えばコミット済みであるかを示す情報等とを含む情報であってもよい。
【００１１】
また、データ記憶装置の一部の領域における障害とは、物理障害と論理障害の両方を含む。物理障害は、データ記憶装置の一部、例えばハードディスクの一部が物理的に破損した結果、データ記憶装置が記憶するデータの一部に対しノードから正常なアクセスができない状態を含む。論理障害は、ノードで動作するソフトウェアからデータ記憶装置に不正なデータが書き込まれた結果、データ記憶装置が記憶するデータの一部が論理的に破壊されて、ノードから正常なアクセスができない状態を含む。
【００１２】
この態様によると、クラスタシステムの各ノードは、データ記憶装置の一部に障害が発生し、一のノードが障害回復処理を実行する間も、第１の履歴記憶装置へのアクセス履歴の記録を継続できる。したがって、その障害の影響を受けないデータ記憶装置の領域にアクセスするサービスを継続して提供できる。
【００１３】
本発明の別の態様は、計算機である。この計算機は、所定のデータ記憶装置と接続される複数の計算機のうちの一つであって、自計算機に対応づけられる第１および第２の履歴記憶装置のそれぞれにデータ記憶装置に対するアクセス履歴を記録する履歴記録部と、データ記憶装置における障害発生時において、障害回復処理を実行する障害回復部と、障害回復処理の終了後、第１の履歴記憶装置におけるアクセス履歴を第２の履歴記憶装置に反映させる履歴同期部と、複数の計算機にそれぞれ対応づけられる第２の履歴記憶装置と自計算機との接続を制御する接続制御部と、を備える。データ記憶装置の一部の領域において障害が発生したとき、履歴記録部は、第１の履歴記憶装置へのアクセスを維持したまま第２の履歴記憶装置への記録を停止し、接続制御部は、履歴記録部による第２の履歴記憶装置への記録の停止後、他計算機に対応づけられている第２の履歴記憶装置と自計算機とを接続し、障害回復部は、複数の計算機にそれぞれ対応づけられている第２の履歴記憶装置のアクセス履歴を参照してデータ記憶装置の障害回復処理を実行し、履歴同期部は、障害回復処理中における自計算機によるアクセス履歴を第１の履歴記憶装置から第２の履歴記憶装置に反映させる。
【００１４】
本発明のさらに別の態様は、障害回復方法である。この方法は、所定のデータ記憶装置と接続される複数の計算機のうちの一つにおける障害回復方法であって、自計算機に対応づけられる第１および第２の履歴記憶装置のそれぞれにデータ記憶装置に対するアクセス履歴を記録するステップと、データ記憶装置の一部に障害が発生したとき、第１の履歴記憶装置へのアクセスを維持したまま第２の履歴記憶装置への記録を停止するステップと、第２の履歴記憶装置への記録の停止後、他計算機に対応づけられている第２の履歴記憶装置と自計算機とを接続するステップと、複数の計算機にそれぞれ対応づけられている第２の履歴記憶装置のアクセス履歴を参照してデータ記憶装置の障害回復処理を実行するステップと、障害回復処理の終了後、障害回復処理中における自計算機によるアクセス履歴を第１の履歴記憶装置から第２の履歴記憶装置に反映させるステップと、を備える。
【００１５】
なお、以上の構成要素の任意の組合せ、本発明の表現を装置、方法、システム、プログラム、プログラムを格納した記録媒体などの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【００１６】
本発明によれば、クラスタシステムにおいて利便性の高い障害回復を実現できる。
【発明を実施するための最良の形態】
【００１７】
本発明の実施形態を説明する前に、従来技術にかかるクラスタシステムの構成と、その課題を示し、あわせて本発明の実施形態の概要を説明する。図１は、従来技術にかかるクラスタシステムの構成例を示す。クラスタシステム２００は、ノード２１０で総称される第１のノード２１０ａと、第２のノード２１０ｂと、第３のノード２１０ｃと、データ記憶装置２２０と、履歴記憶装置２３０で総称される履歴記憶装置２３０ａ〜２３０ｃとを備える。各ノード２１０は、それぞれ並列してデータ記憶装置２２０のデータにアクセスしながら情報処理サービスを提供し、そのアクセス履歴を自ノードに対応する履歴記憶装置２３０に記録する。
【００１８】
データ記憶装置２２０は、各ノード２１０の情報処理においてアクセスされるデータを記憶する。この例において、データ記憶装置２２０は、Ａ情報とＢ情報とを記憶している。言い換えれば、データ記憶装置２２０には、Ａ情報を含むテーブルと、Ｂ情報を含むテーブルとが含まれると考えてもよい。
【００１９】
クラスタシステム２００では、データ記憶装置２２０は各ノード２１０から共有されるが、データ記憶装置２２０のデータにアクセスするのはノード２１０ごとであるため、アクセス履歴はノード２１０ごとに記録される。第１の履歴記憶装置２３０ａは、第１のノード２１０ａによるデータ記憶装置２２０へのアクセス履歴を記録するファイル（以下、「アクセス履歴ファイル」と呼ぶ。）「Ｌ０１−０１〜Ｌ０１−０３」を記憶している。第２のノード２１０ｂに対応づけられた履歴記憶装置２３０ｂと、第３のノード２１０ｃに対応づけられた履歴記憶装置２３０ｃについても同様に、アクセス履歴ファイル「Ｌ０２−０１〜Ｌ０２−０３」と「Ｌ０３−０１〜Ｌ０３−０３」とをそれぞれ記憶している。
【００２０】
次に、クラスタシステム２００において、データ記憶装置２２０に記憶されるデータの一部に障害が発生した場合（障害が発生したデータのことを、以下、「障害状態データ」と呼ぶ。）の回復処理について説明する。障害状態データの回復処理には、次に示す２段階の方法が一般にとられる。まず、データ記憶装置２２０に対する定期的なバックアップにおいて作成されたバックアップファイルに基づき、障害状態データの内容を過去の特定時点にまで戻す。次に、それぞれの履歴記憶装置２３０に記録されたアクセス履歴に基づき、ロールフォワードおよびロールバックを実施して、障害状態データの内容を障害が発生する直前の状態にまで回復させる。
【００２１】
したがって、データ記憶装置２２０の内容が変更される場合には、必ず履歴記憶装置２３０にそのアクセス履歴が記録される必要がある。データ記憶装置２２０が変更されたにもかかわらず、そのアクセス履歴が履歴記憶装置２３０に記録されていなければ、データ記憶装置２２０に障害が発生した際にその回復ができないからである。
【００２２】
図２は、図１のクラスタシステムにおける障害回復処理時の構成例を示す。同図では、データ記憶装置の一部に障害が発生した結果、Ａ情報が障害状態データとなり、第１のノード２１０ａがＡ情報の障害回復処理を実行する。この場合、第１のノード２１０ａは、障害回復処理のために、履歴記憶装置２３０ａに加えて履歴記憶装置２３０ｂと２３０ｃのアクセス履歴ファイルを参照する必要がある。そのため、第１のノード２１０ａは各履歴記憶装置２３０とアタッチし、一方で、第２のノード２１０ｂは履歴記憶装置２３０ｂと、また、第３のノード２１０ｃは履歴記憶装置２３０ｃとデタッチする。
【００２３】
第２および第３のノードが履歴記憶装置２３０とデタッチするのは、複数のノードが同時に同一の履歴記憶装置２３０にアタッチをすると、履歴記憶装置２３０への要求競合が発生するからである。要求競合が発生すると、各ノードのファイルシステムの整合性維持が困難となり、また、履歴記憶装置２３０が破壊される可能性がある。第２のノード２１０ｂと第３のノード２１０ｃは、履歴記憶装置２３０とデタッチする結果、データ記憶装置のＢ情報へのアクセスは可能であるにもかかわらず、アクセス履歴の記録ができないため、Ｂ情報へのアクセスも停止せざるを得ない。なお、ノードと履歴記憶装置とのアタッチおよびデタッチについての説明は後述する。
【００２４】
図３は、従来技術にかかるクラスタシステムの別の構成例を示す。クラスタシステム３００におけるノード３１０とデータ記憶装置３２０とは、前述したクラスタシステム２００におけるノード２１０とデータ記憶装置２２０と同じである。同図のクラスタシステム３００では、履歴記憶装置３３０への一元的なアクセス窓口としてＮＦＳ（Network File System）サーバ３４０が設けられている。各ノード３１０は、ＮＦＳサーバ３４０を介してアクセス履歴を記録する。これにより、例えば、データ記憶装置３２０のＡ情報が障害状態データとなり、第１のノード３１０ａが障害回復処理を実行する場合にも、各ノード３１０はデータ記憶装置３２０のＢ情報へのアクセスを継続できる。
【００２５】
つまり、第１のノード３１０ａは、ＮＦＳサーバ３４０を介して、障害回復に必要なアクセス履歴「Ｌ０１−０１〜Ｌ０１−０３」と、「Ｌ０２−０１〜Ｌ０２−０３」と、「Ｌ０３−０１〜Ｌ０３−０３」とを参照して、Ａ情報の障害回復処理を実行できる。一方で、各ノード３１０は、この障害回復処理と並列して、ＮＦＳサーバ３４０を介して、アクセス履歴を履歴記憶装置３３０に記録できるため、Ｂ情報へのアクセスを継続できる。
【００２６】
図３では、第１のノード３１０ａが障害回復処理中に、各ノード３１０が記録したアクセス履歴ファイルを、それぞれ「Ｌ０１−０４、Ｌ０１−０５」、「Ｌ０２−０４、Ｌ０２−０５」、および「Ｌ０３−０４、Ｌ０３−０５」として示している。なお、前述した「Ｌ０１−０１〜Ｌ０１−０３」と、「Ｌ０２−０１〜Ｌ０２−０３」と、「Ｌ０３−０１〜Ｌ０３−０３」とには、Ａ情報およびＢ情報へのアクセス履歴が含まれる。一方で、「Ｌ０１−０４、Ｌ０１−０５」と、「Ｌ０２−０４、Ｌ０２−０５」と、「Ｌ０３−０４、Ｌ０３−０５」とには、Ｂ情報へのアクセス履歴が含まれるが、Ａ情報へのアクセス履歴は含まれない。
【００２７】
しかし、クラスタシステム３００にも課題がある。第１の課題として、各ノード３１０とＮＦＳサーバ３４０とは、通信ネットワークにより接続されるため、アクセス履歴を記録するトラフィックが高い場合には、通信ネットワークが遅延して性能のボトルネックとなる可能性がある。データ記憶装置へのアクセスとアクセス履歴の記録とは常に同期をとる必要があるため、アクセス履歴を記録する性能が低い場合には、ノード３１０が提供するサービスの性能も低くなってしまう。１０００ＢＡＳＥ−ＳＸ等の高速な通信ネットワークであっても、高速なバスインタフェイス、例えばＵｌｔｒａ３２０  ＳＣＳＩ等には通信速度で及ばず、また、ネットワークのトラフィックが増加すれば、実効通信速度はさらに遅くなる。これを回避するためには、ネットワークの多重化などによる、広帯域のネットワークの構築に多くの費用を要する。
【００２８】
第２の課題として、ＮＦＳサーバ３４０には非常に高い可用性が求められる。クラスタシステム３００においては、履歴記憶装置３３０への一元的な窓口となるＮＦＳサーバ３４０の可用性が、即クラスタシステム３００の可用性となるためである。ＮＦＳサーバ３４０が停止すると、データ記憶装置３２０は正常動作中であっても、各ノード３１０は、データ記憶装置３２０へのアクセスを停止せざるを得ない。したがって、ＮＦＳサーバ３４０を冗長化構成とする等の手段により、ＮＦＳサーバ３４０の可用性を担保する必要がある。
【００２９】
このように、従来型のクラスタシステムにおいては、障害回復処理を実行しつつ、正常のデータへのアクセスを継続することは容易ではなかった。また、これを実現するには多大なコストを要していた。
【００３０】
本発明の実施形態では、これらの課題を解決するために次の技術を提案する。すなわち、クラスタシステムの各ノードに対応づけられた履歴記憶装置を複数設け、データ記憶装置が正常動作中は、両方の履歴記憶装置にアクセス履歴を記録する。データ記憶装置の一部に障害が発生したときには、まず、第１の履歴記憶装置へのアクセス履歴の記録は維持する一方で、第２の履歴記憶装置へのアクセス履歴の記録は停止する。次に、障害回復処理を実行する一のノードは、自ノードおよび他ノードに対応づけられた第２の履歴記憶装置のアクセス履歴を参照して障害回復処理を実行する。この障害回復処理と並行して、各ノードは障害の影響を受けないデータへのアクセスを継続して、そのアクセス履歴を第１の履歴記憶装置に記録する。これにより、障害回復処理と正常なデータへのアクセスとを両立し、利便性の高い障害回復を実現する。以下、実施形態を説明する。
【００３１】
図４は、本発明の実施形態にかかるクラスタシステムの構成例を示す。同図のクラスタシステム１００は、ノード１１０で総称される第１のノード１１０ａと、第２のノード１１０ｂと、第３のノード１１０ｃと、データ記憶装置１２０と、主履歴記憶装置１３０で総称される第１の主履歴記憶装置１３０ａと、第２の主履歴記憶装置１３０ｂと、第３の主履歴記憶装置１３０ｃと、副履歴記憶装置１３２で総称される第１の副履歴記憶装置１３２ａと、第２の副履歴記憶装置１３２ｂと、第３の副履歴記憶装置１３２ｃとを備える。なお、主履歴記憶装置１３０は、前述した第１の履歴記憶装置に相当し、副履歴記憶装置１３２は、前述した第２の履歴記憶装置に相当する。
【００３２】
各ノード１１０は、それぞれ並列してデータ記憶装置１２０にアクセスし、アクセス履歴を主履歴記憶装置１３０と副履歴記憶装置１３２とに記録する。正常時では、主履歴記憶装置１３０と副履歴記憶装置１３２とには同じ内容のアクセス履歴が記録される。
【００３３】
次にクラスタシステム１００において、データ記憶装置１２０のデータの一部に障害が発生した場合の回復処理について説明する。図５は、図４のクラスタシステムにおける障害回復処理時の構成例を示す。Ａ情報が障害状態データとなり、第１のノード１１０ａが障害回復処理を実行するとする。この場合、第２のノード１１０ｂは副履歴記憶装置１３２ｂを、第３のノード１１０ｃは副履歴記憶装置１３２ｃをそれぞれデタッチする。次に、第１のノード１１０ａは、これらの副履歴記憶装置１３２をアタッチし、それぞれの副履歴記憶装置１３２に記憶されたアクセス履歴に基づき、障害発生データであるＡ情報に対する障害回復処理を実行する。
【００３４】
第１のノード１１０ａによる障害回復処理の間も、各ノード１１０は、主履歴記憶装置１３０へのアクセス履歴の記録ができるため、Ｂ情報へのアクセスを継続できる。図５においても、図３と同様に、第１のノード３１０ａが障害回復処理中に、各ノード３１０が記録したアクセス履歴ファイルを、それぞれ「Ｌ０１−０４、Ｌ０１−０５」、「Ｌ０２−０４、Ｌ０２−０５」、「Ｌ０３−０４、Ｌ０３−０５」として示している。
【００３５】
なお、所定の障害検知システムが障害を検知することにより、障害回復処理を自動で開始してもよく、運用担当者がその障害を検知して手動で開始してもよい。前者の場合、障害検知システムは、例えば、ノード１１０のアプリケーションによるデータ記憶装置１２０へのアクセスの失敗をそのアプリケーションからの通知等により検出して、障害回復処理のためのスクリプトを実行する。後者の場合、運用担当者は、例えば、ノード１１０のアプリケーションログのトラッキングによりデータ記憶装置１２０における障害の発生を検知し、障害回復処理のための適切な準備をした上で、手動で障害回復処理のためのスクリプトを実行する。この「適切な準備」には、データ記憶装置１２０のバックアップファイルのリストアにより、障害発生データを過去の特定時点まで戻すことも含まれてよいが、この準備もスクリプトにより自動化されてもよい。
【００３６】
第１のノード１１０ａにおける障害回復処理の終了後、各ノード１１０は、主履歴記憶装置１３０に記録されたアクセス履歴と、副履歴記憶装置１３２に記録されたアクセス履歴との同期をとる。図６は、図４のクラスタシステムにおける障害回復処理後の構成例を示す。同図では、アクセス履歴ファイル「Ｌ０１−０４、Ｌ０１−０５」、「Ｌ０２−０４、Ｌ０２−０５」、および「Ｌ０３−０４、Ｌ０３−０５」を、主履歴記憶装置１３０から副履歴記憶装置１３２に反映させることで、それぞれの履歴記憶装置の同期がとられている。これにより、データ記憶装置１２０において一部障害が再度発生した場合にも、同様の障害回復処理により障害回復できる。
【００３７】
図７は、図４のノード１１０の構成例を示す機能ブロック図である。ノード１１０は、履歴記録部１０と、接続制御部１２と、障害回復部１４と、履歴同期部１６とを備える。これらの構成は、ハードウェアコンポーネントでいえば、任意のコンピュータのＣＰＵ、メモリ、メモリにロードされたプログラムなどによって実現されるが、ここではそれらの連携によって実現される機能ブロックを描いている。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは、当業者には理解されるところである。
【００３８】
履歴記録部１０は、主履歴記憶装置１３０と副履歴記憶装置１３２との両方に、データ記憶装置１２０へのアクセス履歴を記録する。データ記憶装置１２０の一部の領域において障害が発生したとき、履歴記録部１０は、主履歴記憶装置１３０へのアクセス履歴の記録は継続しつつ、副履歴記憶装置１３２へのアクセス履歴の記録を停止する。
【００３９】
接続制御部１２は、クラスタシステム１００の各ノード１１０に対応づけられた副履歴記憶装置１３２と自ノードとの接続を制御する。データ記憶装置１２０の一部の領域において障害が発生したとき、接続制御部１２は、履歴記録部１０による副履歴記憶装置１３２へのアクセス履歴の記録の停止後、他ノードに対応づけられた副履歴記憶装置１３２をアタッチする。また、自ノードがデータ記憶装置１２０の障害回復処理を実行しない場合には、接続制御部１２は、副履歴記憶装置１３２をデタッチする。
【００４０】
例えば、図５における第１のノード１１０ａは前者であり、第１のノード１１０ａの接続制御部１２は、第２の副履歴記憶装置１３２ｂおよび第３の副履歴記憶装置１３２ｃをアタッチする。一方で、図５における第２のノード１１０ｂと第３のノード１１０ｃは後者であり、これらのノードの接続制御部１２は、第２の副履歴記憶装置１３２ｂまたは第３の副履歴記憶装置１３２ｃをそれぞれデタッチする。
【００４１】
なお、自ノードが副履歴記憶装置１３２にアタッチするのは、他ノードが副履歴記憶装置１３２をデタッチした後が望ましい。この場合、図示しない通信部を介して他ノードよりデタッチを完了した旨の通知を受け付け、その後に副履歴記憶装置１３２と自ノードとをアタッチするようにしてもよい。
【００４２】
また、接続制御部１２は、自ノードが障害回復処理を終了したとき、他ノードに対応づけられた副履歴記憶装置１３２をデタッチする。なお、自ノードがデータ記憶装置１２０の障害回復処理を実行しなかった場合には、他ノードから障害回復処理の終了の通知を図示しない通信部を介して受け付けた後、自ノードに対応づけられた副履歴記憶装置１３２をアタッチする。
【００４３】
ここで、ノード１１０と副履歴記憶装置１３２とのアタッチ、デタッチについて説明する。「アタッチする」とは、ノード１１０上のアプリケーションから副履歴記憶装置１３２へのアクセスを可能にすることである。「デタッチする」とは、アタッチとは反対に、副履歴記憶装置１３２へのアクセスを不可にすることである。
【００４４】
各ノード１１０は、事前に、副履歴記憶装置１３２のそれぞれの物理ボリュームに対応するボリュームグループを設定しておく。アタッチする場合は、まず、副履歴記憶装置１３２に対応するボリュームグループをアクティベートする。次に、アクティベートしたボリュームグループをノード１１０の特定のディレクトリにマウントする。デタッチをする場合は、まず、副履歴記憶装置１３２に対応するボリュームグループをアンマウントする。次に、アンマウントしたボリュームグループを非アクティベートする。前述したように、ファイルシステムの整合性維持および記憶装置への要求競合による記憶装置の破損を防止するため、一の副履歴記憶装置１３２に対しては、一のノード１１０のみが同時にアタッチすることが望ましい。図７に戻る。
【００４５】
障害回復部１４は、データ記憶装置１２０の一部の領域において障害が発生したとき、アタッチされた副履歴記憶装置１３２に記録されたアクセス履歴を参照して、データ記憶装置１２０に対する障害回復処理を実行する。障害回復部１４が実行する障害回復処理は、通常のデータベースリカバリ手段でよい。例えば、まず、バックアップファイルにより、データ記憶装置１２０のデータを特定の過去時点の状態に戻す。次に、アクセス履歴に記録されたデータ記憶装置１２０に対する操作に基づいてロールフォワードし、コミットが完了していない操作についてはロールバックする。このようにして、障害発生データを障害発生直前の状態まで回復してもよい。
【００４６】
また、ＤＢＭＳソフトウェアや障害回復処理を実行するアプリケーションの制約として、データ記憶装置１２０に対する障害回復処理を実行する際に、アクセス履歴ファイルは１ディレクトリに存在しなければならない場合がある。一方で、複数の副履歴記憶装置１３２は、接続制御部１２により複数の異なるディレクトリにマウントされる。この場合、障害回復部１４は、複数の異なるディレクトリに存在するアクセス履歴ファイルを、特定のディレクトリからアクセスできるように、それらのアクセス履歴ファイルを参照先とするシンボリックリンクファイルを特定のディレクトリに作成する。障害回復部１４は、特定のディレクトリに作成したシンボリックリンクファイルを参照することで、副履歴記憶装置１３２に記録されたアクセス履歴を参照でき、前述したソフトウェアの制約を充足して障害回復処理を実行できる。
【００４７】
図８は、分散したアクセス履歴ファイルを特定のディレクトリに集約した状態を模式的に示す図である。履歴ディレクトリ３０で総称される履歴ディレクトリ３０ａ、３０ｂ、３０ｃは、それぞれ、第１の副履歴記憶装置１３２ａ、第２の副履歴記憶装置１３２ｂ、第３の副履歴記憶装置１３２ｃをマウントしたディレクトリを示す。障害回復部１４は、複数の履歴ディレクトリ３０に含まれるアクセス履歴ファイルを集約するための履歴集約ディレクトリ３２を作成し、それぞれのアクセス履歴ファイルを参照先とするシンボリックリンクファイルをそのディレクトリに作成する。例えば、履歴集約ディレクトリ３２の「ＳＬ−Ｌ０１−０１」は、履歴ディレクトリ３０ａのアクセス履歴ファイル「Ｌ０１−０１」を参照先とするシンボリックリンクファイルである。
【００４８】
このように、シンボリックリンクファイルを作成してアクセス履歴ファイルの集約を実現することで、分散した個々のアクセス履歴ファイルを特定のディレクトリにコピー等をすることなく参照でき、ハードディスク資源の使用量を低減する効果もある。また、コピー時間が削減されるため、障害回復処理の準備時間を短縮できる。
【００４９】
なお、アクセス履歴ファイルを集約するディレクトリには、障害回復処理を実行するノードからアクセスできる任意のディレクトリが選択可能である。図８では、シンボリックリンクファイルのみで構成されたディレクトリを例示したが、例えば、図５における副履歴記憶装置１３２ａがこのディレクトリとして選択されてもよい。この場合の障害回復処理では、アクセス履歴ファイル「Ｌ０１−０１〜Ｌ０１−０３」については実体ファイルが、他のアクセス履歴ファイルについてはシンボリックリンクファイルが用いられてもよい。図７に戻る。
【００５０】
履歴同期部１６は、障害回復部１４による障害回復処理が終了した後で、主履歴記憶装置１３０から副履歴記憶装置１３２にアクセス履歴の差分を反映することにより、それぞれの履歴記憶装置に記録されたアクセス履歴の同期をとる。例えば、図５では、第１のノード１１０ａにより障害回復処理が実行されている間に、それぞれの主履歴記憶装置１３０にアクセス履歴ファイル「Ｌ０１−０４、Ｌ０１−０５」、「Ｌ０２−０４、Ｌ０２−０５」、「Ｌ０３−０４、Ｌ０３−０５」が作成された。障害回復処理の終了後を示す図６では、履歴同期部１６により、これらのアクセス履歴ファイルが副履歴記憶装置１３２に反映されている。
【００５１】
履歴同期部１６による差分の判定には、障害回復処理で用いたアクセス履歴ファイル名またはアクセス履歴ファイルの更新日時を記憶しておき、ファイル名またはファイルの更新日時に基づき判定してもよい。また、アクセス履歴には履歴記憶装置への記録日時が含まれてもよく、履歴同期部１６はその記録日時に基づき判定してもよい。また、主履歴記憶装置１３０のアクセス履歴ファイルの内容と、副履歴記憶装置１３２のアクセス履歴ファイルの内容とを全文比較して差分を判定してもよい。
【００５２】
図９は、図４のノード１１０の動作例を示すフローチャートである。同図では、履歴記録部１０により、主履歴記憶装置１３０および副履歴記憶装置１３２にアクセス履歴を記録している状態において、データ記憶装置１２０の一部に障害が発生したときの動作例を示している。なお、同図が示すノード１１０は、障害回復処理を実行するノードであり、図５の例ではノード１１０ａに相当する。
【００５３】
まず、履歴記録部１０は、主履歴記憶装置１３０へのアクセス履歴の記録は継続したまま、副履歴記憶装置１３２へのアクセス履歴の記録を停止する（Ｓ１０）。次に、接続制御部１２は、他ノードに対応づけられている副履歴記憶装置１３２と自ノードとをアタッチする（Ｓ１２）。次に、障害回復部１４は、アタッチされた副履歴記憶装置１３２のアクセス履歴を参照してデータ記憶装置１２０の障害回復処理を実行する（Ｓ１４）。障害回復処理の終了後、接続制御部１２は、他ノードに対応づけられている副履歴記憶装置１３２と自ノードとをデタッチする（Ｓ１６）。最後に、履歴同期部１６は、障害回復処理中における自計算機によるアクセス履歴を、主履歴記憶装置１３０から副履歴記憶装置１３２に反映させることで、主履歴記憶装置１３０と副履歴記憶装置１３２とのアクセス履歴の同期をとる（Ｓ１８）。
【００５４】
図１０も、図４のノード１１０の動作例を示すフローチャートである。同図が示すノード１１０は、他ノードにより障害回復処理が実行されるノードであり、図５の例では第２のノード１１０ｂおよび第３のノード１１０ｃに相当する。Ｓ２０およびＳ２６の処理は、図９のＳ１０およびＳ１８と同じであるため、Ｓ２２とＳ２４とについて説明する。Ｓ２０の後、接続制御部１２は、副履歴記憶装置１３２と自ノードとをデタッチする（Ｓ２２）。図７では図示しない通信部を介して、他ノードから障害回復処理の終了が通知されると、接続制御部１２は、副履歴記憶装置１３２と自ノードとをアタッチする（Ｓ２４）。
【００５５】
本実施形態によれば、クラスタシステム１００の各ノード１１０は、データ記憶装置１２０の一部に障害が発生し、一のノードが障害回復処理を実行する間も、主履歴記憶装置１３０へのアクセス履歴の記録を継続できる。したがって、その障害の影響を受けないデータ記憶装置１２０の領域へのアクセスを継続でき、障害に伴うサービスの停止を最小限にすることができる。例えば、図１のクラスタシステム２００においては、少なくとも第２のノード２１０ｂおよび第３のノード２１０は、履歴記憶装置２３０とデタッチする必要があったため、サービスの継続は困難であった。本実施形態では、履歴記憶装置を冗長化し、一方の履歴記憶装置をデタッチした場合でも他方の履歴記憶装置との接続は維持することで、この課題を解決している。高可用性が要求されるミッションクリティカルなシステムにおいて、ここに開示した技術は特に有効である。
【００５６】
なお、図１のクラスタシステム２００においても、障害回復処理を実行するノード、例えば第１のノード２１０ａは、自ら障害回復処理を実行する間に、その障害の影響を受けないデータ記憶装置１２０の領域へのアクセスを継続できる。しかし、障害回復処理の負荷に加え、本来は複数のノードで分散すべきサービス提供負荷がそのノードに集中するためいずれの処理も遅延しやすい。したがって、実際にはノード２１０ａを障害回復処理に専念させる場合も多い。本実施の形態によれば、障害回復処理を実行しないノードは、サービス提供を継続できるため、サービス要求のトラヒックが高く多並列のクラスタシステムにおいて、ここに開示した技術は特に有効である。
【００５７】
また、本実施形態によれば、クラスタシステム１００の各ノード１１０は、主履歴記憶装置１３０と副履歴記憶装置１３２とに対し個別に接続され、また、高速なバスインタフェイスでの接続が可能である。したがって、図３のクラスタシステム２００での課題であった通信ネットワークの遅延による性能のボトルネックは生じにくい。
【００５８】
また、本実施形態によれば、クラスタシステム２００では必要であったＮＦＳサーバ３４０も不要である。したがって、ＮＦＳサーバ３４０がＳＰＯＦ（Single Point of Failure）となってしまうような可用性のリスクを低減でき、また、そのリスクに備えるためのコストを削減できる。
【００５９】
さらに、本実施形態によれば、データ記憶装置１２０の障害回復処理における、アクセス履歴ファイルの配置場所等に関するソフトウェアの制約に対し、シンボリックリンク等の参照オブジェクトを利用することで柔軟に対処できる。また、ハードウェア資源の効率的な利用を実現できる。
【００６０】
以上、本発明を実施の形態をもとに説明した。この実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【００６１】
本実施の形態においては、第１のノードが障害回復処理を実行するとして説明したが、第２および第３のノードが実行してもよい。また、障害回復処理を実行するノードは、ハードウェアスペック等に基づいて事前に固定的に決められていてもよく、所定の障害検知システム等により障害が検知されたときに、所定のシステムにより特定のノードが動的に選択されてもよい。動的な特定のノード選択においては、各ノードのＣＰＵ使用率等のリソース使用状況を判定し、リソース使用率または使用量が最も小さいノードが選択されてもよい。
【図面の簡単な説明】
【００６２】
【図１】従来技術にかかるクラスタシステムの構成例を示す図である。
【図２】図１のクラスタシステムにおける障害回復処理時の構成例を示す図である。
【図３】従来技術にかかるクラスタシステムの別の構成例を示す図である。
【図４】本発明の実施形態にかかるクラスタシステムの構成例を示す図である。
【図５】図４のクラスタシステムにおける障害回復処理時の構成例を示す図である。
【図６】図４のクラスタシステムにおける障害回復処理後の構成例を示す図である。
【図７】図４のノードの構成例を示す機能ブロック図である。
【図８】分散したアクセス履歴ファイルを特定のディレクトリに集約した状態を模式的に示す図である。
【図９】図４のノードの動作例を示すフローチャートである。
【図１０】図４のノードの動作例を示すフローチャートである。
【符号の説明】
【００６３】
１０  履歴記録部、１２  接続制御部、１４  障害回復部、１６  履歴同期部、３０  履歴ディレクトリ、３２  履歴集約ディレクトリ、１００  クラスタシステム、１１０  ノード、１２０  データ記憶装置、１３０  主履歴記憶装置、１３２  副履歴記憶装置、２００  クラスタシステム、２１０  ノード、２２０  データ記憶装置、２３０  履歴記憶装置、３００  クラスタシステム、３１０  ノード、３２０  データ記憶装置、３３０  履歴記憶装置。
【図１】
2008310591.tif 000003
【図２】
2008310591.tif 000004
【図３】
2008310591.tif 000005
【図４】
2008310591.tif 000006
【図５】
2008310591.tif 000007
【図６】
2008310591.tif 000008
【図７】
2008310591.tif 000009
【図８】
2008310591.tif 000010
【図９】
2008310591.tif 000011
【図１０】
2008310591.tif 000012