JP2015535355A - 適応持続性システム、方法、インタフェース - Google Patents

適応持続性システム、方法、インタフェース Download PDF

Info

Publication number
JP2015535355A
JP2015535355A JP2015530057A JP2015530057A JP2015535355A JP 2015535355 A JP2015535355 A JP 2015535355A JP 2015530057 A JP2015530057 A JP 2015530057A JP 2015530057 A JP2015530057 A JP 2015530057A JP 2015535355 A JP2015535355 A JP 2015535355A
Authority
JP
Japan
Prior art keywords
cache
request
storage
data
virtual machine
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2015530057A
Other languages
English (en)
Inventor
ジョシー・ヴィクラム
ルアン・ヤン
ブラウン・マイケル・エフ
フリン・デイビッド
ハオ・ブレント・リム・ツィー
ヤン・エレン・ジョー
ラダクリシュナン・パラシャント
Original Assignee
フュージョン−アイオー・インコーポレーテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by フュージョン−アイオー・インコーポレーテッド filed Critical フュージョン−アイオー・インコーポレーテッド
Publication of JP2015535355A publication Critical patent/JP2015535355A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/151Emulated environment, e.g. virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6042Allocation of cache space to multiple users or processors

Abstract

ストレージモジュールは、異なる持続性レベルに従ってI/O要求に応えるように構成し得る。I/O要求の持続性レベルは、I/O要求に応えるために使用されるストレージリソース、ストレージリソースの構成、リソースのストレージモード等に関連し得る。幾つかの実施形態では、持続性レベルは、I/O要求のキャッシュモードに関連し得る。一時データ又は不必要データに関連するI/O要求には、エフェメラルキャッシュモードを使用して応えることができる。エフェメラルキャッシュモードは、I/O要求データを、プライマリストレージにライトスルー(又はバック)せずに、キャッシュストレージに記憶することを含み得る。エフェメラルキャッシュデータは、仮想マシン移行に応答して、ホスト間で転送し得る。【選択図】図1A

Description

