(57)【要約】【課題】同期化完了前でも、待機系計算機がサービスを引き継ぐことを可能とする。【解決手段】稼動系ノード１０-1のレプリケータ１０４-1は当該ノード１０-1で発生したデータ更新を待機系ノード１０-2に反映させる。レプリケータ１０４-1は、データ更新がノード１０-2に反映されたことを確認すると、待機系変更待ち情報記憶部１０６-1に記憶されている該当するデータ更新未反映ブロックを表す情報をデータ更新が反映されたデータ更新反映ブロックを表すように更新する。稼動系ノード１０-1の同期化機構１０７-1は、待機系ノード１０-2が障害から復旧した場合に、その時点の待機系変更待ち情報記憶部１０６-1に記憶されている情報によって示されるデータ更新未反映ブロックについて、例えばアクセス回数に基づいて、参照される可能性の順位付けを行い、順位のより高いブロックから順に記憶装置１０２-2の該当するデータを記憶装置１０２-1に同期化させる。【選択図】図１
2008140080.tif 000002
【特許請求の範囲】
【請求項１】
第１及び第２の計算機のいずれか１つが所定のアプリケーションの実行に関して稼動系計算機として機能すると共に、前記第１及び第２の計算機の残りが待機系計算機として機能し、前記稼動系計算機で障害が発生した場合に、当該稼動系計算機で実行されていたアプリケーションを前記待機系計算機が引き継いで実行するクラスタシステムにおいて、
前記第１及び第２の計算機の各々は、
データを記憶するデータ領域が複数のブロックに分割して管理されるデータ記憶手段と、
前記稼動系計算機として機能している状態でデータ更新が発生した前記データ記憶手段のブロックを表す情報を、当該データ更新が前記待機系計算機に反映されていないデータ更新未反映ブロックを表す情報として記憶する待機系変更待ち情報記憶手段と、
参照不可ブロックであるか或いは参照可ブロックであるかを表す情報を記憶する参照不可情報記憶手段と、
前記稼動系計算機で発生したデータ更新を前記待機系計算機に反映させるレプリケータであって、当該データ更新が前記待機系計算機に反映された場合に前記稼動系計算機の前記待機系変更待ち情報記憶手段に記憶されている該当するデータ更新未反映ブロックを表す情報をデータ更新が反映されたデータ更新反映ブロックを表すように更新するレプリケータと、
前記待機系計算機で障害が発生し、その後障害から復旧した場合に、その時点において前記稼動系計算機の前記待機系変更待ち情報記憶手段に記憶されている情報によって示されるデータ更新未反映ブロックについて、当該ブロックの過去のアクセス状況または当該ブロックの位置に基づいて、参照される可能性の順位付けを行い、順位のより高いブロックから順に、当該ブロックのデータを前記稼動系計算機の前記データ記憶手段から読み出して前記待機系計算機の前記データ記憶手段に反映させる同期化処理を実行する同期化手段であって、前記待機系計算機が障害から復旧した時点の前記稼動系計算機の前記待機系変更待ち情報記憶手段に記憶されている情報のうち、データ更新未反映ブロックを表す情報を参照不可ブロックを表す情報として、データ更新反映ブロックを表す情報を参照可ブロックを表す情報として、それぞれ前記待機系計算機の前記参照不可情報記憶手段にコピーし、前記データ更新未反映ブロックのデータが前記待機系計算機の前記データ記憶手段に反映される都度、該当する参照不可ブロックを表す情報を参照可ブロックを表すように更新する同期化手段と、
前記稼動系計算機として機能している状態で前記アプリケーションによりデータ参照が要求された場合、参照されるべきブロックが参照可であるかを前記参照不可情報記憶手段に記憶されている情報に基づいて判定し、参照不可の場合には参照可となるまで待ち合わせる入出力監視手段と
を具備することを特徴とするクラスタシステム。
【請求項２】
前記第１及び第２の計算機の各々は、前記稼動系計算機として機能している状態で発生したデータ参照またはデータ更新のブロック毎の回数をアクセス頻度情報として記憶するアクセス頻度情報記憶手段を更に具備し、
前記同期化手段は、前記アクセス頻度情報記憶手段に記憶されているアクセス頻度情報に基づいてアクセス回数の降順に前記順位付けを行う
ことを特徴とする請求項１記載のクラスタシステム。
【請求項３】
前記第１及び第２の計算機の各々は、前記稼動系計算機として機能している状態で発生したデータ参照またはデータ更新のブロック毎の最終アクセス時刻を表す最終アクセス時刻情報を記憶する最終アクセス時刻情報記憶手段を更に具備し、
前記同期化手段は、前記最終アクセス時刻情報記憶手段に記憶されている最終アクセス時刻情報に基づいて最終アクセス時刻の降順に前記順位付けを行う
ことを特徴とする請求項１記載のクラスタシステム。
【請求項４】
前記データ記憶手段の前記データ領域にはファイルシステム管理情報を含むデータが記憶され、
前記第１及び第２の計算機の各々は、前記ファイルシステム管理情報が記憶されている前記データ記憶手段の領域を示すファイルシステム情報を記憶するファイルシステム情報記憶手段を更に具備し、
前記同期化手段は、前記ファイルシステム情報記憶手段に記憶されているファイルシステム情報に基づいて、前記ファイルシステム管理情報が格納されているブロックであるか否かにより前記順位付けを行う
ことを特徴とする請求項１記載のクラスタシステム。
【請求項５】
稼動系計算機で障害が発生した場合に、当該稼動系計算機で実行されているアプリケーションを待機系計算機が引き継いで実行するクラスタシステムに適用される、前記稼動系計算機及び前記待機系計算機各々が有するブロック単位で管理されるデータ記憶手段のデータを同期化するための同期化方法において、
前記稼動系計算機で当該稼動系計算機の前記データ記憶手段に対するデータ更新が発生した場合、当該データ更新が発生したブロックを表す情報を、当該データ更新が前記待機系計算機に反映されていないデータ更新未反映ブロックを表す情報として前記稼動系計算機の待機系変更待ち情報記憶手段に格納するステップと、
前記発生したデータ更新を前記稼動系計算機により前記待機系計算機に反映させるステップと、
前記データ更新が前記待機系計算機に反映された場合、その旨を前記待機系計算機から前記稼動系計算機に通知するステップと、
前記待機系計算機からの通知を受けた前記稼動系計算機が、当該稼動系計算機の前記待機系変更待ち情報記憶手段に記憶されている該当するデータ更新未反映ブロックを表す情報をデータ更新が反映されたデータ更新反映ブロックを表すように更新するステップと、
前記待機系計算機で障害が発生し、その後障害から復旧した場合に、その時点において前記稼動系計算機の前記待機系変更待ち情報記憶手段に記憶されている情報によって示されるデータ更新未反映ブロックについて、前記稼動系計算機が、当該ブロックの過去のアクセス状況または当該ブロックの位置に基づいて、参照される可能性の順位付けを行うステップと、
前記データ更新未反映ブロックについて、順位のより高いブロックから順に当該ブロックのデータを前記稼動系計算機の前記データ記憶手段から読み出して前記待機系計算機の前記データ記憶手段に反映させる同期化処理を実行するステップと、
前記待機系計算機が障害から復旧した際に、その時点の前記稼動系計算機の前記待機系変更待ち情報記憶手段に記憶されている情報のうち、データ更新未反映ブロックを表す情報を参照不可ブロックを表す情報として、データ更新反映ブロックを表す情報を参照可ブロックを表す情報として、それぞれ前記待機系計算機の参照不可情報記憶手段にコピーするステップと、
前記データ更新未反映ブロックのデータが前記待機系計算機の前記データ記憶手段に反映される都度、前記待機系計算機の前記参照不可情報記憶手段に記憶されている該当する参照不可ブロックを表す情報を参照可ブロックを表すように前記待機系計算機が更新するステップと、
前記稼動系計算機として機能している状態で前記アプリケーションによりデータ参照が要求された場合、参照されるべきブロックが参照可であるかを前記稼動系計算機の参照不可情報記憶手段に記憶されている情報に基づいて判定するステップと、
参照不可が判定された場合には参照可となるまで前記稼動系計算機が待ち合わせるステップと
を具備することを特徴とする同期化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、稼動系計算機で障害が発生した場合に、当該稼動系計算機で開始されているサービスを待機系計算機が引き継ぐクラスタシステムに係り、特に稼動系計算機及び待機系計算機の各々がデータ記憶手段を有するクラスタシステムにおいて、当該データ記憶手段のデータを同期化するのに好適なクラスタシステム及び同期化方法に関する。
【背景技術】
【０００２】
従来から、システムの可用性を高める計算機システムとして、同一のサービスを提供可能な複数の計算機を含むクラスタシステムが知られている。この種のクラスタシステムでは、現在所定のアプリケーション（アプリケーションプログラム）の実行によりサービスを提供している計算機に障害が発生した場合、他の正常な計算機が当該所定のアプリケーションの実行を引き継ぐことによりサービスを引き継ぐ。このサービスの引き継ぎにより、サービスが使用不能になる時間を最小限にすることができる。
【０００３】
障害が発生した計算機から他の計算機がサービスを引き継ぐためには、各計算機がサービスを続行する上で必要となるデータを例えば共有デスクに共有するか、サービスを開始している計算機でデータの更新が発生した場合に、当該データをシステム内の他の計算機に複製（レプリケーション）する必要がある。
【０００４】
データをレプリケーションする方式（レプリケーション方式）の１つとして、以下に示すデータ同期化方式が知られている。データ同期化方式では、クラスタシステムを構成する全ての計算機（ノード）の各々が、自身の有するディスクに同一データを保持する。そこで、このようなデータ同期化方式は、分散共有ディスク方式と呼ばれる。
【０００５】
データ同期化方式を適用するクラスタシステムでは、サービスを開始しているノードでデータの更新が発生した場合、当該ノードからクラスタシステム内の他のノードに、当該データの更新を示す更新情報がネットワークを介して送信される。この更新情報に従い、サービスを開始しているノードでのデータ更新が、クラスタシステム内の他のノードに反映される。これにより、システム内の全てのノードが保持するデータの一致化（同期化）が図られる。このような、システム内の全てのノードが保持するデータを同期化させるデータ同期化方式は、例えば特許文献１に記載されている。
【特許文献１】特開２０００−２７６４２０（段落００２６）
【発明の開示】
【発明が解決しようとする課題】
【０００６】
クラスタシステムでは、所定のアプリケーションの実行によりサービスを提供しているノード（稼動系ノード）の障害に備えて待機しているノード（待機系ノード）が存在する。データ同期化方式（分散共有ディスク方式）を適用するクラスタシステムでは、待機系ノードが障害の発生により停止すると、その停止期間に稼動系ノードで発生するデータ更新は当該待機系ノードに反映されない。このため、待機系ノードは、障害から復帰した場合に、待機系ノードからデータを送信してもらうことにより自身が保持するデータを待機系ノードのデータに一致化させる同期化処理を行う必要がある。この同期化処理が完了するまでの間は、たとえ稼動系ノードに障害が発生しても、待機系ノードは当該待機系ノードが保持しているデータを利用できずサービスの提供に必要なアプリケーションの実行を引き継ぐ状態には至らない。
【０００７】
本発明は上記事情を考慮してなされたものでその目的は、待機系計算機の障害からの復帰時に行われる同期化処理が完了する前でも、当該待機系計算機が稼動系計算機からサービスの提供に必要なアプリケーションの実行を引き継ぐことが可能となるクラスタシステム及び同期化処理方法を提供することにある。
【課題を解決するための手段】
【０００８】
本発明の１つの観点によれば、第１及び第２の計算機のいずれか１つが所定のアプリケーションの実行に関して稼動系計算機として機能すると共に、前記第１及び第２の計算機の残りが待機系計算機として機能し、前記稼動系計算機で障害が発生した場合に、当該稼動系計算機で実行されていたアプリケーションを前記待機系計算機が引き継いで実行するクラスタシステムが提供される。このシステムの前記第１及び第２の計算機の各々は、データを記憶するデータ領域が複数のブロックに分割して管理されるデータ記憶手段と、前記稼動系計算機として機能している状態でデータ更新が発生した前記データ記憶手段のブロックを表す情報を、当該データ更新が前記待機系計算機に反映されていないデータ更新未反映ブロックを表す情報として記憶する待機系変更待ち情報記憶手段と、参照不可ブロックであるか或いは参照可ブロックであるかを表す情報を記憶する参照不可情報記憶手段と、前記稼動系計算機で発生したデータ更新を前記待機系計算機に反映させるレプリケータであって、当該データ更新が前記待機系計算機に反映された場合に前記稼動系計算機の前記待機系変更待ち情報記憶手段に記憶されている該当するデータ更新未反映ブロックを表す情報をデータ更新が反映されたデータ更新反映ブロックを表すように更新するレプリケータと、前記待機系計算機で障害が発生し、その後障害から復旧した場合に、その時点において前記稼動系計算機の前記待機系変更待ち情報記憶手段に記憶されている情報によって示されるデータ更新未反映ブロックについて、当該ブロックの過去のアクセス状況または当該ブロックの位置に基づいて、参照される可能性の順位付けを行い、順位のより高いブロックから順に、当該ブロックのデータを前記稼動系計算機の前記データ記憶手段から読み出して前記待機系計算機の前記データ記憶手段に反映させる同期化処理を実行する同期化手段であって、前記待機系計算機が障害から復旧した時点の前記稼動系計算機の前記待機系変更待ち情報記憶手段に記憶されている情報のうち、データ更新未反映ブロックを表す情報を参照不可ブロックを表す情報として、データ更新反映ブロックを表す情報を参照可ブロックを表す情報として、それぞれ前記待機系計算機の前記参照不可情報記憶手段にコピーし、前記データ更新未反映ブロックのデータが前記待機系計算機の前記データ記憶手段に反映される都度、該当する参照不可ブロックを表す情報を参照可ブロックを表すように更新する同期化手段と、前記稼動系計算機として機能している状態で前記アプリケーションによりデータ参照が要求された場合、参照されるべきブロックが参照可であるかを前記参照不可情報記憶手段に記憶されている情報に基づいて判定し、参照不可の場合には参照可となるまで待ち合わせる入出力監視手段とを具備する。
【発明の効果】
【０００９】
本発明によれば、待機系計算機で障害が発生したために、当該待機系計算機が復旧するまでの期間に稼動系計算機で発生したデータ更新が待機系計算機に反映されていない全てのブロックについて、当該待機系計算機に反映するための同期化処理が、当該待機系計算機が稼動系となった場合に参照される可能性のより高いブロックから優先的に行われる。このため待機系計算機は、同期化処理が完了する前に稼動系計算機で障害が発生した場合でも、当該稼動系計算機で実行されていたアプリケーションを速やかに引き継いで、当該アプリケーションによって発行される参照要求に対して待ち合わせる確率を低下することができる。
【発明を実施するための最良の形態】
【００１０】
以下、本発明の実施の形態につき図面を参照して説明する。  
［第１の実施形態］
図１は本発明の第１の実施形態に係るクラスタシステムの構成を示すブロック図である。このクラスタシステムは、例えば２台の計算機（ノード）１０-1及び１０-2から構成されるものとする。なお、クラスタシステムが３台以上の計算機（ノード）から構成されていても構わない。ノード１０-1及び１０-2は、ネットワークのような通信路１１によって相互接続されている。
【００１１】
図１の状態では、あるサービスを実現するアプリケーション１００の実行（あるサービスの提供）に関して、ノード１０-1が稼動系として機能し、ノード１０-2が待機系として機能しているものとする。この状態において、別のアプリケーションの実行（サービスの提供）に関して、ノード１０-2が稼動系として機能し、ノード１０-1が待機系として機能することもある。但し、以下の説明では、便宜的にノード１０-1が稼動系ノードであり、ノード１０-2が待機系ノードであるとする。なお図１では、アプリケーションの実行によるサービスの提供を受けるクライアント端末は省略されている。
【００１２】
ノード１０-1及び１０-2は、それぞれ、クラスタ管理機構１０１-1及び１０１-2を有する。クラスタ管理機構１０１-1及び１０１-2は、ノード１０-1及び１０-2の一方（１つ）が稼動系となってアプリケーション１００を実行（開始）し、他方（残り）が待機系となるように、通信路１１を介して互いに合意をとりながら動作する。つまりクラスタ管理機構１０１-1及び１０１-2は、アプリケーション１００を実行させるノード（稼動系ノード）を相互の通信により決定する。
【００１３】
ノード１０-1及び１０-2は、それぞれ、不揮発性の記憶装置、例えばディスク記憶装置１０２-1及び１０２-2を有する。ディスク記憶装置１０２-1及び１０２-2は、稼動系ノード（図１ではノード１０-1）で動作するアプリケーション１００からの要求によって参照／更新されるデータを記憶するデータ記憶手段である。ディスク記憶装置１０２-1及び１０２-2（に搭載されるディスク記憶媒体）の記憶領域（ディスク記憶領域）は、複数の一定サイズのブロックに分割して管理される。各ブロックには、連続する番号であるアドレス（ブロックアドレス）が割り当てられる。図１では、作図の都合上、ディスク記憶領域が９つのブロックに分割して管理される例が示されている。ディスク記憶装置１０２-1及び１０２-2のアドレスが同一の各ブロックは、同期化（一致化）されるように制御される。
【００１４】
ノード１０-1及び１０-2は、それぞれ、入出力監視機構１０３-1及び１０３-2と、レプリケータ１０４-1及び１０４-2と、参照頻度情報記憶部１０５-1及び１０５-2と、待機系変更待ち情報記憶部１０６-1及び１０６-2と、同期化機構１０７-1及び１０７-2と、非同期化情報記憶部１０８-1及び１０８-2と、参照不可情報記憶部１０９-1及び１０９-2とを含む。
【００１５】
入出力監視機構１０３-1は、当該入出力監視機構１０３-1を含むノード１０-1が稼動系の場合に動作する。入出力監視機構１０３-1は、アプリケーション１００がディスク記憶装置１０２-1（のディスク記憶媒体）に対してデータの参照または更新を行う必要がある場合に当該アプリケーション１００によって発行される参照要求または更新要求を監視する。入出力監視機構１０３-2は、当該入出力監視機構１０３-2を含むノード１０-2が稼動系の場合に、入出力監視機構１０３-2と同様の動作を行う。ノード１０-2が待機系である図１のシステムの状態では、入出力監視機構１０３-2は停止されている。
【００１６】
レプリケータ１０４-1及び１０４-2は、互いに通信を行い、ノード１０-1及び１０-2の一方のノード（稼動系ノード）で発生したデータ更新を、残りのノード（待機系ノード）に反映させる。
【００１７】
参照頻度情報記憶部１０５-1は、ノード１０-1が有する例えばＲＡＭ（Random Access Memory）のような揮発性メモリ内に確保される。参照頻度情報記憶部１０５-1はノード１０-1が稼動系の場合に、ディスク記憶領域のブロック毎に、そのブロックに対する過去のアクセス状況を表す情報、例えば参照（参照アクセス）が当該ノード１０-1で発生した頻度（回数）を表す参照頻度情報（アクセス頻度情報）を格納するのに用いられる。参照頻度情報記憶部１０５-2は、ノード１０-2が有する揮発性メモリ内に確保される。参照頻度情報記憶部１０５-2はノード１０-2が稼動系の場合に、参照頻度情報記憶部１０５-1と同様に用いられる。
【００１８】
待機系変更待ち情報記憶部１０６-1は、ノード１０-1が有する例えばＥＥＰＲＯＭ（Electrically Erasable and Programmable Read Only Memory）のような書き換え可能な不揮発性メモリ内に確保される。待機系変更待ち情報記憶部１０６-1はノード１０-1が稼動系の場合に、待機系ノード１０-2に対する更新要求に関する稼動系ノード１０-1の状態を表す待機系変更待ち情報を、ディスク記憶領域のブロック毎に格納するのに用いられる。本実施形態において、待機系変更待ち情報は待機系変更待ちフラグと呼ばれるフラグ情報である。待機系変更待ちフラグの示す状態には、「更新中」と「ＮＵＬＬ」の２つがある。「更新中」は、該当するブロックに関して、待機系ノード１０-2が稼動系ノード１０-1からの更新要求に従うデータ更新中であることを示す。換言するならば、「更新中」は、該当するブロックに関して、稼動系ノード１０-1が待機系ノード１０-2から更新要求に対する完了通知が返されるのを待っている状態にあること、つまり該当するブロックが、データ更新が待機系ノード１０-2に反映されていないデータ更新未反映ブロックであることを示す。「ＮＵＬＬ」は、該当するブロックに関して、稼動系ノード１０-1が待機系ノード１０-2に対して更新要求を行っていない状態にあることを示す。換言するならば、「ＮＵＬＬ」は、該当するブロックがデータ更新未反映ブロックでないことを示す。
【００１９】
ノード１０-2が稼動系の場合には、当該ノード１０-2が有する書き換え可能な不揮発性メモリ内に、待機系変更待ち情報記憶部１０６-1と同様の待機系変更待ち情報記憶部１０６-2が確保される。待機系変更待ち情報記憶部１０６-2は、待機系変更待ち情報記憶部１０６-1と同様に用いられる。
【００２０】
なお、参照頻度情報記憶部１０５-1及び１０５-2が、待機系変更待ち情報記憶部１０６-1及び１０６-2と共に、それぞれ、書き換え可能な不揮発性メモリ内に確保される構成であっても構わない。
【００２１】
同期化機構１０７-1及び１０７-2は、ノード１０-1及び１０-2のうちの待機系ノードで障害が発生し、その後当該待機系ノードが障害から復旧した場合に動作する。同期化機構１０７-1及び１０７-2は、互いに通信を行い、障害から復旧した待機系ノードのディスク記憶装置のデータを、稼動系ノードのディスク記憶装置のデータに同期化させる同期化処理を実行する。この同期化処理は、稼動系ノードでのデータ更新が待機系ノードに反映されていないブロックを対象に、待機系ノードの参照頻度情報記憶部の示す参照頻度（参照回数）が高いブロックから順に行われる。
【００２２】
非同期化情報記憶部１０８-1は、ノード１０-1が有する例えば書き換え可能な不揮発性メモリ内に確保される。非同期化情報記憶部１０８-1は、ノード１０-1が稼動系でノード１０-2が待機系の場合における同期化機構１０７-1及び１０７-2による同期化処理の開始時に、待機系変更待ち情報記憶部１０６-1に格納されている待機系変更待ち情報（待機系変更待ちフラグ）を非同期化情報として格納するのに用いられる。非同期化情報記憶部１０８-1に格納されている非同期化情報のうち、「更新中」を示す非同期化情報は、対応するブロックの同期化が必要であること（未完了であること）を表す。この「更新中」を示す非同期化情報は、対応するブロックの同期化が完了すると、同期化が不要なことを示す「ＮＵＬＬ」に更新される。非同期化情報記憶部１０８-2は、ノード１０-2が有する例えば書き換え可能な不揮発性メモリ内に確保される。非同期化情報記憶部１０８-2は、ノード１０-2が稼動系でノード１０-1が待機系の場合における同期化処理の開始時に、上述の非同期化情報記憶部１０８-1と同様に用いられる。
【００２３】
参照不可情報記憶部１０９-2は、ノード１０-2が有する例えば書き換え可能な不揮発性メモリ内に確保される。参照不可情報記憶部１０９-2は、ノード１０-1が稼動系でノード１０-2が待機系の場合における同期化処理の開始時に、待機系変更待ち情報記憶部１０６-1に格納されている待機系変更待ち情報が非同期化情報として非同期化情報記憶部１０８−１に格納（コピー）された後に、当該非同期化情報記憶部１０８-1に格納されている非同期化情報（つまり、同期化処理の開始時点に待機系変更待ち情報記憶部１０６-1に格納されている待機系変更待ち情報）を参照不可情報として格納するのに用いられる。参照不可情報記憶部１０９-2に格納されている参照不可情報のうち、「更新中」を示す参照不可情報は、対応するブロックの同期化が未完了であるために参照不可であることを表す。この「更新中」を示す参照不可情報は、対応するブロックの同期化が完了するか、或いは対応するブロックに関して稼動系ノード１０-1でのデータ更新が待機系ノード１０-2に反映された場合に、参照可を示す「ＮＵＬＬ」に更新される。参照不可情報記憶部１０９-1は、ノード１０-1が有する例えば書き換え可能な不揮発性メモリ内に確保される。参照不可情報記憶部１０９-1は、ノード１０-2が稼動系でノード１０-1が待機系の場合における同期化処理の開始時に、上述の参照不可情報記憶部１０９-2と同様に用いられる。
【００２４】
次に、図１のシステムにおける正常時（通常時）の動作について、図２のフローチャートを参照して説明する。  
まず、アプリケーション１００の実行に関して、ノード１０-1が稼動系ノードとして機能し、ノード１０-2が待機系ノードとして機能しているものとする。つまりノード１０-1において、アプリケーション１００が実行されているものとする。
【００２５】
稼動系ノード１０-1の入出力監視機構１０３-1は、アプリケーション１００がディスク記憶装置１０２-1に格納されているデータを更新または参照するために当該アプリケーション１００によって発行される要求情報を監視する（ステップＳ１）。入出力監視機構１０３-1はアプリケーション１００によって要求情報が発行されたことを検知した場合、当該要求情報の種類を判定する（ステップＳ２）。即ち入出力監視機構１０３-1は、検知された要求情報がデータ更新を要求する更新要求情報及びデータ参照を要求する参照要求情報のいずれであるかを判定する。更新要求情報は、更新領域情報と更新データとから構成される。更新領域情報は、ディスク記憶領域内の更新の対象となる範囲を指定する。本実施形態において更新領域情報は、更新の対象となる範囲の先頭ブロックのアドレス（開始アドレス）及び最終ブロックのアドレス（終了アドレス）から構成される。なお、更新領域情報が、開始アドレス及びブロック数から構成されていても構わない。一方、参照要求情報は、上記更新領域情報に相当する参照領域情報から構成される。参照領域情報は、ディスク記憶領域内の参照の対象となる範囲を指定する。
【００２６】
もし、検知された要求情報が更新要求情報である場合、入出力監視機構１０３-1は当該更新要求情報に従って、当該更新要求情報によって指定されるディスク記憶装置１０２-1内のブロックのデータを更新する（ステップＳ３）。次に入出力監視機構１０３-1は、データ更新に用いられた更新要求情報をレプリケータ１０４-1に渡すことで、稼動系ノード１０-1において更新要求（に従うデータ更新）が発生したことを通知する（ステップＳ４）。そして、入出力監視機構１０３-1はステップＳ１に戻って、アプリケーション１００によって新たに発行される要求情報を監視する。
【００２７】
稼動系ノード１０-1のレプリケータ１０４-1は、入出力監視機構１０３-1から更新要求情報を受け取ると（ステップＳ１１）、当該更新要求情報で指定されるブロックに対応して待機系変更待ち情報記憶部１０６-1に格納されている待機系変更待ち情報（待機系変更待ちフラグ）を「更新中」を示す状態に変更する（ステップＳ１２）。この「更新中」を示す状態は、更新要求情報で指定されるディスク記憶装置１０２-1内のブロックに対するデータ更新が待機系ノード１０-2のディスク記憶装置１０２-2内の該当するブロックに反映されたことが、当該ノード１０-2によってノード１０-1に通知されるまで維持される。
【００２８】
次に、稼動系ノード１０-1のレプリケータ１０４-1は、待機系ノード１０-2のレプリケータ１０４-2に更新要求情報を通信路１１を介して送信する（ステップＳ１３）。
【００２９】
待機系ノード１０-2のレプリケータ１０４-2は、稼動系ノード１０-1のレプリケータ１０４-1から送信された更新要求情報を受け取ると（ステップＳ２１）、当該更新要求情報に従ってディスク記憶装置１０２-2内の該当するブロックのデータを更新する（ステップＳ２２）。即ち待機系ノード１０-2のレプリケータ１０４-2は、稼動系ノード１０-1のディスク記憶装置１０２-2で発生したデータ更新を、待機系ノード１０-2のディスク記憶装置１０２-2に反映する。
【００３０】
すると、待機系ノード１０-2のレプリケータ１０４-2は、参照不可情報記憶部１０９-2に参照不可情報が存在し、且つ稼動系ノード１０-1でのデータ更新が反映されたディスク記憶装置１０２-1内のブロックに対応する参照不可情報が「更新中」を示しているかを判定する（ステップＳ２３，Ｓ２４）。
【００３１】
もし、参照不可情報が存在し、且つデータ更新が反映されたブロックに対応する参照不可情報が「更新中」を示しているならば、レプリケータ１０４-2は当該参照不可情報を「更新中」を示す状態から「ＮＵＬＬ」に変更する（ステップＳ２５）。そしてレプリケータ１０４-2は、稼動系ノード１０-1のレプリケータ１０４-1からの更新要求情報に対する応答として、当該レプリケータ１０４-1に通信路１１を介して更新完了を通知する（ステップＳ２６）。
【００３２】
一方、参照不可情報記憶部１０９-2に参照不可情報が存在しないか（ステップＳ２３）、存在してもデータ更新が反映されたブロックに対応する参照不可情報が「更新中」を示していないならば（ステップＳ２４）、レプリケータ１０４-2はステップＳ２５をスキップして、稼動系ノード１０-1のレプリケータ１０４-1に更新完了を通知する（ステップＳ２６）。
【００３３】
稼動系ノード１０-1のレプリケータ１０４-1は、待機系ノード１０-2のレプリケータ１０４-2から更新要求情報に対する更新完了通知を受け取ると（ステップＳ３１）、稼動系ノード１０-1でのデータ更新が待機系ノード１０-2に反映されたものと判定する。するとレプリケータ１０４-1は、レプリケータ１０４-2に更新要求情報を送信する前に変更された待機系変更待ち情報（待機系変更待ちフラグ）、即ち当該更新要求情報の指定するブロック（データが更新されたブロック）に対応して待機系変更待ち情報記憶部１０６-1に格納されている待機系変更待ち情報（待機系変更待ちフラグ）を、「更新中」を示す状態から「ＮＵＬＬ」に変更する（ステップＳ３２）。このとき、非同期化情報記憶部１０８-1に非同期化情報が存在し、且つデータが更新されたブロックに対応する非同期化情報が「更新中」を示しているならば（ステップＳ３３，Ｓ３４）、レプリケータ１０４-1は当該非同期化情報を「更新中」を示す状態から「ＮＵＬＬ」に変更する（ステップＳ３５）。
【００３４】
一方、ステップＳ１で検知された要求情報が参照要求情報である場合（ステップＳ２）、入出力監視機構１０３-1は、参照不可情報記憶部１０９-1に参照不可情報が存在し、参照要求情報の指定するディスク記憶装置１０２-1内の参照されるべきブロック（対象ブロック）に対応する参照不可情報が「更新中」を示しているかを判定する（ステップＳ５）。ここで、参照不可情報記憶部１０９-1に参照不可情報が存在する状態は、ノード１０-1が待機系として機能している状態で当該ノード１０-1に障害が発生し、その後当該ノード１０-1が障害から復旧して同期化処理が開始され、当該同期化処理が完了する前に稼動系ノードとなった場合に出現する。
【００３５】
もし、参照不可情報記憶部１０９-1に参照不可情報が存在して、参照されるべきブロックに対応する参照不可情報が「更新中」を示しているならば（ステップＳ５）、入出力監視機構１０３-1は当該ブロックは参照不可であると判定する。この場合、入出力監視機構１０３-1は、参照不可情報が存在しなくなるか、参照されるべきブロックに対応する参照不可情報が「ＮＵＬＬ」となるまで、待ち合わせる（ステップＳ６）。
【００３６】
この待ち合わせの後、入出力監視機構１０３-1は、参照されるべきブロックに対応して参照頻度情報記憶部１０５-1に格納されている参照頻度情報を１インクリメントする（ステップＳ７）。そして入出力監視機構１０３-1は、ディスク記憶装置１０２-1内の参照されるべきブロックからデータを読み出して、当該データをアプリケーション１００に返し（ステップＳ８）、ステップＳ１に戻る。
【００３７】
これに対し、参照不可情報が存在しないか、参照されるべきブロックに対応する参照不可情報が「ＮＵＬＬ」であるならば（ステップＳ５）、入出力監視機構１０３-1は、ステップＳ６をスキップして、上記ステップＳ７及びＳ８を実行する。
【００３８】
次に、待機系ノード１０-2で障害が発生し、その後当該ノード１０-2が障害から復旧した場合の動作について、図３及び図４のシステム状態を示す図、並びに図５及び図６のフローチャートを参照して説明する。
【００３９】
まず、図３に示すように、待機系ノード１０-2で障害Ｆが発生したものとする。この場合、待機系ノード１０-2は一時動作を停止する。待機系ノード１０-2が停止している期間に稼動系ノード１０-1で発生したデータ更新は、当該待機系ノード１０-2に反映されない。このため、稼動系ノード１０-1の待機系変更待ち情報記憶部１０６-1には、図３に示すように、「更新中」を示す待機系変更待ち情報（待機系変更待ちフラグ）が増加する。また、稼動系ノード１０-1でデータブロックの参照が発生した場合、当該ブロックに対応して参照頻度情報記憶部１０５-1に格納されている参照頻度情報も参照頻度（参照回数）が増加する方向に図３に示されるように更新される。
【００４０】
その後、待機系ノード１０-2が障害から復旧して動作を開始したものとする。稼動系ノード１０-1のクラスタ管理機構１０１-1は、待機系ノード１０-2が障害から復旧したことを、当該待機系ノード１０-2のクラスタ管理機構１０１-2との間の通信により検出する。するとクラスタ管理機構１０１-1及び１０１-2は、それぞれ稼動系ノード１０-1の同期化機構１０７-1及び待機系ノード１０-2の同期化機構１０７-2を起動する。
【００４１】
稼動系ノード１０-1の同期化機構１０７-1は、待機系変更待ち情報記憶部１０６-1に格納されている待機系変更待ち情報を非同期化情報として非同期化情報記憶部１０８-1にコピーする（ステップＳ４１）。ここでは、図３に示される待機系変更待ち情報記憶部１０６-1の内容が、図４に示されるように非同期化情報記憶部１０８−１にコピーされる。すると同期化機構１０７-1は、待機系変更待ち情報記憶部１０６-1に格納されている、ディスク記憶領域の全てのブロックにそれぞれ対応する待機系変更待ち情報（待機系変更待ちフラグ）をいずれも「ＮＵＬＬ」にする（ステップＳ４２）。そして同期化機構１０７-1は、コピー後の非同期化情報記憶部１０８−１の内容を待機系ノード１０-2の同期化機構１０７-2に通信路１１を介して送信する（ステップＳ４３）。
【００４２】
待機系ノード１０-2の同期化機構１０７-2は、稼動系ノード１０-1の同期化機構１０７-1から送信された非同期化情報記憶部１０８−１の内容、つまり非同期化情報を受け取る（ステップＳ５１）。この非同期化情報は、稼動系ノード１０-1でのデータ更新が待機系ノード１０-2に反映されていないブロックを指定する。つまり非同期化情報は、待機系ノード１０-2のディスク記憶装置１０２-2において、稼動系ノード１０-1のディスク記憶装置１０２-1との間で同期化されていないブロックを示す。そこで待機系ノード１０-2の同期化機構１０７-2は、稼動系ノード１０-1の同期化機構１０７-1から受け取った非同期化情報を参照不可情報として当該待機系ノード１０-2の参照不可情報記憶部１０９-2に格納する（ステップＳ５２）。このようにして、待機系ノード１０-2が復旧した際の初期動作（初期復旧処理）が終了する。図４には、ステップＳ５２が実行された後の参照不可情報記憶部１０９-2の状態が示されている。この時点では、参照不可情報記憶部１０９-2の内容は非同期化情報記憶部１０８−１の内容に一致する。
【００４３】
さて、図５のフローチャートに従う初期復旧処理が終了すると、稼動系ノード１０-1の同期化機構１０７-1及び待機系ノード１０-2の同期化機構１０７-2は、待機系ノード１０-2のディスク記憶装置１０２-2を稼動系ノード１０-1のディスク記憶装置１０２-1に同期化させる同期化処理を含む主復旧処理を実行する。この主復旧処理について、図６のフローチャートを参照して説明する。
【００４４】
まず、稼動系ノード１０-1の同期化機構１０７-1は、非同期化情報記憶部１０８−１に格納されている非同期化情報によって「更新中」が示されている全てのブロックを特定し、その特定されたブロックの集合の中から、その時点における参照頻度が最大のブロックを選択する（ステップＳ６１）。ここでは、特定された各ブロックに対応して参照頻度情報記憶部１０５-1に格納されている参照頻度情報を参照頻度の降順にソートすることにより、ブロック選択が行われる。
【００４５】
稼動系ノード１０-1の同期化機構１０７-1は、選択されたブロックのデータをディスク記憶装置１０２-1から読み出して、当該データを更新データとする更新要求情報を待機系ノード１０-2の同期化機構１０７-2に送信する（ステップＳ６２）。
【００４６】
待機系ノード１０-2の同期化機構１０７-2は、稼動系ノード１０-1の同期化機構１０７-1から送信された更新要求情報を受け取ると（ステップＳ７１）、当該更新要求情報に従ってディスク記憶装置１０２-2内の該当するブロックのデータを更新する（ステップＳ７２）。即ち待機系ノード１０-2の同期化機構１０７-2は、当該待機系ノード１０-2が障害のために停止していた期間に稼動系ノード１０-1のディスク記憶装置１０２-2で発生したデータ更新を、待機系ノード１０-2のディスク記憶装置１０２-2に反映する。
【００４７】
次に待機系ノード１０-2の同期化機構１０７-2は、更新要求情報で指定されるブロックに対応して参照不可情報記憶部１０９-2に格納されている参照不可情報を「更新中」を示す状態から「ＮＵＬＬ」に変更する（ステップＳ７３）。そして同期化機構１０７-2は、稼動系ノード１０-1の同期化機構１０７-1からの更新要求情報に対する応答として、当該同期化機構１０７-1に更新完了（つまりデータ更新が反映されたこと）を通知する（ステップＳ７４）。
【００４８】
そして待機系ノード１０-2の同期化機構１０７-2は、参照不可情報記憶部１０９-1に格納されている参照不可情報の中に、「更新中」を示す参照不可情報が含まれているかを判定する（ステップＳ７５）。もし、「更新中」を示す参照不可情報が含まれているならば、同期化機構１０７-2はステップＳ７１に戻って、稼動系ノード１０-1の同期化機構１０７-1から次の更新要求情報が送信されるのを待つ。
【００４９】
一方、稼動系ノード１０-1の同期化機構１０７-1は、待機系ノード１０-2の同期化機構１０７-2からの更新完了通知（データ更新が反映されたことの通知）を受け取ると（ステップＳ６３）、稼動系ノード１０-1でのデータ更新が待機系ノード１０-2に反映されたものと判定する。すると同期化機構１０７-1は、データ更新ブロックに対応して非同期化情報記憶部１０８−１に格納されている非同期化情報を「更新中」を示す状態から「ＮＵＬＬ」に変更する（ステップＳ６４）。
【００５０】
そして稼動系ノード１０-1の同期化機構１０７-1は、非同期化情報記憶部１０８−１に格納されている非同期化情報の中に、「更新中」を示す非同期化情報が残っているかを判定する（ステップＳ６５）。もし、「更新中」を示す非同期化情報が残っているならば、同期化機構１０７-2はステップＳ７１に戻る。
【００５１】
このようにして、稼動系ノード１０-1の同期化機構１０７-1は、非同期化情報によって「更新中」が示されている全てのブロックについて、参照頻度情報記憶部１０５-1によって示される参照頻度（参照回数）の降順に、ディスク記憶装置１０２-1から対応するデータを読み出し、その都度、当該読み出されたデータを更新データとする更新要求情報を待機系ノード１０-2の同期化機構１０７-2に送信する。待機系ノード１０-2の同期化機構１０７-2は、稼動系ノード１０-1の同期化機構１０７-1から更新要求情報が送信される都度、当該更新要求情報で指定されるディスク記憶装置１０２-2内のブロックに、ディスク記憶装置１０２-1でのデータ更新を反映する。
【００５２】
待機系ノード１０-2の同期化機構１０７-2は、データ更新が反映されたブロックに対応する参照不可情報を「ＮＵＬＬ」に変更する。稼動系ノード１０-1の同期化機構１０７-1は、反映が完了したブロックに対応する非同期化情報を「ＮＵＬＬ」に変更する。
【００５３】
上述の主復旧処理の期間でも、稼動系ノード１０-1では、アプリケーション１００から更新要求または参照要求が発行される可能性がある。稼動系ノード１０-1のレプリケータ１０４-1は、入出力監視機構１０３-1から当該ノード１０-1で更新要求が発生したことを受け取った場合（ステップＳ１１）、前述したように当該更新要求を待機系ノード１０-1のレプリケータ１０４-2に送信する（ステップＳ１３）。
【００５４】
待機系ノード１０-2のレプリケータ１０４-2は、稼動系ノード１０-1のレプリケータ１０４-1から更新要求を受け取った場合（ステップＳ２１）、稼動系ノード１０-1でのデータ更新を待機系ノード１０-2に反映する（ステップＳ２２）。そしてレプリケータ１０４-2は、更新要求で指定されるブロックに対応する参照不可情報が「更新中」である場合、当該情報を「ＮＵＬＬ」に変更する（ステップＳ２３〜Ｓ２５）。
【００５５】
一方、稼動系ノード１０-1のレプリケータ１０４-2は、待機系ノード１０-2のレプリケータ１０４-2から更新要求によって指定されるブロックに対するデータ更新が完了したことが通知されると（ステップＳ２６）、当該ブロックに対応する非同期化情報が「更新中」であるならば、当該情報を「ＮＵＬＬ」に変更する（ステップＳ３３〜Ｓ３５）。
【００５６】
さて、待機系ノード１０-1の同期化機構１０７-2は、参照不可情報記憶部１０９-1に格納されている参照不可情報の中に、「更新中」を示す参照不可情報が含まれなくなると、即ち参照不可情報記憶部１０９-1に格納されている参照不可情報が全て「ＮＵＬＬ」になると（ステップＳ７５）、同期化が完了したものと判定する。この場合、同期化機構１０７-2は、参照不可情報記憶部１０９-2から全ての参照不可情報を削除する（ステップＳ７６）。なお、参照不可情報記憶部１０９-2が不揮発性メモリ内に確保されている状態を解消しても良い。
【００５７】
一方、稼動系ノード１０-1の同期化機構１０７-1は、非同期化情報記憶部１０８−１に格納されている非同期化情報の中に、「更新中」を示す非同期化情報が含まれなくなると、即ち非同期化情報記憶部１０８−１に格納されている非同期化情報が全て「ＮＵＬＬ」になると（ステップＳ６５）、同期化が完了したものと判定する。この場合、同期化機構１０７-1は、非同期化情報記憶部１０８−１から全ての非同期化情報を削除する（ステップＳ６６）。なお、非同期化情報記憶部１０８−１が不揮発性メモリ内に確保されている状態を解消しても良い。
【００５８】
クラスタ管理機構１０１-1及び１０１-2は、それぞれ、非同期化情報及び参照不可情報が全て「ＮＵＬＬ」になった時点で、同期化機構１０７-1及び１０７-2の動作を停止させる。即ち同期化機構１０７-1及び１０７-2は、それぞれ、非同期化情報及び参照不可情報が全て「ＮＵＬＬ」になった時点で動作を停止する。
【００５９】
次に同期化機構１０７-1及び１０７-2が動作中に、稼動系ノード１０-1に障害が発生した場合の動作について、図２のフローチャートを援用しながら、図７のシステム状態を示す図を参照して説明する。
【００６０】
今、同期化機構１０７-1及び１０７-2が動作中に、稼動系ノード１０-1に障害が発生したものとする。この稼動系ノード１０-1の障害は、稼動系ノード１０-1のクラスタ管理機構１０１-1及び待機系ノード１０-2のクラスタ管理機構１０１-2との間の通信により当該クラスタ管理機構１０１-2で検出される。するとフェイルオーバ処理が発生し、稼動系ノード１０-1で実行されていたアプリケーション１００が停止されると共に、待機系ノード１０-1でアプリケーション１００が実行される。つまり、アプリケーション１００の実行が稼動系ノード１０-1から待機系ノード１０-2に引き継がれる。この結果アプリケーション１００の実行に関し、稼動系ノード１０-1は旧稼動系ノード１０-1として機能し、待機系ノード１０-2は新稼動系ノード１０-2として機能する。但し、同期化機構１０７-1及び１０７-2は同期化完了が判定されるまで動作を継続する。
【００６１】
さて、ノード１０-2が新稼動系ノード１０-2として機能している状態で、アプリケーション１００から要求情報が発行されたものとする。すると新稼動系ノード１０-2及び旧稼動系ノード１０-1では、それぞれ、ノード１０-1が稼動系でノード１０-2が待機系の場合のノード１０-1及び１０-2と同様の動作が、図２のフローチャートに従って行われる。ここでは、要求情報が参照情報であるものとする。
【００６２】
新稼動系ノード１０-2の入出力監視機構１０３-2は、アプリケーション１００からの参照情報を検知すると（ステップＳ１，Ｓ２）、当該参照要求情報の指定するディスク記憶装置１０２-1内の参照されるべきブロックに対応する参照不可情報が「更新中」を示しているかを判定する（ステップＳ５）。
【００６３】
もし、参照されるべきブロックに対応する参照不可情報が「更新中」を示しているならば、入出力監視機構１０３-1は、当該参照不可情報が「ＮＵＬＬ」となるまで待ち合わせる（ステップＳ６）。
【００６４】
この待ち合わせの後、入出力監視機構１０３-1は、参照されるべきブロックに対応して参照頻度情報記憶部１０５-1に格納されている参照頻度情報を１インクリメントする（ステップＳ７）。そして入出力監視機構１０３-1は、ディスク記憶装置１０２-1内の参照されるべきブロックからデータを読み出して、当該データをアプリケーション１００に返す（ステップＳ８）。
【００６５】
一方、参照されるべきブロックに対応する参照不可情報が「ＮＵＬＬ」であるならば（ステップＳ５）、入出力監視機構１０３-1は、ステップＳ６をスキップして、上記ステップＳ７及びＳ８を実行する。
【００６６】
本実施形態では前述したように、非同期化情報によって「更新中」が示されているブロックの集合を対象に、参照頻度の高いブロックから優先的に同期化が実行される。参照頻度が高いブロックほど再度参照される可能性が高い。このため、同期化が完了する前にフェイルオーバ処理が発生して待機系ノード１０-2が新稼動系ノード１０-2となって当該ノード１０-2で参照要求が発生しても、当該参照要求で指定される参照すべきブロックは直ちに参照可能となっている確率が高い。また、直ちに参照することはできなくても、ステップＳ６での待ち合わせ時間は短くて済む確率が高い。
【００６７】
［第２の実施形態］
図８は本発明の第２の実施形態に係るクラスタシステムの構成を示すブロック図である。図８において、図１と同様の要素には同一参照符号を付してある。図８に示すクラスタシステムの特徴は、図１のノード１０-1及び１０-2に代えてノード２０-1及び２０-2が用いられ、当該ノード２０-1及び２０-2では、参照頻度情報記憶部１０５-1及び１０５-2に代えて更新頻度情報記憶部２０５-1及び２０５-2が用いられることにある。更新頻度情報記憶部２０５-i（ｉ＝１，２）は、ノード２０-iが稼動系の場合に、ディスク記憶領域のブロック毎に、そのブロックに対するアクセス、例えば更新（更新アクセス）が当該ノード２０-iで発生する頻度（回数）を表す更新頻度情報（アクセス頻度情報）を格納するのに用いられる。
【００６８】
次に、図８のクラスタシステムの動作について、前記第１の実施形態と相違する点を中心に、図９及び図１０のフローチャートを参照して説明する。図９及び図１０において、それぞれ図２及び図６と同様のステップには同一符号を付してある。
【００６９】
まず、図８のクラスタシステムにおいて、ノード２０-1が稼動系として、ノード２０-2が待機系として、それぞれ機能しているものとする。この状態で、稼動系ノード２０-1で稼動しているアプリケーション１００から要求情報が発行されたものとする。
【００７０】
稼動系ノード２０-1の入出力監視機構１０３-2は、アプリケーション１００からの更新情報を検知すると（ステップＳ１）、当該要求情報の種類を判定する（ステップＳ２）。もし、要求情報が更新要求情報である場合、入出力監視機構１０３-1は当該更新要求情報に従って、当該更新要求情報によって指定されるディスク記憶装置１０２-1内のブロックのデータを更新する（ステップＳ３）。ここまでは、第１の実施形態と同様である。
【００７１】
次に入出力監視機構１０３-1は、第１の実施形態とは異なり、更新ブロックに対応して更新頻度情報記憶部２０５-1に格納されている更新頻度情報を１インクリメントする（ステップＳ３ａ）。そして入出力監視機構１０３-1は、データ更新に用いられた更新要求情報をレプリケータ１０４-1に渡すことで、稼動系ノード２０-1において更新要求が発生したことを通知する（ステップＳ４）。以降の動作は、第１の実施形態と同様である。
【００７２】
一方、ステップＳ１で検知された要求情報が参照要求情報である場合（ステップＳ２）、入出力監視機構１０３-1は、前記ステップＳ７（図２参照）を実行しない点を除き、前記第１の実施形態と同様に動作する。
【００７３】
次に、待機系ノード２０-2に障害が発生し、その後当該ノード２０-2が障害から復旧したものとする。この場合、稼動系ノード２０-1の同期化機構１０７-1及び待機系ノード２０-2の同期化機構１０７-2が動作して復旧処理を行う。この復旧処理は、初期復旧処理と主復旧処理とから構成される。初期復旧処理は図５のフローチャートに従って前記第１の実施形態と同一手順で行われる。一方、主復旧処理は図１０のフローチャートに従って第１の実施形態（図６のフローチャート）とは一部が異なる手順で実行される。
【００７４】
そこで、第２の実施形態における主復旧処理について、第１の実施形態と相違する部分を中心に図１０のフローチャートを参照して説明する。
【００７５】
稼動系ノード２０-1の同期化機構１０７-1は、非同期化情報記憶部１０８−１に格納されている非同期化情報によって「更新中」が示されている全てのブロックを特定し、その特定されたブロックの集合の中から、更新頻度の降順に逐次ブロックを選択する（ステップＳ６１ａ）。特定された各ブロックの更新頻度は、当該各ブロックに対応して更新頻度情報記憶部２０５-1に格納されている更新頻度情報によって示される。したがって、この更新頻度情報を更新頻度の降順にソートすることにより、更新頻度の降順にブロックを選択することができる。
【００７６】
稼動系ノード２０-1の同期化機構１０７-1は、更新頻度の降順にブロックを選択する都度（ステップＳ６１ａ）、ディスク記憶装置１０２-1から当該ブロックのデータを読み出して、当該読み出されたデータを更新データとする更新要求情報を待機系ノード２０-2の同期化機構１０７-2に送信する（ステップＳ６２）。以降の動作は、第１の実施形態と同様である。
【００７７】
このように第２の実施形態においては、非同期化情報記憶部１０８−１に格納されている非同期化情報によって「更新中」が示されているブロックについて、更新頻度情報記憶部２０５-1に格納されている更新頻度情報によって示される更新頻度の降順に同期化処理が実行される。即ち本実施形態においては、更新頻度情報記憶部２０５-1によりディスク記憶領域のブロック毎に更新頻度（アクセス頻度）を管理して、当該更新頻度がより高いブロックから優先的に同期化が行われる。更新頻度が高いブロックほど参照される可能性が高い。
【００７８】
このため、待機系ノード２０-2での同期化処理（復旧処理）の期間に稼動系ノード２０-1に障害が発生し、当該待機系ノード２０-2が新稼動系ノード２０-2になって参照要求を処理する場合でも、第１の実施形態と同様に、待ち合わせする確率を減らすことができる。
【００７９】
［第３の実施形態］
図１１は本発明の第３の実施形態に係るクラスタシステムの構成を示すブロック図である。図１１において、図１と同様の要素には同一参照符号を付してある。図１１に示すクラスタシステムの特徴は、図１のノード１０-1及び１０-2に代えてノード３０-1及び３０-2が用いられ、当該ノード３０-1及び３０-2では、参照頻度情報記憶部１０５-1及び１０５-2に代えて最終アクセス時刻情報記憶部３０５-1及び３０５-2が用いられることにある。最終アクセス時刻情報記憶部３０５-i（ｉ＝１，２）は、ノード３０-iが稼動系の場合に、ディスク記憶領域のブロック毎に、そのブロックが最も最近にアクセスされた時刻（最終アクセス時刻）を表す最終アクセス時刻情報を格納するのに用いられる。
【００８０】
次に、図１１のクラスタシステムの動作について、前記第１の実施形態と相違する点を中心に、図１２及び図１３のフローチャートを参照して説明する。図１２及び図１３において、それぞれ図２及び図６と同様のステップには同一符号を付してある。
【００８１】
まず、図８のクラスタシステムにおいて、ノード３０-1が稼動系として、ノード３０-2が待機系として、それぞれ機能しているものとする。この状態で、稼動系ノード３０-1で稼動しているアプリケーション１００から要求情報が発行されたものとする。
【００８２】
稼動系ノード３０-1の入出力監視機構１０３-2は、アプリケーション１００からの更新情報を検知すると（ステップＳ１）、当該要求情報の種類を判定する（ステップＳ２）。もし、要求情報が更新要求情報である場合、入出力監視機構１０３-1は当該更新要求情報に従って、当該更新要求情報によって指定されるディスク記憶装置１０２-1内のブロックのデータを更新する（ステップＳ３）。ここまでは、第１の実施形態と同様である。
【００８３】
次に入出力監視機構１０３-1は、第１の実施形態とは異なり、更新ブロックに対応して最終アクセス時刻情報記憶部３０５-1に格納されている最終アクセス時刻情報を現在時刻を示すように更新する（ステップＳ３ｂ）。そして入出力監視機構１０３-1は、データ更新に用いられた更新要求情報をレプリケータ１０４-1に渡すことで、稼動系ノード２０-1において更新要求が発生したことを通知する（ステップＳ４）。以降の動作は、第１の実施形態と同様である。
【００８４】
一方、ステップＳ１で検知された要求情報が参照要求情報である場合（ステップＳ２）、入出力監視機構１０３-1は第１の実施形態と同様に、参照不可情報記憶部１０９-1に参照不可情報が存在し、参照要求情報の指定するディスク記憶装置１０２-1内の参照されるべきブロック（対象ブロック）に対応する参照不可情報が「更新中」を示しているかを判定する（ステップＳ５）。
【００８５】
もし、参照不可情報記憶部１０９-1に参照不可情報が存在して、参照されるべきブロックに対応する参照不可情報が「更新中」を示しているならば（ステップＳ５）、入出力監視機構１０３-1は、参照不可情報が存在しなくなるか、参照されるべきブロックに対応する参照不可情報が「ＮＵＬＬ」となるまで、待ち合わせる（ステップＳ６）。
【００８６】
この待ち合わせの後、入出力監視機構１０３-1は、参照されるべきブロックに対応して最終アクセス時刻情報記憶部３０５-1に格納されている最終アクセス時刻情報を現在時刻を示すように更新する（ステップＳ７ａ）。また、参照不可情報が存在しないか、参照されるべきブロックに対応する参照不可情報が「ＮＵＬＬ」であるならば（ステップＳ５）、入出力監視機構１０３-1は、ステップＳ６をスキップして、上記ステップＳ７ａを実行する。
【００８７】
入出力監視機構１０３-1はステップＳ７ａを実行すると、ディスク記憶装置１０２-1内の参照されるべきブロックからデータを読み出して、当該データをアプリケーション１００に返し（ステップＳ８）、ステップＳ１に戻る。
【００８８】
次に、待機系ノード３０-2に障害が発生し、その後当該ノード３０-2が障害から復旧したものとする。この場合、稼動系ノード３０-1の同期化機構１０７-1及び待機系ノード３０-2の同期化機構１０７-2が動作して復旧処理を行う。この復旧処理は、初期復旧処理と主復旧処理とから構成される。初期復旧処理は図５のフローチャートに従って前記第１の実施形態と同一手順で行われる。一方、主復旧処理は図１３のフローチャートに従って第１の実施形態（図６のフローチャート）とは一部が異なる手順で実行される。
【００８９】
そこで、第３の実施形態における主復旧処理について、第１の実施形態と相違する部分を中心に図１３のフローチャートを参照して説明する。
【００９０】
稼動系ノード３０-1の同期化機構１０７-1は、非同期化情報記憶部１０８−１に格納されている非同期化情報によって「更新中」が示されている全てのブロックを特定し、その特定されたブロックの集合の中から、最終アクセス時刻の降順に逐次ブロックを選択する（ステップＳ６１ａ）。特定された各ブロックの最終アクセス時刻は、当該各ブロックに対応して最終アクセス時刻情報記憶部３０５-1に格納されている最終アクセス時刻情報によって示される。したがって、この最終アクセス時刻情報をアクセス時刻の降順にソートすることにより、最終アクセス時刻の降順にブロックを選択することができる。
【００９１】
稼動系ノード３０-1の同期化機構１０７-1は、更新頻度の降順にブロックを選択する都度（ステップＳ６１ｂ）、ディスク記憶装置１０２-1から当該ブロックのデータを読み出して、当該読み出されたデータを更新データとする更新要求情報を待機系ノード３０-2の同期化機構１０７-2に送信する（ステップＳ６２）。以降の動作は、第１の実施形態と同様である。
【００９２】
このように第３の実施形態においては、非同期化情報記憶部１０８−１に格納されている非同期化情報によって「更新中」が示されているブロックについて、最終アクセス時刻情報記憶部３０５-1に格納されている最終アクセス時刻情報によって示される最終アクセス時刻の降順に同期化処理が実行される。即ち本実施形態においては、最終アクセス時刻情報記憶部３０５-1によりディスク記憶領域のブロック毎に最終アクセス時刻を管理して、より最近にアクセスされたブロックから優先的に同期化が行われる。例えばスケジュールシステムでは、最新のスケジュールデータ（最近にアクセスされたスケジュールデータ）は、古いスケジュールデータよりも参照される可能性が高い。
【００９３】
このため、待機系ノード３０-2での同期化処理（復旧処理）の期間に稼動系ノード３０-1に障害が発生し、当該待機系ノード３０-2が新稼動系ノード３０-2になって参照要求を処理する場合でも、第１の実施形態と同様に、待ち合わせする確率を減らすことができる。
【００９４】
なお、特定されたブロックの集合から最終アクセス時刻情報に基づいて順次ブロックを選択する際に、該当するブロックを含む一定の範囲に属するブロックを一括して選択しても構わない。その理由は、最近にアクセスされたブロックの近傍のブロックもアクセスされる確率が高いためである。
【００９５】
［第４の実施形態］
図１４は本発明の第４の実施形態に係るクラスタシステムの構成を示すブロック図である。図１４において、図１と同様の要素には同一参照符号を付してある。図１４に示すクラスタシステムの特徴は、図１のノード１０-1及び１０-2に代えてノード４０-1及び４０-2が用いられ、当該ノード４０-1及び４０-2では、参照頻度情報記憶部１０５-1及び１０５-2に代えてファイルシステム情報記憶部４０５-1及び４０５-2が用いられることにある。ファイルシステム情報記憶部４０５-i（ｉ＝１，２）は、ノード４０-iが稼動系の場合に、ファイルシステムの管理情報を記憶しているディスク記憶領域内のブロック（ファイルシステム管理ブロック）の情報（ファイルシステム情報）を格納するのに用いられる。図１４の例では、ファイルシステム情報記憶部４０５-1にファイルシステム情報（ファイルシステム管理領域情報）が格納されている。このファイルシステム情報は、ディスク記憶領域内の第１乃至第３ブロックにファイルシステムの管理情報が記憶されていること（つまり、第１乃至第３ブロックがファイルシステム管理ブロックであること）を示している。
【００９６】
次に、図１４のクラスタシステムの動作について、前記第１の実施形態と相違する点を中心に、図１５及び図１６のフローチャートを参照して説明する。図１５及び図１６において、それぞれ図２及び図６と同様のステップには同一符号を付してある。
【００９７】
まず、図１４のクラスタシステムにおいて、ノード４０-1が稼動系として、ノード４０-2が待機系として、それぞれ機能しているものとする。この状態で、稼動系ノード４０-1で稼動しているアプリケーション１００から要求情報が発行されたものとする。
【００９８】
稼動系ノード３０-1の入出力監視機構１０３-2は、アプリケーション１００からの更新情報を検知すると（ステップＳ１）、当該要求情報の種類を判定する（ステップＳ２）。もし、要求情報が更新要求情報である場合、入出力監視機構１０３-1は第１の実施形態と同様の動作を行う（ステップＳ３，Ｓ４）。これに対し、更新情報が参照要求情報の場合、入出力監視機構１０３-1は、第２の実施形態と同様の動作を行う（ステップＳＳ５，Ｓ６，Ｓ８）。稼動系ノード４０-1のレプリケータ１０４-1及び待機系ノード４０-2のレプリケータ１０４-2の動作は、第１乃至第３の実施形態と同様である。
【００９９】
次に、待機系ノード４０-2に障害が発生し、その後当該ノード４０-2が障害から復旧したものとする。この場合、稼動系ノード４０-1の同期化機構１０７-1及び待機系ノード４０-2の同期化機構１０７-2が動作して復旧処理を行う。この復旧処理は、初期復旧処理と主復旧処理とから構成される。初期復旧処理は図５のフローチャートに従って前記第１の実施形態と同一手順で行われる。一方、主復旧処理は図１６のフローチャートに従って第１の実施形態（図６のフローチャート）とは一部が異なる手順で実行される。
【０１００】
そこで、第４の実施形態における主復旧処理について、第１の実施形態と相違する部分を中心に図１６のフローチャートを参照して説明する。
【０１０１】
稼動系ノード４０-1の同期化機構１０７-1は、非同期化情報記憶部１０８−１に格納されている非同期化情報によって「更新中」が示されている全てのブロックを特定し、その特定されたブロックの集合の中に、ファイルシステム管理ブロックが含まれているかを判定する（ステップＳ６１１）。ファイルシステム管理ブロックは、ファイルシステム情報記憶部４０５-1に格納されているファイルシステム情報に基づいて判定可能である。
【０１０２】
もし、特定されたブロックの集合の中に、ファイルシステム管理ブロックが含まれている場合、稼動系ノード４０-1の同期化機構１０７-1は、当該ファイルシステム管理ブロックの中からアドレス（ブロックアドレス）が０により近い（つまりアドレスがより小さい）ブロックを選択する（ステップＳ６１２）。これに対し、特定されたブロックの集合の中に、ファイルシステム管理ブロックが含まれていない場合、同期化機構１０７-1は、当該特定されたブロックの集合からアドレスが０により近いブロックを選択する（ステップＳ６１３）。
【０１０３】
稼動系ノード４０-1の同期化機構１０７-1は、ステップＳ６１２またはＳ６１３でブロックを選択すると、ディスク記憶装置１０２-1から当該ブロックのデータを読み出して、当該読み出されたデータを更新データとする更新要求情報を待機系ノード４０-2の同期化機構１０７-2に送信する（ステップＳ６２）。以降の動作は、第１の実施形態と同様である。
【０１０４】
このように第３の実施形態においては、非同期化情報記憶部１０８−１に格納されている非同期化情報によって「更新中」が示されているブロックの集合のうち、ファイルシステム管理ブロックについて、他のブロックよりも優先的に同期化処理が実行される。また、ファイルシステム管理ブロックの中では、アドレスが小さいブロックほど優先的に同期化処理が実行される。同様に、ファイルシステム管理ブロック以外のブロックの中では、アドレスが小さいブロックほど優先的に同期化処理が実行される。アドレスが小さいブロックほど優先的に同期化処理が実行される理由は、次の通りである。ファイルシステム管理ブロックは一般にアドレスが０に近いブロックから使用される。そこで、アドレスが０に近いブロックを優先する方が、使用されているファイルシステム管理ブロックを先に同期化する可能性が高いことによる。
【０１０５】
稼動系ノード４０-1に障害が発生したために、待機系ノード４０-2が新稼動系となる場合、当該新稼動系ノード４０-2では、まずディスク記憶領域のマウントが行われるのが一般的である。このため新稼動系ノード４０-2では、まず、マウントに必要なファイルシステムの管理情報（ファイルシステム管理ブロックの情報）がアクセスされる。特に、ファイルシステム管理ブロックの情報のうち、アドレスがより小さいブロックの情報ほど先にアクセスされる。また、ファイルシステム管理ブロック以外のブロックの中でも、アドレスが小さいブロックほど先にアクセスされる。
【０１０６】
第４の実施形態では、非同期化情報記憶部１０８−１に格納されている非同期化情報によって「更新中」が示されているブロックのうち、マウントに必要なファイルシステムの管理情報が優先的に同期化される。このため、待機系ノード４０-2での同期化処理（復旧処理）の期間に稼動系ノード４０-1に障害が発生し、当該待機系ノード４０-2が新稼動系ノード４０-2になって参照要求を処理する場合でも、待ち合わせする確率を減らすことができる。
【０１０７】
なお、本発明は、上記各実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記各実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、各実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。
【図面の簡単な説明】
【０１０８】
【図１】本発明の第１の実施形態に係るクラスタシステムの構成を示すブロック図。
【図２】同第１の実施形態におけるクラスタシステムの正常時の動作を説明するためのフローチャート。
【図３】同第１の実施形態において待機系ノードで障害が発生した場合のクラスタシステムの状態を示す図。
【図４】同第１の実施形態において待機系ノードが障害から復旧した場合のクラスタシステムの状態を示す図。
【図５】同第１の実施形態において待機系ノードが障害から復旧した場合に実行される初期復旧処理を説明するためのフローチャート。
【図６】同第１の実施形態において上記初期復旧処理に続いて実行される主復旧処理を説明するためのフローチャート。
【図７】同第１の実施形態において主復旧処理による同期化が未完了の状態で稼動系ノードに障害が発生して待機系ノードが新たに稼動系ノードとなった場合のクラスタシステムの状態を示す図。
【図８】本発明の第２の実施形態に係るクラスタシステムの構成を示すブロック図。
【図９】同第２の実施形態におけるクラスタシステムの正常時の動作を説明するためのフローチャート。
【図１０】同第２の実施形態における主復旧処理を説明するためのフローチャート。
【図１１】本発明の第３の実施形態に係るクラスタシステムの構成を示すブロック図。
【図１２】同第３の実施形態におけるクラスタシステムの正常時の動作を説明するためのフローチャート。
【図１３】同第３の実施形態における主復旧処理を説明するためのフローチャート。
【図１４】本発明の第４の実施形態に係るクラスタシステムの構成を示すブロック図。
【図１５】同第４の実施形態におけるクラスタシステムの正常時の動作を説明するためのフローチャート。
【図１６】同第４の実施形態における主復旧処理を説明するためのフローチャート。
【符号の説明】
【０１０９】
１０-1，１０-2，２０-1，２０-2，３０-1，３０-2，４０-1，４０-2…ノード（計算機）、１００…アプリケーション、１０１-1，１０１-2…クラスタ管理機構、１０２-1，１０２-2…ディスク記憶装置、１０３-1，１０３-2…入出力監視機構、１０４-1，１０４-2…レプリケータ、１０５-1，１０５-2…参照頻度情報記憶部、１０６-1，１０６-2…待機系変更待ち情報記憶部、１０７-1，１０７-2…同期化機構、１０８-1，１０８-2…非同期化情報記憶部、１０９-1，１０９-2…参照不可情報記憶部、２０５-1，２０５-2…更新頻度情報記憶部、３０５-1，３０５-2…最終アクセス時刻情報記憶部、４０５-1，４０５-2…ファイルシステム情報記憶部。
【図１】
2008140080.tif 000003
【図２】
2008140080.tif 000004
【図３】
2008140080.tif 000005
【図４】
2008140080.tif 000006
【図５】
2008140080.tif 000007
【図６】
2008140080.tif 000008
【図７】
2008140080.tif 000009
【図８】
2008140080.tif 000010
【図９】
2008140080.tif 000011
【図１０】
2008140080.tif 000012
【図１１】
2008140080.tif 000013
【図１２】
2008140080.tif 000014
【図１３】
2008140080.tif 000015
【図１４】
2008140080.tif 000016
【図１５】
2008140080.tif 000017
【図１６】
2008140080.tif 000018