(57)【要約】  種々の実施形態は、ネットワーク層メトリック、ストレージアレイの性能特性、およびアプリケーション制約に基づいて配置を最適化するネットワークおよびストレージアウェア仮想マシン（ＶＭ）配置を提供する方法および装置を提供する。有利には、アプリケーション要求に応えるときにストレージが必要であることが多いため、ＶＭ配置を、ストレージアレイの性能特性ならびにネットワーク層メトリックに基づかせることは、ＶＭ性能において大幅な改善をもたらしうる。
2015504224.tif 000002
【特許請求の範囲】
【請求項１】
クラウドネットワーク内で仮想マシンの配置を提供するための装置であって、
データストレージと、
データストレージに通信可能に結合されたプロセッサとを備え、プロセッサは、
クラウドネットワーク内の１つまたは複数のストレージアレイの性能特性を示す第１のセットのストレージ性能データをデータストレージに収集し、
クラウドネットワークの１つまたは複数のネットワーク性能特性を示す第２のセットのネットワーク性能データをデータストレージに収集し、
第１のセットのストレージ性能データおよび第２のセットのネットワーク性能データに基づいてクラウドネットワーク内の仮想マシンの配置場所を決定するように構成される、装置。
【請求項２】
配置場所の決定が最適化目的関数に基づき、目的関数が、１つまたは複数の制約に基づいてレイテンシ出力およびコスト出力の少なくとも一方を最小にするように構成される、請求項１に記載の装置。
【請求項３】
最適化目的関数が、複数の目的の重み付きランク付けに基づく、請求項２に記載の装置。
【請求項４】
プロセッサが、
仮想マシンの１つまたは複数のアプリケーション要件を示す第３のセットのアプリケーション要件データをデータストレージに収集し、
配置場所の決定を第３のセットのアプリケーション要件データにさらに基づかせるようにさらに構成される、請求項１に記載の装置。
【請求項５】
第３のセットのアプリケーション要件データがデータアクセスパターンを含む、請求項４に記載の装置。
【請求項６】
クラウドネットワーク内で仮想マシンの配置を提供するための仮想マシン配置システムであって、
複数のストレージアレイと、
複数のリソースと、
複数のストレージアレイおよび複数のリソースに通信可能に結合した仮想マシン配置装置とを備え、仮想マシン配置装置が、
複数のストレージアレイの性能特性を示す第１のセットのストレージ性能データを収集し、
クラウドネットワークの１つまたは複数のネットワーク性能特性を示す第２のセットのネットワーク性能データを収集し、
第１のセットのストレージ性能データおよび第２のセットのネットワーク性能データに基づいて仮想マシンを決定するように構成され、仮想マシンが複数のストレージアレイの少なくとも１つおよび複数のリソースの少なくとも１つを含む、システム。
【請求項７】
仮想マシン配置装置が、
仮想マシンの１つまたは複数のアプリケーション要件を示す第３のセットのアプリケーション要件データを収集し、
仮想マシンの決定を第３のセットのアプリケーション要件データにさらに基づかせるようにさらに構成される、請求項６に記載のシステム。
【請求項８】
クラウドネットワーク内で仮想マシンの配置を提供するための方法であって、
データストレージに通信可能に結合されたプロセッサにおいて、クラウドネットワーク内の１つまたは複数のストレージアレイの性能特性を示す第１のセットのストレージ性能データをデータストレージに収集すること、
クラウドネットワークの１つまたは複数のネットワーク性能特性を示す第２のセットのネットワーク性能データをデータストレージに収集すること、および、
データストレージと連携してプロセッサによって、第１のセットのストレージ性能データおよび第２のセットのネットワーク性能データに基づいてクラウドネットワーク内の仮想マシンの配置場所を決定することを含む、方法。
【請求項９】
仮想マシンの１つまたは複数のアプリケーション要件を示す第３のセットのアプリケーション要件データをデータストレージに収集すること、および、
配置場所を決定するステップを第３のセットのアプリケーション要件データにさらに基づかせることをさらに含む、請求項８に記載の方法。
【請求項１０】
配置場所を決定するステップをリザベーション制約にさらに基づかせることをさらに含む、請求項９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、クラウドネットワーク内で仮想マシン（ｖｉｒｔｕａｌ  ｍａｃｈｉｎｅ）の配置を提供するための方法および装置に関する。
【背景技術】
【０００２】
このセクションは、本発明のよりよい理解を容易にするのに有用となり得る態様を導入する。したがって、このセクションの陳述は、これを考慮して読むべきであり、何が従来技術内にあり何が従来技術内にないかに関してを認めるものと理解すべきでない。
【０００３】
いくつかの知られているクラウドネットワークでは、分散クラウド内での仮想マシンの配置は、ネットワーク層メトリックの最適化だけに基づく。ネットワークレイテンシ、ネットワークスループット、およびネットワーク転送コストなどのネットワーク層制約は、この最適化における最も一般的なメトリックである。
【発明の概要】
【課題を解決するための手段】
【０００４】
種々の実施形態は、ネットワーク層メトリック、ストレージアレイの性能特性、およびアプリケーション制約に基づいて配置を最適化するネットワークおよびストレージアウェア仮想マシン（ＶＭ）配置を提供する方法および装置を提供する。有利には、アプリケーション要求に応えるときにストレージが必要であることが多いため、ＶＭ配置を、ストレージアレイの性能特性ならびにネットワーク層メトリックに基づかせることは、ＶＭ性能においてかなりの改善をもたらしうる。
【０００５】
一実施形態では、クラウドネットワーク内で仮想マシンの配置を提供するための装置が提供される。装置は、データストレージと、データストレージに通信可能に結合されたプロセッサとを含む。プロセッサは、クラウドネットワーク内の１つまたは複数のストレージアレイの性能特性を示す第１のセットのストレージ性能データを収集し、クラウドネットワークの１つまたは複数のネットワーク性能特性を示す第２のセットのネットワーク性能データを収集し、第１のセットのストレージ性能データおよび第２のセットのネットワーク性能データに基づいてクラウドネットワーク内の仮想マシンの配置場所を決定するようにプログラム（すなわち、構成）される。
【０００６】
いくつかの実施形態では、装置は、プロセッサに通信可能に結合されたＩ／Ｏインタフェースをさらに含む。プロセッサは、Ｉ／Ｏインタフェースを介して第１のセットのストレージ性能データを取出し、Ｉ／Ｏインタフェースを介して第２のセットのネットワーク性能データを取出すようにさらにプログラムされる。
【０００７】
いくつかの実施形態では、第１のセットのストレージ性能データの取出しは、ＡＰＩを介して１つまたは複数のストレージアレイの少なくとも１つのストレージデバイスと通信することを含む。
【０００８】
いくつかの実施形態では、配置場所の決定は、最適化目的関数および１つまたは複数の制約に基づく。
【０００９】
いくつかの実施形態では、最適化目的関数は、レイテンシ出力および／またはコスト出力を最小にする。
【００１０】
いくつかの実施形態では、最適化目的関数は、複数の目的の重み付きランク付けに基づく。
【００１１】
いくつかの実施形態では、プロセッサは、仮想マシンの１つまたは複数のアプリケーション要件を示す第３のセットのアプリケーション要件データを収集し、配置場所の決定を第３のセットのアプリケーション要件データにさらに基づかせるようにさらにプログラムされる。
【００１２】
いくつかの実施形態では、第３のセットのアプリケーション要件データはデータアクセスパターンを含む。
【００１３】
第２の実施形態では、仮想マシン配置システムは、クラウドネットワーク内で仮想マシンの配置を提供する。システムは、複数のストレージアレイと、複数のリソースと、複数のストレージアレイおよび複数のリソースに通信可能に結合した仮想マシン配置装置と含む。仮想マシン配置装置は、複数のストレージアレイの性能特性を示す第１のセットのストレージ性能データを収集し、クラウドネットワークの１つまたは複数のネットワーク性能特性を示す第２のセットのネットワーク性能データを収集し、第１のセットのストレージ性能データおよび第２のセットのネットワーク性能データに基づいて仮想マシンを決定するようにプログラムされ、仮想マシンは複数のストレージアレイの少なくとも１つおよび複数のリソースの少なくとも１つを含む。
【００１４】
いくつかの実施形態では、仮想マシンの決定は、最適化目的関数および１つまたは複数の制約に基づく。
【００１５】
いくつかの実施形態では、仮想マシン配置装置は、仮想マシンの１つまたは複数のアプリケーション要件を示す第３のセットのアプリケーション要件データを収集し、仮想マシンの決定を第３のセットのアプリケーション要件データにさらに基づかせるようにさらにプログラムされる。
【００１６】
第３の実施形態では、クラウドネットワーク内に仮想マシンを配置するための方法が提供される。方法は、クラウドネットワーク内の１つまたは複数のストレージアレイの性能特性を示す第１のセットのストレージ性能データを収集すること、クラウドネットワークの１つまたは複数のネットワーク性能特性を示す第２のセットのネットワーク性能データを収集すること、および、第１のセットのストレージ性能データおよび第２のセットのネットワーク性能データに基づいてクラウドネットワーク内の仮想マシンの配置場所を決定することを含む。
【００１７】
いくつかの実施形態では、配置場所を決定するステップは、最適化目的関数および１つまたは複数の制約に基づく。
【００１８】
いくつかの実施形態では、仮想マシンの１つまたは複数のアプリケーション要件を示す第３のセットのアプリケーション要件データを収集すること、および、配置場所を決定するステップを第３のセットのアプリケーション要件データにさらに基づかせることをさらに含む。
【００１９】
いくつかの実施形態では、方法は、配置場所を決定するステップをリザベーション制約にさらに基づかせることをさらに含む。
【００２０】
いくつかの実施形態では、方法は、配置場所が最適化目的関数の１つまたは複数の制約を満たさない、と判定することに応答して、クライアント通知を送信することをさらに含む。
【００２１】
種々の実施形態が添付図面に示される。
【図面の簡単な説明】
【００２２】
【図１】仮想マシン（ＶＭ）配置アーキテクチャ１１０の１つの実施形態を含むクラウドネットワーク１００を示す。
【図２】ネットワークおよびストレージアウェア仮想マシン（ＶＭ）配置のための一方法の一実施形態を示すフローチャートである。
【図３】ＶＭ配置装置の一実施形態を概略的に示す図である。
【発明を実施するための形態】
【００２３】
理解を容易にするために、同一の参照数字は、実質的に同じかまたは同様の構造および／または実質的に同じかまたは同様の機能を有する要素を指定するために使用された。
【００２４】
種々の実施形態は、ネットワーク層メトリック、ストレージアレイの性能特性、およびアプリケーション制約に基づいて配置を最適化するネットワークおよびストレージアウェア仮想マシン（ＶＭ）を提供する方法および装置を提供する。有利には、アプリケーション要求に応えるときにストレージが必要であることが多いため、ＶＭ配置を、ストレージアレイの性能特性ならびにネットワーク層メトリックに基づかせることは、ＶＭ性能において大幅な改善をもたらしうる。
【００２５】
図１は、仮想マシン（ＶＭ）配置アーキテクチャ１１０の一実施形態を含むクラウドネットワーク１００を示す。クラウドネットワーク１００は、通信経路を介して、リソース１８０−ａ−１８０−ｆ（総称して、リソース１８０）においてインスタンス化される仮想マシン（ＶＭ）に対するアプリケーション要求を送信する１つまたは複数のクライアント１２０−ａ−１２０−ｃ（総称して、クライアント１２０）を含む。通信経路は、クライアント通信チャネル１２５−ａ、１２５−ｂ、および１２５−ｃ（総称して、クライアント通信チャネル１２５）の１つと、１つまたは複数のエッジスイッチ１４０−ａおよび／または１４０−ｂ（総称して、エッジスイッチ１４０）を含むネットワーク１３０と、エッジ通信チャネル１４５−ａ−１４５−ｅ（総称して、エッジ通信チャネル１４５）の１つと、１つまたは複数のローカルスイッチ１５０−ａおよび１５０−ｂ（総称して、ローカルスイッチ１５０）を有する１つまたは複数のローカルネットワークと、リソース通信チャネル１８５−ａ−１８５−ｆ（総称して、リソース通信チャネル１８５）の１つを含むことができる。アプリケーション要求または応答が、ストレージアレイ１６０−ａまたは１６０−ｂ（総称して、ストレージアレイ１６０）の一方に格納されたデータのデータアクセスオペレーションを要求する場合、通信経路は、同様に任意選択で、ストレージ通信チャネル１６５−ａまたは１６５−ｂ（総称して、ストレージ通信チャネル１６５）の一方であるとすることができる。
【００２６】
クライアント１２０は、リソース１８０上でインスタンス化される仮想マシンの１つの仮想マシンに向けられるアプリケーション要求（複数可）を開始する任意のタイプまたは任意の数のクライアントマシン（複数可）であるとすることができる。たとえば、クライアントは、サーバ、携帯電話、タブレット、コンピュータ、個人情報端末（ＰＤＡ）、ｅリーダ、ネットワーク装置（たとえば、スイッチまたはルータ）、および／あるいは、その類似物でありうる。
【００２７】
通信チャネル１２５、１４５、１６５、および１８５は、無線通信（たとえば、ＬＴＥ、ＧＳＭ（登録商標）、ＣＤＭＡ、ブルートゥース）、フェムトセル通信（たとえば、ＷｉＦｉ）、パケットネットワーク通信（たとえば、ＩＰ）、ブロードバンド通信（たとえば、ＤＯＣＳＩＳ、およびＤＳＬ）、ストレージ通信（たとえば、ファイバチャネル、ｉＳＣＳＩ）、および同様なものなどの１つまたは複数の通信チャネルを通じてアプリケーション要求を取出すことまたはアプリケーション要求に応答することをサポートすることができる。単一接続として示されるが、通信チャネルが、クライアント１２０とリソース１８０上でインスタンス化される仮想マシンとの間の通信をサポートする任意の数の通信チャネルまたは通信チャネルの組合せであるとすることができることを理解されたい。通信チャネル１４５は、任意の適した方法で構成されてもよいことを理解されたい。たとえば、通信チャネルは、スイッチ１５０−ａと１５０−ｂとの間で直接構成されてもよい。
【００２８】
ネットワーク１３０は、クライアント１２０とリソース１８０上でインスタンス化される仮想マシンとの間の通信を容易にするための任意の適したネットワークであるとすることができる。たとえば、ネットワーク１３０は、ローカルエリアネットワーク（複数可）（ＬＡＮ）、無線ローカルエリアネットワーク（複数可）（ＷＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、メトロポリタンエリアネットワーク（ＭＡＮ）、および／または同様なものの任意の組合せであるとすることができる。
【００２９】
エッジスイッチ１４０および／またはローカルスイッチ１５０は、クライアント１２０とリソース１８０上でインスタンス化される仮想マシンとの間でアプリケーション要求および応答をルーティングするのに適した任意の数および任意のレベルのスイッチおよび／またはルータであるとすることができる。たとえば、２つのレベルのスイッチ（たとえば、エッジスイッチ１４０およびローカルスイッチ１５０）だけが示されるが、クラウドネットワーク１００はさらなるスイッチを含むことができる。スイッチが層状方式で示されるが、アプリケーション要求および応答をルーティングするのに十分な任意の適したネットワーク構成を使用することができることもまた理解されたい。
【００３０】
ストレージアレイ１６０は、アプリケーションデータを格納し、リソース１８０上でインスタンス化される仮想マシンによって使用されるストレージサービスを提供する。ストレージアレイ１６０は、任意の適したストレージデバイスであり、また、任意の数のストレージデバイスを含むことができる。含まれるストレージデバイス（複数可）は、同様であるかまたは別個である、かつ／または、互いにローカルであるかまたは地理的に分散しているとすることができる。
【００３１】
リソース１８０は、サービスアプリケーション要求に対して生成される仮想マシンを含むリソースを含む。特に、リソース１８０は、１つまたは複数のプロセッサ、１つまたは複数のネットワークインタフェース、１つまたは複数のメモリ、ならびに／または１つまたは複数のデータストレージデバイスを含むことができる。さらに、リソース１８０は、サーバ、プロセッサ、メモリ、および／またはネットワークインタフェースなどの仮想マシンのコンポーネントからなるブレード、ならびに／またはストレージデバイス（たとえば、ストレージアレイ１６０）などの任意の適した物理ハードウェア構成であるとすることができる。仮想マシンは、リソース１８０の任意の適した構成を含むことができる。たとえば、仮想マシンは、１つまたは複数の物理デバイスからの処理リソース（たとえば、１８０−ａおよび１８０−ｄ）および１つまたは複数の物理デバイスからのメモリリソース（たとえば、１８０−ｂおよび１８０−ｃ）を含むことができる。こうした物理デバイスは、互いにローカルであるかまたは互いからリモートであるとすることができる。いくつかの実施形態では、仮想マシンは、ストレージアレイ１６０の一方に格納されるアプリケーションデータを使用して、クライアント１２０の１つのクライアントからのアプリケーション要求に応えることになる。
【００３２】
リソース１８０が、任意の適した通信経路を通じて任意の数のストレージアレイ１６０と通信することができることを理解されたい。たとえば、ＶＭ１８０−ａは、通信経路１８５−ａ−１４５−ｄ−１４５−ｃ−１６５−ｂを介してストレージアレイ１６０−ｂと通信することができる。
【００３３】
図２は、ネットワークおよびストレージアウェア仮想マシン（ＶＭ）配置のための一方法の一実施形態を示すフローチャートを示す。
【００３４】
方法２００において、ステップ２２０は、ストレージデバイス（たとえば、図１のストレージ通信チャネル１６５および／またはストレージデバイス１６０）の性能特性を収集することを含む。特に、データストレージおよびアクセスコスト、読出しのレイテンシ、書込みのレイテンシ、利用可能ストレージ空間、および／または断片化レベルなどのストレージデバイス性能に関する特性を収集することができる。たとえば、ストレージ通信チャネル１６５の書込みおよび／または読出しアクセス遅延を収集することができる。別の例では、ストレージアレイ１６０にデータを格納するコストを収集することができる。
【００３５】
ストレージデバイスが、特にストレージ集約的アプリケーションにおいてアプリケーションの性能に影響を及ぼす場合があることを理解されたい。結果として、ストレージデバイスに関する特性に基づいてＶＭを配置することによって、ＶＭ配置アルゴリズムは性能を増す場合がある。
【００３６】
方法２００において、ステップ２３０は、ネットワークのネットワーク性能特性（たとえば、図１のエッジ通信チャネル１４５、ローカル通信チャネル１８５、および／または、エッジスイッチ１４０、および／またはローカルスイッチ１５０の性能特性）を収集することを含む。特に、アクセスコスト（たとえば帯域幅）、プロセッサレイテンシ、通信チャネルレイテンシ、および／または負荷平衡化制約などのネットワーク性能に関する性能特性を収集することを含む。  たとえば、ローカル通信チャネル１８５を横断するパケットのアクセス遅延を収集することができる。
【００３７】
方法２００は、任意選択で、ステップ２４０を含む。ステップ２４０は、アプリケーション要件を収集することを含む。特に、アプリケーションの要件は、どれだけの数のＶＭが存在するか、ＶＭがどのように接続されるかなどの情報を含むアプリケーションの種々のコンポーネントのトポロジ、アプリケーションのデータアクセスパターン、およびアプリケーションのサービス要件を含む。たとえば、ストレージ集約的であるアプリケーションは、他のストレージアレイと比較して比較的高速であるストレージアレイ上に配置される場合、利益を受けることになる。
【００３８】
アプリケーション要件が、アプリケーション、特にストレージ集約的であるアプリケーションの性能に影響を及ぼす場合があることを理解されたい。結果として、アプリケーション要件に基づいてＶＭを配置することによって、ＶＭ配置アルゴリズムは性能を増す場合がある。
【００３９】
方法２００において、ステップ２５０は、仮想マシンの配置を決定することを含む。特に、仮想マシンの配置は、データセンタ内で仮想マシンを構成するリソース（たとえば、リソース１８０）の場所を選択することを含む。仮想マシンリソースの場所の選択は、ストレージデバイス性能に関する性能、ネットワーク性能特性、およびアプリケーション要件に基づく。
【００４０】
いくつかの実施形態では、市販のストレージアレイドライバは、ストレージデバイス（たとえば、図１のストレージアレイ１６０）の性能特性を維持し、この情報をＡＰＩを介してエクスポーズする。これらの実施形態のいくつかでは、ステップ２２０は、ＡＰＩを介してストレージデバイスの少なくともサブセットの性能特性を取出すことを含む。
【００４１】
いくつかの実施形態では、ステップ２３０は、ラックスイッチ（たとえば、ローカルスイッチ１５０）のそれぞれの一番上の粒度でネットワーク性能特性を収集することを含む。さらなる実施形態では、ネットワーク性能特性は、データセンタのトポロジに関連する。
【００４２】
いくつかの実施形態では、図１のローカルスイッチ１５０などのネットワークデバイスは、ネットワーク性能特性を提供する。これらの実施形態のいくつかでは、ステップ２３０は、市販のインタフェース（複数可）を介してネットワークデバイスの少なくともサブセットの性能特性を取出すことを含む。これらの実施形態のいくつかでは、リアルタイムネットワーク性能特性が提供される。
【００４３】
いくつかの実施形態では、ステップ２５０は、従来の古典的最適化技法を使用することを含む。従来の古典的最適化技法は、所望の目標または目的を最もよく達成するアクションを決定することを含む。所望の目標または目的を最もよく達成するアクションは、目的関数の値を最大または最小にすることによって決定することができる。いくつかの実施形態では、目的関数の目標またはメトリックは、コストを最小にすることまたはアプリケーションアクセス遅延を最小にすることであるとすることができる。
【００４４】
問題は、
【００４５】
【数１】
2015504224.tif 000003
であるという条件の下で、
［Ｅ．１］ｙ＝ｆ（ｘ１，ｘ２，…，ｘｎ）
を最適化することとして表すことができる。
【００４６】
ここで、式Ｅ．１は目的関数であり、式Ｅ．２は解に課される制約の集合を構成する。ｘｉ変数ｘ１，ｘ２，…，ｘｎは、決定変数の集合を表し、ｙ＝ｆ（ｘ１，ｘ２，…，ｘｎ）は、これらの決定変数によって表現される目的関数である。目的関数が最大または最小にすることができることを理解されたい。
【００４７】
図１を参照すると、第１の簡単な例では、ユーザは、クラウド内でリモートデスクトップアプリケーションを実行している。この例では、ＶＭであって、ＶＭにマウントされるユーザファイルシステムを格納するストレージアレイにアッタチされる、ＶＭをユーザがローンチする。トップオブラック（ｔｏｐ−ｏｆ−ｔｈｅ−ｒａｃｋ）（ＴｏＲ）スイッチ（たとえば、ローカルスイッチ１５０）は、ＶＭがその上で実行される複数の物理マシン（たとえば、リソース１８０）を接続する。
【００４８】
ＶＭマシン配置方法（たとえば、方法２００）は、ストレージデバイス性能に関する特性、ネットワーク性能特性、およびアプリケーション要件に基づいてＶＭの配置を決定することになる。
【００４９】
この例の場合、以下の特性および制約を仮定する：
１）単一リソース（たとえば、１８０−ａ−１８０−ｆ）および単一ストレージアレイ（たとえば、１６０−ａまたは１６０−ｂ）は、インスタンス化されたＶＭを構成することになり、
２）１６５−ａを通じる読出しレイテンシは６０ｍｓであり、１６５−ｂを通じる読出しレイテンシは２０ｍｓであり、
３）１６５−ａを通じる書込みレイテンシは８０ｍｓであり、１６５−ｂを通じる書込みレイテンシは１２０ｍｓであり、
４）アクセスレイテンシ１８５−ａ−１８５−ｆは、それぞれ、２０ｍｓ、２０ｍｓ、１５ｍｓ、２５ｍｓ、３０ｍｓ、および３０ｍｓであり、
５）エッジ通信チャネルの全てを通じるアクセスレイテンシは５０ｍｓであり、
６）１６０−ａに関するストレージのコストは＄１０／ＧＢであり、１６０−ｂに関するストレージのコストは＄２０／ＧＢであり、
７）１６５−ａに関する読出しおよび書込みアクセスの帯域幅コストは＄５／ＧＢであり、１６５−ｂに関する読出しおよび書込みアクセスの帯域幅コストは＄１０／ＧＢであり、
８）１８５−ａ−１８５−ｆに関する読出しおよび書込みアクセスの帯域幅コストは＄５／ＧＢであり、
９）１８５−ａ−１８５−ｆに関するプロセッサおよびネットワークリソースのコストは同じであり、
１０）ストレージアレイ１６０は共に、適切なストレージ容量を有し、
１１）アプリケーションは、１０ＧＢのデータストレージ、１ＧＢ／月の帯域幅を必要とし、読出し要求だけに応える。
【００５０】
この簡単な例の唯一の目的が、アクセスレイテンシを最小にすることを必要とする場合、目的関数は、レイテンシに関する決定変数（たとえば、制約（２）、（３）、（４）、および（５））に依存する。この場合、関数は、通信経路１８５−ｄ−１６５−ｂを通じる総計のレイテンシが最も低くなる（すなわち、２５ｍｓ＋２０ｍｓ＝４５ｍｓ）ため、リソース１８０−ｄ内にＶＭを、ストレージアレイ１６０−ｂ内にストレージデータを配置することを決定することになる。
【００５１】
この配置を、ネットワーク性能特性に的を絞るだけであるＶＭ配置ストラテジと比較すると、方法２００のＶＭ配置は、有利には、よりよい結果（この例では、７５ｍｓと比較して４５ｍｓ）をもたらす。たとえば、同じ制約を使用するが、ネットワーク性能特性に的を絞り、データアクセスのリアルタイムレイテンシを無視する配置ストラテジでは、ＶＭは、最も低いネットワークアクセスレイテンシ（すなわち、１５ｍｓ）を有するリソース１８０−ｃ内に配置されることになる。しかし、読出しアクセスについてのこの配置の実際のレイテンシは、１８５−ｃおよび１６５−ａを通じるレイテンシであり、１５ｍｓ＋６０ｍｓ＝７５ｍｓであることになる。
【００５２】
この例にさらなる制約を付加することが、目的関数の出力に影響を及ぼす場合があることを理解されたい。たとえば、アプリケーション制約を付加すること：
１２）コスト（Ｘ）＜＄２５／月
制約（１２）を付加することは、ＶＭをリソース１８０−ｃ内に配置するという方法２００の目的関数の出力を変更する。その理由は、ストレージアレイ１６５−ｂを使用してＶＭをリソース１８０−ｄ内に配置することは、制約（１２）に違反する、すなわち、＄３５の月ごとのコストが＄２５／月のコスト制約を超えるからである。
【００５３】
いくつかの実施形態では、目的関数は、制約を満たすいずれの解も見出すことができない場合がある。たとえば、さらに別のアプリケーション制約を付加すること：
１３）レイテンシ（Ｘ）＜５０ｍｓ
制約（１３）を付加することは、どの出力も制約を満たさないことになる目的関数を生成する。これらの実施形態のいくつかでは、ベストフィットが選択される。これらの実施形態のいくつかでは、課される制約の全てをＶＭが満たすわけではないことになることを通知するメッセージが、クライアントに送信されてもよい。
【００５４】
いくつかの実施形態では、目的関数は、コストを最小にする目的によって最適化することができる。これらの実施形態のさらなる実施形態では、性能制約は、最小性能レベルが維持されることを保証するために課すことができる。
【００５５】
いくつかの実施形態では、目的関数は、目的／目標の数を最小および／または最大にするように最適化することができる。たとえば、目的関数は、コストおよびレイテンシ出力に重み付けして、その重み付けアルゴリズムについて最適ＶＭ配置を決定することができる。これらの実施形態のいくつかでは、重み付きランク付けが決定され、最高または最低の重み付きランク付けを有するＶＭ配置が出力として選択されることになる。これらの実施形態のいくつかでは、ベストフィットは、重み付きランク付けに基づくことになる。
【００５６】
いくつかの実施形態では、制約は、負荷平衡化決定に基づくことができる。これらの実施形態のいくつかでは、要求に応えるときのプロセッサのレイテンシを決定することができる。
【００５７】
いくつかの実施形態では、リソース（たとえば、リソース１８０）および／またはストレージアレイ（たとえば、ストレージアレイ１６０）は、目的関数に関する制約であるとすることができる。たとえば、地域技術輸出管理法（ｒｅｇｉｏｎａｌ  ｔｅｃｈｎｏｌｏｇｙ  ｅｘｐｏｒｔ  ｌａｗ）を遵守する場合、「リソース（領域）＝米国（ｒｅｓｏｕｒｃｅ（ｒｅｇｉｏｎ）＝Ｕｎｉｔｅｄ  Ｓｔａｔｅｓ）」などの制約が、目的関数に課すことができ、変数「リソース（領域）（ｒｅｓｏｕｒｃｅ（領域））」は、リソースが米国内に配置されなければならないことを指定する。これらの実施形態のいくつかでは、リソースおよび／またはストレージアレイの物理的場所は、図２のステップ２２０および／またはステップ２３０の間に収集される。この実施形態のさらなる実施形態では、リソースおよび／またはストレージアレイの物理的場所は、ＩＰアドレスなどのヘッダ情報に基づいて決定することができる。この実施形態の別の実施形態では、リソースおよび／またはストレージアレイの物理的場所は、リモートストレージおよび／またはローカルストレージから取出すことができる。収集されるおよび／または取出される情報が、任意の形式であり、制約と比較することができることを理解されたい。たとえば、ＧＰＳ座標は、ＧＰＳ座標が米国内にあると判定するために変換されてもよい。
【００５８】
アプリケーションアクセスパターンがＶＭ配置決定に影響を及ぼす場合があることを理解されたい。たとえば、この例では、（１１）「読出し要求だけに答える（ｓｅｒｖｉｃｅｓ  ｏｎｌｙ  ｒｅａｄ  ｒｅｑｕｅｓｔｓ）」のアプリケーションアクセスパターンが「書込み要求だけに答える（ｓｅｒｖｉｃｅｓ  ｏｎｌｙ  ｗｒｉｔｅ  ｒｅｑｕｅｓｔｓ）」に変更された場合、配置決定はオリジナルの例（すなわち、１８０−ｄ）から１８０−ｃに変更する。その理由は、リソース組合せ１８０−ｃ／１６０−ａを有する仮想マシンのレイテンシが９５ｍｓであり、リソース組合せ１８０−ｄ／１６０−ｂを有する仮想マシンのレイテンシが１４０ｍｓであるからである。
【００５９】
いくつかの実施形態では、ストレージアレイ１６０および／またはリソース１８０のサブセットは、クライアントであって、たとえば、サービスレベル協定（たとえば、リアルタイムアプリケーションがサービス品質パラメータを必要とする）によっておよび／または契約済みリソース協定（たとえば、リソース１８０が、サービスレベルについてのリソースの契約に基づいて利用可能であるとすることができる）によってサービスレベル閾値を予約している、クライアントについて予約されてもよい。これらの実施形態のいくつかでは、ストレージアレイおよび／またはリソースのリザベーションは、目的関数に関する制約によって課すことができる。たとえば、制約は、以下とすることができる：
「リソース≠１８０−ｃ（ｒｅｓｏｕｒｃｅ≠１８０−ｃ）」
通常、クラウド内のデータが、ＴｏＲスイッチ（たとえば、ローカルスイッチ１５０）にアタッチされたストレージアレイ（たとえば、ストレージアレイ１６０）に格納され、複数の場所でバックアップされることを理解されたい。たとえば、ユーザのファイルシステムは、ストレージアレイ１６０−ａ内にあり、ストレージアレイ１６０−ｂ内でバックアップすることができる。
【００６０】
主に特定のシーケンスで示し述べたが、方法２００に示すステップは、任意の適したシーケンスで実施することができることを理解されたい。たとえば、ステップ２２０、２３０、および２４０は、任意の順序で実施することができる。さらに、１つのステップで特定されているステップはまた、そのシーケンス内の１つまたは複数の他のステップで実施することができる、および／または、２つ以上のステップの共通アクションを一回だけ実施することができる。
【００６１】
種々の上述した方法のステップがプログラム式コンピュータによって実施されうることを理解されたい。本明細書では、いくつかの実施形態はまた、プログラムストレージデバイス、たとえば、マシンまたはコンピュータ可読であり、マシン実行可能またはコンピュータ実行可能プログラムの命令をエコードするデータ記録媒体を包含することを意図され、前記命令は、前記上述した方法のステップの一部または全てを実施する。プログラムストレージデバイスは、たとえば、デジタルメモリ、磁気ディスクおよび磁気テープなどの磁気記録媒体、ハードドライブ、または任意選択で読出し可能データ記録媒体であるとすることができる。実施形態はまた、上述した方法の前記ステップを実施するようにプログラムされるコンピュータを包含することを意図される。
【００６２】
図３は、ＶＭ配置装置３００の一実施形態を概略的に示す。装置３００は、プロセッサ３１０、データストレージ３１１、およびＩ／Ｏインタフェース３３０を含む。
【００６３】
プロセッサ３１０は装置３００の動作を制御する。プロセッサ３１０はデータストレージ３１１と協働する。
【００６４】
データストレージ３１１は、収集されるデータアクセス特性（たとえば、図２のステップ２２０からの）、収集されるネットワーク性能特性（たとえば、図２のステップ２３０からの）、および／または収集されるアプリケーション要件（たとえば、図２のステップ２４０からの）などのプログラムデータを格納することができる。データストレージ３１１はまた、プロセッサ３１０によって実行可能なプログラム３２０を格納する。
【００６５】
プロセッサ実行可能プログラム３２０は、Ｉ／Ｏインタフェースプログラム３２１およびＶＭ配置プログラム３２３を含むことができる。プロセッサ３１０は、プロセッサ実行可能プログラム３２０と協働する。
【００６６】
Ｉ／Ｏインタフェース３３０は、プロセッサ３１０およびＩ／Ｏインタフェースプログラム３２１と協働して、上述したように（たとえば、図２のステップ２２０においてＡＰＩを介してストレージデバイスの性能特性を取出すとき、また、図２のステップ２３０においてネットワーク性能特性を取出すときに）、図１の通信チャネル１４５、１６５、および／または１８５を通じた通信をサポートする。
【００６７】
ＶＭ配置プログラム３２３は、上述したように図２の方法２００のステップを実施する。特に、ＶＭ配置プログラムは、ストレージデバイス性能に関する特性を収集し（たとえば、図２のステップ２２０）、ネットワーク性能特性を収集し（たとえば、図２のステップ２３０）、任意選択で、アプリケーション要件を収集し（たとえば、ステップ２４０）、そして、収集されたデータに基づいて仮想マシンの場所配置を決定する。
【００６８】
ＶＭ配置プログラム３２３が、仮想マシンを構成するリソース（たとえば、リソース１８０）および／またはストレージアレイ（たとえば、ストレージアレイ１６０）を選択することによってＶＭの場所配置を決定することができることを理解されたい。ＶＭ配置装置３００が、場所配置の決定を実施するときにデバイスの実際の物理的場所の指標を有する必要がないことがさらに認識されるべきである。
【００６９】
いくつかの実施形態では、装置３００は、リソース１８０の１つまたは複数の一部分または全てであるとすることができる。他の実施形態では、装置３００は、リモートサーバなどのリソース１８０の外に配置された装置であるとすることができる。これらの実施形態のいくつかでは、装置３００は、ローカルスイッチ１５０の外に配置することができる。
【００７０】
いくつかの実施形態では、装置３００は仮想マシンであるとすることができる。これらの実施形態のいくつかでは、仮想マシンは、異なるマシンからのコンポーネントを含む、および／または、地理的に分散させることができる。たとえば、データストレージ３１１およびプロセッサ３１０は、２つの異なる物理マシン内にあるとすることができる。これらの実施形態のいくつかでは、仮想マシンは、図１のリソース１８０からのリソースを含むことができる。
【００７１】
プロセッサ実行可能プログラム３２０がプロセッサ３１０上に実装されると、プログラムコードセグメントがプロセッサと組んで、特定のロジック回路と同様に動作するユニークなデバイスを提供する。
【００７２】
たとえばプログラムおよびロジックがデータストレージ内に格納され、メモリがプロセッサと通信可能に接続される実施形態に関して本明細書で示され述べられたが、こうした情報は、任意の他の適した方法で、たとえば、任意の適した数のメモリ、ストレージ、またはデータベースを使用して、任意の適した配置構成のデバイスに通信可能に結合された任意の適した配置構成のメモリ、ストレージ、またはデータベースを使用して、任意の適した組合せのメモリ（複数可）、ストレージ（複数可）、ならびに／または内部または外部データベース（複数可）に情報を格納して、あるいは、任意の適した数のアクセス可能な外部メモリ、ストレージ、またはデータベースを使用して格納されてもよいことを理解されたい。したがって、本明細書で言及した用語データストレージは、全ての適した組合せのメモリ（複数可）、ストレージ（複数可）、およびデータベース（複数可）を包含することを意味する。
【００７３】
説明および図面は本発明の原理を示すだけである。したがって、種々の配置構成であって、本明細書で明示的に述べられまたは示されないが、本発明の原理を具現化し、本発明の精神および範囲内に含まれる、種々の配置構成を当業者が考案することができることが認識されるであろう。さらに、本明細書で述べる全ての例は、本発明の原理および当技術を促進するために本発明者（複数可）によって寄与される概念を読者が理解するのを補助する教育目的だけのためのものであることを主として明示的に意図され、また、具体的に挙げられる例および条件に対する限定がないものとして解釈される。さらに、本発明の原理、態様、および実施形態ならびに本発明の特定の例を本明細書で述べる全ての陳述は本発明の等価物を包含することを意図される。
【００７４】
「プロセッサ（ｐｒｏｃｅｓｓｏｒ）」と表示される任意の機能ブロックを含む、図に示す種々の要素の機能は、専用ハードウェアならびに適切なソフトウェアと連携してソフトウェアを実行することが可能なハードウェアの使用を通して提供されてもよい。プロセッサによって提供されるとき、機能は、単一専用プロセッサによって、単一共有プロセッサによって、または、その一部が共有され得る複数の個々のプロセッサによって提供されてもよい。さらに、用語「プロセッサ（ｐｒｏｃｅｓｓｏｒ）」または「コントローラ（ｃｏｎｔｒｏｌｌｅｒ）」の明示的な使用は、ソフトウェアを実行することが可能なハードウェアを排他的に指すと解釈されるべきでなく、制限なしで、デジタル信号プロセッサ（ＤＳＰ）ハードウェア、ネットワークプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、ソフトウェアを格納するための読出し専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、および不揮発性ストレージを暗黙的に含むことができる。他のハードウェア（従来型および／またはカスタム型）もまた含むことができる。同様に、図に示す任意のスイッチは概念的であるに過ぎない。それらの機能は、プログラムロジックの動作によって、専用ロジックによって、プログラムコントロールおよび専用ロジックの相互作用によって、またはさらに手動で実施することができ、特定の技法は、文脈からより具体的に理解されるように、実装者によって選択可能である。
【００７５】
本明細書の任意のブロック図が、本発明の原理を具現化する例証的回路要素の概念図を示すことを理解されたい。同様に、任意のフローチャート、フロー図、状態遷移図、疑似コード、および同様なものが、種々のプロセスであって、コンピュータ可読媒体内で実質的に表現され、コンピュータまたはプロセッサ（コンピュータまたはプロセッサが明示的に示されるか否かによらず）によって実行することができる、種々のプロセスを表すことを理解されたい。
【図１】
2015504224.tif 000004
【図２】
2015504224.tif 000005
【図３】
2015504224.tif 000006
【国際調査報告】
2015504224.tif 000007
2015504224.tif 000008
2015504224.tif 000009