(57)【要約】【課題】  ファイルレベルの入力／出力要求を処理しＮＡＳシステムを制御するＮＡＳコントローラと、データを記憶する複数のボリュームが構成されるストレージデバイスを制御するコントローラを有するストレージ装置を含むＮＡＳシステムを提供する。【解決手段】  本発明において、ボリュームに記憶されるファイルのデータの少なくとも一部分が更新される時に、更新データはボリュームの未使用領域に記憶され、更新データの元のデータへの引き続くアクセスが未使用領域に記憶される更新データに向けられるように、元の領域に記憶される元のデータに対応する更新データが未使用領域に記憶されることを示す情報がボリュームに記憶され、更新データの元のデータは元の領域に保持され、それ故、更新データの元のデータの長期間のデータアーカイブを実施する。【選択図】図１
2006048641.tif 000002
【特許請求の範囲】
【請求項１】
ファイルレベルの入力／出力（Ｉ／Ｏ）要求を処理し、ＮＡＳ（ＮｅｔＷｏｒｋ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ；ネットワーク接続ストレージ）システムを制御するＮＡＳコントローラと、
コントローラと該コントローラで制御されデータを記憶するための複数のボリュームで表されるストレージデバイスを有するストレージ装置と
を有し、
ボリュームに含まれ前記ボリュームに記憶されるファイルの少なくとも一つの部分が更新される時に、更新データは前記ボリュームの未使用領域に記憶され、前記更新データの元のデータへの引き続くアクセスが未使用領域に記憶される前記更新データに向けられるように、元の領域に記憶される前記元のデータに対応する前記更新データが前記未使用領域に記憶されることを示す情報が前記ボリュームに記憶され、
更新データの前記元のデータは前記元の領域に保持され、これにより前記更新データの前記元のデータの長期間のデータアーカイブを実施する
ことを特徴とする長期間のデータアーカイブを実施するためのＮＡＳシステム。
【請求項２】
前記ボリュームがキャッシュボリュームと少なくとも一つのデータボリュームを含むことを特徴とする請求項１に記載のＮＡＳシステム。
【請求項３】
前記ＮＡＳシステムが、サーバと前記ＮＡＳシステムの間に接続されるネットワークを通して前記サーバから前記ファイルレベルのＩ／Ｏ要求を受信することを特徴とする請求項１に記載のＮＡＳシステム。
【請求項４】
各サーバはアプリケーションプログラムを実行し、前記ネットワークを通して前記ＮＡＳシステムへのファイルレベルのアクセスを前記アプリケーションプログラムに提供するために、前記サーバのオペレーティングシステムのＶＦＳ（Ｖｉｒｔｕａｌ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）層のもとに存在するＮＦＳ（Ｎｅｔｗｏｒｋ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）を含むことを特徴とする請求項３に記載のＮＡＳシステム。
【請求項５】
各サーバはアプリケーションプログラムを実行し、前記ネットワークを通して前記ＮＡＳシステムへのファイルレベルのアクセスを前記アプリケーションプログラムに提供するために、前記サーバのオペレーティングシステムのＶＦＳ（Ｖｉｒｔｕａｌ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）層のもとに存在するＣＩＦＳ（Ｃｏｍｍｏｎ  Ｉｎｔｅｒｆａｃｅ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）を含むことを特徴とする請求項３に記載のＮＡＳシステム。
【請求項６】
ＮＦＳまたはＣＩＦＳファイルＩ／Ｏ要求を処理するＮＦＳ／ＣＩＦＳサーバと、
前記ＮＡＳコントローラのオペレーティングシステムのＶＦＳ層のもとに存在し、前記ＮＦＳ／ＣＩＦＳサーバによって処理されるファイルＩ／Ｏ要求によって要求されるファイルを管理するためのＳＷＦＳ（Ｓｅｑｕｅｎｔｉａｌ  Ｗｒｉｔｅ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）と
を前記ＮＡＳコントローラが有することを特徴とする請求項４または５の一つに記載のＮＡＳシステム。
【請求項７】
前記のＳＷＦＳが、
（ａ）一度ファイルがデータボリュームに書かれると、前記データボリュームにファイルを決して重ね書きしない；
（ｂ）もしもデータボリュームに記憶されるファイルが修正される必要があると、前記データボリュームに前記の元のファイルを保持し、前記データボリュームの他の未使用位置に修正ファイルを書く；
（ｃ）データボリュームの第一のオフセットから最後のオフセットまで連続的にデータを書く；
（ｄ）データボリュームがデータで満たされると、前記ボリュームを保護し、他のデータを書くまたはデータを更新するために他のデータボリュームを使用する；
（ｅ）もしもデータボリュームに設定された保存期間が終了すると、前記データボリュームに記憶されたファイルを保持するかまたは削除するかをユーザが決めることを許可する
ことによって、ファイルを管理することを特徴とする請求項６に記載のＮＡＳシステム。
【請求項８】
請求項７の（ｄ）によって、前記ボリュームが、ＷＯＲＭ（Ｗｒｉｔｅ  Ｏｎｃｅ  Ｒｅａｄ  Ｍａｎｙ）ＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｉｎｔｅｒｆａｃｅ）を使用して保護されることを特徴とする請求項７に記載のＮＡＳシステム。
【請求項９】
更新データが該更新データの元のデータの元の領域に記憶される前記未使用領域に関係する前記ボリュームに記憶される前記情報が、前記ファイルに関する情報を含むデータ構造を有するｉｎｏｄｅであることを特徴とする請求項１に記載のＮＡＳシステム。
【請求項１０】
ファイルシステムが生成される時に、異なったｉｎｏｄｅが各ファイルに対して生成されることを特徴とする請求項９に記載のＮＡＳシステム。
【請求項１１】
各ｉｎｏｄｅはファイルに関する基本的な情報と該ファイルのデータ配置情報を含み、
前記基本的な情報は、前記ｉｎｏｄｅ、前記ファイルのサイズ、前記ファイルが最後に修正された時刻を識別する情報を少なくとも有し、
前記ボリュームは複数のディスクブロックに分割され、
前記データ配置情報は前記ファイルが記憶される前記ボリュームの前記ディスクブロックを識別する情報を少なくとも有することを特徴とする請求項１０に記載のＮＡＳシステム。
【請求項１２】
前記ファイルのデータの少なくとも一部が更新され、前記ファイルがクローズされる前に、前記ファイルの前記ｉｎｏｄｅは、更新データが記憶される未使用領域のディスクブロックを識別するために修正されることを特徴とする請求項１１に記載のＮＡＳシステム。
【請求項１３】
修正ｉｎｏｄｅと該修正ｉｎｏｄｅの元のｉｎｏｄｅは、該修正ｉｎｏｄｅがファイルのｉｎｏｄｅとして使用され、該修正ｉｎｏｄｅの該元のｉｎｏｄｅがアーカイブされるようにボリュームに記憶されることを特徴とする請求項１１に記載のＮＡＳシステム。
【請求項１４】
前記ＳＷＦＳは前記ＮＦＳ／ＣＩＦＳサーバによって処理されるファイルＩ／Ｏ要求を受信すると、前記ファイルＩ／Ｏ要求は、特定ファイルがオープンされるＦＩＬＥ＿ＯＰＥＮ要求、特定ファイルがクローズされるＦＩＬＥ＿ＣＬＯＳＥ要求、データが特定ファイルから読まれるＦＩＬＥ＿ＲＥＡＤ要求、データが特定ファイルに書かれるＦＩＬＥ＿ＷＲＩＴＥ要求、特定ファイルが削除されるＦＩＬＥ＿ＤＥＬＥＴＥ要求、ファイルが生成されるＦＩＬＥ＿ＣＲＥＡＴＥ要求、特定ファイルのｉｎｏｄｅの基本的情報が変更されるＣＨＡＮＧＥ＿ＡＴＴＲＩＢＵＴＥ要求、保存期間が特定ファイルシステムに設定されるＳＥＴ＿ＲＥＴＥＮＴＩＯＮ要求、特定ファイルの古いバージョンが提供されるＳＨＯＷ＿ＯＬＤ＿ＶＥＲＳＩＯＮ要求の中の一つであるかを決定することを特徴とする請求項６に記載のＮＡＳシステム。
【請求項１５】
前記ファイルＩ／Ｏ要求がＦＩＬＥ＿ＯＰＥＮ要求の時に、前記ＳＷＦＳは特定ファイルのｉｎｏｄｅを現在のデータボリュームから前記ＮＡＳコントローラのメモリに読み込み、ＦＩＤ（ｆｉｌｅ  ｄｅｓｃｒｉｐｔｏｒ：ファイル記述子）をオープンされるファイルに対する参照として、オープンされるファイルを特定するためにＦＩＤを使用する前記ＮＦＳ／ＣＩＦＳサーバに戻すことを特徴とする請求項１４に記載のＮＡＳシステム。
【請求項１６】
前記ファイルＩ／Ｏ要求がＦＩＬＥ＿ＲＥＡＤ要求の時に、前記ＳＷＦＳは、前記ファイルのｉｎｏｄｅのデータ配置情報を調べることによって前記ファイルの要求領域がキャッシュボリュームとデータボリュームのどちらに記憶されているかをチェックし、もしも前記要求領域がキャッシュボリュームに記憶されているならば、前記ＳＷＦＳはキャッシュボリュームから前記ＮＡＳコントローラのメモリにデータを読み込み、前記ＮＦＳ／ＣＩＦＳサーバは読み込みデータを記憶するメモリの位置を指定し、前記ＳＷＦＳはデータボリュームから前記ＮＡＳコントローラのメモリにデータを読み込むことを特徴とする請求項１４に記載のＮＡＳシステム。
【請求項１７】
前記ファイルＩ／Ｏ要求がＦＩＬＥ＿ＷＲＩＴＥ要求の時に、前記ＳＷＦＳは、受信データを記憶するためにキャッシュボリュームに充分な数の未使用ディスクブロックを配置し、ビットマップテーブルを使用してキャッシュボリュームとデータボリュームの両方に対するディスクブロックの配置を管理し、ｉｎｏｄｅが未使用ディスクブロックを指し示すように前記ファイルのｉｎｏｄｅのデータ配置情報を修正し、受信データを未使用ディスクブロックに書くことを特徴とする請求項１４に記載のＮＡＳシステム。
【請求項１８】
前記ファイルＩ／Ｏ要求がＦＩＬＥ＿ＣＬＯＳＥ要求の時に、前記ＳＷＦＳはキャッシュボリュームに更新データを記憶するためにデータボリュームに充分な数の未使用ディスクブロックを配置し、もしも充分な数のディスクブロックが未使用ならば、前記ＳＷＦＳはキャッシュボリュームに記憶され、前記ファイルのｉｎｏｄｅによって指し示されるデータをデータボリュームの配置ディスクブロックにコピーし、前記ｉｎｏｄｅが未使用ディスクブロックを指し示すように前記ｉｎｏｄｅのデータ配置情報を修正し、前記修正ｉｎｏｄｅを記憶するためにデータボリュームに充分な数の未使用ディスクブロックを配置し、もしも充分な数のディスクブロックが未使用ならば前記ＳＷＦＳはデータボリュームの配置ディスクブロックに該修正ｉｎｏｄｅを書くことを特徴とする請求項１４に記載のＮＡＳシステム。
【請求項１９】
もしも充分な数の未使用ディスクブロックがなければ、データボリュームが保護され、保存期間が設定され、書き込みオペレーションが実施される新しいデータボリュームが配置されることを特徴とする請求項１８に記載のＮＡＳシステム。
【請求項２０】
前記のファイルＩ／Ｏ要求がＣＨＡＮＧＥ＿ＡＴＴＲＩＢＵＴＥ要求の時に、前記ＳＷＦＳは前記ファイルの前記ｉｎｏｄｅの基本的情報エントリに受信情報を設定することを特徴とする請求項１４に記載のＮＡＳシステム。
【請求項２１】
前記ファイルＩ／Ｏ要求がＦＩＬＥ＿ＤＥＬＥＴＥ要求の時に、前記ＳＷＦＳは前記ファイルが含まれるディレクトリをオープンし、前記オープンされたディレクトリファイルから前記ファイルに対するエントリを削除し、前記ファイルの前記ディレクトリをクローズし、前記ファイルの前記ｉｎｏｄｅ配置を解除することを特徴とする請求項１４に記載のＮＡＳシステム。
【請求項２２】
前記ファイルＩ／Ｏ要求がＦＩＬＥ＿ＣＲＥＡＴＥ要求の時に、前記ＳＷＦＳはいかなるファイルにも未使用な新しいｉｎｏｄｅを配置し、前記ファイルが置かれるディレクトリをオープンし、オープンされたディレクトリに該ファイルに対する新しいエントリと配置されたｉｎｏｄｅを追加し、ディレクトリをクローズすることを特徴とする請求項１４に記載のＮＡＳシステム。
【請求項２３】
前記ファイルＩ／Ｏ要求がＳＥＴ＿ＲＥＴＥＮＴＩＯＮ＿ＲＥＱＵＥＳＴ要求の時に、前記ＳＷＦＳはファイルシステムに配置された全てのデータボリュームに対して保存期間情報を設定することを特徴とする請求項１４に記載のＮＡＳシステム。
【請求項２４】
前記ファイルＩ／Ｏ要求がＳＨＯＷ＿ＯＬＤ＿ＶＥＲＳＩＯＮ要求の時に、前記ＳＷＦＳはデータボリュームから前記ファイルの古いｉｎｏｄｅを見つけて、ＮＦＳ／ＣＩＦＳサーバが指定する時刻に最も近い修正時刻を有しかつ指定された時刻を過ぎない最後の修正時刻を有するｉｎｏｄｅを見つけて、該ｉｎｏｄｅで指し示されるファイルをデータボリュームからキャッシュボリュームにコピーし、前記ファイルの名前と前記キャッシュボリュームの中の位置を前記ＮＦＳ／ＣＩＦＳサーバに戻すことを特徴とする請求項１４に記載のＮＡＳシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般にストレージシステムにおける長期間のデータアーカイブの技術に関する。更に具体的には、本発明はファイルサーバ又はＮＡＳ（ｎｅｔｗｏｒｋ  ａｔｔａｃｈｅｄ  ｓｔｏｒａｇｅ；ネットワーク接続ストレージ）システム及び長期間のデータアーカイブを実施する方法に関する。
【背景技術】
【０００２】
従来、長期間のデータアーカイブは、ＷＯＲＭ（ｗｒｉｔｅ  ｏｎｃｅ  ｒｅａｄ  ｍａｎｙ）ストレージ媒体を使用して実施されてきた。最近、長期間のデータアーカイブに対する要求が増加している。この要求は、例えば、さまざまな規制の成立によって、さらに激しくなった。これらの規制は、例えば、ＳＥＣ（Ｓｅｃｕｒｉｔｉｅｓ  ａｎｄ  Ｅｘｃｈａｎｇｅ  Ａｃｔ；証券取引法）及び、ＦＤＡ（Ｆｏｏｄ  ａｎｄ  Ｄｒｕｇ  Ａｄｍｉｎｉｓｔｒａｔｉｏｎ；食品と薬品の管理）法の２１ＣＦＲ（Ｃｏｄｅ  ｏｆ  Ｆｅｄｅｒａｌ  Ｒｅｇｕｒａｔｉｏｎ；連邦規制法）第１１部などの規制を含む。これらの規制は、規制データを保護し、長期間、例えば、ＳＥＣの場合では７年間規制データを保持することを規制される企業に要求する。いくつかの産業の規制では、データが実際に規制データの場合は、いかなる保存データも修正することを許可しない。このような規制の他の重要な要素は、データが保存期間中に修正されることを許可して欲しいという要求である。
【０００３】
従来のファイルサーバ又はＮＡＳアプリケーションは上記の規制に合致しない。ファイルサーバ又はＮＡＳアプリケーション又はオペレーティングシステムのファイルシステムはファイルをストレージ媒体に記憶するために通常使用される。ハードディスクドライブはそのようなストレージ媒体として使用されてきて、また使用されている。良く知られているように、ハードディスクドライブに記憶されるデータは容易に修正することが可能である。従って、ハードディスクドライブはそれ自身では上記の規制に合致しない。
【０００４】
従来のＮＡＳ及びＣＡＳ（Ｃｏｎｔｅｎｔ  Ａｄｄｒｅｓｓｅｄ  Ｓｔｏｒａｇｅ）はＷＯＲＭの能力を備えている。しかし、この能力を備えている従来のＮＡＳ及びＣＡＳ製品は、一度ここに記憶されたデータのいかなる修正も許可しない。
【０００５】
例えば、Ｎｅｔｗｏｒｋ  Ａｐｐｌｉａｎｃｅ，Ｉｎｃ．のＮＡＳ  Ｆｉｌｅｒ製品は、Ｓｎａｐｌｏｃｋ（Ｎｅｔｗｏｒｋ  Ａｐｐｌｉａｎｃｅの商標）として記述されている、“Ｓｎａｐｌｏｃｋ  Ｃｏｍｐｌｉａｎｃｅ  ａｎｄ  Ｓｎａｐｌｏｃｋ  Ｅｎｔｅｒｐｒｉｓｅ  Ｓｏｆｔｗａｒｅ”，Ｎｅｔｗｏｒｋ  Ａｐｐｌｉａｎｃｅ  Ｉｎｃ．２００３を提供する。この機能は、保護される必要があるファイルとそのファイルの保存期間をユーザが指定することを可能にする。ＷＯＲＭビットが特定ファイルに対してアプリケーションによってセットされた後に、Ｆｉｌｅｒは、保存期間が終了するまで指定されたファイルを修正または削除することをいかなるユーザにも許可しない。
【０００６】
上記に述べられたように、保存期間中に保護ファイルの修正を許可する要求が存在する。ＮＡＳ  Ｓｎａｐｌｏｃｋの機能によってそれを実施するために、ユーザは、Ｓｎａｐｌｏｃｋの機能を使用して、ファイルを他のボリュームまたはファイルにコピーしてコピーしたファイルを保護することを要求される。これは元のファイルが修正されることを許可する。しかし、この処理手順はいくつかのステップを必要とし、特に多数のファイルを有するユーザには不便である。
【０００７】
更に、例えば、ＥＭＣ  ＣｏｒｐｏｒａｔｉｏｎのＣＡＳ  Ｃｅｎｔｅｒａ（ＥＭＣ  Ｃｏｒｐｏｒａｔｉｏｎの商標）製品は、固定された内容、“Ｃｅｎｔｅｒａ  Ｃｏｎｔｅｎｔ  Ａｄｄｒｅｓｓｅｄ  Ｓｔｏｒａｇｅ：Ｐｒｏｄｕｃｔ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｇｕｉｄｅ”、ＥＭＣ  Ｃｏｒｐｏｒａｔｉｏｎ  ２００３を記憶する専用のストレージを備える。一度データがＣｅｎｔｅｒａストレージに記憶されると、Ｃｅｎｔｅｒａストレージは、特定された保存期間が終了するまでデータを修正又は削除することをユーザに許可しない。記憶データを変更する方法はない。
【０００８】
ＮＡＳと同様に、保存期間中に保護ファイルの修正を許可する要求がある。ＣＡＳ  Ｃｅｎｔｅｒａストレージによってそれを実施するために、修正ファイルは異なるＩＤを有する異なるファイルとして記憶される。ＣＡＳ  Ｃｅｎｔｅｒａストレージはまた元のファイルも記憶する。しかし、ＣＡＳ  Ｃｅｎｔｅｒａストレージでは、ユーザは両方のファイルとＩＤを管理することを要求される。この追加の業務はユーザにとって不便さを意味する。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
本発明は装置、方法、システム、特に、例えば、長期間のデータアーカイブを実施するためのファイルサーバ又はＮＡＳ（ｎｅｔｗｏｒｋ  ａｔｔａｃｈｅｄ  ｓｔｏｒａｇｅ；ネットワーク接続ストレージ）システムを提供する。
【００１０】
本発明は、例えば、長期間のデータアーカイブを実施するためのＮＡＳシステムを提供する。ＮＡＳシステムは、ファイルレベルの入力／出力要求を処理しＮＡＳシステムを制御するＮＡＳコントローラ、及びコントローラとそのコントローラによって制御されデータを記憶するための複数のボリュームを構成するストレージデバイスを有するストレージ装置を含む。
【課題を解決するための手段】
【００１１】
本発明によって、ファイルが生成される時に、ボリューム上のファイルのデータは、コントローラとストレージデバイスの機能を使用して保護される。ボリュームに記憶されるファイルの少なくとも一部分が更新される時に、更新データはボリュームの未使用領域に記憶され、データの一部分はコントローラとストレージデバイスの機能を使用して保護される。更新データの元のデータへの次のアクセスが未使用領域に記憶される更新データに行われるように、元の領域に記憶される元のデータに対応する更新データは未使用領域に記憶されることを示す情報がボリュームに記憶される。更新データの元のデータは元の領域に保持され保護される。従って、本発明を使用して更新データの元のデータの長期間のデータアーカイブが実施される。
【発明の効果】
【００１２】
本発明は、例えば、長期間のデータアーカイブを実施するためのＮＡＳシステムを提供する。
【００１３】
本発明によって、ファイルが生成される時に、ボリューム上のファイルのデータは、コントローラとストレージデバイスの機能を使用して保護される。ボリュームに記憶されるファイルの少なくとも一部分が更新される時に、更新データはボリュームの未使用領域に記憶され、データの一部分はコントローラとストレージデバイスの機能を使用して保護される。更新データの元のデータへの次のアクセスが未使用領域に記憶される更新データに行われるように、元の領域に記憶される元のデータに対応する更新データは未使用領域に記憶されることを示す情報がボリュームに記憶される。更新データの元のデータは元の領域に保持され保護される。従って、本発明を使用して更新データの元のデータの長期間のデータアーカイブが実施される。
【発明を実施するための最良の形態】
【００１４】
本発明の上記の内容と更なる理解は、すべて本発明の開示の一部を構成する付随する図面に関連して読まれると、実施例と請求項の下記の詳細な説明から明確になるであろう。上記、下記、及び図示された開示内容は本発明の実施例の開示に集中しているが、本発明の実施例の開示は図示と例示だけのものであり、本発明は図示と実施例だけに限定されないことが明確に理解されるべきである。
【００１５】
以下により詳細に記述される本発明は装置、方法、システム、特に、例えば、長期間のデータアーカイブを実施するためのファイルサーバ又はＮＡＳ（ｎｅｔｗｏｒｋ  ａｔｔａｃｈｅｄ  ｓｔｏｒａｇｅ；ネットワーク接続ストレージ）システムを提供する。本発明は以下に記述されるようにいろいろな実施例を提供する。しかし、本発明はここで記述される実施例に限定されることはなく、当業者に知られている、もしくは知られるようになるその他の実施例にも拡張できることに注意すべきである。
【００１６】
本発明は図１に示されるような構成を有するシステムで動作する。このシステムは複数のサーバ０１０５０１、０１０５０３、０１０５０５、ＬＡＮ（ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ）０１０３、ＮＡＳシステム０１０１を有する。
【００１７】
各サーバ０１０５０１、０１０５０３、０１０５０５は、例えば、アプリケーションが動作しているコンピュータであることができる。  ＮＦＳ（Ｎｅｔｗｏｒｋ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）のクライアントは、サーバ０１０５０１、０１０５０３、０１０５０５のオペレーティングシステムのＶＦＳ（Ｖｉｒｔｕａｌ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）層に存在し、ＬＡＮ０１０３経由でＮＡＳシステム０１０１へのファイルアクセスをアプリケーションに提供する。ＮＦＳはサーバ０１０５０１、０１０５０３、０１０５０５とＮＡＳシステム０１０１の間のファイルシェアプロトコルであり、例えば、ＵＮＩＸ（ＵＮＩＸは登録商標）及びＬｉｎｕｘサーバと共に使用される。代わりに、クライアントは、ＣＩＦＳ（Ｃｏｍｍｏｎ  Ｉｎｔｅｒｎｅｔ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）クライアントであることができる。ＣＩＦＳクライアントは、ＣＩＦＳがＷｉｎｄｏｗｓ（Ｗｉｎｄｏｗｓは登録商標）サーバに対するファイルシェアプロトコルである点を除いて、ＮＦＳクライアントと本質的に同じである。他の同様なファイルシェアプロトコルを使用することができる。例えば、ＯＳＤ（Ｏｂｊｅｃｔ−ｂａｓｅｄ  Ｓｔｏｒａｇｅ  Ｄｅｖｉｃｅ）とＦＴＰ（Ｆｉｌｅ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）を使用できる。
【００１８】
ＬＡＮ０１０３はサーバ０１０５０１、０１０５０３、０１０５０５とＮＡＳシステム０１０１を接続するネットワークである。ＬＡＮ０１０３に対する物理的ネットワークは、例えば、ＴＣＰ／ＩＰ（Ｔｒａｎｓｐｏｒｔ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）がコミュニケーションプロトコルとして使用されるイーサネット（イーサネットは登録商標）であることができる。物理的ネットワークはまたＩｎｆｉｎｉＢａｎｄ、Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ、又は現在知られているかまたは知られるようになる他のコミュニケーションプロトコルであることができる。
【００１９】
ＮＡＳシステム０１０１はデータを有するファイルが記憶されるストレージである。ＮＡＳシステム０１０１はサーバ０１０５０１、０１０５０３、０１０５０５とコミュニケーションするためにＮＦＳとＣＩＦＳプロトコルをサポートする。
【００２０】
ＮＡＳシステム０１０１の内部ハードウェアは少なくとも一つのＮＡＳコントローラ０１０１０１と少なくとも一つのストレージ装置（システム）０１０１０３を有する。ＮＡＳコントローラ０１０１０１とストレージシステム０１０１０３は相互にコミュニケーションするために接続される。ＮＡＳコントローラ０１０１０１とストレージシステム０１０１０３はＦＣ（Ｆｉｂｅｒ  Ｃｈａｎｎｅｌ）ネットワーク０１０１０５を経由して接続することができる。代わりに、ＦＣスイッチ、イーサネット又は他の同様なネットワークをＮＡＳコントローラ０１０１０１とストレージシステム０１０１０３を接続するために使用することができる。ＮＡＳコントローラ０１０１０１とストレージシステム０１０１０３のインタフェース０１０１０３ｆとストレージシステム０１０１０３のディスクコントローラ０１０１０３ａは一つのボードに実装することができる。この場合は、電子回路がＮＡＳコントローラ０１０１０１とストレージシステム０１０１０３のインタフェース０１０１０３ｆを接続する。
【００２１】
ＮＡＳコントローラ０１０１０１は少なくとも一つのＣＰＵ（ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｏｒ  ｕｎｉｔ）０１０１０１ａ、少なくとも一つのメモリ０１０１０１ｂ、少なくとも一つのＮＩＣ(Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ)０１０１０１ｄ、少なくとも一つのＨＢＡ（Ｈｏｓｔ  Ｂｕｓ  Ａｄａｐｔｅｒ）０１０１０１ｃを有する。ＣＰＵ０１０１０１ａとメモリ０１０１０１ｂはＮＡＳコントローラ０１０１０１のオペレーティングシステムとソフトウェアを動作させるために使用される。ＮＩＣ０１０１０１ｄはＬＡＮ０１０３経由でサーバ０１０５０１、０１０５０３、０１０５０５とコミュニケーションするために使用される。ＨＢＡ０１０１０１ｃはストレージシステム０１０１０３をアクセスするために使用される。
【００２２】
ストレージシステム０１０１０３は少なくとも一つのインタフェース０１０１０３ｆ（例、Ｆｉｂｒｅ  Ｃｈａｎｎｅｌインタフェース）、少なくとも一つのディスクコントローラ０１０１０３ａ、少なくとも一つのキャッシュメモリ０１０１０３ｂ、少なくとも一つのディスクアダプタ０１０１０３ｇ、少なくとも一つのボリューム０１０１０３ｃ、０１０１０３ｄ、０１０１０３ｅを有する。インタフェース０１０１０３ｆはＮＡＳコントローラ０１０１０１とコミュニケーションするために使用される。ディスクコントローラ０１０１０３ａはサーバ０１０５０１、０１０５０３、０１０５０５からのＩ／Ｏ要求と他の管理要求を処理する。キャッシュメモリ０１０１０３ｂは高速アクセスに対して一時的にデータを記憶するために備えられる。ディスクコントローラ０１０１０３ａはボリューム０１０１０３ｃ〜ｅのデータを読み書きするためにボリューム０１０１０３ｃ〜ｅとコミュニケーションする。
【００２３】
各ボリューム０１０１０３ｃ〜ｅはデータを記憶し、ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｄｅｐｅｎｄｅｎｔ  Ｄｉｓｋｓ）で構成される複数の物理的ディスクドライブ又は一つのディスクドライブを有する論理的ストレージであることができる。各ボリュームはまた、例えば、親のストレージシステムがネットワーク経由で他の子のストレージシステムに接続し、親のストレージシステムが子のストレージシステムのデータを読み書きする外部ストレージによって提供されることができる。更に、各ボリュームは、例えば、ＤＶＤ（ｄｉｇｉｔａｌ  ｖｉｄｅｏ  ｄｉｓｋ）またはＣＤ（ｃｏｍｐａｃｔ  ｄｉｓｋ）によって提供されることができる。
【００２４】
本発明による二つのタイプのボリューム、キャッシュボリューム０１０１０３ｃとデータボリューム０１０１０３ｄ、０１０１０３ｅがある。これらのボリュームの違いは下記に記述される。
【００２５】
図２はＮＡＳコントローラ０１０１０１の内部ソフトウェアを示す。ＮＡＳコントローラ０１０１０１において、いろいろな機能が、例えば、ＮＦＳ／ＣＩＦＳサーバ０３０１、ＳＷＦＳ（Ｓｅｑｕｅｎｔｉａｌ  Ｗｒｉｔｅ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）０３０３、Ｌｏｇｉｃａｌ  Ｖｏｌｕｍｅ  Ｍａｎａｇｅｒ（論理ボリュームマネージャ）０３０７、ＳＣＳＩドライバ０３０９、ＷＯＲＭ  ＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）０３０５を含むいろいろなソフトウェア製品を実行することによって遂行される。
【００２６】
ＮＦＳ／ＣＩＦＳサーバ０３０１はＮＦＳとＣＩＦＳプロトコルを処理する。これらのプロトコルは、ＬＡＮ０１０３経由でサーバ０１０５０１、０１０５０３、０１０５０５からＮＦＳ／ＣＩＦＳサーバ０３０１によって受信されるＩ／Ｏ要求において実施されることができる。ＮＦＳ／ＣＩＦＳサーバ０３０１は要求を処理し、必要ならば、ＶＦＳ（Ｖｉｒｔｕａｌ  Ｆｉｌｅ  Ｓｙｓｔｅｍ  ）インタフェース（図示してない）を使用してＳＷＦＳ０３０３によって管理されるファイルを生成、削除、読み出し、書き込みする。ＶＦＳインタフェースはファイルをアクセスするためにＮＦＳ／ＣＩＦＳサーバ０３０１が使用するＡＰＩを提供する。
【００２７】
ＳＷＦＳ０３０３はＮＡＳコントローラ０１０１０１のオペレーティングシステムのＶＦＳ層におけるファイルシステムである。ＳＷＦＳ０３０３はＶＦＳ層を通してＮＦＳ／ＣＩＦＳサーバ０３０１によって発行されるファイルＩ／Ｏ要求を処理する。ＳＷＦＳ０３０３はストレージシステム０１０１０３のボリューム０１０１０３ｃ〜ｅにファイルを記憶する。ＳＷＦＳ０３０３の動作の詳細は以下に説明される。
【００２８】
Ｌｏｇｉｃａｌ  Ｖｏｌｕｍｅ  Ｍａｎａｇｅｒ０３０７はファイルシステムを含むアプリケーションに対する論理ボリュームを提供する。上記に記述される論理ボリュームは、ＬＡＮ０１０３経由でサーバ０１０５０１、０１０５０３、０１０５０５によってアクセスされる一つ以上の物理的ディスクドライブを含むことができる。
【００２９】
ＳＣＳＩドライバは、ＳＷＦＳ０３０３に、ストレージシステム０１０１０３のボリューム０１０１０３ｃ〜ｅへの低レベルのデータアクセスを提供するソフトウェアである。ボリューム０１０１０３ｃ〜ｅのデータを読み書きするために、ＳＷＦＳ０３０３は、ボリューム０１０１０３ｃ〜ｅの名前またはＩＤ、データが読み書きされるためのオフセット、及びＳＷＦＳ０３０３が読み書きしたいデータのサイズを指定する。
【００３０】
ＷＯＲＭ  ＡＰＩ０３０５はＳＷＦＳ０３０３がストレージシステム０１０１０３の各ボリューム０１０１０３ｃ〜ｅの保存情報を設定及び取得する方法を提供し、これにより、設定される保存期間に従って、ボリューム０１０１０３ｃ〜ｅへの引き続く書き込みオペレーションまたは他の同様な修正からボリューム０１０１０３ｃ〜ｅを保護する。
【００３１】
ＷＯＲＭ  ＡＰＩのフォーマットの例は以下である：
# Set a retention period for a volume 
set_retention_period([input]volume_id,[input]retention_period)
volume_id: a name or ID of a volume
retention_period: how long a volume needs to be write-protected
from a present time
# Get a retention period which has been set on a volume
get_retention_period([input]volume_id,[output]retention_period)
volume_id: a name or ID of a volume
retention_period: how long a volume is being write-protected from
a present time
ＳＷＦＳ０３０３は次の事項を除いて多くの他のファイルシステムに類似した動作をする。（１）ＳＷＦＳ０３０３は、一度ファイルがデータボリューム０１０１０３ｄ〜ｅに書かれると、データボリューム０１０１０３ｄ〜ｅに記憶されるファイルに決して上書きをしない。（２）もしもデータボリューム０１０１０３ｄ〜ｅに記憶されるファイルが変更される必要があるならば、ＳＷＦＳ０３０３はデータボリューム０１０１０３ｄ〜ｅの元のファイルを保持し、データボリューム０１０１０３ｄ〜ｅの他の未使用位置に変更されたファイルを書く。（３）ＳＷＦＳ０３０３はデータをボリュームの最初のオフセットから最後のオフセットに連続的に書く。（４）一度、一つのデータボリューム０１０１０３ｄ〜ｅがデータで満たされると、ＳＷＦＳ０３０３はＷＯＲＭ  ＡＰＩ０３０５を使用してボリュームを保護し、他のデータボリューム０１０１０３ｄ〜ｅを使用して他のデータを書くかまたはデータを更新する。（５）もしもデータボリューム０１０１０３ｄ〜ｅに設定された保存期間が終了すると、ユーザがデータボリューム０１０１０３ｄ〜ｅに記憶されたデータを保持するかまたは削除するかはユーザの判断である。ＳＷＦＳ０３０３の追加の詳細は以下に記述される。
【００３２】
図３は本発明によるｉｎｏｄｅ０５を示す。ｉｎｏｄｅは、例えば、ファイルシステムのファイルについての情報を含むデータ構造である。各ファイルはｉｎｏｄｅを有し、ｉｎｏｄｅが存在するファイルシステムのｉｎｏｄｅ番号（ｉ―番号）で識別される。ｉｎｏｄｅはファイルシステムのファイル上の重要な情報を提供する。ｉｎｏｄｅはファイルシステムが生成される時に生成される。ｉｎｏｄｅのセット番号があり、システムが保有できるファイルの最大数を示す。ファイルのｉｎｏｄｅ番号は／ｓ−／コマンドを使用して見つけることが可能であり、／ｓ−ｉコマンドはｉｎｏｄｅ情報を検索する。ＳＷＦＳ０３０３は各ファイルとディレクトリに対するｉｎｏｄｅを管理する。図３に示すように、ｉｎｏｄｅ０５は二つの部分、すなわちファイルに関する基本的情報とファイルのデータ配置情報を有する。
【００３３】
基本的情報はｉｎｏｄｅ＃０５０１、ファイルサイズ０５０３、生成時刻０５０５、最終変更時刻０５０７、最終アクセス時刻０５０９、オーナ０５１１、許可／ＡＣＬ（Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ  Ｌｉｓｔ）０５１３を有する。ｉｎｏｄｅ＃０５０１はファイルシステムでのｉｎｏｄｅ０５の識別である。ファイルサイズ０５０３はファイルのサイズである。生成時刻０５０５はファイルが生成された時刻である。最終変更時刻０５０７はファイルが変更された時刻である。最終アクセス時刻０５０９はファイルが最後にアクセスされた時刻である。オーナ０５１１はファイルを生成したユーザである。許可／ＡＣＬ０５１３はファイルへのユーザのアクセスを制限するために使用される情報である。
【００３４】
データ配置情報０５１５から０５２５はファイルが記憶されるディスクブロックに関する情報を管理する。知られているように、ボリュームは複数のディスクブロックに分割される。ＳＷＦＳ０３０３はデータを記憶するディスクブロックを指定する。ファイルは一つのディスクブロックより大きい場合がある。この場合、ファイルは一つのディスクブロックのサイズで分割され、複数のディスクブロックに記憶される。従って、ｉｎｏｄｅ０５のデータ配置情報は、ファイルが記憶されるディスクブロックのリストを管理する。その結果、図３に示されるように、ファイルは示した順にボリューム１のディスクブロック＃１，２，３，４，５，６に記憶される。
【００３５】
上記に記述されているように、本発明はキャッシュボリューム０１０１０３ｃとデータボリューム０１０１０３ｄ〜ｅを提供する。各データボリューム０１０１０３ｄ〜ｅはファイルが記憶されるボリュームである。キャッシュボリューム０１０１０３ｃはファイルを一時的に記憶するために使用される。ファイルがオープンされ修正され続ける間は、更新データはキャッシュボリューム０１０１０３ｃに記憶される。ファイルがクローズされた後に、更新データはデータボリューム０１０１０３ｄ〜ｅに移動される。オープンされ、修正され、最終的に記憶されるファイルに対するｉｎｏｄｅは、ファイルへの全てのアクセスを最新のバージョンに適切に向けるために、ファイルの最新のバージョンの位置を追跡しなければならない。本発明のこの機能は図４の例に示される。
【００３６】
図３のｉｎｏｄｅ０５で表されるファイルがアクセスされる時に、ファイルのコピーはキャッシュボリューム０１０１０３ｃに記憶される。その後、このファイルに対するアクセスは全てキャッシュボリューム０１０１０３ｃに向けられる。ディスクブロック３と６の、それぞれデータＣとＦが修正（更新）される時に、更新データＧとＨは図４に示されるキャッシュボリューム０１０１０３ｃの対応するディスクブロック１１と１４に記憶される。キャッシュボリューム０１０１０３ｃの更新データＧとＨへの引き続くアクセスを許可するために、キャッシュボリューム０１０１０３ｃの更新データＧとＨの位置は、ｉｎｏｄｅを変更することによって反映され、図４に示されるｉｎｏｄｅ０５ａのような内容を有する。ｉｎｏｄｅ５ａはファイルクローズの前のｉｎｏｄｅの状態である。そして、ディスクブロック３と６の、それぞれデータＣとＦに対して、ｉｎｏｄｅ０５ａは、更新データGとHがそれぞれキャッシュボリューム０１０１０３ｃのディスクブロック１１と１４に記憶されることを示す。
【００３７】
ｉｎｏｄｅ０５によって表されるファイルをクローズし、ｉｎｏｄｅ０５ａの内容を有すると、更新データGとHはそれぞれ未使用領域、キャッシュボリューム０１０１０３ｃのディスクブロック８と９に記憶され、ｉｎｏｄｅは修正され、図４に示されるｉｎｏｄｅ０５ｂのような内容を有するようになる。そして、ディスクブロック３と６の、それぞれデータCとFに対して、ｉｎｏｄｅ０５ｂは、更新データGとHがデータボリューム０１０１０３ｄ〜ｅのディスクブロック８と９に、それぞれ、記憶されることを示す。
【００３８】
本発明では、長期間のデータアーカイブを実施するために、元のデータCとF及び元の（古い）ｉｎｏｄｅ０５は保持される。更に、本発明では、更新データGとHは未使用領域に記憶され、修正（新しい）ｉｎｏｄｅ０５ｂが、例えば、データボリューム０１０１０３ｄ〜ｅのディスクブロック１０の他の未使用領域に記憶される。
【００３９】
ＳＷＦＳ０３０３によって実行されるステップは図５に示される。ＳＷＦＳ０３０３はＶＦＳインタフェースを経由のＮＦＳ／ＣＩＦＳサーバ０３０１からのファイルＩ／Ｏ要求を待つ（ステップ０９０３）。ＳＷＦＳ０３０３は受信するファイルＩ／Ｏ要求がどんなタイプのファイルＩ／Ｏ要求かをチェックする（ステップ０９０５）。ファイルＩ／Ｏ要求のタイプによって、次の要求の一つに対応するステップが実行される：（１）特定ファイルがオープンされるＦＩＬＥ＿ＯＰＥＮ要求（ステップ０９０７）；（２）特定ファイルがクローズされるＦＩＬＥ＿ＣＬＯＳＥ要求（ステップ０９０９）；（３）データが特定ファイルから読まれるＦＩＬＥ＿ＲＥＡＤ要求（ステップ０９１１）；（４）データが特定ファイルに書かれるＦＩＬＥ＿ＷＲＩＴＥ要求（ステップ０９１３）；（５）特定ファイルが削除されるＦＩＬＥ＿ＤＥＬＥＴＥ要求（ステップ０９１５）；（６）ファイルが生成されるＦＩＬＥ＿ＣＲＥＡＴＥ要求（ステップ０９１７）；（７）特定ファイルのｉｎｏｄｅの基本情報が変更されるＣＨＡＮＧＥ＿ＡＴＴＲＩＢＵＴＥ要求（ステップ０９１９）；（８）保存期間が特定ファイルシステムに設定されるＳＥＴ＿ＲＥＴＥＮＴＩＯＮ要求（ステップ０９２１）；（９）特定ファイルのより古いバージョンが提供されるＳＨＯＷ＿ＯＬＤ＿ＶＥＲＳＩＯＮ要求（ステップ０９２３）。
【００４０】
図６はＦＩＬＥ＿ＯＰＥＮ要求（ステップ０９０７）の詳細を示す。図６に示されるように、ＳＷＦＳは現在のデータボリュームからＮＡＳコントローラのメモリへ特定ファイルのｉｎｏｄｅを読み込む（ステップ１１０３）。ＳＷＦＳはこのオープンされるファイルに対する参照としてＦＩＤ（ｆｉｌｅ  ｄｅｓｃｒｉｐｔｏｒ；ファイル記述子）をＮＦＳ／ＣＩＦＳサーバに戻し、ステップ０９０３に戻る（ステップ１１０５）。ＮＦＳ／ＣＩＦＳサーバはＦＩＤを使用し、オープンされたファイルを後で特定する。
【００４１】
図７はＦＩＬＥ＿ＲＥＡＤ要求（ステップ０９１１）の詳細を示す。図７に示されるように、ＳＷＦＳはｉｎｏｄｅのデータ配置情報を調べて、特定ファイルの要求領域がキャッシュボリュームまたはデータボリュームに記憶されているかをチェックする（ステップ１３０３）。もしも要求領域がキャッシュボリュームに記憶されていると、ＳＷＦＳはキャッシュボリュームからＮＡＳコントローラのメモリへデータを読み込み（ステップ１３０５）、ステップ０９０３に戻る（ステップ１３０９）。ＮＦＳ／ＣＩＦＳサーバはメモリの位置を特定し、読み出しデータを記憶する。もしも要求領域がデータボリュームに記憶されていたら、ＳＷＦＳはデータボリュームからＮＡＳコントローラのメモリへデータを読み込み（ステップ１３０７）、ステップ０９０３に戻る（ステップ１３０９）。
【００４２】
図８はＦＩＬＥ＿ＷＲＩＴＥ要求（ステップ０９１３）の詳細を示す。図８に示されるように、ＳＷＦＳは受信データを記憶するために十分な数の未使用ディスクブロックをキャッシュボリュームに配置する（ステップ１５０３）。ＳＷＦＳは、ビットマップテーブルを使用してキャッシュボリュームとデータボリュームの両方に対してディスクブロックの配置を管理する。ＳＷＦＳは、ｉｎｏｄｅがこれらの新しいディスクブロックを指し示すように、ｉｎｏｄｅのデータ配置情報を変更／修正する（ステップ１５０５）。このステップで、メモリ（例えば、キャッシュメモリ、レジスタ等）に記憶されるｉｎｏｄｅだけが変更される。データボリュームに記憶されるｉｎｏｄｅはこの時点では変更されない。ファイルがクローズされる時に、修正ｉｎｏｄｅはメモリからデータボリュームへ記憶される。ＳＷＦＳは受信データを新しいディスクブロックに書き込み（ステップ１５０７）、ステップ０９０３に戻る（ステップ１５０９）。
【００４３】
図９ａとｂはＦＩＬＥ＿ＣＬＯＳＥ要求の詳細を示す。図９ａに示されるように、ＳＷＦＳは、キャッシュボリュームに更新データを記憶するために、十分な数の未使用ディスクブロックをデータボリュームに配置する（ステップ１７０３）。もしもＳＷＦＳが十分な数の未使用ディスクブロックを配置できなければ、これはデータボリュームがいっぱいであることを意味するが、ＳＷＦＳはＷＯＲＭ＿ＳＥＴ要求を実行し配置を再び試みる（ステップ１７０５と１７０７）。もしもＳＷＦＳが十分な数の未使用ディスクブロックを配置できると、ＳＷＦＳは、キャッシュボリュームに記憶されｉｎｏｄｅに指し示されるデータをデータボリュームの中の配置済ディスクブロックにコピーする（ステップ１７０９）。その後、ＳＷＦＳは、ｉｎｏｄｅがこれらのディスクブロックを指し示すように、ｉｎｏｄｅのデータ配置情報を変更／修正する（ステップ１７１１）。
【００４４】
このステップで、メモリに記憶されるｉｎｏｄｅだけが変更される。データボリュームに記憶されるｉｎｏｄｅはこの時点では変更されない。ＳＷＦＳはｉｎｏｄｅの最後のアクセス時刻と最後の修正時刻のエントリを変更する（ステップ１７１３）。このステップで、メモリに記憶されるｉｎｏｄｅだけが変更される。データボリュームに記憶されるｉｎｏｄｅはこの時点では変更されない。図９ｂに示されるように、ＳＷＦＳは、ｉｎｏｄｅを記憶するために十分な数の未使用ディスクブロックをデータボリュームに配置する（ステップ１７１５）。もしもＳＷＦＳが十分な数の未使用ディスクブロックを配置できなければ、ＳＷＦＳはＷＯＲＭ＿ＳＥＴ要求を実行し配置を再び試みる（ステップ１７１７と１７１９）。ＳＷＦＳはデータボリュームに配置されるディスクブロックにｉｎｏｄｅを書く（ステップ１７２１）。このステップによって、修正ｉｎｏｄｅはデータボリュームに記憶される。その後で、要求はステップ０９０３に戻る（ステップ１７２３）。
【００４５】
ファイルをクローズする時に実行されるステップの例として図４に注目が向けられる。図示されているように、ファイルがクローズされる前には、ファイルのある部分＃１，２，４，５はデータボリュームに記憶され、ファイルの他の部分＃３と６はキャッシュボリュームに記憶されている。ｉｎｏｄｅは、部分＃３と６が修正され、それ故にキャッシュボリュームに記憶された状態を示す。ファイルがクローズされた後、部分＃３と６のデータはデータボリュームに移動される。部分＃３と６がデータボリュームに移動される時に、データボリュームの新しいデータブロック（ディスクブロック８と９）が配置される。その後に、ｉｎｏｄｅのデータ配置情報が修正される。データボリュームの未使用ディスクブロック＃１０はｉｎｏｄｅを記憶するために使用される。
【００４６】
図１０はＷＯＲＭ＿ＳＥＴ要求の詳細を示す（ステップ１７０７と１７１７）。図１０に示されるように、ＳＷＦＳは、ＳＷＦＳが現在使用しているデータボリュームに対する保存期間をＷＯＲＭ  ＡＰＩを使用して設定する（ステップ１９０３）。データボリュームを有するストレージシステムのディスクコントローラは保存期間を設定する要求を処理する。
【００４７】
保存期間が終了するまで、ディスクコントローラはボリュームに記憶されるデータのいかなる修正も許可しない。ディスクコントローラがＮＦＳ／ＣＩＦＳサーバから書き込み要求を受信すると、ディスクコントローラは要求を無視するか、またはエラーをＮＦＳ／ＣＩＦＳサーバに返す。保存期間はＮＦＳ／ＣＩＦＳサーバまたはＮＡＳシステムの管理ソフトウェアツールによって指定される。ＮＦＳ／ＣＩＦＳサーバと管理ソフトウェアは、ファイルシステムまたはデータボリュームに対する保存期間情報を設定するために、ＳＷＦＳの専用ＡＰＩを使用する。ＳＥＴ＿ＲＥＴＥＮＴＩＯＮ要求は保存期間を設定するために呼び出され、ＳＷＦＳは要求を処理する。これは図１４に関して以下に説明される。保存期間情報は図１５に示される保存期間テーブル２９によって管理される。
【００４８】
図１５に示される保存期間テーブルは６列、すなわち物理ボリューム２９０１、ファイルシステム２９０３、配置済２９０５、残存期間２９０７、ＷＯＲＭ可能２９０９、保存期間２９１１を有する。物理ボリューム２９０１はＮＡＳコントローラがアクセスできるデータボリュームのリストを示す。ファイルシステム２９０３はデータボリュームが配置されるファイルシステムの名前を示す。一つのファイルシステムは複数のデータボリュームを使用できる。データボリュームは鎖状につながれる。論理ボリュームマネージャはこの要求に対して使用できる。配置済２９０５列の欄は、データボリュームが特定のファイルシステムに配置されているかまたは未配置かを示す。残存期間２９０７はデータボリュームに対する保存期間の残存する長さを示す。データボリュームがデータで満たされる時に、データボリュームは書き込み禁止される。
【００４９】
ＷＯＲＭ可能２９０９はデータボリュームが書き込み禁止かまたは禁止でないかを示す。保存期間２９１１はデータが変更されない期間の長さを示す。ＳＷＦＳは、図１０に示されるようにファイルシステムの容量を増やすためにどのファイルシステムにも使用されていない新しいデータボリュームを配置する（ステップ１９０５）。その後に、要求はステップ０９０３に戻る（ステップ１９０７）。このように、ＳＷＦＳは保存期間テーブル（２９）を使用してデータボリューム配置を管理する。
【００５０】
図１１はＣＨＡＮＧＥ＿ＡＴＴＲＩＢＵＴＥ要求（ステップ０９１９）の詳細を示す。図１１に示されるように、ＳＷＦＳは受信情報をｉｎｏｄｅの基本情報のエントリに設定する（ステップ２１０３）。その後に、要求はステップ０９０３に戻る（ステップ２１０５）。
【００５１】
図１２はＦＩＬＥ＿ＤＥＬＥＴＥ要求（ステップ０９１５）の詳細を示す。図１２に示されるように、ＳＷＦＳは特定ファイルが含まれるディレクトリをオープンする（ステップ２３０３）。ディレクトリは特別なタイプのファイルである。ディレクトリファイルは、ディレクトリに置かれるファイルの名前とこれらのファイルに対するｉｎｏｄｅのリストを管理するテーブルである。ファイルを生成することはディレクトリファイルに新しいエントリを追加することを意味する。ファイルを削除することはディレクトリからエントリを削除することを意味する。ファイルを生成することまたは削除することはファイルが位置するディレクトリを変更することを要求する。しかし、この変更は修正ディレクトリの上位レベルのディレクトリに影響しない。
【００５２】
ＳＷＦＳはそれ自身の要求を使用してディレクトリをオープン、読み、書き、削除する。ＳＷＦＳは特定ファイルのエントリをオープンされているディレクトリから削除する（ステップ２３０５）。ＳＷＦＳはディレクトリを修正するので、この修正は未使用ディスクブロックに記憶され、これはＳＷＦＳがファイルだけでなくディレクトリに関してもデータの重ね書きを許可しないためである。ＳＷＦＳはディレクトリをクローズする（ステップ２３０７）。ＳＷＦＳは特定ファイルのｉｎｏｄｅの配置を解除する（ステップ２３０９）。その後に、要求はステップ０９０３に戻る（ステップ２３１１）。
【００５３】
図１３はＦＩＬＥ＿ＣＲＥＡＴＥ要求（ステップ０９１７）の詳細を示す。図１３に示されるように、ＳＷＦＳはいかなるファイルにも使用されていない新しいｉｎｏｄｅを配置する（ステップ２５０３）。ＳＷＦＳは特定ファイルが置かれるディレクトリをオープンする（ステップ２５０５）。ＳＷＦＳは特定ファイルに対する新しいエントリと配置済ｉｎｏｄｅをオープンされたディレクトリファイルに追加する（ステップ２５０７）。ＳＷＦＳはディレクトリファイルをクローズする（ステップ２５０９）。その後に、要求はステップ０９０３に戻る（ステップ２５１１）。
【００５４】
図１４はＳＥＴ＿ＲＥＴＥＮＴＩＯＮ＿ＲＥＱＵＥＳＴ要求（ステップ０９２１）の詳細を示す。図１４に示されるように、ＳＷＦＳは特定のデータボリュームに対する特定の保存期間情報を保存期間テーブル（２９）に設定する。ＮＦＳ／ＣＩＦＳサーバまたは管理ソフトウェアツールは各データボリュームまたは各ファイルシステムに対して保存期間を指定する。ファイルシステムの場合、ＳＷＦＳは特定のファイルシステムに配置された全てのデータボリュームに対して保存期間情報を設定する（ステップ２７０３）。その後に、要求はステップ０９０３に戻る（ステップ２７０５）。
【００５５】
図１７はＳＨＯＷ＿ＯＬＤ＿ＶＥＲＳＩＯＮ要求（ステップ０９２３）の詳細を示す。図１７に示されるように、ＳＷＦＳはデータボリュームから特定のファイルに対する全ての古いｉｎｏｄｅを捜す（見つけようと試みる）（ステップ３３０３）。たとえファイルが何回も修正されるかまたは削除されていても、ファイルの全てのバージョンとそのｉｎｏｄｅはデータボリュームにまだ保持されている。ｉｎｏｄｅ検索を加速するために、ＳＷＦＳはｉｎｏｄｅとデータボリュームの中のその位置のリストを図１６に示されるデータボリュームの最後に記憶できる。ＳＷＦＳがデータボリュームのｉｎｏｄｅリストだけを検索すれば十分なので、ｉｎｏｄｅ検索はデータボリュームの全体を検索するより速く終了する。
【００５６】
図１６に示される例では、データボリューム３１０１は４個のファイル、ファイルＡ（古いバージョン）３１０３、ファイルＢ３１０７、ファイルＡ（新しいバージョン）３１１１、ファイルＣ３１１５を有する。各ファイルに対してｉｎｏｄｅ３１０５、３１０９、３１１３、３１１７がある。データボリュームの最後にあるｉｎｏｄｅリスト３１１９はデータボリュームのｉｎｏｄｅ位置を示す。ＳＷＦＳはｉｎｏｄｅリストを記憶するために各データボリュームにスペースを確保する。ＳＷＦＳは、最後の修正時刻がＮＦＳ／ＣＩＦＳサーバまたは管理ソフトウェアツールで指定される時刻に最も近く、最後の修正時刻が指定された時刻を過ぎないｉｎｏｄｅを見つける（ステップ３３０５）。ユーザがアクセスしたいファイルを特定するための多くの方法がある。一つの例はファイルの名前と時刻を特定することである。
【００５７】
以下はＳＨＯＷ＿ＯＬＤ＿ＶＥＲＳＩＯＮインタフェースの例である：
(ケース１) show_old_version([INPUT]file_name, [INPUT]time, [OUTPUT]result)
file_name: a name of a file
time: time at which the specified file was
result: a path name of the file
次のＡＰＩはファイルを特定する他の方法である：
(ケース2) show_old_version([INPUT]directory_name, [INPUT]time, [OUTPUT]result)
directory_name: a name of a directory
time: time at which the specified directory and any files and sub directories under the directory was
result: a path name of the directory. All of files and subdirectories in the directory at the specified time are copied to Cache Volume.
(ケース３) show_old_version([INPUT]name, [OUTPUT]result)
name: a name of a file or a directory
result: all versions of a specified file or a directory
ＳＷＦＳはｉｎｏｄｅで指し示すファイルをデータボリュームからキャッシュボリュームにコピーする（ステップ３３０７）。あるいは、キャッシュのｉｎｏｄｅを、時間浪費であるかもしれないこのコピーオペレーションを避けるために、データボリュームを指し示すように設定することができる。ファイルをキャッシュボリュームにコピーすることは必要ない。ＮＦＳ／ＣＩＦＳサーバはデータボリュームディレクトリに記憶されるファイルをアクセスできる。ＳＷＦＳはファイルの名前とキャッシュボリュームの中のその位置をＮＦＳ／ＣＩＦＳサーバまたは管理ソフトウェアツールに戻す（ステップ３３０９）。あるいは、ユーザがファイルの名前を指定できる。その後に、要求はステップ０９０３に戻る（ステップ３３１１）。
【００５８】
データボリュームに書き込み禁止を設定する他のタイミングがある。上記において、このタイミングはデータボリュームがファイルで満たされる時点である。他の方法は時間をベースとするものである。ＳＷＦＳは第一のファイルがデータボリュームに記憶される時に印を付け、指定された時間が印の時点から経過すると、ＳＷＦＳはデータボリュームに対して書き込み禁止を設定し新しいデータボリュームを使用する。時々、データボリュームが、長い時間、ファイルで満たされないことがある。すると、時間ベースの書き込み禁止が有効となる。
【００５９】
ＳＷＦＳはいかなるデータの修正もなくデータボリュームにデータを連続的に書くので、ポインターベースのＬＤＥＶ保護機能をＳＷＦＳに結び付けることが可能である。ポインターベースのＬＤＥＶ保護はデータボリュームの一部を保護する。この部分はデータボリュームの第一のディスクブロックから始まり、ポインタで指定されるディスクブロックで終わる。データがポインタで指定されたディスクブロックに書かれると、ポインタは次のディスクブロックに移る。保存期間が各データボリュームまたは各ファイルシステムに対して設定できることを注意することは重要である。
【００６０】
上記に記述される本発明の機能を使用して、いろいろなＮＡＳシステム構成が提供されることが可能である。これらのＮＡＳシステム構成は以下に記述される。
【００６１】
ＮＡＳシステムはファイルをデータボリュームに記憶し、更新ファイルをデータボリュームの未使用領域に記憶し、元のファイルとその関連のメタデータを保持する。もしもボリュームがファイルでいっぱいでＮＡＳシステムのもとでストレージシステムの機能を使用してデータボリュームを書き込み禁止にするならば、上記に記述されるＮＡＳシステムはまたデータボリュームを書き込み禁止にできる。
【００６２】
ＮＡＳシステムはまたデータボリュームの始めからデータボリュームの最後まで連続的にデータボリュームにファイルを書くことができ、データがディスクブロックに記憶された時にディスクブロックを書き込み禁止にできる。更に、ＮＡＳシステムは、第一のファイルがデータボリュームに生成された時点から特定の時間が経過した時点にデータボリュームを書き込み禁止にでき、ファイルがクローズされるまでキャッシュボリュームに修正ファイルを記憶できる。一度修正ファイルが記憶されると、ファイルがクローズされた後に、記憶された修正ファイルはキャッシュボリュームからデータボリュームに移動される。
【００６３】
更に、キャッシュボリュームとデータボリュームのファイルの位置はファイルに関連するメタデータを使用して保持される。ＮＡＳシステムがいっぱいのデータボリュームを書き込み禁止にする時に、もしもデータボリュームがファイルとメタデータでいっぱいならば、新しいデータボリュームがファイルシステムに配置される。
【００６４】
ＮＡＳシステムはデータボリュームのファイルとディレクトリの古いバージョンを示すことができ、ファイルの名前、ディレクトリの名前、あるいは時間を指定することによって、ファイルとディレクトリの選択されたバージョンを示すことができる。ＮＡＳシステムが満杯のデータボリュームを書き込み禁止にする時に、保存期間が各データボリュームと各ファイルシステムに対して設定される。その後、保存期間が終了したら、ＮＡＳシステムはデータボリュームとファイルシステムの書き込み禁止を解除できる。
【００６５】
ＮＡＳシステムがデータボリュームのファイルとディレクトリの古いバージョンを示す時に、ファイルの古いバージョンはキャッシュボリュームにコピーでき、ファイルへのアクセスはユーザに提供できる。更に、ＮＡＳシステムはデータボリュームのｉｎｏｄｅの位置のリストをデータボリュームの特定領域に保存する。
【００６６】
いろいろな構成で上記に記述されるＮＡＳシステムは、ファイルレベルの入力／出力（Ｉ／Ｏ）要求を処理しＮＡＳシステムを制御するＮＡＳコントローラと、コントローラとデータを記憶するための複数のボリュームが構成されるストレージデバイスを有するストレージ装置を含む。コントローラはストレージデバイスを制御する。
【００６７】
従って、本発明によって、少なくとも一つのボリュームに含まれるボリュームに記憶されるデータの少なくとも一つの部分が更新される時に、更新データはボリュームの未使用領域に記憶され、更新データの元のデータへの引き続くアクセスが未使用領域に記憶される更新データに向けられるように、元の領域に記憶される元のデータに対応する更新データが未使用領域に記憶されることを示す情報はボリュームに記憶され、更新データの元のデータは元の領域に保持される。それ故、本発明を使用して、更新データの元のデータの長期間のデータアーカイブが実施される。
【００６８】
本発明は好適な実施例について記述されたが、本発明の精神と範囲から離れることなく、多くの修正ができることを理解すべきである。そのようなすべての修正は添付の特許請求の範囲であることが意図される。
【図面の簡単な説明】
【００６９】
【図１】図１は本発明の第一の実施例によるＮＡＳシステムを示す。
【図２】図２は本発明による図１のＮＡＳコントローラ内部のソフトウェアモジュールを説明する図である。
【図３】図３は本発明によるｉｎｏｄｅ情報の例を説明する図である。
【図４】図４は本発明によるＦｉｌｅ  Ｗｒｉｔｅ  ＆  Ｃｌｏｓｅの処理手順の例を説明する図である。
【図５】図５は本発明によるＳＷＦＳ（Ｓｅｑｕｅｎｔｉａｌ  Ｗｒｉｔｅ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）を実行する時に実施されるステップを図示するフローチャートである。
【図６】図６は本発明によるＦｉｌｅ  Ｏｐｅｎ  Ｒｅｑｕｅｓｔを実行するために実施されるステップを図示するフローチャートである。
【図７】図７は本発明によるＦｉｌｅ  Ｒｅａｄ  Ｒｅｑｕｅｓｔを実行するために実施されるステップを図示するフローチャートである。
【図８】図８は本発明によるＦｉｌｅ  Ｗｒｉｔｅ  Ｒｅｑｕｅｓｔを実行するために実施されるステップを図示するフローチャートである。
【図９（ａ）】図９ａは本発明によるＦｉｌｅ  Ｃｌｏｓｅ  Ｒｅｑｕｅｓｔを実行するために実施されるステップを図示するフローチャートである。
【図９（ｂ）】図９ｂは本発明によるＦｉｌｅ  Ｃｌｏｓｅ  Ｒｅｑｕｅｓｔを実行するために実施されるステップを図示するフローチャートである。
【図１０】図１０は本発明によるＷＯＲＭ  ＳＥＴ  Ｒｅｑｕｅｓｔを実行するために実施されるステップを図示するフローチャートである。
【図１１】図１１は本発明によるＣｈａｎｇｅ  Ａｔｔｒｉｂｕｔｅ  Ｒｅｑｕｅｓｔを実行するために実施されるステップを図示するフローチャートである。
【図１２】図１２は本発明によるＦｉｌｅ  Ｄｅｌｅｔｅ  Ｒｅｑｕｅｓｔを実行するために実施されるステップを図示するフローチャートである。
【図１３】図１３は本発明によるＦｉｌｅ  Ｃｒｅａｔｅ  Ｒｅｑｕｅｓｔを実行するために実施されるステップを図示するフローチャートである。
【図１４】図１４は本発明によるＳｅｔ  Ｒｅｔｅｎｔｉｏｎ  Ｒｅｑｕｅｓｔを実行するために実施されるステップを図示するフローチャートである。
【図１５】図１５は本発明によるＲｅｔｅｎｔｉｏｎ  Ｐｅｒｉｏｄ  Ｔａｂｌｅを図示する表である。
【図１６】図１６は本発明によるデータボリュームのｉｎｏｄｅリストの例を図示する図である。
【図１７】図１７は本発明によるＳｈｏｗ  Ｏｌｄ  Ｖｅｒｓｉｏｎ  Ｒｅｑｕｅｓｔを実行するために実施されるステップを図示するフローチャートである。
【符号の説明】
【００７０】
０１０５０１      サーバ
０１０５０３      サーバ
０１０５０５      サーバ
０１０３          ＬＡＮ
０１０１          ＮＡＳシステム
０１０１０１      ＮＡＳコントローラ
０１０１０１ｄ    ＮＩＣ
０１０１０１ａ    ＣＰＵ
０１０１０１ｂ    メモリ
０１０１０１ｃ    ＨＢＡ
０１０１０５      ＦＣ
０１０１０３      ストレージシステム
０１０１０３ｆ    インタフェース
０１０１０３ａ    ディスクコントローラ
０１０１０３ｂ    キャッシュメモリ
０１０１０３ｇ    ディスクアダプタ
０１０１０３ｃ    キャッシュボリューム
０１０１０３ｄ    データボリューム
０１０１０３ｅ    データボリューム
【図１】
2006048641.tif 000003
【図２】
2006048641.tif 000004
【図３】
2006048641.tif 000005
【図４】
2006048641.tif 000006
【図５】
2006048641.tif 000007
【図６】
2006048641.tif 000008
【図７】
2006048641.tif 000009
【図８】
2006048641.tif 000010
【図９（ａ）】
2006048641.tif 000011
【図９（ｂ）】
2006048641.tif 000012
【図１０】
2006048641.tif 000013
【図１１】
2006048641.tif 000014
【図１２】
2006048641.tif 000015
【図１３】
2006048641.tif 000016
【図１４】
2006048641.tif 000017
【図１５】
2006048641.tif 000018
【図１６】
2006048641.tif 000019
【図１７】
2006048641.tif 000020
【外国語明細書】
2006048641.tif 000021
2006048641.tif 000022
2006048641.tif 000023
2006048641.tif 000024
2006048641.tif 000025
2006048641.tif 000026
2006048641.tif 000027
2006048641.tif 000028
2006048641.tif 000029
2006048641.tif 000030
2006048641.tif 000031
2006048641.tif 000032
2006048641.tif 000033
2006048641.tif 000034
2006048641.tif 000035
2006048641.tif 000036
2006048641.tif 000037
2006048641.tif 000038
2006048641.tif 000039
2006048641.tif 000040
2006048641.tif 000041
2006048641.tif 000042
2006048641.tif 000043
2006048641.tif 000044
2006048641.tif 000045
2006048641.tif 000046
2006048641.tif 000047
2006048641.tif 000048
2006048641.tif 000049
2006048641.tif 000050
2006048641.tif 000051
【図１】
2006048641.tif 000052
【図２】
2006048641.tif 000053
【図３】
2006048641.tif 000054
【図４】
2006048641.tif 000055
【図５】
2006048641.tif 000056
【図６】
2006048641.tif 000057
【図７】
2006048641.tif 000058
【図８】
2006048641.tif 000059
【図９ａ】
2006048641.tif 000060
【図９ｂ】
2006048641.tif 000061
【図１０】
2006048641.tif 000062
【図１１】
2006048641.tif 000063
【図１２】
2006048641.tif 000064
【図１３】
2006048641.tif 000065
【図１４】
2006048641.tif 000066
【図１５】
2006048641.tif 000067
【図１６】
2006048641.tif 000068
【図１７】
2006048641.tif 000069