(57)【特許請求の範囲】
【請求項１】
方法であって、
複数のアプリケーション仮想マシンのうち１つのアプリケーション仮想マシンからの要求をインターセプトすることであって、
前記要求はプロダクションデータセットの一部分についてのものであり、
前記プロダクションデータセットは生のプロダクションデータセットのコピーであり、
前記生のプロダクションデータセットは、情報テクノロジーインフラストラクチャに含まれるストレージシステムに格納され、
前記プロダクションデータセットは、ストレージシステムから受け取られており、
前記プロダクションデータセットは、集約キャッシュにキャッシュされており、
前記プロダクションデータセットのデータは前記複数のアプリケーション仮想マシンに共通である、ことと、
前記プロダクションデータセットの一部分を前記アプリケーション仮想マシンに供給することであって、
前記集約キャッシュは、アクセラレータ仮想マシンによって実装され、
前記プロダクションデータセットの前記一部分が共通のプロダクションデータであるとき、前記プロダクションデータセットの前記一部分は前記集約キャッシュから供給され、
前記プロダクションデータセットの前記一部分が変更されたプロダクションデータであるとき、前記プロダクションデータセットの前記一部分は前記アプリケーション仮想マシンについての書き込み可能なオーバーレイから供給され、前記変更されたプロダクションデータは、前記アプリケーション仮想マシンによって変更されたプロダクションデータであることと、を含む、方法。
【請求項２】
前記要求は、前記ストレージシステム向けであり、
前記プロダクションデータセットの受取り及びキャッシングは、前記アクセラレータ仮想マシンによって管理されている、請求項１に記載の方法。
【請求項３】
前記プロダクションデータセットは、前記複数のアプリケーション仮想マシンによって必要とされる前記共通のプロダクションデータを備える、請求項１に記載の方法。
【請求項４】
前記供給は、ファイルシステムクライアントへのアクセスを有する前記アクセラレータ仮想マシンによって実行され、
前記アプリケーション仮想マシンからの前記プロダクションデータセットの要求は、前記ファイルシステムクライアントによってインターセプトされて、
前記ファイルシステムクライアントは前記プロダクションデータセットについての前記要求を前記アクセラレータ仮想マシンに転送する、請求項１に記載の方法。
【請求項５】
前記複数のアプリケーション仮想マシン、前記アクセラレータ仮想マシン、前記集約キャッシュ、及び前記ファイルシステムクライアントは、ハイパーバイザによってサポートされている、請求項４に記載の方法。
【請求項６】
前記複数のアプリケーション仮想マシンのうちのそれぞれは、１つ又は２つ以上のシン・プロビジョニングされた仮想ディスクを使用して、前記複数のアプリケーション仮想マシンのそれぞれにつき書き込み可能なオーバーレイを格納し、
前記１つ又は２つ以上のシン・プロビジョニングされた仮想ディスクのそれぞれは、差分仮想ディスクであり、
前記１つ又は２つ以上のシン・プロビジョニングされた仮想ディスクのそれぞれは、複数のアプリケーション仮想マシンのうち対応するアプリケーション仮想マシンによって加えられた前記プロダクションデータセットへの変更を記憶する、請求項１に記載の方法。
【請求項７】
前記ストレージシステムは、プロダクション環境に含まれ、
前記ストレージシステムを含む前記情報テクノロジーインフラストラクチャは、企業活動に現在使用されており、
前記企業活動は前記プロダクション環境にて行われ、
前記複数のアプリケーション仮想マシン、前記アクセラレータ仮想マシン、前記集約キャッシュ、及び前記ファイルシステムクライアントは、アプリケーション開発及び試験環境に含まれる、請求項４に記載の方法。
【請求項８】
システムであって、
１つ又は２つ以上のプロセッサと、
前記１つ又は２つ以上のプロセッサに結合されたメモリと、を備え、前記メモリは、前記１つ又は２つ以上のプロセッサによって実行可能なプログラム命令を記憶し、前記１つ又は２つ以上のプロセッサは、
複数のアプリケーション仮想マシンのうち１つのアプリケーション仮想マシンからの要求をインターセプトすることであって、
前記要求はプロダクションデータセットの一部分についてのものであり、
前記プロダクションデータセットは生のプロダクションデータセットのコピーであり、
前記生のプロダクションデータセットは、情報テクノロジーインフラストラクチャに含まれるストレージシステムに格納され、
前記プロダクションデータセットは、ストレージシステムから受け取られており、
前記プロダクションデータセットは、集約キャッシュにキャッシュされており、
前記プロダクションデータセットのデータは前記複数のアプリケーション仮想マシンに共通である、ことと、
前記プロダクションデータセットの一部分を前記アプリケーション仮想マシンに供給することであって、
前記集約キャッシュは、アクセラレータ仮想マシンによって実装され、
前記プロダクションデータセットの前記一部分が共通のプロダクションデータであるとき、前記プロダクションデータセットの前記一部分は前記集約キャッシュから供給され、
前記プロダクションデータセットの前記一部分が変更されたプロダクションデータであるとき、前記プロダクションデータセットの前記一部分は前記アプリケーション仮想マシンについての書き込み可能なオーバーレイから供給され、前記変更されたプロダクションデータは、前記アプリケーション仮想マシンによって変更されたプロダクションデータであることと、
を実行する、システム。
【請求項９】
前記要求は、前記ストレージシステム向けであり、
前記プロダクションデータセットの受取り及びキャッシングは、前記アクセラレータ仮想マシンによって管理されている、請求項８に記載のシステム。
【請求項１０】
前記プロダクションデータセットは、前記複数のアプリケーション仮想マシンによって必要とされる前記共通のプロダクションデータを備える、請求項８に記載のシステム。
【請求項１１】
前記アプリケーション仮想マシンに前記プロダクションデータセットの前記一部分を供給することは、ファイルシステムクライアントへのアクセスを有する前記アクセラレータ仮想マシンによって実行され、
前記アプリケーション仮想マシンからの前記プロダクションデータセットの要求は、前記ファイルシステムクライアントによってインターセプトされて、
前記ファイルシステムクライアントは前記プロダクションデータセットについての前記要求を前記アクセラレータ仮想マシンに転送する、請求項８に記載のシステム。
【請求項１２】
プログラム命令を備える非一過性コンピュータ可読ストレージ媒体であって、前記プログラム命令は、
複数のアプリケーション仮想マシンのうち１つのアプリケーション仮想マシンからの要求をインターセプトすることであって、
前記要求はプロダクションデータセットの一部分についてのものであり、
前記プロダクションデータセットは生のプロダクションデータセットのコピーであり、
前記生のプロダクションデータセットは、情報テクノロジーインフラストラクチャに含まれるストレージシステムに格納され、
前記プロダクションデータセットは、ストレージシステムから受け取られており、
前記プロダクションデータセットは、集約キャッシュにキャッシュされており、
前記プロダクションデータセットのデータは前記複数のアプリケーション仮想マシンに共通である、ことと、
前記プロダクションデータセットの一部分を前記アプリケーション仮想マシンに供給することであって、
前記集約キャッシュは、アクセラレータ仮想マシンによって実装され、
前記プロダクションデータセットの前記一部分が共通のプロダクションデータであるとき、前記プロダクションデータセットの前記一部分は前記集約キャッシュから供給され、
前記プロダクションデータセットの前記一部分が変更されたプロダクションデータであるとき、前記プロダクションデータセットの前記一部分は前記アプリケーション仮想マシンについての書き込み可能なオーバーレイから供給され、前記変更されたプロダクションデータは、前記アプリケーション仮想マシンによって変更されたプロダクションデータであることと、を実行させる非一過性コンピュータ可読ストレージ媒体。
【請求項１３】
前記要求は、前記ストレージシステム向けであり、
前記プロダクションデータセットの受取り及びキャッシングは、前記アクセラレータ仮想マシンによって管理されている、請求項１２に記載の非一過性コンピュータ可読ストレージ媒体。
【請求項１４】
前記プロダクションデータセットは、前記複数のアプリケーション仮想マシンによって必要とされる前記共通のプロダクションデータを備える、請求項１２に記載の非一過性コンピュータ可読ストレージ媒体。
【請求項１５】
前記供給は、ファイルシステムクライアントへのアクセスを有する前記アクセラレータ仮想マシンによって実行され、
前記アプリケーション仮想マシンからの前記プロダクションデータセットの要求は、前記ファイルシステムクライアントによってインターセプトされて、
前記ファイルシステムクライアントは前記プロダクションデータセットについての前記要求を前記アクセラレータ仮想マシンに転送する、請求項１２に記載の非一過性コンピュータ可読ストレージ媒体。
【請求項１６】
請求項１５に記載の非一過性コンピュータ可読ストレージ媒体において、
前記複数のアプリケーション仮想マシンと前記アクセラレータ仮想マシンと前記集約キャッシュと前記ファイルシステムクライアントとは、ハイパーバイザによってサポートされる、非一過性コンピュータ可読ストレージ媒体。
【請求項１７】
請求項１２に記載の非一過性コンピュータ可読ストレージ媒体において、
前記複数のアプリケーション仮想マシンのうちのそれぞれは、１つ又は２つ以上のシン・プロビジョニングされた仮想ディスクを使用して、前記複数のアプリケーション仮想マシンのそれぞれにつき書き込み可能なオーバーレイを格納し、
前記１つ又は２つ以上のシン・プロビジョニングされた仮想ディスクのそれぞれは、差分仮想ディスクであり、
前記１つ又は２つ以上のシン・プロビジョニングされた仮想ディスクのそれぞれは、複数のアプリケーション仮想マシンのうち対応するアプリケーション仮想マシンによって加えられた前記プロダクションデータセットへの変更を記憶する、非一過性コンピュータ可読ストレージ媒体。
【請求項１８】
請求項１５に記載の非一過性コンピュータ可読ストレージ媒体において、
前記ストレージシステムは、プロダクション環境に含まれ、
前記ストレージシステムを含む前記情報テクノロジーインフラストラクチャは、企業活動に現在使用されており、
前記企業活動は前記プロダクション環境にて行われ、
前記複数のアプリケーション仮想マシン、前記アクセラレータ仮想マシン、前記集約キャッシュ、及び前記ファイルシステムクライアントは、アプリケーション開発及び試験環境に含まれる、非一過性コンピュータ可読ストレージ媒体。
【請求項１９】
請求項１１に記載のシステムにおいて、
前記複数のアプリケーション仮想マシンと前記アクセラレータ仮想マシンと前記集約キャッシュと前記ファイルシステムクライアントとは、ハイパーバイザによってサポートされる、システム。
【請求項２０】
請求項８に記載のシステムにおいて、
前記複数のアプリケーション仮想マシンのうちのそれぞれは、１つ又は２つ以上のシン・プロビジョニングされた仮想ディスクを使用して、前記複数のアプリケーション仮想マシンのそれぞれにつき書き込み可能なオーバーレイを格納し、
前記１つ又は２つ以上のシン・プロビジョニングされた仮想ディスクのそれぞれは、差分仮想ディスクであり、
前記１つ又は２つ以上のシン・プロビジョニングされた仮想ディスクのそれぞれは、複数のアプリケーション仮想マシンのうち対応するアプリケーション仮想マシンによって加えられた前記プロダクションデータセットへの変更を記憶する、システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、データをキャッシュすることに関し、より具体的には、アプリケーション及び試験環境においてデータアクセスを高速化することに関する。
【関連技術の説明】
【０００２】
プロダクションデータは、事業目的のために企業及び／又は組織によって持続的に蓄積されて使用される情報である。プロダクションデータは、それ自体の重要性のため、正確で、文書化され、そして、継続的に管理されなければならない。企業は、ソフトウェア開発及び試験を実行するためにプロダクションデータを使用する。例えば、仮想マシンが、アプリケーションの開発及び試験環境に実装されてもよく、そして、プロダクション環境において蓄積されるプロダクションデータを使用してアプリケーションの開発及び試験を実行するために使用されてもよい。
【０００３】
そのようなアプリケーション開発及び試験動作は、しばしば、ストレージシステム（例えば、ストレージアプライアンスのストレージスタック）に記憶されたプロダクションデータを必要とする。場合によっては、そのようなストレージシステムは、離れた場所にあって、ネットワーク経由でアクセスされる必要がある。いくつかのストレージシステムは、大規模な連続した書込み動作を一般に含むバックアップ及びリストア動作に最適化され好適なものである。そのようなストレージシステムは、アプリケーション開発及び試験環境に必要な小規模及び／又はランダム読出し及び書込み動作を実行する際に効率的でない。
【０００４】
それに加えて、多重仮想マシン（例えば、アプリケーション仮想マシン）がアプリケーション開発及び試験を実行するために使用される場合、そのような仮想マシンは、一般に、同一の（又は、類似の）共通データを含むデータセットをキャッシュする。これにより、キャッシュが多重仮想マシンにおいて複製されることになる。より大規模なキャッシュは、そのような状況でなんらかの利益を提供する。しかし、大規模なキャッシュは、通常、アプリケーション開発及び試験環境のそれぞれの仮想マシンに分割され、したがって、キャッシング効率を低下させる。
【発明の概要】
【０００５】
アプリケーション及び試験環境においてデータアクセスを高速化するための様々なシステム、方法、及びプロセスが開示される。そのような方法は、ストレージシステムからプロダクションデータセットを受け取ることと、集約キャッシュ（consolidated cache）にプロダクションデータセットをキャッシュすることと、を含む。集約キャッシュは、アクセラレータ仮想マシンによって実装される。方法は、１つ又は２つ以上のアプリケーション仮想マシンからのプロダクションデータセットの要求をインターセプトし、そして、プロダクションデータセットを集約キャッシュから１つ又は２つ以上のアプリケーション仮想マシンに供給する。
【０００６】
一実施形態では、ストレージシステムからプロダクションデータセットを受け取ること、及び集約キャッシュにプロダクションデータセットをキャッシュすることが、アクセラレータ仮想マシンによって管理される。この例では、プロダクションデータセットは、１つ又は２つ以上のアプリケーション仮想マシンによって必要とされる共通のプロダクションデータを含む。他の実施形態では、１つ又は２つ以上のアプリケーション仮想マシンからのプロダクションデータセットの要求が、クライアントによってインターセプトされてアクセラレータ仮想マシンに転送される。
【０００７】
いくつかの実施形態では、１つ又は２つ以上のアプリケーション仮想マシン、アクセラレータ仮想マシン、集約キャッシュ、及びクライアントは、ハイパーバイザによってサポートされる。他の実施形態では、ストレージシステムは、プロダクション環境の一部分であり、そして、１つ又は２つ以上のアプリケーション仮想マシン、アクセラレータ仮想マシン、集約キャッシュ、及びクライアントは、アプリケーション開発及び試験環境の一部分である。
【０００８】
一実施形態では、１つ又は２つ以上のアプリケーション仮想マシンのそれぞれは、シン・プロビジョニングされた（thin-provisioned）仮想ディスクを使用し、そして、シン・プロビジョニングされた仮想ディスクは、対応するアプリケーション仮想マシンによって加えられたプロダクションデータセットへの変更を記憶する。
【０００９】
前述の内容は概要であり、したがって必然的に、簡略化、一般化、及び詳細の省略を含み、その結果として、当業者であれば、その概要が例示的であるにすぎず、なんら限定的ではないことがわかるであろう。請求項によってのみ規定されるような、本発明の他の態様、創意に富んだ機能、及び利点は、下記に示す非限定的な詳細な説明において明瞭になるであろう。
【図面の簡単な説明】
【００１０】
本開示は、添付図面を参照することによってよりよく理解され得、そして、それの多数の対象、機能、及び利点が当業者に明らかにされる。
【００１１】
【図１】本開示の一実施形態に従う、仮想化サーバを実装するコンピューティングシステムのブロック図である。
【００１２】
【図２】本開示の一実施形態に従う、アクセラレータ仮想マシンを実装するコンピューティングシステムのブロック図である。
【００１３】
【図３】本開示の一実施形態に従う、アプリケーション及び試験環境にデータアクセスを提供するコンピューティングシステムのブロック図である。
【００１４】
【図４】本開示の一実施形態に従う、プロダクションデータをキャッシュするためのプロセスを示すフローチャートである。
【００１５】
【図５】本開示の一実施形態に従う、アプリケーション仮想マシンにプロダクションデータを供給するためのプロセスを示すフローチャートである。
【００１６】
【図６】本開示の一実施形態に従う、集約キャッシュを更新するためのプロセスを示すフローチャートである。
【００１７】
【図７】本開示の一実施形態に従う、集約キャッシュからプロダクションデータを供給するためのプロセスを示すフローチャートである。
【００１８】
【図８】本開示の一実施形態に従う、集約キャッシュがソフトウェア内に実装され得る態様を示す、コンピューティングシステムのブロック図である。
【００１９】
【図９】本開示の一実施形態に従う、様々なコンピューティングデバイスがネットワークを介して通信し得る態様を示す、ネットワーク化システムのブロック図である。
【００２０】
本開示は、様々な修正形態及び代替形式に影響を受けるけれども、本開示の特定の実施形態は、図面及び詳細な説明において例として提供される。図面及び詳細な説明は、開示内容を開示された特定の形式に限定することを意図しないことを理解されたい。その代わりに、添付の請求項によって規定されるような本開示の趣旨及び範囲内にある全ての修正形態、等価物、及び代替形態を包含することが意図される。
【発明を実施するための形態】
【００２１】
序論
ソフトウェア（又は、アプリケーション）開発及び試験環境は、プロダクションデータの大量のコピーを消費する。前述したように、１つ又は２つ以上の仮想マシン（アプリケーション仮想マシン、又はＡｐｐ  ＶＭと呼ばれる）が、そのようなアプリケーション開発及び試験を実行するために使用されてもよい。これらのＡｐｐ  ＶＭは、プロダクションデータを必要とする（及び、使用する）が、このプロダクションデータは、一般に、１つ又は２つ以上のストレージシステム（例えば、ストレージアプライアンス）における様々な場所（例えば、プロダクション環境）に記憶される。そのため、そのようなアプリケーション開発及び試験は、プロダクションデータがプロダクション環境からアプリケーション開発及び試験環境まで（例えば、Ｎｅｔｗｏｒｋ  Ｆｉｌｅ  Ｓｙｓｔｅｍ（ＮＦＳ）等の分散ファイルシステムプロトコルを提供するクライアントサーバアプリケーションを使用して）ネットワーク経由で運ばれることを必要とする。
【００２２】
アプリケーション開発及び試験環境でのそれぞれのＡｐｐ  ＶＭは、プロダクションデータのそれ自体のコピー（例えば、それぞれのＡｐｐ  ＶＭは、そのＡｐｐ  ＶＭのためだけにプロビジョニングされたそれ自体のデータファイルのセットを有する）を必要とし、それを使用するけれども、そのようなデータファイルは、一般にかなりの量の共通データを含む。例えば、アプリケーション開発者（又は、試験者）は、プロダクションデータセットに変更を加えてもよく、そして、試験が、同時に複数のＡｐｐ  ＶＭを使用して同一のプロダクションデータセットについて実行されてもよい。プロダクションデータセットが試験（及び／又は、活動に基づく他の開発）を実行するために使用されるので、そのような試験を実行する仮想マシンは、頻繁に廃棄される（例えば、動作が停止され、開始が許容されない）。更に、そのような試験活動は、古い（そして、おそらく新鮮でない）データセットの代わりに最近のデータセットにおいて試験シナリオが実行されることを保証するために、データが頻繁にリフレッシュされることを必要とする。
【００２３】
前述したように、そのようなアプリケーション開発及び試験動作は、しばしば、ストレージシステム（例えば、ストレージアプライアンスのストレージスタック）に記憶され、そしてバックアップデータであるプロダクションデータを必要とする（例えば、プロダクションデータが安定的で読取り専用である）。バックアップデータを記憶するストレージシステムは、概して、大規模な連続した書込み動作（例えば、データバックアップ中に生じて動作を記憶する書込み動作）のために最適化される。そのようなストレージシステムは、アプリケーション開発及び試験環境に必要な小規模及び／又はランダム読出し及び書込み動作を実行する際に効率的でない。
【００２４】
更に、アプリケーション開発及び試験作業負荷（例えば、アプリケーション開発及び試験環境のアプリケーションで実行される試験活動）は、一般的に複数のＡｐｐ  ＶＭで同時に動き、多くの共通性を有するデータセットにアクセスする（例えば、複数のＡｐｐ  ＶＭが同一のデータセットについて試験する）。そのため、それぞれのＡｐｐ  ＶＭは、同一のデータセット（例えば、ストレージシステムによって提供されている同一又は類似のデータセット）をキャッシュし、したがって、キャッシュは、複数のＡｐｐ  ＶＭにおいて複製される。
【００２５】
更に、前述のように、プロダクションデータ（任意の最新版を含む）は、一般的にネットワーク経由でプロダクション環境からアプリケーション及び試験環境までの搬送を必要とする。しかし、アプリケーション開発及び試験シナリオにおいて、Ａｐｐ  ＶＭは、しばしばリサイクルされ（上記のように）、したがって、データが頻繁にリフレッシュされるので、データが長期間、持続性を保つことを必要としない。
【００２６】
また、前述のように、Ａｐｐ  ＶＭにより近接したより大規模なキャッシュは、いくつかの利益（例えば、Ａｐｐ  ＶＭがストレージシステムからのプロダクションデータにネットワーク経由でアクセスする必要がないようなネットワーク効率）を提供する。しかし、そのようなキャッシュは、アプリケーション開発及び試験環境においてそれぞれのＡｐｐ  ＶＭ上で分割されることにより、キャッシング効率を低下させることになる。
【００２７】
アプリケーション及び試験環境においてデータアクセスを高速化するためのシステム、方法、及びプロセスが本明細書で開示される。
例示的なアプリケーション開発及び試験環境
【００２８】
アプリケーション開発及び試験は、プロダクション（又は生の）データセット（例えば、現実の顧客データベース）を表す１つ又は２つ以上のデータセットについて実行される。そのような開発及び試験は、アプリケーションが現実のシナリオで正確に実行することを確実にする。（プロダクションデータ及び／又はプロダクション環境を表している）プロダクションデータセットのバックアップコピー（又は、カバースナップショット）は、アプリケーション開発及び試験のために使用されてもよい。本明細書に記載のアプリケーション開発及び試験環境は、一例にすぎない。本明細書に示す構成と異なる構成を有する環境もまた想定される。
【００２９】
そのような開発及び試験を実行するために、縮小された仮想マシンがしばしば使用される。例えば、企業がプロダクション環境においてＡＰＡＣＨＥウェブサーバソフトウェアを使用している場合、ＡＰＡＣＨＥをも動かす縮小された仮想マシンを使用することが好ましい（例えば、プロダクション環境が千（１０００）の顧客をサポートする場合、アプリケーション開発及び試験環境での縮小されたＡｐｐ  ＶＭは、十（１０）の顧客をサポートできる）。このように、プロダクション環境（プロダクションデータの精度の所定の重要性）は、影響を受けないか、又は変更されない。
【００３０】
仮想マシンは、アプリケーション開発及び試験を実行することに有用である。そのような開発及び試験は、データセットに頻繁に変更を加えることを含むので、１つ又は２つ以上の仮想マシンは、容易に廃棄及び再利用されてもよい。更に、そのような開発及び試験は、プロダクションデータセットの同一のコピーを同時に動かす（そして、それらについて試験を実行する）ために、複数のＡｐｐ  ＶＭによってサポートされ（及び、それらの上に分散され）てもよい。
【００３１】
図１は、一実施形態に従う、仮想化サーバを実装するコンピューティングシステムのブロック図である。仮想化サーバ１０５は、プロセッサ１１０と、メモリ１１５と、を含むコンピューティングデバイスである。仮想化サーバ１０５は、サーバ、デスクトップ、ラップトップ、タブレット等を含む任意のタイプのコンピューティングデバイスであってもよい。
【００３２】
メモリ１１５は、仮想化環境を実装することにより、アプリケーション開発及び試験を実行する。メモリ１１５は、アクセラレータ仮想マシン（アクセラレータＶＭ  １２０）と、いくつかのアプリケーション仮想マシン（アプリケーションＶＭ（１３５（１）〜（Ｎ））と、集約キャッシュ１２５（例えば、ソリッドステートドライブ（ＳＳＤ））と、ファイルシステムクライアント（例えば、ＮＦＳクライアント）と、それぞれのＡｐｐ  ＶＭのための専用仮想ディスク（例えば、Ａｐｐ  ＶＭ  １３５（１）と関連する仮想ディスク１４０（１）、及びＡｐｐ  ＶＭ  １３５（Ｎ）と関連する仮想ディスク１４０（Ｎ））と、を含む。この例（及び、環境）では、図１に示す仮想ディスクは、また、差分仮想ディスクと呼ばれる場合がある。
【００３３】
メモリ１１５は、また、ハイパーバイザ１５０と、オペレーティングシステム１４５と、を実装する。図１に示すように、ハイパーバイザ１５０は、ソフトウェア（例えば、Ｒｅｄ  Ｈａｔ（登録商標）Ｅｎｔｅｒｐｒｉｓｅ  Ｖｉｒｔｕａｌｉｚａｔｉｏｎ等）を使用して実装される。しかし、ハイパーバイザ１５０は、また、（図３に示すように）ＶＭｗａｒｅ（商標）社によって提供されるＥＳＸｉ等のネイティブ又はベアメタルハイパーバイザであってもよい。更に、代替の実施形態は、仮想化サーバ毎に、示すものと異なる数の仮想マシンを実装してもよく、そして、仮想化サーバは、同一の仮想化サーバ内の他のコンピューティングデバイスと同一の又はそれと異なる数の仮想マシンをそれぞれ実装する付加的なコンピューティングデバイスを含んでもよい。
【００３４】
図１は、また、ストレージシステム１６０、及びストレージ管理モジュール１５５を示す。前述のように、ストレージシステム１６０は、ストレージアプライアンスであってもよく、及び／又はハードドライブ、コンパクトディスク、デジタル多目的ディスク、ＳＳＤ、フラッシュメモリ等のメモリ、又はアレイ等を含む１つ又は２つ以上の様々な異なるストレージデバイスを含んでもよい。ストレージ管理モジュール１５５は、ネットワーク１６０を介してストレージシステム１６０と仮想化サーバ１０５との間にインターフェースを提供する（例えば、ストレージシステム１６０からファイルシステムクライアント１３０までプロダクションデータを転送又は送信する）。任意の他の適切なネットワーク又は相互接続が、ネットワーク１６０の代わりに及び／又はそれに付加して使用されてもよいことに留意されたい。
例示的なデータアクセスアクセラレータ
【００３５】
図２は、一実施形態に従う、アプリケーション試験及び開発環境においてデータアクセスを提供し得るアクセラレータ仮想マシンのブロック図である。アクセラレータＶＭ  １２０は、サーバビュー２０５と、データアクセスインターセプタ２２０と、重複排除認識（deduplication-aware）エンジン２２５と、キャッシングサブシステム２３０と、クライアントビュー２３５と、を含む。Ａｐｐ  ＶＭ  １２０は、ストレージシステム１６０（例えば、ネットワーク又はいくつかの他のタイプの相互接続経由で）に通信可能に結合される。
【００３６】
サーバビュー２０５は、ファイルシステムサーバ２１０と、ストレージターゲット２１５と、を含む。クライアントビュー２３５は、ファイルシステムクライアント１３０（図１に示す）と、ストレージイニシエータ２４０と、を含む。一実施形態では、図２のコンピューティングアーキテクチャは、アクセラレータＶＭが複数のＡｐｐ  ＶＭ（例えば、図２に示すような集約キャッシュ１２５からのＡｐｐ  ＶＭ  １３５（１）〜（Ｎ））にデータアクセスを提供することを可能にするように構成することができる。
【００３７】
いくつかの実施形態では、アクセラレータＶＭ  １２０は、ストレージシステム１６０からプロダクションデータセット（例えば、生のプロダクションデータセットのバックアップコピー又はカバースナップショット）を受け取る。アクセラレータＶＭ  １２０は、次に、集約キャッシュ１２５内のプロダクションデータセットを（例えば、キャッシングサブシステム２３０を使用して）キャッシュする。この例では、集約キャッシュ１２５は、アクセラレータＶＭ  １２０によって実装される。アクセラレータＶＭ  １２０がファイルシステムクライアント１３０を実装しているので、アクセラレータＶＭ  １２０は、１つ又は２つ以上のＡｐｐ  ＶＭからのプロダクションデータセットの要求をインターセプトするためにファイルシステムクライアント１３０を使用してもよい。いうまでもなく、この例では、１つ又は２つ以上のＡｐｐ  ＶＭからのプロダクションデータセットの要求は、ストレージシステム１６０向けであるが、アクセラレータＶＭ  １２０に代わってファイルシステムクライアント１３０によってインターセプトされる。その後、アクセラレータＶＭ  １２０は、図２に示すように、ファイルシステムクライアント１３０を使用して集約キャッシュ１２５から１つ又は２つ以上のＡｐｐ  ＶＭにプロダクションデータセットを供給する。
【００３８】
いくつかの実施形態では、プロダクションデータセットは、オンデマンドでキャッシュされてもよい。例えば、初めてＡｐｐ  ＶＭがプロダクションデータのブロック（又は、いくつかの他のストレージユニット）を要求し、プロダクションデータがキャッシュ内で利用可能でないとき、プロダクションデータのブロックは、ストレージシステムから取り出され（又は、読み出され）てもよい。
【００３９】
他の実施態様において、ストレージシステム１６０からのプロダクションデータセットの受取り、及び集約キャッシュ１２５内のプロダクションデータセットの（例えば、キャッシングサブシステム２３０を使用する）キャッシングは、アクセラレータ仮想マシン１２０によって管理される。この例では、プロダクションデータセットは、１つ又は２つ以上のＡｐｐ  ＶＭ（例えばＡｐｐ  ＶＭ  １３５（１）〜（Ｎ））によって必要とされる共通のプロダクションデータを備える。いくつかの実施形態では、１つ又は２つ以上のＡｐｐ  ＶＭによるプロダクションデータセットの要求は、（例えば、図２に示すように、データアクセスインターセプタ２２０を使用して）クライアント（例えば、ファイルシステムクライアント１３０）によってインターセプトされ、そして、アクセラレータＶＭ１２０まで転送される。
データアクセス高速化の例
【００４０】
図３は、一実施形態に従う、アプリケーション及び試験環境においてデータアクセスを高速化するコンピューティングシステムのブロック図である。図３は、ネットワーク１６５を使用してストレージシステム１６０（及び、ストレージ管理モジュール１５５）に通信可能に結合されたハイパーバイザ１５０を示す。ストレージ管理モジュール１５５は、ストレージシステム１６０と、ハイパーバイザ１５０によって実装されたＮＦＳクライアント３１５との間のインターフェースとして機能する。
【００４１】
ハイパーバイザ１５０は、ＮＦＳクライアント３１５に結合された（及びそれとインターフェースで接続する）アクセラレータＶＭ  １２０を含む。アクセラレータＶＭ  １２０は、集約キャッシュを実装して管理するが、この例では、ＳＳＤ  ３０５である。いくつかの実施形態では、集約キャッシュ１２５は、様々なストレージフォーマットで及び／又はＳＳＤ以外のデータストレージ装置に実装されてもよいことに留意されたい。ＳＳＤ３０５は、集約キャッシュ１２５を実装することにより、Ａｐｐ  ＶＭ１３５（１）、１３５（２）、及び１３５（３）それぞれにデータアクセスを提供する。ＳＳＤ  ３０５が集約キャッシュであるので、ＳＳＤ  ３０５は、Ａｐｐ  ＶＭ  １３５（１）、１３５（２）、及び１３５（３）の中でキャッシュを分割しない。その代わりに、ＳＳＤ  ３０５は、アプリケーション開発及び試験目的のためにＡｐｐ  ＶＭ  １３５（１）、１３５（２）、及び１３５（３）によって必要とされる共通のプロダクションデータセットだけをキャッシュする。
【００４２】
Ａｐｐ  ＶＭ  １３５（１）、１３５（２）、及び１３５（３）は、それぞれ専用オーバーレイファイル（例えば、それぞれ、Ａｐｐ  ＶＭ  １３５（１）のためのオーバーレイファイル３１０（１）、Ａｐｐ  ＶＭ  １３５（２）のためのオーバーレイファイル３１０（２）、及びＡｐｐ  ＶＭ  １３５（３）のためのオーバーレイファイル３１０（３））によってプロビジョニングされる。一実施形態では、それぞれのオーバーレイファイルは、対応するＡｐｐ  ＶＭによって加えられたプロダクションデータセットへの変更を記憶するシン・プロビジョニングされた仮想ディスクに提供されるコンテンツログを含む。例えば、オーバーレイファイル３１０（１）は、Ａｐｐ  ＶＭ  １３５（１）によって加えられたプロダクションデータセットへの変更を記憶するシン・プロビジョニングされた仮想ディスク（例えば、差分仮想ディスク）に提供される。ＮＦＳクライアント３１５は、オーバーレイファイルにアクセスすることにより、（例えば、コンテンツログを使用して）Ａｐｐ  ＶＭのオーバーレイファイルからＡｐｐ  ＶＭに供給され得るデータブロック、及び集約キャッシュ１２５（例えば、ＳＳＤ  ３０５）からＡｐｐ  ＶＭに供給される必要があるデータブロックを識別できる。他の例では、ＮＦＳクライアントは、オーバーレイファイルにアクセスしない。ハイパーバイザが、要求されたプロダクションデータがオーバーレイファイルであると決定した場合、ハイパーバイザは、オーバーレイファイルからプロダクションデータを供給する。ハイパーバイザが、要求されたプロダクションデータがオーバーレイファイルでないと決定した場合、ハイパーバイザは、ＮＦＳクライアントと通信して、ストレージシステムからプロダクションデータを取り込む。
【００４３】
いくつかの実施形態では、Ａｐｐ  ＶＭ、アクセラレータＶＭ、集約キャッシュ、及び／又はクライアント（例えば、ファイルシステムクライアント１３０、ＮＦＳクライアント３１５等）は、（図３に示すように）ハイパーバイザ１５０によってサポートされる。他の実施形態において、Ａｐｐ  ＶＭ、アクセラレータＶＭ、集約キャッシュ、及び／又はクライアントは、ハイパーバイザから独立して（及び別個に）、しかし、同一の仮想化サーバ上で（図１に示すように）動作してもよい。
【００４４】
一実施形態では、オーバーレイファイルは、アクセラレータＶＭ  １２０によって提供され、そしてその内部に記憶されてもよい。このシナリオでは、アクセラレータＶＭは、仮想ストレージアプライアンスとして機能してもよく、そして、集約キャッシュ１２５にそれぞれのオーバーレイファイルのためのパーソナライズされた領域を作成してもよい。例えば、図３の３つのＡｐｐ  ＶＭのために、アクセラレータＶＭ  １２０は、ＳＳＤ  ３０５内に、オーバーレイファイル３１０（１）、３１０（２）、及び３１０（３）それぞれのための３つのパーソナライズされた領域を作成してもよい。いくつかの実施形態では、それぞれのカスタマイズされた領域が占める集約キャッシュ１２５でのスペースは、特定の閾値に基づいてもよい（例えば、アクセラレータＶＭは、ＳＳＤ  ３０５での総利用可能スペースの５％以下がそれぞれのオーバーレイファイルに割り当てられることを保証にするように構成されてもよい）。前述のように、それぞれのオーバーレイファイルは、オーバーレイファイルの対応するＡｐｐ  ＶＭによって加えられたプロダクションデータセット内のデータブロックへの変更を捕捉して記憶する。
【００４５】
前述のように、アクセラレータＶＭ  １２０は、重複排除認識エンジン２２５を含む。重複排除認識エンジン２２５は、複数のプロダクションデータセット全体にわたって重複排除された領域（又は、データブロック）を認識している。例えば、プロダクションデータセットが所定の時間の間、（例えば、アプリケーション試験のために）使用され、リフレッシュされる必要がある場合、重複排除認識エンジン２２５は、特定の割合のプロダクションデータセットだけが、その所定の時間内に変更及び／又は修正されたと判断してもよい。インクリメンタルバックアップは、一般的に、所定のバックアップセットの小規模な割合を変更及び／又は修正するだけであり、プロダクションデータセットの大規模な割合がおそらく変更及び／又は修正されないので、アクセラレータＶＭは、プロダクションデータを集約キャッシュ１２５からＡｐｐ  ＶＭに局所的に提供し続けてもよい。
【００４６】
いくつかの実施形態では、ハイパーバイザ（例えば、ハイパーバイザ１５０）は、仮想ディスクファイル、仮想マシン仕様、テンプレート等を記憶できるデータストア（図３に示さず）を実装してもよい。ハイパーバイザは、仮想ディスクファイルをＡｐｐ  ＶＭ上で実行する（又は動く）オペレーティングシステムのためのＳｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ（ＳＣＳＩ）ブロックデバイスとしてＡｐｐ  ＶＭに結合してもよい。データストアは、ファイルシステム（例えば、ハイパーバイザ自体の私有ファイルシステム、又はＮＦＳファイルシステム）によって補助されてもよい。データストアがＮＦＳファイルシステム（図３に示さず）によって補助されるとき、ハイパーバイザのパーソナライズされたクライアント（例えば、図３に示すようなハイパーバイザ１５０のＮＦＳクライアント３１５）は、ＮＦＳサーバ（図３に示さず）によって供給されるＮＦＳファイルシステムをマウントするために使用されてもよい。ＮＦＳサーバは、他のホストデバイス（例えば、仮想デバイス、又はフィジカルデバイス）上で動くことができる。データストアから供給される仮想ディスクへの入力／出力（Ｉ／Ｏ）動作は、補助ファイルシステム（例えば、上記のようなＮＦＳファイルシステム）を調べる。
【００４７】
ハイパーバイザの私有ファイルシステムがその代わりに使用されるとき、Ｉ／Ｏは、私有ファイルシステムを調べることができ、そして、私有ファイルシステムは、次に、Ｉ／Ｏが仮想ディスクファイルの適切な領域まで進行するのを可能にする前に、シン・プロビジョニングされた仮想ディスクのためのストレージをプロビジョニングすること（必要に応じて）等の活動を実行できる。ＮＦＳデータストアのために、Ｉ／Ｏは、ＮＦＳクライアント（例えば、ＮＦＳクライアント３１５）によってインターセプトされ、そして、Ｉ／Ｏは、ＮＦＳサーバにリダイレクトされる。この例では、ハイパーバイザ１５０のＮＦＳデータストア（図３に示さず）は、アクセラレータＶＭ１２０によって供給されてもよい。いくつかの実施形態では、アクセラレータＶＭは、ＮＦＳサーバを実装し（及び、動かし）てもよく、そして、ハイパーバイザのＮＦＳクライアントは、Ａｐｐ  ＶＭから仮想ディスクへのＩ／Ｏをインターセプトしてもよく、そして、それらのＩ／ＯをアクセラレータＶＭ  １２０上で動くＮＦＳサーバにリダイレクトしてもよい。
データアクセスを高速化するための例示的なプロセス
【００４８】
図４は、一実施形態に従う、プロダクションデータをキャッシュするためのプロセスを示すフローチャートである。プロセスは、４１０において、仮想化サーバの仮想アプライアンス（例えば、仮想化サーバ１０５のアクセラレータＶＭ  １２０）の作成で始まる。４２０において、仮想アプライアンスは、（例えば、ストレージ管理モジュール１５５を使用して）ストレージシステム（例えば、ストレージシステム１６０）から１つ又は２つ以上のプロダクションデータセットを要求する。４３０において、仮想アプライアンスは、ストレージシステムから１つ又は２つ以上のプロダクションデータセットを受け取り、そして、４４０において、仮想アプライアンスは、集約キャッシュ（例えば、ＳＳＤ  ３０５）に１つ又は２つ以上のプロダクションデータセットをキャッシュする。
【００４９】
４５０において、ファイルシステムクライアント（例えば、ＮＦＳクライアント３１５）は、ストレージシステムからのプロダクションデータの供給の要求をインターセプトする。特定の実施形態では、ストレージシステムは、プロダクション環境の一部分であり、そして、１つ又は２つ以上のＡｐｐ  ＶＭ、アクセラレータＶＭ、集約キャッシュ、及びクライアントは、アプリケーション開発及び試験環境の一部分であることに留意されたい。ストレージシステムからプロダクションデータを供給することの要求は、１つ又は２つ以上のＡｐｐ  ＶＭによってなされる。要求は、クライアント（例えば、ファイルシステムクライアント１３０、ＮＦＳクライアント３１５、Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ（ＳＡＮ）等）によってインターセプトされる。４６０において、クライアントは、要求が１つ又は２つ以上のＡｐｐ  ＶＭからであるか否か決定する（例えば、いくつかの実施形態では、プロダクションデータをサービスすることの要求は、アプリケーション開発及び／又は試験を実行していない、アプリケーション開発及び試験環境における他のコンピューティングデバイスから生じてもよい）。否である場合、クライアントは、４７０において、プロダクションデータを供給することの要求をインターセプトし続け、そして、要求が１つ又は２つ以上のＡｐｐ  ＶＭからであるか否かを決定する。
【００５０】
ストレージシステムからプロダクションデータを供給することの要求が１つ又は２つ以上のＡｐｐ  ＶＭから生じる場合、クライアントは、要求をインターセプトし、そして要求をアクセラレータＶＭ  １２０に転送する（例えば、クライアントは仮想アプライアンスに要求を転送する）。４８０において、アクセラレータＶＭ  １２０は、集約キャッシュ（ストレージシステムの代わりに）からの要求を履行する。プロセスは、４９０において、クライアントがプロダクションデータの要求を処理し続けなければならいか否か決定することによって終了する。
【００５１】
図５は、一実施形態に従う、アプリケーション仮想マシンにプロダクションデータを提供するためのプロセスを示すフローチャートである。５０５において、アクセラレータＶＭは、それぞれのＡｐｐ  ＶＭのために書込み可能なオーバーレイを構成する。例えば、書込み可能なオーバーレイは、アクセラレータＶＭ（例えば、仮想アプライアンス）が作成された後に、アクセラレータＶＭ  １２０によって構成されてもよい。前述のように、それぞれの書込み可能なオーバーレイは、シン・プロビジョニングされた仮想ディスクのそれぞれのＡｐｐ  ＶＭに提供されるコンテンツログを含むことにより、Ａｐｐ  ＶＭによってプロダクションデータセットに加えられた変更の経過を識別及び維持することができる。
【００５２】
５１０において、アクセラレータＶＭは、ファイルシステムクライアントにアクセスする。上述のように、ファイルシステムクライアントは、ＮＦＳクライアントであってもよく、そして、アクセラレータＶＭと複数のＡｐｐ  ＶＭ  １３５（１）〜（Ｎ）との間でのデータ操作を容易にする。５１５において、アクセラレータＶＭは、ストレージシステムからプロダクションデータのコピーを取得する（例えば、アクセラレータＶＭ  １２０は、ストレージ管理モジュール１５５と通信及びインターフェースで接続することによってストレージシステム１６０からプロダクションデータのコピーを取得する）。５２０において、アクセラレータＶＭは、集約キャッシュ１２５にプロダクションデータのコピーをキャッシュする（例えば、アクセラレータＶＭは、図３に示すようにＳＳＤ  ３０５にプロダクションデータのコピーをキャッシュする）。
【００５３】
５２５において、クライアント（例えば、ＮＦＳクライアント３１５）は、Ａｐｐ  ＶＭがデータを要求しているか否かを決定する。上述のように、アプリケーション開発及び試験環境での他のコンピューティングエンティティはまた、データを要求してもよい。Ａｐｐ  ＶＭがデータを要求している場合、クライアントは、５３０において、要求が共通の（プロダクション）データ又は変更されたデータ（プロダクションデータ）に対するものか否かを決定する。要求が変更されたプロダクションデータに対するものである場合、クライアントは、５３５において、書込み可能なオーバーレイから変更されたプロダクションデータを供給する（例えば、Ａｐｐ  ＶＭ  １３５（１）が変更されたプロダクションデータを要求する場合、ＮＦＳクライアント３１５は、アクセラレータＶＭ１２０に要求を転送せず、その代わりに、ＮＦＳクライアント３１５は、単に、書込み可能なオーバーレイ３１０（１）からの変更されたプロダクションデータの要求を供給（又は、履行）する。）。
【００５４】
要求が共通のプロダクションデータに対するものである場合、クライアントは、５４０において、集約キャッシュ１２５にキャッシュされた共通のプロダクションデータを供給する（例えば、Ａｐｐ  ＶＭ  １３５（１）が、共通のプロダクションデータを要求する場合、ＮＦＳクライアント３１５は、アクセラレータＶＭ  １２０に要求を転送し、アクセラレータＶＭ  １２０は、次に、ＮＦＳクライアント３１５経由でこの要求をサービスし、そして、要求された共通のプロダクションデータをＡｐｐ  ＶＭ  １３５（１）に提供する）。しかし、要求が、変更されたプロダクションデータ、及び共通のプロダクションデータの両方に対するものである場合、クライアントは、（要求を行うＡｐｐ  ＶＭと関連する）書込み可能なオーバーレイから、変更されたプロダクションデータを供給し、そして、集約キャッシュから共通のプロダクションデータを供給する。５５０において、クライアントは、Ａｐｐ  ＶＭがより多くのデータを要求しているか否かを決定する。５５５において、プロセスは、更なる要求を処理するためにクライアントを使用することによって終了する。
【００５５】
Ａｐｐ  ＶＭが（例えば、プロダクションデータについて）一周以上の試験を実行するために使用された後に、ＡｐｐＶＭは、プロダクションデータセットに有意な変更を作成してもよい。また、その間（１回り以上の試験がプロダクションデータセットについて実行されている間）に、プロダクション環境のコンピューティング環境が変化することがある（例えば、Ａｐａｃｈｅウェブサーバがいくつかの他の種類のウェブサーバと置換されることがある）。そのようなシナリオにおいて、（古い）Ａｐｐ  ＶＭは、廃棄されてもよく（例えば、停止されてよく）、そして、Ａｐｐ  ＶＭの新たなコピーが、試験を継続するためにプロビジョニングされてもよい。しかし、Ａｐｐ  ＶＭが廃棄されるとき、Ａｐｐ  ＶＭは、キャッシュされたプロダクションデータへのアクセスを失う場合があり、そして、新たにプロビジョニングされたＡｐｐ  ＶＭが、ストレージシステムからプロダクションデータセットを再取り込みしなければならない。いくつかの例では、Ａｐｐ  ＶＭが廃棄された後に、Ａｐｐ  ＶＭが再始動してもよく、そして、プロダクションデータのより新たなバージョンを要求してもよい。プロダクションデータのこのより新たなバージョンは、ストレージシステムから自動的に取り込まれる。しかし、変更されないプロダクションデータは、依然としてキャッシュから直接的に供給されてもよい。
【００５６】
本明細書で開示されるような単一の集約キャッシュ（例えば、集約キャッシュ１２５）が、キャッシュされたプロダクションデータを保持することにより、プロダクションデータは、ストレージシステムから再取り込みされる必要がない。新たにプロビジョニングされたＡｐｐ  ＶＭが必要とするプロダクションデータは、集約キャッシュから局所的に利用可能であり、そして、ストレージシステムから（例えば、価値あるネットワークリソースを消費することによって）取得される必要はない。そうすることは、時間及びネットワークリソースを節約しながら、高価なメモリリソースの使用を最適化する。
【００５７】
図６は、一実施形態に従う、集約キャッシュを更新するためのプロセスを示すフローチャートである。プロセスは、クライアント及び／又はアクセラレータＶＭが、Ａｐｐ  ＶＭが閾値よりも大規模に変更されたプロダクションデータを有するか否か（例えば、プロダクションデータの２０％超がＡｐｐ  ＶＭによって実行された試験によって変更され及び／又は修正されたか否か）を決定するときに、６０５において開始する。そのような場合、６１０において、アクセラレータＶＭがＡｐｐ  ＶＭを廃棄し、そして、６１５において、新たなＡｐｐ  ＶＭを作成する。６２０において、クライアントは、プロダクションデータを供給することの新たなＡｐｐ  ＶＭからの要求をインターセプトする。例えば、ファイルシステムクライアント１３０は、プロダクションデータを供給するために新たなＡｐｐ  ＶＭからの要求をインターセプトするために使用されてもよく、そして、６２５において、アクセラレータＶＭ  １２０に要求を送信する。６３０において、クライアントは、アクセラレータＶＭ  １２０を使用して集約キャッシュ（例えば、ＳＳＤ  ３０５）にアクセスする。６３５において、クライアントは、アクセラレータＶＭ  １２０が他のＡｐｐ  ＶＭにプロダクションデータの同一のコピーを供給しているか否かを決定する。アクセラレータＶＭ  １２０が他のＡｐｐ  ＶＭにプロダクションデータの同一のコピーを供給していない場合、クライアントは、６４０において、集約キャッシュがプロダクションデータの最新のコピーによって更新されるのを待つ。
【００５８】
いくつかの実施形態では、Ａｐｐ  ＶＭを廃棄するための閾値は、プロダクションデータの陳腐さに基づいている（例えば、プロダクションデータが陳腐化している程度に基づいており、その程度は、ストレージシステムのプロダクションデータのうちのどれ位がＡｐｐ  ＶＭによって変更されたかを計算することによって決定され得る）。他の実施形態において、集約キャッシュの更新が、自動的に行われてもよい。プロダクションデータがキャッシュ内にない（又は、利用可能でない）場合、プロダクションデータは、（例えば、ストレージシステムから）オンデマンドで取り込まれ（又は、読み取られ）てもよく、そして、使用されないプロダクションデータは、キャッシュ（例えば、ＳＳＤ  ３０５）から自動的に排出され（又は削除され）てもよい。いくつかの例では、仮想アプライアンスが作成され、キャッシュがリセットされ、そして、プロダクションデータを供給することの要求がインターセプトされる。プロダクションデータがキャッシュで利用可能である場合、プロダクションデータはＡｐｐ  ＶＭに供給される。利用可能でない場合、プロダクションデータは、ストレージシステムから取り込まれる。他の例において、Ａｐｐ  ＶＭが廃棄されなければならないとき、そのＡｐｐ  ＶＭがシャットダウンされ、そして、新たなＡｐｐ  ＶＭが生み出されて、プロダクションデータのより新たなバージョンに向けられる。この例では、キャッシュは、Ａｐｐ  ＶＭによって使用されているプロダクションデータを自動的に取り出し（又は、供給し）てもよく、そして、Ａｐｐ  ＶＭによって使用されていないプロダクションデータを排除（又は、削除）してもよい。
【００５９】
特定の実施形態では、重複排除認識エンジン２２５は、プロダクション環境において更新及び／又は修正されていない大多数のプロダクションデータが、集約キャッシュからそのようなキャッシュされたプロダクションデータを要求するＡｐｐ  ＶＭに局所的に供給され続け得ることを保証する。しかし、プロダクションデータが許容可能な閾値を越えて変化した場合（又は、新たなＡｐｐ  ＶＭがプロダクション環境において変更及び／又は修正されたプロダクションデータの部分を要求する場合）、クライアントは、集約キャッシュがそのような変更及び／又は修正によって更新されるのを待つ。そのため、６４５において、クライアントは、集約キャッシュが更新されたか否かを決定する（プロセスは、キャッシュが更新されるまで待つ）。アクセラレータＶＭ  １２０が、他のＡｐｐ  ＶＭにプロダクションデータの同一のコピーを供給しているか、又は、集約キャッシュが更新され、次に新たなＡｐｐ  ＶＭにプロダクションのコピーを供給するのを待っている場合に、プロセスは、６５０において、集約キャッシュから新たなＡｐｐ  ＶＭにプロダクションデータのコピーを供給することによって終了する。
【００６０】
図７は、一実施形態に従う、集約キャッシュからプロダクションデータを提供するためのプロセスを示すフローチャートである。プロセスは、７０５において、アクセラレータＶＭ（例えば、アクセラレータＶＭ  １２０）が（例えば、ストレージ管理モジュール１５５経由で）プロダクション環境のストレージシステム（例えば、ストレージシステム１６０）にアクセスするときに始まる。７１０において、アクセラレータＶＭが（クライアントと共に）、生のプロダクションデータ（例えば、プロダクション環境で使用されているデータ）とキャッシュされたプロダクションデータ（例えば、アプリケーション開発及び試験環境で使用されているプロダクション環境からのデータのコピー）との間の差が許容可能か否か（例えば、生のプロダクションデータとキャッシュされたプロダクションデータとの間の差が特定の閾値を上回るか否か）を決定する。差が許容可能である（例えば、生のプロダクションデータとキャッシュされたプロダクションデータとの間の差が特定の閾値未満である）場合、プロセスは、７５５において、クライアントがアクセラレータＶＭに集約キャッシュからの（プロダクション）データを供給するように命令するときに終了する。
【００６１】
しかし、差が許容可能でない（例えば、生のプロダクションデータとキャッシュされたプロダクションデータとの間の差が特定の閾値を上回る）場合、クライアント（例えば、ＮＦＳクライアント３１５）は、７１５において、アクセラレータＶＭ  １２０に信号を転送して、集約キャッシュ１２５からキャッシュされたプロダクションキャッシュをアプリケーション開発及び試験環境でのＡｐｐ  ＶＭに供給するのを停止する。７２０において、クライアントは、アクセラレータＶＭ  １２０に集約キャッシュ１２５をフラッシュするように命令する（例えば、生のプロダクションデータがキャッシュされたプロダクションデータと８０％異なっている場合、キャッシュされたプロダクションデータを使用してＡｐｐ  ＶＭによって実行されている試験は、役に立たない及び／又は不正確である可能性がある）。
【００６２】
７２５において、アクセラレータＶＭは、ストレージシステムからの新たなプロダクションデータセットを要求する。ストレージ管理モジュール１５５が、７３５において、ストレージシステムからアクセラレータＶＭ  １２０に新たなプロダクションデータセットを転送した後に、７３０において、アクセラレータＶＭは、ストレージシステムから新たなプロダクションデータセットを受け取る。７４０において、アクセラレータＶＭは、集約キャッシュ１２５に新たなプロダクションデータセットをキャッシュする。７４５において、クライアント（例えば、ＮＦＳクライアント３１５）は、ストレージシステムから（例えば、１つ又は２つ以上のＡｐｐ  ＶＭから）プロダクションデータを供給することの要求をインターセプトする。７５０において、クライアントは、アクセラレータＶＭ  １２０に要求を転送する。プロセスは、７５５において、クライアントがアクセラレータＶＭに集約キャッシュからデータを供給するように命令するときに終了する。
他の例示的な実施形態
【００６３】
いうまでもなく、図１、図２、及び図３に示すような同一のコンピューティング環境にプロダクション環境（例えば、他のコンピューティングデバイスの中のストレージシステム１６０）並びにアプリケーション開発及び試験環境（例えば、仮想化サーバ１０５）を共有することは、有用である場合がある。例えば、企業は、しばしば、企業内でそれら自体のアプリケーション（例えば、人的資源アプリケーション）を開発する。アプリケーション開発及び試験プロセスの一部分として、企業は、開発及び／又は試験されているアプリケーションと関連するコード修正、コード強化、及びバグ修正等を常に試験する。
【００６４】
前述のタスクを実行するために、プロダクションデータを示しているデータセットを使用することは、非常に有利である場合があり、その理由は、プロダクションデータは現実のデータ（又は、生のデータ）（例えば、企業が営業活動を行うために毎日使用するデータ、顧客データ、従業員情報、トランザクションデータ、支払い情報等）であるからである。この例では、プロダクションデータは、プロダクション環境のストレージシステム（例えば、ストレージシステム１６０）（例えば、現在営業活動に使用されている企業の情報テクノロジー（ＩＴ）インフラストラクチャの一部分であるストレージシステム）に記憶されたプロダクションデータセットのバックアップコピーである。
【００６５】
その結果として、プロダクションデータ（又は、この場合でのようなプロダクションデータのバックアップコピー）を使用してアプリケーション開発及び試験を実行することは、企業が、（例えば、アプリケーションがプロダクション環境に実装される場合に）アプリケーションが現実のシナリオでどのように実行する（又は、実行することになる）かについて正確に及び効果的に決定することを可能にする。しかし、アプリケーションが、アプリケーション開発及び試験環境で開発及び試験されているので、プロダクション環境に対する破壊的な変更は、回避される。前述のように、プロダクションデータを修正することは、特にアプリケーション開発及び試験プロセスの変わりやすい性質を考えると、企業の日々の営業活動を混乱させる場合がある。
【００６６】
更に、また、上述のように、アプリケーション仮想マシンは、アプリケーション開発及び試験を実行するために使用されてもよい。仮想マシンのいくつかのコピーは、容易に生成され（例えば、作成され）得るので、いくつかのアプリケーション仮想マシンは、プロダクションデータセットの同一のバックアップコピーを試験し得る。例えば、１つのアプリケーションＶＭは、アプリケーションにおいてコード修正を実行してもよく、そして、それらのコード修正をプロダクションデータセットのバックアップコピーを使用して試験してもよい。他のアプリケーションＶＭは、アプリケーションにおいてコード強化を実行してもよく、そして、それらの強化をプロダクションデータセットのバックアップコピーを使用して試験してもよい。なお、更に他のアプリケーションＶＭは、アプリケーションに加えられたバグ修正をプロダクションデータセットのバックアップコピーを使用して試験してもよい。そのため、アプリケーションＶＭが様々なタスクを実行するけれども、それらは、プロダクションデータセットの同一の（バックアップの）コピーを使用する（又は、使用する傾向がある）。特定の実施形態では、プロダクションデータセットのこの同一の（バックアップの）コピーは、共通のプロダクションデータと呼ばれてもよい。いくつかの実施形態では、この共通のプロダクションデータは、アクセラレータＶＭによって集約キャッシュにキャッシュされるプロダクションデータセットの一部分であってもよい。
【００６７】
いくつかの実施形態では、そして、前述のように、それぞれの対応するＡｐｐ  ＶＭがプロダクションデータに行う変更を記憶する書込み可能なオーバーレイは、シン・プロビジョニングされた仮想ディスクである。シン・プロビジョニングされた書込み可能なオーバーレイは、前もってデータのブロックを割り当てる従来の方法よりむしろ、オンデマンドベースでスペース（例えば、データのブロック）を割り当てることによって仮想化環境での利用可能なストレージの利用を最適化する。例えば、Ａｐｐ  ＶＭ  １３５（１）がプロダクションデータにおいて重大なコード強化を試験している場合、Ａｐｐ  ＶＭ  １３５（１）は、プロダクションデータに有意な変更を加える可能性があるであろう。この場合、書込み可能なオーバーレイ３１０（１）は、それに応じてそれらの変更に対応するのに十分なスペースでプロビジョニングされてもよい。
【００６８】
逆に、Ａｐｐ  ＶＭ  １３５（３）がプロダクションデータを使用してアプリケーションへの軽度のバグ修正を試験している場合、Ａｐｐ  ＶＭ  １３５（３）によるプロダクションデータへの変更が（もしあっても）軽度である可能性があるので、書込み可能なオーバーレイ３１０（３）は、小規模なスペースでプロビジョニングされてもよい。このように、書込み可能なオーバーレイは、アプリケーション開発及び試験環境においてそれらの対応する仮想マシンによって実行されているタスクのストレージ要件（例えば、タスクがプロダクションデータに有意な変更を加えることになる（又は、そうならない）可能性があるか否か）に基づいてストレージを効率的に共有するように構成されるシン・プロビジョニングされた仮想ディスクであってもよい。
【００６９】
特定の実施形態では、そして、前述のように、Ａｐｐ  ＶＭからのプロダクションデータセットの要求は、クライアントによってインターセプトされる（そして、アクセラレータＶＭに転送される）。例えば、ＮＦＳクライアント３１５は、ストレージ管理モジュール１５５向けのＡｐｐ  ＶＭによるファイルシステムコールをインターセプトしてもよい（例えば、ファイルシステムは、プロダクションデータの送信の要求のようなデータ操作のパフォーマンスを要求することをコールする）。インターセプトは、いずれのクライアント（又は、Ａｐｐ  ＶＭ）もストレージシステムでのプロダクションデータにアクセスすることを可能にするファイルディレクトリを共有する分散ファイルシステムプロトコル（例えば、Ｎｅｔｗｏｒｋ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）を使用して実行されてもよい。例えば、共用されたファイルディレクトリは、１つ又は２つ以上のデーモン（それらは、バックグラウンドプロセスとして動くコンピュータプログラムである）を使用してプロダクションデータを検索するためにアクセスされてもよい。
【００７０】
他の実施形態において、そして、前述したように、集約キャッシュは、Ａｐｐ  ＶＭにプロダクションデータを供給するために使用される。一般的に、キャッシュ（例えば、ＳＳＤ  ３０５）で利用可能なストレージスペースは、いくつかのＡｐｐ  ＶＭ（又は、他のコンピューティングデバイス）の間で分割される。しかし、本明細書で開示される実施形態は、それぞれのＡｐｐ  ＶＭにそれ自体の書込み可能なオーバーレイを提供することによりプロダクションデータへの変更を捕捉するので、また、それぞれのＡｐｐ  ＶＭがアプリケーション開発及び試験のために共通のプロダクションデータを使用するので、単一の集約キャッシュ（例えば、集約キャッシュ１２５）が提供されてもよく、キャッシュのストレージは、様々なＡｐｐ  ＶＭの間で分割されない（又は、それらに別個に割り当てられない）。むしろ、単一の集約キャッシュは、その全体が全てのＡｐｐ  ＶＭによって等しく共有されることにより、共通のプロダクションデータの単一のコピーを記憶する。そのため、いうまでもなく、本明細書で開示された特定の実施形態は、アプリケーション開発及び試験環境にキャッシング関連の効率を提供し得る集約キャッシュを実装できる。
例示的なコンピューティング環境
【００７１】
図８は、一実施形態に従う、集約キャッシュがソフトウェアに実装され得る方法を示すコンピューティングシステムのブロック図である。コンピューティングシステム８００は、コンピュータ可読命令を実行することが可能な任意のシングル若しくはマルチプロセッサコンピューティングデバイス又はシステムを広く表す。コンピューティングシステム８００の例としては、ワークステーション、パーソナルコンピュータ、ラップトップ、クライアント側端末、サーバ、分散型コンピューティングシステム、携帯用デバイス（例えば、パーソナル携帯情報機器、及び携帯電話）、ネットワークアプライアンス、ストレージ制御装置（例えば、配列制御装置、テープドライブ制御装置、又はハードディスク制御装置）等を含む任意の１つ又は２つ以上の様々なデバイスが挙げられるが、これらに限定されない。その最も基本的な構成において、コンピューティングシステム８００は、少なくとも１つのプロセッサ１１０と、メモリ１１５と、を含んでもよい。仮想化サーバ１０５を実装するソフトウェアを実行することによって、コンピューティングシステム８００は、アプリケーション開発及び試験環境で集約キャッシュからのデータアクセスを高速化するように構成されている専用コンピューティングデバイスになる。
【００７２】
プロセッサ１１０は、概して、データの処理、又は命令の解釈及び実行ができる任意のタイプ又は形式の処理装置を表す。特定の実施形態において、プロセッサ１１０は、ソフトウェアアプリケーション又はモジュールから命令を受信してもよい。これらの命令は、プロセッサ１１０に、本明細書に記載及び／又は例示する実施形態のうちの１つ又は２つ以上の機能を実施させてもよい。例えば、プロセッサ１１０は、本明細書に記載する動作の全部又は一部を実行してもよく、及び／又は実行するための手段であってもよい。プロセッサ１１０は、また、本明細書に記載又は例示する任意の他の動作、方法、及びプロセスを実行してもよく、及び／又は実行するための手段であってもよい。
【００７３】
メモリ１１５は、データ及び／又は他のコンピュータ可読命令を記憶することが可能な任意のタイプ又は形式の揮発性又は不揮発性ストレージデバイス若しくは媒体を概して表す。例としては、限定することなく、ランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、フラッシュメモリ、又は任意の他の好適なメモリデバイスが挙げられる。必要でないけれども、特定の実施例では、コンピューティングシステム８００は、揮発性メモリユニット及び不揮発性ストレージデバイスの両方を含んでもよい。一例では、集約キャッシュ及びアクセラレータ仮想マシンを実装するプログラム命令が、メモリ１１５にロードされてもよい。
【００７４】
特定の実施形態において、コンピューティングシステム８００は、また、プロセッサ１１０及びメモリ１１５に加えて、１つ又は２つ以上の構成要素又は要素を含んでもよい。例えば、図８に示すように、コンピューティングシステム８００は、メモリコントローラ８２０と、入力／出力（Ｉ／Ｏ）コントローラ８３５と、通信インターフェース８４５とを含んでもよく、これらのそれぞれは、通信インフラストラクチャ８０５を介して相互接続されてもよい。通信インフラストラクチャ８０５は、コンピューティングデバイスの１つ又は２つ以上の構成要素間の通信を容易にすることが可能な任意のタイプ又は形式のインフラストラクチャを概して表す。通信インフラストラクチャ８０５の例としては、限定することなく、通信バス（業界標準アーキテクチャ（ＩＳＡ）、周辺構成要素相互接続（ＰＣＩ）、ＰＣＩエクスプレス（ＰＣＩｅ）、又は類似のバス等）、及びネットワークが挙げられる。
【００７５】
メモリコントローラ８２０は、メモリ若しくはデータを取り扱うことが可能な、又はコンピューティングシステム８００の１つ又は２つ以上の構成要素間の通信を制御することが可能な任意のタイプ又は形式のデバイスを概して表す。例えば、特定の実施形態では、メモリコントローラ８２０は、通信インフラストラクチャ８０５を介して、プロセッサ１１０、メモリ１１５、及びＩ／Ｏコントローラ８３５間の通信を制御してもよい。特定の実施形態では、メモリコントローラ８２０は、本明細書に記載又は例示する１つ又は２つ以上の動作又は機能を単独又は他の要素との組合せのいずれかで実行してもよく、及び／又は実行するための手段であってもよい。
【００７６】
Ｉ／Ｏコントローラ８３５は、コンピューティングデバイスの入出力機能を調整及び／又は制御することが可能な任意のタイプ又は形式のモジュールを概して表す。例えば、特定の実施形態では、Ｉ／Ｏコントローラ８３５は、プロセッサ１１０、メモリ１１５、通信インターフェース８４５、表示アダプタ８１５、入力インターフェース８２５、及びストレージインターフェース８４０等のコンピューティングシステム８００の１つ又は２つ以上の要素間のデータの転送を制御してもよく、又はそれを容易にしてもよい。
【００７７】
通信インターフェース８４５は、コンピューティングシステム８００と、１つ又は２つ以上の追加のデバイスとの間の通信を容易にすることが可能な任意のタイプ又は形式の通信デバイス又はアダプタを広く表す。例えば、特定の実施形態では、通信インターフェース８４５は、コンピューティングシステム８００と追加のコンピューティングシステムを含む私的又は公的ネットワークとの間の通信を容易にしてもよい。通信インターフェース８４５の例としては、限定することなく、有線ネットワークインターフェース（ネットワークインターフェースカード等）、無線ネットワークインターフェース（無線ネットワークインターフェースカード等）、モデム、及び任意の他の好適なインターフェースが挙げられる。少なくとも１つの実施形態では、通信インターフェース８４５は、インターネット等のネットワークへの直接的なリンクを介して、遠隔サーバへの直接的な接続を提供してもよい。通信インターフェース８４５は、また、例えば、ローカルエリアネットワーク（イーサネット（登録商標）ネットワーク等）、パーソナルエリアネットワーク、電話若しくはケーブルネットワーク、セルラ電話接続、衛星データ接続、又は任意の他の好適な接続を通じて、かかる接続を間接的に提供してもよい。
【００７８】
ある実施形態において、通信インターフェース８４５はまた、外部バス又は通信チャネルを介して、コンピューティングシステム８００と、１つ若しくは２つ以上の追加のネットワーク又はストレージデバイスとの間の通信を容易にするように構成されるホストアダプタを表してもよい。ホストアダプタの例としては、限定することなく、スモールコンピュータシステムインターフェース（ＳＣＳＩ）ホストアダプタ、ユニバーサルシリアルバス（ＵＳＢ）ホストアダプタ、米国電気電子技術者協会（ＩＥＥＥ）１３９４ホストアダプタ、シリアルアドバンストテクノロジーアタッチメント（ＳＡＴＡ）、シリアルアタッチトＳＣＳＩ（ＳＡＳ）、及びエクスターナルＳＡＴＡ（ｅＳＡＴＡ）ホストアダプタ、アドバンスドテクノロジーアタッチメント（ＡＴＡ）、及びパラレルＡＴＡ（ＰＡＴＡ）ホストアダプタ、ファイバチャネルインターフェースアダプタ、イーサネット（登録商標）アダプター等が挙げられる。通信インターフェース８４５は、また、コンピューティングシステム８００が分散又は遠隔コンピューティングに関与することを可能にしてもよい。例えば、通信インターフェース８４５は、実行のために、遠隔デバイスから命令を受信するか、又は遠隔デバイスに命令を送信してもよい。
【００７９】
図８に示すように、コンピューティングシステム８００は、また、表示アダプタ８１５を介して、通信インフラストラクチャ８０５に連結される少なくとも１つの表示デバイス８１０を含んでもよい。表示デバイス８１０は、表示アダプタ８１５によって転送された情報を視覚的に表示することが可能な任意のタイプ又は形式のデバイスを概して表す。同様に、表示アダプタ８１５は、表示デバイス８１０上に表示するために、通信インフラストラクチャ８０５から（又は当該技術分野において既知のように、フレームバッファから）、グラフィックス、テキスト、及び他のデータを転送するように構成された任意のタイプ又は形式のデバイスを概して表す。
【００８０】
図８に示すように、コンピューティングシステム８００は、また、入力インターフェース８２５を介して通信インフラストラクチャ８０５に連結される少なくとも１つの入力デバイス８３０を含んでもよい。入力デバイス８３０は、コンピュータ又はヒトのいずれかによって生成された入力を、コンピューティングシステム８００に提供することが可能な任意のタイプ又は形式の入力デバイスを概して表す。入力デバイス８３０の例としては、限定することなく、キーボード、ポインティングデバイス、音声認識デバイス、又は任意の他の入力デバイスが挙げられる。
【００８１】
図８に示すように、コンピューティングシステム８００は、また、ストレージインターフェース８４０を介する通信インフラストラクチャ８０５へのストレージデバイス８５０を含んでもよい。ストレージデバイス８５０は、データ及び／又は他のコンピュータ可読命令を記憶することが可能な任意のタイプ又は形式のストレージデバイス又は媒体を概して表す。例えば、ストレージデバイス８５０は、磁気ディスクドライブ（例えば、いわゆるハードドライブ）、フロッピーディスクドライブ、磁気テープドライブ、光ディスクドライブ、フラッシュドライブ等を含み得る。ストレージインターフェース８４０は、コンピューティングシステム８００のストレージデバイス８５０と他の構成要素との間でデータを転送及び／又は送信するための任意のタイプ又は形式のインターフェース又はデバイスを概して表す。
【００８２】
特定の実施形態では、ストレージデバイス８５０は、コンピュータソフトウェア、データ、又は他のコンピュータ可読情報を記憶するように構成された取り外し可能なストレージユニットから読み取るように、及び／又はそれに書き込むように構成されてもよい。好適な取り外し可能な記憶ユニットの例としては、限定することなく、フロッピーディスク、磁気テープ、光ディスク、フラッシュメモリデバイスなどが挙げられる。ストレージデバイス８５０は、また、コンピュータソフトウェア、データ、又は他のコンピュータ可読命令が、コンピューティングシステム８００にロードされることを可能にするための他の類似の構造又はデバイスを含んでもよい。例えば、ストレージデバイス８５０は、ソフトウェア、データ、又は他のコンピュータ可読情報を読み取り、及び書き込むように構成されてもよい。ストレージデバイス８５０は、また、コンピューティングシステム８００の一部であってもよく、又は他のインターフェースシステムによってアクセスされる別個のデバイスであってもよい。
【００８３】
多くの他のデバイス又はサブシステムが、コンピューティングシステム８００に接続されてもよい。逆に、図８に示す構成要素及びデバイスの全てが、本明細書において説明及び／又は例示する実施形態を実践するために存在する必要があるわけではない。上記で述べたデバイス及びサブシステムは、また、図８に示すものとは異なる様式で相互接続されてもよい。
【００８４】
コンピューティングシステム８００は、また、任意の数のソフトウェア、ファームウェア、及び／又はハードウェア構成を採用してもよい。例えば、本明細書において開示される実施形態のうちの１つ又は２つ以上は、コンピュータ可読ストレージ媒体上にコンピュータプログラム（コンピュータソフトウェア、ソフトウェアアプリケーション、コンピュータ可読命令、又はコンピュータ制御論理とも称される）としてコード化され得る。コンピュータ可読ストレージ媒体の例としては、磁気記憶媒体（例えば、ハードディスクドライブ、及びフロッピーディスク）、光記憶メディア（例えば、ＣＤ−、又はＤＶＤ−ＲＯＭ）、電子記憶媒体（例えば、ソリッドステートドライブ、及びフラッシュメディア）等が挙げられる。そのようなコンピュータプログラムは、また、インターネット等のネットワークを介してメモリに又はキャリア媒体に記憶するためにコンピューティングシステム８００に転送されてもよい。
【００８５】
コンピュータプログラムを含むコンピュータ可読媒体は、コンピューティングシステム８００にロードされてもよい。コンピュータ可読媒体上に記憶されたコンピュータプログラムの全部又は一部分は、次に、メモリ１１５及び／又はストレージデバイス８５０の種々の部分に記憶されてもよい。プロセッサ１１０によって実行されるとき、コンピューティングシステム８００にロードされたコンピュータプログラムは、本明細書において説明及び／又は例示する実施形態のうちの１つ又は２つ以上の機能をプロセッサ１１０に実施させてもよく、及び／又はそれらを実施するための手段であってもよい。付加的に又は代替的に、本明細書に説明及び／又は例示される例示的な実施形態のうちの１つ又は２つ以上は、ファームウェア及び／又はハードウェアに実装され得る。例えば、コンピューティングシステム８００は、本明細書において開示される実施形態のうちの１つ又は２つ以上を実装するように適合された特定用途向け集積回路（ＡＳＩＣ）として構成されてもよい。
例示的なネットワーキング環境
【００８６】
図９は、本開示の一実施形態に従う、様々なコンピューティングデバイスがネットワークを介して通信し得る態様を示す、ネットワーク化システムのブロック図である。特定の実施形態では、ネットワーク接続型ストレージ（ＮＡＳ）デバイスは、ネットワークファイルシステム（ＮＦＳ）、サーバメッセージブロック（ＳＭＢ）、又はコモンインターネットファイルシステム（ＣＩＦＳ）等の様々なプロトコルを使用して仮想化サーバ１０５と通信するように構成されてもよい。
【００８７】
ネットワーク１６５は、複数のコンピューティングデバイスの間での通信を容易にすることができる任意のタイプ又は形式のコンピュータネットワーク又はアーキテクチャを概して表す。ネットワーク１６５は、仮想化サーバ１０５とストレージシステム１６０との間での通信を容易にしてもよい。特定の実施形態では、そして、図８のコンピューティングシステム８００に関して、図８の通信インターフェース８４５等の通信インターフェースは、仮想化サーバ１０５とネットワーク１６５との間にコネクティビティを提供するために使用されてもよい。本明細書に記載及び／又は例示する実施形態は、インターネット又は任意の特定のネットワークベース環境に限定されないことに留意されたい。例えば、ネットワーク１６５は、ストレージエリアネットワーク（ＳＡＮ）であってもよい。
【００８８】
少なくとも１つの実施形態において、本明細書で開示する実施形態のうちの１つ又は２つ以上の全部又は一部分は、コンピュータプログラムとしてコード化されてもよく、そして、仮想化サーバ１０５、アプリケーションＶＭ  １３５（１）〜（Ｎ）、ファイルシステムクライアント１３０、及び／又はアクセラレータ仮想マシン１２０、あるいはこれらの任意の組み合わせにロードされて実行されてもよい。本明細書で開示する実施形態のうちの１つ又は２つ以上の全部又は一部分は、また、コンピュータプログラムとしてコード化されてもよく、そして、仮想化サーバ１０５、アプリケーションＶＭ  １３５（１）〜（Ｎ）、ファイルシステムクライアント１３０、及び／又はアクセラレータ仮想マシン１２０に記憶されてもよく、並びにネットワーク１６５経由で分散されてもよい。
【００８９】
いくつかの例では、図１の仮想化サーバの全部又は一部分は、クラウドコンピューティング又はネットワークベース環境の部分を表してもよい。クラウドコンピューティング環境は、インターネットを介して、種々のサービス及びアプリケーションを提供し得る。これらのクラウドベースのサービス（例えば、サービスとしてのソフトウェア、サービスとしてプラットフォーム、サービスとしてのインフラストラクチャなど）は、ウェブブラウザ又は他の遠隔インターフェースを通じて、アクセス可能であり得る。本明細書において説明される種々の機能は、遠隔デスクトップ環境又は任意の他のクラウドベースのコンピューティング環境を通じて提供され得る。
【００９０】
加えて、本明細書に記載の構成要素のうちの１つ又は２つ以上は、データ、物理的デバイス、及び／又は物理的デバイスの表現を、ある形態から他の形態に変換し得る。例えば、仮想化サーバ１０５、アプリケーションＶＭ  １３５（１）〜（Ｎ）、ファイルシステムクライアント１３０、及び／又はアクセラレータ仮想マシン１２０は、コンピューティングデバイスの動作を変換することにより、アプリケーション開発及び試験環境において単一の集約キャッシュを使用してコンピューティングデバイスにデータアクセスを高速化させてもよい。
【００９１】
本開示がいくつかの実施形態と関連して説明されたけれども、本開示は、本明細書で述べた特定の形式に限定されるように意図されていない。逆に、添付の請求項によって規定されるような本開示の範囲内に合理的に含まれ得るような代替形態、修正形態、及び等価物を包含するように意図されている。
【図１】
0006774971.tif 000002
【図２】
0006774971.tif 000003
【図３】
0006774971.tif 000004
【図４】
0006774971.tif 000005
【図５】
0006774971.tif 000006
【図６】
0006774971.tif 000007
【図７】
0006774971.tif 000008
【図８】
0006774971.tif 000009
【図９】
0006774971.tif 000010