(57)【要約】      （修正有）【課題】異なる持続性レベルに従ってＩ／Ｏ要求に応えるように構成し得るストレージモジュールを提供する。【解決手段】Ｉ／Ｏ要求の持続性レベルは、Ｉ／Ｏ要求に応えるために使用されるストレージリソース、ストレージリソースの構成、リソースのストレージモード等に関連する。持続性レベルは、Ｉ／Ｏ要求のキャッシュモードに関連する。一時データ又は不必要データに関連するＩ／Ｏ要求には、エフェメラルキャッシュモードを使用して応える。エフェメラルキャッシュモードは、Ｉ／Ｏ要求データを、プライマリストレージにライトスルー（又はバック）せずに、キャッシュストレージに記憶することを含む。エフェメラルキャッシュデータは、仮想マシン移行に応答して、ホスト間で転送する。【選択図】図１Ａ
2018125025.tif 000002
【特許請求の範囲】
【請求項１】
複数のＩ／Ｏ要求を識別することと、
前記Ｉ／Ｏ要求の１つ又は複数の属性に基づいて、前記Ｉ／Ｏ要求の各持続性レベルを選択することと、
前記Ｉ／Ｏ要求に選択された前記持続性レベルに従って１つ又は複数のストレージリソースを使用して前記Ｉ／Ｏ要求に応えることと、
を含む、方法。
【請求項２】
各持続性レベルは、前記各持続性レベルを有するＩ／Ｏ要求に応える際に使用される１つ又は複数のストレージリソースに対応する、請求項１に記載の方法。
【請求項３】
各持続性レベルは、前記各持続性レベルを有するＩ／Ｏ要求に応えるために使用される１つ又は複数のストレージリソースの構成に対応する、請求項１に記載の方法。
【請求項４】
前記持続性レベルのうちの１つ又は複数は、前記１つ又は複数の持続性レベルのＩ／Ｏ要求に応えるためのストレージモードを指定するように構成される、請求項１に記載の方法。
【請求項５】
第１のＩ／Ｏ要求の第１の持続性レベルを、前記第１のＩ／Ｏ要求に関連付けられたファイル識別子及び前記第１のＩ／Ｏ要求に関連付けられたアプリケーションのうちの１つ又は複数に基づいて選択することを更に含む、請求項１に記載の方法。
【請求項６】
前記持続性レベルのうちの１つは、２つ以上のストレージリソースでの冗長ストレージを指定し、前記方法は、前記２つ以上のストレージリソースを使用して前記１つの持続性レベルを有するＩ／Ｏ要求に応えることを更に含む、請求項１に記載の方法。
【請求項７】
前記持続性レベルの１つはエフェメラルキャッシングモードに対応し、前記方法は、前記１つの持続性レベルを有するＩ／Ｏ要求のデータをプライマリストレージリソースに記憶せずにキャッシュに記憶することを更に含む、請求項１に記載の方法。
【請求項８】
前記Ｉ／Ｏ要求を識別することは、ストレージスタック内のＩ／Ｏ要求を監視することを含む、請求項１に記載の方法。
【請求項９】
動作を実行可能なコンピュータ使用可能プログラムコードを記憶するコンピュータ可読記憶媒体を備えるコンピュータプログラム製品であって、前記動作は、
ストレージクライアントから発せられた入／出力（Ｉ／Ｏ）要求を受信することと、
前記Ｉ／Ｏ要求の１つ又は複数の特徴に基づいて、前記Ｉ／Ｏ要求の複数の持続性レベルの１つを決定することであって、前記持続性レベルのそれぞれは、前記Ｉ／Ｏ要求に応えるために使用されるストレージリソース、前記ストレージリソースの構成、及びストレージモードのうちの１つ又は複数を指定することと、
前記選択された持続性レベルに従って前記Ｉ／Ｏ要求に応えることと、
を含む、コンピュータプログラム製品。
【請求項１０】
前記持続性レベルのうちの第１の持続性レベルは、エフェメラルキャッシングモードを指定し、前記持続性レベルのうちの第２の持続性レベルは、ライトスルーキャッシングモードを指定する、請求項９に記載のコンピュータプログラム製品。
【請求項１１】
前記持続性レベルのうちの２つ以上は、前記２つ以上の持続性レベルのそれぞれのＩ／Ｏ要求に応えるために使用されるストレージリソースに関して異なる、請求項９に記載のコンピュータプログラム製品。
【請求項１２】
前記持続性レベルのうちの２つ以上は、ストレージ構成に関して異なる、請求項９に記載のコンピュータプログラム製品。
【請求項１３】
前記持続性レベルのうちの２つ以上はキャッシングモードに関して異なる、請求項９に記載のコンピュータプログラム製品。
【請求項１４】
前記持続性レベルのうちの第１の持続性レベルは、エフェメラルキャッシュモードを指定し、前記動作は、キャッシュリソースへの書き込みＩ／Ｏ要求のデータの書き込みに応答して、前記書き込みＩ／Ｏ要求のデータをプライマリストレージに書き込まずに、前記第１の持続性レベルの書き込みＩ／Ｏ要求の完了を確認することを更に含む、請求項９に記載のコンピュータプログラム製品。
【請求項１５】
前記持続性レベルのうちの第１の持続性レベルは、第１の誤り修正コード符号化を指定し、前記持続性レベルのうちの第２の持続性レベルは、第２の異なる誤り修正コード符号化を指定する、請求項９に記載のコンピュータプログラム製品。
【請求項１６】
前記動作は、前記Ｉ／Ｏ要求のソース識別子、前記Ｉ／Ｏ要求のファイル識別子、前記Ｉ／Ｏ要求に関連付けられたアプリケーション、及び前記Ｉ／Ｏ要求のパラメータのうちの１つ又は複数に基づいて、Ｉ／Ｏ要求の持続性レベルを決定することを更に含み、
請求項９に記載のコンピュータプログラム製品。
【請求項１７】
複数のストレージ要求のそれぞれに、複数の適応持続性レベルのうちの１つを、前記ストレージ要求の特徴に基づいて選ぶように構成される持続性レベルモジュールであって、ストレージ要求に選ばれる前記適応持続性レベルは、前記ストレージ要求に応えるためのストレージリソース、前記ストレージリソースの構成、及びストレージモードのうちの１つ又は複数を決定する、持続性レベルモジュールと、
１つ又は複数のストレージリソースとインタフェースするように構成されるインタフェースモジュールと、
前記インタフェースモジュールの使用によって前記ストレージ要求に割り当てられる前記適応持続性レベルに従って、前記ストレージ要求に応えるように構成されるストレージ要求実行モジュールと、
を備える、装置。
【請求項１８】
前記持続性レベルモジュールは、前記ストレージ要求のファイル識別子、前記ストレージ要求に関連付けられたアプリケーション、前記ストレージ要求のパラメータ、入／出力（ＩＯ）制御パラメータのうちの１つ又は複数に基づいて、ストレージ要求の適応持続性レベルを選ぶように構成される、請求項１７に記載の装置。
【請求項１９】
前記ストレージ要求実行モジュールは、ライトネバーキャッシュモードで、エフェメラル適応持続性レベルを有するストレージ要求のデータをキャッシュするように構成される、請求項１７に記載の装置。
【請求項２０】
前記適応持続性レベルのうちの第１の適応持続性レベルは、第１のＲＡＩＤ構成でデータを記憶することを含み、前記適応持続性レベルのうちの第２の適応持続性レベルは、第２の異なるＲＡＩＤ構成でデータを記憶することを含む、請求項１７に記載の装置。
【請求項２１】
バッキングストアに向けられたＩ／Ｏ要求を識別することと、
複数のキャッシュモードから、前記識別されたＩ／Ｏ要求にエフェメラルキャッシュモードを選択することであって、前記エフェメラルキャッシュモードは、前記データを前記バッキングストアに記憶せずに、データをキャッシュに記憶することを含む、選択することと、
前記識別されたＩ／Ｏ要求の前記データを前記エフェメラルキャッシュモードでキャッシュすることと、
を含む、方法。
【請求項２２】
前記識別されたＩ／Ｏ要求の前記データを、前記バッキングストアに記憶せずに前記キャッシュに記憶することに応答して、前記識別されたＩ／Ｏ要求の完了を確認することを更に含む、請求項２１に記載の方法。
【請求項２３】
前記識別されたＩ／Ｏ要求の前記データを再開動作間で保存する必要がないとの判断に応答して、前記エフェメラルキャッシュモードを選択することを更に含む、請求項２１に記載の方法。
【請求項２４】
前記識別されたＩ／Ｏ要求のソース識別子、前記識別されたＩ／Ｏ要求のファイル識別子、及び前記識別されたＩ／Ｏ要求に関連付けられたアプリケーションのうちの１つ又は複数に基づいて、前記複数のキャッシュモードから前記エフェメラルキャッシュモードを選択することを更に含む、請求項２１に記載の方法。
【請求項２５】
新しい仮想マシンホストへの移動に応答して、エフェメラルキャッシュデータをフラッシュすることを更に含み、前記エフェメラルキャッシュデータのフラッシュは、前記エフェメラルキャッシュモードでキャッシュされたデータを前記バッキングストアに記憶することを含む、請求項２１に記載の方法。
【請求項２６】
仮想マシンが第１の仮想マシンホストから第２の仮想マシンホストに移行したことに応答して、前記エフェメラルキャッシュモードでキャッシュされたデータに関するキャッシュメタデータを前記仮想マシン内に保持することを更に含む、請求項２１に記載の方法。
【請求項２７】
前記第２の仮想マシンホストにおける仮想マシンキャッシュに、前記第１の仮想マシンホストに保持される前記エフェメラルキャッシュモードでキャッシュされたデータを移入することを更に含む、請求項２６に記載の方法。
【請求項２８】
動作を実行するように実行可能なコンピュータ使用可能なプログラムコードを記憶するコンピュータ可読記憶媒体を備えるコンピュータプログラム製品であって、前記動作は、
プライマリストレージに向けられた入／出力（Ｉ／Ｏ）要求のデータが不必要であると判断することと、
前記Ｉ／Ｏ要求の前記データをキャッシュストレージ内に排他的にキャッシュすることと、
前記Ｉ／Ｏ要求の前記データを前記キャッシュストレージ内にキャッシュすることに応答して、前記Ｉ／Ｏ要求の完了を確認することと、
を含む、コンピュータプログラム製品。
【請求項２９】
前記Ｉ／Ｏ要求の前記データをキャッシュすることは、前記プライマリストレージに関与しない１つ又は複数の高速パスＩ／Ｏ動作を実行することを含む、請求項２８に記載のコンピュータプログラム製品。
【請求項３０】
前記動作は、ストレージスタック内のＩ／Ｏ要求を監視することを更に含み、前記Ｉ／Ｏ要求のデータを前記キャッシュストレージ内にキャッシュすることは、前記ストレージスタック外の１つ又は複数の高速パスＩ／Ｏ動作を実行することを含む、請求項２８に記載のコンピュータプログラム製品。
【請求項３１】
前記Ｉ／Ｏ要求が不必要データに関すると判断することは、前記Ｉ／Ｏ要求のソース識別子に持続性レベル基準を適用することを含み、前記持続性レベル基準は、ファイルレベル知識及びアプリケーションレベル知識のうちの一方に基づく、請求項２８に記載のコンピュータプログラム製品。
【請求項３２】
前記Ｉ／Ｏ要求は仮想マシンによって生成され、前記動作は、前記仮想マシンが前記リモート仮想マシンホストに転送されることに応答して、前記キャッシュストレージ内に排他的に記憶された前記仮想マシンのデータをリモート仮想マシンホストにプッシュすることを更に含む、請求項２８に記載のコンピュータプログラム製品。
【請求項３３】
前記動作は、リモート仮想マシンホストからの要求に応答して、前記キャッシュストレージ内に排他的に記憶されたデータをリモート仮想マシンホストに転送することを更に含む、請求項２８に記載のコンピュータプログラム製品。
【請求項３４】
前記動作は、前記仮想マシンが異なる仮想マシンホストに移行することに応答して、前記キャッシュストレージ内に排他的に記憶されたデータに関連付けられたキャッシュタグを保持することを更に含む、請求項２８に記載のコンピュータプログラム製品。
【請求項３５】
前記動作は、前記キャッシュストレージに排他的に記憶されたデータを前記リモート仮想マシンホストの仮想マシンキャッシュに転送することを更に含み、転送することは、前記仮想マシンのキャッシュ管理システムの仮想マシン識別子に基づいて、前記キャッシュストレージに排他的に記憶された前記仮想マシンのデータを識別することを含む、請求項３４に記載のコンピュータプログラム製品。
【請求項３６】
バッキングストアに向けられたＩ／Ｏ要求をインターセプトするように構成されるエージェントと、
前記インターセプトされたＩ／Ｏ要求の１つ又は複数の特徴に基づいて、前記インターセプトされたＩ／Ｏ要求の複数のキャッシュモードのうちの１つを識別するように構成される持続性レベルモジュールと、
キャッシュ内の前記インターセプトされたＩ／Ｏ要求の前記データを、前記識別されたキャッシュモードに従ってキャッシュするように構成されるキャッシュ管理システムであって、前記複数のキャッシュモードはエフェメラルキャッシュモードを含み、データを前記エフェメラルキャッシュモードでキャッシュすることは、前記データを前記キャッシュのみに、前記データを前記バッキングストアに書き込まずに書き込むことを含む、キャッシュ管理システムと、
を備える、装置。
【請求項３７】
前記持続性レベルモジュールは、前記インターセプトされたＩ／Ｏ要求のソース識別子、前記インターセプトされたＩ／Ｏ要求のファイル識別子、及び前記インターセプトされたＩ／Ｏ要求に関連付けられたアプリケーションのうちの１つ又は複数に基づいて、前記インターセプトされたＩ／Ｏ要求の前記キャッシュモードを識別するように構成される、請求項３６に記載の装置。
【請求項３８】
前記キャッシュ管理システムは、前記対応するＩ／Ｏ要求のデータを前記キャッシュに書き込むことに応答して、前記エフェメラルキャッシュモードでキャッシュされたＩ／Ｏ要求の完了を確認するとともに、前記対応するＩ／Ｏ要求のデータを前記バッキングストアに書き込むことに応答して、ライトスルーキャッシュモードが割り当てられたＩ／Ｏ要求の完了を確認するように構成される、請求項３６に記載の装置。
【請求項３９】
前記仮想マシンがリモート仮想マシンホストに転送されるとの判断に応答して、第１の仮想マシンホストにおける前記キャッシュ内に前記エフェメラルキャッシュモードで許容される仮想マシンのデータを保持するように構成されるキャッシュ保持モジュールと、
前記エフェメラルキャッシュモードで前記キャッシュ内に許容される前記仮想マシンの前記保持データを前記リモート仮想マシンホストに転送するように構成されるキャッシュ転送モジュールと、
を更に備える、請求項３６に記載の装置。
【請求項４０】
前記リモート仮想マシンホストでの仮想マシンキャッシュに、前記第１の仮想マシンホストから転送されたデータを移入するように構成されるキャッシュストレージモジュールを更に備える、請求項３９に記載の装置。
【請求項４１】
キャッシュ管理モジュールは、リモート仮想マシンホストへの前記仮想マシンの転送に応答して、１つ又は複数のプライマリストレージリソースに前記エフェメラルモードでキャッシュされる仮想マシンのデータをフラッシュするように構成される、請求項３６に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、適応持続性システム及び方法に関し、幾つかの実施形態では、エフェメラルキャッシュモードでキャッシュされたデータを管理するシステム及び方法に関する。
【背景技術】
【０００２】
入／出力（Ｉ／Ｏ）要求は、異なるデータ持続性ニーズを有し得る。例えば、幾つかの書き込み要求は、データ損失又は破損から安全である必要があるデータに関し得る。他の書き込み要求は、長期間にわたって保存する必要がなく、且つ／又は再開及び／又はリブート時に失われることが予期されるデータに関し得る。ストレージシステムは全ての要求を同様に処理し得、これはＩ／Ｏ性能を低減させ得る。
【発明の概要】
【０００３】
本明細書において、適応持続性方法の実施形態が開示される。開示される方法は、１つ又は複数のマシン実行可能動作及び／又はステップを含み得る。開示される動作及び／又はステップは、コンピュータ可読記憶媒体に記憶されたプログラムコードとして実施し得る。したがって、本明細書に開示される方法の実施形態は、１つ又は複数の方法動作及び／又はステップを実行するように実行可能なコンピュータ使用可能プログラムコードを記憶するコンピュータ可読記憶媒体を含むコンピュータプログラム製品として実施し得る。
【０００４】
幾つかの実施形態では、開示される方法は、複数のＩ／Ｏ要求を識別することと、Ｉ／Ｏ要求の１つ又は複数の属性に基づいて、Ｉ／Ｏ要求の各持続性レベルを選択することと、Ｉ／Ｏ要求に選択された持続性レベルに従って１つ又は複数のストレージリソースを使用してＩ／Ｏ要求に応えることとを含む。Ｉ／Ｏ要求を識別することは、ストレージスタック内のＩ／Ｏ要求を監視することを含み得る。
【０００５】
持続性のレベルは、各持続性レベルを有するＩ／Ｏ要求に応える際に使用される１つ又は複数のストレージリソース、Ｉ／Ｏ要求に応えるために使用される１つ又は複数のストレージリソースの構成等に対応し得る。持続性レベルのうちの１つ又は複数は、ストレージモードを指定するように構成し得る。持続性レベルは、２つ以上のストレージリソースでの冗長ストレージを指定し得、本方法は、２つ以上のストレージリソースを使用して、１つの持続性レベルを有するＩ／Ｏ要求に応えることを更に含み得る。
【０００６】
幾つかの実施形態では、本方法は、第１のＩ／Ｏ要求に関連付けられたファイル識別子及び第１のＩ／Ｏ要求に関連付けられたアプリケーションのうちの１つ又は複数に基づいて、第１のＩ／Ｏ要求の第１の持続性レベルを選択することを含む。持続性レベルの１つは、エフェメラルキャッシングモードに対応し得、本方法は、１つの持続性レベルを有するＩ／Ｏ要求のデータを、プライマリストレージリソースに記憶せずにキャッシュに記憶することを更に含み得る。
【０００７】
本明細書では、ストレージクライアントから発せられた入／出力（Ｉ／Ｏ）要求を受信すること、Ｉ／Ｏ要求の１つ又は複数の特徴に基づいて、Ｉ／Ｏ要求の複数の持続性レベルのうちの１つを決定することであって、各持続性レベルは、Ｉ／Ｏ要求に応えるために使用すべきストレージリソース、ストレージリソースの構成、及びストレージモードのうちの１つ又は複数を指定する、決定すること、及び／又は選択された持続性レベルに従ってＩ／Ｏ要求に応えることを含む方法の実施形態が開示される。持続性レベルのうちの第１の持続性レベルは、エフェメラルキャッシングモードを指定し得、持続性レベルのうちの第２の持続性レベルは、ライトスルーキャッシングモードを指定する。持続性レベルのうちの２つ以上は、Ｉ／Ｏ要求に応えるために使用されるストレージリソース、ストレージ構成、及び／又はキャッシングモードに関して異なる。
【０００８】
持続性レベルのうちの第１の持続性レベルは、エフェメラルキャッシュモードを指定し得、本方法は、書き込みＩ／Ｏ要求のデータをキャッシュリソースに書き込むことに応答して、書き込みＩ／Ｏ要求のデータをプライマリストレージに書き込まずに、第１の持続性レベルの書き込みＩ／Ｏ要求の完了を確認することを更に含み得る。幾つかの実施形態では、持続性レベルのうちの第１の持続性レベルは、第１の誤り修正コード符号化を指定し、持続性レベルのうちの第２の持続性レベルは、第２の異なる誤り修正コード符号化を指定する。
【０００９】
本方法は、Ｉ／Ｏ要求のソース識別子、Ｉ／Ｏ要求のファイル識別子、Ｉ／Ｏ要求に関連付けられたアプリケーション、及びＩ／Ｏ要求のパラメータのうちの１つ又は複数に基づいて、Ｉ／Ｏ要求の持続性レベルを決定することを更に含み得る。
【００１０】
本明細書では、複数のストレージ要求のそれぞれに、複数の適応持続性レベルのうちの１つを、ストレージ要求の特徴に基づいて選ぶように構成される持続性レベルモジュールであって、ストレージ要求に選ばれる適応持続性レベルは、ストレージ要求に応えるストレージリソース、ストレージリソースの構成、及びストレージモードのうちの１つ又は複数を決定する、持続性レベルモジュールと、１つ又は複数のストレージリソースとインタフェースするように構成されるインタフェースモジュールと、インタフェースモジュールの使用によってストレージ要求に割り当てられる適応持続性レベルに従って、ストレージ要求に応えるように構成されるストレージ要求実行モジュールとを備える装置の実施形態が開示される。持続性レベルモジュールは、ストレージ要求のファイル識別子、ストレージ要求に関連付けられたアプリケーション、ストレージ要求のパラメータ、及び入／出力（ＩＯ）制御パラメータのうちの１つ又は複数に基づいて、ストレージ要求の適応持続性レベルを選ぶように構成し得る。ストレージ要求実行モジュールは、ライトネバーキャッシュモードで、エフェメラル適応持続性レベルを有するストレージ要求のデータをキャッシュするように構成し得る。適応持続性レベルのうちの第１の適応持続性レベルは、第１のＲＡＩＤ構成でデータを記憶することを含み得、適応持続性レベルのうちの第２の適応持続性レベルは、第２の異なるＲＡＩＤ構成でデータを記憶することを含み得る。
【００１１】
本明細書では、適応キャッシュ持続性方法の実施形態が開示される。開示される方法は、１つ又は複数のマシン実行可能動作及び／又はステップを含み得る。開示される動作及び／又はステップは、コンピュータ可読記憶媒体に記憶されたプログラムコードとして実施し得る。したがって、本明細書に開示される方法の実施形態は、１つ又は複数の方法動作及び／又はステップを実行するように実行可能なコンピュータ使用可能プログラムコードを記憶するコンピュータ可読記憶媒体を含むコンピュータプログラム製品として実施し得る。
【００１２】
幾つかの実施形態では、開示される方法は、バッキングストアに向けられたＩ／Ｏ要求を識別すること、複数のキャッシュモードから、識別されたＩ／Ｏ要求にエフェメラルキャッシュモードを選択することであって、エフェメラルキャッシュモードは、データをバッキングストアに記憶せずに、データをキャッシュに記憶することを含む、選択すること、及び／又は識別されたＩ／Ｏ要求のデータをエフェメラルキャッシュモードでキャッシュすることを含む。本方法は、識別されたＩ／Ｏ要求のデータを、バッキングストアに記憶せずにキャッシュに記憶することに応答して、識別されたＩ／Ｏ要求の完了を確認することを更に含み得る。
【００１３】
エフェメラルキャッシュモードは、識別されたＩ／Ｏ要求のデータを再開動作間で保存する必要がないとの判断に応答して選択し得る。本方法は、識別されたＩ／Ｏ要求のソース識別子、識別されたＩ／Ｏ要求のファイル識別子、及び識別されたＩ／Ｏ要求に関連付けられたアプリケーションのうちの１つ又は複数に基づいて、複数のキャッシュモードからエフェメラルキャッシュモードを選択することを更に含み得る。
【００１４】
幾つかの実施形態では、本方法は、新しい仮想マシンホストへの移行に応答して、エフェメラルキャッシュデータをフラッシュすることを含み、エフェメラルキャッシュデータのフラッシュは、エフェメラルキャッシュモードでキャッシュされたデータをバッキングストアに記憶することを含む。本方法は、仮想マシンが第１の仮想マシンホストから第２の仮想マシンホストに移行したことに応答して、エフェメラルキャッシュモードでキャッシュされたデータに関するキャッシュメタデータを仮想マシン内に保持すること、及び／又は第２の仮想マシンホストにおける仮想マシンキャッシュに、第１の仮想マシンホストに保持されるエフェメラルキャッシュモードでキャッシュされたデータを移入することを更に含み得る。
【００１５】
幾つかの実施形態では、開示される方法は、プライマリストレージに向けられた入／出力（Ｉ／Ｏ）要求のデータが不必要であると判断すること、Ｉ／Ｏ要求のデータをキャッシュストレージ内に排他的にキャッシュすること、及び／又はＩ／Ｏ要求のデータをキャッシュストレージ内にキャッシュすることに応答して、Ｉ／Ｏ要求の完了を確認することとを含み得る。Ｉ／Ｏ要求のデータをキャッシュすることは、プライマリストレージに関与しない１つ又は複数の高速パスＩ／Ｏ動作を実行することを含み得る。
【００１６】
幾つかの実施形態では、本方法は、ストレージスタック内のＩ／Ｏ要求を監視することを更に含み得、Ｉ／Ｏ要求のデータをキャッシュすることは、ストレージスタック外の１つ又は複数の高速パスＩ／Ｏ動作を実行することを更に含み得る。
【００１７】
Ｉ／Ｏ要求が不必要データに関すると判断することは、Ｉ／Ｏ要求のソース識別子に持続性レベル基準を適用することを含み得る。持続性レベル基準は、ファイルレベル知識及びアプリケーションレベル知識のうちの一方に基づき得る。
【００１８】
Ｉ／Ｏ要求は仮想マシンによって生成し得、本方法は、仮想マシンがリモート仮想マシンホストに転送されることに応答して、キャッシュストレージ内に排他的に記憶された仮想マシンのデータをリモート仮想マシンホストにプッシュすることを更に含み得る。幾つかの実施形態では、本方法は、リモート仮想マシンホストからの要求に応答して、キャッシュストレージ内に排他的に記憶されたデータをリモート仮想マシンホストに転送すること、及び／又は仮想マシンが異なる仮想マシンホストに移行することに応答して、キャッシュストレージ内に排他的に記憶されたデータに関連付けられたキャッシュタグを保持することを更に含む。
【００１９】
キャッシュストレージに排他的に記憶されたデータをリモート仮想マシンホストの仮想マシンキャッシュに転送することは、仮想マシンのキャッシュ管理システムの仮想マシン識別子に基づいて、キャッシュストレージに排他的に記憶された仮想マシンのデータを識別することを含み得る。
【００２０】
本明細書には、バッキングストアに向けられたＩ／Ｏ要求をインターセプトするように構成されるエージェント、インターセプトされたＩ／Ｏ要求の１つ又は複数の特徴に基づいて、インターセプトされたＩ／Ｏ要求の複数のキャッシュモードのうちの１つを識別するように構成される持続性レベルモジュール、及び／又はキャッシュ内のインターセプトされたＩ／Ｏ要求のデータを、識別されたキャッシュモードに従ってキャッシュするように構成されるキャッシュ管理システムであって、複数のキャッシュモードはエフェメラルキャッシュモードを含み、データをエフェメラルキャッシュモードでキャッシュすることは、データをキャッシュのみに、データをバッキングストアに書き込まずに書き込むことを含む、キャッシュ管理システムを備える装置の実施形態が開示される。持続性レベルモジュールは、インターセプトされたＩ／Ｏ要求のソース識別子、インターセプトされたＩ／Ｏ要求のファイル識別子、及びインターセプトされたＩ／Ｏ要求に関連付けられたアプリケーションのうちの１つ又は複数に基づいて、インターセプトされたＩ／Ｏ要求のキャッシュモードを識別するように構成し得る。
【００２１】
幾つかの実施形態では、キャッシュ管理システムは、対応するＩ／Ｏ要求のデータをキャッシュに書き込むことに応答して、エフェメラルキャッシュモードでキャッシュされたＩ／Ｏ要求の完了を確認するとともに、対応するＩ／Ｏ要求のデータをバッキングストアに書き込むことに応答して、ライトスルーキャッシュモードが割り当てられたＩ／Ｏ要求の完了を確認するように構成される。
【００２２】
本装置の実施形態は、仮想マシンがリモート仮想マシンホストに転送されるとの判断に応答して、第１の仮想マシンホストにおけるキャッシュ内にエフェメラルキャッシュモードで許容される仮想マシンのデータを保持するように構成されるキャッシュ保持モジュール、及び／又はエフェメラルキャッシュモードでキャッシュ内に許容される仮想マシンの保持データをリモート仮想マシンホストに転送するように構成されるキャッシュ転送モジュールを更に含み得る。キャッシュストレージモジュールは、リモート仮想マシンホストでの仮想マシンキャッシュに、第１の仮想マシンホストから転送されたデータを移入するように構成し得る。幾つかの実施形態では、キャッシュ管理モジュールは、仮想マシンがリモートマシン仮想マシンホストに移ることに応答して、エフェメラルキャッシュモードでキャッシュされた仮想マシンのデータを１つ又は複数のプライマリストレージリソースにフラッシュするように構成し得る。
【図面の簡単な説明】
【００２３】
本開示は、添付図面を含み、添付図面を参照し、本明細書に開示される実施形態のより具体的な説明を提供する。しかし、本開示は、図に示される特定の実施形態に限定されない。本開示の範囲から逸脱せずに、本開示の教示は、他の実施形態で利用し、且つ／又は他の実施形態に適応し得、且つ／又は開示される実施形態に変更を行い得る。
【００２４】
【図１Ａ】適応持続性システムの一実施形態のブロック図である。
【図１Ｂ】適応持続性システムの別の実施形態のブロック図である。
【図１Ｃ】Ｉ／Ｏ要求に応える方法の一実施形態の流れ図である。
【図２Ａ】仮想計算環境の一実施形態のブロック図である。
【図２Ｂ】仮想計算環境の別の実施形態のブロック図である。
【図３】キャッシュの一実施形態のブロック図である。
【図４】キャッシュタグデータ構造の一実施形態を示す。
【図５】キャッシュマッピングの一実施形態を示す。
【図６】キャッシュ管理システムの一実施形態を示す。
【図７Ａ】キャッシュ管理システムの別の実施形態のブロック図である。
【図７Ｂ】持続性レベルポリシーの一実施形態を示す。
【図７Ｃ】キャッシュ管理システムの別の実施形態を示す。
【図８Ａ】適応持続性レベルに従ってデータをキャッシュする一実施形態の流れ図である。
【図８Ｂ】適応持続性レベルに従ってデータをキャッシュする別の実施形態の流れ図である。
【図９】仮想計算環境の別の実施形態のブロック図である。
【図１０】キャッシュデータを転送する方法の一実施形態の流れ図である。
【図１１】キャッシュデータを転送する方法の別の実施形態の流れ図である。
【図１２】キャッシュデータを転送する方法の別の実施形態の流れ図である。
【発明を実施するための形態】
【００２５】
本明細書に記載の実施形態は、仮想計算環境、ベアメタル計算環境等を含むが、これらに限定されない様々な計算環境でのデータ入／出力（Ｉ／Ｏ）要求及び動作の管理に関連する。したがって、本明細書に開示される特定の例及び／又は実施形態は仮想計算環境に関連するが、本開示はこの点に関して限定されない。
【００２６】
ストレージモジュールは、１つ又は複数のストレージクライアントのＩ／Ｏ動作を管理するように構成し得、ストレージクライアントは、オペレーティングシステム、仮想オペレーティングシステム、ハイパーバイザ、ファイルシステム、ボリュームマネージャ、データベースアプリケーション、ユーザアプリケーション等を含み得るが、これらに限定されない。ストレージモジュールは、ストレージクライアントのＩ／Ｏ要求に応えるように構成し得る。ストレージモジュールは、選択された「持続性レベル」に従ってＩ／Ｏ要求に応えるように構成し得る。本明細で使用される場合、「持続性のレベル」又は「持続性レベル」は、Ｉ／Ｏ要求の１つ又は複数の特徴及び／又は属性を指す。動作の持続性のレベルは、Ｉ／Ｏ要求に応えるために使用される記憶装置及び／又は記憶媒体（例えば、不揮発性メモリ又は不揮発性記憶媒体）、選択された記憶装置及び／又は媒体の構成（例えば、安価ディスク冗長アレイ（ＲＡＩＤ）レベル、ＪＢＯＤ（ｊｕｓｔ  ａ  ｂｕｎｃｈ  ｏｆ  ｄｉｓｋｓ）構成、ミラーリング等）、Ｉ／Ｏ要求のストレージモード及び／又はフォーマット（例えば、ライトスルーキャッシュモード、エフェメラルキャッシュモード、ＥＣＣ符号化等）等に関連し得る。したがって、持続性の異なるレベルは、揮発性メモリ、不揮発性記憶媒体（例えば、磁気、光学、テープ、固体状態等）等の異なるタイプの記憶装置及び／又は記憶媒体にデータを記憶すること、異なるＲＡＩＤレベル、ミラーリング構成、パリティ構成等の異なるストレージ構成にデータを記憶すること、及び／又は異なるＥＣＣ符号化、暗号化レベル、キャッシングモード、アトミック性、検証等の１つ又は複数の異なるモードでデータを記憶することを含み得る。
【００２７】
ストレージモジュールは、Ｉ／Ｏ要求の属性に従ってＩ／Ｏ要求の持続性レベルを選択するように構成し得、属性は、Ｉ／Ｏ要求内に含まれる、且つ／又は関連付けられる特定の持続性レベルへの明示的な要求、特定のストレージ特徴への要求、Ｉ／Ｏ要求、ポリシー、プロファイリング、テスト、及び経験の特徴及び／又は属性等を含み得るが、これらに限定されない。例えば、長期間にわたって利用可能である必要があるデータに関するＩ／Ｏ要求に応答して、ストレージモジュールは、データを不揮発性記憶媒体にＲＡＩＤ及び／又はミラーリング構成で記憶することを含む持続性レベルを選択し得る。選択された持続性レベルは、Ｉ／Ｏ要求のデータをライトスルーキャッシュ構成でキャッシュすることを更に含み得、それにより、データへの更新はプライマリストレージにライトスルーされる。別の例では、限られた時間だけ保持する必要があるデータに関連するＩ／Ｏ要求に応答して、ストレージモジュールは、Ｉ／Ｏ要求のデータを「エフェメラル」又は「ライトネバー」キャッシュモードでキャッシュすることを含む持続性レベルを選択し得る。本明細書で使用される場合、エフェメラルキャッシュモードとは、キャッシュされたデータがプライマリストレージにライトスルー及び／又はライトバックされないキャッシュ構成を指し、エフェメラルデータは、キャッシュのみに記憶し得る。したがって、エフェメラルキャッシュ構成でデータをキャッシュすることは、プライマリストレージにアクセスせずに（且つ／又はデータをプライマリストアに書き込まず、且つ／又はコピーせずに）データをキャッシュに記憶することを含む。エフェメラルキャッシュ構成でキャッシュされたデータは、データがキャッシュから退去する場合（例えば、キャッシュクライアントの電力サイクル、リブート等）、データが、ライトスルー及び／又はライトバックキャッシュモード等の異なるキャッシュモードでデータをキャッシュすることを含み得る別の持続性レベルに遷移しない限り、失われ得る。
【００２８】
図１Ａは、適応持続性システムの一実施形態のブロック図である。モジュール１３０は、ベアメタル計算環境又は計算装置を含み得る計算環境１１０内で実施し得、計算装置は、１つ又は複数の計算装置、複数の計算装置（例えば、クラスタ、グリッド、又は他の構成の計算装置グループ）、パーソナルコンピュータ、サーバコンピュータ、ブレード、ラップトップ、ノートブック、スマートフォン等であり得るが、これらに限定されない。計算環境１１０は、１つ又は複数の仮想マシン、仮想デスクトップ（例えば、仮想デスクトップインフラ（ＶＤＩ）環境内）、仮想コンピュータ等を含む仮想計算環境であり得る。
【００２９】
計算環境１１０は、処理リソース１１２、揮発性メモリリソース１１３、永続性ストレージリソース１１４、及び／又は通信インタフェース１１５を含み得る。処理リソース１１２は、１つ又は複数の汎用及び／又は専用処理要素及び／又はコアを含み得る。処理リソース１１２は、永続性ストレージリソース１１４からロードされる命令を実行するように構成し得る。本明細書に開示されるモジュール及び／又は方法の部分は、永続性ストレージリソース１１４に記憶されるマシン可読命令として実施し得る。リソース１１２、１１３、１１４、及び／又は１１５は、物理的な計算構成要素及び／又は仮想化環境（例えば、ハイパーバイザ）により、且つ／又は仮想化環境を通して提供される仮想計算リソースを含み得る。
【００３０】
ストレージモジュール１３０は、Ｉ／Ｏ要求受信器モジュール１３２と、持続性レベルモジュール１３４と、Ｉ／Ｏ要求実行モジュール１３６とを含み得る。ストレージモジュール１３０の部分は、計算環境１１０で動作するか、又は計算環境１１０と併せて動作し得る。代替又は追加として、ストレージモジュール１３０の部分は、計算環境１１０とは別個に実施し得、例えば、ストレージモジュール１３０の部分は、周辺構成要素相互接続エクスプレス（ＰＣＩ−ｅ）バス、シリアルアドバンストテクノロジーアタッチメント（シリアルＡＴＡ）バス、ユニバーサルシリアルバス（ＵＳＢ）接続、電気電子技術者協会（ＩＥＥＥ）１３９４バス（ファイアワイヤ）、外部ＰＣＩバス、インフィニバンド、通信ネットワーク１０５等のシステムバスを使用して接続し得る。
【００３１】
ストレージモジュール１３０は、１つ又は複数のストレージリソース１４０Ａ〜Ｎに通信可能に結合し得る。ストレージリソース１４０Ａ〜Ｎは、各インタフェースメカニズム１４１を介してアクセス可能なローカルストレージリソースを含み得、インタフェースメカニズム１４１は、バスインタフェース及び／又はプロトコル（例えば、システムバス、ローカルバス、Ｉ／Ｏバス等）を含み得るが、それらに限定されない。ストレージリソース１４０Ａ〜Ｎは、１つ又は複数のリモートのネットワークアクセス可能なストレージリソース１４０Ｃを更に含み得、これは、例えば、ストレージエリアネットワーク（ＳＡＮ）リソース、ネットワーク接続ストレージ（ＮＡＳ）等を含み得るが、これらに限定されず、リモートＩ／Ｏインタフェース及び／又はプロトコル１４１を介してアクセスし得る。
【００３２】
ストレージリソース１４０Ａ〜Ｎは、様々な構成の異なるタイプの記憶装置及び／又は記憶媒体を含み得る。ストレージリソース１４０Ａ〜Ｎは、揮発性メモリ（ＤＲＡＭ）、プロセッサ、キャッシュ等の揮発性ストレージリソースと、磁気ハードドライブ、光学記憶媒体、固体状態記憶媒体等の不揮発性ストレージリソースと、キャッシュリソース等とを含み得るが、これらに限定されない。したがって、ストレージリソース１４０Ａ〜Ｎは、フラッシュメモリ、ナノランダムアクセスメモリ（ナノＲＡＭ又はＮＲＡＭ）、ナノ結晶ワイヤベースメモリ、酸化ケイ素系サブ１０ナノメートルプロセスメモリ、グラフェンメモリ、ケイ素−酸化物−窒化物−酸化物−ケイ素（ＳＯＮＯＳ）、抵抗ランダムアクセスメモリ（ＲＲＡＭ（登録商標））、プログラマブルメタライゼーションセル（ＰＭＣ）、導電性ブリッジングＲＡＭ（ＣＢＲＡＭ）、磁気抵抗ＲＡＭ（ＭＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、相変化ＲＡＭ（ＰＲＡＭ）、磁気媒体（例えば、１つ又は複数のハードディスク）、光学媒体等を含み得るが、これらに限定されない。
【００３３】
ストレージリソース１４０Ａ〜Ｎは、１つ又は複数の異なるＲＡＩＤレベル、ミラーリング構成、キャッシング構成及び／又はモード、ＥＣＣ符号化、パリティ構成等の様々なストレージ構成及び／又はモードで構成し得る。例えば、ストレージリソース１４０Ａ〜Ｎのうちの１つ又は複数は、ＲＡＩＤ及び／又はミラーリング構成での１組の不揮発性記憶要素（例えば、ハードディスク）を含み得、一方、他のストレージリソース１４０Ａ〜Ｎは非冗長であり得る。ストレージリソース１４０Ａ〜Ｎは、異なる保持ポリシー（例えば、キャッシングモード）に従ってデータを記憶するように構成し得る。例えば、ストレージリソース１４０Ａは、別のプライマリストレージリソース１４０Ｂについてのデータをキャッシュするように構成し得る。ストレージモジュール１３０は、特定のキャッシングモード及び／又は構成で動作するようにキャッシュリソースを構成し得る。例えば、ストレージモジュール１３０は、第１のＩ／Ｏ要求のデータをライトスルー構成でキャッシュし得（例えば、データをキャッシュストレージリソース１４０Ａ及びプライマリストレージリソース１４０Ｂに書き込む）、第２のＩ／Ｏ要求のデータをエフェメラルキャッシュモードでキャッシュし得、エフェメラルキャッシュモードでは、データはキャッシュストレージリソース１４０Ａのみに記憶され、退去（例えば、リブート）時に失われる。
【００３４】
ストレージモジュール１３０は、１つ又は複数のストレージクライアントからのＩ／Ｏ要求１１６に応えるように構成し得る。Ｉ／Ｏ要求１１６は、ストレージモジュール１３０の１つ又は複数のインタフェース１３１を介してＩ／Ｏ要求受信器モジュール１３２において受信し得、インタフェースは、１つ又は複数のドライバ、ライブラリ、モジュール、ブロックデバイスインタフェース、インタフェース拡張（例えば、入／出力制御（ＩＯＣＴＬ）インタフェース）、アプリケーションプログラミングインタフェース（ＡＰＩ）、アプリケーションバイナリインタフェース（ＡＢＩ）、オブジェクトクラス、リモートインタフェース（例えば、リモートプロシージャコール、簡易オブジェクトアクセスプロトコル等）等を含み得るが、これらに限定されない。
【００３５】
ストレージモジュール１３０は、Ｉ／Ｏ要求１１６の持続性レベルを選択するように構成される持続性レベルモジュール１３４を更に備え得る。上述したように、持続性レベルを決定することは、Ｉ／Ｏ要求１１６に応えるための１つ又は複数のストレージリソース１４０Ａ〜Ｎを選択すること、１つ又は複数の選択されたストレージリソース１４０Ａ〜Ｎのストレージ構成（例えば、ＲＡＩＤレベル、ミラーリング等）を選択すること、及び／又はＩ／Ｏ要求１１６のストレージモード（例えば、キャッシングモード、ＥＣＣ符号化等）を選択することを含み得るが、これらに限定されない。
【００３６】
持続性レベルモジュール１３４は、持続性レベルポリシー１３５に基づいてＩ／Ｏ要求１１６の持続性レベルを決定し得る。持続性レベルポリシー１３５は、Ｉ／Ｏ要求１１６の特徴及び／又は属性に基づいて各Ｉ／Ｏ要求１１６に持続性レベルを割り当てるように構成された持続性レベル基準を含み得、Ｉ／Ｏ要求１１６の特徴及び／又は属性は、要求１１６に対応するファイル名、パス、ボリューム、及び／又は他のファイル識別子等のファイル属性及び／又は特徴（例えば、ファイルレベル知識）、Ｉ／Ｏ要求１１６のアプリケーション及び／又はストレージクライアントの属性及び／又は特徴（例えば、アプリケーションレベル知識）、Ｉ／Ｏ要求１１６から引き出された推測、Ｉ／Ｏ要求１１６の１つ又は複数のパラメータ、Ｉ／Ｏ要求１１６に関連付けられたパラメータ（例えば、ＩＯＣＴＬ情報）、Ｉ／Ｏ要求１１６に関連するプロファイルメタデータ、嗜好及び／又は構成、テスト及び経験等を含み得るが、これらに限定されない。例えば、幾つかの実施形態では、インタフェース１３１Ａ及び／又は１３１Ｂのうちの１つ又は複数は、Ｉ／Ｏ要求１１６の持続性レベル特徴を指定するメカニズムを含み得る。例えば、Ｉ／Ｏ要求１１６は、冗長ストレージ構成（例えば、特定のＲＡＩＤレベル及び／又はミラーリング構成）での記憶を要求し得る。Ｉ／Ｏ要求１１６は更に、Ｉ／Ｏ要求１１６のキャッシングモードを指定（例えば、ライトスルーキャッシュモードを指定）し得る。一時データに関連するＩ／Ｏ要求１１６は、異なる持続性レベル（又は異なる持続性レベル特徴）を指定し得る。例えば、一時データに関連するＩ／Ｏ要求１１６は、冗長性及び／又はミラーリングが要求されないことを示し得、エフェメラルキャッシュ構成でのキャッシュ（本明細書で更に詳細に開示する）を可能にし得る。代替又は追加として、持続性レベルモジュール１３４は、Ｉ／Ｏ要求１１６に関連する他の非明示的情報に関連する持続性レベル基準に基づいて、持続性レベルを決定し得る。例えば、持続性レベル基準は、（例えば、本明細書に記載されるように、ファイル選択基準の使用により）リブート間で保持する必要がない一時ファイルを識別し得る。持続性レベルモジュール１３４は、そのような一時ファイルに関連するＩ／Ｏ要求１１６に適切な持続性レベル（例えば、Ｉ／Ｏ要求１１６のデータをエフェメラルキャッシュにキャッシュすること）を割り当てる。
【００３７】
ストレージモジュール１３０は、Ｉ／Ｏ要求１１６に応えるように構成されたＩ／Ｏ要求実行モジュール１３６を更に備え得る。Ｉ／Ｏ要求実行モジュール１３６は、持続性レベルモジュール１３４によって決定されるＩ／Ｏ要求１１６の各持続性レベルに従って、Ｉ／Ｏ要求１１６のデータを１つ又は複数のストレージリソース１４０Ａ〜Ｎに１つ又は複数のストレージ構成及び／又はモードで記憶するように構成し得る。したがって、Ｉ／Ｏ要求実行モジュール１３６は、１つ又は複数の異なるストレージ構成で、且つ／又は１つ又は複数の異なるストレージモード（例えば、ライトスルーキャッシュ、ライトバックキャッシュ、エフェメラルキャッシュ等）で、データを１つ又は複数の異なるストレージリソース１４０Ａ〜Ｎに記憶するように構成し得る。
【００３８】
図１Ｂは、適応持続性システムの別の実施形態を示す。図１Ｂの実施形態は、計算環境１１０内で動作するストレージモジュール１３０を示す。上述したように、ストレージモジュール１３０は、Ｉ／Ｏ要求受信器モジュール１３２を介してＩ／Ｏ要求１１６を受信するように構成し得る。Ｉ／Ｏ要求１１６はストレージクライアント１１６Ａ〜Ｎによって発行し得、クライアントは、オペレーティングシステム１０６Ａ、ファイルシステム１０６Ｂ、データベース１０６Ｃ、ユーザアプリケーション１０６Ｄ等を含むが、これらに限定されない。ストレージクライアント１０６Ａ〜Ｎは、計算環境１１０内で動作し得、且つ／又は他のリモート計算環境１１１（例えば、リモートストレージクライアント１０６Ｅ）を含み、且つ／又は他のリモート計算環境１１１内で動作し得る。
【００３９】
幾つかの実施形態では、ストレージクライアント１０６Ａ〜Ｎのうちの１つ又は複数は、１つ又は複数のインタフェース１３１Ａを介してＩ／Ｏ要求１１６をストレージモジュール１３０に直接発行するように構成される。代替又は追加として、ストレージモジュール１３０は、計算環境１１０のＩ／Ｏスタック１１７内のＩ／Ｏ要求１１６を受信し、且つ／又は監視するように構成し得る。Ｉ／Ｏスタック１１７は、オペレーティングシステム１０６Ａ（又は仮想オペレーティングシステム１０６Ａ）のストレージスタック又は他のＩ／Ｏサブシステムを備え得る。したがって、幾つかの実施形態では、Ｉ／Ｏ要求受信器モジュール１３２は、Ｉ／Ｏスタック１１７内のＩ／Ｏ要求１１６を監視するように構成される１つ又は複数のエージェント１３３を備え得る。エージェント１３３は、Ｉ／Ｏドライバ、Ｉ／Ｏフィルタドライバ、ファイルフィルタドライバ、ボリュームフィルタドライバ、ディスクフィルタドライバ、ＳＣＳＩドライバ及び／又はフィルタ、仮想論理番号（ＶＬＵＮ）ドライバ等を含むが、これらに限定されない。
【００４０】
ストレージモジュール１３０は、１つ又は複数の各ストレージリソース１４０Ａ〜Ｎとインタフェースし、且つ／又はストレージリソースに対してストレージ動作を実行するように構成される１つ又は複数のＩ／Ｏインタフェース１１８Ａ〜Ｎを更に備え得る。Ｉ／Ｏインタフェース１１８Ａ〜Ｎのそれぞれは、特定のインタフェースメカニズム１４１Ａ〜Ｎの使用により１つ又は複数のストレージリソース１４０Ａ〜Ｎとインタフェースするように構成し得、インタフェースメカニズムは、ストレージリソースインタフェース（例えば、ブロックデバイスインタフェース、ストレージレイヤ、ＡＰＩ、プロトコル等）、バスプロトコル、通信インタフェースプロトコル、ネットワークプロトコル及び／又はインタフェース、仮想化プロトコル及び／又はインタフェース等を含み得るが、これらに限定されない。例えば、Ｉ／Ｏインタフェース１１８Ｂは、仮想Ｉ／Ｏインタフェース１４１Ｂを介して仮想化ストレージリソース１４０Ｂとインタフェースするように構成し得、Ｉ／Ｏインタフェース１１８Ｃは、ネットワーク１０５（及び／又は通信インタフェース１１５）を介してリモートストレージリソース１４０Ｃにアクセスするように構成し得る。
【００４１】
ストレージリソース１４０Ａ〜Ｎのうちの１つ又は複数は、固体状態記憶媒体等の不揮発性記憶媒体を含み得る。例えば、Ｉ／Ｏインタフェース１１８Ａは、固体状態ストレージリソース１４０Ａに通信可能に結合し得る。したがって、幾つかの実施形態では、Ｉ／Ｏインタフェース１１８Ａは、「Ａｐｐａｒａｔｕｓ，Ｓｙｓｔｅｍ，ａｎｄ  Ｍｅｔｈｏｄ  ｆｏｒ  Ｍａｎａｇｉｎｇ  Ｄａｔａ  Ｕｓｉｎｇ  ａ  Ｄａｔａ  Ｐｉｐｅｌｉｎｅ」という名称の、２００８年６月１２日に米国特許出願公開第２００８／０１４１０４３号明細書として公開された２００７年１２月６日に出願された米国特許出願第１１／９５２，０９１号明細書に記載のように、１つ又は複数の固体状態ストレージコントローラを備え、且つ／又は通信可能に結合し得、この特許出願を参照により本明細書に援用する。
【００４２】
ストレージモジュール１３０は、論理識別子とストレージリソースとの間のマッピング及び／又は関連付けを保持するように構成された変換モジュール１３７を備え得る。本明細書で使用される場合、論理識別子は、論理ブロックアドレス（ＬＢＡ）、シリンダ／ヘッド／セクタ（ＣＨＳ）アドレス、ファイル名、オブジェクト識別子、ｉノード、ユニバーサル一意識別子（ＵＵＩＤ）、グローバル一意識別子（ＧＵＩＤ）、ハッシュコード、シグネチャ、インデックスエントリ、範囲、広がり等を含むが、これらに限定されない、Ｉ／Ｏリソース（例えば、不揮発性ストレージリソース１４０に記憶されたデータ）を参照する任意の識別子を指す。マッピングは「任意対任意」であり得、それにより、任意の論理識別子を任意の物理的ストレージロケーションに関連付けることができる（その逆も同様）。
【００４３】
変換モジュール１３７は、Ｉ／Ｏ要求１１６のデータ及び／又はストレージリソース１４０Ａ〜Ｎに関連するＩ／Ｏメタデータ１３８を保持するように構成し得る。Ｉ／Ｏメタデータ１３８は、フォワードインデックス（例えば、論理識別子とストレージリソース１４０Ａ〜Ｎとの間のマッピング及び／又は関連付けのインデックス）、キャッシュタグ、有効性メタデータ、アトミック性及び／又はトランザクションメタデータ、持続性レベルメタデータ等を含み得るが、これらに限定されない。例えば、持続性レベルメタデータは、特定の論理識別子の持続性レベルを示し得、持続性レベルは、論理識別子に関連するＩ／Ｏ要求１１６に応えるために使用し得る。Ｉ／Ｏ要求１１６の持続性レベルメタデータは、Ｉ／Ｏ要求１１６に関連するデータを含むストレージリソース１４０Ａ〜Ｎ、ストレージリソース１４０Ａ〜Ｎのストレージ構成、データのストレージモードに関連する情報等を識別し得る。Ｉ／Ｏメタデータ１３８は１つ又は複数のデータ構造を含み得、データ構造は、ツリー、Ｂツリー、範囲符号化Ｂツリー、基数木、マップ、リスト、コンテンツアドレス指定可能マップ（ＣＡＭ）、テーブル、ハッシュテーブル、メモリレイアウト（例えば、連続メモリレイアウト又は他の適するレイアウト）、データ構造の組み合わせ等を含み得るが、これらに限定されない。Ｉ／Ｏメタデータ１３８は、揮発性メモリリソース１１３内に保持し得る。Ｉ／Ｏメタデータ１３８の部分は、永続的ストレージリソース１１４及び／又はストレージリソース１４０Ａ〜Ｎのうちの１つ又は複数等の１つ又は複数の不揮発性及び／又は不揮発性及び／又は非一時的なストレージリソースに存続し得る。
【００４４】
幾つかの実施形態では、ストレージモジュール１３０は、変換モジュール１３７の任意の任意対任意マッピングを利用して、データをログフォーマットで記憶し得、それにより、データは、ストレージリソース１４０Ａ〜Ｎのうちの１つ又は複数の「原位置外」で更新し、且つ／又は変更される。本明細書で使用される場合、データを「原位置外」に書き込むことは、データを「原位置」で上書きする（例えば、データの元の物理ロケーションを上書きする）のではなく、異なる媒体ストレージロケーションにデータを変更し、且つ／又は上書きすることを指す。データをログフォーマットで記憶することにより、不揮発性ストレージリソース１４０に陳腐化され、且つ／又は無効なデータが残ることになり得る。例えば、論理識別子「Ａ」のデータを原位置外に上書きすることにより、データを新しいストレージロケーションに書き込み、Ａに新しい物理ストレージロケーションを関連付ける（例えば、フォワードインデックスで）ようにＩ／Ｏメタデータ１３８を更新することに繋がり得る。Ａに関連付けられていた元の物理ストレージロケーションは、上書きされず、無効の古いデータを含む。同様に、論理識別子「Ｘ」のデータが削除されるか、又はトリミングされる場合、Ｘに割り当てられた物理ストレージロケーションは即座に消去されず、無効データとして不揮発性ストレージリソース１４０に残ることがある。
【００４５】
ストレージモジュール１３０は、データをストレージリソース１４０Ａ〜Ｎのうちの１つ又は複数にログフォーマット（例えば、「イベントログ」）で記憶するように構成されるログストレージモジュール１３９を更に備え得る。本明細書で使用される場合、ログフォーマットは、ストレージリソース１４０Ａ〜Ｎで実行される記憶動作の順序を定義し、且つ／又は保存するデータ記憶フォーマットを指す。したがって、ログフォーマットは、ストレージリソース１４０Ａ〜Ｎで実行される記憶動作の「イベントログ」を定義し得る。幾つかの実施形態では、ログストレージモジュール１３９は、データを付加点から順次記憶するように構成される。ログストレージモジュール１３９は、データ（及び／又は不揮発性ストレージリソース１４０上の物理ストレージロケーション）に各シーケンスインジケータを関連付けるように更に構成し得る。シーケンスインジケータは、ストレージリソース１４０Ａ〜Ｎ上の個々のデータセグメント、パケット、及び／又は物理ストレージロケーションに適用し得、且つ／又はデータ及び／又は物理ストレージロケーションのグループ（例えば、消去ブロック）に適用し得る。幾つかの実施形態では、ストレージロケーションがグルーミング動作で回収される（例えば、消去される）場合、及び／又はストレージロケーションがまず、データの記憶に使用される場合、シーケンスインジケータを物理ストレージロケーションに適用し得る。
【００４６】
幾つかの実施形態では、ログストレージモジュール１３９は、「付加のみ」パラダイムに従ってデータを記憶するように構成し得る。ストレージモジュール１３０は、ストレージリソース１４０Ａ〜Ｎのうちの１つ又は複数の物理的なアドレス空間内の現在付加点を保持し得る。本明細書で使用される場合、「付加点」は、特定の物理的なストレージロケーション（例えば、セクタ、ページ、ストレージ分割、オフセット等）へのポインタ又は参照を指す。ログストレージモジュール１３９は、付加点から順次、データを付加するように構成し得る。データが付加点に記憶されると、付加点は、ストレージリソース１４０Ａ〜Ｎの次の利用可能な物理的ストレージロケーションに移る。したがって、ストレージリソース１４０Ａ〜Ｎに記憶されたデータのログ順は、データに関連付けられたシーケンスインジケータ及び／又はストレージリソース１４０Ａ〜Ｎでのデータの順序に基づいて決定し得る。ログストレージモジュール１３９は、ストレージリソース１４０Ａ〜Ｎの物理アドレス空間をトラバースして（例えば、後述するようにリバースインデックスで）、次の利用可能な物理的ストレージロケーションを識別することにより、「次の」利用可能なストレージロケーションを識別するように構成し得る。
【００４７】
ストレージモジュール１３０は、不揮発性ストレージリソース（不揮発性記憶媒体）を「グルーミング」するように構成されるグルーマーを備え得、グルーミングすることは、上述したように、無効な、陳腐化した、又は「トリミング」されたデータを含む物理ストレージロケーションを回収することを含み得る。本明細書で使用される場合、不揮発性ストレージリソース（例えば、固体状態記憶媒体）を「グルーミング」することは、摩耗平滑化、無効及び／又は陳腐化データの除去、削除（例えば、トリミング）されたデータの除去、有効データのリフレッシュ及び／又は配置替え、物理ストレージリソース（例えば、消去ブロック）の回収、回収する物理ストレージリソースの識別等を含み得るが、これらに限定されない動作を指す。グルーマーは、バックグラウンドで、他のＩ／Ｏ要求１１６に応えることから自律的に動作し得る。したがって、グルーミング動作は、他のＩ／Ｏ要求１１６が処理される間に定義し得る。代替的には、グルーミングは、他のＩ／Ｏ要求１１６と共にフォアグラウンドで動作し得る。物理ストレージロケーションを回収することは、物理ストレージロケーションから無効データを消去することを含み得、それにより、物理ストレージロケーションを有効データの記憶に再使用することができる。例えば、ストレージ分割（例えば、消去ブロック又は論理消去ブロック）を回収することは、ストレージ分割から有効データを配置換えすることと、ストレージ分割を消去することと、ストレージ動作に向けてストレージ分割を初期化する（例えば、ストレージ分割をシーケンスインジケータでマークする）こととを含み得る。グルーマーは、不揮発性記憶媒体を摩耗平滑化し得、それにより、データは異なる物理ストレージロケーション全体にわたって系統的に拡散し、性能及びデータ信頼性を向上させ得るとともに、特定の物理ストレージロケーションの過剰使用及び／又は使用不足を回避し得る。不揮発性記憶媒体をグルーミングするシステム及び方法の実施形態は、「Ａｐｐａｒａｔｕｓ，Ｓｙｓｔｅｍ，ａｎｄ  Ｍｅｔｈｏｄ  ｆｏｒ  Ｓｔｏｒａｇｅ  Ｓｐａｃｅ  Ｒｅｃｏｖｅｒｙ  Ａｆｔｅｒ  Ｒｅａｃｈｉｎｇ  ａ  Ｒｅａｄ  Ｃｏｕｎｔ  Ｌｉｍｉｔ」という名称の２０１１年１２月６日に発行された米国特許第８，０７４，０１１号明細書に開示されており、これを参照により本明細書に援用する。
【００４８】
幾つかの実施形態では、ストレージモジュール１３０は、固体状態記憶媒体等の非対称「ライトワンス」不揮発性ストレージリソース１４０を管理するように構成し得る。本明細書で使用される場合、「ライトワンス」は、新しいデータが書き込まれるか、又はプログラムされる都度、再初期化（例えば、消去）される記憶媒体を指す。本明細書で使用される場合、「非対称」は、異なるタイプのストレージ動作に異なる待ち時間及び／又は実行時間を有する記憶媒体を指す。例えば、非対称固体状態不揮発性ストレージリソース１４０への読み出し動作は、書き込み／プログラム動作よりもはるかに高速であり得、書き込み／プログラム動作は消去動作よりもはるかに高速であり得る。固体状態不揮発性ストレージリソース１４０は、グループ（例えば、消去ブロック）として消去可能なストレージ分割に分割して、特に、これらの非対称属性を説明し得る。したがって、単一のデータセグメントを「原位置」で変更するには、消去ブロック全体を消去し、元の変更なしのデータ（もしあれば）と共に、消去ブロックに変更後データを再書き込みする必要があり得る。これは非効率的な「書き込み増幅」を生じさせ、過度の摩耗を生じさせるおそれがある。上述したようにデータを原位置外に書き込むことにより、ストレージモジュール１３０は陳腐化データの消去を延期することができる（例えば、陳腐化データを含む物理ストレージロケーションは、バックグラウンドグルーミング動作で回収し得る）。
【００４９】
論理識別子とストレージリソース及び／又はログストレージとの間のマッピング及び／又は関連付けを含むＩ／Ｏメタデータ１３８を管理するシステム、方法、及びインタフェースの更なる実施形態は、「Ａｐｐａｒａｔｕｓ，Ｓｙｓｔｅｍ，ａｎｄ  Ｍｅｔｈｏｄ  ｆｏｒ  ａ  Ｖｉｒｔｕａｌ  Ｓｔｏｒａｇｅ  Ｌａｙｅｒ」という名称の、２０１２年１月１２日に米国特許出願公開第２０１２００１１３４０号明細書として公開された２０１１年１月６日に出願された米国特許出願第１２／９８６，１１７号明細書及び「Ｌｏｇｉｃａｌ  Ｉｎｔｅｒｆａｃｅ  ｆｏｒ  Ｃｏｎｔｅｘｔｕａｌ  Ｓｔｏｒａｇｅ」という名称の２０１２年３月１９日に出願された米国特許出願第１３／４２４，３３３号明細書に開示されており、これらのそれぞれを参照により本明細書に援用する。
【００５０】
図１Ｃは、異なる持続性レベルに従ってＩ／Ｏ要求に応える方法１０１の一実施形態の流れ図である。本明細書に開示される方法１０１及び他の方法及び／又はプロセスは、少なくとも部分的に、永続的ストレージリソース１１４等の非一時的な記憶装置に記憶される１つ又は複数のマシン可読命令として実施し得る。命令は、計算環境１１０内の１つ又は複数のモジュールに方法及び／又はプロセスの１つ又は複数のステップを実行させるように構成し得る。命令のうちの１つ又は複数は、１つ又は複数の処理リソース１１２によって実行されるように構成し得る。さらに、本明細書に開示される方法及び／又はプロセスの特定のステップは、通信インタフェース１１５、ストレージリソース１４０Ａ〜Ｎ、処理リソース１１２等の特定のマシン構成要素に結びつけ得る。
【００５１】
ステップ１０２は、Ｉ／Ｏ要求１１６を識別し、且つ／又はアクセスすることを含み得る。ステップ１０２は、Ｉ／Ｏ要求１１６をストレージクライアント１０６Ａ〜Ｎから受信する（例えば、インタフェース１３１Ａを介して）こと、Ｉ／Ｏ要求１１６（例えば、Ｉ／Ｏスタック１１７内の）を監視し、且つ／又はインターセプトすること等を含み得る。
【００５２】
ステップ１０３は、Ｉ／Ｏ要求１１６の持続性レベルを決定することを含み得る。ステップ１０３は、持続性レベルモジュール１３４が、持続性レベルポリシー１３５に基づいてＩ／Ｏ要求１１６の持続性レベルを決定することを含み得、持続性レベルポリシー１３５は、持続性レベル基準、Ｉ／Ｏ要求１１６の属性、Ｉ／Ｏ要求１１６から引き出される推測、プロファイリングメタデータ等を含み得るが、これらに限定されない。
【００５３】
ステップ１０４は、ステップ１０３においてＩ／Ｏ要求１１６に選択され、且つ／又は割り当てられた持続性レベルに従ってＩ／Ｏ要求１１６に応えることを含み得る。Ｉ／Ｏ要求１１６に応えることは、Ｉ／Ｏ要求実行モジュール１３６が１つ又は複数の記憶動作をストレージリソース１４０Ａ〜Ｎに対して実行する（Ｉ／Ｏインタフェース１１８Ａ〜Ｎの使用により）ことを含み得る。Ｉ／Ｏ要求１１６の持続性レベルは、Ｉ／Ｏ要求１１６に応えるために使用すべきストレージリソース１４０Ａ〜Ｎ、１つ又は複数のストレージリソース１４０Ａ〜Ｎの構成（例えば、ＲＡＩＤレベル、ミラーリング等）、及び／又は記憶動作のモード（例えば、ライトスルーキャッシュ、エフェメラルキャッシュ、ＥＣＣ符号化等）を決定し得る。
【００５４】
本明細書に開示されるストレージモジュール１３０は、キャッシングサービスを提供するのに利用され、且つ／又はキャッシングサービスを提供するように構成し得る。したがって、幾つかの実施形態では、ストレージモジュール１３０はキャッシュ管理システム（ＣＭＳ）を備え得る。ＣＭＳは、本明細書に開示されるストレージモジュール１３０のうちの１つ又は複数のモジュールを含み得る。しかし、明確にするために、これらのモジュールは、ＣＭＳと併せて説明される場合、キャッシュ固有の用語を使用して参照されることがある。
【００５５】
図２Ａは、仮想計算環境でのＣＭＳ２２０の一実施形態のブロック図である。ＣＭＳ２２０は、仮想化カーネル２１０内で、且つ／又は仮想化カーネル２１０と併せて動作し得る仮想マシン２０８Ａ〜Ｎ内で動作するように構成し得る。仮想化カーネル２１０は、ホスト２０２で動作する仮想マシン２０８Ａ〜Ｎ並びにホスト２０２によって提供される他の構成要素及びサービスの動作を管理するように構成し得る。例えば、仮想化カーネル２１０は、プライマリストレージリソース２４０Ｂ及び／又は他のストレージリソース２４０Ｃ〜Ｎに関連付けられた様々なＩ／Ｏ動作を処理するように構成し得る。プライマリストレージリソース２４０Ｂは、複数のホストにわたる複数の仮想マシン２０８Ａ〜Ｎの中で共有し得る。プライマリストレージリソース２４０Ｂは、複数のディスクドライブ又は１つ又は複数のストレージアレイ（例えば、ＲＡＩＤ、ＪＢＯＤ等）等の他のストレージ装置を含み得る。
【００５６】
ＣＭＳ２２０は、１つ又は複数のストレージクライアント１０６のＩ／Ｏ要求１１６に応え得る。ストレージクライアント１０６は、仮想マシン２０８Ａにローカルであってもよく、ホスト２０２に配置される他の仮想マシン２０８Ｂ〜Ｎ内でホストされてもよく、且つ／又は他の計算装置（例えば、他のホスト及び／又は図１Ｂのリモートストレージクライアント１０６Ｅ等の他のリモート計算環境上）で動作してもよい。ＣＭＳ２２０は、Ｉ／Ｏ要求１１６を受信し、監視し、且つ／又はインターセプトするように構成されたＩ／Ｏ要求受信器モジュール１３２を備え得る。ＣＭＳ２２０は、特定の持続性レベルに従ってＩ／Ｏ要求１１６に応えるように構成し得る。したがって、ＣＭＳ２２０は、本明細書に記載のように、Ｉ／Ｏ要求１１６の持続性レベルを決定するように構成された持続性レベルモジュール１３４を備え得、これは、Ｉ／Ｏ要求１１６のキャッシングモード（例えば、ライトスルー、エフェメラル、又は他のキャッシング構成又はモード）を選択することを含み得る。
【００５７】
Ｉ／Ｏインタフェース２１８は、ホスト２０２上の他の仮想マシン２０８Ａ〜Ｎ間で共有されてもよく、又は共有されなくてもよい１つ又は複数の仮想化ストレージリソースにアクセスするように構成し得る。本明細書で使用される場合、「仮想化ストレージリソース」は、ハイパーバイザ、ストレージレイヤ、仮想化レイヤ等の仮想化カーネル２１０を通してアクセス可能なストレージリソースを指す。仮想化ストレージリソースは、ＶＬＵＮストレージリソース、仮想ディスク（例えば、仮想マシンディスクフォーマット（ＶＭＤＫ）ディスク）、ストレージモジュール１３０、仮想化キャッシュリソース等を含み得るが、これらに限定されない。
【００５８】
ＣＭＳ２２０は、仮想マシンキャッシュ２１３を含め、１つ又は複数の仮想化ストレージリソース２４０Ａ〜Ｎの使用によってＩ／Ｏ要求１１６に応えるように構成し得る。仮想マシンキャッシュ２１３は、キャッシュプロビジョナモジュール２１４及びキャッシュストレージ（キャッシュ２１６）を備え得る。キャッシュ２１６は、不揮発性記憶装置及び／又は媒体、固体状態記憶装置、ランダムアクセスメモリ（ＲＡＭ）等の１つ又は複数のメモリ装置を含み得るが、これらに限定されない。本明細書で使用される場合、「固体状態メモリ装置」は、繰り返しの消去及び再プログラムが可能な不揮発性持続性メモリを指す。したがって、固体状態メモリ装置は、固体状態記憶装置及び／又は固体状態ストレージドライブ（ＳＳＤ）（例えば、フラッシュ記憶装置）を含み得る。キャッシュプロビジョナモジュール２１４は、仮想マシン２０８Ａ〜ＮのＣＭＳ２２０へのキャッシュ２１６のリソースをプロビジョニングするように構成し得、プロビジョニングは、キャッシュストレージ及び／又はＩ／Ｏ動作（ＩＯＰＳ）を動的にプロビジョニングし、且つ／又は共有することを含み得る。キャッシュプロビジョナモジュール２１４は、キャッシュ２１６内に記憶されたデータを保護し、且つ／又はセキュア化し、２つ以上の仮想マシン２０８Ａ〜Ｎが同じキャッシュデータにアクセスしないようにする（例えば、書き込み前の読み出しハザードを回避する）ように更に構成し得る。例えば、幾つかの実施形態では、キャッシュプロビジョナモジュール２１４は、キャッシュ内のデータへのアクセスを制御するのに使用し得る仮想マシン識別子を、キャッシュされたデータに関連付けるように構成される。
【００５９】
図３は、仮想マシンキャッシュ２１３のキャッシュストレージ２１６の一実施形態を示す。キャッシュストレージ２１６は、仮想マシンキャッシュ２１３のキャッシュストレージリソース２１６を表し得る。キャッシュストレージ２１６は、複数のキャッシュページ３０４を含む固体状態記憶媒体を含み得る。キャッシュ２１６は複数のチャンク３０２に分割し得る。本明細書で使用される場合、「チャンク」は、キャッシュストレージ容量の任意のサイズの部分を指す。キャッシュ２１６は、任意のサイズを有する任意の数のチャンク３０２に分割し得る。特定の実施形態では、各チャンク３０２は、２５６ＭＢ（メガバイト）の記憶容量を含み得る。この実施形態では、チャンク３０２の数は、キャッシュ２１６の空き記憶容量によって決定し得る。例えば、２５６ＭＢのチャンク３０２に分割された１ＴＢ（テラバイト）キャッシュ２１６は、４，１９２のチャンクを含む。図３に示されるように、各チャンク３０２は、複数のキャッシュページ３０４に分割される。
【００６０】
キャッシュ２１６は、ホスト上の複数の仮想マシン間で共有し得る。キャッシュチャンク３０２は、特に、仮想マシンのキャッシュニーズ及び／又は他の仮想マシンのキャッシュニーズに基づいて、仮想マシンのうちの特定の１つに割り当てるか、又は割り振り得る。特定の仮想マシンに割り当てられるチャンク３０２の数は、仮想マシンのキャッシュニーズが変化するにつれて、時間の経過に伴って変更することができる。特定の仮想マシンに割り当てられるチャンク３０２の数によって、その仮想マシンのキャッシュ容量が決まり得る。例えば、２つの２５６ＭＢチャンクが特定の仮想マシンに割り当てられる場合、その仮想マシンのキャッシュ容量は５１２ＭＢである。特定の仮想マシンへのチャンク３０２の割り当ては、上述したキャッシュプロビジョナモジュール２１４等のキャッシュプロビジョナによって処理される。
【００６１】
ＣＭＳ２２０は、仮想マシン２０８Ａ〜Ｎの識別子（Ｉ／Ｏアドレス）をキャッシュ２１６内のリソース（例えば、特定のキャッシュページ３０４）にマッピングし、且つ／又は関連付ける１つ又は複数のキャッシュタグ２２１を備え得る。したがって、キャッシュタグ２２１は、キャッシュタグ２２１内の識別子（例えば、プライマリストレージリソース２４０Ｂ上のブロックのアドレス）と、キャッシュアドレスとの間の変換を実行するのに使用し得る。幾つかの実施形態では、キャッシュタグ２２１は、ＲＡＭ又は他のメモリ内で線形に編成し得る。これにより、各キャッシュタグ２２１が物理キャッシュページ３０４と線形１：１対応性を有するとのアルゴリズム的仮定により、キャッシュタグ２２１のアドレスを使用して、物理キャッシュページ３０４を見つることができる。代替的又は追加として、キャッシュタグ２２１は、ハッシュテーブル、ツリー等の別のデータ構造に編成し得る。
【００６２】
図２Ａを再び参照すると、特定の仮想マシン２０８Ａ〜Ｎに関連付けられたキャッシュタグ２２１は、その仮想マシン２０８Ａ〜Ｎ内に記憶し得る。キャッシュタグ２２１は、ストレージＩ／Ｏアドレスをキャッシュ内の特定のキャッシュページ３０４に関連付けるメタデータを含む。特定の実施形態では、各キャッシュタグ２２１は、キャッシュ内の特定のページ３０４に関連付けられる。仮想マシンキャッシュ２１３は、プライマリストレージリソース２４０Ｂ（及び／又は他のストレージリソース２４０Ｃ〜Ｎ）等の１つ又は複数のストレージリソース２４０Ｂ〜Ｎのデータをキャッシュし得る。したがって、ストレージリソース２４０Ｂ〜Ｎのうちの１つ又は複数は、仮想マシンキャッシュ２１３にキャッシュされたデータのプライマリストレージ及び／又はバッキングストアであり得る。幾つかの実施形態では、キャッシュタグ２２１のアドレスは、ストレージリソース２４０Ｂ〜Ｎのうちの１つ又は複数のアドレス及び／又は参照を記憶し得る。
【００６３】
図４は、キャッシュタグ２２１のデータ構造４２１の一実施形態を示す。キャッシュタグ２２１内の幾つかのフィールドのサイズは動的であり得、したがって、キャッシュタグデータ構造４２１のサイズも動的であり得る。各キャッシュタグ２２１は、識別子（例えば、ストレージＩ／Ｏアドレス）とキャッシュリソース（例えば、キャッシュページ３０４）との間での変換を提供する。キャッシュタグデータ構造４２１は、サイズが固定され、ハッシュテーブルデータ構造内のキャッシュタグ２２１をリンクするのに使用される次キャッシュタグインデックスを含む。動作に当たり、次キャッシュタグインデックスは、現在のキャッシュタグにリンクされた次キャッシュタグを見つけるためのメモリアドレスに変換される。静的フィールドはサイズが固定され、キャッシュタグ２２１の現在の状態を識別する。アクセスメタデータフィールドは、キャッシュタグ２２１のアクセス及び／又は使用特徴を示す動的フィールドを含み得る。アクセスメタデータフィールドは、キャッシュタグ２２１に関連付けられたクロックハンドの数（例えば、時間間隔の数）を示すクロックハンドメタデータを含み得る。チェックサムフィールドは、キャッシュページ３０４のサイズと、ユーザが望む保全性レベルとに基づいてサイズが変更される動的フィールドを含み得る。例えば、ユーザは、メモリのより多くのビットをチェックサムに割り振ることにより、保全性レベルがより高いチェックサムを得ることができる。
【００６４】
キャッシュタグデータ構造４２１は、ページ内のどのユニットがキャッシュされるかを識別する動的フィールドである有効ユニットマップフィールドを更に含み得る。キャッシュページ３０４内のユニットの一例はセクタである。例えば、特定のキャッシュページ３０４は、欠落しているか、又はもはや有効ではない１つ又は複数のセクタを有し得る。有効ユニットマップは、特定のキャッシュページ３０４に関連付けられた全てのユニットのステータスを識別して、有効ではないユニット内のデータへのアクセスを回避する。
【００６５】
キャッシュタグデータ構造４２１は、持続性メタデータフィールドを更に含み得る。持続性メタデータフィールドは、キャッシュタグ２２１の持続性レベルに関連するメタデータを含み得、このメタデータは、キャッシュタグ２２１のキャッシュモード（例えば、ライトスルー、ライトバック、エフェメラル、又は他のキャッシュ構成若しくはモード）、キャッシュタグ２２１に関連付けられたプライマリストレージリソース２４０Ｂ〜Ｎ等を含み得るが、これらに限定されない。持続性メタデータは、キャッシュタグ２２１がキャッシュに許容されたときに、持続性レベルモジュール１３４によって（持続性レベルポリシー１３５の使用により）決定し得る。ＣＭＳ２２０（及び／又は持続性レベルモジュール１３４）は、キャッシュタグ２２１の持続性レベルへの変更に応答して、持続性メタデータを変更し得る。例えば、幾つかの実施形態では、エフェメラルキャッシュデータに関連付けられたキャッシュタグをプライマリストレージリソース２４０Ｂ〜Ｎにフラッシュし得、フラッシュは、キャッシュタグ２２１のキャッシュモードをエフェメラルから別のキャッシュモードに変更することを含み得る。キャッシュタグ２２１は、エフェメラルキャッシュモードに戻り得る（持続性メタデータへの対応する更新を行って）。キャッシュタグデータ構造、クロックハンドメタデータ、及び／又はキャッシュタグ状態遷移の更なる実施形態は、「Ｓｙｓｔｅｍｓ  ａｎｄ  Ｍｅｔｈｏｄｓ  ｆｏｒ  Ｍａｎａｇｉｎｇ  Ｉ／Ｏ  Ｏｐｅｒａｔｉｏｎｓ」という名称の、２０１２年８月１６日に米国特許出願公開第２０１２／０２１００４３号明細書として公開された、２０１１年２月１５日に出願された米国特許出願第１３／０２８，１４９号明細書に開示されており、これを参照により本明細書に援用する。
【００６６】
上述したように、ＣＭＳ２２０は、１つ又は複数のストレージクライアント１０６からＩ／Ｏ要求１１６を受信するように構成し得、これは、ストレージスタック１１７内のＩ／Ｏ要求１１６を監視し、且つ／又はインターセプトする１つ又は複数のインタフェース１３１Ａを介してＩ／Ｏ要求１１６を受信することを含み得る（例えば、Ｉ／Ｏフィルタ、ドライバ等のエージェント１３３の使用により）。Ｉ／Ｏ要求１１６はＣＭＳ２２０にルーティングし得、ＣＭＳ２２０は、仮想マシンキャッシュ２１３を使用してＩ／Ｏ要求に応え得る。
【００６７】
データ読み出し要求（例えば、読み出しＩ／Ｏ要求１１６）に応答して、ＣＭＳ２２０は、Ｉ／Ｏ要求１１６に関連するデータが仮想マシンキャッシュ２１３内で利用可能か否かを判断し得、これは、ＣＭＳ２２０がＩ／Ｏ要求１１６に対応するキャッシュタグ２２１を含むか否か（例えば、ＣＭＳ２２０が、読み出し要求の識別子に対応する識別子を有するキャッシュタグ２２１を含むか否か）を判断することを含み得る。Ｉ／Ｏ要求１１６のキャッシュタグ２２１が見つかる場合、ＣＭＳ２２０は、キャッシュタグ２２１に関連付けられたキャッシュアドレスを使用して、仮想マシンキャッシュ２１３からデータを要求し得る。キャッシュタグ２２１が見つからない場合、ＣＭＳ２２０は、データを仮想マシンキャッシュ２１３に許容すべきか否かを判断し得る（様々なキャッシュ許容ポリシー及び／又はキャッシュタグ２２１の利用可能性等の他の要因に基づいて）。ＣＭＳ２２０は、要求に対応するキャッシュタグ２２１を割り振り、プライマリストレージリソース２４０Ｂ内のデータにアクセスし、データをキャッシュ２１６に記憶するように仮想マシンキャッシュ２１３に命令することにより、仮想マシンキャッシュ２１３内にデータを許容し得る。データを許容することは、持続性レベルモジュール１３４及び／又は持続性レベルポリシー１３５を使用して、Ｉ／Ｏ要求１１６の持続性レベルを決定することを更に含み得る。持続性レベルは、Ｉ／Ｏ要求１１６のキャッシュモードを指定し得る。例えば、Ｉ／Ｏ要求１１６の持続性レベルは、エフェメラルキャッシュモードでデータを記憶すべきであることを指定し得、それにより、データは仮想マシンキャッシュ２１３に書き込まれ、プライマリストレージリソース２４０Ｂにライトスルーされない。
【００６８】
データ書き込み要求（例えば、書き込みＩ／Ｏ要求１１６）に応答して、ＣＭＳ２２０は、上述したように（例えば、Ｉ／Ｏ要求１１６に対応するキャッシュタグ２２１があるか否かを判断することにより）、要求に関連するデータが仮想マシンキャッシュ２１３に許容されているか否かを判断し得る。Ｉ／Ｏ要求１１６のキャッシュタグ２２１が存在しない場合、ＣＭＳ２２０は、上述したように、仮想マシンキャッシュ２１３にデータを許容するか否かを判断し、Ｉ／Ｏ要求１１６の持続性レベル等を決定し得る。キャッシュタグ２２１が存在する場合、ＣＭＳ２２０は、特に、データのキャッシュモード（例えば、ライトスルーキャッシュ、エフェメラルキャッシュ等）であり得る、持続性レベルモジュール１３４によって示される特定の持続性レベルに従って、Ｉ／Ｏ要求１１６に応えるように構成し得る。エフェメラル持続性レベルに従って書き込みＩ／Ｏ要求１１６に応えることは、データをプライマリストレージリソース２４０Ｂに記憶せずに、Ｉ／Ｏ要求１１６のデータを仮想マシンキャッシュ２１３に記憶することを含み得る。ライトスルー持続性レベルに従って書き込みＩ／Ｏ要求に応えることは、仮想マシンキャッシュ２１３及び１つ又は複数のプライマリストレージリソース２４０Ｂの両方にＩ／Ｏ要求のデータを記憶することを含み得る。Ｉ／Ｏ要求１１６は、要求のデータが１つ又は複数のプライマリストレージリソース２４０Ｂに記憶されるまで完了しないことがある。
【００６９】
幾つかの実施形態では、仮想マシン２０８Ａ〜Ｎは、ホスト２０２から他のホスト計算装置に転送し、且つ／又は配置換えされるように構成し得る。仮想化カーネル２１０（又は他の仮想化レイヤ）は、ローカルディスクストレージ等のホスト２０２のローカルリソースを参照する仮想マシンが転送されないように構成し得る。したがって、仮想マシン２０８Ａ〜Ｎは、仮想マシンの移行を妨げないアクセスメカニズムを使用して仮想マシンキャッシュ２１３にアクセスするように構成し得る。幾つかの実施形態では、ＣＭＳ２２０は、仮想化カーネル２１０が共有装置（及び／又は仮想マシン移行を妨げない装置）として扱うエミュレートされた共有ストレージ及び／又は「仮想ディスク」又はＶＬＵＮを通して仮想マシンキャッシュ２１３にアクセスするように構成し得る。仮想ディスクは、ホスト２０２及び／又は仮想化カーネル２１０によってサポートされるＶＭＤＫとして提供し得る。幾つかの実施形態では、Ｉ／Ｏインタフェース２１８は、仮想マシン２０８Ａ〜ＮのＩ／Ｏ動作を監視し、仮想ディスクに向けられたＩ／Ｏ要求１１６及び／又は動作をインターセプトし、インタフェース２４１を介してＩ／Ｏ要求１１６（及び他の関連データ）を仮想マシンキャッシュ２１３に転送するように構成されるＩ／Ｏフィルタ２１９を備え得る。Ｉ／Ｏフィルタ２１９は、仮想マシン２０８Ａ〜Ｎのスタック１１７のＳＣＳＩ及び／又はｖＳＣＳＩの「上」で動作し得る。Ｉ／Ｏフィルタ２１９は、仮想マシン２０８Ａ〜ＮのＣＭＳ２２０と仮想マシンキャッシュ２１３との間でＩ／Ｏ要求１１６（及び応答）を渡すことを提供し得る。Ｉ／Ｏフィルタ２１９は、構成、コマンド、及び／又は制御データ等の他のデータの通信を更に提供し得る。仮想ディスクは実際の記憶に使用されず、ＣＭＳ２２０と仮想マシンキャッシュ２１３との間の通信インタフェースとして使用されるため、ＣＭＳ２２０と仮想マシンキャッシュ２１３との間での通信に使用される仮想ディスクは非常に小さくてよい（例えば、数メガバイト）。
【００７０】
仮想マシン２０８Ａ〜Ｎは、共有ストレージを他の方法でエミュレートするように構成し得る。例えば、幾つかの実施形態では、仮想マシン２０８Ａ〜Ｎは、１つ又は複数の「共有」ＶＬＵＮディスクを複数のホスト２０２にわたって複製するように構成し得、それにより、ホストにとって、ＶＬＵＮディスクは共有装置であるように見える。例えば、ＶＬＵＮディスクは、同じシリアルナンバー又は他の識別子を共有し得る。ホスト２０２及び／又は仮想化カーネル２１０は、例えば、ＶＬＵＮディスクを共有装置として扱うことができ、仮想マシン２０８Ａ〜Ｎをホスト２０２に転送し、ホスト２０２から転送できるようにする。しかし、上述したＶＤＭＫ手法はこの手法よりも優れた利点を提供し得、その理由は、作成する必要がある「共有」ディスク数がより少なく、それにより、限られたストレージ参照（例えば、仮想マシンは２５６の記憶装置の参照に制限され得る）の枯渇を回避し得るためである。
【００７１】
キャッシュプロビジョナモジュール２１４は、仮想マシン２０８Ａ〜Ｎ間でキャッシュリソースをプロビジョニングするように構成し得る。特定の仮想マシン（例えば、仮想マシン２０８Ａ）に関連付けられた割り振り情報は対応するＣＭＳ２２０に通信し得、ＣＭＳ２２０は、ＣＭＳ２２０に割り振られたキャッシュリソースに従ってキャッシュタグ２２１メタデータを保持し得る。ＣＭＳ２２０は、キャッシュプロビジョナモジュール２１４からのキャッシュリソースを要求するように構成し得る。要求は、ＣＭＳ２２０の初期化動作（例えば、キャッシュ「ウォームアップ」）に応答して送信し得る。本明細書で使用される場合、キャッシュ初期化は、動作に向けてＣＭＳ２２０を準備する１つ又は複数の動作を指す。ＣＭＳ２２０は、仮想マシン２０８Ａ〜Ｎの電源投入、再開、新しいホストへの転送（例えば、ＶＭｏｔｉｏｎ（商標）動作）等に応答して、１つ又は複数の初期化動作を実行するように構成し得る。
【００７２】
ＣＭＳ２２０は、キャッシュプロビジョナモジュール２１４により仮想マシン２０８Ａ〜Ｎに割り振られているキャッシュストレージに従って、キャッシュタグ２２１を含むキャッシュメタデータを保持するように構成し得る。本明細書で使用される場合、「キャッシュタグ」は、識別子とキャッシュリソース（例えば、キャッシュ２１６内のページ又は他のキャッシュストレージロケーション）との間の関連付けを指す。したがって、キャッシュタグ２２１は、キャッシュプロビジョナモジュール２１４によって特定の仮想マシン２０８Ａ〜Ｎに割り振られているキャッシュリソースを表し得る。本明細書で使用される場合、キャッシュタグ２２１の「識別子」は、キャッシュ２１６に記憶された（又は記憶される）データを参照するために、仮想マシン２０８Ａ〜Ｎによって使用される識別子を指す。キャッシュタグ識別子は、論理識別子、アドレス（例えば、プライマリストレージシステム２１２でのアドレス等のメモリアドレス、物理ストレージアドレス、又は論理ブロックアドレス）、名前（例えば、ファイル名、ディレクトリ名、ボリューム名等）、参照等を含み得るが、これらに限定されない。
【００７３】
キャッシュタグ２２１は、各仮想マシン２０８Ａ〜Ｎ内（例えば、ホスト２０２によって仮想マシン２０８Ａ〜Ｎに割り振られた揮発性メモリ）に記憶し得る。幾つかの実施形態では、キャッシュタグ２２１は、仮想マシン２０８Ａ〜Ｎのキャッシュデータの「作業セット」を表し得る。本明細書で使用される場合、キャッシュタグ２２１の「作業セット」は、特に、キャッシュ許容ポリシー、キャッシュ保持及び／又は退去ポリシー（例えば、キャッシュ老化メタデータ、キャッシュスチールメタデータ、最長時間未使用（ＬＲＵ）、「ホット性」、及び／又は「コールド性」等）、キャッシュプロファイリング情報、ファイル及び／又はアプリケーションレベル知識等の１つ又は複数のキャッシュポリシーのアプリケーション等を通してＣＭＳ２２０により、キャッシュ２１６内に許容され、且つ／又は保持された１組のキャッシュタグを指す。したがって、キャッシュタグ２２１の作業セットは、特定の動作条件セット下での仮想マシン２０８Ａ〜Ｎの最適なＩ／Ｏ性能を提供するキャッシュデータセットを表し得る。
【００７４】
幾つかの実施形態では、ＣＭＳ２２０は、キャッシュタグ２２１を保存し、且つ／又は保持するように構成し得、これは、プライマリストレージシステム２１２、永続的キャッシュストレージ装置（例えば、キャッシュ２１６）等の不揮発性記憶媒体にキャッシュタグ２２１を存続させることを含み得る。本明細書で使用される場合、「スナップショット」は、特定の時間でのキャッシュの作業セットを指す。スナップショットは、キャッシュタグ２２１（及び／又は関連するキャッシュメタデータ）の全て又はサブセットを含み得る。幾つかの実施形態では、スナップショットは、キャッシュ装置２１６にデータを「ピン留め」することを更に含み得、それにより、１つ又は複数のキャッシュタグ２２１によって参照されたデータをキャッシュ２１６に保持させ得る。代替的には、スナップショットは、データ識別子のみを参照し得、土台となるデータキャッシュ２１６から除去（例えば、退去）することができ得る。ＣＭＳ２２０は、永続性ストレージからのスナップショットをロードし、スナップショットを使用してキャッシュタグ２２１に移入するように構成し得る。スナップショットは、初期化動作（例えば、キャッシュウォームアップ）の一環として、及び／又は構成及び／又はユーザ嗜好に応答してロードし得る。例えば、ＣＭＳ２２０は、特定のアプリケーション及び／又はサービスに最適化された異なるスナップショットをロードするように構成し得る。スナップショットをロードすることは、上述したように、キャッシュプロビジョナモジュール２１４からキャッシュストレージを要求することを更に含み得る。幾つかの実施形態では、仮想マシン２０８Ａ〜Ｎが完全なスナップショットに十分なキャッシュ空間を割り振ることができない場合、ＣＭＳ２２０は、スナップショットのサブセットをロードし得る。
【００７５】
幾つかの実施形態では、キャッシュプロビジョナモジュール２１４は、仮想マシン２０８Ａ〜Ｎと、仮想マシン２０８Ａ〜Ｎに割り振られた各キャッシュストレージロケーション（例えば、図５に示される）との間のマッピングを保持するように構成される。マッピングを使用して、仮想マシン２０８Ａ〜Ｎのキャッシュデータをセキュア化し（例えば、キャッシュデータにマッピングされる仮想マシン２０８Ａ〜Ｎへのアクセスを制限することにより）、且つ／又は本明細書に記載のように、ホスト２０２から他のリモートホストに転送された１つ又は複数の仮想マシン２０８Ａ〜Ｎのキャッシュデータの保持及び／又は転送を提供し得る。
【００７６】
幾つかの実施形態では、仮想マシンキャッシュ２１３は、キャッシュリソース割り振りに「シンプロビジョニング」手法を実施するように構成される。各仮想マシン２０８Ａ〜Ｎには、キャッシュ２１６の特定数のチャンク３０２を割り振り得る。しかし、キャッシュ２１６のキャッシュ容量全体は、各仮想マシン２０８Ａ〜Ｎに「パブリッシュ」し得る（ＶＬＵＮ等の仮想ディスクを通して）。例えば、合計キャッシュサイズは１ＴＢである場合、各仮想マシン２０８Ａ〜Ｎは、キャッシュ容量の１ＴＢ全体へのアクセスを有することを報告し得る。しかし、キャッシュチャンク３０２の実際の割り振りは、仮想マシン２０８Ａ〜Ｎの現在のニーズに基づいてかなり小さくし得る（例えば、２５６ＭＢ又は５１２ＭＢ）。割り振られたキャッシュチャンク３０２は、キャッシュ２１６内で利用可能なキャッシュアドレスの特定の範囲を表す。キャッシュプロビジョナモジュール２１４は、仮想マシン２０８Ａ〜Ｎの作業セット要件が変化する（且つ／又は仮想マシン２０８Ａ〜Ｎがホスト２０２に／から転送される）際、これらのキャッシュチャンク割り振りを動的に変更する。特定の仮想マシン２０８Ａ〜Ｎに実際に割り振られるキャッシュチャンク３０２の数に関係なく、その仮想マシン２０８Ａ〜Ｎは、１ＴＢキャッシュ全体へのアクセスを有することを報告する。したがって、仮想マシン２０８Ａ〜Ｎのゲストオペレーティングシステムは、サイズ１ＴＢの仮想ディスクと共に動作し得る。したがって、仮想マシン２０８Ａ〜Ｎに割り振られる実際の記憶空間は、ゲストオペレーティングシステムがエラー状況を示さずに動的に変更することができる。したがって、キャッシュタグ２２１によって参照されるキャッシュページ３０４は、キャッシュ２１６内の「間接的」アドレスに対応し得る。
【００７７】
図５は、仮想マシン２０８Ａ（ＶＭ−１）に露出される仮想キャッシュストレージリソースと、仮想マシン２０８Ａに実際に割り振られた土台をなす物理キャッシュアドレスとの間のマッピング５００の一実施形態を示す。仮想マシン２０８Ａに割り振られた仮想キャッシュストレージは、キャッシュチャンクＶＭ−１0、ＶＭ−１1、ＶＭ−１2、・・・、ＶＭ−１N（５２９）の連続範囲として示される。連続キャッシュチャンク５２９は、上述したように、固定サイズ仮想ディスク２２９を通して露出し得る。仮想マシン２０８Ａに実際に割り振られる物理キャッシュストレージは、キャッシュ２１６２１６の物理アドレス空間３０６内のチャンクＶＭ−１0、ＶＭ−１1、ＶＭ−１2、ＶＭ−１Nの不連続セットとして示される。図５に示されるように、キャッシュ２１６２１６の物理アドレス空間３０６内のチャンク３０２は、不連続であり、且つ／又は他の仮想マシン２０２Ｂ〜Ｎに割り振られたチャンク３０２でインターレースし得る。図５の図は物理順での異なるロケーションのうちの幾つかを示すが、仮想マシン２０８Ａに割り振られたキャッシュチャンク３０２は、物理キャッシュリソース（例えば、利用可能なチャンク３０２）の利用可能性に従ってランダム順に配置し得る。
【００７８】
マップモジュール５１４は、仮想キャッシュストレージ割り振り（例えば、仮想マシン２０８Ａ内のキャッシュタグ２２１の間接的キャッシュアドレス）を物理キャッシュリソース（例えば、キャッシュチャンク３０２及び／又はキャッシュページ３０４）にマッピングするように構成し得る。幾つかの実施形態では、マッピングは、仮想マシン２０８Ａ〜Ｎの間接的キャッシュアドレスと、キャッシュ２１６の物理アドレス空間３０６との間の関連付けの「任意対任意」インデックスを含み得る。
【００７９】
幾つかの実施形態では、仮想マシンキャッシュ２１３は、マップモジュール５１４を利用して、キャッシュ２１６内に記憶されたデータをセキュア化し得る。例えば、マップモジュール５１４のマッピングは、アクセス制御の一形態として使用し得、物理キャッシュチャンク３０２へのアクセスは、物理キャッシュチャンク３０２がマッピングされ、且つ／又は割り振られる仮想マシンに制限される。例えば、ＶＭ−１０と記されたキャッシュチャンクは、チャンク３０２がマッピングされる仮想マシン（例えば、仮想マシン２０８Ａ）のみにアクセス可能であり得る。さらに、マッピングレイヤの間接的アクセスにより、仮想マシン２０８Ａ〜Ｎは、他の仮想マシン２０８Ａ〜Ｎの物理キャッシュチャンク３０２を直接参照し、且つ／又はアドレス指定することが不可能であり得る。
【００８０】
マップモジュール５１４は、対応する仮想マシンのＶＭＩＤを使用して仮想キャッシュストレージをマッピングするように構成し得る。したがって、仮想マシンがホスト２０２間で転送され、且つ／又は移行する場合、ＶＭＩＤと仮想マシンのキャッシュデータとの間のマッピングは、有効なままであり得る（例えば、ＶＭＩＤを所与として、対応する仮想マシン２０８Ａ〜Ｎの保持キャッシュデータを識別し、アクセスし得る）。仮想化環境においてキャッシュストレージを動的に割り振るシステム及び方法のさらなる実施形態は、「Ｍａｎａｇｉｎｇ  Ｄａｔａ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｏｐｅｒａｔｉｏｎｓ」という名称の２０１１年７月２７日に出願された米国特許出願第１３／１９２，３６５号明細書に開示されており、これを参照により本明細書に援用する。
【００８１】
図２Ｂを参照すると、キャッシュプロビジョナモジュール２１４は、キャッシュリソースを仮想マシン２０８Ａ〜Ｎに動的に割り振るように構成し得る。プロビジョニングされると、各仮想マシン２０８Ａ〜Ｎは、キャッシュストレージリソースの所定の範囲及び／又は連続範囲（例えば、キャッシュチャンク３０２及び／又はキャッシュページ３０４）にアクセスを有し得る。キャッシュプロビジョナモジュール２１４は、各仮想マシン２０８Ａ〜Ｎに動的にプロビジョニングすることができるキャッシュチャンク３０２にキャッシュ２１６を分割するように構成し得る。
【００８２】
幾つかの実施形態では、仮想マシン２０８Ａ〜Ｎは、固定サイズを有するディスクと併用されるように構成し得、ディスク（例えば、仮想ディスク２２９）のサイズに急で不規則な変更がある場合には不適切に動作し得る。したがって、キャッシュプロビジョナモジュール２１４は、土台をなすキャッシュリソースの動的再割り振りを提供しながら、固定サイズを有するように見えるキャッシュストレージリソースを露出するように構成し得る。幾つかの実施形態によれば、図２Ｂに示されるように、キャッシュプロビジョナモジュール２１４は、仮想ディスクドライバ２１５を使用して固定サイズキャッシュリソースをエミュレートし得、仮想ディスクドライバ２１５は、仮想マシン２０８Ａ〜Ｎ内の各仮想ディスク（ＶＬＵＮディスク）２２９を露出するように構成し得る。したがって、キャッシュタグ２２１は、仮想ディスク２２９内のキャッシュリソースを参照し得、キャッシュ２１６内の物理キャッシュリソースを間接的に参照し得る（例えば、キャッシュタグ２２１は、本明細書に記載のように、マップモジュール５１４の仮想ディスクマッピングに従ったキャッシュリソースへの間接的な参照を含み得る）。仮想ディスク２２９は、キャッシュ２１６の全容量（例えば、２ＴＢ）を含む固定サイズを有するように見え得、一方、キャッシュ２１６の一部のみが、キャッシュプロビジョナモジュール２１４毎に仮想マシン２０８Ａ〜Ｎに実際に割り振られる（例えば、４ＧＢ）。したがって、キャッシュプロビジョナモジュール２１４は、仮想マシン２０８Ａ〜Ｎの動作に悪影響を及ぼさずに、キャッシュストレージを仮想マシン２０８Ａ〜Ｎに動的に割り振るように構成し得る。仮想ディスクドライバ２１５及び／又はマップモジュール５１４は、仮想マシン２０８Ａ〜Ｎの間接的参照と物理キャッシュリソースとの間のマッピングを管理し得る。
【００８３】
キャッシュプロビジョナモジュール２１４は、仮想マシン２０８Ａ〜Ｎの異なるキャッシュ要件に従って仮想マシン２０８Ａ〜Ｎに異なる量のキャッシュストレージを動的に割り振るように構成し得る。キャッシュプロビジョナモジュール２１４はマップモジュール５１４を備え得、マップモジュールは、仮想マシン２０８Ａ〜Ｎに露出される（仮想ディスク２２９を介して）仮想ストレージリソースをキャッシュ２１６内の物理アドレスにマッピングするように構成される。
【００８４】
上述したように、仮想ディスクドライバ２１５は、固定サイズの連続キャッシュストレージ割り振りを仮想マシン２０８Ａ〜Ｎに提示する（各仮想ディスク２２９を通して）ように構成し得る。マップモジュール５１４は、仮想ディスク２２９への参照を物理キャッシュアドレス（例えば、キャッシュチャンク３０２及び／又はキャッシュページ３０４）にマッピングするように構成し得る。例えば、仮想マシン２０８Ａにプロビジョニングされるキャッシュストレージは、キャッシュ２１６内の空間５２４として図で示される。キャッシュ空間５２４は４ＧＢを含み得る。しかし、仮想ディスクドライバ２１５は、この限られたキャッシュ容量を固定２ＴＢ仮想ディスク２２９として提示し得る。さらに、仮想マシン２０８Ａ〜Ｎに割り振られたキャッシュ容量（キャッシュチャンク３０２）は、任意のようにキャッシュ２１６の物理アドレス空間内で分散し得（チャンク３０２は不連続であり得る）、一方、仮想ディスク２２９を通して表されるキャッシュ容量は連続し得る。キャッシュプロビジョナモジュール２１４は、キャッシュ要件の変化に応答して、且つ／又は仮想マシン２０８Ａ〜Ｎがホスト２０２に移るか、又はホスト２０２から移る場合、仮想マシン２０８Ａ〜Ｎ間のキャッシュストレージ割り振りを動的にシフトするように構成し得る。
【００８５】
ＣＭＳ２２０は、１つ又は複数のＩ／Ｏインタフェース２１８を通して仮想マシンキャッシュ２１３とインタフェースするように構成し得る。ＣＭＳ２２０は、Ｉ／Ｏインタフェース２１８のＳＣＳＩフィルタ３１９を備え得、このフィルタは、仮想マシン２０８Ａ（及び内部で動作するＣＭＳ２２０）と仮想マシンキャッシュ２１３との間でデータ及び／又は制御情報を通信するように構成し得る（仮想ディスク２２９を介して）。幾つかの実施形態では、ＳＣＳＩフィルタ３１９は、仮想マシン２０８ＡのＩ／Ｏスタック（又は他のＩ／Ｏインフラ及び／又はメッセージングシステム）に組み込み得る。ＳＣＳＩフィルタ３１９は、仮想ディスク２２９を識別し、仮想ディスク２２９内の割り振り変化（例えば、キャッシュプロビジョナモジュール２１４による動的割り振り）に応答することなどを行うように構成し得る。上述したように、仮想ディスク２２９は、仮想マシン２０８Ａに割り振られた実際の物理キャッシュ容量よりも大きな固定記憶容量を報告するように構成し得、それにより、キャッシュプロビジョナモジュール２１４は、仮想マシン２０８Ａに悪影響を及ぼさずに、キャッシュストレージを動的にプロビジョニングすることができる。幾つかの実施形態では、ＳＣＳＩフィルタ３１９は、仮想ディスク２２９の実際の物理容量を管理するように構成し得、仮想マシンホスト２０２の他のアプリケーション及び／又はオペレーティングシステムから隠し得る。例えば、ＶＬＵＮディスク２２９は、読み出し専用記憶装置として提示し得、仮想マシン２０８Ａ及び／又はホスト２０２内の他のアプリケーションが仮想ディスク２２９にデータを書き込まないようにし得る。
【００８６】
キャッシュプロビジョナモジュール２１４は、ＳＣＳＩフィルタ３１９を含む通信リンク２４３により、仮想マシン２０８Ａに割り振られた実際の物理キャッシュストレージを報告し得る。通信リンク２４３は、仮想ディスクドライバ２１５とＳＣＳＩフィルタ３１９との間のＩ／Ｏトラフィックとは別個に動作し得る。したがって、非同期帯域外メッセージを仮想ディスクドライバ２１５とＳＣＳＩフィルタ３１９との間で送信し得る。ＳＣＳＩフィルタ３１９は、ＣＭＳ２２０に対して割り振り情報（及び他のコマンド及び／又は制御情報）を報告し得、ＣＭＳ２２０は割り振り情報を使用して、仮想マシン２０８Ａが利用可能なキャッシュタグ２２１の数を決定し得る。したがって、キャッシュは、仮想マシン２０８Ａ〜Ｎに関してシンプロビジョニングし得、キャッシュ割り振りは、仮想マシン２０８Ａ〜Ｎのキャッシュ要件に従って動的に変更し得る。
【００８７】
図６は、ＣＭＳ２２０の一実施形態を示すブロック図である。ＣＭＳ２２０は、キャッシュポリシーモジュール６０１、アドレス空間変換モジュール６０２、キャッシュタグマネージャ６０４、クロックスイープモジュール６０６、スチール候補モジュール６０８、キャッシュページ管理モジュール６１０、有効ユニットマップモジュール６１２、ページサイズ管理モジュール６１４、インタフェースモジュール６１６、キャッシュタグ保持モジュール６１８、及びキャッシュタグスナップショットモジュール６１９を含む１つ又は複数のモジュールを備え得る。
【００８８】
キャッシュポリシーモジュール６０１は、様々なキャッシュ許容基準及び／又はポリシーに基づいて、キャッシュに許容するデータを選択するように構成し得る。キャッシュポリシーモジュール６０１は、キャッシュに許容されたデータの持続性レベルを決定するように更に構成し得る。持続性レベルは、特に、ライトスルー、ライトバック、エフェメラル等のデータのキャッシングモード及び／又は構成を決定し得る。幾つかの実施形態では、キャッシュポリシーモジュール６０１は、持続性レベルをキャッシュデータに割り当てるために持続性レベルモジュール１３４及び持続性レベルポリシー１３５を含む。代替又は追加として、キャッシュに許容すべきデータの持続性レベルは、本明細書に記載のように、ストレージモジュール１３０等の別のエンティティ又はプロセスによって決定し得る。ＣＭＳ２２０はキャッシュ実行モジュール６３６を更に備え得、これは、選択された持続性レベルに従ってデータをキャッシュするように構成し得る。したがって、キャッシュ実行モジュール６３６は、１つ又は複数の異なるキャッシュモード及び／又は構成でデータをキャッシュするように構成し得る。例えば、キャッシュ実行モジュール６３６は、ライトスルーキャッシュモードでデータをキャッシュするように構成し得、これは、データを１つ又は複数のプライマリストレージリソース２４０Ｂ〜Ｎ及び仮想マシンキャッシュ２１３に書き込むことにより、書き込みＩ／Ｏ要求１１６に応えることを含み得る。ＣＭＳ２２０は、データが１つ又は複数のプライマリストレージリソース２４０Ｂ〜Ｎに書き込まれるまで、書き込みＩ／Ｏ要求１１６の完了を確認しない。キャッシュ実行モジュール６３６は、データをエフェメラルキャッシュモードでキャッシュするように構成し得、これは、データをプライマリストレージリソース２４０Ｂ〜Ｎ又は他のバッキングストアに記憶せずに、仮想マシンキャッシュ２１３にデータを書き込むことにより、書き込みＩ／Ｏ要求１１６に応えることを含み得る。したがって、ＣＭＳ２２０は、データが仮想マシンキャッシュ２１３に書き込まれることに応答して、エフェメラルキャッシュモードが割り当てられた書き込みＩ／Ｏ要求１１６の完了を確認し得る。
【００８９】
変換モジュール６０２は、キャッシュタグ２２１の論理識別子（例えば、プライマリストレージシステム内のアドレス）を仮想マシンキャッシュ２１３内のキャッシュストレージロケーション（例えば、キャッシュアドレス、キャッシュチャンク３０２、キャッシュページ３０４等）に相関付けるように構成し得る。上述したように、キャッシュタグ２２１は、仮想ディスク２２９内の「間接的」及び／又は「仮想」キャッシュストレージリソースに対応し得、キャッシュストレージリソースは、キャッシュプロビジョナモジュール２１４及び／又はマップモジュール５１４によって物理キャッシュストレージリソース（例えば、キャッシュチャンク３０２）にマッピングし得る。
【００９０】
キャッシュタグマネージャ６０４は、本明細書に記載のように、ＣＭＳ２２０に割り振られたキャッシュタグを管理するように構成し得、管理することは、仮想マシン識別子（例えば、論理識別子、アドレス、プライマリストレージアドレス）とキャッシュ２１６内のデータとの間の関連付けを保持することと、アクセス特徴、持続性レベル、キャッシュモード等のキャッシュメタデータを保持することとを含み得る。
【００９１】
クロックスイープモジュール６０６は、特に、１つ又は複数のクロックハンドスイープタイマを使用して、キャッシュ老化メタデータを決定し、且つ／又は保持するように構成し得る。スチール候補モジュール６０８は、特に、クロックスイープメタデータ又は他のキャッシュポリシーに基づいて、退去候補であるキャッシュデータ及び／又はキャッシュタグを識別するように構成し得る。幾つかの実施形態では、スチール候補モジュール６０８は、キャッシュタグ退去参照をキャッシュタグ２２１の持続性レベルメタデータに基づかせるように構成し得る。例えば、スチール候補モジュール６０８は、退去のためにエフェメラルキャッシュモードでキャッシュされるキャッシュタグ２２１を選択しなくてもよい。代替的には、スチール候補モジュール６０８はまず、退去前に、エフェメラルキャッシュタグ２２１をプライマリストレージリソース２４０Ｂ〜Ｎにフラッシュし得る。
【００９２】
キャッシュページ管理モジュール６１０は、キャッシュリソース（例えば、キャッシュページデータ）及び関連する動作を管理するように構成し得る。有効ユニットマップモジュール６１２は、仮想マシンキャッシュ２１３及び／又はプライマリストレージリソース２４０Ｂに記憶された有効データを識別するように構成し得る。ページサイズ管理モジュール６１４は、本明細書に記載のように、様々なページサイズ解析及び調整動作を実行して、キャッシュ性能を強化するように構成し得る。インタフェースモジュール６１６は、他の構成要素、装置、及び／又はシステムがＣＭＳ２２０と対話できるようにする１つ又は複数のインタフェースを提供するように構成し得る。
【００９３】
キャッシュタグ保持モジュール６１８は、ＣＭＳ２２０が異なるホストに転送されることに応答して、キャッシュタグ２２１を保持するように構成し得る。上述したように、キャッシュタグ２２１は、キャッシュの作業セットを表し得、作業セットは、１つ又は複数のキャッシュ許容及び／又は退去ポリシー（例えば、クロックスイープモジュール６０６及び／又はスチール候補モジュール６０８）の使用を通して、仮想マシン２０８（及び／又は仮想マシン２０８Ａ〜Ｎで実行中のアプリケーション）のＩ／Ｏ特徴に応答して作成し得る。キャッシュタグ保持モジュール６１８は、キャッシュタグが参照する基本キャッシュデータが新しいホストのキャッシュストレージ装置で利用可能ではないことにもかかわらず、仮想マシン２０８が新しいホスト２０２に転送された（例えば、特にＶＭｏｔｉｏｎ（商標）動作でホスト２０２Ａからホスト２０２Ｂに転送された）後、キャッシュタグ２２１を保持するように構成し得る。しかし、本明細書に記載の仮想マシンキャッシュ２１３は、新しいホストのキャッシュ２１６に移入するように構成し得、それにより、ＣＭＳ２２０は引き続き、キャッシュタグ２２１の作業セットを使用することができる。
【００９４】
上述したように、保持キャッシュタグ２２１のデータは、前のホスト（及び／又は前のプライマリストレージリソース２４０Ｂ〜Ｎ又は他のソース）から新しいホストに転送し得る。キャッシュデータは、デマンドページングモデルを介して転送し得、これは、様々な保持キャッシュタグ２２１のキャッシュデータが仮想マシン２０８によって要求される際、キャッシュに「オンデマンド」で移入することを含み得る。代替又は追加として、キャッシュデータは、「バルク転送」動作でプリフェッチし、且つ／又は転送し得、これは、キャッシュタグデータへの要求から独立してキャッシュデータを転送することを含み得る。幾つかの実施形態では、データは、キャッシュ転送ポリシーに基づいて選択的にプリフェッチし得、キャッシュ転送ポリシーは、少なくとも部分的に、クロックスイープモジュール６０６及び／又はスチール候補モジュール６０８のキャッシュ老化メタデータ並びに／或いは他のキャッシュポリシーメタデータ（例えば、ホット性、コールド性、最長時間未使用等）に基づき得る。
【００９５】
キャッシュタグスナップショットモジュール６１９は、キャッシュの作業セット（例えば、キャッシュタグ２２１）の１つ又は複数の「スナップショット」を保持するように構成し得る。上述したように、スナップショットは、特定の時間での１組のキャッシュタグ２２１を指す。スナップショットモジュール６１９は、上述したように、キャッシュタグ２２１のスナップショットを持続性記憶媒体に記憶し、且つ／又は記憶されたスナップショットをロードするように構成し得る。
【００９６】
上述したように、ＣＭＳ２２０は、１つ又は複数の異なる持続性レベルに従ってデータをキャッシュするように構成し得、これは、データを１つ又は複数の異なるキャッシュモード及び／又は１つ又は複数の異なるプライマリストレージ装置２４０Ｂにキャッシュすることに対応し得る。ＣＭＳ２２０は、適応持続性レベルを利用して、Ｉ／Ｏ性能を向上させ、且つ／又はホスト２０２の圧密比を増大させ得る。本明細書で使用される場合、ホスト２０２の「圧密比」は、ホスト２０２で動作することができる仮想マシン２０８Ａ〜Ｎの数を指す。ホスト２０２で動作することができる仮想マシン２０８Ａ〜Ｎの数は、ホスト２０２の計算リソース及び／又はホスト２０２のＩ／Ｏオーバーヘッドによって制限され得る。
【００９７】
高圧密ＶＤＩ環境では、仮想マシン２０８Ａ〜Ｎは共通Ｉ／Ｏ特徴を共有し得、これは、ホスト２０２のＩ／Ｏインフラに負担を掛け得る。仮想マシン２０８Ａ〜Ｎは、同様のデータセット（例えば、オペレーティングシステム、アプリケーション、ユーザプロファイル情報等）を共有し得、仮想マシン２０８Ａ〜Ｎは、同様の時間（例えば、ブートアップ中、電源投入時、ログイン時等）にこの共通のデータにアクセスするように構成し得る。その結果生じる「ブートストーム」は、プライマリストレージリソース２４０Ｂ〜Ｎ及び／又はホスト２０２のＩ／Ｏインフラには負担が大きすぎることがあり、全体システム性能を著しく低下させるおそれがある。同様のファイルアクセス「ストーム」が、仮想マシン２０８Ａ〜Ｎが特定のアプリケーションをロードし、共有データにアクセスし、ユーザプロファイル情報にアクセスし、ログインプロセスを実行すること等に応答して生じるおそれがある。さらに、各仮想マシン２０８Ａ〜Ｎは各ＣＭＳ２２０を備え得、各ＣＭＳ２２０は、共有仮想マシンキャッシュ２１３に同様のデータセットを許容し得、これにより、仮想マシンキャッシュ２１３に複製データを充填し得る。読み出し中心Ｉ／Ｏ動作の性能を向上させるシステム及び方法の実施形態が、「Ｓｙｓｔｅｍｓ  ａｎｄ  Ｍｅｔｈｏｄｓ  ｆｏｒ  ａ  Ｄｅ−Ｄｕｐｉｌｃａｔｉｏｎ  Ｃａｃｈｅ」という名称の２０１３年１月２５日に出願された米国特許出願第１３／７５０，９０４号明細書において開示される。
【００９８】
書き込み中心Ｉ／Ｏ動作の性能は、本明細書に開示される適応持続性レベルの使用によって向上させ得る。例えば、仮想マシン２０８Ａ〜Ｎは、長期間保存する必要がない（例えば、リブートサイクル間で保持する必要がない）データを書き込む多数のＩ／Ｏ要求１１６を発行し得る。そのようなデータはエフェメラル（例えば、「一時」、「使い捨て」、及び／又は「不必要」データ）と見なし得る。本明細書で使用される場合、「リブートサイクル」又は「再開動作」は、特に、電源の損失、ハードウェア故障、ソフトウェア故障、意図的なシャットダウン又は再開等によって生じ得る計算環境１１０及び／又はストレージモジュール１３０の意図的又は非意図的な再開及び／又はリブートを含む。したがって、再開動作は、システムリブート、リセット、若しくはシャットダウンイベント、電源故障、電力の損失、若しくは電力故障イベント、又は別の電力中断を含み得る。エフェメラルデータは、計算装置（例えば、仮想マシン２０８Ａ〜Ｎ）が動作中である間には極めて重要なものであり得るが、リブートサイクル及び／又は再開イベント後には必要ではないことがある。そのようなデータの例としては、仮想メモリファイル（例えば、ｐａｇｅｆｉｌｅ．ｓｙｓ等）等のスワップファイル、コンテンツ一時ディレクトリ（例えば、／ｔｍｐ等）等の一時ファイル、一時アプリケーションファイル（例えば、Ｍｉｃｒｏｓｏｆｔ  Ｗｏｒｄ（登録商標）等のローカルキャッシュ）等が挙げられるが、これらに限定されない。逆に、「永続」データは、ブートサイクル間及び／又は再開イベント間で保持すべきデータを指す。
【００９９】
幾つかの実施形態では、ＣＭＳ２２０は、不必要データに関連するＩ／Ｏ要求を識別するように構成され、Ｉ／Ｏ要求のデータをエフェメラルキャッシュ構成でキャッシュし得る。上述したように、エフェメラルキャッシュ構成は、データがキャッシュストレージに書き込まれる（及び／又は読み出される）が、プライマリストレージリソース２４０Ｂ〜Ｎにライトスルー、ライトバック、及び／又はコピーされないキャッシュモードを指す。したがって、エフェメラルキャッシュに記憶されたデータは、データがキャッシュから退去する場合及び／又はキャッシュがリブート、クラッシュ等で失われた場合、失われ得る。
【０１００】
データをエフェメラルキャッシュモード及び／又は構成で記憶することは、大きな性能利点を提供し得る：エフェメラルキャッシュデータに関連するＩ／Ｏ要求１１６は、プライマリストレージリソース２４０Ｂ〜Ｎへのアクセスを要求せず、プライマリストレージリソース２４０Ｂ〜Ｎに関連付けられる待ち時間は、Ｉ／Ｏ要求１１６に応えるために「クリティカルパス」から除去し得る。本明細書で使用される場合、「クリティカルパス」は、Ｉ／Ｏ動作のタイミング及び／又は待ち時間パスを指す。上述したように、ライトスルーキャッシュ構成では、書き込みＩ／Ｏ要求１１６は、データがプライマリストレージリソース２４０Ｂ〜Ｎにライトスルーされるまで完了しない（例えば、制御権をストレージクライアント１０６Ａ〜Ｎに戻さない）ことがある。したがって、Ｉ／Ｏ動作のクリティカルパスは、１つ又は複数の高待ち時間プライマリストレージアクセスを含む。逆に、エフェメラルデータに関連するキャッシュ動作は、プライマリストレージリソース２４０Ｂ〜Ｎにアクセスせずに、キャッシュ内で排他的に完了し得る。したがって、エフェメラルＩ／Ｏ動作のクリティカルパスは、プライマリストレージリソース２４０Ｂ〜Ｎへの高待ち時間アクセスを含まない。したがって、ストレージクライアント１０６Ａ〜Ｎの待ち時間を低減することに加えて、エフェメラルキャッシングは、Ｉ／Ｏ帯域幅及び／又はプライマリストレージリソース２４０Ｂ〜Ｎへの付加を低減する追加利点を提供し得る。
【０１０１】
幾つかの実施形態では、ＣＭＳ２２０は、キャッシュポリシーモジュール６０１及び／又は持続性レベルモジュール１３４によって決定されるＩ／Ｏ要求１１６の持続性レベルに基づいて、エフェメラルキャッシングのデータを識別し得、キャッシュポリシーモジュール６０１及び／又は持続性レベルモジュール１３４は、持続性レベルポリシー１３５（例えば、持続性レベル基準）に従ってＩ／Ｏ要求の持続性レベルを決定し得、持続性レベルポリシーは、Ｉ／Ｏ要求１１６の属性、Ｉ／Ｏ要求１１６から引き出される推測、Ｉ／Ｏ要求１１６に関連するプロファイリングメタデータ、ファイルレベル知識、アプリケーションレベル知識、嗜好及び／又は構成、テスト及び経験等のうちの１つ又は複数に基づき得る。
【０１０２】
図７Ａは、ＣＭＳ２２０の別の実施形態のブロック図である。ＣＭＳ２２０は、Ｉ／Ｏインタフェース２１８を介してキャッシュストレージリソース２４０Ａを備え、且つ／又は通信可能に結合し得る。ＣＭＳ２２０は動作環境７１１内に配置し得、この環境は、ベアメタル計算環境で動作するオペレーティングシステムを含み得る。したがって、ＣＭＳ２２０は、Ｉ／Ｏインタフェース２１８を介して直接、キャッシュストレージリソース２４０Ａにアクセスするように構成し得、Ｉ／Ｏインタフェース２１８はＡＰＩ、バス、プロトコル等を含み得る。幾つかの実施形態では、動作環境７１１は、仮想オペレーティングシステム、ゲストオペレーティングシステム等の仮想動作環境であり得る。ＣＭＳ２２０は、仮想キャッシュストレージリソース２４０Ａにアクセスするように構成し得、上述したように、これは仮想ディスク２２９として表し得る。ＣＭＳ２２０は、上述したように、ＳＣＳＩフィルタ３１９を介してデータ、制御データ、及び／又は構成データをキャッシュストレージリソース２４０Ａに転送するとともに、キャッシュストレージリソース２４０Ａから転送するように更に構成し得る。
【０１０３】
ＣＭＳ２２０のＩ／Ｏ要求受信器モジュール１３２は、動作環境７１１のＩ／Ｏスタック１１７内のＩ／Ｏ要求を監視するように構成されるエージェント１３３を備え得る。Ｉ／Ｏスタック１１７は、ファイルシステムレイヤ７１７Ａを含む複数のレイヤ７１７Ａ〜Ｎを含み得る。エージェント１３３は、任意のレイヤ７１７Ａ〜Ｎ内のＩ／Ｏ要求１１６を監視するように構成し得る。Ｉ／Ｏ要求は、ファイルを開く、ファイルを閉じる、読み出し、書き込み、変更等のファイル動作に関連し得る。エージェント１３３は、ボリュームマウント及び／又はアンマウント、ディスクマウント及び／又はアンマウント、ページングＩ／Ｏ等の他のタイプのＩ／Ｏ要求も監視し得る。エージェント１３３は、計算環境１１１、Ｉ／Ｏスタック１１７等によって提供されるインタフェースを使用して、Ｉ／Ｏ要求１１６を監視し得る。したがって、エージェント１３３は、１つ又は複数のＩ／Ｏモニタ、ファイルフィルタドライバ、ボリュームフィルタドライバ、ＳＣＳＩフィルタドライバ、及び／又は他の適する監視及び／又はフィルタリングモジュールを含み得る。
【０１０４】
ＣＭＳ２２０は、特に、キャッシュ許容基準、キャッシュ退去基準等を定義し得るキャッシュポリシーモジュール６０１を備え得る。したがって、キャッシュポリシーモジュール６０１は、本明細書に記載のように、クロックスイープモジュール、スチール候補モジュール、キャッシュタグ保持モジュール、及び／又はキャッシュタグスナップショットモジュールを含み得る。ＣＭＳ２２０は、キャッシュポリシーモジュール６０１を使用して、キャッシュアクセスメタデータ、許容基準（例えば、ファイル選択基準）等に基づいて、キャッシュ許容及び／又は退去判断を下し得る。
【０１０５】
幾つかの実施形態では、キャッシュポリシーモジュール６０１は、持続性レベルを決定し、且つ／又はＩ／Ｏ要求１１６に割り当てるように更に構成し得る。Ｉ／Ｏ要求の持続性レベルは、特にストレージリソース２４０Ａ内に許容されるデータのキャッシュモード及び／又は構成を決定し得る。したがって、キャッシュポリシーモジュール６０１は、本明細書に記載のように、Ｉ／Ｏ要求データの持続性レベルを決定するように構成される持続性レベルモジュール７３４を含み得る。幾つかの実施形態では、持続性レベルを決定し、且つ／又はＩ／Ｏ要求１１６に割り当てることは、Ｉ／Ｏ要求１１６の１つ又は複数の特徴に持続性レベル基準を適用することを含み得、特徴は、ファイル名、パス、ディレクトリ、ボリューム等のファイルレベル基準を含み得る。図７Ｂは、持続性レベルポリシー７３５の一実施形態を示す。図７Ｂに示されるように、持続性レベル基準７３７は、Ｉ／Ｏ要求１１６のファイル関連特徴に関連する。持続性レベルポリシー７３５は、特定のファイル名（例えば、「ｐａｇｅｆｉｌｅ．ｓｙｓ」）、ファイルパス、及び／又はボリュームを各持続性レベル７３９にマッピングし得る。「ｐａｇｅｆｉｌｅ．ｓｙｓ」及び／又は「ローカルキャッシュ」データ等の一時的な不必要データに関連するファイルには、エフェメラル（ライトネバー）キャッシュモードを指定する持続性レベル７３９を割り当て得る。持続性レベル７３９の他の潜在的な特徴は、これらの実施形態の詳細を曖昧にしないように、省略される。
【０１０６】
持続性レベルポリシー７３５は、他のタイプの持続性レベルを指定し得る。例えば、重要ファイルのデータは、ライトスルーキャッシングモードを示す持続性レベル７３９で記憶し得る。持続性レベル７３９は、データを１つ又は複数の冗長ストレージリソース２４０Ｂ〜Ｎに記憶すべき（例えば、特定のＲＡＩＤレベル、ミラーリング構成等で）ことを更に示し得る。これに応答して、ＣＭＳ２２０は、「＼＼Ａｐｐｌｉｃａｔｉｏｎ＼ｃｒｉｔｉｃａｌ  ｄａｔａ」ファイル選択基準を満たすファイルに関連するＩ／Ｏ要求１１６のデータを冗長プライマリストレージリソース２４０Ａ〜Ｎ及び／又は対応するストレージモードでライトスルーするように構成し得る。ストレージモジュール１３０（図７Ａに図示せず）等の他のストレージサービスは、持続性レベルポリシー７３５を利用して、特定のＩ／Ｏ要求１１６がＣＭＳ２２０によって応えられるか否かに関係なく、指定された持続性レベルに従ってデータを記憶し得る。
【０１０７】
持続性レベルポリシー７３５は、ファイル関連特徴に追加して、且つ／又はファイル関連特徴の代わりに他のＩ／Ｏ要求特徴を組み込み得る。例えば、持続性レベルポリシー７３５は、一時的な不必要書き込み動作を利用することがわかっているアプリケーションを識別し、且つ／又は指定し得、それにより、そのようなアプリケーションのＩ／Ｏ要求１１６は、エフェメラルキャッシュ構成を含む持続性レベル７３９に従ってキャッシュされる。例えば、持続性レベル基準７３７は、Ｗｏｒｄ（登録商標）アプリケーションから発せられ、ローカルキャッシュ内のファイルに向けられたＩ／Ｏ要求１１６を、エフェメラル持続性レベル７３９で応えるべきであることを示し得る。持続性レベルポリシー７３５は、デフォルトライトスルーキャッシュモード持続性レベル７３９等のデフォルト及び／又はワイルドカード基準を更に含み得る。
【０１０８】
ＣＭＳ２２０は、動作環境７１１の既存のキャッシュマネージャ７０９をトランスペアレントに拡張するように構成し得る。したがって、ＣＭＳ２２０及び／又はエージェント１３３は、非ページングＩ／Ｏ要求、ページングＩ／Ｏ要求、直接Ｉ／Ｏ要求等を含むが、これらに限定されない異なるＩ／Ｏ要求タイプを区別するように構成し得る。ＣＭＳ２２０及び／又はエージェント１３３は、プライマリストレージリソース２４０Ｂ〜Ｎに直接アクセスすることが予期される直接Ｉ／Ｏ要求及び／又は既存のキャッシュマネージャ７０９に関連する非ページングＩ／Ｏ要求等の特定のタイプのＩ／Ｏ要求１１６を無視するように構成し得る。
【０１０９】
本明細書に開示されるように、持続性レベルモジュール１３４は、少なくとも部分的に、Ｉ／Ｏ要求１１６のターゲット及び／又はソース（例えば、ファイル名）に基づいて、持続性レベルをＩ／Ｏ要求１１６に割り当てる。幾つかの実施形態では、ＣＭＳ２２０はＩ／Ｏ要求メタデータ７３３を保持し得、これは、Ｉ／Ｏ要求１１６のソース識別子（例えば、ファイル名、パス等）、Ｉ／Ｏ要求１１６の持続性レベル等を含み得るが、これらに限定されない。エージェント１３３は、ファイルが開かれる、読み出される、削除され、作成される、切り詰められる、変更される、書き込まれる等のファイル動作に関連する初期Ｉ／Ｏ要求１１６の検出に応答して、コンテキストメタデータ７３３を生成し得る。エージェント１３３は、Ｉ／Ｏ要求メタデータ（例えば、コンテキスト）７３３を使用して、Ｉ／Ｏ要求１１６（及び続けて、関連するＩ／Ｏ要求１１６）に、ファイル識別子、ファイル名、ボリューム識別子、ディスク識別子等の対応するソース識別子を関連付け得る。幾つかの実施形態では、エージェント１３３は、特定のファイル（及び／又は対応するＩ／Ｏ要求）がキャッシュ可能であるか（キャッシュに許容すべきデータに関連するか）否かの指示と、Ｉ／Ｏ要求１１６の持続性レベルとを含み得る。ＣＭＳ２２０は、キャッシュ許容基準及び／又は持続性レベルポリシー７３５を再適用せずに、Ｉ／Ｏ要求メタデータ７３３にアクセスして、続くＩ／Ｏ要求１１６をキャッシュすべきか否かを判断し、且つ／又はＩ／Ｏ要求１１６の持続性レベルを決定し得る。Ｉ／Ｏ要求メタデータ７３３は、Ｉ／Ｏ要求１１６のコンテキストデータを含み得、且つ／又は別個のデータ構造に保持し得る。Ｉ／Ｏ要求メタデータ７３３は、任意の適するデータ構造（例えば、テーブル、ハッシュテーブル、マップ、又はツリー）で記憶し得、ソース識別子、ファイル名等でインデックスし得る。
【０１１０】
一例では、ストレージクライアント１０６Ａ〜Ｎは複数のファイルを開き得、対応するファイルオープンＩ／Ｏ要求１１６が生成される。エージェント１３３は、Ｉ／Ｏ要求１１６を対応するＩ／Ｏ要求メタデータ７３３に関連付け得、このメタデータは、ファイルのソース識別子、ファイルがキャッシュに許容されるか否かの指示、Ｉ／Ｏ要求１１６の持続性レベル等を含み得る。ストレージクライアント１０６Ａ〜Ｎは、Ｉ／Ｏ動作をファイルに対して実行し得、これは、既存のキャッシュマネージャ７０９を使用して応え得、エージェント１３３によって無視し得る。計算環境１１１のキャッシュポリシーに従って、既存のキャッシュマネージャ７０９をフラッシュし得、その結果、１つ又は複数のページングＩ／Ｏ要求１１６が生成され、これはエージェント１３３によって検出し得る。それに応答して、エージェント１３３は、ページングＩ／Ｏ要求１１６のＩ／Ｏ要求メタデータ（例えば、コンテキスト）７３３にアクセスして、要求のソース識別子を特定し、Ｉ／Ｏ要求１１６がキャッシュに許容すべきデータに関連するか否かを判断し、Ｉ／Ｏ要求１１６の持続性レベルを決定するなどし得る。キャッシュに許容すべきデータに関連するＩ／Ｏ要求１１６は、本明細書に記載のように、割り当てられた持続性レベルに従ってＣＭＳ２２０を使用して応え得る。
【０１１１】
上述したように、Ｉ／Ｏ要求１１６の持続性レベルは、持続性レベル基準７３７等の持続性レベルポリシー７３５に基づき得る。持続性レベルポリシー７３５は、ユーザ（又はプロファイリングプロセス等の他のエンティティ等）によって構成可能であり得る。ＣＭＳ２２０は構成インタフェース７４０を備え得、それを通して、持続性レベルポリシー７３５及び／又は持続性レベル基準７３７を指定し得る。
【０１１２】
幾つかの実施形態では、ＣＭＳ２２０は、動作中、キャッシュタグ２２１の持続性レベルを変更するように構成し得る。例えば、ＣＭＳ２２０は、エフェメラルキャッシュ構成で記憶されたデータをプライマリストレージリソース２４０Ｂ〜Ｎに「フラッシュ」するように構成し得る。本明細書で使用される場合、エフェメラルキャッシュデータをフラッシュすることは、エフェメラルキャッシュデータをプライマリストレージリソース２４０Ｂ〜Ｎに記憶すること、及び／又はデータをキャッシュから退去させることを含み得る。エフェメラルキャッシュデータは、特定のタイプのＩ／Ｏ要求１１６（例えば、切り詰め、トランザクション等の未処理Ｉ／Ｏ要求１１６）に関連するＩ／Ｏ要求１１６に応答して退去させ得る。そのようなＩ／Ｏ要求１１６に応答して、ＣＭＳ２２０は、エフェメラルキャッシュデータをプライマリストレージリソース２４０Ｂ〜Ｎにフラッシュし、動作環境７１１がＩ／Ｏ要求１１６に応えられるようにし、データをキャッシュに再許容（エフェメラルキャッシュモード及び／又は構成で）するように構成し得る。
【０１１３】
ＣＭＳ２２０は、エフェメラルキャッシュデータに関連するＩ／Ｏ競合を管理するように更に構成し得る。幾つかの実施形態では、ＣＭＳ２２０は、データをキャッシュから退去させることを含み得る、キャッシュタグ２２１を無効化することにより、Ｉ／Ｏ競合（例えば、キャッシュタグ２２１にアクセスする同時要求）を処理する。ＣＭＳ２２０は、エフェメラルキャッシュデータを効率的に処理し得る。エフェメラルキャッシュデータはキャッシュ内のみに記憶される（且つエフェメラルキャッシュデータをフラッシュすることは、プライマリストレージリソース２４０Ｂ〜Ｎへの高待ち時間アクセスを必要とする）ため、ＣＭＳ２２０は、エフェメラルキャッシュタグ２２１を無効化するよりもむしろ、競合する要求をスケジュールし、且つ／又は延期するように構成し得る。
【０１１４】
Ｉ／Ｏスタック１１７内のＩ／Ｏ要求に従ってデータをキャッシュするシステム及び方法の更なる実施形態は、「Ｓｙｓｔｅｍｓ  ａｎｄ  Ｍｅｔｈｏｄｓ  ｆｏｒ  ａ  Ｆｉｌｅ−Ｌｅｖｅｌ  Ｃａｃｈｅ」という名称の２０１２年８月２５日に出願された米国特許出願第１３／２８７，９９８号明細書及び「Ｓｙｓｔｅｍｓ  ａｎｄ  Ｍｅｔｈｏｄｓ  ｆｏｒ  ａ  Ｍｕｌｔｉ−Ｌｅｖｅｌ  Ｃａｃｈｅ」という名称の２０１２年８月２５日に出願された米国特許出願第１３／２８８，００５号明細書に開示されており、これらの両特許出願を参照により本明細書に援用する。
【０１１５】
図７Ｃは、ＣＭＳ２２０の別の実施形態を示す。上述したように、書き込みＩ／Ｏ要求１１６にエフェメラルキャッシュモードで応えることは、データをプライマリストレージリソース２４０Ｂ〜Ｎ（例えば、バッキングストア）に書き込まずに、データをキャッシュストレージリソース２４０Ａに書き込むことを含み得る。したがって、エフェメラルキャッシュ動作は、動作環境７１１のＩ／Ｏスタック１１７の外部にある「高速パス」７８２において排他的に、より遅いプライマリストレージリソース２４０Ｂ〜Ｎでの動作を含まずに実施し得る。本明細書で使用される場合、「高速パス」動作は、動作環境７１１のＩ／Ｏスタック１１７の外部で行われ、且つ／又は遅いプライマリストレージリソース２４０Ｂ〜Ｎに関与せずに行われるＩ／Ｏ動作を指す。「低速バス」動作は、Ｉ／Ｏスタック１１７の１つ又は複数のレイヤに関与し、且つ／又は１つ又は複数のプライマリストレージリソース２４０Ｂ〜Ｎに対して実行されるＩ／Ｏ動作を指す。
【０１１６】
非エフェメラルキャッシュモード（例えば、キャッシュポリシーモジュール６０１及び／又は持続性レベルモジュール７３４によって決定されるライトスルー及び／又はライトバックキャッシュモード）で記憶されるデータは、キャッシュストレージリソース２４０Ａ及び／又は１つ又は複数のプライマリストレージリソース２４０Ｂ〜Ｎの両方にデータを記憶することを含み得る。非エフェメラルキャッシュモードＩ／Ｏ要求１１６に応答して、キャッシュ実行モジュール６３６は、データをキャッシュストレージリソース２４０Ａに記憶する高速パス動作７８２及びデータを１つ又は複数のプライマリストレージリソース２４０Ｂ〜Ｎに記憶する低速パス動作７８４に要求を「フォーク」７８０するように構成し得る。本明細書で使用される場合、「フォーク」は、２つ以上の別個の処理動作（例えば、２つ以上の処理スレッド）を含むことを指す。ＣＭＳ２２０は、低速パス動作７８４が完了するまで、Ｉ／Ｏ要求１１６の完了を確認しない。したがって、低速パス７８４は、非エフェメラルＩ／Ｏ要求１１６に応える「クリティカルパス」を決定し得る。本明細書で使用される場合、「クリティカルパス」は、処理動作（例えば、処理ステップ及び／又はパスのタイミング及び／又は待ち時間を決定する処理パスを指す。非エフェメラルＩ／Ｏ要求１１６に応えるためのクリティカルパスは低速パス７８４を含み得、その理由は、対応するデータが１つ又は複数のプライマリストレージリソース２４０Ｂ〜Ｎに記憶されるまで、そのようなＩ／Ｏ要求１１６の完了が確認されないためである。
【０１１７】
逆に、キャッシュ実行モジュール６３６は、Ｉ／Ｏスタック１１７内の低速パス７８４の動作及び／又はプライマリストレージリソース２４０Ｂ〜Ｎに関与せずに、高速パス７８２で排他的に、エフェメラルデータに関連する（キャッシュポリシーモジュール６０１及び／又は持続性レベルモジュール７３４によって決定される）書き込みＩ／Ｏ要求１１６に応えるように構成し得る。さらに、エフェメラルキャッシュデータを書き込むＩ／Ｏ要求１１６に応えることは、別個の低速パス７８４処理が必要ないため、フォーク７８０を必要としないことがある。ＣＭＳ２２０は、高速パス動作７８２の完了に応答して、低速パス７８４の動作の完了を待たずに、エフェメラルＩ／Ｏ要求１１６の完了を確認し得る。したがって、エフェメラルＩ／Ｏ要求１１６は、Ｉ／Ｏ要求１１６に応えるためのクリティカルパスを低減し、Ｉ／Ｏスタック１１７及び／又はプライマリストレージリソース２４０Ｂ〜Ｎへの付加を低減し得る。
【０１１８】
図８Ａは、適応持続性レベルに従ってデータをキャッシュする一実施形態の流れ図である。方法８００は、本明細書に開示されるように開始し、初期化し得る。ステップ８１０は、Ｉ／Ｏ要求１１６をストレージモジュール１３０及び／又はＣＭＳ２２０で受信することを含み得る。ステップ８１０は、本明細書に開示されるように、ストレージクライアント１０６Ａ〜Ｎから直接Ｉ／Ｏ要求１１６を受信し、且つ／又はＩ／Ｏスタック１１７（又は他のＩ／Ｏインフラ）内のＩ／Ｏ要求を検出し、且つ／又は監視することを含み得る。ステップ８１０は、本明細書に記載のように、Ｉ／Ｏ要求１１６に関連付けられたコンテキスト及び／又は識別子（例えば、ファイル識別子）にアクセスすることを更に含み得る。
【０１１９】
ステップ８２０は、仮想マシンキャッシュ２１３等のキャッシュにＩ／Ｏ要求１１６のデータを許容するか否かを判断することを含み得る。しかし、本開示は仮想計算環境に限定されず、ベアメタル環境及び／又は非仮想キャッシュリソースに適用することもできる。ステップ８２０は、Ｉ／Ｏ要求１１６のデータが既に許容されているか否かを判断することを含み得、許容されている場合、Ｉ／Ｏ要求１１６に関連付けられた持続性メタデータ（例えば、Ｉ／Ｏ要求１１６のキャッシュタグ２２１内で示される、前に決定されたＩ／Ｏ要求１１６の持続性レベル及び／又はキャッシュモード）に従ってＩ／Ｏ要求１１６に応え得る。Ｉ／Ｏ要求１１６のデータを許容すべき場合（キャッシュポリシー及び／又は可用性に従って）、流れはステップ８３０に続く。
【０１２０】
ステップ８３０は、適応持続性レベルをＩ／Ｏ要求１１６に割り当てることを含み得、これは、Ｉ／Ｏ要求１１６のキャッシュモードを選択することを含み得る（例えば、エフェメラル、ライトスルー、ライトバック等）。持続性レベルを割り当てることは、上述したように、Ｉ／Ｏ要求１１６が一時データ及び／又は不必要データに関連するか否かを判断することを含み得る。したがって、ステップ８３０は、Ｉ／Ｏ要求１１６に関連するファイルレベル知識を持続性レベル基準と比較することを含み得る。例えば、Ｉ／Ｏ要求１１６がスワップファイル、一時ファイル、ローカルキャッシュファイル等に関連する場合、Ｉ／Ｏ要求１１６にエフェメラルキャッシュモードを割り当て得る。代替的には、Ｉ／Ｏ要求１１６が永続データに関連する場合、Ｉ／Ｏ要求１１６にライトスルーキャッシュモード（又はライトバック等の他のキャッシュモード）を割り当て得る。ステップ８３０は、ステップ８３０で決定された持続性レベル及び／又はキャッシュモードを示すように、Ｉ／Ｏ要求１１６に関連付けられたキャッシュタグ２２１を更新すること（例えば、キャッシュタグ２２１の持続性メタデータを更新すること）を更に含み得る。ステップ８３０で決定された持続性レベルがエフェメラルキャッシュモードを示す場合、流れはステップ８４０に続き、その他の場合、流れはステップ８５０に続く。
【０１２１】
ステップ８４０は、エフェメラルキャッシュモードでキャッシュへのＩ／Ｏ要求１１６のデータを許容することを含み得る。ステップ８４０は、Ｉ／Ｏ要求１１６のデータをキャッシュ（例えば、仮想マシンキャッシュ２１３）に記憶することを含み得るが、データをプライマリストレージリソース２４０Ｂ〜Ｎに記憶しない。したがって、ステップ８４０は、キャッシュ２１６に排他的にデータを記憶することを含み得る。仮想環境では、ステップ８４０は、データがエフェメラルキャッシュモードでキャッシュされていることの指示を仮想マシンキャッシュ２１３に提供することを更に含み得る。後述するように、仮想マシンキャッシュ２１３は、キャッシュモードメタデータを使用して、仮想マシン２０８Ａ〜Ｎが別のホストに移った後、キャッシュデータを保持すべきか否か（及び／又はキャッシュデータを保持する期間）を判断し得る。仮想マシンキャッシュ２１３は、エフェメラルキャッシュデータの唯一のソースであり得るため、データが仮想マシン２０８Ａ〜Ｎの新しいホストに転送されるまで、エフェメラルキャッシュデータを保持するように構成し得る。
【０１２２】
ステップ８５０は、ステップ８３０で決定された持続性レベルに従ってＩ／Ｏ要求１１６のデータを許容することを含み得、これは、データを共有仮想マシンキャッシュ２１３（又は他のキャッシュ）に記憶し、１つ又は複数のプライマリストレージリソース２４０Ｂ〜Ｎにデータをライトスルー及び／又はライトバックすることなどを含み得る。
【０１２３】
図８Ｂは、適応持続性レベルに従ってデータをキャッシュする別の実施形態の流れ図である。方法８０１は、本明細書に開示されるように開始し、初期化し得る。ステップ８１１は、データをストレージモジュール１３０及び／又はＣＭＳ２２０に書き込むＩ／Ｏ要求１１６を受信することを含み得る。ステップ８１１は、本明細書に開示されるように、ストレージクライアント１０６Ａ〜Ｎから直接（例えば、Ｉ／Ｏインタフェース１３１を介して）Ｉ／Ｏ要求１１６を受信し、且つ／又はＩ／Ｏスタック１１７（又は他のＩ／Ｏインフラ）内のＩ／Ｏ要求１１６を検出し、且つ／又は監視することを含み得る。ステップ８１１は、Ｉ／Ｏ要求１１６が、キャッシュ（例えば、キャッシュストレージリソース２４０Ａ及び／又は仮想マシンキャッシュ２１３）に許容されているデータに関連することを特定することを更に含み得る。
【０１２４】
ステップ８３１は、Ｉ／Ｏ要求１１６に関連付けられた持続性レベルを決定することを含み得、持続性レベルは、本明細書に記載のように、Ｉ／Ｏ要求１１６のキャッシュモードを決定し得る。キャッシュモードがエフェメラルキャッシュモードを含む場合、流れはステップ８４１に続き、その他の場合、流れはステップ８５１に続く。
【０１２５】
ステップ８４１は、エフェメラルキャッシュモードでＩ／Ｏ要求１１６に応えることを含み得る。したがって、ステップ８４１は、プライマリストレージリソース２４０Ｂ〜Ｎ及び／又はＩ／Ｏスタック１１７の他のレイヤへのアクセスを含まない１つ又は複数の高速パス動作７８２でＩ／Ｏ要求１１６に応えることを含み得る。ステップ８４３は、１つ又は複数の高速パス動作７８２の完了に応答して、Ｉ／Ｏ要求１１６の完了を確認することを含み得る。したがって、Ｉ／Ｏ要求１１６に応えるクリティカルパスは、高速パス動作７８２のみを含み、低速パス動作７８４のフォーク７８０を除外する。
【０１２６】
ステップ８５１は、ライトスルーキャッシュモード等の別の非エフェメラルキャッシュモードに従ってＩ／Ｏ要求１１６に応えることを含み得る。ステップ８５１は、１つ又は複数の低速パス動作７８４及び１つ又は複数の高速パス動作７８２でＩ／Ｏ要求１１６に応える（例えば、Ｉ／Ｏ動作のフォーク７８０）ことを含み得る。１つ又は複数の低速パス７８４の動作は、１つ又は複数のプライマリストレージリソース２４０Ｂ〜Ｎでの動作を含み得、且つ／又はＩ／Ｏスタック１１７の１つ又は複数のレイヤを含み得る。ステップ８５３は、１つ又は複数の低速パス動作７８４の完了に応答して、Ｉ／Ｏ要求１１６の完了を確認し得る。
【０１２７】
上述したように、ＣＭＳ２２０はキャッシュタグ２２１を保持するように構成し得、キャッシュタグは、キャッシュ許容ポリシー、キャッシュ保持及び／又は退去ポリシー（例えば、キャッシュ老化メタデータ、キャッシュスチールメタデータ、ＬＲＵ、「ホット性」、及び／又は「コールド性」等）、キャッシュプロファイリング情報、ファイル及び／又はアプリケーションレベル知識等の１つ又は複数のキャッシュポリシーの適用に従ってキャッシュの最適な作業セットを表し得る。したがって、作業セットは、特定の動作条件下での仮想マシン２０８Ａ〜Ｎに最適なＩ／Ｏ性能を提供するキャッシュデータセットを表し得る。作業セットは、作成及び／又は改良にかなりの時間がかかり得る。
【０１２８】
ＣＭＳ２２０は、仮想マシン２０８Ａ〜Ｎの別のホスト２０２への配置換え、転送、及び／又は移行（例えば、ＶＭｏｔｉｏｎ（商標）動作において）に応答してキャッシュタグ２２１を保持するように構成し得る。キャッシュタグ２２１を保持することは、仮想マシン２０８Ａ〜Ｎのメモリにキャッシュタグ２２１を保持し、且つ／又は再割り振り中にキャッシュタグ２２１を無効化しないことを含み得る。キャッシュタグ２２１を保持することは、新しいホスト２０２のキャッシュプロビジョナモジュール２１４からのキャッシュストレージを要求し、且つ／又は新しいホスト２０２での異なる量のキャッシュストレージが割り振られることに応答して、キャッシュタグ２２１を選択的に追加し、且つ／又は除去することを更に含み得る。幾つかの実施形態では、ＣＭＳ２２０は、キャッシュタグ２２１によって参照されるキャッシュデータが新しいホスト２０２のキャッシュ２１６に存在しないにもかかわらず、キャッシュタグ２２１を保持し得る。後述するように、仮想マシンキャッシュ２１３は、仮想マシン２０８Ａ〜Ｎの前のホスト２０２から（例えば、ネットワーク転送を介して）及び／又はプライマリストレージからのキャッシュデータをキャッシュ２１６に移入するように構成し得る。エフェメラルキャッシュデータ等の特定のキャッシュデータは、前のホスト２０２のみから利用可能であり得る。
【０１２９】
仮想マシン２０８Ａ〜Ｎの移行は、新しいホストでのキャッシュリソースの再割り振り、キャッシュの再移入等を含み得る。キャッシュデータは、仮想マシン２０８Ａ〜Ｎの前のホスト２０２及び／又はプライマリストレージから転送し得る。しかし、エフェメラルキャッシュデータ等の特定のタイプのキャッシュデータは、前のホスト２０２Ａの仮想マシンキャッシュ２１３でのみ利用可能であり得、キャッシュデータがプライマリストレージにライトスルー及び／又はライトバックされないため、データはキャッシュ２１３のみに存在する。本明細書に記載のように、仮想マシンキャッシュ２１３は、ホスト２０２間でキャッシュデータを転送するように構成し得、それにより、エフェメラルキャッシュデータは失われない。代替又は追加として、仮想マシン２０８Ａ〜ＮのＣＭＳ２２０は、新しいホスト２０２に転送及び／又は移行される前に、エフェメラルキャッシュデータをフラッシュするように構成し得、それにより、キャッシュデータが前のホスト２０２から除去される（且つ／又は前のホストが故障状況を経験する）場合のデータ損失を回避し得る。
【０１３０】
図９は、仮想計算環境９００の別の実施形態のブロック図である。仮想計算環境９００は複数のホスト２０２Ａ〜Ｎを含み、各ホストは、仮想化カーネル２１０と、１つ又は複数の仮想マシンとを備え得る。図２には示されていないが、各仮想マシンは、本明細書に記載のように、各ＣＭＳ２２０を備え得る。各ホスト２０２Ａ〜Ｎは、キャッシュプロビジョナモジュール２１４及びキャッシュ２１６を備える各仮想マシンキャッシュ２１３Ａ〜Ｎを更に備え得る。図９は３つのホストシステム２０２Ａ〜Ｎを示すが、本開示はこの点に関して限定されず、任意の数のホスト２０２Ａ〜Ｎを含むことができる。
【０１３１】
仮想化環境９００は、ホスト２０２Ａ〜Ｎ及び／又は仮想マシン２０８の間で共有し得るプライマリストレージシステム２４２を含み得る。プライマリストレージシステム２４２は、１つ又は複数の磁気ディスク（例えば、ハードドライブ）、安価ディスク冗長アレイ（ＲＡＩＤ）、ストレージエリアネットワーク（ＳＡＮ）等を含むが、これらに限定されない、任意の適する永続的なストレージ装置及び／又はストレージシステムを含み得る。ホスト２０２Ａ〜Ｎは、ネットワーク１０５を介してプライマリストレージシステムにアクセスするように構成し得る。
【０１３２】
幾つかの実施形態では、各仮想マシン２０８に各ＶＭＩＤを割り当て得る。仮想マシン２０８がホスト２０２Ａ〜Ｎにインスタンス生成（例えば、ロード）される（例えば、上述したハンドシェークプロトコル中）場合、ＶＭＩＤを割り当て得る。ＶＭＩＤは、プロセス識別子、スレッド識別子、又は任意の他の適する識別子を含み得る。幾つかの実施形態では、ＶＭＩＤは、特定のホスト２０２Ａ〜Ｎ及び／又はホスト２０２Ａ〜Ｎのグループ内の仮想マシン２０８を一意に識別し得る。例えば、ホスト２０２Ａ〜Ｎは、クラスタ等の同じ名前空間内で動作し得、各仮想マシン２０８のＶＭＩＤは、クラスタの名前空間内で一意（クラスタ内のホスト２０２Ａ〜Ｎに配置される仮想マシン２０８Ａ〜Ｎにわたって一意）であり得る。幾つかの実施形態では、ＶＭＩＤは、媒体アクセス制御（ＭＡＣ）アドレス、ネットワークアドレス、区別された名前等のホスト識別子を含み得る。したがって、幾つかの実施形態では、ＶＭＩＤは、特定の名前空間内の仮想マシン２０８を一意に識別し得、仮想マシン２０８が現在配置されている（又は過去に配置されていた）ホスト２０２Ａ〜Ｎを識別し得る。代替又は追加として、各仮想マシン２０８は、現在のホスト識別子及び前のホスト識別子を保持するように構成し得る。
【０１３３】
幾つかの実施形態では、仮想マシン２０８Ａ〜Ｎのうちの１つ又は複数は、ホスト２０２Ａ〜Ｎ間で配置替えし、且つ／又は転送することが可能であり得る。例えば、仮想マシン２０８Ｘは、ホスト２０２Ａからホスト２０２Ｂに移行し得る（例えば、ＶＭｏｔｉｏｎ（商標）又は同様の動作で）。幾つかの実施形態では、仮想マシン２０８ＸのＣＭＳ２２０は、転送及び／又は移行動作を検出するように構成し得、それに応答して、エフェメラルキャッシュデータをプライマリストレージシステム２４２にフラッシュしようとし得る。上述したように、エフェメラルキャッシュデータをフラッシュすることにより、エフェメラルキャッシュデータが前のホスト２０２Ａから利用不可能な場合のデータ損失を回避し得る。代替的には、ＣＭＳ２２０は、エフェメラルキャッシュデータの持続性レベルを保持して、「移行ストーム」を回避する（例えば、プライマリストレージ２４２システム及び／又はネットワーク１０５のＩ／Ｏインフラに過負荷がかかることを回避）ように構成し得る。
【０１３４】
仮想マシンキャッシュ２１３Ｂは、転送された仮想マシン２０８ＸのＣＭＳ２２０から要求を受信することに応答して、転送を識別するように構成し得る。要求は、転送された仮想マシン２０８ＸのＶＭＩＤを含み得、それから、仮想マシンキャッシュ２１３Ｂは、仮想マシン２０８Ｘがホスト２０８Ｂにとって「新しい」（例えば、ＶＭＩＤを含む要求を前に受信したことがない）ことを特定し得る。それに応答して、仮想マシンキャッシュ２１３Ｂは、仮想マシン２０８Ｘとのハンドシェークプロトコルを開始し得る。仮想マシンキャッシュ２１３Ｂは、少なくとも部分的に、ＶＭＩＤのホスト識別子及び／又は仮想マシン２０８Ｘによって保持されるホスト識別子に基づいて、仮想マシン２０８Ｘがホスト２０８Ｂに転送されたことを特定し得る。仮想マシン２０８Ｘのホスト識別子はホスト２０２Ａを参照し得、一方、新たに電源投入された仮想マシン２０８のホスト識別子はホスト２０２Ｂを参照し得る（又はブランクであり得る）。代替又は追加として、仮想マシン２０８Ｘは別個のホスト識別子を含み得、これは、ホスト２０２Ａを参照し得、仮想マシンキャッシュ２１３Ｂとのハンドシェークプロトコルでアクセスし得る。
【０１３５】
キャッシュプロビジョナモジュール２１４は、キャッシュ２１６Ｂ内の仮想マシン２０８Ｘのストレージを割り振るように構成し得る。キャッシュプロビジョナモジュール２１４は、少なくとも部分的に、仮前のホスト（ホスト２０２Ａ）で仮想マシン２０８Ｘに割り振られたキャッシュストレージのサイズに基づいて、プロビジョニングするキャッシュストレージ量を決定するように構成し得る。上述したように、仮想マシン２０８ＸのＣＭＳ２２０はホスト２０２Ｂへの転送後、キャッシュの作業セットを保持（例えば、キャッシュタグ２２１を保持）するように構成し得る。キャッシュプロビジョナモジュール２１４Ｂは、保持キャッシュタグ２２１を保持するのに十分なキャッシュ２１６Ｂ内のキャッシュストレージを割り振ろうとし得る。十分なキャッシュストレージを割り振ることができない場合、ＣＭＳ２２０は、ホスト２０２Ｂでの新しいキャッシュストレージ割り振りに従って保持キャッシュタグを選択的に除去するように構成し得る。代替的には、余剰キャッシュストレージが利用可能な場合、ＣＭＳ２２０は、新しいタグを保持キャッシュタグ２２１に追加するように構成し得る。割り振りは、本明細書に記載のように、仮想ディスク２２９を通して反映し得る。
【０１３６】
仮想マシンキャッシュ２１３Ａは保持モジュール９２８Ａを備え得、このモジュールは、仮想マシン２０８Ｘがホスト２０２Ａから転送された後、仮想マシン２０８Ｘのキャッシュデータを保持するように構成し得る。キャッシュデータは、保持期間にわたり、及び／又は仮想マシンキャッシュ２１３Ａにより、保持キャッシュデータがもはや必要ないと判断されるまで、保持し得る。保持モジュール９２８Ａは、キャッシュ２１６Ａの可用性、キャッシュ２１６Ｂの可用性、保持キャッシュデータの相対的な重要性（他の仮想マシン２０８のキャッシュ要件と比較して）、キャッシュデータがプライマリストレージシステム２４２でバックアップされるか否か、キャッシュデータのキャッシュモード及び／又は持続性レベル等を含むが、これらに限定されない様々な保持ポリシー考慮事項に基づいて、キャッシュデータを保持すべきか否かを判断し（且つ／又はキャッシュデータ保持期間を決定し）得る。例えば、エフェメラルキャッシュモードで記憶されたキャッシュデータは、元の仮想マシンキャッシュ２１３Ａでしか利用できないことがある。したがって、キャッシュ保持モジュール９２８Ａは、エフェメラルキャッシュデータが新しいホスト２０２Ｂに転送されるまで、エフェメラルキャッシュデータの保持を優先するように構成し得る。逆に、異なるキャッシュモード（例えば、ライトスルー及び／又はライトバックキャッシュモード）で記憶されるキャッシュデータは、このデータはプライマリストレージシステム２４２から利用可能になるため、より低い保持を有し得る。
【０１３７】
仮想マシン２０８ＸのＣＭＳ２２０は、キャッシュタグ２２１が参照するキャッシュデータをキャッシュ２１６Ｂが含まないにもかかわらず、キャッシュの作業状態（キャッシュタグ２２１）を保持するように構成し得る。後述するように、仮想マシンキャッシュ２１３Ｂは、ホスト２０２Ａのキャッシュ２１６Ａ及び／又はプライマリストレージシステム２４２から転送されたキャッシュデータをキャッシュ２１６Ｂに移入し、転送された仮想マシン２０８Ｘの作業セットを再構築するように構成し得る。
【０１３８】
仮想マシンキャッシュ２１３Ｂはキャッシュ転送モジュール９２９Ｂを備え得、このモジュールは、前のホスト２０２Ａに記憶された仮想マシン２０８Ｘのキャッシュデータにアクセスするように構成し得る。キャッシュ転送モジュール９２９Ｂは、ＶＭＩＤの使用により、且つ／又は仮想マシン２０８Ｘに問い合わせる（例えば、仮想マシン２０８Ｘによって保持される前のホスト識別子にアクセスする）ことにより、前のホスト２０２Ａを識別するように構成し得る。キャッシュ転送モジュール９２９Ｂは、ホスト識別子を使用して、ネットワーク１０５を介してキャッシュデータへの１つ又は複数の要求をホスト２０２Ａの仮想マシンキャッシュ２１３に発行し得る。幾つかの実施形態では、キャッシュ転送モジュール９２９Ｂは、ホスト識別子からホスト２０２Ａのネットワークアドレス又はネットワーク識別子を特定し、且つ／又は導出するように構成される。
【０１３９】
仮想マシンキャッシュ２１３Ａはキャッシュ転送モジュール９２９Ａを備え得、このモジュールは、転送された仮想マシン２０８Ｘの保持キャッシュデータにアクセスを選択的に提供するように構成される。幾つかの実施形態では、キャッシュ転送モジュール９２９Ａは、保持キャッシュデータをセキュア化するように構成される。例えば、キャッシュ転送モジュール９２９Ａは、要求側エンティティ（例えば、仮想マシンキャッシュ２１３Ｂ）が、転送された仮想マシン２０８Ｘのキャッシュデータにアクセスする許可を有することを検証するように構成し得、これは、仮想マシン２０８Ｘがホスト２０２Ｂに配置されていることを検証することを含み得る。例えば、キャッシュ転送モジュール９２９Ａは、ＶＭＩＤ等の転送された仮想マシン２０８Ｘに関連付けられた信用情報を要求し得る。代替又は追加として、キャッシュ転送モジュール９２９Ａは暗号化検証を実施し得、これは、転送された仮想マシン２０８Ｘによって生成されたシグネチャ等を検証することを含み得る。
【０１４０】
キャッシュ転送モジュール９２９Ｂは、１つ又は複数のデマンドページング転送、プリフェッチ転送、及び／又はバルク転送によってキャッシュデータを転送するように構成し得る。デマンドページング転送は、仮想マシン２０８ＸからのキャッシュデータへのＩ／Ｏ要求１１６に応答して（例えば、オンデマンドで）キャッシュデータを転送することを含み得る。転送されたデータは、Ｉ／Ｏ要求１１６に応えるために使用し得る。加えて、転送されたデータは、新しいホスト２０２Ｂのキャッシュ２１６Ｂに許容し得る。代替的には、転送されたデータは、キャッシュポリシーに従って後に許容されてもよい（全く許容されないない）。
【０１４１】
プリフェッチ転送は、プリフェッチキャッシュポリシー（例えば、近接性等による）及び／又はキャッシュデータの持続性レベルに従ってデータを転送することを含み得る。プリフェッチするキャッシュデータの量及び／又は範囲は、特に、ＣＭＳ２２０のキャッシュメタデータ（例えば、キャッシュ老化メタデータ、「ホット性」等）によって決定し得る。したがって、幾つかの実施形態では、キャッシュ転送モジュール９２９Ｂは、ＣＭＳ２２０にクエリして、プリフェッチするキャッシュデータ（もしあれば）を識別するように構成し得る。
【０１４２】
バルク転送は、仮想マシン２０８Ｘからのストレージ要求から独立して、キャッシュデータをバルクで転送することを含み得る。バルク転送は、仮想マシン２０８Ｘに割り振られたキャッシュストレージ全体を転送し移入することを含み得る。代替的には、バルク転送は、キャッシュのサブセットに移入することを含み得、サブセットは、上述したように、仮想マシンのＣＭＳ２２０のキャッシュメタデータに基づいて選択し得る。
【０１４３】
キャッシュ転送モジュール９２９Ｂは、キャッシュデータの持続性レベルに従ってキャッシュ転送（例えば、プリフェッチ及び／又はバルク転送）に優先度を付けるように更に構成し得る。例えば、エフェメラルキャッシュモードでキャッシュされるデータは、前のホスト２０２Ａからしか利用可能ではないことがあり、したがって、代替ソース（例えば、プライマリストレージシステム２４２）から利用可能であり得る他のキャッシュデータよりも優先し得る。したがって、キャッシュ転送モジュール９２９Ｂは、オンデマンドページングを待ち、且つ／又は他のデータを転送するよりも、エフェメラルキャッシュデータをプリフェッチし、且つ／又はバルク転送するように構成し得る。
【０１４４】
キャッシュストレージモジュール９３１Ｂは、キャッシュ２１６Ｂ内のホスト２０２Ａのキャッシュ２１６Ａから転送される（又はプライマリストレージシステム２４２等の他のソースから取得された）キャッシュデータを記憶するように構成し得る。キャッシュストレージモジュール９３１Ｂは、キャッシュプロビジョナモジュール２１４Ｂによって転送仮想マシン２０８Ｘに割り振られたキャッシュストレージロケーションにキャッシュデータを記憶するように構成し得る。キャッシュデータは、元のキャッシュ２１６Ａと同じキャッシュストレージロケーション（例えば、キャッシュストレージと同じオフセット）に記憶し得、それにより、保持キャッシュタグ２２１内の参照は、キャッシュプロビジョナモジュール２１４のマップモジュール５１４によって実施されるマッピングによって有効なままである。
【０１４５】
キャッシュデータ要求に応答して、キャッシュ転送モジュール９２９Ａは、特に、転送仮想マシン２０８ＸのＶＭＩＤを使用して（マップモジュール５１４の使用により）要求されたキャッシュデータを識別するように構成し得る。キャッシュ転送モジュール９２９Ａは、次に、ネットワーク１０５を介して、要求されたキャッシュデータ（もし利用可能であれば）をキャッシュ転送モジュール９２９Ｂに転送し得る。
【０１４６】
キャッシュ転送モジュール９２９Ｂは、前のホスト２０２Ａからのキャッシュデータにアクセスするように構成し得る。エフェメラルキャッシュモードでキャッシュされたデータは、前のホスト２０２Ａからしかアクセスすることができないことがある。他のキャッシュモードでキャッシュされたデータは、プライマリストレージシステム２４２及び／又は他のデータソース（例えば、他の永続的ストレージシステム、ホスト２０２Ｎ等）の他のソースから利用可能であり得る。キャッシュ転送モジュール９２９Ｂは、様々なポリシー考慮事項（例えば、キャッシュ転送ポリシー）に基づいて、キャッシュデータのソースを選択し得、ポリシー考慮事項は、ネットワークポリシー、帯域幅ポリシー、ホストリソースポリシー、プライマリストレージリソースポリシー等を含み得る。例えば、ネットワーク１０５がかなり輻輳しているとの判断に応答して、キャッシュ転送モジュール９２９Ｂは、転送するデータ量を低減し（バルク転送を延期し）、且つ／又はネットワーク１０５から独立した別のソースからキャッシュデータを転送するように構成し得る。同様に、キャッシュ転送モジュール９２９Ｂは、プライマリストレージシステム２４２に過負荷がかかっており、且つ／又は限られた利用可能帯域幅を有するとの判断に応答して、要求をホスト２０２（プライマリストレージシステム２４２にではなく）に向け得る。
【０１４７】
ホスト２０２Ａに保持されるキャッシュデータは、ホスト２０２Ａで動作している他の仮想マシン２０８Ａ〜Ｎによって使用することができないキャッシュリソースを表し得る。したがって、キャッシュ保持モジュール９２８Ａは、データがもはや必要ではない場合、且つ／又は保持ポリシーに従って、保持キャッシュデータを選択的に除去するように構成し得る。保持ポリシーは、上述したように、保持ポリシー要因に基づいて決定し得る。幾つかの実施形態では、キャッシュ転送モジュール９２９Ｂは、他のソースからホスト２０２Ｂに転送されたキャッシュデータを前のホスト２０２Ａに通知するように構成され、それにより、キャッシュ保持モジュール９２８Ａは対応するデータをキャッシュ２１６Ａから除去することができる。キャッシュ転送モジュール９２９Ｂは、キャッシュデータが上書きされるとき、削除（例えば、トリミング）されるとき、キャッシュ２１６Ｂから退去するとき等、キャッシュデータをもはや保持する必要がない他の状況をホスト２０２Ａに通知するように更に構成し得る。上で開示したように、キャッシュ保持モジュール９２８Ａは、エフェメラルキャッシュデータの保持が他のソースから利用可能なキャッシュデータよりも優先されるように、キャッシュデータの持続性レベルに基づいてキャッシュ保持に優先度を付けるように構成し得る。
【０１４８】
幾つかの実施形態では、キャッシュ転送モジュール９２９Ａは、仮想マシン２０８Ｘのキャッシュデータを新しいホスト２０２Ｂに「プッシュ」するように構成し得る。キャッシュデータをプッシュすることは、キャッシュデータの要求を受信せずに（キャッシュデータ要求から独立して）、仮想マシン２０８Ｘの保持キャッシュデータをキャッシュ転送モジュール９２９Ｂに転送することを含み得る。キャッシュ転送モジュール９２９Ａは、ユーザ構成、上述した検証プロセス、キャッシュ転送モジュール９２９Ａによるアクティブポーリング、転送仮想マシン２０８Ｘによって実施されるコールバック等を通して新しいホスト２０２Ｂのホスト識別子を特定し得る。幾つかの実施形態では、新しいホスト２０２Ｂの仮想マシンキャッシュ２１３は、上述したように、ホスト２０２Ａからプッシュされたキャッシュデータを受信することに応答して、仮想マシン２０８Ｘがホスト２０２Ａに転送されたことを識別し得る。キャッシュ転送モジュール９２９Ａは、エフェメラルキャッシュデータ等の高優先度キャッシュデータを選択的にプッシュするように構成し得、それにより、データ損失が回避される。
【０１４９】
図１０は、ホスト２０２間で仮想マシン２０８のキャッシュデータを転送し、且つ／又は移行する方法１０００の一実施形態の流れ図である。方法１０００は、上述したように開始し、初期化し得る。
【０１５０】
ステップ１０１０は、仮想マシン２０８Ｘが前のホスト２０２Ａから新しいホスト２０２Ｂに移行することに応答して、キャッシュプロビジョナモジュール２１４Ｂがホスト２０８Ｂ上の仮想マシン２０８Ｘにキャッシュストレージを割り振ることを含み得る。新しいホスト２０２Ｂ及び前のホスト２０２Ａは通信可能に結合し得る（例えば、ネットワーク１０５を介して）。上述したように、キャッシュプロビジョナモジュール２１４Ｂは、仮想マシン２０８ＸのＣＭＳ２２０からＩ／Ｏ要求１１６（又は他のクエリ）を受信すること、前のホスト２０２Ａのキャッシュ転送モジュール９２９Ａから仮想マシン２０８Ｘのキャッシュデータを受信すること等に応答して、転送仮想マシン２０８Ｘを識別し得る。ステップ１０１０は、転送仮想マシン２０８Ｘを初期電源投入及び／又は再開状況から区別することを更に含み得る（例えば、仮想マシンのＶＭＩＤ、ホスト識別子等に基づいて）。キャッシュは、上述したように、仮想ディスクドライバ２１５を介して仮想ディスク２２９内で仮想マシン２０８Ｘに動的に割り振り得る。
【０１５１】
ステップ１０２０は、新しいホスト２０２Ｂのキャッシュ転送モジュール９２９Ｂが、転送仮想マシン２０８Ｘの前のホスト２０２Ａを特定することを含み得る。ステップ１０２０は、上述したように、仮想マシン２０８ＸのＶＭＩＤ内のホスト識別子にアクセスし、転送仮想マシン２０８Ｘにクエリし、前のホスト２０２Ｂからプッシュされたキャッシュデータを受信することなどを含み得る。
【０１５２】
ステップ１０３０は、上述したように、仮想マシン２０８Ｘに割り振られたキャッシュストレージの少なくとも一部に、リモートホスト２０２Ａで保持されたキャッシュデータを移入することを含み得る。キャッシュデータは、前のホスト２０２でしか利用可能ではない、エフェメラルキャッシュ構成で記憶されたキャッシュデータに対応し得る。ステップ１０３０は、キャッシュデータを要求し、新しいホスト２０２Ｂがキャッシュデータにアクセスする許可を有することを検証し、プッシュ動作でキャッシュデータを受信すること等を含み得る。キャッシュデータは、上述したように、キャッシュ転送モジュール９２９Ａ及び／又は９２９Ｂのキャッシュ転送ポリシーに従って要求され、転送され、且つ／又はプッシュし得る。幾つかの実施形態では、ステップ１０３０は、プライマリストレージ２１２（又は別のソース）からアクセスされたデータを、割り振られたキャッシュストレージに移入することを更に含む。ステップ１０３０は、上述したように、新しいホスト２０２Ｂのキャッシュに移入することに応答して、仮想マシン２０８Ｘの保持キャッシュデータをもはや保持する必要がないことをリモートホスト２０２Ａに通知することを更に含み得る。
【０１５３】
図１１は、仮想マシン２０８Ａ〜Ｎのキャッシュデータを転送する方法１１００の一実施形態の流れ図である。方法１１００は、上述したように開始し、初期化し得る。
【０１５４】
ステップ１１１０は、ホスト２０２Ａからの仮想マシン２０８Ｘの転送及び／又は移行に応答して、仮想マシン２０８Ｘのキャッシュデータをキャッシュ２１６（キャッシュストレージ装置）に保持することを含み得る。キャッシュデータは、上述したように、保持ポリシーに従ってキャッシュ保持モジュール９２８Ａによって保持し得る。幾つかの実施形態では、ステップ１１１０は、プライマリストレージシステム２４２で利用可能ではないことがある（例えば、前のホスト２０２Ａの仮想マシンキャッシュ２１３Ａ内でしか利用可能ではないことがある）エフェメラルキャッシュデータの保持を優先することを含み得る。
【０１５５】
ステップ１１２０は、キャッシュデータの要求に応答して、保持キャッシュデータのキャッシュアドレスを特定することを含み得る。キャッシュアドレスは、少なくとも部分的に、転送仮想マシンのＶＭＩＤに基づき得る。データのキャッシュアドレスは、キャッシュリソース（例えば、キャッシュチャンク３０２）を、リソースが割り振られた仮想マシン２０８Ａ〜Ｎに関連付けるように構成されるマップモジュール５１４によって特定し得る。
【０１５６】
ステップ１１３０は、上述したように、保持キャッシュデータを提供することを含み得る。ステップ１１３０は、仮想マシン２０８Ｘの新しいホスト２０２Ｂのキャッシュ転送モジュール９２９Ｂからのキャッシュデータ要求に応答して、キャッシュデータをキャッシュ転送モジュール９２９Ｂにプッシュすること等を含み得る。
【０１５７】
図１２は、仮想マシンのキャッシュデータを転送する別の実施形態の流れ図である。ステップ１２１０は、仮想マシン２０８Ｘを新しいホスト２０２Ｂに転送することに応答して、キャッシュタグ２２１を保持することを含み得る。幾つかの実施形態では、ステップ１２１０は、キャッシュデータの部分の持続性レベルを変更することを含み得る。例えば、仮想マシン２０８ＸのＣＭＳ２２０は、エフェメラルキャッシュデータをプライマリストレージシステム２４２にフラッシュするように構成し得、それにより、キャッシュデータが仮想マシン２０８Ｘの現在のホスト２０２Ａの仮想マシンキャッシュ２１３Ａから除去された場合であっても、キャッシュデータは新しいホスト２０８Ｂでアクセス可能である。
【０１５８】
ステップ１２２０は、Ｉ／Ｏ動作をフィルタリングし、保持キャッシュタグ２２１に従って、選択されたＩ／Ｏ要求１１６をＣＭＳ２２０に向けることを含み得る。ステップ１２２０は、仮想マシン２０８Ｘの新しいホスト２０２Ｂにまだ転送されておらず、且つ／又は仮想マシン２０８Ｘに割り振られていない１つ又は複数のキャッシュタグ２２１のデータを要求することを含み得る。上述したように、そのような要求に応答して、新しいホスト２０２Ｂの仮想マシンキャッシュ２１３Ｂは、仮想マシン２０８Ｘを転送仮想マシンとして識別し（例えば、初期ブートアップ又は電源投入とは対照的に）、仮想マシン２０８Ｘにキャッシュストレージを割り振り、仮想マシン２０８Ｘの前のホスト２０２Ａを特定し、且つ／又はキャッシュデータを前のホスト２０２Ａから転送し得る（キャッシュ転送モジュール９２９Ｂを介して）。
【０１５９】
ステップ１２３０は、上述したように、保持キャッシュタグのデータを要求することを含み得る。アクセスを要求することは、前のホスト２０２Ａから新しいホスト２０２Ｂの仮想マシンキャッシュ２１３Ｂへのキャッシュデータのオンデマンド転送を実行することを含み得る。
【０１６０】
特性、利点、又は同様の言葉への本明細書全体を通しての参照は、実現し得る全ての特性及び利点が任意の単一の実施形態に含まれることを暗示するものではない。むしろ、特性及び利点を指す言葉は、実施形態に関連して説明される特定の特性、利点、又は特徴が少なくとも１つの実施形態に含まれることを意味するものとして理解される。したがって、本明細書全体を通しての特性、利点、及び同様の言葉の考察は、同じ実施形態を参照し得るが、そうである必要はない。
【０１６１】
さらに、本明細書に記載される特性、利点、及び特徴は、任意の適する様式で１つ又は複数の実施形態で組み合わせ得る。特定の実施形態の特定の特性又は利点のうちの１つ又は複数なしで、開示される実施形態を実施し得ることを当業者は認識するだろう。全ての実施形態に存在するわけではない追加の特性及び利点を、特定の実施形態において認識し得る。開示される実施形態のこれらの特性及び利点は、以下の説明及び添付の特許請求の範囲からより十分に明らかになるか、又は以下に記載される実施形態の実施によって学習し得る。
【０１６２】
本明細書に記載される機能ユニットの多くは、実施独立性をより具体的に強調するために、モジュールと記されてきた。例えば、モジュールは、カスタムＶＬＳＩ回路又はゲートアレイ、論理チップ、トランジスタ等の市販の半導体、又は他の離散した構成要素を含むハードウェア回路として実施し得る。モジュールは、フィールドプログラマブルゲートアレイ、プログラマブルアレイ論理デバイス、プログラマブル論理デバイス等のプログラマブルハードウェアデバイスで実施することも可能である。
【０１６３】
モジュールは、様々なタイプのプロセッサによって実行されるソフトウェアで実施することも可能である。実行可能コードの識別されるモジュールは、例えば、オブジェクト、プロシージャ、又は関数として編成し得る、例えば、コンピュータ命令の１つ又は複数の物理又は論理ブロックであり得る。それにもかかわらず、識別されるモジュールの実行可能ファイルは、一緒に物理的に配置される必要はなく、論理的に一緒に結合されると、モジュールを構成し、モジュールの述べられた目的を達成する、異なるロケーションに記憶される別個の命令を含み得る。
【０１６４】
実際には、実行可能コードのモジュールは、単一の命令であってもよく、又は多くの命令であってもよく、さらには幾つかの異なるコードセグメント、異なるプログラム間、及び幾つかのメモリ装置にわたって分散してもよい。同様に、動作データは、本明細書ではモジュール内で識別され示され得、任意の適する形態で実施し、任意の適するタイプのデータ構造内で編成し得る。動作データは、単一のデータセットとして収集し得るか、又は異なるストレージ装置を含む異なるロケーションに分散し得、少なくとも部分的に、システム又はネットワーク上の単なる電子信号として存在し得る。モジュール又はモジュールの部分がソフトウェアで実施される場合、ソフトウェア部分は１つ又は複数のコンピュータ可読媒体に記憶される。
【０１６５】
本明細書全体を通しての「一実施形態」、「実施形態」、又は同様の用語への参照は、実施形態に関連して説明される特定の特性、構造、又は特徴が少なくとも１つの実施形態に含まれることを意味する。したがって、本明細書全体を通しての「一実施形態において」、「実施形態において」という語句及び同様の用語の出現は全て、同じ実施形態を指し得るが、必ずしもそうである必要はない。
【０１６６】
コンピュータ可読媒体への参照は、デジタル処理装置にマシン可読命令を記憶することが可能な任意の形態をとり得る。コンピュータ可読媒体は、コンパクトディスク、デジタルビデオディスク、磁気テープ、ベルヌーイドライブ、磁気ディスク、パンチカード、フラッシュメモリ、集積回路、又は他のデジタル処理装置メモリ装置によって実施し得る。
【０１６７】
さらに、本明細書に開示される特性、構造、又は特徴は、任意の適する様式で１つ又は複数の実施形態で実施し得る。以下の説明では、開示される実施形態の完全な理解を提供するために、プログラミング、ソフトウェアモジュール、ユーザ選択、ネットワークトランザクション、データベースクエリ、データベース構造、ハードウェアモジュール、ハードウェア回路、及びハードウェアチップの例等の多くの具体的な詳細が提供される。しかし、具体的な詳細のうちの１つ又は複数なしで、又は他の方法、構成要素、材料等を用いて本開示の教示を実施し得ることを当業者は認識するだろう。他の場合、開示される実施形態の態様を曖昧にしないように、周知の構造、材料、又は動作については詳細に示さず、又は説明していない。
【０１６８】
本明細書に含まれる概略フローチャート図は一般に、論理フローチャート図として記載されている。したがって、示される順序及び記されるステップは、提示される方法の一実施形態を示す。示される方法の１つ又は複数のステップ又はその部分と機能的、論理的、又は効果的に均等である他のステップ及び方法を考えることも可能である。さらに、利用されるフォーマット及びシンボルは、方法の論理ステップを説明するために提供されており、方法の範囲を限定するものとして理解されない。様々な矢印タイプ及び線種が、フローチャート図に利用され得るが、これらは対応する方法の範囲を限定しないものとして理解される。実際に、方法の論理フローのみを示すために、幾つかの矢印又は他のコネクタを使用し得る。例えば、矢印は、示される方法の列挙されるステップ間の指定されていない持続時間の待機又は監視期間を示し得る。さらに、特定の方法が実施される順は、示される対応するステップの順に厳密に従ってもよく、又は従わなくてもよい。
【図１Ａ】
2018125025.tif 000003
【図１Ｂ】
2018125025.tif 000004
【図１Ｃ】
2018125025.tif 000005
【図２Ａ】
2018125025.tif 000006
【図２Ｂ】
2018125025.tif 000007
【図３】
2018125025.tif 000008
【図４】
2018125025.tif 000009
【図５】
2018125025.tif 000010
【図６】
2018125025.tif 000011
【図７Ａ】
2018125025.tif 000012
【図７Ｂ】
2018125025.tif 000013
【図７Ｃ】
2018125025.tif 000014
【図８Ａ】
2018125025.tif 000015
【図８Ｂ】
2018125025.tif 000016
【図９】
2018125025.tif 000017
【図１０】
2018125025.tif 000018
【図１１】
2018125025.tif 000019
【図１２】
2018125025.tif 000020
【手続補正書】
【提出日】平成30年4月20日(2018.4.20)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のストレージデバイスを備えるストレージシステムの使用によって、応える入／出力（Ｉ／Ｏ）要求に対する持続性レベルを選択する工程と、
選択された前記持続性レベルに従って前記ストレージシステムで前記Ｉ／Ｏ要求に応える工程と、を備え、
前記ストレージデバイスは、持続性ストレージデバイスと、前記持続性ストレージデバイスとは別個の指定されたストレージデバイスと、を備え、
前記持続性レベルは、前記ストレージシステム内の限定されたストレージ期間に対応する第１の持続性レベルを備える複数の持続性レベルから選択され、
前記第１の持続性レベルに従って、前記持続性ストレージデバイスに関連付けられる特定のファイルに関連する特定のＩ／Ｏ要求に応える工程は、
どの持続性ストレージデバイスにもアクセスすることなく、前記指定されたストレージデバイスに前記特定のファイルのデータを書き込む工程と、
前記特定のファイルの前記データが前記指定されたストレージデバイスに書き込まれると共に、前記ストレージシステムのどの前記持続性ストレージデバイスにもアクセスすることなく前記ストレージシステムから退去させられるように、前記特定のファイルの前記データを前記ストレージシステムのどの持続性ストレージデバイスにも書き込むことなく、前記特定のファイルの前記データを前記指定されたストレージデバイスから退去させる工程と、を備える、方法。
【請求項２】
前記複数の持続性レベルのうちの第２の持続性レベルは、１つ以上の前記持続性ストレージデバイスに対応し、
前記第２の持続性レベルに従って前記ストレージシステムに指定されたデータを書き込むためのＩ／Ｏ要求に応える工程は、前記１つ以上の持続性ストレージデバイスに前記指定されたデータを書き込む工程を備える、請求項１に記載の方法。
【請求項３】
前記第２の持続性レベルは、前記１つ以上の持続性ストレージデバイスの構成を指定し、
前記第２の持続性レベルに従って前記Ｉ／Ｏ要求に応える工程は、指定された前記構成内で前記指定されたデータを記憶するように、前記１つ以上の持続性ストレージデバイスを構成する工程を備える、請求項２に記載の方法。
【請求項４】
前記第２の持続性レベルは、前記１つ以上の持続性ストレージデバイスのストレージモードを指定し、
前記第２の持続性レベルに従って前記Ｉ／Ｏ要求に応える工程は、指定された前記ストレージモード内で前記指定されたデータを記憶するように、前記１つ以上の持続性ストレージデバイスを構成する工程を備える、請求項２に記載の方法。
【請求項５】
前記第２の持続性レベルは、２つ以上の前記持続性ストレージデバイス上でＩ／Ｏ要求データの冗長ストレージを指定し、
前記第２の持続性レベルに従って前記Ｉ／Ｏ要求に応える工程は、前記２つ以上の持続性ストレージデバイス上で、冗長的に前記指定されたデータを記憶する工程を備える、請求項２に記載の方法。
【請求項６】
第１のＩ／Ｏ要求に関連付けられるファイル識別子及び前記第１のＩ／Ｏ要求に関連付けられるアプリケーションのうち１つ以上に基づいて、前記第１のＩ／Ｏ要求に対する前記第１の持続性レベルを選択する工程をさらに備える、請求項１〜５のいずれか一項に記載の方法。
【請求項７】
前記特定のファイルの前記データは、前記特定のファイルに関連付けられるクライアントのリブート、再開及びシャットダウンのうち１つ以上に応答して、前記指定されたストレージデバイスから退去させられる、請求項１〜６のいずれか一項に記載の方法。
【請求項８】
前記Ｉ／Ｏ要求を識別するために、ストレージスタック内のＩ／Ｏ要求を監視する工程をさらに備える、請求項１〜７のいずれか一項に記載の方法。
【請求項９】
動作を実行可能なコンピュータ使用可能プログラムコードを記憶する非一時的なコンピュータ可読記憶媒体であって、
前記動作は、
複数のストレージリソースを備えるストレージシステムの使用によって、実施するストレージ要求を受信する工程と、
前記ストレージ要求の１つ以上の特徴に基づいて前記ストレージ要求に各持続性レベルを割り当てる工程と、
前記ストレージシステムの選択されたストレージリソース上で前記ストレージ要求を実施する工程と、を備え、
前記ストレージリソースは、持続性ストレージリソースと、前記持続性ストレージリソースとは別個の一時ストレージリソースとを備え、
各持続性レベルは、前記ストレージシステムの１つ以上の前記ストレージリソースに対応し、
前記持続性レベルは、前記ストレージシステム内の限定されたストレージ期間に対応する第１の持続性レベルを備え、
前記ストレージリソースは、前記ストレージ要求に割り当てられる前記持続性レベルに基づいて選択され、
前記持続性ストレージリソースに関連付けられる特定のデータセットに関連すると共に、前記第１の持続性レベルを割り当てられた特定のストレージ要求を実施する工程は、
複数の前記持続性ストレージリソースとは別個の前記一時ストレージリソースに前記特定のデータセットのデータを書き込む工程と、
前記特定のデータセットの前記データが、前記一時ストレージリソースに書き込まれると共に、前記ストレージシステムの前記持続性ストレージリソースにアクセスすることなく前記ストレージシステムから退去させられるように、前記ストレージシステムの前記持続性ストレージリソースに前記特定のデータセットの前記データを書き込むことなく、前記一時ストレージリソースから前記特定のデータセットの前記のデータを退去させる工程と、を備える、非一時的なコンピュータ可読記憶媒体。
【請求項１０】
前記持続性レベルのうちの第２の持続性レベルは、ライトスルーキャッシングモードを指定し、
前記第２の持続性レベルを割り当てられた書き込み要求に応答して、前記ストレージシステム内にデータユニットを記憶する工程は、前記一時ストレージリソース及び１つ以上の前記持続性ストレージリソースに前記データユニットを書き込む工程を備える、請求項９に記載の非一時的なコンピュータ可読記憶媒体。
【請求項１１】
前記動作は、クライアントのリブート、再開及びシャットダウンのうち１つ以上の後、前記特定のデータセットの前記データが前記ストレージシステム内に保持される必要がないという判断に応答して、前記特定のデータセットに関連する前記ストレージ要求に前記第１の持続性レベルを割り当てる工程をさらに備える、請求項９又は１０に記載の非一時的なコンピュータ可読記憶媒体。
【請求項１２】
前記一時ストレージリソースに前記特定のデータセットの前記データを書き込む工程は、前記一時ストレージリソース上のキャッシュ内に前記特定のデータセットの前記データを許容する工程を備え、
前記ストレージシステムから前記特定のデータセットの前記データを退去させる工程は、前記ストレージシステムのどの前記持続性ストレージリソースにも前記特定のデータセットの前記データを書き込むことなく、前記キャッシュから前記データを退去させる工程を備える、請求項９〜１１のいずれか一項に記載の非一時的なコンピュータ可読記憶媒体。
【請求項１３】
前記持続性レベルのうちの第２の持続性レベルは、ライトバックキャッシュモード及びライトスルーキャッシュモードの１つ以上で前記一時ストレージリソース上のデータをキャッシュする工程を備え、
前記ストレージシステム内のデータユニットを記憶する書き込み要求を実施する工程は、
前記一時ストレージリソース上の前記データユニットをキャッシュする工程と、
前記データユニットのキャッシュ退去前に、１つ以上の前記持続性ストレージリソースに前記データユニットを書き込む工程と、を備え、
前記書き込み要求は、前記第２の持続性レベルを割り当てられる、請求項９に記載の非一時的なコンピュータ可読記憶媒体。
【請求項１４】
前記動作は、前記一時ストレージリソース上にデータユニットを記憶することに応答して、前記ストレージシステムのどの前記持続性ストレージリソース上にも前記データユニットを記憶することなく、前記特定のデータセットに前記データユニットを書き込むストレージ要求の完了を確認する工程をさらに備える、請求項９〜１３のいずれか一項に記載の非一時的なコンピュータ可読記憶媒体。
【請求項１５】
前記第１の持続性レベルは、第１の誤り修正コード符号化を指定し、前記持続性レベルのうちの第２の持続性レベルは、異なる第２の誤り修正コード符号化を指定する、請求項９〜１４のいずれか一項に記載の非一時的なコンピュータ可読記憶媒体。
【請求項１６】
前記特徴は、前記ストレージ要求のソース識別子、前記ストレージ要求のファイル識別子、前記ストレージ要求に関連付けられたアプリケーション、及び前記ストレージ要求のパラメータのうちの１つ以上を備える、請求項９〜１５のいずれか一項に記載の非一時的なコンピュータ可読記憶媒体。
【請求項１７】
ストレージ要求を受信するように構成される要求受信器と、
ストレージコントローラと、を備え、
前記ストレージコントローラは、
ストレージシステムの複数のストレージリソースとインターフェースし、
前記ストレージ要求の特徴に基づいて、前記ストレージ要求に持続性レベルを割り当て、
前記ストレージ要求に応答すると共に、前記ストレージ要求に割り当てられる前記持続性レベルに従って、前記ストレージシステム内にデータを記憶するように構成され、
前記ストレージシステムの前記ストレージリソースは、持続性ストレージデバイスと、別個のストレージデバイスと、を備え、
前記持続性レベルは、前記ストレージシステム内の一時ストレージのデータに関連するストレージ要求に割り当てる第１の持続性レベルを備え、
前記第１の持続性レベルを割り当てられると共に、前記持続性ストレージデバイスに関連付けられる指定されたデータに関連する特定のストレージ要求に応答して、前記ストレージシステム内にデータを記憶する構成は、
前記ストレージシステムの前記持続性ストレージデバイスにアクセスすることなく、前記別個のストレージデバイス上に前記指定されたデータを記憶することと、
前記指定されたデータが、前記別個のストレージデバイス上に記憶されると共に、前記ストレージシステムの前記持続性ストレージデバイスにアクセスすることなく前記ストレージシステムから退去させられるように、前記ストレージシステムの前記持続性ストレージデバイスに前記指定されたデータを書き込むことなく、前記別個のストレージデバイスから前記指定されたデータを退去させることと、を備える、装置。
【請求項１８】
前記特徴は、ファイル識別子、ファイルパス、前記ストレージ要求に関連付けられたアプリケーション、前記ストレージ要求のパラメータ、及び、入／出力（Ｉ／Ｏ）制御パラメータのうちの１つ以上を備える、請求項１７に記載の装置。
【請求項１９】
前記ストレージコントローラはさらに、ライトネバーキャッシュモードで前記指定されたデータをキャッシュするように構成される、請求項１７又は１８に記載の装置。
【請求項２０】
前記持続性レベルのうちの第２の持続性レベルは、第１の安価ディスク冗長アレイ（ＲＡＩＤ）構成でデータを記憶することを備え、
前記持続性レベルのうちの第３の持続性レベルは、異なる第２のＲＡＩＤ構成でデータを記憶することを備える、請求項１７〜１９のいずれか一項に記載の装置。
【請求項２１】
プライマリストレージデバイスに関連付けられるファイルに関連する入／出力（Ｉ／Ｏ）要求を識別する工程と、
複数のキャッシュモードの中から識別された前記Ｉ／Ｏ要求に対してエフェメラルキャッシュモードを選択する工程と、
前記エフェメラルキャッシュモードで前記ファイルのデータをキャッシュすることによって前記識別されたＩ／Ｏ要求に応える工程と、を備え、
前記エフェメラルキャッシュモードは、前記プライマリストレージデバイスにアクセスすることなく、前記プライマリストレージデバイスとは別個の不揮発性キャッシュストレージ内にデータをキャッシュする工程を備え、
前記エフェメラルキャッシュモードで前記ファイルの前記データをキャッシュする工程は、前記プライマリストレージデバイスにアクセスすることなく、前記不揮発性キャッシュストレージ内に前記ファイルの前記データを許容すると共に、前記不揮発性キャッシュストレージから前記ファイルの前記データを退去させることを備える、方法。
【請求項２２】
前記不揮発性キャッシュストレージ内の書き込み要求に対応するデータをキャッシュすることに応答して、前記識別されたＩ／Ｏ要求の前記書き込み要求の完了を確認する工程をさらに備える、請求項２１に記載の方法。
【請求項２３】
前記識別されたＩ／Ｏ要求のうちの１つ以上のファイル識別子を前記エフェメラルキャッシュモードに関連するＩ／Ｏ要求の特徴に一致させることに応答して、前記複数のキャッシュモードから前記エフェメラルキャッシュモードを選択することをさらに備える、請求項２１又は２２に記載の方法。
【請求項２４】
前記識別されたＩ／Ｏ要求のうちの１つ以上のソース識別子、前記識別されたＩ／Ｏ要求のうちの１つ以上のファイル識別子、及び前記識別されたＩ／Ｏ要求のうちの１つ以上に関連付けられたアプリケーションのうちの１つ以上に基づいて、前記複数のキャッシュモードから前記エフェメラルキャッシュモードを選択することをさらに備える、請求項２１又は２２に記載の方法。
【請求項２５】
前記識別されたＩ／Ｏ要求は、第１の仮想マシンホスト上で動作する複数の仮想マシンのうちの１つの仮想マシンに対応し、
前記方法は、
前記仮想マシンのリブート、再開及びシャットダウンのうちの１つ以上に応答して、前記不揮発性キャッシュストレージから前記ファイルの前記データを退去させる工程と、
前記仮想マシンが前記第１の仮想マシンホストから第２の仮想マシンホストに移行しているという判定に応答して、前記ファイルの前記データを前記不揮発性キャッシュストレージから前記プライマリストレージデバイスに転送する工程と、をさらに備える、請求項２１〜２４のいずれか一項に記載の方法。
【請求項２６】
前記識別されたＩ／Ｏ要求は、第１のホストデバイス上で動作する仮想マシンによって発行され、
前記方法は、前記仮想マシンが第２のホストデバイスへ転送されているという判定に応答して、前記第１のホストデバイスで前記不揮発性キャッシュストレージ内に許容された前記ファイルの前記データを保持する工程をさらに備える、請求項２１〜２４のいずれか一項に記載の方法。
【請求項２７】
前記第２のホストデバイスのキャッシュストレージに、前記第１のホストデバイスに保持された前記ファイルの前記データの少なくとも一部を移入する工程をさらに備える、請求項２６に記載の方法。
【請求項２８】
動作を実行可能なコンピュータ使用可能プログラムコードを記憶する非一時的なコンピュータ可読記憶媒体であって、
前記動作は、
不必要なファイルであると判断されるプライマリストレージのファイルに関連するストレージ要求を識別するために、前記プライマリストレージに向けられるストレージ要求を監視する工程と、
識別されたストレージ要求に応答して、前記プライマリストレージとは別個の不揮発性キャッシュストレージ内で、独占的に、前記不必要なファイルのデータをキャッシュする工程と、
前記プライマリストレージにアクセスすることなく、前記不揮発性キャッシュストレージ内で指定されたデータをキャッシュすることに応答して、前記不必要なファイルへ前記指定されたデータを書き込む要求の完了を確認する工程と、
前記プライマリストレージにアクセスすることなく、前記不揮発性キャッシュストレージの使用によって、前記指定されたデータに関連する１つ以上のストレージ要求に応える工程と、
前記指定されたデータが、前記プライマリストレージに書き込まれることなく、前記不揮発性キャッシュストレージから退去させられるように、前記プライマリストレージにアクセスすることなく、前記不揮発性キャッシュストレージから前記指定されたデータを取り除く工程と、を備え、
前記不必要なファイルの前記データをキャッシュする工程は、前記不揮発性キャッシュストレージへ前記不必要なファイルの前記データを書き込む工程と、前記プライマリストレージにアクセスすることなく、前記不揮発性キャッシュストレージから前記不必要なファイルの前記データを取り除く工程と、を備える、非一時的なコンピュータ可読記憶媒体。
【請求項２９】
前記指定されたデータをキャッシュする工程は、前記プライマリストレージに関与しない１つ以上のストレージ動作を実行する工程を含む、請求項２８に記載の非一時的なコンピュータ可読記憶媒体。
【請求項３０】
前記ストレージ要求はストレージスタック内で監視され、
前記指定されたデータを前記不揮発性キャッシュストレージ内でキャッシュする工程は、前記ストレージスタック外で１つ以上のストレージ動作を実行する工程を備える、請求項２８又は２９に記載の非一時的なコンピュータ可読記憶媒体。
【請求項３１】
前記動作は、前記プライマリストレージの前記ファイルに関連付けられるクライアントのリブート、再開、及びシャットダウンのうち１つ以上の後に、前記ファイルに書き込まれるデータが保持される必要がないと判断されることに応答して、前記プライマリストレージの前記ファイルが不必要なファイルであると判断する工程をさらに備える、請求項２８〜３０のいずれか一項に記載の非一時的なコンピュータ可読記憶媒体。
【請求項３２】
前記識別されたストレージ要求は、ローカル仮想マシンホスト上で動作する仮想マシンによって生成され、
前記動作は、前記仮想マシンによって生成される前記識別されたストレージ要求に応答して、前記不揮発性キャッシュストレージ内で独占的にキャッシュされる前記不必要なファイルのデータを、前記仮想マシンが遠隔仮想マシンホストへ移行することに応答して、前記遠隔仮想マシンホストにプッシュする工程をさらに備える、請求項２８〜３１のいずれか一項に記載の非一時的なコンピュータ可読記憶媒体。
【請求項３３】
前記識別されたストレージ要求は、第１のホストコンピューティングデバイス上で動作する仮想マシンに対応し、
前記仮想マシンは、第２のホストコンピューティングデバイスへ移行させられ、
前記動作は、前記第１のホストコンピューティングデバイスの前記不揮発性キャッシュストレージ内で独占的にキャッシュされる前記不必要なファイルのデータを、前記第２のホストコンピューティングデバイスへ転送する工程をさらに備える、請求項２８〜３２のいずれか一項に記載の非一時的なコンピュータ可読記憶媒体。
【請求項３４】
前記動作は、前記仮想マシンを前記第２のホストコンピューティングデバイスへ移行することに応答して、前記第１のホストコンピューティングデバイスの前記不揮発性キャッシュストレージ内で独占的にキャッシュされる前記不必要なファイルのデータに関連付けられるキャッシュタグを保持する工程をさらに備える、請求項３３に記載の非一時的なコンピュータ可読記憶媒体。
【請求項３５】
前記識別されたストレージ要求は、仮想マシンに対応し、
前記動作は、前記仮想マシンのリブート、再開、及びシャットダウンのうち１つ以上に応答して、前記不揮発性キャッシュストレージから前記不必要なファイルのデータを取り除く工程をさらに備える、請求項２８〜３４のいずれか一項に記載の非一時的なコンピュータ可読記憶媒体。
【請求項３６】
クライアントに関連する入／出力（Ｉ／Ｏ）要求をインターセプトするように構成されるエージェントと、
複数のキャッシュモードからインターセプトされた前記Ｉ／Ｏ要求にキャッシュモードを割り当てるように構成されるストレージコントローラと、
割り当てられた前記キャッシュモードに従って前記インターセプトされたＩ／Ｏ要求に応えるように構成されるキャッシュ管理システムと、を備え、
前記複数のキャッシュモードはエフェメラルキャッシュモードを備え、
前記ストレージコントローラは、前記クライアントのリブート、再開及びシャットダウンのうちの１つ以上に続いて保存する必要がないデータに対応すると判定されるプライマリストレージシステムのファイルに関連する前記インターセプトされたＩ／Ｏ要求に、前記エフェメラルキャッシュモードを割り当てるように構成され、
前記エフェメラルキャッシュモードを割り当てられた前記インターセプトされたＩ／Ｏ要求に応えることは、前記プライマリストレージシステムとは別個の不揮発性キャッシュストレージ内に前記プライマリストレージシステムにアクセスすることなく、
前記エフェメラルキャッシュモードを割り当てられた前記インターセプトされたＩ／Ｏ要求の書き込み要求に応答して、前記プライマリストレージシステムにアクセスすることなく前記不揮発性キャッシュストレージに前記ファイルのデータを書き込むことによって、及び、
前記ファイルの前記データが前記不揮発性キャッシュストレージに書き込まれ、続いて前記プライマリストレージシステムにアクセスすることなく前記不揮発性キャッシュストレージから除去されるように、前記クライアントのリブート、再開及びシャットダウンのうちの１つ以上に応答して、前記プライマリストレージシステムにアクセスすることなく前記不揮発性キャッシュストレージから前記ファイルの前記データを除去することによって、前記ファイルのデータをキャッシュすることを備え、
前記エージェント、前記ストレージコントローラ及び前記キャッシュ管理システムは、非一時的なコンピュータ可読記憶媒体に記憶される回路及び命令のうちの１つ以上を備える、装置。
【請求項３７】
前記ストレージコントローラは、前記インターセプトされたＩ／Ｏ要求のソース識別子、前記インターセプトされたＩ／Ｏ要求のファイル識別子、及び前記インターセプトされたＩ／Ｏ要求に関連付けられるアプリケーションのうちの１つ以上に基づいて、前記インターセプトされたＩ／Ｏ要求にキャッシュモードを割り当てるように構成される、請求項３６に記載の装置。
【請求項３８】
前記インターセプトされたＩ／Ｏ要求の第１の書き込み要求は、前記エフェメラルキャッシュモードを割り当てられていると共に、前記インターセプトされたＩ／Ｏ要求の第２の書き込み要求は、ライトスルーキャッシュモードを割り当てられており、
前記キャッシュ管理システムは、前記不揮発性キャッシュストレージへの前記第１の書き込み要求に関連付けられるデータの書き込みに応答して、前記第１の書き込み要求の完了を確認するとともに、前記プライマリストレージシステムへの前記第２の書き込み要求に関連付けられるデータの書き込みに応答して、前記第２の書き込み要求の完了を確認するように構成される、請求項３６又は３７に記載の装置。
【請求項３９】
前記キャッシュ管理システムは、仮想マシンが第２の仮想マシンホストに転送するという判定に応答して、第１の仮想マシンホストで前記エフェメラルキャッシュモードを割り当てられた前記インターセプトされたＩ／Ｏ要求に応答して、前記不揮発性キャッシュストレージに書き込まれる前記仮想マシンのデータを保持するように構成され、
前記キャッシュ管理システムはさらに、前記仮想マシンの保持された前記データを前記第２の仮想マシンホストに転送するように構成される、請求項３６〜３８のいずれか一項に記載の装置。
【請求項４０】
前記第２の仮想マシンホストは、前記第２の仮想マシンホストの前記不揮発性キャッシュストレージに、前記第１の仮想マシンホストから転送された前記仮想マシンのデータを移入するように構成される、請求項３９に記載の装置。
【請求項４１】
前記キャッシュ管理システムは、
前記エフェメラルキャッシュモードを割り当てられた前記インターセプトされたＩ／Ｏ要求に応答して、前記不揮発性キャッシュストレージに書き込まれた仮想マシンのデータを識別し、
前記仮想マシンが仮想マシンホスト間で移行されているという判定に応答して、前記プライマリストレージシステムに識別された前記データをフラッシュするように構成される、請求項３６〜３８のいずれか一項に記載の装置。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０１６８
【補正方法】変更
【補正の内容】
【０１６８】
本明細書に含まれる概略フローチャート図は一般に、論理フローチャート図として記載されている。したがって、示される順序及び記されるステップは、提示される方法の一実施形態を示す。示される方法の１つ又は複数のステップ又はその部分と機能的、論理的、又は効果的に均等である他のステップ及び方法を考えることも可能である。さらに、利用されるフォーマット及びシンボルは、方法の論理ステップを説明するために提供されており、方法の範囲を限定するものとして理解されない。様々な矢印タイプ及び線種が、フローチャート図に利用され得るが、これらは対応する方法の範囲を限定しないものとして理解される。実際に、方法の論理フローのみを示すために、幾つかの矢印又は他のコネクタを使用し得る。例えば、矢印は、示される方法の列挙されるステップ間の指定されていない持続時間の待機又は監視期間を示し得る。さらに、特定の方法が実施される順は、示される対応するステップの順に厳密に従ってもよく、又は従わなくてもよい。
以下の項目は、本出願時の特許請求の範囲に記載の要素である。
（項目１）
複数のＩ／Ｏ要求を識別することと、
前記Ｉ／Ｏ要求の１つ又は複数の属性に基づいて、前記Ｉ／Ｏ要求の各持続性レベルを選択することと、
前記Ｉ／Ｏ要求に選択された前記持続性レベルに従って１つ又は複数のストレージリソースを使用して前記Ｉ／Ｏ要求に応えることと、
を含む、方法。
（項目２）
各持続性レベルは、前記各持続性レベルを有するＩ／Ｏ要求に応える際に使用される１つ又は複数のストレージリソースに対応する、項目１に記載の方法。
（項目３）
各持続性レベルは、前記各持続性レベルを有するＩ／Ｏ要求に応えるために使用される１つ又は複数のストレージリソースの構成に対応する、項目１に記載の方法。
（項目４）
前記持続性レベルのうちの１つ又は複数は、前記１つ又は複数の持続性レベルのＩ／Ｏ要求に応えるためのストレージモードを指定するように構成される、項目１に記載の方法。
（項目５）
第１のＩ／Ｏ要求の第１の持続性レベルを、前記第１のＩ／Ｏ要求に関連付けられたファイル識別子及び前記第１のＩ／Ｏ要求に関連付けられたアプリケーションのうちの１つ又は複数に基づいて選択することを更に含む、項目１に記載の方法。
（項目６）
前記持続性レベルのうちの１つは、２つ以上のストレージリソースでの冗長ストレージを指定し、前記方法は、前記２つ以上のストレージリソースを使用して前記１つの持続性レベルを有するＩ／Ｏ要求に応えることを更に含む、項目１に記載の方法。
（項目７）
前記持続性レベルの１つはエフェメラルキャッシングモードに対応し、前記方法は、前記１つの持続性レベルを有するＩ／Ｏ要求のデータをプライマリストレージリソースに記憶せずにキャッシュに記憶することを更に含む、項目１に記載の方法。
（項目８）
前記Ｉ／Ｏ要求を識別することは、ストレージスタック内のＩ／Ｏ要求を監視することを含む、項目１に記載の方法。
（項目９）
動作を実行可能なコンピュータ使用可能プログラムコードを記憶するコンピュータ可読記憶媒体を備えるコンピュータプログラム製品であって、前記動作は、
ストレージクライアントから発せられた入／出力（Ｉ／Ｏ）要求を受信することと、
前記Ｉ／Ｏ要求の１つ又は複数の特徴に基づいて、前記Ｉ／Ｏ要求の複数の持続性レベルの１つを決定することであって、前記持続性レベルのそれぞれは、前記Ｉ／Ｏ要求に応えるために使用されるストレージリソース、前記ストレージリソースの構成、及びストレージモードのうちの１つ又は複数を指定することと、
前記選択された持続性レベルに従って前記Ｉ／Ｏ要求に応えることと、
を含む、コンピュータプログラム製品。
（項目１０）
前記持続性レベルのうちの第１の持続性レベルは、エフェメラルキャッシングモードを指定し、前記持続性レベルのうちの第２の持続性レベルは、ライトスルーキャッシングモードを指定する、項目９に記載のコンピュータプログラム製品。
（項目１１）
前記持続性レベルのうちの２つ以上は、前記２つ以上の持続性レベルのそれぞれのＩ／Ｏ要求に応えるために使用されるストレージリソースに関して異なる、項目９に記載のコンピュータプログラム製品。
（項目１２）
前記持続性レベルのうちの２つ以上は、ストレージ構成に関して異なる、項目９に記載のコンピュータプログラム製品。
（項目１３）
前記持続性レベルのうちの２つ以上はキャッシングモードに関して異なる、項目９に記載のコンピュータプログラム製品。
（項目１４）
前記持続性レベルのうちの第１の持続性レベルは、エフェメラルキャッシュモードを指定し、前記動作は、キャッシュリソースへの書き込みＩ／Ｏ要求のデータの書き込みに応答して、前記書き込みＩ／Ｏ要求のデータをプライマリストレージに書き込まずに、前記第１の持続性レベルの書き込みＩ／Ｏ要求の完了を確認することを更に含む、項目９に記載のコンピュータプログラム製品。
（項目１５）
前記持続性レベルのうちの第１の持続性レベルは、第１の誤り修正コード符号化を指定し、前記持続性レベルのうちの第２の持続性レベルは、第２の異なる誤り修正コード符号化を指定する、項目９に記載のコンピュータプログラム製品。
（項目１６）
前記動作は、前記Ｉ／Ｏ要求のソース識別子、前記Ｉ／Ｏ要求のファイル識別子、前記Ｉ／Ｏ要求に関連付けられたアプリケーション、及び前記Ｉ／Ｏ要求のパラメータのうちの１つ又は複数に基づいて、Ｉ／Ｏ要求の持続性レベルを決定することを更に含み、
項目９に記載のコンピュータプログラム製品。
（項目１７）
複数のストレージ要求のそれぞれに、複数の適応持続性レベルのうちの１つを、前記ストレージ要求の特徴に基づいて選ぶように構成される持続性レベルモジュールであって、ストレージ要求に選ばれる前記適応持続性レベルは、前記ストレージ要求に応えるためのストレージリソース、前記ストレージリソースの構成、及びストレージモードのうちの１つ又は複数を決定する、持続性レベルモジュールと、
１つ又は複数のストレージリソースとインタフェースするように構成されるインタフェースモジュールと、
前記インタフェースモジュールの使用によって前記ストレージ要求に割り当てられる前記適応持続性レベルに従って、前記ストレージ要求に応えるように構成されるストレージ要求実行モジュールと、
を備える、装置。
（項目１８）
前記持続性レベルモジュールは、前記ストレージ要求のファイル識別子、前記ストレージ要求に関連付けられたアプリケーション、前記ストレージ要求のパラメータ、入／出力（ＩＯ）制御パラメータのうちの１つ又は複数に基づいて、ストレージ要求の適応持続性レベルを選ぶように構成される、項目１７に記載の装置。
（項目１９）
前記ストレージ要求実行モジュールは、ライトネバーキャッシュモードで、エフェメラル適応持続性レベルを有するストレージ要求のデータをキャッシュするように構成される、項目１７に記載の装置。
（項目２０）
前記適応持続性レベルのうちの第１の適応持続性レベルは、第１のＲＡＩＤ構成でデータを記憶することを含み、前記適応持続性レベルのうちの第２の適応持続性レベルは、第２の異なるＲＡＩＤ構成でデータを記憶することを含む、項目１７に記載の装置。
（項目２１）
バッキングストアに向けられたＩ／Ｏ要求を識別することと、
複数のキャッシュモードから、前記識別されたＩ／Ｏ要求にエフェメラルキャッシュモードを選択することであって、前記エフェメラルキャッシュモードは、前記データを前記バッキングストアに記憶せずに、データをキャッシュに記憶することを含む、選択することと、
前記識別されたＩ／Ｏ要求の前記データを前記エフェメラルキャッシュモードでキャッシュすることと、
を含む、方法。
（項目２２）
前記識別されたＩ／Ｏ要求の前記データを、前記バッキングストアに記憶せずに前記キャッシュに記憶することに応答して、前記識別されたＩ／Ｏ要求の完了を確認することを更に含む、項目２１に記載の方法。
（項目２３）
前記識別されたＩ／Ｏ要求の前記データを再開動作間で保存する必要がないとの判断に応答して、前記エフェメラルキャッシュモードを選択することを更に含む、項目２１に記載の方法。
（項目２４）
前記識別されたＩ／Ｏ要求のソース識別子、前記識別されたＩ／Ｏ要求のファイル識別子、及び前記識別されたＩ／Ｏ要求に関連付けられたアプリケーションのうちの１つ又は複数に基づいて、前記複数のキャッシュモードから前記エフェメラルキャッシュモードを選択することを更に含む、項目２１に記載の方法。
（項目２５）
新しい仮想マシンホストへの移動に応答して、エフェメラルキャッシュデータをフラッシュすることを更に含み、前記エフェメラルキャッシュデータのフラッシュは、前記エフェメラルキャッシュモードでキャッシュされたデータを前記バッキングストアに記憶することを含む、項目２１に記載の方法。
（項目２６）
仮想マシンが第１の仮想マシンホストから第２の仮想マシンホストに移行したことに応答して、前記エフェメラルキャッシュモードでキャッシュされたデータに関するキャッシュメタデータを前記仮想マシン内に保持することを更に含む、項目２１に記載の方法。
（項目２７）
前記第２の仮想マシンホストにおける仮想マシンキャッシュに、前記第１の仮想マシンホストに保持される前記エフェメラルキャッシュモードでキャッシュされたデータを移入することを更に含む、項目２６に記載の方法。
（項目２８）
動作を実行するように実行可能なコンピュータ使用可能なプログラムコードを記憶するコンピュータ可読記憶媒体を備えるコンピュータプログラム製品であって、前記動作は、
プライマリストレージに向けられた入／出力（Ｉ／Ｏ）要求のデータが不必要であると判断することと、
前記Ｉ／Ｏ要求の前記データをキャッシュストレージ内に排他的にキャッシュすることと、
前記Ｉ／Ｏ要求の前記データを前記キャッシュストレージ内にキャッシュすることに応答して、前記Ｉ／Ｏ要求の完了を確認することと、
を含む、コンピュータプログラム製品。
（項目２９）
前記Ｉ／Ｏ要求の前記データをキャッシュすることは、前記プライマリストレージに関与しない１つ又は複数の高速パスＩ／Ｏ動作を実行することを含む、項目２８に記載のコンピュータプログラム製品。
（項目３０）
前記動作は、ストレージスタック内のＩ／Ｏ要求を監視することを更に含み、前記Ｉ／Ｏ要求のデータを前記キャッシュストレージ内にキャッシュすることは、前記ストレージスタック外の１つ又は複数の高速パスＩ／Ｏ動作を実行することを含む、項目２８に記載のコンピュータプログラム製品。
（項目３１）
前記Ｉ／Ｏ要求が不必要データに関すると判断することは、前記Ｉ／Ｏ要求のソース識別子に持続性レベル基準を適用することを含み、前記持続性レベル基準は、ファイルレベル知識及びアプリケーションレベル知識のうちの一方に基づく、項目２８に記載のコンピュータプログラム製品。
（項目３２）
前記Ｉ／Ｏ要求は仮想マシンによって生成され、前記動作は、前記仮想マシンが前記リモート仮想マシンホストに転送されることに応答して、前記キャッシュストレージ内に排他的に記憶された前記仮想マシンのデータをリモート仮想マシンホストにプッシュすることを更に含む、項目２８に記載のコンピュータプログラム製品。
（項目３３）
前記動作は、リモート仮想マシンホストからの要求に応答して、前記キャッシュストレージ内に排他的に記憶されたデータをリモート仮想マシンホストに転送することを更に含む、項目２８に記載のコンピュータプログラム製品。
（項目３４）
前記動作は、前記仮想マシンが異なる仮想マシンホストに移行することに応答して、前記キャッシュストレージ内に排他的に記憶されたデータに関連付けられたキャッシュタグを保持することを更に含む、項目２８に記載のコンピュータプログラム製品。
（項目３５）
前記動作は、前記キャッシュストレージに排他的に記憶されたデータを前記リモート仮想マシンホストの仮想マシンキャッシュに転送することを更に含み、転送することは、前記仮想マシンのキャッシュ管理システムの仮想マシン識別子に基づいて、前記キャッシュストレージに排他的に記憶された前記仮想マシンのデータを識別することを含む、項目３４に記載のコンピュータプログラム製品。
（項目３６）
バッキングストアに向けられたＩ／Ｏ要求をインターセプトするように構成されるエージェントと、
前記インターセプトされたＩ／Ｏ要求の１つ又は複数の特徴に基づいて、前記インターセプトされたＩ／Ｏ要求の複数のキャッシュモードのうちの１つを識別するように構成される持続性レベルモジュールと、
キャッシュ内の前記インターセプトされたＩ／Ｏ要求の前記データを、前記識別されたキャッシュモードに従ってキャッシュするように構成されるキャッシュ管理システムであって、前記複数のキャッシュモードはエフェメラルキャッシュモードを含み、データを前記エフェメラルキャッシュモードでキャッシュすることは、前記データを前記キャッシュのみに、前記データを前記バッキングストアに書き込まずに書き込むことを含む、キャッシュ管理システムと、
を備える、装置。
（項目３７）
前記持続性レベルモジュールは、前記インターセプトされたＩ／Ｏ要求のソース識別子、前記インターセプトされたＩ／Ｏ要求のファイル識別子、及び前記インターセプトされたＩ／Ｏ要求に関連付けられたアプリケーションのうちの１つ又は複数に基づいて、前記インターセプトされたＩ／Ｏ要求の前記キャッシュモードを識別するように構成される、項目３６に記載の装置。
（項目３８）
前記キャッシュ管理システムは、前記対応するＩ／Ｏ要求のデータを前記キャッシュに書き込むことに応答して、前記エフェメラルキャッシュモードでキャッシュされたＩ／Ｏ要求の完了を確認するとともに、前記対応するＩ／Ｏ要求のデータを前記バッキングストアに書き込むことに応答して、ライトスルーキャッシュモードが割り当てられたＩ／Ｏ要求の完了を確認するように構成される、項目３６に記載の装置。
（項目３９）
前記仮想マシンがリモート仮想マシンホストに転送されるとの判断に応答して、第１の仮想マシンホストにおける前記キャッシュ内に前記エフェメラルキャッシュモードで許容される仮想マシンのデータを保持するように構成されるキャッシュ保持モジュールと、
前記エフェメラルキャッシュモードで前記キャッシュ内に許容される前記仮想マシンの前記保持データを前記リモート仮想マシンホストに転送するように構成されるキャッシュ転送モジュールと、
を更に備える、項目３６に記載の装置。
（項目４０）
前記リモート仮想マシンホストでの仮想マシンキャッシュに、前記第１の仮想マシンホストから転送されたデータを移入するように構成されるキャッシュストレージモジュールを更に備える、項目３９に記載の装置。
（項目４１）
キャッシュ管理モジュールは、リモート仮想マシンホストへの前記仮想マシンの転送に応答して、１つ又は複数のプライマリストレージリソースに前記エフェメラルモードでキャッシュされる仮想マシンのデータをフラッシュするように構成される、項目３６に記載の装置。
【外国語明細書】
2018125025000001.pdf
2018125025000002.pdf
2018125025000003.pdf
2018125025000004.pdf