(57)【特許請求の範囲】
【請求項１】
一つ又は複数の子パーティションを含むパーティションであって、前記子パーティションは、少なくとも一つの仮想プロセッサーとゲストオペレーティングシステムを含む仮想マシンである、パーティションと、
移行可能なストレージサービスを実現する回路であって、前記移行可能なストレージサービスは前記パーティション上で実行可能なものであり、前記移行可能なストレージサービスは前記子パーティションについての仮想ハードディスクの入出力要求を管理するように構成され、前記移行可能なストレージサービスに一意のネットワーク識別子が割り当てられる、移行可能なストレージサービスを実現する回路と、
前記仮想ハードディスクを移行させることなく、前記移行可能なストレージサービスをあるパーティションから少なくとも別のパーティションに移行させる回路と、
前記移行可能なストレージサービスをネットワーク内のストレージターゲットとして設定する回路と
を備えるシステム。
【請求項２】
前記移行可能なストレージサービスをあるパーティションから少なくとも別のパーティションに移行させる回路は、前記移行可能なストレージサービスをリモートコンピューターシステム上のパーティションに移行させる回路を備える請求項１に記載のシステム。
【請求項３】
前記子パーティションについての入出力要求に関連付けられるゲスト物理アドレスをシステム物理アドレスへ変換する入出力メモリー管理ユニットを構成する回路をさらに備える請求項１又は２に記載のシステム。
【請求項４】
前記子パーティションが第２の一意のネットワーク識別子が割り当てられた仮想ネットワークアダプターを含む請求項１〜３のいずれか一項に記載のシステム。
【請求項５】
前記移行可能なストレージサービスが前記一意のネットワーク識別子が割り当てられた仮想ネットワークアダプターを含む請求項１〜４のいずれか一項に記載のシステム。
【請求項６】
前記移行可能なストレージサービスと、前記仮想マシンを管理するように構成される管理サービスを、前記子パーティション以外のパーティションによって実現する回路をさらに備える請求項１〜５のいずれか一項に記載のシステム。
【請求項７】
前記仮想プロセッサーにマッピングされる一つ又は複数の論理プロセッサーと、前記子パーティションについての入出力要求を受信することに応答して、前記論理プロセッサーに前記移行可能なストレージサービスを実行するように通知する回路をさらに備える請求項１〜６のいずれか一項に記載のシステム。
【請求項８】
前記子パーティションについての入出力要求が前記一意のネットワーク識別子と少なくとも１つの他の一意のネットワーク識別子との間のものであるときに、前記子パーティションについての入出力要求がセキュリティポリシーに準拠するか否かであることを決定する回路をさらに備える請求項１〜７のいずれか一項に記載のシステム。
【請求項９】
一つ又は複数の子パーティションを含むパーティションであって、前記子パーティションは、少なくとも一つの仮想プロセッサーとゲストオペレーティングシステムを含む仮想マシンであるパーティション、を含むシステムで実行される方法であって、
移行可能なストレージサービスであって、前記移行可能なストレージサービスは前記パーティション上で実行可能なものであり、前記移行可能なストレージサービスは前記子パーティションについての仮想ハードディスクの入出力要求を管理するように構成され、前記移行可能なストレージサービスに一意のネットワーク識別子が割り当てられている、移行可能なストレージサービスを実現するステップと、
前記仮想ハードディスクを移行させることなく、前記移行可能なストレージサービスをあるパーティションから少なくとも別のパーティションに移行させるステップと
前記移行可能なストレージサービスをネットワーク内のストレージターゲットとして設定するステップと
を含む方法。
【請求項１０】
前記移行可能なストレージサービスをあるパーティションから少なくとも別のパーティションに移行させるステップは、前記移行可能なストレージサービスをリモートコンピューターシステム上のパーティションに移行させるステップを備える請求項９に記載の方法。
【請求項１１】
前記子パーティションについての入出力要求に関連付けられるゲスト物理アドレスをシステム物理アドレスへ変換する入出力メモリー管理ユニットを構成するステップをさらに含む請求項９又は１０に記載の方法。
【請求項１２】
前記子パーティションが第２の一意のネットワーク識別子が割り当てられた仮想ネットワークアダプターを含む請求項９〜１１のいずれか一項に記載の方法。
【請求項１３】
前記移行可能なストレージサービスが前記一意のネットワーク識別子が割り当てられた仮想ネットワークアダプターを含む請求項９〜１２のいずれか一項に記載の方法。
【請求項１４】
前記移行可能なストレージサービスと、前記仮想マシンを管理するように構成される管理サービスを、前記子パーティション以外のパーティションによって実現するステップをさらに含む請求項９〜１３のいずれか一項に記載の方法。
【請求項１５】
前記システムは、前記仮想プロセッサーにマッピングされる一つ又は複数の論理プロセッサーを更に備え、
前記コンピューター方法は、前記子パーティションについての入出力要求を受信することに応答して、前記論理プロセッサーに前記移行可能なストレージサービスを実行するように通知するステップをさらに含む請求項９〜１４のいずれか一項に記載の方法。
【請求項１６】
前記子パーティションについての入出力要求が前記一意のネットワーク識別子と少なくとも１つの他の一意のネットワーク識別子との間のものであるときに、前記子パーティションについての入出力要求がセキュリティポリシーに準拠するか否かであることを決定するステップをさらに含む請求項９〜１５のいずれか一項に記載の方法。
【請求項１７】
請求項９〜１６のいずれか一項に記載の方法を実行するためのプログラム。
【請求項１８】
請求項９〜１６のいずれか一項に記載の方法を実行するためのプログラムを記録した記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想記憶ターゲットオフロード技術に関する。
【背景技術】
【０００２】
[0001]仮想マシン技術は、ワークロードをパッケージ化し、データセンターにそれを移動させるために使用することができる。１つの物理ホストから別の物理ホストへワークロードを移動させるこの機能は、ハードウェアコスト及び管理コストをはるかに低くすることにつながる動的なマシンの統合を可能にするため、ユーザーにとって大きな利点である。仮想マシンは、通常、ハイパーバイザー、管理パーティション又はそれらの組み合わせ内に位置するストレージ仮想化を処理するモジュールを介してストレージにアクセスする。このモデルでは、仮想マシンは、通常、参照により全体としてその内容が本明細書に組み込まれる「パーティションバス」と題した米国特許出願第１１／１２８，６４７号に記載される例示的なパーティションバスのようなパーティション間通信バスなどのソフトウェア通信経路を介してモジュールへストレージ入出力要求を送信する。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
仮想マシンとハイパーバイザー（又は管理パーティション）との間の通信は、通信経路の実行及びメッセージを転送するときに発生するコンテキストスイッチによって、ＣＰＵサイクルコストを被る。したがって、ＣＰＵコストを減少させることによって入出力要求を処理する効率を高めるための技術が望まれる。
【課題を解決するための手段】
【０００４】
[0002]本開示の１つの実施例は方法について記載する。この例において、当該方法は、移行可能なストレージサービスをもたらすステップであって、当該移行可能なストレージサービスは子パーティションについての仮想ハードディスクの入出力要求を管理するように構成され、当該移行可能なストレージサービスはネットワークの独自のネットワーク識別子が割り当てられる、ステップと、ネットワーク内のストレージターゲットとして移行ストレージサービスを構成するステップとを含むが、これに限定されない。上記に加えて、他の態様が、特許請求の範囲、図面、及び本開示の一部を形成する記述に記載されている。
【０００５】
[0003]本開示の例示的な実施例は方法について記述する。この例において、方法は、子パーティションについての仮想ハードドライブディスク入出力要求を管理するように構成されたストレージサービスに、ネットワークアダプターの第１の一意のネットワーク識別子をアタッチ（attach）するステップと、ネットワークアダプターによってもたらされる仮想関数を子パーティションにアタッチするステップであって、当該仮想関数が第２の一意のネットワーク識別子を含む、ステップとを含むが、これに限定されない。上記に加えて、他の態様は、特許請求の範囲、図面、及び本開示の一部を形成する記述に記載される。
【０００６】
[0004]本開示の例示的な実施例は方法について記述する。この例において、当該方法は、子パーティションにおいてストレージサービスを実行するステップであって、当該ストレージサービスは第２の子パーティションについての仮想ハードドライブディスク入出力要求を管理するように構成され、当該記憶装置にネットワーク内で一意のネットワーク識別子が割り当てられる、ステップを含むが、これに限定されない。上記に加えて、他の態様は、特許請求の範囲、図面、及び本開示の一部を形成する記述に記載される。
【０００７】
[0005]当業者であれば、本開示の１つ又は複数の様々な態様が、本開示についての本明細書にて参照される態様を達成する回路及び／又はプログラミングに限定されず、当該回路及び／又はプログラミングが、システム設計者の設計の選択肢に応じて、本明細書にて参照される態様を達成するように構成された、ハードウェア、ソフトウェア、及び／又はファームウェアの実質的に任意の組み合わせであってもよいことを認識することができる。
【０００８】
[0006]上記は概要であり、したがって必然的に、単純化、一般化及び詳細についての省略を含んでいる。当業者であれば、この概要が例示的なものにすぎず、いかなるようにも限定的であるようには意図されていないことを理解するであろう。
【図面の簡単な説明】
【０００９】
【図１】[0007]本開示の態様を実施することができる例示的なコンピューターシステムを示す。
【図２】[0008]本開示の態様を実施するための動作環境を示す。
【図３】[0009]本開示の態様を実施するための動作環境を示す。
【図４】[0010]ＳＲ−ＩＯＶに準拠したネットワークデバイスを含むコンピューターシステムを示す。
【図５】[0011]仮想化環境でのメモリー間の関係を示す。
【図６】[0012]本開示の実施例を示す。
【図７】[0013]本開示の態様を説明するための動作環境を示す。
【図８】[0014]本開示の態様を実施するための動作手順を示す。
【図９】[0015]図８の動作手順の代替的な実施例を示す。
【図１０】[0016]本開示の態様を実施するための動作手順を示す。
【図１１】[0017]図１０の動作手順の代替的な実施例を示す。
【図１２】[0018]本開示の態様を実施するための動作手順を示す。
【図１３】[0019]図１２の動作手順の代替的な実施例を示す。
【発明を実施するための形態】
【００１０】
[0020]実施例は１つ又は複数のコンピューターシステム上で実行することができる。図１及び以下の説明は、本開示を実施することができる適切なコンピューティング環境の簡潔な一般的な説明を提供することを目的とする。
【００１１】
[0021]本開示にわたって使用される回路という用語は、ハードウェア割り込みコントローラー、ハードドライブ、ネットワークアダプター、グラフィックプロセッサー、ハードウェアベースの動画／音声コーデック、及びこのようなハードウェアを動作させるために使用されるファームウェアなどのハードウェアコンポーネントを含んでもよい。回路という用語はまた、マイクロプロセッサー、特定用途向け集積回路、及び／又は１つもしくは複数の論理プロセッサー、例えば、ファームウェア及び／又はソフトウェアによって構成されたマルチコアの一般的な処理装置の１つ又は複数のコアを含んでもよい。論理プロセッサーは、ＲＡＭ、ＲＯＭなどのメモリー、ファームウェア、及び／又はマスストレージからロードされる機能を実行するように動作可能な論理を具体化する命令によって構成することができる。回路がハードウェアとソフトウェアの組み合わせを含む例示的な実施例において、開発者は、論理プロセッサーによって実行できるマシン読み取り可能なコードへとその後にコンパイルされる論理を具体化するソースコードを書いてもよい。当業者であれば、最先端の技術がハードウェアにより実施される機能とソフトウェアにより実施される機能との間にほとんど差がないところまで進化してきたことを理解することができるので、本明細書に記載される機能を達成するためのハードウェアとソフトウェアの選択は、設計上の選択にすぎない。換言すれば、当業者は、ソフトウェア処理を等価なハードウェア構造へと変換することができ、ハードウェア構造自体を等価なソフトウェア処理へと変換することができることを理解し得るので、ハードウェアによる実施とソフトウェアによる実施との選択は開発者に委ねられる。
【００１２】
[0022]図１を参照すると、例示的なコンピューティングシステム１００が示されている。コンピューターシステム１００は、論理プロセッサー１０２、例えば、実行コアのハイパースレッドを含んでもよい。１つの論理プロセッサー１０２が示されているが、他の実施例では、コンピューターシステム１００は、複数の論理プロセッサー、例えば、プロセッサー基板及び／又は各々が複数の実行コアを持つことができる複数のプロセッサー基板あたり、複数の実行コアを有してもよい。図で示すように、様々なコンピューター読み取り可能な記憶媒体１１０は、様々なシステムコンポーネントを論理プロセッサー１０２に結合する１つ又は複数のシステムバスによって相互接続することができる。システムバスは、メモリーバスもしくはメモリーコントローラー、周辺バス、及び各種のバスアーキテクチャーうちの任意のものを使用するローカルバスを含む、幾つかの種類のバス構造のうちの任意のものであってもよい。例示的な実施例において、コンピューター読み取り可能な記憶媒体１１０は、例えば、ランダムアクセスメモリー（ＲＡＭ）１０４、例えば電気機械ハードドライブ、固体ハードドライブなどの記憶装置１０６、ファームウェア１０８、例えばフラッシュＲＡＭ又はＲＯＭ、例えばＣＤ−ＲＯＭ、フロッピーディスク、ＤＶＤ、フラッシュドライブ、外付け記憶装置などの取り外し可能な記憶装置１１８を含んでもよい。取り外し可能な記憶装置は、磁気カセット、フラッシュメモリーカード、デジタルビデオディスク、ベルヌーイカートリッジなどの、他の種類のコンピューター読み取り可能な記憶媒体を使用できることが当業者にとって理解されるべきである。
【００１３】
[0023]コンピューター読み取り可能な記憶媒体１１０は、プロセッサー実行可能な命令１２２の不揮発性及び揮発性の記憶装置、データ構造、プログラムモジュール、及びコンピューター１００のための他のデータを提供することができる。起動中にコンピューター・システム１００内の要素間で情報を転送するのを助ける基本ルーチンを含む基本入出力システム（ＢＩＯＳ）１２０は、ファームウェア１０８に格納することができる。多くのプログラムを、ファームウェア１０８、記憶装置１０６、ＲＡＭ１０４、及び／又は取り外し可能な記憶装置１１８に格納することができ、また、オペレーティングシステム及び／又はアプリケーションプログラムを含む論理プロセッサー１０２によって実行することができる。
【００１４】
[0024]コマンド及び情報は、キーボード及びポインティングデバイスを含み得るがこれらに限定されない入力装置１１６を介してコンピューター１００によって受信されてもよい。他の入力装置は、マイクロフォン、ジョイスティック、ゲームパッド、スキャナーなどを含んでもよい。これら及び他の入力装置は、システムバスに結合され、しばしばユニバーサルシリアルバスポート（ＵＳＢ）などの他のインターフェイスによって接続される、シリアルポートインターフェースを介して論理プロセッサー１０２に接続することができる。ディスプレイや他の種類の表示装置はまた、グラフィックプロセッサー１１２の一部であるか又はグラフィックスプロセッサー１１２に接続することができる、ビデオアダプターなどのインターフェースを介してシステムバスに接続することができる。ディスプレイに加えて、コンピューターは、通常、スピーカーやプリンターなどの他の周辺出力装置（図示せず）を含む。図１の例示的なシステムはまた、ホストアダプター、小型コンピューターシステムインターフェース（ＳＣＳＩ）バス、及びＳＣＳＩバスに接続された外部記憶装置を含んでもよい。
【００１５】
[0025]コンピューターシステム１００は、リモートコンピューターへの論理接続を使用してネットワーク環境で動作することができる。リモートコンピューターは、別のコンピューター、サーバー、ルーター、ネットワークＰＣ、ピアデバイス又は他の共通ネットワークノードであってもよく、通常、コンピューターシステム１００に関連して上述した要素のうちの多く又はすべてを含んでもよい。
【００１６】
[0026]ＬＡＮ又はＷＡＮネットワーキング環境で使用される場合、コンピューターシステム１００は、ネットワークインターフェースカード１１４を介してＬＡＮ又はＷＡＮに接続することができる。内蔵であっても又は外付けであってもよいＮＩＣ１１４は、論理プロセッサーに接続することができる。ネットワーク環境において、コンピューターシステム１００に関連して示したプログラムモジュール又はその一部は、リモートメモリー記憶装置に格納することができる。ここで説明するネットワーク接続が例示的なものであって、コンピューター間の通信リンクを確立する他の手段を使用することができることが理解されるであろう。さらに、本発明の多数の実施例は特にコンピューター化されたシステムに適していることを想定しているが、本明細書のいかなる記載も本発明をそのような実施例に限定することを意図されてはいない。
【００１７】
[0027]図２及び３を参照すると、仮想マシンをもたらすように構成されたコンピューターシステム２００及び３００の高レベルのブロック図を示す。本開示の例示的な実施例において、コンピューターシステム２００及び３００は、図１に記載した要素を含んでもよく、仮想マシンを達成するように動作可能なコンポーネントを含んでもよい。図２に移ると、１つのそのようなコンポーネントは、当技術分野で仮想マシンモニターと呼ばれることもあるハイパーバイザー２０２である。図示された実施例のハイパーバイザー２０２は、コンピューターシステム１００のハードウェアへのアクセスを制御して解決するように構成されてもよい。概して、ハイパーバイザー２０２は、パーティションと呼ばれる実行環境、例えば仮想マシン、を生成することができる。実施例において、子パーティションは、ハイパーバイザー２０２によってサポートされる分離の基本単位と見なすことができる。すなわち、各々の子パーティション（２４６及び２４８）は、ハイパーバイザー２０２及び／又は親パーティションの制御下にあるハードウェア資源の組、例えばメモリー、デバイス、論理的なプロセッサーサイクルなど、にマッピングすることができ、ハイパーバイザー２０２は、別のパーティションのリソースへのアクセスから１つのパーティション内の処理を分離することができ、例えば、１つのパーティション内のゲストオペレーティングシステムは、別のパーティションのメモリーから分離することができる。実施例において、ハイパーバイザー２０２は、スタンドアロンのソフトウェア製品、オペレーティングシステムの一部であってもよく、マザーボードのファームウェアに埋め込まれてもよく、特殊な集積回路であってもよく、又はこれらの組み合わせであってもよい。
【００１８】
[0028]図示された例において、コンピューターシステム１００は、オープンソースコミュニティにおけるドメイン0に類似したものとも考えることができる、親パーティション２０４を含む。親パーティション２０４は、通常はオープンソースコミュニティのバックエンドドライバーと呼ばれる仮想化サービスプロバイダー２２８（ＶＳＰに）を使用して、子パーティションにおいて実行されるゲストオペレーティング・システムにリソースを提供するように構成することができる。この例のアーキテクチャーにおいて、親パーティション２０４は、基盤となるハードウェアへのアクセスをゲート制御することができる。概して、ＶＳＰ２２８は、仮想サービスクライアント（ＶＳＣ）（通常、オープンソースコミュニティのフロントエンドドライバーと呼ばれる）によって、ハードウェア資源へのインターフェースを多重化するのに使用することができる。各々の子パーティションは、ゲストオペレーティングシステム２２０から２２２がその上で実行するスレッドを管理しスケジュールすることができる、仮想プロセッサー２３０から２３２などの１つ又は複数の仮想プロセッサーを含んでもよい。一般に、仮想プロセッサー２３０から２３２は、特定のアーキテクチャーを備えた物理プロセッサーの表現を提供する実行可能な命令及び関連する状態情報である。例えば、１つの子パーティションがＩｎｔｅｌ  ｘ８６プロセッサーの特徴を有する仮想プロセッサーを有し得る一方、別の仮想プロセッサーはＰｏｗｅｒＰＣプロセッサーの特徴を有してもよい。この例における仮想プロセッサーは、命令についての仮想プロセッサーの実行が論理プロセッサーによってバックアップされるように、コンピューターシステムの論理プロセッサーにマッピングすることができる。したがって、これらの例示的な実施例では、たとえば、別の論理プロセッサーがハイパーバイザーの命令を実行している間に、複数の仮想プロセッサーが同時に実行することができる。仮想プロセッサー、様々なＶＳＣ、及びパーティション内のメモリーの組み合わせを、仮想マシンと考えることができる。
【００１９】
[0029]ゲストオペレーティングシステム２２０から２２２は、例えば、マイクロソフト（登録商標）、アップル（登録商標）、オープンソースコミュニティからオペレーティングシステムなどの任意のオペレーティングシステムを含んでもよい。ゲストオペレーティングシステムは、動作のユーザー／カーネルモードを使用することができ、スケジューラー、メモリーマネージャーなどを含み得るカーネルを有してもよい。各ゲストオペレーティングシステム２２０から２２２は、ターミナルサーバー、電子商取引サーバー、電子メールサーバーなど、及びゲストオペレーティングシステム自体などの、格納されたアプリケーションを有し得る関連付けられたファイルシステムを有してもよい。ゲストオペレーティングシステム２２０から２２２は仮想プロセッサー２３０から２３２上で実行するスレッドをスケジュールすることができ、そのようなアプリケーションのインスタンスを達成することができる。
【００２０】
[0030]ここで図３を参照すると、図２における上記のものに対する代替的なアーキテクチャーを示す。図３は図２と同様のコンポーネントを示す。しかし、この例示的な実施例において、ハイパーバイザー２０２は、仮想化サービスプロバイダー２２８及びデバイスドライバー２２４を含んでもよく、親パーティション２０４は設定ユーティリティ２３６を含んでもよい。このアーキテクチャーにおいて、ハイパーバイザー２０２は、図２のハイパーバイザー２０２と同一又は類似の機能を実行することができる。図３のハイパーバイザー２０２は、スタンドアローンのソフトウェア製品、オペレーティングシステムの一部であってもよく、マザーボードのファームウェア内に埋め込まれてもよく、また、ハイパーバイザー２０２の一部は、特殊な集積回路によって達成することができる。この例では、親パーティション２０４は、ハイパーバイザー２０２を設定するために使用できる命令を有してもよいが、ハードウェアへのアクセス要求は親パーティション２０４に渡される代わりにハイパーバイザー２０２によって扱われてもよい。
【００２１】
[0031]本開示の実施例において、参照によりその全体が明確に本明細書に組み込まれる「単一ルート入出力仮想化仕様」リビジョン１．０に準拠したネットワークアダプターは、図面に記載されるものなどのコンピューター・システムにインストールすることができる。例示的なアダプターは、インテル（登録商標）の「ギガビットＥＴデュアルポートサーバーアダプター」であってもよい。ＳＲ−ＩＯＶ対応のネットワークデバイスは、物理的な機能に対するインターフェースを仮想化することによって、例えば仮想マシン間の入出力アダプター又は任意の他の処理を共有することができるハードウェアデバイスである。仮想関数（ＶＦ）としても知られる各々の仮想インターフェースは、おおまかに言って、コンピューターシステムのＰＣＩ−Ｅｘｐｒｅｓｓバス上の別個のネットワークインターフェースカードのように見える。たとえば、各仮想関数は、エミュレートされたＰＣＩ設定スペースと、独自のネットワーク識別子、例えば、メディアアクセス制御アドレス（ＭＡＣアドレス）、ワールドワイドな名前（world wide name）などを有してもよい。したがって、各仮想関数は、物理関数へアクセスするために、一意にアドレス指定され、強力に分離された別個のパスをサポートすることができる。
【００２２】
[0032]図４に目を向けると、ＳＲ−ＩＯＶに準拠したアダプター４０２（「アダプター」）を含むコンピューターシステム４００を示す。上記のものと同様に、コンピューターシステム４００は、図１−３に関して上記と同様のコンポーネントを含んでもよい。アダプター４０２は、ネットワーク及び内部ルーター４１２に接続することができる、ポートに対応できる物理関数４１０を含んでもよい。内部ルーター４１２は、例えば、各々が仮想ポートを備えた仮想アダプターなど、仮想関数４０４又は４０６に割り当てられるものなどの、アダプター４０２のネットワーク識別子４２０から４２４へ、又はそれらから、データをルーティングするように構成することができる。
【００２３】
[0033]例示的な実施例において、ネットワークアダプター４０２はイーサネット（登録商標）アダプターであってもよく、仮想関数は仮想イーサネットアダプターであってもよい。この例では、仮想関数の一意の識別子はイーサネットＭＡＣアドレスである。ファイバーチャネルの例では、アダプター４０２はファイバーチャネルホストバスアダプターであってもよく、仮想関数は、ワールドワイドノード名及びワールドワイドポート名を含むワールドワイド名を有する仮想ファイバーチャネルホストバスアダプターであってもよい。インフィニバンド（商標）の例では、仮想関数は、グローバル識別子を有する仮想インフィニバンドエンドポイントであってもよい。
【００２４】
[0034]ネットワーク識別子４２４は、ファイバーチャネルホストバスアダプター又はイーサネットアダプターなどの特定のネットワークアダプターが複数の一意の識別子が単一の物理ポートを共有することを可能にすることを示し、破線で示される。ファイバーチャネルでは、この能力は、ＮポートＩＤ仮想化又はＮＰＩＶと呼ばれ、イーサネットにおいて、アダプターはプロミスキャス（promiscuous）モードと呼ばれるものにおいて動作し、埋め込まれた仮想スイッチを含み、又は、メモリーバッファーを分離するために、特定のＭＡＣアドレスに対してアドレス指定されるデータをフィルタリングしルーティングしてもよい。
【００２５】
[0035]各々のネットワーク識別子は、ネットワークを介して送信できるように情報をフォーマットするように構成されたソフトウェアプロトコルスタック（４１４−４１８）に関連付けることができる。特定のＴＣＰ／ＩＰの例において、プロセスは、アプリケーション層のポートを介してＴＣＰ／ＩＰスタックのアプリケーション層のインスタンスに結合することができる。最終的に、プロトコルスタックの異なる機能によって処理される情報は、ファブリックを介して送信できるデータのフレームの組立を担当しているメディアアクセス制御層として知られるものに存在する、一群の関数によって処理することができる。プロトコルスタックのこの層は、ネットワーク上で送信されるフレームに、仮想関数のためのメディアアクセス制御アドレスを追加する。その後、プロトコルスタックは、フレーム内の情報を電気信号に変換してネットワークへ当該フレームを送信するように構成される物理層に、組み立てられたフレームを渡す。
【００２６】
[0036]入出力メモリー管理ユニット４２６（Ｉ／Ｏ−ＭＭＵ）は、ＰＣＩ−Ｅｘｐｒｅｓｓインターコネクトなどの直接メモリーアクセス動作をＲＡＭに対して実行できる入出力相互接続を結合するために使用することができる。本開示の実施例において、Ｉ／Ｏ−ＭＭＵ４２６は、パーティションからのゲスト物理アドレスをシステム物理アドレスに変換するハイパーバイザー２０２からのページテーブルを含んでもよい。Ｉ／Ｏ−ＭＭＵ４２６は、コンピューターシステム４００内の複数の位置に存在することができることを示し、破線で示される。たとえば、Ｉ／Ｏ−ＭＭＵは、マザーボード上のチップ又は論理プロセッサーのコンポーネントであってもよい。
【００２７】
[0037]図５は、本開示の実施例における、ゲスト物理アドレスとシステム物理アドレスとの間の関係を示す。ゲストメモリーはハイパーバイザー２０２によって制御されるメモリーの表示である。ゲストメモリーはゲストオペレーティングシステムに割り当てられ、それらのメモリーマネージャーによって制御することができる。ゲスト物理アドレスは、システムの物理アドレス（ＳＰＡ）、例えばハイパーバイザー２０２によって管理される物理的なコンピューターシステムのメモリー、によってバックアップすることができる。図面によって示すように、実施例において、ＧＰＡ及びＳＰＡは、メモリー・ブロック、例えば、メモリーの１つ又は複数のページ、へと配置することができる。ＧＰＡとＳＰＡとの関係は、その内容が参照により全体として本明細書に組み込まれる、「強化されたシャドウページテーブルアルゴリズム」なるタイトルの、同一出願人による米国特許出願第１１／１２８，６６５号に記載されるものなどのシャドウページテーブルによって維持することができる。動作において、ゲスト・オペレーティングシステムがＧＰＡブロック１内にデータを格納するとき、データは実際にはシステム上のブロック６などの異なるＳＰＡに格納することができる。本開示の実施例において、Ｉ／Ｏ−ＭＭＵ４２６は、１つのＧＰＡ空間から別のＧＰＡ空間に直接的にストレージデータを移動するために、入出力動作中に変換を行うことができる。この実施例では、論理プロセッサーサイクルは、これらの変換を達成するための命令をハイパーバイザーにおいて実行する必要なくして、保存することができる。
【００２８】
[0038]図６は仮想ストレージターゲットオフロード技術を記述する高レベルの動作環境を示す。図６は、ＳＲ−ＩＯＶネットワークアダプター４０２とその仮想関数４０６を介してストレージの仮想化クライアント６０４と通信する、仮想マシンストレージサービス６０２を示す。図に示すように、本開示のこの実施例において、ＳＲ−ＩＯＶネットワークアダプター４０２は、ソフトウェア通信経路をバイパスすることにより、仮想マシンと仮想マシンのストレージサービスとの間の入出力を伝送するために使用することができる。これは、仮想マシンの入出力を実行するために使用されるＣＰＵサイクルの量を減らし、ストレージ・サービス６０２に移行する能力を高め、潜在的に、親パーティションにおいて実行されるホストオペレーティングシステムの負担及び／又はハイパーバイザー２０２の負担を低減する。
【００２９】
[0039]仮想マシンストレージサービス６０２は、ＳＡＮによって提供される論理ユニット番号（ＬＵＮ）、例えば、子パーティションの代わりに他のストレージ仮想化技術によって既に仮想化されてもよいダーク（dirk）、などの物理的な記憶装置と通信するように構成することができる。１つの例では、これは、仮想マシンから入出力要求を受信しＬＵＮへルーティングするように、仮想マシンストレージサービス６０２を構成することを含んでもよい。別の例では、ＬＵＮがサブ割り当てされる場合、仮想マシンストレージサービス６０２は、仮想ハードドライブを生成し、仮想マシンにそれらを公開（エクスポーズ）し、ＬＵＮ又は物理ドライブ上の仮想ハードドライブ（ＶＨＤ）ファイルとしてそれらを格納するように構成することができる。ＶＨＤファイルは単一のファイル内にカプセル化することができる仮想マシンハードディスクを表す。仮想マシンストレージサービス６０２は、ファイルを解析し、物理的なストレージであるかのようにゲストオペレーティングシステム２２０にさらすことができるディスクをもたらすことができる。仮想マシンストレージサービス６０２によって生成された仮想ハードディスクは、ローカルであるように見えるような方法でゲストオペレーティングシステムにアクセス可能であるバスに対して表すことができる。
【００３０】
[0040]本開示の実施例において、仮想マシンストレージサービス６０２は、一意のネットワーク識別子を仮想マシンストレージサービス６０２に付加し、例えば、データセンター内のストレージターゲットとして仮想マシンストレージサービス６０２をアドバタイズするために使用されるストレージターゲットパラメーターを設定することによって、ネットワーク内のファイバーチャネルターゲット又はインターネットスモールコンピューターシステムインターフェース（ｉＳＣＳＩ）ターゲットなどの、ストレージターゲットであるように構成することができる。ｉＳＣＳＩの例示的な環境において、仮想マシンストレージサービス６０２は、インターネットプロトコルを介して子パーティションにアクセス可能なＬＵＮをもたらすことによって、ｉＳＣＳＩターゲットを実施することができる。仮想マシンストレージクライアント６０４又はゲストオペレーティングシステムは、仮想マシンストレージサービス６０２のアドレスを取得することができ、ＳＣＳＩハードディスクへの接続をエミュレートする接続を設定することができる。ＳＣＳＩ又はハードドライブ及び仮想マシンストレージサービス６０２が子パーティションに仮想ハードドライブを提供するのと同じ方法で、仮想マシンストレージクライアント６０４は仮想マシンストレージサービス６０２を扱うことができる。この例では、仮想マシンストレージクライアント６０４は、ネットワークファイルシステム環境で行われるようにリモートディレクトリーをマウントする必要なく、仮想マシンストレージサービス６０２によって提供される仮想ディスク上のファイルシステムを直接的に作成及び管理することができる。ゲストＯＳ２２０の観点から、それはハードドライブと同様の方法で機能する１つ又は複数の論理ユニットに結合されるネットワークに結合されたネットワークアダプターを有する。
【００３１】
[0041]図７は、本開示の態様を実施するための例示的な動作環境を示す。図６と同様に、１つ又は複数のＳＲ−ＩＯＶネットワークアダプターが、仮想マシンと仮想マシンストレージサービスとの間の入出力を転送するために使用することができ、これによって、ソフトウェア通信パスを使用して入出力を送信する必要性をなくすことができる。これにより、仮想マシンの入出力を実行するために使用されるＣＰＵサイクルの量が低減され、ストレージサービス６０２に移行する能力が高められ、ホストオペレーティングシステム上の負担及び／又はハイパーバイザー２０２上の負担が潜在的に低減される。
【００３２】
[0042]この例の環境においては、２つのコンピューターシステム７００及び７０２を含むデータセンターがスイッチ７０４に接続されて図示されている（２つのコンピューターシステムが示されるが、当業者であれば、データセンターがより多くのコンピューターシステムを有し得ることを理解することができる）。コンピューターシステム７００及び７０２は図１−４に記載されるものと同様のコンポーネントを有してもよく、スイッチ７０４は相互接続されたスイッチ及びルーターの全体的なインフラストラクチャーであってもよい。さらに、コンピューターシステム７００及び７０２は、本明細書に開示される技術をより明確に説明するために、特定の機能を含むように示されており、本発明は、示されたトポロジーにおいて実施されるものには限定されない。
【００３３】
[0043]コンピューターシステム７００は、本明細書に記載された技術に従ってストレージサービス６０２に移行するように構成されるマネージャー２５０を含んでもよく、したがって、仮想マシンストレージサービス６０２は、同一の又は異なるコンピューターシステムにおいて１つのパーティションから別のパーティションに移行することができることを示すように点線で示される。仮想関数７０６及び７０８は、特定の実施例において仮想マシンストレージサービス６０２が仮想関数を介してアクセスする必要なしにＳＲ−ＩＯＶアダプター４０２とインターフェースすることができることを示すように、点線で示される。この例示的な実施例において、親パーティション２０４及び７１２は物理ハードウェアの制御を有することができ、仮想関数は必要とされない。
【００３４】
[0044]続けて図面について概括すると、仮想マシンストレージサービス６０２は、本開示の実施例において、割り当てられた一意の識別子を抽出し、任意の必要な状態情報と共に当該識別子を異なるパーティションに移動することによって、移行させることができる。１つの例では、このプロセスは、マネージャー２５０を実行する論理プロセッサーが一意の識別子を抽出すること、マネージャー２５０を実行する論理プロセッサーが、アダプター（４０２又は７１８）に、異なるパーティションにおける仮想関数に一意の識別子を加えるよう指示すること、及び、マネージャー２５０を実行する論理プロセッサーが、仮想マシンストレージサービス６０２のインスタンスに、それ自身を仮想関数に加えることを含んでもよい。別の例において、このプロセスは、マネージャー２５０を実行する論理プロセッサーが一意の識別子を抽出すること、マネージャー２５０を実行する論理プロセッサーが、アダプター（４０２又は７１８）に、当該アダプター（４０２又は７１８）に一意の識別子を付加するよう指示すること、及び、マネージャー２５０を実行する論理プロセッサーが、ファブリック上で通信するために一意の識別子を使用するよう、異なるパーティションにおいてインスタンスを作成された仮想マシンストレージサービス６０２のインスタンスに指示することを含んでもよい。
【００３５】
[0045]以下は動作手順を示す一連のフローチャートである。理解を容易にするために、フローチャートは、最初のフローチャートが全体の「全体像」の視点を介して実施を示し、後続のフローチャートがさらなる追加及び／又は詳細を提供するように構成される。さらに、当業者であれば、破線で描かれた動作が任意のものであると考えられることを理解することができるであろう。
【００３６】
[0046]図８を参照すると、本開示の態様を実施するための動作手順が示される。図に示すように、動作８００が動作手順を開始し、動作８０２は移行ストレージサービスを達成する（effectuate）ことを示し、当該移行可能なストレージサービスは子パーティションについての仮想ハードディスク入出力要求を管理するように構成され、移行可能なストレージサービスにはネットワークについての一意のネットワーク識別子が割り当てられる。例えば、図６に移ると、仮想マシンストレージサービス６０２などの移行可能なストレージサービスは、コンピューターシステムによって達成することができる。つまり、仮想マシンストレージサービス６０２を示す命令は論理プロセッサーによって実行することができる。仮想マシンストレージサービス６０２は、一意のネットワーク識別子に接続され、１つのパーティションから別のものへと、それ自体によって、すなわち他の管理モジュールを移動させることなく、移動させることができるので、仮想マシンストレージサービス６０２は移行可能であると考えられる。
【００３７】
[0047]例示的な実施例において、仮想マシンストレージサービス６０２はネットワーク上で一意の識別子を排他的に使用することができる、例えば、それは、データセンター内の一意のネットワークアドレスを使用して通信する唯一のプロセスであってもよい。この例において、仮想マシンストレージサービス６０２は、状態情報が異なるパーティションに送信されて仮想マシンストレージサービス６０２の別のインスタンスを構成するのに使用できるように、自身の状態をシリアル化する（serialize）ように構成することができる。別の例示的な実施例において、仮想マシンストレージサービス６０２は、仮想関数に接続される仮想マシンにおいて実行することができる。この例では、仮想マシンストレージサービス６０２はまた、一意の識別子を使用してネットワークにおいて排他的に通信することができる。仮想マシンストレージサービス６０２を移行させることは、仮想マシンストレージサービス６０２を含む仮想マシンの状態をシリアル化すること、及びそれを別のパーティションに送信することを含んでもよい。
【００３８】
[0048]具体的な例では、図７に移ると、仮想マシンストレージサービス６０２は、親パーティション２０４から子パーティション２４６へ移行させることができる。この特定の例では、論理プロセッサーはマネージャー２５０を実行することができる、すなわち、論理プロセッサーは、マネージャー２５０を示す命令を実行することができ、データセンター内で通信するために、仮想マシンストレージサービス６０２によって使用される一意の識別子を抽出することができる。その後、当該一意の識別子は子パーティション２４６に送信することができ、仮想マシンストレージサービス６０２のインスタンスを開始することができる。アダプター４０２中のルーティングテーブルを更新することができ、入出力要求は、親パーティション２０４の代わりに、子パーティション２４６へと、アダプター４０２によってルーティングすることができる。この例では、子パーティション２４６は、既に使用されている任意の他の一意の識別子に加えて一意の識別子を使用するように構成することができる。
【００３９】
[0049]図８の説明を続けると、動作８０４は、移行ストレージサービスをネットワーク内のストレージターゲットとして設定することを示す。例えば、本開示の実施例において、仮想マシンストレージ・サービス６０２は、データセンター内のストレージターゲットであるように構成することができる。上記と同様に、仮想マシンストレージサービス６０２は、ネットワーク内で一意のネットワーク識別子に接続され、ゲストＯＳ２２０によってストレージターゲットとして検出することができる。通信セッションをゲストＯＳ２２０と仮想マシンストレージサービス６０２との間に開くことができ、ゲストＯＳ２２０は、仮想マシンストレージサービス６０２によって公開される仮想ハードドライブを検出し、ローカルハードドライブであるかのように仮想ディスクを使用することができる。特定の例において、仮想マシンストレージサービス６０２は、上述のようにｉＳＣＳＩターゲットをエミュレートすることができる。この例では、仮想マシンストレージサービス６０２は、物理ディスクの代わりに仮想ディスクを公開することができ、ＬＵＮ又は物理ディスクに対して読み取り又は書き込みをすることによって仮想マシンからの入出力を処理することができる。
【００４０】
[0050]図９に移ると、図８の動作手順の代替的な実施例が示されている。動作９０６は、移行可能なストレージサービスをリモートコンピューターシステムへ移行させることを示す。例えば、図６に目を向けると、実施例において、移行可能なストレージサービス、たとえば仮想マシンストレージサービス６０２は、データセンター内のリモートコンピューターシステムに移行させることができる。例えば、１つの実施例において、リモートコンピューターシステムは、仮想マシンストレージサービス６０２を現在ホスティングしているコンピューターシステムよりも多くの入出力帯域幅を利用可能にしてもよく、ストレージサービス６０２を移動する決定をすることができる。この例では、論理プロセッサーは、マネージャー２５０を実行し、ストレージサービス６０２に割り当てられる一意の識別子を抽出し、それをリモートコンピューターに送信することができる。その後、リモートコンピューターのマネージャー２５０は、ストレージサービス６０２のインスタンスに一意の識別子を付加することができる。
【００４１】
[0051]特定の例において、図７に目を向けると、仮想マシンストレージサービス６０２は、子パーティション２４６から親パーティション７１２へと移行させることができる。この特定の例において、コンピューターシステム７００のマネージャー２５０は、仮想マシンストレージサービス６０２に付加された一意の識別子を抽出し、それをコンピューターシステム７０２に送信することができる。コンピューターシステム７０２のマネージャー２５０は、論理プロセッサー上で実行することができ、親パーティション７１２において実行される仮想マシンストレージサービス６０２のインスタンスに一意の識別子を付加することができる。この例において、仮想ストレージサービス６０２は、仮想関数７０８を使用して又は使用せずに子パーティション２４６において仮想マシンストレージサービス６０２によってサービスを提供されたクライアントからの入出力を送信／受信するときに、一意の識別子を使用することができる。
【００４２】
[0052]この特定の例において、仮想マシンストレージサービス６０２の状態情報及びプロトコルスタックは、入出力サービスを中断することができないように、コンピューターシステム７０２に送信することができる。たとえば、コンピューターシステム７００のプロトコルスタックの少なくとも機能的に等価な状態を反映するよう、コンピューターシステム７０２のマネージャー２５０がプロトコルスタックを構成することを可能にするのに十分な情報を、コンピューターシステム７０２に送信することができる。状態情報は、送信されることになっている次のパケットの数（番号）、使用されるソケット番号、最大バッファーサイズ、サーバーのポート番号、クライアントのポート番号などを含んでもよい。状態情報はまた、より高レベルのプロトコル情報などの情報を含んでもよい。他の例は、使用される暗号化プロトコルに関連する情報であってもよい。
【００４３】
[0053]この例示的な実施例においては、クライアントの観点から接続が断たれる代わりに休止されたため、クライアントに対するサービスは中断されずに動作する。例えば、仮想マシンストレージサービス６０２が移行される場合、プロトコルスタックは、例えば現在の動作を完了させるか又はキャンセルすることによって、それが実行している現在の動作を終えることができ、必要に応じて、プロトコルが短い期間の間情報を送信することを控えることを要求する仮想マシンストレージクライアント６０４にバインドされるプロトコルに対して、バックオフメッセージを送信することができる。コンピューターシステム７０２上のプロトコルスタックがインスタンス化される場合、それは、コンピューターシステム７００のプロトコルスタックと同等の状態を有することができ、以前にコンピューターシステム７００に関連付けられていた一意の識別子を用いてネットワーク上で通信することができる。コンピューターシステム７０２上で新たに設定されたプロトコルスタックは、必要に応じて再開（resume）メッセージを送信するよう構成することができ、仮想マシンストレージクライアント６０４にサービス提供するプロトコルは入出力の送信を再開することができる。スイッチ７０４は、コンピューターシステム７０２上の仮想マシンストレージサービス６０２にプロトコルメッセージが送信されるように、ルーティングを解決することができる。
【００４４】
[0054]図９の説明を続けると、動作９０８は、子パーティションについての入出力要求に関連付けられるゲスト物理アドレスをシステムの物理アドレスへ変換するように、入出力メモリー管理ユニットを構成することを示す。例えば、図７を参照すると、本発明の実施例において、コンピューターシステム７００の入出力メモリー管理ユニット４２６は、ゲスト物理アドレスをシステム物理アドレスに変換するために使用することができる。たとえば、ゲストオペレーティングシステム２２０が入出力動作、例えば読み取り又は書き込み、を開始する場合、ゲストオペレーティングシステム２２０は、システム物理アドレスに変換する必要があり得るゲスト物理アドレスを含むコマンドを生成する。例示的な実施例において、これらの変換はＭＭＵの代わりにＩ／Ｏ−ＭＭＵ４２６において生じてもよい。Ｉ／Ｏ−ＭＭＵ４２６にメモリー変換をオフロードすることによって、ハイパーバイザー２０２及び／又は親パーティション２０４の負担が低減される。たとえば、ゲストＯＳ２２０は、ディスクオフセットをゲストメモリーアドレスへ読み込む要求を含む、読み取り動作を発行することができる。この例では、入出力メモリー管理ユニット４２６は、子パーティション２４８のゲストメモリーアドレスをシステムアドレスにマッピングするテーブルを使用することができ、ゲストが読み取りを始めることを望むゲストメモリーアドレスを物理的に支持するシステムアドレスへとゲストメモリーアドレスに変換することができる。仮想マシンストレージサービス６０２は、要求を受信し、クライアントが要求する情報を取得し、以前に要求されたデータを含む応答メッセージを提供することができる。当該応答はゲストメモリーアドレスとして指定されたバッファー内に提供することができ、その場合、アダプター４０２及びＩ／Ｏ−ＭＭＵ４２６は提供されたゲストメモリーアドレスをシステム物理アドレスに変換することができ、次いで、アダプター４０２は、クライアントの要求を満たすために、応答バッファーからの応答データを要求バッファーにコピーすることができる。
【００４５】
[0055]この技術は、クライアントが仮想マシンストレージサービス６０２と同じ物理コンピューター上にある場合に周辺装置によって実行されるメモリー間直接メモリーアクセス（ＤＭＡ）動作に類似する。この例示的な実施例において、ネットワークアダプター４０２は、システム物理アドレスの１つのブロックから情報を取り出し、それを、仮想マシンストレージクライアント６０４又は仮想マシンストレージサービス６０２に代わってシステム物理アドレスの別のブロックに移動するので、入出力動作はメモリー間のＤＭＡ動作に類似したものとなり得る。特定の例は、仮想マシンストレージクライアント６０４によって発行される読み取り動作を含んでもよい。この例では、仮想マシンストレージクライアント６０４は、それが制御するメモリーページに読み込むことを望むストレージデータのページを指定する、読み取り動作を発行することができる。この例では、データのページは、要求を満たすために、仮想マシンストレージサービス６０２によって使用されるページへとコピーされ、次いで、仮想マシンストレージクライアント６０４によって指定されたメモリーページに当該データをコピーする。
【００４６】
[0056]図９の説明を続けると、動作９１０は、子パーティションから入出力ジョブ要求を受信することを示し、当該子パーティションは、ネットワークの第２の一意のネットワーク識別子を含む仮想関数に接続される。たとえば、図６に示すように、実施例において、子パーティション２４８は仮想関数４０６を含んでもよい。この例では、子パーティション２４８は仮想関数４０６を介してＳＲ−ＩＯＶアダプター４０２に排他的にインターフェースすることができ、入出力要求を送信することができる。アダプター４０２は、コマンドが仮想マシンストレージサービス６０２に関連付けられた一意の識別子にアドレス指定されていると判断して、それに対してコマンドを送信することができる。この場合、子パーティション２４８からの入出力コマンドは、ハイパーバイザー２０２又はパーティション間の通信インターフェースを介して要求を送信させることなく、仮想マシンストレージサービス６０２に送信することができる。さらに、アダプター４０２は、どのメモリーページをバッファーとして使用するか、従って、どのアドレス空間の間でデータをコピーするか、を決定する際に、クライアント６０４及び仮想マシンストレージサービス６０２の一意の識別子を使用することができる。
【００４７】
[0057]具体的な例において、入出力要求は、（ゲスト物理アドレスにおける）データの位置及びデータが書き込まれるべき仮想ハードドライブ上の位置を指定する、書き込み動作であってもよい。この例において、ストレージ仮想化クライアント６０４は、仮想マシンストレージサービス６０２の一意の識別子に宛てた情報の１つ又は複数のパケットに、当該要求を配置することができる。この例では、アダプター４０２は、要求を受信して仮想マシンストレージサービス６０２に送信することができる。アダプター４０２は、さらに、データを子パーティションのゲスト物理アドレスから仮想マシンストレージサービス６０２に割り当てられるシステム物理アドレスに移動することができる。つまり、アダプター４０２及びＩ／Ｏ−ＭＭＵ４２６は、送信バッファー及び受信バッファーの両方をゲスト物理アドレスからシステム物理アドレスへ変換するようにこうせいすることができ、アダプター４０２は、その後、システム物理アドレスの観点から内部で、データを内部の送信バッファーから受信バッファーにコピーすることができる。その後、仮想マシンストレージサービス６０２は、その仮想ハードドライブの実施と一貫した適切な位置にデータを格納することができる。当業者であれば理解することができるように、これは仮想ハードドライブファイルを使用することを含んでもよく、ＬＵＮ上にデータを格納することを含んでもよく、又は、おそらくは冗長的に、データを格納するための他の技術及び位置を含んでもよい。
【００４８】
[0058]図９の説明を続けると、動作９１２は、第１のパーティションにおいて移行可能なストレージサービスを実行すること、第２のパーティションにおいて仮想マシンを管理するように構成される管理サービスを実行することを示し、子パーティションは第３のパーティションである。例えば、１つの実施例において、仮想マシンストレージサービス６０２は子パーティション２４６などの第１のパーティションにおいて実行することができ、親パーティション２０４は管理サービスを実行することができ、仮想マシンストレージクライアント６０４はパーティション２４８において実行することができる。この例示的な実施例では、仮想マシンストレージサービス６０２は、管理プロセスとは別個のパーティションにある。この構成において、子パーティション２４６は、ＳＡＮターゲットのように動作する専用のストレージパーティションのように効果的に動作してもよい。この構成により、ハイパーバイザー２０２及び親パーティション上の負担を低減することができる。たとえば、親パーティションからストレージサービスを分離することによって、オペレーティングシステム内のロッキング（locking）を低減することができる。さらに、このようにしてコンピューターシステムを構成することにより、ハイパーバイザースケジューラー上の負担は、パーティション間で送信する必要があるメッセージの数を減らすことによって低減される。
【００４９】
[0059]図９の説明を続けると、動作９１４は、移行可能なストレージサービスを一意のネットワーク識別子を含むネットワークアダプターの仮想関数と関連付けること、及びネットワークアダプターの第２の仮想関数に子パーティションを接続することを示す。例えば、図７に目を向けると、実施例において、仮想マシンストレージサービス６０２は、仮想関数４０４などの仮想関数に関連付けることができる。仮想マシンストレージサービス６０２が子パーティション２４６において実行される例において、仮想関数４０４は、制御された方法で、すなわち、子パーティション２４６における任意のプロセスがそのパーティションの外側にあるデータにアクセスしないことを確実にする方法で、アダプター４０２にアクセスするように使用することができる。さらに、仮想マシンのスナップショット動作を、仮想マシンストレージサービス６０２を移行するために使用することができる。
【００５０】
[0060]図９の説明を続けると、動作９１６は、子パーティションから入出力ジョブ要求を受信することに応答して論理プロセッサーに通知を送信すること、及び論理プロセッサーが移行可能なストレージサービスを実行していることを決定することを示す。例えば、１つの実施例において、入出力ジョブがソフトウェア処理を必要とする場合、ハイパーバイザー２０２は割り込みを受信して実行することができる。ハイパーバイザー２０２は、仮想マシンストレージサービス６０２を実行しているか又は実行することになっている論理プロセッサーを識別することができ、割り込み又は軽量の（lightweight）通知を送信することによって、その論理プロセッサーに通知することができる。仮想マシンストレージサービス６０２が子パーティションに位置する場合、割り込みは、メッセージを処理するために管理パーティションを開始する必要なしに、論理プロセッサーに送信することができる。仮想マシンストレージサービス６０２が現在コンテキストを実行している場合、仮想マシンストレージサービス６０２への切り替えは、生じる必要はなく、代わりに軽量な通知を使用することができるように、中断することもない。
【００５１】
[0061]図９の説明を続けると、動作９１８は、入出力トラフィックがネットワークアダプターを介して独自のネットワーク識別子と少なくとも１つの他の一意のネットワーク識別子との間で運ばれるときに、入出力トラフィックがセキュリティポリシーに準拠していることを決定することを示す。例えば、実施例において、アダプター４０２はネットワークトラフィックのセキュリティポリシーを含んでもよい。この例示的な実施例において、アダプター４０２は、仮想マシンストレージサービス６０２と例えば仮想マシンに付加される別の一意の識別子との間で送信される入出力トラフィックがセキュリティポリシーに従うことを決定するように構成することができる。特定の例において、セキュリティポリシーは、すべての入出力トラフィックが暗号化されることを必要とするかもしれない。この例では、アダプター４０２は、仮想ハードドライブへの書き込みが平文であるか暗号化されているかを決定するように構成することができる。別の例では、セキュリティポリシーは、仮想ローカルエリアネットワークが完全に別々に保持され、異なる仮想ローカルエリアネットワーク内のエンドポイント間でデータトラフィックが許可されないことを要求してもよい。
【００５２】
[0062]次に図１０に移ると、動作１０００、１００２、及び１００４を含む本開示の態様を実施するための動作手順を示す。動作１０００は動作手順を開始し、動作１００２は、ネットワークアダプターの第１の一意のネットワーク識別子を、子パーティションについての仮想ハードドライブディスク入出力要求を管理するように構成されたストレージサービスへ付加することを示す。例えば、図６に目を向けると、本開示の実施例において、ＳＲ−ＩＯＶアダプター４０２は、複数のネットワーク識別子をもたらすことができ、それらのうちの１つを仮想マシンストレージサービス６０２に割り当てることができる。ファイバーチャネルの例では、ファイバーチャネルホストバスアダプターは、複数の一意の識別子が同じポートで使用できるようにするために、ＮポートＩＤ仮想化又は（ＮＰＩＶ）を使用することができる。このファイバーチャネルの例では、仮想マシンストレージサービス６０２は、ファブリック上で通信するために、割り当てられたＮＰＩＶアドレスを排他的に使用することができる。
【００５３】
[0063]図１０の説明を続けると、動作１００4は、ネットワークアダプターによってもたらされる仮想関数を子パーティションに付加することを示し、仮想関数は第２の一意のネットワーク識別子を含む。例えば、再び図６を参照すると、ＳＲ−ＩＯＶアダプター４０２は、一意のネットワーク識別子を含む仮想関数４０６をインスタンス化して、仮想マシンに付加することができる。この例示的な実施例において、アダプター４０２は、ハイパーバイザー２０２をバイパスしてアダプターを介して入出力要求をストレージサービス６０２へルーティングするスイッチ、又は別個のパーティション間通信機構として機能するように構成される。今度はこれによって、パーティションに通知しパーティションを切り替えるために論理プロセッサー上で命令を実行するのに使用される時間を減らすことができる。
【００５４】
[0064]次に図１１に移ると、追加の動作１１０６、１１０８、１１１０、１１１２、１１１４を含む図１０の動作手順の代替的な実施例を示す。動作１１０６は、第１の一意のネットワーク識別子を含むように第２の仮想関数を構成する要求を、第２のネットワークアダプターを含むリモートコンピューターシステムへ送信することを示す。例えば、１つの実施例において、論理プロセッサーは、マネージャー２５０において命令を実行することができ、仮想マシンストレージ・サービス６０２に付加された一意のネットワーク識別子を含む別のアダプターを有するリモートコンピューターシステムにおいて仮想関数を構成する要求を生成することができる。図７に目を向けると、特定の例において、コンピューターシステム７００のマネージャー２５０は、アダプター７１８を有するコンピューターシステム７０２へ、生成された要求を送信することができる。この例における要求は、仮想関数７１０をインスタンス化し、仮想マシンストレージサービス６０２のインスタンスに関連付けられた一意の識別子を含むように命じるために、コンピューターシステム７０２のマネージャー２５０によって使用することができる。
【００５５】
[0065]図１１の説明を続けると、動作１１０８は、子パーティションにストレージサービスを移行すること、及び子パーティションに割り当てられる第２の仮想関数を、第１の一意のネットワーク識別子を使用するように構成することを示す。例えば、図７に目を向けると、論理プロセッサーは、マネージャー２５０を実行し、例えば親パーティション２０４から子パーティション２４６へと仮想マシンストレージサービス６０２を移行させることができる。この例では、論理プロセッサーは、マネージャー２５０を実行し、仮想マシンストレージサービス６０２に関連付けられる一意の識別子を抽出し、それをアダプター４０２に送信することができる。アダプター４０２は、仮想関数４０４をインスタンス化し、それに一意の識別子を付加することができる。その後、マネージャー２５０は、仮想マシンストレージサービス６０２のインスタンスに一意の識別子を付加することができる。この例示的な実施例において、仮想マシンストレージサービス６０２は、管理プロセスとは別個のパーティションにあり、事実上、ｉＳＣＳＩターゲットのように動作する専用のストレージパーティションとなっている。
【００５６】
[0066]動作１１１０に移ると、入出力メモリー管理ユニットによって、子パーティションからの入出力要求に関連付けられるゲスト物理アドレスをシステム物理アドレスに変換することを示す。例えば、図７を参照すると、本開示の実施例において、コンピューターシステム７００の入出力メモリー管理ユニット４２６は、ゲスト物理アドレスをシステム物理アドレスに変換するために使用することができる。たとえば、ゲストオペレーティングシステム２２０が入出力動作、例えば読み取り又は書き込みを開始するとき、ゲストオペレーティングシステム２２０はゲスト物理アドレスを含むコマンドを生成する。この例では、入出力メモリー管理ユニット４２６は、子パーティション２４６のゲストメモリーアドレスを親パーティション２０４によって使用されるシステムアドレスにマッピングするテーブルを使用することができる。アダプター４０２及びＩ／Ｏ−ＭＭＵ４２６は、送信バッファー及び受信バッファーの両方をゲスト物理アドレスからシステム物理アドレスに変換するように構成することができ、次いで、アダプター４０２は、内部の送信バッファーから内部の受信バッファーへデータをコピーすること及びその逆を行うことができる。
【００５７】
[0067]動作１１１２に移ると、入出力トラフィックが一意のネットワーク識別子と第２の一意のネットワーク識別子との間で運ばれるときに入出力トラフィックのセキュリティポリシーへの準拠を監視するようにネットワークアダプターを構成することを示す。例えば、実施例では、アダプター４０２はネットワークトラフィックのセキュリティポリシーを含んでもよい。この例示的な実施例において、アダプター４０２は、仮想マシンストレージサービス６０２と例えば仮想マシンに付加されるものなどの別の一意の識別子との間で送信される入出力トラフィックがセキュリティポリシーに準拠していることを決定するように構成することができる。特定の例は、特定の仮想マシンがネットワークにおいて特定の一意の識別子を使用して入出力を送信することを要求するセキュリティポリシーを含んでもよい。この例におけるアダプター４０２は、仮想マシンからの情報のパケットを監視し、それらがセキュリティポリシーに準拠しているかどうかを決定することができる。
【００５８】
[0068]動作１１１４に移ると、所定のしきい値を超える量の入出力要求がリモートコンピューターシステムから受信されたという決定に応答して、ストレージサービスをインスタンス化してストレージサービスに第１の一意のネットワーク識別子を割り当てる要求を、リモートコンピューターシステムに送信することを示す。例えば、本開示の１つの実施例において、論理プロセッサーは、マネージャー２５０を示す命令を実行して、仮想マシンストレージサービス６０２のインスタンスを作成してそれを一意の識別子に付加するようコンピューターシステム７０２などのリモートコンピューターシステムに指示する要求を送信することができる。論理プロセッサーは、入ってくる入出力要求に関連付けられた一意の識別子を監視し、しきい値を超える数の要求がコンピューターシステム７０２から受信されたことを決定した後に、この要求を生成することができる。特定の例において、マネージャー２５０は、過去３０分にわたって入出力要求の６０％がコンピューターシステム７０２に現在関連付けられる一意の識別子から受信されたと決定したかもしれない。この例では、マネージャー２５０は、仮想マシンストレージサービス６０２がコンピューターシステム７０２上でローカルに実行して、それを移行させる場合に、データセンターの性能を増加することができると決定することができる。
【００５９】
[0069]ここで図１２に移ると、動作１２００及び１２０２を含む動作手順が示される。動作１２００は動作手順を開始し、動作１２０２は子パーティションにおいてストレージサービスを実行することを示し、記憶装置は第２の子パーティションについての仮想ハードドライブディスク入出力要求を管理するように構成され、記憶装置にはネットワーク内の独自のネットワーク識別子が割り当てられる。例えば、１つの実施例において、仮想マシンストレージサービス６０２は、子パーティション、例えば子パーティション２４６においてもたらすことができ、ネットワーク内の一意の識別子、例えばワールドワイドな名前を割り当てることができる。この例示的な実施例における子パーティション２４６は、ハイパーバイザー２０２及び／又は親パーティション２０４によって制御することができる。この構成において、子パーティション２４６は、事実上、ｉＳＣＳＩターゲットのように動作する専用のストレージパーティションとなり得る。
【００６０】
[0070]ここで図１３に移ると、動作１３０４、１３０６、１３０８、１３１０、及び１３１２を含む図１２の動作手順の代替的な実施例が示される。動作１３０４を見ると、所定のしきい値を超える量の入出力要求がリモートコンピューターシステムから受信されたという決定に応答して、ストレージサービスをインスタンス化してストレージサービスに第１の一意のネットワーク識別子を割り当てる要求をリモートコンピューターシステムに送信することを示す。例えば、本開示の１つの実施例において、論理プロセッサーは、マネージャー２５０を示す命令を実行し、仮想マシンストレージサービス６０２のインスタンスを作成してそれを一意の識別子に付加することをコンピューターシステム７０２などのリモートコンピューターシステムに指示する要求を送信することができる。論理プロセッサーは、入ってくる入出力要求に関連付けられた一意の識別子を監視し、しきい値を超える数の要求がコンピューターシステム７０２から受信されたと決定した後に、この要求を生成することができる。特定の例において、マネージャー２５０は、過去３０分にわたる入出力要求の６０％がコンピューターシステム７０２に現在関連付けられる一意の識別子から受信されたと決定するかもしれない。この例では、マネージャー２５０は、仮想マシンストレージサービス６０２がコンピューターシステム７０２上でローカルに実行して、それを移行させる場合に、データセンターの性能を増加することができると決定することができる。
【００６１】
[0071]図１３の説明を続けると、動作１３０６はストレージサービスをハイパーバイザーへ移行することを示す。例えば、図７に目を向けると、実施例において、仮想マシンストレージサービス６０２はハイパーバイザー２０２に移行することができる。この例示的な実施例において、コンピューターシステム７０２は図３に示すものと同様のアーキテクチャーを有してもよく、ストレージ・サービス６０２を子パーティション２４６からハイパーバイザー２０２に移動させる決定がなされてもよい。この例では、論理プロセッサーは、マネージャー２５０を実行して仮想マシンストレージサービス６０２に関連付けられる一意の識別子を抽出することができ、ハイパーバイザー２０２は、仮想マシンストレージサービス６０２のインスタンスにそれを付加するることができる。例示的な実施例において、ハイパーバイザー２０２はハードウェアを制御するので、それは、アダプター４０２の物理的な機能にアクセスするように構成することができる。ファイバーチャネルの例においては、ファイバーチャネルホストバスコントローラーは、アダプター４０２を介して入出力コマンドを送受信するべく、一意の識別子を使用するためにＮＰＩＶを使用することができる。
【００６２】
[0072]図１３の説明を続けると、動作１３０８は、ストレージサービスを親パーティションに移行することを示す。例えば、図７に目を向けると、実施例において、仮想マシンストレージサービス６０２は子パーティション２４６から親パーティション２０４又は７１２に移行することができる。この例では、論理プロセッサーは、マネージャー２５０を実行し、仮想マシンストレージサービス６０２に関連付けられる一意の識別子を抽出し、また、リモートコンピューター又はローカルコンピューターシステム上の親パーティション２０４にそれを送信することができる。その後、一意の識別子はストレージサービス６０２のインスタンスに付加することができる。
【００６３】
[0073]図１３の説明を続けると、動作１３１０は、ハイパーバイザーにストレージサービスを割り当てることを示す。この例示的な実施例において、仮想関数４０６は、子パーティション２４８に接続することができ、ネットワーク上の第２の一意のネットワーク識別子を有することができる。図に示すように、この例示的な実施例において、子パーティション２４６及び２４８の両方は同じＳＲ−ＩＯＶアダプター４０２に接続することができる。したがって、この例示的な実施例において、入出力要求は、ハイパーバイザー２０２を介する代わりにＳＲ−ＩＯＶアダプター４０２を介して、又はスイッチ７０４を介して入出力を送信する必要なしにパーティション間通信機構を介して、渡すことができる。
【００６４】
[0074]図１３の説明を続けると、動作１３１２は、子パーティションについての入出力要求に関連付けられるゲスト物理アドレスをシステム物理アドレスへ変換するように入出力メモリー管理ユニットを構成することを示す。例えば、図７を参照すると、本開示の実施例において、コンピューターシステム７００の入出力メモリー管理ユニット４２６は、ゲスト物理アドレスをシステム物理アドレスに変換するために使用することができる。たとえば、ゲストオペレーティングシステム２２０が入出力動作、例えば読み取り又は書き込み、を開始する場合、ゲストオペレーティングシステム２２０はゲスト物理アドレスを含むコマンドを生成する。この例では、入出力メモリー管理ユニット４２６は、子パーティション２４８のゲストメモリーアドレスを親パーティションによって使用されるシステムアドレスへマッピングするテーブルを使用することができる。アダプター４０２及びＩ／Ｏ−ＭＭＵ４２６は、送信バッファー及び受信バッファーの両方をゲスト物理アドレスからシステム物理アドレスに変換するように構成することができ、次いで、アダプター４０２は、内部の送信バッファーから内部の受信バッファーへデータをコピーすること及びその逆を行うことができる。
【００６５】
[0075]前述の詳細な説明においては、例及び／又は動作図によってシステム及び／又はプロセスの様々な実施例を記載してきた。そのようなブロック図及び／又は実施例が１つ又は複数の機能及び／又は動作を含む限りにおいて、当業者には、そのようなブロック図や例における各々の機能及び／又は動作を、ハードウェア、ソフトウェア、ファームウェア、又はそれらの実質的に任意の組み合わせの広い範囲によって、個別に及び／又は集合的に実施することができることが理解されよう。
【００６６】
[0076]本明細書に記載された本願の主題の特定の態様が示され、記載されたが、本明細書の教示に基づいて、本明細書に記載された主題及びそのより広い態様を逸脱することなく変更及び修正をなすことができ、したがって、添付の特許請求の範囲は、本明細書に記載された主題の真の趣旨及び範囲内にあるようにすべてそのような変更及び修正をその範囲内に包含するものであることは、当業者にとって明らかであろう。
【図１】
0006055310.tif 000002
【図２】
0006055310.tif 000003
【図３】
0006055310.tif 000004
【図４】
0006055310.tif 000005
【図５】
0006055310.tif 000006
【図６】
0006055310.tif 000007
【図７】
0006055310.tif 000008
【図８】
0006055310.tif 000009
【図９】
0006055310.tif 000010
【図１０】
0006055310.tif 000011
【図１１】
0006055310.tif 000012
【図１２】
0006055310.tif 000013
【図１３】
0006055310.tif 000014