(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】特表2015-532497(P2015-532497A)
(43)【公表日】2015年11月9日
(54)【発明の名称】仮想化コンピューティング環境における排他的読取キャッシングのためのシステムおよび方法
(51)【国際特許分類】
G06F 12/12 20060101AFI20151013BHJP
G06F 12/08 20060101ALI20151013BHJP
【FI】
G06F12/12 551
G06F12/08 509Z
【審査請求】有
【予備審査請求】未請求
【全頁数】28
(21)【出願番号】特願2015-537765(P2015-537765)
(86)(22)【出願日】2013年10月15日
(85)【翻訳文提出日】2015年4月30日
(86)【国際出願番号】US2013064940
(87)【国際公開番号】WO2014062616
(87)【国際公開日】20140424
(31)【優先権主張番号】13/655,237
(32)【優先日】2012年10月18日
(33)【優先権主張国】US
(81)【指定国】
AP(BW,GH,GM,KE,LR,LS,MW,MZ,NA,RW,SD,SL,SZ,TZ,UG,ZM,ZW),EA(AM,AZ,BY,KG,KZ,RU,TJ,TM),EP(AL,AT,BE,BG,CH,CY,CZ,DE,DK,EE,ES,FI,FR,GB,GR,HR,HU,IE,IS,IT,LT,LU,LV,MC,MK,MT,NL,NO,PL,PT,RO,RS,SE,SI,SK,SM,TR),OA(BF,BJ,CF,CG,CI,CM,GA,GN,GQ,GW,KM,ML,MR,NE,SN,TD,TG),AE,AG,AL,AM,AO,AT,AU,AZ,BA,BB,BG,BH,BN,BR,BW,BY,BZ,CA,CH,CL,CN,CO,CR,CU,CZ,DE,DK,DM,DO,DZ,EC,EE,EG,ES,FI,GB,GD,GE,GH,GM,GT,HN,HR,HU,ID,IL,IN,IR,IS,JP,KE,KG,KN,KP,KR,KZ,LA,LC,LK,LR,LS,LT,LU,LY,MA,MD,ME,MG,MK,MN,MW,MX,MY,MZ,NA,NG,NI,NO,NZ,OM,PA,PE,PG,PH,PL,PT,QA,RO,RS,RU,RW,SA,SC,SD,SE,SG,SK,SL,SM,ST,SV,SY,TH,TJ,TM,TN,TR,TT,TZ,UA,UG,US
(71)【出願人】
【識別番号】510149482
【氏名又は名称】ヴイエムウェア インコーポレイテッド
【氏名又は名称原語表記】VMware,Inc.
(74)【代理人】
【識別番号】100105957
【弁理士】
【氏名又は名称】恩田 誠
(74)【代理人】
【識別番号】100068755
【弁理士】
【氏名又は名称】恩田 博宣
(74)【代理人】
【識別番号】100142907
【弁理士】
【氏名又は名称】本田 淳
(72)【発明者】
【氏名】リュー、デン
(72)【発明者】
【氏名】スケールズ、ダニエル ジェイ.
【テーマコード(参考)】
5B005
【Fターム(参考)】
5B005MM01
5B005MM36
5B005QQ02
5B005UU31
(57)【要約】
効率的なキャッシュ管理のための技術は、データユニットをキャッシュ階層で、より高位のキャッシュがそのデータユニットを追い出したときにより高位のキャッシュレベルからより下位のキャッシュレベルへと降格する。仮想化コンピューティング環境では、データユニットの追い出しは、ゲストオペレーティングシステムによって実行され、仮想化ソフトウェアによって実行のためにトラップされる特権的メモリおよびディスク動作を観察することによって推測されてもよい。データユニットが追い出されることが推測されると、そのデータユニットは、そのデータユニットをより下位のキャッシュレベルに送ることによって降格される。この技術により、ゲストオペレーティングシステムを直接関与させない、または変更しない排他的なキャッシングが可能となる。代替的な実施形態において、ゲストオペレーティングシステムにインストールされた擬似ドライバがメモリ動作を明確に追跡して、ページ追い出し情報をより下位のレベルのキャッシュに転送し、これにより、キャッシュの排他性を維持しながら、追い出されたページをキャッシュに格納できる。
【特許請求の範囲】
【請求項1】
その中で動作する仮想マシン(VM)を有するコンピューティングシステムにおいて、第一のキャッシングレベルのバッファと第二のキャッシングレベルのバッファとの間でデータユニットのキャッシングを行う方法であって、
第一の物理ページ番号(PPN)に関連付けられる前記第一のキャッシングレベルのバッファの物理ページに第一のストレージブロックの内容を保存するためのリクエストを受け取ったことに応答して、前記第一のキャッシングレベルのバッファに格納されたデータユニットが前記第二のキャッシングレベルのバッファに降格可能であると判断すること、
前記データユニットを前記第二のキャッシングレベルのバッファに降格すること、
前記第一および第二のキャッシングレベルのバッファに格納されたデータユニットの状態情報を更新すること、
前記第一のストレージブロックの内容を前記第一のキャッシングレベルのバッファの前記第一の物理ページ番号において保存することを備える、方法。
【請求項2】
データユニットが降格可能であるか否かを判断することは、
前記データユニットが、前記データユニットがマッピングされた第二のストレージブロックと一致すると判断することを含む、請求項1に記載の方法。
【請求項3】
前記データユニットが、前記データユニットがマッピングされた第二のストレージブロックと一致すると判断することは、
前記データユニットに関連付けられた記録済みのチェックサムが前記第二のストレージブロックについて計算されたチェックサムと適合すると判断することを含む、請求項2に記載の方法。
【請求項4】
前記降格することは、
前記データユニットを前記第一のキャッシングレベルのバッファから第二レベルのキャッシュバッファにコピーすること、
前記データユニットが前記第一のキャッシングレベルのバッファになく、前記データユニットが前記第二のキャッシングレベルのバッファにあることを反映させるように前記状態情報を更新することを含む、請求項1に記載の方法。
【請求項5】
データユニットをコピーすることは、
前記第一の物理ページ番号を新しい物理ページにマッピングしなおすこと、
前記第一の物理ページ番号の内容を前記第二レベルのキャッシュバッファにコピーすることを含む、請求項4に記載の方法。
【請求項6】
第二レベルのキャッシュバッファの、第二の物理ページ番号に関連付けられる物理ページの内容を第二のストレージブロックに保存するためのリクエストを受け取ったことに応答して、前記第二の物理ページ番号が、物理ページ番号をストレージブロックアドレスにマッピングするデータ構造内に存在するか否かを判断すること、
前記第二の物理ページ番号が存在しないと判断すると、前記第二の物理ページ番号に関連付けられるエントリを前記データ構造に追加すること、
前記第二の物理ページ番号が存在すると判断すると、前記データ構造を更新すること、
前記第二の物理ページ番号の前記内容を第二のストレージブロックに保存することをさらに備える、請求項1に記載の方法。
【請求項7】
前記エントリを追加することは、
前記第二の物理ページ番号の前記内容についての書込みデータチェックサムを計算すること、
前記第二の物理ページ番号を前記第二のストレージブロックのストレージアドレスおよび前記書込みデータチェックサムに関連付けることを含む、請求項6に記載の方法。
【請求項8】
前記データ構造を更新することは、
前記第二の物理ページ番号の内容についての書込みデータチェックサムを計算すること、
前記第二の物理ページ番号を前記第二のストレージブロックのストレージアドレスおよび前記書込みデータチェックサムに関連付けることを含む、請求項6に記載の方法。
【請求項9】
前記第一のストレージブロックの内容が、前記第二のキャッシングレベルのバッファから前記第一のキャッシングレベルのバッファの前記第一の物理ページ番号においてコピーされる、請求項1に記載の方法。
【請求項10】
前記第一のストレージブロックの内容が、前記第一のストレージブロックから前記第一のキャッシングレベルのバッファの前記第一の物理ページ番号においてコピーされる、請求項1に記載の方法。
【請求項11】
前記降格することは、前記保存することと並行して実行される、請求項1に記載の方法。
【請求項12】
前記降格することは、前記保存することの前に実行される、請求項1に記載の方法。
【請求項13】
前記第一のキャッシングレベルのバッファにおけるページ追い出しイベントを検出すること、
ページ追い出しが行われている物理ページを、前記第一のキャッシングレベルのバッファの、前記第一の物理ページ番号に関連付けられる前記物理ページとして選択することをさらに備える請求項1に記載の方法。
【請求項14】
物理ページの前記ページ追い出しイベントが、前記物理ページがゼロ化されているときに検出される、請求項13に記載の方法。
【請求項15】
物理ページの前記ページ追い出しイベントが、前記物理ページにページ保護またはマッピングの変更があるときに検出される、請求項13に記載の方法。
【請求項16】
物理ページの前記ページ追い出しイベントが、前記第一のキャッシングレベルのバッファの一部である物理ページの利用をモニタすることによって検出される、請求項13に記載の方法。
【請求項17】
前記モニタすることは、前記仮想マシンのオペレーティングシステムによって使用されるページ追い出し関数のトレースをインストールすることによって行われる、請求項16に記載の方法。
【請求項18】
仮想化コンピューティングシステムであって、該仮想化コンピューティングシステムにおいて動作する仮想マシン(VM)と、前記仮想マシンのゲストオペレーティングシステムによって制御される第一のキャッシングレベルのバッファおよび前記仮想化コンピューティングシステムのシステムソフトウェアによって制御される第二のキャッシングレベルのバッファを含む複数のキャッシングレベルと、を有する仮想化コンピューティングシステムで実行されたときに、前記仮想化コンピューティングシステムに、
第一のストレージブロックの内容を、前記第一のキャッシングレベルのバッファの、物理ページ番号(PPN)に関連付けられる物理ページに保存するためのリクエストを受け取ること、
前記リクエストに応答して、前記第一のキャッシングレベルのバッファに格納されたデータユニットが前記第二のキャッシングレベルのバッファに降格可能であると判断すること、
前記データユニットを前記第二のキャッシングレベルのバッファに降格すること、
前記第一および第二のキャッシングレベルのバッファに格納されたデータユニットの状態情報を更新すること、
前記第一のストレージブロックの内容を前記第一のキャッシングレベルのバッファの前記物理ページ番号において保存すること、を実行させる命令を含む非一時的コンピュータ可読記憶媒体。
【請求項19】
前記命令が、仮想化コンピューティングシステムで実行されると、前記仮想化コンピューティングシステムにさらに、
第二レベルのキャッシュバッファの、第二の物理ページ番号に関連付けられた物理ページの内容を第二のストレージブロックに保存するためのリクエストを受け取ったことに応答して、前記第二の物理ページ番号が、物理ページ番号をストレージブロックアドレスにマッピングするデータ構造の中に存在するか否かを判断すること、
前記第二の物理ページ番号が存在しないと判断すると、前記第二の物理ページ番号に関連付けられるエントリを前記データ構造に追加すること、
前記第二の物理ページ番号が存在すると判断すると、前記データ構造を更新すること、
前記第二の物理ページ番号の内容を前記第二のストレージブロックに保存すること、を実行させる、請求項18に記載の非一時的コンピュータ可読記憶媒体。
【請求項20】
仮想化コンピューティングシステムであって、該仮想化コンピューティングシステムにおいて動作する仮想マシン(VM)を有する前記仮想化コンピューティングシステムにおいて、
前記仮想化コンピューティングシステムは、
前記仮想マシンのゲストオペレーティングシステムによって制御される第一のキャッシングレベルのバッファおよび前記仮想化コンピューティングシステムのシステムソフトウェアによって制御される第二のキャッシングレベルのバッファを含む複数のキャッシングレベルを備え、
前記仮想化コンピューティングシステムは、
前記仮想化コンピューティングシステムの前記システムソフトウェアが、
第一のストレージブロックの内容を前記第一のキャッシングレベルのバッファの、物理ページ番号(PPN)に関連付けられる物理ページに保存するためのリクエストを受け取り、
前記リクエストに応答して、前記第一のキャッシングレベルのバッファに格納されたデータユニットが前記第二のキャッシングレベルのバッファに降格可能であると判断し、
前記データユニットを前記第二のキャッシングレベルのバッファに降格し、
前記第一および第二のキャッシングレベルのバッファに格納されたデータユニットの状態情報を更新し、
前記第一のストレージブロックの内容を前記第一のキャッシングレベルのバッファの前記物理ページ番号において保存するように構成されている、仮想化コンピューティングシステム。
【発明の詳細な説明】
【背景技術】
【0001】
仮想化コンピューティング環境は、特定の用途および容量に関する要求に応えるための必要に応じたコンピューティング資源の配置および管理を可能にすることにより、システムオペレータに対して多大な効率およびフレキシビリティを提供する。仮想化コンピューティング環境が成熟し、市場に広く受け入れられていく中で、仮想マシン(VM:virtual machine)の性能の向上と全体的なシステム効率の改善とに対する要求が続いている。一般的な仮想化コンピューティング環境は、1つまたは複数のホストコンピュータと、1つまたは複数のストレージシステムと、ホストコンピュータを相互に、ストレージシステムに、また管理サーバに接続するように構成される1つまたは複数のネットワーキングシステムと、を含む。あるホストコンピュータがVMの集合を稼働させてもよく、各VMは一般に、対応するストレージシステム内でファイルシステムデータの保存および読み出しを行うように構成されてもよい。ストレージシステムを含む機械的ハードディスクドライブに関係する比較的遅いアクセス遅延がファイルシステムの性能における大きなボトルネックを生じさせ、全体的なシステム性能を低下させている。
【0002】
システム性能を向上させる1つの方法は、ゲストオペレーティングシステム(OS:operating system)内で動作するファイルシステムのためのバッファキャッシュを実装することに関する。バッファキャッシュはマシンメモリ(すなわち、ホストコンピュータの中に構成された物理メモリであり、ランダムアクセスメモリ、すなわちRAMとも呼ばれる)に保存され、したがって、そのサイズはストレージシステムで利用可能なストレージ容量全体と比較して限定されている。マシンメモリはストレージシステムより性能上はるかに有利であるが、このようなサイズの限定が、最終的にはシステム性能を低下させる影響を有し、なぜなら特定のストレージユニットが後でアクセスされる前にバッファキャッシュから追い出される(evicted)可能性があるからである。あるストレージユニットがバッファキャッシュから追い出されると、それと同じストレージユニットに再びアクセスするには通常、対応するストレージシステムへの低性能のアクセス(low performance access)が追加で必要となる。
【0003】
RAMベースのファイルシステムバッファキャッシュ(RAM-based file system buffer cache)は、ゲストオペレーティングシステムの入力/出力(IO:input/output)性能を改善する一般的な方法であるが、その性能の改善はRAMメモリの高額な価格および限定的な密度により限られている。フラッシュベースのソリッドステートドライブ(SSD:solid state deriver)が、ハードディスクドライブより1秒当たりの入力/出力動作がはるかに多く、RAMより安価な新しい記憶媒体として出現し、SSDは仮想化コンピューティング環境、例えばハイパーバイザとして知られる仮想化ソフトウェアにおける第二レベルの読取キャッシュとして広く普及しつつある。その結果、複数のレベルのキャッシング層が仮想化コンピューティング環境のストレージIOスタック内に形成される。
【0004】
仮想化コンピューティング環境の中では、上記のような異なるキャッシング層は通常、意図的に通信せず、キャッシュの排他性を実現するための従来の技術が非現実的となる。そのため、第二レベルキャッシュが一般に読取性能を向上させるのは確かであるが、同じデータがバッファキャッシュと第二レベルキャッシュとの両方に格納される可能性があるため、全体的な有効キャッシュサイズが小さくなり、費用対効果が低下する。従来のキャッシング技術は確かに読取性能を向上させるが、仮想化環境内に別のキャッシング層を追加する結果として、キャッシュに格納されるデータの冗長的な保存により、ストレージの利用効率が低下する。
【発明の概要】
【課題を解決するための手段】
【0005】
本明細書で開示される1つまたは複数の実施形態は一般に、仮想化コンピューティング環境の中でキャッシュストレージを管理するための方法およびシステムを提供し、より詳しくは、仮想化コンピューティング環境内の排他的読取キャッシングのための方法およびシステムを提供する。
【0006】
1つの実施形態において、ゲストオペレーティングシステム内のバッファキャッシュは第一のキャッシングレベルを提供し、ハイパーバイザキャッシュは第二のキャッシングレベルを提供する。あるデータユニットがオペレーティングシステムによってロードされ、バッファキャッシュに格納されると、ハイパーバイザキャッシュは関係する状態を記録するが、実際にはそのデータユニットを格納しない。ハイパーバイザキャッシュがそのデータユニットをキャッシュに格納するのは、バッファキャッシュがそのデータユニットを追い出し、そのデータユニットをハイパーバイザキャッシュにコピーする降格動作がトリガされたときだけである。
【0007】
第一のキャッシングレベルのバッファと第二のキャッシングレベルのバッファとの間のデータユニットのキャッシング方法は、ある実施形態によれば、第一のストレージブロックの内容をある物理ページ番号(PPN:physical page number)に関連付けられる第一のキャッシングレベルのバッファのマシンページに保存するリクエストを受け取ったことに応答して、第一のキャッシングレベルのバッファに格納されているあるデータユニットを第二のキャッシングレベルへと降格することができるか否かを判断するステップと、そのデータユニットを第二のキャッシングレベルのバッファへと降格するステップと、第一および第二のキャッシングレベルのバッファに格納されたデータユニットの状態情報を更新するステップと、第一のストレージブロックの内容を第一のキャッシングベルのバッファのPPNにおいて保存するステップと、を含む。
【0008】
本発明の他の実施形態は、これらに限定されないが、コンピュータシステムに上記の方法のうちの1つまたは複数の態様を実行させることのできる命令を含む非一時的コンピュータ可読記憶媒体と、上記の方法の1つまたは複数の態様を実行するように構成されたコンピュータシステムとを含む。
【図面の簡単な説明】
【0009】
【
図1A】実施形態による、マルチレベルキャッシングを実装するように構成された仮想化コンピューティングシステムのブロック図である。
【
図1B】実施形態による、マルチレベルキャッシングを実装するように構成された仮想化コンピューティングシステムのブロック図である。
【
図2】1つの実施形態による、キャッシュレベル階層内のデータ昇格およびデータ降格を示す。
【
図3A】各々、ストレージシステムをターゲットとする読取リクエストに応答するためにハイパーバイザキャッシュにより実行される方法ステップのフロー図である。
【
図3B】各々、ストレージシステムをターゲットとする読取リクエストに応答するためにハイパーバイザキャッシュにより実行される方法ステップのフロー図である。
【
図4】ストレージシステムをターゲットとする書込みリクエストに応答するためにハイパーバイザキャッシュにより実行される方法ステップのフロー図である。
【発明を実施するための形態】
【0010】
図1Aは、1つの実施形態によるマルチレベルキャッシングを実装するように構成された仮想化コンピューティングシステム100のブロック図である。仮想化コンピューティングシステム100は、仮想マシン(VM)110と、仮想化システム130と、キャッシュデータストア150と、ストレージシステム160と、を含む。VM110と仮想化システム130は、ホストコンピュータにおいて動作してもよい。
【0011】
1つの実施形態において、ストレージシステム160は、例えば機械的ハードディスクドライブまたはソリッドステートドライブ(SSD)等のストレージドライブ162の集合を含み、これらはデータブロックを保存し、読み出すように構成されている。ストレージシステム160は1つまたは複数の論理ストレージユニットを提示してもよく、その各々がストレージドライブ162上の1つまたは複数のデータブロック168の集合を含む。ある論理ストレージユニット内のブロックは、その論理ストレージユニットのための識別子と固有の論理ブロックアドレスを使って異なるブロックの線形アドレス空間からアドレス指定される。論理ストレージユニットは、論理ユニット番号(LUN:logical unit number)によっても、または技術的に実現可能な他の何れかの識別子によっても識別されてよい。ストレージシステム160はまた、ストレージシステムキャッシュ164も含んでいてよく、ストレージシステムキャッシュ164は、ストレージドライブ162より高速でアクセス動作を実行できるストレージデバイスを含む。例えば、ストレージシステムキャッシュ164はダイナミックランダムアクセスメモリ(DRAM:dynamic random access memory)またはSSDストレージデバイスを含んでいてもよく、これはストレージドライブ162として一般的に使用される機械的ハードディスクドライブより優れた性能を提供する。ストレージシステム160はインタフェース174を含み、インタフェース174を通じてブロック168へのアクセスリクエストが処理される。インタフェース174は、物理的シグナリングからプロトコルシグナリングまで、多くの抽象化レベルを定義してもよい。1つの実施形態において、インタフェース174はブロックストレージデバイスのための周知のファイバチャネル(FC:Fibre Channel)規格を実装する。他の実施形態では、インタフェース174は物理イーサネット(登録商標)ポート上で周知のインターネットスモールコンピューティングシステムインタフェース(iSCSI:Internet small computer system interface)プロトコルを実装する。他の実施形態において、インタフェース174は、シリアルアタッチドスモールコンピュータシステムインターコネクト(SAS:serial attached small computer system interconnect)またはシリアルアタッチドアドバンストテクノロジーアタッチメント(SATA:serial attached advanced technology attachment)を実装してもよい。さらに、インタフェース174は技術的に実現可能な他の何れのブロックレベルプロトコルを実装してもよく、これも本発明の実施形態の範囲および趣旨から逸脱しない。
【0012】
VM110は仮想マシン環境を提供し、仮想マシン環境においてゲストOS(GOS:guest OS)120が動作してもよい。周知のマイクロソフトウィンドウズ(Microsoft Windows)(登録商標)オペレーティングシステムと周知のリナックス(Linux)(登録商標)オペレーティングシステムはGOSの例である。機械的ハードディスクドライブに関係するアクセス遅延を低減させるために、GOS120はバッファキャッシュ124を実装し、バッファキャッシュ124はストレージシステム160によりバックアップされるデータをキャッシュに格納する。バッファキャッシュ124は従来、キャッシュに格納されたデータへのアクセス性能を高めるためにホストコンピュータのマシンメモリ内に保存され、バッファキャッシュ124はストレージシステム160内にある対応するブロック168にマッピングされる複数のページ126として整理される。ファイルシステム122もまたGOS120内で実装されてファイルサービス抽象化を提供し、ファイルシステム122は従来、GOS120の下で実行される1つまたは複数のアプリケーションにより利用される。ファイルシステム122は、ファイル名とファイル位置をストレージシステム160内の1つまたは複数のストレージブロックにマッピングする。
【0013】
バッファキャッシュ124はキャッシュ管理サブシステム127を含み、キャッシュ管理サブシステム127はどのブロック168がページ126としてキャッシュに格納されるかを管理する。異なるブロック168の各々は固有のLBAによってアドレス指定され、異なるページ126の各々は固有の物理ページ番号(PPN)によってアドレス指定される。本明細書に記載されている実施形態において、特定のVM、例えばVM110のための物理メモリ空間は物理メモリページに分割され、物理メモリページの各々は固有のPPNを有し、それによってそのアドレス指定を行うことができる。これに加えて、仮想化コンピューティングシステム100のマシンメモリ空間はマシンメモリページに分割され、マシンメモリページの各々が固有のマシンページ番号(MPN:machine page number)を有し、それによってそのアドレス指定を行うことができ、ハイパーバイザは仮想化コンピューティングシステム100内で稼働中の1つまたは複数のVMの物理メモリページのマシンメモリページとのマッピングを保持する。キャッシュ管理サブシステム127は、キャッシュに格納された各LBAと、そのLBAに対応するファイルデータをキャッシュに格納する対応ページ126との間のマッピングを保持する。このマッピングにより、バッファキャッシュ124は、特定のファイル記述子に関連付けられたLBAがPPNとの有効なマッピングがあるか否かを効率的に判断できる。有効なLBA−PPNマッピングが存在すれば、要求されたファイルデータブロックのためのデータはキャッシュに格納されたページ126から入手できる。通常の動作では、より最近要求されたブロック168をキャッシュに格納するために、特定のページ126を置き換える必要がある。キャッシュ管理サブシステム127は、ページ126の置換を容易にするための置換ポリシ(replacement policy)を実装する。置換ポリシの一例は当技術分野において、リーストリースントリユーズド(LRU:least recently used)方式と呼ばれる。あるページ126の置換が必要なときは必ず、LRU置換ポリシが、最も過去にアクセス(使用)されたページを置換すべきページとして選択する。あるGOS120は任意の置換ポリシを実装してもよく、これはプロプライエタリであってもよい。
【0014】
ファイルシステム122に送られたファイルアクセスリクエストは、ページ126にある対応するファイルデータにアクセスするか、ストレージシステム160をターゲットとする1つまたは複数のアクセスリクエストを実行することによって完了する。ドライバ128は、インタフェース170の規格の詳細に基づいてアクセスリクエストを実行するために必要な詳細なステップを実行する。例えば、インタフェース170はiSCSIアダプタを含んでいてもよく、iSCSIアダプタは仮想化システム130と共にVM110によってエミュレートされる。各アクセスリクエストは、ストレージシステム160をターゲットとするアクセスリクエストを含んでいてもよい。このような場合、ドライバ128はエミュレートされたiSCSIインタフェースを管理して、特定のブロック168を対応のPPNにより指定されたページ126に読み込むためのリクエストを実行する。
【0015】
仮想化システム130は、基本となるハードウェアマシンをエミュレートするためのメモリ、処理、ストレージ資源をVM110に提供する。一般に、ハードウェアマシンのこのエミュレーションは、GOS120にとって、実際のハードウェアマシンと区別がつかない。例えば、インタフェース170として動作するiSCSIインタフェースのエミュレーションは、ドライバ128にとって、実際のハードウェアiSCSIインタフェースと区別できない。ドライバ128は一般に、GOS120内の特権的プロセス(privileged process)として動作する。しかしながら、GOS120は実際には、ホストコンピュータ内のプロセッサの非特権的モード(unprivileged mode)で命令を実行する。そのため、仮想化システム130に関連する仮想マシンモニタ(VMM:virtual machine monitor)は、ページテーブル更新、ディスク読取およびディスク書込み動作等の特権的動作をトラップして、GOS120に代わってその特権的動作を実行する必要がある。これらの特権的動作のトラップはまた、GOS120によって実行されている特定の動作をモニタする機会も提供する。
【0016】
仮想化システム130は、当技術分野ではハイパーバイザとしても知られ、ハイパーバイザキャッシュコントローラ140を含み、ハイパーバイザキャッシュコントローラ140はGOS120からアクセスリクエストを受け取り、ストレージシステム160をターゲットとするこのアクセスリクエストを透過的に処理するように構成される。1つの実施形態において、書込みリクエストはモニタされるが、それ以外はストレージシステム160へと通過させられる。キャッシュデータストア150内に格納されたデータの読取リクエストは、ハイパーバイザキャッシュコントローラ140により処理される。このような読取リクエストはキャッシュヒットと呼ばれる。キャッシュデータストア150に格納されていないデータの読取リクエストはストレージシステム160に送られる。このような読取リクエストはキャッシュミスと呼ばれる。
【0017】
キャッシュデータストア150は、ストレージドライブ162より高速でアクセス動作を実行できるストレージデバイスを含む。例えば、キャッシュデータストア150は、DRAMまたはSSDストレージデバイスを含み、DRAMまたはSSDストレージデバイスはストレージドライブ162を実装するために一般的に使用される機械的ハードディスクドライブより優れた性能を提供する。キャッシュデータストア150は、インタフェース172を介してホストコンピュータに接続される。1つの実施形態において、キャッシュデータストア150はソリッドステートストレージデバイスを含み、インタフェース172は周知のピーシーアイ−エクスプレス(PCI−express:PCIe)高速システムバスインタフェースを含む。ソリッドステートストレージデバイスは、DRAM、スタティックランダムアクセスメモリ(SRAM:static random access memory)、フラッシュメモリ、またはこれらの何れかの組合せを含んでいてもよい。この実施形態において、キャッシュデータストア150はストレージシステムキャッシュ164より高性能で読取を実行しうるが、キャッシュデータストア150はインタフェース172が本質的にインタフェース174より低遅延で高速であるからである。代替的な実施形態において、インタフェース172はFCインタフェース、シリアルアタッチドスモールコンピュータシステムインターコネクト(SAS)、シリアルアタッチドアドバンストテクノロジーアタッチメント(SATA)または技術的に実現可能な他の何れかのデータ転送技術を実装する。キャッシュデータストア150は、ストレージシステム160への読取リクエストを実行する場合より低遅延で、要求されたデータをハイパーバイザキャッシュコントローラ140に有利に提供するように構成される。
【0018】
ハイパーバイザキャッシュコントローラ140は、ストレージシステムプロトコルをインタフェース170に提示し、VM128におけるストレージデバイスドライバがハイパーバイザキャッシュコントローラ140と、あたかもストレージシステム160とやり取りしているかのように透過的にやりとりする。ハイパーバイザキャッシュコントローラ140はVMMによる特権的な命令トラップを通じて、ストレージシステム160をターゲットとするアクセスIOリクエストを傍受する(intercept)。アクセスリクエストは一般に、ストレージシステム160に関連付けられたLBAのデータ内容をVM110に関連付けられた仮想化物理メモリに関連付けられたPPNへとロードするためのリクエストを含む。
【0019】
特定のPPNと対応するLBAとの間の関連付けは、「read_page(PN,deviceHandle,LBA,len)」という形式のアクセスリクエストにより確立され、その中で「PPN」は標的となるPPNであり、「deviceHandle」はLUN等のボリューム識別子であり、「LBA」はdeviceHandle内の開始ブロックを指定し、「len」はそのアクセスリクエストによって読み取られるデータの長さを指定する。長さが1ページを超える場合は、複数のブロック168が複数の対応するPPNに読み込まれてもよい。このような場合、対応するLBAとPPNとの間に複数の関連付けが行われてもよい。これらの関連付けは、PPN−LBAテーブル144の中で追跡され(tracked)、PPN−LBAテーブル144にはあるPPNとあるLBAとの間の各々の関連付けが、{PPN,(deviceHandle,LBA)}の形式で、PPNをインデックスとして保存される。1つの実施形態において、PPN−LBAテーブル144は、効率的なルックアップのためのハッシュテーブルを使用して実装され、各エントリがチェックサム、例えばキャッシュに格納されたデータの内容から計算されたMD5チェックサムに関連付けられる。PPN−LBAテーブル144は、GOS120内のバッファキャッシュ124に何が格納されているかを推測し、追跡するために使用される。
【0020】
キャッシュLBAテーブル146は、キャッシュデータストア150に何が格納されているかを追跡するために保持される。各エントリは{(deviceHandle,LBA),address_in_data_store}の形式で、(deviceHandle,LBA)をインデックスとする。1つの実施形態において、キャッシュLBAテーブル146はハッシュテーブルを使って実装され、キャッシュデータストア150に格納されたブロックのためのデータをアドレス指定するには、パラメータ「address_in_data_store」が使用される。技術的に実現可能な何れのアドレス指定方法が実装されてもよく、キャッシュデータストア150の実装の詳細に依存してもよい。置換ポリシデータ構造(replacement policy data structure)148は、キャッシュデータストア150内に格納されたデータの置換ポリシを実装するために保持される。1つの実施形態において、置換ポリシデータ構造148はLRUリストであり、各リストエントリはキャッシュデータストア150内に格納されている各ブロックの記述子を含む。あるエントリがアクセスされると、そのエントリはLRUリスト内のその位置から引き出されてリストの先頭に置かれ、そのエントリが現在の最も最近使用された(MRU:most recently used)エントリであることを示す。LRUリストの末尾にあるエントリは、最も過去に使用されたエントリであり、新しい別のブロックをキャッシュデータストア150に格納する必要が生じたときに追い出されるべきエントリである。
【0021】
図1Aを使って実装される実施形態は、バッファキャッシュ124内で生成された、ストレージシステム160をターゲットとするブロックアクセスリクエストをモニタしてもよい。ハイパーバイザキャッシュコントローラ140は、PPN−LBAテーブル144を使ってPPN−LBAマッピングを追跡することにより、バッファキャッシュ124内にどのデータブロックが格納されているかを推測することができる。ハイパーバイザキャッシュコントローラ140はすると、キャッシュデータストア150を管理して、キャッシュに格納されたデータがバッファキャッシュ124とキャッシュデータストア150との間でなるべく重複しないようにすることができる。あるキャッシュ階層内の2つのキャッシュに重複するデータが最小限しかないか、またはまったくなければ、これらは排他的(exclusive)と呼ばれる。データ降格のメカニズムを使って排他性が実現され、これによれば、あるデータユニットは、データを対応するデータストアから追い出している間に、上書きされるのではなく別のキャッシュに降格される。降格については、
図2において後でより詳しく説明する。
【0022】
図1Bは、他の実施形態による、マルチレベルキャッシングを実装するように構成された仮想化コンピューティングシステム102のブロック図である。この実施形態では、
図1Aの仮想化コンピューティングシステム100がセマンティックスヌーパ(semantic snooper)180とプロセス間通信(IPC:inter−process communication)モジュール182を含むように拡張されている。セマンティックスヌーパ180とIPC182は、GOS120内にインストールされた擬似デバイスドライバとして実装されてもよい。擬似デバイスドライバは、仮想化技術において広く知られ、利用されている。セマンティックスヌーパ180は、ファイルシステム122の動作、例えば正確にどのPPNがどのLBAをバッファするのに使用されるか、等をモニタするように構成される。セマンティックスヌーパ180がバッファキャッシュ124に関する具体的な動作情報を読み出すための1つの例示的なメカニズムが、周知のリナックス・ケープローブ(Linux kprobe)メカニズムである。セマンティックスヌーパ180は、カーネル関数del_page_from_lru()のトレースを確立してもよく、このトレースはLinuxバッファキャッシュ内に格納されたデータのLRUリストからあるページを追い出す。このカーネル関数のエントリで、セマンティックスヌーパ180にビクティムページ(victim page)のPPNが渡され、このPPNはその後、IPC182とIPCエンドポイント184を介してハイパーバイザキャッシュコントローラ140に渡される。この実施形態において、ハイパーバイザキャッシュコントローラ140は、アクセスリクエストに関連付けられたパラメータを追跡することによってPPNの利用を推測するのではなく、バッファキャッシュ124のPPNの利用を明確に追跡することができる。
【0023】
通信チャネル176がIPC182とIPCエンドポイント184との間に確立される。1つの実施形態において、共有メモリセグメントが通信チャネル176を含む。IPC182とIPCエンドポイント184は、カリフォルニア州パロアルトのヴイエムウェア社(VMware,Inc.)が開発した仮想マシン通信インタフェース(VMCI:virtual machine communication interface)と呼ばれるIPCシステムを実装してもよい。このような実施形態において、IPC182はクライアントVMCIライブラリのインスタンスを含み、IPC182はIPC通信プロトコルを実行してPPN利用情報等のデータをVM110から仮想化システム130へと送信する。同様に、IPCエンドポイント184はVMCIエンドポイントを含み、IPCエンドポイント184はIPC通信プロトコルを実行してVMCIライブラリからデータを受け取る。
【0024】
図2は、1つの実施形態による、キャッシュレベル階層200のデータ昇格とデータ降格を示す。キャッシュレベル階層200は、第一レベルキャッシュ230と、第二レベルキャッシュ240と、第三レベルキャッシュ250と、を含む。キャッシュに格納されていない新しいデータがリクエストされると、3つのレベルすべてにおいてキャッシュミスとなる。このデータはまず、第一レベルキャッシュ230に書き込まれ、最も最近使用されたデータを含む。特定のデータユニット、例えば
図1A〜1Bのブロック168に関連するデータが十分な長さの期間にわたりアクセスされず、その間に他のデータがリクエストされ、第一レベルキャッシュ230に保存された場合、そのデータユニットはいずれ最も過去に使用されたデータとなり、追い出される位置に置かれる。そのデータユニットは、追い出されると降格動作220を通じて第二レベルキャッシュ240に降格される。降格後は当初、そのデータユニットは第二レベルキャッシュ240の中の最も最近使用されたものの位置を占める。このデータユニットは第二レベルキャッシュ240の中でも同様に古くなり、やがて、今度は降格動作222を通じて第三レベルキャッシュ250へと再び降格される。このデータユニットが十分に長い期間にわたり古くなると、このデータユニットはいずれ第三レベルキャッシュ250から追い出される。第三レベルキャッシュ250にある、あるデータユニットがリクエストされた場合は、キャッシュヒットがヒット動作212を通じてそのデータを第一レベルキャッシュ230へと再び昇格させる。同様に、第二レベルキャッシュ240におけるあるデータユニットがリクエストされると、キャッシュヒットがヒット動作210を通じてこのデータを第一レベルキャッシュ230へと再び昇格させる。各キャッシュレベルで、あるデータユニットのコピーは1回のみでよいが、各キャッシュレベルで降格動作220、222が利用可能で、降格情報が利用可能であることが条件となる。
【0025】
1つの実施形態において、第一レベルキャッシュ230は
図1A〜1Bのバッファキャッシュ124を含み、第二レベルキャッシュ240はハイパーバイザキャッシュコントローラ140と共にキャッシュデータストア150を含み、第三レベルキャッシュ250はストレージシステムキャッシュ164を含む。バッファキャッシュ124はどの置換ポリシでも自由に実装できる。ハイパーバイザキャッシュコントローラ140は、特権的命令トラップ(privileged instruction trap)をモニタすることによってバッファキャッシュ124により実行されるページ割当および置換を推測するか、またはセマンティックスヌーパ180を通じてページ割当および置換が知らされる。
【0026】
1つの実施形態において、指定されたPPNを有するメモリページの降格は、追い出されたページの内容を別のキャッシュに関連付けられたマシンメモリの別のページにコピーするコピー動作を通じて実行される。この実施形態において、コピー動作は、新しいデータが同じPPNに上書きされる前に完了している必要がある。例えば、バッファキャッシュ124があるPPNであるデータページを追い出すと、ハイパーバイザキャッシュコントローラ140がそのデータページを、そのデータページの内容をキャッシュデータストア150にコピーすることによって降格する。そのページの内容がキャッシュデータストア150にコピーされると、バッファキャッシュ124内の追い出しをトリガしたread_page()動作は自由にそのPPNに新しいデータを上書きできる。
【0027】
他の実施形態において、指定されたPPNを有するメモリページの降格は、そのPPNをマシンメモリのうちの、バッファとして使用するために割り当てられた新しいページにマッピングしなおすリマッピング動作を通じて実行される。すると、追い出されたメモリページはPPNを上書きするread_page()動作と同時にキャッシュデータストア150にコピーされてもよく、今度はこのPPNは新しいメモリページを指す。この技術により、有利な点として、バッファキャッシュ124によって実行されるread_page()動作を、追い出されたデータページのキャッシュデータストア150への降格と同時に行うことが可能となる。1つの実施形態において、追い出されたページが降格された後に、PPN−LBAテーブル144が更新される。
【0028】
現代的なオペレーティングシステムは、ウィンドウズ(Windows)、リナックス、ソラリス(Solaris)、およびビーエスディー(BSD)を含め、すべてがバッファキャッシュと仮想メモリを統合したシステムを実装しているため、ディスクIO以外のイベントがページの追い出しをトリガでき、これによって、置換されたページ内のデータをIO目的のために再び再利用される前にIO以外の目的のために変更可能とすることができる。その結果、そのページの内容は、対応するディスク位置にあるデータとはもはや一致しなくなる。一致しないデータがキャッシュデータストア150に降格されるのを回避するために、ハイパーバイザキャッシュコントローラ140により、チェックサムに基づくデータ完全性が実現されてもよい。データ完全性を確保するための1つの方法は、あるエントリが追加されたときに、MD5チェックサムを計算し、そのチェックサムをPPN−LBAテーブル144内の各エントリに関連付けることを含む。read_page()動作中は、MD5チェックサムが再計算され、PPN−LBAテーブル144内に保存された当初のチェックサムと比較される。適合(match)していれば、対応するデータが変更されていないことを意味し、そのページはLBAデータと一致するため、そのページが降格される。そうでなければ、PPN−LBAテーブル144のそのページのための対応するエントリがドロップされる。
【0029】
write_page()動作が起動されると、PPN−LBAテーブル144とキャッシュLBAテーブル146に、write_page()の中で指定されたPPNまたはLBAの値の何れかの適合に関するクエリが行われる。適合が見つかれば、PPN−LBAテーブル144と置換ポリシデータ構造148の中の適合するエントリのすべてを無効化または更新するべきである。これに加えて、関連するMD5チェックサムとPPN−LBAテーブル144のLBA(その書込みが新しいLBAに対するものである場合)をその都度、更新または追加するべきである。新しいMD5チェックサムが計算され、キャッシュLBAテーブル146の対応するエントリに関連付けられてもよい。
【0030】
MD5チェックサムを使ったページ変更(一貫性)の検出の代替案は、特定のページを読取専用MMU保護によって保護することが関わり、それによってあらゆる変更を直接検出できる。この方法は、厳密にはMD5チェックサムより安価であり、なぜなら、変更されたページは、ハイパーバイザトラップに関して読取専用違反が行われたときにのみ、そしてこれらの変更されたページについてのみ、追加の作業を発生させるからである。これに対して、チェックサム方式では各ページについてチェックサム計算を2回行う必要がある。
【0031】
リナックス等の現代的なオペレーティングシステムの多くは、バッファキャッシュ124と仮想メモリ全体を統合されたシステム内で管理する。このような統合により、IOアクセスに基づいてすべてのページの追い出しを正確に検出することがさらに困難となる。例えば、特定のページをストレージマッピングのために割り当てて、read_page()を使ってフェッチされたデータユニットを保持すると仮定する。ある地点で、ゲストOS120はそのページをIO以外の何らかの目的のために、またはいずれディスクに書き込まれることになる新しいデータブロックを構築するために使用することを選択できる。この場合、以前のそのページの内容が追い出されていることをハイパーバイザに伝える明確な動作(例えばread_page())はない。
【0032】
ハイパーバイザにページ保護を追加することにより、ストレージにマッピングされたページはそのページが最初に変更されたときに、変更の原因が推測可能であれば検出されうる。そのページがディスク上の関連するブロックが更新できるように変更されている場合、ページの追い出しは行われない。しかしながら、そのページが、異なる目的のための異なるデータを含むように変更されている場合は、以前の内容が追い出されている。特定のページ変更は一貫して、特定のオペレーティングシステムによってページの追い出しと共に実行される。したがって、実行されているこのような変更は、ページ追い出しの指標として使用できる。このような変更のうちの2つは、GOS120によるページゼロ化(page zeroing)とGOS120によるページ保護またはマッピング変更を含む。
【0033】
ページゼロ化は一般に、ページが新しいリクエスタ(new requestor)に割り当てられる前にオペレーティングシステムによって実行される。ページゼロ化は、有利な点として、プロセス間で偶発的にデータが共有されるのを回避する。ページゼロ化はまた、GOS120におけるページゼロ化動作の観察によりページ追い出しを推測するために、VMMによって検出されてもよい。技術的に実現可能な何れの技術を使ってページゼロ化を検出してもよく、これにはパターン検出を実行する既存のVM技術が含まれる。
【0034】
ページ保護または特定のPPNへの仮想メモリのマッピング変更は、GOS120が対応するページの目的を変えていることを示す。例えば、メモリにマッピングされたI/O動作に使用されたページは、特定の保護設定と仮想マッピングを有していてもよい。保護または仮想マッピングの何れかの変更は、GOS120がそのページを他の目的のために割り当てしなおしたことを示してもよく、それは、このページが追い出されていることを示す。
【0035】
図3Aおよび3Bの各々は、ストレージシステムをターゲットとする読取リクエストに応答するためにハイパーバイザキャッシュ(hypervisor cache)により実行される方法のフロー図である。
図3Bは
図3Aに関係しているが、特定のステップを並行して処理できるような最適化を示している。この方法ステップは
図1Aおよび1Bのシステムに関して説明されるが、理解すべき点として、本発明の範囲および趣旨から逸脱せずにこれらの方法ステップを実行できるシステムは他にもある。1つの実施形態において、ハイパーバイザキャッシュはハイパーバイザキャッシュコントローラ140およびキャッシュデータストア150を含む。
【0036】
図3Aに示される方法300はステップ310から始まり、ここでハイパーバイザキャッシュは、リクエストPPNとデバイスハンドル(「deviceHandle」)と読取LBA(RLBA)を含むページ読取リクエストを受け取る。このページ読取リクエストはまた、長さパラメータ(「len」)も含んでいてよい。ステップ320で、ハイパーバイザキャッシュがリクエストPPNは
図1A〜1BのPPN−LBAテーブル144にあると判断すると、方法はステップ350に進む。1つの実施形態において、PPN−LBAテーブル144は、PPNをインデックスとするハッシュテーブル(hash table)を含み、リクエストPPNが存在するか否かの判断はハッシュルックアップ(hash lookup)を使って実行される。
【0037】
ステップ350で、ハイパーバイザキャッシュが、PPN−LBAテーブル144に保存された、リクエストPPNに関連付けられるLBA値(TLBA)はRLBAと等しくないと判断すると、方法はステップ352に進む。RLBAがTLBAと等しくない状態は、リクエストPPNにおいて保存されたページが追い出されていて、降格する必要がありうることを示す。ステップ352で、ハイパーバイザキャッシュは指定されたPPNにおいて保存されたデータのチェックサムを計算する。1つの実施形態において、MD5チェックサムはそのデータのためのチェックサムとして計算される。
【0038】
ステップ360で、ハイパーバイザキャッシュがステップ352で計算されたチェックサムはPPN−LBAテーブル144にエントリとして保存されていたそのPPNのためのチェックサムと適合するかを判断する。そうであれば、方法はステップ362に進む。適合するチェックサムは、リクエストPPNにおいて保存されていたデータが一貫しており、降格されうることを示す。ステップ362で、ハイパーバイザキャッシュは、リクエストPPNにおいて保存されたデータをキャッシュデータストア150にコピーする。ステップ364で、ハイパーバイザキャッシュはコピーされたデータのエントリを置換ポリシデータ構造148に追加し、そのデータがキャッシュデータストア150にあり、関連する置換ポリシの適用対象であることを示す。LRU置換ポリシが実装されていれば、そのエントリは置換ポリシデータ構造148にあるLRUリストの先頭に加えられる。ステップ366で、ハイパーバイザキャッシュがエントリをキャッシュLBAテーブル146に追加し、そのLBAのデータがキャッシュデータストア150内で発見されうることを示す。ステップ362〜366は、リクエストPPNにより参照されるデータページを降格するためのプロセスを示す。
【0039】
ステップ368で、ハイパーバイザキャッシュは、キャッシュデータストア150をチェックして、要求されたデータがキャッシュデータストア150に保存されているか(すなわち、キャッチヒット)を判断する。ステップ368でハイパーバイザキャッシュが要求されたデータはキャッシュデータストア150においてキャッシュヒットであると判断すると、方法はステップ370および371に進み、そこでハイパーバイザキャッシュは要求されたデータをキャッシュデータストア150からリクエストPPNにより参照される1つまたは複数のページにロードし(ステップ370)、ハイパーバイザキャッシュはそのキャッシュヒットに対応するエントリをキャッシュLBAテーブル146から削除し、また置換ポリシデータ構造148内の対応するエントリを削除する(ステップ371)。この時点で、理解すべき点として、そのキャッシュヒットに関連するデータはバッファキャッシュ124にあり、バッファキャッシュ124とキャッシュデータストア150との間で排他性が保持される必要がある。ステップ374で、ハイパーバイザキャッシュはリクエストPPNに関連付けられる読取LBAを反映させるようにPPN−LBAテーブル144を更新する。ステップ376で、ハイパーバイザキャッシュはリクエストPPNに関連付けられる要求されたデータのために新たに計算されたチェックサムを反映させるようにPPN−LBAテーブル144を更新する。方法はステップ390で終了する。
【0040】
ステップ368で、ハイパーバイザキャッシュが要求されたデータはキャッシュデータストア150においてキャッシュヒットではないと判断すると、方法はステップ372に進み、ステップ372でハイパーバイザキャッシュは要求されたデータをストレージシステム160からリクエストPPNにより参照される1つまたは複数のページにロードする。ステップ372の後に、ステップ374および376が上述の方法で実行される。
【0041】
ステップ320に戻り、ハイパーバイザキャッシュがリクエストPPNは
図1A〜1BのPPN−LBAテーブル144に存在しないと判断すると、方法はステップ368に進み、ステップ368で、上述のように、ハイパーバイザキャッシュはキャッシュデータストア150をチェックして、要求されたデータがキャッシュデータストア150に保存されているか(すなわち、キャッシュヒット)を判断し、上述のようにその後のステップを実行する。
【0042】
ステップ350に戻り、ハイパーバイザキャッシュが、PPN−LBAテーブル144に保存されているTLBA値がRLBAと等しいと判断すると、方法はステップ390で終了する。
【0043】
ステップ360に戻り、ステップ352で計算されたチェックサムがPPN−LBAテーブル144にエントリとして保存されているそのPPNのためのチェックサムと適合しなければ、方法はステップ368に進む。この不適合は、ページデータが変わっており、降格するべきであるという指標となる。
【0044】
図3Aに示される方法300において、データをバッファキャッシュ124にロードするステップ(ステップ370またはステップ372)は、リクエストPPNにより参照されたデータページが降格された後に実行される。他の実施形態、例えば
図3Bに示されるステップ301においては、認識すべき点として、データをバッファキャッシュ124にロードするステップ(ステップ370またはステップ372)がリクエストPPNにより参照されたデータページを降格するステップと並行して行われてもよい。これは、ハイパーバイザキャッシュがステップ360で、ステップ352で計算されたチェックサムはPPN−LBAテーブル144にエントリとして保存されているそのPPNのチェックサムと適合すると判断し、ハイパーバイザキャッシュがステップ361で上述のように、リクエストPPNにより参照されたマシンページを異なるPPNにマッピングしなおし、そのリクエストPPNに新しいマシンページを割り当てた後に、ハイパーバイザキャッシュにステップ368の決定ブロックとそれに続くステップをステップ362と並行して実行させることによって実現される。
【0045】
図4は、ストレージシステムをターゲットとした書込みリクエストに応答するためにハイパーバイザキャッシュにより実行される方法400のフロー図である。方法ステップは
図1Aおよび1Bのシステムに関連して説明されるが、理解すべき点として、本発明の範囲および趣旨から逸脱せずにこれらの方法ステップを実行できるシステムは他にもある。1つの実施形態において、ハイパーバイザキャッシュはハイパーバイザキャッシュコントローラ140およびキャッシュデータストア150を含む。
【0046】
方法400はステップ410から始まり、ステップ410でハイパーバイザキャッシュは、リクエストPPNとデバイスハンドル(「deviceHandle」)と書込みLBA(WLBA)を含むページ書込みリクエストを受け取る。このページ書込みリクエストはまた、長さパラメータ(「len」)も含んでいてよい。ステップ420で、ハイパーバイザキャッシュがリクエストPPNは
図1A〜1BのPPN−LBAテーブル144にあると判断すると、方法はステップ440に進む。1つの実施形態において、PPN−LBAテーブル144は、PPNをインデックスとするハッシュテーブルを含み、リクエストPPNが存在するか否かの判断はハッシュルックアップを使って実行される。ハッシュルックアップは、適合するエントリのインデックスを提供するか、またはそのPPNが存在しないことを示す。
【0047】
ステップ440で、ハイパーバイザキャッシュがWLBAはリクエストPPNに関連付けられるPPN−LBAテーブル144に保存されていたLBA値(TLBA)と適合しないと判断すると、方法はステップ442に進み、ここでハイパーバイザキャッシュは、WLBAがリクエストPPNに関連付けられることを反映させるようにPPN−LBAテーブル144を更新する。ステップ444で、ハイパーバイザキャッシュはリクエストPPNにより参照された書込みデータのためのチェックサムを計算する。ステップ446で、ハイパーバイザキャッシュは、リクエストPPNがステップ444で計算されたチェックサムによって特徴付けられることを反映させるようにPPN−LBAテーブル144を更新する。
【0048】
ステップ440に戻り、ハイパーバイザキャッシュがWLBAはリクエストPPNに関連付けられたTLBAと確かに適合すると判断すると、方法はステップ444に進む。この不適合は、WLBAを反映するエントリがPPN−LBAテーブル144にすでに存在し、そのエントリには対応するデータのための更新されたチェックサムが必要であるという指標となる。
【0049】
ステップ420に戻り、ハイパーバイザキャッシュがリクエストPPNは
図1A〜1BのPPN−LBAテーブル144に存在しないと判断すると、方法はステップ430に進み、ステップ430でハイパーバイザキャッシュはリクエストPPNにより参照されたデータのチェックサムを計算する。ステップ432で、ハイパーバイザキャッシュはエントリをPPN−LBAテーブル144に追加し、このエントリは、リクエストPPNがWLBAに関連付けられることを示し、ステップ430で計算されたチェックサムを含む。
【0050】
ステップ450はステップ432の後とステップ444の後で実行される。ステップ450でハイパーバイザキャッシュがWLBAはキャッシュLBAテーブル146にあると判断すると、方法はステップ452に進む。キャッシュLBAテーブル146にWLBAがあることは、そのWLBAに関連するデータが現在キャッシュデータストア150に格納されており、これと同じデータがバッファキャッシュ124に存在するため、キャッシュデータストア150から廃棄するべきであることを示す。ステップ452で、ハイパーバイザキャッシュはそのWLBAに対応するキャッシュLBAテーブル146のテーブルエントリを削除する。ステップ454で、ハイパーバイザキャッシュはそのWLBAに対応するエントリを置換ポリシデータ構造148から削除する。ステップ456で、ハイパーバイザキャッシュはリクエストPPNにより参照されたデータをストレージシステム160に書き込む。方法はステップ490で終了する。
【0051】
ステップ450でハイパーバイザキャッシュがそのWLBAはキャッシュLBAテーブル146にないと判断すると、キャッシュLBAテーブル146から廃棄すべきものがないため、方法はステップ456に進む。
【0052】
要するに、仮想化コンピューティングシステム内の階層的キャッシュストレージを効率的に管理するための方法が開示される。ゲストオペレーティングシステム内のバッファキャッシュは第一のキャッシングレベルを提供し、ハイパーバイザキャッシュは第二のキャッシングレベルを提供する。また別のキャッシュが追加のキャッシングレベルを提供してもよい。あるデータユニットがゲストオペレーティングシステムによってロードされ、バッファキャッシュに格納されると、ハイパーバイザキャッシュは、関連する状態を記録するが、実際にはそのデータユニットをキャッシュに格納しない。ハイパーバイザキャッシュがそのデータユニットをキャッシュに格納するのは、バッファキャッシュがそのデータユニットを追い出し、そのデータユニットをハイパーバイザキャッシュにコピーする降格動作をトリガしたときだけである。ハイパーバイザキャッシュがキャッシュヒットであるリクエストを受け取ると、これはそのデータユニットがバッファキャッシュにすでに存在することを示すため、ハイパーバイザキャッシュは対応するエントリを削除する。
【0053】
本発明の実施形態の1つの利点は、キャッシングレベルの階層の中のデータが1つのレベルだけに存在すればよいことであり、これはその階層内のストレージの全体的な効率を改善する。他の利点は、特定の実施形態がゲストオペレーティングシステムに関して透過的に実行されてもよい点である。
【0054】
本明細書に記載された各種の実施形態は、コンピュータシステム内に保存されたデータに係る様々なコンピュータ実装動作を利用してもよい。例えば、これらの動作は物理的な数量の物理的な操作を必要とすることができ、通常、ただし必ずしもそうとはかぎらないが、これらの数量は電気または磁気信号の形態をとってもよく、その場合、これらまたはそれを表現したものは保存、転送、合成、比較またはそれ以外に操作できる。さらに、このような操作は生成、特定、判定または比較等の用語で呼ばれることが多い。本明細書に記載された、本発明の1つまたは複数の実施形態の一部を形成する動作は何れも、有益な機械動作であってよい。これに加えて、本発明の1つまたは複数の実施形態はまた、これらの動作を実行するデバイスまたは装置にも関する。この装置は要求された具体的な目的のために特に構成されてもよく、またはコンピュータ内に保存されたコンピュータブログラムによって選択的に作動または構成される汎用コンピュータであってもよい。特に、各種の汎用マシンは、本明細書の教示に従って書かれたコンピュータプログラムと共に使用されてもよく、または必要な動作を実行するための、より専門化された装置を構成するほうが好都合でありうる。
【0055】
本明細書に記載された各種の実施形態は、ハンドヘルドデバイス、マイクロプロセッサシステム、マイクロプロセッサベースのまたはプログラム可能な民生用電子機器、ミニコンピュータ、メインフレームコンピュータ、およびこれに類するもの等、他のコンピュータシステム構成で実現されてもよい。
【0056】
本発明の1つまた複数の実施形態は、1つまたは複数のコンピュータプログラムとして、または1つまたは複数のコンピュータ可読媒体に具現化された1つまたは複数のコンピュータプログラムモジュールとして実装されてもよい。コンピュータ可読媒体という用語は、後にコンピュータシステムに入力可能なデータを保存できるあらゆるデータストレージデバイスを指す。コンピュータ可読媒体は、コンピュータによりそれらが読み取られることを可能にする方法でコンピュータプログラムを具現化するための、既存の、または今後開発される何れの技術に基づいていてもよい。コンピュータ可読媒体の例としては、ハードドライブ、ネットワークアタッチトストレージ(NAS:network attached storage)、リードオンリメモリ、ランダムアクセスメモリ(例えばフラッシュメモリデバイス)、CD(コンパクトディスク:Compact Disc)、CD−ROM、CD−RまたはCD−RW、DVD(デジタル多目的ディスク:Digital Versatile Disc)、磁気テープ、その他の光および光以外のデータストレージデバイスがある。コンピュータ可読媒体はまた、ネットワーク接続されたコンピュータシステム上に分散させることができ、それによってコンピュータ可読コードが分散されて保存され、実行される。
【0057】
本発明の1つまたは複数の実施形態を明瞭に理解できるようにある程度詳しく説明したが、特許請求の範囲内で特定の変更および改変を加えられることは明らかであろう。したがって、説明された実施形態は例示的であって限定的ではないと考えるべきであり、特許請求の範囲は、本明細書中に記された詳細に限定されず、特許請求の範囲および均等物の中で改変してもよい。特許請求項において、要素および/またはステップは、特許請求項の中に明記されていないかぎり、いかなる具体的な動作順序も黙示していない。
【0058】
これに加えて、記載された仮想化方法は一般に、仮想マシンが特定のハードウェアシステムに適合するインタフェースを提示することを前提としているが、当業者であれば、記載された方法が何れの特定のハードウェアシステムに直接対応しない仮想化と合わせても使用できることがわかるであろう。ホストされた実施形態、ホストされていない実施形態、または双方の間の区別が曖昧となる傾向のある実施形態として実装される各種の実施形態による仮想化システムはすべて想定される。さらに、各種の仮想化動作は全部または一部がハードウェアにおいて実装されてもよい。例えば、ハードウェアの実装は、非ディスクデータのセキュリティを確保するために、ストレージアクセスリクエストを変更するためにルックアップテーブルを利用してもよい。
【0059】
多くの変更形態、改変形態、追加形態、および改良形態が、仮想化の程度にかかわらず可能である。仮想化ソフトウェアはしたがって、仮想化機能を実行するホスト、コンソール、またはゲストオペレーティングシステムのコンポーネントを含むことができる。本明細書において1つの例として記載されたコンポーネント、動作または構造について、複数の例が提供されてもよい。最後に、各種のコンポーネント、動作、およびデータストア間の境界は幾分任意であり、具体的な動作が特定の例示的構成に関連して示されている。機能のその他の割当も想定され、本発明の範囲内に含めてよい。概して、例示的な構成において別々のコンポーネントとして示されている構造および機能は、合体された構造またはコンポーネントとして実装されてもよい。同様に、1つのコンポーネントとして提示されている構造および機能は、別々のコンポーネントとして実装されてもよい。これらおよびその他の変更形態、改変形態、追加形態、および改良形態は付属の特許請求の範囲内に含められてもよい。
【国際調査報告】