(57)【要約】      （修正有）【課題】複数の仮想マシン（ＶＭ）がその上でＶＭコンピューティング環境内で動作しているコンピューティング・デバイスのストレージ・コントローラ内でキャッシュ・メモリを管理するための方法および構造を提供する。【解決手段】ストレージ・コントローラが、ストレージ・コントローラに結合されたＶＭ管理システムから構成情報を受け取る。構成情報は、コンピューティング・デバイス上で現在動作しつつある各ＶＭに関する情報を含む。構成情報に基づいて、ストレージ・コントローラは、コンピューティング・デバイス上で現在動作しているさまざまなＶＭによる使用のためにストレージ・コントローラのキャッシュ・メモリのセグメント２０８、２１０、２１２を割り当て、割当解除する。構成情報は、現在動作しているＶＭの個数ならびに各ＶＭの現在の性能に基づいてセグメントを割り当て／割当解除するための性能メトリックしきい値構成情報を含む。【選択図】図２
2014021972.tif 000002
【特許請求の範囲】
【請求項１】
仮想マシン（ＶＭ）コンピューティング環境（１００）内で動作するコンピューティング・デバイス（１０４）と結合するように適合されたストレージ・コントローラ（１０６）であって、前記ＶＭコンピューティング環境は、前記コンピューティング・デバイス上の複数のＶＭ（１１０）の動作を提供し、前記ＶＭコンピューティング環境は、前記コンピューティング・デバイスに結合されたＶＭ管理システム（ＶＭＭＳ）（１０２）を含み、前記ストレージ・コントローラは、
キャッシュ・メモリが複数のセグメント（２０８、２１０、２１２）に論理的に副分割される、前記ＶＭのいずれからもアクセス可能なキャッシュ・メモリ（２２０）と、
前記キャッシュ・メモリに結合され、前記ＶＭＭＳに通信的に結合されたキャッシュ制御論理（２０４）とを含み、前記キャッシュ制御論理は、各部分が構成情報に基づく個数のセグメントを含む、前記ＶＭＭＳから受け取られた構成情報に基づいて前記コンピューティング・デバイス上で現在動作している各仮想マシンによる使用のために前記複数のセグメントの部分（２０６）を制御可能に割り当て、割当解除するように適合される、ストレージ・コントローラ。
【請求項２】
各ＶＭに関する前記構成情報は、さらに、前記各ＶＭによって要求される前記部分の最小サイズを含み
前記キャッシュ・コントローラ論理は、さらに、前記各ＶＭに割り当てられた部分のサイズが少なくとも前記各ＶＭの前記最小サイズと同等の大きさであることを保証するように適合される、請求項１に記載のストレージ・コントローラ。
【請求項３】
前記構成情報は、前記各ＶＭの性能メトリックしきい値構成情報を含み、前記性能メトリックしきい値構成情報は、
前記各ＶＭのＩ／Ｏ要求処理レートと、
前記各ＶＭのユーザ応答時間と、
前記各ＶＭによって処理される大きいＩ／Ｏ要求に対する小さいＩ／Ｏ要求の比率と
のうちの１つまたは複数とを含み、
前記キャッシュ制御論理は、前記各ＶＭの前記性能メトリックしきい値構成情報との前記各ＶＭの現在の性能メトリックの比較に基づいて前記各ＶＭの前記部分のセグメントを割り当て、割当解除する、請求項１に記載のストレージ・コントローラ。
【請求項４】
前記キャッシュ制御論理は、さらに、１つまたは複数のセグメントの順序付けられたシーケンスとして前記各ＶＭに各部分を割り当てるように適合され、前記順序付けられたシーケンスは、少なくとも最後のセグメントを含む、請求項１に記載のストレージ・コントローラ。
【請求項５】
前記キャッシュ制御論理は、ライト・スルー・キャッシュ・メモリ・セグメントとして前記各ＶＭの前記部分の前記最後のセグメントの使用を構成する、請求項４に記載のストレージ・コントローラ。
【請求項６】
前記キャッシュ制御論理は、さらに、第１ＶＭがキャッシュ・メモリの追加のセグメントの割り当てを必要とすることを判定するように適合され、
前記キャッシュ制御論理は、さらに、現在別のＶＭに割り当てられている前記最後のセグメントを割当解除するようにさらに適合され、前記割当解除されたセグメントを前記第１ＶＭに割り当てるようにさらに適合される、請求項５に記載のストレージ・コントローラ。
【請求項７】
ＶＭに割り当てられたセグメントの前記順序付けられたシーケンスは、前記最後のセグメントを含む複数のセグメントを含み、
前記キャッシュ制御論理は、ライト・バック・キャッシュ・メモリ・セグメントとして前記最後のセグメント以外の前記シーケンスのすべてのセグメントの使用を構成し、ライト・スルー・キャッシュ・メモリ・セグメントとして前記最後のセグメントの使用を構成する、請求項４に記載のストレージ・コントローラ。
【請求項８】
前記キャッシュ制御論理は、さらに、現在前記ＶＭに割り当てられている前記最後のセグメントを割当解除するように適合され、
前記キャッシュ制御論理は、さらに、ライト・スルー・キャッシュ・メモリ・セグメントとして残りのセグメントの最後のセグメントの使用を再構成するように適合される、請求項７に記載のストレージ・コントローラ。
【請求項９】
前記キャッシュ制御論理は、さらに、前記コンピューティング・デバイスからの識別されたＶＭの除去を示す前記ＶＭＭＳからのシグナルを受け取るように適合され、
前記キャッシュ制御論理は、さらに、前記シグナルの受取に応答して、前記識別されたＶＭに現在割り当てられているすべてのセグメントを割当解除するように適合される、請求項１に記載のストレージ・コントローラ。
【請求項１０】
ストレージ・コントローラ（１０６）内で動作可能な方法であって、前記ストレージ・コントローラは、仮想マシン（ＶＭ）コンピューティング環境（１００）内のコンピューティング・デバイス上で動作する１つまたは複数のＶＭ（１１０）のそれぞれに通信的に結合されるように適合されており、前記方法は、
前記ストレージ・コントローラのキャッシュ・メモリを複数のセグメントに論理的に分割することと、
前記コンピューティング・デバイス上で当初に動作するＶＭのそれぞれに前記複数のセグメントの部分を割り当てることとを含み、前記部分は、前記コンピューティング・デバイス上で当初に動作する前記ＶＭの個数に基づいて決定される個数のセグメントを含み、さらに、
ＶＭ管理システム（ＶＭＭＳ）から構成情報を受け取ることを含み、前記構成情報は、前記コンピューティング・デバイス上で現在動作しているＶＭの前記個数の変化を含み、さらに、
前記構成情報の受取に応答して、１つまたは複数のＶＭに関連する前記部分で割り当てられるセグメントの前記個数を調整することを含む、方法。
【請求項１１】
前記構成情報は、さらに、前記コンピューティング・デバイス上で現在動作している各ＶＭの前記部分の最小サイズをさらに含み、
前記割り当てることは前記部分を割り当てることをさらに含み、前記部分内のセグメントの前記個数は、前記コンピューティング・デバイス上で現在動作している各ＶＭの前記最小サイズ以上であり、
前記割り当てることは、前記部分を割り当てることをさらに含み、前記部分の前記サイズは、少なくとも、前記コンピューティング・デバイス上で現在動作している各ＶＭの最小サイズであり、
前記調整することは、前記部分の前記サイズ内のセグメントの前記個数が、少なくとも、前記コンピューティング・デバイス上で現在動作している各ＶＭの前記最小サイズになるように調整することをさらに含む、請求項１０に記載の方法。
【請求項１２】
前記構成情報は、前記各ＶＭの性能メトリックしきい値構成情報を含み、前記性能メトリックしきい値構成情報は、
前記各ＶＭのＩ／Ｏ要求処理レートと、
前記各ＶＭのユーザ応答時間と、
前記各ＶＭによって処理される大きいＩ／Ｏ要求に対する小さいＩ／Ｏ要求の比率と、
のうちの１つまたは複数を含み、
前記調整することは、
前記各ＶＭの現在の性能メトリックを性能メトリックしきい値構成情報と比較し、前記各ＶＭの前記性能メトリックしきい値構成情報との前記各ＶＭの現在の性能メトリックの比較に基づいて前記各ＶＭに前記部分のセグメントを割り当て、割当解除することをさらに含む、請求項１０に記載の方法。
【請求項１３】
前記割り当てることは、１つまたは複数のセグメントの順序付けられたシーケンスとして前記各ＶＭに前記部分を割り当てることをさらに含み、前記順序付けられたシーケンスは少なくとも最後のセグメントを含む、請求項１０に記載の方法。
【請求項１４】
前記割り当てることは、ライト・スルー・キャッシュ・メモリ・セグメントとして前記各ＶＭの前記部分の前記最後のセグメントの使用を構成することをさらに含む、請求項１３に記載の方法。
【請求項１５】
前記調整することは、
第１ＶＭがキャッシュ・メモリの追加のセグメントの割り当てを必要とすることを判定することと、
現在別のＶＭに割り当てられた最後のセグメントを割当解除することと、
前記割当解除されたセグメントを前記第１ＶＭに割り当てることとをさらに含む、請求項１４に記載の方法。
【請求項１６】
ＶＭに割り当てられたセグメントの前記順序付けられたシーケンスは、前記最後のセグメントを含む複数のセグメントを含み、
前記割り当てることは、
ライト・バック・キャッシュ・メモリ・セグメントとして前記最後のセグメント以外の前記シーケンスのすべてのセグメントの使用を構成することと、
ライト・スルー・キャッシュ・メモリ・セグメントとして前記最後のセグメントの使用を構成することとをさらに含む、請求項１３に記載の方法。
【請求項１７】
前記調整することは、
現在前記ＶＭに割り当てられている前記最後のセグメントを割当解除することと、
ライト・スルー・キャッシュ・メモリ・セグメントとして残りのセグメントの最後のセグメントの使用を再構成することとをさらに含む、請求項１６に記載の方法。
【請求項１８】
前記受け取られる構成情報は、前記コンピューティング・デバイスからの識別されたＶＭの除去を示す前記ＶＭＭＳからの情報を含み、
前記調整することは、前記情報の受取に応答して、前記識別されたＶＭに現在割り当てられているすべてのセグメントを割当解除することをさらに含む、請求項１０に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、２０１２年７月１９日に出願した米国特許仮出願第６１／６７３，３７８号及び２０１２年１２月１２日に出願した米国特許出願第１３／７１２，６７７号の優先権を主張するものである。
本発明は、全般的にはキャッシュ・メモリを利用するシステムに関し、より具体的には、仮想マシン・コンピューティング環境内で動作する複数のシステム内のストレージ・キャッシングの改善された柔軟性に関する。
【０００２】
関連出願
本願は、参照によって本明細書に組み込まれている、２０１１年８月３日に出願した、本願と同一の所有者が所有する米国特許出願第１３／１９７，００９号、名称「ＭＥＴＨＯＤ  ＴＯ  ＡＬＬＯＷ  ＳＴＯＲＡＧＥ  ＣＡＣＨＥ  ＡＣＣＥＬＥＲＡＴＩＯＮ  ＷＨＥＮ  ＴＨＥ  ＳＬＯＷ  ＴＩＥＲ  ＩＳ  ＯＮ  ＩＮＤＥＰＥＮＤＥＮＴ  ＣＯＮＴＲＯＬＬＥＲ」に関連する。
【背景技術】
【０００３】
さまざまなコンピューティング・アプリケーションは、ネットワーク接続されたクライアント・システムの企業に複数のサービスを提供する。たとえば、企業内のコンピューティング・サービスは、印刷サービス、ファイル／ストレージ・サービス、ドメイン／セキュリティ・サービス、ウェブ・サービスなど含むことができる。これらのサービスのそれぞれが、１つまたは複数のサーバ・コンピューティング・デバイスに常駐することができる。そのようなコンピューティング・サービスを提供する際の柔軟性および信頼性を高めるために、多くのシステム管理者は、それぞれが１つまたは複数の仮想マシン上で実行する、これらのサービスのそれぞれを提供する（またはサービスのさまざまな組み合わせを提供する）ための仮想システムを使用することを好む。仮想マシンは、所望のサービスを提供するソフトウェア・システムから基礎になるコンピューティング・ハードウェアを隠蔽する、コンピューティング・デバイス上で動作するソフトウェアの抽象化レイヤによって提供される。監視プログラム（たとえば、「ハイパーバイザ（ｈｙｐｅｒｖｉｓｏｒ）」または「仮想マシン・モニタ」）が、仮想マシンの動作を実際の物理的なコンピューティング・デバイスの特徴ならびにそれに関連するＩ／Ｏデバイスおよびストレージ・デバイスへの対応するアクセスに変換する。
【０００４】
ＶＭｗａｒｅ（登録商標）は、コンピューティング・デバイス上の仮想マシンを管理するためのそのようなハイパーバイザおよび関連管理ツールを提供する、一般的な市販システムである。管理ツールは、コンピューティング・デバイス上で動作する仮想マシンの作成および破壊と、さまざまなコンピューティング・デバイスの間での仮想マシンの移植（ｍｉｇｒａｔｅ）とを助ける。
【０００５】
そのような仮想コンピューティング環境の１つの重要な利益は、さまざまな物理コンピューティング・デバイスの間で仮想マシン（所望のコンピューティング・サービスを提供する）を移動し／移植する能力である。たとえば、ある管理者が、特定の物理コンピューティング・デバイスがそのデバイスにサービスすることを不能にすることを必要とする場合に、そのコンピューティング・デバイス上で動作する仮想マシンを、別の物理コンピューティング・デバイスに移動するか移植して、第１の物理コンピューティング・デバイスに対する管理サービスを可能にすることができる。製品のＶＭｗａｒｅ（登録商標）ファミリは、物理コンピューティング・デバイスの間の仮想マシンの移植の柔軟性を改善するために、ｖＭｏｔｉｏｎ（商標）（「ライブ・マイグレーション（ｌｉｖｅ  ｍｉｇｒａｔｉｏｎ）」とも称する）と呼ばれる特徴／機能を提供する。ＶＭｗａｒｅ（登録商標）ｖＭｏｔｉｏｎ（商標）は、ある物理サーバ（コンピューティング・デバイス）から別の物理サーバへの、ゼロ・ダウンタイム、連続的サービス可用性、および完全なトランザクション・インテグリティ（ｔｒａｎｓａｃｔｉｏｎ  ｉｎｔｅｇｒｉｔｙ）を有する、動作する仮想マシンのライブ・マイグレーションを可能にする。ｖＭｏｔｉｏｎ（商標）は、動的で自動化され自己最適化するデータセンタを作成するための主要な可能にする技術である。
【０００６】
いくつかのシステムは、そのような仮想化された環境を利用して、複数の仮想マシンを提供し、各仮想マシンは、（ベンダのコール・センタ内のような）ストレージ・システム管理の文脈で異なる計算サービスを提供する。たとえば、ネットワーク化されたクライアント・プログラムのクラスタを、１つまたは複数の物理コンピューティング・デバイス上の仮想マシンとして実施することができる。各コール・センタ代理（ｒｅｐｒｅｓｅｎｔａｔｉｖｅ）は、任意の適切な物理コンピューティング・システムに（ハイパーバイザによって）物理的に移植できる、仮想マシン上のクライアント・プログラムを操作する。クライアント・プログラムは、基礎になるコンピューティング・デバイスのＩ／Ｏデバイスおよびストレージ・サブシステムを含む、基礎になるコンピューティング・デバイスの計算リソースを利用する。いくつかのストレージ・サブシステムは、改善された性能を可能にするために、高度なキャッシング機能を含む。仮想マシンの動作によって永続大容量記憶装置（ｐｅｒｓｉｓｔｅｎｔ  ｍａｓｓ  ｓｔｏｒａｇｅ  ｄｅｖｉｃｅｓ）に格納されるデータを、変化する性能特性を有する永続ストレージのさまざまなティア（ｔｉｅｒｓ）に格納して、ストレージ・サブシステムの総合性能を改善することができる。たとえば、ＬＳＩ  Ｃｏｒｐｏｒａｔｉｏｎ社は、Ｎｙｔｒｏ（商標）ＭｅｇａＲＡＩＤ（登録商標）と称する製品すなわち、ストレージ・コントローラによって制御できる通常のハード・ディスクと比較してより高速のストレージのティアとしてフラッシュ・メモリ・コンポーネントを提供するＲＡＩＤストレージ・コントローラを提供する。したがって、そのようなストレージ・コントローラは、変化する性能のストレージ容量のさまざまなティアを提供でき、格納されたデータにアクセスしているシステム（１つまたは複数）に関して透過的に、格納されたデータのどれをさまざまなティアの間で移動すべきかを動的に判定することができる。
【０００７】
仮想マシン環境内で利用されるストレージ・サブシステムの文脈では、複数の仮想マシン（それぞれが関連するクライアント・サービスを提供する）が格納されたデータへの共有アクセスを要求することが一般的である。ＶＭｗａｒｅ（登録商標）の文脈では、ｖＳｔｏｒａｇｅ  Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ  Ｆｉｌｅ  Ｓｙｓｔｅｍ（ＶＭＦＳ）が、仮想マシンのために最適化されたストレージ仮想化を提供する高性能クラスタ・ファイル・システムである。各仮想マシンは、ファイルの小さいセット内にカプセル化され、ＶＭＦＳは、物理ＳＣＳＩディスクおよびパーティション上のこれらのファイルのデフォルト・ストレージ・システムである。複数の仮想マシンの間の共有ストレージ動作にＶＭＦＳを使用することは、複数の課題を提示する。これらの課題のうちの主な課題は、ＶＭＦＳが、かなりのオーバーヘッド処理を追加し、したがって、性能を改善するためにキャッシングされたストレージのさまざまなティア化されたレベルにデータを格納できる高度なストレージ・コントローラの性能の利益を減らすことである。さらに、あるコンピューティング・システム上の格納されたデータへのアクセスを共有する仮想マシンの作成、削除、および移植は、仮想マシンの間でのストレージの性能の変化するティアの公平な割当におけるさらなる問題を生じる。さらに、さまざまな仮想マシンの性能特性は、すばやく変化する場合があり、高度なキャッシング・ストレージ・コントローラの性能改善を、複数の仮想マシンの変化する性能プロファイルにすばやく適合させることができない場合がある。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
したがって、格納されたデータへのアクセスを共有する複数の仮想マシンの仮想化されたシステムの文脈、特にＶＭｗａｒｅ（登録商標）コンピューティング環境の文脈で、ティア化されたキャッシング・ストレージ・サブシステム内のストレージ容量の割当および割当解除に関する複数の課題が残されている。
【課題を解決するための手段】
【０００９】
本発明は、複数の仮想マシン（ＶＭ）がその上のＶＭコンピューティング環境内で動作しているコンピューティング・デバイスのストレージ・コントローラ内のキャッシュ・メモリの管理における改善された柔軟性のための方法および構造を提供することによって、上記および他の問題を解決し、これによって有用な技術の現状を進歩させる。本明細書の実施形態は、ストレージ・コントローラが、ストレージ・コントローラに結合されたＶＭ管理システムから構成情報を受け取ることを提供し、ここで、構成情報は、コンピューティング・デバイス上で現在動作している各ＶＭに関する情報を含む。構成情報に基づいて、ストレージ・コントローラは、コンピューティング・デバイス上で現在動作しているさまざまな仮想マシンによる使用のためにストレージ・コントローラのキャッシュ・メモリのセグメントを割り当て、割当解除する。構成情報は、現在動作しているＶＭの個数のしるしならびに各仮想マシンの現在の性能に基づいてセグメントを割り当て／割当解除するための性能メトリックしきい値構成情報を含むことができる。
【００１０】
本明細書の一態様では、仮想マシン（ＶＭ）コンピューティング環境内で動作しているコンピューティング・デバイスと結合される、機能強化されたストレージ・コントローラが提供される。ＶＭコンピューティング環境は、コンピューティング・デバイス上の複数のＶＭの動作を提供し、コンピューティング・デバイスに結合されたＶＭ管理システム（ＶＭＭＳ）を含む。ストレージ・コントローラは、ＶＭのいずれからもアクセス可能なキャッシュ・メモリを含む。キャッシュ・メモリは、複数のセグメントに論理的に副分割（ｓｕｂｄｉｖｉｄｅ）される。ストレージ・コントローラは、キャッシュ・メモリに結合され、ＶＭＭＳから構成情報を受け取るためにＶＭＭＳに通信的に結合されたキャッシュ制御論理をさらに含む。構成情報は、コンピューティング・デバイス上で現在動作している各ＶＭに関する構成情報を含む。キャッシュ制御論理は、ＶＭＳから受け取られた構成情報に基づいてコンピューティング・デバイス上で現在動作している各仮想マシンによる使用のために複数のセグメントの部分を制御可能に割り当て、割当解除するように適合され、各部分は、構成情報に基づく個数のセグメントを含む。
【００１１】
本明細書のもう１つの態様は、（上記の）機能強化されたストレージ・コントローラと、ストレージ・コントローラのそれぞれに通信的に結合された仮想マシン管理システムとをそれぞれがさらに含む複数のコンピューティング・デバイスを含むシステムを提供する。
【００１２】
本明細書のもう１つの態様は、仮想マシン（ＶＭ）コンピューティング環境内のコンピューティング・デバイス上で動作する１つまたは複数のＶＭのそれぞれに通信的に結合されるように適合された機能強化されたストレージ・コントローラ内で動作可能な方法を提供する。この方法は、ストレージ・コントローラのキャッシュ・メモリを複数のセグメントに論理的に分割することと、コンピューティング・デバイス上で当初に動作するＶＭのそれぞれに複数のセグメントの部分を割り当てることとを含む。各部分は、コンピューティング・デバイス上で当初に動作するＶＭの個数に基づいて決定される個数のセグメントを含む。この方法は、ＶＭＭＳから構成情報を受け取ることをさらに含む。構成情報は、コンピューティング・デバイス上で現在動作しているＶＭの個数の変化を含む。この方法は、その後、構成情報の受取に応答して、１つまたは複数のＶＭに関連する部分で割り当てられるセグメントの個数を調整する。
【図面の簡単な説明】
【００１３】
【図１】対応するコンピューティング・デバイス上で動作する仮想マシンのためのキャッシュ・メモリのすばやい動的な割当および割当解除を提供する、本明細書の特徴および態様に従って機能強化された複数のストレージ・コントローラを組み込まれた例示的な仮想マシン・コンピューティング・システムを示すブロック図である。
【図２】図１の機能強化されたストレージ・コントローラの例示的な追加の詳細を説明する流れ図である。
【図３】本明細書の特徴および態様による、対応するコンピューティング・デバイス上で動作する仮想マシンのためのキャッシュ・メモリのすばやい動的な割当および割当解除を提供する、図１および２の機能強化されたストレージ・コントローラの動作の例示的な方法を説明する流れ図である。
【図４】本明細書の特徴および態様による、対応するコンピューティング・デバイス上で動作する仮想マシンのためのキャッシュ・メモリのすばやい動的な割当および割当解除を提供する、図１および２の機能強化されたストレージ・コントローラの動作の例示的な方法を説明する流れ図である。
【図５】本明細書の特徴および態様による、対応するコンピューティング・デバイス上で動作する仮想マシンのためのキャッシュ・メモリのすばやい動的な割当および割当解除を提供する、図１および２の機能強化されたストレージ・コントローラの動作の例示的な方法を説明する流れ図である。
【図６】本明細書の特徴および態様による、対応するコンピューティング・デバイス上で動作する仮想マシンのためのキャッシュ・メモリのすばやい動的な割当および割当解除を提供する、図１および２の機能強化されたストレージ・コントローラの動作の例示的な方法を説明する流れ図である。
【図７】本明細書の特徴および態様による、対応するコンピューティング・デバイス上で動作する仮想マシンのためのキャッシュ・メモリのすばやい動的な割当および割当解除を提供する、図１および２の機能強化されたストレージ・コントローラの動作の例示的な方法を説明する流れ図である。
【図８】本明細書の特徴および態様による、対応するコンピューティング・デバイス上で動作する仮想マシンのためのキャッシュ・メモリのすばやい動的な割当および割当解除を提供する、図１および２の機能強化されたストレージ・コントローラの動作の例示的な方法を説明する流れ図である。
【発明を実施するための形態】
【００１４】
図１は、仮想マシン管理システム（ＶＭＭＳ）１０２に通信的に結合された複数のコンピューティング・デバイス（１０４、１２４、および１４４）を含む仮想マシン・コンピューティング環境（システム１００）のブロック図である。各コンピューティング・デバイス１０４、１２４、および１４４は、パーソナル・コンピュータ、サーバ、または他の類似するコンピューティング・デバイスなど、仮想マシン・コンピューティング環境内で動作することのできる任意の適切なコンピューティング・システムまたはコンポーネントを含むことができる。仮想マシン管理システム１０２は、同様に、仮想マシン管理プログラムが全体としての仮想マシン環境ならびにコンピューティング・デバイス１０４、１２４、および１４４のそれぞれで動作可能な仮想マシンのパラメータを構成し、制御するためにその上で動作可能な任意の適切なコンピューティング・デバイスを含むことができる。仮想マシン管理システム１０２は、任意の標準通信媒体およびたとえばＴＣＰ／ＩＰなどのネットワーク・プロトコルを含むプロトコルを介して、各コンピューティング・デバイス１０４、１２４、および１４４のコンポーネントと通信する（ラベル「Ａ」を接続する線として図示）。いくつかの実施形態では、ＶＭＭＳ  １０２を、コンピューティング・デバイス１０４、１２４、または１４４のうちの１つで動作するプログラムとすることができる。
【００１５】
本明細書の特徴および態様によれば、各コンピューティング・デバイス１０４、１２４、および１４４は、それぞれ対応する機能強化されたストレージ・コントローラ１０６、１２６、および１４６を含む。各ストレージ・コントローラは、（コネクタ・ラベル「Ａ」によって示されるように）ＶＭＭＳ  １０２に通信的に結合される。各ストレージ・コントローラは、対応するコンピューティング・デバイスを通信的に結合するように適合され、各ストレージ・コントローラに結合されたストレージ・デバイス（図示せず）の管理および制御のために適合された任意の適切な周辺インターフェースデバイスを含むことができる。いくつかの例示的な実施形態では、各機能強化されたストレージ・コントローラ１０６、１２６、および１４６は、１つまたは複数の物理ストレージ・デバイスの諸部分から構成され、ＲＡＩＤストレージ管理技法によって定義される信頼性および性能強化を提供する論理ボリュームを定義し、これへのアクセスを管理するように動作可能なＲＡＩＤストレージ・コントローラを含むことができる。いくつかの例示的実施形態では、各ストレージ・コントローラは、その対応するコンピューティング・デバイスに物理的におよび電子的に結合するように構成されたホスト・バス・アダプタ（ＨＢＡ）を含むことができる。
【００１６】
仮想マシン・コンピューティング環境によれば、各コンピューティング・デバイス１０４、１２４、および１４４は、ハイパーバイザ・プログラム（たとえば、コンピューティング・デバイス１０４内のハイパーバイザ１０８ならびにコンピューティング・デバイス１２４および１４４内で動作する同様のハイパーバイザ・プログラム（図示せず））を含む。仮想マシン・コンピューティング環境の技術で全般的に既知のように、ハイパーバイザ・プログラムは、複数の仮想マシンが専用コンピューティング・システム内に存在するかのように動作できると同時に、ハイパーバイザ・プログラムが複数の仮想マシンのそれぞれに関する物理コンピューティング・デバイスおよび周辺機器の共有をもたらすように、ハイパーバイザが動作するコンピューティング・デバイスの物理コンピューティング・エレクトロニクスの抽象化レイヤを提供する。図１に示されているように、コンピューティング・デバイス１０４は、３つの例示的な仮想マシンすなわち、仮想マシン「Ａ」１１０．１、仮想マシン「Ｂ」１１０．２、および仮想マシン「Ｃ」１１０．３を含む。各そのような仮想マシンは、たとえば機能強化されたストレージ・コントローラ１０６およびそれに関連するストレージ・デバイス（図示せず）を含むコンピューティング・デバイス１０４の物理コンピューティング・リソースにアクセスするために、ハイパーバイザ１０８を介して通信する。
【００１７】
当業者は、通常の市販仮想マシン・コンピューティング環境の例示としてＶＭｗａｒｅ（登録商標）をたやすく認めるであろう。そのようなＶＭｗａｒｅ（登録商標）コンピューティング環境内で、ＶＭＭＳ  １０２は、「ＶＭｗａｒｅ  ｖＣｅｎｔｅｒ」すなわち、複数のコンピューティング・デバイス内で動作する仮想マシンの構成および状況を管理するように動作可能なプログラムを表す。本明細書の特徴および態様を、さまざまな類似する仮想マシン・コンピューティング環境内で動作可能とすることができる。したがって、ＶＭｗａｒｅ（登録商標）は、本明細書の特徴および態様を有利に使用できる１つの例示的なＶＭコンピューティング環境としてのみ意図されている。いくつかのＶＭｗａｒｅ（登録商標）実施形態では、管理システム（ＶＭＭＳ  １０２）は、さらに、対応するコンピューティング・デバイスのハイパーバイザを介して各ストレージ・コントローラと通信するプラグイン・モジュール１５０を含む。言い替えると、ＶＭｗａｒｅ（登録商標）の例示的実施形態では、ＶＭＭＳ  １０２（ｖＣｅｎｔｅｒ）内のプラグイン・モジュール１５０は、ハイパーバイザ１０８と通信するためにＶＭｗａｒｅ（登録商標）仕様に従って設計され、このハイパーバイザ１０８は、やはりＶＭｗａｒｅ（登録商標）仕様で定義される標準の定義されたアプリケーション・プログラミング・インターフェース（ＡＰＩ）を介してストレージ・コントローラ１０６と通信する。他の例示的実施形態では、他の適切な通信チャネル、プロトコル、およびＡＰＩを使用して、ストレージ・コントローラをＶＭＳＳに通信的に結合することができる。
【００１８】
機能強化されたストレージ・コントローラ１０６、１２６、および１４６のそれぞれは、基礎になる物理ストレージ・デバイス（図示せず）へのアクセスと比較して改善された性能のために高性能キャッシュ・メモリ管理を提供する。ストレージ技術で一般に既知のように、キャッシュ・メモリ構造は、回転する光ディスク・ドライブまたは磁気ディスク・ドライブなどのより低速で永続的な不揮発性ストレージ・デバイスへのアクセスと比較して改善された性能を提供するのに利用される。永続的な不揮発性ストレージ・デバイスから読み取られたデータを、ストレージ・コントローラのキャッシュ・メモリ内に格納することができ、後続の読取要求を、より低速の永続的な不揮発性ストレージ・デバイスではなくキャッシュ・メモリ内のデータにアクセスすることによって、よりすばやく完了することができる。同様の形で、機能強化されたストレージ・コントローラ１０６、１２６、および１４６による書込要求の処理に関連するデータを、対応するストレージ・コントローラのキャッシュ・メモリに格納し、したがって、後続の読取要求がキャッシュ・メモリからのデータにアクセスすることを可能にすることができる。さらに、キャッシュ・メモリを、ライト・バック・モード（ｗｒｉｔｅ  ｂａｃｋ  ｍｏｄｅ）で動作させることができ、キャッシュ・メモリに書き込まれたデータを、後刻に永続的な不揮発性ストレージ・デバイスにポストするかフラッシュし、したがって、ストレージ・コントローラが、対応する要求する仮想マシン（１１０．１から１１０．３）に書込要求の完了を即座に示すことを可能にすることができる。
【００１９】
上で注記したように、仮想マシン・コンピューティング環境で動作する仮想マシンを、動的に作成し、破壊すると同時に、あるコンピューティング・デバイスから別のコンピューティング・デバイスに（たとえば、負荷平衡化のためにＶＭＭＳなどによって）移植することができる。したがって、機能強化されたストレージ・コントローラ１０６、１２６、および１４６は、対応するコンピューティング・デバイス（それぞれ１０４、１２４、および１４４）内で動作する各仮想マシンによって利用されるキャッシュ・メモリの部分のサイズに対する動的な増加および減少を可能にするために、改善されたキャッシュ・メモリ管理を提供することができる。一般に、機能強化されたストレージ・コントローラ１０６、１２６、および１４６は、そのそれぞれのキャッシュ・メモリをキャッシュ・メモリの複数のセグメントに副分割するように動作可能であり、セグメントを、性能の所望のレベルに基づいておよび／または各コンピューティング・デバイス内で動作する仮想マシンの個数に基づいて必要に応じて、それぞれ対応するコンピューティング・デバイス１０４、１２４、および１４４内で動作するさまざまな仮想マシンの間で割り当て、割当解除することができる。
【００２０】
図２は、図１のストレージ・コントローラ１０６、１２６、および１４６などの機能強化されたストレージ・コントローラの構造の例示的な追加の詳細を示すブロック図である。各ストレージ・コントローラは、ストレージ・コントローラの動作を制御するためにストレージ・コントローラの適当なプロセッサ内で動作可能な回路および／またはプログラムされた命令を表す制御論理２５０を含むことができる。制御論理２５０は、ストレージ・コントローラの全体的な動作を制御する適当なプログラムされた命令および／またはカスタム回路を表す一般化されたストレージ制御論理２５２（たとえば、接続されたホスト・システムおよび接続されたストレージ・デバイスとインターフェースし、接続されたホスト・システムから受け取られたストレージ・デバイスおよび／または論理ボリュームに向けられたＩ／Ｏ要求を処理するために適当な動作を実行する論理）を含むことができる。ストレージ・コントローラ１０６は、ストレージ制御論理２５２を介して、対応するコンピューティング・デバイスのハイパーバイザを介して対応する仮想マシンによってアクセスされる生デバイスとして、対応するキャッシュ・メモリ部分と共にストレージ・デバイスおよび／または論理ボリュームを提示することができる。したがって、ＶＭｗａｒｅ（登録商標）仮想マシン・コンピューティング環境では、ＶＭＦＳに関連する追加のオーバーヘッド処理を回避することができる。
【００２１】
本明細書の特徴および態様によれば、制御論理２５０は、さらに、プラグイン・モジュール・インターフェース２０２およびキャッシュ制御論理２０４を含む。さらに、各ストレージ・コントローラは、コントローラに結合された永続的な不揮発性ストレージ・デバイスに格納されたデータに関連するキャッシングされたデータを格納するのに使用されるキャッシュ・メモリ２２０を含む。プラグイン・モジュール・インターフェース２０２は、図１のＶＭＭＳ  １０２などの管理プログラムとインターフェースする任意の適切な回路および／またはプログラムされた命令を含むことができる。一般に、プラグイン・モジュール・インターフェース２０２は、仮想マシン・コンピューティング環境の構成に対する変更を示すＶＭＭＳ  １０２からの非同期情報を受け取ることができる。さらに、プラグイン・モジュール・インターフェース２０２は、ストレージ・コントローラが動作しているコンピューティング・デバイス上で動作している仮想マシンに関する現在の構成情報を要求するために、ＶＭＭＳ  １０２に照会することができる。ＶＭＷａｒｅ（登録商標）の例示的実施形態では、インターフェース２０２は、ｖＣｅｎｔｅｒ内の対応するプラグイン・モジュール（すなわち、ＶＭＭＳ  １０２内のプラグイン・モジュール１５０）と情報を交換するために、ＶＭＷａｒｅ（登録商標）仕様に従って定義されたＡＰＩを実施する。キャッシュ・メモリ２２０を、たとえばダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）を含む任意の適切なメモリ回路を利用して実施することができる。キャッシュ制御論理２０４は、対応するコンピューティング・デバイス上で動作する仮想マシン（ならびに全体としての仮想マシン・コンピューティング環境）に関する構成情報を受け取るためにプラグイン・モジュール・インターフェース２０２と結合するように適合された任意の適切な電子回路および／またはプログラムされた命令（適切なプロセッサによって実行される）を表す。キャッシュ制御論理２０４は、さらに、対応するコンピューティング・デバイス内で動作する複数の仮想マシンのそれぞれに関連するキャッシュ・メモリ２２０のセグメントの割当および割当解除を管理するためにキャッシュ・メモリ２２０に結合するように適合される。当業者は、適切に設計されたカスタム電子回路、適当な汎用プロセッサまたは特殊目的プロセッサ（図示せず）によって実行される適切なプログラム・メモリ（図示せず）に格納された適切なプログラムされた命令、またはカスタム回路およびプログラムされた命令の任意の組み合わせとして制御論理２５０の要素を実施できることをたやすく認めるであろう。
【００２２】
動作時に、キャッシュ制御論理２０４は、キャッシュ・メモリ２２０の容量を、複数のセグメント（２０８．１から２０８．５、２１０．１から２１０．３、および２１２．１から２１２．６）に分割する。プラグイン・モジュール・インターフェース２０２との相互作用を介して、キャッシュ制御論理２０４は、コンピューティング・デバイス上で動作している各仮想マシンによる使用のために任意の個数のそのようなセグメントを割り当てることができる。したがって、コンピューティング・デバイス上で動作している各仮想マシンは、その使用のために割り当てられた、キャッシュ・メモリ２２０の容量の一部を有する。各部分を、セグメントの順序付けられたシーケンスとしてキャッシュ制御論理２０４によって割り当てることができる。たとえば、部分２０６．１を、図１のＶＭ「Ａ」１１０．１に関連付けることができ、部分２０６．２を、図１のＶＭ「Ｂ」１１０．２に関連付けることができ、部分２０６．３を、図１のＶＭ「Ｃ」１１０．３に関連付けることができる。ストレージ・コントローラ１０６が動作可能であるコンピューティング・デバイス１０４の現在の構成および動作状況に基づいて、部分２０６．１が、５つのセグメント（２０８．１から２０８．５）に割り当てられている。同様の形で、部分２０６．２は、３つのセグメント（２１０．１から２１０．３）に割り当てられ、部分２０６．３は、それに割り当てられたセグメントを現在は有しない（たとえば、対応する仮想マシンが、現在はその消耗の性能を達成するためにキャッシングの必要を有しない）。さらに、キャッシュ・メモリ２２０は、ストレージ・コントローラ１０６が動作しているコンピューティング・デバイス１０４の現在の構成および動作状況に基づいて、現在は割り当てられていないセグメント２１２．１から２１２．６を含む。当業者は、任意の個数のそのようなセグメントが、割り当てられまたは割り当てられていない可能性があることをたやすく了解するであろう。したがって、図２の各部分に示され、割り当てられていないものとして示されたセグメントの個数は、単に可能な現在の動作構成を表すものとして意図されている。さらに、各セグメントのサイズは、仮想マシンおよび全体としての仮想マシン・コンピューティング環境の現在のおよび／または予想される性能目標に基づく設計選択の問題として判定することができる。
【００２３】
各部分は、たとえば対応する部分に（たとえば、対応する仮想マシンによる使用のために）現在割り当てられているものとして１つまたは複数のセグメントを関連付けるために単一リンク・リスト構造、二重リンク・リスト構造、または任意の他の適切なメタデータ構造を含む任意の適切なデータ構造によって、その現在割り当てられているセグメントを部分として関連付けることができる。上で注記したように、およびストレージの技術分野で周知のように、キャッシュ・メモリを、キャッシュ・メモリに書き込まれるすべてのデータが、対応する永続的な不揮発性ストレージ・デバイスに即座にポストされまたはフラッシュされるライト・スルー・モード（ｗｒｉｔｅ  ｔｈｒｏｕｇｈ  ｍｏｄｅ）で使用することができ、あるいは、データがキャッシュ・メモリに即座に書き込まれるが、ストレージ・コントローラがアイドル処理能力を有するより後の時まで永続ストレージへのポストまたはフラッシュが延期されるライト・バック・モードで動作させることができる。特定の部分に関してセグメントが割り当てられ、割当解除される速度を改善するために、各割り当てられるセグメントを、ライト・バック動作またはライト・スルー動作について指定することができる。ライト・バック動作について指定されるセグメントを、コンピューティング・デバイス内で動作している仮想マシンの性能を改善するために、望みに応じて別の部分への再割当のために即座に割当解除することができる。対照的に、ある部分に割り当てられ、ライト・バック使用について指定されたセグメントは、まず、再割当のために割当解除され、キャッシュ・メモリ２２０の別の部分内の別の仮想マシンによって使用される前に、対応する永続ストレージにフラッシュされなければならない。したがって、図２に示された各セグメントは、ライト・バック動作（ＷＢ）またはライト・スルー動作（ＷＴ）のどちらについて指定されたのかを示す。１つの例示的実施形態では、各部分のセグメントは、図２に示されているように、セグメントのシーケンスとして割り当てられる（たとえば、２０８．１から２０８．５などのシーケンスを指定する符号）。したがって、セグメントのそのようなシーケンスは、少なくとも、シーケンスの最後のセグメントを含む。たとえば、部分２０６．１では、セグメント２０８．５は、そのような最後のセグメントを表し、部分２０６．２内では、セグメント２１０．３が、そのような最後のセグメントを表す。いくつかの例示的実施形態では、最後のセグメントを、任意の部分の最後のセグメントを、別の部分のおよびそれに対応する仮想マシンでの使用のためにセグメントを再割当するために割当解除できるようにするために、ライト・スルーについて必ず指定することができる。本明細書で下でさらに詳細に議論するように、そのようなライト・スルーの最後のセグメントが割当解除される時には、新しい最後のセグメント（すなわち、セグメントの現在のシーケンスの最後のセグメントの次のセグメント）は、ライト・バック使用からライト・スルー使用に変換される。そのような変換に付随して、ストレージ・コントローラ１０６は（たとえば、キャッシュ制御論理２０４の動作によって）、ライト・バッ��・キャッシュ・メモリ・セグメントからのすべてのデータを、永続的不揮発ストレージの対応する位置にフラッシュする。そのような「ダーティ」データのフラッシュまたはポストを完了した後に、新しい最後のセグメントを、ライト・スルー使用のために指定し、これをさまざまな部分の間でのすばやい割当解除および再割当のために使用可能にすることができる。
【００２４】
当業者は、図１のシステム１００および図２のストレージ・コントローラ１０６などの完全に機能する仮想マシン・コンピューティング環境内に存在することができる多数の追加の要素および同等の要素をたやすく認めるであろう。そのような追加の要素および同等の要素は、この議論の単純さおよび簡潔さのために本明細書では省略される。
【００２５】
図３から８は、図１および２のストレージ・コントローラ１０６などの機能強化されたストレージ・コントローラの動作の例示的な方法を説明する流れ図である。具体的には、図３から８の方法は、図２の機能強化されたストレージ・コントローラ１０６のキャッシュ制御論理２０４などのキャッシュ制御論理要素内で動作可能である。図３のステップ３００は、仮想マシン管理システムから初期構成情報を受け取る。初期構成情報は、機能強化されたコントローラがその中で動作可能なコンピューティング・デバイス上で当初に動作可能な仮想マシンに関する情報を含む。そのような構成情報は、たとえば、コンピューティング・デバイス上で動作するように当初に構成される仮想マシンの個数を含むことができる。下でさらに論じるように、初期構成情報は、これらの当初に動作する仮想マシンのそれぞれに割り当てられる最小キャッシュ部分サイズをも含むことができる。そのような最小キャッシュ部分サイズをキャッシュ制御論理によって使用して、各仮想マシンに割り当てられる部分が絶対に指定された最小値未満にならないことを保証することができる。他の構成情報は、コンピューティング・デバイス上で動作可能な各仮想マシンのしきい値性能メトリックを示す性能しきい値情報を含むことができる。たとえば、性能メトリックしきい値構成情報は、各ＶＭのＩ／Ｏ要求処理レート、各ＶＭの所望のユーザ応答時間、および各ＶＭによって処理される大きいＩ／Ｏ要求に対する小さいＩ／Ｏ要求の比率などの情報を含むことができる。当業者は、各仮想マシンの所望の性能特性ならびにコンピューティング・デバイス全体または仮想マシン・コンピューティング環境全体の性能を識別するために仮想マシン管理システムから入手できる他の構成情報をたやすく認めるであろう。ステップ３０２では、機能強化されたストレージ・コントローラが、キャッシュ・メモリの容量をキャッシュ・メモリの複数のセグメントに論理的に副分割する。上で注記したように、セグメントのサイズを、特定のアプリケーションに適当に、設計選択の問題として判定することができる。さらに、セグメントは、特定のアプリケーションに適当である可能性があるセグメントの変化するサイズの割当を可能にするために、サイズにおいて変化することができる。複数のセグメントの各セグメントは、当初に割り当てられない（たとえば、機能強化されたストレージ・コントローラの動作によって仮想マシンのいずれにも自由に割り当てることができる）。ステップ３０４は、初期構成情報に基づいて、このコンピューティング・デバイス上で動作している各仮想マシンに複数のセグメントの一部を割り当てる。たとえば、各仮想マシンは、キャッシュ・メモリの容量のその部分として、等しい割当を受け取ることができる。他の実施形態では、構成情報が、仮想マシンのそれぞれに提供される特定の割当を示すことができる。さらに、上で注記したように、最小割当を、初期構成情報によって仮想マシンのそれぞれについて指定することができる。したがって、各仮想マシンの複数のセグメントの一部の初期割当を、当初に動作する仮想マシンの個数に基づくものとすることができ、あるいは、初期構成情報から導出される他の判断基準に基づくものとすることができる。いくつかの実施形態では、仮想マシンは、キャッシュ・メモリのその初期部分として、セグメントの割当を受け取らないものとすることができる（たとえば、仮想マシンの最小割当を０にすることができる）。
【００２６】
ストレージ・コントローラが、通常動作（コンピューティング・デバイス内で動作する仮想マシンのそれぞれの代わりのＩ／Ｏ要求の処理）を開始する時に、ストレージ・コントローラは、更新された構成情報を仮想マシン管理システムから受け取ることができる（ステップ３０６で）。更新された情報は、たとえば、このコンピューティング・デバイス上で現在動作している仮想マシンの個数の変化を示すことができる。さらに、更新された構成は、所望の性能メトリックしきい値構成情報の変化を示すことができる。仮想マシンが作成されるか終了される（あるいは、コンピューティング・デバイスの間で移動／移植される）時に、更新された構成情報は、現在動作している仮想マシンの個数の適当な変化および／または現在動作しているさまざまな仮想マシンの所望の性能特性の変化を反映することができる。いくつかの実施形態では、ストレージ・コントローラは、そのような更新された構成情報を入手するために、仮想マシン管理システムに周期的に照会することができる。他の例示的な実施形態では、仮想マシン管理システムは、仮想マシン・コンピューティング環境の構成が変化する時に、そのような情報をストレージ・コントローラに非同期に提供する（たとえば、プッシュする）ことができる。上で注記したように、機能強化されたストレージ・コントローラ内のプラグイン・モジュールは、仮想マシン管理システムからそのような情報を受け取ることができる。仮想マシン・コンピューティング環境のＶＭｗａｒｅ（登録商標）実施態様の文脈では、プラグイン・モジュールは、ＶＭｗａｒｅ（登録商標）環境のｖＣｅｎｔｅｒコンポーネントと相互作用して、そのような更新された構成情報を入手することができる。更新された構成情報に基づいて、ステップ３０８は、コンピューティング・デバイス上で現在動作している１つまたは複数の仮想マシンのキャッシュ・メモリの部分に割り当てられるセグメント数を調整する。たとえば、仮想マシンが終了されるか別のコンピューティング・デバイスに移植される場合には、キャッシュ・メモリ・セグメントのうちでその仮想マシンに割り当てられた部分を、割当解除し、したがって、このコンピューティング・デバイス上の他の仮想マシンへの再割当のために解放することができる。あるいは、たとえば、性能メトリックしきい値構成情報が変更される場合または動作している仮想マシンの性能メトリックの現在の測定値が変化する場合には、キャッシュ・メモリ・セグメントを、このコンピューティング・デバイス上で動作しているさまざまな仮想マシンの間で割り当てるか割当解除することができる。
【００２７】
上で注記したように、キャッシュ・メモリを、ライト・スルー・モードまたはライト・バック・モードで使用することができる。図４から８は、ライト・バック・モードまたはライト・スルー・モードのいずれかでのキャッシュ・メモリ・セグメントの使用を可能にする、図３の方法の変形形態を表す。図４は、コンピューティング・デバイス上で動作する複数の仮想マシンのそれぞれに分配されたキャッシュ・メモリのセグメントの割当を動的に調整する、本明細書の特徴および態様によるもう１つの例示的な方法を説明する流れ図である。上と同様に、図４の方法は、図１および２のストレージ・コントローラ１０６などの機能強化されたストレージ・コントローラ上で動作可能である。ステップ４００から４０４は、図３に関して上で説明したステップ３００から３０４に類似する形で動作可能である。一般に、初期構成情報が、仮想マシン管理システムから受け取られる。初期構成情報に基づいて、キャッシュ・メモリの容量が、複数のセグメントに論理的に副分割され、このコンピューティング・デバイス上で当初に動作する仮想マシンのそれぞれに分配される。初期割当は、各ＶＭの指定された最小キャッシュ・サイズに基づくものとすることができ、かつ／またはこのコンピューティング・デバイス上で当初に動作する仮想マシンの個数に基づくものとすることができる。
【００２８】
そのような初期割当の後に、ステップ４０６は、ライト・スルー・キャッシュ・セグメントとしての使用に関して各部分の最後のセグメントを構成する。上で注記したように、いくつかの例示的実施形態では、キャッシュ・セグメントを、好ましくは、対応する仮想マシンの代わりにストレージ・コントローラによってライト・バック・キャッシュ・モードで利用することができる。セグメントを割り当てるか割当解除することのできる速度を改善するために、仮想マシンのキャッシュ・メモリの部分として割り当てられたセグメントのシーケンスの最後のセグメントは、ライト・スルー・キャッシュ・セグメントとしての使用のために指定され／構成される。ライト・スルー・キャッシュ・セグメントとしての使用のために構成されたそのような最後のセグメントを、コンピューティング・デバイス上で動作している別の仮想マシンの別の部分への再割当のために即座に割当解除することができる。最後のセグメント以外の部分のシーケンス内のセグメントを、ライト・バック・キャッシュ・セグメントとしての使用のために構成することができる。注記したように、ライト・バック・キャッシュ・セグメントの割当解除および再割当は、割当解除されるキャッシュ・セグメント内のすべての「ダーティ（ｄｉｒｔｙ）」データが、ストレージ・コントローラによって制御されるストレージ・デバイス上の永続ストレージにまずフラッシュされまたはポストされることを保証するために、ストレージ・コントローラによる追加の処理を必要とする。
【００２９】
その後、ステップ４０８および４１０は、図３のステップ３０６および３０８と同様の形で動作可能である。ステップ４０８では、機能強化されたストレージ・コントローラが、このコンピューティング・デバイス内で現在動作している仮想マシンのある変化を示す更新された構成情報を仮想マシン管理システムから受け取る。ステップ４１０は、仮想マシン管理システムから受け取られた更新された構成情報に基づいて、１つまたは複数の仮想マシンの部分に割り当てられるセグメント数を調整する。
【００３０】
図５は、図１および２のストレージ・コントローラ１０６などの機能強化されたストレージ・コントローラの動作の例示的な追加の詳細を提示する流れ図である。図５の方法は、１つまたは複数の仮想マシンの性能メトリックの変化を検出し、所望の性能に基づいて各仮想マシンのさまざまな部分の間でセグメントの割当を調整するために、機能強化されたストレージ・コントローラ内で周期的に動作可能とすることができる。ステップ５００は、各仮想マシンに関連する性能メトリックしきい値構成情報をストレージ・コントローラ内で測定された対応する現在の性能メトリックと比較する。この比較に基づいて、ステップ５０２は、１つまたは複数の仮想マシンの部分に割り当てられるセグメント数を調整することができる。たとえば、ある仮想マシンが、対応する所望の性能メトリックしきい値未満の性能メトリック測定値を有する場合に、その仮想マシンに関連するキャッシュ・メモリの部分は、キャッシュ・メモリの１つまたは複数の追加セグメントの割当を必要とする可能性がある。あるいは、たとえば、測定される特定の性能メトリックに依存して、しきい値を超えることが、特定の仮想マシンに割り当てられるセグメント数を減らす理由を示す場合がある。追加のセグメントが要求される場合には、現在割り当てられていないセグメントが使用可能である場合に、そのセグメントを利用することができる。現在割り当てられていないセグメントが使用可能ではない場合には、他の仮想マシンに現在割り当てられている１つまたは複数のセグメントを、割当解除し、その後、追加のキャッシュ・メモリ・セグメントを要求する仮想マシンの部分に再割当して、その所望の性能メトリックしきい値を満足することができる。
【００３１】
図６は、特定の仮想マシンに追加のキャッシュ・メモリ・セグメントを割り当てるための、機能強化されたストレージ・コントローラ（図１および２の機能強化されたストレージ・コントローラ１０６など）内での処理の例示的な追加の詳細を説明する流れ図である。ステップ６００では、ストレージ・コントローラが、現在割り当てられていないキャッシュ・メモリ・セグメントのプールからの十分なセグメントが、割当のために使用可能であるかどうかを判定する。そうではない場合には、ステップ６２０が、追加のキャッシュ・セグメントを必要とする仮想マシンへの再割当を可能にするために割当解除することのできる、他の仮想マシンの部分に現在割り当てられている１つまたは複数のセグメントを突き止めるために動作可能である。そのように割当解除すべき追加のキャッシュ・セグメントを突き止めた後に、ステップ６２０は、他の仮想マシンから識別されたセグメントを割当解除し、これらを現在は割り当てられていないものにし、したがって、これらを追加セグメントを必要とする仮想マシンに再割当することを可能にもする。その後、処理は、ステップ６００にループ・バックして、十分なセグメントが、今や再割当に使用可能であるかどうかを判定する。
【００３２】
十分な使用可能なセグメントが突き止められ、割当解除された時に（ステップ６２０の動作によって）、ステップ６０２は、ライト・バック・キャッシュ・モードを利用するために、仮想マシンの部分の現在の最後のセグメントを再構成する。最後のセグメントは、以前にはライト・スルー・キャッシュ・モードを利用するように構成されていたので、データをポストしまたはフラッシュする必要はない。そうではなく、キャッシュ・セグメントを、単にライト・バック・モードでの利用のために再構成することができる。次に、ステップ６０４は、仮想マシンのために１つまたは複数の追加のセグメントを割り当て（新たに割当解除／解放されたセグメントから）、新たに割り当てられたセグメントを、追加のキャッシュ・セグメントを必要とする仮想マシンのキャッシュ・メモリの部分に割り当てられたセグメントのシーケンスに付加する。その後、ステップ６０６は、新たに割り当てられたセグメントを、ライト・バック・キャッシュ・セグメントとしての使用のために構成し、ステップ６０８は、必要な場合に、部分内のセグメントのシーケンスの新たな最後のセグメントを、その後にすばやく割当解除できるようにもするために、ライト・スルー・セグメントとして構成する。
【００３３】
図７は、追加のセグメントを必要とする仮想マシンへの再割当のために使用可能にするために割当解除できる、他の仮想マシンからのセグメントを突き止める、図６のステップ６２０の処理の例示的な追加の詳細を説明する流れ図である。図７の方法は、コンピューティング・デバイス上の仮想マシンの現在の構成に基づいて、および／またはさまざまな仮想マシンの現在の性能に基づいて、割当解除することのできるセグメントを突き止めるためにコンピューティング・デバイス上で現在動作している仮想マシンのキャッシュ・メモリ部分を通って反復する。考慮すべき最初の仮想マシンについて、ステップ７００は、１つまたは複数の性能メトリックしきい値を対応する現在の性能メトリック測定値と比較する。性能メトリック比較に基づいて、ステップ７０２は、仮想マシンが、現在、割当解除できる、キャッシュ・メモリのその部分へ割り当てられた過剰なセグメントを有するかどうかを判定する。そうではない場合には、ステップ７１２は、コンピューティング・デバイス上で現在動作している別の仮想マシンをチェックするために準備し、処理は、ステップ７００にループ・バックして継続して、さらなる性能メトリック比較を実行する。ステップ７０２が、仮想マシンが、性能測定比較に基づいてその部分に現在割り当てられている過剰なセグメントを有すると判定される場合には、次に、ステップ７０４は、この仮想マシンに現在割り当てられているセグメント数が、この仮想マシンについて構成された最小割当を超えるかどうかを判定する。そうでない場合には、ステップ７１２は、次の仮想マシンをチェックするために準備するように（上で説明したように）動作可能であり、処理は、ステップ７００にループ・バックして継続する。そうでない場合には、この仮想マシンは、キャッシュ・メモリのその部分に過剰に割り当てられたセグメントを有し、ステップ７０６は、１つまたは複数の過剰なセグメントを割当解除し、これによって、他の仮想マシンへの再割当のためにこれらのセグメントを解放する。
【００３４】
図８は、特定の仮想マシンに関連するキャッシュ・メモリの部分に現在割り当てられている１つまたは複数のセグメントを割当解除するために必要な処理の例示的な追加の詳細を説明する流れ図である。図８の処理を、図７のステップ７０６に関して上で説明したように呼び出すことができ、あるいは、コンピューティング・デバイスからの仮想マシンの終了または除去など、これらのセグメントを割当解除することができる他の条件で呼び出すことができる。ステップ８００は、割当解除が、仮想マシンに現在割り当てられている複数のセグメントを割当解除することを試みるかどうかを判定する。そうでない場合には、処理は、下で説明するステップ８０４で継続される。そうである場合には、ステップ８０２は、ライト・バック使用のために現在構成されている、割当解除されるセグメント内に格納されたすべての「ダーティ」データをポストしまたはフラッシュする。その後、ステップ８０４は、この仮想マシンに関連するキャッシュ・メモリの部分から１つまたは複数のセグメントを割当解除する。ステップ８０６は、ライト・スルー・キャッシュ・セグメントとしての使用のために、セグメントのシーケンス（ある場合）の新しい最後のセグメントを再構成する。セグメントが、以前にライト・バック・キャッシュ動作のために構成されていた場合には、ステップ８０６は、新しい最後のセグメントに現在格納されているすべての「ダーティ」データが、まず、ストレージ・コントローラに結合された永続ストレージ・デバイスにフラッシュされまたはポストされることをも保証する。
【００３５】
当業者は、図３から８に関して上で説明した方法などの完全に機能する方法で提示できる多数の追加のステップおよび同等のステップをたやすく認めるであろう。そのような追加のステップおよび同等のステップは、本明細書では、この議論の単純さおよび簡潔さのために省略される。
【００３６】
本発明を、図面および前述の説明で図示し、説明したが、そのような図示および説明は、例示的であり、性質において制限的ではないと解釈されなければならない。本発明の一実施形態およびその些細な変形形態が、図示され、説明された。具体的には、例示的なソフトウェア実施形態またはファームウェア実施形態として図示され説明された特徴を、カスタマイズされた論理回路として同等に実施することができ、逆も同様である。保護は、本発明の趣旨に含まれるすべての変更および修正について望まれる。当業者は、本発明の範囲に含まれる上で説明した実施形態の変形形態を了解するであろう。その結果、本発明は、上で論じられた特定の例および図示に限定されるのではなく、次の特許請求の範囲およびその同等物によってのみ限定される。
【図１】
2014021972.tif 000003
【図２】
2014021972.tif 000004
【図３】
2014021972.tif 000005
【図４】
2014021972.tif 000006
【図５】
2014021972.tif 000007
【図６】
2014021972.tif 000008
【図７】
2014021972.tif 000009
【図８】
2014021972.tif 000010