(57)【要約】  コンピューティング装置は、ファイルシステムによってストレージ媒体（１２８）上に保存され、そのようなファイルシステム（１３１）を介してアクセスされる、ファイルを有する。ファイルは、データと、データに関するメタデータとを含むように定義され、ファイルのデータの少なくとも一部は、データが実質的にボリューム上のどの領域も占有せず、ファイルが縮小されたゴースト化形式をとるように、ファイルから除去され、代替ロケーションに保存される。ゴースト化ファイルは、代替ロケーションからデータを取り出し、そのような取り出されたデータをそのようなゴースト化ファイルに関連付けて、再構成ファイルを形成することによって、使用のために再構成される。
2009501390.tif 000002
【特許請求の範囲】
【請求項１】
ストレージボリュームと、前記ストレージボリュームを管理するファイルシステムと、前記ファイルシステムによって前記ストレージボリューム上に保存され、そのようなファイルシステムを介してアクセスされるファイルと、を有するコンピューティング装置であって、前記ファイルは、データと、前記データに関係するメタデータと、を含むように定義され、前記ファイルの前記データの少なくとも一部は、前記データが実質的に前記ボリューム上のどの領域も占有せずかつ前記ファイルが縮小されたゴースト化形式をとるように、前記ファイルから除去されて代替ロケーションに保存され、前記ゴースト化ファイルは、前記代替ロケーションから前記データを取り出し、そのような取り出されたデータをそのようなゴースト化ファイルに関連付けて、再構成ファイルを形成することによって、使用のために再構成されることを特徴とするコンピューティング装置。
【請求項２】
前記コンピューティング装置は、支店サーバであり、前記代替ロケーションは、前記支店サーバから遠く離れたハブサーバであり、前記ハブサーバは、複数のそのような支店サーバにサービスすることを特徴とする請求項１に記載の装置。
【請求項３】
前記ゴースト化ファイルは、長期間無使用（ｓｔａｌｅ）または無関係の少なくとも一方であると決定されたものであることを特徴とする請求項１に記載の装置。
【請求項４】
前記ボリューム上の前記ゴースト化ファイルは、前記ファイルシステムによって、あるファイルロケーションに論理的に保存され、前記ゴースト化ファイルのゴースト化は、前記ゴースト化ファイルの前記ファイルロケーションを変更せず、それによって、ユーザは、前記ファイルシステムを手段として、前記ボリュームをブラウズして、前記ゴースト化ファイルおよび前記ゴースト化ファイルの前記ロケーションを識別することができることを特徴とする請求項１に記載の装置。
【請求項５】
前記ボリューム上に存在する前記ゴースト化ファイルの前記メタデータは、ゴースト化より前の前記ファイルからの実質的にすべてのメタデータを含み、前記代替ロケーションから前記ファイルの前記データを取り出すために利用されるゴースト化情報も含むことを特徴とする請求項１に記載の装置。
【請求項６】
前記ファイルは、１次データおよび２次データを含むデータを含むように定義され、前記１次データは、前記２次データよりも大きく、前記ファイルの少なくとも前記１次データは、前記ファイルから除去され、前記代替ロケーションに保存されることを特徴とする請求項１に記載の装置。
【請求項７】
ストレージボリュームと、前記ストレージボリュームを管理するファイルシステムと、前記ファイルシステムによって前記ストレージボリューム上に保存され、そのようなファイルシステムを介してアクセスされるファイルであって、データおよび前記データに関係するメタデータを含むように定義されるファイルと、を有するコンピューティング装置に関連する方法であって、前記ファイルの少なくとも一部によって占有される前記ボリューム上の領域を解放するための前記方法は、
前記ファイルを識別するステップと、
前記ファイルから除去される前記データの少なくとも一部を識別するステップと、
前記識別されたデータを、前記ファイルが縮小されたゴースト化形式をとるように、代替ロケーションに保存するために、前記ファイルから該代替ロケーションに移動するステップと、
前記移動されたデータによって以前占有されていた前記ボリューム上の領域を空きとして標識付けするステップと、
前記ゴースト化中ファイルの前記メタデータを、前記ファイルの前記移動されたデータを前記代替ロケーションから取り出すために利用され得る情報を含むゴースト化情報を含むように、修正するステップと、を含み、
それによって、前記ゴースト化ファイルは、前記代替ロケーションから前記データを取り出し、そのような取り出されたデータをそのようなゴースト化ファイルに関連付けて、再構成ファイルを形成することによって、使用のために再構成され得ることを特徴とする方法。
【請求項８】
前記識別されたデータを前記ファイルから前記代替ロケーションに移動するステップと、そのような移動されたデータを前記ファイルのＩＤ（ｉｄｅｎｔｉｆｉｃａｔｉｏｎ）と共に前記代替ロケーションに保存するステップと、を含むことを特徴とする請求項７に記載の方法。
【請求項９】
前記移動されたデータによって以前占有されていた領域を空きとして標識付けするステップは、前記ファイルの前記メタデータ内に書き留められた前記ボリューム上の前記ゴースト化ファイルの物理サイズを低減させ、やはり前記ファイルの前記メタデータ内に書き留められた前記ボリューム上の前記ゴースト化ファイルの論理ファイルサイズを低減させない結果を生むことを特徴とする請求項７に記載の方法。
【請求項１０】
前記ゴースト化中ファイルの前記メタデータを、そのようなファイルが今はゴースト化されていることを示す属性を設定するように修正するステップをさらに含み、それによって、前記コンピューティング装置上のアプリケーションは、そのような属性から、前記ファイルが今ゴースト化されていると決定することができ、したがって、そのようなアプリケーションは、そのようなファイルの前記データにアクセスする前に、そのようなファイルが最初に非ゴースト化形式に再構成されなければならないことを知らされることを特徴とする請求項７に記載の方法。
【請求項１１】
前記ファイルが長期間無使用または無関係の少なくとも一方であると決定したことに基づいて、前記ファイルを識別するステップを含むことを特徴とする請求項７に記載の方法。
【請求項１２】
前記ボリューム上の前記ゴースト化ファイルは、前記ファイルシステムによって、あるファイルロケーションに論理的に保存され、前記方法は、前記ゴースト化ファイルの前記ファイルロケーションを変更しないステップを含み、それによって、ユーザは、前記ファイルシステムを手段として、前記ボリュームをブラウズして、前記ゴースト化ファイルおよび前記ゴースト化ファイルの前記ロケーションを識別することができることを特徴とする請求項７に記載の方法。
【請求項１３】
前記ファイルは、１次データおよび２次データを含むデータを含むように定義され、前記１次データは、前記２次データよりも大きく、前記方法は、
前記１次データの少なくとも一部を、前記ファイルから除去される前記データとして識別するステップと、
前記識別された１次データを、前記ファイルが縮小されたゴースト化形式をとるように、前記代替ロケーションに保存するために、前記ファイルから前記代替ロケーションに移動するステップと、を含むことを特徴とする請求項７に記載の方法。
【請求項１４】
前記ゴースト化ファイルを再構成するステップをさらに含み、そのような再構成するステップは、
前記ゴースト化ファイルの前記移動されたデータにアクセスする要求を受け取るステップと、
前記ボリューム上の前記ゴースト化ファイルを発見するステップと、
前記ファイルの前記メタデータ内の前記ゴースト化情報を識別するステップと、
前記識別されたゴースト化情報に基づいて、前記代替ロケーションにある前記ファイルの前記移動されたデータを発見するステップと、
前記発見されたデータの少なくとも一部を、前記代替ロケーションから前記コンピューティング装置に移動するステップと、
再構成ファイルを形成するために、前記移動されたデータをそのようなゴースト化ファイルに関連付けるステップと、を含むことを特徴とする請求項７に記載の方法。
【請求項１５】
前記再構成ファイルの前記メタデータを、そのようなファイルがゴースト化されていることを示す属性をリセットするように修正するステップをさらに含むことを特徴とする請求項１４に記載の方法。
【請求項１６】
前記再構成ファイルを形成するために、前記移動されたデータを前記ゴースト化ファイルに関連付けるステップは、前記ボリューム上の前記移動されたデータによって占有される領域を前記ファイルに割り当てるステップと、前記割り当てられた領域に前記移動されたデータを保存するステップと、を含むことを特徴とする請求項１４に記載の方法。
【請求項１７】
前記再構成ファイルの前記メタデータを、前記ゴースト化情報を削除するように修正するステップをさらに含むことを特徴とする請求項１４に記載の方法。
【請求項１８】
前記ファイルシステムが、前記ゴースト化ファイルの前記移動されたデータにアクセスする要求を受け取り、前記ゴースト化ファイルがそのような移動されたデータを含まないことを発見し、エラーを返すステップと、前記コンピューティング装置は、ゴースト化フィルタをさらに有するものであって、前記ゴースト化フィルタが、前記エラーをインタセプトし、前記ゴースト化ファイルの前記メタデータから前記ゴースト化情報を獲得するために、前記インタセプトされたエラーに基づいて前記ファイルシステムを利用するステップと、前記獲得されたゴースト化情報に基づいて前記ゴースト化ファイルの再構成をトリガするステップと、を含むことを特徴とする請求項１４に記載の方法。
【請求項１９】
前記ゴースト化フィルタは、前記代替ロケーションにアクセスしない低水準構造であり、前記コンピューティング装置は、前記代替ロケーションにアクセスする高水準構造であり前記ゴースト化フィルタとインタフェースをとるゴースト化マネージャを、さらに有するものであり、前記ゴースト化フィルタは、前記ゴースト化ファイルの再構成を実行するように前記ゴースト化マネージャに要求することによって、前記ゴースト化ファイルの再構成をトリガすることを特徴とする請求項１８に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージボリューム上の領域を解放するために、ストレージボリューム上に保存されたコンピュータファイル内のデータが、代替ロケーションに移動または「ゴースト化（ｇｈｏｓｔ）」されることを可能にする、アーキテクチャおよび方法に関する。より詳細には、本発明は、ゴースト化ファイル（ｇｈｏｓｔｅｄ  ｆｉｌｅ）の残りがストレージボリューム上に留まり、必要に応じて、代替ロケーションのゴースト化データが取り出され、ゴースト化ファイル内に置き戻されて、逆ゴースト化ファイル（ｄｅ−ｇｈｏｓｔｅｄ  ｆｉｌｅ）を作り出す、アーキテクチャおよび方法に関する。
【背景技術】
【０００２】
パーソナルコンピュータまたはコンピュータサーバなどのコンピューティング装置では、知られているように、データは、典型的には、コンピューティング装置の１つまたは複数のローカルストレージボリューム上に存在するローカルコンピュータファイルの形式で、コンピューティング装置上に永続的に保存される。そのような各ストレージボリュームは、コンピューティング装置のハードドライブ上などに存在することができ、そのようなストレージボリュームは、やはり知られているように、コンピューティング装置上で動作するファイルシステムによって編成され、ファイルシステムを介してアクセスされ、さもなければファイルシステムによって管理される。
【０００３】
時には、ストレージボリューム上のコンピュータファイルのいくつかが、多くが、場合によっては大部分さえもが、興味のないものであり、「コールド（ｃｏｌｄ）」になっていると考えられ得る場合があり得る。すなわち、そのようなコールドファイル（ｃｏｌｄ  ｆｉｌｅ）は、例えば、かなりの長期間にわたってアクセスされたことがなく、かつ／またはかなりの長期間にわたってアクセスされない可能性が高く、したがって、ボリューム上に留まり続ける実際上の価値は、持つとしても僅かしか持たない。
【０００４】
もちろん、そのようなコールドファイルは、そのようなボリューム上で空き領域を必要とする場合は特に、ストレージボリュームから単に削除されることができる。しかし、大部分のユーザは、単に空き領域を作るためだけに、ファイルを削除することを嫌うことを認識されたい。加えて、認知された不使用だけを理由にして、コールドファイルを削除することは悪い実践であると考えられている。いずれにしても、コールドファイルは、必要であるとは考えられず、また必要になるとは予想されなくても、それにも関わらず、将来のいずれかの時点で必要になり得る場合があり得、そうなる可能性がある。
【０００５】
そのような状況では、そのようなコールドファイルがボリューム上にプレゼンス（ｐｒｅｓｅｎｃｅ：存在すること）を維持することを依然として可能にしながら、そのようなコールドファイルから代替ロケーションにデータを移動させることによって、ボリューム上に空き領域を作り得ることが役に立つ。すなわち、コールドファイルをより小さい「ゴースト化」された形式でボリューム上に残しながら、そのようなコールドファイルから代替ロケーションにデータを移動させることによって、コールドファイルを「ゴースト化」し得ること、またはファイル全体を代替ロケーションにコピーし得ることが役に立つ。したがって、実際に、ゴースト化ファイルがコンピューティング装置上で必要とされる場合、そのようなゴースト化ファイルのデータが、代替ロケーションから取り出されることができ、それに基づいて、ゴースト化ファイルが再構成されることができ、その後、そのような再構成ファイルが利用されることができる。
【０００６】
別のシナリオでは、企業などのデータファイルが、おそらくハブなどの中央ロケーションから、企業の複数の支店ロケーションにレプリケートされる場合があり得る。例えば、建築設計会社は、すべての建築設計ファイルが、その会社の複数の支店のどこででも利用可能であることを望むかもしれない。
【０００７】
そのような状況では、各ファイルのコピーを各支店にレプリケートし、すべての支店のすべてのファイルを最新に維持するために、ネットワーク接続されたシステムが構築されることができる。そのようなシステムでは、例えば、中央ハブサーバが、そのような各ファイルを保存し、ハブの各ファイルのコピーを、ネットワークを介して、各支店の支店サーバなどに分散させるために、レプリケーションサービスが利用される。しかし、企業のファイルの数が増大するにつれて、各ファイルのサイズが増大するにつれて、また支店の数が増大するにつれて、ネットワークを介するトラフィックの量も、おそらく利用可能な帯域幅を超える点まで増大する。さらに、ハブのすべてのファイルの総サイズが増大するにつれて、各支店サーバが、ハブサーバからレプリケートされるそのようなファイルのすべてを保存するために利用可能な領域を十分に持たない場合が実際に生じ得る。
【０００８】
先のシナリオと類似しているが、特定の支店の支店サーバ上のコンピュータファイルのいくつかが、多くが、場合によっては大部分さえもが、興味のないものであり、不要であると考えられ得る場合があり得る。そのような不要ファイルは、例えば、その特定の支店には関係のない事柄に関するかもしれず、その特定の支店を介してアクセスされない可能性が高く、したがって、その特定の支店用の支店サーバ上にレプリケートされる実際上の価値は、持つとしても僅かしか持たない。例えば、ペンシルベニア州ウィルクスバレにある建築設計会社の支店は、フロリダ州ボイントンビーチにあるその会社の支店によって主導されるプロジェクトに関する建築設計ファイルを保有する必要は、あるとしてもごく僅かしかない可能性が高い。
【０００９】
そのような状況では、先のシナリオと同様に、特定の支店に関係するファイルだけは、その特定の支店の支店サーバ上に全体を保存し、企業用のハブサーバから利用可能なその他のすべての無関係なファイルは、その特定の支店のその支店サーバ上に一部だけを保存し得ることが役に立つ。したがって、先のシナリオの方法と類似した方法により、無関係な各ファイルはより小さい「ゴースト化」された形式で支店サーバ上に留まるように、特定の支店の支店サーバにおいて無関係なファイルを「ゴースト化」し得ることが役に立つ。したがって、やはり、実際に、ゴースト化ファイルが支店サーバにおいて必要とされる場合、そのようなゴースト化ファイル用のデータが、ハブサーバから取り出されることができ、それに基づいて、ゴースト化ファイルが再構成されることができ、その後、そのような再構成ファイルが利用されることができる。
【発明の開示】
【発明が解決しようとする課題】
【００１０】
したがって、ローカルボリュームまたは支店サーバなどのソース（ｓｏｕｒｃｅ）のファイルが、ファイルのデータが代替ロケーションまたはハブサーバなどのシンク（ｓｉｎｋ）に保存されるように、レプリケートまたはゴースト化されることができ、その結果、ソースのファイルが、必要に応じて再構成され得る縮小またはゴースト化形式をとるようにする、方法およびメカニズムに対する必要が存在する。特に、そのようなゴースト化ファイルが、必要に応じて形成および再構成されることができるようにする、そのような方法およびメカニズムに対する必要が存在する。
【課題を解決するための手段】
【００１１】
上述の必要は、コンピューティング装置が、ストレージボリュームと、ストレージボリュームを管理するファイルシステムと、ファイルシステムによってストレージボリューム上に保存され、そのようなファイルシステムを介してアクセスされるファイルとを有する本発明によって少なくとも部分的には満たされる。ファイルは、データと、データに関するメタデータとを含むように定義され、データが実質的にボリューム上のどの領域も占有せず、ファイルが縮小されたゴースト化形式をとるように、ファイルのデータの少なくとも一部は、ファイルから除去され、代替ロケーションに保存される。ゴースト化ファイルは、代替ロケーションからデータを取り出し、そのような取り出されたデータをそのようなゴースト化ファイルに関連付けて、再構成ファイルを形成することによって、使用のために再構成される。
【００１２】
ファイルをゴースト化するため、ファイルが識別され、ファイルから除去されるデータの少なくとも一部が識別され、識別されたデータは、ファイルから、そこに保存される代替ロケーションに移動されて、ファイルは、縮小されたゴースト化形式をとる。移動されたデータによってそれまで占有されていたボリューム上の領域は、空きであるとして標識が付される。加えて、ゴースト化中ファイル（ｎｏｗ−ｇｈｏｓｔｅｄ  ｆｉｌｅ）のメタデータは、ファイルの、移動されたデータを、代替ロケーションから取り出すために利用され得る情報を含むゴースト化情報（ｇｈｏｓｔｉｎｇ  ｉｎｆｏｒｍａｔｉｏｎ）を含むように修正される。
【００１３】
ゴースト化ファイルは、ゴースト化ファイルの、移動されたデータに、アクセスする要求を受け取ったときに再構成される。要求に応答して、ゴースト化ファイルがボリューム上で発見され、ファイルのメタデータ内のゴースト化情報が識別され、識別されたゴースト化情報に基づいて、代替ロケーションにある、ファイルの、移動されたデータが発見される。その後、発見されたデータは、代替ロケーションからコンピューティング装置に移動され、移動されたデータは、そのようなゴースト化ファイルと関連付けられて、再構成ファイルを形成する。
【００１４】
上述の要約および以下に示される本発明の実施形態の詳細な説明は、添付の図面と併せて読むことで、より良く理解されるであろう。本発明を説明する目的で、図面には現時点で好ましい実施形態が示されている。しかし、理解されるべきこととして、本発明は、示された通りの構成および手段に限定されない。
【発明を実施するための最良の形態】
【００１５】
コンピュータ環境
図１および以下の説明は、本発明および／または本発明の部分が実施され得る適切なコンピューティング環境の簡潔な概略的説明を提供することが意図されている。必ずしも必要ではないが、本発明は、クライアントワークステーションまたはサーバなどのコンピュータによって実行される、プログラムモジュールなどのコンピュータ実行可能命令という一般的背景において説明される。一般に、プログラムモジュールは、特定のタスクを実行し、または特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、およびデータ構造などを含む。さらに、本発明および／または本発明の部分は、ハンドヘルド装置、マルチプロセッサシステム、マイクロプロセッサベースまたはプログラム可能な家庭用電化製品、ネットワークＰＣ、ミニコンピュータ、およびメインフレームコンピュータなどを含む、その他のコンピュータシステム構成を用いて実施されることもできることを理解されたい。本発明は、通信ネットワークを介して結合されるリモート処理装置によってタスクが実行される、分散コンピューティング環境でも実施されることができる。分散コンピューティング環境では、プログラムモジュールは、ローカルおよびリモート両方のメモリ記憶装置に配置されることができる。
【００１６】
図１に示されるように、例示的な汎用コンピューティング装置は、処理ユニット１２１と、システムメモリ１２２と、システムメモリを始めとする様々なシステム構成要素を処理ユニット１２１に結合するシステムバス１２３とを含む、従来のパーソナルコンピュータ１２０などを含む。システムバス１２３は、メモリバスまたはメモリコントローラ、周辺バス、および様々なバスアーキテクチャのいずれかを使用するローカルバスを含む、複数のタイプのバス構造のいずれかとすることができる。システムメモリは、読み出し専用メモリ（ＲＯＭ）１２４およびランダムアクセスメモリ（ＲＡＭ）１２５を含む。基本入出力システム（ＢＩＯＳ）１２６は、起動中などにパーソナルコンピュータ１２０内の要素間で情報を伝送する助けをする基本ルーチンを含み、ＲＯＭ１２４内に保存される。
【００１７】
パーソナルコンピュータ１２０は、ハードディスク（図示されず）から読み取り、それに書き込むためのハードディスクドライブ１２７と、着脱可能磁気ディスク１２９から読み取り、それに書き込むための磁気ディスクドライブ１２８と、ＣＤ−ＲＯＭまたはその他の光媒体などの着脱可能光ディスク１３１から読み取り、それに書き込むための光ディスクドライブ１３０とをさらに含むことができる。ハードディスクドライブ１２７、磁気ディスクドライブ１２８、および光ディスクドライブ１３０は、それぞれハードディスクドライブインタフェース１３２、磁気ディスクドライブインタフェース１３３、および光ディスクドライブインタフェース１３４によって、システムバス１２３に接続される。ドライブおよびそれらに関連するコンピュータ可読媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、およびその他のデータの不揮発性記憶をパーソナルコンピュータ１２０に提供する。
【００１８】
本明細書で説明される例示的な環境は、ハードディスク、着脱可能磁気ディスク１２９、および着脱可能光ディスク１３１を利用するが、コンピュータによってアクセス可能なデータを保存することができるその他のタイプのコンピュータ可読媒体も、例示的な動作環境で使用され得ることを理解されたい。そのようなその他のタイプの媒体は、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ベルヌイカートリッジ、ランダムアクセスメモリ（ＲＡＭ）、および読み出し専用メモリ（ＲＯＭ）などを含む。
【００１９】
オペレーティングシステム１３５、１つまたは複数のアプリケーションプログラム１３６、その他のプログラムモジュール１３７、およびプログラムデータ１３８を含む多数のプログラムモジュールが、ハードディスク、磁気ディスク１２９、光ディスク１３１、ＲＯＭ１２４、またはＲＡＭ１２５上に保存されることができる。ユーザは、キーボード１４０およびポインティングデバイス１４２などの入力装置を介して、パーソナルコンピュータ１２０にコマンドおよび情報を入力することができる。その他の入力装置（図示されず）は、マイクロフォン、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、またはスキャナなどを含むことができる。上記およびその他の入力装置は、システムバスに結合されるシリアルポートインタフェース１４６を介して、しばしば処理ユニット１２１に接続されるが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス（ＵＳＢ）などのその他のインタフェースによって接続されてもよい。モニタ１４７またはその他のタイプの表示装置も、ビデオアダプタ１４８などのインタフェースを介して、システムバス１２３に接続される。モニタ１４７に加えて、パーソナルコンピュータは、典型的には、スピーカおよびプリンタなどのその他の周辺出力装置（図示されず）も含む。図１の例示的なシステムは、ホストアダプタ１５５、スモールコンピュータシステムインタフェース（ＳＣＳＩ）バス１５６、およびＳＣＳＩバス１５６に接続される外部記憶装置１６２も含む。
【００２０】
パーソナルコンピュータ１２０は、リモートコンピュータ１４９などの１つまたは複数のリモートコンピュータへの論理コネクションを使用して、ネットワーク環境で動作することができる。リモートコンピュータ１４９は、別のパーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピア装置、またはその他の共通ネットワークノードとすることができ、典型的には、パーソナルコンピュータ１２０に関して上で説明された要素の多くまたはすべてを含むが、図１にはメモリ記憶装置１５０のみが示されている。図１に示される論理コネクションは、ローカルエリアネットワーク（ＬＡＮ）１５１およびワイドエリアネットワーク（ＷＡＮ）１５２を含む。そのようなネットワーク環境は、オフィス、企業規模のコンピュータネットワーク、イントラネット、およびインターネットにおいて一般的である。
【００２１】
ＬＡＮネットワーク環境で使用される場合、パーソナルコンピュータ１２０は、ネットワークインタフェースまたはアダプタ１５３を介して、ＬＡＮ１５１に接続される。ＷＡＮネットワーク環境で使用される場合、パーソナルコンピュータ１２０は、典型的には、インターネットなどのワイドエリアネットワーク１５２を介する通信を確立するためのモデム１５４またはその他の手段を含む。モデム１５４は、内蔵または外付けとすることができ、シリアルポートインタフェース１４６を介してシステムバス１２３に接続される。ネットワーク環境では、パーソナルコンピュータ１２０に関して示されたプログラムモジュールまたはその部分は、リモートメモリ記憶装置内に保存されることができる。示されたネットワーク接続は、例示的なものであり、コンピュータ間の通信リンクを確立するその他の手段も使用され得ることを理解されたい。
【００２２】
ファイルのゴースト化および再構成
次に図２を参照すると、本発明では、パーソナルコンピュータまたはコンピュータサーバなどのコンピューティング装置１０は、ハードドライブまたは永続性ＲＡＭドライブなどのストレージボリューム１２を有し、ボリューム１２は、そこに多数のコンピュータファイル１４を保存し、ボリューム１２上のファイル１４は、コンピューティング装置１０上で動作するファイルシステム１６によって編成され、ファイルシステム１６を介してアクセスされ、さもなければファイルシステム１６によって管理される。理解され得るように、コンピューティング装置１０、ボリューム１２、ファイル１４、およびファイルシステム１６は、本発明の主旨および範囲から逸脱することなく、任意のタイプのコンピューティング装置、ボリューム、ファイル、およびファイルシステムとすることができる。
【００２３】
本発明の一実施形態では、コンピューティング装置１０は、パーソナルコンピュータなどであり、コンピューティング装置のボリューム１２上のファイル１４のうちの少なくともいくつかは、例えば、そのようなファイル１４が、かなりの長期間にわたってアクセスされたことがなく、かつ／またはかなりの長期間にわたってアクセスされない可能性が高く、したがって、ボリューム１２上に留まり続ける実際上の価値は、持つとしても僅かしか持たないので、コールドであると決定される。しかし、ファイル１４のコールドネス（ｃｏｌｄｎｅｓｓ）は、本発明の主旨および範囲から逸脱することなく、任意の適切な方法で定義されてよいことに留意されたい。
【００２４】
いずれにしても、コールドであると決定されたとき、ファイル１４は、ボリューム１２から削除されず、代わりに、ファイルの少なくとも一部のデータ２０を代替ロケーション１８に移動することによって、ボリューム１２上のサイズが縮小される。そのような代替ロケーション１８は、コンピューティング装置から見てローカルなロケーションでも、またはリモートな（遠く離れた）ロケーションでもよい。一般に、そのような代替ロケーション１８は、コンピューティング装置１０に適切に結合され、本発明の主旨および範囲から逸脱することなく、任意の適切なストレージロケーションとすることができる。例えば、代替ロケーション１８は、記憶装置１０上の別のボリューム１２、別のコンピューティング装置１０上の別のボリューム１２、サーバのファイルウェアハウス、またはリモートサーバなどの長期記憶装置とすることができる。
【００２５】
代替ロケーション１８を用いる場合、ボリューム１２上の領域は、そのようなコールドファイル１４からそのような代替ロケーション１８に上述のデータ２０を移動することによって、解放されることができる。重要なこととして、そのようなコールドファイル１４のデータ２０は移動されるが、そのようなコールドファイル１４は、縮小または「ゴースト化」された形式であるにしても、ボリューム１２上にプレゼンスまたは「ゴースト」として留まり続ける。したがって、実際に、ゴースト化ファイル１４がコンピューティング装置１０上で必要とされる場合、ゴースト化ファイルのデータ２０を代替ロケーション１８から取り出し、そのような取り出されたデータ２０をそのようなゴースト化ファイル１４と再度関連付けて、再構成ファイル１４を形成することによって、そのようなゴースト化ファイル１４は再構成される。理解され得るように、再構成された後、ファイル１４は、実際に利用されることができる。
【００２６】
本発明の別の実施形態では、コンピューティング装置１０は、支店サーバなどであり、支店サーバのボリューム１２上の少なくともいくつかのファイル１４は、例えば、そのようなファイル１４はその支店サーバに関連付けられた支店に関係がないので、無関係であると決定される。もちろん、ファイル１４に関する無関係性は、本発明の主旨および範囲から逸脱することなく、任意の適切な方法で定義されてよい。
【００２７】
いずれにしても、以前のように、無関係なファイル１４は、ファイルの少なくとも一部のデータ２０を伴わない縮小された形式で、支店サーバ１０のボリューム１２上に維持される。ここでは、そのようなデータ２０は、支店がそれの支店である企業によって維持される中央ハブサーバなどの代替ロケーション１８に保存される。やはり、そのようなハブサーバ１８は、支店サーバ１０に適切に結合される。
【００２８】
ハブサーバ１８を用いる場合、そのような無関係なファイル１４のそのような上述のデータ２０をそのようなハブサーバ１８に保存することによって、支店サーバ１０のボリューム１２上で使用される領域は最小化され、そのような領域にデータ投入するために必要な帯域幅も最小化される。重要なこととして、以前と同様に、そのような無関係なファイル１４のデータ２０は支店サーバ１０に存在しないが、そのような無関係なファイル１４は、縮小または「ゴースト化」された形式であるにしても、支店サーバのボリューム１２上にプレゼンスまたは「ゴースト」として留まり続ける。したがって、実際に、ゴースト化ファイル１４が支店サーバ１０上で必要とされる場合、ゴースト化ファイルのデータ２０をハブサーバ１８から取り出し、そのような取り出されたデータ２０をそのようなゴースト化ファイル１４と再度関連付けて、再構成ファイル１４を形成することによって、そのようなゴースト化ファイル１４は再構成される。やはり、再構成された後、ファイル１４は、実際に利用されることができる。
【００２９】
一般化すると、パーソナルコンピュータなどのコンピューティング装置１０と代替ロケーション１８を含む構成にせよ、支店サーバ１０とハブサーバ１８を含む構成にせよ、またはそれ以外の構成にせよ、「ゴースト化」は、図２に見られるように、ファイル１４がそのようなファイル１４に関連するデータ２０のかなりの部分を含まない縮小形式でボリューム１２上に存在するに過ぎないことが決定された、ソース１０のボリューム１２上のファイル１４を含む。したがって、図２に見られるように、そのようなデータ２０は、ソース１０に適切に結合されたシンク１８に保存される。
【００３０】
そのようなシンク１８を用いる場合、ボリューム１２上のゴースト化ファイル１４は縮小または「スタブ（ｓｔｕｂ）」形式で存在するので、ソース１０のボリューム１２上で使用される領域は最小化される。したがって、実際に、ゴースト化ファイル１４がソース１０で必要とされる場合、ゴースト化ファイルのデータ２０をシンク１８から取り出し、そのような取り出されたデータ２０をそのようなゴースト化ファイル１４と再度関連付けて、再構成ファイル１４を形成することによって、そのようなゴースト化ファイル１４は再構成される。やはり、再構成された後、ファイル１４は、必要に応じて、ソース１０において実際に利用されることができる。
【００３１】
本発明の一実施形態では、ソース１０のボリューム上に存在するゴースト化ファイル１４のスタブは、元のファイル１４と同じボリューム１２上のロケーションに保存される。したがって、ファイルシステム１６が、ボリューム１２をディレクトリ形式によって編成するにせよ、またはその他の形式によって編成するにせよ、ゴースト化されたファイル１４を特定のロケーション内で探すファイルシステム１６は、そのようなロケーションで、ファイル１４のスタブ、すなわち、ゴースト化ファイル１４を見出さなければならない。重要なこととして、ソース１０のボリューム１２上に存在するゴースト化ファイル１４は、元の非ゴースト化ファイル１４のすべてのメタデータ２２を含み、とりわけ、ファイル１４のデータ２０をシンク１８から取り出すために利用され得るゴースト化情報２４も含む。理解され得るように、そのようなゴースト化情報２４は、ファイル１４のメタデータ２２に追加されてよく、またはファイル１４の別のロケーションに保存されてもよい。
【００３２】
したがって、ユーザなどは、ボリューム１２上のファイル１４のいくつかはゴースト化され、ボリューム１２上のファイル１４のいくつかはゴースト化されていなくても、ファイルシステム１６によって、ソース１０のボリューム１２全体をブラウズすることができる。特に、ゴースト化ファイル１４に関連するメタデータ２２は、そのようなブラウジング中に、とりわけ、ゴースト化ファイル１４を識別し、サイズ情報および日付情報などを提供するために、利用されることができる。ユーザがゴースト化ファイル１４にアクセスしようと試みるとき、ゴースト化ファイルのデータ２０は、ゴースト化ファイル１４内に存在するゴースト化情報２４に基づいて取り出され、ゴースト化ファイル１４は、非ゴースト化ファイル１４に再構成され、その後、非ゴースト化ファイル１４は、実際にユーザによってアクセスされることができる。
【００３３】
次に図３Ａを参照すると、ソース１０のボリューム１２上に存在し得る非ゴースト化ファイル１４は、ヘッダ内などに構成され得るメタデータ２２を含み、そのようなメタデータ２２は、論理ファイルサイズ、ボリューム１２上のサイズ、作成時刻、修正時刻、アクセス時刻、アクセス許可、および様々なファイル属性などの、非ゴースト化ファイル１４のデータ２０に関する情報を含む。加えて、明らかなように、ソース１０のボリューム１２上に存在するそのような非ゴースト化ファイル１４は、ファイル１４の実際のデータ２０も含む。ここで、実際のデータ２０は、１次データおよび代替データとして組織されることができ、１次データは、アプリケーション３０など（図２）によって利用され得るファイル１４のデータ２０であり、代替データは、その他の使用のために生成されたファイル１４のデータであることに留意されたい。単なる一例として、そのような代替データは、ソース１０においておそらくはアプリケーション３０またはファイルシステム１６によってファイル１４の表現を表示するときに利用され得る、「サムネイル」などのグラフィック表現を含むことができる。
【００３４】
いずれにしても、１次データがサイズ的にデータ２０の大部分となる場合が可能性として高い。したがって、非ゴースト化ファイル１４が実際にゴースト化される場合、ゴースト化ファイル１４を形成するために、データ２０の１次データのみが、非ゴースト化ファイル１４の残りから除去されること、またそのような１次データのみが、図３Ａに示されるように、おそらくはゴースト化ファイル１４の識別情報と一緒に、シンク１８に保存されることが、実際にあり得る。もちろん、ファイル１４のその他の部分も、本発明の主旨および範囲から逸脱することなく、ファイル１４のゴースト化中に除去されることができる。
【００３５】
しかし、理解され得るように、ハブサーバ１８がファイル１４を支店サーバ１０にレプリケートする、支店サーバ１０とハブサーバ１８の環境において、非ゴースト化ファイル１４が実際にゴースト化される場合、データ２０の１次データが、ソース１８のレプリケートファイル１４の残りから除去されて、ゴースト化ファイル１４を形成し、そのようなファイル１４の全体が、図３Ｂに示されるように、おそらくはゴースト化ファイル１４の識別情報と一緒に、シンク１８に保存されることが、実際にあり得る。
【００３６】
次に図３および図４を参照すると、非ゴースト化ファイル１４をゴースト化ファイル１４に変換するため（すなわち、ファイル１４をゴースト化するため）、最初に、ファイル１４が識別され（ステップ４０１）、その後、ファイル１４から除去されるデータ２０が識別される（ステップ４０３）。やはり、そのようなデータ２０は、典型的には、データ２０の１次データであるが、そのようなデータ２０のその他のデータとすることもできる。いずれにしても、その後、識別されたデータ２０は、適切なトランスポート機構および経路によって、ソース１０からシンク１８に移動され（ステップ４０５）、その後、そのような移動されたデータ２０は、適切なフォーマットでシンク１８に保存される（ステップ４０７）。理解され得るように、データ２０のシンク１８への保存は、本発明の主旨および範囲から逸脱することなく、任意の適切なフォーマットおよび方法で行われることができる。例えば、データ２０は、それが望ましければ、圧縮かつ／または暗号化されることができるが、そのようなデータ２０は、ファイル１４を再構成する要求があったときに、そのようなデータ２０が相対的に容易に取り出され得るような方法で保存されるべきである。例えば、そのようなデータ２０は、以下でより詳細に説明されるように、取り出しのために利用されるＩＤに従って保存されることができる。
【００３７】
ステップ４０５においてデータ２０が移動されてしまえば、ソース１０のボリューム１２上のそのようなデータ２０によって占有されていた領域は、理解され得るように、ファイル１４に割り当てられ続ける必要はない。したがって、そのような割り当て領域は、空きとして標識を付されることができ（ステップ４０９）、その結果、ゴースト化中ファイル１４は、疎であるとして標識を付される。重要なこととして、そのような割り当て領域は、ゴースト化ファイル１４による使用から解放されるが、そのようなファイル１４のメタデータ２２内または別の場所において、ゴースト化中ファイル１４の論理ファイルサイズは、変更されるべきではなく、ファイル１４のボリューム１２上のサイズは、そのような解放された領域を反映するために実際に変更されてよい。
【００３８】
加えて、本発明の一実施形態では、ゴースト化中ファイル１４のメタデータ２２は、そのようなファイル１４がゴースト化中であることを示すために修正される（ステップ４１１）。そうするために、例えば、「ゴースト化」属性を、メタデータ２２に設定することができる。理解され得るように、そのような設定されたゴースト化属性は、問い合わせアプリケーション３０などへの、ファイル１４が実際にゴースト化されていることの信号として、主に利用されることができる。そのような信号を用いる場合、問い合わせアプリケーション３０は、ファイル１４が実際にゴースト化されていることばかりでなく、そのようなファイル１４へのアクセスは、そのようなファイル１４が最初に非ゴースト化形式に再構成されなければならないので、コストを伴うことも認識することができる。理解されるべきこととして、そのようなコストは、とりわけ、シンク１８のファイル１４のデータ２０にアクセスするのに必要とされる帯域幅、ボリューム１２上でデータ２０用に必要とされる領域、および／またはシンク１８のデータ２０にアクセスし、それに基づいてファイル１４を再構成するための待ち時間に関するものとすることができる。
【００３９】
また、本発明の一実施形態では、ゴースト化中ファイル１４のメタデータ２２は、上述のゴースト化情報２４を含むように修正される（ステップ４１３）。やはり、そのようなゴースト化情報２４は、とりわけ、ファイル１４のデータ２０をシンク１８から取り出すために利用され得る情報を含む。例えば、そのようなゴースト化情報２４は、シンク１８にデータ２０と共に保存され、データ２０を識別するＩＤと、シンク１８をどのように発見するか、かつ／またはファイル１４をどのように再構成するかなどに関する情報を含む、ゴースト化ファイル１４に関係するその他の情報を保存するために利用され得るある量の記憶とを含むことができる。ゴースト化情報２４内のそのような記憶は、可変または固定の量とすることができ、後者の場合、１６キロバイト程度に制限されることができる。理解され得るように、そのようなゴースト化情報２４は、ファイル１４を再構成するために利用される構造がどのようなものでも、そうした構造によって主に利用され、上述の問い合わせアプリケーション３０などによっては一般に使用されないが、それにも関わらず、そのような使用も、本発明の主旨および範囲から逸脱することなく、行われることができる。
【００４０】
理解されるべきこととして、ゴースト化されたゴースト化ファイル１４は、少なくともボリューム１２がもはや動作用に残っていなくなるまで、短い期間、長い期間、非常に長い期間、または永遠に、分散されずにソース１０のボリューム１２上に存在してよい。次に図５を参照すると、しかし、いずれかの時点で、ゴースト化ファイル１４の保存されたデータ２０にアクセスする要求が、アプリケーション３０、そのようなアプリケーション３０のユーザなどから受け取られ得ることを理解されたい（ステップ５０１）。もちろん、そのような要求に先立って、そのようなゴースト化ファイル１４のメタデータ２２にアクセスする１つまたは複数の要求も受け取られ得ることも可能である。例えば、上述のアプリケーション３０は、ファイル１４が実際にゴースト化されていると決定するために、そのようなゴースト化ファイル１４のメタデータ２２内の設定されたゴースト化属性にアクセスすることができ、ボリューム１２を管理するファイルシステム１６は、ディレクトリリストなどの編集中にメタデータ２２にアクセスすることができる。後者の場合、留意すべきこととして、ファイルシステム１６、アプリケーション３０、または別のエンティティは、ファイル１４の表現を表示するときに利用され得る上述のグラフィックを獲得するために、データ２２の代替データにもアクセスすることができる。
【００４１】
いずれにしても、ステップ５０１におけるゴースト化ファイル１４の保存されたデータ２０にアクセスする要求に応答して、ゴースト化ファイル１４は、以下のようにして、実際に再構成される。準備として、ファイル１４がボリューム１２上で発見され（ステップ５０３）、その後、ファイル１４のメタデータ２２内のゴースト化情報２４が識別される（ステップ５０５）。理解され得るように、シンク１８に保存されたファイル１４のデータ２０が、そのような識別されたゴースト化情報２４に基づいて発見され（ステップ５０７）、その後、そのような発見されたデータ２０が、適切なトランスポート機構および経路によって、シンク１８からソース１０に移動されることができる（ステップ５１１）。
【００４２】
もちろん、そのようなデータ２０をファイル１４と共にソース１０に保存するため、そのようなデータ２０によって占有されるソース１０のボリューム１２上の領域が割り当てられなければならず（ステップ５０９）、その結果、もはやゴースト化中でないファイル１４は、もはや疎であるとして標識を付されない。理解され得るように、データ２０が、ファイル１４を再構成するために、実際にファイル１４に移動された後、もはやゴースト化中でないファイル１４のメタデータ２２は、例えば、そのようなメタデータ２２内のゴースト化属性をリセットすることなどによって、そのようなファイル１４がゴースト化されていないことを示すように修正される（ステップ５１３）。また、もはやゴースト化中でないファイル１４のメタデータ２２は、ゴースト化情報２４を削除するようにも修正される（ステップ５１５）。したがって、ファイル１４は、今では非ゴースト化形式をとる。
【００４３】
理解されるべきこととして、ゴースト化ファイル１４の生成をもたらす２つの主要なシナリオが存在する。第１のシナリオでは、ファイル１４は、直ちにゴースト化ファイル１４としてボリューム１２上に生成される。そのようなゴースト生成は、支店サーバ１０とハブサーバ１８を用いて上で説明されたレプリケーションアーキテクチャにおいて典型的とすることができる。そのようなレプリケーションアーキテクチャでは、複数の支店サーバ１０のそれぞれに中央ハブサーバ１８からすべてのファイル１４の非ゴースト化コピーを投入することは、膨大な量の帯域幅を必要とする。したがって、代わりに、レプリケーションエンジンは、単にファイル１４のゴースト化コピーを支店サーバ１０上に生成することを決定することができる。その場合、任意の特定の支店サーバ１０の任意の特定のゴースト化ファイル１４に関連するデータ２０は、そのような特定の支店サーバ１０においてそのような特定のゴースト化ファイル１４を非ゴースト化ファイル１４に再構成するために、必要に応じて、要求があったときにハブサーバ１８から取り出されることができる。
【００４４】
第２のシナリオでは、ファイル１４は、非ゴースト化ファイル１４としてボリューム１２上に生成され、ある後の時点で、そのようなボリューム１２上でゴースト化ファイル１４に変換される。そのような非ゴースト生成は、パーソナルコンピュータなどと代替ロケーション１８を用いて上で説明されたような領域節約アーキテクチャにおいて典型的とすることができる。そのような領域節約アーキテクチャでは、パーソナルコンピュータなどのボリューム１２上の領域は、例えば稀にしか使用されないファイル１４に関連するデータ２０を、別の媒体または別のシステムとすることができる代替ロケーション１８に移動することによって、再利用される。第１のシナリオと同様に、パーソナルコンピュータなどの任意の特定のゴースト化ファイル１４に関連するデータ２０は、そのような特定のゴースト化ファイル１４を非ゴースト化ファイル１４に再構成するために、必要に応じて、要求があったときに代替ロケーション１８から取り出されることができる。
【００４５】
本発明の一実施形態では、ユーザまたはアプリケーション３０のために、またゴースト化ファイル１４に関して、ソース１０において実行される図５の動作は、図２に見られるように、実際にはゴースト化フィルタ（ｇｈｏｓｔｉｎｇ  ｆｉｌｔｅｒ）２６の支援を受けて実行される。そのような動作は、ユーザもしくはアプリケーション３０から透過的に、またはそれらに通知して、実行されることができるが、透過的であるほうが、そのようなユーザまたはアプリケーション３０にとって好ましい可能性が高い。特に、ユーザまたはアプリケーション３０が、ゴースト化ファイル１４の除去されたデータ２０にアクセスを試みる場合、ファイルシステム１６は、そのようなアクセスの要求を受け取ると、ゴースト化ファイル１４が除去されたデータ２０を含まないことを見出し、その結果、エラーを返すが、ゴースト化フィルタ２６は、そのエラーをインタセプトする。そのようなインタセプトが行われると、ゴースト化フィルタ２６は、ファイルシステム１６を利用して、ゴースト化ファイル１４のメタデータ２２からゴースト化情報２４を獲得し、獲得されたゴースト化情報２４に基づいて、そのようなゴースト化フィルタ２６は、アクセスの要求が最終的に満たされ得るように、そのようなゴースト化ファイル１４の再構成を、以下でより詳細に説明されるようにトリガする。
【００４６】
理解され得るように、ゴースト化フィルタ２６は、多くの機能を伴わず、シンク１８などのネットワークリソースにアクセスを行わない、低水準の構造とすることができる。そのような状況では、図２に示されるように、ゴースト化フィルタ２６は、ゴースト化マネージャ２８などのより高水準の構造とインタフェースをとることができ、そのようなゴースト化マネージャ２８は、追加のゴースト化機能と、シンク１８などのネットワークリソースへの直接アクセスとを含む。さらに、そのような状況では、ゴースト化フィルタ２６が、そのようなゴースト化ファイル１４のそのような再構成をトリガした場合、ゴースト化マネージャ２８は、以下でより詳細に説明されるように、図５に関連して示されたソース１０のためのそのような再構成機能の大部分を実行する。そのようなゴースト化マネージャ２８は、図４に関連して示されたソース１０のための再構成機能の大部分も実行することができる。
【００４７】
ゴースト化ファイル１４のデータ２０を要求するアプリケーション３０
ゴースト化ファイル１４の再構成は図４に関連してすでに上で詳述されたが、そのようなゴースト化ファイル１４のデータ２０のある部分を読み取ることを望むアプリケーション３０などの観点から、そのようなプロセスを再び検討することは有益である。理解され得るように、そのようなファイル１４からそのようなデータ２０を読み取ることを望むそのようなアプリケーション３０は、典型的には、ファイル１４に関してファイルシステム１６にｏｐｅｎコマンドを発行し、次にそのようなオープンされたファイル１４に関してファイルシステム１６にｒｅａｄコマンドを発行することによって、そのような機能を達成する。本発明の一実施形態では、そのようなアプリケーション３０は、そのようなｏｐｅｎおよびｒｅａｄコマンドを発行し続けるが、ゴースト化された問題のファイル１４に基づく場合、そのようなコマンドは、少し異なって解釈される。そのような差異は、アプリケーション３０からは透過的であり、アプリケーション３０には僅かな関わりしか持たないが、アプリケーション３０は、ゴースト化ファイル１４が再構成されている間に、多少の待ち時間を経験することがあり、そのような待ち時間は、大部分はシンク１８からソース１０にデータ２０を移動することに起因する可能性が高い。
【００４８】
いずれにしても、次に図６を参照すると、アプリケーション３０は、ボリューム１２上の特定のゴースト化ファイル１４に関してｏｐｅｎコマンドを発行することによって、プロセスを開始し、そのようなｏｐｅｎコマンドは、最終的にファイルシステム１６によって受け取られる（ステップ６０１）。留意すべきこととして、アプリケーション３０は、そのようなｏｐｅｎコマンドを発行する際、特定のファイル１４が実際にはゴースト化されていることに関していかなる知識を有することも期待されないが、アプリケーション３０は、ファイル１４についてゴースト化属性が設定されているかどうかを報告するようにファイルシステム１６に指令することによって、実際にはそのような決定を行うことができる。
【００４９】
上述されたように、ファイルシステム１６は、ｏｐｅｎコマンドを受け取ると、ゴースト化ファイル１４が除去されたデータ２０を含むことに気づき、その結果、エラーを返すが（ステップ６０３）、ゴースト化フィルタ２６が、そのような返されたエラーをインタセプトし、エラーに基づいて、問題のファイル１４が実際にはゴースト化形式をとることを理解する（ステップ６０５）。その結果、ゴースト化フィルタ２６自体が、そのようなゴースト化ファイル１４からゴースト化情報２４を取り出すようにファイルシステム１６に指令し、実際にそのようなゴースト化情報２４を受け取る（ステップ６０７）。そのようなゴースト化情報２４に基づいて、その後、ゴースト化フィルタ２６は、ゴースト化ファイル１４に対応するバッファおよびハンドルを生成し、アプリケーション３０からのｏｐｅｎコマンドに対する（正常）応答として、アプリケーション３０にハンドルを送り届ける（ステップ６０９）。
【００５０】
アプリケーション３０によって受け取られたゴースト化ファイル１４のハンドルは、オープンされたゴースト化ファイル１４のインスタンスを表し、例えば、ｒｅａｄコマンドまたはｃｌｏｓｅコマンドなど、さらなるコマンドをそのようなファイル１４に関して発行するときに、そのようなファイル１４への参照として、アプリケーション３０によって利用される。しかし、重要なこととして、ゴースト化フィルタ２６によって生成され、アプリケーション３０からのコマンドのハンドルパラメータとして利用される、ゴースト化ファイル１４のそのようなハンドルは、そのようなコマンドが、ファイルシステム１６ではなく、ゴースト化フィルタ２６に直接送られる原因となる。
【００５１】
ゴースト化ファイル１４用のバッファは、例えば、ゴースト化ファイルのゴースト化情報２４など、ゴースト化ファイル１４に関する情報を保存するために、ゴースト化フィルタ２６によって利用されることにも留意されたい。したがって、ゴースト化ファイル１４がゴースト化フィルタ２６によって操作されている間は、そのようなゴースト化情報２４に対する変更は、バッファ内に記録され、ファイル１４に書き戻される必要はない。もちろん、ゴースト化フィルタ２６がゴースト化ファイル１４を操作することを終えた後、バッファ内のそのような記録された変更は、必要であれば、ファイル１４のゴースト化情報２４に書き戻されることができる。
【００５２】
いずれにしても、ゴースト化フィルタ２６からのゴースト化ファイル１４用のハンドルを用いて、アプリケーション３０は、ボリューム１２上の特定のゴースト化ファイル１４に関してｒｅａｄコマンドを発行することによって、処理を続けることができ、そのようなｒｅａｄコマンドは、ハンドル、ファイルのデータ２０におけるオフセット、およびそのようなオフセットから開始するそのようなデータ２０に関するリード長などを含むパラメータを有する。したがって、そのようなｒｅａｄコマンドは、コマンドのパラメータとしてそのようなハンドルを有することに基づいて、ファイルシステム１６ではなく、最終的にゴースト化フィルタ２６によって受け取られる（ステップ６１１）。しかし、明らかなように、データ２０は実際にはゴースト化ファイル１４内に存在せず、したがって、ゴースト化フィルタは、さらなる処理を待機するために、待ち行列などにｒｅａｄコマンドを保存する（ステップ６１３）。
【００５３】
理解されるべきこととして、そのようなさらなる処理は、主として、シンク１８からゴースト化ファイル１４のデータ２０を獲得することを含む。特に、ゴースト化フィルタ２６は、シンク１８のゴースト化ファイルのデータ２０に基づいて、ゴースト化ファイル１４の再構成を開始し、そのような再構成は、以下のようにして行われることができる。
【００５４】
ゴースト化フィルタ２６が、より高水準のゴースト化機能を実行し、シンク１８などのネットワークリソースに直接アクセスするゴースト化マネージャ２８とインタフェースをとることができることを思い出すと、ゴースト化フィルタ２６は、シンク１８からゴースト化ファイル１４のデータ２０のある部分を獲得する要求をゴースト化マネージャ２８に対して発行し（ステップ６１５ａ）、そのような要求は、ゴースト化ファイル１４のゴースト化情報２４からのＩＤと、データ２０におけるオフセットと、そのようなオフセットから開始する獲得されるデータ２０の長さとを含む。その後、ゴースト化マネージャ２８は、シンク１８からそのようなデータ２０の要求された部分を実際に獲得する（ステップ６１５ｂ）。仮定上、ゴースト化マネージャ２８は、そのような獲得を行うのに必要なすべての機能を含み、当業者に知られたまたは明らかである、本明細書で詳細に説明される必要のない方法でそのような機能を含む。したがって、そのような獲得を行う任意の特定の方法が、本発明の主旨および範囲から逸脱することなく、利用されることができる。
【００５５】
ゴースト化マネージャ２８が、ステップ６１５ｂにおいてシンク１８からデータ２０の要求された部分を獲得中に、いくらかの遅延が生じることがあることに留意されたい。例えば、そのようなデータ２０がネットワークを介して獲得される場合があり得、その場合、おそらく数ミリ秒、数秒、またはさらに大きなネットワーク遅延が生じることがある。したがって、ゴースト化マネージャ２８、ゴースト化フィルタ２６、および／または別のエンティティは、シンク１８に要求され、おそらく対応する要求時間と共に、シンク１８からまだ獲得されていないデータ２０の各部分を表す、処理中データリストを維持することを望むことができる。理解され得るように、データの各要求された部分の識別情報は、そのような要求が行われた時に、処理中データリストに追加され、ゴースト化ファイル１４と共に受け取られ、保存された時に、処理中データリストから削除される。そのような処理中データリストを用いる場合、データ２０を求めるすべての処理中の要求は、経過時間（ａｇｅ）について監視され、一定の期間内に満たされなかった要求はタイムアウトされ得ることがあってよい。
【００５６】
ゴースト化マネージャ２８が、シンク１８からそのようなデータ２０のそのような要求された部分を実際に獲得すると、そのようなゴースト化マネージャ２８は、ゴースト化フィルタ２６にそのような要求された部分を送り（ステップ６１５ｃ）、その後、そのようなゴースト化フィルタ２６は、ファイルシステム１６に対する適切なコマンドによって、問題のファイル１４の適切なロケーションに、そのような要求された部分を書き込む（ステップ６１５ｄ）。問題のファイル１４の適切なロケーションにそのような要求された部分を書き込むことは、当業者に知られ、または明らかであり、したがって、本明細書で詳細に説明される必要はない。したがって、そのような書き込みを行う任意の特定の方法が、本発明の主旨および範囲から逸脱することなく、利用されることができる。
【００５７】
もちろん、ファイル１４のデータ２０のすべてがファイル１４に書き込まれるまで、ステップ６１５ａ〜６１５ｄを何度も繰り返す必要があることがあり、したがって、そのようなステップは、必要に応じて繰り返される。ファイル１４のデータ２０のすべてが実際にファイル１４に書き込まれた後、ゴースト化フィルタ２６は、必要に応じて、ゴースト化情報２４の削除およびゴースト化属性のリセットを含む、そのような今では再構成されたファイル１４のメタデータ２２を修正するためのコマンドを、ファイルシステム１４に対して発行する（ステップ６１７）。加えて、ゴースト化フィルタ２６は、ファイル１４に対するすべてのｒｅａｄコマンドを待ち行列から取り出し、アプリケーション３０からのｒｅａｄコマンドが問題のデータ２０を用いて実際に応答されるようにするさらなる処理のために、そのようなｒｅａｄコマンドをファイルシステム１６に渡す（ステップ６１９）。
【００５８】
オープンされたファイル１４用のハンドルは、ゴースト化フィルタ２６に関連付けられたまま保たれ、そのような今では再構成されたファイル１４に関連するアプリケーション３０からのコマンドを、そのようなゴースト化フィルタ２６に誘導し続ける。したがって、ゴースト化フィルタ２６が、そのようなコマンドをファイルシステム１６に転送する場合があり得、ゴースト化フィルタ２６が、ハンドルをファイルシステム１６に再度関連付ける場合があり得、またはゴースト化フィルタが、ハンドルをファイルシステム１６に再度関連付けるように別の構造に指令する場合などがあり得る。
【００５９】
ゴースト化ファイル１４の部分的再構成
理解され得るように、ファイル１４のゴースト化データ２０のすべてではなく、その一部のみが要求アプリケーション３０によって要求される状況においては、ゴースト化ファイル１４を完全に再構成する必要はない。したがって、アプリケーション３０が、２ギガバイトのデータ２０のうち特定のオフセットから１、２、１２、または１００キロバイトのみが必要とされると決定することができる場合、シンク１８から２ギガバイトのデータ２０を獲得する必要はなく、代わりに、特定のオフセットから数キロバイトの必要とされるデータ２０のみを獲得すればよい。さらに、そのような状況では、ゴースト化ファイル１４を一部だけ再構成することによって、相当な量の不必要なデータ２０をシンク１８からソース１０に転送する必要が回避され、それを行うのに必要とされる帯域幅がそれに応じて削減される。
【００６０】
ゴースト化ファイル１４を一部だけ再構成することによって、アプリケーション３０は、ファイル１４の完全な再構成をトリガせずに、必要であればファイルの数バイトのみを読み取ることができる。したがって、例えば、ビデオファイル１４の最初のフレームのみが必要とされる場合、シンク１８のファイル１４のデータ２０から、そのような最初のフレームが獲得され、１０ギガバイトまたは１００ギガバイトのオーダにさえなり得るゴースト化ファイル１４の全量のデータ２０は獲得されない。その場合、部分的再構成は、アプリケーション３０からの特定のｒｅａｄ要求を満たすのに必要なだけ、シンク１８のゴースト化ファイル１４のデータ２０をフェッチし、それ以上はフェッチしない。
【００６１】
ゴースト化ファイル１４を部分的に再構成する場合、シンク１８から獲得されるデータ２０の部分は、そのようなシンク１８から実際に削除される場合も、または削除されない場合もあり得る。一方では、獲得されるそのような部分は、ソース１０に保存され、したがって、もはやシンク１８で維持される必要はない。しかし、他方では、獲得された部分をシンク１８から実際に削除するには、さらなる労力が実際には必要とされることがある。さらに、例えば、シンクがハブサーバ１８であり、ソースが支店サーバ１０である場合など、少なくともいくつかの状況では、そのような獲得された部分は、その他のソース１０によるアクセスのためにシンク１８に留まり続けるべきである。
【００６２】
理解され得るように、ゴースト化ファイル１４が実際に部分的に再構成される場合、そのような部分がゴースト化ファイル１４内に存在するかどうかをゴースト化フィルタ２６が決定することができるように、ゴースト化ファイル１４のどの部分が実際に再構成されたかを書き留めるために、記録が維持されなければならない。したがって、本発明の一実施形態では、そのような記録が、そのようなゴースト化ファイル１４のメタデータ２２内のゴースト化情報２４において維持される。特に、再構成され、したがって、ゴースト化ファイル１４に存在する、ゴースト化ファイル１４のデータ２０の各連続セクションについて、ゴースト化情報２４は、セクションの開始を記述するオフセットと、そのようなセクションの連続量を記述する長さとを含む、セクション参照を含む。
【００６３】
典型的には、部分的再構成データ２０の上述の記録を含むゴースト化ファイル１４のゴースト化情報２４は、ゴースト化フィルタ２６によって維持される。上述されたように、そのようなゴースト化フィルタ２６は、ファイルシステム１６によって、ゴースト化ファイル１４のメタデータ２２内で、そのようなゴースト化情報２４を直接的に維持および更新することができるが、そのような維持および更新は、ファイルシステム１６によって実行されるその他の操作と干渉することがあり得る。したがって、ゴースト化ファイル１４を操作中のゴースト化フィルタ２６は、代わりに、そのようなメタデータ２２からそのようなゴースト化情報２４を最初に獲得し、図６のステップ６０９でゴースト化ファイル１４に関連して生成されたバッファに、そのようなゴースト化情報２４を保存し、その後、ゴースト化ファイル１４を操作中に、そのようなゴースト化情報２４を維持および更新し、完了時に、そのようなゴースト化情報２４をバッファからゴースト化ファイル１４のメタデータ２２に書き込む。
【００６４】
時々、ゴースト化ファイル１４の部分的再構成は、例えば、ソース１２における電力またはネットワーク接続の喪失によって、中断されることがあり得ることに留意されたい。同様に、電力が失われ、バッファが揮発性ＲＡＭなどに維持されている場合は特に、ゴースト化ファイル１４用のバッファが失われる場合もあり得る。そのような状況では、維持および更新されたゴースト化情報２４は、バッファからファイル１４のメタデータ２２に書き込まれずに失われるが、実際には、そのようなゴースト化情報２４が失われるばかりでなく、そのようなゴースト化情報２４がなければ、部分的再構成データ２０は発見することができないので、物理的にはソース１０に存在するとしても、それに関連するすべての部分的再構成データ２０も失われる。したがって、本発明の一実施形態では、維持および更新されたそのようなゴースト化情報２４は、例えば、毎分に１回など、定期的にバッファからファイル１４のメタデータ２２に書き込まれる。したがって、高々１分間ほどのそのようなゴースト化情報２４およびそれに関連する部分的再構成データ２０が、バッファの喪失が原因で失われることがあり得る。
【００６５】
本発明の一実施形態では、ゴースト化ファイル１４は、そのようなゴースト化ファイル１４のデータ２０を要求するアプリケーション３０からの適切なコマンドに基づいて、一部だけが再構成される。したがって、そのようなアプリケーション３０は、特定のファイル１４のゴースト化属性が設定されているかどうかを決定して、そのようなファイル１４が実際にゴースト化されているかどうかを決定するために、最初にファイルシステム１６をチェックしなければならず、ゴースト化されている場合、アプリケーション３０は、適切なコマンドによって、そのようなゴースト化ファイル１４のデータ２０の１つまたは複数の部分の部分的再構成を要求することができる。
【００６６】
部分的再構成を考慮して、本発明の一実施形態では、図６のステップ６１１で与えられるような、ゴースト化ファイル１４に関するｒｅａｄコマンドに応答するゴースト化フィルタ２６は、最初に対応するバッファに保存されたそのようなゴースト化ファイル１４のゴースト化情報２４内のセクション参照を調べ、次に要求されたデータ２０またはその一部がソース１０のゴースト化ファイル１４内にすでに存在するかどうかをセクション参照から決定することによって、ｒｅａｄコマンドに応答する。要求されたデータ２０のすべてが実際に存在する場合、そのようなデータ２０は、シンク１８からそのようなデータ２０を獲得する必要なしに、ソース１０のゴースト化ファイル１４から読み取られる。要求されたデータ２０の一部のみが存在する場合、データ２０のそのような存在する一部は、シンク１８からそのようなデータ２０を獲得する必要なしに、ソース１０のゴースト化ファイル１４から読み取られ、データ２０の残りは、シンク１８から獲得され、その後、上述のように読み取られる。要求されたデータ２０がまったく存在しない場合、そのようなデータ２０のすべてが、シンク１８から獲得され、その後、上述のように読み取られる。
【００６７】
要約するために、次に図７を参照すると、部分的再構成が必要とされ得る、ゴースト化ファイル１４をオープンするためのアプリケーション３０からのコマンドに応答して（ステップ７０１）、ゴースト化フィルタ２６は、ステップ６０９でのように、ゴースト化ファイル１４に対応するバッファおよびハンドルをやはり生成し、アプリケーション３０からのｏｐｅｎコマンドに対する（正常）応答として、アプリケーション３０にハンドルを送り届ける（ステップ７０３）。加えて、ゴースト化フィルタ２６は、最初にゴースト化ファイル１４のメタデータ２２からゴースト化情報２４を獲得し、そのようなゴースト化情報２４を生成されたバッファに保存する（ステップ７０５）。
【００６８】
以前のように、ゴースト化フィルタ２６からのゴースト化ファイル１４のハンドルを用いて、アプリケーション３０は、ステップ６１１でのように、ボリューム１２上の特定のゴースト化ファイル１４のデータ２０の部分に対するｒｅａｄコマンドを発行し、そのようなｒｅａｄコマンドは、ハンドルを含み、また部分のオフセットおよび長さを定義する（ステップ７０７）。ここでは、ｒｅａｄコマンドに応答して、ゴースト化フィルタ２６は、ゴースト化ファイル１４用のバッファ内のゴースト化情報２４に基づいて、定義されたそのような部分が少なくとも部分的に、ソース１０に存在するゴースト化ファイル１４内にすでに存在するかどうかを決定する（ステップ７０９）。そのような決定を行うことは、当業者に知られ、または明らかであり、したがって、本明細書で詳細に説明される必要はない。したがって、そのような決定を行う方法が、本発明の主旨および範囲から逸脱することなく、利用されることができる。
【００６９】
やはり、データ２０の部分のすべてが実際に存在する場合、そのようなデータのそのような部分は、シンク１８から獲得される必要はない（ステップ７１１ａ）。データ２０の部分の一部だけが存在する場合、データ２０の部分の残りが、シンク１８から獲得される（ステップ７１１ｂ）。データ２０の部分がまったく存在しない場合、データ２０のそのような部分のすべてが、シンク１８から獲得される（ステップ７１１ｃ）。重要なこととして、ステップ７１１ｂまたは７１１ｃでのように、シンク１８からデータ２０のいずれかの部分が獲得される際、ゴースト化フィルタ２６は、データ２０の部分が今ではゴースト化ファイル１４と共に存在し、ゴースト化ファイル１４に再構成されていることを適切に反映するように、バッファに保存されたゴースト化ファイル１４のゴースト化情報２４を更新する（ステップ７１３）。いずれにしても、今ではソース１０に存在するデータ２０の要求された部分を用いて、そのような要求された部分は、今では実際に、ステップ６１９でのように、アプリケーション３０によって読みとることができる（ステップ７１５）。
【００７０】
上で説明されたように、ゴースト化フィルタ２６は、バッファの喪失が起こった場合に、ゴースト化情報２４およびそれに関連する部分的再構成データ２０がすべて失われないように、そのようなゴースト化情報２４を最新の形式でバッファからファイル１４のメタデータ２２に定期的に書き込む（ステップ７１７）。加えて、例えば、アプリケーション３０のコマンドなどで、ゴースト化ファイル１４がクローズされた後（ステップ７１９）、ゴースト化フィルタ２６は、もちろんゴースト化ファイル１４が完全には再構成されていないことを想定して、ゴースト化情報２４を最新の形式でバッファからファイル１４のメタデータ２２に書き込むことによって、バッファを処分する（ステップ７２１）。したがって、最新の形式をとるそのようなゴースト化情報２４は、ステップ７０５でのように、ある後の時点で取り出されることができる。
【００７１】
部分的再構成ゴースト化ファイル１４の高速読み取り
アプリケーション３０は、ゴースト化ファイル１４に関してｒｅａｄコマンドを発行する際、ゴースト化ファイル１４の状態を考慮せず、特に、ゴースト化ファイル１４がすでに部分的に再構成されているかどうか、および／またはすでに部分的再構成の処理中にあるかどうかを考慮しない。すなわち、次に図８を参照すると、ゴースト化ファイル１４に関する特定のｒｅａｄコマンドが、データ２０の特定の部分を指定し、そのような特定の部分が、すでにゴースト化ファイル１４内に存在するデータ２０を含む第１のセグメントと、シンク１８からゴースト化ファイル１４にコピーされている最中のデータ２０を含む第２のセグメントと、ゴースト化ファイル１４内に存在せず、代わりに、シンク１８にのみ保存されているデータ２０を含む第３のセグメントとに対応する場合があり得る。
【００７２】
理解され得るように、そのようなｒｅａｄコマンドが、データ２０の特定の部分のすべてがシンク１８からゴースト化ファイル１４にコピーされるように処理される場合、そのような処理は、そのような特定の部分に対応する少なくとも第１および第２のセグメントに関して重複があり、無駄である。特に、やはり理解され得るように、第１のセグメントに対応するデータ２０のコピーは、そのようなデータ２０がすでにゴースト化ファイル１４内に存在するので不必要であり、第２のセグメントに対応するデータ２０のコピーは、そのようなデータ２０がすでにシンク１８からゴースト化ファイル１４にコピーされている最中であるので不必要である。実際には、第３のセグメントに対応するデータ２０のみが、そのようなデータ２０はゴースト化ファイル１４内に存在せず、そのようなゴースト化ファイル１４にコピーされるようにまだ要求されていないので、シンク１８からゴースト化ファイル１４にコピーされる必要がある。
【００７３】
本発明の一実施形態では、その場合、ゴースト化フィルタ２６は、最初にデータ２０のそのような特定の部分に関して、すでに存在するゴースト化ファイル１４内の対応するセグメント（すなわち、第１のセグメント）と、すでに処理中であるゴースト化ファイル１４内の対応するセグメント（すなわち、第２のセグメント）と、存在もせず、処理中でもないゴースト化ファイル１４内の対応するセグメント（すなわち、第３のセグメント）とを識別し、その後、そのような第３のセグメントのみを実際に獲得することによって、データ２０の特定の部分に対するそのようなｒｅａｄコマンドを処理する。実際には、その場合、ゴースト化フィルタ２６は、シンク１８から実際に読み取る必要のないすべてのセグメントを、ｒｅａｄコマンドから取り除く。そのような取り除きアクションを実行することによって、ｒｅａｄコマンドは、より高速に処理され、それは、そのような「高速読み取り」は、実際に必要とされるデータ２０のみをシンクから獲得し、ゴースト化ファイル１４内にすでに存在するデータ２０または処理中のデータ２０は獲得しないためである。すなわち、ゴースト化フィルタ２６によって実行される高速読み取りは、アプリケーション３０からのｒｅａｄコマンドに対してより高速な応答をもたらし、それに付随して、そのようなｒｅａｄコマンド用に必要とされる帯域幅の量を低減する。
【００７４】
本発明の一実施形態では、ゴースト化フィルタ２６は、すでに存在するゴースト化ファイル１４内の各第１のセグメントを、そのようなゴースト化ファイル１４のために維持されるゴースト化情報２４を参照して識別する。上で説明されたように、そのようなゴースト化情報２４は、そのようなゴースト化ファイル１４のためのメタデータ２２内に配置されるものとして参照されることができ、またはそのようなゴースト化ファイル１４に対応するバッファ内に配置されるものとして参照されることもできる。同様に、本発明の一実施形態では、ゴースト化フィルタ２６は、すでに処理中のゴースト化ファイル１４内の各第２のセグメントを、図６のステップ６１５ｂに関連して上で開示された処理中データリスト内の情報を参照して識別する。そのようなゴースト化情報２４および処理中データリストを参照するそのような第１および第２のセグメントの識別は、当業者に知られ、または明らかであり、したがって、本明細書で詳細に説明される必要はない。したがって、そのような識別は、本発明の主旨および範囲から逸脱することなく、任意の適切な方法で実行されることができる。
【００７５】
今では理解され得るように、第１および第２のセグメントが識別された後、残りが第３のセグメントであり、除去のプロセスによって、存在もせず、処理中でもないゴースト化ファイル１４のそのような第３のセグメントが識別される。もちろん、識別された後、そのような第３のセグメントは、実際にシンク１８に要求され、受け取られると、ゴースト化ファイル１４にコピーされる。要求されると、そのような各第３のセグメントは、実際には第２の処理中セグメントになることに留意されたい。受け取られ、ゴースト化ファイル１４にコピーされると、各第２のセグメントは、実際には第１の存在セグメントになることにも留意されたい。セグメントが第１のセグメントになると、そのような第１のセグメントは、アプリケーション３０からのｒｅａｄコマンドに応答して、実際にアプリケーション３０によって読み取られるように利用可能となることにも最後に留意されたい。
【００７６】
少なくともいくつかの状況では、アプリケーション３０は、ゴースト化ファイル１４内の特定のデータ２０に対するｒｅａｄコマンドを発行していないが、それにも関わらず、ゴースト化フィルタ２６は、ゴースト化フィルタ１４がその他の処理で占有されていなければ、そのようなｒｅａｄコマンドを予想して、そのようなデータ２０をシンク１８からゴースト化ファイル１４に移動するべきであることが理解されよう。単なる一例として、ゴースト化オーディオファイル１４、ゴースト化ビデオファイル１４、またはゴースト化マルチメディアファイル１４などのコンテンツをストリーミングする場合、特定の時間間隔Ｔ０におけるデータ２０に対するｒｅａｄコマンドには、次の時間間隔Ｔ１におけるデータ２０に対するｒｅａｄコマンドが続くと予想することは理にかなっている。そのような状況では、ゴースト化フィルタ２６は、その他の処理で占有されていなければ、アプリケーション３０からの特定のｒｅａｄコマンドを得ていなくても、時間間隔Ｔ１のためのそのようなデータ２０をシンク１８から獲得する機会を利用することができる。もちろん、それを行う際、ゴースト化フィルタ２６は、そのようなアクションを、上で説明されたような高速読み取りとして実行することができる。
【００７７】
要約するために、次に図９を参照すると、ゴースト化フィルタ２６は、以下のようにして、アプリケーション３０からのｒｅａｄコマンドに応答して、高速読み取りを実行する。事前に、ｒｅａｄコマンドは、アプリケーション３０から実際に受け取られ、そのようなｒｅａｄコマンドは、ゴースト化ファイル１４から読み取られるデータ３０の部分または範囲を指定する（ステップ９０１）。典型的には、やはり、そのような範囲は、データ３０に関するオフセットおよび長さとして表現される。
【００７８】
その後、ゴースト化フィルタ２６は、最初に、データ２０のそのような範囲内で、すでに存在するゴースト化ファイル１４内のデータ２０の対応する第１のセグメントを識別する（ステップ９０３）。やはり、そのような識別は、そのようなゴースト化ファイル１４のためのメタデータ２２内またはそのようなゴースト化ファイル１４に対応するバッファ内で、そのようなゴースト化ファイル１４のために維持される、ゴースト化情報２４を参照して実行される。識別された第１のセグメントが、データ２０の要求された範囲のすべてを含む場合、ゴースト化ファイル１４は、ｒｅａｄコマンドを満たすのに必要な程度にすでに再構成されており、したがって、そのようなｒｅａｄコマンドは、シンク１８からのデータ２０のさらなるコピーを行わず、また処理中のデータ２０を待つことなく、完了されることができる（ステップ９０５）。
【００７９】
しかし、識別された第１のセグメントが、データ２０の要求された範囲のすべてを含むわけではない場合、ゴースト化ファイル１４は、少なくとも処理中のデータ２０に基づいて、ｒｅａｄコマンドを満たすのに必要な程度に実際に再構成されなければならず、したがって、ゴースト化フィルタ２６は、第１のセグメントではないデータ２０の要求された範囲の各セグメントの範囲を含む第１の組を計算する（ステップ９０７）。その後、以前と同様に、ゴースト化フィルタ２６は、第１の組内で、処理中であるゴースト化ファイル１４内のデータ２０の対応する第２のセグメントを識別する（ステップ９０９）。やはり、そのような識別は、処理中データリストを参照して実行される。識別された第２のセグメントが、第１の組のすべてを含む場合、ゴースト化ファイル１４は、ｒｅａｄコマンドを満たすのに必要な程度に再構成されている最中であり、そのようなｒｅａｄコマンドは、すべての処理中のデータ２０が実際にゴースト化ファイル１４にコピーされた時に完了されることができる（ステップ９１１）。
【００８０】
今理解されるべきこととして、しかし、識別された第２のセグメントが、第１の組のすべてを含むわけではない場合、ゴースト化ファイル１４は、シンク１８からコピーされるデータ２０に基づいて、ｒｅａｄコマンドを満たすのに必要な程度に実際に再構成されなければならず、したがって、ゴースト化フィルタ２６は、第１のセグメントでなく、かつ第２のセグメントでもないデータ２０の要求された範囲の各セグメントの範囲を含む第２の組、すなわち、第３のセグメントを計算する（ステップ９１３）。その後、ゴースト化フィルタ２６は、第２の組／第３のセグメントがシンク１８からゴースト化ファイル１４にコピーされるように要求する（ステップ９１５）。
【００８１】
時が経つにつれて、やはり、要求された各第３のセグメントは、第２の処理中セグメントになり、実際にコピーされた各第２のセグメントは、第１の存在セグメントになり、ついには、すべてのコピーが完了する（ステップ９１７）。その後、ｒｅａｄコマンドの要求された範囲は、そのようなｒｅａｄコマンドに応答して、実際にアプリケーション３０によって読み取られるように利用可能となる（ステップ９１９）。
【００８２】
ファイル１４の再ゴースト化／ゴースト化
理解され得るように、再構成または部分的に再構成されたゴースト化ファイル１４は、ある時点で、例えば、ソース１０において追加の領域が必要とされる場合に、再ゴースト化されることができる。加えて、やはり理解され得るように、ゴースト化されたことのないファイル１４も、同様に、ある時点で、類似の理由でゴースト化されることができる。
【００８３】
特に、ゴースト化ファイル１４が部分的もしくは完全に再構成された後、またはファイル１４がソース１０にインストールされた後、そのようなファイル１４が再ゴースト化またはゴースト化（これ以降「再ゴースト化」）されるまで、そのようなファイル１４は、そのような形式でソース１０に存在し続ける。そのような再ゴースト化は、例えば、ソース１０で領域が必要なことの決定、ファイル１４がかなりの期間にわたってアクセスされていないことの決定など、いくつかのイベントによってトリガされる。さらに、ファイル１４を再ゴースト化することによって、特に支店サーバ１０およびハブサーバ１８の環境では、ソース１０またはシンク１８のファイル１４に対する変更は、ファイル１４を最新に維持するために、それぞれシンク１８またはソース１０にレプリケートされることができる。
【００８４】
本発明の一実施形態では、ソース１０における再ゴースト化は、最終アクセス時刻、ボリューム上の残り空き領域、データへのアクセス頻度、および／またはどこかで生じたファイル１４に対する修正などの要因を計算に入れた再ゴースト化アルゴリズムに従って実行される。再ゴースト化アルゴリズムは、そのような要因を検討する際、目標として、再ゴースト化された後あまり時間を置かずに、ゴースト化ファイル１４が再び再構成される可能性を小さくするべきである。その結果、そのようなゴースト化および再ゴースト化のために必要な帯域幅は、減少しないにせよ、最小化されることができる。典型的には、必ずしも必要ではないが、再ゴースト化アルゴリズムは、ソース１０のアプリケーション３０によって、またはソース１０のゴースト化マネージャ２８によって実行されるが、その他のエンティティが、本発明の主旨および範囲から逸脱することなく、そのような再ゴースト化アルゴリズムを実行することもできる。
【００８５】
ソース１０のファイル１４を再ゴースト化するために利用される再ゴースト化アルゴリズムは、少なくとも部分的に構成可能な方針に基づいて定義されることができる。特に、そのような再ゴースト化アルゴリズムは、構成可能な方針に少なくとも部分的に基づいて、トリガされることができ、そのような再ゴースト化アルゴリズムは、構成可能な方針に少なくとも部分的に基づいて、特定のファイル１４を再ゴースト化することを決定することができる。場合毎に、そのような方針は、ソース１０のユーザによって、またはソース１０の管理者などによって構成されることができる。
【００８６】
再ゴースト化アルゴリズムに関連して利用される可能なトリガパラメータは、
−所定の期間が経過した時に起動される周期的トリガ、
−ソース１０のボリューム１２の空き領域がある量を下回った時、またはソース１０のボリューム１２の使用中領域がある量を上回った時に起動される領域トリガ、
−ソース１０の空き領域がある量を下回っている場合、またはソースの使用中領域がある量を上回っている場合に限って、所定の期間が経過した時に起動される周期的−領域トリガ、
−ボリューム１２が残り空き領域を持たないことを通知するためにファイルシステム１６によってボリューム満杯エラーが返されたことをゴースト化フィルタ２６が認識した時に起動されるボリューム満杯トリガ、
−所定の数のバイトがソース１０にダウンロードされた時に起動されるバイトダウンロードトリガ、
−ユーザまたは管理者などによって起動されることができる手動トリガ、
を含むが、これらに限定されない。もちろん、再ゴースト化アルゴリズムのトリガは、そのようなトリガの１つに基づいて、またはそのようなトリガの組合せに基づいて生じることができる。
【００８７】
特定のファイル１４を再ゴースト化するかどうかを決定するための可能な選択要因は、
−ファイル１４が最後にアクセスされた時刻、それによって、より古いアクセス時刻を有するファイル１４が優先的に再ゴースト化され得る、
−ファイル１４に関連するダウンロード時刻、それによって、より古いダウンロード時刻を有するファイル１４が優先的に再ゴースト化され得る、
−ファイル１４のファイルサイズ、それによって、より大きなファイル１４が優先的に再ゴースト化され得る、
−ファイル１４のファイルタイプ、それによって、特定の拡張子を有するファイル１４が優先的に再ゴースト化され得る、
−ファイル１４のファイル属性、それによって、例えば、システムファイルであるファイル１４は再ゴースト化されないが、隠しファイルであるファイル１４は再ゴースト化される、
−複数の同様のファイル１４が存在するかどうかの判定、それによって、同じと見なされたファイル１４が優先的に再ゴースト化され得る、
−ファイル１４がシンク１８において修正されたかどうかの判定、それによって、そのようなファイル１４は、最新ではないと見なされ得るデータ２０を除去するために再ゴースト化される、
−ファイル１４がソース１０で修正または生成されたかどうかの判定、それによって、そのようなファイル１４は、そのような修正／生成を保存するために、再ゴースト化のために選択されなくてよく、またはそのような修正／生成をシンク１８にコピーするために、再ゴースト化のために選択されてもよい、
−特定の期間におけるファイル１４へのアクセス頻度、
−特定の期間におけるファイル１４へのアクセス回数、
−例えば、同じフォルダ内、同じコンテンツセット内などのその他の関連ファイル１４のアクセス頻度／アクセス回数／最終アクセス時刻、
−例えば、リスト、メソッド、ＸＭＬファイルなどによる、優先的に再ゴースト化される特定のファイルまたは特定のタイプのファイルについての外部入力、
を含むが、これらに限定されない。もちろん、再ゴースト化アルゴリズムは、単一の選択要因、またはそのような選択要因の組合せを利用することができる。
【００８８】
再ゴースト化のために選択されたファイル１４は、実際に再ゴースト化されてもよく、または代わりに、優先再ゴースト化の候補として単に指定されるだけでもよい。特に後者の場合、再ゴースト化は、特定のストップトリガに到達して初めて、実行されることができる。理解され得るように、そのようなストップトリガは、再ゴースト化セッションを開始したトリガパラメータに対応することができ、再ゴースト化の候補ファイル１４を選択するための基準に対応することができ、または本発明の主旨および範囲から逸脱することなく、別のトリガとすることもできる。
【００８９】
あるストップトリガに到達して初めて、再ゴースト化が実行される場合には、再ゴースト化される候補であるファイル１４に関する選択基準に応じて、そのようなファイル１４の再ゴースト化を片付けるのが適当であることがある。例えば、候補ファイル１４が、ソース１０において、少なくとも２週間以前の最終アクセス日時を有することに基づいて選択される場合、最初に２ヶ月以前の最終アクセス日時を有するそのような候補のすべてを再ゴースト化し、次に必要であれば１ヶ月以前の最終アクセス日時を有するそのような候補のすべてを再ゴースト化し、次に必要であれば３週間などというように進め、最後にストップトリガが起動されるようにするのが適当であることがある。同様に、候補ファイル１４が、１０メガバイトの最小ファイルサイズを有することに基づいて選択される場合、最初に１ギガバイトより大きいファイルサイズを有するそのような候補のすべてを再ゴースト化し、次に必要であれば１００メガバイトより大きいファイルサイズを有するそのような候補のすべてを再ゴースト化し、次に必要であれば５０メガバイトなどというように進め、最後にストップトリガが起動されるようにするのが適当であることがある。理解され得るように、どちらのシナリオでも、いくつかの処理は、候補ファイル１４のリストを生成し、リストをソートし、再ゴースト化の１つまたは複数のラウンドを生成することなどを要求される。
【００９０】
再ゴースト化は、特にファイル１４の異なるバージョンがソース１０およびシンク１８に配置され得る状況で、両方の場所のファイル１４の一貫性を維持するために利用され得ることにも留意されたい。したがって、ファイル１４がソース１０で再構成され、ソース１０のデータ２０は修正されるが、シンク１８の対応するデータ２０は修正されない場合、シンク１８のデータ２０をソース１０のデータで置き換えるために、再ゴースト化が実行されることができる。同様に、ソース１０のファイル１４のデータ２０は修正されないが、シンク１８の対応するデータ２０は修正される場合、ソース１０のそのようなデータ２０を削除するためだけに、再ゴースト化が実行されることができ、これは、そのようなファイルの後の再構成が、シンク１８のデータ２０をソース１０にコピーすることを期待してのものである。もちろん、ソース１０のファイル１４のデータ２０が修正され、シンク１８の対応するデータ２０も修正される場合、競合が存在しており、したがって、ファイル１４を再ゴースト化するかどうか、するならば、どのように再ゴースト化するかを決定するために、適切な競合ルールが参考にされることができる。
【００９１】
要約するために、次に図１０を参照すると、ボリューム１２上のファイル１４の再ゴースト化は、再ゴースト化アルゴリズムに従って実行されることができ、そのような再ゴースト化アルゴリズムは、以下のようにして、いくつかのエンティティによって実行される。準備として、再ゴースト化アルゴリズムが、何らかのイベントによってトリガされ（ステップ１００１）、そのようなトリガは、エンティティによって内部的に生成されてよく、またはそのようなエンティティによって外部から受け取られてもよい。そのようなトリガが生じると、再ゴースト化アルゴリズムは、何らかの選択基準に基づいて、完全または部分的に再構成されたファイル１４およびゴースト化されたことのないファイル１４の中からファイル１４を選択する（ステップ１００３）。
【００９２】
この時点で、再ゴースト化アルゴリズムは、選択されたファイル１４を再ゴースト化することによって、単に開始することができ（ステップ１００５）、または代わりに、可能な再ゴースト化のための候補ファイル１４であると、選択されたファイル１４を見なすこともできる（ステップ１００７）。後者の場合、ストップトリガが起動されるまで１つまたは複数のラウンドで再ゴースト化を行うために、その後、候補ファイル１４が選択される。特に、ラウンド毎に、候補ファイル１４のグループが選択され（ステップ１００９）、そのような選択されたグループが再ゴースト化され（ステップ１０１１）、ストップトリガが起動されたかどうか決定が下される。ストップトリガが起動された場合、プロセスは終了する（ステップ１０１３）。起動されていない場合、プロセスは、別のグループを選択するために、ステップ１００９に戻ることによって続けられる（ステップ１０１５）。
【００９３】
汎用ゴースト化
本明細書でこれまで説明してきたように、特定のソース１０でゴースト化されるすべてのファイル１４は、ファイルのデータ２０が単一のシンク１８に存在するように、特にゴースト化される。しかし、理解され得るように、特定のソース１０の各ゴースト化ファイル１４のデータ２０は、図１１に示されるように、複数のそのようなシンク１８のいずれかに存在することができる。
【００９４】
特に、理解され得るように、本発明のゴースト化フィルタ２６は、単一のゴースト化マネージャ２８と共に機能して、データ２０をファイル１４から単一のシンク１８にゴースト化するように必ずしも制限される必要はない。代わりに、ゴースト化フィルタは、実際には複数のゴースト化マネージャ２８と共に機能することができ、そのような各ゴースト化マネージャ２８は、複数のシンク１８の特定の１つに関するゴースト化機能を実行する。
【００９５】
支店サーバ１０およびハブサーバ１８の環境では、例えば、特定の支店サーバ１０は、複数のハブサーバ１８とインタフェースをとることができる。したがって、特定の支店サーバ１０とインタフェースをとる１つのハブサーバ１８は、第１のソースからのデータ２０を有し、そのような特定の支店サーバ１０とインタフェースをとる別のハブサーバ１８は、第２のソースからのデータ２０を有することがあり得る。同様に、コンピューティング装置１０と代替ロケーション１８の環境では、例えば、特定のコンピューティング装置１０は、複数の代替ロケーションにデータ２０を保存することができる。したがって、特定のコンピューティング装置１０用の１つの代替ロケーション１８は、第１の特定のタイプのファイル１４からのデータ２０を保存するように指定され、特定のコンピューティング装置１０用の別の代替ロケーション１８は、第２の特定のタイプのファイル１４からのデータ２０を保存するように指定される。もちろん、利用されるシンク１８の数、およびそのようなシンク１８の間にデータ２０を分配する基準は、本発明の主旨および範囲から逸脱することなく、任意の適切な数および基準とすることができる。
【００９６】
いずれにしても、複数のシンク１８が、特定のソース１８と共に利用される場合、どのシンク１８が、そのようなソース１０の特定のゴースト化ファイル１４からのデータ２０を有するかを識別し、どの対応するゴースト化マネージャ２８が、そのようなシンク１８にアクセスするために利用されなければならないかを識別するための、メカニズムが必要とされる。したがって、本発明の一実施形態では、そのような識別情報は、図１１に示されるように、そのような特定のファイル１４に関連するゴースト化情報２４内に維持される。
【００９７】
結果として、ゴースト化フィルタ２６は、特定のゴースト化ファイル１４と遭遇し、ゴースト化ファイルからゴースト化情報２４を読み取ると、そのようなゴースト化情報２４から、そのような特定のゴースト化ファイル１４と関連して利用されるゴースト化マネージャ２８の識別情報を獲得することができ、識別情報に基づいて、必要に応じてそのような識別されたゴースト化マネージャ２８と通信し、そのようなシンク１８にアクセスすることができる。実際には、その場合、ゴースト化フィルタ２６は、ゴースト化マネージャ２８のすべてにとって汎用的であり、ゴースト化フィルタ２６は、そのような特定のゴースト化ファイル１４に関連して、その他のどのゴースト化マネージャ２８とも通信すべきではないので、識別されたゴースト化マネージャ２８が、そのような特定のゴースト化ファイル１４を管理または「所有」する。
【００９８】
仮定上、各ゴースト化マネージャ２８は、ゴースト化フィルタ２６がシンクとの通信に関与する必要がないように、対応するシンク１８と通信するのに必要なすべての機能および情報を含む。その場合、ゴースト化フィルタ２６にとって、特定のゴースト化ファイル１４に関連する識別されたゴースト化マネージャ２８との通信が、対応する１８にアクセスするために必要とされるすべてであり、そのようなゴースト化フィルタ２６は、そのような識別されたゴースト化マネージャ２８がそのような対応するシンク１８とどのように通信するか、またはそのような識別されたゴースト化マネージャ２８がそのような対応するシンク１８をどのように発見するかなどに実際に関与する必要はない。
【００９９】
図４および図５に示されたプロセスと同様に、次に図１２を参照すると、ファイル１４の汎用ゴースト化および再構成は、以下のように実行される。仮定上、そのようなゴースト化は、特定の識別情報（ＩＤ）を有する特定のゴースト化マネージャ２８によって開始され、実際にはゴースト化フィルタ２６によって実行され、したがって、そのようなゴースト化マネージャ２８は、ＩＤとゴースト化されるファイル１４の識別情報とを含む適切なゴースト化要求（ｇｈｏｓｔｉｎｇ  ｒｅｑｕｅｓｔ）をゴースト化フィルタ２６に送り（ステップ１２０１）、その後、ゴースト化フィルタ２６は、必要に応じて、ファイル１４からデータ２０を除去する（ステップ１２０３）。その後、ゴースト化フィルタ２６は、必要に応じて、そのような除去されたデータ２０を、要求しているゴースト化マネージャのＩＤによってこの要求しているゴースト化マネージャ２８に転送し（ステップ１２０５）、その後、そのようなゴースト化マネージャ２８は、そのようなゴースト化マネージャ２８と共に含まれるプロトコルがどのようなものであれ、そのプロトコルに基づいて、そのような除去されたデータを対応するシンク１８に転送することができる。
【０１００】
この点に関して、シンク１８およびファイル１４のタイプに応じて、例えば、シンク１８が問題のファイル１４をソース１０に読み取り専用方式でレプリケートする場合など、ゴースト化マネージャ２８は、実際にはそのような除去されたデータをシンク１８に送らないことを選択し得ることに留意されたい。もちろん、そのような場合、ゴースト化マネージャ２８からのゴースト化要求が、不必要であるのでステップ１２０５を実際には実行しないようにゴースト化フィルタに通知することがあり得る。
【０１０１】
いずれにしても、以前のように、ゴースト化フィルタ２６は、「ゴースト化」属性を設定し、ゴースト化情報２４を追加することによって、ゴースト化中ファイルのメタデータ２２を修正する（ステップ１２０７）。重要なこととして、そのようなゴースト化情報は、後でゴースト化ファイル１４を再構成する時に使用するための、ゴースト化マネージャ２８のＩＤを含むべきである。したがって、その後、ゴースト化マネージャ２８またはアプリケーション３０がそのようなゴースト化ファイル１４のデータ２０へのアクセスを要求した時に、要求は、上で説明されたように、最終的にゴースト化フィルタ２６に到達し（ステップ１２０９）、そのようなゴースト化フィルタ２６は、ファイル１４のメタデータ２２内でゴースト化情報２４を発見する（ステップ１２１１）。
【０１０２】
やはり、シンク１８に保存されたファイル１４のデータ２０は、そのような識別されたゴースト化情報２４に基づいて発見されるが、この場合、ゴースト化フィルタ２６は、最初にそのようなゴースト化情報２４内でそのようなゴースト化ファイル１４を担当するゴースト化マネージャ２８のＩＤを発見し（ステップ１２１３）、そのようなＩＤを用いて、実際にそのようなデータ２０を対応するシンク１８から獲得するための要求を対応するゴースト化マネージャ２８に伝達する（ステップ１２１５）。仮定上、そのようなゴースト化マネージャ２８は、実際にそのようなデータ２０をそのようなシンク１８から獲得し、そのようなデータ２０をゴースト化フィルタ２６に供給し（ステップ１２１７）、その後、そのようなゴースト化フィルタは、そのようなデータ２０を問題のファイル１４に再構成する（ステップ１２１９）。
【０１０３】
結論
本発明に関連して実行されるプロセスを実施するのに必要なプログラミングは、相対的に簡単であり、当業者には明らかである。したがって、そのようなプログラミングは、本明細書に添付されない。その場合、任意の特定のプログラミングが、本発明の主旨および範囲から逸脱することなく、本発明を実施するために利用されることができる。
【０１０４】
上述の説明において、ローカルボリューム１２、コンピューティング装置１０、または支店サーバ１０などのソース１０のファイル１４が、ファイル１４のデータ２０が代替ロケーション１８またはハブサーバ１８などのシンク１８に保存され、したがって、ソースのファイル１４が必要に応じて再構成され得る縮小またはゴースト化形式をとるように、レプリケートまたはゴースト化され得る、新しい有用な方法およびメカニズムを本発明が含むことが理解される。ゴースト化ファイル１４は、必要に応じて、形成または再構成されることができる。
【０１０５】
本発明の主旨および範囲から逸脱することなく、上で説明された実施形態に変更が施され得ることを理解されたい。したがって、一般に、本発明は、開示された特定の実施形態に限定されず、添付の特許請求の範囲によって確定される本発明の主旨および範囲内の修正を包含することが意図されていることを理解されたい。
【図面の簡単な説明】
【０１０６】
【図１】本発明の態様および／またはその一部がその中で具体化され得る汎用コンピュータシステムを表すブロック図である。
【図２】本発明の実施形態による、ゴースト化ファイルのデータがシンクに保存されるように、ソースにおいてゴースト化されるファイルを示すブロック図である。
【図３Ａ】本発明の実施形態による、データのみがシンクに保存される、図２のファイルおよびデータを示すブロック図である。
【図３Ｂ】本発明の実施形態による、ファイル全体がシンクに保存される、図２のファイルおよびデータを示すブロック図である。
【図４】本発明の一実施形態による、図２のシンクにファイルをゴースト化する際に実行される主要ステップを示すフローチャートである。
【図５】本発明の一実施形態による、図２のシンクからゴースト化ファイルを再構成する際に実行される主要ステップを示すフローチャートである。
【図６】本発明の一実施形態による、図２のシンクからゴースト化ファイルを再構成する際に実行される主要ステップをより詳細に示すフローチャートである。
【図７】本発明の一実施形態による、図２のシンクからゴースト化ファイルを部分的に再構成する際に実行される主要ステップを示すフローチャートである。
【図８】本発明の一実施形態による、図２のファイルのデータに関する様々なステータスを示すブロック図である。
【図９】本発明の一実施形態による、図８で説明された部分のデータのセグメントのステータスに基づいて、図２のシンクからゴースト化ファイルの少なくとも一部を効率的に再構成する際に実行される主要ステップを示すフローチャートである。
【図１０】本発明の一実施形態による、ファイルを図２のシンクに再ゴースト化する時に実行される主要ステップを示すフローチャートである。
【図１１】本発明の一実施形態による、ソースが単一の汎用ゴースト化フィルタと、各シンクに対応するゴースト化マネージャとを有することによって、複数のシンクに関連付けられた図２のソースを示すブロック図である。
【図１２】本発明の一実施形態による、ソースのファイルをゴースト化および再構成する際に図１１のゴースト化フィルタによって実行される主要ステップを示すフローチャートである。
【図１】
2009501390.tif 000003
【図２】
2009501390.tif 000004
【図３Ａ】
2009501390.tif 000005
【図３Ｂ】
2009501390.tif 000006
【図４】
2009501390.tif 000007
【図５】
2009501390.tif 000008
【図６】
2009501390.tif 000009
【図７】
2009501390.tif 000010
【図８】
2009501390.tif 000011
【図９】
2009501390.tif 000012
【図１０】
2009501390.tif 000013
【図１１】
2009501390.tif 000014
【図１２】
2009501390.tif 000015
【国際調査報告】
2009501390.tif 000016