本開示は、適応持続性システム及び方法に関し、幾つかの実施形態では、エフェメラルキャッシュモードでキャッシュされたデータを管理するシステム及び方法に関する。
入/出力(I/O)要求は、異なるデータ持続性ニーズを有し得る。例えば、幾つかの書き込み要求は、データ損失又は破損から安全である必要があるデータに関し得る。他の書き込み要求は、長期間にわたって保存する必要がなく、且つ/又は再開及び/又はリブート時に失われることが予期されるデータに関し得る。ストレージシステムは全ての要求を同様に処理し得、これはI/O性能を低減させ得る。
本明細書において、適応持続性方法の実施形態が開示される。開示される方法は、1つ又は複数のマシン実行可能動作及び/又はステップを含み得る。開示される動作及び/又はステップは、コンピュータ可読記憶媒体に記憶されたプログラムコードとして実施し得る。したがって、本明細書に開示される方法の実施形態は、1つ又は複数の方法動作及び/又はステップを実行するように実行可能なコンピュータ使用可能プログラムコードを記憶するコンピュータ可読記憶媒体を含むコンピュータプログラム製品として実施し得る。
幾つかの実施形態では、開示される方法は、複数のI/O要求を識別することと、I/O要求の1つ又は複数の属性に基づいて、I/O要求の各持続性レベルを選択することと、I/O要求に選択された持続性レベルに従って1つ又は複数のストレージリソースを使用してI/O要求に応えることとを含む。I/O要求を識別することは、ストレージスタック内のI/O要求を監視することを含み得る。
持続性のレベルは、各持続性レベルを有するI/O要求に応える際に使用される1つ又は複数のストレージリソース、I/O要求に応えるために使用される1つ又は複数のストレージリソースの構成等に対応し得る。持続性レベルのうちの1つ又は複数は、ストレージモードを指定するように構成し得る。持続性レベルは、2つ以上のストレージリソースでの冗長ストレージを指定し得、本方法は、2つ以上のストレージリソースを使用して、1つの持続性レベルを有するI/O要求に応えることを更に含み得る。
幾つかの実施形態では、本方法は、第1のI/O要求に関連付けられたファイル識別子及び第1のI/O要求に関連付けられたアプリケーションのうちの1つ又は複数に基づいて、第1のI/O要求の第1の持続性レベルを選択することを含む。持続性レベルの1つは、エフェメラルキャッシングモードに対応し得、本方法は、1つの持続性レベルを有するI/O要求のデータを、プライマリストレージリソースに記憶せずにキャッシュに記憶することを更に含み得る。
本明細書では、ストレージクライアントから発せられた入/出力(I/O)要求を受信すること、I/O要求の1つ又は複数の特徴に基づいて、I/O要求の複数の持続性レベルのうちの1つを決定することであって、各持続性レベルは、I/O要求に応えるために使用すべきストレージリソース、ストレージリソースの構成、及びストレージモードのうちの1つ又は複数を指定する、決定すること、及び/又は選択された持続性レベルに従ってI/O要求に応えることを含む方法の実施形態が開示される。持続性レベルのうちの第1の持続性レベルは、エフェメラルキャッシングモードを指定し得、持続性レベルのうちの第2の持続性レベルは、ライトスルーキャッシングモードを指定する。持続性レベルのうちの2つ以上は、I/O要求に応えるために使用されるストレージリソース、ストレージ構成、及び/又はキャッシングモードに関して異なる。
持続性レベルのうちの第1の持続性レベルは、エフェメラルキャッシュモードを指定し得、本方法は、書き込みI/O要求のデータをキャッシュリソースに書き込むことに応答して、書き込みI/O要求のデータをプライマリストレージに書き込まずに、第1の持続性レベルの書き込みI/O要求の完了を確認することを更に含み得る。幾つかの実施形態では、持続性レベルのうちの第1の持続性レベルは、第1の誤り修正コード符号化を指定し、持続性レベルのうちの第2の持続性レベルは、第2の異なる誤り修正コード符号化を指定する。
本方法は、I/O要求のソース識別子、I/O要求のファイル識別子、I/O要求に関連付けられたアプリケーション、及びI/O要求のパラメータのうちの1つ又は複数に基づいて、I/O要求の持続性レベルを決定することを更に含み得る。
本明細書では、複数のストレージ要求のそれぞれに、複数の適応持続性レベルのうちの1つを、ストレージ要求の特徴に基づいて選ぶように構成される持続性レベルモジュールであって、ストレージ要求に選ばれる適応持続性レベルは、ストレージ要求に応えるストレージリソース、ストレージリソースの構成、及びストレージモードのうちの1つ又は複数を決定する、持続性レベルモジュールと、1つ又は複数のストレージリソースとインタフェースするように構成されるインタフェースモジュールと、インタフェースモジュールの使用によってストレージ要求に割り当てられる適応持続性レベルに従って、ストレージ要求に応えるように構成されるストレージ要求実行モジュールとを備える装置の実施形態が開示される。持続性レベルモジュールは、ストレージ要求のファイル識別子、ストレージ要求に関連付けられたアプリケーション、ストレージ要求のパラメータ、及び入/出力(IO)制御パラメータのうちの1つ又は複数に基づいて、ストレージ要求の適応持続性レベルを選ぶように構成し得る。ストレージ要求実行モジュールは、ライトネバーキャッシュモードで、エフェメラル適応持続性レベルを有するストレージ要求のデータをキャッシュするように構成し得る。適応持続性レベルのうちの第1の適応持続性レベルは、第1のRAID構成でデータを記憶することを含み得、適応持続性レベルのうちの第2の適応持続性レベルは、第2の異なるRAID構成でデータを記憶することを含み得る。
本明細書では、適応キャッシュ持続性方法の実施形態が開示される。開示される方法は、1つ又は複数のマシン実行可能動作及び/又はステップを含み得る。開示される動作及び/又はステップは、コンピュータ可読記憶媒体に記憶されたプログラムコードとして実施し得る。したがって、本明細書に開示される方法の実施形態は、1つ又は複数の方法動作及び/又はステップを実行するように実行可能なコンピュータ使用可能プログラムコードを記憶するコンピュータ可読記憶媒体を含むコンピュータプログラム製品として実施し得る。
幾つかの実施形態では、開示される方法は、バッキングストアに向けられたI/O要求を識別すること、複数のキャッシュモードから、識別されたI/O要求にエフェメラルキャッシュモードを選択することであって、エフェメラルキャッシュモードは、データをバッキングストアに記憶せずに、データをキャッシュに記憶することを含む、選択すること、及び/又は識別されたI/O要求のデータをエフェメラルキャッシュモードでキャッシュすることを含む。本方法は、識別されたI/O要求のデータを、バッキングストアに記憶せずにキャッシュに記憶することに応答して、識別されたI/O要求の完了を確認することを更に含み得る。
エフェメラルキャッシュモードは、識別されたI/O要求のデータを再開動作間で保存する必要がないとの判断に応答して選択し得る。本方法は、識別されたI/O要求のソース識別子、識別されたI/O要求のファイル識別子、及び識別されたI/O要求に関連付けられたアプリケーションのうちの1つ又は複数に基づいて、複数のキャッシュモードからエフェメラルキャッシュモードを選択することを更に含み得る。
幾つかの実施形態では、本方法は、新しい仮想マシンホストへの移行に応答して、エフェメラルキャッシュデータをフラッシュすることを含み、エフェメラルキャッシュデータのフラッシュは、エフェメラルキャッシュモードでキャッシュされたデータをバッキングストアに記憶することを含む。本方法は、仮想マシンが第1の仮想マシンホストから第2の仮想マシンホストに移行したことに応答して、エフェメラルキャッシュモードでキャッシュされたデータに関するキャッシュメタデータを仮想マシン内に保持すること、及び/又は第2の仮想マシンホストにおける仮想マシンキャッシュに、第1の仮想マシンホストに保持されるエフェメラルキャッシュモードでキャッシュされたデータを移入することを更に含み得る。
幾つかの実施形態では、開示される方法は、プライマリストレージに向けられた入/出力(I/O)要求のデータが不必要であると判断すること、I/O要求のデータをキャッシュストレージ内に排他的にキャッシュすること、及び/又はI/O要求のデータをキャッシュストレージ内にキャッシュすることに応答して、I/O要求の完了を確認することとを含み得る。I/O要求のデータをキャッシュすることは、プライマリストレージに関与しない1つ又は複数の高速パスI/O動作を実行することを含み得る。
幾つかの実施形態では、本方法は、ストレージスタック内のI/O要求を監視することを更に含み得、I/O要求のデータをキャッシュすることは、ストレージスタック外の1つ又は複数の高速パスI/O動作を実行することを更に含み得る。
I/O要求が不必要データに関すると判断することは、I/O要求のソース識別子に持続性レベル基準を適用することを含み得る。持続性レベル基準は、ファイルレベル知識及びアプリケーションレベル知識のうちの一方に基づき得る。
I/O要求は仮想マシンによって生成し得、本方法は、仮想マシンがリモート仮想マシンホストに転送されることに応答して、キャッシュストレージ内に排他的に記憶された仮想マシンのデータをリモート仮想マシンホストにプッシュすることを更に含み得る。幾つかの実施形態では、本方法は、リモート仮想マシンホストからの要求に応答して、キャッシュストレージ内に排他的に記憶されたデータをリモート仮想マシンホストに転送すること、及び/又は仮想マシンが異なる仮想マシンホストに移行することに応答して、キャッシュストレージ内に排他的に記憶されたデータに関連付けられたキャッシュタグを保持することを更に含む。
キャッシュストレージに排他的に記憶されたデータをリモート仮想マシンホストの仮想マシンキャッシュに転送することは、仮想マシンのキャッシュ管理システムの仮想マシン識別子に基づいて、キャッシュストレージに排他的に記憶された仮想マシンのデータを識別することを含み得る。
本明細書には、バッキングストアに向けられたI/O要求をインターセプトするように構成されるエージェント、インターセプトされたI/O要求の1つ又は複数の特徴に基づいて、インターセプトされたI/O要求の複数のキャッシュモードのうちの1つを識別するように構成される持続性レベルモジュール、及び/又はキャッシュ内のインターセプトされたI/O要求のデータを、識別されたキャッシュモードに従ってキャッシュするように構成されるキャッシュ管理システムであって、複数のキャッシュモードはエフェメラルキャッシュモードを含み、データをエフェメラルキャッシュモードでキャッシュすることは、データをキャッシュのみに、データをバッキングストアに書き込まずに書き込むことを含む、キャッシュ管理システムを備える装置の実施形態が開示される。持続性レベルモジュールは、インターセプトされたI/O要求のソース識別子、インターセプトされたI/O要求のファイル識別子、及びインターセプトされたI/O要求に関連付けられたアプリケーションのうちの1つ又は複数に基づいて、インターセプトされたI/O要求のキャッシュモードを識別するように構成し得る。
幾つかの実施形態では、キャッシュ管理システムは、対応するI/O要求のデータをキャッシュに書き込むことに応答して、エフェメラルキャッシュモードでキャッシュされたI/O要求の完了を確認するとともに、対応するI/O要求のデータをバッキングストアに書き込むことに応答して、ライトスルーキャッシュモードが割り当てられたI/O要求の完了を確認するように構成される。
本装置の実施形態は、仮想マシンがリモート仮想マシンホストに転送されるとの判断に応答して、第1の仮想マシンホストにおけるキャッシュ内にエフェメラルキャッシュモードで許容される仮想マシンのデータを保持するように構成されるキャッシュ保持モジュール、及び/又はエフェメラルキャッシュモードでキャッシュ内に許容される仮想マシンの保持データをリモート仮想マシンホストに転送するように構成されるキャッシュ転送モジュールを更に含み得る。キャッシュストレージモジュールは、リモート仮想マシンホストでの仮想マシンキャッシュに、第1の仮想マシンホストから転送されたデータを移入するように構成し得る。幾つかの実施形態では、キャッシュ管理モジュールは、仮想マシンがリモートマシン仮想マシンホストに移ることに応答して、エフェメラルキャッシュモードでキャッシュされた仮想マシンのデータを1つ又は複数のプライマリストレージリソースにフラッシュするように構成し得る。
本開示は、添付図面を含み、添付図面を参照し、本明細書に開示される実施形態のより具体的な説明を提供する。しかし、本開示は、図に示される特定の実施形態に限定されない。本開示の範囲から逸脱せずに、本開示の教示は、他の実施形態で利用し、且つ/又は他の実施形態に適応し得、且つ/又は開示される実施形態に変更を行い得る。
適応持続性システムの一実施形態のブロック図である。 適応持続性システムの別の実施形態のブロック図である。 I/O要求に応える方法の一実施形態の流れ図である。 仮想計算環境の一実施形態のブロック図である。 仮想計算環境の別の実施形態のブロック図である。 キャッシュの一実施形態のブロック図である。 キャッシュタグデータ構造の一実施形態を示す。 キャッシュマッピングの一実施形態を示す。 キャッシュ管理システムの一実施形態を示す。 キャッシュ管理システムの別の実施形態のブロック図である。 持続性レベルポリシーの一実施形態を示す。 キャッシュ管理システムの別の実施形態を示す。 適応持続性レベルに従ってデータをキャッシュする一実施形態の流れ図である。 適応持続性レベルに従ってデータをキャッシュする別の実施形態の流れ図である。 仮想計算環境の別の実施形態のブロック図である。 キャッシュデータを転送する方法の一実施形態の流れ図である。 キャッシュデータを転送する方法の別の実施形態の流れ図である。 キャッシュデータを転送する方法の別の実施形態の流れ図である。
本明細書に記載の実施形態は、仮想計算環境、ベアメタル計算環境等を含むが、これらに限定されない様々な計算環境でのデータ入/出力(I/O)要求及び動作の管理に関連する。したがって、本明細書に開示される特定の例及び/又は実施形態は仮想計算環境に関連するが、本開示はこの点に関して限定されない。
ストレージモジュールは、1つ又は複数のストレージクライアントのI/O動作を管理するように構成し得、ストレージクライアントは、オペレーティングシステム、仮想オペレーティングシステム、ハイパーバイザ、ファイルシステム、ボリュームマネージャ、データベースアプリケーション、ユーザアプリケーション等を含み得るが、これらに限定されない。ストレージモジュールは、ストレージクライアントのI/O要求に応えるように構成し得る。ストレージモジュールは、選択された「持続性レベル」に従ってI/O要求に応えるように構成し得る。本明細で使用される場合、「持続性のレベル」又は「持続性レベル」は、I/O要求の1つ又は複数の特徴及び/又は属性を指す。動作の持続性のレベルは、I/O要求に応えるために使用される記憶装置及び/又は記憶媒体(例えば、不揮発性メモリ又は不揮発性記憶媒体)、選択された記憶装置及び/又は媒体の構成(例えば、安価ディスク冗長アレイ(RAID)レベル、JBOD(just a bunch of disks)構成、ミラーリング等)、I/O要求のストレージモード及び/又はフォーマット(例えば、ライトスルーキャッシュモード、エフェメラルキャッシュモード、ECC符号化等)等に関連し得る。したがって、持続性の異なるレベルは、揮発性メモリ、不揮発性記憶媒体(例えば、磁気、光学、テープ、固体状態等)等の異なるタイプの記憶装置及び/又は記憶媒体にデータを記憶すること、異なるRAIDレベル、ミラーリング構成、パリティ構成等の異なるストレージ構成にデータを記憶すること、及び/又は異なるECC符号化、暗号化レベル、キャッシングモード、アトミック性、検証等の1つ又は複数の異なるモードでデータを記憶することを含み得る。
ストレージモジュールは、I/O要求の属性に従ってI/O要求の持続性レベルを選択するように構成し得、属性は、I/O要求内に含まれる、且つ/又は関連付けられる特定の持続性レベルへの明示的な要求、特定のストレージ特徴への要求、I/O要求、ポリシー、プロファイリング、テスト、及び経験の特徴及び/又は属性等を含み得るが、これらに限定されない。例えば、長期間にわたって利用可能である必要があるデータに関するI/O要求に応答して、ストレージモジュールは、データを不揮発性記憶媒体にRAID及び/又はミラーリング構成で記憶することを含む持続性レベルを選択し得る。選択された持続性レベルは、I/O要求のデータをライトスルーキャッシュ構成でキャッシュすることを更に含み得、それにより、データへの更新はプライマリストレージにライトスルーされる。別の例では、限られた時間だけ保持する必要があるデータに関連するI/O要求に応答して、ストレージモジュールは、I/O要求のデータを「エフェメラル」又は「ライトネバー」キャッシュモードでキャッシュすることを含む持続性レベルを選択し得る。本明細書で使用される場合、エフェメラルキャッシュモードとは、キャッシュされたデータがプライマリストレージにライトスルー及び/又はライトバックされないキャッシュ構成を指し、エフェメラルデータは、キャッシュのみに記憶し得る。したがって、エフェメラルキャッシュ構成でデータをキャッシュすることは、プライマリストレージにアクセスせずに(且つ/又はデータをプライマリストアに書き込まず、且つ/又はコピーせずに)データをキャッシュに記憶することを含む。エフェメラルキャッシュ構成でキャッシュされたデータは、データがキャッシュから退去する場合(例えば、キャッシュクライアントの電力サイクル、リブート等)、データが、ライトスルー及び/又はライトバックキャッシュモード等の異なるキャッシュモードでデータをキャッシュすることを含み得る別の持続性レベルに遷移しない限り、失われ得る。
図1Aは、適応持続性システムの一実施形態のブロック図である。モジュール130は、ベアメタル計算環境又は計算装置を含み得る計算環境110内で実施し得、計算装置は、1つ又は複数の計算装置、複数の計算装置(例えば、クラスタ、グリッド、又は他の構成の計算装置グループ)、パーソナルコンピュータ、サーバコンピュータ、ブレード、ラップトップ、ノートブック、スマートフォン等であり得るが、これらに限定されない。計算環境110は、1つ又は複数の仮想マシン、仮想デスクトップ(例えば、仮想デスクトップインフラ(VDI)環境内)、仮想コンピュータ等を含む仮想計算環境であり得る。
計算環境110は、処理リソース112、揮発性メモリリソース113、永続性ストレージリソース114、及び/又は通信インタフェース115を含み得る。処理リソース112は、1つ又は複数の汎用及び/又は専用処理要素及び/又はコアを含み得る。処理リソース112は、永続性ストレージリソース114からロードされる命令を実行するように構成し得る。本明細書に開示されるモジュール及び/又は方法の部分は、永続性ストレージリソース114に記憶されるマシン可読命令として実施し得る。リソース112、113、114、及び/又は115は、物理的な計算構成要素及び/又は仮想化環境(例えば、ハイパーバイザ)により、且つ/又は仮想化環境を通して提供される仮想計算リソースを含み得る。
ストレージモジュール130は、I/O要求受信器モジュール132と、持続性レベルモジュール134と、I/O要求実行モジュール136とを含み得る。ストレージモジュール130の部分は、計算環境110で動作するか、又は計算環境110と併せて動作し得る。代替又は追加として、ストレージモジュール130の部分は、計算環境110とは別個に実施し得、例えば、ストレージモジュール130の部分は、周辺構成要素相互接続エクスプレス(PCI−e)バス、シリアルアドバンストテクノロジーアタッチメント(シリアルATA)バス、ユニバーサルシリアルバス(USB)接続、電気電子技術者協会(IEEE)1394バス(ファイアワイヤ)、外部PCIバス、インフィニバンド、通信ネットワーク105等のシステムバスを使用して接続し得る。
ストレージモジュール130は、1つ又は複数のストレージリソース140A〜Nに通信可能に結合し得る。ストレージリソース140A〜Nは、各インタフェースメカニズム141を介してアクセス可能なローカルストレージリソースを含み得、インタフェースメカニズム141は、バスインタフェース及び/又はプロトコル(例えば、システムバス、ローカルバス、I/Oバス等)を含み得るが、それらに限定されない。ストレージリソース140A〜Nは、1つ又は複数のリモートのネットワークアクセス可能なストレージリソース140Cを更に含み得、これは、例えば、ストレージエリアネットワーク(SAN)リソース、ネットワーク接続ストレージ(NAS)等を含み得るが、これらに限定されず、リモートI/Oインタフェース及び/又はプロトコル141を介してアクセスし得る。
ストレージリソース140A〜Nは、様々な構成の異なるタイプの記憶装置及び/又は記憶媒体を含み得る。ストレージリソース140A〜Nは、揮発性メモリ(DRAM)、プロセッサ、キャッシュ等の揮発性ストレージリソースと、磁気ハードドライブ、光学記憶媒体、固体状態記憶媒体等の不揮発性ストレージリソースと、キャッシュリソース等とを含み得るが、これらに限定されない。したがって、ストレージリソース140A〜Nは、フラッシュメモリ、ナノランダムアクセスメモリ(ナノRAM又はNRAM)、ナノ結晶ワイヤベースメモリ、酸化ケイ素系サブ10ナノメートルプロセスメモリ、グラフェンメモリ、ケイ素−酸化物−窒化物−酸化物−ケイ素(SONOS)、抵抗ランダムアクセスメモリ(RRAM)、プログラマブルメタライゼーションセル(PMC)、導電性ブリッジングRAM(CBRAM)、磁気抵抗RAM(MRAM)、ダイナミックRAM(DRAM)、相変化RAM(PRAM)、磁気媒体(例えば、1つ又は複数のハードディスク)、光学媒体等を含み得るが、これらに限定されない。
ストレージリソース140A〜Nは、1つ又は複数の異なるRAIDレベル、ミラーリング構成、キャッシング構成及び/又はモード、ECC符号化、パリティ構成等の様々なストレージ構成及び/又はモードで構成し得る。例えば、ストレージリソース140A〜Nのうちの1つ又は複数は、RAID及び/又はミラーリング構成での1組の不揮発性記憶要素(例えば、ハードディスク)を含み得、一方、他のストレージリソース140A〜Nは非冗長であり得る。ストレージリソース140A〜Nは、異なる保持ポリシー(例えば、キャッシングモード)に従ってデータを記憶するように構成し得る。例えば、ストレージリソース140Aは、別のプライマリストレージリソース140Bについてのデータをキャッシュするように構成し得る。ストレージモジュール130は、特定のキャッシングモード及び/又は構成で動作するようにキャッシュリソースを構成し得る。例えば、ストレージモジュール130は、第1のI/O要求のデータをライトスルー構成でキャッシュし得(例えば、データをキャッシュストレージリソース140A及びプライマリストレージリソース140Bに書き込む)、第2のI/O要求のデータをエフェメラルキャッシュモードでキャッシュし得、エフェメラルキャッシュモードでは、データはキャッシュストレージリソース140Aのみに記憶され、退去(例えば、リブート)時に失われる。
ストレージモジュール130は、1つ又は複数のストレージクライアントからのI/O要求116に応えるように構成し得る。I/O要求116は、ストレージモジュール130の1つ又は複数のインタフェース131を介してI/O要求受信器モジュール132において受信し得、インタフェースは、1つ又は複数のドライバ、ライブラリ、モジュール、ブロックデバイスインタフェース、インタフェース拡張(例えば、入/出力制御(IOCTL)インタフェース)、アプリケーションプログラミングインタフェース(API)、アプリケーションバイナリインタフェース(ABI)、オブジェクトクラス、リモートインタフェース(例えば、リモートプロシージャコール、簡易オブジェクトアクセスプロトコル等)等を含み得るが、これらに限定されない。
ストレージモジュール130は、I/O要求116の持続性レベルを選択するように構成される持続性レベルモジュール134を更に備え得る。上述したように、持続性レベルを決定することは、I/O要求116に応えるための1つ又は複数のストレージリソース140A〜Nを選択すること、1つ又は複数の選択されたストレージリソース140A〜Nのストレージ構成(例えば、RAIDレベル、ミラーリング等)を選択すること、及び/又はI/O要求116のストレージモード(例えば、キャッシングモード、ECC符号化等)を選択することを含み得るが、これらに限定されない。
持続性レベルモジュール134は、持続性レベルポリシー135に基づいてI/O要求116の持続性レベルを決定し得る。持続性レベルポリシー135は、I/O要求116の特徴及び/又は属性に基づいて各I/O要求116に持続性レベルを割り当てるように構成された持続性レベル基準を含み得、I/O要求116の特徴及び/又は属性は、要求116に対応するファイル名、パス、ボリューム、及び/又は他のファイル識別子等のファイル属性及び/又は特徴(例えば、ファイルレベル知識)、I/O要求116のアプリケーション及び/又はストレージクライアントの属性及び/又は特徴(例えば、アプリケーションレベル知識)、I/O要求116から引き出された推測、I/O要求116の1つ又は複数のパラメータ、I/O要求116に関連付けられたパラメータ(例えば、IOCTL情報)、I/O要求116に関連するプロファイルメタデータ、嗜好及び/又は構成、テスト及び経験等を含み得るが、これらに限定されない。例えば、幾つかの実施形態では、インタフェース131A及び/又は131Bのうちの1つ又は複数は、I/O要求116の持続性レベル特徴を指定するメカニズムを含み得る。例えば、I/O要求116は、冗長ストレージ構成(例えば、特定のRAIDレベル及び/又はミラーリング構成)での記憶を要求し得る。I/O要求116は更に、I/O要求116のキャッシングモードを指定(例えば、ライトスルーキャッシュモードを指定)し得る。一時データに関連するI/O要求116は、異なる持続性レベル(又は異なる持続性レベル特徴)を指定し得る。例えば、一時データに関連するI/O要求116は、冗長性及び/又はミラーリングが要求されないことを示し得、エフェメラルキャッシュ構成でのキャッシュ(本明細書で更に詳細に開示する)を可能にし得る。代替又は追加として、持続性レベルモジュール134は、I/O要求116に関連する他の非明示的情報に関連する持続性レベル基準に基づいて、持続性レベルを決定し得る。例えば、持続性レベル基準は、(例えば、本明細書に記載されるように、ファイル選択基準の使用により)リブート間で保持する必要がない一時ファイルを識別し得る。持続性レベルモジュール134は、そのような一時ファイルに関連するI/O要求116に適切な持続性レベル(例えば、I/O要求116のデータをエフェメラルキャッシュにキャッシュすること)を割り当てる。
ストレージモジュール130は、I/O要求116に応えるように構成されたI/O要求実行モジュール136を更に備え得る。I/O要求実行モジュール136は、持続性レベルモジュール134によって決定されるI/O要求116の各持続性レベルに従って、I/O要求116のデータを1つ又は複数のストレージリソース140A〜Nに1つ又は複数のストレージ構成及び/又はモードで記憶するように構成し得る。したがって、I/O要求実行モジュール136は、1つ又は複数の異なるストレージ構成で、且つ/又は1つ又は複数の異なるストレージモード(例えば、ライトスルーキャッシュ、ライトバックキャッシュ、エフェメラルキャッシュ等)で、データを1つ又は複数の異なるストレージリソース140A〜Nに記憶するように構成し得る。
図1Bは、適応持続性システムの別の実施形態を示す。図1Bの実施形態は、計算環境110内で動作するストレージモジュール130を示す。上述したように、ストレージモジュール130は、I/O要求受信器モジュール132を介してI/O要求116を受信するように構成し得る。I/O要求116はストレージクライアント116A〜Nによって発行し得、クライアントは、オペレーティングシステム106A、ファイルシステム106B、データベース106C、ユーザアプリケーション106D等を含むが、これらに限定されない。ストレージクライアント106A〜Nは、計算環境110内で動作し得、且つ/又は他のリモート計算環境111(例えば、リモートストレージクライアント106E)を含み、且つ/又は他のリモート計算環境111内で動作し得る。
幾つかの実施形態では、ストレージクライアント106A〜Nのうちの1つ又は複数は、1つ又は複数のインタフェース131Aを介してI/O要求116をストレージモジュール130に直接発行するように構成される。代替又は追加として、ストレージモジュール130は、計算環境110のI/Oスタック117内のI/O要求116を受信し、且つ/又は監視するように構成し得る。I/Oスタック117は、オペレーティングシステム106A(又は仮想オペレーティングシステム106A)のストレージスタック又は他のI/Oサブシステムを備え得る。したがって、幾つかの実施形態では、I/O要求受信器モジュール132は、I/Oスタック117内のI/O要求116を監視するように構成される1つ又は複数のエージェント133を備え得る。エージェント133は、I/Oドライバ、I/Oフィルタドライバ、ファイルフィルタドライバ、ボリュームフィルタドライバ、ディスクフィルタドライバ、SCSIドライバ及び/又はフィルタ、仮想論理番号(VLUN)ドライバ等を含むが、これらに限定されない。
ストレージモジュール130は、1つ又は複数の各ストレージリソース140A〜Nとインタフェースし、且つ/又はストレージリソースに対してストレージ動作を実行するように構成される1つ又は複数のI/Oインタフェース118A〜Nを更に備え得る。I/Oインタフェース118A〜Nのそれぞれは、特定のインタフェースメカニズム141A〜Nの使用により1つ又は複数のストレージリソース140A〜Nとインタフェースするように構成し得、インタフェースメカニズムは、ストレージリソースインタフェース(例えば、ブロックデバイスインタフェース、ストレージレイヤ、API、プロトコル等)、バスプロトコル、通信インタフェースプロトコル、ネットワークプロトコル及び/又はインタフェース、仮想化プロトコル及び/又はインタフェース等を含み得るが、これらに限定されない。例えば、I/Oインタフェース118Bは、仮想I/Oインタフェース141Bを介して仮想化ストレージリソース140Bとインタフェースするように構成し得、I/Oインタフェース118Cは、ネットワーク105(及び/又は通信インタフェース115)を介してリモートストレージリソース140Cにアクセスするように構成し得る。
ストレージリソース140A〜Nのうちの1つ又は複数は、固体状態記憶媒体等の不揮発性記憶媒体を含み得る。例えば、I/Oインタフェース118Aは、固体状態ストレージリソース140Aに通信可能に結合し得る。したがって、幾つかの実施形態では、I/Oインタフェース118Aは、「Apparatus,System,and Method for Managing Data Using a Data Pipeline」という名称の、2008年6月12日に米国特許出願公開第2008/0141043号明細書として公開された2007年12月6日に出願された米国特許出願第11/952,091号明細書に記載のように、1つ又は複数の固体状態ストレージコントローラを備え、且つ/又は通信可能に結合し得、この特許出願を参照により本明細書に援用する。
ストレージモジュール130は、論理識別子とストレージリソースとの間のマッピング及び/又は関連付けを保持するように構成された変換モジュール137を備え得る。本明細書で使用される場合、論理識別子は、論理ブロックアドレス(LBA)、シリンダ/ヘッド/セクタ(CHS)アドレス、ファイル名、オブジェクト識別子、iノード、ユニバーサル一意識別子(UUID)、グローバル一意識別子(GUID)、ハッシュコード、シグネチャ、インデックスエントリ、範囲、広がり等を含むが、これらに限定されない、I/Oリソース(例えば、不揮発性ストレージリソース140に記憶されたデータ)を参照する任意の識別子を指す。マッピングは「任意対任意」であり得、それにより、任意の論理識別子を任意の物理的ストレージロケーションに関連付けることができる(その逆も同様)。
変換モジュール137は、I/O要求116のデータ及び/又はストレージリソース140A〜Nに関連するI/Oメタデータ138を保持するように構成し得る。I/Oメタデータ138は、フォワードインデックス(例えば、論理識別子とストレージリソース140A〜Nとの間のマッピング及び/又は関連付けのインデックス)、キャッシュタグ、有効性メタデータ、アトミック性及び/又はトランザクションメタデータ、持続性レベルメタデータ等を含み得るが、これらに限定されない。例えば、持続性レベルメタデータは、特定の論理識別子の持続性レベルを示し得、持続性レベルは、論理識別子に関連するI/O要求116に応えるために使用し得る。I/O要求116の持続性レベルメタデータは、I/O要求116に関連するデータを含むストレージリソース140A〜N、ストレージリソース140A〜Nのストレージ構成、データのストレージモードに関連する情報等を識別し得る。I/Oメタデータ138は1つ又は複数のデータ構造を含み得、データ構造は、ツリー、Bツリー、範囲符号化Bツリー、基数木、マップ、リスト、コンテンツアドレス指定可能マップ(CAM)、テーブル、ハッシュテーブル、メモリレイアウト(例えば、連続メモリレイアウト又は他の適するレイアウト)、データ構造の組み合わせ等を含み得るが、これらに限定されない。I/Oメタデータ138は、揮発性メモリリソース113内に保持し得る。I/Oメタデータ138の部分は、永続的ストレージリソース114及び/又はストレージリソース140A〜Nのうちの1つ又は複数等の1つ又は複数の不揮発性及び/又は不揮発性及び/又は非一時的なストレージリソースに存続し得る。
幾つかの実施形態では、ストレージモジュール130は、変換モジュール137の任意の任意対任意マッピングを利用して、データをログフォーマットで記憶し得、それにより、データは、ストレージリソース140A〜Nのうちの1つ又は複数の「原位置外」で更新し、且つ/又は変更される。本明細書で使用される場合、データを「原位置外」に書き込むことは、データを「原位置」で上書きする(例えば、データの元の物理ロケーションを上書きする)のではなく、異なる媒体ストレージロケーションにデータを変更し、且つ/又は上書きすることを指す。データをログフォーマットで記憶することにより、不揮発性ストレージリソース140に陳腐化され、且つ/又は無効なデータが残ることになり得る。例えば、論理識別子「A」のデータを原位置外に上書きすることにより、データを新しいストレージロケーションに書き込み、Aに新しい物理ストレージロケーションを関連付ける(例えば、フォワードインデックスで)ようにI/Oメタデータ138を更新することに繋がり得る。Aに関連付けられていた元の物理ストレージロケーションは、上書きされず、無効の古いデータを含む。同様に、論理識別子「X」のデータが削除されるか、又はトリミングされる場合、Xに割り当てられた物理ストレージロケーションは即座に消去されず、無効データとして不揮発性ストレージリソース140に残ることがある。
ストレージモジュール130は、データをストレージリソース140A〜Nのうちの1つ又は複数にログフォーマット(例えば、「イベントログ」)で記憶するように構成されるログストレージモジュール139を更に備え得る。本明細書で使用される場合、ログフォーマットは、ストレージリソース140A〜Nで実行される記憶動作の順序を定義し、且つ/又は保存するデータ記憶フォーマットを指す。したがって、ログフォーマットは、ストレージリソース140A〜Nで実行される記憶動作の「イベントログ」を定義し得る。幾つかの実施形態では、ログストレージモジュール139は、データを付加点から順次記憶するように構成される。ログストレージモジュール139は、データ(及び/又は不揮発性ストレージリソース140上の物理ストレージロケーション)に各シーケンスインジケータを関連付けるように更に構成し得る。シーケンスインジケータは、ストレージリソース140A〜N上の個々のデータセグメント、パケット、及び/又は物理ストレージロケーションに適用し得、且つ/又はデータ及び/又は物理ストレージロケーションのグループ(例えば、消去ブロック)に適用し得る。幾つかの実施形態では、ストレージロケーションがグルーミング動作で回収される(例えば、消去される)場合、及び/又はストレージロケーションがまず、データの記憶に使用される場合、シーケンスインジケータを物理ストレージロケーションに適用し得る。
幾つかの実施形態では、ログストレージモジュール139は、「付加のみ」パラダイムに従ってデータを記憶するように構成し得る。ストレージモジュール130は、ストレージリソース140A〜Nのうちの1つ又は複数の物理的なアドレス空間内の現在付加点を保持し得る。本明細書で使用される場合、「付加点」は、特定の物理的なストレージロケーション(例えば、セクタ、ページ、ストレージ分割、オフセット等)へのポインタ又は参照を指す。ログストレージモジュール139は、付加点から順次、データを付加するように構成し得る。データが付加点に記憶されると、付加点は、ストレージリソース140A〜Nの次の利用可能な物理的ストレージロケーションに移る。したがって、ストレージリソース140A〜Nに記憶されたデータのログ順は、データに関連付けられたシーケンスインジケータ及び/又はストレージリソース140A〜Nでのデータの順序に基づいて決定し得る。ログストレージモジュール139は、ストレージリソース140A〜Nの物理アドレス空間をトラバースして(例えば、後述するようにリバースインデックスで)、次の利用可能な物理的ストレージロケーションを識別することにより、「次の」利用可能なストレージロケーションを識別するように構成し得る。
ストレージモジュール130は、不揮発性ストレージリソース(不揮発性記憶媒体)を「グルーミング」するように構成されるグルーマーを備え得、グルーミングすることは、上述したように、無効な、陳腐化した、又は「トリミング」されたデータを含む物理ストレージロケーションを回収することを含み得る。本明細書で使用される場合、不揮発性ストレージリソース(例えば、固体状態記憶媒体)を「グルーミング」することは、摩耗平滑化、無効及び/又は陳腐化データの除去、削除(例えば、トリミング)されたデータの除去、有効データのリフレッシュ及び/又は配置替え、物理ストレージリソース(例えば、消去ブロック)の回収、回収する物理ストレージリソースの識別等を含み得るが、これらに限定されない動作を指す。グルーマーは、バックグラウンドで、他のI/O要求116に応えることから自律的に動作し得る。したがって、グルーミング動作は、他のI/O要求116が処理される間に定義し得る。代替的には、グルーミングは、他のI/O要求116と共にフォアグラウンドで動作し得る。物理ストレージロケーションを回収することは、物理ストレージロケーションから無効データを消去することを含み得、それにより、物理ストレージロケーションを有効データの記憶に再使用することができる。例えば、ストレージ分割(例えば、消去ブロック又は論理消去ブロック)を回収することは、ストレージ分割から有効データを配置換えすることと、ストレージ分割を消去することと、ストレージ動作に向けてストレージ分割を初期化する(例えば、ストレージ分割をシーケンスインジケータでマークする)こととを含み得る。グルーマーは、不揮発性記憶媒体を摩耗平滑化し得、それにより、データは異なる物理ストレージロケーション全体にわたって系統的に拡散し、性能及びデータ信頼性を向上させ得るとともに、特定の物理ストレージロケーションの過剰使用及び/又は使用不足を回避し得る。不揮発性記憶媒体をグルーミングするシステム及び方法の実施形態は、「Apparatus,System,and Method for Storage Space Recovery After Reaching a Read Count Limit」という名称の2011年12月6日に発行された米国特許第8,074,011号明細書に開示されており、これを参照により本明細書に援用する。
幾つかの実施形態では、ストレージモジュール130は、固体状態記憶媒体等の非対称「ライトワンス」不揮発性ストレージリソース140を管理するように構成し得る。本明細書で使用される場合、「ライトワンス」は、新しいデータが書き込まれるか、又はプログラムされる都度、再初期化(例えば、消去)される記憶媒体を指す。本明細書で使用される場合、「非対称」は、異なるタイプのストレージ動作に異なる待ち時間及び/又は実行時間を有する記憶媒体を指す。例えば、非対称固体状態不揮発性ストレージリソース140への読み出し動作は、書き込み/プログラム動作よりもはるかに高速であり得、書き込み/プログラム動作は消去動作よりもはるかに高速であり得る。固体状態不揮発性ストレージリソース140は、グループ(例えば、消去ブロック)として消去可能なストレージ分割に分割して、特に、これらの非対称属性を説明し得る。したがって、単一のデータセグメントを「原位置」で変更するには、消去ブロック全体を消去し、元の変更なしのデータ(もしあれば)と共に、消去ブロックに変更後データを再書き込みする必要があり得る。これは非効率的な「書き込み増幅」を生じさせ、過度の摩耗を生じさせるおそれがある。上述したようにデータを原位置外に書き込むことにより、ストレージモジュール130は陳腐化データの消去を延期することができる(例えば、陳腐化データを含む物理ストレージロケーションは、バックグラウンドグルーミング動作で回収し得る)。
論理識別子とストレージリソース及び/又はログストレージとの間のマッピング及び/又は関連付けを含むI/Oメタデータ138を管理するシステム、方法、及びインタフェースの更なる実施形態は、「Apparatus,System,and Method for a Virtual Storage Layer」という名称の、2012年1月12日に米国特許出願公開第20120011340号明細書として公開された2011年1月6日に出願された米国特許出願第12/986,117号明細書及び「Logical Interface for Contextual Storage」という名称の2012年3月19日に出願された米国特許出願第13/424,333号明細書に開示されており、これらのそれぞれを参照により本明細書に援用する。
図1Cは、異なる持続性レベルに従ってI/O要求に応える方法101の一実施形態の流れ図である。本明細書に開示される方法101及び他の方法及び/又はプロセスは、少なくとも部分的に、永続的ストレージリソース114等の非一時的な記憶装置に記憶される1つ又は複数のマシン可読命令として実施し得る。命令は、計算環境110内の1つ又は複数のモジュールに方法及び/又はプロセスの1つ又は複数のステップを実行させるように構成し得る。命令のうちの1つ又は複数は、1つ又は複数の処理リソース112によって実行されるように構成し得る。さらに、本明細書に開示される方法及び/又はプロセスの特定のステップは、通信インタフェース115、ストレージリソース140A〜N、処理リソース112等の特定のマシン構成要素に結びつけ得る。
ステップ102は、I/O要求116を識別し、且つ/又はアクセスすることを含み得る。ステップ102は、I/O要求116をストレージクライアント106A〜Nから受信する(例えば、インタフェース131Aを介して)こと、I/O要求116(例えば、I/Oスタック117内の)を監視し、且つ/又はインターセプトすること等を含み得る。
ステップ103は、I/O要求116の持続性レベルを決定することを含み得る。ステップ103は、持続性レベルモジュール134が、持続性レベルポリシー135に基づいてI/O要求116の持続性レベルを決定することを含み得、持続性レベルポリシー135は、持続性レベル基準、I/O要求116の属性、I/O要求116から引き出される推測、プロファイリングメタデータ等を含み得るが、これらに限定されない。
ステップ104は、ステップ103においてI/O要求116に選択され、且つ/又は割り当てられた持続性レベルに従ってI/O要求116に応えることを含み得る。I/O要求116に応えることは、I/O要求実行モジュール136が1つ又は複数の記憶動作をストレージリソース140A〜Nに対して実行する(I/Oインタフェース118A〜Nの使用により)ことを含み得る。I/O要求116の持続性レベルは、I/O要求116に応えるために使用すべきストレージリソース140A〜N、1つ又は複数のストレージリソース140A〜Nの構成(例えば、RAIDレベル、ミラーリング等)、及び/又は記憶動作のモード(例えば、ライトスルーキャッシュ、エフェメラルキャッシュ、ECC符号化等)を決定し得る。
本明細書に開示されるストレージモジュール130は、キャッシングサービスを提供するのに利用され、且つ/又はキャッシングサービスを提供するように構成し得る。したがって、幾つかの実施形態では、ストレージモジュール130はキャッシュ管理システム(CMS)を備え得る。CMSは、本明細書に開示されるストレージモジュール130のうちの1つ又は複数のモジュールを含み得る。しかし、明確にするために、これらのモジュールは、CMSと併せて説明される場合、キャッシュ固有の用語を使用して参照されることがある。
図2Aは、仮想計算環境でのCMS220の一実施形態のブロック図である。CMS220は、仮想化カーネル210内で、且つ/又は仮想化カーネル210と併せて動作し得る仮想マシン208A〜N内で動作するように構成し得る。仮想化カーネル210は、ホスト202で動作する仮想マシン208A〜N並びにホスト202によって提供される他の構成要素及びサービスの動作を管理するように構成し得る。例えば、仮想化カーネル210は、プライマリストレージリソース240B及び/又は他のストレージリソース240C〜Nに関連付けられた様々なI/O動作を処理するように構成し得る。プライマリストレージリソース240Bは、複数のホストにわたる複数の仮想マシン208A〜Nの中で共有し得る。プライマリストレージリソース240Bは、複数のディスクドライブ又は1つ又は複数のストレージアレイ(例えば、RAID、JBOD等)等の他のストレージ装置を含み得る。
CMS220は、1つ又は複数のストレージクライアント106のI/O要求116に応え得る。ストレージクライアント106は、仮想マシン208Aにローカルであってもよく、ホスト202に配置される他の仮想マシン208B〜N内でホストされてもよく、且つ/又は他の計算装置(例えば、他のホスト及び/又は図1Bのリモートストレージクライアント106E等の他のリモート計算環境上)で動作してもよい。CMS220は、I/O要求116を受信し、監視し、且つ/又はインターセプトするように構成されたI/O要求受信器モジュール132を備え得る。CMS220は、特定の持続性レベルに従ってI/O要求116に応えるように構成し得る。したがって、CMS220は、本明細書に記載のように、I/O要求116の持続性レベルを決定するように構成された持続性レベルモジュール134を備え得、これは、I/O要求116のキャッシングモード(例えば、ライトスルー、エフェメラル、又は他のキャッシング構成又はモード)を選択することを含み得る。
I/Oインタフェース218は、ホスト202上の他の仮想マシン208A〜N間で共有されてもよく、又は共有されなくてもよい1つ又は複数の仮想化ストレージリソースにアクセスするように構成し得る。本明細書で使用される場合、「仮想化ストレージリソース」は、ハイパーバイザ、ストレージレイヤ、仮想化レイヤ等の仮想化カーネル210を通してアクセス可能なストレージリソースを指す。仮想化ストレージリソースは、VLUNストレージリソース、仮想ディスク(例えば、仮想マシンディスクフォーマット(VMDK)ディスク)、ストレージモジュール130、仮想化キャッシュリソース等を含み得るが、これらに限定されない。
CMS220は、仮想マシンキャッシュ213を含め、1つ又は複数の仮想化ストレージリソース240A〜Nの使用によってI/O要求116に応えるように構成し得る。仮想マシンキャッシュ213は、キャッシュプロビジョナモジュール214及びキャッシュストレージ(キャッシュ216)を備え得る。キャッシュ216は、不揮発性記憶装置及び/又は媒体、固体状態記憶装置、ランダムアクセスメモリ(RAM)等の1つ又は複数のメモリ装置を含み得るが、これらに限定されない。本明細書で使用される場合、「固体状態メモリ装置」は、繰り返しの消去及び再プログラムが可能な不揮発性持続性メモリを指す。したがって、固体状態メモリ装置は、固体状態記憶装置及び/又は固体状態ストレージドライブ(SSD)(例えば、フラッシュ記憶装置)を含み得る。キャッシュプロビジョナモジュール214は、仮想マシン208A〜NのCMS220へのキャッシュ216のリソースをプロビジョニングするように構成し得、プロビジョニングは、キャッシュストレージ及び/又はI/O動作(IOPS)を動的にプロビジョニングし、且つ/又は共有することを含み得る。キャッシュプロビジョナモジュール214は、キャッシュ216内に記憶されたデータを保護し、且つ/又はセキュア化し、2つ以上の仮想マシン208A〜Nが同じキャッシュデータにアクセスしないようにする(例えば、書き込み前の読み出しハザードを回避する)ように更に構成し得る。例えば、幾つかの実施形態では、キャッシュプロビジョナモジュール214は、キャッシュ内のデータへのアクセスを制御するのに使用し得る仮想マシン識別子を、キャッシュされたデータに関連付けるように構成される。
図3は、仮想マシンキャッシュ213のキャッシュストレージ216の一実施形態を示す。キャッシュストレージ216は、仮想マシンキャッシュ213のキャッシュストレージリソース216を表し得る。キャッシュストレージ216は、複数のキャッシュページ304を含む固体状態記憶媒体を含み得る。キャッシュ216は複数のチャンク302に分割し得る。本明細書で使用される場合、「チャンク」は、キャッシュストレージ容量の任意のサイズの部分を指す。キャッシュ216は、任意のサイズを有する任意の数のチャンク302に分割し得る。特定の実施形態では、各チャンク302は、256MB(メガバイト)の記憶容量を含み得る。この実施形態では、チャンク302の数は、キャッシュ216の空き記憶容量によって決定し得る。例えば、256MBのチャンク302に分割された1TB(テラバイト)キャッシュ216は、4,192のチャンクを含む。図3に示されるように、各チャンク302は、複数のキャッシュページ304に分割される。
キャッシュ216は、ホスト上の複数の仮想マシン間で共有し得る。キャッシュチャンク302は、特に、仮想マシンのキャッシュニーズ及び/又は他の仮想マシンのキャッシュニーズに基づいて、仮想マシンのうちの特定の1つに割り当てるか、又は割り振り得る。特定の仮想マシンに割り当てられるチャンク302の数は、仮想マシンのキャッシュニーズが変化するにつれて、時間の経過に伴って変更することができる。特定の仮想マシンに割り当てられるチャンク302の数によって、その仮想マシンのキャッシュ容量が決まり得る。例えば、2つの256MBチャンクが特定の仮想マシンに割り当てられる場合、その仮想マシンのキャッシュ容量は512MBである。特定の仮想マシンへのチャンク302の割り当ては、上述したキャッシュプロビジョナモジュール214等のキャッシュプロビジョナによって処理される。
CMS220は、仮想マシン208A〜Nの識別子(I/Oアドレス)をキャッシュ216内のリソース(例えば、特定のキャッシュページ304)にマッピングし、且つ/又は関連付ける1つ又は複数のキャッシュタグ221を備え得る。したがって、キャッシュタグ221は、キャッシュタグ221内の識別子(例えば、プライマリストレージリソース240B上のブロックのアドレス)と、キャッシュアドレスとの間の変換を実行するのに使用し得る。幾つかの実施形態では、キャッシュタグ221は、RAM又は他のメモリ内で線形に編成し得る。これにより、各キャッシュタグ221が物理キャッシュページ304と線形1:1対応性を有するとのアルゴリズム的仮定により、キャッシュタグ221のアドレスを使用して、物理キャッシュページ304を見つることができる。代替的又は追加として、キャッシュタグ221は、ハッシュテーブル、ツリー等の別のデータ構造に編成し得る。
図2Aを再び参照すると、特定の仮想マシン208A〜Nに関連付けられたキャッシュタグ221は、その仮想マシン208A〜N内に記憶し得る。キャッシュタグ221は、ストレージI/Oアドレスをキャッシュ内の特定のキャッシュページ304に関連付けるメタデータを含む。特定の実施形態では、各キャッシュタグ221は、キャッシュ内の特定のページ304に関連付けられる。仮想マシンキャッシュ213は、プライマリストレージリソース240B(及び/又は他のストレージリソース240C〜N)等の1つ又は複数のストレージリソース240B〜Nのデータをキャッシュし得る。したがって、ストレージリソース240B〜Nのうちの1つ又は複数は、仮想マシンキャッシュ213にキャッシュされたデータのプライマリストレージ及び/又はバッキングストアであり得る。幾つかの実施形態では、キャッシュタグ221のアドレスは、ストレージリソース240B〜Nのうちの1つ又は複数のアドレス及び/又は参照を記憶し得る。
図4は、キャッシュタグ221のデータ構造421の一実施形態を示す。キャッシュタグ221内の幾つかのフィールドのサイズは動的であり得、したがって、キャッシュタグデータ構造421のサイズも動的であり得る。各キャッシュタグ221は、識別子(例えば、ストレージI/Oアドレス)とキャッシュリソース(例えば、キャッシュページ304)との間での変換を提供する。キャッシュタグデータ構造421は、サイズが固定され、ハッシュテーブルデータ構造内のキャッシュタグ221をリンクするのに使用される次キャッシュタグインデックスを含む。動作に当たり、次キャッシュタグインデックスは、現在のキャッシュタグにリンクされた次キャッシュタグを見つけるためのメモリアドレスに変換される。静的フィールドはサイズが固定され、キャッシュタグ221の現在の状態を識別する。アクセスメタデータフィールドは、キャッシュタグ221のアクセス及び/又は使用特徴を示す動的フィールドを含み得る。アクセスメタデータフィールドは、キャッシュタグ221に関連付けられたクロックハンドの数(例えば、時間間隔の数)を示すクロックハンドメタデータを含み得る。チェックサムフィールドは、キャッシュページ304のサイズと、ユーザが望む保全性レベルとに基づいてサイズが変更される動的フィールドを含み得る。例えば、ユーザは、メモリのより多くのビットをチェックサムに割り振ることにより、保全性レベルがより高いチェックサムを得ることができる。
キャッシュタグデータ構造421は、ページ内のどのユニットがキャッシュされるかを識別する動的フィールドである有効ユニットマップフィールドを更に含み得る。キャッシュページ304内のユニットの一例はセクタである。例えば、特定のキャッシュページ304は、欠落しているか、又はもはや有効ではない1つ又は複数のセクタを有し得る。有効ユニットマップは、特定のキャッシュページ304に関連付けられた全てのユニットのステータスを識別して、有効ではないユニット内のデータへのアクセスを回避する。
キャッシュタグデータ構造421は、持続性メタデータフィールドを更に含み得る。持続性メタデータフィールドは、キャッシュタグ221の持続性レベルに関連するメタデータを含み得、このメタデータは、キャッシュタグ221のキャッシュモード(例えば、ライトスルー、ライトバック、エフェメラル、又は他のキャッシュ構成若しくはモード)、キャッシュタグ221に関連付けられたプライマリストレージリソース240B〜N等を含み得るが、これらに限定されない。持続性メタデータは、キャッシュタグ221がキャッシュに許容されたときに、持続性レベルモジュール134によって(持続性レベルポリシー135の使用により)決定し得る。CMS220(及び/又は持続性レベルモジュール134)は、キャッシュタグ221の持続性レベルへの変更に応答して、持続性メタデータを変更し得る。例えば、幾つかの実施形態では、エフェメラルキャッシュデータに関連付けられたキャッシュタグをプライマリストレージリソース240B〜Nにフラッシュし得、フラッシュは、キャッシュタグ221のキャッシュモードをエフェメラルから別のキャッシュモードに変更することを含み得る。キャッシュタグ221は、エフェメラルキャッシュモードに戻り得る(持続性メタデータへの対応する更新を行って)。キャッシュタグデータ構造、クロックハンドメタデータ、及び/又はキャッシュタグ状態遷移の更なる実施形態は、「Systems and Methods for Managing I/O Operations」という名称の、2012年8月16日に米国特許出願公開第2012/0210043号明細書として公開された、2011年2月15日に出願された米国特許出願第13/028,149号明細書に開示されており、これを参照により本明細書に援用する。
上述したように、CMS220は、1つ又は複数のストレージクライアント106からI/O要求116を受信するように構成し得、これは、ストレージスタック117内のI/O要求116を監視し、且つ/又はインターセプトする1つ又は複数のインタフェース131Aを介してI/O要求116を受信することを含み得る(例えば、I/Oフィルタ、ドライバ等のエージェント133の使用により)。I/O要求116はCMS220にルーティングし得、CMS220は、仮想マシンキャッシュ213を使用してI/O要求に応え得る。
データ読み出し要求(例えば、読み出しI/O要求116)に応答して、CMS220は、I/O要求116に関連するデータが仮想マシンキャッシュ213内で利用可能か否かを判断し得、これは、CMS220がI/O要求116に対応するキャッシュタグ221を含むか否か(例えば、CMS220が、読み出し要求の識別子に対応する識別子を有するキャッシュタグ221を含むか否か)を判断することを含み得る。I/O要求116のキャッシュタグ221が見つかる場合、CMS220は、キャッシュタグ221に関連付けられたキャッシュアドレスを使用して、仮想マシンキャッシュ213からデータを要求し得る。キャッシュタグ221が見つからない場合、CMS220は、データを仮想マシンキャッシュ213に許容すべきか否かを判断し得る(様々なキャッシュ許容ポリシー及び/又はキャッシュタグ221の利用可能性等の他の要因に基づいて)。CMS220は、要求に対応するキャッシュタグ221を割り振り、プライマリストレージリソース240B内のデータにアクセスし、データをキャッシュ216に記憶するように仮想マシンキャッシュ213に命令することにより、仮想マシンキャッシュ213内にデータを許容し得る。データを許容することは、持続性レベルモジュール134及び/又は持続性レベルポリシー135を使用して、I/O要求116の持続性レベルを決定することを更に含み得る。持続性レベルは、I/O要求116のキャッシュモードを指定し得る。例えば、I/O要求116の持続性レベルは、エフェメラルキャッシュモードでデータを記憶すべきであることを指定し得、それにより、データは仮想マシンキャッシュ213に書き込まれ、プライマリストレージリソース240Bにライトスルーされない。
データ書き込み要求(例えば、書き込みI/O要求116)に応答して、CMS220は、上述したように(例えば、I/O要求116に対応するキャッシュタグ221があるか否かを判断することにより)、要求に関連するデータが仮想マシンキャッシュ213に許容されているか否かを判断し得る。I/O要求116のキャッシュタグ221が存在しない場合、CMS220は、上述したように、仮想マシンキャッシュ213にデータを許容するか否かを判断し、I/O要求116の持続性レベル等を決定し得る。キャッシュタグ221が存在する場合、CMS220は、特に、データのキャッシュモード(例えば、ライトスルーキャッシュ、エフェメラルキャッシュ等)であり得る、持続性レベルモジュール134によって示される特定の持続性レベルに従って、I/O要求116に応えるように構成し得る。エフェメラル持続性レベルに従って書き込みI/O要求116に応えることは、データをプライマリストレージリソース240Bに記憶せずに、I/O要求116のデータを仮想マシンキャッシュ213に記憶することを含み得る。ライトスルー持続性レベルに従って書き込みI/O要求に応えることは、仮想マシンキャッシュ213及び1つ又は複数のプライマリストレージリソース240Bの両方にI/O要求のデータを記憶することを含み得る。I/O要求116は、要求のデータが1つ又は複数のプライマリストレージリソース240Bに記憶されるまで完了しないことがある。
幾つかの実施形態では、仮想マシン208A〜Nは、ホスト202から他のホスト計算装置に転送し、且つ/又は配置換えされるように構成し得る。仮想化カーネル210(又は他の仮想化レイヤ)は、ローカルディスクストレージ等のホスト202のローカルリソースを参照する仮想マシンが転送されないように構成し得る。したがって、仮想マシン208A〜Nは、仮想マシンの移行を妨げないアクセスメカニズムを使用して仮想マシンキャッシュ213にアクセスするように構成し得る。幾つかの実施形態では、CMS220は、仮想化カーネル210が共有装置(及び/又は仮想マシン移行を妨げない装置)として扱うエミュレートされた共有ストレージ及び/又は「仮想ディスク」又はVLUNを通して仮想マシンキャッシュ213にアクセスするように構成し得る。仮想ディスクは、ホスト202及び/又は仮想化カーネル210によってサポートされるVMDKとして提供し得る。幾つかの実施形態では、I/Oインタフェース218は、仮想マシン208A〜NのI/O動作を監視し、仮想ディスクに向けられたI/O要求116及び/又は動作をインターセプトし、インタフェース241を介してI/O要求116(及び他の関連データ)を仮想マシンキャッシュ213に転送するように構成されるI/Oフィルタ219を備え得る。I/Oフィルタ219は、仮想マシン208A〜Nのスタック117のSCSI及び/又はvSCSIの「上」で動作し得る。I/Oフィルタ219は、仮想マシン208A〜NのCMS220と仮想マシンキャッシュ213との間でI/O要求116(及び応答)を渡すことを提供し得る。I/Oフィルタ219は、構成、コマンド、及び/又は制御データ等の他のデータの通信を更に提供し得る。仮想ディスクは実際の記憶に使用されず、CMS220と仮想マシンキャッシュ213との間の通信インタフェースとして使用されるため、CMS220と仮想マシンキャッシュ213との間での通信に使用される仮想ディスクは非常に小さくてよい(例えば、数メガバイト)。
仮想マシン208A〜Nは、共有ストレージを他の方法でエミュレートするように構成し得る。例えば、幾つかの実施形態では、仮想マシン208A〜Nは、1つ又は複数の「共有」VLUNディスクを複数のホスト202にわたって複製するように構成し得、それにより、ホストにとって、VLUNディスクは共有装置であるように見える。例えば、VLUNディスクは、同じシリアルナンバー又は他の識別子を共有し得る。ホスト202及び/又は仮想化カーネル210は、例えば、VLUNディスクを共有装置として扱うことができ、仮想マシン208A〜Nをホスト202に転送し、ホスト202から転送できるようにする。しかし、上述したVDMK手法はこの手法よりも優れた利点を提供し得、その理由は、作成する必要がある「共有」ディスク数がより少なく、それにより、限られたストレージ参照(例えば、仮想マシンは256の記憶装置の参照に制限され得る)の枯渇を回避し得るためである。
キャッシュプロビジョナモジュール214は、仮想マシン208A〜N間でキャッシュリソースをプロビジョニングするように構成し得る。特定の仮想マシン(例えば、仮想マシン208A)に関連付けられた割り振り情報は対応するCMS220に通信し得、CMS220は、CMS220に割り振られたキャッシュリソースに従ってキャッシュタグ221メタデータを保持し得る。CMS220は、キャッシュプロビジョナモジュール214からのキャッシュリソースを要求するように構成し得る。要求は、CMS220の初期化動作(例えば、キャッシュ「ウォームアップ」)に応答して送信し得る。本明細書で使用される場合、キャッシュ初期化は、動作に向けてCMS220を準備する1つ又は複数の動作を指す。CMS220は、仮想マシン208A〜Nの電源投入、再開、新しいホストへの転送(例えば、VMotion(商標)動作)等に応答して、1つ又は複数の初期化動作を実行するように構成し得る。
CMS220は、キャッシュプロビジョナモジュール214により仮想マシン208A〜Nに割り振られているキャッシュストレージに従って、キャッシュタグ221を含むキャッシュメタデータを保持するように構成し得る。本明細書で使用される場合、「キャッシュタグ」は、識別子とキャッシュリソース(例えば、キャッシュ216内のページ又は他のキャッシュストレージロケーション)との間の関連付けを指す。したがって、キャッシュタグ221は、キャッシュプロビジョナモジュール214によって特定の仮想マシン208A〜Nに割り振られているキャッシュリソースを表し得る。本明細書で使用される場合、キャッシュタグ221の「識別子」は、キャッシュ216に記憶された(又は記憶される)データを参照するために、仮想マシン208A〜Nによって使用される識別子を指す。キャッシュタグ識別子は、論理識別子、アドレス(例えば、プライマリストレージシステム212でのアドレス等のメモリアドレス、物理ストレージアドレス、又は論理ブロックアドレス)、名前(例えば、ファイル名、ディレクトリ名、ボリューム名等)、参照等を含み得るが、これらに限定されない。
キャッシュタグ221は、各仮想マシン208A〜N内(例えば、ホスト202によって仮想マシン208A〜Nに割り振られた揮発性メモリ)に記憶し得る。幾つかの実施形態では、キャッシュタグ221は、仮想マシン208A〜Nのキャッシュデータの「作業セット」を表し得る。本明細書で使用される場合、キャッシュタグ221の「作業セット」は、特に、キャッシュ許容ポリシー、キャッシュ保持及び/又は退去ポリシー(例えば、キャッシュ老化メタデータ、キャッシュスチールメタデータ、最長時間未使用(LRU)、「ホット性」、及び/又は「コールド性」等)、キャッシュプロファイリング情報、ファイル及び/又はアプリケーションレベル知識等の1つ又は複数のキャッシュポリシーのアプリケーション等を通してCMS220により、キャッシュ216内に許容され、且つ/又は保持された1組のキャッシュタグを指す。したがって、キャッシュタグ221の作業セットは、特定の動作条件セット下での仮想マシン208A〜Nの最適なI/O性能を提供するキャッシュデータセットを表し得る。
幾つかの実施形態では、CMS220は、キャッシュタグ221を保存し、且つ/又は保持するように構成し得、これは、プライマリストレージシステム212、永続的キャッシュストレージ装置(例えば、キャッシュ216)等の不揮発性記憶媒体にキャッシュタグ221を存続させることを含み得る。本明細書で使用される場合、「スナップショット」は、特定の時間でのキャッシュの作業セットを指す。スナップショットは、キャッシュタグ221(及び/又は関連するキャッシュメタデータ)の全て又はサブセットを含み得る。幾つかの実施形態では、スナップショットは、キャッシュ装置216にデータを「ピン留め」することを更に含み得、それにより、1つ又は複数のキャッシュタグ221によって参照されたデータをキャッシュ216に保持させ得る。代替的には、スナップショットは、データ識別子のみを参照し得、土台となるデータキャッシュ216から除去(例えば、退去)することができ得る。CMS220は、永続性ストレージからのスナップショットをロードし、スナップショットを使用してキャッシュタグ221に移入するように構成し得る。スナップショットは、初期化動作(例えば、キャッシュウォームアップ)の一環として、及び/又は構成及び/又はユーザ嗜好に応答してロードし得る。例えば、CMS220は、特定のアプリケーション及び/又はサービスに最適化された異なるスナップショットをロードするように構成し得る。スナップショットをロードすることは、上述したように、キャッシュプロビジョナモジュール214からキャッシュストレージを要求することを更に含み得る。幾つかの実施形態では、仮想マシン208A〜Nが完全なスナップショットに十分なキャッシュ空間を割り振ることができない場合、CMS220は、スナップショットのサブセットをロードし得る。
幾つかの実施形態では、キャッシュプロビジョナモジュール214は、仮想マシン208A〜Nと、仮想マシン208A〜Nに割り振られた各キャッシュストレージロケーション(例えば、図5に示される)との間のマッピングを保持するように構成される。マッピングを使用して、仮想マシン208A〜Nのキャッシュデータをセキュア化し(例えば、キャッシュデータにマッピングされる仮想マシン208A〜Nへのアクセスを制限することにより)、且つ/又は本明細書に記載のように、ホスト202から他のリモートホストに転送された1つ又は複数の仮想マシン208A〜Nのキャッシュデータの保持及び/又は転送を提供し得る。
幾つかの実施形態では、仮想マシンキャッシュ213は、キャッシュリソース割り振りに「シンプロビジョニング」手法を実施するように構成される。各仮想マシン208A〜Nには、キャッシュ216の特定数のチャンク302を割り振り得る。しかし、キャッシュ216のキャッシュ容量全体は、各仮想マシン208A〜Nに「パブリッシュ」し得る(VLUN等の仮想ディスクを通して)。例えば、合計キャッシュサイズは1TBである場合、各仮想マシン208A〜Nは、キャッシュ容量の1TB全体へのアクセスを有することを報告し得る。しかし、キャッシュチャンク302の実際の割り振りは、仮想マシン208A〜Nの現在のニーズに基づいてかなり小さくし得る(例えば、256MB又は512MB)。割り振られたキャッシュチャンク302は、キャッシュ216内で利用可能なキャッシュアドレスの特定の範囲を表す。キャッシュプロビジョナモジュール214は、仮想マシン208A〜Nの作業セット要件が変化する(且つ/又は仮想マシン208A〜Nがホスト202に/から転送される)際、これらのキャッシュチャンク割り振りを動的に変更する。特定の仮想マシン208A〜Nに実際に割り振られるキャッシュチャンク302の数に関係なく、その仮想マシン208A〜Nは、1TBキャッシュ全体へのアクセスを有することを報告する。したがって、仮想マシン208A〜Nのゲストオペレーティングシステムは、サイズ1TBの仮想ディスクと共に動作し得る。したがって、仮想マシン208A〜Nに割り振られる実際の記憶空間は、ゲストオペレーティングシステムがエラー状況を示さずに動的に変更することができる。したがって、キャッシュタグ221によって参照されるキャッシュページ304は、キャッシュ216内の「間接的」アドレスに対応し得る。
図5は、仮想マシン208A(VM−1)に露出される仮想キャッシュストレージリソースと、仮想マシン208Aに実際に割り振られた土台をなす物理キャッシュアドレスとの間のマッピング500の一実施形態を示す。仮想マシン208Aに割り振られた仮想キャッシュストレージは、キャッシュチャンクVM−1、VM−1、VM−1、・・・、VM−1(529)の連続範囲として示される。連続キャッシュチャンク529は、上述したように、固定サイズ仮想ディスク229を通して露出し得る。仮想マシン208Aに実際に割り振られる物理キャッシュストレージは、キャッシュ216216の物理アドレス空間306内のチャンクVM−1、VM−1、VM−1、VM−1の不連続セットとして示される。図5に示されるように、キャッシュ216216の物理アドレス空間306内のチャンク302は、不連続であり、且つ/又は他の仮想マシン202B〜Nに割り振られたチャンク302でインターレースし得る。図5の図は物理順での異なるロケーションのうちの幾つかを示すが、仮想マシン208Aに割り振られたキャッシュチャンク302は、物理キャッシュリソース(例えば、利用可能なチャンク302)の利用可能性に従ってランダム順に配置し得る。
マップモジュール514は、仮想キャッシュストレージ割り振り(例えば、仮想マシン208A内のキャッシュタグ221の間接的キャッシュアドレス)を物理キャッシュリソース(例えば、キャッシュチャンク302及び/又はキャッシュページ304)にマッピングするように構成し得る。幾つかの実施形態では、マッピングは、仮想マシン208A〜Nの間接的キャッシュアドレスと、キャッシュ216の物理アドレス空間306との間の関連付けの「任意対任意」インデックスを含み得る。
幾つかの実施形態では、仮想マシンキャッシュ213は、マップモジュール514を利用して、キャッシュ216内に記憶されたデータをセキュア化し得る。例えば、マップモジュール514のマッピングは、アクセス制御の一形態として使用し得、物理キャッシュチャンク302へのアクセスは、物理キャッシュチャンク302がマッピングされ、且つ/又は割り振られる仮想マシンに制限される。例えば、VM−1と記されたキャッシュチャンクは、チャンク302がマッピングされる仮想マシン(例えば、仮想マシン208A)のみにアクセス可能であり得る。さらに、マッピングレイヤの間接的アクセスにより、仮想マシン208A〜Nは、他の仮想マシン208A〜Nの物理キャッシュチャンク302を直接参照し、且つ/又はアドレス指定することが不可能であり得る。
マップモジュール514は、対応する仮想マシンのVMIDを使用して仮想キャッシュストレージをマッピングするように構成し得る。したがって、仮想マシンがホスト202間で転送され、且つ/又は移行する場合、VMIDと仮想マシンのキャッシュデータとの間のマッピングは、有効なままであり得る(例えば、VMIDを所与として、対応する仮想マシン208A〜Nの保持キャッシュデータを識別し、アクセスし得る)。仮想化環境においてキャッシュストレージを動的に割り振るシステム及び方法のさらなる実施形態は、「Managing Data Input/Output Operations」という名称の2011年7月27日に出願された米国特許出願第13/192,365号明細書に開示されており、これを参照により本明細書に援用する。
図2Bを参照すると、キャッシュプロビジョナモジュール214は、キャッシュリソースを仮想マシン208A〜Nに動的に割り振るように構成し得る。プロビジョニングされると、各仮想マシン208A〜Nは、キャッシュストレージリソースの所定の範囲及び/又は連続範囲(例えば、キャッシュチャンク302及び/又はキャッシュページ304)にアクセスを有し得る。キャッシュプロビジョナモジュール214は、各仮想マシン208A〜Nに動的にプロビジョニングすることができるキャッシュチャンク302にキャッシュ216を分割するように構成し得る。
幾つかの実施形態では、仮想マシン208A〜Nは、固定サイズを有するディスクと併用されるように構成し得、ディスク(例えば、仮想ディスク229)のサイズに急で不規則な変更がある場合には不適切に動作し得る。したがって、キャッシュプロビジョナモジュール214は、土台をなすキャッシュリソースの動的再割り振りを提供しながら、固定サイズを有するように見えるキャッシュストレージリソースを露出するように構成し得る。幾つかの実施形態によれば、図2Bに示されるように、キャッシュプロビジョナモジュール214は、仮想ディスクドライバ215を使用して固定サイズキャッシュリソースをエミュレートし得、仮想ディスクドライバ215は、仮想マシン208A〜N内の各仮想ディスク(VLUNディスク)229を露出するように構成し得る。したがって、キャッシュタグ221は、仮想ディスク229内のキャッシュリソースを参照し得、キャッシュ216内の物理キャッシュリソースを間接的に参照し得る(例えば、キャッシュタグ221は、本明細書に記載のように、マップモジュール514の仮想ディスクマッピングに従ったキャッシュリソースへの間接的な参照を含み得る)。仮想ディスク229は、キャッシュ216の全容量(例えば、2TB)を含む固定サイズを有するように見え得、一方、キャッシュ216の一部のみが、キャッシュプロビジョナモジュール214毎に仮想マシン208A〜Nに実際に割り振られる(例えば、4GB)。したがって、キャッシュプロビジョナモジュール214は、仮想マシン208A〜Nの動作に悪影響を及ぼさずに、キャッシュストレージを仮想マシン208A〜Nに動的に割り振るように構成し得る。仮想ディスクドライバ215及び/又はマップモジュール514は、仮想マシン208A〜Nの間接的参照と物理キャッシュリソースとの間のマッピングを管理し得る。
キャッシュプロビジョナモジュール214は、仮想マシン208A〜Nの異なるキャッシュ要件に従って仮想マシン208A〜Nに異なる量のキャッシュストレージを動的に割り振るように構成し得る。キャッシュプロビジョナモジュール214はマップモジュール514を備え得、マップモジュールは、仮想マシン208A〜Nに露出される(仮想ディスク229を介して)仮想ストレージリソースをキャッシュ216内の物理アドレスにマッピングするように構成される。
上述したように、仮想ディスクドライバ215は、固定サイズの連続キャッシュストレージ割り振りを仮想マシン208A〜Nに提示する(各仮想ディスク229を通して)ように構成し得る。マップモジュール514は、仮想ディスク229への参照を物理キャッシュアドレス(例えば、キャッシュチャンク302及び/又はキャッシュページ304)にマッピングするように構成し得る。例えば、仮想マシン208Aにプロビジョニングされるキャッシュストレージは、キャッシュ216内の空間524として図で示される。キャッシュ空間524は4GBを含み得る。しかし、仮想ディスクドライバ215は、この限られたキャッシュ容量を固定2TB仮想ディスク229として提示し得る。さらに、仮想マシン208A〜Nに割り振られたキャッシュ容量(キャッシュチャンク302)は、任意のようにキャッシュ216の物理アドレス空間内で分散し得(チャンク302は不連続であり得る)、一方、仮想ディスク229を通して表されるキャッシュ容量は連続し得る。キャッシュプロビジョナモジュール214は、キャッシュ要件の変化に応答して、且つ/又は仮想マシン208A〜Nがホスト202に移るか、又はホスト202から移る場合、仮想マシン208A〜N間のキャッシュストレージ割り振りを動的にシフトするように構成し得る。
CMS220は、1つ又は複数のI/Oインタフェース218を通して仮想マシンキャッシュ213とインタフェースするように構成し得る。CMS220は、I/Oインタフェース218のSCSIフィルタ319を備え得、このフィルタは、仮想マシン208A(及び内部で動作するCMS220)と仮想マシンキャッシュ213との間でデータ及び/又は制御情報を通信するように構成し得る(仮想ディスク229を介して)。幾つかの実施形態では、SCSIフィルタ319は、仮想マシン208AのI/Oスタック(又は他のI/Oインフラ及び/又はメッセージングシステム)に組み込み得る。SCSIフィルタ319は、仮想ディスク229を識別し、仮想ディスク229内の割り振り変化(例えば、キャッシュプロビジョナモジュール214による動的割り振り)に応答することなどを行うように構成し得る。上述したように、仮想ディスク229は、仮想マシン208Aに割り振られた実際の物理キャッシュ容量よりも大きな固定記憶容量を報告するように構成し得、それにより、キャッシュプロビジョナモジュール214は、仮想マシン208Aに悪影響を及ぼさずに、キャッシュストレージを動的にプロビジョニングすることができる。幾つかの実施形態では、SCSIフィルタ319は、仮想ディスク229の実際の物理容量を管理するように構成し得、仮想マシンホスト202の他のアプリケーション及び/又はオペレーティングシステムから隠し得る。例えば、VLUNディスク229は、読み出し専用記憶装置として提示し得、仮想マシン208A及び/又はホスト202内の他のアプリケーションが仮想ディスク229にデータを書き込まないようにし得る。
キャッシュプロビジョナモジュール214は、SCSIフィルタ319を含む通信リンク243により、仮想マシン208Aに割り振られた実際の物理キャッシュストレージを報告し得る。通信リンク243は、仮想ディスクドライバ215とSCSIフィルタ319との間のI/Oトラフィックとは別個に動作し得る。したがって、非同期帯域外メッセージを仮想ディスクドライバ215とSCSIフィルタ319との間で送信し得る。SCSIフィルタ319は、CMS220に対して割り振り情報(及び他のコマンド及び/又は制御情報)を報告し得、CMS220は割り振り情報を使用して、仮想マシン208Aが利用可能なキャッシュタグ221の数を決定し得る。したがって、キャッシュは、仮想マシン208A〜Nに関してシンプロビジョニングし得、キャッシュ割り振りは、仮想マシン208A〜Nのキャッシュ要件に従って動的に変更し得る。
図6は、CMS220の一実施形態を示すブロック図である。CMS220は、キャッシュポリシーモジュール601、アドレス空間変換モジュール602、キャッシュタグマネージャ604、クロックスイープモジュール606、スチール候補モジュール608、キャッシュページ管理モジュール610、有効ユニットマップモジュール612、ページサイズ管理モジュール614、インタフェースモジュール616、キャッシュタグ保持モジュール618、及びキャッシュタグスナップショットモジュール619を含む1つ又は複数のモジュールを備え得る。
キャッシュポリシーモジュール601は、様々なキャッシュ許容基準及び/又はポリシーに基づいて、キャッシュに許容するデータを選択するように構成し得る。キャッシュポリシーモジュール601は、キャッシュに許容されたデータの持続性レベルを決定するように更に構成し得る。持続性レベルは、特に、ライトスルー、ライトバック、エフェメラル等のデータのキャッシングモード及び/又は構成を決定し得る。幾つかの実施形態では、キャッシュポリシーモジュール601は、持続性レベルをキャッシュデータに割り当てるために持続性レベルモジュール134及び持続性レベルポリシー135を含む。代替又は追加として、キャッシュに許容すべきデータの持続性レベルは、本明細書に記載のように、ストレージモジュール130等の別のエンティティ又はプロセスによって決定し得る。CMS220はキャッシュ実行モジュール636を更に備え得、これは、選択された持続性レベルに従ってデータをキャッシュするように構成し得る。したがって、キャッシュ実行モジュール636は、1つ又は複数の異なるキャッシュモード及び/又は構成でデータをキャッシュするように構成し得る。例えば、キャッシュ実行モジュール636は、ライトスルーキャッシュモードでデータをキャッシュするように構成し得、これは、データを1つ又は複数のプライマリストレージリソース240B〜N及び仮想マシンキャッシュ213に書き込むことにより、書き込みI/O要求116に応えることを含み得る。CMS220は、データが1つ又は複数のプライマリストレージリソース240B〜Nに書き込まれるまで、書き込みI/O要求116の完了を確認しない。キャッシュ実行モジュール636は、データをエフェメラルキャッシュモードでキャッシュするように構成し得、これは、データをプライマリストレージリソース240B〜N又は他のバッキングストアに記憶せずに、仮想マシンキャッシュ213にデータを書き込むことにより、書き込みI/O要求116に応えることを含み得る。したがって、CMS220は、データが仮想マシンキャッシュ213に書き込まれることに応答して、エフェメラルキャッシュモードが割り当てられた書き込みI/O要求116の完了を確認し得る。
変換モジュール602は、キャッシュタグ221の論理識別子(例えば、プライマリストレージシステム内のアドレス)を仮想マシンキャッシュ213内のキャッシュストレージロケーション(例えば、キャッシュアドレス、キャッシュチャンク302、キャッシュページ304等)に相関付けるように構成し得る。上述したように、キャッシュタグ221は、仮想ディスク229内の「間接的」及び/又は「仮想」キャッシュストレージリソースに対応し得、キャッシュストレージリソースは、キャッシュプロビジョナモジュール214及び/又はマップモジュール514によって物理キャッシュストレージリソース(例えば、キャッシュチャンク302)にマッピングし得る。
キャッシュタグマネージャ604は、本明細書に記載のように、CMS220に割り振られたキャッシュタグを管理するように構成し得、管理することは、仮想マシン識別子(例えば、論理識別子、アドレス、プライマリストレージアドレス)とキャッシュ216内のデータとの間の関連付けを保持することと、アクセス特徴、持続性レベル、キャッシュモード等のキャッシュメタデータを保持することとを含み得る。
クロックスイープモジュール606は、特に、1つ又は複数のクロックハンドスイープタイマを使用して、キャッシュ老化メタデータを決定し、且つ/又は保持するように構成し得る。スチール候補モジュール608は、特に、クロックスイープメタデータ又は他のキャッシュポリシーに基づいて、退去候補であるキャッシュデータ及び/又はキャッシュタグを識別するように構成し得る。幾つかの実施形態では、スチール候補モジュール608は、キャッシュタグ退去参照をキャッシュタグ221の持続性レベルメタデータに基づかせるように構成し得る。例えば、スチール候補モジュール608は、退去のためにエフェメラルキャッシュモードでキャッシュされるキャッシュタグ221を選択しなくてもよい。代替的には、スチール候補モジュール608はまず、退去前に、エフェメラルキャッシュタグ221をプライマリストレージリソース240B〜Nにフラッシュし得る。
キャッシュページ管理モジュール610は、キャッシュリソース(例えば、キャッシュページデータ)及び関連する動作を管理するように構成し得る。有効ユニットマップモジュール612は、仮想マシンキャッシュ213及び/又はプライマリストレージリソース240Bに記憶された有効データを識別するように構成し得る。ページサイズ管理モジュール614は、本明細書に記載のように、様々なページサイズ解析及び調整動作を実行して、キャッシュ性能を強化するように構成し得る。インタフェースモジュール616は、他の構成要素、装置、及び/又はシステムがCMS220と対話できるようにする1つ又は複数のインタフェースを提供するように構成し得る。
キャッシュタグ保持モジュール618は、CMS220が異なるホストに転送されることに応答して、キャッシュタグ221を保持するように構成し得る。上述したように、キャッシュタグ221は、キャッシュの作業セットを表し得、作業セットは、1つ又は複数のキャッシュ許容及び/又は退去ポリシー(例えば、クロックスイープモジュール606及び/又はスチール候補モジュール608)の使用を通して、仮想マシン208(及び/又は仮想マシン208A〜Nで実行中のアプリケーション)のI/O特徴に応答して作成し得る。キャッシュタグ保持モジュール618は、キャッシュタグが参照する基本キャッシュデータが新しいホストのキャッシュストレージ装置で利用可能ではないことにもかかわらず、仮想マシン208が新しいホスト202に転送された(例えば、特にVMotion(商標)動作でホスト202Aからホスト202Bに転送された)後、キャッシュタグ221を保持するように構成し得る。しかし、本明細書に記載の仮想マシンキャッシュ213は、新しいホストのキャッシュ216に移入するように構成し得、それにより、CMS220は引き続き、キャッシュタグ221の作業セットを使用することができる。
上述したように、保持キャッシュタグ221のデータは、前のホスト(及び/又は前のプライマリストレージリソース240B〜N又は他のソース)から新しいホストに転送し得る。キャッシュデータは、デマンドページングモデルを介して転送し得、これは、様々な保持キャッシュタグ221のキャッシュデータが仮想マシン208によって要求される際、キャッシュに「オンデマンド」で移入することを含み得る。代替又は追加として、キャッシュデータは、「バルク転送」動作でプリフェッチし、且つ/又は転送し得、これは、キャッシュタグデータへの要求から独立してキャッシュデータを転送することを含み得る。幾つかの実施形態では、データは、キャッシュ転送ポリシーに基づいて選択的にプリフェッチし得、キャッシュ転送ポリシーは、少なくとも部分的に、クロックスイープモジュール606及び/又はスチール候補モジュール608のキャッシュ老化メタデータ並びに/或いは他のキャッシュポリシーメタデータ(例えば、ホット性、コールド性、最長時間未使用等)に基づき得る。
キャッシュタグスナップショットモジュール619は、キャッシュの作業セット(例えば、キャッシュタグ221)の1つ又は複数の「スナップショット」を保持するように構成し得る。上述したように、スナップショットは、特定の時間での1組のキャッシュタグ221を指す。スナップショットモジュール619は、上述したように、キャッシュタグ221のスナップショットを持続性記憶媒体に記憶し、且つ/又は記憶されたスナップショットをロードするように構成し得る。
上述したように、CMS220は、1つ又は複数の異なる持続性レベルに従ってデータをキャッシュするように構成し得、これは、データを1つ又は複数の異なるキャッシュモード及び/又は1つ又は複数の異なるプライマリストレージ装置240Bにキャッシュすることに対応し得る。CMS220は、適応持続性レベルを利用して、I/O性能を向上させ、且つ/又はホスト202の圧密比を増大させ得る。本明細書で使用される場合、ホスト202の「圧密比」は、ホスト202で動作することができる仮想マシン208A〜Nの数を指す。ホスト202で動作することができる仮想マシン208A〜Nの数は、ホスト202の計算リソース及び/又はホスト202のI/Oオーバーヘッドによって制限され得る。
高圧密VDI環境では、仮想マシン208A〜Nは共通I/O特徴を共有し得、これは、ホスト202のI/Oインフラに負担を掛け得る。仮想マシン208A〜Nは、同様のデータセット(例えば、オペレーティングシステム、アプリケーション、ユーザプロファイル情報等)を共有し得、仮想マシン208A〜Nは、同様の時間(例えば、ブートアップ中、電源投入時、ログイン時等)にこの共通のデータにアクセスするように構成し得る。その結果生じる「ブートストーム」は、プライマリストレージリソース240B〜N及び/又はホスト202のI/Oインフラには負担が大きすぎることがあり、全体システム性能を著しく低下させるおそれがある。同様のファイルアクセス「ストーム」が、仮想マシン208A〜Nが特定のアプリケーションをロードし、共有データにアクセスし、ユーザプロファイル情報にアクセスし、ログインプロセスを実行すること等に応答して生じるおそれがある。さらに、各仮想マシン208A〜Nは各CMS220を備え得、各CMS220は、共有仮想マシンキャッシュ213に同様のデータセットを許容し得、これにより、仮想マシンキャッシュ213に複製データを充填し得る。読み出し中心I/O動作の性能を向上させるシステム及び方法の実施形態が、「Systems and Methods for a De−Dupilcation Cache」という名称の2013年1月25日に出願された米国特許出願第13/750,904号明細書において開示される。
書き込み中心I/O動作の性能は、本明細書に開示される適応持続性レベルの使用によって向上させ得る。例えば、仮想マシン208A〜Nは、長期間保存する必要がない(例えば、リブートサイクル間で保持する必要がない)データを書き込む多数のI/O要求116を発行し得る。そのようなデータはエフェメラル(例えば、「一時」、「使い捨て」、及び/又は「不必要」データ)と見なし得る。本明細書で使用される場合、「リブートサイクル」又は「再開動作」は、特に、電源の損失、ハードウェア故障、ソフトウェア故障、意図的なシャットダウン又は再開等によって生じ得る計算環境110及び/又はストレージモジュール130の意図的又は非意図的な再開及び/又はリブートを含む。したがって、再開動作は、システムリブート、リセット、若しくはシャットダウンイベント、電源故障、電力の損失、若しくは電力故障イベント、又は別の電力中断を含み得る。エフェメラルデータは、計算装置(例えば、仮想マシン208A〜N)が動作中である間には極めて重要なものであり得るが、リブートサイクル及び/又は再開イベント後には必要ではないことがある。そのようなデータの例としては、仮想メモリファイル(例えば、pagefile.sys等)等のスワップファイル、コンテンツ一時ディレクトリ(例えば、/tmp等)等の一時ファイル、一時アプリケーションファイル(例えば、Microsoft Word(登録商標)等のローカルキャッシュ)等が挙げられるが、これらに限定されない。逆に、「永続」データは、ブートサイクル間及び/又は再開イベント間で保持すべきデータを指す。
幾つかの実施形態では、CMS220は、不必要データに関連するI/O要求を識別するように構成され、I/O要求のデータをエフェメラルキャッシュ構成でキャッシュし得る。上述したように、エフェメラルキャッシュ構成は、データがキャッシュストレージに書き込まれる(及び/又は読み出される)が、プライマリストレージリソース240B〜Nにライトスルー、ライトバック、及び/又はコピーされないキャッシュモードを指す。したがって、エフェメラルキャッシュに記憶されたデータは、データがキャッシュから退去する場合及び/又はキャッシュがリブート、クラッシュ等で失われた場合、失われ得る。
データをエフェメラルキャッシュモード及び/又は構成で記憶することは、大きな性能利点を提供し得る:エフェメラルキャッシュデータに関連するI/O要求116は、プライマリストレージリソース240B〜Nへのアクセスを要求せず、プライマリストレージリソース240B〜Nに関連付けられる待ち時間は、I/O要求116に応えるために「クリティカルパス」から除去し得る。本明細書で使用される場合、「クリティカルパス」は、I/O動作のタイミング及び/又は待ち時間パスを指す。上述したように、ライトスルーキャッシュ構成では、書き込みI/O要求116は、データがプライマリストレージリソース240B〜Nにライトスルーされるまで完了しない(例えば、制御権をストレージクライアント106A〜Nに戻さない)ことがある。したがって、I/O動作のクリティカルパスは、1つ又は複数の高待ち時間プライマリストレージアクセスを含む。逆に、エフェメラルデータに関連するキャッシュ動作は、プライマリストレージリソース240B〜Nにアクセスせずに、キャッシュ内で排他的に完了し得る。したがって、エフェメラルI/O動作のクリティカルパスは、プライマリストレージリソース240B〜Nへの高待ち時間アクセスを含まない。したがって、ストレージクライアント106A〜Nの待ち時間を低減することに加えて、エフェメラルキャッシングは、I/O帯域幅及び/又はプライマリストレージリソース240B〜Nへの付加を低減する追加利点を提供し得る。
幾つかの実施形態では、CMS220は、キャッシュポリシーモジュール601及び/又は持続性レベルモジュール134によって決定されるI/O要求116の持続性レベルに基づいて、エフェメラルキャッシングのデータを識別し得、キャッシュポリシーモジュール601及び/又は持続性レベルモジュール134は、持続性レベルポリシー135(例えば、持続性レベル基準)に従ってI/O要求の持続性レベルを決定し得、持続性レベルポリシーは、I/O要求116の属性、I/O要求116から引き出される推測、I/O要求116に関連するプロファイリングメタデータ、ファイルレベル知識、アプリケーションレベル知識、嗜好及び/又は構成、テスト及び経験等のうちの1つ又は複数に基づき得る。
図7Aは、CMS220の別の実施形態のブロック図である。CMS220は、I/Oインタフェース218を介してキャッシュストレージリソース240Aを備え、且つ/又は通信可能に結合し得る。CMS220は動作環境711内に配置し得、この環境は、ベアメタル計算環境で動作するオペレーティングシステムを含み得る。したがって、CMS220は、I/Oインタフェース218を介して直接、キャッシュストレージリソース240Aにアクセスするように構成し得、I/Oインタフェース218はAPI、バス、プロトコル等を含み得る。幾つかの実施形態では、動作環境711は、仮想オペレーティングシステム、ゲストオペレーティングシステム等の仮想動作環境であり得る。CMS220は、仮想キャッシュストレージリソース240Aにアクセスするように構成し得、上述したように、これは仮想ディスク229として表し得る。CMS220は、上述したように、SCSIフィルタ319を介してデータ、制御データ、及び/又は構成データをキャッシュストレージリソース240Aに転送するとともに、キャッシュストレージリソース240Aから転送するように更に構成し得る。
CMS220のI/O要求受信器モジュール132は、動作環境711のI/Oスタック117内のI/O要求を監視するように構成されるエージェント133を備え得る。I/Oスタック117は、ファイルシステムレイヤ717Aを含む複数のレイヤ717A〜Nを含み得る。エージェント133は、任意のレイヤ717A〜N内のI/O要求116を監視するように構成し得る。I/O要求は、ファイルを開く、ファイルを閉じる、読み出し、書き込み、変更等のファイル動作に関連し得る。エージェント133は、ボリュームマウント及び/又はアンマウント、ディスクマウント及び/又はアンマウント、ページングI/O等の他のタイプのI/O要求も監視し得る。エージェント133は、計算環境111、I/Oスタック117等によって提供されるインタフェースを使用して、I/O要求116を監視し得る。したがって、エージェント133は、1つ又は複数のI/Oモニタ、ファイルフィルタドライバ、ボリュームフィルタドライバ、SCSIフィルタドライバ、及び/又は他の適する監視及び/又はフィルタリングモジュールを含み得る。
CMS220は、特に、キャッシュ許容基準、キャッシュ退去基準等を定義し得るキャッシュポリシーモジュール601を備え得る。したがって、キャッシュポリシーモジュール601は、本明細書に記載のように、クロックスイープモジュール、スチール候補モジュール、キャッシュタグ保持モジュール、及び/又はキャッシュタグスナップショットモジュールを含み得る。CMS220は、キャッシュポリシーモジュール601を使用して、キャッシュアクセスメタデータ、許容基準(例えば、ファイル選択基準)等に基づいて、キャッシュ許容及び/又は退去判断を下し得る。
幾つかの実施形態では、キャッシュポリシーモジュール601は、持続性レベルを決定し、且つ/又はI/O要求116に割り当てるように更に構成し得る。I/O要求の持続性レベルは、特にストレージリソース240A内に許容されるデータのキャッシュモード及び/又は構成を決定し得る。したがって、キャッシュポリシーモジュール601は、本明細書に記載のように、I/O要求データの持続性レベルを決定するように構成される持続性レベルモジュール734を含み得る。幾つかの実施形態では、持続性レベルを決定し、且つ/又はI/O要求116に割り当てることは、I/O要求116の1つ又は複数の特徴に持続性レベル基準を適用することを含み得、特徴は、ファイル名、パス、ディレクトリ、ボリューム等のファイルレベル基準を含み得る。図7Bは、持続性レベルポリシー735の一実施形態を示す。図7Bに示されるように、持続性レベル基準737は、I/O要求116のファイル関連特徴に関連する。持続性レベルポリシー735は、特定のファイル名(例えば、「pagefile.sys」)、ファイルパス、及び/又はボリュームを各持続性レベル739にマッピングし得る。「pagefile.sys」及び/又は「ローカルキャッシュ」データ等の一時的な不必要データに関連するファイルには、エフェメラル(ライトネバー)キャッシュモードを指定する持続性レベル739を割り当て得る。持続性レベル739の他の潜在的な特徴は、これらの実施形態の詳細を曖昧にしないように、省略される。
持続性レベルポリシー735は、他のタイプの持続性レベルを指定し得る。例えば、重要ファイルのデータは、ライトスルーキャッシングモードを示す持続性レベル739で記憶し得る。持続性レベル739は、データを1つ又は複数の冗長ストレージリソース240B〜Nに記憶すべき(例えば、特定のRAIDレベル、ミラーリング構成等で)ことを更に示し得る。これに応答して、CMS220は、「\\Application\critical data」ファイル選択基準を満たすファイルに関連するI/O要求116のデータを冗長プライマリストレージリソース240A〜N及び/又は対応するストレージモードでライトスルーするように構成し得る。ストレージモジュール130(図7Aに図示せず)等の他のストレージサービスは、持続性レベルポリシー735を利用して、特定のI/O要求116がCMS220によって応えられるか否かに関係なく、指定された持続性レベルに従ってデータを記憶し得る。
持続性レベルポリシー735は、ファイル関連特徴に追加して、且つ/又はファイル関連特徴の代わりに他のI/O要求特徴を組み込み得る。例えば、持続性レベルポリシー735は、一時的な不必要書き込み動作を利用することがわかっているアプリケーションを識別し、且つ/又は指定し得、それにより、そのようなアプリケーションのI/O要求116は、エフェメラルキャッシュ構成を含む持続性レベル739に従ってキャッシュされる。例えば、持続性レベル基準737は、Word(登録商標)アプリケーションから発せられ、ローカルキャッシュ内のファイルに向けられたI/O要求116を、エフェメラル持続性レベル739で応えるべきであることを示し得る。持続性レベルポリシー735は、デフォルトライトスルーキャッシュモード持続性レベル739等のデフォルト及び/又はワイルドカード基準を更に含み得る。
CMS220は、動作環境711の既存のキャッシュマネージャ709をトランスペアレントに拡張するように構成し得る。したがって、CMS220及び/又はエージェント133は、非ページングI/O要求、ページングI/O要求、直接I/O要求等を含むが、これらに限定されない異なるI/O要求タイプを区別するように構成し得る。CMS220及び/又はエージェント133は、プライマリストレージリソース240B〜Nに直接アクセスすることが予期される直接I/O要求及び/又は既存のキャッシュマネージャ709に関連する非ページングI/O要求等の特定のタイプのI/O要求116を無視するように構成し得る。
本明細書に開示されるように、持続性レベルモジュール134は、少なくとも部分的に、I/O要求116のターゲット及び/又はソース(例えば、ファイル名)に基づいて、持続性レベルをI/O要求116に割り当てる。幾つかの実施形態では、CMS220はI/O要求メタデータ733を保持し得、これは、I/O要求116のソース識別子(例えば、ファイル名、パス等)、I/O要求116の持続性レベル等を含み得るが、これらに限定されない。エージェント133は、ファイルが開かれる、読み出される、削除され、作成される、切り詰められる、変更される、書き込まれる等のファイル動作に関連する初期I/O要求116の検出に応答して、コンテキストメタデータ733を生成し得る。エージェント133は、I/O要求メタデータ(例えば、コンテキスト)733を使用して、I/O要求116(及び続けて、関連するI/O要求116)に、ファイル識別子、ファイル名、ボリューム識別子、ディスク識別子等の対応するソース識別子を関連付け得る。幾つかの実施形態では、エージェント133は、特定のファイル(及び/又は対応するI/O要求)がキャッシュ可能であるか(キャッシュに許容すべきデータに関連するか)否かの指示と、I/O要求116の持続性レベルとを含み得る。CMS220は、キャッシュ許容基準及び/又は持続性レベルポリシー735を再適用せずに、I/O要求メタデータ733にアクセスして、続くI/O要求116をキャッシュすべきか否かを判断し、且つ/又はI/O要求116の持続性レベルを決定し得る。I/O要求メタデータ733は、I/O要求116のコンテキストデータを含み得、且つ/又は別個のデータ構造に保持し得る。I/O要求メタデータ733は、任意の適するデータ構造(例えば、テーブル、ハッシュテーブル、マップ、又はツリー)で記憶し得、ソース識別子、ファイル名等でインデックスし得る。
一例では、ストレージクライアント106A〜Nは複数のファイルを開き得、対応するファイルオープンI/O要求116が生成される。エージェント133は、I/O要求116を対応するI/O要求メタデータ733に関連付け得、このメタデータは、ファイルのソース識別子、ファイルがキャッシュに許容されるか否かの指示、I/O要求116の持続性レベル等を含み得る。ストレージクライアント106A〜Nは、I/O動作をファイルに対して実行し得、これは、既存のキャッシュマネージャ709を使用して応え得、エージェント133によって無視し得る。計算環境111のキャッシュポリシーに従って、既存のキャッシュマネージャ709をフラッシュし得、その結果、1つ又は複数のページングI/O要求116が生成され、これはエージェント133によって検出し得る。それに応答して、エージェント133は、ページングI/O要求116のI/O要求メタデータ(例えば、コンテキスト)733にアクセスして、要求のソース識別子を特定し、I/O要求116がキャッシュに許容すべきデータに関連するか否かを判断し、I/O要求116の持続性レベルを決定するなどし得る。キャッシュに許容すべきデータに関連するI/O要求116は、本明細書に記載のように、割り当てられた持続性レベルに従ってCMS220を使用して応え得る。
上述したように、I/O要求116の持続性レベルは、持続性レベル基準737等の持続性レベルポリシー735に基づき得る。持続性レベルポリシー735は、ユーザ(又はプロファイリングプロセス等の他のエンティティ等)によって構成可能であり得る。CMS220は構成インタフェース740を備え得、それを通して、持続性レベルポリシー735及び/又は持続性レベル基準737を指定し得る。
幾つかの実施形態では、CMS220は、動作中、キャッシュタグ221の持続性レベルを変更するように構成し得る。例えば、CMS220は、エフェメラルキャッシュ構成で記憶されたデータをプライマリストレージリソース240B〜Nに「フラッシュ」するように構成し得る。本明細書で使用される場合、エフェメラルキャッシュデータをフラッシュすることは、エフェメラルキャッシュデータをプライマリストレージリソース240B〜Nに記憶すること、及び/又はデータをキャッシュから退去させることを含み得る。エフェメラルキャッシュデータは、特定のタイプのI/O要求116(例えば、切り詰め、トランザクション等の未処理I/O要求116)に関連するI/O要求116に応答して退去させ得る。そのようなI/O要求116に応答して、CMS220は、エフェメラルキャッシュデータをプライマリストレージリソース240B〜Nにフラッシュし、動作環境711がI/O要求116に応えられるようにし、データをキャッシュに再許容(エフェメラルキャッシュモード及び/又は構成で)するように構成し得る。
CMS220は、エフェメラルキャッシュデータに関連するI/O競合を管理するように更に構成し得る。幾つかの実施形態では、CMS220は、データをキャッシュから退去させることを含み得る、キャッシュタグ221を無効化することにより、I/O競合(例えば、キャッシュタグ221にアクセスする同時要求)を処理する。CMS220は、エフェメラルキャッシュデータを効率的に処理し得る。エフェメラルキャッシュデータはキャッシュ内のみに記憶される(且つエフェメラルキャッシュデータをフラッシュすることは、プライマリストレージリソース240B〜Nへの高待ち時間アクセスを必要とする)ため、CMS220は、エフェメラルキャッシュタグ221を無効化するよりもむしろ、競合する要求をスケジュールし、且つ/又は延期するように構成し得る。
I/Oスタック117内のI/O要求に従ってデータをキャッシュするシステム及び方法の更なる実施形態は、「Systems and Methods for a File−Level Cache」という名称の2012年8月25日に出願された米国特許出願第13/287,998号明細書及び「Systems and Methods for a Multi−Level Cache」という名称の2012年8月25日に出願された米国特許出願第13/288,005号明細書に開示されており、これらの両特許出願を参照により本明細書に援用する。
図7Cは、CMS220の別の実施形態を示す。上述したように、書き込みI/O要求116にエフェメラルキャッシュモードで応えることは、データをプライマリストレージリソース240B〜N(例えば、バッキングストア)に書き込まずに、データをキャッシュストレージリソース240Aに書き込むことを含み得る。したがって、エフェメラルキャッシュ動作は、動作環境711のI/Oスタック117の外部にある「高速パス」782において排他的に、より遅いプライマリストレージリソース240B〜Nでの動作を含まずに実施し得る。本明細書で使用される場合、「高速パス」動作は、動作環境711のI/Oスタック117の外部で行われ、且つ/又は遅いプライマリストレージリソース240B〜Nに関与せずに行われるI/O動作を指す。「低速バス」動作は、I/Oスタック117の1つ又は複数のレイヤに関与し、且つ/又は1つ又は複数のプライマリストレージリソース240B〜Nに対して実行されるI/O動作を指す。
非エフェメラルキャッシュモード(例えば、キャッシュポリシーモジュール601及び/又は持続性レベルモジュール734によって決定されるライトスルー及び/又はライトバックキャッシュモード)で記憶されるデータは、キャッシュストレージリソース240A及び/又は1つ又は複数のプライマリストレージリソース240B〜Nの両方にデータを記憶することを含み得る。非エフェメラルキャッシュモードI/O要求116に応答して、キャッシュ実行モジュール636は、データをキャッシュストレージリソース240Aに記憶する高速パス動作782及びデータを1つ又は複数のプライマリストレージリソース240B〜Nに記憶する低速パス動作784に要求を「フォーク」780するように構成し得る。本明細書で使用される場合、「フォーク」は、2つ以上の別個の処理動作(例えば、2つ以上の処理スレッド)を含むことを指す。CMS220は、低速パス動作784が完了するまで、I/O要求116の完了を確認しない。したがって、低速パス784は、非エフェメラルI/O要求116に応える「クリティカルパス」を決定し得る。本明細書で使用される場合、「クリティカルパス」は、処理動作(例えば、処理ステップ及び/又はパスのタイミング及び/又は待ち時間を決定する処理パスを指す。非エフェメラルI/O要求116に応えるためのクリティカルパスは低速パス784を含み得、その理由は、対応するデータが1つ又は複数のプライマリストレージリソース240B〜Nに記憶されるまで、そのようなI/O要求116の完了が確認されないためである。
逆に、キャッシュ実行モジュール636は、I/Oスタック117内の低速パス784の動作及び/又はプライマリストレージリソース240B〜Nに関与せずに、高速パス782で排他的に、エフェメラルデータに関連する(キャッシュポリシーモジュール601及び/又は持続性レベルモジュール734によって決定される)書き込みI/O要求116に応えるように構成し得る。さらに、エフェメラルキャッシュデータを書き込むI/O要求116に応えることは、別個の低速パス784処理が必要ないため、フォーク780を必要としないことがある。CMS220は、高速パス動作782の完了に応答して、低速パス784の動作の完了を待たずに、エフェメラルI/O要求116の完了を確認し得る。したがって、エフェメラルI/O要求116は、I/O要求116に応えるためのクリティカルパスを低減し、I/Oスタック117及び/又はプライマリストレージリソース240B〜Nへの付加を低減し得る。
図8Aは、適応持続性レベルに従ってデータをキャッシュする一実施形態の流れ図である。方法800は、本明細書に開示されるように開始し、初期化し得る。ステップ810は、I/O要求116をストレージモジュール130及び/又はCMS220で受信することを含み得る。ステップ810は、本明細書に開示されるように、ストレージクライアント106A〜Nから直接I/O要求116を受信し、且つ/又はI/Oスタック117(又は他のI/Oインフラ)内のI/O要求を検出し、且つ/又は監視することを含み得る。ステップ810は、本明細書に記載のように、I/O要求116に関連付けられたコンテキスト及び/又は識別子(例えば、ファイル識別子)にアクセスすることを更に含み得る。
ステップ820は、仮想マシンキャッシュ213等のキャッシュにI/O要求116のデータを許容するか否かを判断することを含み得る。しかし、本開示は仮想計算環境に限定されず、ベアメタル環境及び/又は非仮想キャッシュリソースに適用することもできる。ステップ820は、I/O要求116のデータが既に許容されているか否かを判断することを含み得、許容されている場合、I/O要求116に関連付けられた持続性メタデータ(例えば、I/O要求116のキャッシュタグ221内で示される、前に決定されたI/O要求116の持続性レベル及び/又はキャッシュモード)に従ってI/O要求116に応え得る。I/O要求116のデータを許容すべき場合(キャッシュポリシー及び/又は可用性に従って)、流れはステップ830に続く。
ステップ830は、適応持続性レベルをI/O要求116に割り当てることを含み得、これは、I/O要求116のキャッシュモードを選択することを含み得る(例えば、エフェメラル、ライトスルー、ライトバック等)。持続性レベルを割り当てることは、上述したように、I/O要求116が一時データ及び/又は不必要データに関連するか否かを判断することを含み得る。したがって、ステップ830は、I/O要求116に関連するファイルレベル知識を持続性レベル基準と比較することを含み得る。例えば、I/O要求116がスワップファイル、一時ファイル、ローカルキャッシュファイル等に関連する場合、I/O要求116にエフェメラルキャッシュモードを割り当て得る。代替的には、I/O要求116が永続データに関連する場合、I/O要求116にライトスルーキャッシュモード(又はライトバック等の他のキャッシュモード)を割り当て得る。ステップ830は、ステップ830で決定された持続性レベル及び/又はキャッシュモードを示すように、I/O要求116に関連付けられたキャッシュタグ221を更新すること(例えば、キャッシュタグ221の持続性メタデータを更新すること)を更に含み得る。ステップ830で決定された持続性レベルがエフェメラルキャッシュモードを示す場合、流れはステップ840に続き、その他の場合、流れはステップ850に続く。
ステップ840は、エフェメラルキャッシュモードでキャッシュへのI/O要求116のデータを許容することを含み得る。ステップ840は、I/O要求116のデータをキャッシュ(例えば、仮想マシンキャッシュ213)に記憶することを含み得るが、データをプライマリストレージリソース240B〜Nに記憶しない。したがって、ステップ840は、キャッシュ216に排他的にデータを記憶することを含み得る。仮想環境では、ステップ840は、データがエフェメラルキャッシュモードでキャッシュされていることの指示を仮想マシンキャッシュ213に提供することを更に含み得る。後述するように、仮想マシンキャッシュ213は、キャッシュモードメタデータを使用して、仮想マシン208A〜Nが別のホストに移った後、キャッシュデータを保持すべきか否か(及び/又はキャッシュデータを保持する期間)を判断し得る。仮想マシンキャッシュ213は、エフェメラルキャッシュデータの唯一のソースであり得るため、データが仮想マシン208A〜Nの新しいホストに転送されるまで、エフェメラルキャッシュデータを保持するように構成し得る。
ステップ850は、ステップ830で決定された持続性レベルに従ってI/O要求116のデータを許容することを含み得、これは、データを共有仮想マシンキャッシュ213(又は他のキャッシュ)に記憶し、1つ又は複数のプライマリストレージリソース240B〜Nにデータをライトスルー及び/又はライトバックすることなどを含み得る。
図8Bは、適応持続性レベルに従ってデータをキャッシュする別の実施形態の流れ図である。方法801は、本明細書に開示されるように開始し、初期化し得る。ステップ811は、データをストレージモジュール130及び/又はCMS220に書き込むI/O要求116を受信することを含み得る。ステップ811は、本明細書に開示されるように、ストレージクライアント106A〜Nから直接(例えば、I/Oインタフェース131を介して)I/O要求116を受信し、且つ/又はI/Oスタック117(又は他のI/Oインフラ)内のI/O要求116を検出し、且つ/又は監視することを含み得る。ステップ811は、I/O要求116が、キャッシュ(例えば、キャッシュストレージリソース240A及び/又は仮想マシンキャッシュ213)に許容されているデータに関連することを特定することを更に含み得る。
ステップ831は、I/O要求116に関連付けられた持続性レベルを決定することを含み得、持続性レベルは、本明細書に記載のように、I/O要求116のキャッシュモードを決定し得る。キャッシュモードがエフェメラルキャッシュモードを含む場合、流れはステップ841に続き、その他の場合、流れはステップ851に続く。
ステップ841は、エフェメラルキャッシュモードでI/O要求116に応えることを含み得る。したがって、ステップ841は、プライマリストレージリソース240B〜N及び/又はI/Oスタック117の他のレイヤへのアクセスを含まない1つ又は複数の高速パス動作782でI/O要求116に応えることを含み得る。ステップ843は、1つ又は複数の高速パス動作782の完了に応答して、I/O要求116の完了を確認することを含み得る。したがって、I/O要求116に応えるクリティカルパスは、高速パス動作782のみを含み、低速パス動作784のフォーク780を除外する。
ステップ851は、ライトスルーキャッシュモード等の別の非エフェメラルキャッシュモードに従ってI/O要求116に応えることを含み得る。ステップ851は、1つ又は複数の低速パス動作784及び1つ又は複数の高速パス動作782でI/O要求116に応える(例えば、I/O動作のフォーク780)ことを含み得る。1つ又は複数の低速パス784の動作は、1つ又は複数のプライマリストレージリソース240B〜Nでの動作を含み得、且つ/又はI/Oスタック117の1つ又は複数のレイヤを含み得る。ステップ853は、1つ又は複数の低速パス動作784の完了に応答して、I/O要求116の完了を確認し得る。
上述したように、CMS220はキャッシュタグ221を保持するように構成し得、キャッシュタグは、キャッシュ許容ポリシー、キャッシュ保持及び/又は退去ポリシー(例えば、キャッシュ老化メタデータ、キャッシュスチールメタデータ、LRU、「ホット性」、及び/又は「コールド性」等)、キャッシュプロファイリング情報、ファイル及び/又はアプリケーションレベル知識等の1つ又は複数のキャッシュポリシーの適用に従ってキャッシュの最適な作業セットを表し得る。したがって、作業セットは、特定の動作条件下での仮想マシン208A〜Nに最適なI/O性能を提供するキャッシュデータセットを表し得る。作業セットは、作成及び/又は改良にかなりの時間がかかり得る。
CMS220は、仮想マシン208A〜Nの別のホスト202への配置換え、転送、及び/又は移行(例えば、VMotion(商標)動作において)に応答してキャッシュタグ221を保持するように構成し得る。キャッシュタグ221を保持することは、仮想マシン208A〜Nのメモリにキャッシュタグ221を保持し、且つ/又は再割り振り中にキャッシュタグ221を無効化しないことを含み得る。キャッシュタグ221を保持することは、新しいホスト202のキャッシュプロビジョナモジュール214からのキャッシュストレージを要求し、且つ/又は新しいホスト202での異なる量のキャッシュストレージが割り振られることに応答して、キャッシュタグ221を選択的に追加し、且つ/又は除去することを更に含み得る。幾つかの実施形態では、CMS220は、キャッシュタグ221によって参照されるキャッシュデータが新しいホスト202のキャッシュ216に存在しないにもかかわらず、キャッシュタグ221を保持し得る。後述するように、仮想マシンキャッシュ213は、仮想マシン208A〜Nの前のホスト202から(例えば、ネットワーク転送を介して)及び/又はプライマリストレージからのキャッシュデータをキャッシュ216に移入するように構成し得る。エフェメラルキャッシュデータ等の特定のキャッシュデータは、前のホスト202のみから利用可能であり得る。
仮想マシン208A〜Nの移行は、新しいホストでのキャッシュリソースの再割り振り、キャッシュの再移入等を含み得る。キャッシュデータは、仮想マシン208A〜Nの前のホスト202及び/又はプライマリストレージから転送し得る。しかし、エフェメラルキャッシュデータ等の特定のタイプのキャッシュデータは、前のホスト202Aの仮想マシンキャッシュ213でのみ利用可能であり得、キャッシュデータがプライマリストレージにライトスルー及び/又はライトバックされないため、データはキャッシュ213のみに存在する。本明細書に記載のように、仮想マシンキャッシュ213は、ホスト202間でキャッシュデータを転送するように構成し得、それにより、エフェメラルキャッシュデータは失われない。代替又は追加として、仮想マシン208A〜NのCMS220は、新しいホスト202に転送及び/又は移行される前に、エフェメラルキャッシュデータをフラッシュするように構成し得、それにより、キャッシュデータが前のホスト202から除去される(且つ/又は前のホストが故障状況を経験する)場合のデータ損失を回避し得る。
図9は、仮想計算環境900の別の実施形態のブロック図である。仮想計算環境900は複数のホスト202A〜Nを含み、各ホストは、仮想化カーネル210と、1つ又は複数の仮想マシンとを備え得る。図2には示されていないが、各仮想マシンは、本明細書に記載のように、各CMS220を備え得る。各ホスト202A〜Nは、キャッシュプロビジョナモジュール214及びキャッシュ216を備える各仮想マシンキャッシュ213A〜Nを更に備え得る。図9は3つのホストシステム202A〜Nを示すが、本開示はこの点に関して限定されず、任意の数のホスト202A〜Nを含むことができる。
仮想化環境900は、ホスト202A〜N及び/又は仮想マシン208の間で共有し得るプライマリストレージシステム242を含み得る。プライマリストレージシステム242は、1つ又は複数の磁気ディスク(例えば、ハードドライブ)、安価ディスク冗長アレイ(RAID)、ストレージエリアネットワーク(SAN)等を含むが、これらに限定されない、任意の適する永続的なストレージ装置及び/又はストレージシステムを含み得る。ホスト202A〜Nは、ネットワーク105を介してプライマリストレージシステムにアクセスするように構成し得る。
幾つかの実施形態では、各仮想マシン208に各VMIDを割り当て得る。仮想マシン208がホスト202A〜Nにインスタンス生成(例えば、ロード)される(例えば、上述したハンドシェークプロトコル中)場合、VMIDを割り当て得る。VMIDは、プロセス識別子、スレッド識別子、又は任意の他の適する識別子を含み得る。幾つかの実施形態では、VMIDは、特定のホスト202A〜N及び/又はホスト202A〜Nのグループ内の仮想マシン208を一意に識別し得る。例えば、ホスト202A〜Nは、クラスタ等の同じ名前空間内で動作し得、各仮想マシン208のVMIDは、クラスタの名前空間内で一意(クラスタ内のホスト202A〜Nに配置される仮想マシン208A〜Nにわたって一意)であり得る。幾つかの実施形態では、VMIDは、媒体アクセス制御(MAC)アドレス、ネットワークアドレス、区別された名前等のホスト識別子を含み得る。したがって、幾つかの実施形態では、VMIDは、特定の名前空間内の仮想マシン208を一意に識別し得、仮想マシン208が現在配置されている(又は過去に配置されていた)ホスト202A〜Nを識別し得る。代替又は追加として、各仮想マシン208は、現在のホスト識別子及び前のホスト識別子を保持するように構成し得る。
幾つかの実施形態では、仮想マシン208A〜Nのうちの1つ又は複数は、ホスト202A〜N間で配置替えし、且つ/又は転送することが可能であり得る。例えば、仮想マシン208Xは、ホスト202Aからホスト202Bに移行し得る(例えば、VMotion(商標)又は同様の動作で)。幾つかの実施形態では、仮想マシン208XのCMS220は、転送及び/又は移行動作を検出するように構成し得、それに応答して、エフェメラルキャッシュデータをプライマリストレージシステム242にフラッシュしようとし得る。上述したように、エフェメラルキャッシュデータをフラッシュすることにより、エフェメラルキャッシュデータが前のホスト202Aから利用不可能な場合のデータ損失を回避し得る。代替的には、CMS220は、エフェメラルキャッシュデータの持続性レベルを保持して、「移行ストーム」を回避する(例えば、プライマリストレージ242システム及び/又はネットワーク105のI/Oインフラに過負荷がかかることを回避)ように構成し得る。
仮想マシンキャッシュ213Bは、転送された仮想マシン208XのCMS220から要求を受信することに応答して、転送を識別するように構成し得る。要求は、転送された仮想マシン208XのVMIDを含み得、それから、仮想マシンキャッシュ213Bは、仮想マシン208Xがホスト208Bにとって「新しい」(例えば、VMIDを含む要求を前に受信したことがない)ことを特定し得る。それに応答して、仮想マシンキャッシュ213Bは、仮想マシン208Xとのハンドシェークプロトコルを開始し得る。仮想マシンキャッシュ213Bは、少なくとも部分的に、VMIDのホスト識別子及び/又は仮想マシン208Xによって保持されるホスト識別子に基づいて、仮想マシン208Xがホスト208Bに転送されたことを特定し得る。仮想マシン208Xのホスト識別子はホスト202Aを参照し得、一方、新たに電源投入された仮想マシン208のホスト識別子はホスト202Bを参照し得る(又はブランクであり得る)。代替又は追加として、仮想マシン208Xは別個のホスト識別子を含み得、これは、ホスト202Aを参照し得、仮想マシンキャッシュ213Bとのハンドシェークプロトコルでアクセスし得る。
キャッシュプロビジョナモジュール214は、キャッシュ216B内の仮想マシン208Xのストレージを割り振るように構成し得る。キャッシュプロビジョナモジュール214は、少なくとも部分的に、仮前のホスト(ホスト202A)で仮想マシン208Xに割り振られたキャッシュストレージのサイズに基づいて、プロビジョニングするキャッシュストレージ量を決定するように構成し得る。上述したように、仮想マシン208XのCMS220はホスト202Bへの転送後、キャッシュの作業セットを保持(例えば、キャッシュタグ221を保持)するように構成し得る。キャッシュプロビジョナモジュール214Bは、保持キャッシュタグ221を保持するのに十分なキャッシュ216B内のキャッシュストレージを割り振ろうとし得る。十分なキャッシュストレージを割り振ることができない場合、CMS220は、ホスト202Bでの新しいキャッシュストレージ割り振りに従って保持キャッシュタグを選択的に除去するように構成し得る。代替的には、余剰キャッシュストレージが利用可能な場合、CMS220は、新しいタグを保持キャッシュタグ221に追加するように構成し得る。割り振りは、本明細書に記載のように、仮想ディスク229を通して反映し得る。
仮想マシンキャッシュ213Aは保持モジュール928Aを備え得、このモジュールは、仮想マシン208Xがホスト202Aから転送された後、仮想マシン208Xのキャッシュデータを保持するように構成し得る。キャッシュデータは、保持期間にわたり、及び/又は仮想マシンキャッシュ213Aにより、保持キャッシュデータがもはや必要ないと判断されるまで、保持し得る。保持モジュール928Aは、キャッシュ216Aの可用性、キャッシュ216Bの可用性、保持キャッシュデータの相対的な重要性(他の仮想マシン208のキャッシュ要件と比較して)、キャッシュデータがプライマリストレージシステム242でバックアップされるか否か、キャッシュデータのキャッシュモード及び/又は持続性レベル等を含むが、これらに限定されない様々な保持ポリシー考慮事項に基づいて、キャッシュデータを保持すべきか否かを判断し(且つ/又はキャッシュデータ保持期間を決定し)得る。例えば、エフェメラルキャッシュモードで記憶されたキャッシュデータは、元の仮想マシンキャッシュ213Aでしか利用できないことがある。したがって、キャッシュ保持モジュール928Aは、エフェメラルキャッシュデータが新しいホスト202Bに転送されるまで、エフェメラルキャッシュデータの保持を優先するように構成し得る。逆に、異なるキャッシュモード(例えば、ライトスルー及び/又はライトバックキャッシュモード)で記憶されるキャッシュデータは、このデータはプライマリストレージシステム242から利用可能になるため、より低い保持を有し得る。
仮想マシン208XのCMS220は、キャッシュタグ221が参照するキャッシュデータをキャッシュ216Bが含まないにもかかわらず、キャッシュの作業状態(キャッシュタグ221)を保持するように構成し得る。後述するように、仮想マシンキャッシュ213Bは、ホスト202Aのキャッシュ216A及び/又はプライマリストレージシステム242から転送されたキャッシュデータをキャッシュ216Bに移入し、転送された仮想マシン208Xの作業セットを再構築するように構成し得る。
仮想マシンキャッシュ213Bはキャッシュ転送モジュール929Bを備え得、このモジュールは、前のホスト202Aに記憶された仮想マシン208Xのキャッシュデータにアクセスするように構成し得る。キャッシュ転送モジュール929Bは、VMIDの使用により、且つ/又は仮想マシン208Xに問い合わせる(例えば、仮想マシン208Xによって保持される前のホスト識別子にアクセスする)ことにより、前のホスト202Aを識別するように構成し得る。キャッシュ転送モジュール929Bは、ホスト識別子を使用して、ネットワーク105を介してキャッシュデータへの1つ又は複数の要求をホスト202Aの仮想マシンキャッシュ213に発行し得る。幾つかの実施形態では、キャッシュ転送モジュール929Bは、ホスト識別子からホスト202Aのネットワークアドレス又はネットワーク識別子を特定し、且つ/又は導出するように構成される。
仮想マシンキャッシュ213Aはキャッシュ転送モジュール929Aを備え得、このモジュールは、転送された仮想マシン208Xの保持キャッシュデータにアクセスを選択的に提供するように構成される。幾つかの実施形態では、キャッシュ転送モジュール929Aは、保持キャッシュデータをセキュア化するように構成される。例えば、キャッシュ転送モジュール929Aは、要求側エンティティ(例えば、仮想マシンキャッシュ213B)が、転送された仮想マシン208Xのキャッシュデータにアクセスする許可を有することを検証するように構成し得、これは、仮想マシン208Xがホスト202Bに配置されていることを検証することを含み得る。例えば、キャッシュ転送モジュール929Aは、VMID等の転送された仮想マシン208Xに関連付けられた信用情報を要求し得る。代替又は追加として、キャッシュ転送モジュール929Aは暗号化検証を実施し得、これは、転送された仮想マシン208Xによって生成されたシグネチャ等を検証することを含み得る。
キャッシュ転送モジュール929Bは、1つ又は複数のデマンドページング転送、プリフェッチ転送、及び/又はバルク転送によってキャッシュデータを転送するように構成し得る。デマンドページング転送は、仮想マシン208XからのキャッシュデータへのI/O要求116に応答して(例えば、オンデマンドで)キャッシュデータを転送することを含み得る。転送されたデータは、I/O要求116に応えるために使用し得る。加えて、転送されたデータは、新しいホスト202Bのキャッシュ216Bに許容し得る。代替的には、転送されたデータは、キャッシュポリシーに従って後に許容されてもよい(全く許容されないない)。
プリフェッチ転送は、プリフェッチキャッシュポリシー(例えば、近接性等による)及び/又はキャッシュデータの持続性レベルに従ってデータを転送することを含み得る。プリフェッチするキャッシュデータの量及び/又は範囲は、特に、CMS220のキャッシュメタデータ(例えば、キャッシュ老化メタデータ、「ホット性」等)によって決定し得る。したがって、幾つかの実施形態では、キャッシュ転送モジュール929Bは、CMS220にクエリして、プリフェッチするキャッシュデータ(もしあれば)を識別するように構成し得る。
バルク転送は、仮想マシン208Xからのストレージ要求から独立して、キャッシュデータをバルクで転送することを含み得る。バルク転送は、仮想マシン208Xに割り振られたキャッシュストレージ全体を転送し移入することを含み得る。代替的には、バルク転送は、キャッシュのサブセットに移入することを含み得、サブセットは、上述したように、仮想マシンのCMS220のキャッシュメタデータに基づいて選択し得る。
キャッシュ転送モジュール929Bは、キャッシュデータの持続性レベルに従ってキャッシュ転送(例えば、プリフェッチ及び/又はバルク転送)に優先度を付けるように更に構成し得る。例えば、エフェメラルキャッシュモードでキャッシュされるデータは、前のホスト202Aからしか利用可能ではないことがあり、したがって、代替ソース(例えば、プライマリストレージシステム242)から利用可能であり得る他のキャッシュデータよりも優先し得る。したがって、キャッシュ転送モジュール929Bは、オンデマンドページングを待ち、且つ/又は他のデータを転送するよりも、エフェメラルキャッシュデータをプリフェッチし、且つ/又はバルク転送するように構成し得る。
キャッシュストレージモジュール931Bは、キャッシュ216B内のホスト202Aのキャッシュ216Aから転送される(又はプライマリストレージシステム242等の他のソースから取得された)キャッシュデータを記憶するように構成し得る。キャッシュストレージモジュール931Bは、キャッシュプロビジョナモジュール214Bによって転送仮想マシン208Xに割り振られたキャッシュストレージロケーションにキャッシュデータを記憶するように構成し得る。キャッシュデータは、元のキャッシュ216Aと同じキャッシュストレージロケーション(例えば、キャッシュストレージと同じオフセット)に記憶し得、それにより、保持キャッシュタグ221内の参照は、キャッシュプロビジョナモジュール214のマップモジュール514によって実施されるマッピングによって有効なままである。
キャッシュデータ要求に応答して、キャッシュ転送モジュール929Aは、特に、転送仮想マシン208XのVMIDを使用して(マップモジュール514の使用により)要求されたキャッシュデータを識別するように構成し得る。キャッシュ転送モジュール929Aは、次に、ネットワーク105を介して、要求されたキャッシュデータ(もし利用可能であれば)をキャッシュ転送モジュール929Bに転送し得る。
キャッシュ転送モジュール929Bは、前のホスト202Aからのキャッシュデータにアクセスするように構成し得る。エフェメラルキャッシュモードでキャッシュされたデータは、前のホスト202Aからしかアクセスすることができないことがある。他のキャッシュモードでキャッシュされたデータは、プライマリストレージシステム242及び/又は他のデータソース(例えば、他の永続的ストレージシステム、ホスト202N等)の他のソースから利用可能であり得る。キャッシュ転送モジュール929Bは、様々なポリシー考慮事項(例えば、キャッシュ転送ポリシー)に基づいて、キャッシュデータのソースを選択し得、ポリシー考慮事項は、ネットワークポリシー、帯域幅ポリシー、ホストリソースポリシー、プライマリストレージリソースポリシー等を含み得る。例えば、ネットワーク105がかなり輻輳しているとの判断に応答して、キャッシュ転送モジュール929Bは、転送するデータ量を低減し(バルク転送を延期し)、且つ/又はネットワーク105から独立した別のソースからキャッシュデータを転送するように構成し得る。同様に、キャッシュ転送モジュール929Bは、プライマリストレージシステム242に過負荷がかかっており、且つ/又は限られた利用可能帯域幅を有するとの判断に応答して、要求をホスト202(プライマリストレージシステム242にではなく)に向け得る。
ホスト202Aに保持されるキャッシュデータは、ホスト202Aで動作している他の仮想マシン208A〜Nによって使用することができないキャッシュリソースを表し得る。したがって、キャッシュ保持モジュール928Aは、データがもはや必要ではない場合、且つ/又は保持ポリシーに従って、保持キャッシュデータを選択的に除去するように構成し得る。保持ポリシーは、上述したように、保持ポリシー要因に基づいて決定し得る。幾つかの実施形態では、キャッシュ転送モジュール929Bは、他のソースからホスト202Bに転送されたキャッシュデータを前のホスト202Aに通知するように構成され、それにより、キャッシュ保持モジュール928Aは対応するデータをキャッシュ216Aから除去することができる。キャッシュ転送モジュール929Bは、キャッシュデータが上書きされるとき、削除(例えば、トリミング)されるとき、キャッシュ216Bから退去するとき等、キャッシュデータをもはや保持する必要がない他の状況をホスト202Aに通知するように更に構成し得る。上で開示したように、キャッシュ保持モジュール928Aは、エフェメラルキャッシュデータの保持が他のソースから利用可能なキャッシュデータよりも優先されるように、キャッシュデータの持続性レベルに基づいてキャッシュ保持に優先度を付けるように構成し得る。
幾つかの実施形態では、キャッシュ転送モジュール929Aは、仮想マシン208Xのキャッシュデータを新しいホスト202Bに「プッシュ」するように構成し得る。キャッシュデータをプッシュすることは、キャッシュデータの要求を受信せずに(キャッシュデータ要求から独立して)、仮想マシン208Xの保持キャッシュデータをキャッシュ転送モジュール929Bに転送することを含み得る。キャッシュ転送モジュール929Aは、ユーザ構成、上述した検証プロセス、キャッシュ転送モジュール929Aによるアクティブポーリング、転送仮想マシン208Xによって実施されるコールバック等を通して新しいホスト202Bのホスト識別子を特定し得る。幾つかの実施形態では、新しいホスト202Bの仮想マシンキャッシュ213は、上述したように、ホスト202Aからプッシュされたキャッシュデータを受信することに応答して、仮想マシン208Xがホスト202Aに転送されたことを識別し得る。キャッシュ転送モジュール929Aは、エフェメラルキャッシュデータ等の高優先度キャッシュデータを選択的にプッシュするように構成し得、それにより、データ損失が回避される。
図10は、ホスト202間で仮想マシン208のキャッシュデータを転送し、且つ/又は移行する方法1000の一実施形態の流れ図である。方法1000は、上述したように開始し、初期化し得る。
ステップ1010は、仮想マシン208Xが前のホスト202Aから新しいホスト202Bに移行することに応答して、キャッシュプロビジョナモジュール214Bがホスト208B上の仮想マシン208Xにキャッシュストレージを割り振ることを含み得る。新しいホスト202B及び前のホスト202Aは通信可能に結合し得る(例えば、ネットワーク105を介して)。上述したように、キャッシュプロビジョナモジュール214Bは、仮想マシン208XのCMS220からI/O要求116(又は他のクエリ)を受信すること、前のホスト202Aのキャッシュ転送モジュール929Aから仮想マシン208Xのキャッシュデータを受信すること等に応答して、転送仮想マシン208Xを識別し得る。ステップ1010は、転送仮想マシン208Xを初期電源投入及び/又は再開状況から区別することを更に含み得る(例えば、仮想マシンのVMID、ホスト識別子等に基づいて)。キャッシュは、上述したように、仮想ディスクドライバ215を介して仮想ディスク229内で仮想マシン208Xに動的に割り振り得る。
ステップ1020は、新しいホスト202Bのキャッシュ転送モジュール929Bが、転送仮想マシン208Xの前のホスト202Aを特定することを含み得る。ステップ1020は、上述したように、仮想マシン208XのVMID内のホスト識別子にアクセスし、転送仮想マシン208Xにクエリし、前のホスト202Bからプッシュされたキャッシュデータを受信することなどを含み得る。
ステップ1030は、上述したように、仮想マシン208Xに割り振られたキャッシュストレージの少なくとも一部に、リモートホスト202Aで保持されたキャッシュデータを移入することを含み得る。キャッシュデータは、前のホスト202でしか利用可能ではない、エフェメラルキャッシュ構成で記憶されたキャッシュデータに対応し得る。ステップ1030は、キャッシュデータを要求し、新しいホスト202Bがキャッシュデータにアクセスする許可を有することを検証し、プッシュ動作でキャッシュデータを受信すること等を含み得る。キャッシュデータは、上述したように、キャッシュ転送モジュール929A及び/又は929Bのキャッシュ転送ポリシーに従って要求され、転送され、且つ/又はプッシュし得る。幾つかの実施形態では、ステップ1030は、プライマリストレージ212(又は別のソース)からアクセスされたデータを、割り振られたキャッシュストレージに移入することを更に含む。ステップ1030は、上述したように、新しいホスト202Bのキャッシュに移入することに応答して、仮想マシン208Xの保持キャッシュデータをもはや保持する必要がないことをリモートホスト202Aに通知することを更に含み得る。
図11は、仮想マシン208A〜Nのキャッシュデータを転送する方法1100の一実施形態の流れ図である。方法1100は、上述したように開始し、初期化し得る。
ステップ1110は、ホスト202Aからの仮想マシン208Xの転送及び/又は移行に応答して、仮想マシン208Xのキャッシュデータをキャッシュ216(キャッシュストレージ装置)に保持することを含み得る。キャッシュデータは、上述したように、保持ポリシーに従ってキャッシュ保持モジュール928Aによって保持し得る。幾つかの実施形態では、ステップ1110は、プライマリストレージシステム242で利用可能ではないことがある(例えば、前のホスト202Aの仮想マシンキャッシュ213A内でしか利用可能ではないことがある)エフェメラルキャッシュデータの保持を優先することを含み得る。
ステップ1120は、キャッシュデータの要求に応答して、保持キャッシュデータのキャッシュアドレスを特定することを含み得る。キャッシュアドレスは、少なくとも部分的に、転送仮想マシンのVMIDに基づき得る。データのキャッシュアドレスは、キャッシュリソース(例えば、キャッシュチャンク302)を、リソースが割り振られた仮想マシン208A〜Nに関連付けるように構成されるマップモジュール514によって特定し得る。
ステップ1130は、上述したように、保持キャッシュデータを提供することを含み得る。ステップ1130は、仮想マシン208Xの新しいホスト202Bのキャッシュ転送モジュール929Bからのキャッシュデータ要求に応答して、キャッシュデータをキャッシュ転送モジュール929Bにプッシュすること等を含み得る。
図12は、仮想マシンのキャッシュデータを転送する別の実施形態の流れ図である。ステップ1210は、仮想マシン208Xを新しいホスト202Bに転送することに応答して、キャッシュタグ221を保持することを含み得る。幾つかの実施形態では、ステップ1210は、キャッシュデータの部分の持続性レベルを変更することを含み得る。例えば、仮想マシン208XのCMS220は、エフェメラルキャッシュデータをプライマリストレージシステム242にフラッシュするように構成し得、それにより、キャッシュデータが仮想マシン208Xの現在のホスト202Aの仮想マシンキャッシュ213Aから除去された場合であっても、キャッシュデータは新しいホスト208Bでアクセス可能である。
ステップ1220は、I/O動作をフィルタリングし、保持キャッシュタグ221に従って、選択されたI/O要求116をCMS220に向けることを含み得る。ステップ1220は、仮想マシン208Xの新しいホスト202Bにまだ転送されておらず、且つ/又は仮想マシン208Xに割り振られていない1つ又は複数のキャッシュタグ221のデータを要求することを含み得る。上述したように、そのような要求に応答して、新しいホスト202Bの仮想マシンキャッシュ213Bは、仮想マシン208Xを転送仮想マシンとして識別し(例えば、初期ブートアップ又は電源投入とは対照的に)、仮想マシン208Xにキャッシュストレージを割り振り、仮想マシン208Xの前のホスト202Aを特定し、且つ/又はキャッシュデータを前のホスト202Aから転送し得る(キャッシュ転送モジュール929Bを介して)。
ステップ1230は、上述したように、保持キャッシュタグのデータを要求することを含み得る。アクセスを要求することは、前のホスト202Aから新しいホスト202Bの仮想マシンキャッシュ213Bへのキャッシュデータのオンデマンド転送を実行することを含み得る。
特性、利点、又は同様の言葉への本明細書全体を通しての参照は、実現し得る全ての特性及び利点が任意の単一の実施形態に含まれることを暗示するものではない。むしろ、特性及び利点を指す言葉は、実施形態に関連して説明される特定の特性、利点、又は特徴が少なくとも1つの実施形態に含まれることを意味するものとして理解される。したがって、本明細書全体を通しての特性、利点、及び同様の言葉の考察は、同じ実施形態を参照し得るが、そうである必要はない。
さらに、本明細書に記載される特性、利点、及び特徴は、任意の適する様式で1つ又は複数の実施形態で組み合わせ得る。特定の実施形態の特定の特性又は利点のうちの1つ又は複数なしで、開示される実施形態を実施し得ることを当業者は認識するだろう。全ての実施形態に存在するわけではない追加の特性及び利点を、特定の実施形態において認識し得る。開示される実施形態のこれらの特性及び利点は、以下の説明及び添付の特許請求の範囲からより十分に明らかになるか、又は以下に記載される実施形態の実施によって学習し得る。
本明細書に記載される機能ユニットの多くは、実施独立性をより具体的に強調するために、モジュールと記されてきた。例えば、モジュールは、カスタムVLSI回路又はゲートアレイ、論理チップ、トランジスタ等の市販の半導体、又は他の離散した構成要素を含むハードウェア回路として実施し得る。モジュールは、フィールドプログラマブルゲートアレイ、プログラマブルアレイ論理デバイス、プログラマブル論理デバイス等のプログラマブルハードウェアデバイスで実施することも可能である。
モジュールは、様々なタイプのプロセッサによって実行されるソフトウェアで実施することも可能である。実行可能コードの識別されるモジュールは、例えば、オブジェクト、プロシージャ、又は関数として編成し得る、例えば、コンピュータ命令の1つ又は複数の物理又は論理ブロックであり得る。それにもかかわらず、識別されるモジュールの実行可能ファイルは、一緒に物理的に配置される必要はなく、論理的に一緒に結合されると、モジュールを構成し、モジュールの述べられた目的を達成する、異なるロケーションに記憶される別個の命令を含み得る。
実際には、実行可能コードのモジュールは、単一の命令であってもよく、又は多くの命令であってもよく、さらには幾つかの異なるコードセグメント、異なるプログラム間、及び幾つかのメモリ装置にわたって分散してもよい。同様に、動作データは、本明細書ではモジュール内で識別され示され得、任意の適する形態で実施し、任意の適するタイプのデータ構造内で編成し得る。動作データは、単一のデータセットとして収集し得るか、又は異なるストレージ装置を含む異なるロケーションに分散し得、少なくとも部分的に、システム又はネットワーク上の単なる電子信号として存在し得る。モジュール又はモジュールの部分がソフトウェアで実施される場合、ソフトウェア部分は1つ又は複数のコンピュータ可読媒体に記憶される。
本明細書全体を通しての「一実施形態」、「実施形態」、又は同様の用語への参照は、実施形態に関連して説明される特定の特性、構造、又は特徴が少なくとも1つの実施形態に含まれることを意味する。したがって、本明細書全体を通しての「一実施形態において」、「実施形態において」という語句及び同様の用語の出現は全て、同じ実施形態を指し得るが、必ずしもそうである必要はない。
コンピュータ可読媒体への参照は、デジタル処理装置にマシン可読命令を記憶することが可能な任意の形態をとり得る。コンピュータ可読媒体は、コンパクトディスク、デジタルビデオディスク、磁気テープ、ベルヌーイドライブ、磁気ディスク、パンチカード、フラッシュメモリ、集積回路、又は他のデジタル処理装置メモリ装置によって実施し得る。
さらに、本明細書に開示される特性、構造、又は特徴は、任意の適する様式で1つ又は複数の実施形態で実施し得る。以下の説明では、開示される実施形態の完全な理解を提供するために、プログラミング、ソフトウェアモジュール、ユーザ選択、ネットワークトランザクション、データベースクエリ、データベース構造、ハードウェアモジュール、ハードウェア回路、及びハードウェアチップの例等の多くの具体的な詳細が提供される。しかし、具体的な詳細のうちの1つ又は複数なしで、又は他の方法、構成要素、材料等を用いて本開示の教示を実施し得ることを当業者は認識するだろう。他の場合、開示される実施形態の態様を曖昧にしないように、周知の構造、材料、又は動作については詳細に示さず、又は説明していない。
本明細書に含まれる概略フローチャート図は一般に、論理フローチャート図として記載されている。したがって、示される順序及び記されるステップは、提示される方法の一実施形態を示す。示される方法の1つ又は複数のステップ又はその部分と機能的、論理的、又は効果的に均等である他のステップ及び方法を考えることも可能である。さらに、利用されるフォーマット及びシンボルは、方法の論理ステップを説明するために提供されており、方法の範囲を限定するものとして理解されない。様々な矢印タイプ及び線種が、フローチャート図に利用され得るが、これらは対応する方法の範囲を限定しないものとして理解される。実際に、方法の論理フローのみを示すために、幾つかの矢印又は他のコネクタを使用し得る。例えば、矢印は、示される方法の列挙されるステップ間の指定されていない持続時間の待機又は監視期間を示し得る。さらに、特定の方法が実施される順は、示される対応するステップの順に厳密に従ってもよく、又は従わなくてもよい。

Claims (41)

  1. 複数のI/O要求を識別することと、
    前記I/O要求の1つ又は複数の属性に基づいて、前記I/O要求の各持続性レベルを選択することと、
    前記I/O要求に選択された前記持続性レベルに従って1つ又は複数のストレージリソースを使用して前記I/O要求に応えることと、
    を含む、方法。
  2. 各持続性レベルは、前記各持続性レベルを有するI/O要求に応える際に使用される1つ又は複数のストレージリソースに対応する、請求項1に記載の方法。
  3. 各持続性レベルは、前記各持続性レベルを有するI/O要求に応えるために使用される1つ又は複数のストレージリソースの構成に対応する、請求項1に記載の方法。
  4. 前記持続性レベルのうちの1つ又は複数は、前記1つ又は複数の持続性レベルのI/O要求に応えるためのストレージモードを指定するように構成される、請求項1に記載の方法。
  5. 第1のI/O要求の第1の持続性レベルを、前記第1のI/O要求に関連付けられたファイル識別子及び前記第1のI/O要求に関連付けられたアプリケーションのうちの1つ又は複数に基づいて選択することを更に含む、請求項1に記載の方法。
  6. 前記持続性レベルのうちの1つは、2つ以上のストレージリソースでの冗長ストレージを指定し、前記方法は、前記2つ以上のストレージリソースを使用して前記1つの持続性レベルを有するI/O要求に応えることを更に含む、請求項1に記載の方法。
  7. 前記持続性レベルの1つはエフェメラルキャッシングモードに対応し、前記方法は、前記1つの持続性レベルを有するI/O要求のデータをプライマリストレージリソースに記憶せずにキャッシュに記憶することを更に含む、請求項1に記載の方法。
  8. 前記I/O要求を識別することは、ストレージスタック内のI/O要求を監視することを含む、請求項1に記載の方法。
  9. 動作を実行可能なコンピュータ使用可能プログラムコードを記憶するコンピュータ可読記憶媒体を備えるコンピュータプログラム製品であって、前記動作は、
    ストレージクライアントから発せられた入/出力(I/O)要求を受信することと、
    前記I/O要求の1つ又は複数の特徴に基づいて、前記I/O要求の複数の持続性レベルの1つを決定することであって、前記持続性レベルのそれぞれは、前記I/O要求に応えるために使用されるストレージリソース、前記ストレージリソースの構成、及びストレージモードのうちの1つ又は複数を指定することと、
    前記選択された持続性レベルに従って前記I/O要求に応えることと、
    を含む、コンピュータプログラム製品。
  10. 前記持続性レベルのうちの第1の持続性レベルは、エフェメラルキャッシングモードを指定し、前記持続性レベルのうちの第2の持続性レベルは、ライトスルーキャッシングモードを指定する、請求項9に記載のコンピュータプログラム製品。
  11. 前記持続性レベルのうちの2つ以上は、前記2つ以上の持続性レベルのそれぞれのI/O要求に応えるために使用されるストレージリソースに関して異なる、請求項9に記載のコンピュータプログラム製品。
  12. 前記持続性レベルのうちの2つ以上は、ストレージ構成に関して異なる、請求項9に記載のコンピュータプログラム製品。
  13. 前記持続性レベルのうちの2つ以上はキャッシングモードに関して異なる、請求項9に記載のコンピュータプログラム製品。
  14. 前記持続性レベルのうちの第1の持続性レベルは、エフェメラルキャッシュモードを指定し、前記動作は、キャッシュリソースへの書き込みI/O要求のデータの書き込みに応答して、前記書き込みI/O要求のデータをプライマリストレージに書き込まずに、前記第1の持続性レベルの書き込みI/O要求の完了を確認することを更に含む、請求項9に記載のコンピュータプログラム製品。
  15. 前記持続性レベルのうちの第1の持続性レベルは、第1の誤り修正コード符号化を指定し、前記持続性レベルのうちの第2の持続性レベルは、第2の異なる誤り修正コード符号化を指定する、請求項9に記載のコンピュータプログラム製品。
  16. 前記動作は、前記I/O要求のソース識別子、前記I/O要求のファイル識別子、前記I/O要求に関連付けられたアプリケーション、及び前記I/O要求のパラメータのうちの1つ又は複数に基づいて、I/O要求の持続性レベルを決定することを更に含み、
    請求項9に記載のコンピュータプログラム製品。
  17. 複数のストレージ要求のそれぞれに、複数の適応持続性レベルのうちの1つを、前記ストレージ要求の特徴に基づいて選ぶように構成される持続性レベルモジュールであって、ストレージ要求に選ばれる前記適応持続性レベルは、前記ストレージ要求に応えるためのストレージリソース、前記ストレージリソースの構成、及びストレージモードのうちの1つ又は複数を決定する、持続性レベルモジュールと、
    1つ又は複数のストレージリソースとインタフェースするように構成されるインタフェースモジュールと、
    前記インタフェースモジュールの使用によって前記ストレージ要求に割り当てられる前記適応持続性レベルに従って、前記ストレージ要求に応えるように構成されるストレージ要求実行モジュールと、
    を備える、装置。
  18. 前記持続性レベルモジュールは、前記ストレージ要求のファイル識別子、前記ストレージ要求に関連付けられたアプリケーション、前記ストレージ要求のパラメータ、入/出力(IO)制御パラメータのうちの1つ又は複数に基づいて、ストレージ要求の適応持続性レベルを選ぶように構成される、請求項17に記載の装置。
  19. 前記ストレージ要求実行モジュールは、ライトネバーキャッシュモードで、エフェメラル適応持続性レベルを有するストレージ要求のデータをキャッシュするように構成される、請求項17に記載の装置。
  20. 前記適応持続性レベルのうちの第1の適応持続性レベルは、第1のRAID構成でデータを記憶することを含み、前記適応持続性レベルのうちの第2の適応持続性レベルは、第2の異なるRAID構成でデータを記憶することを含む、請求項17に記載の装置。
  21. バッキングストアに向けられたI/O要求を識別することと、
    複数のキャッシュモードから、前記識別されたI/O要求にエフェメラルキャッシュモードを選択することであって、前記エフェメラルキャッシュモードは、前記データを前記バッキングストアに記憶せずに、データをキャッシュに記憶することを含む、選択することと、
    前記識別されたI/O要求の前記データを前記エフェメラルキャッシュモードでキャッシュすることと、
    を含む、方法。
  22. 前記識別されたI/O要求の前記データを、前記バッキングストアに記憶せずに前記キャッシュに記憶することに応答して、前記識別されたI/O要求の完了を確認することを更に含む、請求項21に記載の方法。
  23. 前記識別されたI/O要求の前記データを再開動作間で保存する必要がないとの判断に応答して、前記エフェメラルキャッシュモードを選択することを更に含む、請求項21に記載の方法。
  24. 前記識別されたI/O要求のソース識別子、前記識別されたI/O要求のファイル識別子、及び前記識別されたI/O要求に関連付けられたアプリケーションのうちの1つ又は複数に基づいて、前記複数のキャッシュモードから前記エフェメラルキャッシュモードを選択することを更に含む、請求項21に記載の方法。
  25. 新しい仮想マシンホストへの移動に応答して、エフェメラルキャッシュデータをフラッシュすることを更に含み、前記エフェメラルキャッシュデータのフラッシュは、前記エフェメラルキャッシュモードでキャッシュされたデータを前記バッキングストアに記憶することを含む、請求項21に記載の方法。
  26. 仮想マシンが第1の仮想マシンホストから第2の仮想マシンホストに移行したことに応答して、前記エフェメラルキャッシュモードでキャッシュされたデータに関するキャッシュメタデータを前記仮想マシン内に保持することを更に含む、請求項21に記載の方法。
  27. 前記第2の仮想マシンホストにおける仮想マシンキャッシュに、前記第1の仮想マシンホストに保持される前記エフェメラルキャッシュモードでキャッシュされたデータを移入することを更に含む、請求項26に記載の方法。
  28. 動作を実行するように実行可能なコンピュータ使用可能なプログラムコードを記憶するコンピュータ可読記憶媒体を備えるコンピュータプログラム製品であって、前記動作は、
    プライマリストレージに向けられた入/出力(I/O)要求のデータが不必要であると判断することと、
    前記I/O要求の前記データをキャッシュストレージ内に排他的にキャッシュすることと、
    前記I/O要求の前記データを前記キャッシュストレージ内にキャッシュすることに応答して、前記I/O要求の完了を確認することと、
    を含む、コンピュータプログラム製品。
  29. 前記I/O要求の前記データをキャッシュすることは、前記プライマリストレージに関与しない1つ又は複数の高速パスI/O動作を実行することを含む、請求項28に記載のコンピュータプログラム製品。
  30. 前記動作は、ストレージスタック内のI/O要求を監視することを更に含み、前記I/O要求のデータを前記キャッシュストレージ内にキャッシュすることは、前記ストレージスタック外の1つ又は複数の高速パスI/O動作を実行することを含む、請求項28に記載のコンピュータプログラム製品。
  31. 前記I/O要求が不必要データに関すると判断することは、前記I/O要求のソース識別子に持続性レベル基準を適用することを含み、前記持続性レベル基準は、ファイルレベル知識及びアプリケーションレベル知識のうちの一方に基づく、請求項28に記載のコンピュータプログラム製品。
  32. 前記I/O要求は仮想マシンによって生成され、前記動作は、前記仮想マシンが前記リモート仮想マシンホストに転送されることに応答して、前記キャッシュストレージ内に排他的に記憶された前記仮想マシンのデータをリモート仮想マシンホストにプッシュすることを更に含む、請求項28に記載のコンピュータプログラム製品。
  33. 前記動作は、リモート仮想マシンホストからの要求に応答して、前記キャッシュストレージ内に排他的に記憶されたデータをリモート仮想マシンホストに転送することを更に含む、請求項28に記載のコンピュータプログラム製品。
  34. 前記動作は、前記仮想マシンが異なる仮想マシンホストに移行することに応答して、前記キャッシュストレージ内に排他的に記憶されたデータに関連付けられたキャッシュタグを保持することを更に含む、請求項28に記載のコンピュータプログラム製品。
  35. 前記動作は、前記キャッシュストレージに排他的に記憶されたデータを前記リモート仮想マシンホストの仮想マシンキャッシュに転送することを更に含み、転送することは、前記仮想マシンのキャッシュ管理システムの仮想マシン識別子に基づいて、前記キャッシュストレージに排他的に記憶された前記仮想マシンのデータを識別することを含む、請求項34に記載のコンピュータプログラム製品。
  36. バッキングストアに向けられたI/O要求をインターセプトするように構成されるエージェントと、
    前記インターセプトされたI/O要求の1つ又は複数の特徴に基づいて、前記インターセプトされたI/O要求の複数のキャッシュモードのうちの1つを識別するように構成される持続性レベルモジュールと、
    キャッシュ内の前記インターセプトされたI/O要求の前記データを、前記識別されたキャッシュモードに従ってキャッシュするように構成されるキャッシュ管理システムであって、前記複数のキャッシュモードはエフェメラルキャッシュモードを含み、データを前記エフェメラルキャッシュモードでキャッシュすることは、前記データを前記キャッシュのみに、前記データを前記バッキングストアに書き込まずに書き込むことを含む、キャッシュ管理システムと、
    を備える、装置。
  37. 前記持続性レベルモジュールは、前記インターセプトされたI/O要求のソース識別子、前記インターセプトされたI/O要求のファイル識別子、及び前記インターセプトされたI/O要求に関連付けられたアプリケーションのうちの1つ又は複数に基づいて、前記インターセプトされたI/O要求の前記キャッシュモードを識別するように構成される、請求項36に記載の装置。
  38. 前記キャッシュ管理システムは、前記対応するI/O要求のデータを前記キャッシュに書き込むことに応答して、前記エフェメラルキャッシュモードでキャッシュされたI/O要求の完了を確認するとともに、前記対応するI/O要求のデータを前記バッキングストアに書き込むことに応答して、ライトスルーキャッシュモードが割り当てられたI/O要求の完了を確認するように構成される、請求項36に記載の装置。
  39. 前記仮想マシンがリモート仮想マシンホストに転送されるとの判断に応答して、第1の仮想マシンホストにおける前記キャッシュ内に前記エフェメラルキャッシュモードで許容される仮想マシンのデータを保持するように構成されるキャッシュ保持モジュールと、
    前記エフェメラルキャッシュモードで前記キャッシュ内に許容される前記仮想マシンの前記保持データを前記リモート仮想マシンホストに転送するように構成されるキャッシュ転送モジュールと、
    を更に備える、請求項36に記載の装置。
  40. 前記リモート仮想マシンホストでの仮想マシンキャッシュに、前記第1の仮想マシンホストから転送されたデータを移入するように構成されるキャッシュストレージモジュールを更に備える、請求項39に記載の装置。
  41. キャッシュ管理モジュールは、リモート仮想マシンホストへの前記仮想マシンの転送に応答して、1つ又は複数のプライマリストレージリソースに前記エフェメラルモードでキャッシュされる仮想マシンのデータをフラッシュするように構成される、請求項36に記載の装置。
JP2015530057A 2012-08-31 2013-08-29 適応持続性システム、方法、インタフェース Pending JP2015535355A (ja)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201261696126P 2012-08-31 2012-08-31
US61/696,126 2012-08-31
US13/829,835 US10359972B2 (en) 2012-08-31 2013-03-14 Systems, methods, and interfaces for adaptive persistence
US13/829,835 2013-03-14
US13/829,358 2013-03-14
US13/829,358 US10346095B2 (en) 2012-08-31 2013-03-14 Systems, methods, and interfaces for adaptive cache persistence
PCT/US2013/057366 WO2014036307A1 (en) 2012-08-31 2013-08-29 Systems, methods, and interfaces for adaptive persistence

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2018073113A Division JP6709245B2 (ja) 2012-08-31 2018-04-05 適応持続性システム、方法、インタフェース

Publications (1)

Publication Number Publication Date
JP2015535355A true JP2015535355A (ja) 2015-12-10

Family

ID=50189117

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2015530057A Pending JP2015535355A (ja) 2012-08-31 2013-08-29 適応持続性システム、方法、インタフェース
JP2018073113A Active JP6709245B2 (ja) 2012-08-31 2018-04-05 適応持続性システム、方法、インタフェース

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2018073113A Active JP6709245B2 (ja) 2012-08-31 2018-04-05 適応持続性システム、方法、インタフェース

Country Status (6)

Country Link
US (3) US10359972B2 (ja)
JP (2) JP2015535355A (ja)
KR (1) KR101841997B1 (ja)
CN (1) CN104903872B (ja)
DE (1) DE112013004250B4 (ja)
WO (1) WO2014036307A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015176426A (ja) * 2014-03-17 2015-10-05 日本電気株式会社 情報処理装置、情報処理方法、及び情報処理プログラム
JP2016035669A (ja) * 2014-08-04 2016-03-17 富士通株式会社 データ移行方法及びデータ移行装置

Families Citing this family (99)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10359972B2 (en) * 2012-08-31 2019-07-23 Sandisk Technologies Llc Systems, methods, and interfaces for adaptive persistence
US10073656B2 (en) 2012-01-27 2018-09-11 Sandisk Technologies Llc Systems and methods for storage virtualization
US9106690B1 (en) * 2012-06-14 2015-08-11 Bromium, Inc. Securing an endpoint by proxying document object models and windows
US9195585B2 (en) * 2013-01-23 2015-11-24 Vmware, Inc. Techniques for allocating and surfacing host-side storage capacity to virtual machines
US9448816B2 (en) * 2013-04-29 2016-09-20 Vmware, Inc. Virtual desktop infrastructure (VDI) caching using context
US9507607B2 (en) * 2013-05-10 2016-11-29 Vmware, Inc. Virtual persistence
TWI578836B (zh) * 2013-05-10 2017-04-11 瑞雷2股份有限公司 多租戶虛擬存取點-網路資源虛擬化之技術
US9842128B2 (en) * 2013-08-01 2017-12-12 Sandisk Technologies Llc Systems and methods for atomic storage operations
US9882984B2 (en) * 2013-08-02 2018-01-30 International Business Machines Corporation Cache migration management in a virtualized distributed computing system
US9570175B2 (en) 2013-08-05 2017-02-14 Jonker Llc Incrementally programmable non-volatile memory
US9858154B1 (en) * 2013-08-23 2018-01-02 Acronis International Gmbh Agentless file backup of a virtual machine
US11018988B2 (en) 2013-08-26 2021-05-25 Vmware, Inc. Translating high level requirements policies to distributed configurations
US11113054B2 (en) 2013-09-10 2021-09-07 Oracle International Corporation Efficient hardware instructions for single instruction multiple data processors: fast fixed-length value compression
US9519581B2 (en) * 2013-09-16 2016-12-13 Vmware, Inc. Storage integration for host-based write-back caching
US9460008B1 (en) * 2013-09-20 2016-10-04 Amazon Technologies, Inc. Efficient garbage collection for a log-structured data store
US10558569B2 (en) * 2013-10-31 2020-02-11 Hewlett Packard Enterprise Development Lp Cache controller for non-volatile memory
US9336134B2 (en) * 2013-11-12 2016-05-10 Skyera, Llc Apparatus and method for accessing a non-volatile memory blade using multiple controllers in a non-volatile memory based storage device
US9229855B2 (en) * 2013-11-12 2016-01-05 Skyera, Llc Apparatus and method for routing information in a non-volatile memory-based storage device
US10241709B2 (en) * 2013-12-09 2019-03-26 Vmware, Inc. Elastic temporary filesystem
US10019354B2 (en) * 2013-12-09 2018-07-10 Intel Corporation Apparatus and method for fast cache flushing including determining whether data is to be stored in nonvolatile memory
US9286238B1 (en) * 2013-12-31 2016-03-15 Emc Corporation System, apparatus, and method of cache management
US9933980B2 (en) * 2014-02-24 2018-04-03 Toshiba Memory Corporation NAND raid controller for connection between an SSD controller and multiple non-volatile storage units
US9509769B2 (en) * 2014-02-28 2016-11-29 Sap Se Reflecting data modification requests in an offline environment
US9646012B1 (en) * 2014-03-06 2017-05-09 Veritas Technologies Llc Caching temporary data in solid state storage devices
US10133488B2 (en) * 2014-03-17 2018-11-20 Primaryio, Inc. Apparatus and method for cache provisioning, configuration for optimal application performance
US10146437B2 (en) 2014-03-17 2018-12-04 Primaryio, Inc. Tier aware caching solution to increase application performance
US10083051B1 (en) * 2014-04-11 2018-09-25 VCE IP Holding Company LLC System, method, and code for classifying resources of a virtual computing environment
US9697130B2 (en) 2014-06-25 2017-07-04 Sandisk Technologies Llc Systems and methods for storage service automation
US9483300B2 (en) * 2014-07-15 2016-11-01 Red Hat Israel, Ltd. Importing a running VM
US9547592B2 (en) * 2014-07-29 2017-01-17 International Business Machines Corporation Cache mobility
US20160048344A1 (en) * 2014-08-13 2016-02-18 PernixData, Inc. Distributed caching systems and methods
WO2016032955A2 (en) * 2014-08-25 2016-03-03 Cacheio Llc Nvram enabled storage systems
US10552085B1 (en) * 2014-09-09 2020-02-04 Radian Memory Systems, Inc. Techniques for directed data migration
US11783898B2 (en) 2014-09-18 2023-10-10 Jonker Llc Ephemeral storage elements, circuits, and systems
US20160092353A1 (en) * 2014-09-25 2016-03-31 Robert C. Swanson Establishing cold storage pools from aging memory
US10061738B2 (en) 2014-09-30 2018-08-28 Jonker Llc Ephemeral peripheral device
US10115467B2 (en) 2014-09-30 2018-10-30 Jonker Llc One time accessible (OTA) non-volatile memory
US10839086B2 (en) * 2014-09-30 2020-11-17 Jonker Llc Method of operating ephemeral peripheral device
US10169124B2 (en) * 2014-12-16 2019-01-01 Samsung Electronics Co., Ltd. Unified object interface for memory and storage system
US9851990B2 (en) 2015-01-30 2017-12-26 American Megatrends, Inc. Method and system for performing on-demand data write through based on UPS power status
US9886387B2 (en) * 2015-01-30 2018-02-06 American Megatrends, Inc. Method and system for performing on-demand data write through based on virtual machine types
JP2016184188A (ja) * 2015-03-25 2016-10-20 日本電気株式会社 管理装置、管理方法とそのプログラム、および、情報処理システム
US11327779B2 (en) * 2015-03-25 2022-05-10 Vmware, Inc. Parallelized virtual machine configuration
CN104881371B (zh) * 2015-05-29 2018-02-09 清华大学 持久性内存事务处理缓存管理方法与装置
US9813500B2 (en) * 2015-06-12 2017-11-07 Cisco Technology, Inc. Allocating cloud storage based on storage attributes
US10474486B2 (en) * 2015-06-30 2019-11-12 Veritas Technologies Llc Data access accelerator
US20170038933A1 (en) * 2015-08-06 2017-02-09 Facebook, Inc. Systems and methods for providing reminders for content in social networks
US10558480B2 (en) 2015-09-10 2020-02-11 Veritas Technologies Llc Optimizing access to production data
CN106547476B (zh) * 2015-09-22 2021-11-09 伊姆西Ip控股有限责任公司 用于数据存储系统的方法和装置
US10496545B2 (en) * 2015-11-24 2019-12-03 Hewlett Packard Enterprise Development Lp Data caching in a large-scale processing environment
US10713175B2 (en) * 2015-12-02 2020-07-14 Telefonaktiebolaget Lm Ericsson (Publ) Method and memory availability managing module for managing availability of memory pages
US10049004B2 (en) * 2015-12-09 2018-08-14 Samsung Electronics Co., Ltd. Electronic system with memory data protection mechanism and method of operation thereof
CN107851062A (zh) * 2015-12-31 2018-03-27 华为技术有限公司 一种主机集群中缓存管理方法及主机
US9864661B2 (en) * 2016-02-12 2018-01-09 Hewlett Packard Enterprise Development Lp Cache-accelerated replication of snapshots between storage devices
CN107515724B (zh) * 2016-06-16 2021-04-02 伊姆西Ip控股有限责任公司 用于再现存储系统的输入输出的方法和设备
CN107526529B (zh) * 2016-06-21 2020-08-07 伊姆西Ip控股有限责任公司 用于虚拟机的方法和装置
US10678578B2 (en) 2016-06-30 2020-06-09 Microsoft Technology Licensing, Llc Systems and methods for live migration of a virtual machine based on heat map and access pattern
US10390114B2 (en) * 2016-07-22 2019-08-20 Intel Corporation Memory sharing for physical accelerator resources in a data center
TWI619013B (zh) * 2016-08-24 2018-03-21 康齊科技股份有限公司 記憶體管理系統及其方法
US10380058B2 (en) 2016-09-06 2019-08-13 Oracle International Corporation Processor core to coprocessor interface with FIFO semantics
CN107885671B (zh) * 2016-09-30 2021-09-14 华为技术有限公司 一种非易失性内存的持久化方法和计算设备
US10783102B2 (en) * 2016-10-11 2020-09-22 Oracle International Corporation Dynamically configurable high performance database-aware hash engine
US10725947B2 (en) 2016-11-29 2020-07-28 Oracle International Corporation Bit vector gather row count calculation and handling in direct memory access engine
US10437691B1 (en) * 2017-03-29 2019-10-08 Veritas Technologies Llc Systems and methods for caching in an erasure-coded system
CN106959672B (zh) * 2017-04-28 2020-07-28 深圳市汇川控制技术有限公司 一种基于api的工业运动控制系统及方法
US10152422B1 (en) 2017-06-13 2018-12-11 Seagate Technology Llc Page-based method for optimizing cache metadata updates
US10810116B2 (en) * 2017-06-29 2020-10-20 Sap Se In-memory database with page size adaptation during loading
US20190004947A1 (en) * 2017-06-30 2019-01-03 Intel Corporation Selective temporary data storage
KR102474582B1 (ko) 2017-08-28 2022-12-05 삼성전자주식회사 가상화 클러스터 환경의 비바람직한 호스트 서버 상에서 더티 가상 머신의 실행을 방지하는 방법 및 시스템
US10592293B2 (en) 2017-08-31 2020-03-17 Cisco Technology, Inc. Tenant-specific policy generation and enforcement within containers
US20190095107A1 (en) * 2017-09-28 2019-03-28 Intel Corporation Data classification for placement within storage devices
US11106588B2 (en) * 2017-11-28 2021-08-31 International Business Machines Corporation Deferred method of allocating disk space for lightning segments
CN108268217B (zh) * 2018-01-10 2021-04-30 北京航天云路有限公司 一种基于时序数据冷热分类的分层存储方法
US10678439B2 (en) * 2018-04-02 2020-06-09 Micron Technology, Inc. Optimization of memory systems based on performance goals
CN108519863B (zh) * 2018-04-12 2021-06-11 郑州云海信息技术有限公司 一种存储系统的io管理方法及装置
CN109002401A (zh) * 2018-05-04 2018-12-14 广东睿江云计算股份有限公司 基于动态缓冲的虚拟机磁盘复制过程读取方法及装置
KR102052312B1 (ko) * 2018-05-08 2019-12-05 주식회사 애포샤 캐싱 장치 및 방법
US10656869B1 (en) * 2018-06-28 2020-05-19 Amazon Technologies, Inc. Performance-based volume replica migration
CN109032838B (zh) * 2018-06-28 2022-07-15 上海爱数信息技术股份有限公司 虚拟机备份恢复数据一致性的自动校验方法
US11573962B2 (en) * 2018-10-19 2023-02-07 Oracle International Corporation Dynamic performance tuning based on implied data characteristics
US11568179B2 (en) 2018-10-19 2023-01-31 Oracle International Corporation Selecting an algorithm for analyzing a data set based on the distribution of the data set
US11048523B2 (en) 2018-10-25 2021-06-29 Dell Products, L.P. Enabling software sensor power operation requests via baseboard management controller (BMC)
US11126486B2 (en) 2018-10-25 2021-09-21 Dell Products, L.P. Prediction of power shutdown and outage incidents
US10860078B2 (en) * 2018-10-25 2020-12-08 Dell Products, L.P. Managing power request during cluster operations
US10866890B2 (en) * 2018-11-07 2020-12-15 Arm Limited Method and apparatus for implementing lock-free data structures
US11010067B2 (en) * 2018-12-28 2021-05-18 Intel Corporation Defense against speculative side-channel analysis of a computer system
US10895997B2 (en) * 2019-02-20 2021-01-19 Nutanix, Inc. Durable client-side caching for distributed storage
US11263180B2 (en) * 2019-02-23 2022-03-01 National Tsing Hua University Method for facilitating recovery from crash of solid-state storage device, method of data synchronization, computer system, and solid-state storage device
US20220114096A1 (en) 2019-03-15 2022-04-14 Intel Corporation Multi-tile Memory Management for Detecting Cross Tile Access Providing Multi-Tile Inference Scaling and Providing Page Migration
WO2020190796A1 (en) * 2019-03-15 2020-09-24 Intel Corporation Systems and methods for cache optimization
US11934342B2 (en) 2019-03-15 2024-03-19 Intel Corporation Assistance for hardware prefetch in cache access
CN110174997B (zh) * 2019-04-17 2022-12-13 贵州力创科技发展有限公司 一种基于持久层的数据存储方法及区块链服务器
US11921637B2 (en) * 2019-05-24 2024-03-05 Texas Instruments Incorporated Write streaming with cache write acknowledgment in a processor
US20230143181A1 (en) * 2019-08-27 2023-05-11 Micron Technology, Inc. Write buffer control in managed memory system
CN110618834B (zh) * 2019-09-05 2021-10-15 苏州浪潮智能科技有限公司 I/o栈请求响应方法、系统和i/o栈请求响应控制方法及系统
US11481325B2 (en) 2020-03-30 2022-10-25 Citrix Systems, Inc. Secure fast reboot of a virtual machine
US20220206709A1 (en) * 2020-12-29 2022-06-30 Arm Limited Circuitry and apparatus
KR20220105304A (ko) * 2021-01-20 2022-07-27 에스케이하이닉스 주식회사 시스템 및 시스템의 동작 방법
US20240095186A1 (en) * 2022-09-15 2024-03-21 International Business Machines Corporation Virtual machine failover with disaggregated shared memory

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0784847A (ja) * 1993-09-17 1995-03-31 Fujitsu Ltd ディスク複写処理方式
JPH1024906A (ja) * 1996-07-09 1998-01-27 Kubota Corp 球状野菜の包装設備
JP2008090378A (ja) * 2006-09-29 2008-04-17 Seiko Epson Corp ハイブリッドファイルシステム、オペレーティングシステム、キャッシュ制御方法および記録媒体
US20090132621A1 (en) * 2006-07-28 2009-05-21 Craig Jensen Selecting storage location for file storage based on storage longevity and speed
US7752173B1 (en) * 2005-12-16 2010-07-06 Network Appliance, Inc. Method and apparatus for improving data processing system performance by reducing wasted disk writes
US20100274962A1 (en) * 2009-04-26 2010-10-28 Sandisk Il Ltd. Method and apparatus for implementing a caching policy for non-volatile memory
US20110119228A1 (en) * 2009-11-16 2011-05-19 Symantec Corporation Selective file system caching based upon a configurable cache map
US20120131278A1 (en) * 2010-03-08 2012-05-24 Jichuan Chang Data storage apparatus and methods
US20120210066A1 (en) * 2011-02-15 2012-08-16 Fusion-Io, Inc. Systems and methods for a file-level cache
US20130339958A1 (en) * 2011-03-29 2013-12-19 Brainlab Ag Processing of digital data, in particular medical data by a virtual machine

Family Cites Families (403)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB123416A (en) 1918-02-28 1919-02-27 John Buchanan Composite Valve for all Classes of Internal Combustion Engines.
JPS55157053A (en) * 1979-05-25 1980-12-06 Nec Corp Disc cash write-in control system
US4571674A (en) 1982-09-27 1986-02-18 International Business Machines Corporation Peripheral storage system having multiple data transfer rates
US5043871A (en) 1986-03-26 1991-08-27 Hitachi, Ltd. Method and apparatus for database update/recovery
US5359726A (en) 1988-12-22 1994-10-25 Thomas Michael E Ferroelectric storage device used in place of a rotating disk drive unit in a computer system
US5247658A (en) 1989-10-31 1993-09-21 Microsoft Corporation Method and system for traversing linked list record based upon write-once predetermined bit value of secondary pointers
US5261068A (en) 1990-05-25 1993-11-09 Dell Usa L.P. Dual path memory retrieval system for an interleaved dynamic RAM memory unit
US5193184A (en) 1990-06-18 1993-03-09 Storage Technology Corporation Deleted data file space release system for a dynamically mapped virtual data storage subsystem
US5307497A (en) 1990-06-25 1994-04-26 International Business Machines Corp. Disk operating system loadable from read only memory using installable file system interface
US5291496A (en) 1990-10-18 1994-03-01 The United States Of America As Represented By The United States Department Of Energy Fault-tolerant corrector/detector chip for high-speed data processing
KR930003088B1 (ko) 1990-10-23 1993-04-17 삼성전자 주식회사 초고주파와 히터열을 이용한 정화 소각장치
US5325509A (en) 1991-03-05 1994-06-28 Zitel Corporation Method of operating a cache memory including determining desirability of cache ahead or cache behind based on a number of available I/O operations
US5438671A (en) 1991-07-19 1995-08-01 Dell U.S.A., L.P. Method and system for transferring compressed bytes of information between separate hard disk drive units
US5313475A (en) 1991-10-31 1994-05-17 International Business Machines Corporation ECC function with self-contained high performance partial write or read/modify/write and parity look-ahead interface scheme
US5469555A (en) 1991-12-19 1995-11-21 Opti, Inc. Adaptive write-back method and apparatus wherein the cache system operates in a combination of write-back and write-through modes for a cache-based microprocessor system
US6256642B1 (en) 1992-01-29 2001-07-03 Microsoft Corporation Method and system for file system management using a flash-erasable, programmable, read-only memory
US5596736A (en) 1992-07-22 1997-01-21 Fujitsu Limited Data transfers to a backing store of a dynamically mapped data storage system in which data has nonsequential logical addresses
US5416915A (en) 1992-12-11 1995-05-16 International Business Machines Corporation Method and system for minimizing seek affinity and enhancing write sensitivity in a DASD array
JPH06187249A (ja) * 1992-12-16 1994-07-08 Nec Eng Ltd ディスクアレイ装置
US5845329A (en) 1993-01-29 1998-12-01 Sanyo Electric Co., Ltd. Parallel computer
US5459850A (en) 1993-02-19 1995-10-17 Conner Peripherals, Inc. Flash solid state drive that emulates a disk drive and stores variable length and fixed lenth data blocks
JP2856621B2 (ja) 1993-02-24 1999-02-10 インターナショナル・ビジネス・マシーンズ・コーポレイション 一括消去型不揮発性メモリおよびそれを用いる半導体ディスク装置
US5404485A (en) 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system
JP2784440B2 (ja) 1993-04-14 1998-08-06 インターナショナル・ビジネス・マシーンズ・コーポレイション データ・ページの転送制御方法
CA2121852A1 (en) 1993-04-29 1994-10-30 Larry T. Jost Disk meshing and flexible storage mapping with enhanced flexible caching
US5499354A (en) 1993-05-19 1996-03-12 International Business Machines Corporation Method and means for dynamic cache management by variable space and time binding and rebinding of cache extents to DASD cylinders
US5392244A (en) 1993-08-19 1995-02-21 Hewlett-Packard Company Memory systems with data storage redundancy management
US5682497A (en) 1993-09-28 1997-10-28 Intel Corporation Managing file structures for a flash memory file system in a computer
US5535399A (en) 1993-09-30 1996-07-09 Quantum Corporation Solid state disk drive unit having on-board backup non-volatile memory
JPH086854A (ja) 1993-12-23 1996-01-12 Unisys Corp アウトボードファイルキャッシュ外部処理コンプレックス
US5809527A (en) 1993-12-23 1998-09-15 Unisys Corporation Outboard file cache system
GB9326499D0 (en) 1993-12-24 1994-03-02 Deas Alexander R Flash memory system with arbitrary block size
US5559988A (en) 1993-12-30 1996-09-24 Intel Corporation Method and circuitry for queuing snooping, prioritizing and suspending commands
US5553261A (en) 1994-04-01 1996-09-03 Intel Corporation Method of performing clean-up of a solid state disk while executing a read command
US5603001A (en) 1994-05-09 1997-02-11 Kabushiki Kaisha Toshiba Semiconductor disk system having a plurality of flash memories
US5434994A (en) 1994-05-23 1995-07-18 International Business Machines Corporation System and method for maintaining replicated data coherency in a data processing system
US5696917A (en) 1994-06-03 1997-12-09 Intel Corporation Method and apparatus for performing burst read operations in an asynchronous nonvolatile memory
US5504882A (en) 1994-06-20 1996-04-02 International Business Machines Corporation Fault tolerant data storage subsystem employing hierarchically arranged controllers
JPH08153014A (ja) 1994-11-30 1996-06-11 Hitachi Ltd クライアントサーバシステム
DE19540915A1 (de) 1994-11-10 1996-05-15 Raymond Engineering Redundante Anordnung von Festkörper-Speicherbausteinen
US6170047B1 (en) 1994-11-16 2001-01-02 Interactive Silicon, Inc. System and method for managing system memory and/or non-volatile memory using a memory controller with integrated compression and decompression capabilities
US6002411A (en) 1994-11-16 1999-12-14 Interactive Silicon, Inc. Integrated video and memory controller with data processing and graphical processing capabilities
US5586291A (en) 1994-12-23 1996-12-17 Emc Corporation Disk controller with volatile and non-volatile cache memories
US5651133A (en) 1995-02-01 1997-07-22 Hewlett-Packard Company Methods for avoiding over-commitment of virtual capacity in a redundant hierarchic data storage system
US5701434A (en) 1995-03-16 1997-12-23 Hitachi, Ltd. Interleave memory controller with a common access queue
DE69615278T2 (de) 1995-06-06 2002-06-27 Hewlett Packard Co SDRAM-Datenzuweisungsanordnung und -verfahren
US5682499A (en) 1995-06-06 1997-10-28 International Business Machines Corporation Directory rebuild method and apparatus for maintaining and rebuilding directory information for compressed data on direct access storage device (DASD)
US5838614A (en) 1995-07-31 1998-11-17 Lexar Microsystems, Inc. Identification and verification of a sector within a block of mass storage flash memory
US5845313A (en) 1995-07-31 1998-12-01 Lexar Direct logical block addressing flash memory mass storage architecture
US6978342B1 (en) 1995-07-31 2005-12-20 Lexar Media, Inc. Moving sectors within a block of information in a flash memory mass storage architecture
US5930815A (en) 1995-07-31 1999-07-27 Lexar Media, Inc. Moving sequential sectors within a block of information in a flash memory mass storage architecture
US6801979B1 (en) 1995-07-31 2004-10-05 Lexar Media, Inc. Method and apparatus for memory control circuit
US6757800B1 (en) 1995-07-31 2004-06-29 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US6728851B1 (en) 1995-07-31 2004-04-27 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US6081878A (en) 1997-03-31 2000-06-27 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US5907856A (en) 1995-07-31 1999-05-25 Lexar Media, Inc. Moving sectors within a block of information in a flash memory mass storage architecture
US8171203B2 (en) 1995-07-31 2012-05-01 Micron Technology, Inc. Faster write operations to nonvolatile memory using FSInfo sector manipulation
US5754563A (en) 1995-09-11 1998-05-19 Ecc Technologies, Inc. Byte-parallel system for implementing reed-solomon error-correcting codes
US6014724A (en) 1995-10-27 2000-01-11 Scm Microsystems (U.S.) Inc. Flash translation layer block indication map revision system and method
US6330688B1 (en) 1995-10-31 2001-12-11 Intel Corporation On chip error correction for devices in a solid state drive
US5734861A (en) 1995-12-12 1998-03-31 International Business Machines Corporation Log-structured disk array with garbage collection regrouping of tracks to preserve seek affinity
US5787486A (en) 1995-12-15 1998-07-28 International Business Machines Corporation Bus protocol for locked cycle cache hit
US5757567A (en) 1996-02-08 1998-05-26 International Business Machines Corporation Method and apparatus for servo control with high efficiency gray code for servo track ID
US6385710B1 (en) 1996-02-23 2002-05-07 Sun Microsystems, Inc. Multiple-mode external cache subsystem
US5960462A (en) 1996-09-26 1999-09-28 Intel Corporation Method and apparatus for analyzing a main memory configuration to program a memory controller
US5754567A (en) 1996-10-15 1998-05-19 Micron Quantum Devices, Inc. Write reduction in flash memory systems through ECC usage
TW349196B (en) 1996-10-18 1999-01-01 Ibm Cached synchronous DRAM architecture having a mode register programmable cache policy
JPH10154101A (ja) 1996-11-26 1998-06-09 Toshiba Corp データ記憶システム及び同システムに適用するキャッシュ制御方法
US6279069B1 (en) 1996-12-26 2001-08-21 Intel Corporation Interface for flash EEPROM memory arrays
US5802602A (en) 1997-01-17 1998-09-01 Intel Corporation Method and apparatus for performing reads of related data from a set-associative cache memory
US6073232A (en) 1997-02-25 2000-06-06 International Business Machines Corporation Method for minimizing a computer's initial program load time after a system reset or a power-on using non-volatile storage
US5961660A (en) 1997-03-03 1999-10-05 International Business Machines Corporation Method and apparatus for optimizing ECC memory performance
JP3459868B2 (ja) 1997-05-16 2003-10-27 日本電気株式会社 メモリ障害時におけるグループ入れ替え方式
US6418478B1 (en) 1997-10-30 2002-07-09 Commvault Systems, Inc. Pipelined high speed data transfer mechanism
US6567889B1 (en) 1997-12-19 2003-05-20 Lsi Logic Corporation Apparatus and method to provide virtual solid state disk in cache memory in a storage controller
US6101601A (en) 1998-04-20 2000-08-08 International Business Machines Corporation Method and apparatus for hibernation within a distributed data processing system
US6092159A (en) 1998-05-05 2000-07-18 Lsi Logic Corporation Implementation of configurable on-chip fast memory using the data cache RAM
US5957158A (en) 1998-05-11 1999-09-28 Automatic Switch Company Visual position indicator
US6185654B1 (en) 1998-07-17 2001-02-06 Compaq Computer Corporation Phantom resource memory address mapping system
US6507911B1 (en) 1998-07-22 2003-01-14 Entrust Technologies Limited System and method for securely deleting plaintext data
US6266785B1 (en) 1998-09-01 2001-07-24 Ncr Corporation File system filter driver apparatus and method
US6209088B1 (en) 1998-09-21 2001-03-27 Microsoft Corporation Computer hibernation implemented by a computer operating system
US6629112B1 (en) 1998-12-31 2003-09-30 Nortel Networks Limited Resource management for CORBA-based applications
US6412080B1 (en) 1999-02-23 2002-06-25 Microsoft Corporation Lightweight persistent storage system for flash memory devices
US6141249A (en) 1999-04-01 2000-10-31 Lexar Media, Inc. Organization of blocks within a nonvolatile memory unit to effectively decrease sector write operation time
KR100330164B1 (ko) 1999-04-27 2002-03-28 윤종용 무효 블록들을 가지는 복수의 플래시 메모리들을 동시에 프로그램하는 방법
US7194740B1 (en) 1999-05-28 2007-03-20 Oracle International Corporation System for extending an addressable range of memory
US7660941B2 (en) 2003-09-10 2010-02-09 Super Talent Electronics, Inc. Two-level RAM lookup table for block and page allocation and wear-leveling in limited-write flash-memories
US6336174B1 (en) 1999-08-09 2002-01-01 Maxtor Corporation Hardware assisted memory backup system and method
KR100577380B1 (ko) 1999-09-29 2006-05-09 삼성전자주식회사 플래시 메모리와 그 제어 방법
ATE247296T1 (de) 1999-10-25 2003-08-15 Sun Microsystems Inc Speichersystem mit unterstützung von dateistufenzugriffen und blockstufenzugriffen
AU2746001A (en) 1999-10-25 2001-05-08 Infolibria, Inc. Fast indexing of web objects
US8171204B2 (en) 2000-01-06 2012-05-01 Super Talent Electronics, Inc. Intelligent solid-state non-volatile memory device (NVMD) system with multi-level caching of multiple channels
US8452912B2 (en) 2007-10-11 2013-05-28 Super Talent Electronics, Inc. Flash-memory system with enhanced smart-storage switch and packed meta-data cache for mitigating write amplification by delaying and merging writes until a host read
US6671757B1 (en) 2000-01-26 2003-12-30 Fusionone, Inc. Data transfer and synchronization system
US6785835B2 (en) 2000-01-25 2004-08-31 Hewlett-Packard Development Company, L.P. Raid memory
US6240040B1 (en) 2000-03-15 2001-05-29 Advanced Micro Devices, Inc. Multiple bank simultaneous operation for a flash memory
US7089391B2 (en) 2000-04-14 2006-08-08 Quickshift, Inc. Managing a codec engine for memory compression/decompression operations using a data movement engine
US6523102B1 (en) 2000-04-14 2003-02-18 Interactive Silicon, Inc. Parallel compression/decompression system and method for implementation of in-memory compressed cache improving storage density and access speed for industry standard memory subsystems and in-line memory modules
US6898670B2 (en) 2000-04-18 2005-05-24 Storeage Networking Technologies Storage virtualization in a storage area network
US6675349B1 (en) 2000-05-11 2004-01-06 International Business Machines Corporation Error correction coding of data blocks with included parity bits
US6779094B2 (en) 2000-06-19 2004-08-17 Storage Technology Corporation Apparatus and method for instant copy of data by writing new data to an additional physical storage area
US6804755B2 (en) 2000-06-19 2004-10-12 Storage Technology Corporation Apparatus and method for performing an instant copy of data based on a dynamically changeable virtual mapping scheme
US6912537B2 (en) 2000-06-20 2005-06-28 Storage Technology Corporation Dynamically changeable virtual mapping scheme
WO2002001365A2 (en) 2000-06-23 2002-01-03 Intel Corporation Non-volatile cache
US6813686B1 (en) 2000-06-27 2004-11-02 Emc Corporation Method and apparatus for identifying logical volumes in multiple element computer storage domains
US6981070B1 (en) 2000-07-12 2005-12-27 Shun Hang Luk Network storage device having solid-state non-volatile memory
US6658438B1 (en) 2000-08-14 2003-12-02 Matrix Semiconductor, Inc. Method for deleting stored digital data from write-once memory device
JP3671138B2 (ja) 2000-08-17 2005-07-13 ジャパンコンポジット株式会社 通気性防水被覆構造体、およびその施工方法
US6404647B1 (en) 2000-08-24 2002-06-11 Hewlett-Packard Co. Solid-state mass memory storage device
US6883079B1 (en) 2000-09-01 2005-04-19 Maxtor Corporation Method and apparatus for using data compression as a means of increasing buffer bandwidth
US6625685B1 (en) 2000-09-20 2003-09-23 Broadcom Corporation Memory controller with programmable configuration
US7039727B2 (en) 2000-10-17 2006-05-02 Microsoft Corporation System and method for controlling mass storage class digital imaging devices
US6779088B1 (en) 2000-10-24 2004-08-17 International Business Machines Corporation Virtual uncompressed cache size control in compressed memory systems
US20020154633A1 (en) 2000-11-22 2002-10-24 Yeshik Shin Communications architecture for storage-based devices
US20020069318A1 (en) 2000-12-01 2002-06-06 Chow Yan Chiew Real time application accelerator and method of operating the same
US6976060B2 (en) 2000-12-05 2005-12-13 Agami Sytems, Inc. Symmetric shared file storage system
US20020103819A1 (en) 2000-12-12 2002-08-01 Fresher Information Corporation Technique for stabilizing data in a non-log based information storage and retrieval system
US7013376B2 (en) 2000-12-20 2006-03-14 Hewlett-Packard Development Company, L.P. Method and system for data block sparing in a solid-state storage device
KR100365725B1 (ko) 2000-12-27 2002-12-26 한국전자통신연구원 플래시 메모리를 이용한 파일 시스템에서 등급별 지움정책 및 오류 복구 방법
KR100708475B1 (ko) 2001-01-08 2007-04-18 삼성전자주식회사 펑쳐링된 패리티심벌을 복원하는 터보디코더용 프리디코더 및 터보코드의 복원방법
JP4818812B2 (ja) 2006-05-31 2011-11-16 株式会社日立製作所 フラッシュメモリストレージシステム
US6516380B2 (en) 2001-02-05 2003-02-04 International Business Machines Corporation System and method for a log-based non-volatile write cache in a storage controller
US7260820B1 (en) 2001-04-26 2007-08-21 Vm Ware, Inc. Undefeatable transformation for virtual machine I/O operations
AU2002305315A1 (en) 2001-05-08 2002-11-18 International Business Machines Corporation 8b/10b encoding and decoding for high speed applications
US6731447B2 (en) 2001-06-04 2004-05-04 Xerox Corporation Secure data file erasure
JP4256600B2 (ja) 2001-06-19 2009-04-22 Tdk株式会社 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
US6839808B2 (en) 2001-07-06 2005-01-04 Juniper Networks, Inc. Processing cluster having multiple compute engines and shared tier one caches
US6785776B2 (en) 2001-07-26 2004-08-31 International Business Machines Corporation DMA exclusive cache state providing a fully pipelined input/output DMA write mechanism
US7275135B2 (en) 2001-08-31 2007-09-25 Intel Corporation Hardware updated metadata for non-volatile mass storage cache
US20030061296A1 (en) 2001-09-24 2003-03-27 International Business Machines Corporation Memory semantic storage I/O
US6938133B2 (en) 2001-09-28 2005-08-30 Hewlett-Packard Development Company, L.P. Memory latency and bandwidth optimizations
GB0123416D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Non-volatile memory control
US6892264B2 (en) 2001-10-05 2005-05-10 International Business Machines Corporation Storage area network methods and apparatus for associating a logical identification with a physical identification
US20030093741A1 (en) 2001-11-14 2003-05-15 Cenk Argon Parallel decoder for product codes
US6715046B1 (en) 2001-11-29 2004-03-30 Cisco Technology, Inc. Method and apparatus for reading from and writing to storage using acknowledged phases of sets of data
US7173929B1 (en) 2001-12-10 2007-02-06 Incipient, Inc. Fast path for performing data operations
US7013379B1 (en) 2001-12-10 2006-03-14 Incipient, Inc. I/O primitives
US6986015B2 (en) * 2001-12-10 2006-01-10 Incipient, Inc. Fast path caching
JP4061272B2 (ja) 2002-01-09 2008-03-12 株式会社ルネサステクノロジ メモリシステム及びメモリカード
JP4154893B2 (ja) 2002-01-23 2008-09-24 株式会社日立製作所 ネットワークストレージ仮想化方法
US20030145230A1 (en) 2002-01-31 2003-07-31 Huimin Chiu System for exchanging data utilizing remote direct memory access
US7010662B2 (en) 2002-02-27 2006-03-07 Microsoft Corporation Dynamic data structures for tracking file system free space in a flash memory device
US7085879B2 (en) 2002-02-27 2006-08-01 Microsoft Corporation Dynamic data structures for tracking data stored in a flash memory device
US7533214B2 (en) 2002-02-27 2009-05-12 Microsoft Corporation Open architecture flash driver
JP2003281071A (ja) 2002-03-20 2003-10-03 Seiko Epson Corp データ転送制御装置、電子機器及びデータ転送制御方法
JP4050548B2 (ja) 2002-04-18 2008-02-20 株式会社ルネサステクノロジ 半導体記憶装置
US7043599B1 (en) 2002-06-20 2006-05-09 Rambus Inc. Dynamic memory supporting simultaneous refresh and data-access transactions
US7562089B2 (en) 2002-06-26 2009-07-14 Seagate Technology Llc Systems and methods for storing information to allow users to manage files
US7082495B2 (en) 2002-06-27 2006-07-25 Microsoft Corporation Method and apparatus to reduce power consumption and improve read/write performance of hard disk drives using non-volatile memory
JP4001516B2 (ja) 2002-07-05 2007-10-31 富士通株式会社 縮退制御装置及び方法
US7051152B1 (en) 2002-08-07 2006-05-23 Nvidia Corporation Method and system of improving disk access time by compression
KR100505638B1 (ko) 2002-08-28 2005-08-03 삼성전자주식회사 워킹 콘텍스트 저장 및 복구 장치 및 방법
US7076606B2 (en) 2002-09-20 2006-07-11 Quantum Corporation Accelerated RAID with rewind capability
US7340566B2 (en) 2002-10-21 2008-03-04 Microsoft Corporation System and method for initializing a memory device from block oriented NAND flash
US7171536B2 (en) 2002-10-28 2007-01-30 Sandisk Corporation Unusable block management within a non-volatile memory system
US7035974B2 (en) 2002-11-06 2006-04-25 Synology Inc. RAID-5 disk having cache memory implemented using non-volatile RAM
US6996676B2 (en) 2002-11-14 2006-02-07 International Business Machines Corporation System and method for implementing an adaptive replacement cache policy
US7093101B2 (en) 2002-11-21 2006-08-15 Microsoft Corporation Dynamic data structures for tracking file system free space in a flash memory device
US7121639B2 (en) 2002-12-02 2006-10-17 Silverbrook Research Pty Ltd Data rate equalisation to account for relatively different printhead widths
US7318141B2 (en) 2002-12-17 2008-01-08 Intel Corporation Methods and systems to control virtual machines
US6957158B1 (en) 2002-12-23 2005-10-18 Power Measurement Ltd. High density random access memory in an intelligent electric device
KR100502608B1 (ko) 2002-12-24 2005-07-20 한국전자통신연구원 계산이 간단한 저밀도 패리티 검사 부호를 위한 메시지 전달 복호기
US20040148360A1 (en) 2003-01-24 2004-07-29 Hewlett-Packard Development Company Communication-link-attached persistent memory device
US20040169885A1 (en) 2003-02-28 2004-09-02 Mellor Douglas J. Memory management
US6959369B1 (en) 2003-03-06 2005-10-25 International Business Machines Corporation Method, system, and program for data backup
US7076723B2 (en) 2003-03-14 2006-07-11 Quantum Corporation Error correction codes
US8041878B2 (en) 2003-03-19 2011-10-18 Samsung Electronics Co., Ltd. Flash file system
US7197657B1 (en) 2003-04-03 2007-03-27 Advanced Micro Devices, Inc. BMC-hosted real-time clock and non-volatile RAM replacement
US7987249B2 (en) 2003-04-09 2011-07-26 Intel Corporation Soft system failure recovery for management consoles supporting ASF RMCP
US7415591B1 (en) 2003-04-23 2008-08-19 Emc Corporation Method and apparatus for migrating data and automatically provisioning a target for the migration
US7610348B2 (en) 2003-05-07 2009-10-27 International Business Machines Distributed file serving architecture system with metadata storage virtualization and data access at the data server connection speed
JP2004348818A (ja) 2003-05-20 2004-12-09 Sharp Corp 半導体記憶装置の書込制御方法及びシステム並びに携帯電子機器
US7243203B2 (en) 2003-06-13 2007-07-10 Sandisk 3D Llc Pipeline circuit for low latency memory
US7047366B1 (en) 2003-06-17 2006-05-16 Emc Corporation QOS feature knobs
US20040268359A1 (en) 2003-06-27 2004-12-30 Hanes David H. Computer-readable medium, method and computer system for processing input/output requests
US7149947B1 (en) 2003-09-04 2006-12-12 Emc Corporation Method of and system for validating an error correction code and parity information associated with a data word
US7483974B2 (en) 2003-09-24 2009-01-27 Intel Corporation Virtual management controller to coordinate processing blade management in a blade server environment
US7487235B2 (en) 2003-09-24 2009-02-03 Dell Products L.P. Dynamically varying a raid cache policy in order to optimize throughput
US7173852B2 (en) 2003-10-03 2007-02-06 Sandisk Corporation Corrected data storage and handling methods
US7337201B1 (en) 2003-10-08 2008-02-26 Sun Microsystems, Inc. System and method to increase memory allocation efficiency
TWI238325B (en) 2003-10-09 2005-08-21 Quanta Comp Inc Apparatus of remote server console redirection
US7096321B2 (en) 2003-10-21 2006-08-22 International Business Machines Corporation Method and system for a cache replacement technique with adaptive skipping
WO2005065084A2 (en) 2003-11-13 2005-07-21 Commvault Systems, Inc. System and method for providing encryption in pipelined storage operations in a storage network
JP4287433B2 (ja) 2003-11-18 2009-07-01 パナソニック株式会社 ファイル記録装置
US7350127B2 (en) 2003-12-12 2008-03-25 Hewlett-Packard Development Company, L.P. Error correction method and system
US20050149819A1 (en) 2003-12-15 2005-07-07 Daewoo Electronics Corporation Three-dimensional error correction method
US7500000B2 (en) 2003-12-17 2009-03-03 International Business Machines Corporation Method and system for assigning or creating a resource
US20050149618A1 (en) 2003-12-23 2005-07-07 Mobile Action Technology Inc. System and method of transmitting electronic files over to a mobile phone
US7139864B2 (en) 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
US7631138B2 (en) 2003-12-30 2009-12-08 Sandisk Corporation Adaptive mode switching of flash memory address mapping based on host usage characteristics
US7356651B2 (en) 2004-01-30 2008-04-08 Piurata Technologies, Llc Data-aware cache state machine
US7305520B2 (en) 2004-01-30 2007-12-04 Hewlett-Packard Development Company, L.P. Storage system with capability to allocate virtual storage segments among a plurality of controllers
US7130956B2 (en) 2004-02-10 2006-10-31 Sun Microsystems, Inc. Storage system including hierarchical cache metadata
US7130957B2 (en) 2004-02-10 2006-10-31 Sun Microsystems, Inc. Storage system structure for storing relational cache metadata
US7231590B2 (en) 2004-02-11 2007-06-12 Microsoft Corporation Method and apparatus for visually emphasizing numerical data contained within an electronic document
JP2005250938A (ja) 2004-03-05 2005-09-15 Hitachi Ltd 記憶制御システム及び方法
JP2005284816A (ja) 2004-03-30 2005-10-13 Hitachi Ltd ディスクアレイシステム
US7281192B2 (en) 2004-04-05 2007-10-09 Broadcom Corporation LDPC (Low Density Parity Check) coded signal decoding using parallel and simultaneous bit node and check node processing
US7725628B1 (en) 2004-04-20 2010-05-25 Lexar Media, Inc. Direct secondary device interface by a host
US7711140B2 (en) 2004-04-21 2010-05-04 Canon Kabushiki Kaisha Secure recorded documents
US20050240713A1 (en) 2004-04-22 2005-10-27 V-Da Technology Flash memory device with ATA/ATAPI/SCSI or proprietary programming interface on PCI express
JP4755642B2 (ja) 2004-04-26 2011-08-24 ストアウィズ インク 記憶のためのファイル圧縮および圧縮ファイルの操作の方法およびシステム
US7644239B2 (en) 2004-05-03 2010-01-05 Microsoft Corporation Non-volatile memory cache performance improvement
US7360015B2 (en) 2004-05-04 2008-04-15 Intel Corporation Preventing storage of streaming accesses in a cache
US7386663B2 (en) 2004-05-13 2008-06-10 Cousins Robert E Transaction-based storage system and method that uses variable sized objects to store data
US20050257017A1 (en) 2004-05-14 2005-11-17 Hideki Yagi Method and apparatus to erase hidden memory in a memory card
US7512830B2 (en) 2004-05-14 2009-03-31 International Business Machines Corporation Management module failover across multiple blade center chassis
US7831561B2 (en) 2004-05-18 2010-11-09 Oracle International Corporation Automated disk-oriented backups
US7590522B2 (en) 2004-06-14 2009-09-15 Hewlett-Packard Development Company, L.P. Virtual mass storage device for server management information
US7447847B2 (en) 2004-07-19 2008-11-04 Micron Technology, Inc. Memory device trims
US7395384B2 (en) 2004-07-21 2008-07-01 Sandisk Corproation Method and apparatus for maintaining data on non-volatile memory systems
US8407396B2 (en) 2004-07-30 2013-03-26 Hewlett-Packard Development Company, L.P. Providing block data access for an operating system using solid-state memory
US7203815B2 (en) 2004-07-30 2007-04-10 International Business Machines Corporation Multi-level page cache for enhanced file system performance via read ahead
US7213125B2 (en) 2004-07-31 2007-05-01 Hewlett-Packard Development Company, L.P. Method for patching virtually aliased pages by a virtual-machine monitor
US7664239B2 (en) 2004-08-09 2010-02-16 Cox Communications, Inc. Methods and computer-readable media for managing and configuring options for the real-time notification and disposition of voice services in a cable services network
US7398348B2 (en) 2004-08-24 2008-07-08 Sandisk 3D Llc Method and apparatus for using a one-time or few-time programmable memory with a host device designed for erasable/rewritable memory
US20060075057A1 (en) 2004-08-30 2006-04-06 International Business Machines Corporation Remote direct memory access system and method
JPWO2006025322A1 (ja) 2004-08-30 2008-05-08 松下電器産業株式会社 記録装置
JP4648674B2 (ja) 2004-10-01 2011-03-09 株式会社日立製作所 記憶制御装置、記憶制御システム及び記憶制御方法
US7603532B2 (en) 2004-10-15 2009-10-13 Netapp, Inc. System and method for reclaiming unused space from a thinly provisioned data container
US8131969B2 (en) 2004-10-20 2012-03-06 Seagate Technology Llc Updating system configuration information
JP2006127028A (ja) 2004-10-27 2006-05-18 Hitachi Ltd 記憶システム及び記憶制御装置
US7873782B2 (en) 2004-11-05 2011-01-18 Data Robotics, Inc. Filesystem-aware block storage system, apparatus, and method
US20060106968A1 (en) 2004-11-15 2006-05-18 Wooi Teoh Gary C Intelligent platform management bus switch system
EP1839154A4 (en) 2004-12-06 2008-07-09 Teac Aerospace Technologies In SYSTEM AND METHOD FOR ERASING NON-VOLATILE RECORDING MEDIUM
US8074041B2 (en) 2004-12-09 2011-12-06 International Business Machines Corporation Apparatus, system, and method for managing storage space allocation
US7581118B2 (en) 2004-12-14 2009-08-25 Netapp, Inc. Disk sanitization using encryption
US7487320B2 (en) 2004-12-15 2009-02-03 International Business Machines Corporation Apparatus and system for dynamically allocating main memory among a plurality of applications
US20060136685A1 (en) 2004-12-17 2006-06-22 Sanrad Ltd. Method and system to maintain data consistency over an internet small computer system interface (iSCSI) network
KR100684887B1 (ko) 2005-02-04 2007-02-20 삼성전자주식회사 플래시 메모리를 포함한 데이터 저장 장치 및 그것의 머지방법
US20060136657A1 (en) 2004-12-22 2006-06-22 Intel Corporation Embedding a filesystem into a non-volatile device
US20060143256A1 (en) 2004-12-28 2006-06-29 Galin Galchev Cache region concept
US7694065B2 (en) 2004-12-28 2010-04-06 Sap Ag Distributed cache architecture
US20060143396A1 (en) 2004-12-29 2006-06-29 Mason Cabot Method for programmer-controlled cache line eviction policy
US7246195B2 (en) 2004-12-30 2007-07-17 Intel Corporation Data storage management for flash memory devices
KR100621631B1 (ko) 2005-01-11 2006-09-13 삼성전자주식회사 반도체 디스크 제어 장치
US20060184719A1 (en) 2005-02-16 2006-08-17 Sinclair Alan W Direct data file storage implementation techniques in flash memories
US20060184718A1 (en) 2005-02-16 2006-08-17 Sinclair Alan W Direct file data programming and deletion in flash memories
US9104315B2 (en) 2005-02-04 2015-08-11 Sandisk Technologies Inc. Systems and methods for a mass data storage system having a file-based interface to a host and a non-file-based interface to secondary storage
US20060190552A1 (en) 2005-02-24 2006-08-24 Henze Richard H Data retention system with a plurality of access protocols
US7254686B2 (en) 2005-03-31 2007-08-07 International Business Machines Corporation Switching between mirrored and non-mirrored volumes
US7620773B2 (en) 2005-04-15 2009-11-17 Microsoft Corporation In-line non volatile memory disk read cache and write buffer
US20060236061A1 (en) 2005-04-18 2006-10-19 Creek Path Systems Systems and methods for adaptively deriving storage policy and configuration rules
US8452929B2 (en) 2005-04-21 2013-05-28 Violin Memory Inc. Method and system for storage of data in non-volatile media
US7702873B2 (en) 2005-04-25 2010-04-20 Network Appliance, Inc. Managing common storage by allowing delayed allocation of storage after reclaiming reclaimable space in a logical volume
GB2426082B (en) 2005-05-09 2007-08-15 Sony Comp Entertainment Europe Memory caching in data processing
US20060265636A1 (en) 2005-05-19 2006-11-23 Klaus Hummler Optimized testing of on-chip error correction circuit
US7383392B2 (en) 2005-05-31 2008-06-03 Hewlett-Packard Development Company, L.P. Performing read-ahead operation for a direct input/output request
US7472225B2 (en) 2005-06-20 2008-12-30 Arm Limited Caching data
US7457910B2 (en) 2005-06-29 2008-11-25 Sandisk Corproation Method and system for managing partitions in a storage device
US7716387B2 (en) 2005-07-14 2010-05-11 Canon Kabushiki Kaisha Memory control apparatus and method
US7984084B2 (en) 2005-08-03 2011-07-19 SanDisk Technologies, Inc. Non-volatile memory with scheduled reclaim operations
US7552271B2 (en) 2005-08-03 2009-06-23 Sandisk Corporation Nonvolatile memory with block management
KR100739722B1 (ko) 2005-08-20 2007-07-13 삼성전자주식회사 플래시 메모리 관리 방법 및 플래시 메모리 시스템
US7424577B2 (en) 2005-08-26 2008-09-09 Network Appliance, Inc. Dynamic optimization of cache memory
JP5008845B2 (ja) 2005-09-01 2012-08-22 株式会社日立製作所 ストレージシステムとストレージ装置及びその制御方法
US7580287B2 (en) 2005-09-01 2009-08-25 Micron Technology, Inc. Program and read trim setting
JP2007071805A (ja) 2005-09-09 2007-03-22 Denso Corp 力学量センサの製造方法
US20070061508A1 (en) 2005-09-13 2007-03-15 Quantum Corporation Data storage cartridge with built-in tamper-resistant clock
US7437510B2 (en) 2005-09-30 2008-10-14 Intel Corporation Instruction-assisted cache management for efficient use of cache and memory
US7529905B2 (en) 2005-10-13 2009-05-05 Sandisk Corporation Method of storing transformed units of data in a memory system having fixed sized storage blocks
US7516267B2 (en) 2005-11-03 2009-04-07 Intel Corporation Recovering from a non-volatile memory failure
US7739472B2 (en) 2005-11-22 2010-06-15 Sandisk Corporation Memory system for legacy hosts
US7366808B2 (en) 2005-11-23 2008-04-29 Hitachi, Ltd. System, method and apparatus for multiple-protocol-accessible OSD storage subsystem
US8112513B2 (en) 2005-11-30 2012-02-07 Microsoft Corporation Multi-user display proxy server
US7526614B2 (en) 2005-11-30 2009-04-28 Red Hat, Inc. Method for tuning a cache
US7877540B2 (en) 2005-12-13 2011-01-25 Sandisk Corporation Logically-addressed file storage methods
US20070156998A1 (en) 2005-12-21 2007-07-05 Gorobets Sergey A Methods for memory allocation in non-volatile memories with a directly mapped file storage system
US20070143566A1 (en) 2005-12-21 2007-06-21 Gorobets Sergey A Non-volatile memories with data alignment in a directly mapped file storage system
US7747837B2 (en) 2005-12-21 2010-06-29 Sandisk Corporation Method and system for accessing non-volatile storage devices
US20070143560A1 (en) 2005-12-21 2007-06-21 Gorobets Sergey A Non-volatile memories with memory allocation for a directly mapped file storage system
US7831783B2 (en) 2005-12-22 2010-11-09 Honeywell International Inc. Effective wear-leveling and concurrent reclamation method for embedded linear flash file systems
US7440455B2 (en) 2005-12-22 2008-10-21 Level 3 Communications, Llc Registration of multiple VoIP devices
US20070150663A1 (en) 2005-12-27 2007-06-28 Abraham Mendelson Device, system and method of multi-state cache coherence scheme
US7613898B2 (en) 2006-01-17 2009-11-03 Globalfoundries Inc. Virtualizing an IOMMU
US20070208790A1 (en) 2006-03-06 2007-09-06 Reuter James M Distributed data-storage system
JP2007240904A (ja) 2006-03-09 2007-09-20 Hitachi Ltd プラズマディスプレイ装置
US7840398B2 (en) 2006-03-28 2010-11-23 Intel Corporation Techniques for unified management communication for virtualization systems
US20070233937A1 (en) 2006-03-31 2007-10-04 Coulson Richard L Reliability of write operations to a non-volatile memory
US7676628B1 (en) 2006-03-31 2010-03-09 Emc Corporation Methods, systems, and computer program products for providing access to shared storage by computing grids and clusters with large numbers of nodes
US7395377B2 (en) 2006-04-20 2008-07-01 International Business Machines Corporation Method and system for adaptive back-off and advance for non-volatile storage (NVS) occupancy level management
US7636829B2 (en) 2006-05-02 2009-12-22 Intel Corporation System and method for allocating and deallocating memory within transactional code
US20070261030A1 (en) 2006-05-04 2007-11-08 Gaurav Wadhwa Method and system for tracking and prioritizing applications
US20070271468A1 (en) 2006-05-05 2007-11-22 Mckenney Paul E Method and Apparatus for Maintaining Data Integrity When Switching Between Different Data Protection Methods
JP4681505B2 (ja) 2006-05-23 2011-05-11 株式会社日立製作所 計算機システム、管理計算機及びプログラム配布方法
US20070294676A1 (en) 2006-06-19 2007-12-20 Ewan Ellis Mellor Open virtual appliance
US8307148B2 (en) 2006-06-23 2012-11-06 Microsoft Corporation Flash management techniques
US7853958B2 (en) 2006-06-28 2010-12-14 Intel Corporation Virtual machine monitor management from a management service processor in the host processing platform
US7721059B2 (en) 2006-07-06 2010-05-18 Nokia Corporation Performance optimization in solid-state media
US20080052377A1 (en) 2006-07-11 2008-02-28 Robert Light Web-Based User-Dependent Customer Service Interaction with Co-Browsing
US7594144B2 (en) 2006-08-14 2009-09-22 International Business Machines Corporation Handling fatal computer hardware errors
US20080043769A1 (en) 2006-08-16 2008-02-21 Tyan Computer Corporation Clustering system and system management architecture thereof
KR101128234B1 (ko) 2006-08-23 2012-03-23 엘지전자 주식회사 메모리 접근 제어 장치 및 방법
JP4932390B2 (ja) 2006-08-31 2012-05-16 株式会社日立製作所 仮想化システム及び領域割当て制御方法
US7870306B2 (en) 2006-08-31 2011-01-11 Cisco Technology, Inc. Shared memory message switch and cache
JP4452261B2 (ja) 2006-09-12 2010-04-21 株式会社日立製作所 ストレージシステムの論理ボリューム管理方法、論理ボリューム管理プログラム、及びストレージシステム
JP4942446B2 (ja) 2006-10-11 2012-05-30 株式会社日立製作所 ストレージ装置及びその制御方法
KR100771519B1 (ko) 2006-10-23 2007-10-30 삼성전자주식회사 플래시 메모리를 포함한 메모리 시스템 및 그것의 머지방법
US7685178B2 (en) 2006-10-31 2010-03-23 Netapp, Inc. System and method for examining client generated content stored on a data container exported by a storage system
US7606681B2 (en) 2006-11-03 2009-10-20 Air Products And Chemicals, Inc. System and method for process monitoring
US20080120469A1 (en) 2006-11-22 2008-05-22 International Business Machines Corporation Systems and Arrangements for Cache Management
US7904647B2 (en) 2006-11-27 2011-03-08 Lsi Corporation System for optimizing the performance and reliability of a storage controller cache offload circuit
US7624235B2 (en) 2006-11-30 2009-11-24 Apple Inc. Cache used both as cache and staging buffer
JP4923990B2 (ja) 2006-12-04 2012-04-25 株式会社日立製作所 フェイルオーバ方法、およびその計算機システム。
US8151082B2 (en) 2007-12-06 2012-04-03 Fusion-Io, Inc. Apparatus, system, and method for converting a storage request into an append data storage command
TW200825762A (en) 2006-12-06 2008-06-16 Inventec Corp Apparatus and method for computer management
US8935302B2 (en) 2006-12-06 2015-01-13 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume
US8074011B2 (en) 2006-12-06 2011-12-06 Fusion-Io, Inc. Apparatus, system, and method for storage space recovery after reaching a read count limit
CN101622594B (zh) 2006-12-06 2013-03-13 弗森-艾奥公司 使用空数据令牌指令管理来自于请求设备的数据的装置、系统和方法
US20080140737A1 (en) 2006-12-08 2008-06-12 Apple Computer, Inc. Dynamic memory management
US20080140918A1 (en) 2006-12-11 2008-06-12 Pantas Sutardja Hybrid non-volatile solid state memory system
US7930425B2 (en) 2006-12-11 2011-04-19 International Business Machines Corporation Method of effectively establishing and maintaining communication linkages with a network interface controller
US7660911B2 (en) 2006-12-20 2010-02-09 Smart Modular Technologies, Inc. Block-based data striping to flash memory
US7689804B2 (en) 2006-12-20 2010-03-30 Intel Corporation Selectively protecting a register file
US7913051B1 (en) 2006-12-22 2011-03-22 Emc Corporation Methods and apparatus for increasing the storage capacity of a zone of a storage system
US7769945B2 (en) 2007-01-18 2010-08-03 Sandisk Il Ltd. Method and system for facilitating fast wake-up of a flash memory system
US20080205286A1 (en) 2007-02-26 2008-08-28 Inventec Corporation Test system using local loop to establish connection to baseboard management control and method therefor
US20080229045A1 (en) 2007-03-16 2008-09-18 Lsi Logic Corporation Storage system provisioning architecture
JP5020673B2 (ja) 2007-03-27 2012-09-05 株式会社日立製作所 重複したファイルの記憶を防ぐコンピュータシステム
US8135900B2 (en) 2007-03-28 2012-03-13 Kabushiki Kaisha Toshiba Integrated memory management and memory management method
US20080243966A1 (en) 2007-04-02 2008-10-02 Croisettier Ramanakumari M System and method for managing temporary storage space of a database management system
US8429677B2 (en) 2007-04-19 2013-04-23 Microsoft Corporation Composite solid state drive identification and optimization technologies
US9207876B2 (en) 2007-04-19 2015-12-08 Microsoft Technology Licensing, Llc Remove-on-delete technologies for solid state drive optimization
US7853759B2 (en) 2007-04-23 2010-12-14 Microsoft Corporation Hints model for optimization of storage devices connected to host and write optimization schema for storage devices
US8046767B2 (en) 2007-04-30 2011-10-25 Hewlett-Packard Development Company, L.P. Systems and methods for providing capacity management of resource pools for servicing workloads
JP2008276646A (ja) 2007-05-02 2008-11-13 Hitachi Ltd ストレージ装置及びストレージ装置におけるデータの管理方法
US7793061B1 (en) * 2007-06-29 2010-09-07 Emc Corporation Techniques for using flash-based memory as a write cache and a vault
US8850154B2 (en) 2007-09-11 2014-09-30 2236008 Ontario Inc. Processing system having memory partitioning
US20090070526A1 (en) 2007-09-12 2009-03-12 Tetrick R Scott Using explicit disk block cacheability attributes to enhance i/o caching efficiency
US7873803B2 (en) 2007-09-25 2011-01-18 Sandisk Corporation Nonvolatile memory with self recovery
TWI366828B (en) 2007-09-27 2012-06-21 Phison Electronics Corp Wear leveling method and controller using the same
KR20090034629A (ko) * 2007-10-04 2009-04-08 삼성전자주식회사 쓰기 버퍼를 포함하는 저장장치 및 그 제어 방법
CA2704537C (en) 2007-11-05 2015-10-13 Nokia Siemens Networks Oy Buffer status reporting apparatus, system, and method
US7840839B2 (en) 2007-11-06 2010-11-23 Vmware, Inc. Storage handling for fault tolerance in virtual machines
JP2009122850A (ja) 2007-11-13 2009-06-04 Toshiba Corp ブロックデバイス制御装置及びアクセス範囲管理方法
US8195912B2 (en) 2007-12-06 2012-06-05 Fusion-io, Inc Apparatus, system, and method for efficient mapping of virtual and physical addresses
US8549222B1 (en) 2008-02-12 2013-10-01 Netapp, Inc. Cache-based storage system architecture
KR101086855B1 (ko) 2008-03-10 2011-11-25 주식회사 팍스디스크 고속 동작하는 반도체 스토리지 시스템 및 그 제어 방법
JP2009223787A (ja) * 2008-03-18 2009-10-01 Hitachi Software Eng Co Ltd 情報処理装置及び方法、並びにプログラム
JP5040773B2 (ja) 2008-03-31 2012-10-03 富士通株式会社 メモリバッファ割当装置およびプログラム
US8051243B2 (en) 2008-04-30 2011-11-01 Hitachi, Ltd. Free space utilization in tiered storage systems
US20090276654A1 (en) 2008-05-02 2009-11-05 International Business Machines Corporation Systems and methods for implementing fault tolerant data processing services
JP5159421B2 (ja) 2008-05-14 2013-03-06 株式会社日立製作所 ストレージシステム及び管理装置を用いたストレージシステムの管理方法
US8775718B2 (en) 2008-05-23 2014-07-08 Netapp, Inc. Use of RDMA to access non-volatile solid-state memory in a network storage system
US8554983B2 (en) 2008-05-27 2013-10-08 Micron Technology, Inc. Devices and methods for operating a solid state drive
US7975169B2 (en) 2008-06-03 2011-07-05 International Business Machines Corporation Memory preserved cache to prevent data loss
EP2304568B1 (en) 2008-06-06 2013-08-14 Pivot3 Method and system for distributed raid implementation
US7917803B2 (en) 2008-06-17 2011-03-29 Seagate Technology Llc Data conflict resolution for solid-state memory devices
US8843691B2 (en) 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
US8135907B2 (en) 2008-06-30 2012-03-13 Oracle America, Inc. Method and system for managing wear-level aware file systems
JP5242264B2 (ja) 2008-07-07 2013-07-24 株式会社東芝 データ制御装置、ストレージシステムおよびプログラム
US20100017556A1 (en) 2008-07-19 2010-01-21 Nanostar Corporationm U.S.A. Non-volatile memory storage system with two-stage controller architecture
US20100125695A1 (en) 2008-11-15 2010-05-20 Nanostar Corporation Non-volatile memory storage system
KR101086857B1 (ko) 2008-07-25 2011-11-25 주식회사 팍스디스크 데이터 머지를 수행하는 반도체 스토리지 시스템의 제어 방법
US7941591B2 (en) 2008-07-28 2011-05-10 CacheIQ, Inc. Flash DIMM in a standalone cache appliance system and methodology
JP5216463B2 (ja) 2008-07-30 2013-06-19 株式会社日立製作所 ストレージ装置、その記憶領域管理方法及びフラッシュメモリパッケージ
US20100082922A1 (en) 2008-09-30 2010-04-01 Vmware, Inc. Virtual machine migration using local storage
JP5124430B2 (ja) * 2008-12-04 2013-01-23 株式会社エヌ・ティ・ティ・データ 仮想マシンの移行方法、サーバ、及び、プログラム
US8205063B2 (en) 2008-12-30 2012-06-19 Sandisk Technologies Inc. Dynamic mapping of logical ranges to write blocks
US8195878B2 (en) * 2009-02-19 2012-06-05 Pmc-Sierra, Inc. Hard disk drive with attached solid state drive cache
CN101819564B (zh) 2009-02-26 2013-04-17 国际商业机器公司 协助在虚拟机之间进行通信的方法和装置
US20100235597A1 (en) 2009-03-10 2010-09-16 Hiroshi Arakawa Method and apparatus for conversion between conventional volumes and thin provisioning with automated tier management
US8060722B2 (en) 2009-03-27 2011-11-15 Vmware, Inc. Hardware assistance for shadow page table coherence with guest page mappings
US8171219B2 (en) 2009-03-31 2012-05-01 Intel Corporation Method and system to perform caching based on file-level heuristics
US8433845B2 (en) 2009-04-08 2013-04-30 Google Inc. Data storage device which serializes memory device ready/busy signals
US8566507B2 (en) 2009-04-08 2013-10-22 Google Inc. Data storage device capable of recognizing and controlling multiple types of memory chips
US20100262979A1 (en) 2009-04-08 2010-10-14 Google Inc. Circular command queues for communication between a host and a data storage device
US8527466B2 (en) 2009-05-31 2013-09-03 Red Hat Israel, Ltd. Handling temporary files of a virtual machine
US8516219B2 (en) 2009-07-24 2013-08-20 Apple Inc. Index cache tree
US8719767B2 (en) 2011-03-31 2014-05-06 Commvault Systems, Inc. Utilizing snapshots to provide builds to developer computing devices
US9122579B2 (en) 2010-01-06 2015-09-01 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for a storage layer
AU2010333716B2 (en) 2009-12-17 2016-06-16 Commonwealth Scientific And Industrial Research Organisation Reliable writing of database log data
US8346935B2 (en) 2010-01-15 2013-01-01 Joyent, Inc. Managing hardware resources by sending messages amongst servers in a data center
US9110806B2 (en) 2010-03-10 2015-08-18 Microsoft Technology Licensing, Llc Opportunistic page caching for virtualized servers
US20110238737A1 (en) * 2010-03-26 2011-09-29 Nec Laboratories America, Inc. Decentralized cloud storage
US9342801B2 (en) 2010-03-29 2016-05-17 Amazon Technologies, Inc. Managing committed processing rates for shared resources
US8413142B2 (en) 2010-03-30 2013-04-02 Citrix Systems, Inc. Storage optimization selection within a virtualization environment
US8539124B1 (en) * 2010-03-31 2013-09-17 Emc Corporation Storage integration plugin for virtual servers
US8312471B2 (en) * 2010-04-26 2012-11-13 Vmware, Inc. File system independent content aware cache
WO2011135637A1 (en) * 2010-04-30 2011-11-03 Hitachi,Ltd. Computer system and control method thereof
US20110320733A1 (en) 2010-06-04 2011-12-29 Steven Ted Sanford Cache management and acceleration of storage media
US8244935B2 (en) 2010-06-25 2012-08-14 Oracle International Corporation Write aggregation using optional I/O requests
US8863117B2 (en) 2010-07-19 2014-10-14 International Business Machines Corporation Optimizing a file system interface in a virtualized computing environment
JP5520747B2 (ja) 2010-08-25 2014-06-11 株式会社日立製作所 キャッシュを搭載した情報装置及びコンピュータ読み取り可能な記憶媒体
US8555019B2 (en) * 2010-09-08 2013-10-08 International Business Machines Corporation Using a migration cache to cache tracks during migration
US8595522B2 (en) 2010-09-30 2013-11-26 Intel Corporation Monitoring transaction requests using a policy engine within a storage drive driver to change power capability and latency settings for a storage drive
CN102467408B (zh) 2010-11-12 2014-03-19 阿里巴巴集团控股有限公司 一种虚拟机数据的访问方法和设备
US20120144110A1 (en) 2010-12-02 2012-06-07 Lsi Corporation Methods and structure for storage migration using storage array managed server agents
JP5720210B2 (ja) * 2010-12-02 2015-05-20 富士通株式会社 アクセス制御装置、誤り訂正制御方法およびストレージ装置
US8479294B1 (en) 2011-02-15 2013-07-02 Trend Micro Incorporated Anti-malware scan management in high-availability virtualization environments
KR20120097136A (ko) 2011-02-24 2012-09-03 삼성전자주식회사 가상화 환경에서의 메모리 풀 관리
US9563555B2 (en) * 2011-03-18 2017-02-07 Sandisk Technologies Llc Systems and methods for storage allocation
US8966191B2 (en) * 2011-03-18 2015-02-24 Fusion-Io, Inc. Logical interface for contextual storage
US9342254B2 (en) * 2011-06-04 2016-05-17 Microsoft Technology Licensing, Llc Sector-based write filtering with selective file and registry exclusions
US9069587B2 (en) * 2011-10-31 2015-06-30 Stec, Inc. System and method to cache hypervisor data
CA2761553C (en) * 2011-12-09 2019-03-05 Ibm Canada Limited - Ibm Canada Limitee Logical buffer pool extension
US10359972B2 (en) * 2012-08-31 2019-07-23 Sandisk Technologies Llc Systems, methods, and interfaces for adaptive persistence
US10073656B2 (en) 2012-01-27 2018-09-11 Sandisk Technologies Llc Systems and methods for storage virtualization
US9141529B2 (en) * 2012-08-14 2015-09-22 OCZ Storage Solutions Inc. Methods and apparatus for providing acceleration of virtual machines in virtual environments
US9336035B2 (en) * 2012-10-23 2016-05-10 Vmware, Inc. Method and system for VM-granular I/O caching
US9055119B2 (en) * 2013-03-26 2015-06-09 Vmware, Inc. Method and system for VM-granular SSD/FLASH cache live migration
US9152330B2 (en) * 2014-01-09 2015-10-06 Netapp, Inc. NVRAM data organization using self-describing entities for predictable recovery after power-loss

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0784847A (ja) * 1993-09-17 1995-03-31 Fujitsu Ltd ディスク複写処理方式
JPH1024906A (ja) * 1996-07-09 1998-01-27 Kubota Corp 球状野菜の包装設備
US7752173B1 (en) * 2005-12-16 2010-07-06 Network Appliance, Inc. Method and apparatus for improving data processing system performance by reducing wasted disk writes
US20090132621A1 (en) * 2006-07-28 2009-05-21 Craig Jensen Selecting storage location for file storage based on storage longevity and speed
JP2008090378A (ja) * 2006-09-29 2008-04-17 Seiko Epson Corp ハイブリッドファイルシステム、オペレーティングシステム、キャッシュ制御方法および記録媒体
US20100274962A1 (en) * 2009-04-26 2010-10-28 Sandisk Il Ltd. Method and apparatus for implementing a caching policy for non-volatile memory
US20110119228A1 (en) * 2009-11-16 2011-05-19 Symantec Corporation Selective file system caching based upon a configurable cache map
US20120131278A1 (en) * 2010-03-08 2012-05-24 Jichuan Chang Data storage apparatus and methods
JP2013512529A (ja) * 2010-03-08 2013-04-11 ヒューレット−パッカード デベロップメント カンパニー エル.ピー. データ記憶装置及び方法
US20120210066A1 (en) * 2011-02-15 2012-08-16 Fusion-Io, Inc. Systems and methods for a file-level cache
US20130339958A1 (en) * 2011-03-29 2013-12-19 Brainlab Ag Processing of digital data, in particular medical data by a virtual machine

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015176426A (ja) * 2014-03-17 2015-10-05 日本電気株式会社 情報処理装置、情報処理方法、及び情報処理プログラム
JP2016035669A (ja) * 2014-08-04 2016-03-17 富士通株式会社 データ移行方法及びデータ移行装置

Also Published As

Publication number Publication date
US20140068183A1 (en) 2014-03-06
CN104903872A (zh) 2015-09-09
US20140237147A1 (en) 2014-08-21
DE112013004250T5 (de) 2015-07-09
US9058123B2 (en) 2015-06-16
WO2014036307A1 (en) 2014-03-06
CN104903872B (zh) 2019-03-29
KR101841997B1 (ko) 2018-03-27
JP2018125025A (ja) 2018-08-09
KR20150081424A (ko) 2015-07-14
US10346095B2 (en) 2019-07-09
DE112013004250B4 (de) 2022-08-25
US10359972B2 (en) 2019-07-23
US20140068197A1 (en) 2014-03-06
JP6709245B2 (ja) 2020-06-10

Similar Documents

Publication Publication Date Title
JP6709245B2 (ja) 適応持続性システム、方法、インタフェース
US10339056B2 (en) Systems, methods and apparatus for cache transfers
US10073656B2 (en) Systems and methods for storage virtualization
EP3118745B1 (en) A heuristic interface for enabling a computer device to utilize data property-based data placement inside a nonvolatile memory device
US9697130B2 (en) Systems and methods for storage service automation
US9612966B2 (en) Systems, methods and apparatus for a virtual machine cache
US9405476B2 (en) Systems and methods for a file-level cache
US9824018B2 (en) Systems and methods for a de-duplication cache
US8996807B2 (en) Systems and methods for a multi-level cache
US9842053B2 (en) Systems and methods for persistent cache logging
US9141529B2 (en) Methods and apparatus for providing acceleration of virtual machines in virtual environments
US8782335B2 (en) Latency reduction associated with a response to a request in a storage system
US8966188B1 (en) RAM utilization in a virtual environment
KR20200121372A (ko) 하이브리드 메모리 시스템
WO2013023090A2 (en) Systems and methods for a file-level cache
KR20200117032A (ko) 하이브리드 메모리 시스템
TWI564803B (zh) 用於儲存虛擬化的系統和方法
US11822813B2 (en) Storage device, operation method of storage device, and storage system using the same

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160405

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20160531

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20160531

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160606

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20160630

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20160802

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161005

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20161228

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20161228

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20170222

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20170222

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170523

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20170823

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20171020

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171124

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20171205