(57)【要約】【課題】イメージファイル形式、ならびにイメージファイルを作成し、復元するための方法を提供すること。【解決手段】イメージファイル形式は、制御ストリーム、データストリーム、ビットマップストリーム、およびクラスタマップストリームなどの複数のストリームを含む。また、監査証跡ストリーム、プロパティストリーム、および修正ストリームも提供されることが可能である。本発明により、記憶媒体の内容をイメージファイルとしてキャプチャし、記憶することが可能になる。イメージファイルは、記憶媒体を以前の状態に復元するのに使用されるか、または複数のコンピュータが共通の構成を備えることを可能にする。さらに、以上の複数のストリームにより、イメージファイルを閲覧すること、編集すること、または別の仕方で操作することが可能になる。【選択図】　　　　図３
2004038979.tif 000002
【特許請求の範囲】
【請求項１】
ソース記憶媒体上に記憶されたソースデータから作成された複数のイメージストリームを含むイメージファイルを記憶している宛先記憶媒体であって、
前記イメージファイルを特定するデータを含む制御ストリームと、
前記ソースデータを含むデータストリームと、
前記ソース記憶媒体上の前記ソースデータの一部分の割振りに対応する第１の場所、および、前記データストリーム内のソースデータの前記一部分の場所に対応する第２の場所をそれぞれが特定する複数のレコードを含むクラスタマップストリームと、を備えていることを特徴とする宛先記憶媒体。
【請求項２】
請求項１に記載の宛先記憶媒体であって、
前記ソースデータは複数のファイルを有し、
固有ファイル識別子およびバージョンによって前記ソースデータの前記複数のファイルの少なくとも１つを特定するプロパティストリームを備えていることを特徴とする宛先記憶媒体。
【請求項３】
請求項１に記載の宛先記憶媒体であって、
前記ソースデータは複数のファイルを有し、
前記イメージファイルが作成された後に変更されたファイルをファイル識別子によって特定する監査証跡ストリームを備えていることを特徴とする宛先記憶媒体。
【請求項４】
前記ソースデータの少なくとも一部分が暗号化されることを特徴とする請求項１に記載の宛先記憶媒体。
【請求項５】
前記ソースデータの少なくとも一部分が圧縮されることを特徴とする請求項１に記載の宛先記憶媒体。
【請求項６】
前記制御ストリームは、前記ソース記憶媒体のジオメトリを特定することを特徴とする請求項１に記載の宛先記憶媒体。
【請求項７】
前記ソースデータは１組のデータをそれぞれが含む複数のファイルを含み、
各ファイルに関する前記１組のデータは、前記データストリーム内の連続する場所の中に記憶されることを特徴とする請求項１に記載の宛先記憶媒体。
【請求項８】
前記ソース記憶媒体の割振り済みクラスタおよび未割振りクラスタを特定するデータを含むビットマスクストリームを備えていることを特徴とする請求項１に記載の宛先記憶媒体。
【請求項９】
前記ビットマスクストリームは、前記ソース記憶媒体ボリューム上のクラスタにそれぞれが対応し、かつ、前記ソース記憶媒体ボリューム上の前記クラスタが割振り済みであるか又は未割振りであるかを明らかにする値をそれぞれが有する複数のビットを含むことを特徴とする請求項８に記載の宛先記憶媒体。
【請求項１０】
前記第１の場所は、前記イメージファイルが復元される際に記憶媒体ボリューム上にソースデータの前記一部分が置かれる一続きの連続ブロックを表わす開始クラスタおよび終了クラスタを含むことを特徴とする請求項１に記載の宛先記憶媒体。
【請求項１１】
前記第２の場所は、データの前記一部分を含む前記データストリーム内の開始位置を特定するオフセット、およびデータの前記一部分を含む前記データストリーム内の１組の連続する場所を特定する長さを含むことを特徴とする請求項１に記載の宛先記憶媒体。
【請求項１２】
ソースデータの前記一部分が圧縮され、かつ、前記第２の場所は、データの前記一部分を含む前記データストリーム内の開始位置を特定するオフセット及びデータの前記圧縮された一部分を含む前記データストリーム内の１組の連続する場所を特定するサイズを含むことを特徴とする請求項１に記載の宛先記憶媒体。
【請求項１３】
ソース記憶媒体ボリューム上の、複数のファイル及び当該複数のファイルのそれぞれに関するデータを含む前記ソース記憶媒体上の場所を特定する制御情報を含むソースデータから、宛先記憶媒体ボリューム上のイメージファイルを作成するための方法であって、
データストリームおよびクラスタマップストリームを含む複数のイメージストリームを生成するステップと、
前記制御情報を読み取り、前記ソース記憶媒体ボリューム上の少なくとも１つのファイルに関するデータの場所を特定するステップと、
前記少なくとも１つのファイルに関する前記データを読み取るステップと、
前記少なくとも１つのファイルに関する前記データを前記データストリームの中に書き込むステップと、
前記ソース記憶媒体ボリューム上の前記データの場所、および前記データストリーム内の前記データの場所を特定するクラスタマップレコードを生成するステップと、
前記クラスタマップレコードを前記クラスタマップストリームに追加するステップと、
前記複数のイメージストリームを前記宛先記憶媒体に書き込むステップと、を備えていることを特徴とするイメージファイルの作成方法。
【請求項１４】
前記複数のストリームは修正ストリームを含み、
前記ソース記憶媒体ボリューム上の前記データの新しい場所を特定するように前記制御情報および前記クラスタマップレコードを変更するステップを備えていることを特徴とする請求項１３に記載のイメージファイルの作成方法。
【請求項１５】
前記少なくとも１つのファイルに関する前記データを暗号化するステップを備えていることを特徴とする請求項１３に記載のイメージファイルの作成方法。
【請求項１６】
前記少なくとも１つのファイルに関する前記データを圧縮するステップを備えていることを特徴とする請求項１３に記載のイメージファイルの作成方法。
【請求項１７】
前記複数のファイルは、１組の同一のデータを含む少なくとも第１のファイルおよび第２のファイルを有し、
前記第１のファイルを前記データストリームに書き込むステップと、
前記データストリーム内の前記データの場所および前記ソース記憶媒体上の前記データの第１の場所を特定する前記第１のファイルに関する第１のクラスタマップレコードと、前記データストリーム内の前記データの場所および前記ソース記憶媒体ボリューム上の前記データの第２の場所を特定する前記第２のファイルに関する第２のクラスタマップレコードと、を作成するステップ、を備えていることを特徴とする請求項１３に記載のイメージファイルの作成方法。
【請求項１８】
前記少なくとも１つのファイルに関する前記データを前記データストリームの中に書き込むステップは、前記データを前記データストリーム内の連続する場所に書き込むステップを含み、かつ前記クラスタマップレコードは、前記ソース記憶媒体ボリューム上の前記データの連続する場所を特定することを特徴とする請求項１３に記載のイメージファイルの作成方法。
【請求項１９】
第２の記憶媒体上の、複数のレコードを含むクラスタマップ及び第１の記憶媒体ボリュームに復元されるべきデータを含むデータストリームを含むイメージファイルから、前記第１の記憶媒体にデータを復元するための方法であって、
前記イメージファイルから、前記データストリーム内の１組のデータの場所に対応する第１の場所及び前記第１の記憶媒体上の前記１組のデータに対する場所に対応する第２の場所を特定する前記複数のレコードの１つを読み取るステップと、
前記データストリームからの前記データを前記第１の場所から読み取るステップと、
前記データを前記第１の記憶媒体に前記第２の場所において書き込むステップと、を備えていることを特徴とするデータ復元方法。
【請求項２０】
前記データストリーム内の前記１組のデータが圧縮され、前記１組のデータを前記第１の記憶媒体に書き込む前に前記データを圧縮解除するステップを備えていることを特徴とする請求項１９に記載のデータ復元方法。
【請求項２１】
前記データストリーム内の前記１組のデータが暗号化され、
前記１組のデータを前記第１の記憶媒体に書き込む前に前記データを暗号化解除するステップを備えていることを特徴とする請求項１９に記載のデータ復元方法。
【請求項２２】
前記データを前記第１の記憶媒体に書き込むステップは、前記データを１組の連続するクラスタに書き込むステップを含んでいることを特徴とする請求項１９に記載のデータ復元方法。
【請求項２３】
前記復元されたデータは、記憶媒体ジオメトリとファイルの場所とを特定する制御情報を含み、
前記第１の記憶媒体のジオメトリに基づいて前記制御情報を変更するステップを備えていることを特徴とする請求項１９に記載のデータ復元方法。
【請求項２４】
コンピュータに、請求項１３乃至２３の何れかに記載の各ステップを実行させるためのプログラム。
【請求項２５】
コンピュータに、請求項２４に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータシステムに関し、一般的にはファイルシステム形式（ｆｏｒｍａｔ）に関する。より詳細には、本発明は、メモリ媒体の内容を記憶するためのイメージファイルに関する。
【０００２】
【従来の技術】
コンピュータシステムは、１つまたは複数の記憶媒体とインターフェースをとる。記憶媒体は、オペレーティングシステムファイル、アプリケーションプログラム、およびアプリケーションプログラムで使用されるデータファイルなどの様々なデータを記憶する。周知の記憶媒体のタイプには、ハードディスク、ＣＤ−ＲＯＭ、デジタルバーサタイルディスク（ＤＶＤ）等が含まれる。記憶媒体は、１つまたは複数のボリューム、つまりパーティションに論理的に細分される。記憶媒体は、複数のセクタにさらに物理的に細分される。各セクタは、複数のデータバイトを記憶することができる。クラスタは、一群のセクタであり、コンピュータで実行されているオペレーティングシステムが記憶媒体上の場所を特定するのに使用する最小単位を表わす。したがって、オペレーティングシステムは、通常、クラスタごとにクラスタ上で記憶媒体上のデータの記憶、または読取りを行う。
【０００３】
記憶媒体上のデータは、１組のファイル、およびディスク上のファイルを管理するのに使用される他の制御情報として編成される。例えば、各オペレーティングシステムファイル、アプリケーションプログラム、またはデータファイルは、記憶媒体上の異なるファイルを表わす。制御情報は、各ファイルに関するデータを含む記憶媒体上のクラスタを特定する。また、制御情報は、割り振られた、すなわち、ファイルに関するデータを含む記憶媒体上のクラスタ、および割り振られていないままの、すなわち、新しいデータを記憶するのに利用可能なクラスタも特定する。ファイルおよび制御情報が記憶媒体上で厳密にどのように編成されるかは、ファイルシステムに依存する。ファイルアロケーションテーブル１６（Ｆｉｌｅ　Ａｌｌｏｃａｔｉｏｎ　Ｔａｂｌｅ１６：ＦＡＴ１６）、ファイルアロケーションテーブル３２（ＦＡＴ３２）、およびニューテクノロジーファイルシステム（Ｎｅｗ　Ｔｅｃｈｎｏｌｏｇｙ　Ｆｉｌｅ　Ｓｙｓｔｅｍ：ＮＴＦＳ）などの様々な周知のファイルシステムが存在する。
【０００４】
【発明が解決しようとする課題】
イメージファイルは、ソース記憶媒体ボリューム上に記憶されたデータのコピーである。通常、イメージファイルは、ソース記憶媒体ボリュームに含まれるデータのセクタごとのコピーである単一のデータストリームである。イメージファイルは、宛先記憶媒体ボリューム上に記憶される。宛先記憶媒体ボリュームは、同一の記憶媒体上の異なるボリューム、つまり異なるパーティションであるか、あるいは別個の記憶媒体である。例えば、ハードディスクボリュームのセクタごとのコピーを表わすイメージファイルが、ＣＤ−ＲＯＭ上に記憶される。
【０００５】
イメージファイルは、少なくとも２つの機能のために使用される。第１に、イメージファイルは、ソース記憶媒体ボリュームをイメージファイルが作成された時点の状態に復元するのに使用される。したがって、記憶媒体ボリュームが損傷した場合、または壊れた場合、イメージファイルを使用してその記憶媒体ボリュームを復元することができる。第２に、イメージファイルは、複数のコンピュータシステムに同一の基本構成を提供するのに使用される。
【０００６】
イメージファイルは、ソース記憶媒体のセクタごとのコピーとして作成され、単一のデータストリームとして記憶されるため、イメージファイルを操作することは困難である。例えば、ソース記憶媒体ボリュームに関してイメージファイルが作成され、その記憶媒体ボリューム上のオペレーティングシステムファイルが後に、新しいバージョンで置き換えられた場合、その新しいオペレーティングシステムファイルを含むようにイメージファイルを容易に変更することはできない。代わりに、新しいイメージファイルを作成しなければならない。また、ユーザまたはシステム管理者が、異なるバージョンのイメージファイルを維持することを望む場合、それぞれの異なるバージョンに関して別個のイメージファイルを作成しなければならない。したがって、周知のイメージファイル形式は、リソースを多く使用し、その維持に高い費用がかかる。
【０００７】
本発明により、イメージファイル、ならびにイメージファイルを作成し、復元するための方法およびシステムが提供される。イメージファイルは、ソース記憶媒体ボリューム上のソースデータから作成される。イメージファイルは、宛先記憶媒体ボリューム上に記憶される。イメージファイルは、複数のイメージストリームを含む。イメージストリームには、制御ストリーム、データストリーム、ビットマップストリーム、およびクラスタマップストリームが含まれる。監査証跡ストリーム、プロパティストリーム、および修正ストリームなどのその他のイメージストリームが、オプションとしてイメージファイルの中に含められる。
【０００８】
【課題を解決するための手段】
本発明において、制御ストリームは、イメージファイルを一意的に特定するイメージファイルのヘッダを形成する。また制御ストリームは、ソース記憶媒体ボリュームジオメトリ（ｇｅｏｍｅｔｒｙ）、およびソース記憶媒体上に記憶されたオペレーティングシステムを特定するデータなどの、ソース記憶媒体ボリュームを特定するデータも含む。制御ストリームにより、イメージファイルを読み取る、復元する、編集するのに必要な情報が提供される。
【０００９】
また、データストリームは、ソース記憶媒体ボリューム上の複数のファイルのそれぞれに関するデータを含む。また、データストリームは、ソース記憶媒体ボリュームからの制御情報も含む。データストリーム内のデータは、オプションとして、圧縮されるか、または暗号化される。本発明の実施形態では、データストリーム内のデータは、イメージファイルが作成されたときにデフラグ（ｄｅｆｒａｇｍｅｎｔ）される。
【００１０】
また、ビットマップストリームは、ファイルに割り振られているソース記憶媒体上のクラスタ、および割り振られていないままのクラスタを特定する。ビットマップストリームは、オペレーティングシステムが新しいデータを記憶するのに利用可能なソース記憶媒体上の場所を特定するのを可能にする迅速なルックアップを提供することにより、イメージファイルを編集することを容易にする。
【００１１】
さらに、クラスタマップストリームは、ソース記憶媒体上の一群のデータの場所をデータストリーム内の場所に相関させる。プロパティストリームや監査証跡ストリームなどのオプションのイメージファイルストリームは、イメージファイル内にあるファイルのタイプを特定し、またイメージファイルに行われた編集を特定する。
【００１２】
本発明のさらなる特徴および利点は、添付の図を参照して行われる例示的な実施形態の以下の詳細な説明から明白となる。
【００１３】
本発明の特徴は特許請求の範囲により詳細に提示されるが、本発明、ならびに本発明の目的および利点は、添付の図面と併せて考慮される以下の詳細な説明からよく理解することができる。
【００１４】
【発明の実施の形態】
本出願は、Ｋａｒｔｉｋ　Ｒａｇｈａｖｅｎ、Ｓａｒａｈ　Ｓｃｈｕｍａｃｈｅｒ、ａｎｄ　Ｗｅｓｌｅｙ　Ｗｉｔｔが出願した「Ｍｅｔｈｏｄ　ａｎｄ　Ｓｙｓｔｅｍ　ｆｏｒ　Ｍａｎａｇｉｎｇ　Ｉｍａｇｅ　Ｆｉｌｅｓ（イメージファイルを管理するための方法およびシステム）」という名称の同時係属出願に関連し、本発明は、イメージファイル、ならびにイメージファイルを作成し、復元するための方法およびシステムを対象とする。イメージファイルは、制御（ｃｏｎｔｒｏｌ）ストリーム、データストリーム、ビットマップストリーム、クラスタマップストリーム、修正（ｆｉｘ−ｕｐ）ストリーム、ならびに、オプションとして、監査証跡（ａｕｄｉｔ　ｔｒａｉｌ）ストリームおよびプロパティストリームを含む複数のストリームを有する。データストリームは、ソース記憶媒体ボリュームからのソースデータを含む。制御ストリーム、ビットマップストリーム、クラスタマップストリーム、監査証跡ストリーム、およびプロパティストリームは、データストリーム内のソースデータに対するアクセスおよび編集を可能にする情報を含む。修正ストリームは、データストリーム内のデータの編成に基づいて複数のストリーム内の情報を更新する。
【００１５】
同様の符号が同様の要素を指している図面を参照すると、本発明が適切な計算環境において実施されているものとして示されている。必須ではないが、本発明は、パーソナルコンピュータによって実行される、プログラムモジュールなどの、コンピュータ実行可能命令の一般的な文脈で説明する。一般に、プログラムモジュールには、特定のタスクを行う、または特定の抽象データタイプを実装するルーチン、プログラム、オブジェクト、構成要素、データ構造等が含まれる。また、本発明は、タスクが、通信網を介してリンクされた遠隔の処理デバイスによって行われる分散計算環境において実施することも可能である。分散計算環境では、プログラムモジュールは、ローカルのメモリ記憶デバイスと遠隔のメモリ記憶デバイスの両方の中に配置されることが可能である。
【００１６】
図１は、本発明を実施することが可能な適切な計算システム環境１００の例を示している。計算システム環境１００は、適切な計算環境の一例に過ぎず、本発明の使用または機能の範囲について全く限定を示唆するものではない。また、計算環境１００が、例示的な動作環境１００に示した構成要素のいずれか１つ、またはいずれかの組合せに関連する何らかの依存性または要件を有するものと解釈してはならない。
【００１７】
本発明は、多数の他の汎用または特殊目的の計算システム環境または計算システム構成で動作する。本発明で使用するのに適する可能性がある周知の計算システム、計算環境、および／または計算構成の例には、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドデバイスまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラマブル家庭用電化製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、以上のシステムまたはデバイスの任意のものを含む分散計算環境等が含まれるが、以上には限定されない。
【００１８】
本発明は、コンピュータによって実行される、プログラムモジュールなどのコンピュータ実行可能命令の一般的な文脈で説明することが可能である。一般に、プログラムモジュールには、特定のタスクを行う、または特定の抽象データタイプを実装するルーチン、プログラム、オブジェクト、構成要素、データ構造等が含まれる。また、本発明は、タスクが、通信網を介してリンクされた遠隔の処理デバイスによって行われる分散計算環境において実施することも可能である。分散計算環境では、プログラムモジュールは、メモリ記憶デバイスを含むローカルのコンピュータ記憶媒体と遠隔のコンピュータ記憶媒体の両方の中に配置されることが可能である。
【００１９】
図１を参照すると、本発明を実施するための例示的なシステムが、コンピュータ１１０の形態で汎用計算デバイスを含んでいる。コンピュータ１１０の構成要素には、処理ユニット１２０、システムメモリ１３０、ならびにシステムメモリを含む様々なシステム構成要素を処理ユニット１２０に結合するシステムバス１２１が含まれる可能性があるが、以上には限定されない。システムバス１２１は、様々なバスアーキテクチャの任意のものを使用するメモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含むいくつかのタイプのバス構造の任意のものであることが可能である。例として、限定としてではなく、そのようなアーキテクチャには、インダストリスタンダードアーキテクチャ（Ｉｎｄｕｓｔｒｙ　Ｓｔａｎｄａｒｄ　Ａｒｃｈｉｔｅｃｔｕｒｅ：ＩＳＡ）バス、マイクロチャネルアーキテクチャ（Ｍｉｃｒｏ　Ｃｈａｎｎｅｌ　Ａｒｃｈｉｔｅｃｔｕｒｅ：ＭＣＡ）バス、エンハンストＩＳＡ（Ｅｎｈａｎｃｅｄ　ＩＳＡ：ＥＩＳＡ）バス、ビデオエレクトロニクススタンダーズアソシエート（ＶｉｄｅｏＥｌｅｃｔｒｏｎｉｃｓ　Ｓｔａｎｄａｒｄｓ　Ａｓｓｏｃｉａｔｅ：ＶＥＳＡ）ローカルバス、およびメザニン（Ｍｅｚｚａｎｉｎｅ）バスとしても知られるペリフェラルコンポーネントインターコネクト（Ｐｅｒｉｐｈｅｒａｌ　Ｃｏｍｐｏｎｅｎｔ　Ｉｎｔｅｒｃｏｎｎｅｃｔ：ＰＣＩ）バスが含まれる。
【００２０】
コンピュータ１１０は、通常、様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ１１０によってアクセス可能な任意の利用可能な媒体であることが可能であり、揮発性の媒体と不揮発性の媒体、取外し可能な媒体と取外し不可能な媒体がともに含まれる。例として、限定としてではなく、コンピュータ可読媒体は、コンピュータ記憶媒体および通信媒体を含むことが可能である。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータなどの情報を記憶するための任意の方法または任意の技術で実装される揮発性の媒体および不揮発性の媒体、取外し可能な媒体および取外し不可能な媒体がともに含まれる。コンピュータ記憶媒体には、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたは他のメモリ技術、ＣＤ−ＲＯＭ、デジタルバーサタイルディスク（ＤＶＤ）または他の光ディスクストーレッジ、磁気カセット、磁気テープ、磁気ディスクストーレッジまたは他の磁気記憶デバイス、あるいは所望の情報を記憶するのに使用することができ、コンピュータ１１０がアクセスすることができる任意の他の媒体が含まれるが、以上には限定されない。通信媒体は、通常、搬送波などの変調されたデータ信号、または他のトランスポート機構でコンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータを実体化し、あらゆる情報配信媒体が含まれる。「変調されたデータ信号」という用語は、信号に情報を符号化するような仕方で特性の１つまたは複数が設定または変更されている信号を意味する。例として、限定としてではなく、通信媒体には、有線ネットワークまたは直接配線接続などの有線媒体、ならびに音響媒体、ＲＦ媒体、赤外線媒体、およびその他の無線媒体などの無線媒体が含まれる。また、前述したもののいずれかの組合せも、コンピュータ可読媒体の範囲に含まれるべきものである。
【００２１】
システムメモリ１３０は、読取り専用メモリ（ＲＯＭ）１３１およびランダムアクセスメモリ（ＲＡＭ）１３２などの揮発性メモリおよび／または不揮発性メモリの形態でコンピュータ記憶媒体を含む。始動中など、コンピュータ１１０内部の要素間で情報を転送するのを助ける基本ルーチンを含む基本入力／出力システム１３３（ＢＩＯＳ）が、通常、ＲＯＭ１３１の中に記憶されている。ＲＡＭ１３２は、通常、処理ユニット１２０によって即時にアクセス可能であり、かつ／または現在、処理されているデータおよび／またはプログラムモジュールを含む。例として、限定としてではなく、図１は、オペレーティングシステム１３４、アプリケーションプログラム１３５、その他のプログラムモジュール１３６、およびプログラムデータ１３７を示している。
【００２２】
また、コンピュータ１１０は、他の取外し可能な／取外し不可能な、揮発性／不揮発性のコンピュータ記憶媒体を含むことも可能である。単に例として、図１は、取外し不可能な不揮発性の磁気媒体に対して読取りおよび書込みを行うハードディスクドライブ１４１、取外し可能な不揮発性の磁気ディスク１５２に対して読取りおよび書込みを行う磁気ディスクドライブ１５１、およびＣＤ−ＲＯＭまたは他の光媒体などの取外し可能な不揮発性の光ディスク１５６に対して読取りおよび書込みを行う光ディスクドライブ１５５を示している。例示的な動作環境において使用することができる他の取外し可能な／取外し不可能な揮発性／不揮発性のコンピュータ記憶媒体には、磁気テープカセット、フラッシュメモリカード、デジタルバーサタイルディスク、デジタルビデオテープ、ソリッドステートＲＡＭ、ソリッドステートＲＯＭ等が含まれるが、以上には限定されない。ハードディスクドライブ１４１は、通常、インターフェース１４０のような取外し不可能なメモリインターフェースを介してシステムバス１２１に接続され、また磁気ディスクドライブ１５１および光ディスクドライブ１５５は、通常、インターフェース１５０のような取外し可能なメモリインターフェースでシステムバス１２１に接続される。
【００２３】
前述し、図１に示すドライブおよび関連するコンピュータ記憶媒体により、コンピュータ可読命令、データ構造、プログラムモジュール、およびその他のデータのストーレッジがコンピュータ１１０に提供される。図１では、例えば、ハードディスクドライブ１４１が、オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、およびプログラムデータ１４７を記憶しているものとして示されている。以上の構成要素は、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、およびプログラムデータ１３７と同じであることも、異なることも可能であることに留意されたい。ここでは、オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、およびプログラムデータ１４７に、少なくともそれらが異なるコピーであることを示すために異なる符号を付けている。ユーザは、キーボード１６２、および一般にマウス、トラックボール、またはタッチパッドと呼ばれるポインティングデバイス１６１などの入力デバイスを介してコンピュータ１１０にコマンドおよび情報を入力することができる。他の入力デバイス（図示せず）には、マイクロホン、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナ等が含まれる可能性がある。以上の入力デバイスおよび他の入力デバイスは、しばしば、システムバスに結合されたユーザ入力インターフェース１６０を介して処理ユニット１２０に接続されるが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス（Ｕｎｉｖｅｒｓａｌ　Ｓｅｒｉａｌ　Ｂｕｓ：ＵＳＢ）などの他のインターフェースおよびバス構造で接続してもよい。また、モニタ１９１または他のタイプの表示デバイスも、ビデオインターフェース１９０などのインターフェースを介してシステムバス１２１に接続される。モニタに加えて、コンピュータは、出力周辺インターフェース１９５を介して接続することができるスピーカ１９７やプリンタ１９６などの他の周辺出力デバイスも含むことが可能である。
【００２４】
コンピュータ１１０は、遠隔コンピュータ１８０のような１つまたは複数の遠隔コンピュータに対する論理接続を使用するネットワーク化された環境で動作することも可能である。遠隔コンピュータ１８０は、別のパーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、または他の一般的なネットワークノードであることが可能であり、通常、パーソナルコンピュータ１１０に関連して前述した要素の多く、またはすべてを含むが、メモリ記憶デバイス１８１だけを図１に示している。図１に描いた論理接続は、ローカルエリアネットワーク（ＬＡＮ）１７１およびワイドエリアネットワーク（ＷＡＮ）１７３を含むが、他のネットワークを含むことも可能である。そのようなネットワーキング環境は、オフィス、企業全体のコンピュータ網、イントラネット、およびインターネットで一般的である。
【００２５】
ＬＡＮネットワーキング環境で使用されるとき、パーソナルコンピュータ１１０は、ネットワークインターフェースまたはネットワークアダプタ１７０を介してＬＡＮ１７１に接続される。ＷＡＮネットワーキング環境で使用されるとき、コンピュータ１１０は、通常、インターネットなどのＷＡＮ１７３を介して通信を確立するためのモデム１７２、または他の手段を含む。内部にあることも、外部にあることも可能なモデム１７２は、ユーザ入力インターフェース１６０または他の適切な機構を介してシステムバス１２１に接続することが可能である。ネットワーク化された環境では、パーソナルコンピュータ１１０に関連して描いたプログラムモジュール、またはプログラムモジュールの部分を遠隔のメモリ記憶デバイスの中に記憶することができる。例として、限定としてではなく、図１は、遠隔アプリケーションプログラム１８５をメモリデバイス１８１上に常駐するものとして示している。図示したネットワーク接続は、例示的なものであり、コンピュータ間で通信リンクを確立する他の手段を使用してもよいことが認められよう。
【００２６】
以下の説明では、特に明示しない限り、本発明を１つまたは複数のコンピュータによって行われる動作の処理および記号表現に関連して説明する。このため、ときとして、コンピュータによって実行されるものとして述べるそのような処理および動作には、コンピュータの処理ユニットによる構造化された形態のデータを表わす電気信号の操作が含まれるものと理解されたい。この操作により、データが変形されるか、またはコンピュータのメモリシステム内の場所に保持され、コンピュータの動作が、当分野の技術者によってよく理解されている形で再構成されるか、または別の仕方で変更される。データが保持されているデータ構造は、データの形式によって定義された特定のプロパティを有するメモリの物理的な場所である。ただし、本発明を以上の文脈で説明しているが、これは、以下に説明する様々な処理および動作をハードウェアで実施することも可能であることが当分野の技術者には認められるように、限定するものではない。
【００２７】
図２は、本発明を実施するのに使用される例示的な動作構成およびイメージファイル形式を示している。この動作構成は、ソース記憶媒体２０４および宛先記憶媒体２０６とインターフェースをとるコンピュータ２００を含む。オペレーティングシステム２０２が、コンピュータ２００内部で実行される。オペレーティングシステム２０２は、コンピュータ２００と記憶媒体２０４および２０６の間の通信を円滑にするファイルシステムドライバ２０８、イメージドライバ２１０、およびデバイスドライバ２１２などの構成要素を含む。
【００２８】
各記憶媒体は、１つまたは複数のボリュームに論理的に分割される。記憶媒体２０４は、第１のボリューム２１４および第２のボリューム２１６に分割される。記憶媒体２０６は、単一のボリュームに分割される。記憶媒体２０４および２０６は、ジオメトリに従って定義される。記憶媒体のジオメトリには、シリンダ（ｃｙｌｉｎｄｅｒ）の数、シリンダ当たりのトラック数、およびトラック当たりのセクタ数が含まれる。セクタは、記憶媒体上の物理的単位である。各セクタは、ある量の情報、例えば、５１２バイトを記憶することができる。記憶媒体のジオメトリは、周知であり、本明細書で詳細に説明する必要はない。
【００２９】
クラスタは、１つまたは複数のセクタのグループである。オペレーティングシステム２０２が、記憶媒体上の１つまたは複数のクラスタを参照することによって記憶媒体から情報を読み取り、記憶媒体にデータを書き込む。ファイルシステムは、クラスタを構成するセクタの数を決める。ファイルアロケーションテーブル１６（Ｆｉｌｅ　Ａｌｌｏｃａｔｉｏｎ　Ｔａｂｌｅ１６：ＦＡＴ１６）、ファイルアロケーションテーブル３２（ＦＡＴ３２）、コンパクトディスクファイルシステム（ＣＤＦＳ）、およびニューテクノロジーファイルシステム（ＮｅｗＴｅｃｈｎｏｌｏｇｙ　Ｆｉｌｅ　Ｓｙｓｔｅｍ：ＮＴＦＳ）などの様々な周知のファイルシステムが存在する。
【００３０】
図示するとおり、ソース記憶媒体２０４の第１のボリューム２１４は、ソースデータ２１８を含む。ソースデータ２１８は、オペレーティングシステムファイル２３６、アプリケーションプログラムなどの実行可能プログラム２３８、およびアプリケーションプログラムで使用されるデータファイル２４０などの複数のファイルを含む。また、ソースデータ２１８は、制御情報２４２も含む。制御情報は、各ファイルに関するデータを含む記憶媒体ボリューム２１４上のクラスタを特定するファイル割振りデータ２４９を含む。また、制御情報２４２は、ビットマスク２４８も含む。ビットマスク２４８は、複数のビットを含み、各ビットが、記憶媒体ボリューム上の１つのクラスタに対応する。ビットマスク内の各ビットの値は、対応するクラスタが少なくとも１つのファイルに関する記憶されたデータを含むか、またはそのクラスタが割り振られていないままであるかを明らかにする。
【００３１】
制御情報２４２、およびファイル２３６、２３８、２４０を編成し、記憶するのに使用されるやり方は、使用されるファイルシステムに依存する。例として、ＮＴＦＳファイルシステムは、マスタファイルテーブル（ＭＦＴ）を記憶媒体上に記憶する。ＭＦＴは、記憶媒体上に記憶された各ファイルに関する範囲（ｅｘｔｅｎｔ　ｌｉｓｔ）リストを含む。範囲リストは、開始ブロックおよび長さを明らかにする一連のエントリを含む。開始ブロックおよび長さは、ファイルに関するデータを含む一続きの連続するクラスタを定義する。
【００３２】
ソースデータ２１８の一部として含まれるその他の情報には、ページメモリ（ｐａｇｅｄ　ｍｅｍｏｒｙ）２４４およびＢＩＯＳパラメータブロック（ＢＰＢ）が含まれる。ページメモリ２４４は、記憶媒体２１４に書き込まれるコンピュータのメモリの一部分である。ＢＰＢ２４６は、媒体のサイズや記憶媒体上のあるファイルの場所などの記憶媒体ボリュームに関するデータを含む。
【００３３】
宛先記憶媒体２０６は、イメージファイル２２０を含む。このイメージファイルは、ソースデータ２１８などの情報の論理的キャプチャである。本発明では、イメージファイル２２０は、ソース記憶媒体ボリューム２１４にソースデータ２１８を復元するのに使用される。別法では、イメージファイル２２０は、１つまたは複数の記憶媒体ボリュームにソース記憶媒体ボリューム２１４と同一の構成を与えるのに使用される。
【００３４】
イメージファイル２２０は、複数のイメージストリームを含む。図示するとおり、イメージファイル２２０は、制御ストリーム２２２、データストリーム２２４、ビットマップストリーム２２６、クラスタマップストリーム２２８、監査証跡ストリーム２３０、およびプロパティストリーム２３２を含む。イメージストリームは、宛先記憶媒体２０６上にイメージファイル２２０の一部として記憶される。また、イメージファイル２２０は、修正ストリーム２３４も含む。修正ストリーム２３４は、その他のイメージストリームがイメージファイル２２０に書き込まれる前に、その他のイメージストリームのデータを変更するのに使用される。本発明の実施形態では、監査証跡ストリーム２３０およびプロパティストリーム２３２は、オプションである。
【００３５】
図示した実施形態では、宛先記憶媒体２０６およびソース記憶媒体２１４は、共通のデバイスドライバ２１２およびファイルシステムドライバ２０８を介してコンピュータ２００とインターフェースをとっており、これにより、両方の記憶媒体は、共通のファイルシステムおよび共通の記憶媒体タイプを使用するものと想定される。当分野の技術者には認識されるとおり、異なる記憶媒体が、異なるファイルシステムおよび異なる記憶媒体タイプを利用することが可能である。例えば、記憶媒体２０６が、ＣＤＦＳファイルシステムを使用するＣＤ−ＲＯＭであり、他方、記憶媒体２０４は、ＦＡＴ１６またはＦＡＴ３２を使用するハードディスクであることが可能である。その場合、複数のファイルシステムドライバ２０８および複数のデバイスドライバ２１２が必要とされる可能性がある。
【００３６】
通常、ユーザは、イメージファイル２２０がシステムツール２３２を介して作成されることを要求する。システムツールは、ユーザインターフェースとして、またはコマンドラインライン要求としてなどの任意の適切な仕方で実装される。別法では、システムツール２３２は、アプリケーションプログラムなどの別のプログラムモジュールの一部として実装される。要求は、イメージドライバ２１０に送られ、イメージドライバ２１０は、ソース記憶媒体２０４および宛先記憶媒体２０６にファイルシステムドライバ２０８を介してアクセスを得る。イメージドライバ２１０が、ソース記憶媒体および宛先記憶媒体へのアクセスを得ると、オペレーティングシステム２０２が、イメージドライバ２１０およびデバイスドライバ２１２を介してそれらの記憶媒体とインターフェースをとる。イメージファイルを作成するのに、オペレーティングシステムは、ソースデータ２１８を読み取り、複数のイメージストリーム２２２〜２３４を生成し、そのイメージストリームを宛先記憶媒体２０６に書き込む。イメージファイル２２０からソースデータ２１８を復元するのに、ソースデータ２１８を復元するユーザ要求が、システムツール２３２によって開始される。イメージドライバ２１０が、ファイルシステムドライバ２０８を介してソース記憶媒体ボリューム２１４およびイメージファイル２２０へのアクセスを得る。オペレーティングシステムが、イメージドライバ２１０およびデバイスドライバ２１２を介してそのイメージファイル２２０を読み取る。次に、オペレーティングシステム２０２は、イメージファイル２２０内のデータに基づいてソース記憶媒体２１４にソースデータ２１８を復元する。
【００３７】
図３は、本発明を実施するのに使用されるイメージファイル２２０の実施形態を示している。イメージファイル２２０は、制御ストリーム２２２、データストリーム２２４、ビットマップストリーム２２６、クラスタマップストリーム２２８、監査証跡ストリーム２３０、およびプロパティストリーム２３２を含む。前述したとおり、監査証跡ストリーム２３０およびプロパティストリーム２３２は、オプションであり、イメージファイル２２０に追加の機能を提供するのに使用される。修正ストリーム２３４は、その他のイメージストリームがイメージファイル２２０に書き込まれる前に、その他のイメージストリーム内のデータを変更するのに使用される一時的なストリームである。
【００３８】
制御ストリーム２２２は、イメージファイル２２０内に含まれる他のデータを開き、解釈するのに必要とされるイメージファイル２２０の属性を記述するヘッダとして機能するデータ構造である。制御ストリーム内のデータには、イメージ識別２５０、ボリューム情報２５２、記憶媒体ジオメトリ２５４、ファイルシステム情報２５６、オペレーティングシステム情報２５８、および圧縮情報２６０が含まれる。
【００３９】
イメージ識別２５０は、イメージを一意的に特定するデータであり、また制御ストリーム２２２のサイズをバイト数で特定するデータでもある。ボリューム情報２５２は、ソース記憶媒体ボリューム２１４を定義するデータを含む。ボリューム情報２５２内のデータには、記憶媒体２０４の先頭からのボリュームオフセット、ボリュームの長さ、ボリューム上の隠れたセクタの数、ボリューム番号、およびボリュームによって使用されるファイルシステムのタイプが含まれる。
【００４０】
記憶媒体ジオメトリ２５４は、シリンダの数、シリンダ当たりのトラック数、およびトラック当たりのセクタ数を含むソース記憶媒体２１４の物理的属性を記述するデータを含む。ファイルシステム情報２５６は、クラスタの総数、クラスタ当たりのバイト数、およびレコード当たりのクラスタ数を特定するデータを含む。
【００４１】
オペレーティングシステム情報２５８は、ソース記憶媒体ボリューム２１４上に記憶されたオペレーティングシステムバージョンを特定するデータを含む。また、オペレーティングシステム情報２５８は、サービスパック識別などのオペレーティングシステムに行われたあらゆる更新を特定するデータも含む。サービスパックは、ソフトウェアプログラムが抱える既知の問題を修正する、またはソフトウェアプログラムに拡張を提供するソフトウェアプログラムに対する更新である。サービスパック識別は、オペレーティングシステムファイル２３６に関してソース記憶媒体ボリューム２１４上に記憶されたあらゆるサービスパックを特定する。圧縮／暗号化情報２６０は、イメージファイル２２０が圧縮されているかどうか、またイメージファイル２２０が暗号化されているかどうかを明らかにするデータを含む。
【００４２】
データストリーム２２４は、目標記憶媒体ボリューム２１４上にあるファイルのそれぞれに関するデータを含む。各ファイルに関するデータは、オプションとして、周知の方法を使用して圧縮されるか、または暗号化される。以下により詳細に説明するとおり、データを圧縮する決定は、ファイルごとに行われる。したがって、データストリーム２２４内の一部のデータが圧縮され、その他のデータが圧縮されないことが可能である。同様に、データストリーム２２４内の一部のデータが暗号化され、その他のデータが暗号化されないことが可能である。ソースデータ２１８の一部を成す制御情報２４２も１つまたは複数のファイルを含み、データストリーム２２４の一部として記憶される。
【００４３】
本発明の実施形態では、データストリーム２２４は、同一のデータの複数のコピーは含まない。例えば、同一のデータファイル２４０の複数のコピーがソース記憶媒体ボリューム２１４の中に記憶されている場合、データファイル２４０の１つのコピーだけが、データストリーム２２４の中に記憶される。また、ページメモリ２４４も、データストリーム２２４の中に含める必要がない。イメージファイル２２０が記憶媒体ボリューム上に復元される際、オペレーティングシステム２０２が、必要に応じて記憶媒体ボリューム上にページメモリ２４４を生成する。データファイルおよびページメモリファイルの複数のコピーをなくすことにより、イメージファイル２２０のサイズが小さくなる。
【００４４】
クラスタマップストリーム２２８は、イメージファイル２２０内のデータの場所をソース記憶媒体ボリューム２１４上のデータの場所に相関させる。クラスタマップストリーム２２８は、一続きのレコードを含む。図３は、クラスタマップストリーム２２８内の単一のレコードを示している。各レコードは、開始クラスタ２６２および終了クラスタ２６４を含む。開始クラスタ２６２および終了クラスタ２６４により、ソース記憶媒体２１４上でデータが位置する開始クラスタおよび終了クラスタが特定される。
【００４５】
オフセット２６８は、データストリームの先頭から計測されたデータストリーム２２４内のデータの開始位置を特定する。圧縮されたファイルの場合、イメージファイル２２０内のデータ長は、圧縮サイズ２７０に等しい。圧縮されていないデータの場合、イメージファイル２２０内のデータ長は、制御ストリーム２２２内で特定される長さ２６６とクラスタ当たりのバイト数の積である。フラグフィールド２７２は、イメージファイル２２０内のデータが圧縮されているか、圧縮されていないかを明らかにする。
【００４６】
クラスタマップストリーム２２８は、オペレーティングシステムが、データストリーム２２４内のデータを探し出すことを可能にする機構を提供する。これにより、イメージファイルを閲覧し、編集することが可能になる。
【００４７】
図４を参照すると、データストリーム２２４内のデータの場所とソース記憶媒体ボリューム２１４上のデータの場所の間の関係の例が示されている。図４では、制御ストリーム２２２内で特定されるクラスタ当たりのバイト数が、５１２であるものと想定されている。ソース記憶媒体ボリューム２１４は、順次に番号が付けられたブロックを含む。各ブロックは、ソース記憶媒体ボリューム上の１つのクラスタを表わす。また、データストリーム２２４も、順次に番号が付けられたブロックを含む。データストリーム２２４内の各ブロックは、データストリーム２２４内のバイトを表わし、また番号は、データストリーム２２４の先頭からのバイト数でのオフセットを表わす。
【００４８】
クラスタマップレコード２２８の開始クラスタフィールド２６２は、開始クラスタ１００を含み、終了クラスタフィールド２６４は、終了クラスタ１４９を含む。したがって、データは、一般的に示すとおり、ソース記憶媒体ボリューム２１４のクラスタ１００ないし１４９上に記憶される。オフセットフィールドは、１０００という値を有している。したがって、データは、データストリーム２２４の先頭から１０００バイトのオフセットで開始する。フィールド２７２が、データは圧縮されていないことを示している。したがって、データストリーム２２４内のこのデータの長さは、長さフィールド２６６の中で５０と特定される長さと、クラスタ当たりのバイト数５１２の積（５０クラスタ＊クラスタ当たり５１２バイト＝２５６００バイト）である。図示するとおり、イメージファイル内の対応するデータは、データストリーム２２４の先頭を起点としてバイト１０００ないし２６５９９に位置する。
【００４９】
同じデータの複数のコピーがソース記憶媒体ボリューム２１４上に記憶される場合、そのデータは、データストリーム２２４の中に一度限り、入れられる。これが行われる場合、クラスタストリーム２２８内で複数のレコードが生成され、ソース記憶媒体ボリューム２１４上でデータが出現する各回に関して１つのレコードが生成される。各レコードは、同じ長さフィールド２６６、同じオフセットフィールド２６２、同じ圧縮サイズフィールド２７０、および同じ圧縮フィールド２７２を含み、これにより、データストリーム２２４内の同一のデータをポイントする。開始クラスタフィールド２６２および終了クラスタフィールド２６４は異なり、これにより、データが属するソース記憶媒体２１４上の複数の場所が特定される。
【００５０】
図３に戻ると、ビットマップストリーム２２６を使用して、目標記憶媒体ボリューム２１４の割振り済みクラスタおよび未割振りクラスタが特定される。割振り済みクラスタは、目標記憶媒体ボリューム２１４上のファイルに関するデータを含むクラスタである。未割振りクラスタは、新しいデータを記憶するのに利用可能なクラスタである。図示した例では、ビットマップストリームは、ビットマップとして実装される。ビットマップ内の各ビットが、目標記憶媒体２１４上のクラスタに対応する。「１」という値を有するビットは、割振りクラスタを表わし、他方、「０」という値を有するビットは、未割振りクラスタを表わす。ビットマップストリームは、ビットマスク２４０と同じ機能を果たす。ただし、ビットマップストリーム２２６は、データストリーム２２４の外にあるため、イメージファイル２２０内で容易にアクセス可能である。
【００５１】
監査証跡ストリーム２３０は、イメージファイルに加えられたあらゆる変更、その変更を開始したユーザ、変更されているファイルがある場合、そのファイル、ならびにその変更が実施された日付および時刻を明らかにするデータを含む。プロパティストリーム２３２は、オペレーティングシステムバージョンなどのイメージファイル２２０の属性を明らかにするデータを含む。プロパティストリーム２３２には、所望の属性を有するイメージファイル２２０を特定するためにクエリが行われる。例えば、プロパティストリーム２３２にクエリが行われて、特定のバージョンのオペレーティングシステムを含むイメージファイルが探し出される。監査証跡ストリーム２３０およびプロパティストリーム２３２は、任意の適切な仕方で実装される。
【００５２】
修正ストリームは、ソースデータ２１８がオペレーティングシステム２０２によって読み取られた後、イメージストリームを変更するのに使用される。例えば、ソースデータ２１８は、データストリーム２２４の中に入れられたとき、ソース記憶媒体２１４上の元の場所から移動されている可能性がある。修正ストリームが、ソースデータ２１８の適切な場所を反映するようにデータストリーム内のＢＰＢ２４６および制御情報２４２を更新する。
【００５３】
図５ａおよび５ｂは、ソース記憶媒体２１４上のデータが、データストリーム２２４の中に入れられたとき、オプションとして、どのようにデフラグ（ｄｅｆｒａｇｍｅｎｔ）されるかを示している。図示のとおり、ソースデータ２１８はソース記憶媒体２１４に記憶される。ファイルＡに関するデータが、２８０のラベルが付けられたクラスタ上に記憶され、ファイルＢに関するデータが、２８２のラベルが付けられたクラスタ上に記憶され、またファイルＣに関するデータが、２８４のラベルが付けられたクラスタ上に記憶される。図示するとおり、ファイルＡに関するデータ、およびファイルＢに関するデータは、不連続のクラスタ上に記憶される。あるファイルに関するデータが不連続のクラスタ上に記憶されるとき、そのファイルが断片化される（ｆｒａｇｍｅｎｔｅｄ）という言い方をする。
【００５４】
オペレーティングシステム２０２は、ファイルＡに関してソース記憶媒体２１４上の制御情報２４２を読み取ったとき、２８０のラベルが付けられた、そのファイルに関するデータを含むクラスタを特定し、そのデータを読み取る。次に、オペレーティングシステムは、データストリーム２２４内で、２８７のラベルが付けられた連続する場所の中にファイルＡに関するデータを入れる。オペレーティングシステム２０２は、ファイルＢおよびファイルＣに関して同一のプロセスを行う。図５ｂに示すとおり、ファイルＢに関するデータ、およびファイルＣに関するデータは、それぞれ２８８および２８９のラベルが付けられた連続する場所に入れられる。データが連続する場所に入れられるため、オペレーティングシステム２０２は、各ファイルに関するファイル割振り２４９を更新することによってそのファイルをデフラグすることができる。ソース記憶媒体２１４上のファイルをデフラグするのに使用される方法を以下に、より十分に説明する。
【００５５】
前述したとおり、各ファイルに関するボリュームビットマスク２４８およびファイル割振り２４９を含む制御情報２４２が、１つまたは複数のファイルとしてデータストリーム２２４の中に記憶される。制御情報２４２に関するデータ２８６は、通常、図５ｂに示すとおり、データストリーム２２４の終端にある。
【００５６】
ファイルがデフラグされたとき、クラスタマップ２２８レコードが、その新しいデータ場所を反映するように変更される。データが元の場所から移動されているため、開始クラスタおよび終了クラスタは、ソース記憶媒体ボリューム上のソースデータの元の場所に対応しない可能性がある。代わりに、開始クラスタおよび終了クラスタは、イメージファイルが記憶媒体ボリュームに復元される際にデータが記憶される場所を特定する。
【００５７】
図６および７は、ソース記憶媒体ボリューム２１４からイメージファイル２２０を作成するのに使用されるプロセスを示している。例として、プロセス２９０は、イメージドライバ２１０内で動作するプログラムモジュールによるなど、オペレーティングシステム構成要素によって実行される。別法では、プロセス２９０は、システムツール２３２によって完全に、または部分的に実行される。
【００５８】
通常、イメージファイル２２０は、システムツール２３２からのユーザ要求を介して作成される。この要求がシステムツール２３２から受け取られた後、オペレーティングシステム２０２が、ステップ２９２に示されるとおり、ソース記憶媒体ボリューム２１４を開く。ソース記憶媒体ボリューム２１４を開くのに、イメージドライバ２１０は、ファイルシステムドライバ２０８を介してソース記憶媒体ボリューム２１４に対するリファレンスを獲得する。ソース記憶媒体ボリューム２１４に対するリファレンスが獲得されると、オペレーティングシステム２０２は、イメージドライバ２１０およびデバイスドライバ２１２を介して記憶媒体２１４と通信する。
【００５９】
ステップ２９４で、プロセス２９０は、制御ストリーム２２２、データストリーム２２４、ビットマップストリーム２２６、クラスタマップストリーム２２８、監査証跡ストリーム２３０、プロパティストリーム２３２、および修正ストリーム２３４を含むイメージファイル２２０の複数のイメージストリームを生成する。この時点で、イメージファイル２２０を構成する複数のストリームをメモリ構造内におけるのと同様に実装し、あるいは、宛先記憶媒体ボリューム２０６上に直接に実装する。
【００６０】
ステップ２９６で、プロセス２９０が、ソース記憶媒体ボリューム２１４上の制御情報２４２を読み取る。制御情報２４２は、ソース記憶媒体ボリューム２１４上の複数のファイル、およびそのファイルのそれぞれに割り振られたクラスタを識別する。例えば、ソース記憶媒体ボリュームがＮＴＦＳファイルシステムを使用する場合、プロセス２９０は、記憶媒体ボリューム２１４上のＭＦＴを読み取る。
【００６１】
ステップ２９８で、プロセス２９０は、制御情報２４２によって特定された第１のファイルに関するデータを読み取る。ステップ３００で、プロセスは、そのファイルに関するデータをデータストリーム２２４の中に入れる。前述したとおり、そのファイルデータの複数のコピーが存在する場合、データは、データストリームの中に一度限り入れられる。さらに、ファイルデータがページメモリ２４４の一部である場合、そのデータは、データストリーム２２４の中に入れる必要がない。ファイルに関するデータは、オプションとして、データストリーム２２４の中に入れられる際にデフラグされる。
【００６２】
ステップ３０２で、ソース記憶媒体ボリューム２１４上のデータの場所をデータストリーム２２４内のデータの場所に相関させるレコードを追加することにより、クラスタストリーム２２８が更新される。クラスタマップストリーム２２８により、オペレーティングシステム２０２が、データストリーム２２４内のデータにアクセスし、編集することができるようになる。ステップ３０４で、プロセス２９０は、ソース記憶媒体ボリューム２１４がさらなるファイルデータを含むかどうかを判定する。さらなるファイルデータが存在する場合、プロセス２９０は、ステップ２９８に戻り、次のファイルに関するデータを読み取る。
【００６３】
もはやファイルデータが存在しない場合、プロセス２９０は、ステップ３０６に進み、修正をイメージファイルストリームに適用する。この修正は、データの移動を考慮に入れるように適用される。例えば、前述したとおり、プロセス２９０は、ソース記憶媒体２１４上の複数のファイルに関するデータをデフラグする可能性がある。したがって、プロセス２９０は、データストリーム２２４内にある制御情報２４２を変更して、制御情報２４２が、各ファイルに現在、割り振られているクラスタを特定するようにする。ＮＴＦＳボリュームの場合、プロセスは、ＭＦＴ内の各ファイルに関する範囲リストを訂正する。各ファイルに関するデータは、デフラグされているため、各ファイルに関する範囲リストは、単一の範囲を含む。また、ビットマスク２４８も、データ位置の変更に鑑みて、目標記憶媒体上の割振り済みのクラスタおよび未割振りのクラスタを適切に反映するように変更される。また、修正は、ＢＰＢ２４６にも適用される。ＢＰＢ内で参照されるファイルの場所は変更されているため、ＢＰＢは、ファイルの適切な場所が参照されるように変更される。
【００６４】
以上のプロセスが完了すると、制御ストリーム２２２、データストリーム２２４、ビットマップストリーム２２６、クラスタマップストリーム２２８、監査証跡ストリーム２３０、およびプロパティストリーム２３２は、宛先記憶媒体２０６に書き込まれ、これにより、ステップ３０８に示したイメージファイル２２０が形成される。
【００６５】
図７は、ソース記憶媒体ボリューム２１４からのデータを暗号化し、圧縮するのに使用されるプロセスを示している。ステップ３２０で、プロセス２９０は、制御情報２４２によって特定されたクラスタ上に記憶されたデータを読み取る。ステップ３２２で、プロセス２９０は、データを圧縮するかどうかを決める。本発明では、ファイル圧縮は、オプションであり、システムツール２３２、または任意の適切なオペレータインターフェースを介してユーザによる選択が可能であることが可能である。ファイル圧縮が選択された場合、プロセス２９０は、ステップ３２４に示されるとおり、データを圧縮する。好ましくは、データは、既に圧縮形式で記憶されていない場合にだけ、圧縮される。データは、ステップ３２４に示されるとおり、任意の圧縮／圧縮解除（ＣＯＤＥＣ）アルゴリズムを使用して圧縮される。
【００６６】
ステップ３２６で、プロセス２９０は、データを暗号化するかどうかを決める。本発明では、ファイル暗号化は、オプションであり、システムツール２３２を介してユーザによる選択が可能である。選択された場合、データは、ステップ３２８に示されるとおり、任意の適切な周知の方法を使用して暗号化される。データは、該当する場合に暗号化され、かつ／または圧縮されると、ステップ３３０に示されるとおり、データストリーム２２４に書き込まれる。
【００６７】
図８は、ソース記憶媒体ボリューム２１４にイメージファイル２２０を復元するのに使用される、３４０のラベルが付けられたプロセスを示している。プロセス３４０は、オペレーティングシステム２０２によって実行されることが可能である。別法では、プロセス３４０は、システムツール２３２によって完全に、または部分的に実行されることが可能である。ステップ３４２で、プロセス３４０は、イメージファイル２２０を開く。オペレーティングシステム２０２が、ファイルシステムドライバ２０８を介して宛先記憶媒体ボリューム２０６に対するリファレンスを獲得する。
【００６８】
ステップ３４４で、プロセス３４０は、クラスタマップストリーム２２８内に含まれる複数のクラスタマップレコードの１つを読み取る。クラスタマップレコードは、データに関するデータストリーム２２４内の場所を特定し、また、ソース記憶媒体ボリューム２１４上のそのデータの意図される場所も特定する。クラスタマップレコードを読み取った後、ステップ３４６で示すとおり、データが、データストリーム２２４から読み取られる。次に、データは、ソース記憶媒体２１４に、クラスタマップレコード２２８内の開始クラスタおよび終了クラスタによって特定されたクラスタ上で書き込まれる。
【００６９】
ステップ３５０で、プロセス３４０は、クラスタマップストリーム２２８内でさらなるレコードが存在するかどうかを判定する。さらなるレコードが存在する場合、プロセスは、ステップ３１４に戻り、次のクラスタマップレコードが検査される。もはやレコードが存在しない場合、プロセス３４０は、ステップ３５２に進み、修正が適用される。この修正は、イメージファイルを作成するのに使用されたソース記憶媒体ボリューム２１４と、ソースデータ２１８が復元される記憶媒体ボリュームの間でジオメトリが異なる場合、必要とされる。例えば、ＢＰＢ内で特定されたファイルの場所が変更されている場合、ＢＰＢが、ファイルのその新しい場所を反映するように更新される。また、ＢＰＢは、記憶媒体のジオメトリ情報も含む。ＢＰＢ内のジオメトリ情報は、復元されたソースデータ２１８を含む記憶媒体の実際のジオメトリを反映するように更新される必要がある。
【００７０】
図９は、イメージファイル２２０からのデータを暗号化解除し、圧縮解除するのに使用されるプロセスを示している。ステップ３６０で、プロセス３４０は、データを圧縮解除するかどうかを決める。データは、圧縮解除を必要とする場合、ステップ３６２に示されるとおり、周知の圧縮解除アルゴリズムを使用して圧縮解除される。ステップ３６４で、プロセス３４０は、データを暗号化解除するかどうかを決める。データが暗号化解除を必要とする場合、ステップ３６６に示されるとおり、周知の暗号化解除アルゴリズムを使用してデータが暗号化解除される。データは、必要に応じて圧縮解除され、暗号化解除されると、ソース記憶ボリューム２１４に書き込まれる。データは、該当のデータに関するクラスタレコード内で特定されたクラスタに書き込まれる。
【００７１】
本発明の原理を適用することが可能な多数の可能な実施形態に鑑みて、図面を参照して本明細書で説明した実施形態は、単に例示的なものに過ぎず、本発明の範囲を制限するものと受け取られるべきでないことを認識されたい。例えば、本発明の趣旨逸脱することなく、ソフトウェアで示される例示した実施形態の要素をハードウェアで実装することが可能であり、またその逆も可能であること、あるいは、例示した実施形態の構成および詳細を変更できることが、当分野の技術者には認められよう。したがって、本明細書で説明した本発明は、特許請求の範囲の範囲に入る可能性があるすべてのそのような実施形態、およびそれと等価な形態を企図している。
【図面の簡単な説明】
【図１】本発明が存在する例示的なコンピュータシステムを一般的に示すブロック図である。
【図２】イメージファイルの作成、復元、および編集を行うのに使用される動作環境を示すブロック図である。
【図３】イメージファイル形式の例を示すブロック図である。
【図４】クラスタマップストリームを示すブロック図である。
【図５ａ】ソースデータおよびデータストリームを示すブロック図である。
【図５ｂ】ソースデータおよびデータストリームを示すブロック図である。
【図６】本発明の実施形態で行われることが可能な手続きの例を示す流れ図である。
【図７】本発明の実施形態で行われることが可能な手続きの例を示す流れ図である。
【図８】本発明の実施形態で行われることが可能な手続きの例を示す流れ図である。
【図９】本発明の実施形態で行われることが可能な手続きの例を示す流れ図である。
【符号の説明】
２２０　イメージファイル
２２２、２２４、２２６、２２８、２３０、２３２、２３４　ストリーム
２５０、２５２、２５４、２５６、２５８、２６０　データ
２６２、２６４、２６６、２６８、２７０、２７２　フィールド
【図１】
2004038979.tif 000003
【図２】
2004038979.tif 000004
【図３】
2004038979.tif 000005
【図４】
2004038979.tif 000006
【図５ａ】
2004038979.tif 000007
【図５ｂ】
2004038979.tif 000008
【図６】
2004038979.tif 000009
【図７】
2004038979.tif 000010
【図８】
2004038979.tif 000011
【図９】
2004038979.tif 000012