(57)【特許請求の範囲】
【請求項１】
仮想マシン上に仮想デスクトップを提供する仮想デスクトップインフラストラクチャをサポートするコンピュータシステムであって、
複数のホストを含むクラスタであって、各前記ホストがストレージシステムとストレージマネージャとを有する、前記クラスタと、
前記クラスタにおける前記複数のホスト上の仮想マシンにより提供される複数の仮想デスクトップを管理するように構成された仮想デスクトップ管理サーバと
を備え、
前記仮想デスクトップ管理サーバがプロビジョニングマネージャを含み、前記プロビジョニングマネージャが、
前記仮想デスクトップのデスクトッププールの種類を決定し、ここで、前記デスクトッププールの種類は、一組のプールパラメータに関連しており、
前記デスクトッププールの種類に関連する前記プールパラメータに基づいて仮想共有ストレージの構成設定を前記ストレージマネージャに通信することにより、前記クラスタにおける各前記ホストの前記ストレージマネージャを使って仮想共有ストレージをプロビジョンし、ここで、構成設定は、
前記仮想共有ストレージにおいて重複排除機能を有効化するかどうか、
前記仮想共有ストレージにおいてインライン圧縮を有効化するかどうか、
前記仮想共有ストレージにおける冗長レベル、および
書き込みがコミットされているかどうかに関係なく直ちに、または書き込みが安定した媒体にコミットされた後にのみ、書き込み認識を発行するかどうか
のうちの１つまたは複数を含み、
前記クラスタにおける各前記ホストに複数の仮想マシンをプロビジョンし、ここで、前記仮想マシンは、前記デスクトッププールの種類の複数の仮想デスクトップを実行するように構成されており、
前記仮想共有ストレージを使用する際に前記仮想マシンのストレージパフォーマンスを示す第一のストレージパフォーマンスベンチマーク結果を前記仮想マシンの各々から受け取り、
前記第一のストレージパフォーマンスベンチマーク結果が前記デスクトッププールの種類に関して指定された閾値を満たすか否かを判断し、
前記第一のストレージパフォーマンスベンチマーク結果が前記閾値を満たさない場合、（ａ）前記クラスタ上の前記仮想共有ストレージの構成設定を変更すること、および（ｂ）前記ストレージマネージャに割当てられるプロセッサコアまたはランダムアクセスメモリ（ＲＡＭ）の割当てを変更することのうちの少なくとも一方を繰り返し行うことにより前記仮想共有ストレージを最適化する最適化ループを実行する
ように構成されている、コンピュータシステム。
【請求項２】
請求項１に記載のコンピュータシステムにおいて、
前記プロビジョニングマネージャが、
前記少なくとも１つの仮想マシンの各々から第二のストレージパフォーマンスベンチマーク結果を受け取り、
前記第二のストレージパフォーマンスベンチマーク結果が前記閾値を満たすか否かを判断し、
前記第二のストレージパフォーマンスベンチマーク結果が前記閾値を満たさない場合、前記ホストの前記クラスタ上の前記仮想共有ストレージの構成設定を変更する
ようにさらに構成されている、コンピュータシステム。
【請求項３】
請求項１に記載のコンピュータシステムにおいて、
前記第一のストレージパフォーマンスベンチマーク結果が前記閾値を満たさない場合、前記プロビジョニングマネージャが、各ホストに関連する前記仮想マシンの数を調整するように構成されている、コンピュータシステム。
【請求項４】
請求項１に記載のコンピュータシステムにおいて、
前記ストレージマネージャが仮想ストレージアプライアンスである、コンピュータシステム。
【請求項５】
請求項４に記載のコンピュータシステムにおいて、
動的リソース分散機能により１つ又は複数の仮想マシンが前記仮想ストレージアプライアンスをホストするハイパーバイザとは異なるハイパーバイザに配置される場合、前記プロビジョニングマネージャは、一つ又は複数の仮想マシンが前記仮想ストレージアプライアンスをホストする前記ハイパーバイザ上に共同配置されるように一つ又は複数の仮想マシンを定期的に再テザリングするように構成されている、コンピュータシステム。
【請求項６】
請求項１に記載のコンピュータシステムにおいて、
前記プロビジョニングマネージャが、前記仮想マシンの各々に第一のストレージパフォーマンスベンチマーク結果をリクエストするようにさらに構成されている、コンピュータシステム。
【請求項７】
請求項１に記載のコンピュータシステムにおいて、
前記第一のストレージパフォーマンスベンチマーク結果が、１秒当たりの入力／出力動作回数とレイテンシの測定値とのうちの少なくとも一方を表す、コンピュータシステム。
【請求項８】
少なくとも１つのコンピュータ可読ストレージ媒体に埋め込まれたコンピュータ実行可能命令を有する少なくとも１つのコンピュータ可読ストレージ媒体であって、コンピュータの少なくとも１つのプロセッサにより実行された時に、前記コンピュータ実行可能命令が前記少なくとも１つのプロセッサに、
前記コンピュータが、仮想デスクトップのデスクトッププールの種類を決定し、ここで、前記デスクトッププールの種類は、一組のプールパラメータに関連しており、
前記コンピュータが、前記デスクトッププールの種類に関連する前記プールパラメータに基づいて仮想共有ストレージの構成設定をストレージマネージャに通信することにより、クラスタにおける各ホストの前記ストレージマネージャを使って仮想共有ストレージをプロビジョンし、ここで、構成設定は、
前記仮想共有ストレージにおいて重複排除機能を有効化するかどうか、
前記仮想共有ストレージにおいてインライン圧縮を有効化するかどうか、
前記仮想共有ストレージにおける冗長レベル、および
書き込みがコミットされているかどうかに関係なく直ちに、または書き込みが安定した媒体にコミットされた後にのみ、書き込み認識を発行するかどうか
のうちの１つまたは複数を含み、
前記コンピュータが、前記クラスタにおける各前記ホストに複数の仮想マシンをプロビジョンし、ここで、前記仮想マシンは、前記デスクトッププールの種類の複数の仮想デスクトップを実行するように構成されており、
前記コンピュータが、前記仮想共有ストレージを使用する際に前記仮想マシンのストレージパフォーマンスを示す第一のストレージパフォーマンスベンチマーク結果を前記仮想マシンの各々から受け取り、
前記コンピュータが、前記第一のストレージパフォーマンスベンチマーク結果が前記デスクトッププールの種類に関して指定された閾値を満たすか否かを判断し、
前記コンピュータが、前記第一のストレージパフォーマンスベンチマーク結果が前記閾値を満たさない場合、ａ）前記クラスタ上の前記仮想共有ストレージの構成設定を変更すること、および（ｂ）前記ストレージマネージャに割当てられるプロセッサコアまたはランダムアクセスメモリ（ＲＡＭ）の割当てを変更することのうちの少なくとも一方を繰り返し行うことにより前記仮想共有ストレージを最適化する最適化ループを実行する、少なくとも１つのコンピュータ可読ストレージ媒体。
【請求項９】
仮想マシン上に仮想デスクトップを提供する仮想デスクトップインフラストラクチャのプロビジョニングのための、コンピュータにより実施される方法であって、
前記コンピュータが、前記仮想デスクトップのデスクトッププールの種類を決定し、ここで、前記デスクトッププールの種類は、一組のプールパラメータに関連しており、
前記コンピュータが、ホストのクラスタに仮想共有ストレージをプロビジョンすることであって、前記デスクトッププールの種類に関連する前記プールパラメータに基づいて前記仮想共有ストレージの構成設定を提供することを含む、前記仮想共有ストレージをプロビジョンすること、ここで、構成設定は、
前記仮想共有ストレージにおいて重複排除機能を有効化するかどうか、
前記仮想共有ストレージにおいてインライン圧縮を有効化するかどうか、
前記仮想共有ストレージにおける冗長レベル、および
書き込みがコミットされているかどうかに関係なく直ちに、または書き込みが安定した媒体にコミットされた後にのみ、書き込み認識を発行するかどうか
のうちの１つまたは複数を含み、
前記コンピュータが、前記クラスタにおける各前記ホストに複数の仮想マシンをプロビジョンすることであって、前記仮想マシンは、前記デスクトッププールの種類の複数の仮想デスクトップを実行するように構成されている、前記複数の仮想マシンをプロビジョンすること、
前記コンピュータが、前記仮想共有ストレージを使用する際に前記仮想マシンのストレージパフォーマンスを示す第一のストレージパフォーマンスベンチマーク結果を前記仮想マシンの各々から受け取ること、
前記コンピュータが、前記第一のストレージパフォーマンスベンチマーク結果が前記デスクトッププールの種類に関して指定された閾値を満たすか否かを判断すること、
前記コンピュータが、前記第一のストレージパフォーマンスベンチマーク結果が前記閾値を満たさない場合、前記仮想共有ストレージの構成設定を繰り返し変更すること、ストレージマネージャに割当てられるプロセッサコアまたはランダムアクセスメモリ（ＲＡＭ）の割当てを変更すること、および前記クラスタにおける各ホスト上の仮想マシンの数を調整することのうちの少なくとも一つを行うことにより前記仮想共有ストレージを最適化する最適化ループを実行すること、
を含む方法。
【請求項１０】
請求項９に記載の方法において、
前記コンピュータが、前記少なくとも１つの仮想マシンの各々から第二のストレージパフォーマンスベンチマーク結果を受け取ること、
前記コンピュータが、前記第二のストレージパフォーマンスベンチマーク結果が前記閾値を満たすか否かを判断すること、
前記コンピュータが、前記第二のストレージパフォーマンスベンチマーク結果が前記閾値を満たさない場合、前記ホストのクラスタ上の前記仮想共有ストレージの構成設定を変更すること、
をさらに含む方法。
【請求項１１】
請求項９に記載の方法において、
前記仮想共有ストレージは、仮想ストレージアプライアンスによって提供されるものであり、方法は、前記コンピュータが、動的リソース分散機能により１つ又は複数の仮想マシンが前記仮想ストレージアプライアンスをホストするハイパーバイザとは異なるハイパーバイザに配置される場合、一つ又は複数の仮想マシンが前記仮想ストレージアプライアンスをホストする前記ハイパーバイザ上に共同配置されるように一つ又は複数の仮想マシンを定期的に再テザリングすることをさらに含む、方法。
【請求項１２】
請求項９に記載の方法において、
前記コンピュータが、前記仮想共有ストレージを、前記クラスタの中の各ホストに関連する仮想化ソフトウェアに接続することをさらに含む、方法。
【請求項１３】
請求項９に記載の方法において、
第一のストレージパフォーマンスベンチマーク結果を受け取ることが、１秒当たりの入力／出力動作回数とレイテンシの測定値とのうちの少なくとも一方を受け取ることを含む、方法。
【請求項１４】
請求項９に記載の方法において、構成設定は、
前記デスクトッププールの種類が読み取り専用である場合、書き込みがコミットされているかどうかに関係なく、直ちに書き込みを認識するように前記仮想共有ストレージを構成すること、
前記デスクトッププールの種類が通常である場合、書き込みがコミットされた後にのみ、書き込みを認識するように前記仮想共有ストレージを構成することをさらに含む、方法。
【請求項１５】
請求項９に記載の方法において、構成設定は、
前記仮想デスクトップがマスタの仮想マシンオペレーティングシステムイメージに基づくとともに、各仮想デスクトップがコピーオンライト動作に基づいて時間と共に増大する個々のデルタファイルに関連している場合、前記仮想共有ストレージにおける重複排除を無効化し、
そうでない場合には、前記仮想共有ストレージにおける重複排除を有効化することを更に含む、方法。
【発明の詳細な説明】
【背景技術】
【０００１】
仮想デスクトップインフラストラクチャ（ＶＤＩ：Ｖｉｒｔｕａｌ  Ｄｅｓｋｔｏｐ  Ｉｎｆｒａｓｔｒｕｃｔｕｒｅ）とは、コンピュータ仮想化技術を使って、完全な集中管理デスクトップをユーザに提供するシステムを指す。ＶＤＩは、多くのユーザのための多くの独立したコンピューティング環境を作るために使用される。デスクトップのユーザは、同様のソフトウェアとコンピューティングのニーズに基づいてグループにまとめられてもよい。デスクトップ自体もこれに対応して「デスクトッププール」にまとめられてもよく、これを単独のエンティティとしてプロビジョン、管理、削除を行うことができる。ＶＤＩでは、各デスクトップがユーザに、そのユーザに割り当てられた仮想マシン（ＶＭ：Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）からエクスポートされる。デスクトッププールは計算リソース、メモリ、ネットワーク、ストレージ（これらに限定されない）を含むデータセンタ内のリソースに関連付けられる。
【０００２】
データセンタ内のストレージは時々、デスクトッププール間で共有される。既知の共有ストレージは、ストレージエリアネットワーク（ＳＡＮ：Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ネットワークアタッチトストレージ（ＮＡＳ：Ｎｅｔｗｏｒｋ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ）、およびその他同様のシステムによって提供されてもよい。既知の共有ストレージシステムでは本質的に、ストレージ動作のレイテンシが長くなり、これは、ストレージシステムがデスクトッププールに関連付けられた仮想マシンをホストするコンピュータシステム、すなわち「ホスト」から離れていることによる。既知の共有ストレージシステムに代わるものが仮想共有ストレージであり、これは、あるクラスタ内の各ホストのローカルストレージを使って抽象化ストレージレイヤを作る。ローカルストレージではレイテンシが短縮され、抽象化ストレージレイヤは従来の共有ストレージにより提供されるものと同様の利点を提供する。
【０００３】
仮想共有ストレージは、従来の共有ストレージを不要とするが、あるクラスタ内の各ホストを個別に管理して、仮想共有ストレージのプロビジョニングと構成を行うことが必要となる。さらに、仮想共有ストレージのパフォーマンスを改善するように各ホストを構成するには最適化の問題が生じ、これは、クラスタのパフォーマンスを測定するために必要な時間と、各ホストを別々に構成するために必要な作業によって、時間がかかり、かつ面倒でもある。そこで、仮想共有ストレージに使用するためのＶＤＩをプロビジョンする自動化されたシステムと方法が求められている。
【発明の概要】
【課題を解決するための手段】
【０００４】
本明細書に記載の方法、コンピュータ可読ストレージ媒体、およびシステムは、仮想共有ストレージを有する仮想デスクトップインフラストラクチャのプロビジョニングを容易にする。プロビジョニングマネージャは、あるクラスタのホスト間に仮想共有ストレージをプロビジョンする。プロビジョニングマネージャは、ホストクラスタの中の各ホストに仮想ストレージリソースをプロビジョンする。プロビジョニングマネージャは、仮想ストレージアプライアンス（ＶＳＡ：Ｖｉｒｔｕａｌ  Ｓｔｏｒａｇｅ  Ａｐｐｌｉａｎｃｅ）またはその他のハイパーバイザベースのクラスタストレージ機能をデプロイしてもよい。プロビジョニングマネージャは、各ホストからストレージパフォーマンスベンチマークを受け取り、ストレージパフォーマンスベンチマークの結果が事前設定された閾値を満たさない場合に、そのホストクラスタに対する最適化を行うことによって、仮想共有ストレージを最適化する。
【図面の簡単な説明】
【０００５】
【図１】仮想共有ストレージを有する例示的な仮想デスクトップインフラストラクチャ（ＶＤＩ）のブロック図である。
【図２】図１のＶＤＩに仮想マシンをデプロイするための例示的な方法のフローチャートである。
【発明を実施するための形態】
【０００６】
図１は例示的な仮想デスクトップインフラストラクチャ（ＶＤＩ）１００であり、これは、まとめてクラスタ１１６と呼ばれる物理的コンピュータシステム、すなわちホスト１１０、１１２、１１４の上の仮想共有ストレージと複数の仮想マシン（ＶＭ）１０５を有する。各ＶＭ  １０５は、ＶＭ  １０５のユーザに「デスクトップ」（図示せず）を提供する。デスクトップは、ＶＭ内で実行されるゲストオペレーティングシステムとアプリケーションによって提供される対話型のユーザ環境であり、かつ一般にグラフィカルディスプレイを含むが、他の出力、例えば音声、インディケータランプ、触覚フィードバック等を含んでいてもよい。デスクトップはまた、デバイス入力、例えばキーボードやマウス入力等の形態でのユーザ入力を受け入れる。ユーザの入力／出力に加えて、デスクトップはデバイスデータ、例えばリモートユーザにローカルのＦＬＡＳＨメモリデバイスのための、またはローカルプリンタへの入力／出力を送受信してもよい。
【０００７】
各物理コンピュータ１１０、１１２、１１４は、ハードウェア１２０と、ハードウェア１２０上で動作する仮想化ソフトウェアまたはマネージャ１２４と、ハードウェア１２０上で仮想化ソフトウェア１２４によって実行される１つまたは複数のＶＭ  １０５と、を含む。仮想化ソフトウェア１２４は、したがって、論理的にハードウェア１２０とＶＭ  １０５の間に挟まれ、これらをインタフェースする。仮想化ソフトウェア１２４は、例えばシステムオンチップ、ファームウェア、ＦＰＧＡ等のように、ハードウェアに直接実装されてもよい。ハードウェア１２０は少なくとも１つのプロセッサ（図示せず）を含み、各プロセッサはマイクロプロセッサチップ上の実行ユニット、すなわち「コア」である。ハードウェア１２０はまた、一般的な揮発性ランダムアクセスメモリ（ＲＡＭ）であるシステムメモリ（図示せず）、ネットワークインタフェースポート（ＮＩＣ）、ストレージシステム１２２、およびその他のデバイスを含む。ストレージシステム１２２は、１つまたは複数の不揮発性ストレージデバイス（図示せず）、例えばハードディスクデバイス、ソリッドステートドライブ（ＳＳＤ）、およびその他を含んでいてもよい。仮想化ソフトウェア１２４は、ハイパーバイザと呼ばれることもあり、ハードウェアリソースを管理するソフトウェア構成要素と、物理デバイスを仮想化またはエミュレートして各ＶＭ  １０５のための仮想ディスク、仮想プロセッサ、仮想ネットワークインタフェース等の仮想デバイスを提供するソフトウェア構成要素を含む。各ＶＭは物理コンピュータシステムの抽象であり、マイクロソフト（Ｍｉｃｒｏｓｏｆｔ）Ｗｉｎｄｏｗｓ（登録商標）等のオペレーティングシステム（ＯＳ）とアプリケーションを含んでいてもよく、これらはそれぞれ「ゲストＯＳ」と「ゲストアプリケーション」と呼ばれ、「ゲスト」という用語はそれがＶＭ内にあるソフトウェアエンティティであることを示す。仮想化ストレージデバイスは、ゲストＯＳ、ゲストアプリケーション、ゲストファイルを保存するために使用される。仮想ディスク等の仮想化ストレージデバイスは、ストレージシステム１２２上で、１つまたは複数のデータストア内の仮想ディスクイメージファイルによってバックアップされてもよく、これはチャウラ他（Ｃｈａｗｌａ  ｅｔ  ａｌ．）の米国特許出願公開第２０１０／０００７０９７８号明細書に記載されており、その全体を参照によって本願に援用する。
【０００８】
各物理コンピュータ１１０、１１２、１１４は、それぞれのストレージシステム１２２の各々を管理するストレージマネージャ１２６を含む。ストレージマネージャ１２６は、ストレージシステム１２２を使用して仮想、または論理共有ストレージを含むストレージレイヤの抽象化を提供するように構成される。少なくとも１つのデータストアがストレージレイヤの抽象化によって提供されてもよく、これによって仮想ディスクイメージファイルが仮想共有ストレージ内に保存されてもよい。
【０００９】
物理コンピュータ１１０、１１２、１１４によりアクセス可能な共有ストレージによって、仮想化ソフトウェア１２４は、高い可用性という特徴、例えば物理コンピュータが故障した場合にＶＭ  １０５を再起動する能力を提供する。共有ストレージを使って、ＶＭ  １０５を１つの物理コンピュータから他のコンピュータへと移行させることができる。共有ストレージは一般に、ストレージエリアネットワーク（ＳＡＮ）、ネットワークアタッチトストレージ（ＮＡＳ）および／またはその両方によって提供されるため、仮想ディスクイメージは一般に、対応するＶＭが動作している物理コンピュータから離れて保存される。その結果、ストレージシステム１２２にとってのレイテンシよりはるかに長いレイテンシが生じる。仮想共有ストレージは、ストレージシステム１２２の使用中、共有ストレージのその他の特徴を組み合わせてレイテンシを短縮する。仮想ディスクイメージは、対応するＶＭ  １０５が動作している物理コンピュータに関してローカルに保存されてもよい。仮想ディスクイメージまたはその一部は、仮想共有ストレージのうちの、他の物理コンピュータに保存される他の領域に複製されてもよく、それによってデータ冗長性が提供される。ストレージマネージャ１２６は仮想共有ストレージを抽象化するため、仮想化ソフトウェア１２４は、仮想共有ストレージが非仮想共有ストレージであるかのように仮想共有ストレージと相互作用してもよい。
【００１０】
例えば、ストレージマネージャ１２６は、仮想ストレージアプライアンス（ＶＳＡ）として実装されてもよい。ＶＳＡは、各物理コンピュータ１１０、１１２、１１４上のＶＭ  １０５内で実行されて、ストレージクラスタを創出するソフトウェアである。ＶＳＡは、それぞれの物理コンピュータ１１０、１１２、１１４の各々のストレージシステム１２２と直接相互作用し、ローカルでホストされ、ストレージクラスタ内のストレージシステム１２２間で複製される論理ファイルシステムを提供することによって、仮想共有ストレージを提供する。
【００１１】
他の例として、ストレージマネージャ１２６は、仮想化ソフトウェア１２４によって仮想ストレージエリアネットワーク（ＶＳＡＮ：Ｖｉｒｔｕａｌ  Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）として実装されてもよい。より詳しくは、ストレージマネージャ１２６は、１つまたは複数のストレージシステム１２２を結合して、仮想ソフトウェア１２４によってアクセス可能なＶＳＡＮインタフェース、例えばｉＳＣＳＩを創出する。１つまたは複数のデータストアは、ＶＳＡＮ上の１つまたは複数の論理ディスク、すなわちＬＵＮに保存されてもよい。
【００１２】
仮想マシン管理サーバ（ＶＭＭＳ：Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ  Ｍａｎａｇｅｍｅｎｔ  Ｓｅｒｖｅｒ）１３０はソフトウェアインタフェース１３５を提供し、これによって、とりわけ、他のプログラムがＶＭＭＳ  １３０により管理される物理コンピュータ１１０、１１２、１１４上で動作中のＶＭ  １０５のライフサイクルを制御できるようにする。ＶＭＭＳ  １３０は、本明細書で具体的に記載されているもの以外のＶＭの管理と操作を提供してもよい。
【００１３】
仮想デスクトップ管理サーバ（ＶＤＭＳ：Ｖｉｒｔｕａｌ  Ｄｅｓｋｔｏｐ  Ｍａｎａｇｅｍｅｎｔ  Ｓｅｒｖｅｒ）１５０は、デスクトップ管理ソフトウェア１５２を実行する物理コンピュータシステムまたは仮想マシンであってもよい。例示的なＶＤＭＳは、プニート・チャウラ他（Ｐｕｎｅｅｔ  Ｃｈａｗｌａ，ｅｔ  ａｌ．）により２００６年３月３１日に出願された米国特許出願第１１／３９５，０１２号明細書に記載されている。デスクトップ管理ソフトウェア１５２は、コンピュータリソースのプールを管理して、一般にＣＰＵ、メモリ、通信ハードウェア（ネットワーク）を持つ複数のサーバを含むクラスタまたはクラスタ集合でＶＭ  １０５を動作させる。図１に示される実施形態において、デスクトップ管理ソフトウェア１５２は多数のモジュールを含み、多数のモジュールには管理コンソール１５４、プロビジョニングマネージャ１５６が含まれる。
【００１４】
デスクトップ管理ソフトウェア１５２は、ソフトウェアインタフェース１３５を使ってＶＭＭＳ  １３０とインタフェースし、ＶＭ  １０５を制御する。例えば、ＶＭＭＳ  １３０によって、デスクトップ管理ソフトウェア１５２は、（ａ）コンピュータ、ストレージ、およびネットワークリソースを検出し、（ｂ）自動的なＣＰＵおよびメモリ負荷分散等の機能を提供する論理計算プールを作り、（ｃ）ローカルまたは共有ストレージ上に１つまたは複数の仮想ディスクを有するＶＭ、例えばフルディスクまたはスパースディスクでのクローンを作り、（ｄ）ベース仮想マシンに固定されたＶＭを作り（例えば２０１１年５月１０日に認可された、「クローンコンピュータの同期とカスタム化（Ｓｙｎｃｈｒｏｎｉｚａｔｉｏｎ  ａｎｄ  ｃｕｓｔｏｍｉｚａｔｉｏｎ  ｏｆ  ａ  Ｃｌｏｎｅ  Ｃｏｍｐｕｔｅｒ）」と題する米国特許第７，９５１，４７０号明細書に記載され、これを参照によって本願に援用する）、（ｅ）個々のディスクのストレージ消費、単独ユニットとしての仮想マシンのストレージ消費、および仮想マシンファイルシステムのモニタリング（空きスペース、総スペース等）を含むがこれらに限定されないストレージサブシステムのモニタを行い、（ｆ）仮想マシン上の機力操作（すなわち、電源投入、電源遮断、中断、再開、チェックポイント等）を行い、（ｇ）仮想ディスクの１つのデータストアから別のものへのオフラインマイグレーションを実行し、（ｈ）ＶＭディスクがＶＭの動作中に移行されるホットストレージマイグレーションを実行し（例えば、米国特許出願公開第２００９／００３７６８０号明細書に記載され、これを参照によって本願に援用する）、（ｉ）帯域外通信チャネルを、仮想マシン内で実行されるソフトウェアプログラムに提供することができる。
【００１５】
管理コンソール１５４は、遠隔アクセス可能なユーザインタフェースを管理者に提供して、デスクトッププールの構成を管理する。１つの実施形態において、グラフィカルユーザインタフェースがハイパーテキストトランスファープロトコル（ＨＴＴＰ）を介してエクスポートされ、コモディティウェブブラウザによってアクセスされてもよい。あるいは、コマンドラインインタフェースまたはリッチクライアントをローカルまたは遠隔ユーザに提供できる。管理コンソール１５４によって、管理者は複数の機能を実行でき、例えば、（ａ）本明細書に記載するようなデスクトッププールを作り、（ｂ）デスクトッププールをＶＤＭＳに関連付け、（ｃ）デスクトッププールをマスタイメージに関連付け、（ｄ）ＶＭ状態ポリシを定義できる。
【００１６】
ＶＭ  １０５のユーザは一般に、そのジョブ機能、したがって、それらのデスクトップに必要なアプリケーションと構成の面で分類できる。例えば、エンジニアリング「プール」のユーザはＣＡＤ／ＣＡＭソフトウェアへのアクセスを必要とするかもしれず、会計プールのユーザは特定の会計ソフトウェアへのアクセスを必要とするかもしれない。ユーザデスクトップをこのようなユーザのグループ分けに沿った方法でまとめることが一般に有益であり、これによって例えば技術者によりアクセスされるコンピュータはエンジニアに必要なソフトウェアで構成され、会計士によりアクセスされるコンピュータは会計士によりアクセスされるソフトウェアで構成される。例えば、ＶＤＩシステム１００では、ユーザは特定のユーザプールに属する可能性があり、それに対応するＶＭ  １０５は対応するデスクトッププールに割り当てられてもよい。デスクトッププールは、管理可能な論理エンティティであり、これは同様に構成された複数のＶＭを含む。デスクトッププールの各ＶＭは、ＶＭに関連付けられたデルタディスクイメージと、プール内のすべてのデスクトップに共通の共通「マスタイメージ」（「テンプレート」と呼ばれる時もある）を有していてもよい。マスタイメージには、対応するユーザプールのメンバーにとって有益なソフトウェアがインストールされていてもよい。
【００１７】
デスクトッププールは２つの大きな分類、すなわち読み取り専用（ｎｏｎ−ｐｅｒｓｉｓｔｅｎｔ）と通常（ｐｅｒｓｉｓｔｅｎｔ）に分けることができる。読み取り専用デスクトッププールのＶＭ  １０５はステートレスであり、すなわちデスクトップの状態がユーザセッション後に毎回初期の状態に戻る。読み取り専用デスクトップの場合、仮想ディスクに書き込まれた変更はすべて、ユーザセッションの終了時に失われる。したがって、ユーザがログオフするたびに、デスクトップはその当初の「原」状態に戻る。ユーザが読み取り専用デスクトップのプールに割り当てられる場合、このユーザにはユーザによるログイン時にプール内にあるどのＶＭ  １０５が割り当てられてもよく、これはすべてが同じであるからである。読み取り専用デスクトップには、例えばデータ入力、情報キオスクまたはプロセスターミナル用等の多くのユースケースがある。
【００１８】
通常デスクトッププールのＶＭ  １０５はステートフルであり、すなわちデスクトップの状態は、その中のファイルとアプリケーションの状態も含め、保持される。通常デスクトップの場合、仮想ディスクに書き込まれた変更はすべて保存され、次のユーザセッションで利用できる。ハイブリッド状態もありえ、例えばある期間だけ保持されるが、定期的に「原」状態に復帰する。いくつかの実施形態において、デスクトップ管理者は、「原状復帰」動作がどの頻度で、またはどの条件下で行われるべきかを決定できる。
【００１９】
デスクトッププールのデータストレージのパフォーマンス要求は、プールの種類、すなわち読み取り専用と通常と、対応するユースケース、すなわちどのアプリケーションが使用されるかとのうちの少なくとも一方に応じて変化する。例えば、読み取り専用プールの場合、ＶＭ内のデータ破損は、いずれはＶＭの状態はすべて失われるため、致命的ではない。したがって、読み取り専用プールへのデータの書込みは、データがディスクに書き込まれたか否かを問わず、直ちに認識応答される。デスクトッププールのデータストレージのパフォーマンス要求は、１秒当たりの入力／出力動作の回数、すなわちＩＯＰＳと、他の既知のメトリクス、例えばレイテンシ、およびそのあらゆる計算、例えば平均または標準偏差とのうちの少なくとも一方で表現されてもよい。
【００２０】
プロビジョニングマネージャ１５６は、仮想共有ストレージのプロビジョニング、または作成と、物理コンピュータ１１０、１１２、１１４へのＶＭ  １０５のプロビジョニングを調整するように構成される。プロビジョニングマネージャ１５６には、管理コンソール１５４によって提供されるウェブインタフェースを介してアクセスされてもよい。プロビジョニングマネージャ１５６は、アプリケーションプログラミングインタフェース（ＡＰＩ）およびあらゆる適当な通信フレームワークのうちの少なくとも一方を使ってＶＭＭＳ  １３０、仮想化ソフトウェア１２４およびストレージマネージャ１２６のうちの少なくとも一方と通信する。
【００２１】
プロビジョニングマネージャ１５６は一般に、管理者によって、まだＶＭのない物理的コンピュータ、すなわち新品の物理コンピュータにＶＤＩ環境を確立するために使用される。しかしながら、プロビジョニングマネージャ１５６はまた、既に構成された物理コンピュータ上にＶＭを再プロビジョンすること、および既存のＶＤＩ環境のパフォーマンスを調整することのうちの少なくとも一方のためにも使用されてよく、これについては本明細書で詳しく説明する。
【００２２】
動作中、ユーザ、すなわち管理者は、クラスタ１１６のためのデスクトッププールの種類をプロビジョニングマネージャ１５６に示し、プロビジョニングマネージャ１５６はこれを受け取る。デスクトッププールの種類は、事前に決定されたデスクトッププールの種類の一覧から選択されてもよい。デスクトッププールの種類は、粗粒度型（例えば、読み取り専用と通常）であっても、細粒度型（例えば、通常エンジニアリングプール、読み取り専用データ入力プール、読み取り専用キオスクプール等）であってもよい。その他のプールパラメータ、例えば、いつマシンがそのマスタＯＳイメージにリセットするかを決定する「リフレッシュ」または「再構成」ポリシ等の、追加のプールパラメータも提供されてよい。これらのポリシは、ストレージをどのように構成すべきかに影響を与える。例えば、そのプールについて「ログオフ時にリフレッシュ」ポリシが選択されると、ユーザがデスクトップを再使用することはなく、セッションをまたいだファイルシステムの破壊は起こりえない。これに対して、「１４日ごとにリフレッシュ」または「電源切断時に再構成」は異なる意味を持ち、セッションをまたぐファイルシステムの破壊が可能となり、その延長で、基本となるストレージレイヤに対するより保守的なデータ管理ポリシを決定し、例えば、データ書込みの認識応答は、そのような書き込みが実際に安定した媒体にコミットされた後でのみ提供される。ストレージレイヤ（すなわち、仮想共有ストレージ）に関係するその他のプールパラメータには、イメージマネージャと、例えばヴイエムウェア社（ＶＭｗａｒｅ，Ｉｎｃ．）のＶｉｅｗ  Ｃｏｍｐｏｓｅｒ等のストレージオプティマイザとのうちの少なくとも一方がそのプールの基礎として使用されるか否か、がある。例えばＶｉｅｗ  Ｃｏｍｐｏｓｅｒは、マスタの仮想マシンＯＳイメージのクローンを作る。各クローンは、マスタイメージに対する「コピーオンライト」の動作に基づいて時間と共に増大するデルタファイルである。このようなクローンファイルの基本となる重複排除が可能なストレージシステム上での重複排除率は低い傾向がある。その結果、プールがＶｉｅｗ  Ｃｏｍｐｏｓｅｒクローンに基づいていれば、ＶＳＡまたは仮想ストレージシステムでは重複排除を有効化すべきではない。これに対して、「フルクローン」を使用すると、プールの各メンバーについてマスタＯＳイメージの完全なクローンが作られる。基本となるストレージシステムは、このようなプールの中の多くの共通ブロックを見つけることができるため、基本となる仮想ストレージシステムでは重複排除機能を有効化すべきである。仮想ストレージシステムがインライン圧縮を提供する場合、これは、ローカルストレージリソースを使用するプールについては有効化すべきであるが、ハイパーバイザホストに多くのディスクドライブがアタッチされているか、ストレージマネージャ１２６が中央ストレージアレイからＬＵＮＳをマウントしている場合、管理者は、十分なディスク帯域幅が利用できることを考え、このような圧縮を無効化してＣＰＵのオーバーヘッドを減らすことを選択してもよい。通常プールの場合、様々な冗長レベルが必要となりうる。このような冗長性を仮想ストレージレイヤに任意選択的に構成して、ディスク故障時に必要な復元力を提供するのに役立てることを選択してもよい。これらのブールパラメータはすべて、仮想ストレージレイヤの適正で最適な構成に関係している。
【００２３】
プロビジョニングマネージャ１５６は、必要なソフトウェア（例えば、ＶＳＡベースのストレージの場合はＶＳＡ）をデプロイすること、クラスタ内の物理コンピュータを特定すること、およびクラスタ内の各物理コンピュータの各ローカルストレージデバイスを特定することのうちの少なくとも一つによって、仮想共有ストレージを確立する。仮想共有ストレージの確立またはプロビジョニングには、必要に応じてクラスタ１１６の各物理コンピュータにソフトウェアや構成要素をインストールすることが含まれる。
【００２４】
各仮想共有ストレージモダリティ、例えばＶＳＡ、ＶＳＡＮは１つまたは複数の設定、構成オプション、可変数等を使って構成されてもよい。プロビジョニングマネージャ１５６は、１つまたは複数の設定をストレージマージャ１２６に通信することによって仮想共有ストレージを構成する。プロビジョニングマネージャ１５６によって通信される設定は、選択されたデスクトッププールの種類に基づいている。例えば、プロビジョニングマネージャ１５６は利用可能な各デスクトッププールの種類のためのプールごとの設定を有していてもよい。プールごとの設定は、仮想共有ストレージのパフォーマンスを改善するための構成可能なオプションを含んでいてもよい。したがって、プールごとの設定を各ストレージマージャ１２６に提供するプロセスは、仮想共有ストレージを「チューニングする」と言ってもよい。
【００２５】
これに加えて、設定は、ストレージシステム１２２の構成に基づいていてもよい。いくつかの実施形態において、ストレージシステム１２２はＳＳＤとハードドライブデバイスの両方を含んでいてもよい。このような実施形態では、ストレージシステム１２２はアクセス頻度のより高いデータ用にＳＳＤを使用するように最適化されてもよく、ハードドライブはアクセス頻度のより低いデータ用に使用されてもよい。
【００２６】
仮想共有ストレージが選択されたプールの種類に合わせてチューニングされた後、プロビジョニングマネージャ１５６は仮想共有ストレージをクラスタ１１６の中の各物理コンピュータ上の仮想化ソフトウェア１２４にエクスポーズする。仮想共有ストレージのエクスポーズは、ブロックデバイスをアタッチすること、ファイルシステムをマウントすることのうちの少なくとも一方を含んでいてもよい。プロビジョニングマネージャ１５６が仮想共有ストレージを確立した後、各物理コンピュータは、仮想化ソフトウェア１２４を介して、仮想共有ストレージへの読み書きを行うことができる。ストレージマネージャ１２６は、抽象化ストレージレイヤを仮想化ソフトウェア１２４に提供するため、仮想化ソフトウェア１２４は使用されている基本となる仮想共有ストレージモダリティまたはその構成を知らなくてよい。例えば、ＶＳＡ構成において、ＺＦＳファイルシステム（カリフォルニア州サンタクララのサン・マイクロシステムズ（Ｓｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓ）が設計）は、仮想化ソフトウェア１２４がわからなくても利用可能できる。
【００２７】
確立され、チューニングされた仮想共有ストレージにより、プロビジョニングマネージャ１５６は、クラスタ１１６の各物理コンピュータに１つまたは複数のＶＭをデプロイしてもよい。デプロイされたＶＭは、各プールの種類に関連するディスクイメージまたはテンプレートに基づいていてもよい。一般に、デプロイされた各ＶＭは、デプロイの時点では、デプロイされた他のＶＭと実質的に同じであり、そのため、このプロセスは「クローニング」とも呼ばれることがある。
【００２８】
物理コンピュータ上の各ＶＭ  １０５は独立した仮想リソース（例えば、ＣＰＵ、メモリ、ストレージデバイス）を有するが、独立した各仮想リソースは、それに対応する基本にある物理リソースに依存していてもよい。基本となる物理リソースには限りがあるため、これらはＶＭ間で共有しなければならない。したがって、仮想リソースのパフォーマンスは、対応する物理リソースのパフォーマンスと、同じ物理コンピュータ上の他のＶＭによる物理リソースの要求または使用に関連している。ストレージデバイスの場合、ストレージシステム１２６の中にあるような物理ストレージデバイスは、既知の、または決定可能な数のＩＯＰＳを実現できる。物理コンピュータ上のすべてのＶＭ  １０５間の正味ＩＯＰＳは、仮想共有ストレージが、データのキヤッシング、書込み動作の高度な融合、およびその他の技術のちの少なくとも一つを通じてＩＯＰＳ全体を向上させないかぎり、物理ストレージデバイスにより提供可能なＩＯＰＳの数と等しいかそれ以下である。このような改善は、本明細書で説明するように、ＶＤＩプールの種類と仮想共有ストレージを単独のプロビジョニング動作としてひとまとめにする能力によって可能となりうる。
【００２９】
プールのＶＭ  １０５が、ハイパーバイザクラスタ上で有効化される、ヴイエムウェア社（ＶＭｗａｒｅ，Ｉｎｃ．）のＤＲＳ（Ｄｙｎａｍｉｃ  Ｒｅｓｏｕｒｃｅ  Ｓｃｈｅｄｕｌｉｎｇ）等の動的リソース分散機能を有する場合、基本となる仮想ストレージレイヤ（すなわち、仮想共有ストレージ）は、クラスタ内の各ハイパバイザメンバーが仮想ストレージレイヤによってエクスポーズされる各データストアへの読み書きを確実に行えるように構成しなればならない。これにより、ＶＳＡストレージの場合に余分なステップが必要となり得、各ＶＳＡのデータストアがクラスタ内の各ハイパーバイザホストにマウントされる。この状況では、ＶＭは、ＶＭのデータストアがアタッチされている、ＶＳＡをホストするハイパーバイザとは異なるハイパーバイザに設置されてもよい。このようなＶＭの最適以下の設置は、プロビジョニングマネージャ１５６により、ＶＭが確実に、ＶＭのアタッチされているＶＳＡをホストするハイパーバイザ上にコロケートされるようにすることによって修正されうる。ＶＭを「再テザリングする」このプロセスは、まず仮想ストレージレイヤとＶＤＩプールがデプロイされた後で、プロビジョニングマネージャ１５６によって扱われなければならない。このような再テザリングは、Ｉ／Ｏのレイテンシの短縮と共有ネットワーク構成要素上の不必要なストレージトラフィックの回避にとって非常に重要である。プロビジョニングマネージャ１５６は、ＶＭを、これらがアタッチされているＶＳＡストレージをホストするハイパーバイザ上への移動させることによって、例えばヴイエムウェア社（ＶＭｗａｒｅ，Ｉｎｃ．）のｖＭｏｔｉｏｎまたはその他のライブマイグレーション技術またはノンライブマイグレーション技術を使って実現してもよい。このプロセスは継続的プロセスとなり、このような調整を、ＤＲＳが負荷平準化の問題に基づいて自己の調整を行う時であっても定期的に実行する。再テザリングにより、ＤＲＳが不適正に設置されたＶＭの数に時間の経過と共に与える影響が最小となる。再テザリングはまた、ハイパーバイザの故障によって影響を受ける可能性のあるＶＭの数も最小化し、これがなければ障害ドメインが最終的に各ハイパーバイザ上でホストされるマシンの数の２倍まで広がる。ＤＲＳがＶＤＩプール上で有効化されないと、ＶＭは自動的に正しいハイパーバイザ上にコロケートされることになり、それはこの設計では、ＶＭのＶＳＡストレージをホストするハイパーバイザだけが問題のデータベースにアクセスできるからである。
【００３０】
物理コンピュータ上のＶＭ  １０５の数が増えると、物理リソースに対する要求はこれに対応して増大する要求を受ける可能性がある。ストレージデバイスの場合、ユーザのエクスペリエンス、またはゲストＯＳ内のアプリケーションのパフォーマンスは、ある物理コンピュータ上で動作するＶＭの数が多すぎると劣化するかもしれない。反対に、ＶＭが少なすぎる物理コンピュータは利用率が低く、したがって非効率的である。十分なパフォーマンスと利用率が得られるように物理コンピュータ上のＶＭ  １０５の数を決定し、仮想共有ストレージを構成することは、多変数最適化の問題である。
【００３１】
ＶＭ、またはゲストＯＳにとっての十分なストレージパフォーマンスは、最低ＩＯＰＳ数として定義されてもよい。デスクトッププールの種類によって、最低ＩＯＰＳ数が決まってもよい。あるいは、管理者が、例えばデスクトッププールの種類が提供された時に、最低ＩＯＰＳ数を入力してもよい。当初、プロビジョニングマネージャ１５６は発見教授法を使って、各物理コンピュータ上にデプロイするＶＭの初期数を決定してもよい。次に、最適化ループを使って最適化の問題が解決され、最適化の問題に対する解決策に基づいて各物理コンピュータに多数のＶＭ  １０５がデプロイされる。
【００３２】
ＶＤＩシステム１００のある実施例において、プロビジョニングマネージャ１５６は、デプロイされるＶＭ  １０５の数を、デプロイされた各ＶＭ  １０５の同時ベンチマークを調整することによって最適化する。より詳しくは、プロビジョニングマネージャ１５６は、プロビジョニングマネージャ１５６が各ＶＭ  １０５に電源投入されるようにした後で、各ＶＭ  １０５内のエージェント１６０（図１にはエージェント１６０が１つだけ示されている）と通信する。エージェント１６０は、ゲストＯＳによって実行され、ＶＭＭＳ  １３０およびＶＤＭＳ  １５０のうちの少なくとも一つからのコマンドに応答するように構成されるソフトウェアである。エージェント１６０は、ストレージパフォーマンスベンチマーク、例えばカリフォルニア州サンタクララのインテル・コーポレーション（Ｉｎｔｅｌ（登録商標）Ｃｏｒｐｏｒａｔｉｏｎ）から入手可能なＩｏｍｅｔｅｒを起動するように命令される。エージェント１６０はストレージパフォーマンスベンチマークソフトウェアからベンチマーク結果データを収集し、この結果データをプロビジョニングマネージャ１５６に報告する。それゆえ、プロビジョニングマネージャ１５６は、物理コンピュータ上のすべてのＶＭ  １０５が利用可能なストレージパフォーマンスを利用しようとしている時の各ＶＭの最大ストレージパフォーマンス、すなわち最大ＩＯＰＳを決定できる。
【００３３】
ベンチマークの結果に基づき、プロビジョニングマネージャ１５６はクラスタ１１６に対して最適化を実行してもよい。例えば、プロビジョニングマネージャ１５６は、各物理コンピュータ上のＶＭ  １０５の数を増減してもよい。プロビジョニングマネージャ１５６はまた、クラスタ１１６の最適化を実行するようにストレージマネージャ１２６の構成を変えてもよい。例えば、ストレージマネージャ１２６がＶＳＡであれば、各ＶＳＡには多数のプロセッサコアとＲＡＭが割り振られてもよい。例えば、各ＶＳＡには２つのプロセッサコアと２ギガバイトのＲＡＭが割り振られてもよい。ベンチマークの結果に基づき、プロビジョニングマネージャ１５６はプロセッサコアの数およびＲＡＭの大きさのうちの少なくとも一方を増減してもよい。
【００３４】
クラスタ１１６の最適化は、一般的にベンチマークの結果に応答して、ベンチマーキングとクラスタ１１６の最適化の実行を繰り返す必要のある多重繰り返しプロセスであってもよい。１つの実施形態において、最適化は山登りアルゴリズムを使って実現され、段階的な調整が実行され、試験されて、最適なソリューションが決定される。他の実施形態では、どのような適当なアルゴリズムを使って、最適化問題に対する解決策を決定してもよい。
【００３５】
各ベンチマーキングステップは実行に何時間もかかり、したがって、クラスタ１１６の最適化には１日またはそれ以上かかるかもしれない。プロビジョニングマネージャ１５６は、複数の可変数と構成の効率的な試験を容易にする。例えば、ＶＳＡに関連する２つのみの可変数がプロセッサコアの数（２、４、６）とＲＡＭの大きさ（２ＧＢ、４ＧＢ、８ＧＢ、１６ＧＢ）であれば、プロセッサコアとＲＡＭの大きさの考えられる組み合わせは１２通りある。プロビジョニングマネージャ１５６は、各組み合わせについての試験を自動で行う。
【００３６】
プロビジョニングマネージャ１５６は、ＶＭがまだデプロイされていない物理コンピュータのクラスタについて動作するように説明されているが、理解すべき点として、プロビジョニングマネージャ１５６は、すでにデプロイされたＶＭに対して動作して、既存のシステムを最適化してもよい。さらに、プロビジョニングマネージャ１５６は、仮想共有ストレージ構成の変更を受け取り、これらの変更を各ストレージマネージャ１２６に転送してもよい。
【００３７】
図２は、仮想共有ストレージを有するＶＤＩ環境、例えばＶＤＩ環境１００でＶＭをデプロイし、最適化する例示的な方法２００のフローチャートである。方法２００は、ＶＤＭＳ  １５０（図１に示す）およびＶＭＭＳ  １３０（図１に示す）のうちの少なくとも一方で使用してもよい。方法２００は、１つまたは複数のメモリ、例えば１つまたは複数のコンピュータ可読媒体に保存された複数のコンピュータ実行可能な命令に具体化される。命令は、１つまたは複数のプロセッサによって、本明細書に記載の機能が行われるように実行される。
【００３８】
本明細書により詳しく説明するように、方法２００は、プロビジョニングマネージャ、例えばプロビジョニングマネージャ１５６（図１に示す）によって、ホクラスタ内のホスト間に仮想共有ストレージを提供し、仮想共有ストレージをデスクトッププールの種類に基づいてチューニングし、仮想共有ストレージを各ホスト上の仮想化ソフトウェアに接続し、１つまたは複数のＶＭを各ホストにインストールし、各ＶＭのストレージパフォーマンスのベンチマークとベンチマーク結果に基づくクラスタの調整によってクラスタを最適化することによって実施または実行される。
【００３９】
まず、デスクトッププールの種類がプロビジョニングマネージャによって受け取られる（２１０）。プールの種類は、事前に決定されたプールの種類の一覧から選択されてもよい。プールの種類はまた、プロビジョニングマネージャに関連付けられるウェブインタフェースを使って管理者により選択されてもよい。デスクトッププールの種類は、他のプール関連のパラメータと他の仮想共有ストレージパラメータおよびベンチマーキングオプションに関連付けられてもよく、これらはまとめてプロビジョニングテンプレートを形成する。このようなテンプレートは、完全なプロビジョニング動作のためのレシピに含められてもよい。
【００４０】
仮想共有ストレージは、クラスタ内の１つまたは複数のホストを使ってプロビジョンされる（２２０）。より詳しくは、プロビジョニングマネージャは、ソフトウェアおよび命令のうちの少なくとも一方を各ホストのストレージマネージャに転送して、仮想共有ストレージ抽象化レイヤが作られるようにしてもよい。仮想共有ストレージは、デスクトッププールの種類に基づいて構成される（２３０）。例えば、プールの種類が読み取り専用である場合、仮想共有ストレージは、書込みを遅延させるが、書込みの確認送信は直ちに行うように構成されてもよい。
【００４１】
仮想共有ストレージがクラスタ内の各ホストの仮想化マネージャ、例えば仮想化ソフトウェア１２４に接続される（２４０）。より詳しくは、仮想共有ストレージは、ファイルシステムと、ブロックデバイス（例えばＬＵＮ）とのうちの少なくとも一方を含んでいてもよい。接続されると、仮想化マネージャは、仮想共有ストレージから、または仮想共有ストレージへの読み書きを行ってもよい。プロビジョニングマネージャは、仮想ディスクイメージを保存するために仮想共有ストレージ内に１つまたは複数のデータストアを作ってもよい。
【００４２】
プロビジョニングマネージャは、例えばＶＭＭＳ  １３０を使って、１つまたは複数のＶＭをクラスタ内の各ホストにプロビジョンする（２５０）。提供される初期のＶＭの数は、最低閾値ＩＯＰＳを提供している間に各ホスト上で動作可能なＶＭの数を推測するために使用される発見的教授法に基づく。
【００４３】
プロビジョニングマネージャは、各ゲストＯＳ内で動作中のエージェントと通信し、エージェントにストレージパフォーマンスベンチマークを開始するように命令することによって、各ＶＭにストレージパフォーマンスベンチマークをリクエストする（２６０）。ベンチマークは、クラスタの各ＶＭ内で略同時に実行される。プロビジョニングマネージャは、各エージェントからベンチマーク結果を受け取る（２７０）。プロビジョニングマネージャは、ベンチマーク結果が所定の許容範囲内、例えば＋／−１、２、３、４、５、１０、１５パーセント等で最低閾値に適合するか否かを判断する（２８０）。最低閾値は、プールの種類に基づいて予め決定されても、ユーザにより入力されてもよい。各ＶＭからのベンチマーク結果の平均、下限、または上限を使って、ベンチマーク結果が最低閾値に適合し、またはこれを超えるか否かを判断してもよい。
【００４４】
閾値が所定の許容範囲内で満たされない場合、プロビジョニングマネージャはクラスタを最適化する（２９０）。クラスタの最適化（２９０）には、ストレージパフォーマンスベンチマーク試験をリクエストし（２６０）、ベンチマーク試験結果を受け取り（２７０）、ベンチマーク結果が閾値を満たすか否かを判断し（２８０）、ベンチマーク結果を改善するためにクラスタへの最適化を行う（２９５）ことが含まれる。最適化（２９０）は、閾値が満たされるまでループ式に、または所定の時間にわたり、または事前に決定された繰り返し回数だけ、またはパフォーマンスターゲット、すなわち動作中のＶＭ  １０５の数を最大化しながら、ベンチマーク最低閾値が所定の許容範囲内で満たされるまで実行されてもよい。
【００４５】
クラスタへの最適化の実行（２９５）には、各ホスト上のＶＭの数の増減によってプールの大きさを変更することが含まれていてもよい。クラスタへの最適化の実行（２９５）にはまた、ストレージマネージャ１２６および仮想共有ストレージのうちの少なくとも一方の構成を変更することが含まれていてもよい。閾値が満たされると、方法２００は終了する（２９７）。しかしながら、クラスタは、クラスタがプロビジョンされる時に実行される初期最適化の後のいずれの時点で最適化されてもよい（２９０）。
【００４６】
本明細書で説明した各種の実施形態は、コンピュータシステム内に保存されるデータに関わる各種のコンピュータ実装動作を利用してもよい。例えば、これらの動作は、物理的数量の物理的操作を必要とするかもしれず、通常、ただし常にとはかぎらないが、これらの数量は電気または磁気信号の形態で得られてもよく、これら、またはこれらを表すものは、保存、転送、合成、比較、またはその他の操作が可能である。さらに、このような操作はしばしば、生成、特定、決定または比較等の用語で呼ばれる。本明細書で説明されている発明の１つまたは複数の実施形態の一部を形成する動作はいずれも、有益なマシン動作であってもよい。これに加えて、本発明の１つまたは複数の実施形態はまた、これらの動作を実行するためのデバイスまたは装置に関連する。装置は、具体的な必要な目的のために特に構成されてもよく、またはコンピュータ内に保存されるコンピュータプログラムによって選択的にアクティベートまたは構成される汎用コンピュータであってもよい。詳しくは、各種の汎用マシンは、本明細書の教示に従って書かれたコンピュータプログラムと共に使用されてもよく、または必要な動作を実行するためのより専門的な装置を構成することがより好都合であるかもしれない。
【００４７】
本明細書で説明した各種の実施形態は他のコンピュータシステム構成、例えばハンドヘルドデバイス、マイクロプロセッサシステム、マイクロプロセッサベースまたはプログラム可能な民生用電子機器、ミニコンピュータ、メインフレームコンピュータおよびその他でも実現できる。
【００４８】
本発明の１つまたは複数の実施形態は、１つまたは複数のコンピュータ可読媒体で具体化される１つまたは複数のコンピュータプログラムとして、または１つまたは複数のコンピュータプログラムモジュールとして実装されてもよい。コンピュータ可読媒体という用語は、その後、コンピュータシステムに入力可能なデータを保存できるあらゆるテータストレージデバイスを指し、すなわちコンピュータ可読媒体は、コンピュータがそれを読み取ることができるような方法でコンピュータプログラムを具体化する他のどのような既存の、または今後開発される技術に基づいていてもよい。コンピュータ可読媒体の例としては、ハードドライブ、ネットワークアタッチドストレージ（ＮＡＳ）、リードオンリメモリ、ランダムアクセスメモリ（例えば、フラッシュメモリデバイス）、ＣＤ（コンパクトディスク）、例えばＣＤ−ＲＯＭ、ＣＤ−ＲまたはＣＤ−ＲＷ、ＤＶＤ（デジタルバーサタイルディスク）、磁気テープ、およびその他の光および光以外のデータストレージデバイスがある。コンピュータ可読媒体はまた、ネットワーク接続コンピュータシステム上に分散させて、コンピュータ可読コードが分散的に保存され、実行されるようにすることもできる。
【００４９】
本発明の１つまたは複数の実施形態を明瞭に理解するためにある程度詳しく説明したが、特許請求の範囲内で特定の変更や改変が可能であることは明らかであろう。したがって、説明された実施形態は、限定的ではなく例示的と考えられ、特許請求の範囲は本明細書に記載されている詳細事項に限定されるのではなく、特許請求の範囲の範囲と均等物の中で改変されてもよい。特許請求の範囲において、要素およびステップのうちの少なくとも一方は、特許請求の範囲で明記されていないかぎり、いずれの特定の動作の順序も黙示していない。
【００５０】
これに加えて、説明した仮想化方法は一般に、仮想マシンが特定のハードウェアシステムと適合するインタフェースを示すことを前提としているが、当業者であれば、説明した方法がいずれの特定のハードウェアシステムにも直接対応しない仮想化に関連して使用してもよいことがわかるであろう。ホストされた実施形態、ホストされていない実施形態、またはこれら２つの区別があいまいになる傾向のある実施形態として実装される各種の実施形態による仮想化システムは、すべて想定される。さらに、各種の仮想化動作は、全体的または部分的にハードウェアで実装され、または従来の仮想化または準仮想化技術に実装されてもよい。多くの変更、改変、追加、改良は、仮想化の程度に関係なく可能である。仮想化ソフトウェアはしたがって、仮想化機能を実行するホスト、コンソール、またはゲストオペレーティングシステムの構成要素を含むことができる。複数のインスタンスが、本明細書で単独のインスタンスとして説明された構成要素、動作または構造のために提供されてもよい。最後に、各種の構成要素、動作、データストア間の境界は幾分任意であり、特定の動作が具体的な例示的構成に関連して示されている。機能のその他の割り振りも想定され、本発明の範囲に含まれる可能性がある。一般に、例示的な構成の中で別々の構成要素として示されている構造と機能は、複合的な構造または構成要素として実装されてもよい。同様に、単独の構成要素として示されている構造と機能は、別々の構成要素として実装されてもよい。これらおよびその他の変更、改変、追加、改良は付属の特許請求の範囲に含まれる可能性がある。
【図１】
0006054522.tif 000002
【図２】
0006054522.tif 000003