(57)【要約】【課題】フェイルオーバ発生時のディスクアクセス負荷を抑制することができるストレージシステム、ファイルサーバ、キャッシュ管理方法およびプログラムを提供する。【解決手段】複数のファイルサーバ１０−１〜１０−ｎを備え、ファイルサーバは、他のファイルサーバと共有するファイルシステム領域に格納されたファイルに対するアクセス要求を受け付けた場合に、当該アクセス要求に対応するページキャッシュを、当該ファイルの識別情報および当該ファイルシステム領域の識別情報とともに他のファイルサーバに転送するキャッシュ管理部１１を含み、キャッシュ管理部１１は、他のファイルサーバから受信した、ページキャッシュとファイルの識別情報とファイルシステム領域の識別情報とを対応付けて保持し、当該ファイルシステム領域に格納された当該ファイルに対するアクセス要求を受け付けた場合には、当該ページキャッシュを使用して応答する。【選択図】図８
2014191754.tif 000002
【特許請求の範囲】
【請求項１】
複数のファイルサーバを備え、
前記ファイルサーバは、
他のファイルサーバと共有するファイルシステム領域に格納されたファイルに対するアクセス要求を受け付けた場合に、当該アクセス要求に対応するページキャッシュを、当該ファイルの識別情報および当該ファイルシステム領域の識別情報とともに前記他のファイルサーバに転送するキャッシュ管理部を含み、
前記キャッシュ管理部は、前記他のファイルサーバから受信した、ページキャッシュとファイルの識別情報とファイルシステム領域の識別情報とを対応付けて保持し、前記他のファイルサーバの停止時に、当該ファイルシステム領域に格納された当該ファイルに対するアクセス要求を受け付けた場合には、当該ページキャッシュを使用して応答する
ことを特徴とするストレージシステム。
【請求項２】
キャッシュ管理部は、
他のファイルサーバと共有するファイルシステム領域ごとに、ページキャッシュを管理するためのリードキャッシュテーブルを作成し、ファイルシステム領域に格納されたファイルへアクセス要求があった場合に、当該アクセス要求に対応するファイルとページキャッシュとを特定可能な情報を含むエントリを前記リードキャッシュテーブルに登録するキャッシュ作成部と、
前記リードキャッシュテーブルに登録された各エントリを参照し、各エントリに対応するページキャッシュを、前記他のファイルサーバに転送するキャッシュ転送部とを含む
請求項１に記載のストレージシステム。
【請求項３】
キャッシュ管理部は、
他のファイルサーバからページキャッシュとファイルの識別情報とファイルシステム領域の識別情報とを受信すると、当該ファイルシステム領域に対応するリードキャッシュテーブルを作成し、当該ファイルと当該ページキャッシュとを特定可能な情報を含むエントリを、当該リードキャッシュテーブルに登録するキャッシュコピー部を含み、
前記キャッシュ管理部は、前記他のファイルサーバが停止した場合には、前記キャッシュコピー部が登録したエントリごとに、ページキャッシュと、当該ページキャッシュに対応するファイルとを関連付ける処理を実行し、当該ページキャッシュを使用可能な状態にする
請求項２に記載のストレージシステム。
【請求項４】
他のファイルサーバと共有するファイルシステム領域に格納されたファイルに対するアクセス要求を受け付けた場合に、当該アクセス要求に対応するページキャッシュを、当該ファイルの識別情報および当該ファイルシステム領域の識別情報とともに前記他のファイルサーバに転送するキャッシュ管理部を含み、
前記キャッシュ管理部は、前記他のファイルサーバから受信した、ページキャッシュとファイルの識別情報とファイルシステム領域の識別情報とを対応付けて保持し、前記他のファイルサーバの停止時に、当該ファイルシステム領域に格納された当該ファイルに対するアクセス要求を受け付けた場合には、当該ページキャッシュを使用して応答する
ことを特徴とするファイルサーバ。
【請求項５】
キャッシュ管理部は、
他のファイルサーバと共有するファイルシステム領域ごとに、ページキャッシュを管理するためのリードキャッシュテーブルを作成し、ファイルシステム領域に格納されたファイルへアクセス要求があった場合に、当該アクセス要求に対応するファイルとページキャッシュとを特定可能な情報を含むエントリを前記リードキャッシュテーブルに登録するキャッシュ作成部と、
前記リードキャッシュテーブルに登録された各エントリを参照し、各エントリに対応するページキャッシュを、前記他のファイルサーバに転送するキャッシュ転送部とを含む
請求項４に記載のファイルサーバ。
【請求項６】
キャッシュ管理部は、
他のファイルサーバからページキャッシュとファイルの識別情報とファイルシステム領域の識別情報とを受信すると、当該ファイルシステム領域に対応するリードキャッシュテーブルを作成し、当該ファイルと当該ページキャッシュとを特定可能な情報を含むエントリを、当該リードキャッシュテーブルに登録するキャッシュコピー部を含み、
前記キャッシュ管理部は、前記他のファイルサーバが停止した場合には、前記キャッシュコピー部が登録したエントリごとに、ページキャッシュと、当該ページキャッシュに対応するファイルとを関連付ける処理を実行し、当該ページキャッシュを使用可能な状態にする
請求項５に記載のファイルサーバ。
【請求項７】
他のファイルサーバと共有するファイルシステム領域に格納されたファイルに対するアクセス要求を受け付けた場合に、当該アクセス要求に対応するページキャッシュを、当該ファイルの識別情報および当該ファイルシステム領域の識別情報とともに前記他のファイルサーバに転送し、
前記他のファイルサーバから受信した、ページキャッシュとファイルの識別情報とファイルシステム領域の識別情報とを対応付けて保持し、前記他のファイルサーバの停止時に、当該ファイルシステム領域に格納された当該ファイルに対するアクセス要求を受け付けた場合には、当該ページキャッシュを使用して応答する
ことを特徴とするキャッシュ管理方法。
【請求項８】
コンピュータに、
他のファイルサーバと共有するファイルシステム領域に格納されたファイルに対するアクセス要求を受け付けた場合に、当該アクセス要求に対応するページキャッシュを、当該ファイルの識別情報および当該ファイルシステム領域の識別情報とともに前記他のファイルサーバに転送する処理と、
前記他のファイルサーバから受信した、ページキャッシュとファイルの識別情報とファイルシステム領域の識別情報とを対応付けて保持し、前記他のファイルサーバの停止時に、当該ファイルシステム領域に格納された当該ファイルに対するアクセス要求を受け付けた場合には、当該ページキャッシュを使用して応答する処理とを実行させる
ためのキャッシュ管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数サーバでストレージを共有するストレージシステム、ストレージシステムにおけるファイルサーバ、キャッシュ管理方法およびキャッシュ管理プログラムに関する。
【背景技術】
【０００２】
クラスタ接続されたＮＡＳ（Ｎｅｔｗｏｒｋ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ）（以下、クラスタＮＡＳという。）において、あるファイルサーバ（以下、ノードともいう）が、障害発生やメンテナンス等によりサービス停止した場合、フェイルオーバにより他のノードでサービスが継続される。しかし、その場合、リードページキャッシュ（以下、単にページキャッシュという。）は、他のノードへ引き継がれない。そのため、サービスを引き継いだ他のノードは、ディスクからデータを直接読み出さなければならない。従って、フェイルオーバ時に、他のノードからのアクセスによるディスク負荷が急増し、サービスダウン等のシステム障害が発生する恐れがある。
【０００３】
また、近年、ＤＩＭＭ（Ｄｕａｌ  Ｉｎｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅ）の大容量低価格化が進み、ＮＡＳのリードページキャッシュ用のメモリが大容量化されつつある。そのような環境においてフェイルオーバが発生すると、サービスを引き継いだノードからのファイルアクセスによるディスク負荷がさらに増大し、システム障害が発生する可能性が高くなる。
【０００４】
ストレージシステムで構成変更または障害が発生した場合に、ストレージシステムの現状に合わせて、コピー先ボリュームにアクセスするための各通信パスを評価し直し、各通信パスの優先順位を再設定する方法がある（例えば、特許文献１参照。）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特表２０１２−５３１６５４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１に記載された方法は、現在使用中のアクティブパスがそのまま継続して使用される可能性を高くし、アクティブパスからスタンバイパスへのフェイルオーバの発生を抑制することができる。しかし、特許文献１に記載された方法では、フェイルオーバ発生時のディスクアクセス負荷については考慮されていない。
【０００７】
そこで、本発明は、フェイルオーバ発生時のディスクアクセス負荷を抑制することができるストレージシステム、ファイルサーバ、キャッシュ管理方法およびキャッシュ管理プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明によるストレージシステムは、複数のファイルサーバを備え、ファイルサーバは、他のファイルサーバと共有するファイルシステム領域に格納されたファイルに対するアクセス要求を受け付けた場合に、当該アクセス要求に対応するページキャッシュを、当該ファイルの識別情報および当該ファイルシステム領域の識別情報とともに他のファイルサーバに転送するキャッシュ管理部を含み、キャッシュ管理部は、他のファイルサーバから受信した、ページキャッシュとファイルの識別情報とファイルシステム領域の識別情報とを対応付けて保持し、他のファイルサーバの停止時に、当該ファイルシステム領域に格納された当該ファイルに対するアクセス要求を受け付けた場合には、当該ページキャッシュを使用して応答することを特徴とする。
【０００９】
本発明によるファイルサーバは、他のファイルサーバと共有するファイルシステム領域に格納されたファイルに対するアクセス要求を受け付けた場合に、当該アクセス要求に対応するページキャッシュを、当該ファイルの識別情報および当該ファイルシステム領域の識別情報とともに他のファイルサーバに転送するキャッシュ管理部を含み、キャッシュ管理部は、他のファイルサーバから受信した、ページキャッシュとファイルの識別情報とファイルシステム領域の識別情報とを対応付けて保持し、他のファイルサーバの停止時に、当該ファイルシステム領域に格納された当該ファイルに対するアクセス要求を受け付けた場合には、当該ページキャッシュを使用して応答することを特徴とする。
【００１０】
本発明によるキャッシュ管理方法は、他のファイルサーバと共有するファイルシステム領域に格納されたファイルに対するアクセス要求を受け付けた場合に、当該アクセス要求に対応するページキャッシュを、当該ファイルの識別情報および当該ファイルシステム領域の識別情報とともに他のファイルサーバに転送し、他のファイルサーバから受信した、ページキャッシュとファイルの識別情報とファイルシステム領域の識別情報とを対応付けて保持し、他のファイルサーバの停止時に、当該ファイルシステム領域に格納された当該ファイルに対するアクセス要求を受け付けた場合には、当該ページキャッシュを使用して応答することを特徴とする。
【００１１】
本発明によるキャッシュ管理プログラムは、コンピュータに、他のファイルサーバと共有するファイルシステム領域に格納されたファイルに対するアクセス要求を受け付けた場合に、当該アクセス要求に対応するページキャッシュを、当該ファイルの識別情報および当該ファイルシステム領域の識別情報とともに他のファイルサーバに転送する処理と、他のファイルサーバから受信した、ページキャッシュとファイルの識別情報とファイルシステム領域の識別情報とを対応付けて保持し、他のファイルサーバの停止時に、当該ファイルシステム領域に格納された当該ファイルに対するアクセス要求を受け付けた場合には、当該ページキャッシュを使用して応答する処理とを実行させることを特徴とする。
【発明の効果】
【００１２】
本発明によれば、フェイルオーバ発生時のディスクアクセス負荷を抑制することができる。
【図面の簡単な説明】
【００１３】
【図１】本発明によるストレージシステムの第１の実施形態の構成を示すブロック図である。
【図２】平常時のストレージシステムの様子を示すブロック図である。
【図３】ファイルリード時のファイルサーバの動作を示すフローチャートである。
【図４】ファイルサーバで障害が発生したときのストレージシステムの様子を示すブロック図である。
【図５】障害発生時のファイルシステムマウント処理を示すフローチャートである。
【図６】フェイルバック時のストレージシステムの様子を示すブロック図である。
【図７】フェイルバック時のファイルサーバの動作を示すフローチャートである。
【図８】本発明によるストレージシステムの最小構成を示すブロック図である。
【発明を実施するための形態】
【００１４】
実施形態１．
以下、本発明の第１の実施形態を図面を参照して説明する。
【００１５】
図１は、本発明によるストレージシステムの第１の実施形態の構成を示すブロック図である。
【００１６】
図１に示すように、ファイルサーバ３００とファイルサーバ３０１とは、クラスタ系間通信機能３５０を利用して通信可能である。クラスタ系間通信機能３５０は、ファイルサーバ間の通信を制御する。
【００１７】
ファイルサーバ３００，３０１と、クライアント３３０とは、ネットワーク３４０を介して接続される。また、ファイルサーバ３００，３０１は、共有ディスク３２０と接続される。なお、図１では、クライアント３３０が１つ例示されているが、ネットワーク３４０にはいくつクライアントが接続されていてもよい。
【００１８】
共有ディスク３２０は、ディスク装置であって、ファイルシステム領域（以下、単にファイルシステムという。）３２１とファイルシステム３２２とを含む。なお、ファイルシステムは、共有ディスクにいくつ含まれていてもよい。
【００１９】
ファイルシステム３２１は、平常時、ファイルサーバ３００にマウントされる。ファイルシステム３２２は、平常時、ファイルサーバ３０１にマウントされる。本実施形態では、ファイルシステム３２１上にファイル３２３が格納されている。また、図１に示すサーバＩＰアドレス３６０は、クライアント３３０がファイルサーバのファイル共有サービスを利用して、ファイルシステム３２１にアクセスする際に使用するＩＰアドレスである。
【００２０】
ファイルサーバ３００は、拡張キャッシュ管理部１００を有するＶＦＳ（Ｖｉｒｔｕａｌ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）２００と、クラスタ制御機能３１０とを有する。なお、ファイルサーバ３０１の構成は、ファイルサーバ３００と同様の構成であるため、説明を省略する。また、図１では、２つのファイルサーバが例示されているが、ファイルサーバはいくつあってもよい。
【００２１】
ＶＦＳ２００の拡張キャッシュ管理部１００は、他のファイルサーバとページキャッシュを共有するための拡張キャッシュ管理機能を有する。また、拡張キャッシュ管理部１００は、キャッシュ作成部１１０と、キャッシュ転送部１２０と、キャッシュコピー部１３０とを含む。
【００２２】
キャッシュ作成部１１０は、クライアント３３０からのファイルアクセスに応じて、ページキャッシュを作成する。キャッシュ作成部１１０は、ページキャッシュを作成したタイミングで、アクセス先のファイルシステムに対応するリードキャッシュテーブルがあるか否かを確認する。
【００２３】
キャッシュ作成部１１０は、リードキャッシュテーブルがなければ、リードキャッシュテーブルを作成する。リードキャッシュテーブルは、ファイルの識別情報であるインデックスノード（以下、ｉノードという。）の番号（以下、ｉノード番号という。）と、ページキャッシュを管理する情報（以下、アドレス空間（ａｄｄｒｅｓｓ＿ｓｐａｃｅ（ａｓ））構造体という。）を辿るための情報（ポインタ）とを含むエントリを登録するためのテーブルである。キャッシュ作成部１１０は、ファイルシステムごとにリードキャッシュテーブルを生成する。また、キャッシュ作成部１１０は、リードキャッシュテーブルに、対応するファイルシステムを識別するためのデバイスＩＤを格納する。
【００２４】
キャッシュ作成部１１０は、ファイルのアクセス要求があった場合には、対応するリードキャッシュテーブルに、当該ファイルに対応するｉノード番号を含むエントリがあるか否かを確認する。当該ファイルに対応するｉノード番号を含むエントリがなければ、当該エントリを追加する。
【００２５】
キャッシュ転送部１２０は、リードキャッシュテーブル１６０に格納されたデバイスＩＤと、リードキャッシュテーブル１６０のエントリに含まれるｉノード番号と、当該エントリに含まれるａｓ構造体のポインタから辿れるページキャッシュとを、他方のファイルサーバ、つまり対向するファイルサーバ３０１の拡張キャッシュ管理部１０１に、クラスタ系間通信機能３５０を利用して転送する。
【００２６】
キャッシュコピー部１３０は、対向するファイルサーバ３０１のキャッシュ転送部１２１から情報（デバイスＩＤ、ｉノード番号、ページキャッシュ）を受け取ると、新規にａｓ構造体を作成する。そして、キャッシュコピー部１３０は、新規に作成したａｓ構造体の配下に、受け取ったページキャッシュをインデックス毎に繋ぐ。具体的には、ページキャッシュのポインタをａｓ構造体に格納する。キャッシュコピー部１３０は、ｉノード番号と新規に作成したａｓ構造体へのポインタとを含むエントリを、リードキャッシュテーブル１６１に登録する。また、キャッシュコピー部１３０は、受信したデバイスＩＤをリードキャッシュテーブル１６１に格納する。
【００２７】
なお、拡張キャッシュ管理部１００、拡張キャッシュ管理部１００におけるキャッシュ作成部１１０、キャッシュ転送部１２０およびキャッシュコピー部１３０は、例えば、キャッシュ管理プログラムに従って動作するコンピュータによって実現される。この場合、ＣＰＵがキャッシュ管理プログラムを読み込み、そのプログラムに従って、拡張キャッシュ管理部１００、拡張キャッシュ管理部１００におけるキャッシュ作成部１１０、キャッシュ転送部１２０およびキャッシュコピー部１３０として動作する。また、拡張キャッシュ管理部１００、拡張キャッシュ管理部１００におけるキャッシュ作成部１１０、キャッシュ転送部１２０およびキャッシュコピー部１３０が別々のハードウェアで実現されていてもよい。
【００２８】
次に、本実施形態の動作を説明する。
【００２９】
ファイルサーバのクラスタ構成として、アクティブ−アクティブ（Ａｃｔｉｖｅ−Ａｃｔｉｖｅ）構成、アクティブ−スタンバイ（Ａｃｔｉｖｅ−Ｓｔａｎｄｂｙ）構成がある。アクティブ−アクティブ構成は、アクティブ−スタンバイ構成が２組ある構成と見なすことができる。従って、本実施形態では、クラスタ構成が、アクティブ−スタンバイ構成である場合を例にする。
【００３０】
図２は、平常時のストレージシステムの様子を示すブロック図である。
【００３１】
まず、クラスタの状態が平常時であるときに、クライアント３３０が、サーバＩＰアドレス３６０を使用して、ファイルシステム３２１上のファイル３２３を初めてリードする場合の動作を説明する。
【００３２】
図３は、ファイルリード時のファイルサーバの動作を示すフローチャートである。
【００３３】
ＶＦＳ２００は、クライアント３３０からリード要求を受け付けると、既存の機能を用いて、共有ディスク３２０にアクセスする（ステップＳ３０１）。そして、ＶＦＳ２００は、ファイル管理構造体２１０、ディエントリのキャッシュ（ディエントリキャッシュ）２２０、ｉノードのキャッシュ（ｉノードキャッシュ）２３０を作成する。ディエントリは、ファイル管理構造体とｉノードとを対応づける情報である。
【００３４】
ＶＦＳ２００は、ファイルシステム３２１を示すデバイスＩＤや、ファイル３２３を示すｉノード番号を、ｉノードキャッシュ２３０に格納する。このようにして、リード要求対象のファイル３２３の管理情報（ファイル管理構造体２１０、ディエントリキャッシュ２２０、ｉノードキャッシュ２３０）が作成される（ステップＳ３０２）。
【００３５】
ここでは、ページキャッシュが作成されていないので（ステップＳ３０３のＮｏ）、ＶＦＳ２００は、リード要求されたオフセットまでデータをディスクから読み出す（ステップＳ３０４）。これにより、ａｓ構造体１４０と、オフセットに該当するインデックスとを含むページキャッシュ１５０が作成される。ＶＦＳ２００は、作成したページキャッシュ１５０へのポインタを、ａｓ構造体１４０に格納する。また、ａｓ構造体１４０へのポインタを、ｉノードキャッシュ２３０に設定する。
【００３６】
ページキャッシュの作成が完了したタイミングで、キャッシュ作成部１１０は、ｉノードキャッシュ２３０から、デバイスＩＤ、ｉノード番号およびａｓ構造体１４０へのポインタを取得する。そして、キャッシュ作成部１１０は、取得したデバイスＩＤに対応するリードキャッシュテーブル１６０を作成する。キャッシュ作成部１１０は、作成したリードキャッシュテーブル１６０に、取得したｉノード番号とａｓ構造体１４０へのポインタとを含むエントリ１７０を追加する。
【００３７】
相手ノード（ファイルサーバ３０１）が稼働している場合には（ステップＳ３０５のＹｅｓ）、キャッシュ転送部１２０は、ファイルサーバ３０１の拡張キャッシュ管理部１０１に、ページキャッシュを、デバイスＩＤ、ｉノード番号とともに転送する（ステップＳ３０６）。
【００３８】
ステップＳ３０６の後、ＶＦＳ２００は、ページキャッシュに格納されたデータを、リード要求に対する応答として、クライアント３３０に送信する（ステップＳ３０７）。
【００３９】
なお、ステップＳ３０３において、ページキャッシュ１５０が既に作成されている場合には（ステップＳ３０３のＹｅｓ）、ステップＳ３０４〜Ｓ３０６の処理は実行されない。また、ステップＳ３０５において、相手ノードが稼働していない場合には（ステップＳ３０５のＮｏ）、ステップＳ３０６の処理は実行されない。
【００４０】
ファイルサーバ３０１の拡張キャッシュ管理部１０１、具体的にはキャッシュコピー部１３１は、ファイルサーバ３００のキャッシュ転送部１２０から、ページキャッシュ、デバイスＩＤおよびｉノード番号を受け取ると（ステップＳ３０８）、ａｓ構造体１４０に相当するａｓ構造体１４１を新規に作成する。また、受け取ったページキャッシュ（ページキャッシュ１５０）に相当するページキャッシュ１５１を作成する。キャッシュコピー部１３１は、受け取ったデバイスＩＤに対応するリードキャッシュテーブル１６１を作成する。キャッシュコピー部１３１は、リードキャッシュテーブル１６１に、受け取ったｉノード番号とａｓ構造体１４１へのポインタとを含むエントリ１７１を登録する。
【００４１】
このようにして、ファイルシステム３２１上のファイル３２３に対するページキャッシュが、ファイルサーバ３００からファイルサーバ３０１にコピーされる（ステップＳ３０９）。
【００４２】
次に、ファイルサーバ３００で障害が発生した場合の動作を説明する。
【００４３】
図４は、ファイルサーバ３００で障害が発生したときのストレージシステムの様子を示す説明図である。図５は、障害発生時のファイルシステムマウント処理を示すフローチャートである。
【００４４】
なお、図４に示すように、ファイルサーバ３００が使用できなくなった場合には、一般的なクラスタ制御により、ファイルサーバ３００の処理は、フェイルオーバされる、つまり、ファイルサーバ３００の処理は、ファイルサーバ３０１に引き継がれる。従って、ファイルシステム３２１は、ファイルサーバ３０１側にマウントされる（ステップＳ５０１）。また、サーバＩＰアドレス３６０が、ファイルサーバ３０１側に割り当てられる。
【００４５】
このとき、ファイルサーバ３０１、具体的にはＶＦＳ２０１の拡張キャッシュ管理部１０１は、ファイルシステム３２１がマウントされた後、ファイルシステム３２１のデバイスＩＤに対応するリードキャッシュテーブルを参照する（ステップＳ５０２）。
【００４６】
ここでは、デバイスＩＤに対応するリードキャッシュテーブル１６１が存在するので（ステップＳ５０３のＹｅｓ）、拡張キャッシュ管理部１０１は、さらに、リードキャッシュテーブル１６１にエントリが登録されているか否かを確認する（ステップＳ５０４）。
【００４７】
ここでは、エントリ１７１が登録されているので（ステップＳ５０４のＹｅｓ）、拡張キャッシュ管理部１０１は、エントリ１７１のｉノード番号に対応するファイルにアクセス要求があったかのように、ディスクＩ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）を行う（ステップＳ５０５）。それにより、ファイル管理情報（ファイル管理構造体２１１、ディエントリキャッシュ２２１、ｉノードキャッシュ２３１）が作成される。次に、拡張キャッシュ管理部１０１は、エントリ１７１に含まれるａｓ構造体１４１へのポインタをｉノードキャッシュ２３１に設定する（ステップＳ５０６）。
【００４８】
なお、ステップＳ５０３において、リードキャッシュテーブル１６１が存在しない場合（ステップＳ５０３のＮｏ）、拡張キャッシュ管理部１０１は処理を終了する。また、ステップＳ５０４において、エントリが登録されていない場合には（ステップＳ５０４のＮｏ）、拡張キャッシュ管理部１０１は処理を終了する。
【００４９】
ステップＳ５０６の後、拡張キャッシュ管理部１０１は、リードキャッシュテーブル１６１に未処理のエントリが他に存在するか否かを確認する（ステップＳ５０７）。未処理のエントリが存在する場合には（ステップＳ５０７のＮｏ）、拡張キャッシュ管理部１０１は、当該未処理のエントリを処理対象として（ステップＳ５０８）、ステップＳ５０５〜Ｓ６０６の処理を実行する。
【００５０】
拡張キャッシュ管理部１０１は、未処理のエントリが存在しない場合には（ステップＳ５０７のＮｏ）、ファイルシステムのマウント処理を完了する。
【００５１】
その後、例えば、クライアント３３０が、サーバＩＰアドレス３６０を使用して、ファイルシステム３２１上のファイル３２３のリード要求を行うと、ファイルサーバ３０１は、ページキャッシュ１５１を利用して応答を返す。
【００５２】
このように、フェイルオーバ後のファイルアクセスには、事前に拡張キャッシュ管理部１００、１０１間で共有していたページキャッシュが利用される。それにより、ディスクアクセス数が低減される。
【００５３】
最後に、ファイルサーバ３００が復旧しフェイルバックする時の拡張キャッシュ管理部の動作を説明する。
【００５４】
図６は、フェイルバック時のストレージシステムの様子を示すブロック図である。図７は、フェイルバック時のファイルサーバの動作を示すフローチャートである。
【００５５】
ファイルサーバ３０１のクラスタ制御機能３１１は、ファイルサーバ３００が復旧しフェイルバック可能となったことを検出すると、拡張キャッシュ管理部１０１に、フェイルバックを実行するように通知する。具体的には、サービス対象のファイルシステム３２１とサーバＩＰアドレス３６０について、フェイルバックすることを通知する（ステップＳ７０１）。
【００５６】
通知を受けた拡張キャッシュ管理部１０１は、ファイルシステム３２１のデバイスＩＤを確認する（ステップＳ７０２）。拡張キャッシュ管理部１０１は、当該デバイスＩＤに対応するリードキャッシュテーブルが存在するか否かを確認する（ステップＳ７０３）。
【００５７】
ここでは、デバイスＩＤに対応するリードキャッシュテーブル１６１が存在するので（ステップＳ７０３のＹｅｓ）、拡張キャッシュ管理部１０１は、リードキャッシュテーブル１６１にエントリが登録されているか否かを確認する（ステップＳ７０４）。
【００５８】
ここでは、エントリ１７１が存在するので（ステップＳ７０４のＹｅｓ）、拡張キャッシュ管理部１０１は、エントリ１７１についてキャッシュ転送を実行するように、キャッシュ転送部１２１に指示する。キャッシュ転送部１２１は、キャッシュ転送を実行する（ステップＳ７０５）。
【００５９】
拡張キャッシュ管理部１０１は、リードキャッシュテーブル１６１に未処理のエントリが他に存在するか否かを確認する（ステップＳ７０６）。未処理のエントリが存在する場合には（ステップＳ７０６のＮｏ）、拡張キャッシュ管理部１０１は、当該未処理のエントリを処理対象として（ステップＳ７０７）、ステップＳ７０５，Ｓ７０６の処理を実行する。
【００６０】
なお、ステップＳ７０３において、リードキャッシュテーブル１６１が存在しない場合には（ステップＳ７０３のＮｏ）、ステップＳ７０４〜Ｓ７０７の処理は実行されない。また、ステップＳ７０４において、エントリが存在しなし場合には（ステップＳ７０４のＮｏ）、ステップＳ７０５〜Ｓ７０７の処理は実行されない。
【００６１】
拡張キャッシュ管理部１０１は、すべてのエントリについて転送処理を完了すると（ステップＳ７０６のＹｅｓ）、キャッシュ転送の完了をクラスタ制御機能３１１に通知する（ステップＳ７０８）。
【００６２】
ファイルサーバ３００の拡張キャッシュ管理部１００、具体的にはキャッシュコピー部１３０は、キャッシュ転送部１２１から受け取った情報をもとに、各エントリに対応するａｓ構造体とページキャッシュを再作成する（ステップＳ７０９，Ｓ７１０）。
【００６３】
ファイルサーバ３０１のクラスタ制御機能３１１は、キャッシュ転送の完了後、既存の機能を用いてフェイルバック処理を行う。そして、クラスタ制御機能３１１は、ファイルサーバ３００側にファイルシステム３２１をマウントさせて、ファイルサーバ３００側にサーバＩＰアドレス３６０を割り当てる。
【００６４】
このとき、ファイルサーバ３００は、ファイルシステム３２１がマウントされると、図５に示すフロー従って、フェイルオーバ時と同様に処理を進める。このようにして、ファイルサーバ３００におけるキャッシュの状態が、図２に示す平常時の状態と同じ状態となる。
【００６５】
このようにして、クラスタＮＡＳのノード間でページキャッシュを共有することが可能となる。
【００６６】
以上に説明したように、本実施形態では、クラスタＮＡＳにおいて、あるノードにおけるファイル共有サービスのリードページキャッシュをコピーして別のノードに転送し、リードページキャッシュを両ノードで保持させる。このようにノード間でリードページキャッシュを共有することにより、フェイルオーバ時にファイル共有サービスが別のノードに移ったときに、リードページキャッシュを引き継ぐことが可能となる。つまり、スタンバイノードは、そのリードページキャッシュを、フェイルオーバ直後から利用することができる。従って、フェイルオーバ時のスタンバイノードから共有ディスクへのディスクアクセス負荷を低減することができる。よって、フェイルオーバ直後に発生する、共有ディスクへのディスクアクセス負荷の急増によるシステム障害を回避できる。
【００６７】
また、共有ディスクよりクライアント側に近いファイルサーバ側でキャッシュヒットを検出することができるので、共有ディスク内キャッシュにヒットする場合でも、クライアントへの応答性能を向上させることができる。
【００６８】
図８は、本発明によるストレージシステムの最小構成を示すブロック図である。図８に示すように、ストレージシステムは、複数のファイルサーバ１０−１〜１０−ｎ（図１に示すファイルサーバ３００およびファイルサーバ３０１に相当。）を備え、ファイルサーバ（図１に示すファイルサーバ３００に相当。）は、他のファイルサーバ（図１に示すファイルサーバ３０１に相当。）と共有するファイルシステム領域に格納されたファイルに対するアクセス要求を受け付けた場合に、当該アクセス要求に対応するページキャッシュを、当該ファイルの識別情報（ｉノード番号に相当。）および当該ファイルシステム領域の識別情報（デバイスＩＤに相当。）とともに他のファイルサーバに転送するキャッシュ管理部１１（図１に示すファイルサーバ３００におけるＶＦＳ２００における拡張キャッシュ管理部１００に相当。）を含み、キャッシュ管理部１１は、他のファイルサーバから受信した、ページキャッシュとファイルの識別情報とファイルシステム領域の識別情報とを対応付けて保持し、他のファイルサーバの停止時に、当該ファイルシステム領域に格納された当該ファイルに対するアクセス要求を受け付けた場合には、当該ページキャッシュを使用して応答する。
【００６９】
そのような構成によれば、ノード間でリードページキャッシュを共有することができる。従って、フェイルオーバ時にファイル共有サービスが別のノードに移ったときに、リードページキャッシュを引き継ぐことが可能となる。つまり、スタンバイノードは、そのリードページキャッシュを、フェイルオーバ直後から利用することができる。従って、フェイルオーバ時のスタンバイノードからのディスクアクセス負荷を低減することができる。
【００７０】
上記の実施形態には、以下のようなストレージシステムも開示されている。
【００７１】
（１）キャッシュ管理部１１は、他のファイルサーバと共有するファイルシステム領域ごとに、ページキャッシュを管理するためのリードキャッシュテーブルを作成し、ファイルシステム領域に格納されたファイルへアクセス要求があった場合に、当該アクセス要求に対応するファイルとページキャッシュとを特定可能な情報を含むエントリをリードキャッシュテーブルに登録するキャッシュ作成部１２（図１に示すファイルサーバ３００におけるＶＦＳ２００における拡張キャッシュ管理部１００におけるキャッシュ作成部１１０に相当。）と、リードキャッシュテーブルに登録された各エントリを参照し、各エントリに対応するページキャッシュを、他のファイルサーバに転送するキャッシュ転送部１３（図１に示すファイルサーバ３００におけるＶＦＳ２００における拡張キャッシュ管理部１００におけるキャッシュ転送部１２０に相当。）とを含むストレージシステム。
【００７２】
そのような構成によれば、ファイルシステム領域毎、ファイルアクセス毎にキャッシュを管理することができる。
【００７３】
（２）キャッシュ管理部１１は、他のファイルサーバからページキャッシュとファイルの識別情報とファイルシステム領域の識別情報とを受信すると、当該ファイルシステム領域に対応するリードキャッシュテーブルを作成し、当該ファイルと当該ページキャッシュとを特定可能な情報を含むエントリを、当該リードキャッシュテーブルに登録するキャッシュコピー部１４（図１に示すファイルサーバ３００におけるＶＦＳ２００における拡張キャッシュ管理部１００におけるキャッシュコピー部１３０に相当。）を含み、キャッシュ管理部１１は、他のファイルサーバが停止した場合には、キャッシュコピー部１４が登録したエントリごとに、ページキャッシュと、当該ページキャッシュに対応するファイルとを関連付ける処理を実行し、当該ページキャッシュを使用可能な状態にするストレージシステム。
【００７４】
そのような構成によれば、他のファイルサーバから受け取ったページキャッシュを利用して、ファイルアクセス要求に応じることができる。従って、例えば、ＮＡＳの再起動時に、リード用のページキャッシュデータが揮発した場合であっても、その後のファイルアクセスによるディスク負荷を低減することができる。
【００７５】
また、上記の実施形態には、以下のようなファイルサーバも開示されている。
【００７６】
（３）他のファイルサーバと共有するファイルシステム領域に格納されたファイルに対するアクセス要求を受け付けた場合に、当該アクセス要求に対応するページキャッシュを、当該ファイルの識別情報および当該ファイルシステム領域の識別情報とともに他のファイルサーバに転送するキャッシュ管理部１１を含み、キャッシュ管理部１１は、他のファイルサーバから受信した、ページキャッシュとファイルの識別情報とファイルシステム領域の識別情報とを対応付けて保持し、他のファイルサーバの停止時に、当該ファイルシステム領域に格納された当該ファイルに対するアクセス要求を受け付けた場合には、当該ページキャッシュを使用して応答するファイルサーバ。
【００７７】
そのような構成によれば、ノード間でリードページキャッシュ共有することができる。従って、フェイルオーバ時にファイル共有サービスが別のノードに移ったときに、リードページキャッシュを引き継ぐことが可能となる。つまり、スタンバイノードは、そのリードページキャッシュを、フェイルオーバ直後から利用することができる。従って、フェイルオーバ時のスタンバイノードからのディスクアクセス負荷を低減することができる。
【００７８】
（４）キャッシュ管理部１１は、他のファイルサーバと共有するファイルシステム領域ごとに、ページキャッシュを管理するためのリードキャッシュテーブルを作成し、ファイルシステム領域に格納されたファイルへアクセス要求があった場合に、当該アクセス要求に対応するファイルとページキャッシュとを特定可能な情報を含むエントリをリードキャッシュテーブルに登録するキャッシュ作成部１２と、リードキャッシュテーブルに登録された各エントリを参照し、各エントリに対応するページキャッシュを、他のファイルサーバに転送するキャッシュ転送部１３とを含むファイルサーバ。
【００７９】
そのような構成によれば、ファイルシステム領域毎、ファイルアクセス毎にキャッシュを管理することができる。
【００８０】
（５）キャッシュ管理部１１は、他のファイルサーバからページキャッシュとファイルの識別情報とファイルシステム領域の識別情報とを受信すると、当該ファイルシステム領域に対応するリードキャッシュテーブルを作成し、当該ファイルと当該ページキャッシュとを特定可能な情報を含むエントリを、当該リードキャッシュテーブルに登録するキャッシュコピー部１４を含み、キャッシュ管理部１１は、他のファイルサーバが停止した場合には、キャッシュコピー部１４が登録したエントリごとに、ページキャッシュと、当該ページキャッシュに対応するファイルとを関連付ける処理を実行し、当該ページキャッシュを使用可能な状態にするファイルサーバ。
【００８１】
そのような構成によれば、他のファイルサーバから受け取ったページキャッシュを利用して、ファイルアクセス要求に応じることができる。従って、例えば、ＮＡＳの再起動時に、リード用のページキャッシュデータが揮発した場合であっても、その後のファイルアクセスによるディスク負荷を低減することができる。
【符号の説明】
【００８２】
１０−１〜１０−ｎ、３０１、３０２  ファイルサーバ
１１  キャッシュ管理部
１００、１０１  拡張キャッシュ管理部
１１０、１１１  キャッシュ作成部
１２０、１２１  キャッシュ転送部
１３０、１３１  キャッシュコピー部
２００、２０１  ＶＦＳ
３１０、３１１  クラスタ制御機能
３２０  共有ディスク
３２１、３２２  ファイルシステム領域
３２３  ファイル
３３０  クライアント
３４０  ネットワーク
３５０  クラスタ系間通信機能
３６０  サーバＩＰアドレス
【図１】
2014191754.tif 000003
【図２】
2014191754.tif 000004
【図３】
2014191754.tif 000005
【図４】
2014191754.tif 000006
【図５】
2014191754.tif 000007
【図６】
2014191754.tif 000008
【図７】
2014191754.tif 000009
【図８】
2014191754.tif 000010