【文献】
山市 良,仮想化最新情報とMicrosoft SoftGrid活用ガイド 早わかりマイクロソフト仮想化テクノロジー総覧,Windows Server World,(株)IDGジャパン,2008年 4月 1日,第13巻,第4号,pp.40-51,SoftGrid Application Virtualization 徹底活用ガイド
【文献】
国吉 博,外1名,アプリケーション仮想化製品『Symantec WorkSpace Streaming』の導入とその効果 Introduction of Application Virtualization Product [Symantec WorkSpace Streaming] and its Effect,日立TO技報 Hitachi East Japan Solutions Technical Report,株式会社日立東日本ソリューションズ HitachiEastJapan Solutions,2009年11月17日,第15号 ,pp.77-80
(58)【調査した分野】(Int.Cl.,DB名)
1つまたは複数のコンピュータ実行可能命令を含むコンピュータ可読記憶媒体であって、前記コンピュータ実行可能命令は、計算装置により実行されると、前記計算装置に、
仮想化アプリケーションの第1のユーザ設定を含む基本状態を提供する読み取り専用仮想化サブレイヤおよび前記基本状態から第2のユーザ設定への変更を記憶する読み書き仮想化サブレイヤを含む仮想化アプリケーションを識別すること、
前記読み書き仮想化サブレイヤのインスタンスからのユーザ固有データを、前記読み取り専用仮想化サブレイヤのインスタンスに統合することによって、前記読み書き仮想化サブレイヤのインスタンスを前記読み取り専用仮想化サブレイヤのインスタンスに統合すること
を実行させる、コンピュータ可読記憶媒体。
【発明を実施するための形態】
【0009】
図面全体を通して、同一の参照文字および説明は、同様であるが必ずしも同一である必要はない要素を示す。本明細書において説明される例示的な実施形態には様々な変更および代替の形態が可能であるが、特定の実施形態が例として図面に示されており、それら特定の実施形態について本明細書において詳細に説明する。しかし、本明細書において説明される例示的な実施形態は、開示される特定の形態への限定を意図しない。むしろ、本開示は、添付の特許請求の範囲内に入るすべての変更、均等物、および代替を包含する。
【0010】
本開示の実施形態は、仮想化サブレイヤを統合する様々な方法およびシステムを提供する。様々な実施形態は、読み取り専用サブレイヤ、読み書きサブレイヤ、および他の仮想化サブレイヤ(すなわち、仮想化レイヤのサブレイヤ)を仮想化アプリケーションに提供する仮想化技術の特徴を活用することができる。このような技術では、読み取り専用サブレイヤが、仮想化アプリケーションの基本状態を提供することができ、読み書きサブレイヤが、基本状態への変更を捕捉することができる。いくつかの実施形態では、仮想化アプリケーションの読み書きサブレイヤからのデータを、仮想化アプリケーションの読み取り専用サブレイヤに移し、それにより、仮想化アプリケーションの新たなリセットポイントを作成することができる。他の実施形態では、第1の仮想リセットポイントサブレイヤからのデータを第2の仮想リセットポイントサブレイヤに移すことができる。特定の実施形態では、パッチサブレイヤからのデータを読み取り専用サブレイヤおよび/または読み書きサブレイヤに統合することができる。
【0011】
図1および
図2は、仮想化サブレイヤを統合する例示的なシステムを示し、
図3および
図4は、仮想化サブレイヤの統合を達成するための方法を示す。
図5−
図8は様々なアプリケーションレイヤ化技術を示し、
図9および
図10は、本開示の実施形態を実施するための例示的な計算システムおよびネットワークアーキテクチャを示す。本明細書において使用される場合、用語「サブレイヤ」および「仮想化サブレイヤ」は、仮想化レイヤの下位エンティティを指す。仮想化サブレイヤは、読み書きサブレイヤ、読み取り専用サブレイヤ、パッチサブレイヤ、仮想リセットポイントサブレイヤ、および/または仮想化レイヤの他の任意のサブレイヤを含み得る。
【0012】
図1は、仮想化サブレイヤを統合する例示的なシステム100を示す。システム100は、モジュール110および仮想化アプリケーション120を含み得る。モジュール110は、レイヤ統合モジュール112および配備モジュール114を含み得る。レイヤ統合モジュール112は、第1および第2のサブレイヤを有する仮想化アプリケーションを識別するようにプログラムし得る。レイヤ統合モジュール112は、第2のサブレイヤのインスタンスを第1のサブレイヤのインスタンスに統合するようにもプログラムし得る。配備モジュール114は、第1のサブレイヤと第2のサブレイヤとの差分を求めるようにプログラムし得る。配備モジュール114は、差分を使用して、パッチを作成し、パッチを遠隔計算装置に配備するようにもプログラムし得る。
【0013】
特定の実施形態では、
図1のモジュール110のうちの1つまたは複数は、計算システムにより実行されると、本明細書に開示される1つまたは複数のステップを計算システムに実行させ得る1つまたは複数のソフトウェアアプリケーションまたはプログラムを表し得る。例えば、より詳細に後述するように、モジュール110のうちの1つまたは複数は、
図9の計算システム910および/または
図10の例示的なネットワークアーキテクチャ1000の部分等の1つまたは複数の計算装置で実行されるように構成されたソフトウェアモジュールを表し得る。
図1のモジュール110のうちの1つまたは複数は、本明細書に開示されるステップに関連する1つまたは複数のタスクを実行するように構成された1つまたは複数の専用コンピュータの全部または部分を表すこともできる。
【0014】
上述したように、システム100は、仮想化アプリケーション120を含み得、仮想化アプリケーション120は、読み書き仮想化サブレイヤ122、読み取り専用仮想化サブレイヤ124、仮想リセットポイントサブレイヤ126、仮想リセットポイントサブレイヤ128、およびパッチサブレイヤ130を含み得る。読み取り専用サブレイヤは、本明細書では読み取り専用仮想化サブレイヤとも呼ばれ、1人または複数のユーザによる変更が禁止される任意のサブレイヤを含み得る。例えば、読み取り専用サブレイヤは、管理者によってのみ変更可能なサブレイヤを含み得る。読み取り専用サブレイヤは、アプリケーションインストールの基本状態を提供し得る。これとは対照的に、読み書きサブレイヤは、読み取り専用サブレイヤの変更を禁止されたユーザによるアプリケーション変更を捕捉するように構成し得る。
【0015】
仮想リセットポイントサブレイヤは、1人または複数のユーザに関連するデータのある時点での表現を含み得る。例えば、仮想リセットポイントサブレイヤ126は、第1の時点での様々なユーザのデータ(例えば、ファイル、ディレクトリ、レジストリキー、レジストリエントリ、削除エントリ)を含み得、仮想リセットポイントサブレイヤ128は、第2の時点でのユーザのデータを含み得る。パッチサブレイヤは、仮想化アプリケーションの更新についてのデータを含み得る。仮想化レイヤおよび仮想化アプリケーションの様々な例を、
図5−
図8に対応する説明において提供する。
【0016】
図2は、仮想化サブレイヤを統合する例示的なシステム200のブロック図である。システム200は、計算サブシステム210、計算サブシステム220、計算サブシステム230、計算サブシステム240、およびネットワーク250を含み得る。計算サブシステム210、220、230、および240は、ハードウェア、計算命令(例えば、ソフトウェア)、またはそれらの組み合わせを含み得るか、またはハードウェア、計算命令(例えば、ソフトウェア)、またはそれらの組み合わせとして実施され得る。例えば、計算サブシステム210は管理者のコンピュータを含み得、計算サブシステム220、230、および240は、企業環境内のエンドユーザ計算装置を含み得る。いくつかの実施形態では、計算サブシステム210、220、230、240のうちの1つまたは複数は、デスクトップコンピュータ、ラップトップコンピュータ、携帯型計算装置、ワークステーション、サーバ、および/または他の任意の適した計算装置を含み得る。
【0017】
図2に示すように、計算サブシステム210は、レイヤ統合モジュール112、配備モジュール114、および仮想化アプリケーション120を含み得る。計算サブシステム220、230、および240のそれぞれは、仮想化アプリケーション120のインスタンスを含み得る。例えば、計算サブシステム220は仮想化アプリケーションインスタンス222を含み得、計算サブシステム230は仮想化アプリケーションインスタンス232を含み得、計算サブシステム240は仮想化アプリケーションインスタンス242を含み得る。いくつかの実施形態では、計算サブシステム220、230、および240は、レイヤ統合モジュール112も含み得る。
【0018】
計算サブシステム210、220、230、および240は、ネットワーク250を介して通信し得る。ネットワーク250は一般に、通信またはデータ転送に役立つことができる任意の媒体またはアーキテクチャを表す。ネットワーク250としては、インターネット、広域ネットワーク(WAN)、ローカルエリアネットワーク(LAN)、パーソナルエリアネットワーク(PAN)、電力線通信(PLC)、セルラネットワーク(例えば、GSMネットワーク)等が挙げられるが、これらに限定されない。ネットワーク250は、無線通信および/または有線通信を使用しての通信またはデータ転送に役立ち得る。
【0019】
図3は、仮想化サブレイヤを統合する例示的な方法300を示す。
図3におけるステップは、システム100および/またはシステム200のうちの1つまたは複数の構成要素により実行され得る。例えば、ステップ310において、レイヤ統合モジュール112が、仮想化アプリケーション120の第1および第2のサブレイヤを識別し得る。
【0020】
レイヤ統合モジュール112は、様々な事例での、かつ/または様々な異なるプロセスを使用した仮想化アプリケーション120のサブレイヤを識別し得る。例えば、IT管理者は、レイヤ統合モジュール112を使用し、仮想化アプリケーション120に基づいてパッチを作成し得る。このような実施形態では、IT管理者は、処理のために、レイヤ統合モジュール112から仮想化アプリケーション120にアクセスさせ得る。他の実施形態では、仮想化アプリケーション120をユーザのマシンにインストールすることができ、ユーザは、読み書き仮想化サブレイヤ122内の変更を読み取り専用仮想化サブレイヤ124内に組み込みたいことがある。このような実施形態では、ユーザは、処理のために、レイヤ統合モジュール112から仮想化アプリケーション120にアクセスさせ得る。
【0021】
いくつかの実施形態では、レイヤ統合モジュール112は、ローカル記憶装置内の仮想化アプリケーション120にアクセスし得る。他の実施形態では、レイヤ統合モジュール112は、遠隔記憶装置内の仮想化アプリケーション120にアクセスし得る。レイヤ統合モジュール112は、データを読み書き仮想化サブレイヤ122および/または読み取り専用仮想化サブレイヤ124から読み取ることにより、仮想化アプリケーション120にアクセスして、読み書き仮想化サブレイヤ122と読み取り専用仮想化サブレイヤ124との統合に対して準備し得る。他の実施形態では、レイヤ統合モジュール112は、仮想化アプリケーション120の他の任意の仮想化サブレイヤからデータを読み取り、統合に対してサブレイヤを準備してもよい。
【0022】
ステップ320において、レイヤ統合モジュール112は、第1のサブレイヤのインスタンスと第2のサブレイヤのインスタンスとを統合し得る。仮想化サブレイヤのインスタンスは、仮想化サブレイヤの任意のインストール(installation)またはコピーを含み得る。いくつかの実施形態では、仮想化サブレイヤのインスタンスは仮想化サブレイヤであり得る。例えば、読み書き仮想化サブレイヤ122は、ステップ320において参照される第1のサブレイヤのインスタンスであり得る。同様に、読み取り専用仮想化サブレイヤ124は、ステップ320において参照される第2の仮想化サブレイヤのインスタンスであり得る。このような実施形態では、レイヤ統合モジュール112は、読み取り専用仮想化サブレイヤ124と読み書き仮想化サブレイヤ122とを統合することにより、読み取り専用仮想化サブレイヤのインスタンスと読み書き仮想化サブレイヤのインスタンスとを統合し得る。
【0023】
他の実施形態では、ステップ320において参照される読み取り専用仮想化サブレイヤのインスタンスは、仮想化アプリケーション120のコピーまたは他のインストールにあり得る。例えば、ステップ320において参照される第2の仮想化サブレイヤは、仮想化アプリケーションインスタンス222、仮想化アプリケーションインスタンス232、および/または仮想化アプリケーションインスタンス242の読み取り専用仮想化サブレイヤであり得る。このような実施形態では、ステップ320において参照される第1の仮想化サブレイヤのインスタンスは、配備モジュール114により計算サブシステム220、230、および/または240に配備されるパッチであり得る。パッチは、読み書き仮想化サブレイヤ122のインスタンスを表し得、仮想化アプリケーションインスタンス222、232、および/または242の読み取り専用サブレイヤに統合し得る。
【0024】
いくつかの実施形態では、レイヤ統合モジュール112は、第1の仮想化サブレイヤからのユーザ固有データを第2の仮想化サブレイヤに統合し得る。いくつかの実施形態では、ユーザ固有データの統合は、ユーザが、アプリケーションに追加された更新またはプラグイン等のユーザ固有設定および/またはユーザが行った他の変更をアプリケーションの読み取り専用仮想化サブレイヤに含めたい場合に有用であり得る。ユーザ固有データを読み取り専用仮想化サブレイヤに統合することにより、ユーザは、ユーザの設定を含む仮想化アプリケーションの基本状態(すなわち、リセットポイント)を提供し得る。
【0025】
レイヤ統合モジュール112は、読み書き仮想化サブレイヤのインスタンスからファイルシステムデータを検索し、ファイルシステムデータを読み取り専用仮想化サブレイヤのインスタンスのユーザテンプレート領域にコピーすることにより、読み書き仮想化サブレイヤ(または他の任意の仮想化サブレイヤ)のインスタンスからのユーザ固有データを読み取り専用仮想化サブレイヤのインスタンスに統合し得る。ファイルシステムデータは、任意のファイル、ディレクトリ、または読み書き仮想化サブレイヤのファイル構造内に記憶された他のデータを含み得る。
【0026】
読み取り専用仮想化サブレイヤのユーザテンプレート領域は、ユーザ固有データを記憶するサブレイヤの任意の領域を含み得る。例えば、読み取り専用仮想化サブレイヤのユーザテンプレート領域は、仮想化レイヤがリセットされるときに、読み書きサブレイヤ内にコピーされるファイル、フォルダ、および/またはレジストリ設定を含み得る。換言すれば、仮想化レイヤがリセットされるとき(すなわち、読み書きレイヤが空になるとき)、読み取り専用サブレイヤのユーザテンプレート領域からのデータが、読み書きサブレイヤにコピーされて、リセット後、読み書きサブレイヤの新たなベースラインを確立することができる。
【0027】
いくつかの実施形態では、読み書き仮想化サブレイヤのインスタンスからのユーザ固有データを読み取り専用仮想化サブレイヤのインスタンスに統合することは、読み書き仮想化サブレイヤのインスタンスからレジストリデータを検索すること、およびレジストリデータを読み取り専用仮想化サブレイヤのユーザテンプレート領域にコピーすることを含み得る。レジストリデータは、レジストリキーおよび/またはレジストリ値等のレジストリエントリを含み得る。いくつかの実施形態では、レジストリデータは、Windows(登録商標)オペレーティングシステムレジストリに記憶されるデータを指し得る。
【0028】
読み書き仮想化サブレイヤのインスタンスからのユーザ固有データを読み取り専用仮想化サブレイヤのインスタンスに統合することは、2人以上の異なるユーザに関連するユーザ固有データを読み取り専用仮想化サブレイヤに統合することを含み得る。例えば、2つの異なるユーザプロファイルに記憶されたユーザ固有データを、単一の読み取り専用仮想化サブレイヤに統合し得る。このような実施形態では、異なるユーザ設定間の競合は、任意の適した様式で解決し得る。例えば、第1のユーザは第2のユーザよりも高い優先度を有し得る(優先度はユーザグループ、ユーザタイトル等に基づき得る)。第1および第2のユーザが同じ設定に対して異なる値を有する場合、第1のユーザの値を設定に使用することができる。
【0029】
ユーザ固有データの統合に加えて、またはそれに代えて、レイヤ統合モジュール112は、第1の仮想化サブレイヤのインスタンスからのユーザ共通データを第2の仮想化サブレイヤのインスタンスに統合し得る。ユーザ共通データは、複数のユーザにより共有されるデータおよび/または特定のユーザに固有ではないデータを指し得る。換言すれば、ユーザ共通データは、コンピュータ上のすべてのユーザにとって一般的な設定およびファイルを含み得る。例えば、ユーザ共通レジストリデータは、HKEY_LOCAL_MACHINE WINDOWSレジストリハイブに記憶されるレジストリデータを含み得る。これとは対照的に、ユーザ固有レジストリデータは、HKEY_CURRENT_USER_レジストリハイブに記憶され得る。別の例として、ユーザ共通データは、複数のユーザがアクセス可能な計算装置上のファイルを含み得る。これとは対照的に、ユーザ固有データは、単一のユーザのみがアクセス可能であり、かつ/またはその単一のユーザのみに関連付けられた(例えば、ユーザのアカウントに関連付けられた)計算装置のファイルを含み得る。
【0030】
いくつかの実施形態では、レイヤ統合モジュール112は、第1の仮想化サブレイヤのインスタンスと第2の仮想化サブレイヤのインスタンスとの差分を求めて、どのユーザ共通ファイルシステムデータを統合するかを判断し得る。例えば、レイヤ統合モジュール112は、読み取り専用仮想化サブレイヤのインスタンス内にはない、読み書き仮想化サブレイヤのインスタンス内の少なくとも1つのファイルを識別し得る。これに加えて、またはこれに代えて、レイヤ統合モジュール112は、読み取り専用仮想化サブレイヤのインスタンス内の対応するファイルが変更されものである、読み書き仮想化サブレイヤのインスタンス内の少なくとも1つのファイルを識別し得、かつ/または読み取り専用仮想化サブレイヤのインスタンス内にはない、読み書き仮想化サブレイヤのインスタンス内の少なくとも1つのディレクトリを識別し得る。レイヤ統合モジュール112は、読み書き仮想化サブレイヤのインスタンスからのファイルおよび/またはディレクトリのうちの1つまたは複数を、読み取り専用仮想化サブレイヤのインスタンス内にコピーし、かつ/または移し得る。
【0031】
ユーザ共通レジストリデータを統合する場合、レイヤ統合モジュール112は、第1の仮想化レイヤレジストリ領域から1つまたは複数のレジストリキーおよび/またはレジストリ値を第2の仮想化レイヤレジストリ領域にコピーし得る。例えば、レイヤ統合モジュール112は、第2の仮想化サブレイヤ内のレジストリキーおよび/またはレジストリ値を、第1の仮想化レイヤからのキーおよび値で上書きし得る。これに加えて、またはこれに代えて、レイヤ統合モジュール112は、レジストリキーおよび/またはレジストリ値を第2の仮想化サブレイヤに追加し得る。
【0032】
ユーザ共通データおよび/またはユーザ固有データの場合、レイヤ統合モジュール112は、第1の仮想化サブレイヤから削除されたファイルシステムデータおよび/またはレジストリデータを識別し得る。いくつかの実施形態では、仮想化システムは、1つまたは複数の削除済みオブジェクトファイル内の削除ファイルを追跡し得る。例えば、仮想化システムは、削除ファイルおよび/またはディレクトリのエントリを、DELLIST.TXTファイル等の削除済みファイルシステムデータファイル内に記憶し得る。仮想化システムは、削除されたレジストリキーおよび/またはレジストリ値のエントリを、DELREG.TXTファイル等の削除済みレジストリデータファイル内に記憶し得る。
【0033】
レイヤ統合モジュール112は、1つまたは複数の削除済みオブジェクトファイルを解析し得、任意のファイル、ディレクトリ、レジストリキー、レジストリ値、および/または削除済みオブジェクトファイル内で識別される他のデータを探して、第2の仮想化サブレイヤを探索し得る。レイヤ統合モジュール112は、削除済みオブジェクトファイル内で識別されたファイル、ディレクトリ、レジストリキー、および/またはレジストリ値を、第2の仮想化サブレイヤから削除し得る。
【0034】
上述したように、仮想化サブレイヤは、様々な状況で統合し得る。いくつかの実施形態では、第1の仮想化サブレイヤからのデータを第2の仮想化サブレイヤに直接移し得る。他の実施形態では、第1の仮想化サブレイヤと第2の仮想化サブレイヤとの差分を計算し、差分を使用して、仮想化サブレイヤを統合し得る。
【0035】
図3に対応する説明は、読み書きサブレイヤと読み取り専用サブレイヤとの統合の例に焦点をあてたが、
図3の説明において説明したプロセスに従って、他の様々なタイプのサブレイヤを統合することも可能である。例えば、第1の仮想リセットポイントサブレイヤを第2の仮想リセットポイントサブレイヤに統合し得る。第1の仮想リセットポイントサブレイヤは、第2の仮想リセットポイントサブレイヤよりも最近の時点からのものであり得、これら2つのサブレイヤの統合は、より最近のサブレイヤ(第1の仮想リセットポイントサブレイヤ)からのデータをより古いサブレイヤ(第2の仮想リセットポイントサブレイヤ)にコピーすることを含み得る。このような実施形態では、複数のユーザのデータを第1の仮想リセットポイントサブレイヤから第2の仮想リセットポイントサブレイヤにコピーし得る。
【0036】
他の実施形態では、パッチ仮想化サブレイヤを読み取り専用仮想化サブレイヤに統合し得る。パッチ仮想化サブレイヤを読み取り専用仮想化サブレイヤにコピーすることにより、パッチを含むリセットポイント(すなわち、読み取り専用仮想化サブレイヤ)を提供し得る。
【0037】
図4は、差分を使用して、読み書き仮想化サブレイヤと読み取り専用仮想化サブレイヤとを統合するためのパッチを作成する例示的な方法400を示す。
図4に示すステップは、任意の適したコンピュータ実行可能コードおよび/または計算システムにより実行し得る。いくつかの実施形態では、
図4に示すステップは、レイヤ統合モジュール112および配備モジュール114のうちの1つまたは複数により実行し得る。例えば、ステップ410において、配備モジュール114は仮想化アプリケーション120を識別し得る。
【0038】
ステップ420において、配備モジュール114は、仮想化アプリケーション120の読み取り専用仮想化サブレイヤ124と読み書き仮想化サブレイヤ122との差分を求め得る。配備モジュール114は、読み取り専用仮想化サブレイヤ124と読み書き仮想化サブレイヤ122との差分を任意の適した様式で求め得る。例えば、配備モジュール114は、読み取り専用仮想化サブレイヤ124と読み書き仮想化サブレイヤ122との差分を、両サブレイヤをスキャンして両サブレイヤ内のファイルを識別することにより求め得る。配備モジュール114は次に、読み取り専用仮想化サブレイヤ124内のファイルを読み書き仮想化サブレイヤ122内のファイルと比較し得る。いくつかの実施形態では、読み取り専用仮想化サブレイヤ124と読み書き仮想化サブレイヤ122との差分を求めることは、読み取り専用仮想化サブレイヤ124内のレジストリ領域を読み書き仮想化サブレイヤ122内のレジストリ領域と比較することを含み得る。
【0039】
いくつかの実施形態では、配備モジュール114は、サブレイヤ間のバイナリ差分(すなわち、バイナリデルタ)を作成することにより、第1の読み取り専用仮想化サブレイヤと第2の読み取り専用仮想化サブレイヤとの差分を求め得る。サブレイヤ間のバイナリ差分は、読み取り専用仮想化サブレイヤ124と読み書き仮想化サブレイヤ122とのレジストリ領域および/またはファイルシステムリダイレクションエリアの差分を生成することにより作成し得る。
【0040】
配備モジュール114は、上述した任意のプロセスを使用して、読み取り専用仮想化サブレイヤ124と読み書き仮想化サブレイヤ122との差分を求め得る。この差分は、読み取り専用仮想化サブレイヤに追加すべきファイルシステムデータおよび/またはレジストリデータを識別し得る。この差分は、読み取り専用仮想化サブレイヤから削除すべきファイルシステムデータおよび/またはレジストリデータも識別し得る。
【0041】
ステップ430において、配備モジュール114は、差分を使用して、読み書き仮想化サブレイヤからのデータで、読み取り専用仮想化サブレイヤのインスタンスを更新するように構成されたパッチを作成し得る。パッチは、読み取り専用仮想化サブレイヤ124と読み書き仮想化サブレイヤ122との任意の差分を表し得、かつ/またはそれを含み得る。例えば、パッチは、読み取り専用仮想化サブレイヤ124と読み書き仮想化サブレイヤ122とのバイナリ差分を含み得る。
【0042】
配備モジュール114は、パッチを任意の適した様式で作成し得る。いくつかの実施形態では、配備モジュール114は、サブレイヤ間の差分を圧縮して仮想パッチアーカイブ(VPA:Virtual Patch Archive)にすることにより、パッチを作成し得る。パッチは、他の任意のフォーマット技術および/またはパッケージング技術を使用してフォーマットし、かつ/またはパッケージングしてもよい。
【0043】
ステップ440において、配備モジュール114は、パッチを遠隔計算装置に配備し得る。遠隔計算装置は、読み取り専用仮想化サブレイヤのインスタンスを含み得る。パッチは、任意の適した配備技術および/または送信技術を使用して配備し得る。いくつかの実施形態では、パッチは、遠隔計算装置に配備されずに、ローカル仮想化アプリケーションに統合され得る。
【0044】
ステップ450において、レイヤ統合モジュール112は、パッチを計算装置上の読み取り専用仮想化サブレイヤのインスタンスに統合し得る。パッチは、読み書き仮想化サブレイヤ122からのデータを表し得、かつ/またはそれを含み得るため、パッチは、読み書き仮想化サブレイヤのインスタンスと呼ぶことができる。したがって、読み取り専用仮想化サブレイヤのインスタンスと読み書き仮想化サブレイヤのインスタンスとの統合は、パッチと読み取り専用仮想化サブレイヤのインスタンスとの統合を指し得る。他の実施形態では、読み取り専用仮想化サブレイヤのインスタンスと読み書き仮想化サブレイヤのインスタンスとの統合は、読み取り専用仮想化サブレイヤと読み書き仮想化サブレイヤとの直接の統合を指し得る。
【0045】
レイヤ統合モジュール112は、パッチを読み取り専用仮想化サブレイヤのインスタンスに任意の適した様式で統合し得る。レイヤ統合モジュール112は、パッチを読み取り専用仮想化サブレイヤのインスタンスと統合するために、ステップ320において上述した任意のプロセス、または他の任意の適したプロセスを使用し得る。例えば、レイヤ統合モジュール112は、パッチを使用して、読み取り専用仮想化サブレイヤのインスタンスを直接変更し得る。このような実施形態は、「インプレース」更新または変更と呼ぶことができる。他の実施形態では、レイヤ統合モジュール112は、新たな仮想化レイヤを作成し、元の仮想化レイヤの読み取り専用仮想化サブレイヤからの1つまたは複数のファイルおよび/または設定を、新たな仮想化レイヤの読み取り専用仮想化サブレイヤにコピーし得る。レイヤ統合モジュール112は、パッチを新たな仮想化レイヤ内の読み取り専用仮想化サブレイヤに統合し得る。
【0046】
以下の説明において、
図4に示す方法をシステム100および200の構成要素によりどのように実施し得るかの例を提供する。計算サブシステム210を使用する管理者は、更新(例えば、ベンダーからのセキュリティ更新、バグ修正、新機能、またはアプリケーションの他の任意の変更)を仮想化アプリケーションインスタンス222、232、および242に適用したい場合がある。いくつかの実施形態では、更新は、自己更新(すなわち、アプリケーションに自動的にインストールされるように構成された更新)であり得る。管理者は、更新を読み書き仮想化サブレイヤ122に適用し得る。いくつかの実施形態では、管理者は、エラーチェックテストおよび/または他の検証テストを仮想化アプリケーションに対して実行して、読み書き仮想化サブレイヤ122への更新が、仮想化アプリケーション内に何等かの問題を生じさせたか否かを判断し得る。
【0047】
仮想化アプリケーションが検証テストに合格した場合、管理者は、配備モジュール114を使用して、読み書き仮想化サブレイヤ122と読み取り専用仮想化サブレイヤ124との差分を表し得るパッチを作成し得る。配備モジュール114は、
図4に対応して本開示内で提示される任意のプロセスを使用してパッチを作成し得る。管理者は次に、配備モジュール114を使用して、パッチを計算サブシステム220、230、および240に配備し得る。
【0048】
パッチは、本明細書において説明する任意のプロセスを使用して仮想化アプリケーションインスタンス222、232、および242に適用し得る。いくつかの実施形態では、パッチは、パッチを仮想化アプリケーションインスタンス222、232、および242に自動的に統合するようにプログラムされたコードを含み得る。これに加えて、またはこれに代えて、パッチ外部のコード(例えば、計算サブシステム220、230、および240のうちの1つまたは複数にインストールされ得るレイヤ統合モジュール112)が、パッチを読み取り専用仮想化サブレイヤ124のインスタンスに統合され得る。
【0049】
別の例として、ユーザは、仮想化アプリケーションの読み書き仮想化サブレイヤに多くの変更を行い得る。ユーザは、仮想化アプリケーション内のユーザ固有データおよび/またはユーザ共通データに対して1つまたは複数の変更を行い得る。ユーザは、仮想化アプリケーション内で設定、プリファレンスの変更、お気に入りの追加、更新のインストール、および/またはプラグインのインストールを行い得る。これらの変更を仮想化アプリケーションのリセットポイントとして捕捉するために、ユーザは、仮想化アプリケーションの読み書き仮想化サブレイヤを、仮想化アプリケーションの読み取り専用仮想化サブレイヤに統合し得る。
【0050】
図4に対応する説明は、読み書きサブレイヤを読み取り専用サブレイヤに統合する例に焦点をあてているが、
図4の説明に示されるプロセスに従って、他の様々な種類のサブレイヤを統合することも可能である。
【0051】
上述したように、本開示の実施形態は、仮想化アプリケーションのサブレイヤを統合することにより、仮想化アプリケーションに新たなリセットポイントを提供し得る。本明細書に使用される場合、語句「リセットポイント」は、アプリケーションの基本状態を指し得る。管理者は、既存の読み取り専用仮想化サブレイヤを削除し、新たな読み取り専用仮想化サブレイヤで置換することにより、仮想化アプリケーションをリセットポイント(すなわち、基本状態)にリセットし得る。
【0052】
図5−
図8は、読み取り専用および読み書き仮想化レイヤを統合する実施形態を適用し得る仮想化技術および仮想化アプリケーションの例を提供する。
図5は、仮想化レイヤを有する計算システム500の構成要素の概念的編成を示す。基本オペレーティングシステム510が、アプリケーションを実行できると共に、ファイルシステム内のファイルにアクセスできるプラットフォームを形成し得る。基本オペレーティングシステム510は、読み書きに関してアプリケーションがグローバルに利用可能なレジストリ設定を含み得る。計算システム500は、オペレーティングシステムの機能を実行するライブラリ508を含み得る。ライブラリ508は、オペレーティングシステムファイルおよびレジストリエントリを含み得る。レイヤ化システムライブラリおよびソフトウェア506をライブラリ508に結び付けることができる。レイヤ化システムライブラリおよびソフトウェア506は、アプリケーション504からのファイルシステムおよびレジストリアクセスを解釈し得る。レイヤ化システムライブラリおよびソフトウェア506は、計算を実行して、基本オペレーティングシステム510へのアクセスを引き続き許可すべきか、それともレイヤ情報512にリダイレクトすべきか否かを判断し得る。レイヤ情報512は、ファイルおよびレジストリ設定に関連する情報を含み得る。レイヤマネージャ501は、管理アプリケーションプログラミングインタフェース(API)502を通してレイヤ化システムソフトウェア506の構成を制御し得る。
【0053】
上述したように、アプリケーション仮想化技術によっては、各仮想化レイヤが2つのサブレイヤ、すなわち、読み取り専用サブレイヤおよび書き込み可能サブレイヤを含み得るものがある。読み取り専用サブレイヤおよび読み書きサブレイヤを利用する仮想化技術の一例は、SYMANTEC WORKSPACE VIRTUALIZATION(SWV)である。
【0054】
読み取り専用サブレイヤは、アプリケーションの不変基本状態を含み得る。いくつかの実施形態では、ユーザは、読み取り専用サブレイヤには、たとえ不注意であっても変更を行うことはできない。例えば、SVSでは、読み取り専用サブレイヤの内容の編集、更新、および/または削除を行えるのは、管理者のみである。アプリケーションは、既存の読み取り専用サブレイヤを削除し、新たな読み取り専用サブレイヤで置換することにより、リセットされ得る。
【0055】
読み書き(すなわち、書き込み可能)サブレイヤは、アプリケーションの基本状態への変更を捕捉し得る。例えば、ユーザが、デフォルトプリファレンスを変更することによりアプリケーションを変更した場合、これら変更を読み書きサブレイヤに書き込み得る。
【0056】
読み取り専用サブレイヤおよび読み書きサブレイヤを含む仮想化アプリケーションは、任意の適した様式で作成され得る。例えば、SVSでは、ユーザが、アプリケーション仮想化のために捕捉したいアプリケーションのセットアッププログラムを指定することができ得る。SVSは、セットアッププログラムを開始し、子プロセスおよびプロセスにより誘発される変更を含め、アプリケーション、ファイル、およびプロセスのすべてを単一の仮想ソフトウェアパッケージ(VSP)内に捕捉する。SVSは、Microsoftインストーラ(MSI)およびサービス制御マネージャ変更も捕捉し得る。セットアッププロセスが完了すると、SVSは、捕捉プロセスを自動的に停止し得る。管理者は次に、管理者がユーザに配布したい設定を含むようにVSPを編集し得る。
【0057】
図6は、複数の仮想化レイヤを有する計算システム600の動作を示す。
図6は、アプリケーションの第1および/または第2のバージョンであり得るアプリケーション601を示す。アプリケーション601に関連する1つまたは複数のファイルは、仮想化レイヤB602および/または仮想化レイヤA604にあり得る。仮想化レイヤB602は、仮想化レイヤA604よりも高い優先度を有し得、そして仮想化レイヤA604は、基本ファイルシステム606よりも高い優先度を有し得る。アプリケーション601は以下のように動作し得る。第1のファイルアクセス608は、アプリケーション601により行われ得る。仮想化システムはまず、要求されたファイルを探してレイヤB602内を探索し得る。レイヤB602は、ファイルアクセス608のエントリを含み得、レイヤB602内の対応するファイルをアプリケーションに返すことができる。レイヤB602はレイヤA604および基本ファイルシステム606よりも高い優先度を有するため、レイヤA604および基本ファイルシステム606が、ファイルアクセス608に対応するエントリを有する場合であっても、仮想化システムはレイヤB602からのエントリを返す。
【0058】
アプリケーション601は、別のファイルアクセス610を行い得る。仮想化システムは、レイヤB602内に対応するエントリを見つけられず、レイヤA604内にエントリを見つけ得る。第3のファイルアクセス要求612は、レイヤB602またはレイヤA604のいずれにも対応するエントリを有さず、したがって、仮想化システムは、基本ファイルシステム606からのエントリを返し得る。
【0059】
図7は、仮想化レイヤがインストールされた計算システム700の例を示す。計算システムは、オペレーティングシステム714を含み得る。オペレーティングシステム714は、レジストリサブシステム716およびファイルシステムサブシステム718を含み得る。ファイルシステムフィルタドライバ712をオペレーティングシステム714にインストールし得、ファイルシステムフィルタドライバ712は、レジストリおよびファイルシステムにアクセスする1番目の処理優先度を有し得る。管理アプリケーション701が、ファイルシステムフィルタドライバ712と対話し、レイヤに変更を行うためのインタフェースを管理者に提供し得る。APIライブラリ708は、管理アプリケーション701がファイルシステムファイルドライバ712とインタフェースするための都合のよいインタフェースを提供し得る。
【0060】
管理アプリケーション701は、マウントされたファイルシステムの内容が変更されたことを示す通知をWindows Explorer702に提供し得る。他のアプリケーション704は、システムと対話し、ファイルシステムフィルタドライバ712を通してファイルシステムおよびレジストリに対して読み書き動作を実行し得る。圧縮ライブラリ710を提供して、レイヤ情報を圧縮し得る。
【0061】
ファイルシステムフィルタドライバ712は、各レイヤおよびサブレイヤの構成要素を2つのリダイレクト領域のうちの1つ(すなわち、システムコールをリダイレクトする領域)内に記憶し得る。例えば、ファイルシステムフィルタドライバ712は、レジストリ設定および属性をレジストリサブシステム716内に記憶し、ファイルをファイルシステムサブシステム718に記憶し得る。
【0062】
各サブレイヤのレジストリリダイレクション領域内に、ファイルシステムフィルタドライバ712は、サブレイヤが属するレイヤの状態についての情報を記憶し得る。ファイルシステムフィルタドライバ712は、サブレイヤのファイルリダイレクション領域への参照、参照カウント、およびサービス制御マネージャを通して、複数のレイヤで実行されている重複サービスを処理できるようにし得るサブキーも記憶し得る。さらに、ファイルシステムフィルタドライバ712は、ユーザ識別情報と、データ−レイヤ仕様と、除外エントリについての情報を含むサブキーと、レイヤ固有ファイルの場所を決定する変数のリストとを含むレジストリキーへの参照も記憶し得る。名称が示唆するように、除外エントリは、ユーザがレイヤから除外したいアプリケーションファイルおよびプロセスを定義し得る。
【0063】
ファイルリダイレクション領域のルートに、ファイルシステムフィルタドライバ712は、ユーザが、様々なタイプのオペレーティングシステムを実行しているコンピュータに仮想ソフトウェアアーカイブ(VSA)を配備できるようにするオペレーティングシステム固有のファイル位置を抽象化する変数エントリを記憶し得る。ファイルシステムフィルタドライバ712がユーザのコンピュータにロードされると、フィルシステムフィルタドライバ712は、ユーザおよびシステム変数の値を決定し得る。
【0064】
ファイルシステムフィルタドライバ712は、サブレイヤおよび付番されたフォルダを含むファイルをファイルリダイレクション領域ディレクトリの下に記憶し得る。フィルシステムフィルタドライバ712は、レジストリおよびファイルリダイレクション領域を使用して、仮想化されたファイルおよびデータの全体図をオペレーティングシステム、その延長としてアプリケーションおよびユーザに提示し得る。
【0065】
例えば、ユーザは、Windows Explorerを起動して、プログラムファイルフォルダの内容を見ることができる。ユーザのマシンは、Mozilla Firefox(登録商標)等の仮想化アプリケーションを実行中であり得、かつFirefoxレイヤがアクティブであり得る。ファイルシステムフィルタドライバ712は、ファイルシステムへのExplorerの呼び出しをインターセプトし得る。ユーザマシン上のレイヤに存在しないすべてのファイル、設定、およびプロセスを含み得る基本オペレーティングシステムから、ファイルシステムフィルタドライバ712は、プログラムファイルフォルダ内に存在する非仮想化アプリケーションのリストを収集し得る。ファイルシステムフィルタドライバ712は、プログラムファイルフォルダ内に通常は存在するが、この場合、ファイルリダイレクション領域内に存在するFirefoxを含むように、Explorerの呼び出しをリダイレクトもし得る。ファイルシステムフィルタドライバ712は次に、Firefoxを含め、システムがプログラムファイルディレクトリ内で見るものと予期するフォルダの完全なリストでExplorerの呼び出しに応答し得る。この例では、仮にFirefoxレイヤが非アクティブ化された場合には、ファイルシステムフィルタドライバ712はその存在を隠す。
【0066】
図8は、仮想化アプリケーション806a−nを含む計算システム802の例を示す。計算システム802は、いくつかのレイヤ804a−nを含み得る。アプリケーション806a−nのそれぞれは、レイヤ804a−nにインストールされ得る。本明細書において参照する場合、レイヤ(または仮想化レイヤ)は、アプリケーション仮想化ソフトウェアにより管理し得るファイルシステムおよびレジストの変更セットを指し得る。いくつかの実施形態では、レイヤは、1つまたは複数のファイルシステムへの変更を含むが、レジストリ変更を含まなくてもよい。
【0067】
レイヤは、アプリケーションを基本ファイルシステムから分離することができ、アプリケーションのインストールのファイルおよびディレクトリ構造を含み得る。アプリケーションファイルおよびディレクトリは、シャドウ化または標準ファイルシステム上にオーバーレイされ得る。共有ライブラリ(DLL等)、システムアクセス可能構成(レジストリエントリ等)、およびバージョン制御は、レイヤ化サブシステムにより管理され得る。
【0068】
各レイヤは、計算システム内の別個の個々のエントリであり得るが、アプリケーションファイル、データ、およびシステムアクセス可能構成は、あたかもそれぞれの通常の位置に存在するかのように提示することができる。したがって、レイヤに記憶されたアプリケーションは、計算システムのオペレーティングシステムからは、あたかも従来のインストール技法を使用してインストールされたかのように見え得る。
【0069】
仮想化レイヤにインストールされたソフトウェアアプリケーションは、ワードプロセッサ、ブラウザ、システムツール、ゲーム等を含め、一般に使用される任意の意味でのアプリケーションであり得、本明細書において説明した原理は、計算システムにインストールされる他の任意のソフトウェアに拡張することも可能である。
【0070】
図9は、本明細書において説明され、かつ/または図示される実施形態のうちの1つまたは複数を実施可能な例示的な計算システム910のブロック図である。計算システム910は、コンピュータ可読命令を実行可能な任意のシングルまたはマルチプロセッサ計算装置またはシステムを広く表す。計算システム910の例としては、ワークステーション、ラップトップ、クライアント側端末、サーバ、分散計算システム、ハンドヘルド装置、または他の任意の計算システムもしくは装置が挙げられるが、これらに限定されない。最も基本的な構成では、計算システム910は、少なくとも1つのプロセッサ914およびシステムメモリ916を含み得る。
【0071】
プロセッサ914は一般に、データを処理するか、または命令を解釈し実行することが可能な任意の種類または形態の処理ユニットを表す。特定の実施形態では、プロセッサ914は、命令をソフトウェアアプリケーションまたはモジュールから受け取り得る。これらの命令は、プロセッサ914に、本明細書において説明され、かつ/または図示される例示的な実施形態のうちの1つまたは複数の機能を実行させることができる。例えば、プロセッサ914は、単独で、または他の要素と組み合わせて、本明細書において説明する識別、統合、決定、使用、配備、検索、コピー、削除、位置特定、適用、およびテストの各ステップのうちの1つまたは複数を実行し得、かつ/または実行する手段であり得る。プロセッサ914は、本明細書において説明され、かつ/または図示される他の任意のステップ、方法、またはプロセスを実行してもよく、かつ/または実行する手段であってもよい。
【0072】
システムメモリ916は一般に、データおよび/または他のコンピュータ可読命令を記憶可能な任意の種類または形態の揮発性または不揮発性記憶装置または媒体を表す。システムメモリ916の例としては、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、フラッシュメモリ、または他の任意の適したメモリ装置が挙げられるが、これらに限定されない。必要ではないが、特定の実施形態では、計算システム910は、揮発性メモリユニット(例えば、システムメモリ916等)および不揮発性記憶装置(例えば、詳細に後述するような一次記憶装置932等)の両方を含み得る。
【0073】
特定の実施形態では、例示的な計算システム910は、プロセッサ914およびシステムメモリ916に加えて、1つまたは複数の構成要素または要素も含み得る。例えば、
図9に示すように、計算システム910は、メモリコントローラ918、入出力(I/O)コントローラ920、および通信インタフェース922を備えることができ、これらのそれぞれは、通信基盤912を介して相互接続することができる。通信基盤912は一般に、計算装置のうちの1つまたは複数の構成要素間の通信に役立つことが可能な任意の種類または形態の基盤を表す。通信基盤912の例としては、通信バス(ISA、PCI、PCIe、または同様のバス等)およびネットワークが挙げられるが、これらに限定されない。
【0074】
メモリコントローラ918は一般に、メモリもしくはデータを処理可能であるか、または計算システム910の1つもしくは複数の構成要素間の通信を制御可能な任意の種類または形態の装置を表す。例えば、特定の実施形態では、メモリコントローラ918は、通信基盤912を介してのプロセッサ914、システムメモリ916、およびI/Oコントローラ920の間での通信を制御し得る。特定の実施形態では、メモリコントローラ918は、単独で、または他の要素と併せて、識別、統合、決定、使用、配備、検索、コピー、削除、位置特定、適用、およびテストを行うことなどの本明細書において説明され、かつ/または図示されるステップまたは特徴のうちの1つまたは複数を実行し得、かつ/または実行する手段であり得る。
【0075】
I/Oコントローラ920は一般に、計算装置の入力機能および出力機能を調整し、かつ/または制御することが可能な任意の種類または形態のモジュールを表す。例えば、特定の実施形態では、I/Oコントローラ920は、プロセッサ914、システムメモリ916、通信インタフェース922、ディスプレイアダプタ926、入力インタフェース930、および記憶装置インタフェース934等の計算システム910の1つまたは複数の要素間のデータの転送を制御し得るか、または転送に役立ち得る。I/Oコントローラ920は、例えば、本明細書において説明される識別、統合、決定、使用、配備、検索、コピー、削除、位置特定、適用、およびテストする各ステップを実行するため、かつ/または実行する手段として使用することができる。I/Oコントローラ920は、本開示に説明される他のステップおよび特徴を実行するために、かつ/または実行する手段として使用することもできる。
【0076】
通信インタフェース922は、例示的な計算システム910と1つまたは複数の追加の装置との通信に役立つことが可能な任意の種類または形態の通信装置またはアダプタを広く表す。例えば、特定の実施形態では、通信インタフェース922は、計算システム910と、追加の計算システムを含む私設または公衆ネットワークとの通信に役立ち得る。通信インタフェース922の例としては、有線ネットワークインタフェース(ネットワークインタフェースカード等)、無線ネットワークインタフェース(無線ネットワークインタフェースカード等)、モデム、および他の任意の適したインタフェースが挙げられるが、これらに限定されない。少なくとも1つの実施形態では、通信インタフェース922は、インターネット等のネットワークへの直接リンクを介して、遠隔サーバへの直接接続を提供し得る。通信インタフェース922は、例えば、ローカルエリアネットワーク(イーサネットネットワークまたは無線IEEE802.11ネットワーク等)、パーソナルエリアネットワーク(ブルートゥース、またはIEEE規格802.15.−2002ネットワーク等)、電話網もしくはケーブル網、セルラ電話接続、衛星データ接続、または他の任意の適した接続を通して、このような接続を間接的に提供してもよい。
【0077】
特定の実施形態では、通信インタフェース922は、外部バスまたは通信チャネルを介して、計算システム910と1つまたは複数の追加のネットワークもしくは記憶装置との通信に役立つように構成されたホストアダプタを表すこともできる。ホストアダプタの例としては、SCSIホストアダプタ、USBホストアダプタ、IEEE1394ホストアダプタ、SATAホストアダプタ、eSATAホストアダプタ、ATAホストアダプタおよびPATAホストアダプタ、ファイバチャネルインタフェースアダプタ、イーサネットアダプタ等が挙げられるが、これらに限定されない。通信インタフェース922は、計算システム910が分散または遠隔計算を行えるようにもし得る。例えば、通信インタフェース922は、例えば、命令を遠隔装置から受信し得るか、または命令を実行のために遠隔装置に送信し得る。特定の実施形態では、通信インタフェース922は、単独で、または他の要素と併せて、本明細書において開示される識別、統合、決定、使用、配備、検索、コピー、削除、位置特定、適用、およびテストする各ステップのうちの1つまたは複数を実行し得、かつ/または実行する手段であり得る。通信インタフェース922は、本開示に説明される他のステップおよび特徴を実行するために、かつ/または実行するための手段として使用することもできる。
【0078】
図9に示すように、計算システム910は、ディスプレイアダプタ926を介して通信基盤912に結合された少なくとも1つの表示装置924を備えることもできる。表示装置924は一般に、ディスプレイアダプタ926により転送された情報を視覚的に表示可能な任意の種類または形態の装置を表す。同様に、ディスプレイアダプタ926は一般に、表示装置924に表示するために、グラフィックス、テキスト、および他のデータを通信基盤912から転送するように構成された任意の種類または形態の装置を表す。
【0079】
図9に示すように、例示的な計算システム910は、入力インタフェース930を介して通信基盤912に結合された少なくとも1つの入力装置928を備えることもできる。入力装置928は一般に、コンピュータまたは人により生成された入力を例示的な計算システム910に提供可能な任意の種類または形態の入力装置を表す。入力装置928の例としては、キーボード、ポインティングデバイス、スピーチ認識装置、または他の任意の適した入力装置が挙げられるが、これらに限定されない。少なくとも1つの実施形態では、入力装置928は、単独で、または他の要素と併せて、本明細書において開示される識別、統合、決定、使用、配備、検索、コピー、削除、位置特定、適用、およびテストの各ステップのうちの1つまたは複数を実行し得、かつ/または実行する手段であり得る。入力装置928は、本開示に説明される他のステップおよび特徴を実行するために、かつ/または実行する手段として使用することもできる。
【0080】
図9に示すように、例示的な計算システム910は、記憶装置インタフェース934を介して通信基盤912に結合された一次記憶装置932およびバックアップ記憶装置933を備えることもできる。記憶装置932および933は一般に、データおよび/または他のコンピュータ可読命令を記憶可能な任意の種類または形態の記憶装置または媒体を表す。例えば、記憶装置932および933は、磁気ディスクドライブ(例えば、いわゆるハードドライブ)、フロッピー(登録商標)ディスクドライブ、磁気テープドライブ、光ディスクドライブ、フラッシュドライブ等であり得る。記憶装置インタフェース934は一般に、データを記憶装置932および933と計算システム910の他の構成要素との間でデータを転送する任意の種類または形態のインタフェースまたは装置を表す。
【0081】
特定の実施形態では、記憶装置932および933は、コンピュータソフトウェア、データ、または他のコンピュータ可読情報を記憶するように構成されたリムーバブル記憶ユニットから読み出し、かつ/またはそれに書き込むように構成することができる。適したリムーバブル記憶ユニットの例としては、フロッピー(登録商標)ディスク、磁気テープ、光ディスク、フラッシュメモリ装置等が挙げられるが、これらに限定されない。記憶装置932および933は、コンピュータソフトウェア、データ、または他のコンピュータ可読命令を計算システム910にロードできるようにする他の同様の構造または装置を含んでもよい。例えば、記憶装置932および933は、ソフトウェア、データ、または他のコンピュータ可読情報を読み書きするように構成し得る。記憶装置932および933は、計算システム910の部分であってもよく、または他のインタフェースシステムを通してアクセスされる別個の装置であってもよい。
【0082】
記憶装置932および933は、例えば、単独で、または他の要素と組み合わせて、本明細書において開示される識別、統合、決定、使用、配備、検索、コピー、削除、位置特定、適用、およびテストの各ステップのうちの1つまたは複数を実行するために、かつ/または実行する手段として使用することもできる。記憶装置932および933は、本開示に説明される他のステップおよび特徴を実行するために、かつ/または実行する手段として使用することもできる。
【0083】
多くの他の装置およびサブシステムを計算システム910に接続し得る。逆に、
図9に示される構成要素および装置のすべてが、本明細書において説明され、かつ/または図示される実施形態を実施するために存在する必要はない。上で参照された装置およびサブシステムは、
図9に示す方法とは異なる方法で相互接続されてもよい。計算システム910は、任意の数のソフトウェア構成、ファームウェア構成、および/またはハードウェア構成を利用してもよい。例えば、本明細書に開示される例示的な実施形態のうちの1つまたは複数は、コンピュータ可読媒体上のコンピュータプログラム(コンピュータソフトウェア、ソフトウェアアプリケーション、コンピュータ可読命令、またはコンピュータ制御論理とも呼ばれる)として符号化してもよい。語句「コンピュータ可読媒体」は一般に、コンピュータ可読命令を記憶可能または搬送可能な任意の形態の装置、搬送波、または媒体を指す。コンピュータ可読媒体の例としては、搬送波等の伝送型媒体、磁気記憶媒体(例えば、ハードディスクドライブおよびフロッピー(登録商標)ディスク)、光学記憶媒体(例えば、CD−ROMまたはDVD−ROM)、電子記憶媒体(例えば、固体状態ドライブおよびフラッシュメディア)等の物理的な媒体、および他の分散システムが挙げられるが、これらに限定されない。
【0084】
コンピュータプログラムを含むコンピュータ可読媒体は、計算システム910にロードすることができる。コンピュータ可読媒体に記憶されたコンピュータプログラムの全部または部分は次に、システムメモリ916および/または記憶装置932および933の様々な部分に記憶することができる。プロセッサ914により実行されると、計算システム910にロードされたコンピュータプログラムは、本明細書において説明され、かつ/または図示される例示的な実施形態のうちの1つまたは複数の機能をプロセッサ914に実行させ、かつ/またはプロセッサ914をそのような機能を実行する手段にさせることができる。これに加えて、またはこれに代えて、本明細書において説明され、かつ/または図示される例示的な実施形態のうちの1つまたは複数は、ファームウェアおよび/またはハードウェア内で実施され得る。例えば、計算システム910は、本明細書において開示される例示的な実施形態のうちの1つまたは複数を実施するように構成された特定用途向け集積回路(ASIC)として構成され得る。
【0085】
図10は、クライアントシステム1010、1020、および1030ならびにサーバ1040および1045をネットワーク1050に結合し得る例示的なネットワークアーキテクチャ1000のブロック図である。クライアントシステム1010、1020、および1030は一般に、
図9の例示的な計算システム910等の任意の種類または形態の計算装置またはシステムを表す。同様に、サーバ1040および1045は一般に、様々なデータベースサービスを提供し、かつ/または特定のソフトウェアアプリケーションを実行するように構成された、アプリケーションサーバまたはデータベースサーバ等の計算装置またはシステムを表す。ネットワーク1050は一般に、例えば、イントラネット、広域ネットワーク(WAN)、ローカルエリアネットワーク(LAN)、パーソナルエリアネットワーク(PAN)、またはインターネットを含む、任意の通信ネットワークまたはコンピュータネットワークを表す。
【0086】
図10に示すように、1つまたは複数の記憶装置1060(1)−(N)は、サーバ1040に直接取り付けることができる。同様に、1つまたは複数の記憶装置1070(1)−(N)も、サーバ1045に直接取り付けることができる。記憶装置1060(1)−(N)および記憶装置1070(1)−(N)は一般に、データおよび/または他のコンピュータ可読命令を記憶可能な任意の種類または形態の記憶装置または媒体を表す。特定の実施形態では、記憶装置1060(1)−(N)および記憶装置1070(1)−(N)は、NFS、SMB、またはCIFS等の様々なプロトコルを使用してサーバ1040および1045と通信するように構成されたネットワーク接続記憶装置(NAS)を表し得る。
【0087】
サーバ1040および1045は、ストレージエリアネットワーク(SAN)ファブリック1080に接続することもできる。SANファブリック1080は一般に、複数の記憶装置間の通信に役立つことが可能な任意の種類または形態のコンピュータネットワークまたはアーキテクチャを表す。SANファブリック1080は、サーバ1040および1045と複数の記憶装置1090(1)−(N)および/またはインテリジェントストレージアレイ1095との通信に役立ち得る。SANファブリック1080は、ネットワーク1050ならびにサーバ1040および1045を介して、クライアントシステム1010、1020、および1030と記憶装置1090(1)−(N)および/またはインテリジェントストレージアレイ1095との通信にも、装置1090(1)−(N)およびアレイ1095がクライアントシステム1010、1020、および1030にローカルに接続された装置として見えるように、役立ち得る。記憶装置1060(1)−(N)および記憶装置1070(1)−(N)と同様に、記憶装置1090(1)−(N)およびインテリジェントストレージアレイ1095は一般に、データおよび/または他のコンピュータ可読命令を記憶可能な任意の種類または形態の記憶装置または媒体を表す。
【0088】
特定の実施形態において、
図9の例示的な計算システム910を参照すると、
図9の通信インタフェース922等の通信インタフェースを使用して、各クライアントシステム1010、1020、および1030とネットワーク1050との間に接続を提供し得る。クライアントシステム1010、1020、および1030は、例えば、ウェブブラウザまたは他のクライアントソフトウェアを使用して、サーバ1040または1045上の情報にアクセス可能であり得る。このようなソフトウェアは、クライアントシステム1010、1020、および1030が、サーバ1040、サーバ1045、記憶装置1060(1)−(N)、記憶装置1070(1)−(N)、記憶装置1090(1)−(N)、またはインテリジェントストレージアレイ1095によりホストされるデータにアクセスできるようにし得る。
図10は、データ交換にネットワーク(インターネット等)を使用することを示すが、本明細書において説明され、かつ/または図示される実施形態は、インターネットまたは特定のいかなるネットワークベースの環境にも限定されない。
【0089】
少なくとも1つの実施形態では、本明細書において開示される例示的な実施形態のうちの1つまたは複数の全部または部分は、コンピュータプログラムとして符号化し、サーバ1040、サーバ1045、記憶装置1060(1)−(N)、記憶装置1070(1)−(N)、記憶装置1090(1)−(N)、インテリジェントストレージアレイ1095、またはこれらの任意の組み合わせにロードし、それ(ら)により実行することができる。本明細書に開示される例示的な実施形態のうちの1つまたは複数の全部または部分は、コンピュータプログラムとして符号化し、サーバ1040に記憶し、サーバ1045により実行され、ネットワーク1050を介して、クライアントシステム1010、1020、および1030に分配させることもできる。したがって、ネットワークアーキテクチャ1000は、単独で、または他の要素と組み合わせて、本明細書に開示される識別、統合、決定、使用、配備、検索、コピー、削除、位置特定、適用、およびテストする各ステップのうちの1つまたは複数を実行し得、かつ/または実行する手段であり得る。ネットワークアーキテクチャ1000は、本開示に説明される他のステップおよび特徴を実行するために、かつ/または実行する手段として使用することもできる。
【0090】
上に詳述したように、計算システム910および/またはネットワークアーキテクチャ1000の構成要素のうちの1つまたは複数は、単独で、または他の要素と併せて、本明細書において説明され、かつ/または図示される例示的な方法のうちの1つまたは複数のステップを実行し得、かつ/または実行する手段であり得る。例えば、計算システム(例えば、計算システム910および/またはネットワークアーキテクチャ1000の構成要素のうちの1つまたは複数)は、読み取り専用仮想化サブレイヤと読み書き仮想化サブレイヤとを統合する、コンピュータにより実施される方法を実行し得る。計算システムは、読み取り専用仮想化サブレイヤおよび読み書き仮想化サブレイヤを含む仮想化アプリケーションを識別し得る。読み取り専用仮想化サブレイヤは、仮想化アプリケーションの第1の基本状態を含み得る。読み書き仮想化サブレイヤは、仮想化アプリケーションの第1の基本状態への変更を記憶するように構成し得る。計算システムは、読み取り専用仮想化サブレイヤのインスタンスと、読み書き仮想化サブレイヤのインスタンスとを統合して、仮想化アプリケーションの第2の基本状態を含み得る変更後読み取り専用仮想化サブレイヤを作成し得る。
【0091】
いくつかの実施形態では、計算システムは、読み取り専用仮想化サブレイヤと読み書き仮想化サブレイヤとの差分を求め得る。この差分は、読み取り専用仮想化サブレイヤを表し得る。さらに、読み取り専用仮想化サブレイヤのインスタンスと読み書き仮想化サブレイヤのインスタンスとの統合は、差分を読み取り専用仮想化サブレイヤのインスタンスに統合することを含み得る。
【0092】
特定の実施形態では、計算システムは、差分を使用して、読み取り専用仮想化サブレイヤを、読み書き仮想化サブレイヤのインスタンスからのデータで更新するように構成されたパッチを作成し得る。計算システムは、遠隔計算装置にパッチを配備することもできる。遠隔計算装置は、読み取り専用仮想化サブレイヤのインスタンスを備え得る。パッチは、読み書き仮想化サブレイヤを表し得る。さらに、読み取り専用仮想化サブレイヤのインスタンスおよび読み書き仮想化サブレイヤのインスタンスの統合は、パッチを読み取り専用仮想化サブレイヤと統合することを含み得る。
【0093】
他の実施形態では、読み取り専用仮想化サブレイヤのインスタンスと読み書き仮想化サブレイヤのインスタンスとを統合することは、読み書き仮想化サブレイヤのインスタンスからのユーザ固有データを読み取り専用仮想化サブレイヤのインスタンスに統合することを含み得る。少なくとも1つの実施形態では、読み書き仮想化サブレイヤのインスタンスからのユーザ固有データを読み取り専用仮想化サブレイヤのインスタンスに統合することは、読み書き仮想化サブレイヤのインスタンスからファイルシステムデータを検索し、かつ/またはファイルシステムデータを読み取り専用仮想化サブレイヤのインスタンスのユーザテンプレート領域にコピーすることを含み得る。
【0094】
いくつかの実施形態では、読み書き仮想化サブレイヤのインスタンスからのユーザ固有データを読み取り専用仮想化サブレイヤのインスタンスに統合することは、読み書き仮想化サブレイヤのインスタンスからレジストリデータを検索し、かつ/またはレジストリデータを読み取り専用仮想化サブレイヤのユーザテンプレート領域にコピーすることを含み得る。他の実施形態では、読み書き仮想化サブレイヤのインスタンスからのユーザ固有データを読み取り専用仮想化サブレイヤのインスタンスに統合することは、少なくとも2つの異なるユーザプロファイルに関連するユーザ固有データを読み取り専用仮想化サブレイヤに統合することを含み得る。特定の実施形態では、読み取り専用仮想化サブレイヤのインスタンスと読み書き仮想化サブレイヤのインスタンスとを統合することは、読み書き仮想化サブレイヤのインスタンスからのユーザ共通データを、読み取り専用仮想化サブレイヤのインスタンスに統合することを含み得る。
【0095】
いくつかの実施形態では、計算システムは、読み取り専用仮想化サブレイヤのインスタンスと、読み書き仮想化サブレイヤのインスタンスとの差分を求め得る。計算システムは、読み書き仮想化サブレイヤのインスタンスからの差分において識別されたデータを、読み取り専用仮想化サブレイヤのインスタンスにコピーすることもできる。特定の実施形態では、読み取り専用仮想化サブレイヤのインスタンスと読み書き仮想化サブレイヤのインスタンスとの差分を求めることは、読み取り専用仮想化サブレイヤのインスタンス内にはない、読み書き仮想化サブレイヤのインスタンス内の少なくとも1つのファイルを識別すること、読み取り専用仮想化サブレイヤのインスタンス内の対応するファイルを変更したものである、読み書き仮想化サブレイヤのインスタンス内の少なくとも1つのファイルを識別すること、および/または読み取り専用仮想化サブレイヤのインスタンス内にはない、読み書き仮想化サブレイヤのインスタンス内の少なくとも1つのディレクトリを識別することを含み得る。
【0096】
いくつかの実施形態では、計算システムは、読み書き仮想化サブレイヤのインスタンスから削除されたオブジェクトを識別する削除済みオブジェクト内で識別されたファイルを識別し得る。計算システムは、削除済みオブジェクトファイル内で識別されたディレクトリを識別し得る。計算システムは、読み取り専用仮想化サブレイヤのインスタンスから、削除済みオブジェクトファイル内で識別されたファイルおよび/または削除済みオブジェクトファイル内で識別されたディレクトリを削除することもできる。
【0097】
特定の実施形態では、計算システムは、読み書き仮想化サブレイヤのインスタンス内のレジストリからのレジストリデータを、読み取り専用仮想化サブレイヤのインスタンス内のレジストリにコピーし得る。他の実施形態では、計算システムは、削除済みオブジェクトファイル内で識別されたレジストリデータを見つけ得る。削除済みオブジェクトファイルは、読み書き仮想化サブレイヤのインスタンスから削除されたオブジェクトを識別し得る。計算システムは、読み取り専用仮想化サブレイヤのインスタンスから、削除済みオブジェクトファイル内で識別されたレジストリデータを削除し得る。
【0098】
いくつかの実施形態では、計算システムは、読み取り専用仮想化サブレイヤのインスタンスと読み書き仮想化サブレイヤのインスタンスとを統合する前に、読み取り専用仮想化サブレイヤに更新を適用し得る。他の実施形態では、計算システムは、更新が適用された後、かつ統合する前に、読み取り専用仮想化サブレイヤのインスタンスと読み書き仮想化サブレイヤのインスタンスとを統合すべきか否かを判断するために更新をテストし得る。
【0099】
少なくとも1つの実施形態では、計算システムは、レイヤ統合モジュールを含み得る。レイヤ統合モジュールは、読み取り専用仮想化サブレイヤおよび読み書き仮想化サブレイヤを含む仮想化アプリケーションを識別し得る。読み取り専用仮想化サブレイヤは、仮想化アプリケーションの第1の基本状態を含み得る。読み書き仮想化サブレイヤは、仮想化アプリケーションの第1の基本状態への変更を記憶するように構成され得る。レイヤ統合モジュールは、読み取り専用仮想化サブレイヤのインスタンスと読み書き仮想化サブレイヤのインスタンスとを統合して、仮想化アプリケーションの第2の基本状態を含み得る変更後読み取り専用仮想化サブレイヤを作成し得る。計算システムは、レイヤ統合モジュールを実行するように構成されたプロセッサを含むこともできる。
【0100】
いくつかの実施形態では、計算システムは配備モジュールを含み得る。配備モジュールは、読み取り専用仮想化サブレイヤと読み書き仮想化サブレイヤとの差分を求め得る。配備モジュールは、差分を使用して、読み取り専用仮想化サブレイヤのインスタンスを、読み書き仮想化サブレイヤのインスタンスからのデータで更新するように構成されたパッチを作成することもできる。配備モジュールはさらに、パッチを遠隔計算装置に配備することもできる。遠隔計算装置は、読み取り専用仮想化サブレイヤのインスタンスおよびレイヤ統合モジュールを備え得る。
【0101】
いくつかの実施形態では、レイヤ統合モジュールは、読み取り専用仮想化サブレイヤのインスタンス内にはない、読み書き仮想化サブレイヤのインスタンス内の少なくとも1つのファイルを識別し得る。レイヤ統合モジュールは、読み取り専用仮想化サブレイヤのインスタンス内の対応するファイルの変更されたものである、読み書き仮想化サブレイヤのインスタンス内の少なくとも1つのファイルを識別し得る。レイヤ統合モジュールは、読み書き仮想化サブレイヤのインスタンスから削除された少なくとも1つのファイルを識別することもできる。レイヤ統合モジュールはさらに、読み書き仮想化サブレイヤのインスタンスから削除された少なくとも1つのレジストリエントリを識別し得る。
【0102】
レイヤ統合モジュールは、読み書き仮想化サブレイヤのインスタンスからの少なくとも1つのファイルを、読み取り専用仮想化サブレイヤのインスタンスにコピーし得る。レイヤ統合モジュールは、読み書き仮想化サブレイヤのインスタンスからの少なくとも1つのレジストリエントリを、読み取り専用仮想化サブレイヤのインスタンスにコピーすることもできる。レイヤ統合モジュールは、読み取り専用仮想化サブレイヤのインスタンスから少なくとも1つのファイルを削除し得る。レイヤ統合モジュールは、読み取り専用仮想化サブレイヤのインスタンスから少なくとも1つのレジストリエントリを削除することもできる。少なくとも1つの実施形態では、レイヤ統合モジュールは、読み書き仮想化サブレイヤのインスタンスからのデータを読み取り専用仮想化サブレイヤのインスタンスに移し得る。
【0103】
上記開示に、特定のブロック図、フローチャート、および例を使用して様々な実施形態を説明したが、本明細書において説明され、かつ/または図示される各ブロック図の構成要素、フローチャートのステップ、動作、および/または構成要素は、独立して、かつ/または集合的に、広範囲のハードウェア構成、ソフトウェア構成、またはファームウェア構成(またはこれらの任意の組み合わせ)を使用して実施し得る。さらに、他の構成要素内に含まれる構成要素のいかなる開示も、同じ機能を達成するために、他の多くの構造を実施可能なため、例示的な性質のものであるとみなされるべきである。
【0104】
本明細書において説明され、かつ/または図示されるプロセスパラメータおよびステップシーケンスは、単なる例として与えられ、必要に応じて変更が可能である。例えば、本明細書において図示され、かつ/または説明されるステップは、特定の順序で図示または説明され得るが、これらのステップは、必ずしも図示または説明された順序で実行される必要はない。本明細書において説明され、かつ/または図示される例示的な様々な方法は、本明細書において説明されるか、もしくは図示されるステップのうちの1つもしくは複数を省いてもよく、または開示されるステップに加えて他のステップを含んでもよい。
【0105】
さらに、様々な実施形態を完全に機能する計算システムの文脈の中で本明細書において説明し、かつ/または図示したが、配布を実際に実行するために使用されるコンピュータ可読媒体の特定の種類に関係なく、これら例示的な実施形態のうちの1つまたは複数を様々な形態のプログラム製品として配布してもよい。本明細書に開示される実施形態は、特定のタスクを実行するソフトウェアモジュールを使用して実施してもよい。これらソフトウェアモジュールは、コンピュータ可読記憶媒体または計算システムに記憶可能なスクリプト、バッチ、または他の実行可能ファイルを含み得る。いくつかの実施形態では、これらソフトウェアモジュールは、本明細書において開示された例示的な実施形態のうちの1つまたは複数を実行するように、計算システムを構成し得る。
【0106】
上記説明は、当業者が、本明細書において説明した例示的な実施形態の様々な態様を最良に利用できるようにするために提供された。この例示的な説明は、網羅的であることを意図しない。すなわち、開示されるいかなる厳密な形態にも限定されないことを意図する。多くの変更および変形が、本開示の主旨および範囲から逸脱せずに可能である。本明細書に説明される実施形態が、すべての点に関して、限定的ではなく例示的であるとみなされること、および本開示の範囲を決定するには、添付の特許請求の範囲およびその均等物を参照することが望まれる。
【0107】
別段に記される場合を除き、本明細書および特許請求の範囲に記載された要素は、少なくとも1つは存在すると解釈されるべきである。さらに、単語「含む」および「有する」は、本明細書および特許請求の範囲において使用される場合、単語「備える」と同義であり、同じ意味を有する。