(57)【特許請求の範囲】
【請求項１】
ファイル・システム内の第１のストレージ・レベルから第２のストレージ・レベルへの移行用に選択された選択ファイルのストレージ管理をおこなうコンピュータ・プログラムであって、
前記選択ファイルは、それぞれ前記ファイル・システム内で１つ又は複数のデータ・ブロックに編成される複数のソース・ファイルから選択され、
前記ファイル・システムは、（ｉ）前記複数のソース・ファイルの各ソース・ファイル毎に、それぞれ対応するソース・ファイルの１つ又は複数の各データ・ブロックに対する参照を有するｉノードを有し、（ｉｉ）前記複数の各ソース・ファイルのスナップショット・ファイルを定期的に生成するように構成され、かつ、（ｉｉｉ）各スナップショット・ファイル毎のｉノードを有し、各スナップショット・ファイル毎の前記ｉノードは、前記スナップショット・ファイルの生成時点における対応するソース・ファイルの前記１つ又は複数の各データ・ブロックに対する参照を有し、
前記選択ファイルの前記１つ又は複数のデータ・ブロックのうち、前記選択ファイルに関する前記ｉノードの対応する参照内で維持される前記第１のストレージ・レベル内の物理ディスク・アドレスに記憶されている各データ・ブロックを、前記第１のストレージ・レベルから前記第２のストレージ・レベルにコピーするステップと、
前記選択ファイルの前記１つ又は複数のデータ・ブロックのうち前記第２のストレージ・レベルにコピーされたデータ・ブロックを参照する前記ファイル・システム内の各スナップショット・ファイルに関する前記ｉノードの各参照内の論理的同種アドレスであって、それぞれ前記参照によって参照される前記データ・ブロックの前記物理ディスク・アドレスを取得する上で追加的な処理が必要となることを示す論理的同種アドレスを設定するステップと、
前記選択ファイルに関する前記ｉノードの対応する参照を利用して前記１つ又は複数のデータ・ブロックへのアクセスを制御する情報を含む管理領域を設定することにより前記ファイル・システムを更新するステップと、
をコンピュータに実行させて前記ストレージ管理をおこなうコンピュータ・プログラム。
【請求項２】
前記第２のストレージ・レベルにコピーされた前記選択ファイルの前記１つ又は複数のデータ・ブロックを前記第１のストレージ・レベルにおいて割り振り解除するステップを更にコンピュータに実行させることを含む、請求項１に記載のコンピュータ・プログラム。
【請求項３】
前記選択ファイルの前記１つ又は複数のデータ・ブロックのうち前記第２のストレージ・レベルにコピーされた各データ・ブロックを、当該データ・ブロックに対する参照を有する各スナップショット・ファイルが前記第２のストレージ・レベルに移行された後に、前記第１のストレージ・レベルにおいて割り振り解除するステップを更にコンピュータに実行させること含む、請求項１に記載のコンピュータ・プログラム。
【請求項４】
前記論理的同種アドレスを設定するステップは、前記ファイル・システムが前記スナップショット・ファイルを生成するときに、対応するソース・ファイルの前記１つ又は複数のデータ・ブロックのうちの１つを参照する各スナップショット・ファイルに関する前記ｉノードの各参照内の論理的同種アドレスを設定することを含む、請求項２に記載のコンピュータ・プログラム。
【請求項５】
対応するソース・ファイルのデータ・ブロックを参照する各スナップショット・ファイルに関する前記ｉノードの各参照について、前記データ・ブロックが前記ソース・ファイル内でリストアされるときに、当該参照内の前記論理的同種アドレスを物理ディスク・アドレスに変換するステップを更にコンピュータに実行させること含む、請求項４に記載のコンピュータ・プログラム。
【請求項６】
前記論理的同種アドレスを設定するステップは、前記選択ファイルの前記１つ又は複数のデータ・ブロックのうち前記第２のストレージ・レベルにコピーされたいずれかのデータ・ブロックを参照する前記ファイル・システム内の各スナップショット・ファイルに関する前記ｉノードの各参照内の前記論理的同種アドレスを設定することを含み、
前記ファイル・システムを更新するステップは、論理的同種アドレスが設定された参照を有する各スナップショット・ファイル毎に、対応するスナップショット・ファイルに関する前記ｉノードの対応する参照を利用して前記第２のストレージ・レベルにコピーされた前記１つ又は複数のデータ・ブロックへのアクセスを制御する情報を含む管理領域を設定することにより前記ファイル・システムを更新することを含む、請求項２に記載のコンピュータ・プログラム。
【請求項７】
前記選択ファイルの前記１つ又は複数のデータ・ブロックのうち、前記第２のストレージ・レベルにコピーされ前記第１のストレージ・レベルにおいて割り振り解除されたデータ・ブロックを参照する参照内の論理的同種アドレスを伴うｉノードを有する、前記ファイル・システム内の第１のスナップショット・ファイルの読み取り又は修正要求を受信するステップと、
前記選択ファイルの前記１つ又は複数のデータ・ブロックのうち、前記選択ファイルに関する前記ｉノードの対応する参照内でそれぞれの物理ディスク・アドレスが維持される各データ・ブロックを、前記第２のストレージ・レベルから前記第１のストレージ・レベルにコピーするステップと、
を更にコンピュータに実行させることを含む、請求項５に記載のコンピュータ・プログラム。
【請求項８】
前記選択ファイルの前記１つ又は複数のデータ・ブロックのうち、前記第２のストレージ・レベルにコピーされ前記第１のストレージ・レベルにおいて割り振り解除されたデータ・ブロックを参照する参照内の論理的同種アドレスを伴うｉノードを有する、前記ファイル・システム内の第１のスナップショット・ファイルの読み取り又は修正要求を受信するステップと、
前記読み取り又は修正要求を受信するステップの後に、前記選択ファイルの前記１つ又は複数のデータ・ブロックのうち、前記選択ファイルに関する前記ｉノードの対応する参照内でそれぞれの物理ディスク・アドレスが維持される各データ・ブロックを、前記第２のストレージ・レベルから前記第１のストレージ・レベルにコピーするステップと、
を更にコンピュータに実行させることを含む、請求項６に記載のコンピュータ・プログラム。
【請求項９】
前記第１のストレージ・レベルにコピーされた前記１つ又は複数のデータ・ブロックのうちの１つを参照する前記ファイル・システム内の各スナップショット・ファイルに関する前記ｉノードの各参照内の各論理的同種アドレスを、前記第１のストレージ・レベルにおいて対応するデータ・ブロックがコピーされた物理ディスク・アドレスに変換するステップを更にコンピュータに実行させることを含む、請求項８に記載のコンピュータ・プログラム。
【請求項１０】
前記第１のストレージ・レベルにコピーされた前記１つ又は複数のデータ・ブロックのうち、後にそれ自体のスナップショット・ファイルへのアクセス要求が受信されるデータ・ブロックを参照する前記ファイル・システム内の各スナップショット・ファイルについて、前記スナップショット・ファイルに関する前記ｉノードの各参照内の各論理的同種アドレスを、前記第１のストレージ・レベルにおいて対応するデータ・ブロックがコピーされた物理ディスク・アドレスに変換するステップを更にコンピュータに実行させることを含む、請求項８に記載のコンピュータ・プログラム。
【請求項１１】
前記複数の各ソース・ファイルに関する前記ｉノードは、前記ソース・ファイルの前記１つ又は複数のデータ・ブロックに対する前記参照が収容される１つ又は複数の間接データ・ブロックを指すディスク・アドレス・ポインタを有する、請求項１〜１０のいずれか1項に記載のコンピュータ・プログラム。
【請求項１２】
前記第１のストレージ・レベルは、ＨＤＤを含む、請求項１〜１１のいずれか１項に記載のコンピュータ・プログラム。
【請求項１３】
前記第２のストレージ・レベルは、テープ・ドライブを含む、請求項１２に記載のコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ・ストレージ・システムに関するものであり、より詳細には、特定の時点における記憶データの状態を表すスナップショットを記憶するデータ・ストレージ・システムに関するものである。
【背景技術】
【０００２】
多くのデータ・ストレージ・システムは、記憶データをファイル・メタファに従って編成（ｏｒｇａｎｉｚｅ）する。これらのストレージ・システムでは、関連するデータがファイルに格納され、複数のファイルがデータ・ストレージ・システムに記憶される。その後、データ・ストレージ・システムには、それらの複数のファイルに対する参照が記憶され、それらの参照を用いて各ファイル内のデータにアクセスすることが可能となる。データ・ストレージ・デバイス内では単一のファイルが隣接した位置に記憶されることも離れた位置に記憶されることもある。データ・ストレージ・デバイス内の離れた位置にデータが記憶される状況は、しばしば多数のファイルが既に記憶されているデバイス上に大容量のデータ・ファイルを記憶する際に、その大容量のデータ・ファイルをストレージ・デバイス内の空き領域に適合するように複数のデータ・ブロックに分割しなければならない場合に発生する。データは、既存のファイルに追加的なデータを追加する際にも離れた位置に記憶されることが多い。データ・ストレージ・デバイス上の記憶データを構造化ファイルに組み立てるシステムは、ファイル・システムと呼ばれる。
【０００３】
データ・ストレージ・システムには、しばしば現時点でファイル・システムに記憶されているすべてのファイルのデータに関するポイント・イン・タイム・コピー又はイメージが記憶される。これらのイメージはスナップショット（あるいはクローン又はフラッシュ・コピー）と呼ばれる。スナップショットの内容は、そのスナップショットが収集された時点でアクティブ・ファイル・システム内に記憶されているデータである。データ・ストレージ・システムは、スナップショットを使用してファイル・システムの状態を別のディスク・ドライブや磁気テープ・ストレージ・システムのような２次ストレージ・システム上に記憶することができる。データ・ストレージ・システムは、ファイル・システムのスナップショットを使用して、削除されたデータを再作成する（即ち、既に削除又は更新されたファイルの古いバージョンにアクセスする）こともできる。
【０００４】
スナップショットならびにスナップショットを維持するストレージ空間の作成時間を最短化するために、ファイル・システムのスナップショットを取得するいくつかの方法では、オリジナル・ファイル・システム内のデータをスナップショットに実際にコピーするタイミングが、オリジナル・ファイル・システム内のデータが修正（例えば上書き又は削除）されるまで延期される。データはオリジナル・データに対して書き込みが実行されるまでスナップショット・データにコピーされないため、このタイプの方法を利用するシステムは、「Ｃｏｐｙ‐ｏｎ‐Ｗｒｉｔｅ（書き込み時コピー）」システムと呼ばれる。Ｃｏｐｙ‐ｏｎ‐Ｗｒｉｔｅ技法は、しばしばシステム全体ではなく個々のファイルのスナップショットを維持することによって各ファイルの複数のバージョンをファイル・システム内に併存させることが可能となる、ファイル・バージョニングを実施するのに使用される。
【０００５】
Ｃｏｐｙ‐ｏｎ‐Ｗｒｉｔｅシステムは、修正されたファイルの未修正データ・ブロックをスナップショットにコピーする必要がなくなるように、ファイル・システム・ソフトウェアによって作成される制御構造であるメタデータを利用して、ファイルの構造と、ファイル・システムが収容されるディスクの使用率とを記述することができる。これらのシステムでは、オリジナル・ファイル内のメタデータと、当該ファイルのスナップショット・コピー内のメタデータの両方から未修正データ・ブロックを参照することができるように、オリジナル・ファイル・システム内のオリジナル・データ・ファイルの位置を記述するファイル参照を含むスナップショット・メタデータ・セットが作成される。これにより、オリジナル・ファイル・システム内の同一のデータ・ブロックに対する複数の参照、即ち、オリジナル・ファイル・システムのメタデータ内の参照と、各スナップショット・データセット内の参照とが作成される。
【０００６】
オリジナル・ファイル・システム内の単一のデータ・ブロックに対する複数の参照の存在は、オリジナル・ファイル・システムの要件と衝突する。それぞれオリジナル・データ・ブロックに対する参照が記憶されたスナップショットを利用するファイル・システムは、当該データ・ブロックが使用中であるのかそれとも空き状態にあるのかを判定するために、当該データ・ブロックへの各参照のインジケーション又はマッピングを維持しなければならない。複数の参照が存在しない場合には、データ・ブロックが使用中であるのか空き状態にあるのかを示すのに単一のビットで足りる可能性がある。一方、複数の参照が存在する場合には、それらの複数の参照を追跡し、データ・ブロックが「空き状態にある」ことを宣言する前に当該データ・ブロックに対する参照が存在しないことを保証するために、複数のビットが必要となる可能性がある。
【０００７】
高速なストレージ・デバイス（ハード・ディスク・ドライブ・アレイ等）は低速なデバイス（光ディスクや磁気テープ・ドライブ等）よりも（記憶バイト単位の）コストが高いため、いくつかの大規模ファイル・システムでは、階層ストレージ・マネージャ（Ｈｉｅｒａｒｃｈｉｃａｌ  Ｓｔｏｒａｇｅ  Ｍａｎａｇｅｒ：ＨＳＭ）を使用して高コスト・ストレージ・メディアと低コスト・ストレージ・メディアの間でデータを自動的に移動させる。ＨＳＭを使用するファイル・システム（例えば、ＩＢＭ（Ｒ）のＡＤＳＴＡＲ  Ｄｉｓｔｒｉｂｕｔｅｄ  Ｓｔｏｒａｇｅ  Ｍａｎａｇｅｒ、Ｔｉｖｏｌｉ（Ｒ）Ｓｔｏｒａｇｅ  Ｍａｎａｇｅｒ  Ｅｘｔｅｎｄｅｄ  Ｅｄｉｔｉｏｎ、Ｌｅｇａｔｏ（Ｒ）のＮｅｔＷｏｒｋｅｒ（Ｒ）等）では、大部分のファイル・システム・データはより低速なオフライン・デバイス上に記憶され、必要に応じてより高速なオンライン・ディスク・ドライブにコピーされる。ＨＳＭは、ファイル・システム内のデータの使用率を監視し、ファイル・システム内で長い期間アクセスされていないファイルを識別し、それらのデータの全部又は一部をより低速なストレージ・デバイスに移行（ｍｉｇｒａｔｅ）する。これによってより高速なオンライン・ストレージ内の空間が解放され、その結果、追加的なファイル及びより多くのデータを記憶することが可能となる。ＨＳＭは事実上、より高速なディスク・ドライブをより低速な大容量ストレージ・デバイスのキャッシュとすることで大量データ記憶の経済的な解決策を提供する。
【０００８】
ＨＳＭの典型的なシナリオでは、頻繁に使用されるデータ・ファイルはハード・ディスク・ドライブ上に記憶され、一定期間使用されないデータ・ファイルは磁気テープ・ドライブに移行される。テープに移行されたデータ・ファイルへのアクセスがユーザによって試行されたときは、当該ファイルが自動的且つ透過的にオンライン・ハード・ディスク・ドライブにリストアされ、その結果、データ移行を行わなかった場合と同様に処理を完了させることができる。この利点は、総記憶データ量が使用可能なディスク・ストレージ容量を遥かに上回る可能性がある場合もテープ上には使用頻度の低いファイルしか存在しないので、典型的にはユーザが速度の低下に気付かないことである。
【発明の概要】
【発明が解決しようとする課題】
【０００９】
本発明者らは、スナップショットを利用したファイル・システムでは、単一のデータ・ブロックに対する複数の参照を追跡する必要がある場合、特にそのファイル・システムがＨＳＭも利用する場合は、ファイル・システムの操作の複雑さが大幅に高まる可能性があることを認識している。例えば、ＨＳＭがファイルをテープに移行する際、ＨＳＭは、そのファイルのデータ・ブロックによって占有されているディスク・スペースをリクレームすることができると予想される。しかしながら、スナップショットが存在する場合、それらのデータ・ブロックは、ファイルのより古いバージョンに由来するスナップショットから参照される可能性があり、したがって当該ファイルの他のすべてのバージョンがテープに移行されるまで解放することができない。更に、ＨＳＭは、あるファイルのすべてのバージョンの移行が済めば、そのファイルによって占有されるすべてのディスク・スペースをリクレームすることができるが、単独で記憶され且つファイル・バージョンの異なるスナップショットによって共用されるデータ・ブロックは、冗長的に別個のコピーとしてテープ上に記憶されることになる。即ち、ディスク上では極僅かなスペースしか占有しないスナップショットが、テープ上では全体のファイル・システムと同等のスペースを占有する可能性もある。また、ＨＳＭが移行済みファイルをオンライン・ストレージに戻したときは、その戻されたデータに新しいデータ・ブロックが割り振られ（ａｌｌｏｃａｔｅｄ）、オリジナル・ブロックに対する他のオンライン参照を配置することができなくなる。その結果、移行済みファイルのリストアでは、データの不必要なコピーが発生し得るだけでなく、一度も移行されたことがないファイルと比較してより多くのオンライン・ストレージが必要となる可能性もある。
【課題を解決するための手段】
【００１０】
ファイル・システム内の第１のストレージ・レベルから第２のストレージ・レベルへの移行用に選択されたファイルのストレージ管理方法に関する本発明の例示的な諸実施形態によれば、従来技術の様々な欠点が解決されるとともに追加的な利点がもたらされる可能性がある。前記選択ファイル（ｓｅｌｅｃｔｅｄ  ｆｉｌｅ）は、それぞれ前記ファイル・システム内で１つ又は複数のデータ・ブロックに編成される複数のソース・ファイルから選択される。前記ファイル・システムは、前記複数のソース・ファイルの各ソース・ファイル毎のｉノードを有する。各ｉノードは、それぞれ対応するソース・ファイルの１つ又は複数の各データ・ブロックに対する参照を有する。前記ファイル・システムは、前記複数の各ソース・ファイルのスナップショット・ファイルを定期的に生成するように構成される。前記ファイル・システムは、各スナップショット・ファイル毎のｉノードを有する。各スナップショット・ファイル毎の前記ｉノードは、前記スナップショット・ファイルの生成時点における対応するソース・ファイルの前記１つ又は複数の各データ・ブロックに対する参照を有する。前記方法は、前記選択ファイルの前記１つ又は複数のデータ・ブロックのうち、前記選択ファイルに関する前記ｉノードの対応する参照内で維持される前記第１のストレージ・レベル内の物理ディスク・アドレスに記憶されている各データ・ブロックを、前記第１のストレージ・レベルから前記第２のストレージ・レベルにコピーするステップを含む。前記方法は更に、前記選択ファイルの前記１つ又は複数のデータ・ブロックのうち前記第２のストレージ・レベルにコピーされたデータ・ブロックを参照する前記ファイル・システム内の各スナップショット・ファイルに関する前記ｉノードの各参照内の論理的同種アドレスを維持するステップを含む。各論理的同種アドレスは、それぞれ前記参照によって参照される前記データ・ブロックの前記物理ディスク・アドレスを取得する上で追加的な処理が必要となることを示す。前記方法は更に、前記選択ファイルに関する前記ｉノードを利用して前記１つ又は複数のデータ・ブロックへのアクセスを制御する管理領域が含まれるように前記ファイル・システムを更新するステップを含む。
【００１１】
以下では単なる例示として、添付図面を参照しながら本発明の諸実施形態について説明する。
【図面の簡単な説明】
【００１２】
【図１】階層システム管理（ｈｉｅｒａｒｃｈｉｃａｌ  ｓｙｓｔｅｍ  ｍａｎａｇｅｍｅｎｔ）を提供するファイル・システム用の一般的なシステム・アーキテクチャの例示的な一実施形態を示すブロック図である。
【図２】ｉノード及び関連するデータ・ブロックを有するファイル・システム・データ構造セットの例示的な一実施形態を示すブロック図である。
【図３】ｉノードならびに関連する間接ブロック及びデータ・ブロックを有するファイル・システム・データ構造セットの例示的な一実施形態を示すブロック図である。
【図４】ファイル・システム・ディレクトリ及び関連する構造の例示的な一実施形態を示すブロック図である。
【図５】同一のディスク・アドレスが２つ以上のｉノードに収容されるファイル・システム・データ構造セットの例示的な一実施形態を示すブロック図である。
【図６】データ・マイグレーション（ｄａｔａ  ｍｉｇｒａｔｉｏｎ）がスナップショット・ファイル・システムの階層システム・マネージャ（ｈｉｅｒａｒｃｈｉｃａｌ  ｓｙｓｔｅｍ  ｍａｎａｇｅｒ）によって実行される、本発明の例示的な一実施形態の全体的な動作及び制御フローを示すフローチャートである。
【図７】データ・マイグレーションがスナップショット・ファイル・システムの階層システム・マネージャによって実行される、本発明の例示的な一実施形態の全体的な動作及び制御フローを示すフローチャートである。
【図８】読み取り又は書き込み要求の間にスナップショット・ファイル・システムの階層システム・マネージャによってオフライン・データのリストアが実行される、本発明の例示的な一実施形態の全体的な動作及び制御フローを示すフローチャートである。
【図９】削除又はトランケート要求の間にスナップショット・ファイル・システムの階層システム・マネージャによってオフライン・データのリストアが実行される、本発明の例示的な一実施形態の全体的な動作及び制御フローを示すフローチャートである。
【図１０】ファイル・システム・データ構造セットの例示的な一実施形態における、スナップショットが生成された時点の構造を示すブロック図である。
【図１１】ファイル・システム・データ構造セットの例示的な一実施形態における、対応するソース・ファイルの属性が修正された時点のシャドーｉノード（ｓｈａｄｏｗ  ｉｎｏｄｅ）の構造を示すブロック図である。
【図１２】ファイル・システム・データ構造セットの例示的な一実施形態における、対応するソース・ファイルが上書きされた時点のシャドーｉノードの構造を示すブロック図である。
【図１３】マルチ・プロセッサ・コンピュータ・システムの例示的な一実施形態を示すブロック図である。
【図１４】コンピュータ・システムの例示的な一実施形態を示すブロック図である。
【発明を実施するための形態】
【００１３】
以下の開示では、特定の時点における記憶データの状態を表すスナップショットを維持するファイル・システムに関する効率的な階層ストレージ管理を実現する技法及びメカニズムの例示的な諸実施形態について説明する。以下の開示は、本発明の例示的な諸実施形態の詳細な説明とすることが本出願人の意図するところであり、発明自体を限定するものと解釈すべきではない。そうではなく、本明細書に添付した特許請求範囲で定義される本発明の範囲には、他の様々な実施形態が含まれる可能性がある。
【００１４】
本発明の例示的な諸実施形態は、大容量ストレージ・デバイス上にデータが記憶されるコンピュータ・システム上で実施することができ、あるいはそれらに関連して実施することができる。本明細書に記載される大容量ストレージ・システムの特徴は本発明を限定するものと解釈すべきではなく、例示的な諸実施形態は、本明細書に示される実例とは異なる特徴又は構造を有するデータ・ストレージ・デバイス上で実施することができ、あるいはそれらに関連して実施することができることに留意していただきたい。本発明の例示的な諸実施形態を実施することが可能なファイル・システムの一例は、ＩＢＭのＧｅｎｅｒａｌ  Ｐａｒａｌｌｅｌ  Ｆｉｌｅ  Ｓｙｓｔｅｍ（ＧＰＦＳ（ＴＭ））である。ＧＰＦＳは、Ｘｏｐｅｎファイル・システム規格に準拠するファイル・システムと同様であり、したがって、そのようなファイル・システムはすべて本発明の例示的な諸実施形態と共に使用するのに適している。しかしながら、本発明は、そのようなファイル・システムと共に使用することに限定されるものと解釈すべきではない。例示的な諸実施形態は、様々なタイプのディスク・ファイル・システム、ネットワーク・ファイル・システム、及び専用ファイル・システムを含めた他の様々なタイプのファイル・システム上で実施することができ、あるいはそれらに関連して実施することができる。
【００１５】
本明細書に記載される本発明の例示的な諸実施形態は、ファイル及びディレクトリが以下のメタデータ構造に基づいて実装されるファイル・システムに関連して動作するように構成することができる。
【００１６】
ファイル・システム：定義されたディスク（又は他のメディア）・セットを管理し、データ及びデータ・ファイルの一貫性のある追加、修正、及び削除が容易となるデータ・アクセス手法を実現するソフトウェア・コンポーネント。この用語は、特定のディスク（又は他のメディア）・セット内に収容されているデータ及びメタデータ・セットを説明するのにも使用される。ファイル・システムは、非隣接ブロック内に位置するデータによって名前でアクセスすることが可能な任意のデータ・ストレージ・メディアと共に使用することが可能であり、したがって、本明細書で「ディスク」、「ディスク・ストレージ」、「ストレージ」等の用語が使用される場合は、ストレージ・メディアをより一般的な形で特徴付けることが意図されている。
【００１７】
データ／ファイル・システム・データ：特定の応用例の文脈で意味を持つ任意のビット列。
【００１８】
ファイル：コンピュータ・アプリケーションからアクセス可能な名前付き（ｎａｍｅｄ）ビット列。ファイルは、長さ、修正時間、最終アクセス時間のようないくつかの標準的な属性を有する。
【００１９】
データ・ブロック：後に検索され、ユーザ又は他のアプリケーションによって使用されるユーザ・データを収容するファイル・システム・メモリの領域。例示的なファイル・システムにおいて、ファイルに関するデータは、そのファイルのｉノードに記憶されているディスク・アドレス・ポインタによって参照される１つ又は複数の別個のデータ・ブロックに記憶することができる。
【００２０】
スナップショット：所与の時点におけるファイル・システムの状態を収集するファイル又はファイル・セット。
【００２１】
メタデータ：ファイルの構造と、ファイル・システムが収容されるディスクの使用率とを記述するためにファイル・システム・ソフトウェアによって作成される制御構造。例示的なファイル・システムに適用される特定のタイプのメタデータは、以下でより具体的な特徴付けを行うが、ディレクトリ、モード、ｉノード、アロケーション・マップ（ａｌｌｏｃａｔｉｏｎ  ｍａｐ）、及びログを含む。
【００２２】
ディレクトリ：名前とｉノードによって表現されるデータセットとを関連付ける制御構造。例示的なファイル・システムは、他のファイル・データの記憶と同様の手法でデータ・ブロックに記憶されるディレクトリ・エントリを利用することができ、また、他のデータ・ファイル（ｉノード＋間接ブロック。間接ブロックにはディレクトリ・ブロックのディスク・アドレスが収容される。）によって使用されるディレクトリ情報と同様のディレクトリ情報が記憶されるファイルに関するメタデータ構造も利用することができる。ディレクトリは、多数のディレクトリ・エントリを収容することができる。ディレクトリは、階層ディレクトリ構造を作成するために他のディレクトリを参照するエントリを収容することができる。別のディレクトリ内のエントリから参照されるディレクトリは、サブ・ディレクトリと呼ばれる。本発明は、例示的なファイル・システム内のディレクトリに関して本明細書に記載したフォーマット及び他のメタデータの詳細に限定されるものではなく、他の例示的なファイル・システムは他のディレクトリ及びメタデータ・ストレージ構造を利用することができる。
【００２３】
ｉノード：ファイルのファイル属性（例えば、所有者、アクセス権限、修正時間、ファイル・サイズ等）と、ファイルを構成するデータが収容されているディスク（又は他のストレージ・メディア）内の領域を指す一連のポインタとを収容するメタデータ構造。ｉノードは、例えばファイルが大きい場合等にｉノードを追加的なポインタで補う間接ブロックによって補完することができる。本明細書に記載される例示的なファイル・システムにおいて、関連するｉノードの集合は「ｉノード・ファイル」と呼ばれるが、それらのｉノード・ファイルは、通常ファイル（ｉノード＋間接ブロック）として記憶される。他の例示的なファイル・システムは、ｉノード及びｉノード・ファイル内のデータ集合に関する様々な表現を使用することができる。本明細書に記載される例示的なファイル・システムにおいて、ｉノード内に収容される情報の一部又は全部の集合は、「ノード情報」と呼ばれる。
【００２４】
アロケーション・マップ：ファイル・システムがディスク（又はｉノードのような他の制御構造）内の特定の領域が使用中であるのかそれとも使用可能であるのかを示すのに利用することが可能な制御構造。アロケーション・マップを用いると、ソフトウェアは使用可能なブロック及びｉノードを新しいファイルに割り当てることが可能となる。
【００２５】
スーパーブロック：グローバル・ファイル・システム構成データを収容するメタデータ要素。特に、ｉノード及びアロケーション・マップの配置に使用される情報を収容する。
【００２６】
ログ：障害状況の損失を防ぐために他のタイプのメタデータの同期状態（即ち、一貫性のある状態）を維持するのに使用されるレコード・セット。ログは、複数の構造に関する更新を記述する単一のレコードを収容する。
【００２７】
ここで図１を参照すると、図１には、本発明の例示的な諸実施形態を動作させることが可能な例示的なシステム・アーキテクチャ１００が全体的に示されている。システム・アーキテクチャは、１つ又は複数のデータ・ファイルを記憶するのに使用されるスナップショット・ファイル・システム１０２を含む。これらのファイル・システムは、１つ又は複数のスナップショット・データセット１０４を収集し維持する。これらのスナップショット・データセット１０４は、ファイル・システム１０２によって例えばバックアップ・データセットの通信及びバックアップ・システムへの記憶を効率的に行うため、誤って削除されたファイルを復元するため、また、誤って又は故意に上書きされたデータを回復するため等、多種多様な目的で使用され得る。
【００２８】
ファイル・システム１０２は、他のアプリケーション・プログラムがディスク・ドライブ、不揮発性メモリ、他のデータ・ストレージ・デバイスのようなストレージ・デバイス上にデータを記憶し、それらのデータを検索することが可能となるコンピュータ・プログラムを含む。ファイル・システム１０２内のファイルは、任意のサイズの名前付きデータ・オブジェクトである。ファイル・システム１０２は、アプリケーション・プログラムがファイルの作成、ファイルの名前付け、ファイルへのデータの記憶又は書き込み、ファイルからのデータの読み取り、ファイルの削除、及び他のファイル操作を実行することが可能となるインターフェースを提供する。
【００２９】
ファイル構造は、ストレージ・デバイス上のファイル・システム１０２内のデータ編成を定義する。個々のファイルは、ストレージ・デバイス上で割り振るために固定サイズの複数のディレクトリ・ブロックに分割することができる。ブロック・サイズは、バイト単位又はビット単位で表現され得るが、実際のアプリケーション環境ならびにストレージの使用可能なタイプ及びサイズに従って設定することができ、割り振られた単一のブロックにはファイル全体が収容されることも個々のファイルの一部が収容されることもある。
【００３０】
ファイル・データ自体に加えて、ファイル・システム１０２は、ファイル名をデータ・ファイルにマッピングするディレクトリと、ストレージ・デバイス上のファイル・データの位置（即ち、どのデバイス・ブロックがファイル・データを保持するか）を含めたファイルに関する情報が収容されるファイル・メタデータと、現時点でどのデバイス・ブロックがメタデータ及びファイル・データの記憶に使用されているのかを記録するアロケーション・マップと、ファイル構造に関する全般的な情報（例えば、ディレクトリ、アロケーション・マップ、他のメタデータ構造の位置等）が収容されるスーパーブロックと、を収容することができる。ファイル・システム１０２内の各ファイルは、ファイルの属性を記述するｉノードによって表現され、そのファイルの記憶データを発見する起点として働くアドレス指定構造を収容する。ディレクトリは、（例えばファイル・システム内の各ファイルの所在を識別するｉノード番号を使用して）ファイル名を各ファイルに割り振られたｉノードにマッピングし、それらのファイルの編成階層（ｏｒｇａｎｉｚａｔｉｏｎａｌ  ｈｉｅｒａｒｃｈｙ）を形成する。
【００３１】
本発明の例示的な諸実施形態は、例えば図１のファイル・システム１０２のようなスナップショット・ファイル・システム上に収容されるデータの効率的な階層システム管理をサポートするように実施することができる。図示のとおり、システム・アーキテクチャ１００において、ファイル・システム１０２が存在するコンピュータ又は処理ユニットは、階層システム・マネージャ（ＨＳＭ）１０６と通信し、ネットワーク１１０を介してオフライン・ストレージ１０８とも通信する。オフライン・ストレージ１０８は、ファイル・システム１０２の処理ユニット上に位置しない、又はファイル・システム１０２の処理ユニットの制御下にないストレージ・デバイスである。オフライン・ストレージ・デバイスの例としては、フレキシブル・ディスク、光ディスク、及び磁気テープが挙げられる。ＨＳＭ  １０６は、ファイル・システム１０２内の各ファイルのデータ・ブロックを、ファイル・システム１０２と同一の処理によるオンライン・ストレージ・デバイスと、オフライン・ストレージ・デバイスとの間で自動的に移動させるために、オフライン・ストレージ１０８に関連して使用される。
【００３２】
ファイル・システム１０２とオフライン・ストレージ１０８とを接続するネットワーク１１０は、例えば公衆交換電話網（Ｐｕｂｌｉｃ  Ｓｅｒｖｉｃｅ  Ｔｅｌｅｐｈｏｎｅ  Ｎｅｔｗｏｒｋ：ＰＳＴＮ）のような回路交換網とすることができる。ネットワーク１１０は、例えばパケット交換網とすることができる。パケット交換網は、例えばグローバル・インターネットのような広域ネットワーク（ＷＡＮ）、プライベートＷＡＮ、ローカル・エリア・ネットワーク（ＬＡＮ）、電気通信ネットワーク、あるいはそれらのネットワークの任意の組合せである可能性がある。代替的な一例において、ネットワーク１１０は、例えば有線ネットワーク、無線ネットワーク、ブロードキャスト・ネットワーク、あるいは２地点間ネットワークとすることができる。別の例として、ファイル・システム１０２は、オフライン・ストレージ１０８のコンピュータ・システムと同一のコンピュータ・システム上で実行される。
【００３３】
ファイル・システム１０２及びオフライン・ストレージ１０８のコンピュータ・システムは、例えば１つ又は複数のＰＣ（例えば、あるバージョンのＭｉｃｒｏｓｏｆｔ（Ｒ）Ｗｉｎｄｏｗｓ（Ｒ）オペレーティング・システムを実行するＩＢＭ又はＩＢＭ互換ＰＣワークステーション、あるバージョンのＭａｃ  ＯＳ（Ｒ）オペレーティング・システムを実行するＭａｃｉｎｔｏｓｈ（Ｒ）コンピュータ、又はその等価物）、携帯情報端末（ＰＤＡ）、ゲーム・コンソール、又は他の任意のコンピュータ処理デバイスとすることができる。別の方法では、ファイル・システム１０２及びオフライン・ストレージ１０８のコンピュータ・システムは、サーバ（例えば、あるバージョンのＳｕｎＯＳ（Ｒ）、ＡＩＸ（Ｒ）、又はＬｉｎｕｘ（Ｒ）オペレーティング・システムを実行する１つ又は複数のコンピュータ）とすることもできる。
【００３４】
図２には、例示的なファイル・システム内に記憶されるデータと関連付けられる例示的なデータ構造セット２００が示されている。データ構造セット２００は、ファイルに割り当てられ、当該ファイルに関するメタデータ２０４が収容されるｉノード２０２を含む。メタデータ２０４は、例えばファイルの作成時間、サイズ、アクセス権限、データ・ブロックを指すポインタ、及び他の関連データを含むことができる。ｉノード２０２は、ｉノード番号によって一意に識別され、ｉノード内のデータは、関連ファイルの配置のためにファイル・システムによって使用される。ｉノード２０２は更に、ファイルのデータ・ブロック２０８を指すポインタとなるディスク・アドレス２０６も収容する。ディスク・アドレス２０６は、特定のディスク・ドライブの識別、ならびに当該ディスク・ドライブ内のデータ・ブロック２０８が収容されているセクタ又はブロックを指定する。
【００３５】
ｉノード２０２は、ユーザに見えない固定サイズのｉノードのｉノード・ファイル内でファイル・システムに順次記憶することができる。特定のｉノード番号を有するｉノード・ファイル内のｉノードには、そのｉノード・ファイルに対するオフセット量に従ってアクセスすることができるが、このオフセット量は、例えばｉノード番号に各ｉノードの長さを乗じた後、その計算された値だけオフセットされたｉノード・ファイル内のデータ構造を読み取ることによって決定される。
【００３６】
図３は、例示的なファイル・システム内に記憶されるデータを記述する第２の例示的なデータ構造セット２５０を示す。データ構造セット２００はｉノード自体の内部にディスク・アドレス２０６が記憶され得る小さいファイルと共に使用するのに適しているが、データ構造セット２５０は、より大きいファイルと共に使用することが可能である。データ構造セット２５０において、ｉノード２５２のディスク・アドレス２５６は、それぞれ実際のデータ・ブロック、又は他のディスク・アドレス指定情報が収容された他の間接ブロックを指す１つ又は複数のポインタを収容する１つ又は複数の間接データ・ブロック２５８を指している。図２において、間接データ・ブロック２５８は、第１の直接ディスク・アドレス２６０と、第２の直接ディスク・アドレス２６２とを収容し、各ディスク・アドレスは、それぞれｉノード２５２に関連するファイルの第１のデータ・ブロック２６４と、第２のデータ・ブロック２６６とを指している。
【００３７】
図４には、例示的なファイル・システム・ディレクトリ構造が示されている。ディレクトリ構造３００は、２つのディレクトリ・エントリ又はレコード、即ち第１のディレクトリ・レコード３０４と、第２のディレクトリ・レコード３１０とが収容されるディレクトリ・ファイル３０２を含む。第１のディレクトリ・レコード３０４に関するデータは、ファイル名３０６と、ｉノード番号３０８とを含む。ディレクトリ・ファイル３０２は、ファイル・システムによって管理され、ディレクトリ・レコード３０４は、ユーザによって割り当てられたファイル名３０６を、そのディレクトリ・エントリに関連するファイルのｉノード３１６を一意に識別するｉノード番号３０８にマッピングする。ディレクトリ・レコード３１０に関連する構造は、ディレクトリ・レコード３０４に関連する構造と同様である。
【００３８】
このタイプのディレクトリ・エントリは、「リンク」と呼ばれることもある。このようなリンクは、ユーザ・ファイル、他のディレクトリ、あるいは他のファイル・システム・オブジェクトを指す可能性がある。例示的なファイル・システムにおいて、ディレクトリは、階層ネーミング構造（ｈｉｅｒａｒｃｈｉｃａｌ  ｎａｍｉｎｇ  ｓｔｒｕｃｔｕｒｅ）をファイル・システム内のファイルに課すことができ、その場合は、当該階層のルートがファイル・システムのルート・ディレクトリとなる。ファイル・システム内のファイル及びディレクトリには、ルート・ディレクトリ又はルートのサブ・ディレクトリからアクセス可能である。ファイルは、２つ以上のディレクトリ・エントリを有することができ、それ故、ユーザ・アクセス用の名前を２つ以上有することができる。
【００３９】
本発明の例示的な諸実施形態に関連する本明細書に記載の例示的なファイル・システムは、１つ又は複数の大容量ストレージ・デバイス上に記憶されるデータの構造を定義し、それらのストレージ・デバイス上の複数ファイルの同時作成、修正、削除をサポートし、リンク一貫性及び書き込み一貫性を有する（ｌｉｎｋ  ａｎｄ  ｗｒｉｔｅ  ｃｏｎｓｉｓｔｅｎｔ）ように実施することができる。ファイル・システムは、あらゆるファイルが少なくとも１つのディレクトリ・エントリを有し、且つあらゆるディレクトリ・エントリがそれぞれのリンク作成時と同一のファイルにリンクされている場合に、リンク一貫性を有する（ｌｉｎｋ  ｃｏｎｓｉｓｔｅｎｔ）と言われる。書き込み一貫性を有するファイル・システムでは、単一のファイル内又は複数のファイル間で順序付けされた書き込みの順序が維持される。例えば、第１のファイルに対して書き込みを行った後、第２のファイルに対して書き込みを行い、当該第１のファイル内の書き込みデータを強制的に不揮発性ストレージに書き込むアプリケーションでは、必然的に、第１のファイル内にデータが存在する場合にのみ、第２のファイル内にデータが存在することになる。このような特性を維持するファイル・システムは、書き込み一貫性を有する（ｗｒｉｔｅ  ｃｏｎｓｉｓｔｅｎｔ）と言われる。
【００４０】
本明細書に記載される例示的なファイル・システムは、スナップショット・ファイル・システムである。スナップショット・ファイル・システムは、ファイル・システムの１つ又は複数のスナップショットを取得して、スナップショットの取得時点で当該ファイル・システム内に記憶されているデータ状態を保持するデータセットを作成するように構成される。スナップショットは、それ自体がＣｏｐｙ‐ｏｎ‐Ｗｒｉｔｅ技法を使用して作成された時点以降に変更されたファイル・システム・データのコピーだけを収容する。スナップショット機能を用いると、バックアップ又はミラー・プログラムをユーザ更新と同時に実行することが可能となり、スナップショット作成時点から一貫性のあるファイル・システムのコピーを取得することも可能となる。スナップショットは、誤った削除のような一般的な問題からの容易な復旧を可能にし、あるファイルとそのファイルの古いバージョンとの比較を可能にする、オンライン・ファイル・バックアップ機能を提供することができる。例示的なスナップショット・ファイル・システムは、一貫性のあるファイル・システム・イメージ・データセットを維持し、スナップショット取得後の修正に先立ってファイル・システム内の古いデータを効率的にコピーするために、ファイル・システム内のすべてのファイルを含むスナップショットを作成及び取得するように実施することができる。
【００４１】
例示的なスナップショット・ファイル・システムでは、スナップショットが取得された後にスナップショット・メンテナンス処理（ｓｎａｐｓｈｏｔ  ｍａｉｎｔｅｎａｎｃｅ  ｐｒｏｃｅｓｓｉｎｇ）を行うことによってアクティブ・ファイル・システムの修正を補完することができる。この処理では、スナップショットの取得後、アクティブ・ファイル・システム内のデータを最初に修正するときに、当該データのオリジナル・バージョン（即ち、当該スナップショット時点で存在していたデータのバージョン）をオリジナル・ファイル内での修正に先立ってスナップショット・データセットにコピーすることができる。このようなシステム動作により、スナップショットの内容に必要とされるストレージは、アクティブ・ファイル・システム内のファイルが修正される故に時間と共に大きくなる。
【００４２】
例示的なスナップショット・ファイル・システムにおいて、ファイル・システム・イメージ・データセット内のファイルのスナップショットは、当該ファイルのｉノードのコピーと共に、当該ｉノードによって参照される間接ブロックがあればそれらの間接ブロックも含むことができる。スナップショット・ファイル内のデータ・ブロック・ポインタは、Ｃｏｐｙ‐ｏｎ‐Ｗｒｉｔｅ操作によって新しいデータ・ブロックが作成され、該当する参照が削除されるまで、オリジナル・ファイルと同一のデータ・ブロックを参照する。図５には、このタイプのスナップショット・ファイル・システム内の記憶データを記述する第３の例示的なデータ構造セット４００が示されている。データ構造セット４００は、以下の３つのｉノード、即ち、第１のディスク・アドレス４０４が収容される、アクティブ・ファイル・システム内の第１のｉノード４０２と、第２のディスク・アドレス４１０が収容される、スナップショット・データセット４１６内の古いバージョンに関する第２のｉノード４０８と、第３のディスク・アドレス４１４が収容される、スナップショット・データセット内の別の古いバージョンに関する第３のｉノード４１２と、を収容する。第１のディスク・アドレス４０４、第２のディスク・アドレス４１０、及び第３のディスク・アドレス４１４は、同一のデータ・ブロック４０６を指す。図５に示されるように、あるファイルについて２つ以上のバージョンが記憶されるスナップショット・ファイル・システムは、単一のデータ・ブロックに対する複数の参照を有することができる。
【００４３】
図６及び図７は、図１の例示的なシステム・アーキテクチャ１００内のＨＳＭ  １０６のような階層システム・マネージャがスナップショット・ファイル・システム上で動作するように実施される、本発明の例示的な一実施形態のプロセス及び制御フローを示す。この例示的な実施形態において、ＨＳＭは、オリジナル・ファイル・システム内のより高速なオンライン・ストレージ（例えばハード・ディスク・ドライブ・アレイ）と、ＨＳＭに接続されるより低速なオフライン・ストレージ（例えば磁気テープ）との間のデータ・マイグレーション／リコール・パス（ｄａｔａ  ｍｉｇｒａｔｉｏｎ  ａｎｄ  ｒｅｃａｌｌ  ｐａｔｈ）に沿って、ファイル・システム内に記憶されているデータ・ブロックの自動移動に関する区分化又は階層化された階層（ｐａｒｔｉｔｉｏｎｅｄ  ｏｒ  ｔｉｅｒｅｄ  ｈｉｅｒａｒｃｈｙ）を制御する。ＨＳＭは、ファイル・システム・データ及びオンライン・ストレージ容量を監視し、データをストレージ・レベル間で移行すべきタイミングを決定するポリシーを含む。これらのポリシーは、例えばサイズ等のファイル属性、最終アクセス時点からの経過時間、及びネットワーク又はシステム管理者によって指定される他の基準に基づく可能性がある。ＨＳＭは、移行されたデータがユーザによってアクセスされた場合はそのデータを自動的にリコールし、ファイル・システム内の元の位置にリストアする。一般に、ＨＳＭは、そのデータが依然としてディスク上に所在するような印象をエンド・ユーザに与えながら、アクセス頻度の低いデータ又はその他の理由でオフライン・ストレージにとって重要性が低いと見なされるデータを移動させることにより、ファイル・システム内で編成されるデータの記憶を管理するように動作することができる。
【００４４】
図６及び図７に示される例示的な実施形態において、制御フロー５００は、ＨＳＭがオンライン・ストレージからオフライン・ストレージに移行すべきファイルを選択するステップ５０２から開始し、そこから直接ステップ５０４に進む。ステップ５０４において、ＨＳＭは、選択ファイルの同時更新を防止するために当該ファイルへのアクセスをロックする。この例示的な実施形態では、ＨＳＭは、アクティブ・バージョンであれスナップショット・コピーであれ、オフライン・ストレージへの移行のために任意のファイルを選択することができ、また、すべてのファイルは独立して移行される。
【００４５】
移行用ファイルが選択されると、ステップ５０６で、ＨＳＭは、選択ファイルの各データ・ブロックのオフライン・ストレージへのコピーを開始する。移行対象ファイルに関するｉノードは、ＨＳＭ動作の透過性を保証するためにユーザ・アプリケーションからはオリジナル・ファイルに見える「スタブ・ファイル（ｓｔｕｂ  ｆｉｌｅ）」としてオンライン・ストレージに保持される。いくつかの例示的な実施形態では任意選択で、ＨＳＭは、選択ファイルの少量のオリジナル・データ、例えば最初のデータ・ブロックをオンライン・ストレージ内のスタブ・ファイルに残しておくこともできる。コピーの完了後、ステップ５０８で、ＨＳＭはオリジナル・ファイル・システム内のｉノード・ファイルを検査して、移行対象データ・ブロックのいずれかが当該ファイルの２つ以上のスナップショット・バージョンによって参照されているかどうかを判定する。例示的な諸実施形態において、この判定は、例えばｉノード・ファイル内の各ｉノードのメタデータ又はディスク・アドレス・ポインタ内で維持されている関連状態情報を検査することによって、あるいは同一のデータ・ブロックに対する参照を有する可能性があるファイルのスナップショット・バージョンをスキャンすることによって実行することができる。
【００４６】
ステップ５１０で、ＨＳＭは、移行対象データ・ブロックを参照していることが判明したファイルの各バージョンについて、移行を考慮した当該ファイルに関連するｉノード属性の更新を実行する。この更新は、移行対象データ・ブロックに対する共有参照（ｓｈａｒｅｄ  ｒｅｆｅｒｅｎｃｅ）を有するスナップショット・ファイルのｉノード内に収容されているディスク・アドレス・ポインタを更新することによって実行される。より具体的には、ＨＳＭは、各共用データ・ブロックに実際に移行されたファイルに関してはｉノードのディスク・アドレス・ポインタを現状のまま維持するが、発見された移行対象データ・ブロックに対する共有参照を伴うｉノードを有する後続の各スナップショット・ファイルに関しては、当該ｉノード内の共用データ・ブロックを指す物理ディスク・アドレス・ポインタを、本明細書では「論理的同種アドレス（ｌｏｇｉｃａｌ  ｄｉｔｔｏ  ａｄｄｒｅｓｓ）」と呼ばれる論理的「同種（ｄｉｔｔｏ）」値に置き換える。
【００４７】
同種値は、ディスク・アドレス値が実ディスク・アドレスでないことを示す予約値であり、したがってデータにアクセスする上で追加的な処理が必要となることを示す。例示的な諸実施形態において、ディスク・アドレスの「同種」値は、「−１」として記憶することができる。ｉノード・ファイルはオリジナル・ファイル・システム内に残され、また、他の任意のファイルと同様にアクセスされるが、「−１」は有効なディスク・ブロック・アドレスではないので、アプリケーションは、それが同種値であることを認識することができる。ステップ５１０の更新が実行された後、ＨＳＭは、ステップ５１２に進んで移行を考慮したファイル・システム属性の更新を実行し、移行対象ファイルのスナップショット・バージョンのディスク・アドレスに対する更新も実行する。この例示的な実施形態において、ＨＳＭは、移行対象ファイルに対する後続の読み取り及び書き込み操作の傍受と、必要に応じた移行対象データのリストアとが可能となる、移行対象データをカバーする「管理領域（ｍａｎａｇｅｄ  ｒｅｇｉｏｎ）」を設定することによって上記の更新を実行する。ＨＳＭは、以下で説明するように、移行対象データ・ブロックに対する共有参照を有するファイルのスナップショット・バージョンがアクセスされるときも移行対象データ・ブロックのリストアを行うことができるように、共用データ・ブロックを指す物理ディスク・アドレス・ポインタが論理的同種値に置き換えられた各スナップショット・ファイルに関する管理領域も設定する。これらの管理領域は、アプリケーションがオンライン・ストレージ空間から移行されたデータ・ブロックへのアクセスを制御するメカニズムを提供する。例示的な諸実施形態において、各管理領域は、それ自体の開始オフセット、長さ、及びイベント生成フラグによって記述することができる。例えば、オフセット＝０、長さ＝８１９２、及びフラグ＝ＲＥＡＤ｜ＷＲＩＴＥ｜ＴＲＵＮＣＡＴＥの管理領域では、オフセット０〜８１９１のファイル・データに対するアクセス試行によって後述する特定のイベントがトリガされる。実際のイベント・タイプはアクセス・タイプに依存し、例えば書き込み試行は書き込みイベントを生成する。
【００４８】
ｉノード及びファイル・システム属性が更新された後、ステップ５１４で、ＨＳＭは、各移行対象データ・ブロックに関するオンライン・ストレージの割り振りを解除（ｄｅａｌｌｏｃａｔｅ）することができる。ステップ５１０で各データ・ブロックに対する冗長物理参照が論理的同種アドレスに変換されているので、ＨＳＭは、共用データ・ブロックに対する参照数に関わらず、すべての移行対象データ・ブロックに関するファイル・システムのオンライン・ストレージ空間を直ちにリクレームすることができる。このようにしてオリジナル・データ・ブロックが削除された後、ステップ５１６で、ＨＳＭは、選択ファイルのアクセス・ロックを解除し、その結果、当該ファイルに対する保留中の操作を進めることが可能となり、オリジナル・データ・ファイルに関する通常のファイル・システム・アクティビティが再開される。延期されていた更新が処理され、アプリケーションは再びオリジナル・ファイル・システムのデータにアクセスすることが可能となる。
【００４９】
ＨＳＭによってファイル・システム内のファイルがオフライン・ストレージに移行された後、ＨＳＭは、その時点で論理的同種アドレス・ポインタが収容されているｉノードを有するファイルを既に移行済みの共用データ・ブロックに移行することを決定することができる。本発明の例示的な一実施形態において、このタイプの移行は、選択ファイルによって共用される移行済みデータ・ブロックをオフライン・ストレージにコピーする代わりに、ステップ５０６でＨＳＭがデータ・ブロックを移行済みデータ・ブロックとして識別する同種値を検出し、それによって当該データ・ブロックのコピー及び冗長記憶を防止すべきことを認識する点を除けば、上述の例示的な制御フロー５００に従って進めることができる。ステップ５０６で、ＨＳＭは、ｉノード内の物理ブロック・アドレスで参照されるオンライン・データ・ブロックだけをオフライン・ストレージにコピーする。即ち、この例示的な実施形態では、データ・ブロックが別の移行でまだオフライン・ストレージに移行されていない場合には、上述のステップ５０６〜５１４に従ってコピー及び割り振り解除が行われるが、ｉノードが論理的同種アドレスを提供する場合には、ＨＳＭによって当該データ・ブロックの冗長コピーがオフライン・ストレージ内に作成されることはない。かかる状況において、ＨＳＭは移行対象ファイル内の同種アドレスのオフセットを保持することになるが、その理由は、後述のとおりデータをリストアし、各共用データ・ブロックに対する複数の共有参照を確立する上で、この情報が必要となるからである。例示的な諸実施形態において、この処理は、例えば同種アドレスの範囲を記録し、各同種アドレスを示すビットマップを提供し、あるいは移行対象ファイルのデータ・ブロック・ポインタを保持することによって達成することができる。
【００５０】
例示的な一代替実施形態において、ＨＳＭは、あるファイルをオフライン・ストレージに移行した直後に共用データ・ブロックのディスク空間をリクレームするのではなく、それらの共用データ・ブロックを参照するあらゆるスナップショット・ファイルがオフライン・ストレージに移行されるまで待機するように実施することができる。この例示的な実施形態において、ＨＳＭは、スナップショット・ファイルを読み取る際にオフライン・ストレージからのオリジナル・ファイルのリストア動作が必要とならないように、同種値を生成するときにデータ・ブロックを指す物理ディスク・アドレス・ポインタを保持する。この例示的な実施形態では、移行対象データ・ブロックに関するディスク空間のリクレームに関するファイル・システムの待機時間が長くなるが、スナップショット・ファイルを読み取る際のオフライン・ストレージ・アクセスを回避することができる。オリジナル・ファイルが長い時間アクセスされなかった場合もスナップショット・ファイルへのアクセスが通常どおり行われるファイル・システム動作では、この代替実施は全体のワークロードの観点からトレード・オフを改善することができる。
【００５１】
本発明の例示的な諸実施形態は、階層システム管理、ならびにファイルへのユーザ・アクセス又はアプリケーション・アクセスを提供するインターフェース、例えばオフライン・ストレージとの間で移行されたファイルへのユーザ・アクセスをサポートする標準的なＰＯＳＩＸファイル・システム・インターフェースを利用したスナップショット・ファイル・システムを対象に実施することができる。これらのアクセスは、ファイルのアクセス・タイプ及び位置に応じていくつかの異なる手法で処理することができる。
【００５２】
例えば、ユーザ又は他のプロセスは、オフライン・ストレージに移行され、その結果ＨＳＭによるオンライン・ストレージへのリストアが必要となるデータの読み取り又は修正要求を行うことができる。かかる状況において、ファイルへの読み取り又は書き込みアクセスを満足するためにリストアする必要がある移行対象データ・ブロックは、当該ファイルと共に移行される可能性もあれば、アクセス対象となる実際のファイルが移行中に同種値に修正された共用データ・ブロック参照を有する、当該ファイルの別のスナップショット・バージョンと共に移行される可能性もある。図８は、上述の例示的な制御フロー５００に従って移行されたデータが読み取り又は書き込み要求を満足するためにＨＳＭによってリストアされる、本発明の例示的な一実施形態のプロセス及び制御フローを示す。
【００５３】
図８に示される例示的な実施形態において、制御フロー６００は、読み取り又は書き込み要求が行われるステップ６０２から開始する。その後のプロセスは、アクセス対象ファイルによって参照されるデータ・ブロックの現在の記憶状況に従って進められる。それ自体のｉノード内の移行対象データ・ブロックに対する参照を表す論理的同種アドレスを有するオンライン・ファイルへのアクセス要求が行われた場合には、ステップ６０４で、その読み取り又は書き込み要求は、アクセス対象ファイルの論理的同種アドレスをカバーするようにＨＳＭによってセット・アップされた管理領域において傍受され、移行対象データをオフライン・ストレージからリストアする必要があることがＨＳＭに示される。ディスク・アドレスに記憶される同種値は、ＨＳＭが移行対象ファイルのｉノード内のディスク・アドレスを使用して移行対象データ・ブロックの実際のディスク・アドレスを検索する必要があることを示す推定参照（ｉｎｆｅｒｒｅｄ  ｒｅｆｅｒｅｎｃｅ）である。したがって、ＨＳＭは、オンライン・ファイルのｉノードによって参照されるデータ・ブロックが収容されている移行対象ファイルへのアクセスの場合と同様に、その要求を物理ディスク・アドレスから論理的同種アドレスへの変換が実行される前に処理する。読み取り又は書き込み要求がオフライン・ファイルに対して直接行われた場合は、ステップ６０６で、ＨＳＭは移行対象ファイルを後述する手法でオンライン・ストレージにリストアする。
【００５４】
一方、この例示的な実施形態において、オフライン・ファイルにアクセスする読み取り又は書き込み要求が行われた場合には、ステップ６０２からステップ６１０に進んで、当該要求が移行対象ファイルをカバーするようにＨＳＭによってセット・アップされた管理領域において傍受され、移行対象データをオフライン・ストレージからリストアする必要があることがＨＳＭに示される。次にステップ６１２で、ＨＳＭは、当該ファイルのｉノード内の物理（即ち非同種）ディスク・アドレスによって参照される移行対象データ・ブロックをリストアする。当該ファイルのｉノード内の同種値でマーク付けされたディスク・アドレスについて、読み取り又は書き込み要求がその同種値で表される特定の移行対象データ・ブロックを対象とする場合は、論理的同種アドレスを有するオンライン・ファイルに対して要求が行われるステップ６０６で示したように、ＨＳＭは、ステップ６１４で、オンライン・ファイルのｉノードによって参照されるデータ・ブロックが収容されている移行対象ファイルへのアクセスの場合と同様に、その要求を物理ディスク・アドレスから論理的同種アドレスへの変換が実行される前に処理する。しかしながら、ＨＳＭは、当初のアクセス対象である同種値でマーク付けされたファイルのｉノード内の他のディスク・アドレスに対応するデータについてはリストアを行わない。それ故、いくつかの例では、このリストア操作の結果、アクセス対象ファイルに関するｉノード内の論理的同種アドレスがそのままの状態で維持される可能性もある。
【００５５】
このようにして必要なデータ・ブロックがオフライン・ストレージからリストアされた後、ＨＳＭは、ステップ６０８に進んでリストアされた共用データ・ブロックに対するディスク・アドレス参照を更新し、その後ステップ６１６で、制御をファイル・システムに返し、その結果、元のファイル要求を満足するために現時点でリストアされているデータにアクセスすることが可能となり、オリジナル・データ・ファイルに関する通常のファイル・システム・アクティビティを再開することが可能となる。例示的な諸実施形態において、複数の参照によって共用されるリストア済みの各データ・ブロックに関して、ＨＳＭは、ステップ６０８で、同種値を有する各ファイルの移行時に保持された論理的同種アドレスの位置を使用して、移行対象データ・ブロック毎に必要となるリストア操作及びオンライン・ストレージ内の新しいブロックの割り振りがそれぞれ１回で済むように、各ファイル内の物理ディスク・アドレスをリストアすることができる。即ち、読み取り又は書き込み要求においてデータ・ブロックが一旦リストアされると、ＨＳＭは、必要に応じて対応する論理的同種アドレスのうちのいずれか又は全部をリストア済みのデータ・ブロックの物理ディスク・アドレスに置き換えることができる。
【００５６】
例示的な諸代替実施形態では、対応する論理的同種アドレスに対する更新を後続の参照が行われるまで延期することができ、その結果、後続のアクセスが行われないうちにファイルが削除される状況を回避することができる。例えば、ファイルへのアクセスがデータ・ブロック全体を上書きする書き込み要求であり、ＨＳＭがリストアされたファイル内の論理的同種アドレスだけを置き換える場合、ＨＳＭは、オリジナル・データが更新に先立って新しいディスク・ブロックにコピーされるときに共用データ・ブロックに通常課されるＣｏｐｙ‐ｏｎ‐Ｗｒｉｔｅペナルティーを回避することができる。本例において、ＨＳＭは、書き込み対象データに新しいデータ・ブロックを割り振るが、共用データ・ブロックの他の論理的同種アドレスのうちの１つに対してアクセスが行われるまで、又は他の論理的同種アドレスを有するすべてのファイルが削除されるまで、オフライン・ストレージ内のデータ・ブロックのオリジナル共用コピーを維持する。即ち、ＨＳＭは、移行対象データ・ブロックのディスク・アドレスと、他の同種値に関連するディスク・アドレスとの関連付けを維持し、オリジナル・ファイルのｉノード内のディスク・アドレス（同種又は物理アドレス）をオンライン・ストレージ内の新たに割り振られたデータ・ブロックのアドレスに置き換える。これにより、オリジナル・ファイルがオリジナル・データをそれ以上必要としなくなったときは、そのオリジナル・データ・ブロックがアクセスされるまでオリジナル・データ・ブロックからのオリジナル・データのリストアに関連するディスクＩ／Ｏが節約される。
【００５７】
他のファイル・アクセス・シナリオにおいて、ユーザ又はプロセスは、オフライン・ストレージに移行された１つ又は複数の共用データ・ブロックを有するファイルの削除又はトランケート要求を行うことができる。これらの例では、ＨＳＭは共用データを保持しなければならない。図９は、上述の例示的な制御フロー５００に従って移行されたデータが削除又はトランケート要求を満足するためにＨＳＭによってリストアされる、本発明の例示的な一実施形態のプロセス及び制御フローを示す。
【００５８】
図９に示される例示的な実施形態において、制御フロー７００は、削除又はトランケート要求が行われるステップ７０２から開始する。ステップ７０４で、ＨＳＭは、現在の要求のアクセス対象となるファイルのｉノードによって物理的に参照される各共用データ・ブロックをリストアする。ステップ７０６で、ＨＳＭは、リストアされた各共用データ・ブロックについて、当該リストアされたデータ・ブロックに対する参照を共用する他のファイルの少なくとも１つに関するｉノード内の同種値（単数又は複数）を、対応する物理ディスク・アドレスに置き換える。次にステップ７０８で、ＨＳＭは制御をファイル・システムに返し、その結果、元のファイル要求を満足するために適切なデータ空間の割り振りを解除することが可能となり、オリジナル・データ・ファイルに関する通常のファイル・システム・アクティビティを再開することが可能となる。
【００５９】
例示的な一代替実施形態において、ＨＳＭは、オフライン・ストレージに移行された１つ又は複数の共用データ・ブロックを有するファイルに対する削除又はトランケート要求時にリストア操作を実行する必要がない。その代わりに、ＨＳＭは、オフライン共用データ・ブロックの所有権を、当該共用データ・ブロックに対する参照を有するファイルのうちの１つに割り当てることができる。このような所有権の変更は、ファイルのｉノード内に収容された関連するメタデータを更新することによって行うことができ、その結果、ファイル・システムは、例えばそのデータがデータ・ブロックに対する読み取り又は書き込みアクセスを満足するのに必要とされるまでＨＳＭによってリストアされないようにすることが可能となる。
【００６０】
次に図１０乃至図１２を参照すると、例示的な代替ファイル・システム内に記憶されたデータに関連する第３のタイプのデータ構造セットの例が示されている。このタイプのファイル・システムは、オンライン・ストレージ内の（即ちデータ・マイグレーション前の）オリジナル・データ・ブロックに対する複数の物理参照を作成する代わりに、推定による論理的同種アドレス・ポインタ（ｉｎｆｅｒｒｅｄ  ｌｏｇｉｃａｌ  ｄｉｔｔｏ  ａｄｄｒｅｓｓ  ｐｏｉｎｔｅｒ）を利用してファイルのより新しいバージョン内のデータを参照するスナップショット・データセットを作成することにより、上述した他の例示的なファイル・システムとは異なる形でスナップショットを実施する。
【００６１】
図１０は、この代替スナップショット・ファイル・システムに関連する初期のスナップショット・データセット構造８００の概略図である。スナップショット・データセット８０２は、空の状態で示されており、オリジナル・ファイル・システムがスナップショットの取得時点以降更新されていない場合のスナップショットを表している。スナップショット・データセットからのデータ検索に使用されるこの処理では、まずスナップショットのｉノード・ファイルを検査して、検索対象データ・ファイルのスナップショット・データセット８０２内に有効なｉノード・データが存在するかどうかが判定される。スナップショット・データセット８０２内にｉノード・データが存在しない場合は、要求対象データがスナップショットの取得時点以降修正されていないこと、及びそのスナップショットの「範囲内」の要求対象データがアクティブ・ファイル・システムのオリジナル・データ・ファイル内に所在することが示される。その結果、要求対象データ・ブロックへのアクセスは、アクティブ・ファイル・システムのｉノード８０４に対する推定参照８１２によって行われる。
【００６２】
取得されたスナップショット内のデータ・ブロック８１０へのアクセス試行が行われたときに、スナップショット・データセットが要求対象データ・ファイルに関連するｉノードのデータを含まない場合は、データ・ブロック８１０へのアクセスは、アクティブ・ファイル・システムのｉノード８０４内の物理ディスク・アドレス８０８を使用して行われる。同様に、スナップショット・データセット８０２内に有効なｉノード・データが存在しない場合は、ファイルのメタデータへのアクセスは、アクティブ・ファイル・システムのｉノード８０４内のメタデータ・セット８０６に対する推定参照を使用して行われる。
【００６３】
図１１は、この例示的なファイル・システムに関連する更新された属性データ構造８２０の一例を示す。データ構造８２０では、スナップショット・データセット８０２内にシャドーｉノード８２２が記憶される。シャドーｉノード８２２は、スナップショット・データセット８０２に取り込まれたデータ・ファイルのｉノードであって、メタデータ・ノード８２４に記憶されているｉノードのファイル属性がスナップショットの取得時点以降に変更されたｉノードを表す。ｉノード・データは、アクティブ・ファイル・システム内でのｉノード・メタデータの更新に先立ってアクティブ・ファイル・システムからスナップショット・データセット８０２にコピーされている。この構造により、メタデータ・ノード８２４にはスナップショットの取得時点で関連ファイル内に所在していた属性が収容される。
【００６４】
シャドーｉノード８２２内のディスク・アドレス８２６は、それ自体がシャドーｉノードであること、及び実際のデータ・ブロック８１０の実ディスク・アドレスがアクティブ・ファイル・システムのｉノード８０４内に記憶されていることを示す同種値「−１」を含む。ディスク・アドレス８２６に記憶される同種値は、このシナリオでもオリジナル・ファイルの一部となるデータ・ブロック８１０の実際のディスク・アドレスを、アクティブ・ファイル・システムのｉノード８０４内のディスク・アドレス８０８を使用して検索する必要があることを示す推定参照８２８である。そのため、オリジナルｉノードに由来するファイル属性は現状のまま維持されるが、スナップショットｉノード・ファイル内に記憶されているシャドーｉノード内のディスク・アドレスは、論理的同種アドレスに置き換えられる。
【００６５】
図１２は、この例示的な代替ファイル・システムに関連する更新されたデータ・ブロック・ストレージ・データ構造８３０の一例を示す。データ・ブロック・ストレージ・データ構造８３０は、スナップショットの取得時点以降に更新されたデータ・ブロック８１０を表す。スナップショット・データセット８０２内のデータ・ブロック８１０は、それ自体の更新以前はアクティブ・ファイル・システム内に存在していたが、スナップショットの取得後にスナップショット・データセット８０２に移動又はコピーされている。データ・ブロック・ストレージ・データ構造８３０は、スナップショット・データセット８０２内のシャドーｉノード８２２に有効なメタデータ８２４だけでなく、現時点で有効なディスク・アドレス８２６内の物理参照も収容されていることを示す。ディスク・アドレス８２６は、ここではスナップショット・データセット８０２の一部とされるデータ・ブロック８１０の記憶位置を示す。
【００６６】
本発明の例示的な諸実施形態において、ＨＳＭは、オフライン・ストレージ・システムと、ファイル・システム内のデータをオンライン・ストレージ・デバイスとオフライン・ストレージとの間で自動的に移動する上記の代替的なタイプのスナップショット・ファイル・システムとに関連して実施することができる例示的な一実施形態において、ＨＳＭは、以下で説明するいくつかの例外を除いて、例示的な制御フロー５００、６００、及び７００に関して上述したのと同様の手法でデータ・マイグレーションを実行し、ファイル・アクセス要求時のデータ・リストアを実行するように実施することができる。
【００６７】
この例示的な実施形態において、移行対象データも参照する各ファイルのｉノード内の物理ディスク・アドレスをファイルの移行後に同種値に変換する、例示的な制御フロー５００のステップ５１０は実行されない。その代わりに、ファイルによって占有されるディスク空間は、移行の直後に割り振りが解除される。その理由は、移行対象ファイルによって参照される共用データ・ブロックは、それ自体がオンライン記憶されているものであれオフライン移行されているものであれ、既に他のファイルのｉノード内の論理的同種アドレスによって参照されているからである。また、このタイプのスナップショット・ファイル・システムは既に同種の解決（ｄｉｔｔｏ  ｒｅｓｏｌｕｔｉｏｎ）を実施するように構成されているので、例示的な制御フロー５００のステップ５１２において、論理的同種アドレスが収容されるスナップショット・ファイル・バージョンに関する管理領域をＨＳＭによってセット・アップする必要もない。更に、この例示的な実施形態では、論理的同種アドレスを有するオンライン・ファイルに対する読み取り又は書き込み要求が行われたときは、移行対象ファイルへの同種アドレスがファイル・システムによって解決される。その結果、ＨＳＭは、リストア対象データ・ブロックを参照する他の同種値の変換を行うことなく、データ・ブロックを該当ファイルにリストアすることができる。即ち、共用データ・ブロックがオンライン・ストレージにリストアされると、ＨＳＭは、当該データ・ブロックに対する物理参照をリストアすることはない。
【００６８】
例示的な諸実施形態は、ファイルの複数のスナップショット・バージョンによって共用されるオフライン移行対象データを参照する論理ブロック・ポインタ（ｌｏｇｉｃａｌ  ｂｌｏｃｋ  ｐｏｉｎｔｅｒ）をオンライン・ストレージ内で作成することにより、また、ファイルの複数のスナップショット・バージョンによって共用されるオフライン・データをオンライン・ストレージにリストアする際に当該共用データを参照する論理ブロック・ポインタを物理ディスク・ポインタに置き換えることにより、特定の時点における記憶データの状態を表すスナップショットが記憶されるファイル・システムの効率的な階層ストレージ管理を小さいコストで実現するように実施することができる。
【００６９】
本発明の例示的な諸実施形態は、単一のコンピュータ・システム内で集中的に動作するように実施することも、様々な要素がいくつかの相互接続されたコンピュータ・システムに拡散される分散コンピューティング・アーキテクチャ内で動作するように実施することもできる。図１３は、複数のネットワーク・アダプタ１６０４を介して互いに結合された複数のノード１６０２を含む例示的な分散コンピューティング環境のブロック図である。各ノード１６０２は、独自のオペレーティング・システム・イメージ１６０８、メモリ１６１０、及びプロセッサ１６０６（単数又は複数）をシステム・メモリ・バス１６１８上に有する独立したコンピュータである。システム入出力バス１６１６は、Ｉ／Ｏアダプタ１６１２とネットワーク・アダプタ１６０４とを結合する。各ネットワーク・アダプタは、ネットワーク・スイッチ１６２０を介して互いにリンクされる。例示的な諸実施形態において、このネットワークは、対応する光ファイバ・ネットワーク・スイッチを有する光ファイバ・ネットワークとすることができる。
【００７０】
例示的な諸実施形態は、例えば１つ又は複数のプロセッサ１６０６を有するＮ個のノード１６０２を含む分散コンピューティング環境１６００で動作するように実施することができる。例示的な諸実施形態において、各処理ノードは、ＡＩＸ（Ｒ）オペレーティング・システムを実行するＲＩＳＣ／６０００コンピュータである。例示的な諸代替実施形態において、処理ノード１６０２の一部又は全部は、異なるタイプのコンピュータ又は異なるオペレーティング・システム１６０８あるいはその両方を含むことができる。
【００７１】
本発明の例示的な諸実施形態は、ハードウェア、ソフトウェア、あるいはハードウェアとソフトウェアの組合せの形で実施及び実現することができる。例示的な一実施形態に係るシステムは、１つのコンピュータ・システムにおいて集中的な構成で実現することも、様々な要素がいくつかの相互接続されたコンピュータ・システムに拡散される分散的な構成で実現することもできる。ハードウェアとソフトウェアの例示的な組合せは、それらがロードされ実行されたときに本明細書に記載の各方法を実行するようなコンピュータ・システムを制御するコンピュータ・プログラムを備えた汎用コンピュータ・システムである可能性がある。
【００７２】
本発明の例示的な諸実施形態は、本明細書に記載される各方法の実施を可能にし、それらがコンピュータ・システムにロードされたときに当該方法を実行することが可能な機能を備えるコンピュータ・プログラムの形で実施することもできる。本明細書の文脈において、「コンピュータ・プログラム手段」又は「コンピュータ・プログラム」という用語は、情報処理能力を有するシステムに特定の機能を直接実行させ、あるいは（ａ）別の言語、コード、又は表記法への変換、又は（ｂ）異なる素材の形での再現、あるいはその両方が行われた後に特定の機能を実行させるように意図された、任意の言語、コード、又は表記法による１組の命令に関する任意の表現を含む。
【００７３】
本発明の例示的な諸実施形態は、本明細書に記載の各方法又は機能あるいはその両方を実行するように適合可能な任意の種類のコンピュータ・システム又は他の装置上で実施することができる。例示的なコンピュータ・システムは、他の要素の中でもとりわけ、１つ又は複数のコンピュータと、少なくとも当該コンピュータ・システムがその媒体からデータ、命令、メッセージ又はメッセージ・パケット、及び他のコンピュータに読み込み可能な情報を読み取ることが可能となるコンピュータ可読媒体と、を含むことができる。コンピュータ可読媒体としては、例えばＲＯＭ、フラッシュ・メモリ、ディスク・ドライブ・メモリ、ＣＤ‐ＲＯＭ、他の永続ストレージのような不揮発性メモリ、ならびに例えばＲＡＭ、バッファ、キャッシュ・メモリ、ネットワーク回路のような揮発性ストレージを挙げることができる。また、コンピュータ可読媒体は、一時状態メディア（ｔｒａｎｓｉｔｏｒｙ  ｓｔａｔｅ  ｍｅｄｉｕｍ）内のコンピュータに読み込み可能な情報も含むこともできる。一時状態メディアとしては、コンピュータ・システムがそのようなコンピュータに読み込み可能な情報を読み取ることが可能となる有線ネットワーク又は無線ネットワークを含めたネットワーク・リンク又はネットワーク・インターフェースあるいはその両方を挙げることができる。
【００７４】
図１４には、例示的なコンピュータ・システム１７００が示されている。コンピュータ・システム１７００は、プロセッサ１７０４のような１つ又は複数のプロセッサを含む。プロセッサ１７０４は、通信基盤１７０２（例えば通信バス、クロス・オーバ・バー、又はネットワーク）に接続されている。以下では、この例示的なコンピュータ・システムの観点から本発明の諸実施形態を説明する。以下の説明を読めば、他のコンピュータ・システム又はコンピュータ・アーキテクチャあるいはその両方を使用して本発明の例示的な諸実施形態を実施する手法が当業者には理解されるだろう。
【００７５】
例示的なコンピュータ・システム１７００は、ディスプレイ・ユニット１７１０上に表示されるグラフィックス、テキスト、及び他のデータを通信基盤１７０２から（又は図示していないフレーム・バッファから）転送するディスプレイ・インターフェース１７０８を含む。コンピュータ・システム１７００は、メイン・メモリ１７０６、好ましくはランダム・アクセス・メモリ（ＲＡＭ）と、２次メモリ１７１２とを含む。２次メモリ１７１２は、例えばハード・ディスク・ドライブ１７１４、又はフレキシブル・ディスク・ドライブ、磁気テープ・ドライブ、光ディスク・ドライブ等に代表される取り外し可能ストレージ・ドライブ１７１６、あるいはその両方を含むことができる。取り外し可能ストレージ・ドライブ１７１６は、取り外し可能ストレージ・ユニット１７１８からの読み出し又はそれに対する書き込みあるいはその両方を行う。フレキシブル・ディスク、磁気テープ、光ディスク等に代表される取り外し可能ストレージ・ユニット１７１８は、取り外し可能ストレージ・ドライブ１７１６によって読み書きされる。本明細書の説明から分かるように、取り外し可能ストレージ・ユニット１７１８は、コンピュータ・ソフトウェア又はデータあるいはその両方が記憶されたコンピュータ使用可能なストレージ・メディアを含む。
【００７６】
例示的な２次メモリ１７１２は、コンピュータ・プログラム又は他の命令をコンピュータ・システム１７００にロードすることを可能にする他の同様の手段を含むことができる。そのような手段としては、例えば取り外し可能ストレージ・ユニット１７２２及びインターフェース１７２０を挙げることができる。それらの例としては、プログラム・カートリッジ及びカートリッジ・インターフェース（ビデオ・ゲーム・デバイスに見られるようなもの）、取り外し可能メモリ・チップ（ＥＰＲＯＭやＰＲＯＭ等）及び関連ソケット、ならびにソフトウェア及びデータを取り外し可能ストレージ・ユニット１７２２からコンピュータ・システム１７００に転送することを可能にする他の取り外し可能ストレージ・ユニット１７２２及びインターフェース１７２０が挙げられる。
【００７７】
例示的なコンピュータ・システム１７００は、通信インターフェース１７２４を含むこともできる。通信インターフェース１７２４は、ソフトウェア及びデータをコンピュータ・システム１７００と外部デバイスの間で転送することを可能にする。通信インターフェース１７２４の例としては、モデム、ネットワーク・インターフェース（イーサネット（Ｒ）カード等）、通信ポート、ＰＣＭＣＩＡスロット及びカード等を挙げることができる。通信インターフェース１７２４を介して転送されるソフトウェア及びデータは信号の形をとるが、それらの信号は、例えば通信インターフェース１７２４によって受信可能な電子信号、電磁信号、光信号、又は他の信号である可能性がある。これらの信号は、通信経路又はチャネル１７２６を介して通信インターフェース１７２４に提供される。チャネル１７２６は信号を伝搬するものであり、配線又はケーブル、光ファイバ、電話回線、携帯電話リンク、ＲＦリンク、又は他の通信チャネル、あるいはそれらのすべてを使用して実施することができる。
【００７８】
本明細書で使用される「コンピュータ・プログラム媒体（ｃｏｍｐｕｔｅｒ  ｐｒｏｇｒａｍ  ｍｅｄｉｕｍ）」、「コンピュータ使用可能な媒体（ｃｏｍｐｕｔｅｒ  ｕｓａｂｌｅ  ｍｅｄｉｕｍ）」、及び「コンピュータ可読媒体（ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）」という用語は一般に、メイン・メモリ１７０６及び２次メモリ１７１２、取り外し可能ストレージ・ドライブ１７１６、ハード・ディスク・ドライブ１７１４内に設置されるハードディスク、信号等の媒体を指している可能性がある。これらのコンピュータ・プログラム製品は、ソフトウェアをコンピュータ・システム１７００に提供する手段である。コンピュータ可読媒体は、コンピュータ・システム１７００がその媒体からデータ、命令、メッセージ又はメッセージ・パケット、及び他のコンピュータに読み込み可能な情報を読み取ることを可能にする。コンピュータ可読媒体としては、例えばフレキシブル・ディスク、ＲＯＭ、フラッシュ・メモリ、ディスク・ドライブ・メモリ、ＣＤ‐ＲＯＭ、他の永続ストレージのような不揮発性メモリを挙げることができる。コンピュータ可読媒体は、例えばコンピュータ・システム１７００間でデータやコンピュータ命令のような情報を転送するのに役立つ。更に、コンピュータ可読媒体は、一時状態メディア内のコンピュータに読み込み可能な情報も含むこともできる。一時状態メディアとしては、コンピュータ・システムがそのようなコンピュータに読み込み可能な情報を読み取ることが可能となる有線ネットワーク又は無線ネットワークを含めたネットワーク・リンク又はネットワーク・インターフェースあるいはその両方を挙げることができる。
【００７９】
コンピュータ・プログラム（コンピュータ制御ロジックとも呼ばれる）は、メイン・メモリ１７０６又は２次メモリ１７１２あるいはその両方に記憶される。コンピュータ・プログラムは、通信インターフェース１７２４を介して受信される可能性もある。特に、これらのコンピュータ・プログラムにより、プロセッサ１７０４は、各コンピュータ・プログラムの実行時にコンピュータ・システム１７００の各機能を実行することが可能となる。したがって、このようなコンピュータ・プログラムは、コンピュータ・システム１７００のコントローラとなる。このようなコンピュータ・プログラムは、それらが実行されたときにコンピュータ・システム１７００が本明細書に記載される本発明の例示的な諸実施形態の各機能を実行することが可能となるように実装することができる。
【００８０】
したがって、例えばコンピュータ使用可能な媒体を有する製品（例えば１つ又は複数のコンピュータ・プログラム製品）に本発明の例示的な諸実施形態の１つ又は複数の態様を含めることができる。上記媒体には、例えば本発明の機能を提供し支援するコンピュータ読み取り可能なプログラム・コード手段が実装される。上記製品は、コンピュータ・システムの一部として含まれることも別個に販売されることもある。更に、機械読み取り可能な少なくとも１つのプログラム・ストレージ・デバイスであって、上述した本発明の例示的な諸実施形態の各機能を実行する機械実行可能な指令から成る少なくとも１つのプログラムを有形に実装したプログラム・ストレージ・デバイスを提供することもできる。
【００８１】
本発明の例示的な諸実施形態に関して説明した諸変形例は、特定の応用例にとって望ましい任意の組合せで実現することができる。それ故、本明細書に記載される特定の限定又は実施形態の拡張あるいはその両方は、特定の応用例で特定の利点を有する可能性があるが、必ずしもすべての応用例で使用する必要はない。また、本発明の例示的な諸実施形態に関して本明細書で説明した各態様の限定は、必ずしもそれらのすべてを各方法、システム、又は装置、あるいはそれらのすべてにおいて実施する必要はない。
【図１】
0005464554.tif 000002
【図２】
0005464554.tif 000003
【図３】
0005464554.tif 000004
【図４】
0005464554.tif 000005
【図５】
0005464554.tif 000006
【図６】
0005464554.tif 000007
【図７】
0005464554.tif 000008
【図８】
0005464554.tif 000009
【図９】
0005464554.tif 000010
【図１０】
0005464554.tif 000011
【図１１】
0005464554.tif 000012
【図１２】
0005464554.tif 000013
【図１３】
0005464554.tif 000014
【図１４】
0005464554.tif 000015