(57)【要約】【課題】従来、アクセス要求を処理する際に２回のデータ移動が発生した。また、ユーザデータを揮発メモリ上に格納するため、障害発生時にはユーザデータが失われる問題があった。【解決手段】ファイルサーバは、３つの機能分散したプロセッサを持つ複数のＮＡＳノードと、複数のＮＡＳノード間で共有しバッテリバックアップされた共有キャッシュメモリと複数の記憶装置を備え、各ＮＡＳノードが受信したアクセス要求に関するデータを格納するログ領域を共有キャッシュメモリ上に有する。ネットワークプロセッサが、アクセス要求に関するデータをログ領域に格納し、読み出し時にはメモリ上のデータをＤＭＡにより転送する。また、アクセス要求に関するデータを、共有キャッシュメモリ上に格納するため、あるＮＡＳノードに障害が発生しても、別のＮＡＳノードがログを用いてファイルシステムを復旧し、継続して処理を続行する。【選択図】  図１
2004213435.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュメモリと複数の記憶制御装置と記憶装置を備える記憶装置システムにおいて、
前記キャッシュメモリは、前記複数の記憶制御装置と接続され、
前記記憶制御装置は、ネットワークプロセッサとファイルシステムプロセッサとディスクプロセッサを備え、
前記ネットワークプロセッサは、外部装置から受信したアクセス要求から、前記キャッシュメモリに格納するための第一のデータを作成し、格納する手段と、
前記アクセス要求から、前記ファイルシステムプロセッサに送信するための第一の要求を作成し、送信する手段を備え、
前記ファイルシステムプロセッサは、前記ネットワークプロセッサから、前記第一の要求を受信する手段と、
前記第一の要求から、記憶装置へアクセスするための第二の要求を作成する手段と、
前記第二の要求を、前記ディスクプロセッサに送信する手段を備え、
前記ディスクプロセッサは、前記第二の要求を受信する手段と、
前記第二の要求に応じて、前記キャッシュメモリと前記記憶装置の間のデータ転送を制御する手段を備える、記憶装置システム。
【請求項２】
前記キャッシュメモリは、前記複数の記憶制御装置の各々に対応するログ領域を備え、
前記記憶制御装置は、前記対応するログ領域に、前記第一のデータを格納する、請求項１記載の記憶装置システム。
【請求項３】
前記複数の記憶制御装置は、前記複数のログ領域のいずれにもアクセス可能である、請求項２記載の記憶装置システム。
【請求項４】
第一の記憶制御装置に障害が発生した場合、障害が発生していない第二の記憶制御装置が、前記第一の記憶制御装置に対応するログ領域を用いて、第一の記憶制御装置の処理を行う、請求項３記載の記憶装置システム。
【請求項５】
前記キャッシュメモリは、バッテリバックアップされている、請求項１乃至４記載の記憶装置システム。
【請求項６】
前記記憶制御装置は、共有キャッシュアクセス部を備え、
前記共有キャッシュアクセス部は、前記ネットワークプロセッサ、前記ファイルシステムプロセッサ、前記ディスクプロセッサの各々が有するメモリと、前記キャッシュメモリとの間のデータ転送を行う、請求項１乃至５記載の記憶装置システム。
【請求項７】
前記第二の要求は、前記ログ領域に格納されたデータの位置を示す情報を含み、
前記ディスクプロセッサは、前記データの位置を示す情報を用いて、前記ログ領域内のデータを、前記記憶装置へ転送する手段を有する、請求項２記載の記憶装置システム。
【請求項８】
前記第一のデータは、クライアントからの到着順序を示す識別子を含み、
前記ファイルシステムプロセッサは、前記記憶装置上のファイルシステムを変更する際に、前記識別子を前記ファイルシステムの管理情報の一部とする、請求項２記載の記憶装置システム。
【請求項９】
前記ディスクプロセッサは、前記ログ領域上のアドレスのデータを、前記キャッシュメモリの特定のアドレスにコピーすることを、前記共有キャッシュアクセス部に指示する手段を有する、請求項６記載の記憶装置システム。
【請求項１０】
前記記憶制御装置は、他の記憶制御装置に障害が起きたことを検出する手段と、
前記記憶装置から、前記記憶装置に格納済みのデータに対応する前記識別子を取得する手段と、
前記識別子をもとに、前記ログ領域に格納される、前記識別子に対応するデータを検索する手段と、
前記識別子よりも新しい識別子を持つデータが、前記ログ領域上に存在する場合、前記新しい識別子を持つデータを、前記記憶装置に格納する手段を有する、請求項６記載の記憶装置システム。
【請求項１１】
キャッシュメモリと複数の記憶制御装置と記憶装置を備える記憶装置システムにおいて、
前記キャッシュメモリは、前記複数の記憶制御装置と接続され、
前記キャッシュメモリは、前記複数の記憶制御装置の各々に対応するログ領域を備え、
前記記憶制御装置は、プロセッサを備え、
前記プロセッサは、前記対応するログ領域にデータを格納する、記憶装置システム
【請求項１２】
前記複数の記憶制御装置は、前記複数のログ領域のいずれにもアクセス可能である、請求項１１記載の記憶装置システム。
【請求項１３】
第一の記憶制御装置に障害が発生した場合、障害が発生していない第二の記憶制御装置が、前記第一の記憶制御装置に対応するログ領域を用いて、第一の記憶制御装置の処理を行う、請求項１２記載の記憶装置システム。
【請求項１４】
前記キャッシュメモリは、バッテリバックアップされている、請求項１２又は１３記載の記憶装置システム。
【請求項１５】
前記記憶制御装置は、共有キャッシュアクセス部を備え、
前記共有キャッシュアクセス部は、前記プロセッサが有するメモリと、前記キャッシュメモリとの間のデータ転送を行う、請求項１１乃至１４記載の記憶装置システム。
【請求項１６】
キャッシュメモリと記憶制御装置と記憶装置を備える記憶装置システムにおいて、
前記キャッシュメモリは、前記記憶制御装置と接続され、
前記記憶制御装置は、ネットワークプロセッサとファイルシステムプロセッサとディスクプロセッサを備え、
前記ネットワークプロセッサは、外部装置から受信したアクセス要求から、前記キャッシュメモリに格納するためのデータを作成し、格納する手段と、
前記アクセス要求から、前記ファイルシステムプロセッサに送信するための第一の要求を作成し、送信する手段を備え、
前記ファイルシステムプロセッサは、前記ネットワークプロセッサから、前記第一の要求を受信する手段と、
前記第一の要求から、記憶装置へアクセスするための第二の要求を作成する手段と、
前記第二の要求を、前記ディスクプロセッサに送信する手段を備え、
前記ディスクプロセッサは、前記第二の要求を受信する手段と、
前記第二の要求に応じて、前記キャッシュメモリと前記記憶装置の間のデータ転送を制御する手段を備える、記憶装置システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ネットワークに接続されたクライアントからのファイル単位のアクセス要求（以下、単にアクセス要求と書く）に応じた処理を行うネットワークストレージシステムに関する。
【０００２】
【従来の技術】
従来のＮＡＳ（Ｎｅｔｗｏｒｋ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ）を高速化する技術では、機能分散されたプロセッサ（ネットワークプロセッサ、ファイルシステムプロセッサ、ディスクプロセッサのことであり、以下、それぞれＮＰ、ＦＳＰ、ＤＰと略す）と、これらプロセッサ間で共有するキャッシュメモリを用いる（例えば、特許文献１参照）。
【０００３】
特許文献１では、３つのプロセッサを機能分散して使用する。アクセス要求の処理を、各プロセッサが並列に行うことで、複数のプロセッサが対等の処理を行うＳＭＰ（Ｓｙｍｍｅｔｒｉｃ  ＭｕｌｔｉＰｒｏｃｅｓｓｏｒ）に比べ、プロセッサ利用率を高くしている。
【０００４】
また、複数のプロセッサが一つのキャッシュメモリを共有し、ユーザデータをキャッシュメモリ上に格納することで、プロセッサ間のデータ移動や、アクセス要求の処理に対するレイテンシを低減できる。ここで、レイテンシとは、データの要求を行ってから、実際にデータが転送されるまでにかかる遅延時間を意味する。
【０００５】
更に、ＮＰ上のメモリと、複数のプロセッサが共有するキャッシュメモリの間、及び、該キャッシュメモリと記憶装置の間におけるデータ移動を、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）により行うことでプロセッサの負荷を減少させている。ＤＭＡとは、ＣＰＵを介さずに、データ移動を行うことである。
【０００６】
【特許文献１】
ＵＳＰ５１６３１３１号公報（第１７頁−第１９頁、第２図）
【０００７】
【発明が解決しようとする課題】
従来技術では、ユーザデータをキャッシュメモリに格納して処理を行うため、２回のデータ移動、すなわち、ＮＰ上のメモリとキャッシュメモリ間のデータ移動と、キャッシュメモリと記憶装置間のデータ移動が必要である。この場合、記憶装置へのデータ移動が完了した時点でクライアントにリプライを返さなければならないため、リプライを返すまでに、２回のデータ移動を待つ必要があり、レイテンシが増大する。
【０００８】
また、キャッシュメモリ上にデータを格納するため、ファイルを提供するサーバ（以下、ファイルサーバと略す）に障害が発生した場合にはデータが失われてしまうという欠点がある。
【０００９】
本発明の目的は、機能分散したプロセッサを用いてアクセス要求に対する処理を行いながら、データ移動を最小限に押さえるファイルサーバを提供することである。
【００１０】
また本発明の他の目的は、あるＮＡＳノードに障害が発生しても、それまでにそのＮＡＳノードが受信したアクセス要求を消失せず、別のＮＡＳノードが処理を続行するファイルサーバを提供することである。
【００１１】
【課題を解決するための手段】
上記目的を達成するため、複数のＮＡＳノード間で共有可能な、バッテリバックアップされた共有キャッシュメモリと、共有キャッシュメモリにアクセスするための共有キャッシュメモリアクセス部をＮＡＳノード上に提供する。また、共有キャッシュメモリ上には、複数のＮＡＳノードそれぞれが、外部装置から受信したデータを格納するログ領域と、各ＮＡＳノードへのログ領域の割り当てを設定するログ領域割り当てテーブルを提供する。更に、ログ格納領域を各ＮＡＳノード上のＮＰが管理するためのログ領域管理テーブルをＮＰのメモリ内に提供する。
【００１２】
【発明の実施の形態】
図１は、本発明に係る、システムの構成例を示す。尚、メモリに格納される情報は丸で囲んでいる。
【００１３】
本システムは、クライアント１００、ＬＡＮ２００、ファイルサーバ３００とからなり、ファイルサーバ３００は、ＬＡＮ２００を介して、クライアント１００と接続されている。
【００１４】
ファイルサーバ３００は、複数のＮＡＳノード４００、５００、共有キャッシュメモリ７００、記憶装置８００、スイッチ９００とからなる。尚、スイッチ９００は、バスでもよい。また、図では、スイッチを２つ描いているが、一つのスイッチで、ＮＡＳノード、共有キャッシュメモリ、及び記憶装置を接続してもよい。
【００１５】
ＮＡＳノード４００は、ＮＰ４１０、ＦＳＰ４２０、ＤＰ４３０、共有キャッシュアクセス部４４０、バス４５０とからなり、４１０〜４４０は、それぞれバス４５０を介して接続される。
【００１６】
ＮＰ４１０は、ＬＡＮ２００と接続され、メモリ４１１を備える。メモリ４１１には、後述のログ領域管理テーブル４１２と、アクセス要求４１３が格納される。ＮＰが提供する主な機能は、▲１▼クライアントから受信したアクセス要求から、後述のログエントリデータを作成し、共有キャッシュメモリ７００へ格納、▲２▼ＦＳＰ４２０に対する要求（以下、ＦＳＰ要求と呼ぶ）の作成及び送信、▲３▼ＦＳＰ４２０からの、アクセス結果の受信、▲４▼クライアントに対する、アクセス結果の作成及び送信、である。
【００１７】
ＦＳＰ４２０は、メモリ４２１を備える。メモリ４２１には、ファイルシステムの管理を高速に行うため、ファイルの管理情報（以下、メタデータと呼ぶ）と、記憶装置に対するアクセス要求（以下、ディスク要求と呼ぶ）と、後述の未完了要求リストが格納される。ＦＳＰが提供する主な機能は、▲１▼ＮＰ４１０から受信したＦＳＰ要求の解析（記憶装置上のアドレスの算出）と、ディスク要求の作成、▲２▼ＤＰ４３０へのディスク要求の送信、ＤＰ４３０からの結果受信及びＮＰへの結果返信、である。
【００１８】
ＤＰ４３０は、メモリ４３１を備え、ＦＳＰ４２０から受信したディスク要求に従い、共有キャッシュメモリ７００と記憶装置８００の間でのデータ転送を制御する。
【００１９】
共有キャッシュアクセス部４４０は、ＮＰ、ＦＳＰ、ＤＰが、各々のメモリと共有キャッシュメモリ間でデータ転送を行うためのＤＭＡの機能を提供する。
【００２０】
共有キャッシュメモリ７００は、ディスクキャッシュ７１０、ログ領域７２０、７３０、ログ管理領域７４０を有する。
【００２１】
ディスクキャッシュ７１０は、記憶装置上のブロック単位のデータを一時的に格納する。記憶装置に対する読み書きは、ディスクキャッシュ７１０を介して行われる。頻繁にアクセスされるデータは、ディスクキャッシュ７１０にヒットするため、記憶装置への物理的なアクセスが減少する。尚、本実施例では、共有キャッシュメモリ内にディスクキャッシュやログ領域をもたせる形式にしているが、共有キャッシュメモリをディスクキャッシュとし、その中にログ領域をもたせる形式としてもよい。
【００２２】
ログ領域７２０、７３０等は、各ＮＡＳノードに対応しており、各ＮＡＳノードが受信したアクセス要求を、後述のログエントリデータとして、格納する。
【００２３】
ログ管理領域７４０は、各ログ領域の位置を管理するログ領域割り当てテーブル７５０を有する。ここで、ログ領域割り当てテーブルの構成例を図３に示す。ＮＡＳノード番号１１１０は、各ログ領域に対応するＮＡＳノードを示す。開始アドレス１１２０は、各ログ領域の開始位置を示す。サイズ１１３０は、各ログ領域の大きさを示す。サイズ１１３０は、システムで適切な固定値をあらかじめ設定してもよいが、共有キャッシュメモリのサイズや、求める性能に応じて、ファイルサーバのユーザが変更してもよい。有効１１４０は、各ログ領域が使用可能か否かを示す。
【００２４】
尚、共有キャッシュメモリ７００は、バッテリバックアップされており、どのＮＡＳノードからもアクセス可能であるため、あるＮＡＳノードに障害が発生しても、他のＮＡＳノードが処理を引き継いで実行することが可能である。
【００２５】
以下、ＮＰが行うアクセス要求の処理手順について、図２を用いて説明する。
【００２６】
まず、ＬＡＮ２００からアクセス要求を受信すると、ファイルシステムの更新要求か否かを判断する（ステップ２１００）。ＮＦＳバージョン３（米国におけるサンマイクロシステムズ社の登録商標）では、ｃｒｅａｔｅ、ｍｋｄｉｒ、ｒｅｍｏｖｅ、ｒｅｎａｍｅ、ｒｍｄｉｒ、ｗｒｉｔｅ、ｓｅｔａｔｔｒ、ｃｏｍｍｉｔなどが、更新要求の例である。
【００２７】
更新要求でない場合、ステップ２１６０の処理を実行する。
【００２８】
更新要求の場合、アクセス要求から作成する、後述のログエントリデータを、ログ領域に格納するために必要なサイズを計算し（ステップ２１１０）、十分な空きがログ領域内にあるか否かを、ログ領域管理テーブル４１２を参照して計算する（ステップ２１２０）。
【００２９】
ここで、ログ領域管理テーブル４１２の構成例を図４に示す。開始アドレス１２１０と終了アドレス１２２０は、それぞれ、ログ領域の開始位置、終了位置を示す。ｈｅａｄ１２３０とｔａｉｌ１２４０は、それぞれ、未だ記憶装置への書き込みが完了していないデータを格納する、最初と最後のログエントリのアドレスを示す。シーケンシャルＩＤは、クライアントから到着するデータの順序毎に、ログエントリに付加する単純増加の番号である。
【００３０】
ここで、ログエントリとは、図５に示すような領域であり、ログ領域に格納される。また、ログエントリ内のデータを、以下、ログエントリデータと呼ぶ。マジック番号１３１０は、使用可能なログエントリの先頭を示す値であり、全ログエントリで同一の値を使用する。シーケンシャルＩＤ１３２０は、ステップ２１３０で割り当てるＩＤである。ヘッダサイズ１３３０は、ログエントリヘッダのサイズであり、データサイズ１３４０はログエントリに格納するユーザデータのサイズである。
【００３１】
ログ領域全体のサイズは、終了アドレスから開始アドレスを引くことで求めることができる。ログ領域はリング状に利用され、ログ領域全体のうちｈｅａｄからｔａｉｌまでの領域が、現在使用中の領域である。従って、ログ領域全体のサイズから、ｈｅａｄとｔａｉｌの間のサイズ引くことで、ログ領域の空きサイズを求めることができる。
【００３２】
ステップ２１２０で、十分なログ領域の空きがない場合、十分な空きができるまで待つ（ステップ２１８０）。
【００３３】
ステップ２１２０で、十分なログ領域の空きがある場合、または、ステップ２１８０で十分なログ領域の空きができた場合、ログエントリにシーケンシャルＩＤを割り当てる（ステップ２１３０）。すなわち、ログ領域管理テーブル４１２から、シーケンシャルＩＤを読み出して、該ログエントリに割り当てるシーケンシャルＩＤとし、後のログエントリのためにシーケンシャルＩＤを１増加した値をシーケンシャルＩＤの領域に格納する。
【００３４】
次に、ログエントリデータを作成し、ログ領域管理テーブル４１２を参照して、ログエントリデータを格納するためのログエントリを、ログ領域上に割り当てる（ステップ２１４０）。割り当てる領域は、ログ領域管理テーブル４１２のｈｅａｄ１２３０で示されるアドレスからログエントリサイズ分の領域である。ログエントリを割り当てると、ｈｅａｄ１２３０の値をログエントリサイズ分増加する。
【００３５】
次に、共有キャッシュアクセス部４４０を用いて、割り当てたログエントリに、作成したログエントリデータを格納する（ステップ２１５０）。共有キャッシュアクセス部４４０は、ＮＰ４１０が持つメモリ４１１と共有キャッシュメモリ７００の両方に、ＤＭＡによるアクセスが可能である。すなわち、転送するログエントリデータのメモリ４１１上のアドレスと、転送先のログ領域上のアドレスおよびサイズをＮＰが共有キャッシュアクセス部４４０に指示すると、共有キャッシュアクセス部４４０はＮＰ上のメモリからログエントリデータを読み出し、指定されたログ領域内のアドレスに書き込む。転送が完了すると、割り込みによりＮＰに通知する。
【００３６】
次に、ＦＳＰ要求を作成する（ステップ２１６０）。ＦＳＰ要求の構成例を図６に示す。コマンド１４１０は、ファイルシステムにアクセスするためのものであり、必要に応じて引数リスト１４４０を指定する。書き込み要求のようにアクセス要求がユーザデータを持つ場合でも、ＦＳＰ要求にはユーザデータを格納せず、ステップ２１５０で転送したデータのログ領域上のアドレスを、ログ領域アドレス１４３０に格納する。尚、アクセス要求が更新要求でない場合には、シーケンシャルＩＤ１４２０とログ領域アドレス１４３０のエントリは使用しない。
【００３７】
最後に、ＦＳＰ要求をＦＳＰに送信する（ステップ２１７０）。
【００３８】
ＮＰは、アクセス要求に対する応答（以下、アクセス応答と呼ぶ）をクライアントに送信する処理を、ＦＳＰからの応答を契機に開始する。以下、ＮＰが行うアクセス応答に関する処理手順について、図７を用いて説明する。
【００３９】
ＦＳＰからの応答を受信すると、該応答に共有キャッシュメモリ７００上のアドレスが含まれているか否かを調べる（ステップ２５００）。含まれている場合（読み出し要求の場合）、共有キャッシュメモリ７００上にユーザデータが存在するので、該アドレスを用いて、共有キャッシュメモリ７００からＮＰのメモリ４１１上にユーザデータを転送する（ステップ２５１０）。この処理も、ステップ２１５０と同様、共有キャッシュアクセス部４４０を用いて実行する。含まれない場合、ステップ２５２０の処理を実行する。
【００４０】
最後に、該応答と該ユーザデータを用いて、アクセス応答を作成し、クライアントに送信する（ステップ２５２０）。
【００４１】
次にＦＳＰが行うアクセス要求の処理について、図８を用いて説明する。
【００４２】
まず、ＮＰから受信したＦＳＰ要求が、ファイルシステム更新要求に係るものであるか否かを調べる（ステップ２３００）。
【００４３】
ファイルシステム更新要求の場合、メモリ４２１を検索して、必要なメタデータを取得する（ステップ２３１０）。メモリ４２１上にメタデータが存在しない場合は、ＤＰに依頼して、該当するメタデータを記憶装置からメモリ４２１に読み込む。
【００４４】
次に、ファイルシステム更新要求が書き込み要求か否かを調べる（ステップ２３２０）。書き込み要求でない場合、ユーザデータが存在しないため、ステップ２３４０の処理を実行する。
【００４５】
書き込み要求の場合、ディスク要求の作成と、ＤＰへの非同期の、ディスク要求の発行を行う（ステップ２３３０）。
【００４６】
本発明では、ユーザデータはログ領域に格納されており、そのアドレスがＦＳＰ要求のログ領域アドレス１４３０（図６）に格納されている。ＦＳＰは、このアドレスと、書き込みコマンドの場合に引数リストに格納されているデータサイズと、書き込みファイルのオフセット情報、及びステップ２３１０で取得したメタデータから取得できる記憶装置上のアドレス等から構成されるディスク要求を作成する。
【００４７】
一般に、ファイルアクセスでは、ユーザデータを記憶装置に格納したことを保証して、クライアントへの応答を返す必要がある。本発明では、ユーザデータがすでに、バッテリバックアップされている共有キャッシュメモリ７００に格納されているため、記憶装置と同等とみなすことができる。ゆえに、ＦＳＰは記憶装置に対する書き込み要求を非同期に発行し、その完了を待つ必要がない。
【００４８】
ここで、ステップ２３３０における、データの非同期の書き込み要求処理は、共有キャッシュメモリ内でのデータコピーとして実現する。すなわち、ＤＰは、共有キャッシュアクセス部４４０にログ領域上の指定したアドレスのデータを、ディスクキャッシュ７１０の特定のアドレスにコピーするよう指示する。共有キャッシュアクセス部４４０は、ＤＭＡによって、ログ領域上のデータを読み出し、ディスクキャッシュ７１０上に書き込む。
【００４９】
次に、ＦＳＰはファイルシステム更新要求に従ってメタデータを更新する（ステップ２３４０）。ただし、更新したメタデータを直ちに記憶装置に書き戻す必要はなく、定期的に実行される同期処理で、ダーティメタデータの書き込みを一括して実行する。ここで、未だ記憶装置に書き込んでいない、メモリ上のデータを、ダーティデータと呼ぶ。こうすることで、記憶装置に対する頻繁な書き込みを実行する必要がなくなる。また、ファイルシステムを更新するログエントリデータはバッテリバックアップされたログ領域に格納されているため、ＮＡＳノードに障害が発生してもログ領域に残っているログエントリデータを用いて再実行させることで回復することが可能である。
【００５０】
ログエントリは、ＮＡＳノード上のダーティメタデータの記憶装置への書き込みが完了するまでは解放できない。従って、ＦＳＰのメモリ４２１上にあるダーティメタデータがどのログエントリに対応するかを管理するため、ＦＳＰは、未完了要求リストをメモリ４２１上に保持する。未完了要求リストは、ダーティメタデータがまだメモリ４２１上に残っているＦＳＰ要求のリストである。ＦＳＰは、ステップ２３４０でメモリ上のメタデータの更新が完了すると、そのきっかけとなったＦＳＰ要求を未完了要求リストにつなぐ（ステップ２３５０）。ＦＳＰは、先述の定期的な同期処理完了時に、このリストを参照し、更新メタデータの記憶装置に対する書き込みが終了したＦＳＰ要求のシーケンシャルＩＤ１４２０をＮＰに通知して、ログ領域内のログエントリを解放する。また、同期処理の際には、記憶装置に書き込むための最新のシーケンシャルＩＤをメタデータの一部とし、記憶装置上のファイルシステムがログ領域内のどのログエントリまで対応しているかが判るようにする。
【００５１】
最後に、ＦＳＰは、処理結果をＮＰに送信する（ステップ２３６０）。
【００５２】
ステップ２３００において、ファイルシステムの更新要求でない場合、必要なメタデータを取得する（ステップ２４１０）。この処理は、先述のステップ２３１０と同様である。
【００５３】
次に、ＦＳＰ要求が読み出し要求か否かを調べる（ステップ２４２０）。読み出し要求でなければ、ユーザデータが存在しないためステップ２４４０を実行する。
【００５４】
読み出し要求の場合、共有キャッシュメモリにユーザデータが存在するか否か調べる。存在しない場合は、記憶装置に対する読み出し要求の作成と、ＤＰへの、同期の、記憶装置に対する読み出し要求発行を行う（ステップ２４３０）。このとき、ＤＰに対して、記憶装置から読み出したデータを共有キャッシュメモリ７００にだけ格納し、共有キャッシュメモリ７００上のアドレスをＦＳＰに通知するよう指示する。この共有キャッシュメモリ７００上のアドレスは、最終的にＮＰに通知され、ユーザデータがＮＰに、ＤＭＡにより転送されるため、データがＦＳＰのメモリを経由する必要がない。
【００５５】
最後に、処理結果をＮＰに送信する（ステップ２４４０）。処理結果は、ステップ２４１０で取得したメタデータおよびステップ２４３０で取得した共有キャッシュメモリ７００上のアドレスを用いて作成する。
【００５６】
尚、ログ領域には、クライアントが指定した書き込みデータも含まれる。ゆえに、ＮＰだけではなく、ＦＳＰやＤＰも、ログエントリの位置やデータを参照する必要があるが、各ログエントリに対して付加されたシーケンシャルＩＤでログエントリを特定できる。
【００５７】
本実施例によれば、書き込みデータは、ＤＭＡによって、ＮＰから共有キャッシュメモリに転送され、読み出しデータは、ディスクキャッシュ７０１からＮＰに転送されるため、データコピーが最小限となっている。さらにデータコピーは、ＤＭＡによって実行されるため、ＮＰ、ＦＳＰ、ＤＰいずれのプロセッサもメモリコピーに費やす必要がない。ユーザデータの読み出し、書き込みをＮＰと共有キャッシュメモリ間で、ＤＭＡによって行うため、ＦＳＰのメモリのほとんどを、メタデータを格納する領域として使用できる。その結果、記憶装置に対するアクセス回数が削減される。以上より、最小限のデータ移動でアクセス要求を処理する高性能なファイルサーバを提供できる。
【００５８】
尚、一つのアクセス要求に対するＮＰ、ＦＳＰ、ＤＰの処理について説明したが、複数のアクセス要求に対しては、これらのプロセッサが独立して並列に処理を行うことが可能である。
【００５９】
次に、図１及び図９を用いて本発明の第２の実施例を説明する。本実施例では、ＮＡＳノード４００に障害が発生した場合に、ＮＡＳノード５００がＮＡＳノード４００のファイルシステムを引き継ぐ際の処理について説明する。
【００６０】
共有キャッシュメモリ７００に、各ＮＡＳノードの状態を保持するテーブルを設定しておく。各ＮＡＳノードが定期的に各自の状態を該テーブルに格納し、他のＮＡＳノードがその状態を同じく定期的にチェックする。他のノードの状態が更新されていないことを検出すると、そのノードに障害が発生したと判断する（ステップ２５９０）。
【００６１】
次に、ＮＡＳノード５００は、記憶装置８００にアクセスし、ファイルシステムに反映済みのシーケンシャルＩＤを取得する（ステップ２６００）。ここで、反映とは、ファイルシステムの更新操作を施したログエントリデータを、記憶装置に書き込むことを表す。次に、ログ領域割り当てテーブル７５０を参照し、ＮＡＳノード４００のログ領域７２０を特定し、そのログ領域を、ログエントリデータのマジック番号１３１０を参照しながらスキャンして、シーケンシャルＩＤが格納されているログエントリを検索する（ステップ２６１０）。ここで、スキャンとは、ログ領域の先頭から一つ一つのログエントリを読み出すことを表す。
【００６２】
ログ領域７２０上に、ファイルシステム反映済みシーケンシャルＩＤより新しいシーケンシャルＩＤを持つログエントリが存在すれば、それはファイルシステムに未反映のアクセス要求を意味する。ファイルシステムに未反映のアクセス要求を古い順番に再実行していくことで、全てのアクセス要求を反映したファイルシステムを構築することが出来る。
【００６３】
次に、ファイルシステム反映済みのシーケンシャルＩＤより新しいシーケンシャルＩＤが存在するかどうかを調べる（ステップ２６２０）。より新しいシーケンシャルＩＤがもはや存在しない場合、全てのアクセス要求のファイルシステムへの反映が完了したことになるため、処理を終了する。
【００６４】
より新しいシーケンシャルＩＤを持つログエントリが存在する場合には、そのログエントリに格納されているアクセス要求を実行し、結果をファイルシステムに反映する（ステップ２６３０）。より新しいシーケンシャルＩＤを持つログエントリがなくなるまでステップ２６２０とステップ２６３０を繰り返す。
【００６５】
以上の処理により、ＮＡＳノード４００が処理していたファイルシステムをＮＡＳノード５００が最新の状態に更新することが出来る。ログ領域７２０には、ＮＡＳノード４００が受信した全てのアクセス要求が格納されているため、データが失われることなくＮＡＳノード５００がファイルシステムを引き継ぐことが可能となる。
【００６６】
尚、記憶装置は磁気媒体を使うことが多いが、光学的媒体などの他の媒体を利用する装置であってもよい。
【００６７】
【発明の効果】
本発明によれば、機能分散したプロセッサを用いてアクセス要求に対する処理を行いながら、データ移動を最小限に押さえるファイルサーバを提供できる。また、あるＮＡＳノードに障害が発生しても、それまでにそのＮＡＳノードが受信したアクセス要求を消失せず、別のＮＡＳノードが処理を続行するファイルサーバを提供できる。
【図面の簡単な説明】
【図１】本発明の全体構成図を示す。
【図２】ＮＰのファイルアクセス要求受信時の処理の流れを示す。
【図３】共有キャッシュメモリ内のログ領域割り当てテーブルの構成を示す。
【図４】ＮＰのローカルメモリ内に設けるログ領域管理テーブルを示す。
【図５】ログ格納領域に格納するログエントリの構成を示す。
【図６】ＮＰがＦＳＰに対して発行するファイルアクセス要求の構成を示す。
【図７】ＮＰのファイルアクセス応答処理の流れを示す。
【図８】ＦＳＰのファイルシステム更新要求の処理の流れを示す。
【図９】ファイルシステム引継ぎ処理の流れを示す。
【符号の説明】
１００…クライアント、２００…ネットワーク、３００…ファイルサーバ、４００，５００…ＮＡＳノード、４１０…ネットワークプロセッサ、４２０…ファイルシステムプロセッサ、４３０…ディスクプロセッサ、７００…共有キャッシュメモリ、７２０…ログ領域割り当てテーブル、７４０，７５０…ログ領域
【図１】
2004213435.tif 000003
【図２】
2004213435.tif 000004
【図３】
2004213435.tif 000005
【図４】
2004213435.tif 000006
【図５】
2004213435.tif 000007
【図６】
2004213435.tif 000008
【図７】
2004213435.tif 000009
【図８】
2004213435.tif 000010
【図９】
2004213435.tif 000011