(57)【要約】      （修正有）【課題】仮想化サブレイヤを統合する方法およびシステムを提供する。【解決手段】コンピュータにより実施される方法は、仮想化アプリケーションの第１および第２のサブレイヤを識別することを含み得る。第１および／または第２の仮想化サブレイヤは、読み書きサブレイヤ１２２、読み取り専用サブレイヤ１２４、仮想リセットポイントサブレイヤ１２６、１２８、および／またはパッチサブレイヤ１３０を含み得る。コンピュータにより実施されるこの方法は、第１の仮想化サブレイヤのインスタンスを第２の仮想化サブレイヤのインスタンスに統合することも含み得る。他の様々な方法、システム、およびコンピュータ可読媒体も開示される。【選択図】図１
2010205267.tif 000002
【特許請求の範囲】
【請求項１】
仮想化アプリケーションの第１の仮想化サブレイヤを識別するステップと、
前記仮想化アプリケーションの第２の仮想化サブレイヤを識別するステップと、
前記第１の仮想化サブレイヤのインスタンスを前記第２の仮想化サブレイヤのインスタンスに統合するステップと
を含む、コンピュータにより実施される方法。
【請求項２】
前記第２の仮想化サブレイヤは、読み取り専用仮想化サブレイヤを含み、
前記読み取り専用仮想化サブレイヤは、前記仮想化アプリケーションの第１の基本状態を含み、
前記第１の仮想化サブレイヤは、読み書き仮想化サブレイヤを含み、
前記読み書き仮想化サブレイヤは、前記仮想化アプリケーションの前記第１の基本状態への変更を記憶するように構成され、
前記第１の仮想化サブレイヤのインスタンスを前記第２の仮想化サブレイヤのインスタンスに統合するステップは、前記読み書き仮想化サブレイヤのインスタンスを前記読み取り専用仮想化サブレイヤのインスタンスに統合して、前記仮想化アプリケーションの第２の基本状態を含む変更後読み取り専用仮想化サブレイヤを作成するステップを含む、請求項１に記載のコンピュータにより実施される方法。
【請求項３】
前記読み書き仮想化サブレイヤのインスタンスを前記読み取り専用仮想化サブレイヤのインスタンスに統合する前に、前記読み書き仮想化サブレイヤに更新を適用するステップと、
前記更新が適用された後、かつ統合前に、前記読み書き仮想化サブレイヤをテストして、前記読み取り専用仮想化サブレイヤのインスタンスと前記読み書き仮想化サブレイヤのインスタンスとを統合すべきか否かを判断するステップと
をさらに含む、請求項１又は２に記載のコンピュータにより実施される方法。
【請求項４】
前記第１の仮想化サブレイヤと前記第２の仮想化サブレイヤとの差分を求めるステップであって、
前記差分は前記第１の仮想化サブレイヤを表し、
前記第１の仮想化サブレイヤのインスタンスを前記第２の仮想化サブレイヤのインスタンスに統合するステップは、前記差分を前記第２の仮想化サブレイヤのインスタンスに統合するステップを含むステップと、
前記差分を使用して、前記第２の仮想化サブレイヤのインスタンスを前記第１の仮想化サブレイヤのインスタンスからのデータで更新するように構成されたパッチを作成するステップと、
前記パッチを、前記第２の仮想化サブレイヤのインスタンスを備える遠隔計算装置に配備するステップであって、
前記パッチは前記第１の仮想化サブレイヤを表し、
前記第２の仮想化サブレイヤのインスタンスを前記第１の仮想化サブレイヤのインスタンスに統合するステップは、前記パッチを前記第２の仮想化サブレイヤのインスタンスに統合するステップを含むステップと
をさらに含む、請求項１〜３のいずれか一項に記載のコンピュータにより実施される方法。
【請求項５】
前記第１の仮想化サブレイヤのインスタンスを前記第２の仮想化サブレイヤのインスタンスに統合するステップは、前記第１の仮想化サブレイヤのインスタンスからのユーザ固有データを、前記第２の仮想化サブレイヤのインスタンスに統合するステップを含む、請求項１〜４のいずれか一項に記載のコンピュータにより実施される方法。
【請求項６】
前記第１の仮想化サブレイヤは、読み書き仮想化サブレイヤを含み、
前記第２の仮想化サブレイヤは、読み取り専用仮想化サブレイヤを含み、
前記第１の仮想化サブレイヤのインスタンスからのユーザ固有データを、前記第２の仮想化サブレイヤのインスタンスに統合するステップは、
前記読み書き仮想化サブレイヤのインスタンスからファイルシステムデータを検索するステップ、
前記ファイルシステムデータを前記読み取り専用仮想化サブレイヤのインスタンスのユーザテンプレート領域にコピーするステップ、
前記読み書き仮想化サブレイヤのインスタンスからレジストリデータを検索するステップ、
前記レジストリデータを前記読み取り専用仮想化サブレイヤのユーザテンプレート領域にコピーするステップ
のうちの少なくとも１つを含む、請求項５に記載のコンピュータにより実施される方法。
【請求項７】
前記第１の仮想化サブレイヤのインスタンスを前記第２の仮想化サブレイヤのインスタンスに統合するステップは、前記第１の仮想化サブレイヤのインスタンスからのユーザ共通データを、前記第２の仮想化サブレイヤのインスタンスに統合するステップを含む、請求項１〜４のいずれか一向に記載のコンピュータにより実施される方法。
【請求項８】
前記第１の仮想化サブレイヤのインスタンスのユーザ共通データと前記第２の仮想化サブレイヤのインスタンスのユーザ共通データとの差分を求めるステップと、
前記第１の仮想化サブレイヤのインスタンスからの前記差分内で識別されたユーザ共通データを前記第２の仮想化サブレイヤのインスタンスにコピーするステップと
をさらに含む、請求項７に記載のコンピュータにより実施される方法。
【請求項９】
前記第１の仮想化サブレイヤのインスタンスのユーザ共通データと前記第２の仮想化サブレイヤのインスタンスのユーザ共通データとの差分を求めるステップは、
前記第２の仮想化サブレイヤのインスタンスにはない、前記第１の仮想化サブレイヤのインスタンス内の少なくとも１つのファイルを識別するステップ、
前記第２の仮想化サブレイヤのインスタンス内の対応するファイルを変更したものである、前記第１の仮想化サブレイヤのインスタンス内の少なくとも１つのファイルを識別するステップ、
前記第２の仮想化サブレイヤのインスタンスにはない、前記第１の仮想化サブレイヤのインスタンス内の少なくとも１つのディレクトリを識別するステップ、
識別するステップであって、
前記第１の仮想化サブレイヤのインスタンスから削除されたオブジェクトを識別する削除済みオブジェクトファイル内で識別されたファイル、
前記削除済みオブジェクトファイル内で識別されたディレクトリ
のうちの少なくとも１つを識別するステップ、
のうちの少なくとも１つを含み、
前記第１の仮想化サブレイヤのインスタンスを前記第２の仮想化サブレイヤのインスタンスに統合するステップは、
前記第２の仮想化レイヤのインスタンスにはない前記少なくとも１つのファイルを、前記第２の仮想化レイヤのインスタンスにコピーするステップ、
前記第２の仮想化レイヤのインスタンス内の対応するファイルを変更したものである前記少なくとも１つのファイルを、前記第２の仮想化レイヤのインスタンスにコピーするステップ、
前記第２の仮想化レイヤのインスタンスにはない前記少なくとも１つのディレクトリを、前記第２の仮想化レイヤのインスタンスにコピーするステップ、
前記第２の仮想化サブレイヤのインスタンスから、前記削除済みオブジェクトファイル内で識別された前記ファイルを削除するステップ、
前記第２の仮想化サブレイヤのインスタンスから、前記削除済みオブジェクトファイル内で識別された前記ディレクトリを削除するステップ
のうちの少なくとも１つを含む、請求項８に記載のコンピュータにより実施される方法。
【請求項１０】
前記第１の仮想化サブレイヤのインスタンス内のレジストリからのユーザ共通レジストリデータを前記第２の仮想化サブレイヤのインスタンス内のレジストリにコピーするステップ、
前記第１の仮想化サブレイヤのインスタンスから削除されたオブジェクトを識別する削除済みオブジェクトファイル内で識別されたユーザ共通レジストリデータを見つけるステップ、
前記第２の仮想化サブレイヤのインスタンスから、前記削除済みオブジェクトファイル内で識別された前記ユーザ共通レジストリデータを削除するステップ
の少なくとも１つをさらに含む、請求項７に記載のコンピュータにより実施される方法。
【請求項１１】
第１の仮想化レイヤが第１の仮想リセットポイントサブレイヤを含み、
第２の仮想化レイヤが第２の仮想リセットポイントサブレイヤを含み、
前記第１の仮想化サブレイヤのインスタンスを前記第２の仮想化サブレイヤのインスタンスに統合するステップは、前記第２の仮想リセットポイントサブレイヤからの少なくとも２人の異なるユーザに関連するユーザ固有データを、前記第１の仮想リセットポイントサブレイヤにコピーするステップを含む、請求項１〜１０のいずれか一項に記載のコンピュータにより実施される方法。
【請求項１２】
レイヤ統合モジュールであって、
読み取り専用仮想化サブレイヤおよび読み書き仮想化サブレイヤを含む仮想化アプリケーションを識別するステップであって、前記読み取り専用仮想化サブレイヤは、前記仮想化アプリケーションの第１の基本状態を含み、前記読み書き仮想化サブレイヤは、前記仮想化アプリケーションの前記第１の基本状態への変更を記憶するように構成されるステップと、
前記読み取り専用仮想化サブレイヤのインスタンスと前記読み書き仮想化サブレイヤのインスタンスとを統合して、前記仮想化アプリケーションの第２の基本状態を含む変更後読み取り専用仮想化サブレイヤを作成するステップと
を行うようにプログラムされた、レイヤ統合モジュールと、
前記レイヤ統合モジュールを実行するように構成されたプロセッサと
を備える、システム。
【請求項１３】
前記読み取り専用仮想化サブレイヤと前記読み書き仮想化サブレイヤとの差分を求めるステップと、
前記差分を使用して、前記読み取り専用仮想化サブレイヤのインスタンスを前記読み書き仮想化サブレイヤのインスタンスからのデータで更新するように構成されたパッチを作成するステップと、
前記パッチを、前記読み取り専用仮想化サブレイヤのインスタンスおよび前記レイヤ統合モジュールを備える遠隔計算装置に配備するステップと
を行うようにプログラムされる配備モジュールをさらに備える、請求項１２に記載のシステム。
【請求項１４】
前記レイヤ統合モジュールは、
前記読み取り専用仮想化サブレイヤのインスタンスにはない、前記読み書き仮想化サブレイヤのインスタンス内の少なくとも１つのファイルを識別するステップと、
前記読み取り専用仮想化サブレイヤのインスタンス内の対応するファイルが変更されたものである、前記読み書き仮想化サブレイヤのインスタンス内の少なくとも１つのファイルを識別するステップと、
前記読み書き仮想化サブレイヤのインスタンスから削除された少なくとも１つのファイルを識別するステップと、
前記読み書き仮想化サブレイヤのインスタンスから削除された少なくとも１つのレジストリエントリを識別するステップと、
前記読み書き仮想化サブレイヤのインスタンスから少なくとも１つのファイルを前記読み取り専用仮想化サブレイヤのインスタンスにコピーするステップと、
前記読み書き仮想化サブレイヤのインスタンスから少なくとも１つのレジストリエントリを前記読み取り専用仮想化サブレイヤのインスタンスにコピーするステップと、
前記読み取り専用仮想化サブレイヤのインスタンスから少なくとも１つのファイルを削除するステップと、
前記読み取り専用仮想化サブレイヤのインスタンスから少なくとも１つのレジストリエントリを削除するステップと
を行うようにプログラムされる、請求項１２又は１３に記載のシステム。
【請求項１５】
１つまたは複数のコンピュータ実行可能命令を含むコンピュータ可読媒体であって、前記コンピュータ実行可能命令は、計算装置により実行されると、前記計算装置に、
第１の仮想化サブレイヤおよび第２の仮想化サブレイヤを含む仮想化アプリケーションを識別すること、
前記第１の仮想化サブレイヤのインスタンスを前記第２の仮想化サブレイヤのインスタンスに統合すること
を実行させる、コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
情報技術（ＩＴ）管理者は、ソフトウェアアプリケーションの管理にかなりの時間量を費やし得る。ソフトウェアアプリケーションの管理には、アプリケーション競合の解決、破損したアプリケーションの修復、新バージョンのアプリケーションへの移行、アプリケーションのインストール、およびアプリケーションへのパッチ適用が含まれ得る。これらタスクは、フラストレーションが溜まり、かつ時間のかかるものであり得る。
【背景技術】
【０００２】
アプリケーション仮想化技術は、多くのＩＴ管理タスクを簡易化し得る。例えば、アプリケーション仮想化により、管理者は、アプリケーションおよびデータへのユーザアクセスをオンまたはオフにすることが可能であり得、それにより、ユーザが必要とするリソースをユーザに提供するためにかかる時間を短縮することができる。アプリケーション仮想化により、管理者は、他のアプリケーションを破損する恐れなく、壊れたアプリケーションを既知の良好な状態にリセットすることも可能であり得る。アプリケーション仮想化は、各仮想化アプリケーションが、通常ならば他のアプリケーションと共有されるＤＬＬファイルの各自のコピーを有することを保証することができる。これにより、２つ以上のアプリケーションが同じＤＬＬの異なるバージョンを必要とし得る場合に発生する競合がなくなり、それにより、「ＤＬＬ地獄（ＤＬＬ  Ｈｅｌｌ）」と一般に呼ばれる状況から管理者を救う。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
アプリケーション仮想化は、同じアプリケーションの異なるバージョンが平和的に同時に存在することを可能にし得る。これは、管理者が、新バージョンをテストしている間に、旧バージョンをそのままの状態で保持し、利用可能な状態を保つことができることを意味する。新バージョンに移行した後であっても、管理者は随時、前のバージョンに素早くロールバックすることができる。アプリケーション仮想化の多くの利点にも拘わらず、従来の仮想化技術では、インストールされ仮想化されたアプリケーションの効率的な更新および変更を行うことができない。
【課題を解決するための手段】
【０００４】
本開示は、仮想化アプリケーションのサブレイヤを統合する方法およびシステムに関する。本開示の実施形態は、仮想化アプリケーションの任意の仮想化サブレイヤを他の任意の仮想化サブレイヤに統合することができる。例えば、読み書きサブレイヤを読み取り専用サブレイヤに統合することができる。仮想化アプリケーションの読み書きサブレイヤを仮想化アプリケーションの読み取り専用サブレイヤに統合することにより、本開示の実施形態は、仮想化アプリケーションの新たなリセットポイントを確立することができる。いくつかの実施形態では、仮想化アプリケーションの新たなリセットポイントは、仮想化アプリケーションを更新するために確立され得る。他の実施形態では、仮想化アプリケーションの新たなリセットポイントは、プラグイン、ユーザ固有の設定、および／または仮想化アプリケーションへの他の変更を、１つの仮想化アプリケーションの読み取り専用サブレイヤの中にラッピングするために確立され得る。
【０００５】
いくつかの実施形態では、レイヤ統合モジュールが、読み取り専用仮想化サブレイヤおよび読み書き仮想化サブレイヤを有する仮想化アプリケーションを識別することができる。読み取り専用仮想化サブレイヤは、仮想化アプリケーションの第１の基本状態を表すことができ、読み書き仮想化サブレイヤは、仮想化アプリケーションの第１の基本状態への変更を記憶することができる。レイヤ統合モジュールは、読み取り専用仮想化サブレイヤのインスタンスと読み書き仮想化サブレイヤのインスタンスとを統合して、仮想化アプリケーションの第２の基本状態を含む変更後読み取り専用仮想化サブレイヤを作成することができる。仮想化アプリケーションの第２の基本状態は、仮想化アプリケーションの新たなリセットポイントであることができる。
【０００６】
本開示の実施形態は、他の様々なタイプの仮想化サブレイヤを統合することもできる。例えば、第１の仮想リセットポイントサブレイヤを第２の仮想リセットポイントサブレイヤに統合し得る。いくつかの実施形態では、パッチサブレイヤ、仮想リセットポイントサブレイヤ、読み取り専用サブレイヤ、および／または読み書きサブレイヤを、他の任意のパッチサブレイヤ、仮想リセットポイントサブレイヤ、読み取り専用サブレイヤ、および／または読み書きサブレイヤに統合し得る。本開示は、仮想化サブレイヤを統合する他の様々な実施形態、代替、および例も含む。
【０００７】
添付図面は、いくつかの例示的な実施形態を示し、本明細書の一部である。以下の説明と併せて、これら図面は、本開示の様々な原理を実証し説明する。
【図面の簡単な説明】
【０００８】
【図１】特定の実施形態による仮想化サブレイヤを統合する例示的なシステムのブロック図である。
【図２】特定の実施形態による仮想化サブレイヤを統合する別の例示的なシステムのブロック図である。
【図３】特定の実施形態による仮想化サブレイヤを統合する例示的な方法の流れ図である。
【図４】特定の実施形態による仮想化サブレイヤを統合する別の例示的な方法の流れ図である。
【図５】特定の実施形態によるアプリケーション仮想化を提供するように構成された計算システムの概念レベルでの例示的な構成要素のブロック図である。
【図６】特定の実施形態による仮想化レイヤ優先度付けを示すブロック図である。
【図７】特定の実施形態による仮想化レイヤを含む計算システムの構成要素のブロック図である。
【図８】特定の実施形態による計算システム上の仮想化レイヤの編成を示すブロック図である。
【図９】本明細書において説明され、かつ／または図示される実施形態のうちの１つまたは複数を実施可能な例示的な計算システムのブロック図である。
【図１０】本明細書において説明され、かつ／または図示される実施形態のうちの１つまたは複数を実施可能な例示的な計算ネットワークのブロック図である。
【発明を実施するための形態】
【０００９】
図面全体を通して、同一の参照文字および説明は、同様であるが必ずしも同一である必要はない要素を示す。本明細書において説明される例示的な実施形態には様々な変更および代替の形態が可能であるが、特定の実施形態が例として図面に示されており、それら特定の実施形態について本明細書において詳細に説明する。しかし、本明細書において説明される例示的な実施形態は、開示される特定の形態への限定を意図しない。むしろ、本開示は、添付の特許請求の範囲内に入るすべての変更、均等物、および代替を包含する。
【００１０】
本開示の実施形態は、仮想化サブレイヤを統合する様々な方法およびシステムを提供する。様々な実施形態は、読み取り専用サブレイヤ、読み書きサブレイヤ、および他の仮想化サブレイヤ（すなわち、仮想化レイヤのサブレイヤ）を仮想化アプリケーションに提供する仮想化技術の特徴を活用することができる。このような技術では、読み取り専用サブレイヤが、仮想化アプリケーションの基本状態を提供することができ、読み書きサブレイヤが、基本状態への変更を捕捉することができる。いくつかの実施形態では、仮想化アプリケーションの読み書きサブレイヤからのデータを、仮想化アプリケーションの読み取り専用サブレイヤに移し、それにより、仮想化アプリケーションの新たなリセットポイントを作成することができる。他の実施形態では、第１の仮想リセットポイントサブレイヤからのデータを第２の仮想リセットポイントサブレイヤに移すことができる。特定の実施形態では、パッチサブレイヤからのデータを読み取り専用サブレイヤおよび／または読み書きサブレイヤに統合することができる。
【００１１】
図１および図２は、仮想化サブレイヤを統合する例示的なシステムを示し、図３および図４は、仮想化サブレイヤの統合を達成するための方法を示す。図５−図８は様々なアプリケーションレイヤ化技術を示し、図９および図１０は、本開示の実施形態を実施するための例示的な計算システムおよびネットワークアーキテクチャを示す。本明細書において使用される場合、用語「サブレイヤ」および「仮想化サブレイヤ」は、仮想化レイヤの下位エンティティを指す。仮想化サブレイヤは、読み書きサブレイヤ、読み取り専用サブレイヤ、パッチサブレイヤ、仮想リセットポイントサブレイヤ、および／または仮想化レイヤの他の任意のサブレイヤを含み得る。
【００１２】
図１は、仮想化サブレイヤを統合する例示的なシステム１００を示す。システム１００は、モジュール１１０および仮想化アプリケーション１２０を含み得る。モジュール１１０は、レイヤ統合モジュール１１２および配備モジュール１１４を含み得る。レイヤ統合モジュール１１２は、第１および第２のサブレイヤを有する仮想化アプリケーションを識別するようにプログラムし得る。レイヤ統合モジュール１１２は、第２のサブレイヤのインスタンスを第１のサブレイヤのインスタンスに統合するようにもプログラムし得る。配備モジュール１１４は、第１のサブレイヤと第２のサブレイヤとの差分を求めるようにプログラムし得る。配備モジュール１１４は、差分を使用して、パッチを作成し、パッチを遠隔計算装置に配備するようにもプログラムし得る。
【００１３】
特定の実施形態では、図１のモジュール１１０のうちの１つまたは複数は、計算システムにより実行されると、本明細書に開示される１つまたは複数のステップを計算システムに実行させ得る１つまたは複数のソフトウェアアプリケーションまたはプログラムを表し得る。例えば、より詳細に後述するように、モジュール１１０のうちの１つまたは複数は、図９の計算システム９１０および／または図１０の例示的なネットワークアーキテクチャ１０００の部分等の１つまたは複数の計算装置で実行されるように構成されたソフトウェアモジュールを表し得る。図１のモジュール１１０のうちの１つまたは複数は、本明細書に開示されるステップに関連する１つまたは複数のタスクを実行するように構成された１つまたは複数の専用コンピュータの全部または部分を表すこともできる。
【００１４】
上述したように、システム１００は、仮想化アプリケーション１２０を含み得、仮想化アプリケーション１２０は、読み書き仮想化サブレイヤ１２２、読み取り専用仮想化サブレイヤ１２４、仮想リセットポイントサブレイヤ１２６、仮想リセットポイントサブレイヤ１２８、およびパッチサブレイヤ１３０を含み得る。読み取り専用サブレイヤは、本明細書では読み取り専用仮想化サブレイヤとも呼ばれ、１人または複数のユーザによる変更が禁止される任意のサブレイヤを含み得る。例えば、読み取り専用サブレイヤは、管理者によってのみ変更可能なサブレイヤを含み得る。読み取り専用サブレイヤは、アプリケーションインストールの基本状態を提供し得る。これとは対照的に、読み書きサブレイヤは、読み取り専用サブレイヤの変更を禁止されたユーザによるアプリケーション変更を捕捉するように構成し得る。
【００１５】
仮想リセットポイントサブレイヤは、１人または複数のユーザに関連するデータのある時点での表現を含み得る。例えば、仮想リセットポイントサブレイヤ１２６は、第１の時点での様々なユーザのデータ（例えば、ファイル、ディレクトリ、レジストリキー、レジストリエントリ、削除エントリ）を含み得、仮想リセットポイントサブレイヤ１２８は、第２の時点でのユーザのデータを含み得る。パッチサブレイヤは、仮想化アプリケーションの更新についてのデータを含み得る。仮想化レイヤおよび仮想化アプリケーションの様々な例を、図５−図８に対応する説明において提供する。
【００１６】
図２は、仮想化サブレイヤを統合する例示的なシステム２００のブロック図である。システム２００は、計算サブシステム２１０、計算サブシステム２２０、計算サブシステム２３０、計算サブシステム２４０、およびネットワーク２５０を含み得る。計算サブシステム２１０、２２０、２３０、および２４０は、ハードウェア、計算命令（例えば、ソフトウェア）、またはそれらの組み合わせを含み得るか、またはハードウェア、計算命令（例えば、ソフトウェア）、またはそれらの組み合わせとして実施され得る。例えば、計算サブシステム２１０は管理者のコンピュータを含み得、計算サブシステム２２０、２３０、および２４０は、企業環境内のエンドユーザ計算装置を含み得る。いくつかの実施形態では、計算サブシステム２１０、２２０、２３０、２４０のうちの１つまたは複数は、デスクトップコンピュータ、ラップトップコンピュータ、携帯型計算装置、ワークステーション、サーバ、および／または他の任意の適した計算装置を含み得る。
【００１７】
図２に示すように、計算サブシステム２１０は、レイヤ統合モジュール１１２、配備モジュール１１４、および仮想化アプリケーション１２０を含み得る。計算サブシステム２２０、２３０、および２４０のそれぞれは、仮想化アプリケーション１２０のインスタンスを含み得る。例えば、計算サブシステム２２０は仮想化アプリケーションインスタンス２２２を含み得、計算サブシステム２３０は仮想化アプリケーションインスタンス２３２を含み得、計算サブシステム２４０は仮想化アプリケーションインスタンス２４２を含み得る。いくつかの実施形態では、計算サブシステム２２０、２３０、および２４０は、レイヤ統合モジュール１１２も含み得る。
【００１８】
計算サブシステム２１０、２２０、２３０、および２４０は、ネットワーク２５０を介して通信し得る。ネットワーク２５０は一般に、通信またはデータ転送に役立つことができる任意の媒体またはアーキテクチャを表す。ネットワーク２５０としては、インターネット、広域ネットワーク（ＷＡＮ）、ローカルエリアネットワーク（ＬＡＮ）、パーソナルエリアネットワーク（ＰＡＮ）、電力線通信（ＰＬＣ）、セルラネットワーク（例えば、ＧＳＭネットワーク）等が挙げられるが、これらに限定されない。ネットワーク２５０は、無線通信および／または有線通信を使用しての通信またはデータ転送に役立ち得る。
【００１９】
図３は、仮想化サブレイヤを統合する例示的な方法３００を示す。図３におけるステップは、システム１００および／またはシステム２００のうちの１つまたは複数の構成要素により実行され得る。例えば、ステップ３１０において、レイヤ統合モジュール１１２が、仮想化アプリケーション１２０の第１および第２のサブレイヤを識別し得る。
【００２０】
レイヤ統合モジュール１１２は、様々な事例での、かつ／または様々な異なるプロセスを使用した仮想化アプリケーション１２０のサブレイヤを識別し得る。例えば、ＩＴ管理者は、レイヤ統合モジュール１１２を使用し、仮想化アプリケーション１２０に基づいてパッチを作成し得る。このような実施形態では、ＩＴ管理者は、処理のために、レイヤ統合モジュール１１２から仮想化アプリケーション１２０にアクセスさせ得る。他の実施形態では、仮想化アプリケーション１２０をユーザのマシンにインストールすることができ、ユーザは、読み書き仮想化サブレイヤ１２２内の変更を読み取り専用仮想化サブレイヤ１２４内に組み込みたいことがある。このような実施形態では、ユーザは、処理のために、レイヤ統合モジュール１１２から仮想化アプリケーション１２０にアクセスさせ得る。
【００２１】
いくつかの実施形態では、レイヤ統合モジュール１１２は、ローカル記憶装置内の仮想化アプリケーション１２０にアクセスし得る。他の実施形態では、レイヤ統合モジュール１１２は、遠隔記憶装置内の仮想化アプリケーション１２０にアクセスし得る。レイヤ統合モジュール１１２は、データを読み書き仮想化サブレイヤ１２２および／または読み取り専用仮想化サブレイヤ１２４から読み取ることにより、仮想化アプリケーション１２０にアクセスして、読み書き仮想化サブレイヤ１２２と読み取り専用仮想化サブレイヤ１２４との統合に対して準備し得る。他の実施形態では、レイヤ統合モジュール１１２は、仮想化アプリケーション１２０の他の任意の仮想化サブレイヤからデータを読み取り、統合に対してサブレイヤを準備してもよい。
【００２２】
ステップ３２０において、レイヤ統合モジュール１１２は、第１のサブレイヤのインスタンスと第２のサブレイヤのインスタンスとを統合し得る。仮想化サブレイヤのインスタンスは、仮想化サブレイヤの任意のインストール（ｉｎｓｔａｌｌａｔｉｏｎ）またはコピーを含み得る。いくつかの実施形態では、仮想化サブレイヤのインスタンスは仮想化サブレイヤであり得る。例えば、読み書き仮想化サブレイヤ１２２は、ステップ３２０において参照される第１のサブレイヤのインスタンスであり得る。同様に、読み取り専用仮想化サブレイヤ１２４は、ステップ３２０において参照される第２の仮想化サブレイヤのインスタンスであり得る。このような実施形態では、レイヤ統合モジュール１１２は、読み取り専用仮想化サブレイヤ１２４と読み書き仮想化サブレイヤ１２２とを統合することにより、読み取り専用仮想化サブレイヤのインスタンスと読み書き仮想化サブレイヤのインスタンスとを統合し得る。
【００２３】
他の実施形態では、ステップ３２０において参照される読み取り専用仮想化サブレイヤのインスタンスは、仮想化アプリケーション１２０のコピーまたは他のインストールにあり得る。例えば、ステップ３２０において参照される第２の仮想化サブレイヤは、仮想化アプリケーションインスタンス２２２、仮想化アプリケーションインスタンス２３２、および／または仮想化アプリケーションインスタンス２４２の読み取り専用仮想化サブレイヤであり得る。このような実施形態では、ステップ３２０において参照される第１の仮想化サブレイヤのインスタンスは、配備モジュール１１４により計算サブシステム２２０、２３０、および／または２４０に配備されるパッチであり得る。パッチは、読み書き仮想化サブレイヤ１２２のインスタンスを表し得、仮想化アプリケーションインスタンス２２２、２３２、および／または２４２の読み取り専用サブレイヤに統合し得る。
【００２４】
いくつかの実施形態では、レイヤ統合モジュール１１２は、第１の仮想化サブレイヤからのユーザ固有データを第２の仮想化サブレイヤに統合し得る。いくつかの実施形態では、ユーザ固有データの統合は、ユーザが、アプリケーションに追加された更新またはプラグイン等のユーザ固有設定および／またはユーザが行った他の変更をアプリケーションの読み取り専用仮想化サブレイヤに含めたい場合に有用であり得る。ユーザ固有データを読み取り専用仮想化サブレイヤに統合することにより、ユーザは、ユーザの設定を含む仮想化アプリケーションの基本状態（すなわち、リセットポイント）を提供し得る。
【００２５】
レイヤ統合モジュール１１２は、読み書き仮想化サブレイヤのインスタンスからファイルシステムデータを検索し、ファイルシステムデータを読み取り専用仮想化サブレイヤのインスタンスのユーザテンプレート領域にコピーすることにより、読み書き仮想化サブレイヤ（または他の任意の仮想化サブレイヤ）のインスタンスからのユーザ固有データを読み取り専用仮想化サブレイヤのインスタンスに統合し得る。ファイルシステムデータは、任意のファイル、ディレクトリ、または読み書き仮想化サブレイヤのファイル構造内に記憶された他のデータを含み得る。
【００２６】
読み取り専用仮想化サブレイヤのユーザテンプレート領域は、ユーザ固有データを記憶するサブレイヤの任意の領域を含み得る。例えば、読み取り専用仮想化サブレイヤのユーザテンプレート領域は、仮想化レイヤがリセットされるときに、読み書きサブレイヤ内にコピーされるファイル、フォルダ、および／またはレジストリ設定を含み得る。換言すれば、仮想化レイヤがリセットされるとき（すなわち、読み書きレイヤが空になるとき）、読み取り専用サブレイヤのユーザテンプレート領域からのデータが、読み書きサブレイヤにコピーされて、リセット後、読み書きサブレイヤの新たなベースラインを確立することができる。
【００２７】
いくつかの実施形態では、読み書き仮想化サブレイヤのインスタンスからのユーザ固有データを読み取り専用仮想化サブレイヤのインスタンスに統合することは、読み書き仮想化サブレイヤのインスタンスからレジストリデータを検索すること、およびレジストリデータを読み取り専用仮想化サブレイヤのユーザテンプレート領域にコピーすることを含み得る。レジストリデータは、レジストリキーおよび／またはレジストリ値等のレジストリエントリを含み得る。いくつかの実施形態では、レジストリデータは、Ｗｉｎｄｏｗｓ（登録商標）オペレーティングシステムレジストリに記憶されるデータを指し得る。
【００２８】
読み書き仮想化サブレイヤのインスタンスからのユーザ固有データを読み取り専用仮想化サブレイヤのインスタンスに統合することは、２人以上の異なるユーザに関連するユーザ固有データを読み取り専用仮想化サブレイヤに統合することを含み得る。例えば、２つの異なるユーザプロファイルに記憶されたユーザ固有データを、単一の読み取り専用仮想化サブレイヤに統合し得る。このような実施形態では、異なるユーザ設定間の競合は、任意の適した様式で解決し得る。例えば、第１のユーザは第２のユーザよりも高い優先度を有し得る（優先度はユーザグループ、ユーザタイトル等に基づき得る）。第１および第２のユーザが同じ設定に対して異なる値を有する場合、第１のユーザの値を設定に使用することができる。
【００２９】
ユーザ固有データの統合に加えて、またはそれに代えて、レイヤ統合モジュール１１２は、第１の仮想化サブレイヤのインスタンスからのユーザ共通データを第２の仮想化サブレイヤのインスタンスに統合し得る。ユーザ共通データは、複数のユーザにより共有されるデータおよび／または特定のユーザに固有ではないデータを指し得る。換言すれば、ユーザ共通データは、コンピュータ上のすべてのユーザにとって一般的な設定およびファイルを含み得る。例えば、ユーザ共通レジストリデータは、ＨＫＥＹ＿ＬＯＣＡＬ＿ＭＡＣＨＩＮＥ  ＷＩＮＤＯＷＳレジストリハイブに記憶されるレジストリデータを含み得る。これとは対照的に、ユーザ固有レジストリデータは、ＨＫＥＹ＿ＣＵＲＲＥＮＴ＿ＵＳＥＲ＿レジストリハイブに記憶され得る。別の例として、ユーザ共通データは、複数のユーザがアクセス可能な計算装置上のファイルを含み得る。これとは対照的に、ユーザ固有データは、単一のユーザのみがアクセス可能であり、かつ／またはその単一のユーザのみに関連付けられた（例えば、ユーザのアカウントに関連付けられた）計算装置のファイルを含み得る。
【００３０】
いくつかの実施形態では、レイヤ統合モジュール１１２は、第１の仮想化サブレイヤのインスタンスと第２の仮想化サブレイヤのインスタンスとの差分を求めて、どのユーザ共通ファイルシステムデータを統合するかを判断し得る。例えば、レイヤ統合モジュール１１２は、読み取り専用仮想化サブレイヤのインスタンス内にはない、読み書き仮想化サブレイヤのインスタンス内の少なくとも１つのファイルを識別し得る。これに加えて、またはこれに代えて、レイヤ統合モジュール１１２は、読み取り専用仮想化サブレイヤのインスタンス内の対応するファイルが変更されものである、読み書き仮想化サブレイヤのインスタンス内の少なくとも１つのファイルを識別し得、かつ／または読み取り専用仮想化サブレイヤのインスタンス内にはない、読み書き仮想化サブレイヤのインスタンス内の少なくとも１つのディレクトリを識別し得る。レイヤ統合モジュール１１２は、読み書き仮想化サブレイヤのインスタンスからのファイルおよび／またはディレクトリのうちの１つまたは複数を、読み取り専用仮想化サブレイヤのインスタンス内にコピーし、かつ／または移し得る。
【００３１】
ユーザ共通レジストリデータを統合する場合、レイヤ統合モジュール１１２は、第１の仮想化レイヤレジストリ領域から１つまたは複数のレジストリキーおよび／またはレジストリ値を第２の仮想化レイヤレジストリ領域にコピーし得る。例えば、レイヤ統合モジュール１１２は、第２の仮想化サブレイヤ内のレジストリキーおよび／またはレジストリ値を、第１の仮想化レイヤからのキーおよび値で上書きし得る。これに加えて、またはこれに代えて、レイヤ統合モジュール１１２は、レジストリキーおよび／またはレジストリ値を第２の仮想化サブレイヤに追加し得る。
【００３２】
ユーザ共通データおよび／またはユーザ固有データの場合、レイヤ統合モジュール１１２は、第１の仮想化サブレイヤから削除されたファイルシステムデータおよび／またはレジストリデータを識別し得る。いくつかの実施形態では、仮想化システムは、１つまたは複数の削除済みオブジェクトファイル内の削除ファイルを追跡し得る。例えば、仮想化システムは、削除ファイルおよび／またはディレクトリのエントリを、ＤＥＬＬＩＳＴ．ＴＸＴファイル等の削除済みファイルシステムデータファイル内に記憶し得る。仮想化システムは、削除されたレジストリキーおよび／またはレジストリ値のエントリを、ＤＥＬＲＥＧ．ＴＸＴファイル等の削除済みレジストリデータファイル内に記憶し得る。
【００３３】
レイヤ統合モジュール１１２は、１つまたは複数の削除済みオブジェクトファイルを解析し得、任意のファイル、ディレクトリ、レジストリキー、レジストリ値、および／または削除済みオブジェクトファイル内で識別される他のデータを探して、第２の仮想化サブレイヤを探索し得る。レイヤ統合モジュール１１２は、削除済みオブジェクトファイル内で識別されたファイル、ディレクトリ、レジストリキー、および／またはレジストリ値を、第２の仮想化サブレイヤから削除し得る。
【００３４】
上述したように、仮想化サブレイヤは、様々な状況で統合し得る。いくつかの実施形態では、第１の仮想化サブレイヤからのデータを第２の仮想化サブレイヤに直接移し得る。他の実施形態では、第１の仮想化サブレイヤと第２の仮想化サブレイヤとの差分を計算し、差分を使用して、仮想化サブレイヤを統合し得る。
【００３５】
図３に対応する説明は、読み書きサブレイヤと読み取り専用サブレイヤとの統合の例に焦点をあてたが、図３の説明において説明したプロセスに従って、他の様々なタイプのサブレイヤを統合することも可能である。例えば、第１の仮想リセットポイントサブレイヤを第２の仮想リセットポイントサブレイヤに統合し得る。第１の仮想リセットポイントサブレイヤは、第２の仮想リセットポイントサブレイヤよりも最近の時点からのものであり得、これら２つのサブレイヤの統合は、より最近のサブレイヤ（第１の仮想リセットポイントサブレイヤ）からのデータをより古いサブレイヤ（第２の仮想リセットポイントサブレイヤ）にコピーすることを含み得る。このような実施形態では、複数のユーザのデータを第１の仮想リセットポイントサブレイヤから第２の仮想リセットポイントサブレイヤにコピーし得る。
【００３６】
他の実施形態では、パッチ仮想化サブレイヤを読み取り専用仮想化サブレイヤに統合し得る。パッチ仮想化サブレイヤを読み取り専用仮想化サブレイヤにコピーすることにより、パッチを含むリセットポイント（すなわち、読み取り専用仮想化サブレイヤ）を提供し得る。
【００３７】
図４は、差分を使用して、読み書き仮想化サブレイヤと読み取り専用仮想化サブレイヤとを統合するためのパッチを作成する例示的な方法４００を示す。図４に示すステップは、任意の適したコンピュータ実行可能コードおよび／または計算システムにより実行し得る。いくつかの実施形態では、図４に示すステップは、レイヤ統合モジュール１１２および配備モジュール１１４のうちの１つまたは複数により実行し得る。例えば、ステップ４１０において、配備モジュール１１４は仮想化アプリケーション１２０を識別し得る。
【００３８】
ステップ４２０において、配備モジュール１１４は、仮想化アプリケーション１２０の読み取り専用仮想化サブレイヤ１２４と読み書き仮想化サブレイヤ１２２との差分を求め得る。配備モジュール１１４は、読み取り専用仮想化サブレイヤ１２４と読み書き仮想化サブレイヤ１２２との差分を任意の適した様式で求め得る。例えば、配備モジュール１１４は、読み取り専用仮想化サブレイヤ１２４と読み書き仮想化サブレイヤ１２２との差分を、両サブレイヤをスキャンして両サブレイヤ内のファイルを識別することにより求め得る。配備モジュール１１４は次に、読み取り専用仮想化サブレイヤ１２４内のファイルを読み書き仮想化サブレイヤ１２２内のファイルと比較し得る。いくつかの実施形態では、読み取り専用仮想化サブレイヤ１２４と読み書き仮想化サブレイヤ１２２との差分を求めることは、読み取り専用仮想化サブレイヤ１２４内のレジストリ領域を読み書き仮想化サブレイヤ１２２内のレジストリ領域と比較することを含み得る。
【００３９】
いくつかの実施形態では、配備モジュール１１４は、サブレイヤ間のバイナリ差分（すなわち、バイナリデルタ）を作成することにより、第１の読み取り専用仮想化サブレイヤと第２の読み取り専用仮想化サブレイヤとの差分を求め得る。サブレイヤ間のバイナリ差分は、読み取り専用仮想化サブレイヤ１２４と読み書き仮想化サブレイヤ１２２とのレジストリ領域および／またはファイルシステムリダイレクションエリアの差分を生成することにより作成し得る。
【００４０】
配備モジュール１１４は、上述した任意のプロセスを使用して、読み取り専用仮想化サブレイヤ１２４と読み書き仮想化サブレイヤ１２２との差分を求め得る。この差分は、読み取り専用仮想化サブレイヤに追加すべきファイルシステムデータおよび／またはレジストリデータを識別し得る。この差分は、読み取り専用仮想化サブレイヤから削除すべきファイルシステムデータおよび／またはレジストリデータも識別し得る。
【００４１】
ステップ４３０において、配備モジュール１１４は、差分を使用して、読み書き仮想化サブレイヤからのデータで、読み取り専用仮想化サブレイヤのインスタンスを更新するように構成されたパッチを作成し得る。パッチは、読み取り専用仮想化サブレイヤ１２４と読み書き仮想化サブレイヤ１２２との任意の差分を表し得、かつ／またはそれを含み得る。例えば、パッチは、読み取り専用仮想化サブレイヤ１２４と読み書き仮想化サブレイヤ１２２とのバイナリ差分を含み得る。
【００４２】
配備モジュール１１４は、パッチを任意の適した様式で作成し得る。いくつかの実施形態では、配備モジュール１１４は、サブレイヤ間の差分を圧縮して仮想パッチアーカイブ（ＶＰＡ：Ｖｉｒｔｕａｌ  Ｐａｔｃｈ  Ａｒｃｈｉｖｅ）にすることにより、パッチを作成し得る。パッチは、他の任意のフォーマット技術および／またはパッケージング技術を使用してフォーマットし、かつ／またはパッケージングしてもよい。
【００４３】
ステップ４４０において、配備モジュール１１４は、パッチを遠隔計算装置に配備し得る。遠隔計算装置は、読み取り専用仮想化サブレイヤのインスタンスを含み得る。パッチは、任意の適した配備技術および／または送信技術を使用して配備し得る。いくつかの実施形態では、パッチは、遠隔計算装置に配備されずに、ローカル仮想化アプリケーションに統合され得る。
【００４４】
ステップ４５０において、レイヤ統合モジュール１１２は、パッチを計算装置上の読み取り専用仮想化サブレイヤのインスタンスに統合し得る。パッチは、読み書き仮想化サブレイヤ１２２からのデータを表し得、かつ／またはそれを含み得るため、パッチは、読み書き仮想化サブレイヤのインスタンスと呼ぶことができる。したがって、読み取り専用仮想化サブレイヤのインスタンスと読み書き仮想化サブレイヤのインスタンスとの統合は、パッチと読み取り専用仮想化サブレイヤのインスタンスとの統合を指し得る。他の実施形態では、読み取り専用仮想化サブレイヤのインスタンスと読み書き仮想化サブレイヤのインスタンスとの統合は、読み取り専用仮想化サブレイヤと読み書き仮想化サブレイヤとの直接の統合を指し得る。
【００４５】
レイヤ統合モジュール１１２は、パッチを読み取り専用仮想化サブレイヤのインスタンスに任意の適した様式で統合し得る。レイヤ統合モジュール１１２は、パッチを読み取り専用仮想化サブレイヤのインスタンスと統合するために、ステップ３２０において上述した任意のプロセス、または他の任意の適したプロセスを使用し得る。例えば、レイヤ統合モジュール１１２は、パッチを使用して、読み取り専用仮想化サブレイヤのインスタンスを直接変更し得る。このような実施形態は、「インプレース」更新または変更と呼ぶことができる。他の実施形態では、レイヤ統合モジュール１１２は、新たな仮想化レイヤを作成し、元の仮想化レイヤの読み取り専用仮想化サブレイヤからの１つまたは複数のファイルおよび／または設定を、新たな仮想化レイヤの読み取り専用仮想化サブレイヤにコピーし得る。レイヤ統合モジュール１１２は、パッチを新たな仮想化レイヤ内の読み取り専用仮想化サブレイヤに統合し得る。
【００４６】
以下の説明において、図４に示す方法をシステム１００および２００の構成要素によりどのように実施し得るかの例を提供する。計算サブシステム２１０を使用する管理者は、更新（例えば、ベンダーからのセキュリティ更新、バグ修正、新機能、またはアプリケーションの他の任意の変更）を仮想化アプリケーションインスタンス２２２、２３２、および２４２に適用したい場合がある。いくつかの実施形態では、更新は、自己更新（すなわち、アプリケーションに自動的にインストールされるように構成された更新）であり得る。管理者は、更新を読み書き仮想化サブレイヤ１２２に適用し得る。いくつかの実施形態では、管理者は、エラーチェックテストおよび／または他の検証テストを仮想化アプリケーションに対して実行して、読み書き仮想化サブレイヤ１２２への更新が、仮想化アプリケーション内に何等かの問題を生じさせたか否かを判断し得る。
【００４７】
仮想化アプリケーションが検証テストに合格した場合、管理者は、配備モジュール１１４を使用して、読み書き仮想化サブレイヤ１２２と読み取り専用仮想化サブレイヤ１２４との差分を表し得るパッチを作成し得る。配備モジュール１１４は、図４に対応して本開示内で提示される任意のプロセスを使用してパッチを作成し得る。管理者は次に、配備モジュール１１４を使用して、パッチを計算サブシステム２２０、２３０、および２４０に配備し得る。
【００４８】
パッチは、本明細書において説明する任意のプロセスを使用して仮想化アプリケーションインスタンス２２２、２３２、および２４２に適用し得る。いくつかの実施形態では、パッチは、パッチを仮想化アプリケーションインスタンス２２２、２３２、および２４２に自動的に統合するようにプログラムされたコードを含み得る。これに加えて、またはこれに代えて、パッチ外部のコード（例えば、計算サブシステム２２０、２３０、および２４０のうちの１つまたは複数にインストールされ得るレイヤ統合モジュール１１２）が、パッチを読み取り専用仮想化サブレイヤ１２４のインスタンスに統合され得る。
【００４９】
別の例として、ユーザは、仮想化アプリケーションの読み書き仮想化サブレイヤに多くの変更を行い得る。ユーザは、仮想化アプリケーション内のユーザ固有データおよび／またはユーザ共通データに対して１つまたは複数の変更を行い得る。ユーザは、仮想化アプリケーション内で設定、プリファレンスの変更、お気に入りの追加、更新のインストール、および／またはプラグインのインストールを行い得る。これらの変更を仮想化アプリケーションのリセットポイントとして捕捉するために、ユーザは、仮想化アプリケーションの読み書き仮想化サブレイヤを、仮想化アプリケーションの読み取り専用仮想化サブレイヤに統合し得る。
【００５０】
図４に対応する説明は、読み書きサブレイヤを読み取り専用サブレイヤに統合する例に焦点をあてているが、図４の説明に示されるプロセスに従って、他の様々な種類のサブレイヤを統合することも可能である。
【００５１】
上述したように、本開示の実施形態は、仮想化アプリケーションのサブレイヤを統合することにより、仮想化アプリケーションに新たなリセットポイントを提供し得る。本明細書に使用される場合、語句「リセットポイント」は、アプリケーションの基本状態を指し得る。管理者は、既存の読み取り専用仮想化サブレイヤを削除し、新たな読み取り専用仮想化サブレイヤで置換することにより、仮想化アプリケーションをリセットポイント（すなわち、基本状態）にリセットし得る。
【００５２】
図５−図８は、読み取り専用および読み書き仮想化レイヤを統合する実施形態を適用し得る仮想化技術および仮想化アプリケーションの例を提供する。図５は、仮想化レイヤを有する計算システム５００の構成要素の概念的編成を示す。基本オペレーティングシステム５１０が、アプリケーションを実行できると共に、ファイルシステム内のファイルにアクセスできるプラットフォームを形成し得る。基本オペレーティングシステム５１０は、読み書きに関してアプリケーションがグローバルに利用可能なレジストリ設定を含み得る。計算システム５００は、オペレーティングシステムの機能を実行するライブラリ５０８を含み得る。ライブラリ５０８は、オペレーティングシステムファイルおよびレジストリエントリを含み得る。レイヤ化システムライブラリおよびソフトウェア５０６をライブラリ５０８に結び付けることができる。レイヤ化システムライブラリおよびソフトウェア５０６は、アプリケーション５０４からのファイルシステムおよびレジストリアクセスを解釈し得る。レイヤ化システムライブラリおよびソフトウェア５０６は、計算を実行して、基本オペレーティングシステム５１０へのアクセスを引き続き許可すべきか、それともレイヤ情報５１２にリダイレクトすべきか否かを判断し得る。レイヤ情報５１２は、ファイルおよびレジストリ設定に関連する情報を含み得る。レイヤマネージャ５０１は、管理アプリケーションプログラミングインタフェース（ＡＰＩ）５０２を通してレイヤ化システムソフトウェア５０６の構成を制御し得る。
【００５３】
上述したように、アプリケーション仮想化技術によっては、各仮想化レイヤが２つのサブレイヤ、すなわち、読み取り専用サブレイヤおよび書き込み可能サブレイヤを含み得るものがある。読み取り専用サブレイヤおよび読み書きサブレイヤを利用する仮想化技術の一例は、ＳＹＭＡＮＴＥＣ  ＷＯＲＫＳＰＡＣＥ  ＶＩＲＴＵＡＬＩＺＡＴＩＯＮ（ＳＷＶ）である。
【００５４】
読み取り専用サブレイヤは、アプリケーションの不変基本状態を含み得る。いくつかの実施形態では、ユーザは、読み取り専用サブレイヤには、たとえ不注意であっても変更を行うことはできない。例えば、ＳＶＳでは、読み取り専用サブレイヤの内容の編集、更新、および／または削除を行えるのは、管理者のみである。アプリケーションは、既存の読み取り専用サブレイヤを削除し、新たな読み取り専用サブレイヤで置換することにより、リセットされ得る。
【００５５】
読み書き（すなわち、書き込み可能）サブレイヤは、アプリケーションの基本状態への変更を捕捉し得る。例えば、ユーザが、デフォルトプリファレンスを変更することによりアプリケーションを変更した場合、これら変更を読み書きサブレイヤに書き込み得る。
【００５６】
読み取り専用サブレイヤおよび読み書きサブレイヤを含む仮想化アプリケーションは、任意の適した様式で作成され得る。例えば、ＳＶＳでは、ユーザが、アプリケーション仮想化のために捕捉したいアプリケーションのセットアッププログラムを指定することができ得る。ＳＶＳは、セットアッププログラムを開始し、子プロセスおよびプロセスにより誘発される変更を含め、アプリケーション、ファイル、およびプロセスのすべてを単一の仮想ソフトウェアパッケージ（ＶＳＰ）内に捕捉する。ＳＶＳは、Ｍｉｃｒｏｓｏｆｔインストーラ（ＭＳＩ）およびサービス制御マネージャ変更も捕捉し得る。セットアッププロセスが完了すると、ＳＶＳは、捕捉プロセスを自動的に停止し得る。管理者は次に、管理者がユーザに配布したい設定を含むようにＶＳＰを編集し得る。
【００５７】
図６は、複数の仮想化レイヤを有する計算システム６００の動作を示す。図６は、アプリケーションの第１および／または第２のバージョンであり得るアプリケーション６０１を示す。アプリケーション６０１に関連する１つまたは複数のファイルは、仮想化レイヤＢ６０２および／または仮想化レイヤＡ６０４にあり得る。仮想化レイヤＢ６０２は、仮想化レイヤＡ６０４よりも高い優先度を有し得、そして仮想化レイヤＡ６０４は、基本ファイルシステム６０６よりも高い優先度を有し得る。アプリケーション６０１は以下のように動作し得る。第１のファイルアクセス６０８は、アプリケーション６０１により行われ得る。仮想化システムはまず、要求されたファイルを探してレイヤＢ６０２内を探索し得る。レイヤＢ６０２は、ファイルアクセス６０８のエントリを含み得、レイヤＢ６０２内の対応するファイルをアプリケーションに返すことができる。レイヤＢ６０２はレイヤＡ６０４および基本ファイルシステム６０６よりも高い優先度を有するため、レイヤＡ６０４および基本ファイルシステム６０６が、ファイルアクセス６０８に対応するエントリを有する場合であっても、仮想化システムはレイヤＢ６０２からのエントリを返す。
【００５８】
アプリケーション６０１は、別のファイルアクセス６１０を行い得る。仮想化システムは、レイヤＢ６０２内に対応するエントリを見つけられず、レイヤＡ６０４内にエントリを見つけ得る。第３のファイルアクセス要求６１２は、レイヤＢ６０２またはレイヤＡ６０４のいずれにも対応するエントリを有さず、したがって、仮想化システムは、基本ファイルシステム６０６からのエントリを返し得る。
【００５９】
図７は、仮想化レイヤがインストールされた計算システム７００の例を示す。計算システムは、オペレーティングシステム７１４を含み得る。オペレーティングシステム７１４は、レジストリサブシステム７１６およびファイルシステムサブシステム７１８を含み得る。ファイルシステムフィルタドライバ７１２をオペレーティングシステム７１４にインストールし得、ファイルシステムフィルタドライバ７１２は、レジストリおよびファイルシステムにアクセスする１番目の処理優先度を有し得る。管理アプリケーション７０１が、ファイルシステムフィルタドライバ７１２と対話し、レイヤに変更を行うためのインタフェースを管理者に提供し得る。ＡＰＩライブラリ７０８は、管理アプリケーション７０１がファイルシステムファイルドライバ７１２とインタフェースするための都合のよいインタフェースを提供し得る。
【００６０】
管理アプリケーション７０１は、マウントされたファイルシステムの内容が変更されたことを示す通知をＷｉｎｄｏｗｓ  Ｅｘｐｌｏｒｅｒ７０２に提供し得る。他のアプリケーション７０４は、システムと対話し、ファイルシステムフィルタドライバ７１２を通してファイルシステムおよびレジストリに対して読み書き動作を実行し得る。圧縮ライブラリ７１０を提供して、レイヤ情報を圧縮し得る。
【００６１】
ファイルシステムフィルタドライバ７１２は、各レイヤおよびサブレイヤの構成要素を２つのリダイレクト領域のうちの１つ（すなわち、システムコールをリダイレクトする領域）内に記憶し得る。例えば、ファイルシステムフィルタドライバ７１２は、レジストリ設定および属性をレジストリサブシステム７１６内に記憶し、ファイルをファイルシステムサブシステム７１８に記憶し得る。
【００６２】
各サブレイヤのレジストリリダイレクション領域内に、ファイルシステムフィルタドライバ７１２は、サブレイヤが属するレイヤの状態についての情報を記憶し得る。ファイルシステムフィルタドライバ７１２は、サブレイヤのファイルリダイレクション領域への参照、参照カウント、およびサービス制御マネージャを通して、複数のレイヤで実行されている重複サービスを処理できるようにし得るサブキーも記憶し得る。さらに、ファイルシステムフィルタドライバ７１２は、ユーザ識別情報と、データ−レイヤ仕様と、除外エントリについての情報を含むサブキーと、レイヤ固有ファイルの場所を決定する変数のリストとを含むレジストリキーへの参照も記憶し得る。名称が示唆するように、除外エントリは、ユーザがレイヤから除外したいアプリケーションファイルおよびプロセスを定義し得る。
【００６３】
ファイルリダイレクション領域のルートに、ファイルシステムフィルタドライバ７１２は、ユーザが、様々なタイプのオペレーティングシステムを実行しているコンピュータに仮想ソフトウェアアーカイブ（ＶＳＡ）を配備できるようにするオペレーティングシステム固有のファイル位置を抽象化する変数エントリを記憶し得る。ファイルシステムフィルタドライバ７１２がユーザのコンピュータにロードされると、フィルシステムフィルタドライバ７１２は、ユーザおよびシステム変数の値を決定し得る。
【００６４】
ファイルシステムフィルタドライバ７１２は、サブレイヤおよび付番されたフォルダを含むファイルをファイルリダイレクション領域ディレクトリの下に記憶し得る。フィルシステムフィルタドライバ７１２は、レジストリおよびファイルリダイレクション領域を使用して、仮想化されたファイルおよびデータの全体図をオペレーティングシステム、その延長としてアプリケーションおよびユーザに提示し得る。
【００６５】
例えば、ユーザは、Ｗｉｎｄｏｗｓ  Ｅｘｐｌｏｒｅｒを起動して、プログラムファイルフォルダの内容を見ることができる。ユーザのマシンは、Ｍｏｚｉｌｌａ  Ｆｉｒｅｆｏｘ（登録商標）等の仮想化アプリケーションを実行中であり得、かつＦｉｒｅｆｏｘレイヤがアクティブであり得る。ファイルシステムフィルタドライバ７１２は、ファイルシステムへのＥｘｐｌｏｒｅｒの呼び出しをインターセプトし得る。ユーザマシン上のレイヤに存在しないすべてのファイル、設定、およびプロセスを含み得る基本オペレーティングシステムから、ファイルシステムフィルタドライバ７１２は、プログラムファイルフォルダ内に存在する非仮想化アプリケーションのリストを収集し得る。ファイルシステムフィルタドライバ７１２は、プログラムファイルフォルダ内に通常は存在するが、この場合、ファイルリダイレクション領域内に存在するＦｉｒｅｆｏｘを含むように、Ｅｘｐｌｏｒｅｒの呼び出しをリダイレクトもし得る。ファイルシステムフィルタドライバ７１２は次に、Ｆｉｒｅｆｏｘを含め、システムがプログラムファイルディレクトリ内で見るものと予期するフォルダの完全なリストでＥｘｐｌｏｒｅｒの呼び出しに応答し得る。この例では、仮にＦｉｒｅｆｏｘレイヤが非アクティブ化された場合には、ファイルシステムフィルタドライバ７１２はその存在を隠す。
【００６６】
図８は、仮想化アプリケーション８０６ａ−ｎを含む計算システム８０２の例を示す。計算システム８０２は、いくつかのレイヤ８０４ａ−ｎを含み得る。アプリケーション８０６ａ−ｎのそれぞれは、レイヤ８０４ａ−ｎにインストールされ得る。本明細書において参照する場合、レイヤ（または仮想化レイヤ）は、アプリケーション仮想化ソフトウェアにより管理し得るファイルシステムおよびレジストの変更セットを指し得る。いくつかの実施形態では、レイヤは、１つまたは複数のファイルシステムへの変更を含むが、レジストリ変更を含まなくてもよい。
【００６７】
レイヤは、アプリケーションを基本ファイルシステムから分離することができ、アプリケーションのインストールのファイルおよびディレクトリ構造を含み得る。アプリケーションファイルおよびディレクトリは、シャドウ化または標準ファイルシステム上にオーバーレイされ得る。共有ライブラリ（ＤＬＬ等）、システムアクセス可能構成（レジストリエントリ等）、およびバージョン制御は、レイヤ化サブシステムにより管理され得る。
【００６８】
各レイヤは、計算システム内の別個の個々のエントリであり得るが、アプリケーションファイル、データ、およびシステムアクセス可能構成は、あたかもそれぞれの通常の位置に存在するかのように提示することができる。したがって、レイヤに記憶されたアプリケーションは、計算システムのオペレーティングシステムからは、あたかも従来のインストール技法を使用してインストールされたかのように見え得る。
【００６９】
仮想化レイヤにインストールされたソフトウェアアプリケーションは、ワードプロセッサ、ブラウザ、システムツール、ゲーム等を含め、一般に使用される任意の意味でのアプリケーションであり得、本明細書において説明した原理は、計算システムにインストールされる他の任意のソフトウェアに拡張することも可能である。
【００７０】
図９は、本明細書において説明され、かつ／または図示される実施形態のうちの１つまたは複数を実施可能な例示的な計算システム９１０のブロック図である。計算システム９１０は、コンピュータ可読命令を実行可能な任意のシングルまたはマルチプロセッサ計算装置またはシステムを広く表す。計算システム９１０の例としては、ワークステーション、ラップトップ、クライアント側端末、サーバ、分散計算システム、ハンドヘルド装置、または他の任意の計算システムもしくは装置が挙げられるが、これらに限定されない。最も基本的な構成では、計算システム９１０は、少なくとも１つのプロセッサ９１４およびシステムメモリ９１６を含み得る。
【００７１】
プロセッサ９１４は一般に、データを処理するか、または命令を解釈し実行することが可能な任意の種類または形態の処理ユニットを表す。特定の実施形態では、プロセッサ９１４は、命令をソフトウェアアプリケーションまたはモジュールから受け取り得る。これらの命令は、プロセッサ９１４に、本明細書において説明され、かつ／または図示される例示的な実施形態のうちの１つまたは複数の機能を実行させることができる。例えば、プロセッサ９１４は、単独で、または他の要素と組み合わせて、本明細書において説明する識別、統合、決定、使用、配備、検索、コピー、削除、位置特定、適用、およびテストの各ステップのうちの１つまたは複数を実行し得、かつ／または実行する手段であり得る。プロセッサ９１４は、本明細書において説明され、かつ／または図示される他の任意のステップ、方法、またはプロセスを実行してもよく、かつ／または実行する手段であってもよい。
【００７２】
システムメモリ９１６は一般に、データおよび／または他のコンピュータ可読命令を記憶可能な任意の種類または形態の揮発性または不揮発性記憶装置または媒体を表す。システムメモリ９１６の例としては、ランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、フラッシュメモリ、または他の任意の適したメモリ装置が挙げられるが、これらに限定されない。必要ではないが、特定の実施形態では、計算システム９１０は、揮発性メモリユニット（例えば、システムメモリ９１６等）および不揮発性記憶装置（例えば、詳細に後述するような一次記憶装置９３２等）の両方を含み得る。
【００７３】
特定の実施形態では、例示的な計算システム９１０は、プロセッサ９１４およびシステムメモリ９１６に加えて、１つまたは複数の構成要素または要素も含み得る。例えば、図９に示すように、計算システム９１０は、メモリコントローラ９１８、入出力（Ｉ／Ｏ）コントローラ９２０、および通信インタフェース９２２を備えることができ、これらのそれぞれは、通信基盤９１２を介して相互接続することができる。通信基盤９１２は一般に、計算装置のうちの１つまたは複数の構成要素間の通信に役立つことが可能な任意の種類または形態の基盤を表す。通信基盤９１２の例としては、通信バス（ＩＳＡ、ＰＣＩ、ＰＣＩｅ、または同様のバス等）およびネットワークが挙げられるが、これらに限定されない。
【００７４】
メモリコントローラ９１８は一般に、メモリもしくはデータを処理可能であるか、または計算システム９１０の１つもしくは複数の構成要素間の通信を制御可能な任意の種類または形態の装置を表す。例えば、特定の実施形態では、メモリコントローラ９１８は、通信基盤９１２を介してのプロセッサ９１４、システムメモリ９１６、およびＩ／Ｏコントローラ９２０の間での通信を制御し得る。特定の実施形態では、メモリコントローラ９１８は、単独で、または他の要素と併せて、識別、統合、決定、使用、配備、検索、コピー、削除、位置特定、適用、およびテストを行うことなどの本明細書において説明され、かつ／または図示されるステップまたは特徴のうちの１つまたは複数を実行し得、かつ／または実行する手段であり得る。
【００７５】
Ｉ／Ｏコントローラ９２０は一般に、計算装置の入力機能および出力機能を調整し、かつ／または制御することが可能な任意の種類または形態のモジュールを表す。例えば、特定の実施形態では、Ｉ／Ｏコントローラ９２０は、プロセッサ９１４、システムメモリ９１６、通信インタフェース９２２、ディスプレイアダプタ９２６、入力インタフェース９３０、および記憶装置インタフェース９３４等の計算システム９１０の１つまたは複数の要素間のデータの転送を制御し得るか、または転送に役立ち得る。Ｉ／Ｏコントローラ９２０は、例えば、本明細書において説明される識別、統合、決定、使用、配備、検索、コピー、削除、位置特定、適用、およびテストする各ステップを実行するため、かつ／または実行する手段として使用することができる。Ｉ／Ｏコントローラ９２０は、本開示に説明される他のステップおよび特徴を実行するために、かつ／または実行する手段として使用することもできる。
【００７６】
通信インタフェース９２２は、例示的な計算システム９１０と１つまたは複数の追加の装置との通信に役立つことが可能な任意の種類または形態の通信装置またはアダプタを広く表す。例えば、特定の実施形態では、通信インタフェース９２２は、計算システム９１０と、追加の計算システムを含む私設または公衆ネットワークとの通信に役立ち得る。通信インタフェース９２２の例としては、有線ネットワークインタフェース（ネットワークインタフェースカード等）、無線ネットワークインタフェース（無線ネットワークインタフェースカード等）、モデム、および他の任意の適したインタフェースが挙げられるが、これらに限定されない。少なくとも１つの実施形態では、通信インタフェース９２２は、インターネット等のネットワークへの直接リンクを介して、遠隔サーバへの直接接続を提供し得る。通信インタフェース９２２は、例えば、ローカルエリアネットワーク（イーサネットネットワークまたは無線ＩＥＥＥ８０２．１１ネットワーク等）、パーソナルエリアネットワーク（ブルートゥース、またはＩＥＥＥ規格８０２．１５．−２００２ネットワーク等）、電話網もしくはケーブル網、セルラ電話接続、衛星データ接続、または他の任意の適した接続を通して、このような接続を間接的に提供してもよい。
【００７７】
特定の実施形態では、通信インタフェース９２２は、外部バスまたは通信チャネルを介して、計算システム９１０と１つまたは複数の追加のネットワークもしくは記憶装置との通信に役立つように構成されたホストアダプタを表すこともできる。ホストアダプタの例としては、ＳＣＳＩホストアダプタ、ＵＳＢホストアダプタ、ＩＥＥＥ１３９４ホストアダプタ、ＳＡＴＡホストアダプタ、ｅＳＡＴＡホストアダプタ、ＡＴＡホストアダプタおよびＰＡＴＡホストアダプタ、ファイバチャネルインタフェースアダプタ、イーサネットアダプタ等が挙げられるが、これらに限定されない。通信インタフェース９２２は、計算システム９１０が分散または遠隔計算を行えるようにもし得る。例えば、通信インタフェース９２２は、例えば、命令を遠隔装置から受信し得るか、または命令を実行のために遠隔装置に送信し得る。特定の実施形態では、通信インタフェース９２２は、単独で、または他の要素と併せて、本明細書において開示される識別、統合、決定、使用、配備、検索、コピー、削除、位置特定、適用、およびテストする各ステップのうちの１つまたは複数を実行し得、かつ／または実行する手段であり得る。通信インタフェース９２２は、本開示に説明される他のステップおよび特徴を実行するために、かつ／または実行するための手段として使用することもできる。
【００７８】
図９に示すように、計算システム９１０は、ディスプレイアダプタ９２６を介して通信基盤９１２に結合された少なくとも１つの表示装置９２４を備えることもできる。表示装置９２４は一般に、ディスプレイアダプタ９２６により転送された情報を視覚的に表示可能な任意の種類または形態の装置を表す。同様に、ディスプレイアダプタ９２６は一般に、表示装置９２４に表示するために、グラフィックス、テキスト、および他のデータを通信基盤９１２から転送するように構成された任意の種類または形態の装置を表す。
【００７９】
図９に示すように、例示的な計算システム９１０は、入力インタフェース９３０を介して通信基盤９１２に結合された少なくとも１つの入力装置９２８を備えることもできる。入力装置９２８は一般に、コンピュータまたは人により生成された入力を例示的な計算システム９１０に提供可能な任意の種類または形態の入力装置を表す。入力装置９２８の例としては、キーボード、ポインティングデバイス、スピーチ認識装置、または他の任意の適した入力装置が挙げられるが、これらに限定されない。少なくとも１つの実施形態では、入力装置９２８は、単独で、または他の要素と併せて、本明細書において開示される識別、統合、決定、使用、配備、検索、コピー、削除、位置特定、適用、およびテストの各ステップのうちの１つまたは複数を実行し得、かつ／または実行する手段であり得る。入力装置９２８は、本開示に説明される他のステップおよび特徴を実行するために、かつ／または実行する手段として使用することもできる。
【００８０】
図９に示すように、例示的な計算システム９１０は、記憶装置インタフェース９３４を介して通信基盤９１２に結合された一次記憶装置９３２およびバックアップ記憶装置９３３を備えることもできる。記憶装置９３２および９３３は一般に、データおよび／または他のコンピュータ可読命令を記憶可能な任意の種類または形態の記憶装置または媒体を表す。例えば、記憶装置９３２および９３３は、磁気ディスクドライブ（例えば、いわゆるハードドライブ）、フロッピー（登録商標）ディスクドライブ、磁気テープドライブ、光ディスクドライブ、フラッシュドライブ等であり得る。記憶装置インタフェース９３４は一般に、データを記憶装置９３２および９３３と計算システム９１０の他の構成要素との間でデータを転送する任意の種類または形態のインタフェースまたは装置を表す。
【００８１】
特定の実施形態では、記憶装置９３２および９３３は、コンピュータソフトウェア、データ、または他のコンピュータ可読情報を記憶するように構成されたリムーバブル記憶ユニットから読み出し、かつ／またはそれに書き込むように構成することができる。適したリムーバブル記憶ユニットの例としては、フロッピー（登録商標）ディスク、磁気テープ、光ディスク、フラッシュメモリ装置等が挙げられるが、これらに限定されない。記憶装置９３２および９３３は、コンピュータソフトウェア、データ、または他のコンピュータ可読命令を計算システム９１０にロードできるようにする他の同様の構造または装置を含んでもよい。例えば、記憶装置９３２および９３３は、ソフトウェア、データ、または他のコンピュータ可読情報を読み書きするように構成し得る。記憶装置９３２および９３３は、計算システム９１０の部分であってもよく、または他のインタフェースシステムを通してアクセスされる別個の装置であってもよい。
【００８２】
記憶装置９３２および９３３は、例えば、単独で、または他の要素と組み合わせて、本明細書において開示される識別、統合、決定、使用、配備、検索、コピー、削除、位置特定、適用、およびテストの各ステップのうちの１つまたは複数を実行するために、かつ／または実行する手段として使用することもできる。記憶装置９３２および９３３は、本開示に説明される他のステップおよび特徴を実行するために、かつ／または実行する手段として使用することもできる。
【００８３】
多くの他の装置およびサブシステムを計算システム９１０に接続し得る。逆に、図９に示される構成要素および装置のすべてが、本明細書において説明され、かつ／または図示される実施形態を実施するために存在する必要はない。上で参照された装置およびサブシステムは、図９に示す方法とは異なる方法で相互接続されてもよい。計算システム９１０は、任意の数のソフトウェア構成、ファームウェア構成、および／またはハードウェア構成を利用してもよい。例えば、本明細書に開示される例示的な実施形態のうちの１つまたは複数は、コンピュータ可読媒体上のコンピュータプログラム（コンピュータソフトウェア、ソフトウェアアプリケーション、コンピュータ可読命令、またはコンピュータ制御論理とも呼ばれる）として符号化してもよい。語句「コンピュータ可読媒体」は一般に、コンピュータ可読命令を記憶可能または搬送可能な任意の形態の装置、搬送波、または媒体を指す。コンピュータ可読媒体の例としては、搬送波等の伝送型媒体、磁気記憶媒体（例えば、ハードディスクドライブおよびフロッピー（登録商標）ディスク）、光学記憶媒体（例えば、ＣＤ−ＲＯＭまたはＤＶＤ−ＲＯＭ）、電子記憶媒体（例えば、固体状態ドライブおよびフラッシュメディア）等の物理的な媒体、および他の分散システムが挙げられるが、これらに限定されない。
【００８４】
コンピュータプログラムを含むコンピュータ可読媒体は、計算システム９１０にロードすることができる。コンピュータ可読媒体に記憶されたコンピュータプログラムの全部または部分は次に、システムメモリ９１６および／または記憶装置９３２および９３３の様々な部分に記憶することができる。プロセッサ９１４により実行されると、計算システム９１０にロードされたコンピュータプログラムは、本明細書において説明され、かつ／または図示される例示的な実施形態のうちの１つまたは複数の機能をプロセッサ９１４に実行させ、かつ／またはプロセッサ９１４をそのような機能を実行する手段にさせることができる。これに加えて、またはこれに代えて、本明細書において説明され、かつ／または図示される例示的な実施形態のうちの１つまたは複数は、ファームウェアおよび／またはハードウェア内で実施され得る。例えば、計算システム９１０は、本明細書において開示される例示的な実施形態のうちの１つまたは複数を実施するように構成された特定用途向け集積回路（ＡＳＩＣ）として構成され得る。
【００８５】
図１０は、クライアントシステム１０１０、１０２０、および１０３０ならびにサーバ１０４０および１０４５をネットワーク１０５０に結合し得る例示的なネットワークアーキテクチャ１０００のブロック図である。クライアントシステム１０１０、１０２０、および１０３０は一般に、図９の例示的な計算システム９１０等の任意の種類または形態の計算装置またはシステムを表す。同様に、サーバ１０４０および１０４５は一般に、様々なデータベースサービスを提供し、かつ／または特定のソフトウェアアプリケーションを実行するように構成された、アプリケーションサーバまたはデータベースサーバ等の計算装置またはシステムを表す。ネットワーク１０５０は一般に、例えば、イントラネット、広域ネットワーク（ＷＡＮ）、ローカルエリアネットワーク（ＬＡＮ）、パーソナルエリアネットワーク（ＰＡＮ）、またはインターネットを含む、任意の通信ネットワークまたはコンピュータネットワークを表す。
【００８６】
図１０に示すように、１つまたは複数の記憶装置１０６０（１）−（Ｎ）は、サーバ１０４０に直接取り付けることができる。同様に、１つまたは複数の記憶装置１０７０（１）−（Ｎ）も、サーバ１０４５に直接取り付けることができる。記憶装置１０６０（１）−（Ｎ）および記憶装置１０７０（１）−（Ｎ）は一般に、データおよび／または他のコンピュータ可読命令を記憶可能な任意の種類または形態の記憶装置または媒体を表す。特定の実施形態では、記憶装置１０６０（１）−（Ｎ）および記憶装置１０７０（１）−（Ｎ）は、ＮＦＳ、ＳＭＢ、またはＣＩＦＳ等の様々なプロトコルを使用してサーバ１０４０および１０４５と通信するように構成されたネットワーク接続記憶装置（ＮＡＳ）を表し得る。
【００８７】
サーバ１０４０および１０４５は、ストレージエリアネットワーク（ＳＡＮ）ファブリック１０８０に接続することもできる。ＳＡＮファブリック１０８０は一般に、複数の記憶装置間の通信に役立つことが可能な任意の種類または形態のコンピュータネットワークまたはアーキテクチャを表す。ＳＡＮファブリック１０８０は、サーバ１０４０および１０４５と複数の記憶装置１０９０（１）−（Ｎ）および／またはインテリジェントストレージアレイ１０９５との通信に役立ち得る。ＳＡＮファブリック１０８０は、ネットワーク１０５０ならびにサーバ１０４０および１０４５を介して、クライアントシステム１０１０、１０２０、および１０３０と記憶装置１０９０（１）−（Ｎ）および／またはインテリジェントストレージアレイ１０９５との通信にも、装置１０９０（１）−（Ｎ）およびアレイ１０９５がクライアントシステム１０１０、１０２０、および１０３０にローカルに接続された装置として見えるように、役立ち得る。記憶装置１０６０（１）−（Ｎ）および記憶装置１０７０（１）−（Ｎ）と同様に、記憶装置１０９０（１）−（Ｎ）およびインテリジェントストレージアレイ１０９５は一般に、データおよび／または他のコンピュータ可読命令を記憶可能な任意の種類または形態の記憶装置または媒体を表す。
【００８８】
特定の実施形態において、図９の例示的な計算システム９１０を参照すると、図９の通信インタフェース９２２等の通信インタフェースを使用して、各クライアントシステム１０１０、１０２０、および１０３０とネットワーク１０５０との間に接続を提供し得る。クライアントシステム１０１０、１０２０、および１０３０は、例えば、ウェブブラウザまたは他のクライアントソフトウェアを使用して、サーバ１０４０または１０４５上の情報にアクセス可能であり得る。このようなソフトウェアは、クライアントシステム１０１０、１０２０、および１０３０が、サーバ１０４０、サーバ１０４５、記憶装置１０６０（１）−（Ｎ）、記憶装置１０７０（１）−（Ｎ）、記憶装置１０９０（１）−（Ｎ）、またはインテリジェントストレージアレイ１０９５によりホストされるデータにアクセスできるようにし得る。図１０は、データ交換にネットワーク（インターネット等）を使用することを示すが、本明細書において説明され、かつ／または図示される実施形態は、インターネットまたは特定のいかなるネットワークベースの環境にも限定されない。
【００８９】
少なくとも１つの実施形態では、本明細書において開示される例示的な実施形態のうちの１つまたは複数の全部または部分は、コンピュータプログラムとして符号化し、サーバ１０４０、サーバ１０４５、記憶装置１０６０（１）−（Ｎ）、記憶装置１０７０（１）−（Ｎ）、記憶装置１０９０（１）−（Ｎ）、インテリジェントストレージアレイ１０９５、またはこれらの任意の組み合わせにロードし、それ（ら）により実行することができる。本明細書に開示される例示的な実施形態のうちの１つまたは複数の全部または部分は、コンピュータプログラムとして符号化し、サーバ１０４０に記憶し、サーバ１０４５により実行され、ネットワーク１０５０を介して、クライアントシステム１０１０、１０２０、および１０３０に分配させることもできる。したがって、ネットワークアーキテクチャ１０００は、単独で、または他の要素と組み合わせて、本明細書に開示される識別、統合、決定、使用、配備、検索、コピー、削除、位置特定、適用、およびテストする各ステップのうちの１つまたは複数を実行し得、かつ／または実行する手段であり得る。ネットワークアーキテクチャ１０００は、本開示に説明される他のステップおよび特徴を実行するために、かつ／または実行する手段として使用することもできる。
【００９０】
上に詳述したように、計算システム９１０および／またはネットワークアーキテクチャ１０００の構成要素のうちの１つまたは複数は、単独で、または他の要素と併せて、本明細書において説明され、かつ／または図示される例示的な方法のうちの１つまたは複数のステップを実行し得、かつ／または実行する手段であり得る。例えば、計算システム（例えば、計算システム９１０および／またはネットワークアーキテクチャ１０００の構成要素のうちの１つまたは複数）は、読み取り専用仮想化サブレイヤと読み書き仮想化サブレイヤとを統合する、コンピュータにより実施される方法を実行し得る。計算システムは、読み取り専用仮想化サブレイヤおよび読み書き仮想化サブレイヤを含む仮想化アプリケーションを識別し得る。読み取り専用仮想化サブレイヤは、仮想化アプリケーションの第１の基本状態を含み得る。読み書き仮想化サブレイヤは、仮想化アプリケーションの第１の基本状態への変更を記憶するように構成し得る。計算システムは、読み取り専用仮想化サブレイヤのインスタンスと、読み書き仮想化サブレイヤのインスタンスとを統合して、仮想化アプリケーションの第２の基本状態を含み得る変更後読み取り専用仮想化サブレイヤを作成し得る。
【００９１】
いくつかの実施形態では、計算システムは、読み取り専用仮想化サブレイヤと読み書き仮想化サブレイヤとの差分を求め得る。この差分は、読み取り専用仮想化サブレイヤを表し得る。さらに、読み取り専用仮想化サブレイヤのインスタンスと読み書き仮想化サブレイヤのインスタンスとの統合は、差分を読み取り専用仮想化サブレイヤのインスタンスに統合することを含み得る。
【００９２】
特定の実施形態では、計算システムは、差分を使用して、読み取り専用仮想化サブレイヤを、読み書き仮想化サブレイヤのインスタンスからのデータで更新するように構成されたパッチを作成し得る。計算システムは、遠隔計算装置にパッチを配備することもできる。遠隔計算装置は、読み取り専用仮想化サブレイヤのインスタンスを備え得る。パッチは、読み書き仮想化サブレイヤを表し得る。さらに、読み取り専用仮想化サブレイヤのインスタンスおよび読み書き仮想化サブレイヤのインスタンスの統合は、パッチを読み取り専用仮想化サブレイヤと統合することを含み得る。
【００９３】
他の実施形態では、読み取り専用仮想化サブレイヤのインスタンスと読み書き仮想化サブレイヤのインスタンスとを統合することは、読み書き仮想化サブレイヤのインスタンスからのユーザ固有データを読み取り専用仮想化サブレイヤのインスタンスに統合することを含み得る。少なくとも１つの実施形態では、読み書き仮想化サブレイヤのインスタンスからのユーザ固有データを読み取り専用仮想化サブレイヤのインスタンスに統合することは、読み書き仮想化サブレイヤのインスタンスからファイルシステムデータを検索し、かつ／またはファイルシステムデータを読み取り専用仮想化サブレイヤのインスタンスのユーザテンプレート領域にコピーすることを含み得る。
【００９４】
いくつかの実施形態では、読み書き仮想化サブレイヤのインスタンスからのユーザ固有データを読み取り専用仮想化サブレイヤのインスタンスに統合することは、読み書き仮想化サブレイヤのインスタンスからレジストリデータを検索し、かつ／またはレジストリデータを読み取り専用仮想化サブレイヤのユーザテンプレート領域にコピーすることを含み得る。他の実施形態では、読み書き仮想化サブレイヤのインスタンスからのユーザ固有データを読み取り専用仮想化サブレイヤのインスタンスに統合することは、少なくとも２つの異なるユーザプロファイルに関連するユーザ固有データを読み取り専用仮想化サブレイヤに統合することを含み得る。特定の実施形態では、読み取り専用仮想化サブレイヤのインスタンスと読み書き仮想化サブレイヤのインスタンスとを統合することは、読み書き仮想化サブレイヤのインスタンスからのユーザ共通データを、読み取り専用仮想化サブレイヤのインスタンスに統合することを含み得る。
【００９５】
いくつかの実施形態では、計算システムは、読み取り専用仮想化サブレイヤのインスタンスと、読み書き仮想化サブレイヤのインスタンスとの差分を求め得る。計算システムは、読み書き仮想化サブレイヤのインスタンスからの差分において識別されたデータを、読み取り専用仮想化サブレイヤのインスタンスにコピーすることもできる。特定の実施形態では、読み取り専用仮想化サブレイヤのインスタンスと読み書き仮想化サブレイヤのインスタンスとの差分を求めることは、読み取り専用仮想化サブレイヤのインスタンス内にはない、読み書き仮想化サブレイヤのインスタンス内の少なくとも１つのファイルを識別すること、読み取り専用仮想化サブレイヤのインスタンス内の対応するファイルを変更したものである、読み書き仮想化サブレイヤのインスタンス内の少なくとも１つのファイルを識別すること、および／または読み取り専用仮想化サブレイヤのインスタンス内にはない、読み書き仮想化サブレイヤのインスタンス内の少なくとも１つのディレクトリを識別することを含み得る。
【００９６】
いくつかの実施形態では、計算システムは、読み書き仮想化サブレイヤのインスタンスから削除されたオブジェクトを識別する削除済みオブジェクト内で識別されたファイルを識別し得る。計算システムは、削除済みオブジェクトファイル内で識別されたディレクトリを識別し得る。計算システムは、読み取り専用仮想化サブレイヤのインスタンスから、削除済みオブジェクトファイル内で識別されたファイルおよび／または削除済みオブジェクトファイル内で識別されたディレクトリを削除することもできる。
【００９７】
特定の実施形態では、計算システムは、読み書き仮想化サブレイヤのインスタンス内のレジストリからのレジストリデータを、読み取り専用仮想化サブレイヤのインスタンス内のレジストリにコピーし得る。他の実施形態では、計算システムは、削除済みオブジェクトファイル内で識別されたレジストリデータを見つけ得る。削除済みオブジェクトファイルは、読み書き仮想化サブレイヤのインスタンスから削除されたオブジェクトを識別し得る。計算システムは、読み取り専用仮想化サブレイヤのインスタンスから、削除済みオブジェクトファイル内で識別されたレジストリデータを削除し得る。
【００９８】
いくつかの実施形態では、計算システムは、読み取り専用仮想化サブレイヤのインスタンスと読み書き仮想化サブレイヤのインスタンスとを統合する前に、読み取り専用仮想化サブレイヤに更新を適用し得る。他の実施形態では、計算システムは、更新が適用された後、かつ統合する前に、読み取り専用仮想化サブレイヤのインスタンスと読み書き仮想化サブレイヤのインスタンスとを統合すべきか否かを判断するために更新をテストし得る。
【００９９】
少なくとも１つの実施形態では、計算システムは、レイヤ統合モジュールを含み得る。レイヤ統合モジュールは、読み取り専用仮想化サブレイヤおよび読み書き仮想化サブレイヤを含む仮想化アプリケーションを識別し得る。読み取り専用仮想化サブレイヤは、仮想化アプリケーションの第１の基本状態を含み得る。読み書き仮想化サブレイヤは、仮想化アプリケーションの第１の基本状態への変更を記憶するように構成され得る。レイヤ統合モジュールは、読み取り専用仮想化サブレイヤのインスタンスと読み書き仮想化サブレイヤのインスタンスとを統合して、仮想化アプリケーションの第２の基本状態を含み得る変更後読み取り専用仮想化サブレイヤを作成し得る。計算システムは、レイヤ統合モジュールを実行するように構成されたプロセッサを含むこともできる。
【０１００】
いくつかの実施形態では、計算システムは配備モジュールを含み得る。配備モジュールは、読み取り専用仮想化サブレイヤと読み書き仮想化サブレイヤとの差分を求め得る。配備モジュールは、差分を使用して、読み取り専用仮想化サブレイヤのインスタンスを、読み書き仮想化サブレイヤのインスタンスからのデータで更新するように構成されたパッチを作成することもできる。配備モジュールはさらに、パッチを遠隔計算装置に配備することもできる。遠隔計算装置は、読み取り専用仮想化サブレイヤのインスタンスおよびレイヤ統合モジュールを備え得る。
【０１０１】
いくつかの実施形態では、レイヤ統合モジュールは、読み取り専用仮想化サブレイヤのインスタンス内にはない、読み書き仮想化サブレイヤのインスタンス内の少なくとも１つのファイルを識別し得る。レイヤ統合モジュールは、読み取り専用仮想化サブレイヤのインスタンス内の対応するファイルの変更されたものである、読み書き仮想化サブレイヤのインスタンス内の少なくとも１つのファイルを識別し得る。レイヤ統合モジュールは、読み書き仮想化サブレイヤのインスタンスから削除された少なくとも１つのファイルを識別することもできる。レイヤ統合モジュールはさらに、読み書き仮想化サブレイヤのインスタンスから削除された少なくとも１つのレジストリエントリを識別し得る。
【０１０２】
レイヤ統合モジュールは、読み書き仮想化サブレイヤのインスタンスからの少なくとも１つのファイルを、読み取り専用仮想化サブレイヤのインスタンスにコピーし得る。レイヤ統合モジュールは、読み書き仮想化サブレイヤのインスタンスからの少なくとも１つのレジストリエントリを、読み取り専用仮想化サブレイヤのインスタンスにコピーすることもできる。レイヤ統合モジュールは、読み取り専用仮想化サブレイヤのインスタンスから少なくとも１つのファイルを削除し得る。レイヤ統合モジュールは、読み取り専用仮想化サブレイヤのインスタンスから少なくとも１つのレジストリエントリを削除することもできる。少なくとも１つの実施形態では、レイヤ統合モジュールは、読み書き仮想化サブレイヤのインスタンスからのデータを読み取り専用仮想化サブレイヤのインスタンスに移し得る。
【０１０３】
上記開示に、特定のブロック図、フローチャート、および例を使用して様々な実施形態を説明したが、本明細書において説明され、かつ／または図示される各ブロック図の構成要素、フローチャートのステップ、動作、および／または構成要素は、独立して、かつ／または集合的に、広範囲のハードウェア構成、ソフトウェア構成、またはファームウェア構成（またはこれらの任意の組み合わせ）を使用して実施し得る。さらに、他の構成要素内に含まれる構成要素のいかなる開示も、同じ機能を達成するために、他の多くの構造を実施可能なため、例示的な性質のものであるとみなされるべきである。
【０１０４】
本明細書において説明され、かつ／または図示されるプロセスパラメータおよびステップシーケンスは、単なる例として与えられ、必要に応じて変更が可能である。例えば、本明細書において図示され、かつ／または説明されるステップは、特定の順序で図示または説明され得るが、これらのステップは、必ずしも図示または説明された順序で実行される必要はない。本明細書において説明され、かつ／または図示される例示的な様々な方法は、本明細書において説明されるか、もしくは図示されるステップのうちの１つもしくは複数を省いてもよく、または開示されるステップに加えて他のステップを含んでもよい。
【０１０５】
さらに、様々な実施形態を完全に機能する計算システムの文脈の中で本明細書において説明し、かつ／または図示したが、配布を実際に実行するために使用されるコンピュータ可読媒体の特定の種類に関係なく、これら例示的な実施形態のうちの１つまたは複数を様々な形態のプログラム製品として配布してもよい。本明細書に開示される実施形態は、特定のタスクを実行するソフトウェアモジュールを使用して実施してもよい。これらソフトウェアモジュールは、コンピュータ可読記憶媒体または計算システムに記憶可能なスクリプト、バッチ、または他の実行可能ファイルを含み得る。いくつかの実施形態では、これらソフトウェアモジュールは、本明細書において開示された例示的な実施形態のうちの１つまたは複数を実行するように、計算システムを構成し得る。
【０１０６】
上記説明は、当業者が、本明細書において説明した例示的な実施形態の様々な態様を最良に利用できるようにするために提供された。この例示的な説明は、網羅的であることを意図しない。すなわち、開示されるいかなる厳密な形態にも限定されないことを意図する。多くの変更および変形が、本開示の主旨および範囲から逸脱せずに可能である。本明細書に説明される実施形態が、すべての点に関して、限定的ではなく例示的であるとみなされること、および本開示の範囲を決定するには、添付の特許請求の範囲およびその均等物を参照することが望まれる。
【０１０７】
別段に記される場合を除き、本明細書および特許請求の範囲に記載された要素は、少なくとも１つは存在すると解釈されるべきである。さらに、単語「含む」および「有する」は、本明細書および特許請求の範囲において使用される場合、単語「備える」と同義であり、同じ意味を有する。
【符号の説明】
【０１０８】
１００  システム
１１０  モジュール
１１２  レイヤ統合モジュール
１１４  配備モジュール
１２０  仮想化アプリケーション
１２２  読み書き仮想化サブレイヤ
１２４  読み取り専用仮想化サブレイヤ
１２６、１２８  仮想リセットポイントサブレイヤ
１３０  パッチサブレイヤ
２００  システム
２１０、２２０、２３０、２４０  計算サブシステム
２２２、２３２、２４２  仮想化アプリケーションインスタンス
２５０  ネットワーク
３００  方法
３１０、３２０  ステップ
４００  方法
４１０、４２０、４３０、４４０、４５０  ステップ
５００  計算システム
５０１  レイヤマネージャ
５０２  管理アプリケーションプログラミングインタフェース（ＡＰＩ）
５０４  アプリケーション
５０６  レイヤ化システムライブラリ／ソフトウェア
５０８  ライブラリ
５１０  基本オペレーティングシステム
５１２  レイヤ情報
６００  計算システム
６０１  アプリケーション
Ｂ６０２、Ａ６０４  仮想化レイヤ
６０６  基本ファイルシステム
６０８  第１のファイルアクセス
６１０  別のファイルアクセス
６１２  第３のファイルアクセス要求
７００  計算システム
７０１  管理アプリケーション
７０２  Ｗｉｎｄｏｗｓ  Ｅｘｐｌｏｒｅｒ
７０４  他のアプリケーション
７０８  ＡＰＩライブラリ
７１０  圧縮ライブラリ
７１２  ファイルシステムフィルタドライバ
７１４  オペレーティングシステム
７１６  レジストリサブシステム
７１８  ファイルシステムサブシステム
８０２  計算システム
８０４ａ−ｎ  レイヤ
８０６ａ−ｎ  仮想化アプリケーション
９１０  計算システム
９１２  通信基盤
９１４  プロセッサ
９１６  システムメモリ
９１８  メモリコントローラ
９２０  入出力（Ｉ／Ｏ）コントローラ
９２２  通信インタフェース
９２４  表示装置
９２６  ディスプレイアダプタ
９２８  入力装置
９３０  入力インタフェース
９３２、９３３  記憶装置
９３４  記憶装置インタフェース
１０００  ネットワークアーキテクチャ
１０１０、１０２０、１０３０  クライアントシステム
１０４０、１０４５  サーバ
１０５０  ネットワーク
１０６０（１）−（Ｎ）  記憶装置
１０７０（１）−（Ｎ）  記憶装置
１０８０  ストレージエリアネットワーク（ＳＡＮ）ファブリック
１０９０（１）−（Ｎ）  記憶装置
１０９５  インテリジェントストレージアレイ
【図１】
2010205267.tif 000003
【図２】
2010205267.tif 000004
【図３】
2010205267.tif 000005
【図４】
2010205267.tif 000006
【図５】
2010205267.tif 000007
【図６】
2010205267.tif 000008
【図７】
2010205267.tif 000009
【図８】
2010205267.tif 000010
【図９】
2010205267.tif 000011
【図１０】
2010205267.tif 000012