(57)【特許請求の範囲】
【請求項１】
仮想マシンの移動のためのコンピュータ実行方法であって、
実行可能命令で構成される１つ以上のコンピュータシステムの制御下で、
仮想マシンの少なくとも１つの構成要素を特徴付ける情報を受信することであって、前記仮想マシンは、第１の仮想マシンタイプであり、第１組の実装リソースを伴って管理される、ことと、
前記受信した情報に少なくとも部分的に基づく移動テンプレートを確立することであって、前記移動テンプレートは、前記第１の仮想マシンタイプから第２の仮想マシンタイプへの仮想マシン移動に対応する、ことと、
前記仮想マシンが前記第２の仮想マシンタイプを有するよう変換されるように、前記第１組の実装リソースから第２組の実装リソースへ、前記移動テンプレートに従って前記仮想マシンを移動させることと、
前記移動テンプレートに従って、前記仮想マシンの前記少なくとも１つの構成要素の再構成をトリガすることと、
前記仮想マシンでサービスをユーザに提供することと、
を含む、コンピュータ実行方法。
【請求項２】
前記移動テンプレートを確立することは、前記受信した情報に少なくとも部分的に基づいて、一組の移動オプションを判定することを含む、請求項１に記載のコンピュータ実行方法。
【請求項３】
前記一組の移動オプションを前記仮想マシンの管理者に提示することと、
前記管理者によって行われた前記一組の移動オプションに関する選択に少なくとも部分的に基づいて、前記移動テンプレートを構成することと、
をさらに含む、請求項２に記載のコンピュータ実行方法。
【請求項４】
前記仮想マシンの前記少なくとも１つの構成要素の前記再構成は、前記仮想マシンのオペレーティングシステムへの少なくとも１つのさらなる構成要素の追加を含む、請求項１に記載のコンピュータ実行方法。
【請求項５】
前記少なくとも１つのさらなる構成要素は、ハードウェア構成要素ホットプラグ能力を提供するように、前記オペレーティングシステムを再構成する、請求項４に記載のコンピュータ実行方法。
【請求項６】
前記仮想マシンを移動させることは、前記仮想マシンを一時停止すること、および、前記仮想マシンを再開することを含む、複数のステップを含み、かつ、前記仮想マシンの前記少なくとも１つの構成要素の前記再構成は、前記仮想マシンを一時停止した後および前記仮想マシンを再開する前に生じる、請求項１に記載のコンピュータ実行方法。
【請求項７】
前記少なくとも１つの構成要素は、前記仮想マシンのオペレーティングシステムの少なくとも１つの構成要素にリンクされるアプリケーションを備え、前記アプリケーションの前記再構成は、前記アプリケーションを前記オペレーティングシステムの少なくとも１つの異なる構成要素に再リンクすることを含む、請求項１に記載のコンピュータ実行方法。
【請求項８】
前記移動テンプレートは、前記第１組の実装リソースのうちの少なくとも１つが、前記第２組の実装リソースのうちの少なくとも１つで模倣されることを特定する、請求項１に記載のコンピュータ実行方法。
【請求項９】
仮想マシンの移動のためのコンピュータ化されたシステムであって、
集合的に複数の仮想マシンを維持することが可能な複数の実装リソースと、
少なくとも、
第１のタイプの仮想マシンから第２のタイプの仮想マシンへの仮想マシン移動に対応する移動テンプレートをユーザが確立をすることを可能にすることであって、前記移動テンプレートは、前記第１のタイプの仮想マシンの少なくとも１つの構成要素の再構成を含む、処理と、
前記移動テンプレートに従って移動されることになる前記第１のタイプの一組の仮想マシンを前記ユーザが選択することを可能にする処理と
を行うように構成されるユーザインターフェースと、
前記第１のタイプの仮想マシンの前記少なくとも１つの構成要素を特徴付ける情報を少なくとも受信するように構成される移動エージェントインターフェースと、
前記移動テンプレートに従って、かつ、前記受信した情報に少なくとも部分的に基づいて、前記一組の仮想マシンが、前記第２のタイプの仮想マシンに変換されるように、第１組の複数の実装リソースから第２組の複数の実装リソースへ前記一組の仮想マシンを移動するように構成される移動管理構成要素と、
を含む、システム。
【請求項１０】
前記ユーザインターフェースはさらに、少なくとも、前記ユーザが前記一組の仮想マシンへの一組の移動エージェントの追加を承認することを可能にするように構成され、
前記移動管理構成要素はさらに、少なくとも、前記一組の仮想マシンを移動させる前に、前記一組の移動エージェントを前記一組の仮想マシンに追加するように構成される、
請求項９に記載のシステム。
【請求項１１】
前記一組の移動エージェントは、少なくとも、前記少なくとも１つの構成要素を特徴付け、前記第１のタイプの仮想マシンの前記少なくとも１つの構成要素を特徴付ける情報を前記移動エージェントインターフェースに提供するように構成される、少なくとも１つの移動エージェントを備える、請求項１０に記載のシステム。
【請求項１２】
前記一組の移動エージェントは、前記一組の仮想マシンによって維持される、複数のタイプのオペレーティングシステムに対応する、複数のタイプの移動エージェントを備える、請求項１０に記載のシステム。
【請求項１３】
前記少なくとも１つの構成要素を特徴付ける前記情報は、前記少なくとも１つの構成要素がハードウェア構成要素ホットプラグ機能性を組み込むかどうかという指示を含む、請求項９に記載のシステム。
【請求項１４】
前記少なくとも１つの構成要素を特徴付ける前記情報は、前記少なくとも１つの構成要素がハードウェア構成要素ホットプラグ機能性を組み込むことが可能であるかどうかを判定するのに十分な情報を含む、請求項９に記載のシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
個人および組織が、多種多様なタスクを行い、それを支援するために、ネットワークコンピュータを使用することが一般的となってきている。物理的なコンピュータハードウェアおよび好適なデータネットワーキング環境を所有して維持するよりもむしろ、仮想コンピュータシステムの専門プロバイダにおいて、そのような仮想システムを整備することが、ますます一般的になりつつある。仮想コンピュータシステムの使用は、費用利益および／または変化するコンピューティングリソースの必要性に急速に適応する能力を含む、いくつかの利点を提供することができる。しかしながら、従来の仮想コンピュータシステムプロビジョニングには、いくつかの欠点がある。
【発明の概要】
【発明が解決しようとする課題】
【０００２】
仮想コンピュータシステムは、最終的に、物理的コンピューティングハードウェアおよび他の実装リソースで実装される。それにもかかわらず、仮想コンピュータシステムは、存在、および基礎的実装リソースから独立している構成を有してもよい。特定の実装リソース、および実装リソースセット全体でさえも、それらが実装する仮想コンピュータシステムを終了させることなく、置換されることは珍しくない。このようにして、仮想コンピュータシステムは、比較的長い寿命を有することができる。しかしながら、そのような寿命がより長くなるにつれて、基礎的実装リソースに関する種々の問題が発生し得る。
【課題を解決するための手段】
【０００３】
特定の仮想コンピュータシステムプロバイダによって使用される実装リソースは、技術および／または費用性能を増進することを含む、種々の理由で変化させることができる。例えば、ハードウェア製造業者による技術の進歩が、仮想コンピュータシステムのより効率的な実装を可能にしてもよい。しかしながら、実装リソース変化は、不変仮想コンピュータシステムと互換性がない場合があり、または仮想コンピュータシステムは、新しい実装リソースを十分に活用するために再構成を必要とする場合がある。比較的寿命の長い仮想コンピュータシステムを変化した実装リソースに適合させるための十分に強力ではない、および／または融通性がない機構は、仮想コンピュータシステムを使用不可能にするか、または許容し難いレベルの効率で動作させ得る。
【図面の簡単な説明】
【０００４】
本開示による種々の実施形態を、図面を参照して説明する。
【図１】少なくとも１つの実施形態による態様を実装するための環境例を図示する、概略図である。
【図２】少なくとも１つの実施形態による、仮想リソースプロビジョニングアーキテクチャ例の態様を描写する、概略図である。
【図３】少なくとも１つの実施形態による、仮想リソースプロバイダ例の態様を描写する、概略図である。
【図４】少なくとも１つの実施形態による、仮想リソースプロバイダ制御プレーン例の態様を描写する、概略図である。
【図５】少なくとも１つの実施形態による、移動エージェント例の態様を描写する、概略図である。
【図６】少なくとも１つの実施形態による、移動テンプレート例の態様を描写する、概略図である。
【図７】少なくとも１つの実施形態による、一組の仮想マシンを移動させるためのステップ例を描写する、フローチャートである。
【図８】少なくとも１つの実施形態による、移動オプションクエリを処理するためのステップ例を描写する、フローチャートである。
【図９】少なくとも１つの実施形態による、移動オプション選択を処理するためのステップ例を描写する、フローチャートである。
【図１０】少なくとも１つの実施形態による、能力増強のためのステップ例を描写する、フローチャートである。
【図１１】少なくとも１つの実施形態による、ワークフロー管理のためのステップ例を描写する、フローチャートである。
【０００５】
類似構成要素および特徴を参照するために、同じ番号が本開示および図の全体を通して使用されるが、そのような番号の反復は、説明および理解を簡単にする目的のためであり、種々の実施形態への制限として見なされるべきではない。
【発明を実施するための形態】
【０００６】
以下の説明では、種々の実施形態を説明する。説明の目的で、実施形態の徹底的な理解を提供するために、具体的な構成および詳細が記載される。しかしながら、具体的な詳細なしで実施形態が実装されてもよいことも、当業者に明白となるであろう。さらに、説明されている実施形態を曖昧にしないために、周知の特徴が省略または簡略化されてもよい。
【０００７】
仮想リソースプロバイダは、物理的コンピューティングハードウェアおよび他の実装リソースの種々のセットを伴う、種々のタイプの仮想コンピューティングマシン（「仮想マシン」）等の種々の仮想リソース（すなわち、模倣コンピューティングリソース）を整備してもよい。例えば、物理的仮想マシン（ＶＭ）サーバは、複数の仮想マシンを維持してもよく、異なるタイプの仮想マシンが、ＶＭサーバリソースの異なる部分を必要とする。仮想マシンは、仮想マシンが効率的かつ効果的に新しい実装リソースに適応することを可能にする方式で、実装リソースの異なる（例えば、異種）セット間を移動してもよい（すなわち、連続的に実装リソースの異なるセットによって実装されてもよい）。例えば、仮想マシンは、処理装置（例えば、中央処理装置）のタイプあるいは数、メモリモジュールのタイプあるいは数、および／またはハードドライブのタイプあるいは数の変化に最適に適応しながら、古くなったＶＭサーバから新しいＶＭサーバへ移動してもよい。さらに、仮想マシンは、終了させることなくタイプを変化させてもよい（「モーフィングする」）。例えば、新しいＶＭサーバは、現在のタイプの特定の仮想マシンをサポートしない場合があり、仮想マシンは、新しいＶＭサーバへ移動することの一部として、サポートされたタイプにモーフィングしてもよい。少なくとも１つの実施形態では、仮想マシンモーフィングは、仮想マシンの移動から独立している。例えば、一組の仮想マシンは、一組の仮想マシンを実装するために使用される一組の実装リソースを変化させることなく、第１のタイプの仮想マシンから第２のタイプの仮想マシンにモーフィングしてもよい。
【０００８】
第１のタイプの仮想マシンから第２のタイプの仮想マシンの移動は、２つのタイプのための移動テンプレートに従って行われてもよい。移動テンプレートは、１つ以上の仮想マシン、仮想化層、および／または仮想マシンの移動の前、間および／または後に行われる実装リソース再構成を特定してもよい。仮想マシンの管理者および／または他の承認されたユーザ（集合的に「管理者」）が、移動テンプレートを確立するためにユーザインターフェース（例えば、ウェブベース、プログラマチック、および／またはグラフィカルユーザインターフェース）を利用してもよい。移動テンプレートは、少なくとも部分的に、一組の提示された移動オプションのユーザ選択によって特定されてもよい。代替として、または加えて、移動テンプレートは、移動させられる仮想マシンの構成に少なくとも部分的に基づいて特定されてもよい。
【０００９】
承認された時に、移動エージェントは、移動のために選択された仮想マシンに追加されてもよい。移動エージェントは、特定のタイプの仮想マシンおよび／またはその構成要素に適合されてもよい。例えば、移動エージェントタイプは、仮想マシンによって維持されるオペレーティングシステムのタイプに対応してもよい。移動エージェントは、任意の好適な仮想マシン能力の存在を検出するように構成されてもよい。加えて、移動エージェントは、移動の目的で特定の仮想マシンの能力を増補するように構成されてもよい。検出および／または増補された仮想マシンの能力は、移動テンプレートエディタに報告されてもよく、対応する移動テンプレートは、そのような報告に少なくとも部分的に基づく。能力検出に加えて、移動マネージャが、管理者によって特定されるカスタム再構成を含む、種々のタイプの仮想マシン再構成をトリガするように移動エージェントと相互作用してもよい。
【００１０】
種々のアプローチが、種々の用途のために種々の環境で実装されてもよい。例えば、図１は、種々の実施形態による態様を実装するための環境例１００の態様を図示する。理解されるように、説明の目的でウェブベースの環境が利用されてもよいが、種々の実施形態を実装するために、異なる環境が適宜に利用されてもよい。示される環境１００は、試験または開発部分（側）および製品部分の両方を含む。製品部分は、適切なネットワーク１０４上で要求、メッセージ、または情報を送受信し、デバイス１０２のユーザに情報を送り返すように動作可能である、任意の適切なデバイスを含んでもよい、電子クライアントデバイス１０２を含む。そのようなクライアントデバイスの実施例は、パーソナルコンピュータ、携帯電話、手持ち式メッセージングデバイス、ラップトップコンピュータ、タブレットコンピュータ、セットトップボックス、パーソナルデータアシスタント、電子書籍リーダ、および同等物を含む。
【００１１】
ネットワーク１０４は、イントラネット、インターネット、セルラーネットワーク、ローカルエリアネットワーク、広域ネットワーク、無線データネットワーク、または任意の他のそのようなネットワーク、あるいはそれらの組み合わせを含む、任意の適切なネットワークを含んでもよい。そのようなシステムに利用される構成要素は、選択されるネットワークおよび／またな環境の種類に少なくとも部分的に依存してもよい。そのようなネットワークを介して通信するためのプロトコルおよび構成要素は、本明細書では詳細に論議されない。ネットワーク上の通信は、有線または無線接続、およびそれらの組み合わせによって有効にされてもよい。この実施例では、環境が、要求を受信し、それに応じてコンテンツを供給するためのウェブサーバ１０６を含むため、ネットワーク１０４は、インターネットを含むが、他のネットワークについては、当業者に明白となるように、同様の目的を果たす代替的なデバイスを利用することができる。
【００１２】
例証的な環境１００は、少なくとも１つのアプリケーションサーバ１０８と、データ記憶部１１０とを含む。連鎖され、または別様に構成されてもよく、適切なデータ記憶部からデータを取得すること等のタスクを行うように相互作用してもよい、いくつかのアプリケーションサーバ、層、または他の要素、プロセス、または構成要素があってもよいことを理解されたい。本明細書で使用されるように、「データ記憶部」という用語は、任意の標準、分散、またはクラスタ化環境で、任意の組み合わせおよび数のデータサーバ、データベース、データ記憶デバイス、およびデータ記憶媒体を含んでもよい、データを記憶する、データにアクセスする、および／またはデータを取り出すことが可能な任意のデバイスおよびデバイスの組み合わせを指す。
【００１３】
アプリケーションサーバ１０８は、クライアントデバイス１０２用の１つ以上のアプリケーションの態様を実行するために必要に応じて、データ記憶部と統合するための任意の適切なハードウェアおよびソフトウェアを含んでもよく、アプリケーション用のデータアクセスおよびビジネスロジックの大部分を処理してもよい。アプリケーションサーバ１０８は、データ記憶部１１０と協働してアクセス制御サービスを提供し、ＨＴＭＬ、ＸＭＬ、またはこの実施例では別の適切な構造化言語の形態でウェブサーバ１０６によってユーザに供給されてもよい、ユーザに転送されるテキスト、グラフィックス、音声、および／またはビデオ等のコンテンツを生成することができる。
【００１４】
全ての要求および応答の処理、ならびにクライアントデバイス１０２とアプリケーションサーバ１０８との間のコンテンツの送達は、ウェブサーバ１０６によって処理されてもよい。本明細書で論議される構造化コードが、本明細書の他の場所で論議されるように、任意の好適なデバイスまたはホストマシン上で実行されてもよいため、ウェブおよびアプリケーションサーバ１０６、１０８は、必要とされず、構成要素例にすぎないことを理解されたい。さらに、環境１００は、ユーザまたはアプリケーションが登録し得るサービスとして、試験自動化フレームワークが提供されてもよいような方法で、設計されてもよい。試験自動化フレームワークは、本明細書で論議される種々の試験パターンのうちのいずれかの実装として提供されてもよいが、本明細書で論議または提案されるように、種々の他の実装も利用されてもよい。
【００１５】
環境１００はまた、開発者、データ管理者、または試験者等のユーザがシステムにアクセスすることを可能にする、ユーザデバイス１１８を含む、開発および／または試験側を含んでもよい。ユーザデバイス１１８は、クライアントデバイス１０２に関して上記で説明されるような、任意の適切なデバイスまたはマシンであってもよい。環境１００はまた、アプリケーションサーバ１０８と同様に機能するが、典型的には、例えば、コードが展開されて製品側で実行され、外部ユーザにアクセス可能となる前に、開発および試験中にコードを実行する、開発サーバ１２０を含んでもよい。いくつかの実施形態では、アプリケーションサーバは、開発サーバとして機能してもよく、別個の製品および試験記憶装置が利用されなくてもよい。
【００１６】
データ記憶部１１０は、特定の態様に関するデータを記憶するためのいくつかのデータ表、データベース、または他のデータ記憶機構および媒体を含んでもよい。例えば、図示されるデータ記憶部１１０は、製品側のためのコンテンツを供給するために利用されてもよい、製品データ１１２およびユーザ情報１１６を記憶するための機構を含む。データ記憶部１１０はまた、試験側のためのユーザ情報とともに利用されてもよい、試験データ１１４を記憶するための機構を含むことも示されている。適宜の上記の機構のうちのいずれかに、またはデータ記憶部１１０の中の付加的な機構に記憶され得る、ページ画像情報およびアクセス権情報等のためのデータ記憶部１１０に記憶される、多くの他の態様があってもよいことを理解されたい。
【００１７】
データ記憶部１１０は、それと関連付けられる論理を通して、アプリケーションサーバ１０８または開発サーバ１２０から命令を受信し、それに応じてデータを取得、更新、または別様に処理するように動作可能である。一実施例では、ユーザは、あるタイプの項目に対する検索要求を提出する場合がある。この場合、データ記憶部１１０は、ユーザの識別を検証するようにユーザ情報１１６にアクセスする場合があり、そのタイプの項目に関する情報を取得するようにカタログ詳細情報にアクセスしてもよい。次いで、情報は、ユーザがユーザデバイス１０２上のブラウザを介して閲覧することができるウェブページ上の結果一覧等で、ユーザに返信されてもよい。特定の関心項目の情報は、ブラウザの専用ページまたはウィンドウの中で閲覧されてもよい。
【００１８】
各サーバは、典型的には、そのサーバの一般管理および動作のための実行可能プログラム命令を提供するオペレーティングシステムを含み、典型的には、サーバのプロセッサによって実行された時に、サーバがその意図した機能を果たすことを可能にする、命令を記憶するコンピュータ可読媒体を含む。オペレーティングシステムのための好適な実装およびサーバの一般機能性は、公知であるか、または市販されており、特に本明細書の開示に照らして、当業者によって容易に実装される。
【００１９】
一実施形態での環境１００は、１つ以上のコンピュータネットワークまたは直接接続を使用して、通信リンクを介して相互接続される、いくつかのコンピュータシステムおよび構成要素を利用した分散コンピューティング環境である。しかしながら、そのようなシステムは、図１で図示されるよりも少数または多数の構成要素を有するシステムで、同等によく動作できることが当業者によって理解されるであろう。したがって、図１のシステム１００の描写は、本開示の範囲を限定するものではなく、本質的に例証的であるものとして解釈されるべきである。
【００２０】
少なくとも１つの実施形態では、環境１００の１つ以上の態様は、仮想リソースプロビジョニングアーキテクチャを組み込んでもよく、および／または仮想リソースプロビジョニングアーキテクチャに組み込まれてもよい。図２は、少なくとも１つの実施形態による、仮想リソースプロビジョニングアーキテクチャ例２００の態様を描写する。仮想リソースプロビジョニングアーキテクチャ例２００は、ネットワーク２０８上で仮想リソースプロバイダ２０６に通信可能に接続される、複数のクライアント２０２−２０４を含む。例えば、クライアント２０２−２０４は、図１のコンピュータデバイス１０２等のコンピュータデバイスおよび／またはそのようなコンピュータデバイスに組み込まれたクライアントプログラムに対応してもよい。クライアント２０２とクライアント２０４との間の省略記号は、仮想リソースプロビジョニングアーキテクチャ２００が、任意の好適な数のクライアントを含んでもよいことを示すが、明確にするために、２つだけが図２で示されている。省略記号は、図面の全体を通して同様に使用される。
【００２１】
クライアント２０２−２０４のうちの１つ以上は、仮想リソースプロバイダ２０６の制御プレーン２１０と相互作用し、それにより、１つ以上の仮想リソース２１２を整備するために、仮想リソースプロバイダ２０６の１人以上の顧客によって利用されてもよい。代替として、または加えて、クライアント２０２−２０４のうちの１つ以上は、整備された仮想リソース２１２と相互作用するために、（必ずしも仮想リソースプロバイダ２０６の顧客によってではないが）利用されてもよい。整備された仮想リソース２１２は、任意の好適なタイプおよび／または数の仮想リソース２１４−２１６を含んでもよい。好適な仮想リソース２１２の実施例は、仮想コンピュータシステム等の仮想マシン、仮想ネットワーク接続、仮想データ記憶部、特殊データ処理エージェント、音声およびビデオストリーミングエージェントを含むメディアストリーミングエージェント、メッセージ待ち行列、公開・登録トピックに公開されたイベントに合致する登録を有する加入者に通知するように構成される、公開・登録トピック、監視エージェント、負荷バランシングエージェント、およびそれらの好適な組み合わせを含む。
【００２２】
仮想リソースプロバイダ２０６は、任意の好適なタイプおよび／または数の実装リソース２２０−２２２を含んでもよい。仮想リソース２１４−２１６のうちのそれぞれは、一組の実装リソース２１８によって実装されてもよい。少なくとも１つの実施形態では、実装リソース２１８の種々の実装リソースは、少なくとも部分的に、仮想リソース２１２の複数の仮想リソースを実装することに関与するように構成されてもよい。好適な実装リソース２２０−２２２の実施例は、ＶＭサーバ、データ記憶部サーバ、コンピュータ、サーバラック、スイッチ、ルータ、ゲートウェイ、ブリッジ、ハブ、リピータ、ファイアウォール、および無線送受信機を含む、ネットワーキングハードウェア、電源、発電機、データセンター、データセンター内の部屋、移動データセンター、ならびにハードドライブを含む不揮発性記憶デバイス、中央処理装置（ＣＰＵ）等の処理装置、処理装置の中のキャッシュ、マルチコア処理装置の中の処理コア、ランダムアクセスメモリ（ＲＡＭ）モジュールを含むメモリモジュールおよびマルチチップメモリモジュールのＲＡＭチップ等の揮発性記憶デバイス、ネットワークインターフェースハードウェア、およびそれらの好適な組み合わせを含む。制御プレーン２１０は、仮想リソースプロビジョニング要求を処理し、実装リソース２１８への仮想リソース２１２の割付を管理し、および／または仮想リソース２１２への実装リソース２１８の割付を管理してもよい。少なくとも１つの実施形態による仮想リソースプロバイダ制御プレーン例は、図４を参照して以下でより詳細に説明される。
【００２３】
仮想マシンは、特に遠隔でアクセス可能なコンピュータシステム機能性に関して、物理的コンピュータシステムの機能性のうちのいくらかまたは全てを提供してもよい。図３は、少なくとも１つの実施形態による、仮想リソースプロバイダ３００において整備された仮想マシン例３０２−３０４の態様を描写する。仮想リソースプロバイダ３００は、図２の仮想リソースプロバイダ２０６の実施例であり、対応する実装リソース３０６と、仮想マシン３０２−３０４を含む仮想リソース３０８とを有する。図３では、仮想化層３１０は、実装リソース３０６と仮想リソース３０８との間に位置して明示的に示されている。仮想化層３１０は、基礎的実装リソース３０６から仮想マシン３０２−３０４を分断し、特定の実装リソースを共有する時でさえも仮想マシン３０２−３０４を相互から区分化してもよい。例えば、仮想化層３１０は、実装リソース３０６のＶＭサーバによって実行される、いわゆる「ハイパーバイザ」を組み込んでもよい。そのようなハイパーバイザおよび仮想化層は、当技術分野で公知であるため、それらの詳細のうちのいくつかのみが本明細書で説明される。
【００２４】
各仮想マシン３０２、３０４は、それぞれ、オペレーティングシステム３１２、３１４および複数のアプリケーション３１６−３１８、３２０−３２２を含むものとして示されている。仮想マシン３０２−３０４は、任意の好適なコンピュータオペレーティングシステム（例えば、ＵＮＩＸ（登録商標）オペレーティングシステム）を含んでもよく、異なる仮想マシン３０２、３０４が、異なるオペレーティングシステム３１２、３１４および／または異なるオペレーティングシステムバージョンおよび構成を含んでもよい。各仮想マシン３０２、３０４は、複数のオペレーティングシステムを含んでもよいが、これは、明確にするために図３では示されていない。アプリケーション３１６−３２２は、任意の好適なコンピュータ実行可能命令を含む、任意の好適なコンピュータアプリケーションであってもよい。アプリケーション３１６−３２２は、図１のウェブサーバ１０６、アプリケーションサーバ１０８、開発サーバ１２０、および／またはデータ記憶部１１０によって提供されるものに対応するサービスを含む、任意の好適なサービスを仮想マシンのユーザに提供してもよい。仮想マシン３０２−３０４は、オペレーティングシステム３１２−３１４から分離したアプリケーション３１６−３２２を有する必要がない。
【００２５】
仮想マシン３０２−３０４を含む仮想リソース３０８のプロビジョニング、構成、再構成、および／またはデプロビジョニング（集合的に「プロビジョニング」）は、仮想リソースプロバイダ２０６の図４の制御プレーン２１０（図２）によって制御されてもよい。図４は、少なくとも１つの実施形態による、制御プレーン例４０２の態様を描写する。図４の制御プレーン４０２は、図２の制御プレーン２１０の実施例である。制御プレーン４０２は、少なくとも、クライアント２０２−２０４のうちの１つ以上から仮想リソース２１２プロビジョニング要求を受信するように構成される、プロビジョニングインターフェース４０４と、少なくとも、１つ以上のプロビジョニングワークフローに従ってプロビジョニング要求への応答を誘導するように構成される、ワークフロー構成要素４０６と、少なくとも、仮想リソース２１２への実装リソース２１８の割付を管理するように構成される、リソース割付構成要素４０８とを含んでもよい。
【００２６】
プロビジョニングインターフェース４０４は、任意の好適なプロビジョニングインターフェース要素を含んでもよい。好適なプロビジョニングインターフェース要素の実施例、仮想リソース２１２（図２）を整備する要求に対応するインターフェース要素、仮想リソース２１２構成情報へのアクセスを提供するインターフェース要素、およびそのようなプロビジョニング関連動作のための権限を確立するための認証を有効にする１つ以上のインターフェース要素を含む。プロビジョニングインターフェース４０４は、グラフィカルユーザインターフェース（ＧＵＩ）等のユーザインターフェース（ＵＩ）、ウェブベースのインターフェース、アプリケーションプログラミングインターフェース（ＡＰＩ）および／またはプロビジョニングインターフェース要素に対応する一組のリモートプロシージャコール（ＲＰＣ）等のプログラミングインターフェース、プロビジョニングインターフェース４０４のインターフェース要素が通信プロトコルのメッセージに対応する、メッセージングインターフェース等のメッセージングインターフェース、および／またはそれらの任意の好適な組み合わせを組み込んでもよく、および／またはそれらに組み込まれてもよい。
【００２７】
少なくとも１つの実施形態では、プロビジョニングインターフェース４０４およびリソース割付構成要素４０８は、ワークフロー構成要素４０６によって維持される１つ以上のワークフローを作成してもよく、および／またはワークフロー構成要素４０６にそれらを作成させてもよい。プロビジョニングワークフローおよびポリシー施行ワークフロー等のワークフローは、プロビジョニングまたはポリシー施行等のジョブを行うように実行される、タスクの１つ以上のシーケンスを含んでもよい。本明細書で使用される用語としてのワークフローは、タスク自体ではないが、タスクへ、およびタスクからの情報の流れ、ならびにそれが制御するタスクの実行の順序を制御してもよい、タスク制御構造である。例えば、ワークフローは、実行中にいつでもプロセスの状態を管理し、戻すことができる、状態マシンと見なされてもよい。ワークフローは、ワークフローテンプレートから作成されてもよい。例えば、プロビジョニングワークフローは、リソース割付構成要素４０８によってパラメータを伴って構成されるプロビジョニングワークフローテンプレートから作成されてもよい。
【００２８】
ワークフロー構成要素４０６は、確立されたワークフローを修正し、さらに特定し、および／またはさらに構成してもよい。例えば、ワークフロー構成要素４０６は、実行する、および／または特定のタスクに割り当てられる、仮想リソースプロバイダ２０６の特定の実装リソース２１８（図２）を選択してもよい。そのような選択は、ワークフロー構成要素４０６によって評価されるような特定のタスクのコンピューティングリソースの必要性に少なくとも部分的に基づいてもよい。別の実施例として、ワークフロー構成要素４０６は、付加的および／または重複タスクを確立されたワークフローに追加し、および／または確立されたワークフローの中のタスク間の情報の流れを再構成してもよい。確立されたワークフローのそのような修正は、ワークフロー構成要素４０６による実行効率分析に少なくとも部分的に基づいてもよい。例えば、いくつかのタスクが並行して効率的に行われてもよい一方で、他のタスクは以前のタスクの成功した完了に依存してもよい。
【００２９】
プロビジョニングの一部として、仮想リソース、プロビジョニングインターフェース４０４、および／またはワークフロー構成要素４０６は、リソース割付構成要素４０８が、仮想リソースを実装するために必要とされる適切な一組の実装リソース２１８（図２）を判定し、要求された実装リソースが利用可能である、および／または仮想リソースプロバイダ２０６の割付方針に従っているかどうかを判定し、および／または要求された実装リソースを割り付けることを要求してもよい。リソース割付構成要素４０８は、任意の好適なリソース割付および／またはリソーススケジューリングアルゴリズムを組み込んでもよい。そのようなアルゴリズムの種々の態様は、当業者に周知であるため、いくつかの詳細のみが本明細書で説明される。
【００３０】
制御プレーン４０２はさらに、少なくとも、実装リソース３０６の異なるセット間で仮想マシン３０２−３０４（図３）を移動させるように構成される、仮想マシン移動構成要素４１０を含んでもよい。仮想マシン移動構成要素４１０は、仮想マシン移動を特定および要求するように、クライアント２０２−２０４（図２）が相互作用し得る、ユーザインターフェース４１２を含んでもよい。ユーザインターフェース４１２は、少なくとも、ユーザが１つ以上の移動テンプレート４１６を作成する、読み取る、更新する、および削除する（集合的に「編集する」）ことを可能にするように構成される、移動テンプレートエディタ４１４へのアクセスを提供してもよい。例えば、ユーザインターフェース４１２は、少なくとも、承認されたユーザが移動テンプレート４１６を編集することを可能にするように構成される、グラフィカルユーザインターフェース（ＧＵＩ）４１８を含んでもよい。少なくとも１つの実施形態による、移動テンプレートの実施例は、図６を参照して以下でより詳細に説明される。
【００３１】
ユーザインターフェース４１２はさらに、ユーザが特定の一組の仮想マシン３０２−３０４（図３）に対する一組の移動オプションを要求することを可能にしてもよい。例えば、特定の一組の仮想マシン３０２−３０４は、１つ以上の特定のタイプおよび／または構成の仮想マシンを含んでもよく、移動オプションは、特定のタイプおよび／または構成によって制約されてもよい。要求および／または明示的な承認に応答して、仮想マシン移動構成要素４１０は、１つ以上の移動エージェント４２０を特定の一組の仮想マシン３０２−３０４のうちの１つ以上に追加してもよく、追加された移動エージェント４２０は、それらが追加された仮想マシンの特定のタイプおよび／または構成を特徴付ける情報を判定および／または提供してもよい。少なくとも１つの実施形態による移動エージェントの実施例は、図５を参照して以下でより詳細に説明される。
【００３２】
仮想マシン３０２（図３）に追加された移動エージェント４２０は、移動エージェントインターフェース４２２を通して、仮想マシン３０２を特徴付ける情報を仮想マシン移動構成要素４１０に提供し返してもよい。代替として、または加えて、任意の好適なエージェント（例えば、顧客ユーザエージェント）が、移動エージェントインターフェース４２２を通して特性化情報を提供してもよい。仮想マシン３０２を特徴付ける情報は、仮想マシンを変換および／または再構成して効果的および／または効率的に仮想マシンを移動させるために必要および／または望ましい措置を判定するために好適である、任意の情報であってもよい。そのような特性化情報の実施例は、仮想マシンに割り付けられたいくつかの物理的処理装置、仮想マシンに割り付けられたいくつかの処理コア、仮想マシンに割り付けられた１つ以上のタイプの物理的処理装置、仮想マシンに割り付けられた、あるサイズおよび／またはタイプの揮発性データ記憶装置、仮想マシンに割り付けられた、あるサイズおよび／またはタイプの不揮発性データ記憶装置、仮想マシンに割り付けられる、ネットワークインターフェースデバイス等のネットワーキングデバイスを含む、いくつかおよび／またはあるタイプのネットワーキングリソースを含む。そのような特性化情報のさらなる実施例は、オペレーティングシステム３１２が、物理的処理装置、処理コア、メモリモジュール等の揮発性記憶デバイス、およびハードドライブ等の不揮発性記憶デバイス等の特定の実装リソース３０６に関するホットプラグ機能性を含むかどうか等の、仮想マシン３０２のオペレーティングシステム３１２の１つ以上の構成要素の特性を含む。
【００３３】
仮想マシン移動構成要素４１２は、一組の移動オプション候補（例えば、ＶＭタイプＡからＶＭタイプＣ、ＤおよびＫへ）を判定するように、移動エージェントインターフェース４２２および／またはユーザインターフェース４１２において受信される特性化情報に基づいて、一組の利用可能な移動オプション（例えば、ＶＭタイプＡからＶＭタイプＢ−Ｚへ）をフィルタにかけてもよく、一組の移動オプション候補は、選択のために管理者に提示されてもよい。仮想マシンへの移動エージェント４２０の追加が承認されない時に、仮想マシン移動構成要素４１０は、フィルタとして特性化情報の保守的なデフォルトセットを使用してもよく、おそらく、より少数の候補セットをもたらす。管理者は、所望であれば、より多数の候補セットを生成しようとするために、付加的なそのような承認とともに移動オプション要求を再提出してもよい。移動オプションは、移動テンプレート４１６に対応してもよい。代替として、または加えて、提示された一組の移動オプション候補の間から選択することは、一組の利用可能な移動テンプレート４１６をフィルタにかけてもよい。さらなる代替案として、またはさらに加えて、移動オプション選択は、移動テンプレート４１６の１つ以上の部分を構成および／または特定してもよい。
【００３４】
いったん好適な移動オプションおよび／または移動テンプレート４１６が利用可能になると、管理者は、特定の移動テンプレート４１６を特定の複数組の仮想マシン３０２−３０４（図３）に割り当ててもよい。次いで、移動管理構成要素４２４は、割り当てられた移動テンプレート４１６に従って、複数組の仮想マシン３０２−３０４を移動させてもよい。移動テンプレート４１６は、１つ以上の仮想マシン３０２−３０４、仮想化層３１０、および／または対応する仮想マシン３０２−３０４の移動の前、間、および／または後に行われる実装リソース３０６の再構成を特定してもよい。特定された再構成が仮想マシン３０２−３０４の内部にある時に、移動管理４２４および仮想マシン３０２−３０４は、移動エージェント４２０のうちの好適な１つを追加させ、移動管理構成要素４２４は、移動エージェントインターフェース４２２を通して、追加された移動エージェント４２０と相互作用することによって、内部再構成をトリガしてもよい。
【００３５】
移動エージェント４２０は、１つ以上の移動タスクを行うように仮想マシン３０２−３０４（図３）によって実行可能である命令を含んでもよい。図５は、少なくとも１つの実施形態による、移動エージェント例５０２の態様を描写する。移動エージェント５０２は、図４の移動エージェント４２０の実施例である。移動エージェント５０２は、能力検出構成要素５０４を含んでもよい。能力検出構成要素５０４は、１つ以上の仮想マシン３０２−３０４能力を検出してもよい。例えば、能力検出構成要素５０４は、オペレーティングシステム３１２が特定の実装リソース３０６に関するホットプラグ機能性を含むかどうかを検出してもよい。能力検出構成要素５０４は、少なくとも、特定のタイプの仮想マシンの特定の能力を検出するように構成される、１つ以上の検出器５０６−５０８を含んでもよい。例えば、能力検出構成要素５０４は、移動エージェント５０２が追加される仮想マシン３０２のオペレーティングシステム３１２の検出されたタイプおよび／またはバージョンに少なくとも部分的に基づいて、特定の一組の検出器５０６−５０８を選択してもよい。
【００３６】
能力検出構成要素５０４は、特定の仮想マシン３０２（図３）が移動に関して特定の能力を持たないことを検出してもよい。そのような場合において、能力増強構成要素５１０が、承認された時に、仮想マシン３０２の能力を一時的または永久に増強してもよい。例えば、能力増強構成要素５１０は、物理的処理装置、処理コア、メモリモジュール等の揮発性記憶デバイス、およびハードドライブ等の不揮発性記憶デバイス等の、特定の実装リソース３０６に関するホットプラグ機能性を含むように、仮想マシン３０２のオペレーティングシステム３１２を増強してもよい。能力増強構成要素５１０は、仮想マシン３０２に展開される、１つ以上の増強パッケージ５１２−５１４を含んでもよい。例えば、増強パッケージ５１２−５１４は、増強機能性の特定のパッケージおよび／またはオペレーティングシステム３１２のタイプおよび／またはバージョン等の特定の仮想マシン３０２の構成要素タイプおよび／またはバージョンに対応してもよい。
【００３７】
いったん仮想マシン３０２（図３）に追加されると、移動エージェント５０２は、能力検出および増強の役割を超えた役割を果たすことができる。移動エージェント５０２はさらに、少なくとも、移動テンプレート４１６のうちの１つ以上に従って、移動管理構成要素４２４（図４）によって指図されるように仮想マシン３０２を再構成するように構成される、再構成構成要素５１６を含んでもよい。移動エージェント５０２が仮想マシン３０２とともに新しい実装リソースセットに移動させられるため、再構成構成要素５１６は、移動前および後の両方で仮想マシン３０２を再構成してもよい。例えば、移動が、第１のタイプから、より少ない物理的プロセッサが割り付けられる第２のタイプへ、仮想マシン３０２をモーフィングすると仮定されたい。再構成構成要素５１６は、移動に備えて、より少ない物理的プロセッサにアクセスするように仮想マシン３０２を再構成してもよい。別の実施例として、移動が、第１のタイプから、より大型の不揮発性データ記憶装置の割付を有する第２のタイプへ、仮想マシン３０２をモーフィングすると仮定されたい。移動後に、再構成構成要素５１６は、より大型の割付を活用するように、ファイルシステムおよび論理データ記憶容量をサイズ変更してもよい。再構成構成要素５１６は、移動エージェントが追加される仮想マシン３０２のために適合される、１つ以上のコンフィギュレータ５１８−５２０を含んでもよい。例えば、コンフィギュレータ５１８−５２０は、オペレーティングシステム３１２のタイプおよび／またはバージョン等の特定の仮想マシン３０２の構成要素タイプおよび／またはバージョンに適合されてもよい。
【００３８】
多くのオペレーティングシステム３１２−３１４（図３）およびアプリケーション３１６−３２２が標準化される一方で、仮想マシン３０２−３０４は、カスタムアプリケーションおよびオペレーティングシステムを含んでもよく、標準化アプリケーションでさえも、非標準特性を伴うデータ構造を管理するように構成されてもよい。したがって、移動エージェント５０２は、少なくとも、移動テンプレート４１６のうちの１つ以上に従って、移動管理構成要素４２４（図４）によって指図されるように１つ以上のユーザ提供された構成要素５２４−５２６を起動するように構成される、カスタム措置構成要素５２２を含んでもよい。例えば、管理者は、移動テンプレート４１６の作成中に構成要素５２４−５２６のうちの１つ以上を提供してもよい。ユーザ提供された構成要素５２４−５２６は、解釈されたプログラミング言語および／またはスクリプト言語を含む、任意の好適なプログラミング言語で仮想マシン３０２によって実行可能である命令を含んでもよい。例えば、ユーザ提供された構成要素５２４−５２６は、割り付けられた実装リソース３０６の増加および／または減少に応答して、アプリケーションレベル再構成を行ってもよい。
【００３９】
移動エージェント５０２の活動は、移動テンプレート４１６のうちの１つ以上に従って、移動管理構成要素４２４（図４）によって制御されてもよい。図６は、少なくとも１つの実施形態に従って、移動テンプレート例６０２の態様を描写する。移動テンプレート６０２は、制御プレーン４０２のワークフロー構成要素４０６によって管理される仮想マシン移動ワークフローを確立するために好適な１つ以上のタスクを特定してもよい。移動テンプレート６０２によって特定されるタスクは、移動前再構成タスク６０４、ホットアンプラグ措置６０６、１つ以上の移動タスク６０８、ホットプラグ措置６１０、および移動後再構成タスク６１２を含んでもよい。
【００４０】
ホットアンプラグ措置６０６は、仮想マシン３０２に現在利用可能である実装リソース３０６（図３）のうちの１つ以上の除去に対応する、１つ以上のタスクを含んでもよい。例えば、ホットアンプラグ措置６０６は、仮想マシン３０２に利用可能な物理的処理装置および／または処理コアの数を減少させること、仮想マシン３０２に利用可能である物理的メモリモジュールの数および／または割り付けられた揮発性データ記憶サイズを減少させること、および仮想マシン３０２に利用可能である物理的ハードドライブの数および／または割り付けられた不揮発性データ記憶サイズを減少させることを含んでもよい。そのような措置６０６は、物理的コンピュータシステムから物理的構成要素を抜くことに対応する効果を有してもよい。したがって、いくつかのアプリケーションレベルおよび／またはオペレーティングシステムレベル準備が望ましくてもよく、および／または必要であってもよい。移動テンプレート６０２の移動前再構成タスク６０４部分は、ホットアンプラグ措置６０６に備えて行われる１つ以上のタスクを含んでもよい。
【００４１】
同様に、ホットプラグ措置６１０は、仮想マシン３０２に現在利用不可能である実装リソース３０６（図３）のうちの１つ以上の追加に対応する、１つ以上のタスクを含んでもよい。例えば、ホットプラグ措置６１０は、仮想マシン３０２に利用可能な物理的処理装置および／または処理コアの数を増加させること、仮想マシン３０２に利用可能である物理的メモリモジュールの数および／または割り付けられた揮発性データ記憶サイズを増加させること、および仮想マシン３０２に利用可能である物理的ハードドライブの数および／または割り付けられた不揮発性データ記憶サイズを増加させることを含んでもよい。そのような措置６１０は、物理的構成要素を物理的コンピュータシステムに差し込むことに対応する効果を有してもよい。したがって、いくつかのアプリケーションレベルおよび／またはオペレーティングシステムレベル再構成が、付加的な実装リソースを活用するために望ましくてもよく、および／または必要であってもよい。移動テンプレート６０２の移動後再構成タスク６１２部分は、ホットプラグ措置６１０によって追加されるリソースに適応するように行われる、１つ以上のタスクを含んでもよい。
【００４２】
移動テンプレート６０２の移動タスク６０８部分は、第１組の実装リソースから第２組の実装リソースへ、および／または第１のタイプの仮想マシンから第２のタイプの仮想マシンへ、仮想マシン３０２（図３）を移動させるために必要とされる、１つ以上のタスクを特定してもよい。移動は、仮想マシン３０２の動作が中断されない、または最小限に（例えば、１秒未満にわたって）中断されるという点で、「生」であってもよい。代替として、または加えて、移動は、仮想マシン動作へのより有意な中断を伴う「保存および復元」移動であってもよく、および／または仮想マシンの「再起動」を伴ってもよい。仮想マシンのためのそのような移動および／または生移動技法は、当業者に公知であるため、詳細のうちのいくつかのみが本明細書で説明される。少なくとも１つの実施形態では、移動タスク６０８は、例えば、仮想マシン３０２のタイプを転換するように、仮想マシン３０２の移動中に行われる、１つ以上のタスクを特定してもよい。移動テンプレート６０２の部分６０４−６１２のうちの１つ以上は、空であってもよい。例えば、第２組の実装リソースが第１組の実装リソースとは異ならない（例えば、仮想マシン３０２がモーフィングされるが、移動させられない）時の移動テンプレート６０２の移動タスク６０８部分である。そのような場合において、移動テンプレート６０２は、モーフィングテンプレートと呼ばれてもよい。
【００４３】
ここで、説明は、少なくとも１つの実施形態に従って行われてもよい、ステップおよび／またはプロシージャ例に取り掛かる。図７は、少なくとも１つの実施形態による、一組の仮想マシンを移動させるためのステップ例を描写する。ステップ７０２では、第１のタイプ（「タイプＡ」）の１つ以上の仮想マシンが整備されてもよい。例えば、仮想マシン３０２−３０４（図３）は、制御プレーン４０２のプロビジョニングインターフェース４０４（図４）を用いて整備されてもよい。ステップ７０４では、１つ以上のサービスが、ステップ７０２で整備された仮想マシンに提供されてもよい。例えば、仮想マシン３０２は、ウェブベースのサービスを提供するアプリケーション３１６を維持してもよい。
【００４４】
整備された仮想マシンは、しばらくの間、サービスを提供してもよく、その後、移動が望ましく、および／または必要になる。ステップ７０６では、移動を促進するために、整備された仮想マシンを移動させるために好適な移動テンプレートが確立されてもよい。例えば、移動テンプレート４１６（図４）のうちの１つが、グラフィカルユーザインターフェース４１８を用いて確立されてもよい。この実施例では、移動は、第１のタイプの仮想マシンから第２のタイプの仮想マシン（「タイプＢ」）への仮想マシンの変換を伴う。ステップ７０８では、整備された仮想マシンが、移動のために選択されてもよい。例えば、一組の仮想マシンが、仮想マシン移動構成要素４１０のグラフィカルユーザインターフェース４１８を用いて選択され、ステップ７０６で確立された移動テンプレートと関連付けられてもよい。
【００４５】
ステップ７１０では、特定の一組の仮想マシンのうちの次の（例えば、第１の）ものが、移動のために選択されてもよい。ステップ７１２では、選択された仮想マシンが、ステップ７０６で確立された移動テンプレートに従って移動させられてもよい。例えば、移動管理構成要素４２４は、移動テンプレートに従って、移動をトリガし、および／または行ってもよい。代替として、または加えて、移動管理構成要素４２４は、仮想マシン移動を達成するようにワークフロー構成要素４０６と協働してもよい。移動ワークフローは、関連移動テンプレートに少なくとも部分的に基づいてもよい。ステップ７１４では、特定の一組の中のより多くの仮想マシンが移動させられるべきかどうかを判定してもよい。もしそうであれば、ステップ７１４を組み込むプロシージャは、移動のための一組の仮想マシンのうちの次のものを選択するように、ステップ７１０へ進んでもよい。そうでなければ、プロシージャは、ステップ７１６へ進んでもよい。ステップ７１６では、移動させられ、変換された仮想マシンが、ステップ７０４のサービスを提供し続けてもよい。
【００４６】
移動テンプレート６０２（図６）を確立することは、複雑なプロセスとなり得る。仮想マシン移動構成要素４１０（図４）は、移動テンプレート６０２を確立するのに管理者を支援するツールを提供してもよい。図８は、少なくとも１つの実施形態による、移動オプションクエリを処理するためのステップ例を描写する。ステップ８０２では、移動オプションクエリが受信されてもよい。例えば、クエリは、仮想マシン移動構成要素４１０のグラフィカルユーザインターフェース４１８によって受信されてもよい。クエリは、管理者が移動オプションを考慮している、特定の一組の仮想マシンと関連付けられてもよい。ステップ８０４では、１つ以上の移動エージェントを一組の仮想マシンに追加する承認が、要求されてもよい。例えば、グラフィカルユーザインターフェース４１８が、ステップ８０２のクエリを発行して、管理者からの承認を要求してもよい。
【００４７】
ステップ８０６では、要求された承認が受信されたかどうかが判定されてもよい。例えば、管理者が、追加を承認する、一組の暗号証明書を提供してもよい。承認が受信された場合、ステップ８０６を組み込むプロシージャは、ステップ８０８へ進んでもよい。そうでなければ、プロシージャは、ステップ８１０へ進んでもよい。
【００４８】
ステップ８０８では、好適な一組の移動エージェントが、一組の仮想マシンに追加されてもよい。例えば、仮想マシン移動構成要素４１０（図４）は、好適な移動エージェント４２０を仮想マシン３０２（図３）に追加してもよい。特定の仮想マシンに追加するために選択される特定の移動エージェントは、仮想マシンとの互換性、例えば、仮想マシンのオペレーティングシステムとの互換性のために選択されてもよい。代替として、移動エージェント４２０は、各利用可能なタイプの仮想マシン３０２−３０４と互換性がある構成要素を組み込んでもよく、および／または互換性を持つよう、そのような構成要素を伴ってそれ自体を構成することが可能であってもよい。ステップ８１２では、追加された移動エージェントが、例えば、移動エージェント５０２（図５）の能力検出構成要素５０４を用いて、一組の仮想マシンおよび／またはその構成要素を特徴付けてもよい。ステップ８１４では、特性化情報が受信されてもよい。例えば、追加された移動エージェントは、仮想マシン移動構成要素４１０の移動エージェントインターフェース４２２に特性化情報を提供してもよい。
【００４９】
ステップ８１４の特性化情報を確認するように、移動エージェントを一組の仮想マシンに追加するための承認が受信されない場合には、ステップ８１０で、一組の「フェイルセーフ」デフォルトが、特性化情報の代わりに識別されてもよい。デフォルトは、仮想マシンタイプおよび／または実装リソースの非互換性により、移動を失敗させる場合がある移動オプションを除外するという意味で、フェイルセーフであってもよい。ステップ８１６では、ステップ８１４で受信された特性化情報またはステップ８１０のフェイルセーフデフォルトに基づいて、一組の移動オプションが判定されてもよい。例えば、仮想マシン移動構成要素４１０（図４）が、一組の移動オプションを判定してもよい。ステップ８１８では、一組の移動オプションが、例えば、グラフィカルユーザインターフェース４１８のステップ８０２のクエリを提出した管理者に提示されてもよい。
【００５０】
一組の移動オプションは、（もしあれば）どの増強パッケージ５１２−５１４（図５）を展開するか、互換性がない実装リソースを模倣する（潜在的に宛先ＶＭタイプの数を増加させる）かどうか、互換性があるが異なる実装リソースを移動後に「暴露する」（またはそれらの移動前タイプとして新しい実装リソースを「隠す」）かどうか、ならびに一組の候補宛先ＶＭタイプ等の移動テンプレート６０２（図６）の構成オプションを含んでもよい。図９は、少なくとも１つの実施形態による、移動オプション選択を処理するためのステップ例を描写する。ステップ９０２では、移動オプション選択が受信されてもよい。例えば、仮想マシン移動構成要素４１０（図４）が、グラフィカルユーザインターフェース４１８を通して管理者から選択を受信してもよい。ステップ９０４では、１つ以上の移動テンプレートは、受信した移動オプション選択に少なくとも部分的に基づいて選択されてもよい。例えば、移動テンプレートエディタ４１４は、受信した移動オプション選択に基づいて、移動テンプレート４１６を確立および／または構成してもよい。
【００５１】
ステップ９０６では、選択された仮想マシンが、例えば、図７を参照して上記で説明されるように、確立された移動テンプレートに従って移動させられてもよい。ステップ９０６の移動は、それ自体が複数のステップを含んでもよい。例えば、図３の仮想マシン３０２が、図６の移動テンプレート６０２に従って移動させられると仮定されたい。ステップ９０８では、仮想マシン３０２の１つ以上の構成要素の移動前再構成が行われてもよい。例えば、移動前再構成タスク６０４およびホットアンプラグ措置６０６が行われてもよい。ステップ９１０では、仮想マシン３０２が、状態転送を完了する（ステップ９１２）ために一時停止されてもよい。仮想マシン３０２を再開する（ステップ９１６）前に、仮想マシンの１つ以上の構成要素の移動内（または移動中）再構成が行われてもよい。例えば、アプリケーション３１６−３１８が、異なるオペレーティングシステム３１２の構成要素に再リンクされてもよく、および／またはデバイス再発見が、オペレーティングシステム３１２のレベルでトリガされてもよい。ステップ９１８では、仮想マシン３０２の１つ以上の構成要素の移動後再構成が行われてもよい。例えば、ホットプラグ措置６１０および移動後再構成タスク６１２が、移動テンプレート６０２によって特定されるように行われてもよい。
【００５２】
図５を参照して上記で説明されるように、移動エージェント５０２は、能力増強構成要素５１０を含んでもよい。図１０は、少なくとも１つの実施形態による、能力増強のためのステップ例を描写する。ステップ１００２では、仮想マシン能力検出は、例えば、移動エージェント５０２の特定の検出器５０６によって行われてもよい。ステップ１００４では、能力が検出されたかどうかが判定されてもよい。もしそうであれば、ステップ１００４を組み込むプロシージャは、ステップ１００６へ進んでもよい。そうでなければ、プロシージャは、ステップ１００８へ進んでもよい。
【００５３】
ステップ１００８では、検出されていない能力を移動エージェント５０２（図５）によって追加することができるかどうかが判定されてもよい。例えば、能力増強構成要素５１０は、増強パッケージ５１２−５１４のうちの１つが能力を提供し、移動エージェント５０２が追加された仮想マシンと互換性があるかどうかを判定してもよい。能力を追加することができる場合、プロシージャは、ステップ１０１０へ進んでもよい。そうでなければ、プロシージャは、ステップ１００６へ進んでもよい。
【００５４】
ステップ１０１０では、移動エージェント５０２（図５）が能力を追加する権限を与えられているかどうかが判定されてもよい。例えば、管理者が、利用可能な増強パッケージ５１２−５１４の特定の一部を追加するように移動エージェント５０２を承認していてもよく、移動エージェント５０２は、ステップ１００８で識別された特定の増強パッケージを追加する権限を与えられていることをチェックしてもよい。もしそうであれば、プロシージャは、ステップ１０１２へ進んでもよい。そうでなければ、プロシージャは、ステップ１００６へ進んでもよい。
【００５５】
ステップ１０１２では、能力が仮想マシン３０２に追加されてもよい。例えば、移動エージェント５０２が、増強パッケージ５１２を仮想マシン３０２のオペレーティングシステム３１２に追加してもよい。ステップ１００６では、ステップ１００２、ステップ１００８、ステップ１０１０、およびステップ１０１２の結果を含む、能力検出プロセスの結果が報告されてもよい。例えば、報告は、移動エージェントインターフェース４２２を用いて仮想マシン移動構成要素４１０（図４）に提供されてもよい。
【００５６】
図４を参照して上記で説明されるように、制御プレーン４０２は、ワークフロー構成要素４０６によって維持される、１つ以上のワークフローによって促進されてもよい。図１１は、少なくとも１つの実施形態による、ワークフロー管理のためのステップ例を描写する。ステップ１１０２では、要求が制御プレーン４０２（図４）のインターフェースによって受信されてもよい。例えば、制御プレーン４０２のユーザインターフェースのうちの１つが、仮想リソースプロバイダ２０６（図２）のユーザ、顧客、および／または管理者から要求を受信してもよい。要求は、例えば、シンプルオブジェクトアクセスプロトコル（ＳＯＡＰ）呼び出しを利用した、アプリケーションプログラミングインターフェース（ＡＰＩ）またはウェブサービスインターフェース等のプログラマチックインターフェースへの呼び出しであってもよい。代替として、または加えて、要求は、ウェブベースのＧＵＩ等のグラフィカルユーザインターフェース（ＧＵＩ）を通して受信されてもよい。ステップ１１０４では、要求が、要求を成功裏に完了するために必要とされる１つ以上の措置を判定するように分析されてもよい。例えば、プロビジョニングインターフェース４０４が、要求を分析し、一組の仮想リソース２１２を整備するために必要とされる一組の措置を判定してもよい。要求を受信するインターフェース要素が、行われる特定の措置に対応する時に、インターフェースは、行われる措置の態様および／またはパラメータを判定する際に利用される情報を要求から抽出してもよい。
【００５７】
ステップ１１０６では、ステップ１１０４で判定された１つ以上の措置に少なくとも部分的に基づいて、ワークフローを作成するように、要求が送信されてもよい。例えば、プロビジョニングインターフェース４０４（図４）は、要求をワークフロー構成要素４０６に送信してもよい。ワークフローを作成する要求は、措置、措置のタイプ等の措置メタデータ、および／または措置パラメータを含んでもよい。少なくとも１つの実施形態では、制御プレーン４０２および／またはワークフロー構成要素４０６が、そのような要求のためのジョブ待ち行列を維持し、ジョブ待ち行列への新しい追加に応答して、ワークフローが作成される。ステップ１１０８では、ワークフローおよび１つ以上の構成要素タスクが作成されてもよい。例えば、ワークフロー構成要素４０６が、作成する適切なワークフローおよび構成要素タスクを判定するように、ステップ１１０６の要求を分析してもよい。
【００５８】
ステップ１１１０では、構成要素タスクの実行が、ワークフローに従って誘導されてもよい。例えば、ワークフロー構成要素４０６（図４）が、一組の仮想リソースを整備するように、種々の実装リソースのインターフェースの要素を起動してもよい。代替として、または加えて、ワークフロー構成要素４０６は、仮想リソースプロバイダ２０６（図２）の構成要素による構成要素タスクの実行のためにビッドを管理してもよい。ステップ１１１２では、ワークフローが終了したかどうかが判定されてもよい。例えば、ワークフロー構成要素４０６は、ワークフローによって管理される一連のタスクの中の最終タスクが完了したかどうかを判定してもよい。もしそうであれば、ステップ１１１２を組み込むプロシージャは、ステップ１１１４へ進んでもよい。そうでなければ、プロシージャは、次のタスクおよび／またはタスクシーケンスのためにステップ１１１０に戻ってもよい。ワークフローは、並行して実行する複数のタスクシーケンスを誘導してもよい。この場合、複数のタスクシーケンスのうちのそれぞれが完了する、および／または明示的なワークフロー終了フラグが構成要素タスクのうちの１つによって設定されるまで、ワークフローが終了しなくてもよい。ステップ１１１４では、ステップ１１０２の要求の送信者が、措置の結果を知らされてもよい。
【００５９】
付記：
付記１．
実行可能命令で構成される、１つ以上のコンピュータシステムの制御下で、
仮想マシンであって、第１の仮想マシンタイプであり、第１組の実装リソースを伴って維持される、仮想マシンを用いて、サービスをユーザに提供することと、
移動エージェントを仮想マシンに追加し、仮想マシンの少なくとも１つの構成要素を特徴付ける情報を含む、移動エージェントから受信される情報に少なくとも部分的に基づいて、移動テンプレートを確立することと、
移動テンプレートの移動前部分に従って、移動エージェントを用いて、少なくとも仮想マシンの第１の構成要素の再構成をトリガすることと、
移動後に、仮想マシンが第２の仮想マシンタイプであるように、第１組の実装リソースから第２組の実装リソースへ、移動テンプレートに従って仮想マシンを移動させることと、
移動テンプレートの移動後部分に従って、移動エージェントを用いて、少なくとも仮想マシンの第２の構成要素の再構成をトリガすることと、
第２の仮想マシンタイプの仮想マシンを用いて、サービスをユーザに提供し続けることと、
を含む、仮想マシンの移動のためのコンピュータ実装方法。
【００６０】
付記２．
第２組の実装リソースは、物理的処理装置の数、１つの物理的処理装置あたりの処理コアの数、物理的処理装置のタイプ、揮発性データ記憶デバイスの数、揮発性データ記憶デバイスのタイプ、不揮発性データ記憶デバイスの数、不揮発性データ記憶デバイスのタイプ、ネットワーキングデバイスの数、およびネットワーキングデバイスのタイプのうちの少なくとも１つに関して、第１組の実装リソースとは異なる、付記１に記載のコンピュータ実装方法。
【００６１】
付記３．
第２の仮想マシンタイプは、物理的処理装置の割り付けられた数、処理コアの割り付けられた数、物理的処理装置の割り付けられたタイプ、割り付けられた揮発性データ記憶サイズ、割り付けられた不揮発性データ記憶サイズ、および割り付けられたネットワーキングリソースのうちの少なくとも１つに関して、第１の仮想マシンタイプとは異なる、付記１に記載のコンピュータ実装方法。
【００６２】
付記４．
仮想マシンは、仮想リソースプロバイダの顧客のために仮想リソースプロバイダによって維持され、
方法はさらに、移動エージェントを仮想マシンに追加するように、顧客からの承認を要求して受信することを含む、
付記１に記載のコンピュータ実装方法。
【００６３】
付記５．
移動エージェントから受信される情報は、仮想マシンのオペレーティングシステムを特徴付ける、付記１に記載のコンピュータ実装方法。
【００６４】
付記６．
実行可能命令で構成される、１つ以上のコンピュータシステムの制御下で
仮想マシンであって、第１の仮想マシンタイプであり、第１組の実装リソースを伴って維持される、仮想マシンの少なくとも１つの構成要素を特徴付ける情報を受信することと、
受信した情報に少なくとも基づく移動テンプレートであって、第１の仮想マシンタイプから第２の仮想マシンタイプへの仮想マシン移動に対応する移動テンプレートを確立することと、
仮想マシンが第２の仮想マシンタイプを有するよう変換されるように、第１組の実装リソースから第２組の実装リソースへ、移動テンプレートに従って仮想マシンを移動させることと、
移動テンプレートに従って、仮想マシンの該少なくとも１つの構成要素の再構成をトリガすることと、
仮想マシンを用いてサービスをユーザに提供することと、
を含む、仮想マシンの移動のためのコンピュータ実装方法
【００６５】
付記７．
移動テンプレートを確立することは、受信した情報に少なくとも部分的に基づいて、一組の移動オプションを判定することを含む、付記６に記載のコンピュータ実装方法。
【００６６】
付記８．
一組の移動オプションを仮想マシンの管理者に提示することと、
管理者によって行われた一組の移動オプションに関する選択に少なくとも部分的に基づいて、移動テンプレートを構成することと、
さらに含む、付記７に記載のコンピュータ実装方法。
【００６７】
付記９．
仮想マシンの該少なくとも１つの構成要素の再構成は、仮想マシンのオペレーティングシステムへの少なくとも１つのさらなる構成要素の追加を含む、付記６に記載のコンピュータ実装方法。
【００６８】
付記１０．
該少なくとも１つのさらなる構成要素は、ハードウェア構成要素ホットプラグ能力を提供するように、オペレーティングシステムを再構成する、付記９に記載のコンピュータ実装方法。
【００６９】
付記１１．
仮想マシンを移動させることは、仮想マシンを一時停止すること、および仮想マシンを再開することを含む、複数のステップを含み、仮想マシンの該なくとも１つの構成要素の再構成は、仮想マシンを一時停止した後、および仮想マシンを再開する前に起こる、
付記６に記載のコンピュータ実装方法。
【００７０】
付記１２．
該少なくとも１つの構成要素は、仮想マシンのオペレーティングシステムの少なくとも１つの構成要素にリンクされるアプリケーションを備え、アプリケーションの再構成は、アプリケーションをオペレーティングシステムの少なくとも１つの異なる構成要素に再リンクすることを含む、付記６に記載のコンピュータ実装方法。
【００７１】
付記１３．
移動テンプレートは、第１組の実装リソースのうちの少なくとも１つが、第２組の実装リソースのうちの少なくとも１つで模倣されることを特定する、付記６に記載のコンピュータ実装方法。
【００７２】
付記１４．
実行可能命令で構成される、１つ以上のコンピュータシステムの制御下で、
仮想マシンであって、第１のタイプであり、第１組の実装リソースを伴って維持される、仮想マシンに移動エージェントを追加することと、
仮想マシンの少なくとも１つの構成要素を特徴付ける情報を移動エージェントから受信することと、
仮想マシンが第２のタイプになるよう変換されるように、第１組の実装リソースから第２組の実装リソースへ、仮想マシンを移動させることと、
移動エージェントを用いて、仮想マシンの該少なくとも１つの構成要素の再構成をトリガすることと、
仮想マシンを用いてサービスをユーザに提供することと、
を含む、仮想マシンの移動のためのコンピュータ実装方法。
【００７３】
付記１５．
該少なくとも１つの構成要素は、実装リソース容量と関連付けられる、
該少なくとも１つの構成要素の再構成は、実装リソース容量を減少させることを含み、
再構成は、第１組の実装リソースから仮想マシンを移動させる前に起こる、
付記１４に記載のコンピュータ実装方法。
【００７４】
付記１６．
実装リソース能力は、仮想マシンの少なくとも１つのデータ記憶部の実装に関与する、データ記憶デバイスの容量に対応し、
該少なくとも１つの構成要素の再構成はさらに、実装リソース容量を減少させる前に、該少なくとも１つのデータ記憶部を再構成することを含む、
付記１５に記載のコンピュータ実装方法。
【００７５】
付記１７．
該少なくとも１つのデータ記憶部は、仮想マシンのオペレーティングシステムによって維持され、
該少なくとも１つの構成要素の再構成はさらに、該少なくとも１つのデータ記憶部を再構成する前に、仮想マシンのアプリケーションレベル構成要素を通知することを含む、
付記１６に記載のコンピュータ実装方法。
【００７６】
付記１８．
該少なくとも１つの構成要素は、実装リソース能力と関連付けられ、
該少なくとも１つの構成要素の再構成は、実装リソース能力を増加させることを含み、
再構成は、第２組の実装リソースへ仮想マシンを移動させた後に起こる、
付記１４に記載のコンピュータ実装方法。
【００７７】
付記１９．
集合的に複数の仮想マシンを維持することが可能な複数の実装リソースと、
ユーザインターフェースであって、少なくとも、
第１のタイプの仮想マシンから第２のタイプの仮想マシンへの仮想マシン移動であって、第１のタイプの仮想マシンの少なくとも１つの構成要素の再構成を含む、仮想マシン移動に対応する、移動テンプレートをユーザが確立をすることを可能にし、
移動テンプレートに従って移動させられる、第１のタイプの一組の仮想マシンをユーザが選択することを可能にするように構成される、
ユーザインターフェースと、
少なくとも、第１のタイプの仮想マシンの該少なくとも１つの構成要素を特徴付ける情報を受信するように構成される、移動エージェントインターフェースと、
移動テンプレートに従って、および受信した情報に少なくとも部分的に基づいて、一組の仮想マシンが、第２のタイプの仮想マシンに変換されるように、少なくとも、第１組の複数の実装リソースから第２組の複数の実装リソースへ一組の仮想マシンを移動させるように構成される、移動管理構成要素と、
を備える、仮想マシンの移動のためのコンピュータ化システム。
【００７８】
付記２０．
ユーザインターフェースはさらに、少なくとも、ユーザが一組の仮想マシンへの一組の移動エージェントの追加を承認することを可能にするように構成され、
移動管理構成要素はさらに、少なくとも、一組の仮想マシンを移動させる前に、一組の移動エージェントを一組の仮想マシンに追加するように構成される、
付記１９に記載のコンピュータ化システム。
【００７９】
付記２１．
一組の移動エージェントは、少なくとも、該少なくとも１つの構成要素を特徴付け、特性化情報を移動エージェントインターフェースに提供するように構成される、少なくとも１つの移動エージェントを備える、付記２０に記載のコンピュータ化システム。
【００８０】
付記２２．
一組の移動エージェントは、一組の仮想マシンによって維持される、複数のタイプのオペレーティングシステムに対応する、複数のタイプの移動エージェントを備える、付記２０に記載のコンピュータ化システム。
【００８１】
付記２３．
該少なくとも１つの構成要素を特徴付ける情報は、該少なくとも１つの構成要素がハードウェア構成要素ホットプラグ機能性を組み込むかどうかという指示を含む、付記１９に記載のコンピュータ化システム。
【００８２】
付記２４．
該少なくとも１つの構成要素を特徴付ける情報は、該少なくとも１つの構成要素がハードウェア構成要素ホットプラグ機能性を組み込むことが可能であるかどうかを判定するのに十分な情報を含む、付記１９に記載のコンピュータ化システム。
【００８３】
付記２５．
少なくとも、
第１のタイプの仮想マシンの少なくとも１つの構成要素を特徴付ける情報を受信し、
受信した情報に少なくとも部分的に基づく、モーフィングテンプレートであって、少なくとも、第１のタイプの仮想マシンから第２のタイプの仮想マシンへの仮想マシンの変換を構成する、モーフィングテンプレートを確立し、
モーフィングテンプレートに従って、仮想マシンの該少なくとも１つの構成要素の再構成をトリガし、
モーフィングテンプレートに従って、第１のタイプの仮想マシンから第２のタイプの仮想マシンへ仮想マシンを変換し、
仮想マシンを用いてサービスをユーザに提供するように、
１つ以上のコンピュータを集合的に構成する、コンピュータ実行可能命令をその上に集合的に有する、１つ以上のコンピュータ可読媒体。
【００８４】
本明細書で説明される種々の実施形態は、場合によっては、いくつかのアプリケーションのうちのいずれかを操作するために利用され得る、１つ以上のユーザコンピュータ、コンピュータデバイス、または処理デバイスを含み得る、多種多様な動作環境で実装されてもよい。ユーザまたはクライアントデバイスは、標準オペレーティングシステムを実行するデスクトップまたはラップトップコンピュータ等のいくつかの汎用パーソナルコンピュータのうちのいずれか、ならびにモバイルソフトウェアを実行し、いくつかのネットワーキングおよびメッセージングプロトコルをサポートすることが可能であるセルラー、無線、および手持ち式デバイスを含んでもよい。そのようなシステムはまた、開発およびデータベース管理等の目的で、種々の市販のオペレーティングシステムおよび他の既知のアプリケーションのうちのいずれかを実行する、いくつかのワークステーションを含んでもよい。これらのデバイスはまた、ダミー端末、シンクライアント、ゲーム機、およびネットワークを介して通信することが可能な他のデバイス等の他の電子デバイスを含んでもよい。
【００８５】
ほとんどの実施形態は、ＴＣＰ／ＩＰ、ＯＳＩ、ＦＴＰ、ＵＰｎＰ、ＮＦＳ、ＣＩＦＳ、およびＡｐｐｌｅＴａｌｋ等の種々の市販のプロトコルのうちのいずれかを使用した通信をサポートするために、当業者に周知となる、少なくとも１つのネットワークを利用する。そのようなネットワークは、例えば、ローカルエリアネットワーク、広域ネットワーク、仮想プライベートネットワーク、インターネット、イントラネット、エクストラネット、公衆交換電話ネットワーク、赤外線ネットワーク、無線ネットワーク、およびそれらの任意の組み合わせを含んでもよい。ネットワークは、さらに、任意の好適なネットワークトポロジーを組み込んでもよい。好適なネットワークトポロジーの実施例は、単純ポイントツーポイント、スタートポロジー、自己組織化ピアツーピアトポロジー、およびそれらの組み合わせを含むが、それらに限定されない。
【００８６】
ウェブサーバを利用する実施形態では、ウェブサーバは、ＨＴＴＰサーバ、ＦＴＰサーバ、ＣＧＩサーバ、データサーバ、Ｊａｖａサーバ、およびビジネスアプリケーションサーバを含む、種々のサーバまたはミッドティアアプリケーションのうちのいずれかを実行してもよい。サーバはまた、Ｊａｖａ（登録商標）、Ｃ、Ｃ＃、またはＣ＋＋等の任意のプログラミング言語、あるいはＰｅｒｌ、Ｐｙｔｈｏｎ、またはＴＣＬ等の任意のスクリプト言語、ならびにそれらの組み合わせで書かれた、１つ以上のスクリプトまたはプログラムとして実装されてもよい、１つ以上のウェブアプリケーションを実行すること等によって、ユーザデバイスからの要求に応じて、プログラムまたはスクリプトを実行することが可能であってもよい。サーバはまた、Ｏｒａｃｌｅ（登録商標）、Ｍｉｃｒｏｓｏｆｔ（登録商標）、Ｓｙｂａｓｅ（登録商標）、およびＩＢＭ（登録商標）から市販されているものを制限なく含む、データベースサーバを含んでもよい。
【００８７】
環境は、上記で論議されるように、種々のデータ記憶部ならびに他のメモリおよび記憶媒体を含んでもよい。これらは、コンピュータのうちの１つ以上のローカルにある（および／またはその中に常駐する）、またはネットワークにわたるコンピュータのうちのいずれかまたは全てから遠隔にある、記憶媒体上等の種々の場所に存在してもよい。特定の一組の実施形態では、情報は、当業者に周知である記憶領域ネットワーク（「ＳＡＮ」）内に存在してもよい。同様に、コンピュータ、サーバ、または他のネットワークデバイスに起因する機能を果たすための必要なファイルが、適宜に、ローカルおよび／または遠隔に記憶されてもよい。システムがコンピュータ化デバイスを含む場合、そのような各デバイスは、バスを介して電気的に連結され得る、ハードウェア要素を含んでもよく、要素は、例えば、少なくとも１つの中央処理装置（ＣＰＵ）、少なくとも１つの入力デバイス（例えば、マウス、キーボード、コントローラ、タッチスクリーン、またはキーパッド）、および少なくとも１つの出力デバイス（例えば、表示デバイス、プリンタ、またはスピーカ）を含む。そのようなシステムはまた、ディスクドライブ、光学記憶デバイス、およびランダムアクセスメモリ（「ＲＡＭ」）または読み出し専用メモリ（「ＲＯＭ」）等の固体記憶デバイス等の１つ以上の記憶デバイス、あるいは可撤性メディアデバイス、メモリカード、フラッシュカード等を含んでもよい。
【００８８】
そのようなデバイスはまた、コンピュータ可読記憶媒体リーダ、通信デバイス（例えば、モデム、ネットワークカード（無線または有線）、赤外線通信デバイス等）、および上記で説明されるような作業メモリを含んでもよい。コンピュータ可読記憶媒体リーダは、遠隔、ローカル、固定、および／または可撤性記憶デバイスを表すコンピュータ可読記憶媒体、ならびにコンピュータ可読情報を一時的および／またはより永久に含有、記憶、伝送、および回収するための記憶媒体と接続されてもよく、またはそれらを受容するように構成されてもよい。システムおよび種々のデバイスはまた、典型的には、いくつかのソフトウェアアプリケーション、プログラムモジュールを含むモジュール、サービス、またはクライアントアプリケーションあるいはウェブブラウザ等のオペレーティングシステムおよびアプリケーションプログラムを含む、少なくとも１つの作業メモリデバイス内に位置する他の要素を含む。代替的な実施形態は、上記で説明されるものからの多数の変化例を有してもよいことを理解されたい。例えば、カスタマイズされたハードウェアも、利用される場合があり、および／または特定の要素が、ハードウェア、ソフトウェア（アプレット等の高移植性ソフトウェアを含む）、あるいは両方で実装される場合がある。さらに、ネットワーク入出力デバイス等の他のコンピュータデバイスへの接続が採用されてもよい。
【００８９】
コードまたはコードの部分を含有するための記憶媒体およびコンピュータ可読媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）または他の光学記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶デバイス、あるいは所望の情報を記憶するために使用され得て、システムデバイスによってアクセスされ得る、任意の他の媒体を含む、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータ等の情報の記憶および／または伝送のための任意の方法または技術で実装される、揮発性および不揮発性、可撤性および不可撤性媒体等であるが、それらに限定されない、記憶媒体および通信媒体を含む、当技術分野で公知である、または使用されている任意の適切な媒体を含んでもよい。プログラムモジュール、プログラム構成要素、および／またはプログラマチックオブジェクトは、任意の好適なコンピュータプログラミング言語の、および／または任意の好適なコンピュータプログラミング言語に対応する、コンピュータ可読および／またはコンピュータ実行可能命令を含んでもよい。少なくとも１つの実施形態では、各コンピュータ可読媒体は、有形であってもよい。少なくとも１つの実施形態では、各コンピュータ可読媒体は、時間的に非一過性であってもよい。本開示および本明細書で提供される教示に基づいて、当業者であれば、種々の実施形態を実装するための他の方式および／または方法を理解するであろう。
【００９０】
したがって、本明細書および図面は、制限的な意味よりもむしろ例証的な意味で見なされるものとする。しかしながら、特許請求の範囲に記載されるような本発明のより広い精神および範囲から逸脱することなく、それに種々の修正および変更が行われてもよいことが明白となるであろう。
【００９１】
実施形態を説明する関連での（特に、以下の請求項との関連での）「１つの」および「該」という用語および同様の指示対象の使用は、本明細書で特に指示されない、または文脈によって明確に矛盾しない限り、単数形および複数形の両方を対象とすると解釈されるものである。「を備える」、「を有する」、「を含む」、および「を含有する」という用語は、特に注記がない限り、制約のない用語として解釈されるものである（すなわち、「を含むが、それに限定されない」を意味する）。「接続される」という用語は、たとえ介在するものがあっても、部分的または完全に内側に含有される、取り付けられる、またはともに接合されるとして解釈されるものである。本明細書の値の範囲の記載は、本明細書で特に指示されない限り、範囲内に入る各別個の値を個別に参照する簡便な方法としての機能を果たすことを目的としているにすぎず、各別個の値は、本明細書で個別に記載されたかのように、本明細書に組み込まれる。本明細書で説明される全ての方法は、本明細書で特に指示されない、または文脈によって明確に矛盾しない限り、任意の好適な順序で行うことができる。本明細書で提供される、ありとあらゆる実施例または例示的な用語（例えば、「等の」）の使用は、実施形態をより良く明らかにすることを目的としているにすぎず、特に請求されない限り、範囲に制限を課さない。本明細書中のいずれの用語も、少なくとも１つの実施形態の実践に不可欠なものとして、請求されていない要素を示すものとして解釈されるべきではない。
【００９２】
発明者らに公知である最良の様態を含む、好ましい実施形態が本明細書で説明される。これらの好ましい実施形態の変化例は、前述の説明を読むと、当業者に明白となってもよい。発明者らは、当業者がそのような変化例を適宜に採用することを期待し、発明者らは、本明細書で具体的に説明されるのとは他の方法で実施形態が構築されることを意図する。したがって、好適な実施形態は、適用法令によって許可されるように本明細書に添付される請求項に記載される、主題の全ての修正および同等物を含む。また、その全ての可能な変化例の中の上記の要素の任意の組み合わせは、本明細書で特に指示されない、または文脈によって明確に矛盾しない限り、いくつかの好適な実施形態に組み込まれるものとして検討される。
【００９３】
本明細書で引用される出版物、特許出願、および特許を含む、全ての参考文献は、各参考文献が、参照することにより組み込まれることが個別かつ特異的に示され、その全体で本明細書に記載されるのと同じ程度に、参照することにより本明細書に組み込まれる。
【図１】
0005629018.tif 000002
【図２】
0005629018.tif 000003
【図３】
0005629018.tif 000004
【図４】
0005629018.tif 000005
【図５】
0005629018.tif 000006
【図６】
0005629018.tif 000007
【図７】
0005629018.tif 000008
【図８】
0005629018.tif 000009
【図９】
0005629018.tif 000010
【図１０】
0005629018.tif 000011
【図１１】
0005629018.tif 000012