(57)【要約】【課題】ゲスト仮想マシン内のＯ／Ｓカーネル、ドライバ、アプリケーション・レベルで実装されたキャッシュ・コントローラが、仮想マシンの変化する需要に対する応答性の改善のために仮想マシンにキャッシュ・ストアを動的に割り振る。【解決手段】単一のキャッシュ・デバイスまたはキャッシュ・デバイスのグループが、複数の論理デバイスとして準備され、リソース・アロケータに公開される。コア・キャッシング・アルゴリズムがゲスト仮想マシン内で実行される。新しい仮想マシンが仮想マシン・マネージャの管理下で追加され、既存の仮想マシンは、それぞれの既存のマシンで使用するために割り振られたキャッシュ・ストアの一部を解放するように促される。解放されたキャッシュが新しいマシンに割り振られる。同様に、仮想マシンがシャットダウンし、または新しいホスト・システムに移行される場合、仮想マシンに割り振られたキャッシュ容量が、仮想マシンモニタによって管理されている残りの仮想マシンの間で再分配される。【選択図】図１
2014175009.tif 000002
【特許請求の範囲】
【請求項１】
１つまたは複数のフラッシュ・ベースのデバイスのグループ、および１組の仮想マシンを管理するホスト・コンピュータ・システムによってサポートされるキャッシュ・ストアを管理する方法であって、
仮想マシン・マネージャにキャッシュ・リソース・マネージャ・アプリケーションを提供することであって、前記キャッシュ・リソース・マネージャが、前記ホスト・コンピューティング・システムによってサポートされる仮想マシン数に従って、利用可能なキャッシュ記憶容量の識別された部分の倍数を分配する１つまたは複数のポリシーで構成されることと、
仮想マシン・マネージャにキャッシュ・リソース・アロケータおよびフラッシュ・ベースのキャッシュ・デバイス・ドライバを提供することであって、前記キャッシュ・リソース・アロケータが、フラッシュ・ベースのキャッシュ・デバイスのグループを要求し、各仮想マシンに論理ドライブを割り振り、フラッシュ・ベースのデバイスの前記グループによって提供される前記利用可能なキャッシュ記憶容量の一部を識別するように構成されることと、
仮想インフラストラクチャ・クライアントにプラグインを提供することであって、前記プラグインが、仮想マシン、仮想マシン・マネージャ、およびゲスト・コンテキストを少なくとも１つのフラッシュ・ベースのキャッシュ・デバイスに提供するように構成されることと、
各仮想マシンにドライバを公開して、前記仮想マシンが専用記憶デバイスと通信しているかのように、前記仮想マシンがフラッシュ・ベースのキャッシュ・デバイスの前記グループと通信することを可能にすることと
を含む方法。
【請求項２】
各仮想マシンに前記ドライバを公開することが、前記オペレーティング・システムが前記仮想マシン上で実行されること、および範囲マップが前記キャッシュ・リソース・マネージャによって定義されることに応答するものである請求項１に記載の方法。
【請求項３】
各仮想マシンが、前記範囲マップに応答する範囲に対するＩ／Ｏ操作を指示するだけである請求項２に記載の方法。
【請求項４】
前記キャッシュ・リソース・マネージャが、前記ホスト・コンピューティング・システム上で動作する前記仮想マシン数の変化に応答して、前記範囲マップを動的に修正する請求項２に記載の方法。
【請求項５】
前記プラグインが、マン・マシン・インターフェースに情報を提供するようにさらに構成される請求項１に記載の方法。
【請求項６】
前記プラグインが、前記キャッシュ・リソース・マネージャに代わって前記仮想マシンと通信するようにさらに構成される請求項１に記載の方法。
【請求項７】
各ドライバが、フラッシュ・ベースのキャッシュ・デバイスにマッピングされた範囲を有する前記グループからの前記フラッシュ・ベースのキャッシュ・デバイスに対するヒットまたはキャッシュ・フィルＩ／Ｏを発行し、前記Ｉ／Ｏが、特定の仮想マシンにマッピングされた前記論理ドライブに関連する前記キャッシュ・リソース・アロケータによって受信され、前記キャッシュ・リソース・アロケータが前記Ｉ／Ｏのレンジを検証し、前記Ｉ／Ｏを前記物理デバイスにリダイレクトする請求項１に記載の方法。
【請求項８】
１つまたは複数のフラッシュ・ベースのデバイスのグループ、および１組の仮想マシンを管理するホスト・コンピュータ・システムによってサポートされるキャッシュ・ストアを動的に管理するのに適したキャッシュ・リソース管理システムであって、
前記ホスト・コンピュータ・システム上で実行中であり、前記ホスト・コンピューティング・システムによってサポートされる仮想マシン数に従って、前記利用可能なキャッシュ記憶容量の識別された部分の倍数を分配する１つまたは複数のポリシーで構成されたキャッシュ・リソース・マネージャ・アプリケーションと、
前記ホスト・コンピュータ・システム上で実行中であり、キャッシュ・リソース・アロケータおよびフラッシュ・ベースのキャッシュ・デバイス・ドライバと共に構成された仮想マシン・マネージャであって、前記キャッシュ・リソース・アロケータが、フラッシュ・ベースのキャッシュ・デバイスのグループを要求し、各仮想マシンに論理ドライブを割り振り、フラッシュ・ベースのデバイスの前記グループによって提供される前記利用可能なキャッシュ記憶容量の一部を識別するように構成される仮想マシン・マネージャと、
仮想インフラストラクチャ・クライアントと通信するように構成されたプラグインであって、仮想マシン、仮想マシン・マネージャ、ゲスト・コンテキストを少なくとも１つフラッシュ・ベースのキャッシュ・デバイスに提供するように構成されるプラグインと、
前記仮想マシンが専用記憶デバイスと通信しているかのように、フラッシュ・ベースのキャッシュ・デバイスの前記グループとの通信を可能にする、各仮想マシンにとって利用可能な少なくとも１つのドライバと
を備えるキャッシュ・リソース管理システム。
【請求項９】
前記少なくとも１つドライバが、前記仮想マシン上で実行中の前記オペレーティング・システムに従って構成され、前記キャッシュ・リソース・マネージャによって定義される範囲マップに応答する請求項８に記載のシステム。
【請求項１０】
各仮想マシンが、前記範囲マップに応答する範囲に対するＩ／Ｏ操作を指示するだけである請求項９に記載のシステム。
【請求項１１】
前記キャッシュ・リソース・マネージャが、前記ホスト・コンピューティング・システム上で動作する前記仮想マシン数の変化に応答して、前記範囲マップを動的に修正する請求項９に記載のシステム。
【請求項１２】
前記プラグインが、マン・マシン・インターフェースに情報を提供するようにさらに構成される請求項８に記載のシステム。
【請求項１３】
前記プラグインが、前記キャッシュ・リソース・マネージャに代わって前記仮想マシンと通信するようにさらに構成される請求項８に記載のシステム。
【請求項１４】
各ドライバが、フラッシュ・ベースのキャッシュ・デバイスにマッピングされた範囲を有する前記グループからの前記フラッシュ・ベースのキャッシュ・デバイスに対するヒットまたはキャッシュ・フィルＩ／Ｏを発行し、前記Ｉ／Ｏが、特定の仮想マシンにマッピングされた前記論理ドライブに関連する前記キャッシュ・リソース・アロケータによって受信され、前記キャッシュ・リソース・アロケータが前記Ｉ／Ｏのレンジを検証し、前記Ｉ／Ｏを前記物理デバイスにリダイレクトする請求項８に記載のシステム。
【請求項１５】
コンピュータ実行可能な非一時的な形式で命令を格納したコンピュータ可読媒体であって、前記命令が、ホスト・コンピュータの処理システムで実行されるとき、前記処理システムに、
前記ホスト・コンピュータに結合されたキャッシュ・デバイスを要求するようにキャッシュ・リソース・アロケータに指示し、
キャッシュ・リソース・マネージャ・アプリケーションに、
前記キャッシュ・リソース・アロケータと通信して、利用可能なキャッシュ・デバイスを求め、
ホスト・コンピュータをスキャンして、前記ホスト・コンピュータによってサポートされる仮想マシン数を求めるように指示し、前記仮想マシン数および前記利用可能なキャッシュ・デバイスが識別されると、前記キャッシュ・リソース・マネージャが、前記キャッシュ・リソース・アロケータに、
利用可能なキャッシュ容量を等しいサイズの範囲に分割し、キャッシュ割振りポリシーに従って論理ドライブおよび範囲マップを作成するように指示し、
前記キャッシュ・リソース・マネージャに、
各論理ドライブをそれぞれの仮想マシンにマッピングし、
範囲マップを各論理ドライブに関連付けるようにさらに指示し、
前記仮想マシンに、キャッシュ・グループにキャッシュ・デバイスを追加するように指示するコンピュータ可読媒体。
【請求項１６】
前記プロセッサが、キャッシュされたデバイスのうちの１つを介してＩ／Ｏ操作を処理するように前記仮想マシンに命令するようにさらに指示される請求項１５に記載のコンピュータ可読媒体。
【請求項１７】
前記プロセッサが、前記ホスト・コンピュータによってアクティブにサポートされる前記仮想マシン数を監視するように仮想マシン・マネージャに命令するようにさらに指示される請求項１５に記載のコンピュータ可読媒体。
【請求項１８】
前記仮想マシン・マネージャが、追加の仮想マシンをサポートする要求を検出したとき、前記キャッシュ・リソース・アロケータが、ポリシーを使用して、前記新しい仮想マシンに割振られるキャッシュの量を求め、前記リソース・マネージャが、前記ホスト・コンピュータ上で現在実行中の前記仮想マシンから要求されるキャッシュの量を求め、前記キャッシュの量を解放するように前記ホスト・コンピュータ上で現在実行中の前記仮想マシンに指示し、前記新しい仮想マシンに前記キャッシュを割振り、前記範囲マップを更新し、新しい論理ドライブを作成するように前記リソース・アロケータに命令し、前記キャッシュ・デバイスで前記新しい仮想マシンを構成する請求項１７に記載のコンピュータ可読媒体。
【請求項１９】
前記仮想マシン・マネージャが、仮想マシンに対するサポートを使用不能にする要求を検出したとき、前記キャッシュ・リソース・アロケータが、前記ホスト・コンピュータ上で実行中の残りの仮想マシンの間で再分配するのに利用可能なキャッシュ・ストレージの量に関して前記キャッシュ・リソース・マネージャに通知し、前記リソース・マネージャが、ポリシーに従って、利用可能なキャッシュを前記残りの仮想マシンのそれぞれに割り振り、前記範囲マップを更新し、前記論理ドライブを除去するように前記リソース・アロケータに命令し、前記利用可能なキャッシュ・ストレージのそれぞれの部分で前記残りの仮想マシンを再構成する請求項１７に記載のコンピュータ可読媒体。
【請求項２０】
前記ポリシーが、等しいキャッシュ分配、最小保証キャッシュ容量、およびそれぞれの仮想マシンの現在の作業負荷のうちの１つまたは複数に基づく請求項１８に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にデータ記憶システムに関し、より詳細には、フラッシュ・メモリ・ベースのデータ・キャッシュを利用するデータ記憶システムに関する。
【背景技術】
【０００２】
マルチコア・プロセッサおよび入出力（Ｉ／Ｏ）相互接続によって提供される技術進歩と共に、アプリケーションを実行する今日のサーバの能力は急激なペースで成長している。しかし、サーバをサポートする、ハードディスク・ドライブなどの従来のデータ記憶デバイスのＩ／Ｏ速度は、Ｉ／Ｏ相互接続およびマルチコア・プロセッサと同じ速度では向上していない。したがって、従来のデータ記憶デバイスに対するＩ／Ｏ操作は、アプリケーション性能を制限しているボトルネックとなっている。言い換えれば、サーバ上で実行中のアプリケーションは、利用可能なコンピューティング速度およびデータ転送能力を完全には使用することができない。
【０００３】
いくつかの従来型コンピューティング・システムは、より低速なデータ記憶デバイス（例えば、磁気ディスク記憶媒体、光ディスク記憶媒体、またはネットワークを介してアクセス可能な１つまたは複数のデータ記憶デバイス）に対するブロックまたはファイル・レベル・ストレージ代替として不揮発性メモリ・デバイスを利用して、コンピューティング・システムおよび／またはコンピューティング・システムによって実行されるアプリケーションの性能を改善する。この点で、より低速な記憶デバイスから、またはそれに対してよりも、いくつかの不揮発性メモリ・デバイス（以下では簡単のために「キャッシュ・デバイス」と呼ぶ）に対して著しく高速に入出力（Ｉ／Ｏ）操作を実施することができるので、キャッシュ・デバイスの使用により、Ｉ／Ｏ操作の速度を著しく改善するための機会が得られる。
【０００４】
ずっと優れたＩ／Ｏデータ転送速度性能を提供することによってＩ／Ｏボトルネックに対処しようと試みて、ボード固体ストレージに基づくエンタープライズ・クラス固体ディスク（ＳＳＤ）およびｐｅｒｉｐｈｅｒａｌ  ｃｏｍｐｏｎｅｎｔ  ｉｎｔｅｒｃｏｎｎｅｃｔ  ｅｘｐｒｅｓｓ（ＰＣＩｅ）が配置された。しかし、ＳＳＤは比較的コストが高く、性能の改善により、すべての長期記憶についてＳＳＤを配置する投資が常に正当化されるわけではない。したがって、ＳＳＤは、頻繁に使用されるデータを格納するためのキャッシュとしてＳＳＤを使用することによってサーバの性能を高めるために配置される。
【０００５】
仮想化ソリューションの最近の進展は、データ・センタが複数のエミュレートされるマシンにわたってハードウェア・リソースを統合および共有することを可能にする。すなわち、単一のサーバは、クライアント・ユーザにとって専用サーバ・プラットフォームに見えるものの中で共有リソースを提供することができる。こうしたネットワーク対応仮想化ソリューションの人気により、Ｉ／Ｏ性能に対してさらにひずみが導入された。一日の特定の時間にいくつかのアプリケーションが使用中となり、より多くのＩ／Ｏ要求を受信することを予測することは容易である。しかし、多くのクライアントが特定のハードウェア・プラットフォームにアクセスすると、複数のクライアントＩ／Ｏ要求が特定の瞬間にサーバに到達したとき、アプリケーション性能ヒットを予測することが不可能となることがある。仮想化環境内のサーバ側キャッシングは、頻繁にアクセスされる「ホット」データを長期記憶デバイスからサーバに結合されたＳＳＤに移動することにより、アプリケーション性能を著しく促進することができる。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
仮想化環境内でサーバ側キャッシングを実装する際の課題は、単一のＳＳＤ／ＰＣＩｅベースのキャッシュ・デバイスで利用可能なキャッシュ・ストアを複数のクライアント・マシンにわたってどのように共有するかである。ある記憶システムから別の記憶システムに仮想マシンのファイル・システムを移動することによって新しいハードウェア・プラットフォームに仮想マシンを移行することを可能にする仮想化機能（例えば、ｖＭｏｔｉｏｎ）、およびｘ８６プロセッサ命令セットに対する６４ビット拡張をサポートするマシン上のプラットフォーム仮想化を可能にするサーバ仮想化は、物理マシン内に、または物理マシン外に移行中の様々な仮想サーバ・マシンに対処するためにサーバ側キャッシングが動的である必要があることを伴う。
【課題を解決するための手段】
【０００７】
仮想マシンの変化する需要に対する応答性の改善のためにキャッシュ・ストアを動的に管理するシステムおよび方法の実施形態が、単一のキャッシュ・デバイスまたはキャッシュ・デバイスのグループを複数の論理デバイスとして準備し、それを仮想マシンモニタに公開する。コア・キャッシング・アルゴリズムがゲスト仮想マシンで実行される。新しい仮想マシンが仮想マシンモニタの管理下で追加されるとき、既存の仮想マシンは、それぞれの既存のマシンで使用するために割り振られたキャッシュ・ストアの一部を解放するように促される。解放されたキャッシュが新しいマシンに割り振られる。同様に、仮想マシンがシャットダウンし、または新しいホスト・システムに移行される場合、仮想マシンに割り振られたキャッシュ容量が、仮想マシンモニタによって管理されている残りの仮想マシンの間で再分配される。
【０００８】
例示的実施形態では、１つまたは複数のフラッシュ・ベースのデバイスのグループ、および１組の仮想マシンを管理するホスト・コンピュータ・システムによってサポートされるキャッシュ・ストアを動的に管理するのに適したキャッシュ・リソース管理システムが開示される。システムは、キャッシュ・リソース・マネージャ、仮想マシン・マネージャ、プラグイン、およびプラグインを含む。キャッシュ・リソース・マネージャは、ホスト・コンピュータ・システム上で実行中のアプリケーションである。キャッシュ・リソース・マネージャは、ホスト・コンピューティング・システムによってサポートされる仮想マシン数に従って、利用可能なキャッシュ記憶容量（例えば、範囲）の識別された部分の倍数を分配する１つまたは複数のポリシーで構成される。仮想マシン・マネージャは、ホスト・コンピュータ・システム上で実行中のＯ／Ｓのカーネル内に統合される。仮想マシン・マネージャは、キャッシュ・リソース・アロケータおよびフラッシュ・ベースのキャッシュ・デバイス・ドライバと共に構成される。キャッシュ・リソース・アロケータは、フラッシュ・ベースのキャッシュ・デバイスのグループを要求し、各仮想マシンに論理ドライブを割り振り、フラッシュ・ベースのデバイスのグループによって提供される利用可能なキャッシュ記憶容量の一部を識別する。プラグインは仮想インフラストラクチャ・クライアントと通信し、仮想マシン、仮想マシン・マネージャ、およびゲスト仮想マシンの観点からのコンテキストを少なくとも１つのフラッシュ・ベースのキャッシュ・デバイスに提供する。各仮想マシンにとって利用可能なドライバは、仮想マシンが専用記憶デバイスと通信しているかのように、フラッシュ・ベースのキャッシュ・デバイスのグループとの通信を可能にする。
【０００９】
別の例示的実施形態では、１つまたは複数のフラッシュ・ベースのデバイスのグループ、および１組の仮想マシンを管理するホスト・コンピュータ・システムによってサポートされるキャッシュ・ストアを管理する方法が開示される。方法は、仮想マシン・マネージャにキャッシュ・リソース・マネージャ・アプリケーションを提供するステップであって、キャッシュ・リソース・マネージャが、ホスト・コンピューティング・システムによってサポートされる仮想マシン数に従って、利用可能なキャッシュ記憶容量の識別された部分の倍数を分配する１つまたは複数のポリシーを使用するステップと、仮想マシン・マネージャにキャッシュ・リソース・アロケータおよびフラッシュ・ベースのキャッシュ・デバイス・ドライバを提供するステップであって、キャッシュ・リソース・アロケータが、フラッシュ・ベースのキャッシュ・デバイスのグループを要求し、各仮想マシンに論理ドライブを割り振り、フラッシュ・ベースのデバイスのグループによって提供される利用可能なキャッシュ記憶容量の一部を識別するステップと、仮想インフラストラクチャ・クライアントにプラグインを提供するステップであって、プラグインが、仮想マシン、仮想マシン・マネージャ、およびゲスト・コンテキストを少なくとも１つのフラッシュ・ベースのキャッシュ・デバイスに提供するステップと、各仮想マシンにドライバを公開して、仮想マシンが専用記憶デバイスと通信しているかのように、仮想マシンがフラッシュ・ベースのキャッシュ・デバイスのグループと通信することを可能にするステップとを含む。
【００１０】
別の例示的実施形態では、ホスト・コンピュータの処理システム上で実行されるとき、以下のタスクを調整するように処理システムに指示する実行可能命令を非一時的形式で格納したコンピュータ可読媒体。キャッシュ・リソース・アロケータ・モジュールが、ホスト・コンピュータに結合されたキャッシュ・デバイスを要求するように指示される。キャッシュ・リソース・マネージャが開始され、キャッシュ・リソース・アロケータと通信して、利用可能なキャッシュ・デバイスを求め、ホスト・コンピュータをスキャンして、ホスト・コンピュータによってサポートされる仮想マシン数を求める。仮想マシン数および利用可能なキャッシュ・デバイスを識別すると、キャッシュ・リソース・マネージャは、利用可能なキャッシュ容量を等しいサイズの範囲に分割し、キャッシュ割振りポリシーに従って論理ドライブおよび範囲マップを作成するようにキャッシュ・リソース・アロケータに指示する。処理システムは、各論理ドライブをそれぞれの仮想マシンにマッピングし、範囲マップを各論理ドライブに関連付けるようにキャッシュ・リソース・マネージャにさらに指示する。その後で、処理システムは、キャッシュ・グループにキャッシュ・デバイスを追加するように仮想マシンに指示する。
【図面の簡単な説明】
【００１１】
【図１】本発明の例示的実施形態によるホスト・コンピュータ環境を示す略図である。
【図２】図１のキャッシュ・グループ内のキャッシュ・データ・レイアウトを示すブロック図である。
【図３】図１の動的キャッシュ共有システムのアーキテクチャの略図である。
【図４】１組の仮想マシンにわたる単一のキャッシュ・デバイスの割振りの略図である。
【図５】図３の動的キャッシュ共有システムを準備する方法を示す流れ図である。
【図６】新しい仮想マシンを導入した後の範囲マップの略図である。
【図７】図３の動的キャッシュ共有システムを使用してＩ／Ｏ操作を処理する方法を示す流れ図である。
【図８Ａ】キャッシュ・ストアを動的に管理する方法を示す流れ図である。
【図８Ｂ】キャッシュ・ストアを動的に管理する方法を示す流れ図である。
【発明を実施するための形態】
【００１２】
ゲスト仮想マシン内のＯ／Ｓカーネル、ドライバ、およびアプリケーション・レベルで実装された動的キャッシュ共有システムは、仮想マシン・マネージャの制御から仮想マシンが追加または削除されるとき、ホスト・コンピュータ上の仮想マシンの変化するストレージ需要に対する応答性の改善のために仮想マシンにキャッシュ・ストアを動的に割り振る。単一のキャッシュ・デバイスまたはキャッシュ・デバイスのグループが、複数の論理デバイスとして準備され、リソース・アロケータに公開される。コア・キャッシング・アルゴリズムがゲスト仮想マシン内で実行される。コア・キャッシング・アルゴリズムは、定義済みのインターフェースと共にＯ／Ｓアグノスティック・ポータブル・ライブラリとして動作する。Ｏ／Ｓスタック内のフィルタ・ドライバはＩ／Ｏ要求を傍受し、キャッシュ管理ライブラリを通じてＩ／Ｏ要求をルーティングし、キャッシング機能を実装する。キャッシュ管理ライブラリは、Ｏ／Ｓ特有のアクションおよびＩ／Ｏルーティングのためにフィルタ・ドライバと通信する。新しい仮想マシンが仮想マシン・マネージャの管理下で追加され、既存の仮想マシンは、それぞれの既存のマシンで使用するために割り振られたキャッシュ・ストアの一部を解放するように促される。解放されたキャッシュが新しいマシンに割り振られる。同様に、仮想マシンがシャットダウンし、または新しいホスト・システムに移行される場合、仮想マシンに割り振られたキャッシュ容量が、仮想マシンモニタによって管理されている残りの仮想マシンの間で再分配される。
【００１３】
図１に示されるように、本発明によるホスト・コンピュータ環境１００の例示的実施形態では、ＦＢキャッシュ・カード１３２やＦＢキャッシュ・カード１３４などのフラッシュ・ベースのキャッシュ・デバイスのキャッシュ・グループ１３０が、それぞれのｐｅｒｉｐｈｅｒａｌ  ｃｏｍｐｏｎｅｎｔ  ｉｎｔｅｒｃｏｎｎｅｃｔ  ｅｘｐｒｅｓｓ（ＰＣＩｅ）バスを介してホスト・システム１１０に結合される。ＦＢキャッシュ・カード１３２とＦＢキャッシュ・カード１３４は、管理される別々に識別されるキャッシュ・デバイスであり、それぞれのキャッシュ・ストアがキャッシュ・グループ１３０として共有される。
【００１４】
さらに、ホスト・システム１１０が、周辺相互接続カード１４０を介して１組のローカル記憶デバイス１４５に結合され、周辺相互接続カード１５０を介して、対応する１組のリモート・データ記憶デバイス１５５に結合される。ローカル記憶デバイス１４５およびリモート・データ記憶デバイス１５５は、複合データ・ストアとして仮想環境１００に公開されるそれぞれの組の物理ディスク・ドライブと共に実装される。周辺相互接続カード１４０と周辺相互接続カード１５０の一方または両方は、物理ディスク・ドライブを単一の論理ユニットとして組み合わせる、独立したディスクの冗長アレイ管理技法を使用して、それぞれの組の物理ディスク・ドライブによって提供されるストレージを管理することができる。対応するデータ・ストアによってサポートされるアプリケーションによって必要とされる信頼性および性能に応じて、一般に「ＲＡＩＤレベル」と呼ばれるいくつかの方式のうちの１つで、データが物理ドライブにわたって分散される。
【００１５】
図１に示されるように、ホスト・システム１１０は、バスを介して互いに結合されたプロセッサ１１２およびメモリ１２０を有するサーバ・コンピュータなどのコンピュータである。動作の際に、プロセッサ１１２は、アプリケーション層１２８、ファイル・システム１２６、および動的キャッシュ共有システム３００内の命令を実行し、ホスト・システム１１０上の仮想マシンのホストを可能にする。プロセッサ１１２は、キャッシュ・デバイス・ドライバ１２１を介してキャッシュ・グループ１３０と通信する。プロセッサ１１２は、ｓｅｒｉａｌ−ａｔｔａｃｈｅｄ  ｓｍａｌｌ  ｃｏｍｐｕｔｅｒ  ｓｙｓｔｅｍ  ｉｎｔｅｒｆａｃｅ／ａｄｖａｎｃｅｄ  ｈｏｓｔ  ｃｏｍｐｕｔｅｒ  ｉｎｔｅｒｆａｃｅ（ＳＡＳ／ＡＨＣＩ）ドライバ１２２および周辺相互接続カード１４０を介してローカル・ボリューム１４５と通信する。プロセッサ１１２はさらに、ストレージ・エリア・ネットワーク／ネットワーク・インターフェース・コネクタ（ＳＡＮ／ＮＩＣ）ドライバ１２３および周辺相互接続カード１５０を介してリモート・ボリューム１５５と通信する。
【００１６】
本発明によるホスト・コンピュータ環境１００は非常にスケーラブルであり、単一のプロセッサ１１２または単一のメモリ１２０に限定されない。代替実施形態（図示せず）では、ホスト・システム１１０は、プロセッサ１１２と同様の、またはプロセッサ１１２とは異なる複数のプロセッサを含むことができる。さらに、ホスト・システム１１０は、メモリ１２０と同様の、またはメモリ１２０と異なる追加のメモリ要素を含むことができる。同様に、複数の例のキャッシュ・デバイス・ドライバ１２１、ＳＡＳ／ＡＨＣＩドライバ１２２、およびＳＡＮ／ＮＩＣドライバ１２３を生成することにより、追加の記憶デバイスをホスト・システム１１０に統合することができる。
【００１７】
動作の際に、動的キャッシュ共有システム３００は、１つまたは複数のフラッシュ・ベースのデバイスのグループ（例えば、キャッシュ・グループ１３０）と、１組の仮想マシンを管理するホスト・システム１１０とによってサポートされるキャッシュ・ストア２００を動的に管理する。動的キャッシュ共有システム３００は、アプリケーション層１２８およびファイル・システム１２６の下の共有デバイス・ドライバ層で実装される。動的キャッシュ共有システム３００は、フラッシュ・ベースのキャッシュ・デバイス（例えば、ＦＢキャッシュ・カード１３２およびＦＢキャッシュ・カード１３４）および従来型データ記憶システム（例えば、ｉｎｔｅｒｎｅｔ  ｓｍａｌｌ  ｃｏｍｐｕｔｅｒ  ｓｙｓｔｅｍ  ｉｎｔｅｒｆａｃｅ（ｉＳＣＳＩ）、ｆｉｂｒｅ  ｃｈａｎｎｅｌ  ｏｖｅｒ  Ｅｔｈｅｒｎｅｔ（ＦＣｏＥ）、ｆｉｂｒｅ  ｃｈａｎｎｅｌ（ＦＣ）、ＳＡＳ、ｓｅｒｉａｌ  ａｄｖａｎｃｅｄ  ｔｅｃｈｎｏｌｏｇｙ  ａｔｔａｃｈｍｅｎｔ  （ＳＡＴＡ）などの様々なインターフェースと共に実装されたデータ記憶システム）と統合される汎用キャッシング層である。動的キャッシュ共有システム３００はブロック層で働き、ファイル・システム１２６およびアプリケーション層１２８内のアプリケーションに対して透過的である。動的キャッシュ共有システム３００は、キャッシュ・グループ１３０に統合されるＦＢキャッシュ・カード１３２およびＦＢキャッシュ・カード１３４内に常駐するストレージを識別および消費する。さらに、動的キャッシュ共有システム３００は、ローカル・ボリューム１４５やリモート・ボリューム１５５などの従来型データ記憶システムにわたるキャッシング機能を提供する。コア・キャッシング機能が、物理ディスクおよびキャッシュ・リソース管理アプリケーションに対する明確なインターフェースを使用して、Ｏ／Ｓアグノスティック・ポータブルライブラリとして実装される。
【００１８】
キャッシュ・メタデータ管理（ハッシュ・テーブル、ＬＲＵ、フリー・リスト、キャッシュ割振りユニット管理データ構造など）は、非常に大型のキャッシュ・ストアの設計にとって重要である。固体ディスク（ＳＳＤ）キャッシュは、テラバイトにスケール変更することができ、ホスト・システム１１０上のあらゆるＩ／Ｏは、ハッシュ・テーブルおよびキャッシュ割振りユニット・データ構造をルックアップしてキャッシュ・ヒット／ミスを判断することに関係するので、性能に対してキャッシュ・メタデータ管理を最適化すべきこと、および迅速なルックアップのためにダブル・データ・レート（ＤＤＲ）ランダム・アクセス・メモリ（ＲＡＭ）内に保持されるようにメタデータ・フットプリントを十分に小さくすべきことが絶対必要である。
【００１９】
図２は、図１のキャッシュ・グループ１３０内のキャッシュ・ストア２００を示すブロック図である。キャッシュ・ストア２００は、少なくとも２つの別々の記憶域に区分または分割される。第１の部分またはパーティションはキャッシュ・メタデータ２１０を含む。第２の部分またはデータ記憶部分２２０は、１組のキャッシュ・ウィンドウ２２２を含む。図２にさらに示されるように、キャッシュ・メタデータ２１０は、各キャッシュ・ウィンドウ２２２について対応するエントリ２１５を含む。キャッシュ・ストア３００の著しい量の記憶容量が、図ではキャッシュ・ウィンドウとして識別される領域に割り振られる。各キャッシュ・ウィンドウはさらに、所望のサイズのラインのキャッシュ・ブロック２２５に細分される。
【００２０】
キャッシュ・ストア２００に関する割振りユニットおよびキャッシュ・ブロック・サイズは、メタデータ・メモリ要件を低減するように著しく大きい。例示的実施形態では、キャッシュ・データ記憶部分２００全体が、それぞれ１ＭＢのキャッシュ・ウィンドウと呼ばれる複数のチャンクの割振りユニットに分割される。キャッシュ・ウィンドウ・サイズはチューナブル・パラメータであり、ホスト・システム構成およびＩ／Ｏ作業負荷に基づいて調節することができる。キャッシュ・ウィンドウ２２２は、キャッシュ管理のための割振り／割振り解除ユニットである。各キャッシュ・ウィンドウ２２２は、それぞれ６４ＫＢの複数のキャッシュ・ブロック２２５からなる。キャッシュ・ブロック・サイズはチューナブル・パラメータであり、ホスト・システム構成およびＩ／Ｏ作業負荷に基づいて調節することができる。キャッシュ・ストア２００全体を使用して、複数のブロック・デバイスをキャッシュすることができ、各キャッシュ・ウィンドウ２２２は、単一のブロック・デバイス上の空間の連続する領域を表す。
【００２１】
ハッシュ・テーブル、フリー・キャッシュ・リスト、最長時間未使用（ＬＲＵ）リスト、およびキャッシュ置換アルゴリズムはキャッシュ・ウィンドウ・レベルで動作する。これにより、各キャッシュ・ウィンドウ２２２が著しく大きな割振りユニットであるので、キャッシュ・メタデータ２１０を表すのに必要なメモリ量が著しく低減される。キャッシュ・メタデータ２１０は、迅速なルックアップのための読取りキャッシングのためにメモリ内に保持される。キャッシュ置換は、要求時、しきい値、経過時間、および恐らくは追加の要素に基づき、複数の優先順位ベースのＬＲＵキューを使用する。優先順位ベースのＬＲＵキューは、アクティブなキャッシュ・ラインの数、およびキャッシュ・ウィンドウ２２２がアクセスされる回数を使用して、キャッシュ・ウィンドウ２２２の優先順位を求める。満杯であり、最もアクセスされるキャッシュ・ウィンドウ２２２に最高の優先順位が与えられ、最高の優先順位ＬＲＵキューの末端に配置される。キャッシュ・ストア２００全体が満杯になると、最低の優先順位を有するキャッシュ・ウィンドウ２２２がまず置換され、それによって最も頻繁に要求されるデータが保持される。インテリジェント・ヒート・マップ生成アルゴリズムが、繰り返しアクセスされる領域をキャッシュする。頻繁にはアクセスされないローカル・ボリューム１４５またはリモート・ボリューム１５５内のデータ領域は、キャッシュ・ストア２００内に配置されない。
【００２２】
図３は、図１の動的キャッシュ共有システム３００のアーキテクチャの略図である。動的キャッシュ共有システム３００は、ホスト・システム・ハードウェア３１０と直接的に通信する仮想マシン・マネージャ３２０と、ホスト・システム１１０上で実行中の仮想環境のリアル・タイム監視を可能にする様々な機能をサポートするためにアプリケーション層１２８内で動作するキャッシュ・リソース・マネージャ３３０とを含む。仮想マシン・マネージャ３２０は、一般にカーネルと呼ばれるＯ／Ｓ構成要素である。仮想マシン・マネージャ３２０は、仮想サーバから監視情報を受信し、ホスト・システム・ハードウェア３１０と、ローカル・ボリューム１４５およびリモート・ボリューム１５５によって提供されるデータ・ストアとによってサポートされる数十または数百の仮想マシンに、キャッシュ・グループ１３０内の１つまたは複数のフラッシュ・ベースのキャッシュ・デバイスを公開する機構を中央管理する。
【００２３】
仮想マシン・マネージャ３２０は、仮想マシン・マネージャ３２０に対するアプリケーション層１２８インターフェースをそれぞれ有する複数のＯ／Ｓをサポートすることができる。図示する実施形態では、Ｏ／Ｓ  Ａ（例えば、Ｌｉｎｕｘ、ＵＮＩＸ）が、ユーザ・レベルの管理ＡＰＩ３５４と、ＳＣＳＩ  ＨＢＡエミュレータを介して仮想マシン・マネージャ３２０と通信するカーネル・レベルのフィルタ・ドライバおよびライブラリ３５２とを含むインターフェース３５０によってサポートされる。同様に、Ｏ／Ｓ  Ｂ（例えば、Ｗｉｎｄｏｗｓ  Ｓｅｒｖｅｒ  ２００８）が、管理ＡＰＩ３６４と、フィルタ・ドライバおよびライブラリ３６２とを含むインターフェース３６０によってサポートされる。
【００２４】
仮想マシン・マネージャ３２０は、キャッシュ・リソース・アロケータ３２２、キャッシュ・デバイス・ドライバ３２４、およびＣＩＣＯＭプロバイダ３２６と共に構成され、キャッシュ・ストア２００を管理および制御し、キャッシュ・リソース・マネージャ３３０と通信する。これらおよびその他の構成要素は、ホスト・システム１１０上のゲスト仮想マシン内で実行され、Ｉ／Ｏフィルタリング、ホット・データ分類、およびキャッシング機能を提供する。仮想マシン・マネージャ３２０は、ＳＣＳＩ  ＨＢＡエミュレータを使用して、仮想マシンに対するキャッシュ・デバイスをエミュレートする。デバイスは、２つの方式で仮想マシンに公開される。第１の方式では、データ記憶デバイスが、ロー・ディスク・アクセス・モジュール３２８によってロー・デバイスとして公開される。ロー・ディスク・アクセス・モジュール３２８デバイスは、ＳＣＳＩブロック・デバイスを仮想マシンに直接的に公開する。その他の方式では、データ・ストアが、仮想マシン・ファイル・システム（ＶＭＦＳ）を介して、仮想マシン・マネージャ３２０に統合されたＶＭＦＳモジュールを介して仮想マシンに公開される。ＶＭＦＳモジュールは、仮想デバイス論理ブロック・アドレスを物理ディスクまたはキャッシュ・ストア２００に関連付けるマップを格納および管理することができる。ＶＭＦＳはまた、シン・プロビジョンド論理ストアを作成して、データ・スナップショット、バックアップ、および仮想ディスクとの間の他の操作をサポートする。ＶＭＦＳプロビジョンド・ディスクがその上に常駐する物理デバイスは、データ・ストアと呼ばれる。これらの仮想ディスクを、管理プラグイン３４０を備える仮想インフラストラクチャ・クライアント（ＶＩＣ）を使用して、仮想マシンに対するダウン時間なしに、動的キャッシュ共有システム３００内の異なるデータ・ストア（物理ディスク）に動的に移動することができる。
【００２５】
キャッシュ・リソース・アロケータ３２２は、動的キャッシュ共有システム３００内のすべてのキャッシュ・デバイスを識別および要求する任を担い、動的キャッシュ共有システム３００の管理構成要素と通信するように構成されるシステム上の各仮想マシンについて論理ドライブを割り振る。キャッシュ・リソース・アロケータ３２２によって作成される論理ドライブは、ロー・デバイスとしてゲスト仮想マシンにマッピングされる。キャッシュ・リソース・アロケータ３２２は、キャッシュ容量全体を、等しいサイズの複数の範囲またはブロックに分割する。範囲サイズは、キャッシュ・ウィンドウ・サイズと等しくなるように調整される。キャッシュ記憶容量は、範囲境界で異なる仮想マシンに割り振られる。
【００２６】
キャッシュ・リソース・アロケータ３２２は、各仮想マシンについて論理ドライブを作成および破壊するための明確な１組のＡＰＩを提供する。キャッシュ・リソース・アロケータによって作成される各論理ドライブは、動的キャッシュ共有システム３００によってサポートされる最大キャッシュ容量の容量であるが、キャッシュ・デバイス全体の少数の範囲だけが各仮想マシンにマッピングされる。マッピング情報は、キャッシュ・リソース・マネージャ３３０によって提供される。マッピング情報は、リソース・マネージャ３３０で定義されるポリシーと、経時的な仮想マシンの追加および除去とに基づいて、動的キャッシュ共有システム３００の寿命中に動的に変化することができる。
【００２７】
キャッシュ・リソース・アロケータ３２２は、各論理ドライブに対応するＩ／Ｏが現在のアクティブな範囲マップに対して検証されることを確認することにより、キャッシュ・リソース・マネージャによって定義される範囲マップを実施する。キャッシュ・リソース・アロケータ３２２は、範囲マップに基づいて、キャッシュ・デバイス・ドライバ３２４または他のドライバ（図示せず）を介して物理デバイスにＩ／Ｏ要求をリダイレクトする。
【００２８】
キャッシュ・リソース・マネージャ３３０は、ホスト・システム１１０上でゲスト仮想マシンとして動作する比較的小型で効率的なソフトウェア・モジュールである。キャッシュ・リソース・マネージャ３２４は、仮想マシン・マネージャ３２０の制御下で、すべての仮想マシンにわたってキャッシュ・デバイス利用および分散を監視および管理する。初期化中に、キャッシュ・リソース・マネージャ３２４はすべての仮想マシンに接続し、キャッシュ容量を割り振り、キャッシュ利用を監視する。キャッシュ・リソース・マネージャ３２４はさらに、仮想サーバに登録し、仮想マシン・マネージャ３２０の仮想化サービスＡＰＩを介して、仮想マシン追加、除去、移行などのイベントを待機し、現在実行中の仮想マシンにわたってキャッシュ記憶容量の再分配を調整する。
【００２９】
さらに、キャッシュ・リソース・マネージャ３２４は、制御された方式で仮想マシンにわたってキャッシュを分配する任を担うポリシー・エンジンを実行する。ポリシー・エンジンは、すべての仮想マシンにわたってキャッシュ容量を等しく共用するポリシーを含むことができ、いくつかの仮想マシンに対する最小キャッシュ容量を保証して、残りのキャッシュ容量を他の仮想マシンにわたって再分配し、すべての仮想マシンにわたって、各仮想マシンによって実施されるＩ／Ｏ活動に基づいて、ヒート・マップを維持し、現在の作業負荷に応じてキャッシュを再分配する。
【００３０】
新しい仮想マシンが物理マシンに追加または移行されるとき、キャッシュ・リソース・マネージャ３２４はこのイベントを検出し、以下のステップを実施することにより、利用可能な仮想マシンにわたってキャッシュを再分配しようと試みる。まず、キャッシュ・リソース・マネージャ３２４は、ゲスト仮想マシン内の管理ＡＰＩ３５４、３５６を介して、割り振られたキャッシュ容量を有する現在実行中のゲスト仮想マシンに、ある量のキャッシュを解放するように要求する。キャッシュ割振りの範囲サイズはキャッシュ・ウィンドウ・サイズに等しいので、ゲスト仮想マシンは、そのＬＲＵキューの先頭から最もホットでないデータを解放することができ、それによってキャッシュ割振りの削減による性能影響を低減する。ホスト・システム１１０上のすべての仮想マシンが、それに割り振られたある量のキャッシュを解放するので、解放されたキャッシュ範囲が、追加または移行された新しい仮想マシンに割り振られる。
【００３１】
プラグイン３４０が、仮想インフラストラクチャ・クライアント（ＶＩＣ）と通信して、仮想環境で動的キャッシュ共有システム・ソリューションを管理するための管理機能を提供するように構成される。プラグイン３４０は、データセンタ・クラスタ、ホスト、およびゲストによる管理アクションにコンテキストを提供する。システム管理者は、プラグイン３４０を使用して、動的キャッシュ共有システム・ソリューションを監視および管理することができる。プラグイン３４０は、管理ＡＰＩ３５４、３６４、およびキャッシュ・リソース・マネージャ３３０を使用して仮想マシンと対話し、上述の管理機能を提供する。
【００３２】
仮想マシンは、仮想マシンで実行中のＯ／Ｓに応じて、フィルタ・ドライバおよびライブラリ３５２、３６２を使用する。フィルタ・ドライバおよびライブラリ３５２、３６２は、キャッシュ・デバイスを範囲マップと共に構成することを可能にし、キャッシュ・デバイスがそれに割り振られた範囲のみを使用することを保証する。さらに、フィルタ・ドライバおよびライブラリ３５２、３６２は、新しい仮想マシンが追加され、仮想マシンがオフラインとなり、またはホスト・システム１１０の外部に移行された結果として、キャッシュ再分配中の仮想マシンからの範囲の追加および除去を可能にする。さらに、フィルタ・ドライバおよびライブラリ３５２、３６２は、仮想マシンに公開されるロー・デバイスがキャッシュ・デバイスとして構成されることを保証する。
【００３３】
図４は、等キャッシュ分配管理ポリシーを用いた１組の仮想マシンにわたる単一のキャッシュ・デバイスの割振りの略図である。図４に示す実施形態は、３つの仮想マシンがどのようにフラッシュ・ベースのキャッシュ・ストア２００のキャッシュ・ウィンドウ２２２を等しく共有するかを図示および説明する小規模構成である。
【００３４】
図示する実施形態では、フラッシュ・ベースのキャッシュ・ストア２００が３０個のキャッシュ・ウィンドウ（ブロック０〜２９によって表す）を含み、キャッシュ・ウィンドウ０〜９が仮想マシン１に関連付けられ、仮想マシン１に対して論理ディスク１として識別され、キャッシュ・ウィンドウ１０〜１９が仮想マシン２に関連付けられ、仮想マシン２に対して論理ディスク２として識別され、キャッシュ・ウィンドウ２０〜２９が仮想マシン３に関連付けられ、仮想マシン３に対して論理ディスク３として識別される。キャッシュ・リソース・アロケータ３２２と共に働くロー・ディスク・アクセス・モジュール３２８が、論理ドライブと、キャッシュ・ストア２００内の指定の連続するブロックのセットとの間の上述の関連付けまたはリンクを完了する。
【００３５】
図５は、図３の動的キャッシュ共有システムを準備する方法５００を示す流れ図である。方法５００はブロック５０２から始まり、キャッシュ・リソース・アロケータが、ホスト・システムに結合されたフラッシュ・ベースのキャッシュ・デバイスを識別および要求する。ブロック５０４で、仮想マシン・マネージャが、ホスト・システムによってサポートすべき仮想マシン数を求める。ブロック５０６で、ホスト・コンピュータで実行中の動的キャッシュ共有システムが、利用可能なキャッシュ容量を等しい範囲またはブロックに分割するようにキャッシュ・リソース・アロケータに命令する。ブロック５０８で、キャッシュ・リソース・アロケータがさらに、ホスト・システムによってサポートすべき各仮想マシンについて論理ドライブを作成するように命令される。ブロック５１０で、キャッシュ・リソース・マネージャは、キャッシュ割振りポリシーに従って範囲マップを作成するように命令される。ブロック５１２で、リソース・マネージャは、それぞれのロー・デバイスとしての論理ドライブを各仮想マシンにマッピングし、範囲マップを有するキャッシュ・グループにキャッシュ・デバイスを追加するように仮想マシンにさらに命令する。その後で、ブロック５１４で示されるように、使用頻度アルゴリズムに基づいてホスト・システムに対するＩ／Ｏ操作をキャッシュする。
【００３６】
図６は、新しい仮想マシンを導入した後の範囲マップの略図である。図６に示す実施形態は、割振りポリシーがフラッシュ・ベースのキャッシュ・ストア２００からキャッシュ・ウィンドウ２２２を等しく共有するとき、どのように第４の仮想マシンの追加を実施するかを図示および説明する小規模構成である。
【００３７】
図示する実施形態では、フラッシュ・ベースのキャッシュ・ストア２００が３０個のキャッシュ・ウィンドウ（ブロック０〜２９によって表す）を含み、キャッシュ・ウィンドウ３〜９が仮想マシン１に関連付けられ、仮想マシン１に対して論理ディスク１として識別され、キャッシュ・ウィンドウ１３〜１９が仮想マシン２に関連付けられ、仮想マシン２に対して論理ディスク２として識別され、キャッシュ・ウィンドウ２３〜２９が仮想マシン３に関連付けられ、仮想マシン３に対して論理ディスク３として識別される。符号が付けられたブロック０〜２、１０〜１２、および２０〜２２によって表される、解放されたキャッシュ・ウィンドウが、仮想マシン４に論理ディスク４として再割振りされる。再割振りの後、３０個の全キャッシュ・ウィンドウのうちの７個が仮想マシン１〜３に割り振られ、残りの９個のキャッシュ・ウィンドウが仮想マシン４に割り振られる。キャッシュ・リソース・アロケータ３２２と共に働くロー・ディスク・アクセス・モジュール３２８が、論理ドライブと、キャッシュ・ストア２００内の指定のブロックのセットとの間の上述の関連付けまたはリンクを完了する。
【００３８】
図７は、図３の動的キャッシュ共有システム３００を使用してＩ／Ｏ操作を処理する方法７００を示す流れ図である。示されるように、方法７００はブロック７０２から始まり、動的キャッシュ共有システム・ドライバが、キャッシュ・デバイス（複数可）にマッピングされた範囲に従って、キャッシュ・デバイスに対するヒットまたはキャッシュ・フィルＩ／Ｏ操作を発行する。ブロック７０４で、リソース・アロケータが、特定の仮想マシンにマッピングされる、公開される論理ドライブ識別子に関連するＩ／Ｏ操作を受信する。ブロック７０６で、リソース・アロケータは、Ｉ／Ｏ操作が範囲マップ内で指定の仮想マシンに属すると識別される範囲内にあることを検証する。ブロック７０８で、キャッシュ・リソース・マネージャは、適切なＳＣＳＩドライバを介して物理デバイスにＩ／Ｏをリダイレクトする。
【００３９】
図８Ａおよび８Ｂは、キャッシュ・ストアを動的に管理する方法８００を示す流れ図を含む。方法８００はブロック８０２から始まり、動的キャッシュ共有システムが、ホスト・システム上でサポートすべき仮想マシン数の変化について仮想化サービスＡＰＩを監視する。判定ブロック８０４で示されるように、仮想マシンがホスト・マシンによってサポートされている仮想マシンのセットに追加されているか、それともそれから除去されているかどうか判定を行う。判定ブロック８０４から出る、「はい」と符号を付けたフロー制御矢印によって示されるように、仮想マシンが追加されているとき、処理はブロック８０６に進み、キャッシュ・リソース・アロケータが、割振りポリシーに基づいて、新しい仮想マシンに割り振るべきキャッシュの量を求める。そうでない場合、結合子Ｂで示されるように、処理はブロック８１２に進む。ブロック８０８で、キャッシュ・リソース・マネージャは、それぞれの既存の仮想マシンと通信し、新しい仮想マシンに再割振りするために適切な量のキャッシュ・メモリ容量を解放する。さらに、範囲マップを更新し、キャッシュ・リソース・アロケータに通信する。ブロック８１０で、キャッシュ・リソース・アロケータは、新しい論理ドライブを作成するように命令され、最近解放された範囲またはキャッシュ・ウィンドウと新しい論理ドライブを関連付ける。さらに、キャッシュ・リソース・アロケータは、新しく生成した論理ドライブを仮想マシンに公開するように命令される。その後で、処理はブロック８０２の機能に進む。
【００４０】
仮想マシンがホスト・システムから切り離されて移行されているとき、処理はブロック８１２に進み、キャッシュ・リソース・アロケータは、ホスト・システムから離れる仮想マシンから解放された後に、残りの仮想マシンへの再割振りのために利用可能となるキャッシュ容量を求める。ブロック８１４で、リソース・マネージャは、割振りポリシーに従って、残りの仮想マシンに対して利用可能にすべき解放された記憶容量を求める。割振りポリシーがそのように命令するとき、各仮想マシンに再割振りされる記憶容量は必ずしも等しくないことがあることに留意されたい。ブロック８１６で、キャッシュ・リソース・アロケータは、古い仮想マシンに関連する論理ドライブを除去し、改訂後の範囲マップを更新し、残りの仮想マシンを、利用可能なキャッシュ容量のそれぞれの部分と共に再構成するように命令される。
【００４１】
図５、７、８Ａ、および８Ｂの流れ図は、記載の方法の基礎となる論理の例示を意図するものに過ぎない。様々な実施形態では、記載の方法を実施するための様々な方式のいずれかで動的キャッシュ処理システムまたはキャッシュ・コントローラを含むデータ処理システムをプログラムまたは構成できることを当業者は理解されよう。上述のステップまたは動作は、並列に、または互いに非同期に行うことを含む、任意の適切な順序またはシーケンスで行うことができる。いくつかの実施形態では、図５、７、８Ａ、および８Ｂに関する上述のステップまたは動作を他と組み合わせることができ、または省略することができる。図が見やすいように、図５、７、８Ａ、および８Ｂでは流れ図の形で示したが、基礎となる論理をモジュール化することができ、あるいは任意の適切な方式で構成することができる。上述の方法を実施するために、特定用途向け集積回路（ＡＳＩＣ）または類似のデバイスまたはデバイスの組合せの形態などで、適切なソフトウェアまたは適切な論理を当業者は直ちにプログラムまたは構成することができよう。さらに、ソフトウェア命令または類似の論理と、プロセッサ１１２による実行のために、そのようなソフトウェア命令または類似の論理が格納され、または組み込まれるローカル・メモリ１２０または他のメモリ要素との組合せは、「コンピュータ可読媒体」または「コンピュータ・プログラム製品」を含むことを理解されたい。その語は特許用語で使用されるからである。
【００４２】
本発明の原理および概念を説明するために１つまたは複数の例示的実施形態を参照しながら本発明を説明したことに留意されたい。本発明はこうした実施形態に限定されない。当業者は理解するであろうが、本明細書で与えた説明に照らして、本明細書に記載の実施形態に対して多くの変形形態を作成することができ、そのような変形形態は、特許請求の範囲で定義される本発明の範囲内にある。
【図１】
2014175009.tif 000003
【図２】
2014175009.tif 000004
【図３】
2014175009.tif 000005
【図４】
2014175009.tif 000006
【図５】
2014175009.tif 000007
【図６】
2014175009.tif 000008
【図７】
2014175009.tif 000009
【図８Ａ】
2014175009.tif 000010
【図８Ｂ】
2014175009.tif 000011