(57)【特許請求の範囲】
【請求項１】
複数のホストを１つまたは複数のストレージ・システムに結合する１つまたは複数のファブリックを含むタイプのコンピューティング環境において仮想化を管理する方法であって、
前記１つまたは複数のファブリックのうちの第１のファブリックの制限されたファブリック・リソースに関するファブリック制限を特定することと、
前記第１のファブリックに関する制限されたファブリック・リソースの割当てを特定することと、
前記第１のファブリックに関する前記制限されたファブリック・リソースの前記特定されたファブリック制限および前記特定された割当てに少なくとも部分的に基づいて、少なくとも１つのプロセッサを使用して前記複数のホストのうちの第１のホスト上の仮想マシンの配置を制御することと
を含み、
前記第１のファブリックは、ストレージ・スイッチを含み、前記制限されたファブリック・リソースは、前記ストレージ・スイッチに関するファブリック・ログインを含み、前記ファブリック制限は、前記ストレージ・スイッチが許容するアクティブなログインの数を含む、方法。
【請求項２】
前記ストレージ・スイッチは、ファイバ・チャネル・スイッチであり、前記ファブリック制限は、アクティブなファブリック・ログイン（ＦＬＯＧＩ）制限、アクティブなファブリック発見（ＦＤＩＳＣ）制限、ゾーン制限、またはホスト制限である、請求項１に記載の方法。
【請求項３】
前記ファブリック制限を特定することは、前記ストレージ・スイッチに問合せを行って、前記ファブリック制限を取り出すことを含む、請求項１又は請求項２に記載の方法。
【請求項４】
前記制限されたファブリック・リソースの前記割当てを特定することは、前記ストレージ・スイッチにアクセスして、前記ストレージ・スイッチに関するファブリック・ログインの現在の割当てを取り出すことを含む、請求項１〜請求項３のいずれか１項に記載の方法。
【請求項５】
前記制限されたファブリック・リソースの前記割当てを特定することは、前記コンピューティング環境においてアクティブなファブリック・ログインを追跡することを含む、請求項１〜請求項３のいずれか１項に記載の方法。
【請求項６】
前記ファブリック制限から前記第１のファブリックに関するオーバーコミットされるファブリック容量を特定することをさらに含み、
前記第１のホスト上の前記仮想マシンの配置を制御することは、前記第１のファブリックに関する前記特定されたオーバーコミットされるファブリック容量に少なくとも部分的に基づく、請求項１〜請求項５のいずれか１項に記載の方法。
【請求項７】
前記オーバーコミットされるファブリック容量を特定することは、前記ファブリック制限をファブリック・オーバーコミット比によって調整することを含む、請求項６に記載の方法。
【請求項８】
ユーザ入力に応答して前記ファブリック・オーバーコミット比を設定することをさらに含む、請求項７に記載の方法。
【請求項９】
前記第１のファブリックが前記仮想マシンを起動するのに十分な前記ファブリック容量を有しないと判定したことに応答して、前記仮想マシンの起動を遅延させることをさらに含む、請求項６〜請求項８のいずれか１項に記載の方法。
【請求項１０】
前記第１のホスト上の前記仮想マシンの配置を制御することは、
前記複数のホスト、１つもしくは複数のファブリック、および１つもしくは複数のストレージ・システムのうちから複数の候補ホスト、ファブリック、およびストレージ・システムの組合せを特定することと、
前記第１のファブリックに関する前記制限されたファブリック・リソースの前記特定されたファブリック制限および前記特定された割当てに少なくとも部分的に基づいて、前記複数の候補ホスト、ファブリック、およびストレージ・システムの組合せのそれぞれを採点することと、
前記第１のホストを含む第１の候補ホスト、ファブリック、およびストレージ・システムの組合せの採点に基づいて、前記第１のホスト上に前記仮想マシンを配置することと
を含む請求項１〜請求項９のいずれか１項に記載の方法。
【請求項１１】
前記複数の候補ホスト、ファブリック、およびストレージ・システムの組合せのそれぞれを採点することは、ホスト・プロセッサ容量、ホスト・メモリ容量、ネットワーク容量、またはストレージ・システム容量のうちの１つまたは複数に少なくとも部分的にさらに基づく、請求項１０に記載の方法。
【請求項１２】
前記複数の候補ホスト、ファブリック、およびストレージ・システムの組合せを特定することは、前記仮想マシンの少なくとも１つの要件に基づく、請求項１０に記載の方法。
【請求項１３】
前記第１のファブリックにおけるファブリック容量の不足を特定することに応答して、前記仮想マシンに関して代替のファブリックまたは代替のストレージ・アクセス技術を選択することをさらに含む、請求項１に記載の方法。
【請求項１４】
前記第１のホスト上の前記仮想マシンの配置を制御することは、前記第１のホスト上に前記仮想マシンを展開することを含む、請求項１〜請求項１３のいずれか１項に記載の方法。
【請求項１５】
装置であって、
少なくとも１つのプロセッサと、
前記少なくとも１つのプロセッサによって実行されると、複数のホストを１つまたは複数のストレージ・システムに結合する１つまたは複数のファブリックを含むタイプのコンピューティング環境において仮想化を管理するように構成されたプログラム・コードと
を備え、
前記プログラム・コードは、
前記１つまたは複数のファブリックのうちの第１のファブリックの制限されたファブリック・リソースに関するファブリック制限を特定すること、
前記第１のファブリックに関する前記制限されたファブリック・リソースの割当てを特定すること、および
前記第１のファブリックに関する前記制限されたファブリック・リソースの前記特定されたファブリック制限および前記特定された割当てに少なくとも部分的に基づいて、少なくとも１つのプロセッサを使用して前記複数のホストのうちの第１のホスト上の仮想マシンの配置を制御すること、
を行うように構成され、
前記第１のファブリックは、ストレージ・スイッチを含み、前記制限されたファブリック・リソースは、前記ストレージ・スイッチに関するファブリック・ログインを含み、前記ファブリック制限は、前記ストレージ・スイッチが許容するアクティブなログインの数を含む、装置。
【請求項１６】
前記プログラム・コードは、前記ファブリック制限から前記第１のファブリックに関するオーバーコミットされるファブリック容量を特定すること、および前記第１のファブリックに関する前記特定されたオーバーコミットされるファブリック容量に少なくとも部分的に基づいて前記第１のホスト上の前記仮想マシンの配置を制御すること、を行うようにさらに構成される、請求項１５に記載の装置。
【請求項１７】
前記プログラム・コードは、前記ファブリック制限をファブリック・オーバーコミット比によって調整することによって前記オーバーコミットされるファブリック容量を特定するように構成される、請求項１６に記載の装置。
【請求項１８】
前記プログラム・コードは、前記第１のファブリックが前記仮想マシンを起動するのに十分な前記ファブリック容量を有しないと判定したことに応答して、前記仮想マシンの起動を遅延させるようにさらに構成される、請求項１６又は請求項１７に記載の装置。
【請求項１９】
前記プログラム・コードは、前記第１のホスト上の前記仮想マシンの配置を制御することを、
前記複数のホスト、１つもしくは複数のファブリック、および１つもしくは複数のストレージ・システムのうちから複数の候補ホスト、ファブリック、およびストレージ・システムの組合せを特定すること、
前記第１のファブリックに関する前記制限されたファブリック・リソースの前記特定されたファブリック制限および前記特定された割当てに少なくとも部分的に基づいて、前記複数の候補ホスト、ファブリック、およびストレージ・システムの組合せのそれぞれを採点すること、ならびに
前記第１のホストを含む第１の候補ホスト、ファブリック、およびストレージ・システムの組合せの採点に基づいて、前記第１のホスト上に前記仮想マシンを配置すること、によって行うように構成される、請求項１５〜請求項１８のいずれか１項に記載の装置。
【請求項２０】
請求項１〜請求項１４のいずれか１項に記載の方法をコンピュータに実行させる、コンピュータ・プログラム。
【請求項２１】
請求項２０に記載の前記コンピュータ・プログラムをコンピュータ可読記録媒体に記録したコンピュータ可読記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、コンピュータおよびコンピュータ・ソフトウェアに関し、詳細には、論理的に分割され、仮想化されたコンピューティング環境に関する。
【背景技術】
【０００２】
コンピューティング技術は、目覚ましいペースで進歩しており、後続の各世代のコンピューティング・システムは、性能、機能、およびストレージ容量が、しばしば、より低い費用で向上している。さらに、コンピューティング・リソースおよび他のハードウェア・リソースの作業負荷割当てが、プロセッサ、メモリ、ネットワーク、ストレージ・デバイス、その他などのハードウェア・リソースの利用を最大化して、その結果、所望される作業負荷容量をサポートするのに必要な全体的な費用を低減するのに、しばしば、使用される。また、作業負荷割当てを最適化することは、所与の作業負荷をサポートするのに要求されるハードウェア・リソースの量の低減により、電力費用および環境問題に好影響をもたらし得る。
【０００３】
多くのコンピュータ・システムは、コンピュータがいくつかの動作環境、すなわち、オペレーティング・システムを同時に実行するように利用されることを可能にする、論理分割とも呼ばれる仮想化を使用する。通常の実施形態において、単一の物理コンピュータ・システムまたはデータ処理システムが、論理パーティション（ＶＭ）とも呼ばれる、対応する複数の仮想マシン（ＶＭ）において複数のオペレーティング・システムを実行することが可能である。各オペレーティング・システムは、そのオペレーティング・システム独自の仮想マシンに存在し、各仮想マシンには、コンピュータから物理プロセッサの一部分、物理プロセッサ全体、または複数の物理プロセッサが割り当てられる。さらに、コンピュータのメモリの一部分が、各仮想マシンに割り当てられ得る。ハイパーバイザまたは仮想マシン・モニタ（ＶＭＭ）と、しばしば、呼ばれる、基礎をなすパーティション・マネージャが、仮想マシンを管理し、制御する。ハイパーバイザは、通常、システム・ファームウェアの一部分であり、オペレーティング・システムおよび仮想マシンに対するリソースの割当てを管理する。このため、１つの物理コンピュータが、１つまたは複数の仮想マシンを実行することが可能であり、したがって、それらの仮想マシンにおいて動作するように構成されたアプリケーション、オペレーティング・システム、および他のプログラム・コードによって使用される基礎をなすハードウェア・リソースを仮想化することが可能である。
【０００４】
仮想化は、データ・センタおよびクラウド・コンピューティング・アプリケーションにおいてますます使用されており、クラウド・コンピューティング・アプリケーションは、作業負荷変化に基づいてハードウェア・リソースがプロビジョニングされ、プロビジョニング解除される（de-provision）、伸縮性のあるコンピューティング（elasticcomputing）を介して費用効率性を向上させ得る。そのようなアプリケーションにおいて、個々の作業負荷は、経時的に変化する可能性があり、このため、仮想化が、全体的なより高いリソース利用率をもたらすように複数の作業負荷にわたってハードウェア・リソースを効果的に多重化するのに使用され得る。費用のバランスをとるため、すべての作業負荷が同時に最大リソース要件で実行されるわけではないという想定が行われることが可能であり、したがって、作業負荷に関するすべての最大リソース要件の合計より少ないハードウェア・リソースが作業負荷の所与のセットに割り当てられて、ハードウェア・リソースがオーバーコミットされることになり得る。一例として、クラウド・プロバイダは、仮想マシンのうちのいくつかが、他の仮想マシンがシャットダウンしている、またはそれ以外で非活動化しているオフピーク時間に限って実行されるという想定の下で、特定のホスト・コンピュータ上の複数の仮想マシンにわたってより多くの仮想プロセッサ（ＣＰＵ）を割り当てることが可能である。
【０００５】
また、一部のデータ・センタおよびクラウド・コンピューティング・アプリケーションは、仮想マシンが、仮想ネットワークまたはストレージ・デバイスあるいはその両方にアクセスすることを可能にし得る、ストレージ・デバイスおよびネットワークなどの他のタイプのハードウェア・リソースの仮想化をサポートすることも可能であり、そのような仮想エンティティをサポートする基礎をなすハードウェアの詳細は、仮想マシンから事実上、隠された様態で管理される。また、仮想マシンに対するそのようなハードウェア・リソースの割当ては、ネットワークまたはストレージ・デバイスあるいはその両方が過負荷になると、遅い応答時間が遅くなる可能性があり、一部の事例において、基礎をなすハードウェア・リソースに仮想マシンを接続することができなくなる可能性があるので、性能および効率に影響を及ぼす可能性もある。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明は、様々な好ましい実施形態によれば、ストレージ・ファブリックに関連付けられた制限に少なくとも部分的に基づいて、仮想化されたコンピューティング環境において仮想マシンを管理する方法、装置、プログラム、およびプログラム製品を提供する。ストレージ・ファブリックによって、仮想マシンはそのような環境における１つまたは複数のストレージ・システムにアクセスすることを可能にする。本明細書においてファブリック制限（fabric limit）と呼ばれるストレージ・ファブリック制限は、例えば、仮想化されたコンピューティング環境においてホスト上に仮想マシンを配置することに関連して使用され得る。別の例として、ファブリック制限は、起動エラーの可能性を低減するように仮想化されたコンピューティング環境に仮想マシンを展開することに関連して使用され得る。さらに別の例として、ファブリック制限は、仮想化されたコンピューティング環境における複数のファブリックにわたるロードバランシングに関連して使用され得る。
【課題を解決するための手段】
【０００７】
第１の態様によれば、複数のホストを１つまたは複数のストレージ・システムに結合する１つまたは複数のファブリックを含むタイプのコンピューティング環境において仮想化を管理する方法が提供され、方法は、その１つまたは複数のファブリックのうちの第１のファブリックの制限されたファブリック・リソースに関するファブリック制限を特定することと、第１のファブリックに関する制限されたファブリック・リソースの割当てを特定することと、第１のファブリックに関する制限されたファブリック・リソースの特定されたファブリック制限および特定された割当てに少なくとも部分的に基づいて、少なくとも１つのプロセッサを使用してその複数のホストのうちの第１のホスト上の仮想マシンの配置を制御することとを含む。
【０００８】
第２の態様によれば、装置が提供され、装置は、少なくとも１つのプロセッサと、その少なくとも１つのプロセッサによって実行されると、複数のホストを１つまたは複数のストレージ・システムに結合する１つまたは複数のファブリックを含むタイプのコンピューティング環境において仮想化を管理するように構成されたプログラム・コードとを備え、プログラム・コードは、その１つまたは複数のファブリックのうちの第１のファブリックの制限されたファブリック・リソースに関するファブリック制限を特定すること、第１のファブリックに関する制限されたファブリック・リソースの割当てを特定すること、ならびに、第１のファブリックに関する制限されたファブリック・リソースの特定されたファブリック制限および特定された割当てに少なくとも部分的に基づいて、少なくとも１つのプロセッサを使用してその複数のホストのうちの第１のホスト上の仮想マシンの配置を制御すること、を行うように構成される。
【０００９】
第３の態様によれば、プログラム製品が提供され、プログラム製品は、非一時的コンピュータ可読媒体と、その非一時的コンピュータ可読媒体上に記憶され、少なくとも１つのプロセッサによって実行されると、複数のホストを１つまたは複数のストレージ・システムに結合する１つまたは複数のファブリックを含むタイプのコンピューティング環境において仮想化を、その１つまたは複数のファブリックのうちの第１のファブリックの制限されたファブリック・リソースに関するファブリック制限を特定すること、第１のファブリックに関する制限されたファブリック・リソースの割当てを特定すること、ならびに第１のファブリックに関する制限されたファブリック・リソースの特定されたファブリック制限および特定された割当てに少なくとも部分的に基づいて、その複数のホストのうちの第１のホスト上の仮想マシンの配置を制御すること、によって管理するように構成されたプログラム・コードとを備える。
【００１０】
したがって、本発明の一態様と合致して、複数のホストを１つまたは複数のストレージ・システムに結合する１つまたは複数のファブリックを含むタイプのコンピューティング環境における仮想化が、その１つまたは複数のファブリックのうちの第１のファブリックの制限されたファブリック・リソースに関するファブリック制限を特定すること、第１のファブリックに関する制限されたファブリック・リソースの割当てを特定すること、および第１のファブリックに関する制限されたファブリック・リソースの特定されたファブリック制限および特定された割当てに少なくとも部分的に基づいて、少なくとも１つのプロセッサを使用してその複数のホストのうちの第１のホスト上の仮想マシンの配置を制御することによって管理され得る。
【００１１】
本発明を特徴づけるこれら、およびその他の利点および特徴は、本明細書に添付され、本明細書のさらなる部分を形成する特許請求の範囲に記載される。しかし、本発明、ならびに本発明の使用を介して実現される利点および目的のよりよい理解のため、本発明の例示的な実施形態が説明されている図面、および付随する説明内容が参照されるべきである。
【００１２】
次に、本発明の実施形態が、単に例として、添付の図面を参照して説明される。
【図面の簡単な説明】
【００１３】
【図１】本発明の好ましい実施形態と合致する仮想化されたコンピューティング環境を実装するのに適した例示的なハードウェア環境を示すブロック図である。
【図２】本発明の好ましい実施形態と合致する仮想化されたコンピューティング環境を実装するのに適した例示的なソフトウェア環境を示すブロック図である。
【図３】複数のホストがファイバ・チャネル・ベースのストレージ・ファブリックを介してストレージ・エリア・ネットワーク（ＳＡＮ）に結合された例示的な仮想化されたコンピューティング環境を示すブロック図である。
【図４】図３の仮想化されたコンピューティング環境によって実行され得る例示的な仮想マシン展開ルーチンを示すフローチャートである。
【図５】図４に示される仮想マシン配置ルーチンの例示的な実施様態を示すフローチャートである。
【図６】図４に示される仮想マシン起動ルーチンの例示的な実施様態を示すフローチャートである。
【図７】図３の仮想化されたコンピューティング環境によって実行され得る例示的な遅延起動モニタ・ルーチンを示すフローチャートである。
【図８】図３の仮想化されたコンピューティング環境によって実行され得る例示的なロードバランシング・ルーチンを示すフローチャートである。
【発明を実施するための形態】
【００１４】
本発明と合致する実施形態が、複数のホストを１つまたは複数のストレージ・システムに結合する１つまたは複数のファブリックを含むタイプの仮想化された、すなわち、論理的に分割されたコンピューティング環境における仮想化を、アクティブなファブリック・ログイン制限などの制限されたファブリック・リソースに関するファブリック制限に部分的に基づいて管理することが可能である。
【００１５】
仮想化された、すなわち、論理的に分割されたコンピューティング環境は、これに関して、論理分割、すなわち、仮想化をサポートする１つもしくは複数のコンピュータまたはデータ処理システムを含むものと考えられてよく、データ処理システムのうちの少なくともいくつかは、１つまたは複数の仮想マシンをホストすることができるハードウェア・リソースを表す１つまたは複数のプロセッサを組み込む。したがって、ホストは、これに関して、仮想マシンをホストすることができるデータ処理システムにおける利用可能なハードウェア・リソースの任意のサブセットを含むものと考えられてよく、一般に、ただし、必然的にではなく、１つまたは複数のプロセッサと、１つまたは複数のメモリ・デバイスとを含み、一部の場合において、仮想マシンに割り当てられることが可能な入出力（Ｉ／Ｏ）リソース、ネットワーク・リソース、または他のタイプのリソースなどの追加のハードウェア・リソースを含む。いくつかの実施形態におけるホストは、マルチチップ・モジュールとして、回路基板もしくは回路カードとして、書籍として、引出しとして、ラックとして、スロットとして、シャーシとして、または以上の組合せとしてでさえ実装され得る。また、ホストは、いくつかの実施形態において自立型のコンピュータ・システムまたは複数のネットワーク化されたコンピュータ・システムあるいはその両方であってもよい。さらに、ホストは、いくつかの実施形態においてネスト化されてもよい。一般に、仮想マシンをホストすることができる仮想化されたコンピューティング環境におけるハードウェア・リソースの任意の組合せが、本明細書における開示の目的に関してホストと見なされ得る。
【００１６】
さらに、例示される実施形態における仮想化されたコンピューティング環境は、１つまたは複数のストレージ・ファブリックを介してアクセス可能な１つまたは複数のストレージ・システムを含む。ストレージ・システムが、仮想マシンによってデータが記憶されること、または取り出されること、あるいはその両方が行われ得る１つまたは複数のストレージ・デバイスを含み得る一方で、ストレージ・ファブリックは、１つもしくは複数のデータ処理システムを１つもしくは複数のストレージ・システムに結合する１つもしくは複数のネットワーク、バス、または他の通信リンクを組み込むものと考えられてよい。さらに、ストレージ・ファブリックは、ストレージ・システムに対するアクセスを調停すること、またはそれ以外ではデータ処理システムとストレージ・システムの間の通信をルーティングすることができる１つまたは複数のハードウェア構成要素、例えば、１つまたは複数のネットワーク・スイッチを含むことも可能である。
【００１７】
後段で説明される例示される実施形態において、ストレージ・システムおよびストレージ・ファブリックは、ファイバ・チャネル・ベースのストレージ・エリア・ネットワーク（ＳＡＮ）を使用してまとめて実装されることが可能であり、ストレージ・ファブリックは、１つまたは複数のファイバ・チャネル対応型のスイッチを組み込んだファイバ・チャネル・スイッチ・ファブリック（ＦＣ−ＳＷ）トポロジを使用して実装され得る。しかし、他のストレージ・システムまたはストレージ・ファブリックあるいはその両方が他の実施形態において使用され得るとともに、複数のタイプのストレージ・システムまたはストレージ・ファブリックあるいはその両方が同一の仮想化された環境に組み込まれ得ることが認識されよう。
【００１８】
前述したとおり、本発明と合致する実施形態において、本明細書においてファブリック制限と呼ばれるストレージ・ファブリック制限が、１つまたは複数の仮想マシンの配置、展開、または割当て、あるいはその組合せに関連して、そのような特定が行われる際、制限されたファブリック・リソースの利用可能性が考慮され得るように使用されてよい。制限されたファブリック・リソースは、これに関して、ストレージ・ファブリックの相対負荷または容量あるいはその両方と関係するものと見なされてよく、ファブリック制限は、関連する制限されたファブリック・リソースに課された制限と見なされてよい。例えば、ファイバ・チャネル・ベースのＳＡＮにおいて、制限されたファブリック・リソースは、ファブリック・スイッチに対するアクティブなログインであることが可能であり、ファブリック制限は、ファブリック・スイッチに関するアクティブなファブリック・ログイン制限、例えば、アクティブなファブリック・ログイン（ＦＬＯＧＩ）に対する制限、またはＮ＿Ｐｏｒｔ  ＩＤ仮想化（ＮＰＩＶ）の事例におけるアクティブなファブリック発見（ＦＤＩＳＣ）であることが可能である。他のタイプのファブリック制限は、ファイバ・チャネル・ベースのＳＡＮとともに、他のタイプのストレージ・ファブリックにも関連することが可能であり、例えば、ログインの数、仮想マシンの数、アカウントの数、ゾーン・メンバの数もしくはゾーンの数などのゾーン制限、ストレージ・システムに接続されたホストの数などのホスト制限、物理ファブリック当たりの仮想ストレージ・エリア・ネットワーク（ＶＳＡＮ）の数、ストレージ・システム当たりのホスト・ポートの数、最大同時ＩＯ数（maximum simultaneous IOs）、その他であることが可能である。
【００１９】
後段でもより明白となるとおり、いくつかの実施形態において、ファブリック制限は、ファブリック・オーバーコミット比などのファブリック・オーバーコミット・パラメータによって変更され、または調整されて、ファブリック容量を調整するのに使用され、その結果、制限されたファブリック・リソース、例えば、ファイバ・チャネル・スイッチによってサポートされるアクティブなファブリック・ログインの数をオーバーコミットすることが可能である。
【００２０】
したがって、ファブリック制限は、いくつかの実施形態において、ホスト上に仮想マシンを最適に配置するのを支援するように使用され得る。例えば、いくつかの実施形態において、複数のホストを１つまたは複数のストレージ・システムに結合する１つまたは複数のファブリックを含むタイプのコンピューティング環境における仮想化が、その１つまたは複数のファブリックのうちの第１のファブリックの制限されたファブリック・リソースに関するファブリック制限を特定すること、第１のファブリックに関する制限されたファブリック・リソースの割当てを特定すること、および第１のファブリックに関する制限されたファブリック・リソースの特定されたファブリック制限および特定された割当てに少なくとも部分的に基づいて、少なくとも１つのプロセッサを使用してその複数のホストのうちの第１のホスト上の仮想マシンの配置を制御することによって管理され得る。
【００２１】
いくつかの実施形態において、ファブリックは、ファイバ・チャネル・スイッチを含み、ファイバ制限は、アクティブなファブリック・ログイン（ＦＬＯＧＩ）制限、アクティブなファブリック発見（ＦＤＩＳＣ）制限、ゾーン制限、またはホスト制限である。さらに、いくつかの実施形態において、制限されたファブリック・リソースは、第１のファブリックにおけるストレージ・スイッチに関するファブリック・ログインを含み、ファブリック制限は、ストレージ・スイッチに関するアクティブ・ログイン制限を含む。さらに、いくつかの実施形態において、ファブリック制限を特定することは、ストレージ・スイッチに問合せを行って、ファブリック制限を取り出すことを含み、いくつかの実施形態において、制限されたファブリック・リソースの割当てを特定することは、ストレージ・スイッチにアクセスして、ストレージ・スイッチに関するファブリック・ログインの現在の割当てを取り出すことを含む。いくつかの実施形態において、制限されたファブリック・リソースの割当てを特定することは、コンピューティング環境においてアクティブなファブリック・ログインを追跡することを含み、いくつかの実施形態は、ファブリック制限から第１のファブリックに関するオーバーコミットされるファブリック容量を特定することを含み、ホスト上の仮想マシンの配置を制御することは、第１のファブリックに関する特定されたオーバーコミットされるファブリック容量に少なくとも部分的に基づく。いくつかの実施形態において、オーバーコミットされるファブリック容量を特定することは、ファブリック制限をファブリック・オーバーコミット比によって調整することを含む一方で、いくつかの実施形態において、ファブリック・オーバーコミット比を設定することは、ユーザ入力に応答して実行される。
【００２２】
いくつかの実施形態において、第１のホスト上の仮想マシンの配置を制御することは、その複数のホスト、１つもしくは複数のファブリック、および１つもしくは複数のストレージ・システムのうちから複数の候補ホスト、ファブリック、およびストレージ・システムの組合せを特定すること、第１のファブリックに関する制限されたファブリック・リソースの特定されたファブリック制限および特定された割当てに少なくとも部分的に基づいて、複数の候補ホスト、ファブリック、およびストレージ・システムの組合せのそれぞれを採点すること、ならびに第１のホストを含む第１の候補ホスト、ファブリック、およびストレージ・システムの組合せの採点に基づいて、第１のホスト上に仮想マシンを配置することを含む。
【００２３】
いくつかの実施形態において、複数の候補ホスト、ファブリック、およびストレージ・システムの組合せのそれぞれを採点することは、ホスト・プロセッサ容量、ホスト・メモリ容量、ネットワーク容量、またはストレージ・システム容量のうちの１つまたは複数に少なくとも部分的にさらに基づき、いくつかの実施形態において、複数の候補ホスト、ファブリック、およびストレージ・システムの組合せを特定することは、仮想マシンの少なくとも１つの要件に基づく。また、いくつかの実施形態は、第１のファブリックにおける容量の不足を特定することに応答して、仮想マシンに関して代替のファブリックまたは代替のストレージ・アクセス技術を選択することも含む。さらに、いくつかの実施形態において、第１のホスト上の仮想マシンの配置を制御することは、第１のホスト上に仮想マシンを展開することを含む。
【００２４】
さらに、ファブリック制限は、起動エラーの可能性を低減するようにホスト上に仮想マシンを展開することに関連して使用され得る。いくつかの実施形態において、例えば、仮想マシンが、ホストをストレージ・システムに結合するファブリックを含むタイプのコンピューティング環境におけるホスト上に展開されることが、仮想マシンの展開の開始に応答して、少なくとも１つのプロセッサを使用して、ストレージ・システム上の仮想マシンに割り当てられたストレージ・ボリュームに関して、ファブリックの制限されたファブリック・リソースの割当てを決定すること、決定された割当てに基づいて、ファブリックが仮想マシンを起動する容量を有するかどうかを判定すること、ファブリックが仮想マシンを起動する十分な容量を有すると判定したことに応答して、ホスト上の仮想マシンの起動を開始すること、およびファブリックが仮想マシンを起動する十分な容量を有しないと判定したことに応答して、ホスト上の仮想マシンの起動を遅延させることによって行われ得る。
【００２５】
いくつかの実施形態において、ファブリックは、ファブリック・チャネル・スイッチを含み、ファブリック制限は、アクティブなファブリック・ログイン（ＦＬＯＧＩ）制限、アクティブなファブリック発見（ＦＤＩＳＣ）制限、ゾーン制限、またはホスト制限である。さらに、いくつかの実施形態において、ファブリックが仮想マシンを起動する容量を有するかどうかを決定することは、制限されたファブリック・リソースに関するファブリック制限を特定することを含み、いくつかの実施形態において、制限されたファブリック・リソースは、ファブリックにおけるストレージ・スイッチに関するファブリック・ログインを含み、ファブリック制限は、ストレージ・スイッチのアクティブ・ログイン制限を含む。いくつかの実施形態において、ファブリック制限を特定することは、ストレージ・スイッチに問合せを行って、ファブリック制限を取り出すことを含み、いくつかの実施形態において、制限されたファブリック・リソースの割当てを特定することは、ストレージ・スイッチにアクセスして、ストレージ・スイッチに関するファブリック・ログインの現在の割当てを取り出すことを含む。
【００２６】
いくつかの実施形態において、制限されたファブリック・リソースの割当てを特定することは、コンピューティング環境においてアクティブなファブリック・ログインを追跡することを含み、いくつかの実施形態において、ホスト上の仮想マシンの起動を遅延させることは、仮想マシンをキューに入れることを含み、そのような実施形態は、仮想マシンをキューに入れた後、ストレージ・システム上の仮想マシンに割り当てられたストレージ・ボリュームに関して、ファブリックが、キューに入れられた仮想マシンを起動する容量を有するかどうかを判定すること、およびファブリックが、キューに入れられた仮想マシンを起動する容量を有すると判定したことに応答して、キューに入れられた仮想マシンをキューから出して、ホスト上でその仮想マシンの起動を開始することをさらに含む。いくつかの実施形態において、ファブリックが、キューに入れられた仮想マシンを起動する容量を有するかどうかを判定すること、およびキューに入れられた仮想マシンをキューから出して、ホスト上でその仮想マシンの起動を開始することは、モニタ・プロセスによって実行される。いくつかの実施形態において、その仮想マシンは、複数のキューに入れられた仮想マシンのうちのいずれかであり、そのような実施形態は、ファブリックが、複数のキューに入れられた仮想マシンのうちの少なくとも１つを起動する容量を有すると、複数のキューに入れられた仮想マシンが起動されるべき順序に優先順位を付けることをさらに含む。
【００２７】
いくつかの実施形態において、ストレージ・ボリュームは、起動ボリュームを備え、いくつかの実施形態において、仮想マシンは、その仮想マシンに割り当てられたデータ・ボリュームをさらに含み、ファブリックが仮想マシンを起動する容量を有するかどうかを判定することは、ファブリックが仮想マシンをデータ・ボリュームに接続する容量を有するかどうかを判定することをさらに含む。いくつかの実施形態において、ファブリックが仮想マシンを起動する容量を有するかどうかを判定することは、構成設定から、ファブリックが仮想マシンをデータ・ボリュームに接続する容量を有しない場合に仮想マシンの起動が許されるかどうかを判定することをさらに含み、いくつかの実施形態において、ホストは、コンピューティング環境における複数のホストのうちのいずれかであり、ファブリックが仮想マシンを起動する容量を有するかどうかを判定することは、仮想マシンを起動する命令に応答して実行され、そのような実施形態は、仮想マシンを起動する命令に先立って、ホスト上に仮想マシンを配置すること、仮想マシンを作成すること、および仮想マシンに関するイメージをストレージ・ボリュームにコピーすることをさらに含む。
【００２８】
また、ファブリック制限は、複数のファブリックにわたるロードバランシングに関連して使用されてもよい。例えば、いくつかの実施形態において、ロードバランシングは、複数のホストを１つまたは複数のストレージ・システムに結合する複数のファブリックを含むタイプのコンピューティング環境において、その複数のファブリックの各ファブリックの制限されたファブリック・リソースに関するファブリック制限を特定すること、その複数のファブリックの各ファブリックに関する制限されたファブリック・リソースの割当てを特定すること、およびその複数のファブリックに関する制限されたファブリック・リソースの特定されたファブリック制限および特定された割当てに少なくとも部分的に基づいて、少なくとも１つのプロセッサを使用してその複数のファブリックにわたって制限されたファブリック・リソースの利用率を平衡化させることによって実行され、制限されたファブリック・リソースの利用率を平衡化させることは、その複数のファブリックのうちの第１のファブリックを利用する少なくとも１つの仮想マシンを、その複数のファブリックのうちの第２のファブリックを使用するように移行させることを含む。
【００２９】
いくつかの実施形態において、ファブリックは、ファイバ・チャネル・スイッチを含み、ファブリック制限は、アクティブなファブリック・ログイン（ＦＬＯＧＩ）制限、アクティブなファブリック発見（ＦＤＩＳＣ）制限、ゾーン制限、またはホスト制限であり、いくつかの実施形態において、制限されたファブリック・リソースは、第１のファブリックにおけるストレージ・スイッチに関するファブリック・ログインを含み、ファブリック制限は、ストレージ・スイッチのアクティブ・ログイン制限を含む。いくつかの実施形態において、ファブリック制限を特定することは、ストレージ・スイッチに問合せを行って、ファブリック制限を取り出すことを含み、いくつかの実施形態において、制限されたファブリック・リソースの割当てを特定することは、ストレージ・スイッチにアクセスして、ストレージ・スイッチに関するファブリック・ログインの現在の割当てを取り出すことを含み、いくつかの実施形態において、制限されたファブリック・リソースの割当てを特定することは、コンピューティング環境においてアクティブなファブリック・ログインを追跡することを含む。
【００３０】
いくつかの実施形態は、ファブリック制限からその複数のファブリックの各ファブリックに関するオーバーコミットされるファブリック容量を特定することを含み、その複数のファブリックにわたって制限されたファブリック・リソースの利用率を平衡化させることは、その複数のファブリックの各ファブリックに関する特定されたオーバーコミットされるファブリック容量に少なくとも部分的に基づく。さらに、いくつかの実施形態において、オーバーコミットされるファブリック容量を特定することは、ファブリック制限をファブリック・オーバーコミット・コミット比によって調整することを含む。
【００３１】
いくつかの実施形態において、その複数のファブリックのうちの第１のファブリックを利用する少なくとも１つの仮想マシンを、その複数のファブリックのうちの第２のファブリックを使用するように移行させることは、第１の仮想マシンに関して、第１の仮想マシンをパワーダウン（power down）すること、第１のファブリックの代わりに第２のファブリックを利用するように第１の仮想マシンを再構成すること、および第１の仮想マシンをパワーアップ（power up）して、第１の仮想マシンが第１のファブリックの代わりに第２のファブリックを利用するようにすることを含む。さらに、いくつかの実施形態において、その複数のファブリックにわたって制限されたファブリック・リソースの利用率を平衡化させることは、少なくとも１つの仮想マシンを代替のストレージ・アクセス技術に移行させて、その複数のファブリックのうちの少なくとも１つのファブリック上のファブリック・リソースを解放することをさらに含む。いくつかの実施形態において、少なくとも１つの仮想マシンを代替のストレージ・アクセス技術に移行させることは、その少なくとも１つの仮想マシンが低い優先度を有することに少なくとも部分的に基づき、いくつかの実施形態において、ファブリックは、ファイバ・チャネル・ベースのネットワークを備え、代替のストレージ・アクセス技術は、ｖＳＣＳＩを備える。
【００３２】
いくつかの実施形態において、ファブリック制限を特定すること、制限されたファブリック・リソースの割当てを特定すること、およびその複数のファブリックにわたって制限されたファブリック・リソースの利用率を平衡化させることは、周期的に実行される一方で、いくつかの実施形態において、ファブリック制限を特定すること、制限されたファブリック・リソースの割当てを特定すること、およびその複数のファブリックにわたって制限されたファブリック・リソースの利用率を平衡化させることは、少なくとも１つのファブリックに容量が不足すると実行される仮想マシン展開動作に応答して実行される。
【００３３】
さらに、いくつかの実施形態は、少なくとも１つのプロセッサと、その少なくとも１つのプロセッサによって実行されると、前述した方法のいずれかを実行するように構成されたプログラム・コードとを有する装置を含む。また、いくつかの実施形態は、非一時的コンピュータ可読媒体と、その非一時的コンピュータ可読媒体上に記憶され、少なくとも１つのプロセッサによって実行されると、前述した方法のいずれかを実行するように構成されたプログラム・コードとを含むプログラム製品も含む。
【００３４】
後段で明白となるとおり、多数の変形形態および変更形態が当業者には明白となろう。したがって、本発明は、本明細書において説明される特定の実施様態に限定されない。
【００３５】
ハードウェア環境およびソフトウェア環境
いくつかの図のすべてにわたって同様の番号が同様の部分を表す図面を参照すると、図１〜図２が、本発明と合致する仮想化されたコンピューティング環境またはコンピューティング装置１０における主要なハードウェア構成要素およびソフトウェア構成要素を示す。図１に示されるとおり、装置１０は、物理ハードウェアが、複数のコンピュータ・システム１６に配置された複数の物理プロセッサ・ノード１４の間に分散されたマルチノード・データ処理システム１２を含むことが可能であり、コンピュータ・システム１６は、１つまたは複数のプール１８に配置される。各プロセッサ・ノード１４は、１つまたは複数のプロセッサ２０と、１つまたは複数のメモリ・デバイス２２とを含み、いくつかの実施形態において、入出力（Ｉ／Ｏ）ハードウェア２４（例えば、１つまたは複数の入出力（Ｉ／Ｏ）アダプタ）またはネットワーク化ハードウェア２６あるいはその両方などの追加のハードウェアを含む。また、適切なネットワーク化機能（図示せず）が、様々なプロセッサ・ノード１４とコンピュータ・システム１６との間、ならびに他の外部システムとの間でデータ通信をもたらすのに使用されてもよい。
【００３６】
装置１０は、仮想化された環境を実装するのに適したいくつかの異なるアーキテクチャのいずれかを使用して実装され得る。例えば、一実施形態において、装置１０は、インターナショナル・ビジネス・マシーンズ・コーポレーションから入手可能なＰｏｗｅｒ（Ｒ）７７０、７８０、または７９５システムのうちの１つまたは複数を含むことが可能であり、装置１０の構成は、本開示の利点を有する当業者には明白であろう。しかし、仮想化された環境を実行するのに適した他のアーキテクチャが、本発明の他の実施形態において使用されてよく、したがって、本発明は、本明細書において開示される特定のアーキテクチャに限定されないことが認識されよう。Ｐｏｗｅｒ（Ｒ）は、インターナショナル・ビジネス・マシーンズ・コーポレーションの登録商標である。
【００３７】
各プロセッサ２０は、シングルスレッド・プロセッサもしくはマルチスレッド・プロセッサとして、またはシングルコア・プロセッサもしくはマルチコア・プロセッサとして、あるいはその両方として実装されることが可能である一方で、各メモリ２２は、１つもしくは複数のレベルのメモリ・デバイス、例えば、ＤＲＡＭベースのメイン・ストレージ、ならびに１つもしくは複数のレベルのデータ、命令、またはコンビネーション・キャッシュ（combination cache）、あるいはその組合せを含むものと考えられてよく、いくつかのキャッシュは、当技術分野においてよく知られるとおり、個々のプロセッサに、または複数のプロセッサに役立てられる。さらに、装置１０のメモリは、装置１０の別の場所に物理的に配置されたメモリ・ストレージ、例えば、プロセッサにおける任意のキャッシュ・メモリ、ならびに、例えば、大容量ストレージ・デバイス、もしくは装置１０に結合された別のコンピュータに記憶された、仮想メモリとして使用される任意のストレージ容量を含むものと考えられてよい。
【００３８】
装置１０は、後段でより詳細に説明されるとおり、１つまたは複数のカーネル、ハイパーバイザ、オペレーティング・システム、その他の制御下で動作し、様々なコンピュータ・ソフトウェア・アプリケーション、構成要素、プログラム、オブジェクト、モジュール、データ構造、その他を実行する、またはそれ以外ではこれらに依拠する。さらに、様々なアプリケーション、構成要素、プログラム、オブジェクト、モジュール、その他が、ネットワークを介して装置１０に結合された別のコンピュータにおける１つまたは複数のプロセッサ上で、例えば、分散コンピューティング環境もしくはクライアント−サーバ・コンピューティング環境において実行されてもよく、これにより、コンピュータ・プログラムの機能を実施するのに要求される処理は、ネットワークを介して複数のコンピュータに割り当てられてもよい。
【００３９】
例えば、図２は、装置１０におけるシステム１６内に存在することが可能な様々なソフトウェア構成要素２８〜４２を示す。ハイパーバイザまたは仮想マシン・モニタ（ＶＭＭ）２８が、１つまたは複数の仮想マシン（ＶＭ）３０をホストすることが可能であり、１つまたは複数の仮想プロセッサ（ＶＰ）３２、仮想メモリ（ＶＭｅｍ）３４、および仮想入出力（ＶＩＯ）リソース３６によってこの図に表される、システム１６の物理ハードウェア・リソースの一部分（１つまたは複数のプロセッサ・ノード１４に関連付けられたプロセッサ、メモリ、またはＩＯリソース、あるいはその組合せ）を各仮想マシン３０に割り当てることが可能である。各仮想マシン３０は、オペレーティング・システム３８、および、任意選択で、ミドルウェア４０をホストすることが可能であるとともに、１つもしくは複数のジョブまたはアプリケーション４２あるいはその両方をホストすることが可能である。論理パーティション、仮想サーバ、または仮想コンピュータとも呼ばれ得る各仮想マシン３０は、別個の物理コンピュータをエミュレートする様態で動作することが可能であり、このため、コンピュータによってホストされることが可能な任意のソフトウェア構成要素を事実上、ホストすることが可能であることを認識されたい。
【００４０】
また、さらなるハードウェア構成要素またはソフトウェア構成要素あるいはその両方、例えば、大容量ストレージ・ハードウェア、プリンタもしくはディスプレイなどの外部入出力デバイス、ならびに管理ハードウェアもしくは管理ソフトウェアあるいはその両方、例えば、装置のハードウェア構成もしくはソフトウェア構成あるいはその両方が管理者によって管理され得るようにするハードウェア管理コンソール（ＨＭＣ）が、装置１０に存在することも可能である。さらに、例示される実施形態において、１つまたは複数の外部ネットワーク４４に対する接続がサポートされてもよく、同様に、１つまたは複数のストレージ・ファブリック４８を介した１つまたは複数のストレージ・システム４６に対する接続がサポートされてもよい。仮想化された環境は、多数の様態で実装されることが可能であり、多数のハードウェア変形形態またはソフトウェア変形形態あるいはその両方を含むことが可能であり、このため、本発明は、本明細書において開示される特定の実施様態には限定されない。
【００４１】
本発明は、システム、方法、またはコンピュータ・プログラム製品、あるいはその組合せであり得ることが認識されよう。コンピュータ・プログラム製品は、１つまたは複数のプロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を有する１つの（または複数の）コンピュータ可読記憶媒体を含み得る。
【００４２】
コンピュータ可読記憶媒体は、命令実行デバイスによって使用されるように命令を保持すること、および記憶することができる有形のデバイスであり得る。コンピュータ可読記憶媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、または以上の任意の適切な組合せであり得るが、以上には限定されない。コンピュータ可読記憶媒体のより具体的な例の網羅的でないリストは、以下、すなわち、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読取り専用メモリ（ＲＯＭ）、消去可能なプログラマブル読取り専用メモリ（ＥＰＲＯＭもしくはフラッシュ・メモリ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、ポータブル・コンパクト・ディスク読取り専用メモリ（ＣＤ−ＲＯＭ）、デジタル・バーサタイル・ディスク（ＤＶＤ）、メモリ・スティック、フロッピー（Ｒ）・ディスク、命令が記録されているパンチカードもしくは溝の中の隆起構造などの機械的に符号化されたデバイス、および以上の任意の適切な組合せを含む。本明細書において使用されるコンピュータ可読記憶媒体は、電波もしくは他の自由に伝播する電磁波、導波路もしくは他の伝達媒体を介して伝播する電磁波（例えば、光ファイバ・ケーブルを通過する光パルス）、または配線を介して伝送される電気信号などの一時的な信号そのものであると解釈されるべきではない。
【００４３】
本明細書において説明されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピュータ／処理デバイスに、またはネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、または無線ネットワーク、あるいはその組合せを介して外部コンピュータもしくは外部ストレージ・デバイスにダウンロードされ得る。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを備え得る。各コンピューティング／処理デバイスにおけるネットワーク・アダプタ・カードまたはネットワーク・インターフェースが、ネットワークからコンピュータ可読プログラム命令を受信し、それぞれのコンピューティング／処理デバイス内のコンピュータ可読記憶媒体に記憶されるようにコンピュータ可読プログラム命令を転送する。
【００４４】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ（ＩＳＡ）命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、またはＪａｖａ（Ｒ）、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋、もしくは類似したものなどのオブジェクト指向プログラミング言語、および「Ｃ」プログラミング言語もしくは類似したプログラミング言語などの従来の手続き型プログラミング言語を含め、１つまたは複数のプログラミング言語の任意の組合せで書かれたソース・コードもしくはオブジェクト・コードであり得る。コンピュータ可読プログラム命令は、全体がユーザのコンピュータ上で実行されても、一部がユーザのコンピュータ上で実行されても、スタンドアロンのソフトウェア・パッケージとして実行されても、一部がユーザのコンピュータ上で、一部が遠隔コンピュータ上で実行されても、全体が遠隔コンピュータもしくは遠隔サーバ上で実行されてもよい。全体が遠隔コンピュータもしくは遠隔サーバ上で実行されるシナリオにおいて、遠隔コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）もしくはワイド・エリア・ネットワーク（ＷＡＮ）を含む任意のタイプのネットワークを介してユーザのコンピュータに接続されてよく、または接続は、外部コンピュータに対して行われてもよい（例えば、インターネット・サービス・プロバイダを使用してインターネットを介して）。いくつかの実施形態において、例えば、プログラマブル・ロジック回路、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、またはプログラマブル・ロジック・アレイ（ＰＬＡ）を含む電子回路が、本発明の態様を実行するために、電子回路をカスタマイズするようにコンピュータ可読プログラム命令の状態情報を利用することによってコンピュータ可読プログラム命令を実行することが可能である。
【００４５】
本発明の態様は、本発明の実施形態による方法、装置（システム）、およびコンピュータ・プログラム製品のフローチャートまたはブロック図あるいはその両方を参照して本明細書において説明される。フローチャートまたはブロック図あるいはその両方の各ブロック、ならびにフローチャートまたはブロック図あるいはその両方におけるブロックの組合せは、コンピュータ可読プログラム命令によって実施され得ることが理解されよう。
【００４６】
これらのコンピュータ可読プログラム命令は、そのコンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行されるそれらの命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／動作を実施する手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。また、これらのコンピュータ可読プログラム命令は、命令が記憶されているコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／動作の態様を実施する命令を含む製造品を備えるべく、コンピュータ可読記憶媒体に記憶され、コンピュータ、プログラマブル・データ処理装置、または他のデバイス、あるいはその組合せに特定の様態で機能するように指示することができるものであってもよい。
【００４７】
また、コンピュータ可読プログラム命令は、コンピュータ、他のプログラマブル装置、または他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／動作を実施するように、コンピュータによって実行されるプロセスを作り出すべく、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスにロードされ、コンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作ステップを実行させるものであってもよい。
【００４８】
図におけるフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実施様態のアーキテクチャ、機能、および動作を例示する。これに関して、フローチャートまたはブロック図における各ブロックは、指定された論理機能を実施するための１つまたは複数の実行可能命令を備える、命令のモジュール、セグメント、または部分を表し得る。いくつかの代替の実施様態において、ブロックに記載される機能は、図に記載される順序を外れて生じてよい。例えば、連続して示される２つのブロックが、実際には、実質的に同時に実行されてよく、またはそれらのブロックが、時として、関与する機能に依存して、逆の順序で実行されてよい。また、ブロック図またはフローチャートあるいはその両方の各ブロック、ならびにブロック図またはフローチャートあるいはその両方におけるブロックの組合せは、指定された機能もしくは動作を実行する、または専用ハードウェア命令とコンピュータ命令の組合せを行うまたは実行する専用ハードウェア・ベースのシステムによって実施され得ることにも留意されたい。
【００４９】
さらに、１つまたは複数がひとまとめにして「プログラム・コード」と呼ばれ得るコンピュータ可読プログラム命令が、そのような命令が本発明の特定の実施形態において実施されるアプリケーションに基づいて本明細書で識別され得る。しかし、以下の任意の特定のプログラム命名は、単に便宜のために使用され、このため、本発明は、そのような命名によって識別される、または暗示される、またはその両方が行われるいずれの特定のアプリケーションにおいてのみ使用されることには限定されるべきでないことを認識されたい。さらに、コンピュータ・プログラムがルーチン、プロシージャ、メソッド、モジュール、オブジェクト、および類似したものに編成され得る通常、際限のない様態、ならびに通常のコンピュータ内に存在する様々なソフトウェア層（例えば、オペレーティング・システム、ライブラリ、ＡＰＩ、アプリケーション、アプレット、その他）の間にプログラム機能が割り振られ得る様々な様態を考慮すると、本発明は、本明細書において説明される特定の編成およびプログラミングの割振りに限定されないことが認識されよう。
【００５０】
図１〜図２に示される例示的な環境は、本発明を限定することは意図していないことが当業者には認識されよう。実際、本発明の範囲を逸脱することなく、他の代替のハードウェア環境またはソフトウェア環境あるいはその両方が使用され得ることが当業者には認識されよう。
【００５１】
ファブリック制限に基づく仮想マシン管理
サーバがファイバ・チャネル・ベースのＳＡＮにおいてストレージ・システムに接続されたとき、一般に、ファブリック・ログイン（ＦＬＯＧＩ）がファブリック・スイッチ上で実行される。ファブリック・ログインは、ＤＨＣＰサーバからＩＰアドレスを獲得することと概念的に類似する。同様に、仮想サーバが、例えば、Ｎ＿Ｐｏｒｔ  ＩＤ仮想化（ＮＰＩＶ）を使用して、ＳＡＮにおいてストレージ・システムに接続されたとき、ＦＬＯＧＩと類似した、ファブリック発見（ＦＤＩＳＣ）と呼ばれるログイン動作が実行され得る。ＮＰＩＶは、例えば、仮想マシンにストレージを直接に割り当てるのに使用され得る。ファブリック・スイッチは、アクティブなＦＬＯＧＩおよびＦＤＩＳＣの数に対する制限を有することが可能であり、一般に、アクティブなファブリック・ログイン（ＦＬＯＧＩまたはＦＤＩＳＣあるいはその両方）の最大数は、スイッチが扱うことができるゾーン・メンバの数よりはるかに少ない。例えば、いくつかの市販のファブリック・スイッチは、ファブリック上のホストまたはストレージ・デバイスとして機能する１６，０００個までのゾーン・メンバをサポートするにもかかわらず、４００個のアクティブなＦＬＯＧＩまたはアクティブなＦＤＩＳＣの制限を有する。このため、ファブリック・スイッチは、一般に、所与の時点でスイッチを介してアクティブに通信することが可能な場合より、はるかに多くのホストおよびストレージ・デバイスがスイッチに対して構成されていることが可能である。
【００５２】
仮想化が使用される場合、ファブリック制限は、独特の困難をもたらし得る。詳細には、いくつかの応用例において、ファブリック・スイッチ・アクティブ・ログイン制限（アクティブなＦＬＯＧＩまたはアクティブなＦＤＩＳＣあるいはその両方の数に対する制限）を超えた場合、仮想マシンは、ストレージ・ボリュームに接続できない可能性があり、ストレージ・ボリュームが起動ディスクであるようなことがあった場合、仮想マシンは、起動しようと試みるときに失敗する可能性がある。
【００５３】
いくつかの仮想化された環境において、仮想マシン・イメージが、仮想マシンが最初に起動するときの動作の初期シーケンスを実行するロジックを含むように作成される。この初期シーケンスは、仮想マシンにホスト名およびＩＰアドレスを割り当てること、および資格証明を設定することなどの動作を実行することが可能である。このシーケンスは、１回、実行されてよく、それが失敗した場合、このシーケンスは再び実行され得ない。その結果、ファブリック・アクティブ・ログイン制限または他のファブリック制限を超えたために仮想マシンが起動ディスクにアクセス可能でない場合、仮想マシンにはエラーという印が付けられ得る。一般に、仮想マシンは、作成される／展開されることの一環として起動され、その結果、スイッチのＦＬＯＧＩ／ＦＤＩＳＣ制限は、ＮＰＩＶを用いたクラウド環境において仮想マシンの数を拡大縮小することに関する実質的な制約および費用要因であると見なされてよい。
【００５４】
したがって、本発明のいくつかの実施形態において、ファブリック制限、例えば、ファブリックにおける１つまたは複数のスイッチのアクティブなファブリック・ログイン制限が、仮想マシンの管理において使用され得る。例えば、いくつかの実施形態において、ファブリック制限は、仮想マシンを配置すべき場所、例えば、仮想マシンをホストすることができる複数のホストのうちの特定のホスト上に配置すべきと決定するときに使用され得る。このため、いくつかの実施形態において、ファブリック制限は、仮想マシン配置のためのホストを選別するプロセスに関連して使用され得るとともに、第１のファブリックの容量を超えた場合、代替のファブリックを選択するプロセス、またはファブリックがさらなるログインのための容量を有する時点を特定するプロセス、あるいはその両方に関連して使用され得る。
【００５５】
また、いくつかの実施形態において、ファブリック制限は、ロードバランシングに関連して、例えば、ストレージ性能が平衡化させられ、ファブリック制限が順守されるような様態で仮想化された環境における複数のファブリックにわたって制限されたファブリック・リソースを分散させるように使用されてもよい。このため、いくつかの実施形態において、ファブリック制限は、仮想マシンをあるファブリックから別のファブリックに移行させることによってファブリック使用をロードバランシングすることに関連して使用され得る。さらに、いくつかの実施形態において、ファブリック制限は、仮想化された環境におけるファブリックのすべてまたはいくつかのファブリックの容量を超えた場合に代替のストレージ・アタッチメント・タイプを選択する（例えば、ＮＰＩＶの代わりにｖＳＣＳＩを使用する）プロセスに関連して、または仮想マシンをＮＰＩＶ接続からｖＳＣＳＩ接続に移行させること（例えば、より低い優先度の仮想マシンが、より高い優先度の仮想マシンに関するアクティブなログインを解放するようにＮＰＩＶからｖＳＣＳＩに移行させられるように）によってファブリック使用をロードバランシングするプロセスに関連して、あるいはその両方に関連して使用されてよい。
【００５６】
さらに、いくつかの実施形態において、ファブリック制限は、仮想マシン起動エラーのリスクに対処するように仮想マシンの展開および起動に関連して使用されてもよい。例えば、いくつかの実施形態において、ファブリック制限は、ファブリックの容量を超えた場合に仮想マシンの展開中に仮想マシンのパワーアップを遅延させるプロセスに関連して、またはデータ・ディスク・ファブリックがファブリック制限に達した場合に仮想マシンを起動するべきかどうかを指定するプロセスに関連して、あるいはその両方に関連して使用されてよい。別の例として、いくつかの実施形態において、ファブリック制限は、ファブリックのさらなる容量が利用可能になった場合に仮想マシンのパワーアップをスケジュールするプロセスに関連して、またはファブリックのさらなる容量が利用可能になった場合に仮想マシンを起動するべき順序の優先順位を付けるプロセスに関連して、あるいはその両方に関連して使用されてよい。
【００５７】
さらに、本発明は、いくつかの実施形態において、クラウド・コンピューティングのために使用される仮想化された環境に関連して使用され得る。クラウド・コンピューティングは、しばしば、作業負荷変化に基づいてリソースがプロビジョニングされ、プロビジョニング解除される、伸縮性のあるコンピューティングを介して費用効率性を向上させる。作業負荷のリソース要件は、一般に、経時的に変化し、複数の作業負荷にわたってクラウド・リソースを多重化することは、しばしば、より高い全体的なリソース利用率をもたらす。さらに、費用効率を良くするために、すべての作業負荷がそれらの作業負荷の最大のリソース要件で同時に実行されるわけではなく、作業負荷に関するすべての最大リソース要件の合計より少ないリソースが割り当てられて、「オーバーコミットされる」と言われるリソースがもたらされ得るというリスクがとられ得る。例えば、クラウド・プロバイダは、仮想マシンのうちのいくつかが、他の仮想マシンがシャットダウンしているオフピーク時間に限って実行されるものと想定して、ホスト上でクラウド・プロバイダの仮想マシンにわたってより多くの仮想ＣＰＵを割り当てることが可能である。
【００５８】
リソースは、オーバーコミット比と呼ばれるオーバーコミット・パラメータを使用することによっていくつかの環境においてオーバーコミットされることが可能であり、オーバーコミット・パラメータは、利用可能なリソースの量にその比を掛けることによって容量を決定するのに使用され得る。例えば、１６個のプロセッサ・コアを有するシステムに関してプロセッサ・オーバーコミット比が４である場合のプロセッサ容量は、４＊１６＝６４の仮想プロセッサであり得る。次に、プロビジョニング・ロジック、例えば、フィルタが、仮想マシンがホストに展開されることが可能であるかどうかを判定するときに、その計算された容量を使用してよい。
【００５９】
本発明のいくつかの実施形態において、オーバーコミット比などのオーバーコミット・パラメータは、ファブリック制限に関連して使用されて、その結果、ストレージ・ファブリック、およびストレージ・ファブリックにアタッチされた任意のストレージ・システムの容量が向上し、利用率が最適化され得る。本明細書において使用される制限の概念は、容量の概念とは異なることに留意されたい。この説明の脈絡の範囲内で、制限は、実際の制限、例えば、ファブリック・スイッチが許すアクティブなログインの最大数を指すのに使用されてよく、他方、容量は、オーバーコミット・パラメータによる変更後の制限、例えば、オーバーコミット比を考慮に入れた後にファブリック・スイッチによって許されるアクティブなログインの数を指すのに使用されてよい。いくつかの実施形態において、ファブリック・オーバーコミット・パラメータは、１つのファブリックに関して定義されても、複数のファブリックに関して定義されても、ファブリックにおける個々の構成要素に関して定義されてもよい。
【００６０】
さらに、異なる動作環境に関して異なるオーバーコミット・パラメータが最適であり得ることが認識されよう。例えば、仮想化された環境が、主として長命の仮想マシンをホストする場合、制限されたファブリック・リソースをオーバーコミットすることの利点は、主として短命の仮想マシンをホストする環境における場合ほど大きくない可能性がある。このため、経時的に現れては消える可能性がより高い短命の仮想マシンを主としてホストする環境の場合、例えば、より高いオーバーコミット比が正当化され得る。
【００６１】
後段でより詳細に説明される一実施形態において、ファブリック制限ベースの仮想マシン管理が、クラウド／仮想化管理ソフトウェア、例えば、ＯｐｅｎＳｔａｃｋ（Ｒ）ベースの管理ソフトウェアに関連して使用されることが可能であり、ストレージ・ファブリックにアタッチされた１つまたは複数のホスト上の仮想マシンの配置を制御するように１つまたは複数のファブリック・スイッチに関するアクティブ・ログイン制限などのファブリック制限についての構成されたオーバーコミット比および情報を使用することが可能である。さらに、この実施形態において、ＮＰＩＶ起動ディスクに関連して、仮想マシンの起動は、ストレージ・ファブリックがオーバーコミットされていると判定された場合、ストレージ・ファブリックのアクティブなログインがアクティブ・ログイン制限を下回るまで、選択的に遅延させられてよい。
【００６２】
例示される実施形態において、クラウド／仮想化管理ソフトウェアによって管理されているファブリックの構成の一環として、ファブリックのアクティブ・ログイン制限の乗数を表す、管理下の各ファブリックに関するオーバーコミット比が指定されてよい。例えば、そのような機能は、Ｐｏｗｅｒ（Ｒ）システムのために使用され、ＯｐｅｎＳｔａｃｋ（Ｒ）フレームワークに基づき、インターナショナル・ビジネス・マシーンズ・コーポレーションから入手可能なＰｏｗｅｒ  Ｖｉｒｔｕａｌｉｚａｔｉｏｎ  Ｃｅｎｔｅｒ（ＰｏｗｅｒＶＣ）（Ｒ）エンタープライズ仮想化管理ソフトウェアなどのクラウド／仮想化管理ソフトウェアにおいてサポートされ得る。
【００６３】
例えば、図３は、複数のＳＡＮスイッチ６８によって表される、１つまたは複数のファブリックを介して複数のホスト６２に結合された複数のストレージ・デバイス６６を含むファイバ・チャネル・ベースのストレージ・エリア・ネットワーク（ＳＡＮ）６４に結合された複数のホスト６２を含む例示的な仮想化された環境６０を示す。ＳＡＮスイッチ６８は、単一のファブリックを定義してもよく、またはすべてのホストもしくはホストのサブセットをすべてのストレージ・デバイスもしくはストレージ・デバイスのサブセットにそれぞれが互いに接続する複数のファブリックを定義してもよいことが認識されよう。さらに、例示される実施形態において、各ＳＡＮスイッチ６８は、ＳＡＮ６４のファブリック制限を表すアクティブ・ログイン制限を有する。
【００６４】
各ホスト６２は、１つまたは複数の仮想マシン（ＶＭ）７２を管理する仮想マシン・マネージャまたはハイパーバイザ７０を含む。また、１つまたは複数の仮想入出力サーバ（ＶＩＯＳ）７４が各ホスト６２においてサポートされてもよく、機能としては、とりわけ、各ＶＩＯＳ７４は、ＳＡＮスイッチ６８に結合された複数のファイバ・チャネル（ＦＣ）アダプタ７６などの、１つまたは複数の物理Ｉ／Ｏアダプタの仮想化をサポートし得る。ＦＣアダプタ７６を仮想化する際、仮想マシン７２によってアクセスされるように１つまたは複数の仮想ファイバ・チャネル（ＶＦＣ）アダプタ７８が作成されてよく、仮想マシン７４が、ストレージ・デバイス６６にアクセスするためにＳＡＮ６４に事実上、ログインし、接続することが可能であるのは、ＶＦＣアダプタ７８を介してであり、ストレージ・デバイス６６もＦＣアダプタ８０を介して同様にＳＡＮスイッチ６８に結合される。他の実施形態において、ＶＩＯＳはまったく使用されなくてよく、アダプタの仮想化は、他のロジックによって実行されてよいことが認識されよう。
【００６５】
仮想化された環境６０の管理は、ＳＡＮ６４ならびに各ホスト６２に結合されたクラウド／仮想化管理ソフトウェア８２によって提供され得る。また、いくつかの実施形態において、ハードウェア管理コンソール（ＨＭＣ）が使用されてもよい。いくつかの実施形態において、クラウド／仮想化管理ソフトウェア８２またはＨＭＣあるいはその両方の機能は、環境６０における他の構成要素に（例えば、ハイパーバイザ７０、ＶＩＯＳ７４、その他に）部分的に割り振られてよく、または他のソフトウェア構成要素に分割されてよく、あるいはその両方が行われてよい。したがって、本発明は、本明細書において説明される機能の特定の割振りに限定されない。
【００６６】
いくつかの実施形態におけるクラウド／仮想化管理ソフトウェア８２、例えば、ＰｏｗｅｒＶＣ（Ｒ）対応のソフトウェアは、ファブリック制限またはオーバーコミット・パラメータあるいはその両方を与えられていることが可能であり、それらのファブリック制限または容量あるいはその両方と比較するために現在のリソース割当てに関する情報を追跡するように、または獲得するように構成されてもよい。例えば、いくつかの実施形態において、ファブリック制限は、ファブリック・スイッチ（例えば、ＳＡＮスイッチ６８）によって提供されるＡＰＩ、他のファブリック構成要素、または任意の他のファブリック管理ハードウェアまたはファブリック管理ソフトウェア、あるいはその組合せを使用することによって収集され得る。別の実施形態において、ユーザが、コンポーネント・ベンダによって提供される文書化された制限に基づいて制限を手作業で入力してよい。さらに、いくつかの実施形態において、現在のリソース割当てが、ファブリック・スイッチ（例えば、ＳＡＮスイッチ６８）および他のファブリック・ハードウェア構成要素またはファブリック・ソフトウェア構成要素あるいはその両方に問合せを行うことによってクラウド／仮想化管理ソフトウェアによって収集され得る一方で、他の実施形態において、ソフトウェアによってカウントが維持され、仮想マシンをパワーオンしたとき、および仮想マシンをパワーオフしたときにインクリメントされる／デクリメントされることが可能である。
【００６７】
制限情報（例えば、アクティブ・ログイン・ファブリック制限）、現在のリソース割当て情報（例えば、アクティブ・ログイン・カウント）およびオーバーコミット・パラメータ（例えば、オーバーコミット比）を使用して、クラウド／仮想化管理ソフトウェアが、仮想マシン展開のターゲットとなり得る可能なホストまたはファブリックあるいはその両方を選別して除くことが可能である。例えば、ファブリックＡが２というオーバーコミット比を有し、４００回のアクティブなファブリック・ログインという制限を有する場合、クラウド／仮想化管理ソフトウェアは、アクティブなログインの現在のカウントが８００である場合、ファブリックＡ上のホストに仮想マシンが展開されることをまったく許さないことが可能である。さらに、ファブリックＢが容量に達していない場合、そのファブリック上のホストが、クラウド／仮想化管理ソフトウェアによって、展開のための候補であると見なされ得る。
【００６８】
さらに、いくつかの実施形態において、クラウド／仮想化管理ソフトウェアは、仮想マシンに関して、ファブリック制限を超えているかどうか、または例えばＮＰＩＶ付属の（NPIV attached）データ・ディスクに関してディスクが要求されるかどうかにかかわらず仮想マシンが起動すべきかどうかを指定するように構成可能であり得る。さらに、いくつかの実施形態において、環境は、ファブリックがファブリック制限に、または容量に達している場合、存在するとすれば、いずれの他のストレージ・アクセス技術が使用され得るかを指定する（例えば、ＮＰＩＶファブリックが容量に達している場合、ｖＳＣＳＩを使用することに切り換える）ように構成可能であり得る。
【００６９】
次に図４を参照すると、環境６０において実行されることが可能な仮想マシン展開ルーチン１００が、より詳細に例示される。ルーチン１００は、例えば、環境に新たな仮想マシンを展開する管理者要求に応答して実行されてよく、例えば、環境においてローカルで実行されても、環境に結合された外部コンピュータにおいて遠隔で実行されてもよいグラフィカル・ユーザ・インターフェースを介した対話に応答して実行されてよい。
【００７０】
この脈絡において、仮想マシンの展開とは、環境６０における新たな仮想マシンの作成および起動／パワーオンを指し、このため、ルーチン１００は、ブロック１０２において、展開されるべき仮想マシンに関する要求されるリソースまたは他の構成設定あるいはその両方を受信することから始まる。ユーザが、例えば、仮想プロセッサの所望される数、仮想メモリの所望される量、仮想ストレージの所望される量、所望されるネットワークまたはストレージ接続あるいはその両方、その他、ならびに性能調整、仮想マシン名、ストレージのタイプ、ストレージ・ディスクまたはストレージ・ボリュームの数、その他などの設定を指定してよい。
【００７１】
次に、ブロック１０４において、展開されるべき仮想マシンがホスト上に配置され、すなわち、仮想マシンのためのホストが、仮想化された環境における複数のホストから選択される。ホストは、管理者によって指定された仮想マシン要件および仮想マシン設定との適合性、ならびに作業負荷を平衡化させることによって仮想化された環境の全体的な性能を最適化することを含む様々な要因に基づいて選択され得る。１つの適切な仮想マシン配置動作のさらなる説明が、図５に関連して後段で述べられる。
【００７２】
次に、仮想マシンのためのホストが選択されると、ブロック１０６において、例えば、ホスト上の仮想マシン管理機能にそのホスト上で新たな仮想マシンを作成するよう命令することによって、仮想マシンが作成される。次に、ブロック１０８において、１つまたは複数の仮想アダプタが、例えば、ネットワーク接続またはストレージ接続あるいはその両方を作成するように、仮想マシンに追加され得る。一実施形態において、例えば、１つまたは複数の仮想イーサネット（Ｒ）・アダプタ、および１つまたは複数の仮想ファイバ・チャネル・アダプタなどの仮想アダプタが追加され得る。いくつかの実施形態において、ブロック１０６および１０８は、図３のソフトウェア８２が、特定のホスト上で仮想マシンを作成するよう、作成された仮想マシン上で特定の仮想アダプタを作成するようＨＭＣに命令することによって実施され得る。
【００７３】
次に、ブロック１１０において、１つまたは複数の仮想ストレージ・ボリュームが、仮想マシンのために追加され得る。例えば、ソフトウェア８２が、ボリュームを作成し、ストレージ・ファブリックと通信してゾーンをセットアップし、その結果、仮想マシンがストレージと通信することを可能にする機構を作り出すことが可能である。次に、ブロック１１２において、例えば、仮想マシンにおいて実行されるべきオペレーティング・システムおよびアプリケーションを含むあらかじめ記憶されたイメージの集まりから、仮想マシン・イメージが、起動ボリュームにコピーされる。
【００７４】
次に、ブロック１１４が、仮想マシンのオペレーティング・システムに関するシステム構成情報、例えば、ホスト名、ＩＰアドレス、その他などの情報を獲得する。例えば、いくつかの実施形態において、仮想光ドライブが仮想マシンに追加されてよく、この場合、システム構成情報が仮想光ディスク上で提供される。他の実施形態において、システム構成情報は、例えば、ネットワーク化されたメタデータ・サービスを介して、別の様態で獲得されてよい。
【００７５】
次に、ブロック１１６において、仮想マシンは、例えば、ソフトウェア８２が、仮想マシンを起動するようＨＭＣに命令することによって、起動される。その後、仮想マシンが起動しようと試み、ルーチン１００が完了する。仮想マシンを起動することは、物理コンピュータの電源を投入すること、および物理コンピュータを完全にアクティブな状態にすることと同様であり、このため、仮想マシンを完全にアクティブな状態にするように仮想マシンのプログラム・コードの初期設定および実行を組み込むものと見なされてよい。さらに、「起動する」および「パワーアップする」という術語は、本明細書において互換的に使用され得る。
【００７６】
仮想マシンの展開は、異なる仮想化された環境においていくつかの異なる様態で実施され得ることが認識されよう。このため、本開示の利点を有する当業者には認識されるとおり、いくつかの異なる代替のプロセスが、他の実施形態において使用されてよい。
【００７７】
ブロック１０４に関連して前述したとおり、仮想マシン配置動作は、仮想マシンを展開すべきホストを選択するように実行され得る。さらに、本発明のいくつかの実施形態と合わせて、ファブリック制限が、仮想マシン配置動作において考慮され得る。例えば、図５は、本発明のいくつかの実施形態における図４のブロック１０４を実施するのに使用され得る仮想マシン配置ルーチン１２０を例示する。
【００７８】
ルーチン１２０が、ブロック１２２において、例えば、仮想マシンが仮想マシンの作業負荷を扱うために必要とする任意の特定のストレージ、アーキテクチャ、プロトコル、ネットワーク・リソース、リソース容量要件、その他に基づいて、展開されるべき仮想マシンの要件を満たすホスト、ストレージ・システム、およびファブリックのプールを特定することから始まる。次に、ブロック１２４が、互いに適合し、仮想マシンをホストする十分な容量を有するプールからホスト、ストレージ、およびファブリックの候補組合せを特定する。このステップは、好ましくは、ファブリック制限またはオーバーコミットされるファブリック容量あるいはその両方に違反する組合せを選別して除くことを含む。特定の組合せが適切な候補であるかどうかを判定するとき、ブロック１２４は、ホスト上のハードウェア・リソースの容量／制限、例えば、プロセッサ・リソース、メモリ・リソース、アダプタ・リソース、その他を考慮することが可能であり、いくつかの実施形態において、オーバーコミット比が、そのようなハードウェア・リソースの容量を特定するときに使用され得る。同様に、ブロック１２４は、組合せが適切な候補であるかどうかを判定するとき、ストレージ・システムの容量／制限を考慮することが可能である。
【００７９】
さらに、いくつかの実施形態において、ブロック１２４は、ホスト／ファブリック／ストレージ・システムの組合せが適切な候補であるかどうかを判定するとき、ファブリック制限またはファブリック容量あるいはその両方を考慮し得る。例えば、１つまたは複数のファブリック・スイッチのアクティブ・ログイン制限が、候補組合せの判定において考慮されてよく、これにより、特定のファブリックにおけるスイッチに関してファブリック・スイッチ・アクティブ・ログイン制限を超えている場合、そのファブリックを組み込んだいずれの組合せも候補から除外され得る。
【００８０】
さらに、いくつかの実施形態において、オーバーコミット・パラメータ、例えば、オーバーコミット比が、ファブリックが十分な容量を有するかどうかを判定するときに使用されてよい。このため、ファブリック・スイッチが４００回のアクティブなログインという制限を有し、かつファブリックに関して２というオーバーコミット比が指定される場合、そのファブリックは、８００回未満であるアクティブなログインの現在の数の十分な容量を有するものと見なされる。
【００８１】
次に、ブロック１２６が、少なくとも１つの候補組合せが見出されたかどうかを判定する。見出された場合、ブロック１２８が、複数の候補組合せが見出されているかどうかを判定し、１つだけの候補組合せが見出されている場合、制御は、その単一の候補組合せを、配置動作によって選択された組合せとして返すブロック１３０に進む。
【００８２】
しかし、複数の候補組合せが見出されている場合、ブロック１２８は、制御を、各候補組合せを採点するブロック１３２に渡し、次に、最高の採点の候補組合せを選択するブロック１３４に渡す。次に、制御は、その選択された候補組合せを返すブロック１３０に進む。
【００８３】
候補組合せを採点するとき、仮想化された環境内の仮想マシンの配置を最適化するために、様々な要因が考慮されてよく、それらの要因に様々な重みが付けられてよい。例えば、様々なロードバランシングアルゴリズムが、作業負荷を平衡化させるため、性能を最大化するため、仮想マシンによって使用される他のリソースとの通信費用を最小限に抑えるため、データ・センタにおける電力消費を最適化するため（例えば、ホストのサブセット上に仮想マシンを位置付け、他のホストの電源が切られることを可能にするため）、仮想マシンを関連する他の仮想マシンと並置するため、災害または高い利用可能性の計画のために仮想マシンを関連する他の仮想マシンと並置しないようにする（anti-collocate）ため、およびその他のために仮想マシンを配置するのに適用されてよい。さらに、本発明に合わせたいくつかの実施形態において、ファブリック制限またはファブリック容量あるいはその両方が、オーバーコミット・パラメータに基づくか否かにかかわらず、候補組合せを採点するときに考慮されてもよい。
【００８４】
したがって、本発明のいくつかの実施形態において、採点Ｓが、以下、すなわち、
【数１】
0006774490.tif 000002
のとおりいくつかの実施形態における組合せに関して計算されてよく、ここで、ｆｉは、合計でｎ個の要因のうちの１つの要因であり、ｗｉは、その要因に付けられる重みであり、少なくとも１つの要因ｆｉは、ファブリック制限またはファブリック容量あるいはその両方と関係する。
【００８５】
ブロック１２６に戻ると、候補組合せがまったく見出されなかった場合、制御は、例えば、仮想マシンが他の任意の組合せに場合によっては展開されることを可能にする、他の構成設定が可能であるかどうかを判定するブロック１３６に進む。他の構成設定が可能である場合、制御は、仮想マシンの１つまたは複数の要件を変更する（（許される場合）ファブリックまたはストレージ技術あるいはその両方を変更することを含む）ブロック１３８に進み、次に、更新された仮想マシン要件を満たすホスト、ストレージ、およびファブリックのプールを特定し、１つまたは複数の候補組合せを識別しようと試みるブロック１２２に進む。ブロック１３６が、他の構成設定は可能でないと判定した場合、制御は、ブロック１４０に代わりに進み、これにより、ルーチン１２０が、適切な組合せが識別されなかったことを示すエラーを返す。
【００８６】
ブロック１３８に戻ると、仮想マシンの要件に対して行われ得る変更としてとりわけ、いくつかの実施形態は、様々なファブリック関連の変更を含み得る。例えば、いくつかの実施形態において、ブロック１３８は、代替のファブリックを選択すること、または代替のストレージ・アタッチメント・タイプもしくは代替のストレージ技術を選択すること（例えば、ＮＰＩＶの代わりにｖＳＣＳＩを選択すること、ＳＡＮボリュームをホストに接続すること、およびＶｉｔｒｉｏ（Ｒ）技術を使用してストレージを仮想マシンに対して仮想化すること、その他）、あるいは、その両方が可能である。いくつかの実施形態において、１つのタイプのファブリックもしくはストレージ・アクセス技術を別のタイプより優先するように、または別のタイプのファブリックもしくはストレージ・アクセス技術が容量超過である、またはそれ以外では、利用できない場合に限って、１つのタイプのファブリックもしくはストレージ・アクセス技術を選択するように構成選好が指定されてよい。
【００８７】
このため、本発明のいくつかの実施形態において、ファブリックまたはファブリックを組み込んだ組合せ、あるいはその両方が仮想マシンの配置のための候補であるかどうかを判定するときと、候補組合せを採点するときの両方で、ファブリック制限またはファブリック容量あるいはその両方が、配置ルーチン内で考慮され得る。各事例において、判定は、一般に、１つまたは複数のファブリックのファブリック制限について行われるとともに、ファブリック制限が関連付けられた、制限されたファブリック・リソースの割当てについても行われる。したがって、ホスト上の仮想マシンの配置は、そのような判定を条件とし得る。
【００８８】
再び図４に戻ると、ファブリック制限が、例えば、ファブリックの容量を超えた場合に展開中に仮想マシンのパワーアップを遅延させるために、ブロック１１６において仮想マシンの起動に関連して考慮されてもよい。例えば、いくつかの実施形態において、オーバーコミット・パラメータが、実際のファブリック制限を超える容量を特定するのに使用される（例えば、スイッチの実際のファブリック・ログイン制限を超えるアクティブなファブリック・ログインの容量をもたらすように）場合、ファブリックを介して仮想マシンに結合された起動ボリュームが、仮想マシンが起動されたときにアクセス可能でなく、起動することに失敗することになり得る。いくつかの事例において、仮想マシン・イメージが、ホスト名およびＩＰアドレスを割り当てる動作の初期シーケンスを実行し、資格証明を設定し、起動ボリュームを起動させようと試み、起動ボリュームがファブリック制限のためにアクセスされ得ない場合、その仮想マシンにはエラーとして印が付けられ得る。さらに、いくつかの事例において、仮想マシンが起動することに失敗した場合、再起動を試みるのに手作業の介入が要求される可能性があり、このため、仮想マシンが適切に起動するのを確実にするのにさらなる管理オーバーヘッドが要求され得る。
【００８９】
他方、本発明に合わせたいくつかの実施形態において、ファブリック制限が、ファブリックが仮想マシンを起動するのに十分な容量を有するかどうかを判定し、十分な容量を有しない場合、仮想マシンの起動を遅延させるように仮想マシンを起動するのに先立って検査され得る。このため、仮想マシンは、ホスト上に作成されているものの、十分な容量が存在するまで起動されない。
【００９０】
いくつかの実施形態において、起動が遅延させられた仮想マシンが、例えば、先入れ先出し（ＦＩＦＯ）キューに入れられてよく、ファブリック上に十分な容量が存在するようになると、その仮想マシンが、後で起動されてよい。十分な容量が存在すると分かると、仮想マシンは、キューから出されて、ホスト上で起動されてよい。いくつかの実施形態おいて、遅延させられた仮想マシンが起動されることが可能な時点を判定し、次に、仮想マシンの実際の起動を開始するモニタ・プロセスが使用されてよい。
【００９１】
いくつかの実施形態において、仮想マシンが、ＦＩＦＯベースでキューから出され得る一方で、他の実施形態において、仮想マシンには、より高い優先順位を有する仮想マシンが、より低い優先順位を有する仮想マシンより先に起動されるように、例えば、仮想マシンを作成すること、または展開すること、あるいはその両方を行うことに関連して各仮想マシン上に優先順位を設定することによって、優先順位が付けられてよい。さらに、いくつかの実施形態において、仮想マシンに関する構成設定が、１つまたは複数のボリュームに関する代替のストレージ・アクセス技術を指定する場合、展開は、その構成設定、およびアクティブなファブリック・ログインが制限または容量に達しているかどうかに基づいて、代替のストレージ・アクセス技術でボリュームをアタッチしてよい。
【００９２】
例えば、図６は、仮想マシン起動ルーチン１５０として図４のブロック１１６の実施様態を示す。ルーチン１５０は、仮想マシンを起動する要求または命令に応答して実行され、ブロック１５２において、仮想マシンの起動ボリュームに関してファブリック容量を超えているかどうか、すなわち、仮想マシンがファブリックを介して起動ボリュームに接続することを可能にする十分な容量がファブリックに存在するかどうかを判定することから始まる。容量は、これに関して、いくつかの実施形態において実際のファブリック制限に基づいてよく、したがって、十分な容量が存在するかどうかの判定は、実際のファブリック制限とそのファブリック制限が関連付けられた制限されたファブリック・リソースの現在の割当ての比較に基づくこと、例えば、ファブリック・スイッチに関するアクティブ・ログイン制限とそのファブリック・スイッチに関するアクティブ・ログインの現在の数の比較によることが可能である。
【００９３】
起動ボリュームに関してファブリック容量を超えていない場合、ブロック１５２は、制御を、仮想マシンに関する他のいずれかのデータ・ボリュームに関してファブリック容量を超えているかどうかを同様に判定するブロック１５４に渡す。ファブリック容量を超えていない場合、制御は、例えば、仮想マシンを起動するようＨＭＣに合図することによって、仮想マシンを起動する／パワーアップするブロック１５６に進み、ルーチン１５０は、完了する。
【００９４】
ブロック１５４に戻ると、仮想マシンに関するいずれかのデータ・ボリュームに関してファブリック容量を超えている場合、制御は、仮想マシンが依然として起動することを許されるかどうかを判定するブロック１５８に進む。例えば、いくつかの実施形態において、他の任意のデータ・ボリュームがアクセス可能であるかどうかにかかわらず、起動ボリュームに対してアクセスを有する仮想マシンが起動するのを許すことが望ましいことがあり得る。さらに、いくつかの実施形態において、仮想マシンが、データ・ボリュームに対するアクセスを欠いた状況において起動することができるかどうかを指定する構成設定を与えることが望ましいことがあり得る。このため、起動が依然として許される場合、ブロック１５８は、制御を、仮想マシンをパワーアップするブロック１５６に渡す。
【００９５】
他方、ブロック１５２において起動ボリュームに関してファブリック容量を超えていると判定された場合、またはブロック１５４および１５８においてデータ・ボリュームに関してファブリック容量を超えていると判定され、仮想マシンを起動することが許されない場合、制御は、そのファブリックに関連付けられたキューに仮想マシンを入れるブロック１６０に進み、ルーチン１５０は、完了する。
【００９６】
次に、図７を参照すると、遅延起動モニタ・ルーチン１７０が例示される。ルーチン１７０は、背景プロセスまたは持続プロセスにおいて実行されてよく、図６のルーチン１５０によって仮想マシンが入れられたキューを監視することが可能である。ルーチン１７０は、ブロック１７２において、キューが空であるかどうかを判定することから始まることが可能であり、キューが空である場合、制御は、次の監視間隔を待機するブロック１７４に進み、その後、制御は、キューのステータスを再び検査するブロック１７２に戻る。
【００９７】
しかし、１つまたは複数の仮想マシンがキューに入れられる場合、ブロック１７２は、制御を、キューにおける任意の仮想マシンに関して、その仮想マシンを起動するために任意の必要なファブリック上で十分なファブリック容量が利用可能であるかどうかを判定するブロック１７６に渡す。そのようなファブリック容量が利用可能でない場合、ブロック１７６は、制御を、次の監視間隔を待機するブロック１７４に渡す。
【００９８】
しかし、いずれの仮想マシンが起動するのにも十分なファブリック容量が存在しない場合、ブロック１７６は、制御を、キューにおける仮想マシンに優先順位を付ける、またはいくつかの実施形態において、ファブリックの利用可能な容量に基づいて起動されることが可能な仮想マシンだけに優先順位を付けるブロック１７８に渡す。優先順位は、各仮想マシンに関連付けられた構成設定に基づいてよく、あるいは仮想マシン・タイプ、または仮想マシン、ホスト、ファブリック、ストレージ・システム、その他の他の特性などの他の要因に基づいてよい。しかし、他の実施形態において、仮想マシンは、先入れ先出し（ＦＩＦＯ）様態で順序付けられてよい。
【００９９】
次に、ブロック１８０において、１つまたは複数の仮想マシンが、ブロック１７８において判定された順序に基づいて選択されて、キューから出され、次に、ブロック１８２において、選択された１つまたは複数の仮想マシンをパワーアップする。次に、制御は、次の監視間隔を待機するブロック１７４に戻る。
【０１００】
また、ファブリック制限は、いくつかの実施形態において、ファブリックにわたるロードバランシングに関連して使用されてもよい。詳細には、いくつかの実施形態において、複数のファブリックが、所与のホストとストレージ・システムの組合せに関して、複数のポートを構成することによって使用されてよい。本発明の実施形態に合わせたクラウド／仮想化管理ソフトウェアが、複数のファブリックの現在のアクティブなログインおよびアクティブ・ログイン制限を使用してよく、ファブリックの制限に達していない、または残っている容量が最も多いファブリックを使用するよう仮想マシンをプロビジョニングしてよい。さらに、いくつかの実施形態において、ファブリックの継続した監視、およびファブリックのロードバランシングは、１つまたは複数の仮想マシンをパワーダウンすること、それらの仮想マシンを他のファブリックに割り当てなおすこと、およびそれらの他のファブリックを使用するよう仮想マシンを再びパワーアップすることによって実行されてよい。さらに、いくつかの実施形態において、仮想マシンに関する構成設定が代替のストレージ・アクセス技術（例えば、ＮＰＩＶの代わりにｖＳＣＳＩ）を指定する場合、その仮想マシンに関するストレージは、さらなるファブリック・リソースを解放するように代替のストレージ・アクセス技術に移行させられてよい。いくつかの実施形態において、より高い優先順位の仮想マシンのためにさらなるファブリック・リソースを解放するように１つまたは複数のより低い優先順位の仮想マシンを代替のストレージ・アクセス技術に移行させることが望ましことさえあり得る。
【０１０１】
例えば、図８は、負荷を平衡化させる要求に応答して、平衡化された最適未満の負荷を検出したことに応答してなど、例えば、周期的に実行されてよいロードバランシングルーチン２００を示す。また、ルーチン２００は、例えば、展開されている仮想マシンによって必要とされる特定のファブリックがその仮想マシンによって使用されるように利用可能でない場合、仮想マシン展開に関連して実行されてもよい。ルーチン２００は、ブロック２０２において、ロードバランシングすべき各ファブリックに関するファブリック・リソース割当てを獲得することから始まる。例えば、いくつかの実施形態におけるファブリック・リソース割当ては、各ファブリックにおけるスイッチに関する現在のアクティブなログインと関係し得る。次に、ブロック２０４が、各ファブリックに関するファブリック制限、例えば、各ファブリックにおける各スイッチに関するアクティブ・ログイン制限を獲得する。さらに、いくつかの実施形態において、オーバーコミット比などのオーバーコミット・パラメータが、特定されたファブリック制限を調整して、それにより、各ファブリックに関するオーバーコミットされる容量を特定するのに使用されてよい。
【０１０２】
次に、ブロック２０６が、例えば、パワーダウンし、異なるファブリックを使用するように再構成し、再びパワーアップするように１つまたは複数の仮想マシンを選択することによって１つまたは複数の仮想マシンを異なるファブリックに移行させることによって、ファブリックにわたって負荷を再平衡化させようと試みる。本開示の利点を有する当業者には認識されるとおり、様々なロードバランシングアルゴリズムが、負荷を再平衡化するのに使用されてよく、様々な要因、例えば、仮想マシン優先順位、特定の仮想マシンのファブリック要件、その他が、そのようなアルゴリズムに関連して使用されてよい。
【０１０３】
次に、ブロック２０８が、いくつかの異なるメトリックのいずれかに基づいて、ロードバランシング動作が成功したかどうかを判定する。成功した場合、ルーチン２００は、完了する。しかし、成功していない場合、制御は、代替のファブリックまたはストレージ技術、あるいはその両方に、例えば、ＮＰＩＶの代わりにｖＳＣＳＩなどの異なるストレージ・アクセス技術にいずれかの仮想マシンが移行させられることが可能であるかどうかを判定するブロック２１０に進む。そのような判定は、例えば、いずれかの仮想マシンが、その仮想マシンのために代替の技術が使用されてよいことを指定する構成設定を有するかどうかに基づき得る。
【０１０４】
適切に構成された仮想マシンが存在しない場合、ブロック２１０は、ルーチン２００を終了させる。しかし、そのような仮想マシンが存在する場合、ブロック２１０は、本開示の利点を有する当業者には認識されるとおり、例えば、ストレージをアンマップし、ゾーン設定（zoning）をドロップし、関連付けられたアダプタを除去し、次に、展開中に使用されるのと同様の動作を介してアダプタおよびストレージを追加し、そのストレージをマップし、ゾーン設定することに進むロジックを使用して、１つまたは複数の仮想マシンを代替のファブリックまたはストレージ技術あるいはその両方に移行させるブロック２１２に制御を渡す。次に、制御は、代替の技術に移行させられた１つまたは複数の仮想マシンでファブリック負荷を再平衡化させようと試みるブロック２０６に進む。
【０１０５】
したがって、ファブリック制限は、仮想化されたコンピューティング環境のいくつかの態様において、１つまたは複数のファブリックを介して１つまたは複数のストレージ・システムに結合された１つまたは複数の仮想マシンの性能を最適化するのに使用され得ることが理解されよう。本発明に合わせた例示される実施形態に様々な変更が行われてよい。したがって、本発明は、以下に添付される特許請求の範囲に存する。
【図１】
0006774490.tif 000003
【図２】
0006774490.tif 000004
【図３】
0006774490.tif 000005
【図４】
0006774490.tif 000006
【図５】
0006774490.tif 000007
【図６】
0006774490.tif 000008
【図７】
0006774490.tif 000009
【図８】
0006774490.tif 000010