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