(57)【要約】【課題】ファイルアクセスを高速化し、障害発生時の切替え時間を短縮化する。【解決手段】複数のストレージ装置及び複数のサーバから構成される計算機システムにおいて、前記ストレージ装置は、ディスク装置及びストレージ制御装置を備え、前記ストレージ制御装置は、前記サーバとネットワークを介して接続するインターフェースと、前記ディスク装置に対するファイルの読み書きを制御する制御部とを備え、前記ストレージ制御装置及び前記サーバは、前記サーバによって読み書きされるファイルを一時的に格納するキャッシュメモリ、及び、前記キャッシュメモリに格納されるファイルの情報を記憶するファイルキャッシュ制御情報部を備え、前記ファイルキャッシュ制御情報部は、前記ストレージ制御装置及び／又は前記サーバのキャッシュメモリにファイルが格納されているかを示す情報を記憶する。【選択図】  図４
2006293593.tif 000002
【特許請求の範囲】
【請求項１】
複数のストレージ装置及び複数のサーバから構成される計算機システムにおいて、
前記ストレージ装置は、ディスク装置及びストレージ制御装置を備え、
前記ディスク装置は、前記サーバによって読み書きされるファイルを格納し、
前記ストレージ制御装置は、前記サーバとネットワークを介して接続するインターフェースと、前記ディスク装置に対するファイルの読み書きを制御する制御部とを備え、
前記ストレージ制御装置及び前記サーバは、前記サーバによって読み書きされるファイルを一時的に格納するキャッシュメモリ、及び、前記キャッシュメモリに格納されるファイルの情報を記憶するファイルキャッシュ制御情報部を備え、
前記ファイルキャッシュ制御情報部は、前記ストレージ制御装置及び／又は前記サーバのキャッシュメモリにファイルが格納されているかを示す情報を記憶することを特徴とする計算機システム。
【請求項２】
前記ファイルキャッシュ制御情報部に記憶されるファイルの情報は、前記キャッシュメモリに格納されたファイルのサイズ、前記キャッシュメモリに格納されたファイルの読出回数及び前記キャッシュメモリに格納されたファイルの書込回数を含むことを特徴とする請求項１に記載の計算機システム。
【請求項３】
前記サーバは、ファイルを前記ディスク装置に書き込む際に、前記ファイルキャッシュ制御情報部に記憶されたファイルの情報に基づいて、当該ファイルを前記キャッシュメモリに格納するサーバを決定し、前記決定されたサーバに当該ファイルを転送することを特徴とする請求項１に記載の計算機システム。
【請求項４】
前記サーバは、
前記ファイルキャッシュ制御情報部に記憶されたファイルサイズが所定値より大きい、
前記ファイルキャッシュ制御情報部に記憶された書込回数が所定値未満、又は、
前記ファイルキャッシュ制御情報部に記憶された読出回数が所定値未満のいずれか一つを満たせば、当該ファイル転送しないことを特徴とする請求項３に記載の計算機システム。
【請求項５】
前記ファイルキャッシュ制御情報部は、前記ファイル毎に前記複数のサーバに分割して、前記キャッシュメモリに格納されるファイルの情報を記憶し、
前記サーバは、他の前記サーバの障害を検出すると、当該障害が発生したサーバが記憶しているファイルの情報に係るファイルを前記キャッシュメモリから削除することを特徴とする請求項１に記載の計算機システム。
【請求項６】
前記サーバは、ファイルを前記ディスク装置に書き込む際に、前記ファイルキャッシュ制御情報部に記憶されたファイルの情報に基づいて、当該ファイルを前記キャッシュメモリに格納するストレージ制御装置を決定し、前記決定されたストレージ制御装置に当該ファイルを転送することを特徴とする請求項１に記載の計算機システム。
【請求項７】
前記サーバは、
前記ファイルキャッシュ制御情報部に記憶されたファイルサイズが所定値より大きい、
前記ファイルキャッシュ制御情報部に記憶された書込回数が所定値未満、又は、
前記ファイルキャッシュ制御情報部に記憶された読出回数が所定値未満のいずれか一つを満たせば、当該ファイル転送しないことを特徴とする請求項６に記載の計算機システム。
【請求項８】
前記複数のサーバは、複数の現用サーバ及び１台以上の待機サーバを含み、
前記現用サーバは、ファイルを前記ディスク装置に書き込む際に、当該ファイルを前記待機サーバに転送し、
前記待機サーバは、前記転送されたファイルを前記キャッシュメモリに格納し、
さらに、前記待機サーバは、前記現用サーバの障害を検出すると、当該障害が発生した現用サーバが提供していた業務を実行することを特徴とする請求項１に記載の計算機システム。
【請求項９】
前記待機サーバは、前記現用サーバの障害を検出すると、当該障害が発生した現用サーバに格納されていないファイルを前記キャッシュメモリから削除した後、当該障害が発生した現用サーバが提供していた業務を実行することを特徴とする請求項８に記載の計算機システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機システムに関し、特に、ネットワーク接続型ストレージ装置（ＮＡＳ）が含まれる計算機システムのファイルキャッシュ制御技術に関する。
【背景技術】
【０００２】
ネットワークに接続され、複数のサーバがファイルを共有するストレージ装置（ＮＡＳ：Network Attached Storage）を備え、ストレージ装置とサーバとがネットワークを介して接続される計算機システムが提案されている。このような計算機システムでは、ディスクへのアクセス速度を向上するために、ネットワーク中にキャッシュメモリが設けられる。
【０００３】
このようなネットワーク型のキャッシュメモリに関し、端末から要求されたファイルがファイル格納部にない場合、サーバから獲得したファイルを格納するためのスペースがあれば、ファイル格納部に格納し、スペースがない場合は、優先度の低い順に及び最終参照時刻が古い順にファイルを削除して、サーバーから獲得したファイルをファイル格納部に格納する技術が提案されている（例えば、特許文献１参照）。
【特許文献１】特開２００２−９１８２５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
前述したネットワーク型のキャッシュメモリを備える計算機システムでは、サーバ間及びサーバとストレージ装置間で、キャッシュ情報を共有していないので、システム全体として、ファイルキャッシュが効率よく制御できない問題がある。すなわち、ファイルキャッシュが連携されて管理されていないので、サーバ間でデータをアクセスできず、ディスクをアクセスするために、性能が低下する問題があった。
【０００５】
このため、ダーティなデータ（グローバルキャッシュでは更新されたが、共有ディスクでは更新されていないデータ）が極力発生しないように、チェックポイント時にダーティなデータを頻繁にディスク装置に書き込んでいた。このため、ＩＯ回数が多く、性能が低下する要因になっていた。
【０００６】
また、ファイルキャッシュが冗長化されていないため、障害発生時のフェイルオーバに必要な時間が長かった。すなわち、待機のグローバルキャッシュが存在しないので、障害発生時のシステムの切替に長い時間を必要とする問題があった。
【０００７】
また、ダーティなデータを所有したまま、キャッシュメモリを備える装置に障害が発生すると、ダーティなデータは回復できない。このため、ダーティなデータを所有したまま装置に障害が発生すると、回復に長い時間を必要とする問題があった。
【０００８】
本発明は、ファイルアクセスの高速化、障害発生時の切替時間の短縮を目的とする。
【課題を解決するための手段】
【０００９】
本発明は、複数のストレージ装置及び複数のサーバから構成される計算機システムにおいて、前記ストレージ装置は、ディスク装置及びストレージ制御装置を備え、前記ディスク装置は、前記サーバによって読み書きされるファイルを格納し、前記ストレージ制御装置は、前記サーバとネットワークを介して接続するインターフェースと、前記ディスク装置に対するファイルの読み書きを制御する制御部とを備え、前記ストレージ制御装置及び前記サーバは、前記サーバによって読み書きされるファイルを一時的に格納するキャッシュメモリ、及び、前記キャッシュメモリに格納されるファイルの情報を記憶するファイルキャッシュ制御情報部を備え、前記ファイルキャッシュ制御情報部は、前記ストレージ制御装置及び／又は前記サーバのキャッシュメモリにファイルが格納されているかを示す情報を記憶する。
【００１０】
すなわち、サーバ及びＮＡＳヘッドの各々は、ファイルキャッシュのアクセス状況を記憶するファイルキャッシュ制御情報部を備える。そして、サーバ間、ＮＡＳヘッド間、及びサーバとＮＡＳヘッドとの間でファイルキャッシュのアクセス状況を共有する。サーバはファイルアクセス時に、ファイルキャッシュ制御情報部の記憶内容を参照し、アクセスする可能性が高いファイルは他のサーバに転送し、キャッシュメモリに格納する。同様に、ＮＡＳヘッドも、ファイルキャッシュ制御情報部の記憶内容を参照し、他のＮＡＳヘッドにファイルキャッシュを転送する。
【００１１】
また、本発明は、複数の現用サーバ及び１台以上の待機サーバを備え、複数のサーバのキャッシュメモリによってグローバルキャッシュを構成する。すなわち、現用サーバによる現用グローバルキャッシュと、待機サーバによる待機グローバルキャッシュを構成し、ファイルキャッシュを二重化する。
【発明の効果】
【００１２】
本発明によると、サーバがディスク装置をアクセスする回数を低減でき、処理性能を向上できる。また、サーバ又はストレージ装置に障害が発生しても、ファイルキャッシュを冗長的に所有しているので、障害発生時における切替時間を短縮できる。
【発明を実施するための最良の形態】
【００１３】
以下、本発明の実施の形態を図面を参照して説明する。
【００１４】
（第１実施形態）
図１は、第１の実施の形態の計算機システムのハードウェア構成を示すブロック図である。
【００１５】
第１の実施の形態の計算機システムは、サーバ群１、ＮＡＳ（Network Attached Storage）２及びネットワーク３を備える。
【００１６】
サーバ群１は、複数のサーバ１１〜１４を備える。サーバ１１〜１４は、インタコネクト線１９によって内部接続されており、クラスタを構成している。サーバ１１は、ファイルキャッシュ制御テーブル（ＦＣＣＴ−Ｓ）１１１及びファイルキャッシュ１１２を備える。
【００１７】
ファイルキャッシュ１１２には、サーバ１１がアクセスしたファイルが一時的に格納される。ＦＣＣＴ−Ｓ１１１は、ファイルキャッシュ１１２に格納されたファイルの情報を格納する。すなわち、ＦＣＣＴ−Ｓ１１１は、ファイルのアクセス履歴を管理する（図５参照）。
【００１８】
なお、サーバ１２〜１４も、サーバ１１と同じ構成を有する。
【００１９】
ＮＡＳ２は、ＮＡＳヘッド２１〜２３及びディスク装置２４〜２６を備える。ＮＡＳヘッド２１〜２３は、インタコネクト線２９によって内部接続されており、クラスタを構成している。ＮＡＳヘッド２１は、ファイルキャッシュ制御テーブル（ＦＣＣＴ−Ｎ）２１１及びファイルキャッシュ２１２を備える。また、ＮＡＳヘッド２１には、ディスク装置２４が接続されている。
【００２０】
ファイルキャッシュ２１２には、サーバ群１からアクセスされたファイルが一時的に格納される。ＦＣＣＴ−Ｎ２１１は、ファイルキャッシュ２１２に格納されたファイルの情報を格納する。すなわち、ＦＣＣＴ−Ｎ２１１は、ファイルのアクセス履歴を管理する。
【００２１】
なお、ＮＡＳヘッド２２、２３も、ＮＡＳヘッド２１と同じ構成を有する。
【００２２】
ネットワーク３は、サーバ群１の各サーバ１１〜１４及びＮＡＳ２の各ＮＡＳヘッド２１〜２３を接続する。ネットワーク３は、例えば、ＴＣＰ／ＩＰプロトコルで通信可能なイーサネット（登録商標、以下同じ）によって構成されるＬＡＮである。
【００２３】
図２は、第１の実施の形態のサーバ１１の構成を示すブロック図である。
【００２４】
なお、サーバ１２〜１４も、サーバ１１と同じ構成を有する。
【００２５】
サーバ１１は、ＣＰＵ１０１、メモリ１０２、ＩＯプロセッサ（ＩＯＰ）１０３、ネットワークインターフェース（ＮＩＣ）１０４、ディスクコントローラ１０５及びディスク装置１０６を備える。
【００２６】
ＣＰＵ１０１は、メモリ１０２に記憶されたプログラムを実行し、各種演算処理をする。
【００２７】
メモリ１０２は、ＣＰＵ１０１の動作に必要なプログラム及びデータを記憶する。また、メモリ１０２の一部の記憶領域は、ファイルキャッシュ１１２として使用されるキャッシュメモリである。また、メモリ１０２には、ＦＣＣＴ−Ｓ１１１が記憶されている。
【００２８】
ＩＯプロセッサ（ＩＯＰ：Input Output Processor）１０３は、サーバ１１へのデータの入出力を制御するプロセッサである。
【００２９】
ネットワークインターフェース（ＮＩＣ：Network Interface Controller）１０４は、ネットワーク３と接続されている。ネットワークインターフェース１０４は、ネットワーク３に接続されれた他の装置と、例えばＴＣＰ／ＩＰプロトコルによって、データを通信する。
【００３０】
ディスクコントローラ１０５は、ディスク装置１０６へのデータの入出力を制御する。ディスク装置１０６は、サーバ１１の動作に必要なプログラム及びデータを記憶する。
【００３１】
サーバ１１では、オペレーティングシステム（ＯＳ：Operating System）１１３、クラスタソフトウェア１１４及びアプリケーションプログラム（ＡＰ１、ＡＰ２）１１５、１１６が動作している。
【００３２】
クラスタソフトウェア１１４は、サーバ１１〜１４間の負荷を分散し、サーバ１１〜１４間の動作の切り替えを制御する。アプリケーションプログラム１１５、１１６は、例えば、データベースプログラムや、ＷＥＢサーバプログラムである。アプリケーションプログラム１１５、１１６は、これらのサービスをユーザに提供する。
【００３３】
図３は、第１の実施の形態のＮＡＳヘッド２１の構成を示すブロック図である。
【００３４】
なお、ＮＡＳヘッド２２、２３も、ＮＡＳヘッド２１と同じ構成を有する。
【００３５】
ＮＡＳヘッド２１は、ＣＰＵ２０１、メモリ２０２、ＩＯプロセッサ（ＩＯＰ）２０３、ネットワークインターフェース（ＮＩＣ）２０４及びディスクコントローラ２０５を備える。
【００３６】
ＣＰＵ２０１は、メモリ２０２に記憶されたプログラムを実行し、各種演算処理をする。
【００３７】
メモリ２０２は、ＣＰＵ２０１の動作に必要なプログラム及びデータを記憶する。また、メモリ２０２の一部の記憶領域は、ファイルキャッシュ１１２として使用されるキャッシュメモリである。また、メモリ２０２には、ＦＣＣＴ−Ｎ２１２が記憶されている。
【００３８】
ＩＯプロセッサ（ＩＯＰ：Input Output Processor）２０３は、ＮＡＳヘッド２１へのデータの入出力を制御するプロセッサである。
【００３９】
ネットワークインターフェース（ＮＩＣ：Network Interface Controller）２０４は、ネットワーク３と接続されている。ネットワークインターフェース２０４は、ネットワーク３に接続されれた他の装置と、例えばＴＣＰ／ＩＰプロトコルによってデータを通信する。
【００４０】
ディスクコントローラ２０５は、ディスク装置２４へのデータの入出力を制御する。ディスク装置２４は、サーバ群１が使用するデータを記憶する。例えば、データベースプログラムによってアクセスされるデータベースや、ＷＥＢサーバプログラムによってアクセスされるコンテンツ情報が格納される。
【００４１】
ＮＡＳヘッド２１では、オペレーティングシステム（ＯＳ：Operating System）２１３、クラスタソフトウェア２１４、ファイルサービスプログラム２１５、２１６が動作している。
【００４２】
クラスタソフトウェア２１４は、ＮＡＳヘッド２１〜２３間の負荷を分散し、ＮＡＳヘッド２１〜２３間の動作の切り替えを制御する。ファイルサービスプログラム２１５、２１６は、例えば、ＳＡＭＢＡやＮＦＳ等のファイルシステムを、サーバ１１〜１４に提供する。
【００４３】
図４は、第１の実施の形態に係る発明の特徴の説明図である。
【００４４】
第１の実施の形態では、各サーバ１１〜１４間で、ＦＣＣＴ−Ｓに記憶されたファイルキャッシュの情報を転送することによって、サーバが連携して、ファイルキャッシュの情報を管理する。このファイルキャッシュの情報の転送は、Ｐｕｌｌ型でも、Ｐｕｓｈ型でもよい。
【００４５】
このファイルキャッシュ情報の転送によって、サーバ１１のファイルキャッシュ１１２、サーバ１２のファイルキャッシュ１２２、サーバ１３のファイルキャッシュ１３２及びサーバ１４のファイルキャッシュ１４２が互いに連携してグローバルキャッシュを構成している。
【００４６】
また、各ＮＡＳヘッド２１〜２３間で、ＦＣＣＴ−Ｎに記憶されたファイルキャッシュ情報を転送することによって、ＮＡＳヘッドが連携して、ファイルキャッシュの情報を管理する。同様に、このファイルキャッシュ情報の転送は、Ｐｕｌｌ型でも、Ｐｕｓｈ型でもよい。
【００４７】
さらに、サーバ１１〜１４とＮＡＳヘッド２１〜２３との間で、ＦＣＣＴ−Ｓ及びＦＣＣＴ−Ｎに記憶されたファイルキャッシュの情報を転送することによって、サーバとＮＡＳヘッドとが連携して、ファイルキャッシュの情報を管理する。
【００４８】
次に、第１の実施の形態のファイルキャッシュ制御テーブル（ＦＣＣＴ−Ｓ、ＦＣＣＴ−Ｎ）について説明する。
【００４９】
図５は、第１の実施の形態のＦＣＣＴ−Ｓの構成図である。
【００５０】
図５に示すＦＣＣＴ−Ｓは、サーバ１１〜１４に分散して格納されている。すなわち、各ファイルキャッシュの情報は特定の一つのサーバに格納されている。各サーバは、どのファイルキャッシュの情報が、どのサーバに格納されているかを示すポインタを格納している。
【００５１】
例えば、ファイルキャッシュの情報をどのサーバに格納するかは、各サーバが順に格納するように、ラウンドロビンによって定めてもよい。また、そのファイルを最初にキャッシュメモリに格納したサーバが、当該ファイルキャッシュの情報を格納してもよい。
【００５２】
ＦＣＣＴ−Ｓは、ファイルキャッシュＩＤ１１１１、ファイルサイズ１１１２、ロック状態１１１３、所有情報１１１４、リード回数１１１５及びライト回数１１１６を含む。ファイルキャッシュＩＤ１１１１、ファイルサイズ１１１２及びロック状態１１１３はサーバ間で共通の情報である。一方、所有情報１１１４、リード回数１１１５及びライト回数１１１６は、各サーバ毎に記憶されている。
【００５３】
ファイルキャッシュＩＤ１１１１は、ファイルキャッシュに格納されたファイルの一意な識別子である。ファイルサイズ１１１２は、当該ファイルの大きさである。ファイルサイズ１１１２は、そのファイルを転送するか否かの判定に用いられる。
【００５４】
ロック状態１１１３は、当該ファイルへのアクセスが禁止されているかを示す。具体的には、非ロック状態、リードロック状態及びライトロック状態の３種類の状態がある。非ロック状態のファイルは読み書きの双方ができる。リードロック状態は、サーバからリードアクセスがされていることを示し、リードロック状態のファイルは、読むことはできるが、書くことはできない。ライトロック状態は、サーバからライトアクセスがされていることを示し、ライトロック状態のファイルは読み書きができない。
【００５５】
所有情報１１１４は、そのサーバのファイルキャッシュに当該ファイルが格納されているか否かを示す。所有情報１１１４によって、当該ファイルキャッシュをどのサーバが所有しているかが分かる。
【００５６】
リード回数１１１５は、そのサーバが当該ファイルを読み出した（リードアクセスした）回数を示す。ライト回数１１１６は、そのサーバが当該ファイルを書き込んだ（ライトアクセスした）回数を示す。リード回数１１１５及びライト回数１１１６によって、そのファイルのアクセスの傾向（例えば、リードが多いか、ライトが多いか）が分かる。
【００５７】
このファイルのアクセス履歴（リード回数１１１５及びライト回数１１１６）は、今後のアクセスの傾向を予測するために使用される。
【００５８】
なお、ＦＣＣＴ−Ｓは、前述した以外のファイルの属性に関する情報（例えば、キャッシュの状態がクリーンかダーティか）を含んでもよい。
【００５９】
図６は、第１の実施の形態のＦＣＣＴ−Ｎの構成図である。
【００６０】
図６に示すＦＣＣＴ−Ｎは、ＮＡＳヘッド２１〜２３に分散して格納されている。すなわち、各ファイルキャッシュの情報は特定の一つのＮＡＳヘッドに格納されている。各ＮＡＳヘッドは、どのファイルキャッシュの情報が、どのＮＡＳヘッドに格納されているかを示すポインタを格納している。
【００６１】
例えば、ファイルキャッシュの情報をどのＮＡＳヘッドに格納するかは、そのファイルを最初にキャッシュメモリに格納したＮＡＳヘッドが、当該ファイルキャッシュの情報を格納してもよい。また、各ＮＡＳヘッドが順に格納するように、ラウンドロビンによって定めてもよい。
【００６２】
ＦＣＣＴ−Ｎは、ファイルキャッシュＩＤ２１１１、ファイルサイズ２１１２、ロック状態２１１３、所有情報２１１４、リード回数２１１５及びライト回数２１１６を含む。ファイルキャッシュＩＤ２１１１、ファイルサイズ２１１２及びロック状態２１１３はＮＡＳヘッド間で共通の情報である。一方、所有情報２１１４、リード回数２１１５及びライト回数２１１６は、各ＮＡＳヘッド毎に記憶されている。
【００６３】
ファイルキャッシュＩＤ２１１１は、ファイルキャッシュ格納されたファイルの一意な識別子である。ファイルサイズ２１１２は、当該ファイルの大きさである。ファイルサイズ２１１２は、そのファイルを転送するか否かの判定に用いられる。
【００６４】
ロック状態２１１３は、当該ファイルへのアクセスが禁止されているかを示す。具体的には、非ロック状態、リードロック状態及びライトロック状態の３種類の状態がある。非ロック状態のファイルは読み書きの双方ができる。リードロック状態は、サーバからリードアクセスがされていることを示し、リードロック状態のファイルは、読むことはできるが、書くことはできない。ライトロック状態は、サーバからライトアクセスがされていることを示し、ライトロック状態のファイルは読み書きができない。
【００６５】
所有情報２１１４は、そのＮＡＳヘッドのファイルキャッシュに当該ファイルが格納されているか否かを示す。所有情報２１１４によって、当該ファイルキャッシュをどのＮＡＳヘッドが所有しているかが分かる。
【００６６】
リード回数２１１５は、そのＮＡＳヘッドが当該ファイルを読み出した（リードアクセスがされた）回数を示す。ライト回数２１１６は、そのＮＡＳヘッドが当該ファイルを書き込んだ（ライトアクセスがされた）回数を示す。リード回数２１１５及びライト回数２１１６によって、そのファイルのアクセスの傾向（例えば、リードが多いか、ライトが多いか）が分かる。
【００６７】
このファイルのアクセス履歴（リード回数２１１５及びライト回数２１１６）は、今後のアクセスの傾向を予測するために使用される。
【００６８】
なお、ＦＣＣＴ−Ｎは、前述した以外のファイルの属性に関する情報（例えば、キャッシュの状態がクリーンかダーティか）を含んでもよい。
【００６９】
図７は、第１の実施の形態のリード処理におけるキャッシュファイルの所有状況による動作の場合分けの説明図である。
【００７０】
図中、”○”は、その装置がアクセス要求に係るファイルのキャッシュを所有しており、そのファイルがアクセスされることを示す。”＋”は、その装置がアクセス要求に係るファイルのキャッシュを所有しているが、そのファイルはアクセスされないことを示す。”＊”は、その装置のファイルキャッシュの所有は無関係であることを示す。”×”は、その装置がアクセス要求に係るファイルをファイルのキャッシュを所有していないことを示す。
【００７１】
ケース１は、要求されたファイルがライトロック状態にある場合で、サーバ、ＮＡＳヘッドのいずれがファイルのキャッシュを所有していても、ファイルは読み出されない。
【００７２】
ケース２は、要求されたファイルが非ロック状態かリードロック状態にあり、要求元サーバ１がリード要求に係るファイルのキャッシュを所有している場合である。ケース２では、自サーバに格納されているファイルを読み出す。すなわち、ケース２では、他のサーバや、ＮＡＳヘッドが、リード要求に係るファイルのキャッシュを所有しているかを問わず、自サーバに格納されているファイルをアクセスすることによって、応答時間を早めている。
【００７３】
ケース３は、要求されたファイルが非ロック状態かリードロック状態にあり、要求元サーバ１はリード要求に係るファイルのキャッシュを所有しておらず、要求元サーバ１以外のサーバがリード要求に係るファイルのキャッシュを所有している場合である。ケース３では、他のサーバに格納されているファイルを読み出す。このとき、複数のサーバがリード要求に係るファイルのキャッシュを所有していれば、応答が早いと推定される（例えば、負荷が低い）サーバ３に格納されているファイルを読み出す。すなわち、ケース３では、ＮＡＳヘッドがリード要求に係るファイルのキャッシュを所有しているかを問わず、他のサーバのうち負荷が低いサーバ３に格納されているファイルをアクセスすることによって、応答時間を早めている。
【００７４】
ケース４は、要求されたファイルが非ロック状態かリードロック状態にあり、いずれのサーバもリード要求に係るファイルのキャッシュを所有しておらず、優先的にアクセスされる（ファイルを格納しているディスク装置に接続されている）ＮＡＳヘッド２がリード要求に係るファイルのキャッシュを所有している場合である。ケース４では、ＮＡＳヘッド２に格納されているファイルを読み出す。すなわち、ケース４では、ＮＡＳヘッド２のファイルキャッシュからリード要求に係るファイルをアクセスすることによって、ディスク装置にアクセスするよりも応答時間を早めている。
【００７５】
ケース５は、要求されたファイルが非ロック状態かリードロック状態にあり、いずれのサーバもリード要求に係るファイルのキャッシュを所有しておらず、優先的にアクセスされる（ファイルを格納しているディスク装置に接続されている）ＮＡＳヘッド２がリード要求に係るファイルのキャッシュを所有しておらず、他のＮＡＳヘッドがリード要求に係るファイルのキャッシュを所有している場合である。ケース５では、他のＮＡＳヘッドに格納されているファイルを読み出す。このとき、複数のＮＡＳヘッドがリード要求に係るファイルのキャッシュを所有していれば、応答が早いと推定される（例えば、負荷が低い）ＮＡＳヘッド１に格納されているファイルを読み出す。すなわち、ケース５では、リード要求に係るファイルのキャッシュを所有しているＮＡＳヘッドに格納されているファイルをアクセスすることによって、ディスク装置にアクセスするよりも応答時間を早めている。
【００７６】
ケース６は、要求されたファイルが非ロック状態かリードロック状態にあり、いずれのサーバもＮＡＳヘッドも、リード要求に係るファイルのキャッシュを所有していない場合である。ケース６では、キャッシュには読み出すファイルがないので、ディスク装置をアクセスする。
【００７７】
すなわち各ケースにおけるファイルのアクセス先は下記の通りとなる。
ケース１  ファイルにアクセスしない。
ケース２  自サーバのキャッシュメモリ
ケース３  他サーバのキャッシュメモリ
ケース４  該当するＮＡＳヘッドのキャッシュメモリ
ケース５  他のＮＡＳヘッドのキャッシュメモリ
ケース６  ディスク
【００７８】
図８は、第１の実施の形態の各ケースにおけるリード処理のアクセス順序を示す図である。
【００７９】
図８では、サーバ１１がファイルの読み出し要求元で、目的のファイルはＮＡＳヘッド２に接続されているディスク２５に格納されている場合について説明する。
【００８０】
まず、ファイルがリードロック状態になければ、自サーバのファイルキャッシュを確認する。そして、目的のファイルが自サーバのファイルキャッシュに格納されていれば、当該ファイルをファイルキャッシュ１１１から読み出す（ケース２）。
【００８１】
目的のファイルが自サーバのファイルキャッシュに格納されていなければ、目的のファイルキャッシュの情報が書き込まれたＦＣＣＴ−Ｓが格納されているサーバ２を特定し（１）、目的のファイルのＦＣＣＴ−Ｓの所有データを参照し（２）、目的のファイルのキャッシュを所有するサーバ３を特定する。そして、目的のファイルのキャッシュを所有するサーバ３にアクセスし（３）、当該ファイルをファイルキャッシュ１３２から読み出す（ケース３）。
【００８２】
目的のファイルがいずれのサーバのファイルキャッシュにも格納されていなければ、目的のファイルキャッシュの情報が書き込まれたＦＣＣＴ−Ｎが格納されている（目的のファイルが格納されているディスク２５に接続された）ＮＡＳヘッド２を特定し（４）、そのＮＡＳヘッド２が目的のファイルのキャッシュを所有するか否かを判定する。そして、ＮＡＳヘッド２が、目的のファイルのキャッシュを所有していれば、当該ファイルをファイルキャッシュ２２２から読み出す（ケース４）。
【００８３】
ＮＡＳヘッド２が目的のファイルのキャッシュを所有していなければ、ＦＣＣＴ−Ｎを参照し、目的のファイルのキャッシュを所有している他のＮＡＳヘッド１を特定する。そして、目的のファイルのキャッシュを所有するＮＡＳヘッド１にアクセスし（５）、当該ファイルをファイルキャッシュ２１２から読み出す（ケース５）。
【００８４】
いずれのＮＡＳヘッドも目的のファイルのキャッシュを所有していなければ。ＮＡＳヘッド２を介してディスク２５にアクセスし、当該ファイルをディスク２５から読み出す（ケース６）。
【００８５】
図９は、第１の実施の形態のリード処理のフローチャートである。
【００８６】
まず、ＯＳ１１３は、アプリケーションプログラム１１５、１１６からファイルリード要求を受けると、ＦＣＣＴ−Ｓの所有１１１４を参照する（Ｓ１０１）。すなわち、リード要求に係るファイルキャッシュの情報を記憶するサーバを特定し、当該サーバにリード要求に係るファイルの所有の有無を問い合わせて、当該ファイルのキャッシュを所有しているサーバを見つける。
【００８７】
次に、ＯＳ１１３は、ＦＣＣＴ−Ｓのロック状態１１１３を参照して、リード要求に係るファイルがライトロック中であるか否かを判定する（Ｓ１０２）。
【００８８】
その結果、リード要求に係るファイルがライトロック中であれば、ケース１であると判定する。ケース１の場合、他のアプリケーションプログラム（他のサーバ）が、当該ファイルに書き込む処理をしているので、ステップＳ１０１に戻り、ライトロックが解除されるまで待機する。なお、この場合、当該ファイルがライトロック中であることを報知して、エラーにより終了させてもよい。
【００８９】
一方、リード要求に係るファイルがライトロック中でなければ、当該ファイルを読み出すことに支障がないので、当該ファイルをリードロック状態に設定する（Ｓ１０３）。このため、他のサーバ及び全てのＮＡＳヘッドに対して、リードロック設定信号を送信する。これによって、他のアプリケーションプログラムが、当該ファイルを書き換えて、ファイルの読み出し中にファイルの内容が変更される不整合が発生しなくなる。
【００９０】
次に、ステップＳ１０１でＦＣＣＴ−Ｓの所有１１１４を参照した結果を用いて、リード要求に係るファイルが、自サーバのファイルキャッシュに格納されているか否かを判定する（Ｓ１０４）。
【００９１】
その結果、当該ファイルが自サーバのファイルキャッシュに格納されていれば、ケース２であると判定する。ケース２の場合、自サーバのファイルキャッシュから当該ファイルを読み出す（Ｓ１１２）。その後ステップＳ１１０に進む。
【００９２】
一方、リード要求に係るファイルが、自サーバのファイルキャッシュに格納されていなければ、ステップＳ１０５に進む。
【００９３】
ステップＳ１０５では、当該ファイルが他のサーバのファイルキャッシュに格納されているか否かを判定する。
【００９４】
その結果、当該ファイルが他のサーバのファイルキャッシュに格納されていれば、ケース３であると判定する。ケース３の場合、当該他のサーバにアクセスし、当該他のサーバのファイルキャッシュから当該ファイルを読み出す（Ｓ１１３）。その後ステップＳ１１０に進む。
【００９５】
一方、リード要求に係るファイルが、他のサーバのファイルキャッシュに格納されていなければ、ステップＳ１０６に進む。すなわち、リード要求に係るファイルは、いずれのサーバのファイルキャッシュにも格納されていない状態であると判定される。
【００９６】
次に、ＮＡＳヘッドのＦＣＣＴ−Ｎの所有２１１４を参照する（Ｓ１０６）。すなわち、リード要求に係るファイルキャッシュの情報を記憶するＮＡＳヘッドを特定し、当該ＮＡＳヘッドにリード要求に係るファイルの所有の有無を問い合わせて、当該ファイルのキャッシュを所有しているＮＡＳヘッドを見つける。
【００９７】
次に、リード要求に係るファイルが、当該ファイルを格納しているディスク装置に接続されているＮＡＳヘッドのファイルキャッシュに格納されているか否かを判定する（Ｓ１０７）。
【００９８】
その結果、当該ファイルがそのＮＡＳヘッドのファイルキャッシュに格納されていれば、ケース４であると判定する。ケース４の場合、当該ＮＡＳヘッドにアクセスし、当該ＮＡＳヘッドのファイルキャッシュから当該ファイルを読み出す（Ｓ１１４）。その後ステップＳ１１０に進む。
【００９９】
一方、リード要求に係るファイルが、当該ファイルを格納しているディスク装置に接続されているＮＡＳヘッドのファイルキャッシュに格納されていなければ、ステップＳ１０８に進む。
【０１００】
ステップＳ１０８では、当該ファイルが他のＮＡＳヘッドのファイルキャッシュに格納されているか否かを判定する。
【０１０１】
その結果、当該ファイルが他のＮＡＳヘッドのファイルキャッシュに格納されていれば、ケース５であると判定する。ケース５の場合、当該他のＮＡＳヘッドにアクセスし、当該他のＮＡＳヘッドのファイルキャッシュから当該ファイルを読み出す（Ｓ１１５）。その後ステップＳ１１０に進む。
【０１０２】
一方、リード要求に係るファイルが、他のＮＡＳヘッドのファイルキャッシュにも格納されていなければ、ステップＳ１０９に進む。すなわち、リード要求に係るファイルは、いずれのサーバのファイルキャッシュにも、いずれのＮＡＳヘッドのファイルキャッシュにも格納されていない状態（ケース６）であると判定される。
【０１０３】
ステップＳ１０９では、当該ファイルを格納しているディスク装置に接続されているＮＡＳヘッドにアクセスし、リード要求に係るファイルをディスク装置から読み出す（Ｓ１０９）。
【０１０４】
その後、ＦＣＣＴ−Ｓのリード回数を加算する。また、必要があれば、自サーバのファイルの所有状態を変更する。さらに、ＦＣＣＴ−Ｎのリード回数を加算する（Ｓ１１０）。
【０１０５】
その後、リードロックを解除する（Ｓ１１１）。これによって、他のサーバ及び全てのＮＡＳヘッドに対して、リードロック解除信号を送信する。これによって、他のアプリケーションプログラムからの当該ファイルへのライトアクセスが許可される。
【０１０６】
図１０は、第１の実施の形態のライト処理におけるキャッシュファイルの所有状況による動作の場合分けの説明図である。
【０１０７】
図中、”Ｒ”は、リード回数、”Ｗ”は、ライト回数を示す。また、”＊”は、そのケースでは、その装置のファイルキャッシュの所有及びアクセス回数は無関係であることを示す。
【０１０８】
ケース１１は、要求されたファイルがライトロック状態にある場合で、サーバ及びＮＡＳヘッドのリード回数及びライト回数にかかわらずファイルは書き込まれない。
【０１０９】
ケース１２は、要求されたファイルが非ロック状態（リードロック状態でも、ライトロック状態でもない）場合である。ケース１２では、サーバ及びＮＡＳヘッドのリード回数及びライト回数にかかわらずファイルは書き込まれない。すなわち、ケース１２では、ライト要求に係るファイルを、自サーバのキャッシュに格納することによって、応答時間を早めている。
【０１１０】
ケース１３は、要求されたファイルが非ロック状態にあり、当該ファイルを他サーバが頻繁にアクセスする状態である。この例では、他サーバのアクセス頻度を判定する閾値、（後述する条件１−１及び１−２の所定値）を”３”としている。
【０１１１】
ケース１３では、サーバ３は、リード回数が７回、ライト回数が３回なので、アクセス回数が閾値以上となる。よって、当該ファイルをサーバ３のキャッシュに書き込む。一方、サーバ２及び４は、リード回数は５回で閾値以上であるが、ライト回数が０回で閾値より小さい。よって、当該ファイルはサーバ２及び４のキャッシュに書き込まれない。
【０１１２】
ケース１４は、要求されたファイルが非ロック状態にあり、ＮＡＳヘッドにキャッシュされた当該ファイルが頻繁にアクセスされる状態である。この例では、他サーバのアクセス頻度を判定する閾値、（後述する条件２−１の所定値及び２−２の所定値）を、リード回数が”２”、ライト回数が”３”としている。
【０１１３】
ケース１４では、ＮＡＳヘッド１は、リード回数が２回、ライト回数が３回なので、アクセス回数が閾値以上となる。よって、当該ファイルをＮＡＳヘッド１のキャッシュに書き込む。同様に、ＮＡＳヘッド２のキャッシュにも当該ファイルが書き込まれる。一方、ＮＡＳヘッド３は、リード回数が”０”で、ライト回数が”０”であるため、いずれも閾値より小さい。よって、当該ファイルはＮＡＳヘッド３のキャッシュに書き込まれない。
【０１１４】
ケース１５は、要求されたファイルが非ロック状態にある場合である。ケース１５では、対象ファイルを書き込むべきディスク装置が接続されているＮＡＳヘッドに転送され、ファイルがディスク装置に書き込まれる。
【０１１５】
すなわち各ケースにおけるファイルのアクセス先は下記の通りとなる。
【０１１６】
ケース１１は、ファイルにアクセスしない
ケース１２は、自サーバのキャッシュメモリ
ケース１３は、他サーバのキャッシュメモリ
ケース１４は、NASヘッドのキャッシュメモリ
ケース１５は、ディスク
【０１１７】
図１１は、第１の実施の形態の各ケースにおけるライト処理のアクセス順序を示す図である。
【０１１８】
図１１では、サーバ１１がファイルの書き込み要求元で、目的のファイルはＮＡＳヘッド２に接続されているディスク装置２５に格納されている場合について説明する。
【０１１９】
まず、ファイルがロック状態になければ、目的のファイルを自サーバのファイルキャッシュに書き込む（ケース１２）。
【０１２０】
目的のファイルが他のサーバのファイルキャッシュに格納する条件を満たせば、条件を満たしたサーバに当該ファイルを転送し、他のサーバのキャッシュメモリに当該ファイルを格納する（ケース１３）。
【０１２１】
また、目的のファイルがＮＡＳヘッドのファイルキャッシュに格納する条件を満たせば、条件を満たしたＮＡＳヘッドに当該ファイルを転送し、当該ＮＡＳヘッドのキャッシュメモリに当該ファイルを格納する（ケース１４）。
【０１２２】
また、サーバのキャッシュメモリに格納されたファイルは、そのファイルの格納場所のディスク装置が接続されているＮＡＳヘッドに転送され、ファイルがディスク装置に書き込まれる（ケース１５）。
【０１２３】
本実施の形態では、キャッシュに格納されたファイルをサーバ間で転送し、サーバ間でキャッシュを冗長化する。同様に、キャッシュに格納されたファイルをＮＡＳヘッドに転送し、ＮＡＳヘッドとサーバ間及びＮＡＳヘッド間でもキャッシュを冗長化する。
【０１２４】
次に、サーバの障害処理手順について説明する。
【０１２５】
図１２は、第１の実施の形態のライト処理のフローチャートである。
【０１２６】
まず、ＯＳ１１３は、アプリケーションプログラム１１５、１１６からファイルライト要求を受けると、ＦＣＣＴ−Ｓの所有１１１４及びＦＣＣＴ−Ｎの所有２１１４を参照する（Ｓ１２１）。すなわち、ライト要求に係るファイルキャッシュの情報を記憶するサーバを特定し、当該サーバにライト要求に係るファイルの所有の有無を問い合わせて、当該ファイルのキャッシュを所有しているサーバを見つける。また、ライト要求に係るファイルキャッシュの情報を記憶するＮＡＳヘッドを特定し、当該ＮＡＳヘッドにライト要求に係るファイルの所有の有無を問い合わせて、当該ファイルのキャッシュを所有しているＮＡＳヘッドを見つける。
【０１２７】
また、ＦＣＣＴ−Ｓのアクセス回数１１１５、１１１６を参照する。すなわち、ライト要求に係るファイルキャッシュの情報を記憶するサーバに、ライト要求に係るアクセス回数を問い合わせる。
【０１２８】
次に、ＯＳ１１３は、ＦＣＣＴ−Ｓのロック状態１１１３を参照して、ライト要求に係るファイルがライトロック中であるか否か、またリードロック中であるか否かを判定する（Ｓ１２２）。
【０１２９】
その結果、ライト要求に係るファイルがライトロック中又はリードロック中であれば、ケース１１であると判定する。ケース１１の場合、他のアプリケーションプログラム（他のサーバ）が、当該ファイルに書き込み又は読み出し処理をしているので、ステップＳ１２１に戻り、これらのロックが解除されるまで待機する。なお、この場合、当該ファイルへのアクセスがロック中であることを報知して、エラーによる終了をさせてもよい。
【０１３０】
一方、ライト要求に係るファイルがライトロック中でも、リードロック中でもなければ、当該ファイルに書き込むことに支障がないので、当該ファイルをライトロック状態に設定する（Ｓ１２３）。このため、他のサーバ及び全てのＮＡＳヘッドに対して、ライトロックロック設定信号を送信する。これによって、他のアプリケーションプログラムが、当該ファイルを読み出して、ファイルの読み出し中にファイルの内容が変更される不整合が発生しなくなる。
【０１３１】
次に、ステップＳ１２１でＦＣＣＴ−Ｓの所有１１１４及びＦＣＣＴ−Ｎの所有２１１４を参照した結果を用いて、発見されたサーバ及びＮＡＳヘッドが所有するファイルキャッシュを無効化する（Ｓ１２４）。すなわち、発見されたサーバ及びＮＡＳヘッドにキャッシュされているファイルの削除信号を送信する。
【０１３２】
次に、ライト要求に係るファイルを、自サーバのファイルキャッシュに書き込む（Ｓ１２５）。この書込処理はケース１２に相当する。この自サーバのファイルキャッシュへの書き込みによって、サーバは、ディスク装置への書込が終了したと判定する。
【０１３３】
次に、以下の条件１の全てが成立しているか否かを各サーバ毎に判定する（Ｓ１２６）。
（１−１）リード回数が所定値以上
（１−２）ライト回数が所定値以上
（１−３）ファイルサイズが所定値以下
その結果、条件１の全てを満たしていれば、ケース１３であると判定する。ケース１３では、条件１を満たした他のサーバに当該ファイルを転送し、他のサーバのキャッシュメモリに当該ファイルを書き込む（Ｓ１２７）。一方、条件１の一つでも満たしていないサーバには当該ファイルを転送せず、ステップＳ１２８に進む。
【０１３４】
ステップＳ１２８では、ＦＣＣＴ−Ｎのアクセス回数２１１５、２１１６を参照する。すなわち、ライト要求に係るファイルキャッシュの情報を記憶するＮＡＳヘッドを特定し、当該ＮＡＳヘッドにライト要求に係るファイルのアクセス回数を問い合わせる。
【０１３５】
次に、以下の条件２の全てが成立しているか否かを各ＮＡＳヘッド毎に判定する（Ｓ１２９）。
（２−１）リード回数が所定値以上
（２−２）ライト回数が所定値以上
（２−３）ファイルサイズが所定値以下
なお、条件２の判定で用いられるリード回数及びライト回数は、当該ＮＡＳヘッドにおけるファイルのアクセス回数である。すなわち、当該ファイルのアクセス頻度が高ければ、他のＮＡＳヘッドにファイルキャッシュを冗長的に持たせることが有効なので、当該ファイルを他のＮＡＳヘッドに転送する。
【０１３６】
その結果、条件２の全てを満たしていれば、ケース１４であると判定する。ケース１４では、条件２を満たしたＮＡＳヘッドに当該ファイルを転送し、当該ＮＡＳヘッドのキャッシュメモリに当該ファイルを書き込む（Ｓ１３０）。一方、条件２の一つでも満たしていないＮＡＳヘッドには当該ファイルを転送せず、ステップＳ１３１に進む。
【０１３７】
その後、キャッシュに書き込まれたファイルのデータを、そのファイルが格納されているディスク装置が接続されているＮＡＳヘッドに転送する。そして、そのファイルのデータをディスク装置に書き込む（Ｓ１３１）。
【０１３８】
その後、ライトロックを解除する（Ｓ１３２）。このため、他のサーバ及び全てのＮＡＳヘッドに対して、ライトロック解除信号を送信する。これによって、他のアプリケーションプログラムからの当該ファイルへのリードアクセスが許可される。
【０１３９】
なお、ステップＳ１２６、Ｓ１２９において、アクセス回数及びファイルサイズの各々と所定値との比較結果によらず、ファイルサイズとアクセス回数との双方を考慮してキャッシュ間の転送を制限してもよい。例えば、アクセス回数／ファイルサイズが所定の閾値を超えたもののみキャッシュ間を転送してもよい。
【０１４０】
図１３は、第１の実施の形態のサーバの障害処理手順のシーケンス図である。
【０１４１】
サーバ１〜サーバ４は、クラスタを構成している。各サーバは、所定のタイミング（例えば、２秒毎等の周期的）に、aliveメッセージを送信する。このaliveメッセージは、クラスタを構成する全てのサーバに同報してもよい。また、予め定めた順序で他のサーバにaliveメッセージを転送してもよい。
【０１４２】
各サーバは、aliveメッセージを受信することによって、当該メッセージを送信したサーバが稼働中であることが分かる。また、aliveメッセージを所定時間以上受信しないことによって、サーバに障害が発生したことが分かる。
【０１４３】
サーバ１に障害が発生すると、サーバ１からのaliveメッセージが途絶する。これによって、サーバ２は、サーバ１に障害が発生したこと検出する（Ｓ２０１）。
【０１４４】
次に、サーバ２は、サーバ１が管理しているファイルキャッシュを無効化する（Ｓ２０２）。例えば、図４に示す場合には、サーバ１がファイルキャッシュ（ＦＣ１）を管理しているので、このＦＣ１を無効化する。なお、サーバ２はＦＣ１を所有していないため、無効化するファイルキャッシュはない。
【０１４５】
以上説明したＳ２０１〜Ｓ２０２の処理は、サーバ３及びサーバ４でも実行される。
【０１４６】
次に、サーバ３は、再構築されたＦＣＣＴ−Ｓを参照して、サーバ１が所有していたファイルと重複度が高いサーバを引継サーバ特定する（Ｓ３０３）。この引継サーバの特定は、業務を引き継ぐサーバのみで実行すればよい。
【０１４７】
その後、特定された引継サーバ３は、クラスタソフトウェアによって、サーバ１で稼動していたアプリケーションプログラムを起動し、サーバ１で提供されていた業務を行う（Ｓ３０４）。
【０１４８】
図１４は、第１の実施の形態のＮＡＳヘッドの障害処理手順のシーケンス図である。
【０１４９】
ＮＡＳヘッド１〜ＮＡＳヘッド３は、クラスタを構成している。各ＮＡＳヘッドは、所定のタイミング（例えば、２秒毎等の周期的）に、aliveメッセージを送信する。このaliveメッセージは、クラスタを構成する全てのＮＡＳヘッドに同報してもよい。また、予め定めた順序で他のＮＡＳヘッドにaliveメッセージを転送してもよい。
【０１５０】
各ＮＡＳヘッドは、aliveメッセージを受信することによって、当該メッセージを送信したＮＡＳヘッドが稼働中であることが分かる。また、aliveメッセージを所定時間以上受信しないことによって、ＮＡＳヘッドに障害が発生したことが分かる。
【０１５１】
ＮＡＳヘッド１に障害が発生すると、ＮＡＳヘッド１からのaliveメッセージが途絶する。これによって、ＮＡＳヘッド２は、ＮＡＳヘッド１に障害が発生したこと検出する（Ｓ２１１）。
【０１５２】
次に、ＮＡＳヘッド２は、ＮＡＳヘッド１が管理しているファイルキャッシュを無効化する（Ｓ２１２）。例えば、図４に示す場合には、ＮＡＳヘッド１がファイルキャッシュ（ＦＣ１）を管理しているので、このＦＣ１を無効化する。なお、ＮＡＳヘッド２はＦＣ１を所有していないため、無効化するファイルキャッシュはない。
【０１５３】
以上説明したＳ２１１〜Ｓ２１２の処理は、ＮＡＳヘッド３でも実行される。
【０１５４】
次に、ＮＡＳヘッド３は、再構築されたＦＣＣＴ−Ｎを参照して、ＮＡＳヘッド１が所有していたファイルと重複度が高いＮＡＳヘッドを引継ＮＡＳヘッド特定する（Ｓ３１３）。この引継ＮＡＳヘッドの特定は、業務を引き継ぐＮＡＳヘッドのみで実行すればよい。
【０１５５】
その後、特定された引継ＮＡＳヘッド３は、クラスタソフトウェアによって、ＮＡＳヘッド１に接続されているディスク装置に格納されていたデータをコピーし、ＮＡＳヘッド１が提供していたデータを提供する（Ｓ３１４）。
【０１５６】
以上説明したように、本発明の第１の実施の形態では、サーバは複数のサーバから構成されるクラスタシステムであり、ストレージ装置は複数のＮＡＳヘッドとディスク装置から構成する。サーバ及びＮＡＳヘッドの各々は、ファイルキャッシュのアクセス状況を記憶するファイルキャッシュ制御テーブル（ＦＣＣＴ）を備える。そして、サーバ間、ＮＡＳヘッド間、及びサーバとＮＡＳヘッドとの間でファイルキャッシュのアクセス状況を交換し、ＦＣＣＴに記憶する。サーバは、ファイル書込時に、ＦＣＣＴの内容を参照し、他のサーバがアクセスする可能性が高いファイルは当該他のサーバに転送し、キャッシュメモリに格納する。同様に、ＮＡＳヘッドも他のＮＡＳヘッドにファイルキャッシュを転送する。よって、ファイルキャッシュ制御テーブルによって、ＮＡＳヘッドとサーバ間でファイルキャッシュを連携させるので、ディスク装置へのアクセスを減らし、アクセス性能を向上することができる。また、サーバ又はＮＡＳで障害が発生しても、他の装置が予備的なファイルのキャッシュを所有しているため、切替時間の短縮によって性能低下を防止でき、可用性を向上することができる。
【０１５７】
また、選択的にファイルをキャッシュに格納するので、ファイルキャッシュを最適に冗長化できる。
【０１５８】
（第２実施形態）
本発明の第２の実施の形態の計算機システムは、サーバ群１の中に、共通待機サーバ１５を備える。
【０１５９】
図１５は、第２の実施の形態の計算機システムのハードウェア構成を示すブロック図である。
【０１６０】
第２の実施の形態の計算機システムは、サーバ群１、ＮＡＳ（Network Attached Storage）２及びネットワーク３を備える。
【０１６１】
サーバ群１は、複数のサーバ１１〜１３及びサーバ１５を備える。このうち、現用サーバ１１〜１３は現実に業務を行う現用サーバであり、サーバ１５は障害発生時に業務を引き継ぐ共通待機サーバである。なお、共通待機サーバは１台を図示するが、２台以上の共通待機サーバを備えてもよい。
【０１６２】
現用サーバ１１〜１３及び共通待機サーバ１５は、インタコネクト線１９によって内部接続されており、クラスタを構成している。
【０１６３】
現用サーバ１１は、ファイルキャッシュ制御テーブル（ＦＣＣＴ−Ｓ）１１１及びファイルキャッシュ１１２を備える。なお、現用サーバ１２、１３及び共通待機サーバ１５も、現用サーバ１１と同じ構成を有する。
【０１６４】
ファイルキャッシュ１１２には、現用サーバ１１がアクセスしたファイルが一時的に格納される。ＦＣＣＴ−Ｓ１１１は、ファイルキャッシュ１１２に格納されたファイルの情報を格納する。すなわち、ＦＣＣＴ−Ｓ１１１は、ファイルのアクセス履歴を管理する（図５参照）。
【０１６５】
現用サーバ１１のファイルキャッシュ１１２、現用サーバ１２のファイルキャッシュ１２２及び現用サーバ１３のファイルキャッシュ１３２は、互いに連携して現用のグローバルキャッシュを構成している。現用サーバ１１のファイルキャッシュ１１２、現用サーバ１２のファイルキャッシュ１２２及び現用サーバ１３のファイルキャッシュ１３２は、互いに連携して現用のグローバルキャッシュを構成している。
【０１６６】
第２の実施の形態のＦＣＣＴ−Ｓは、現用サーバ１１〜１３に分散して格納されている。すなわち、各ファイルキャッシュの情報は特定の一つのサーバに格納されている。各サーバは、どのファイルキャッシュの情報が、どのサーバに格納されているかを示すポインタを格納している。
【０１６７】
例えば、ファイルキャッシュの情報をどのサーバに格納するかは、各サーバが順に格納するように、ラウンドロビンによって定めてもよい。また、そのファイルを最初にキャッシュメモリに格納したサーバが、当該ファイルキャッシュの情報を格納してもよい。
【０１６８】
共通待機サーバ１５は、ファイルキャッシュ制御テーブル（ＦＣＣＴ−Ｓ）１５１及びファイルキャッシュ１５２を備える。
【０１６９】
ファイルキャッシュ１５２には、現用サーバ１１〜１３がアクセスした全てのファイルが一時的に格納される。ＦＣＣＴ−Ｓ１５１は、ファイルキャッシュ１５２に格納されたファイルの情報を格納する。すなわち、ＦＣＣＴ−Ｓ１５１は、全現用サーバのファイルのアクセス履歴を管理する（図５参照）。共通待機サーバ１５のファイルキャッシュ１５２は、待機のグローバルキャッシュを構成している。
【０１７０】
ＮＡＳ２は、ＮＡＳヘッド２１〜２３及びディスク装置２４〜２６を備える。ＮＡＳヘッド２１は、ファイルキャッシュ制御テーブル（ＦＣＣＴ−Ｎ）２１１及びファイルキャッシュ２１２を備える。また、ＮＡＳヘッド２１には、ディスク装置２４が接続されている。
【０１７１】
ファイルキャッシュ２１２には、サーバ群１からアクセスされたファイルが一時的に格納される。ＦＣＣＴ−Ｎ２１１は、ファイルキャッシュ２１２に格納されたファイルを管理する。すなわち、ＦＣＣＴ−Ｎ２１１は、ファイルのアクセス履歴を管理する。
なお、ＮＡＳヘッド２２、２３も、ＮＡＳヘッド２１と同じ構成を有する。
【０１７２】
ネットワーク３は、サーバ群１の各現用サーバ１１〜１３、共通待機サーバ１５及びＮＡＳ２のＮＡＳヘッド２１〜２３を接続する。ネットワーク３は、例えば、ＴＣＰ／ＩＰプロトコルで通信可能なイーサネットによって構成されるＬＡＮである。
【０１７３】
図１６は、第２の実施の形態のリード処理のアクセス順序を示す図である。
【０１７４】
図１６では、現用サーバ１１がファイルの読み出し要求元で、目的のファイルはＮＡＳヘッド２に接続されているディスク装置２５に格納されている場合について説明する。
【０１７５】
まず、ファイルがリードロック状態になければ、自サーバのファイルキャッシュを確認する。そして、目的のファイルが自サーバのファイルキャッシュに格納されていれば、当該ファイルをファイルキャッシュ１１１から読み出す（ケース２２）。
【０１７６】
目的のファイルが自サーバのファイルキャッシュに格納されていなければ、共通待機サーバ１５が稼動しているかを確認した後、共通待機サーバ１５にアクセスし、当該ファイルをファイルキャッシュ１５２から読み出す（ケース２３）。
【０１７７】
共通待機サーバ１５が稼動していなければ、目的のファイルキャッシュの情報が書き込まれたＦＣＣＴ−Ｓが格納されている現用サーバ２を特定し（１）、目的のファイルのＦＣＣＴ−Ｓの所有データを参照し（２）、目的のファイルのキャッシュを所有する現用サーバ３を特定する。そして、目的のファイルのキャッシュを所有する現用サーバ３にアクセスし（３）、当該ファイルをファイルキャッシュ１３２から読み出す（ケース２４）。
【０１７８】
目的のファイルがいずれの現用サーバのファイルキャッシュにも格納されていなければ、目的のファイルキャッシュの情報が書き込まれたＦＣＣＴ−Ｎが格納されている（目的のファイルが格納されているディスク装置２５に接続された）ＮＡＳヘッド２を特定し（４）、そのＮＡＳヘッド２が目的のファイルのキャッシュを所有するか否かを判定する。そして、ＮＡＳヘッド２が、目的のファイルのキャッシュを所有していれば、ＮＡＳヘッド２のファイルキャッシュから当該ファイルをファイルキャッシュ２２２から読み出す（ケース２５）。
【０１７９】
ＮＡＳヘッド２が目的のファイルのキャッシュを所有していなければ、ＦＣＣＴ−Ｎを参照し、目的のファイルのキャッシュを所有している他のＮＡＳヘッド１を特定する。そして、目的のファイルのキャッシュを所有するＮＡＳヘッド１にアクセスし（５）、当該ファイルをファイルキャッシュ２１２から読み出す（ケース２６）。
【０１８０】
いずれのＮＡＳヘッドも目的のファイルのキャッシュを所有していなければ。ＮＡＳヘッド２を介してディスク装置２５にアクセスし、当該ファイルをディスク装置２５から読み出す（ケース２７）。
【０１８１】
このように、現用サーバは、読み出したファイルを、現用グローバルキャッシュに格納する。また、現用サーバが読み出したファイルは、待機グローバルキャッシュには格納しない（後述するように、現用サーバが書き込んだファイルは、待機グローバルキャッシュに格納される）。
【０１８２】
図１７は、第２の実施の形態のリード処理のフローチャートである。
【０１８３】
ステップＳ１４１からステップＳ１４４の処理は、前述した第１の実施の形態のステップＳ１０１からステップＳ１１４の処理と同じであるため、その詳細な説明は省略する。
【０１８４】
まず、ＯＳ１１３はＦＣＣＴ−Ｓの所有１１１４を参照する（Ｓ１４１）。すなわち、ＯＳ１１３は、アプリケーションプログラム１１５、１１６からファイルリード要求を受けると、ＦＣＣＴ−Ｓのロック状態１１１３を参照して、リード要求に係るファイルがライトロック中であるか否かを判定する（Ｓ１４２）。
【０１８５】
その結果、リード要求に係るファイルがライトロック中であれば、ケース２１であると判定し、ライトロックが解除されるまで待機する。一方、リード要求に係るファイルがライトロック中でなければ、当該ファイルをリードロック状態に設定する（Ｓ１４３）。
【０１８６】
次に、リード要求に係るファイルが、自サーバのファイルキャッシュに格納されているか否かを判定し（Ｓ１４４）、当該ファイルが自サーバのファイルキャッシュに格納されていれば、ケース２２であると判定し、自サーバのファイルキャッシュから当該ファイルを読み出す（Ｓ１５３）。
【０１８７】
一方、リード要求に係るファイルが、自サーバのファイルキャッシュに格納されていなければ、ステップＳ１４５に進む。
【０１８８】
ステップＳ１４５では、共通待機サーバ１５が正常に稼働しているか否かを判定する。例えば、後述するように、共通待機サーバが縮退モードにある場合（図２０のＳ５０３参照）、共通待機サーバ１５は稼働していない。
【０１８９】
その結果、共通待機サーバ１５が稼働状態にあれば、ケース２３であると判定する。共通待機サーバ１５のファイルキャッシュ１５２には、現用サーバ１１〜１３が書き込んだ全てのファイルのキャッシュが格納されている。よって、ケース２３の場合は、共通待機サーバ１５にアクセスし、ファイルキャッシュ１５２から当該ファイルを読み出す（Ｓ１５４）。その後ステップＳ１５１に進む。
【０１９０】
一方、共通待機サーバ１５が正常に稼働していなければ、ステップＳ１４６に進む。
【０１９１】
ステップＳ１４６からステップＳ１５２の処理は、前述した第１の実施の形態のステップＳ１０５からステップＳ１１１の処理と同じであるため、その詳細な説明は省略する。
【０１９２】
すなわち、当該ファイルが他のサーバのファイルキャッシュに格納されているか否かを判定し（Ｓ１４６）、当該ファイルが他のサーバのファイルキャッシュに格納されていれば、ケース２４であると判定し、当該他のサーバのファイルキャッシュから当該ファイルを読み出す（Ｓ１５５）。
【０１９３】
一方、リード要求に係るファイルが、他現用サーバのファイルキャッシュに格納されていなければ、ステップＳ１０６に進む。すなわち、リード要求に係るファイルは、いずれの現用サーバ１１〜１３及び共通待機サーバ１５のファイルキャッシュにも格納されていない状態であると判定する。
【０１９４】
次に、ＮＡＳヘッドのＦＣＣＴ−Ｎの所有２１１４を参照し（Ｓ１４７）、リード要求に係るファイルが、当該ファイルを格納しているディスク装置に接続されているＮＡＳヘッドのファイルキャッシュに格納されているか否かを判定する（Ｓ１４８）。
【０１９５】
その結果、当該ファイルがそのＮＡＳヘッドのファイルキャッシュに格納されていれば、ケース２５であると判定する。ケース２５の場合、当該ＮＡＳヘッドのファイルキャッシュから当該ファイルを読み出す（Ｓ１５６）。
【０１９６】
次に、当該ファイルが他のＮＡＳヘッドのファイルキャッシュに格納されているか否かを判定し（Ｓ１４９）、当該ファイルが他のＮＡＳヘッドのファイルキャッシュに格納されていれば、ケース２６であると判定し、当該他ＮＡＳヘッドのファイルキャッシュから当該ファイルを読み出す（Ｓ１５７）。
【０１９７】
一方、リード要求に係るファイルが、他のＮＡＳヘッドのファイルキャッシュに格納されていなければ、リード要求に係るファイルはいずれのサーバのファイルキャッシュにも、いずれのＮＡＳヘッドのファイルキャッシュにも格納されていない状態（ケース２７）であると判定し、リード要求に係るファイルをディスク装置から読み出す（Ｓ１５０）。
【０１９８】
その後、ＦＣＣＴ−Ｓのリード回数及びＦＣＣＴ−Ｎのリード回数を加算する（Ｓ１５１）。
【０１９９】
その後、リードロックを解除する（Ｓ１５２）。
【０２００】
図１８は、第２の実施の形態のライト処理のアクセス順序を示す図である。
【０２０１】
図１８では、現用サーバ１１がファイルの書き込み要求元で、目的のファイルはディスク装置２５（ＮＡＳヘッド２に接続されているディスク装置）に格納されている場合について説明する。
【０２０２】
まず、ファイルがロック状態になければ、書込対象のファイルを自サーバのファイルキャッシュに書き込む（ケース３２）。
【０２０３】
次に、書込対象のファイルを共通待機サーバ１５に転送し、キャッシュメモリ１５２に当該ファイルを格納する（ケース３３）。
【０２０４】
目的のファイルが他のサーバのファイルキャッシュに格納する条件を満たせば、条件を満たしたサーバに当該ファイルを転送し、他のサーバのキャッシュメモリに当該ファイルを格納する（ケース３４）。
【０２０５】
また、目的のファイルがＮＡＳヘッドのファイルキャッシュに格納する条件を満たせば、条件を満たしたＮＡＳヘッドに当該ファイルを転送し、当該ＮＡＳヘッドのキャッシュメモリに当該ファイルを格納する（ケース３５）。
【０２０６】
また、現用サーバ１１のキャッシュメモリに格納されたファイルは、そのファイルの格納場所のディスク装置が接続されているＮＡＳヘッドに転送され、ファイルがディスク装置に書き込まれる（ケース３６）。
【０２０７】
本発明の実施の形態では、キャッシュに格納されたファイルを共通待機サーバに転送し、待機系のグローバルキャッシュを構成する。また、サーバ間で転送し、サーバ間でキャッシュを冗長化する。同様に、キャッシュに格納されたファイルをＮＡＳヘッドに転送し、ＮＡＳヘッド間でもキャッシュを冗長化する。
【０２０８】
図１９は、第２の実施の形態のライト処理のフローチャートである。
【０２０９】
ステップＳ１６１からステップＳ１６５の処理は、前述した第１の実施の形態のステップＳ１２１からステップＳ１２５の処理と同じであるため、その詳細な説明は省略する。
【０２１０】
まず、ＯＳ１１３は、アプリケーションプログラム１１５、１１６からファイルライト要求を受けると、ＦＣＣＴ−Ｓの所有１１１４及びＦＣＣＴ−Ｎの所有２１１４を参照する（Ｓ１６１）。
【０２１１】
そして、ＦＣＣＴ−Ｓのロック状態１１１３を参照して、ライト要求に係るファイルがライトロック中であるか否か、またリードロック中であるか否かを判定する（Ｓ１６２）。
【０２１２】
その結果、ライト要求に係るファイルがライトロック中又はリードロック中であれば、ケース３１であると判定し、これらのロックが解除されるまで待機する。一方、ライト要求に係るファイルがライトロック中でも、リードロック中でもなければ、当該ファイルをライトロック状態に設定する（Ｓ１６３）。
【０２１３】
次に、ステップＳ１６１でＦＣＣＴ−Ｓの所有１１１４及びＦＣＣＴ−Ｎの所有２１１４を参照した結果を用いて、発見されたサーバ及びＮＡＳヘッドが所有している当該ファイルのキャッシュを無効化する（Ｓ１６４）。
【０２１４】
次に、ライト要求に係るファイルを、自サーバのファイルキャッシュに書き込む（Ｓ１６５）。この書込処理はケース３２に相当する。その後、ステップＳ１６６に進む。
【０２１５】
ステップＳ１６６では、共通待機サーバ１５が正常に稼働しているか否かを判定する。例えば、後述するように、共通待機サーバが縮退モードにある場合（図２０のＳ５０３参照）、共通待機サーバ１５は稼働していない。
【０２１６】
その結果、共通待機サーバ１５が稼働状態にあれば、ケース３３であると判定する。
共通待機サーバ１５のファイルキャッシュ１５２には、現用サーバ１１〜１３が書き込んだ全てのファイルのキャッシュが格納されている。よって、ケース３３の場合は、共通待機サーバ１５にアクセスし、ファイルキャッシュ１５２に当該ファイルを書き込む（Ｓ１６７）。その後ステップＳ１６８に進む。
【０２１７】
一方、共通待機サーバ１５が正常に稼働していなければ、ステップＳ１６８に進む。すなわち、リード要求に係るファイルは、いずれのサーバのファイルキャッシュにも格納されていない状態であると判定される。
【０２１８】
ステップＳ１６８からステップＳ１７４の処理は、前述した第１の実施の形態のステップＳ１２６からステップＳ１３２の処理と同じであるため、その詳細な説明は省略する。
【０２１９】
すなわち、条件１の全てが成立しているか否かを各サーバ毎に判定し（Ｓ１６８）、条件１の全てを満たした他のサーバのキャッシュメモリに当該ファイルを書き込む（Ｓ１６９）。
【０２２０】
その後、ＦＣＣＴ−Ｎのアクセス回数２１１５、２１１６を参照する（Ｓ１７０）。次に、条件２の全てが成立しているか否かを各ＮＡＳヘッド毎に判定し（Ｓ１７１）、条件２の全てを満たしたＮＡＳヘッドのキャッシュメモリに当該ファイルを書き込む（Ｓ１７２）。
【０２２１】
その後、そのファイルをディスク装置に書き込み（Ｓ１７３）、ライトロックを解除する（Ｓ１７４）。
【０２２２】
次に、サーバの障害処理手順について説明する。
【０２２３】
図２０は、第２の実施の形態のサーバの障害処理手順のシーケンス図である。
【０２２４】
各現用サーバ１１〜１３は、所定のタイミング（例えば、２秒毎等の周期的）に、aliveメッセージを送信する。共通待機サーバ１５は、現用サーバ１１〜１３が送信したaliveメッセージを受信することによって、当該メッセージを送信したサーバが稼働中であることが分かる。また、共通待機サーバ１５は、aliveメッセージを所定時間以上受信しないことによって、サーバに障害が発生したことが分かる。
【０２２５】
サーバ１に障害が発生すると、サーバ１からのaliveメッセージが途絶する。これによって、共通待機サーバ１５は、サーバ１に障害が発生したこと検出する（Ｓ５０１）。
【０２２６】
次に、共通待機サーバ１５は、サーバ１が所有していないファイルキャッシュを無効化する。図１５に示す状態では、ＦＣ３及びＦＣ４が無効化される（Ｓ５０２）。
【０２２７】
その後、共通待機サーバ１５を縮退モードに設定する（Ｓ５０３）。縮退モードとは、共通待機サーバ１５が他の現用サーバの業務を実行しており、共通待機サーバ１５が存在しない状態である。
【０２２８】
その後、特定された共通待機サーバ１５は、クラスタソフトウェアによって、サーバ１で稼動していたアプリケーションプログラムを起動し、サーバ１で提供されていた業務を行う（Ｓ５０４）。
【０２２９】
以上説明したように本発明の第２の実施の形態では、複数の現用サーバ及び１台以上の待機サーバを備え、待機サーバによる待機グローバルキャッシュを構成した。よって、障害発生時に待機グローバルキャッシュを使用することができ、障害発生時の切替え時間を短縮して、可用性を向上することができる。
【図面の簡単な説明】
【０２３０】
【図１】第１の実施の形態の計算機システムのハードウェア構成を示すブロック図である。
【図２】第１の実施の形態のサーバの構成を示すブロック図である。
【図３】第１の実施の形態のＮＡＳヘッドの構成を示すブロック図である。
【図４】第１の実施の形態に係る発明の特徴の説明図である。
【図５】第１の実施の形態のＦＣＣＴ−Ｓの構成図である。
【図６】第１の実施の形態のＦＣＣＴ−Ｎの構成図である。
【図７】第１の実施の形態のリード処理におけるキャッシュファイルの所有状況による動作の場合    分けの説明図である。
【図８】第１の実施の形態の各ケースにおけるリード処理のアクセス順序を示す図である。
【図９】第１の実施の形態のリード処理のフローチャートである。
【図１０】第１の実施の形態のライト処理におけるキャッシュファイルの所有状況による動作の場    合分けの説明図である。
【図１１】第１の実施の形態の各ケースにおけるリード処理のアクセス順序を示す図である。
【図１２】第１の実施の形態のライト処理のフローチャートである。
【図１３】第１の実施の形態のサーバの障害処理手順のシーケンス図である。
【図１４】第１の実施の形態のＮＡＳヘッドの障害処理手順のシーケンス図である。
【図１５】第２の実施の形態の計算機システムのハードウェア構成を示すブロック図である。
【図１６】第２の実施の形態のリード処理のアクセス順序を示す図である。
【図１７】第２の実施の形態のリード処理のフローチャートである。
【図１８】第２の実施の形態のライト処理のアクセス順序を示す図である。
【図１９】第２の実施の形態のライト処理のフローチャートである。この処理によって、各ケース    に区分けされたライト処理が実現される。
【図２０】第２の実施の形態のサーバの障害処理手順のシーケンス図である。
【符号の説明】
【０２３１】
１          サーバ群
１１〜１４  サーバ（現用サーバ）
１５        共通待機サーバ
１１１、１２１、１３１、１４１  ファイルキャッシュ
１１２、１２２、１３２、１４２  ファイルキャッシュ制御テーブル（ＦＣＣＴ−Ｓ）
２          ＮＡＳ
２１〜２３  ＮＡＳヘッド
２１１、２２１、２３１  ファイルキャッシュ
２１２、２２２、２３２  ファイルキャッシュ制御テーブル（ＦＣＣＴ−Ｎ）
２４、２５、２６  ディスク装置
【図１】
2006293593.tif 000003
【図２】
2006293593.tif 000004
【図３】
2006293593.tif 000005
【図４】
2006293593.tif 000006
【図５】
2006293593.tif 000007
【図６】
2006293593.tif 000008
【図７】
2006293593.tif 000009
【図８】
2006293593.tif 000010
【図９】
2006293593.tif 000011
【図１０】
2006293593.tif 000012
【図１１】
2006293593.tif 000013
【図１２】
2006293593.tif 000014
【図１３】
2006293593.tif 000015
【図１４】
2006293593.tif 000016
【図１５】
2006293593.tif 000017
【図１６】
2006293593.tif 000018
【図１７】
2006293593.tif 000019
【図１８】
2006293593.tif 000020
【図１９】
2006293593.tif 000021
【図２０】
2006293593.tif 000022