(57)【要約】ホスト側キャッシュを使用して仮想マシン（ＶＭ）の入出力を加速するための技法を提供する。一実施形態では、ホストシステムのハイパーバイザが、ホストシステム上で実行されているＶＭからの入出力要求を傍受することができ、入出力要求は共用記憶装置上にある仮想ディスクに宛てられている。次いでハイパーバイザは、共用記憶装置とは別の１つ又は複数のキャッシュ装置にあるホスト側キャッシュにアクセスすることによってその入出力要求を処理することができ、ホスト側キャッシュのアクセスはＶＭにとってトランスペアレントである。
2015526823.tif 000002
【特許請求の範囲】
【請求項１】
ホスト側キャッシュを使用して仮想マシン（ＶＭ）の入出力を加速するための方法であって、
ホストシステムのハイパーバイザにより、前記ホストシステム上で実行されているＶＭからの入出力要求を傍受するステップであって、前記入出力要求は共用記憶装置上にある仮想ディスクに宛てられている、傍受するステップと、
前記ハイパーバイザにより、前記共用記憶装置とは別の１つ又は複数のキャッシュ装置にあるホスト側キャッシュにアクセスすることによって前記入出力要求を処理するステップであって、前記ホスト側キャッシュの前記アクセスは前記ＶＭにとってトランスペアレントである、処理するステップと
を含む、方法。
【請求項２】
前記ホスト側キャッシュにアクセスすることによって前記入出力要求を処理するステップが、前記ＶＭ又は前記仮想ディスクと共に使用するように事前に設定されているキャッシングモジュールを呼び出すステップを含む、請求項１に記載の方法。
【請求項３】
前記キャッシングモジュールが、サードパーティ開発者によって実装される前記ハイパーバイザのモジュールコンポーネントである、請求項２に記載の方法。
【請求項４】
前記ホスト側キャッシュが複数のキャッシュ装置にわたって分散され、共通ファイルシステムを用いて前記複数のキャッシュ装置をプールすることにより、前記ホスト側キャッシュが単一の論理資源として前記ハイパーバイザに提示される、請求項１に記載の方法。
【請求項５】
前記複数のキャッシュ装置が異機種の装置である、請求項４に記載の方法。
【請求項６】
前記ＶＭへの電源投入時に、前記ＶＭ又は前記仮想ディスクに前記ホスト側キャッシュの一部が割り当てられ、割当部分は、事前に設定された最小サイズ及び事前に設定された最大サイズを有する、請求項１に記載の方法。
【請求項７】
前記ＶＭの電源が切られるとき又は前記ＶＭが別のホストシステムにマイグレートされるとき、前記割当部分が解放される、請求項６に記載の方法。
【請求項８】
ホストシステムのプロセッサによって実行可能なコンピュータソフトウェアを記憶している非一時的なコンピュータ可読記憶媒体であって、前記コンピュータソフトウェアは、ホスト側キャッシュを使用してＶＭの入出力を加速するための方法を具体化し、前記方法は、
前記ホストシステム上で実行されているＶＭからの入出力要求を傍受するステップであって、前記入出力要求は共用記憶装置上にある仮想ディスクに宛てられている、傍受するステップと、
前記共用記憶装置とは別の１つ又は複数のキャッシュ装置にあるホスト側キャッシュにアクセスすることによって前記入出力要求を処理するステップであって、前記ホスト側キャッシュの前記アクセスは前記ＶＭにとってトランスペアレントである、処理するステップと
を含む、非一時的なコンピュータ可読記憶媒体。
【請求項９】
前記ホスト側キャッシュにアクセスすることによって前記入出力要求を処理するステップが、前記ＶＭ又は前記仮想ディスクと共に使用するように事前に設定されているキャッシングモジュールを呼び出すステップを含む、請求項８に記載の非一時的なコンピュータ可読記憶媒体。
【請求項１０】
前記キャッシングモジュールが、サードパーティ開発者によって実装されるモジュールコンポーネントである、請求項９に記載の非一時的なコンピュータ可読記憶媒体。
【請求項１１】
前記ホスト側キャッシュが複数のキャッシュ装置にわたって分散され、共通ファイルシステムを用いて前記複数のキャッシュ装置をプールすることにより、前記ホスト側キャッシュが単一の論理資源として前記ホストシステムのハイパーバイザに提示される、請求項８に記載の非一時的なコンピュータ可読記憶媒体。
【請求項１２】
前記複数のキャッシュ装置が異機種の装置である、請求項１１に記載の非一時的なコンピュータ可読記憶媒体。
【請求項１３】
前記ＶＭへの電源投入時に、前記ＶＭ又は前記仮想ディスクに前記ホスト側キャッシュの一部が割り当てられ、割当部分は、事前に設定された最小サイズ及び事前に設定された最大サイズを有する、請求項８に記載の非一時的なコンピュータ可読記憶媒体。
【請求項１４】
前記ＶＭの電源が切られるとき又は前記ＶＭが別のホストシステムにマイグレートされるとき、前記割当部分が解放される、請求項１３に記載の非一時的なコンピュータ可読記憶媒体。
【請求項１５】
ホストシステムであって、
プロセッサと、
非一時的なコンピュータ可読媒体であって、前記プロセッサによって実行されるとき、
ホストシステム上で実行されているＶＭからの入出力要求を傍受することであって、前記入出力要求は共用記憶装置上にある仮想ディスクに宛てられている、傍受すること、
前記共用記憶装置とは別の１つ又は複数のキャッシュ装置にあるホスト側キャッシュにアクセスすることによって前記入出力要求を処理することであって、前記ホスト側キャッシュの前記アクセスは前記ＶＭにとってトランスペアレントである、処理すること
を前記プロセッサに行わせるプログラムコードを記憶している前記非一時的なコンピュータ可読媒体と
を含む、ホストシステム。
【請求項１６】
前記ホスト側キャッシュにアクセスすることによって前記入出力要求を処理することを前記プロセッサに行わせる前記プログラムコードが、前記ＶＭ又は前記仮想ディスクと共に使用するように事前に設定されているキャッシングモジュールを呼び出すことを前記プロセッサに行わせるプログラムコードを含む、請求項１５に記載のホストシステム。
【請求項１７】
前記キャッシングモジュールが、サードパーティ開発者によって実装されるモジュールコンポーネントである、請求項１６に記載のホストシステム。
【請求項１８】
前記ホスト側キャッシュが複数のキャッシュ装置にわたって分散され、共通ファイルシステムを用いて前記複数のキャッシュ装置をプールすることにより、前記ホスト側キャッシュが単一の論理資源として前記ホストシステムのハイパーバイザに提示される、請求項１５に記載のホストシステム。
【請求項１９】
前記複数のキャッシュ装置が異機種の装置である、請求項１８に記載のホストシステム。
【請求項２０】
前記ＶＭへの電源投入時に、前記ＶＭ又は前記仮想ディスクに前記ホスト側キャッシュの一部が割り当てられ、割当部分は、事前に設定された最小サイズ及び事前に設定された最大サイズを有する、請求項１５に記載のホストシステム。
【請求項２１】
前記ＶＭの電源が切られるとき又は前記ＶＭが別のホストシステムにマイグレートされるとき、前記割当部分が解放される、請求項２０に記載のホストシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
データセンタ及び企業環境では、様々なホストシステム上で実行される仮想マシン（ＶＭ）が、ネットワーク化された記憶アレイ等の共用記憶装置上にある仮想ディスク（ＶＭＤＫ）にアクセスすることは一般的である。ＶＭＤＫを記憶するために共用記憶域を使用することは、ホストシステムにとってローカルな記憶域を使用することに勝る幾つかの利点をもたらす。例えば、或る共用記憶域の実装形態は、とりわけ多数のホストシステムを含む環境内での記憶域の保守及び構成を合理化することができる。或る共用記憶域の実装形態は、ホストフェールオーバやＶＭのライブマイグレーション等、特定の仮想化管理技法を使用可能にすることができる。
【０００２】
しかし、上記の利点にも関わらず、共用記憶域のＶＭＤＫにアクセスすることは場合によってはＶＭの入出力性能に悪影響を及ぼし得る。例えば、共用記憶装置への入出力に関与するＶＭは、ＶＭのホストシステムと共用記憶装置との間のネットワーク遅延時間、共用記憶装置における入出力の輻輳等の要因により、貧弱な入出力性能に見舞われる可能性がある。一部のサーバベンダは、キャッシュとして使用するためにホストシステム内にフラッシュ記憶装置を組み込むことにより、この性能の問題に対処しようと試みている。不都合なことに、かかるフラッシュ記憶装置をキャッシュとして活用するための既存の技法は、ＶＭレベルの修正及びフラッシュ記憶装置の特定のブランドに固有なキャッシュ管理メカニズムのうちの少なくとも一方を一般に必要とする。その結果、これらの既存の技法は、如何なる仮想化システム環境内でも容易且つ柔軟に実装可能な汎用ホスト側キャッシングソリューションを提供することができない。
【発明の概要】
【課題を解決するための手段】
【０００３】
ＶＭの入出力を加速するために、ホスト側キャッシュを使用するための技法を提供する。一実施形態では、ホストシステムのハイパーバイザが、ホストシステム上で実行されているＶＭからの入出力要求を傍受することができ、入出力要求は共用記憶装置上にある仮想ディスクに宛てられている。次いでハイパーバイザは、共用記憶装置とは別の１つ又は複数のキャッシュ装置にあるホスト側キャッシュにアクセスすることによってその入出力要求を処理することができ、ホスト側キャッシュのアクセスはＶＭにとってトランスペアレントである。
【０００４】
以下の詳細な説明及び添付図面は、特定の実施形態の性質及び利点をより良く理解できるようにする。
【図面の簡単な説明】
【０００５】
【図１】一実施形態による、トランスペアレントなホスト側キャッシングを支援するシステム環境のブロック図を示す。
【図２】一実施形態による、ホスト側キャッシュを構成するための流れ図を示す。
【図３】一実施形態による、トランスペアレントなホスト側キャッシングを行うための図１のシステム環境内の流れを示す。
【図４】一実施形態による、ＶＭ／ＶＭＤＫキャッシュ割当を解放するための流れ図を示す。
【図５】一実施形態による、ＶＭのライブマイグレーション中、ホスト側キャッシュのコンテンツを移送するための流れ図を示す。
【発明を実施するための形態】
【０００６】
以下の説明では、様々な実施形態の理解を可能にするために、数多くの例及び詳細を説明目的で記載する。但し、特定の実施形態は、それらの詳細の一部なしで実施することができ、又はその修正形態又は等価物によって実施できることが当業者にとって明らかである。
【０００７】
本開示では、ホスト側キャッシュを使用してＶＭの入出力を加速するために、ホストシステムのハイパーバイザ内に実装可能なフレームワークについて説明する。一実施形態では、ＶＭから生じる入出力要求をハイパーバイザが傍受することができ、入出力要求は共用記憶装置（例えばネットワーク化された記憶アレイ）上にあるＶＭＤＫに宛てられている。次いでハイパーバイザは、アクセスがＶＭにとって「トランスペアレント」である（即ちホスト側キャッシュがアクセスされていること又はホスト側キャッシュが存在することをＶＭが全く知らない）ように、共用記憶装置とは別の１つ又は複数のキャッシュ装置（例えばフラッシュ記憶装置）上にあるホスト側キャッシュにアクセスすることによってその入出力要求を処理することができる。
【０００８】
このフレームワークにより、ホスト側キャッシュを活用するためにＶＭレベルでコードを実装する必要がない。代わりに、全キャッシングプロセスを、ハイパーバイザによって、及びハイパーバイザの内部で自動化することができる。その結果、各ＶＭのソフトウェア構成に関わらず、フレームワークが、ＶＭの入出力性能をハイパーバイザのＶＭの全てにわたって加速することができる。
【０００９】
更に、特定の実施形態では、フレームワークがキャッシュ装置及び共用記憶装置のどちらにも縛られなくても良く、つまり、ハイパーバイザがアクセスするホスト側キャッシュは任意の種類／ブランドのキャッシュ装置上にあっても良く、ハイパーバイザがアクセスするＶＭＤＫは任意の種類／ブランドの共用記憶装置上にあっても良い。特定の実施形態では、共通ファイルシステムフォーマットに準拠する単一の論理的なホスト側キャッシュ内に、複数の異機種のキャッシュ装置（例えば異なるブランド、容量、フォームファクタ等のキャッシュ装置）をプールすることができる。次いでハイパーバイザは、論理的なホスト側キャッシュ内のスペースを選択されたＶＭ（又はＶＭＤＫ）群にわたりキャッシング目的で割り当てることができる。
【００１０】
また更に、特定の実施形態では、フレームワークが自らのホスト側キャッシング動作を制御するためのモジュールアーキテクチャをサポートすることができる。例えば、フラッシュ記憶域のベンダが、自社ブランドのフラッシュ記憶装置で最も良く機能すると考える独占権下にあるキャッシングアルゴリズムを作成する状況を検討されたい。装置の相互運用性を制限することなくこの状況を活用するために、フレームワークは、（それぞれが異なるキャッシングアルゴリズムを実装する）複数のキャッシングモジュールを同時にハイパーバイザに登録し又はハイパーバイザ内にインストールすることを可能にし得る。ホストシステムの管理者は、そのベンダのフラッシュ記憶装置上にあるホスト側キャッシュと共に使用するために、そのベンダのキャッシングモジュールを選択することができる。このようにして、フレームワークは、キャッシュ装置に縛られないながらも、様々なサードパーティのキャッシング技法に対応することができる。
【００１１】
図１は、一実施形態による、トランスペアレントなホスト側キャッシングを支援するシステム環境１００を示す。図示の通り、システム環境１００は、ハイパーバイザ１０４（「仮想化層」や「仮想化ソフトウェア」としても知られる）を実行するホストシステム１０２を含む。ハイパーバイザ１０４は、１つ又は複数のＶＭ１０６を実行可能な環境を提供する。一実施形態では、ハイパーバイザ１０４が、介在するホストオペレーティングシステムなしに、ホストシステム１０２のハードウェアプラットフォームと直接対話することができる。この実施形態では、ハイパーバイザ１０４は、ホストシステム１０２の様々なハードウェア装置のＶＭ使用を管理するカーネル（不図示）を含むことができる。代替的実施形態では、ハイパーバイザ１０４を「ホスト型」構成の一部とすることができ、この構成では、ハイパーバイザがホストオペレーティングシステム（不図示）上で実行される。この実施形態では、ハードウェア装置の物理資源を管理するために、ハイパーバイザ１０４がホストオペレーティングシステムに頼ることができる。当業者なら、ハイパーバイザ１０４の設計及び構成について、様々な修正形態及び代替形態に気付くであろう。
【００１２】
システム環境１００は、ホストシステム１０２に通信可能に結合される、共用記憶装置１０８及び１つ又は複数のキャッシュ装置１１０を更に含む。共用記憶装置１０８は、例えばＳＡＮやＮＡＳベースの記憶アレイ、又はホストシステム１０２と１つ又は複数の他のホストシステムとの間で共用される他の任意の種類の記憶装置／コンポーネントとすることができる。共用記憶装置１０８は、永続データを読み書きするためにＶＭ１０６がアクセスする仮想ディスク（ＶＭＤＫ）１１２を記憶する。
【００１３】
キャッシュ装置１１０は、フラッシュ記憶装置（例えばＳＳＤ、ＰＣＩ−ｅ対応のフラッシュカード等）、揮発性メモリ装置（例えばＮＶＲＡＭ）、及び他の同様の記憶／メモリ装置のうちの少なくとも１種類の記憶装置を含み得る。一実施形態では、キャッシュ装置１１０がホストシステム１０２にとってローカルであり得る（例えば直接取り付けられる）。他の実施形態では、キャッシュ装置１１０の１つ又は複数が、ネットワーク（不図示）を介してホストシステム１０２と通信するリモート装置であり得る。
【００１４】
背景の節で述べたように、ＶＭＤＫを記憶するために共用記憶域（共用記憶装置１０８等）を使用する不利点の１つは、ことによると低いＶＭの入出力性能である。この性能の問題を軽減する技法は存在するが、これらの既存の技法は、ＶＭレベルの修正を一般に必要とすること、およびキャッシュ装置の特定のブランドの独占権下にあることのうちの少なくとも一方となる。
【００１５】
上記の（及び他の同様の）問題に対処するために、ホストシステム１０２のハイパーバイザ１０４は、キャッシングフレームワーク１１４を含むことができる。一実施形態では、キャッシングフレームワーク１１４が、ハイパーバイザ１０４の入出力スタック内の仮想ＳＣＳＩ（ｖＳＣＳＩ）層の真下にあっても良いが、キャッシングフレームワーク１１４は、ハイパーバイザ１０４内の他の任意の層／位置にあっても良いことを理解すべきである。動作面では、キャッシングフレームワーク１１４は、ＶＭ１０６から生じる共用記憶装置１０８上のＶＭＤＫ１１２行きの入出力要求を傍受することができる。次いでキャッシングフレームワーク１１４は、（共用記憶装置１０８にアクセスする代わりに、又はアクセスすることに加えて）キャッシュ装置１１０上にあるホスト側キャッシュ１１６にアクセスすることにより、その入出力要求を処理することができる。例えば、傍受した入出力要求が読取要求である場合、キャッシングフレームワーク１１４は、要求されたデータがホスト側キャッシュ１１６内で既に入手可能かどうかを確認することができる。入手可能な場合、キャッシングフレームワーク１１４は、共用記憶装置１０８との間で往復を行うのではなく、キャッシュ装置１１０からデータを直接取得し、それにより送信元のＶＭが経験する入出力待ち時間を短縮することができる。
【００１６】
重要なことに、キャッシングフレームワーク１１４は、ＶＭ１０６にとってトランスペアレントな方法で上記のキャッシュ処理を行うことができる。従って、キャッシングフレームワーク１１４は、ＶＭ１０６内で実行されるアプリケーション又はゲストオペレーティングシステムへの如何なる変更も必要としない。加えて、既存の特定のキャッシングの実装形態と異なり、キャッシングフレームワーク１１４は、キャッシュ装置１１０及び共用記憶装置１０８のうちの少なくとも一方の種類／ブランドに依存しない。
【００１７】
更に図１の実施形態では、キャッシングフレームワーク１１４は、サードパーティ開発者（例えば記憶域やサーバのベンダ）が、特注の／独占権下にあるキャッシングアルゴリズムを開発し、それらのアルゴリズムをフレームワーク１１４内にキャッシングモジュール１１８として登録／インストールすることを可能にし得る。以下で更に詳細に説明するように、ホストシステム１０２の管理者は、特定のキャッシングモジュール１１８を（例えばキャッシングモジュールを作成したサードパーティ開発者の推奨／ガイドラインに準拠して）特定のキャッシュ装置、ＶＭ、ＶＭＤＫ等に関連させることができる。ホストシステム１０２の実行時に、キャッシングフレームワーク１１４はこの関連性を後に使用し、そのキャッシュ装置、ＶＭ、又はＶＭＤＫ用のキャッシングモジュール１１８の機能を呼び出すことができる。
【００１８】
図２は、一実施形態による、ホスト側キャッシュ１１８を作成し、キャッシングフレームワーク１１４の動作を構成するための流れ図２００を示す。単純にするために、流れ図２００は、ハイパーバイザ１０４の管理コンポーネント／インターフェイスによって実行されると仮定する。しかし、代替的実施形態では、流れ図２００の１つ又は複数のブロックが、ホストシステム１０２とは別の中央管理サーバによって実行されても良い。
【００１９】
ブロック２０２で、ハイパーバイザ１０４が、ホストシステム１０２の管理者（又は他の何らかの利用者）から、キャッシングフレームワーク１１４によってホスト側キャッシュとして使用される１つ又は複数のキャッシュ装置（例えばキャッシュ装置１１０）の選択を受け取ることができる。一実施形態では、選択されるキャッシュ装置が同機種（即ち同一）であり得る。他の実施形態では、選択されるキャッシュ装置が異機種（即ち異なる種類、容量、ブランド等を有する装置）であり得る。例えば、或るキャッシュ装置はＥＭＣによって製造された２５６ＧＢのＳＳＤとすることができる一方、別のキャッシュ装置は、Ｆｕｓｉｏｎ−ｉｏによって製造された５１２ＧＢのＰＣＩ−ｅ対応のフラッシュカードであり得る。
【００２０】
ブロック２０４で、キャッシュ装置が単一の論理的なキャッシュ資源（即ちホスト側キャッシュ１１６）としてアクセスされ、管理され得るように、ハイパーバイザ１０４が選択されたキャッシュ装置をまとめてプールし又は組み合わせることができる。特定の実施形態では、ブロック２０４の処理が、選択されたキャッシュ装置に共通ファイルシステムを適用し、そのファイルシステムを使用するキャッシュ装置にわたるホスト側キャッシュ「パーティション」を作成することを含み得る。そのようなファイルシステムの一例が、ＶＭｗａｒｅのＶＦＦＳ（仮想フラッシュファイルシステム：Ｖｉｒｔｕａｌ  Ｆｌａｓｈ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）であるが、他のファイルシステムを利用しても良いことを理解すべきである。管理者がブロック２０２で単一のキャッシュ装置しか選択しない実施形態では、このステップを省略することができる。
【００２１】
ブロック２０２〜２０４に従ってホスト側キャッシュ１１６が定義／作成されると、管理者はキャッシングフレームワーク１１４を構成して、ホストシステム１０２の特定のＶＭ又はＶＭＤＫの入出力を加速するためにホスト側キャッシュ１１６を使用することができる（ブロック２０６〜２１０）。例えば、ブロック２０６で、ハイパーバイザ１０４が管理者からＶＭ又はＶＭＤＫの選択を受け取ることができる。このステップの一部として、ハイパーバイザ１０４は、ＶＭ／ＶＭＤＫに割り当てられるべき、ホスト側キャッシュ１１６内の空きスペースを制御するためのパラメータを受け取ることができる。このスペース（ＶＭ／ＶＭＤＫのキャッシュ割当と呼ぶ）は、ホスト側キャッシュ１１６が所与の時点でＶＭ／ＶＭＤＫについて保持可能なキャッシュデータの量を決める。特定の実施形態では、このパラメータが、ＶＭ／ＶＭＤＫのキャッシュ割当の最小サイズ及び最大サイズのそれぞれを指定する、「最小」パラメータ及び「最大」パラメータを含み得る。或いは、又は加えて、このパラメータは、ＶＭ／ＶＭＤＫのキャッシュに割り当てるための、ホスト側キャッシュ１１６の合計サイズのパーセンテージを指定する「構成比」パラメータを含み得る。
【００２２】
ブロック２０８で、ハイパーバイザ１０４が、ブロック２０６で選択されたＶＭ／ＶＭＤＫ用のキャッシングモジュール１１８の選択を管理者から受け取ることができる。上記のように、特定の実施形態では、キャッシングフレームワーク１１４がモジュールアーキテクチャを実装することができ、そのアーキテクチャでは、様々なサードパーティ開発者が独自の特注の／独占権下にあるキャッシングアルゴリズムを作成し、キャッシングフレームワーク１１４内に（キャッシングモジュール１１８の形で）インストールすることができる。これにより、サードパーティ開発者は、特定の種類のキャッシュ装置、特定のＶＭ、特定のＶＭＤＫ等向けにキャッシングフレームワーク１１４の動作を最適化できるようになる。このアーキテクチャを使い、何時でも複数のキャッシングモジュールをキャッシングフレームワーク１１４内にインストールすることができる。従って、ブロック２０８で受け取られるキャッシングモジュールの選択は、選択されたＶＭ又はＶＭＤＫに関係する入出力要求をシステムの実行時に傍受したときに、どのキャッシングモジュールを呼び出すのかをキャッシングフレームワーク１１４が知ることを可能にする。
【００２３】
最後にブロック２１０で、ハイパーバイザ１０４が、ブロック２０６及び２０８で受け取った入力を、選択されたＶＭ／ＶＭＤＫに関連するメタデータファイル（例えばＶＭＸファイル）内に保存することができる。
【００２４】
図３は、一実施形態による、トランスペアレントなホスト側キャッシングを行うために、キャッシングフレームワーク１１４がホストシステム１０２の実行時中に行うことができる流れ３００を示す。この例では、ホストシステム１０２の管理者が、図２のブロック２０６に従ってホスト側キャッシュ１１６を利用するものとして、（ＶＭ１０６に対応する）ＶＭＤＫ１１２を選択したと仮定する。更に、図２のブロック２０８に従い、ＶＭＤＫ１１２に宛てられる入出力要求を処理するのに適したキャッシングモジュールであるものとして、管理者がキャッシングモジュール１１８を選択したと仮定する。
【００２５】
ステップ（１）（参照番号３０２）で、ＶＭ１０６の電源投入時に、キャッシングフレームワーク１１４が、ホスト側キャッシュ１１６内にＶＭＤＫ１１２用のキャッシュ割当３２０を作成することができる。一実施形態では、キャッシュ割当３２０は、図２のブロック２０４でキャッシュ装置１１０に適用される共通ファイルシステムに従ってフォーマットされるファイルに対応し得る。代替的実施形態では、キャッシュ割当３２０が、ホスト側キャッシュ１１６内の１組の予約データブロックに対応し得る。ＶＭＤＫ１１２にホスト側キャッシュ１１６の独自の専用部分を割り当てることにより、キャッシングフレームワーク１１４は、ＶＭＤＫ１１２のキャッシング性能が、ホスト側キャッシュ１１６を利用し得る他のＶＭＤＫ又はＶＭの入出力作業負荷の影響を受けないことを確実にすることができる。
【００２６】
概して、キャッシュ割当３２０のサイズは、図２のブロック２０６で受け取られ（ＶＭ１０６のメタデータファイル内に記憶され）るサイズパラメータに準拠することができる。ホスト側キャッシュ１１６にキャッシュ割当３２０を作成する十分な空き容量が無い場合、キャッシュフレームワーク１１４は、現在処理中のＶＭの電源を打ち切ることができるエラーメッセージをハイパーバイザ１０４に伝送することができる。
【００２７】
上記の内容に加えて、ステップ（１）の一部として、キャッシングフレームワーク１１４は、ＶＭＤＫ１１２及びホスト側キャッシュ１１６と相互運用するために、キャッシングモジュール１１８（即ち図２のブロック２０８でＶＭＤＫ１１２用に選択されたキャッシングモジュール）を初期化することができる。この初期化プロセスは、例えばキャッシングモジュール１１８の「ｏｐｅｎ（）」関数を呼び出し、ＶＭＤＫ１１２及びホスト側キャッシュ１１６それぞれへのハンドル／ポインタをｏｐｅｎ（）関数への入力パラメータとして渡すことを含み得る。
【００２８】
キャッシングフレームワーク１１４が、ステップ（１）に従ってキャッシュ割当３２０を作成し、キャッシングモジュール１１８を初期化すると、キャッシングフレームワーク１１４は、ＶＭ１０６から生じる（且つＶＭＤＫ１１２に宛てられる）入出力要求をトランスペアレントに処理するためのプロセスを実行することができる。例えば、ステップ（２）及び（３）（参照番号３０６及び３０８）で、キャッシングフレームワークは、かかる入出力要求３０４を傍受し、（例えば図２のブロック２１０で作成されたＶＭメタデータファイルを調べることにより）キャッシングモジュール１１８がその入出力要求を処理すべきだと判定することができる。次いでキャッシングフレームワーク１１４は、キャッシングモジュール１１８のキャッシング機能を呼び出すために、キャッシングモジュール１１８の適切な関数（例えば「ａｓｙｎｃｉｏ（）」関数）を呼び出すことができる（ステップ（４）、参照番号３１０）。
【００２９】
ステップ（４）の呼出しに応答し、キャッシングモジュール１１８は自らの内部キャッシングアルゴリズムを実行し、入出力要求をどのように処理（例えばキャッシュ）するのかを決定することができる（ステップ（５）、参照番号３１２）。例えば、入出力要求が読取要求である場合、キャッシングモジュール１１８は或る種類のアルゴリズムを実行することができ、入出力要求が書込要求である場合、キャッシングモジュール１１８は別の種類のアルゴリズムを実行することができる。先に述べたように、特定の実施形態では、キャッシング性能を最適化するために、キャッシングモジュール１１８がサードパーティ開発者によって定められても良い。従ってこれらの実施形態では、キャッシングモジュール１１８がブロック３１２で実行するキャッシングアルゴリズムを、ＶＭＤＫ１１２、ＶＭ１０６のアプリケーション／作業負荷、及びキャッシュ装置１１０のうちの少なくとも一方向けに特別にあつらえることができる。
【００３０】
最後にステップ（６）（参照番号３１４）で、キャッシングモジュール１１８が、適切なコマンド３１６、３１８を（ステップ（１）で受け取られた入出力ハンドルにより）ホスト側キャッシュ１１６及びＶＭＤＫ１１２のうちの少なくとも一方に発行し、ステップ（５）の処理に基づきそれらのエンティティとの間でデータを読み書きすることができる。図３には示していないが、ハイパーバイザ１０４は、入出力要求が成功裏に完了／処理されていることを示す肯定応答をＶＭ１０６に返すこともできる。
【００３１】
図２及び図３に示した技法を使用し、キャッシングフレームワーク１１４は、既存のホスト側キャッシングソリューションに勝る幾つかの利点をもたらすことができる。まず、実行時の流れ３００がハイパーバイザ１０４内で完全にカプセル化されるので、ホスト側キャッシュ１１６を利用するためにＶＭレベルで如何なる修正も行う必要が無く、図２のブロック２０６に従ってホスト側キャッシュ１１６を利用するものとしてＶＭを単純に指定することにより、キャッシングフレームワーク１１４によって提供されるキャッシング機能が、ハイパーバイザ１０４上で実行される任意のＶＭに適用され得る。次に、キャッシングフレームワーク１１４は特定の種類／ブランドのキャッシュ装置１１０（又は共用記憶装置１０８）に縛られないので、キャッシングフレームワーク１１４は、任意の記憶域インフラとの関連で動作することができ、複数の異なるキャッシュ装置を単一の論理的なキャッシュ資源へと（共通ファイルシステムによって）統合することさえできる。第４に、複数のプラグ可能キャッシングモジュールをサポートすることにより、キャッシングフレームワーク１１４は、ＶＭ、ＶＭＤＫ、又はキャッシュ装置ベースで、最適化されたキャッシング性能を提供することができる。第５に、各ＶＭ又はＶＭＤＫをホスト側キャッシュ１１６内の独自の専用キャッシュに割り当てることにより、キャッシングフレームワーク１１４は、ＶＭ／ＶＭＤＫにわたるキャッシュ動作の隔離を確実なものとすることができる。
【００３２】
図３に示すホスト側キャッシングを実施することの１つの課題は、新たなＶＭに電源投入されるとき、新たなキャッシュ割当を作成する十分な空き容量がホスト側キャッシュ１１６内にあることを確実にすることである。この課題に対処するために、特定の実施形態では、ＶＭの電源が切られたとき又はそれ以外の方法で非活動状態にされたとき（例えば一時停止、スナップショット等）、キャッシングフレームワーク１１４がＶＭ又はＶＭＤＫに割り当てられているキャッシュスペースを解放することができる。このように解放することは、他の活動状態のＶＭ／ＶＭＤＫに割当可能なキャッシュ資源をＶＭ／ＶＭＤＫが無駄に占有することを防ぐ。図４は、そのプロセスの流れ図４００を示す。
【００３３】
ブロック４０２で、キャッシングフレームワーク１１４は、ハイパーバイザ１０４上で実行されているＶＭに関する電源オフ／一時停止／スナップショットコマンドを検出することができる。ＶＭの電源が切られる場合、コマンドはＶＭ自体から生じる場合がある。ＶＭの一時停止又はスナップショットの場合、コマンドは、例えばホストシステム１０２の管理を担う中央管理サーバから生じる場合がある。
【００３４】
ブロック４０４で、キャッシングフレームワーク１１４が、ＶＭの関連するキャッシングモジュール（及び／又はＶＭのＶＭＤＫに関連するキャッシングモジュール）の「ｃｌｏｓｅ（）」関数を呼び出すことができる。
【００３５】
それに応答し、キャッシングモジュールは、ＶＭ／ＶＭＤＫのキャッシュ割当内の任意のダーティデータを、かかるダーティデータが存在する場合にフラッシュすることができる（ブロック４０６）。次いで、キャッシングモジュールは、ホスト側キャッシュ１１６内のキャッシュ割当に関連するキャッシュスペースを解放することができる（ブロック４０８）。
【００３６】
ＶＭの一時停止又はスナップショット事象の場合、ＶＭがゆくゆくは再開される。このシナリオでは、ＶＭ再開コマンドを検出すると、キャッシングフレームワーク１１４が、図２で与えられる管理者入力に基づき、ＶＭ（及びそのＶＭＤＫのうちの少なくとも一方）のためにホスト側キャッシュ１１６内のスペースの再割当を試みることができる。ＶＭの電源投入シナリオのように、ホスト側キャッシュ１１６にキャッシュ割当を作成する十分な空き容量が無い場合、ＶＭの一時停止プロセスが打ち切られても良い。或いは、ハイパーバイザ１０４は、キャッシュ割当を作成することなしにＶＭに電源投入／ＶＭを再開することにしても良い。
【００３７】
一部の実施形態では、キャッシングフレームワーク１１４がホスト側キャッシュ１１６内にＶＭ（又はそのＶＭＤＫ）に対する入出力要求をアクティブにキャッシングする間、ホストシステム１０２のハイパーバイザ１０４が、実行中のＶＭを別の（即ち「移動先」の）ホストシステムにライブマイグレートしたい場合がある。これらの実施形態では、キャッシングフレームワーク１１４は、ＶＭのマイグレーションプロセスの一部として、ＶＭ／ＶＭＤＫのキャッシュ割当のコンテンツを、ホスト側キャッシュ１１６から移動先ホストシステムにおける対応するホスト側キャッシュに移すこともできる。このプロセスは、ＶＭのマイグレーションの直後にＶＭの入出力を加速するために使用できるように、移動先ホストシステムにおけるホスト側キャッシュを事実上「ウォームアップ」する。図５は、一実施形態による、そのプロセスを実行するための流れ図５００を示す。
【００３８】
ブロック５０２で、ハイパーバイザ１０４が、移動先ホストシステムへのＶＭのマイグレーションを開始することができる。図面には示していないが、このステップは、移動先ホストシステムのホスト側キャッシュ内にＶＭ（及び／又はそのＶＭＤＫ）のキャッシュデータを収容するのに十分な空き容量があるかどうか、移動先ホストシステムに確認するステップを含み得る。移動先ホストシステム上のホスト側キャッシュに十分な空き容量が無い場合、ＶＭのマイグレーションプロセスが打ち切られても良い。
【００３９】
ブロック５０４で、ＶＭ／ＶＭＤＫのキャッシュデータを移動先ホストシステムにコピーすべきかどうかを、キャッシングフレームワーク１１４が判定することができる。この選択は、例えばホストシステム１０２の管理者によって設定され得る。コピーすべきである場合、キャッシングフレームワーク１１４はキャッシュデータを移動先ホストシステムに伝送することができ（ステップ５０６）、それによりそのデータを移動先ホストシステムのホスト側キャッシュ内に投入することができる。上記で述べたように、このステップは移動先のホスト側キャッシュがＶＭの入出力要求をすぐにサービスし始めることができるように、移動先のホスト側キャッシュをウォームアップすることができる。
【００４０】
他方で、キャッシュデータをコピーすべきでない場合、キャッシングフレームワーク１１４は、ＶＭ／ＶＭＤＫのキャッシュ割当内の任意のダーティデータを単純に共用記憶装置１０８にフラッシュすることができる（ブロック５０８）。ダーティデータをフラッシュすることは、ＶＭが実行を開始し、移動先ホストシステムのデータにアクセスし始めるときに共用記憶装置１０８内にデータ破損が無いことを確実にするが、ブロック５０６にあるように移動先のホスト側キャッシュをウォームアップすることはない。
【００４１】
最後にブロック５１０で、ＶＭがもはやホストシステム１０２上で実行されていないので、キャッシングフレームワーク１１４がホスト側キャッシュ１１６内のＶＭ／ＶＭＤＫのキャッシュ割当を解放することができる。
【００４２】
本明細書に記載した実施形態では、コンピュータシステム内に記憶されるデータを用いる様々なコンピュータによって実施される操作を利用することができる。例えば、これらの操作は物理量の物理的操作を必要とする場合があり、必須ではないが通常、これらの量は電気信号又は磁気信号の形を取り、それらの信号（又はそれらの信号の表現）は記憶し、転送し、結合し、比較し、又は他の方法で操作することができる。かかる操作はしばしば作成、識別、決定、比較等の用語で呼ばれる。１つ又は複数の実施形態の一部を形成する本明細書に記載した如何なる操作も、有用なマシン操作とすることができる。
【００４３】
更に、１つ又は複数の実施形態は、上記の操作を行うための装置又は機器に関係し得る。この機器は、特定の所要の目的のために特別に構築することができ、又はコンピュータシステム内に記憶されるプログラムコードによって選択的に活動化され若しくは構成される汎用コンピュータシステムでも良い。具体的には、本明細書の教示に従って書かれたコンピュータプログラムと共に様々な汎用マシンを使用することができ、又は所要の操作を行うためにより特化された機器を構築する方が便利な場合もある。本明細書に記載した様々な実施形態は、携帯端末、マイクロプロセッサシステム、マイクロプロセッサベースの又はプログラム可能な消費者家電、ミニコンピュータ、メインフレームコンピュータ等を含む他のコンピュータシステム構成を使って実施しても良い。
【００４４】
また更に、１つ又は複数の実施形態は、１つ又は複数の非一時的なコンピュータ可読記憶媒体内に具体化される１つ若しくは複数のコンピュータプログラム又は１つ若しくは複数のコンピュータプログラムモジュールとして実装することができる。非一時的なコンピュータ可読記憶媒体という用語は、後でコンピュータシステムに入力可能なデータを記憶することができる任意のデータ記憶装置を指す。非一時的なコンピュータ可読媒体は、コンピュータプログラムがコンピュータシステムによって読み取られることを可能にする方法でコンピュータプログラムを具体化する既存の任意の技術、又は後に開発される技術に基づくことができる。非一時的なコンピュータ可読媒体の例には、ハードドライブ、ネットワーク接続ストレージ（ＮＡＳ）、読取専用メモリ、ランダムアクセスメモリ（例えばフラッシュメモリデバイス）、ＣＤ（コンパクトディスク）（例えばＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ等）、ＤＶＤ（デジタル多用途ディスク）、磁気テープ、並びに他の光学的及び非光学的データ記憶装置が含まれる。コンピュータ可読コードが分散された方法で記憶され実行されるように、非一時的なコンピュータ可読媒体をネットワークに結合されたコンピュータシステムにわたって分散させることもできる。
【００４５】
加えて、説明した仮想化方法では、慨して仮想マシンが特定のハードウェアシステムに合ったインターフェイスを示すと仮定したが、記載した方法は或る特定のハードウェアシステムに直接対応しない仮想化と組み合わせて使用しても良いことを当業者なら理解されよう。ホスト型の実施形態、非ホスト型の実施形態、又はその２つの区別を曖昧にする傾向がある実施形態として実装される、様々な実施形態による仮想化システムの全てが想定されている。更に、特定の仮想化操作がハードウェアにより完全に又は部分的に実施されても良い。
【００４６】
仮想化の程度に関係なく、多くの改変、修正、追加、及び改善が可能である。従って仮想化ソフトウェアは、仮想化機能を実行するホスト、コンソール、又はゲストオペレーティングシステムのコンポーネントを含むことができる。単一の例として本明細書に記載したコンポーネント、操作、又は構造について複数の例が提供されても良い。最後に、様々なコンポーネント、操作、及びデータストア間の境界は幾らか恣意的であり、特定の操作を特定の例示的構成との関連で解説した。他の機能の割当ても想定されており、本発明の範囲に含まれ得る。慨して、例示的構成の中で別個のコンポーネントとして提示した構造及び機能は、複合構造又は複合コンポーネントとして実装しても良い。同様に、単一のコンポーネントとして提示した構造及び機能を別個のコンポーネントとして実装しても良い。
【００４７】
上記の説明は、特定の実施形態の側面を実施し得る方法の例と共に様々な実施形態を示す。これらの例及び実施形態は唯一の実施形態と見なされるべきではなく、添付の特許請求の範囲によって定める特定の実施形態の柔軟性及び利点を例示するために示した。添付の特許請求の範囲によって定める本発明の範囲から逸脱することなく他の構成、実施形態、実装形態、及び等価物を使用することができる。
【図１】
2015526823.tif 000003
【図２】
2015526823.tif 000004
【図３】
2015526823.tif 000005
【図４】
2015526823.tif 000006
【図５】
2015526823.tif 000007
【国際調査報告】
2015526823.tif 000008
2015526823.tif 000009