特許第6055310号(P6055310)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ マイクロソフト テクノロジー ライセンシング,エルエルシーの特許一覧

<>
  • 特許6055310-仮想記憶ターゲットオフロード技術 図000002
  • 特許6055310-仮想記憶ターゲットオフロード技術 図000003
  • 特許6055310-仮想記憶ターゲットオフロード技術 図000004
  • 特許6055310-仮想記憶ターゲットオフロード技術 図000005
  • 特許6055310-仮想記憶ターゲットオフロード技術 図000006
  • 特許6055310-仮想記憶ターゲットオフロード技術 図000007
  • 特許6055310-仮想記憶ターゲットオフロード技術 図000008
  • 特許6055310-仮想記憶ターゲットオフロード技術 図000009
  • 特許6055310-仮想記憶ターゲットオフロード技術 図000010
  • 特許6055310-仮想記憶ターゲットオフロード技術 図000011
  • 特許6055310-仮想記憶ターゲットオフロード技術 図000012
  • 特許6055310-仮想記憶ターゲットオフロード技術 図000013
  • 特許6055310-仮想記憶ターゲットオフロード技術 図000014
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6055310
(24)【登録日】2016年12月9日
(45)【発行日】2016年12月27日
(54)【発明の名称】仮想記憶ターゲットオフロード技術
(51)【国際特許分類】
   G06F 9/46 20060101AFI20161219BHJP
   G06F 9/50 20060101ALI20161219BHJP
【FI】
   G06F9/46 350
   G06F9/46 462Z
【請求項の数】18
【全頁数】24
(21)【出願番号】特願2012-544559(P2012-544559)
(86)(22)【出願日】2010年11月23日
(65)【公表番号】特表2013-514588(P2013-514588A)
(43)【公表日】2013年4月25日
(86)【国際出願番号】US2010057871
(87)【国際公開番号】WO2011084257
(87)【国際公開日】20110714
【審査請求日】2013年10月9日
(31)【優先権主張番号】12/640,272
(32)【優先日】2009年12月17日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】314015767
【氏名又は名称】マイクロソフト テクノロジー ライセンシング,エルエルシー
(74)【代理人】
【識別番号】100140109
【弁理士】
【氏名又は名称】小野 新次郎
(74)【代理人】
【識別番号】100075270
【弁理士】
【氏名又は名称】小林 泰
(74)【代理人】
【識別番号】100101373
【弁理士】
【氏名又は名称】竹内 茂雄
(74)【代理人】
【識別番号】100118902
【弁理士】
【氏名又は名称】山本 修
(74)【代理人】
【識別番号】100153028
【弁理士】
【氏名又は名称】上田 忠
(74)【代理人】
【識別番号】100120112
【弁理士】
【氏名又は名称】中西 基晴
(74)【代理人】
【識別番号】100196508
【弁理士】
【氏名又は名称】松尾 淳一
(74)【代理人】
【識別番号】100147991
【弁理士】
【氏名又は名称】鳥居 健一
(74)【代理人】
【識別番号】100119781
【弁理士】
【氏名又は名称】中村 彰吾
(74)【代理人】
【識別番号】100162846
【弁理士】
【氏名又は名称】大牧 綾子
(74)【代理人】
【識別番号】100173565
【弁理士】
【氏名又は名称】末松 亮太
(74)【代理人】
【識別番号】100138759
【弁理士】
【氏名又は名称】大房 直樹
(72)【発明者】
【氏名】オシンズ,ジェイコブ
(72)【発明者】
【氏名】グリーン,ダスティン・エル
【審査官】 井上 宏一
(56)【参考文献】
【文献】 特開2009− 26295(JP,A)
【文献】 特開2009−123217(JP,A)
【文献】 米国特許出願公開第2009/0037941(US,A1)
【文献】 特開2009−259108(JP,A)
【文献】 国際公開第2009/025381(WO,A1)
【文献】 特開2007−102633(JP,A)
【文献】 特開2007−328611(JP,A)
【文献】 特開2007−122432(JP,A)
【文献】 特開2004− 13454(JP,A)
【文献】 特開2010− 9396(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/46 −9/54
(57)【特許請求の範囲】
【請求項1】
一つ又は複数の子パーティションを含むパーティションであって、前記子パーティションは、少なくとも一つの仮想プロセッサーとゲストオペレーティングシステムを含む仮想マシンである、パーティションと、
移行可能なストレージサービスを実現する回路であって、前記移行可能なストレージサービスは前記パーティション上で実行可能なものであり、前記移行可能なストレージサービスは前記子パーティションについての仮想ハードディスクの入出力要求を管理するように構成され、前記移行可能なストレージサービスに一意のネットワーク識別子が割り当てられる、移行可能なストレージサービスを実現する回路と、
前記仮想ハードディスクを移行させることなく、前記移行可能なストレージサービスをあるパーティションから少なくとも別のパーティションに移行させる回路と、
前記移行可能なストレージサービスをネットワーク内のストレージターゲットとして設定する回路と
を備えるシステム。
【請求項2】
前記移行可能なストレージサービスをあるパーティションから少なくとも別のパーティションに移行させる回路は、前記移行可能なストレージサービスをリモートコンピューターシステム上のパーティションに移行させる回路を備える請求項1に記載のシステム。
【請求項3】
前記子パーティションについての入出力要求に関連付けられるゲスト物理アドレスをシステム物理アドレスへ変換する入出力メモリー管理ユニットを構成する回路をさらに備える請求項1又は2に記載のシステム。
【請求項4】
前記子パーティションが第2の一意のネットワーク識別子が割り当てられた仮想ネットワークアダプターを含む請求項1〜3のいずれか一項に記載のシステム。
【請求項5】
前記移行可能なストレージサービスが前記一意のネットワーク識別子が割り当てられた仮想ネットワークアダプターを含む請求項1〜4のいずか一項に記載のシステム。
【請求項6】
前記移行可能なストレージサービスと、前記仮想マシンを管理するように構成される管理サービスを、前記子パーティション以外のパーティションによって実現する回路をさらに備える請求項1〜5のいずか一項に記載のシステム。
【請求項7】
前記仮想プロセッサーにマッピングされる一つ又は複数の論理プロセッサーと、前記子パーティションについての入出力要求を受信することに応答して、前記論理プロセッサーに前記移行可能なストレージサービスを実行するように通知する回路をさらに備える請求項1〜6のいずれか一項に記載のシステム。
【請求項8】
前記子パーティションについての入出力要求が前記一意のネットワーク識別子と少なくとも1つの他の一意のネットワーク識別子との間のものであるときに、前記子パーティションについての入出力要求がセキュリティポリシーに準拠するか否かであることを決定する回路をさらに備える請求項1〜7のいずれか一項に記載のシステム。
【請求項9】
一つ又は複数の子パーティションを含むパーティションであって、前記子パーティションは、少なくとも一つの仮想プロセッサーとゲストオペレーティングシステムを含む仮想マシンであるパーティション、を含むシステムで実行される方法であって、
移行可能なストレージサービスであって、前記移行可能なストレージサービスは前記パーティション上で実行可能なものであり、前記移行可能なストレージサービスは前記子パーティションについての仮想ハードディスクの入出力要求を管理するように構成され、前記移行可能なストレージサービスに一意のネットワーク識別子が割り当てられている、移行可能なストレージサービスを実現するステップと、
前記仮想ハードディスクを移行させることなく、前記移行可能なストレージサービスをあるパーティションから少なくとも別のパーティションに移行させるステップと
前記移行可能なストレージサービスをネットワーク内のストレージターゲットとして設定するステップと
を含む方法。
【請求項10】
前記移行可能なストレージサービスをあるパーティションから少なくとも別のパーティションに移行させるステップは、前記移行可能なストレージサービスをリモートコンピューターシステム上のパーティションに移行させるステップを備える請求項9に記載の方法。
【請求項11】
前記子パーティションについての入出力要求に関連付けられるゲスト物理アドレスをシステム物理アドレスへ変換する入出力メモリー管理ユニットを構成するステップをさらに含む請求項9又は10に記載の方法。
【請求項12】
前記子パーティションが第2の一意のネットワーク識別子が割り当てられた仮想ネットワークアダプターを含む請求項9〜11のいずれか一項に記載の方法。
【請求項13】
前記移行可能なストレージサービスが前記一意のネットワーク識別子が割り当てられた仮想ネットワークアダプターを含む請求項9〜12のいずれか一項に記載の方法。
【請求項14】
前記移行可能なストレージサービスと、前記仮想マシンを管理するように構成される管理サービスを、前記子パーティション以外のパーティションによって実現するステップをさらに含む請求項9〜13のいずか一項に記載の方法。
【請求項15】
前記システムは、前記仮想プロセッサーにマッピングされる一つ又は複数の論理プロセッサーを更に備え、
前記コンピューター方法は、前記子パーティションについての入出力要求を受信することに応答して、前記論理プロセッサーに前記移行可能なストレージサービスを実行するように通知するステップをさらに含む請求項9〜14のいずか一項に記載の方法。
【請求項16】
前記子パーティションについての入出力要求が前記一意のネットワーク識別子と少なくとも1つの他の一意のネットワーク識別子との間のものであるときに、前記子パーティションについての入出力要求がセキュリティポリシーに準拠するか否かであることを決定するステップをさらに含む請求項9〜15のいずか一項に記載の方法。
【請求項17】
請求項9〜16のいずれか一項に記載の方法を実行するためのプログラム。
【請求項18】
請求項9〜16のいずれか一項に記載の方法を実行するためのプログラムを記録した記録媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、仮想記憶ターゲットオフロード技術に関する。
【背景技術】
【0002】
[0001]仮想マシン技術は、ワークロードをパッケージ化し、データセンターにそれを移動させるために使用することができる。1つの物理ホストから別の物理ホストへワークロードを移動させるこの機能は、ハードウェアコスト及び管理コストをはるかに低くすることにつながる動的なマシンの統合を可能にするため、ユーザーにとって大きな利点である。仮想マシンは、通常、ハイパーバイザー、管理パーティション又はそれらの組み合わせ内に位置するストレージ仮想化を処理するモジュールを介してストレージにアクセスする。このモデルでは、仮想マシンは、通常、参照により全体としてその内容が本明細書に組み込まれる「パーティションバス」と題した米国特許出願第11/128,647号に記載される例示的なパーティションバスのようなパーティション間通信バスなどのソフトウェア通信経路を介してモジュールへストレージ入出力要求を送信する。
【発明の概要】
【発明が解決しようとする課題】
【0003】
仮想マシンとハイパーバイザー(又は管理パーティション)との間の通信は、通信経路の実行及びメッセージを転送するときに発生するコンテキストスイッチによって、CPUサイクルコストを被る。したがって、CPUコストを減少させることによって入出力要求を処理する効率を高めるための技術が望まれる。
【課題を解決するための手段】
【0004】
[0002]本開示の1つの実施例は方法について記載する。この例において、当該方法は、移行可能なストレージサービスをもたらすステップであって、当該移行可能なストレージサービスは子パーティションについての仮想ハードディスクの入出力要求を管理するように構成され、当該移行可能なストレージサービスはネットワークの独自のネットワーク識別子が割り当てられる、ステップと、ネットワーク内のストレージターゲットとして移行ストレージサービスを構成するステップとを含むが、これに限定されない。上記に加えて、他の態様が、特許請求の範囲、図面、及び本開示の一部を形成する記述に記載されている。
【0005】
[0003]本開示の例示的な実施例は方法について記述する。この例において、方法は、子パーティションについての仮想ハードドライブディスク入出力要求を管理するように構成されたストレージサービスに、ネットワークアダプターの第1の一意のネットワーク識別子をアタッチ(attach)するステップと、ネットワークアダプターによってもたらされる仮想関数を子パーティションにアタッチするステップであって、当該仮想関数が第2の一意のネットワーク識別子を含む、ステップとを含むが、これに限定されない。上記に加えて、他の態様は、特許請求の範囲、図面、及び本開示の一部を形成する記述に記載される。
【0006】
[0004]本開示の例示的な実施例は方法について記述する。この例において、当該方法は、子パーティションにおいてストレージサービスを実行するステップであって、当該ストレージサービスは第2の子パーティションについての仮想ハードドライブディスク入出力要求を管理するように構成され、当該記憶装置にネットワーク内で一意のネットワーク識別子が割り当てられる、ステップを含むが、これに限定されない。上記に加えて、他の態様は、特許請求の範囲、図面、及び本開示の一部を形成する記述に記載される。
【0007】
[0005]当業者であれば、本開示の1つ又は複数の様々な態様が、本開示についての本明細書にて参照される態様を達成する回路及び/又はプログラミングに限定されず、当該回路及び/又はプログラミングが、システム設計者の設計の選択肢に応じて、本明細書にて参照される態様を達成するように構成された、ハードウェア、ソフトウェア、及び/又はファームウェアの実質的に任意の組み合わせであってもよいことを認識することができる。
【0008】
[0006]上記は概要であり、したがって必然的に、単純化、一般化及び詳細についての省略を含んでいる。当業者であれば、この概要が例示的なものにすぎず、いかなるようにも限定的であるようには意図されていないことを理解するであろう。
【図面の簡単な説明】
【0009】
図1】[0007]本開示の態様を実施することができる例示的なコンピューターシステムを示す。
図2】[0008]本開示の態様を実施するための動作環境を示す。
図3】[0009]本開示の態様を実施するための動作環境を示す。
図4】[0010]SR−IOVに準拠したネットワークデバイスを含むコンピューターシステムを示す。
図5】[0011]仮想化環境でのメモリー間の関係を示す。
図6】[0012]本開示の実施例を示す。
図7】[0013]本開示の態様を説明するための動作環境を示す。
図8】[0014]本開示の態様を実施するための動作手順を示す。
図9】[0015]図8の動作手順の代替的な実施例を示す。
図10】[0016]本開示の態様を実施するための動作手順を示す。
図11】[0017]図10の動作手順の代替的な実施例を示す。
図12】[0018]本開示の態様を実施するための動作手順を示す。
図13】[0019]図12の動作手順の代替的な実施例を示す。
【発明を実施するための形態】
【0010】
[0020]実施例は1つ又は複数のコンピューターシステム上で実行することができる。図1及び以下の説明は、本開示を実施することができる適切なコンピューティング環境の簡潔な一般的な説明を提供することを目的とする。
【0011】
[0021]本開示にわたって使用される回路という用語は、ハードウェア割り込みコントローラー、ハードドライブ、ネットワークアダプター、グラフィックプロセッサー、ハードウェアベースの動画/音声コーデック、及びこのようなハードウェアを動作させるために使用されるファームウェアなどのハードウェアコンポーネントを含んでもよい。回路という用語はまた、マイクロプロセッサー、特定用途向け集積回路、及び/又は1つもしくは複数の論理プロセッサー、例えば、ファームウェア及び/又はソフトウェアによって構成されたマルチコアの一般的な処理装置の1つ又は複数のコアを含んでもよい。論理プロセッサーは、RAM、ROMなどのメモリー、ファームウェア、及び/又はマスストレージからロードされる機能を実行するように動作可能な論理を具体化する命令によって構成することができる。回路がハードウェアとソフトウェアの組み合わせを含む例示的な実施例において、開発者は、論理プロセッサーによって実行できるマシン読み取り可能なコードへとその後にコンパイルされる論理を具体化するソースコードを書いてもよい。当業者であれば、最先端の技術がハードウェアにより実施される機能とソフトウェアにより実施される機能との間にほとんど差がないところまで進化してきたことを理解することができるので、本明細書に記載される機能を達成するためのハードウェアとソフトウェアの選択は、設計上の選択にすぎない。換言すれば、当業者は、ソフトウェア処理を等価なハードウェア構造へと変換することができ、ハードウェア構造自体を等価なソフトウェア処理へと変換することができることを理解し得るので、ハードウェアによる実施とソフトウェアによる実施との選択は開発者に委ねられる。
【0012】
[0022]図1を参照すると、例示的なコンピューティングシステム100が示されている。コンピューターシステム100は、論理プロセッサー102、例えば、実行コアのハイパースレッドを含んでもよい。1つの論理プロセッサー102が示されているが、他の実施例では、コンピューターシステム100は、複数の論理プロセッサー、例えば、プロセッサー基板及び/又は各々が複数の実行コアを持つことができる複数のプロセッサー基板あたり、複数の実行コアを有してもよい。図で示すように、様々なコンピューター読み取り可能な記憶媒体110は、様々なシステムコンポーネントを論理プロセッサー102に結合する1つ又は複数のシステムバスによって相互接続することができる。システムバスは、メモリーバスもしくはメモリーコントローラー、周辺バス、及び各種のバスアーキテクチャーうちの任意のものを使用するローカルバスを含む、幾つかの種類のバス構造のうちの任意のものであってもよい。例示的な実施例において、コンピューター読み取り可能な記憶媒体110は、例えば、ランダムアクセスメモリー(RAM)104、例えば電気機械ハードドライブ、固体ハードドライブなどの記憶装置106、ファームウェア108、例えばフラッシュRAM又はROM、例えばCD−ROM、フロッピーディスク、DVD、フラッシュドライブ、外付け記憶装置などの取り外し可能な記憶装置118を含んでもよい。取り外し可能な記憶装置は、磁気カセット、フラッシュメモリーカード、デジタルビデオディスク、ベルヌーイカートリッジなどの、他の種類のコンピューター読み取り可能な記憶媒体を使用できることが当業者にとって理解されるべきである。
【0013】
[0023]コンピューター読み取り可能な記憶媒体110は、プロセッサー実行可能な命令122の不揮発性及び揮発性の記憶装置、データ構造、プログラムモジュール、及びコンピューター100のための他のデータを提供することができる。起動中にコンピューター・システム100内の要素間で情報を転送するのを助ける基本ルーチンを含む基本入出力システム(BIOS)120は、ファームウェア108に格納することができる。多くのプログラムを、ファームウェア108、記憶装置106、RAM104、及び/又は取り外し可能な記憶装置118に格納することができ、また、オペレーティングシステム及び/又はアプリケーションプログラムを含む論理プロセッサー102によって実行することができる。
【0014】
[0024]コマンド及び情報は、キーボード及びポインティングデバイスを含み得るがこれらに限定されない入力装置116を介してコンピューター100によって受信されてもよい。他の入力装置は、マイクロフォン、ジョイスティック、ゲームパッド、スキャナーなどを含んでもよい。これら及び他の入力装置は、システムバスに結合され、しばしばユニバーサルシリアルバスポート(USB)などの他のインターフェイスによって接続される、シリアルポートインターフェースを介して論理プロセッサー102に接続することができる。ディスプレイや他の種類の表示装置はまた、グラフィックプロセッサー112の一部であるか又はグラフィックスプロセッサー112に接続することができる、ビデオアダプターなどのインターフェースを介してシステムバスに接続することができる。ディスプレイに加えて、コンピューターは、通常、スピーカーやプリンターなどの他の周辺出力装置(図示せず)を含む。図1の例示的なシステムはまた、ホストアダプター、小型コンピューターシステムインターフェース(SCSI)バス、及びSCSIバスに接続された外部記憶装置を含んでもよい。
【0015】
[0025]コンピューターシステム100は、リモートコンピューターへの論理接続を使用してネットワーク環境で動作することができる。リモートコンピューターは、別のコンピューター、サーバー、ルーター、ネットワークPC、ピアデバイス又は他の共通ネットワークノードであってもよく、通常、コンピューターシステム100に関連して上述した要素のうちの多く又はすべてを含んでもよい。
【0016】
[0026]LAN又はWANネットワーキング環境で使用される場合、コンピューターシステム100は、ネットワークインターフェースカード114を介してLAN又はWANに接続することができる。内蔵であっても又は外付けであってもよいNIC114は、論理プロセッサーに接続することができる。ネットワーク環境において、コンピューターシステム100に関連して示したプログラムモジュール又はその一部は、リモートメモリー記憶装置に格納することができる。ここで説明するネットワーク接続が例示的なものであって、コンピューター間の通信リンクを確立する他の手段を使用することができることが理解されるであろう。さらに、本発明の多数の実施例は特にコンピューター化されたシステムに適していることを想定しているが、本明細書のいかなる記載も本発明をそのような実施例に限定することを意図されてはいない。
【0017】
[0027]図2及び3を参照すると、仮想マシンをもたらすように構成されたコンピューターシステム200及び300の高レベルのブロック図を示す。本開示の例示的な実施例において、コンピューターシステム200及び300は、図1に記載した要素を含んでもよく、仮想マシンを達成するように動作可能なコンポーネントを含んでもよい。図2に移ると、1つのそのようなコンポーネントは、当技術分野で仮想マシンモニターと呼ばれることもあるハイパーバイザー202である。図示された実施例のハイパーバイザー202は、コンピューターシステム100のハードウェアへのアクセスを制御して解決するように構成されてもよい。概して、ハイパーバイザー202は、パーティションと呼ばれる実行環境、例えば仮想マシン、を生成することができる。実施例において、子パーティションは、ハイパーバイザー202によってサポートされる分離の基本単位と見なすことができる。すなわち、各々の子パーティション(246及び248)は、ハイパーバイザー202及び/又は親パーティションの制御下にあるハードウェア資源の組、例えばメモリー、デバイス、論理的なプロセッサーサイクルなど、にマッピングすることができ、ハイパーバイザー202は、別のパーティションのリソースへのアクセスから1つのパーティション内の処理を分離することができ、例えば、1つのパーティション内のゲストオペレーティングシステムは、別のパーティションのメモリーから分離することができる。実施例において、ハイパーバイザー202は、スタンドアロンのソフトウェア製品、オペレーティングシステムの一部であってもよく、マザーボードのファームウェアに埋め込まれてもよく、特殊な集積回路であってもよく、又はこれらの組み合わせであってもよい。
【0018】
[0028]図示された例において、コンピューターシステム100は、オープンソースコミュニティにおけるドメイン0に類似したものとも考えることができる、親パーティション204を含む。親パーティション204は、通常はオープンソースコミュニティのバックエンドドライバーと呼ばれる仮想化サービスプロバイダー228(VSPに)を使用して、子パーティションにおいて実行されるゲストオペレーティング・システムにリソースを提供するように構成することができる。この例のアーキテクチャーにおいて、親パーティション204は、基盤となるハードウェアへのアクセスをゲート制御することができる。概して、VSP228は、仮想サービスクライアント(VSC)(通常、オープンソースコミュニティのフロントエンドドライバーと呼ばれる)によって、ハードウェア資源へのインターフェースを多重化するのに使用することができる。各々の子パーティションは、ゲストオペレーティングシステム220から222がその上で実行するスレッドを管理しスケジュールすることができる、仮想プロセッサー230から232などの1つ又は複数の仮想プロセッサーを含んでもよい。一般に、仮想プロセッサー230から232は、特定のアーキテクチャーを備えた物理プロセッサーの表現を提供する実行可能な命令及び関連する状態情報である。例えば、1つの子パーティションがIntel x86プロセッサーの特徴を有する仮想プロセッサーを有し得る一方、別の仮想プロセッサーはPowerPCプロセッサーの特徴を有してもよい。この例における仮想プロセッサーは、命令についての仮想プロセッサーの実行が論理プロセッサーによってバックアップされるように、コンピューターシステムの論理プロセッサーにマッピングすることができる。したがって、これらの例示的な実施例では、たとえば、別の論理プロセッサーがハイパーバイザーの命令を実行している間に、複数の仮想プロセッサーが同時に実行することができる。仮想プロセッサー、様々なVSC、及びパーティション内のメモリーの組み合わせを、仮想マシンと考えることができる。
【0019】
[0029]ゲストオペレーティングシステム220から222は、例えば、マイクロソフト(登録商標)、アップル(登録商標)、オープンソースコミュニティからオペレーティングシステムなどの任意のオペレーティングシステムを含んでもよい。ゲストオペレーティングシステムは、動作のユーザー/カーネルモードを使用することができ、スケジューラー、メモリーマネージャーなどを含み得るカーネルを有してもよい。各ゲストオペレーティングシステム220から222は、ターミナルサーバー、電子商取引サーバー、電子メールサーバーなど、及びゲストオペレーティングシステム自体などの、格納されたアプリケーションを有し得る関連付けられたファイルシステムを有してもよい。ゲストオペレーティングシステム220から222は仮想プロセッサー230から232上で実行するスレッドをスケジュールすることができ、そのようなアプリケーションのインスタンスを達成することができる。
【0020】
[0030]ここで図3を参照すると、図2における上記のものに対する代替的なアーキテクチャーを示す。図3図2と同様のコンポーネントを示す。しかし、この例示的な実施例において、ハイパーバイザー202は、仮想化サービスプロバイダー228及びデバイスドライバー224を含んでもよく、親パーティション204は設定ユーティリティ236を含んでもよい。このアーキテクチャーにおいて、ハイパーバイザー202は、図2のハイパーバイザー202と同一又は類似の機能を実行することができる。図3のハイパーバイザー202は、スタンドアローンのソフトウェア製品、オペレーティングシステムの一部であってもよく、マザーボードのファームウェア内に埋め込まれてもよく、また、ハイパーバイザー202の一部は、特殊な集積回路によって達成することができる。この例では、親パーティション204は、ハイパーバイザー202を設定するために使用できる命令を有してもよいが、ハードウェアへのアクセス要求は親パーティション204に渡される代わりにハイパーバイザー202によって扱われてもよい。
【0021】
[0031]本開示の実施例において、参照によりその全体が明確に本明細書に組み込まれる「単一ルート入出力仮想化仕様」リビジョン1.0に準拠したネットワークアダプターは、図面に記載されるものなどのコンピューター・システムにインストールすることができる。例示的なアダプターは、インテル(登録商標)の「ギガビットETデュアルポートサーバーアダプター」であってもよい。SR−IOV対応のネットワークデバイスは、物理的な機能に対するインターフェースを仮想化することによって、例えば仮想マシン間の入出力アダプター又は任意の他の処理を共有することができるハードウェアデバイスである。仮想関数(VF)としても知られる各々の仮想インターフェースは、おおまかに言って、コンピューターシステムのPCI−Expressバス上の別個のネットワークインターフェースカードのように見える。たとえば、各仮想関数は、エミュレートされたPCI設定スペースと、独自のネットワーク識別子、例えば、メディアアクセス制御アドレス(MACアドレス)、ワールドワイドな名前(world wide name)などを有してもよい。したがって、各仮想関数は、物理関数へアクセスするために、一意にアドレス指定され、強力に分離された別個のパスをサポートすることができる。
【0022】
[0032]図4に目を向けると、SR−IOVに準拠したアダプター402(「アダプター」)を含むコンピューターシステム400を示す。上記のものと同様に、コンピューターシステム400は、図1−3に関して上記と同様のコンポーネントを含んでもよい。アダプター402は、ネットワーク及び内部ルーター412に接続することができる、ポートに対応できる物理関数410を含んでもよい。内部ルーター412は、例えば、各々が仮想ポートを備えた仮想アダプターなど、仮想関数404又は406に割り当てられるものなどの、アダプター402のネットワーク識別子420から424へ、又はそれらから、データをルーティングするように構成することができる。
【0023】
[0033]例示的な実施例において、ネットワークアダプター402はイーサネット(登録商標)アダプターであってもよく、仮想関数は仮想イーサネットアダプターであってもよい。この例では、仮想関数の一意の識別子はイーサネットMACアドレスである。ファイバーチャネルの例では、アダプター402はファイバーチャネルホストバスアダプターであってもよく、仮想関数は、ワールドワイドノード名及びワールドワイドポート名を含むワールドワイド名を有する仮想ファイバーチャネルホストバスアダプターであってもよい。インフィニバンド(商標)の例では、仮想関数は、グローバル識別子を有する仮想インフィニバンドエンドポイントであってもよい。
【0024】
[0034]ネットワーク識別子424は、ファイバーチャネルホストバスアダプター又はイーサネットアダプターなどの特定のネットワークアダプターが複数の一意の識別子が単一の物理ポートを共有することを可能にすることを示し、破線で示される。ファイバーチャネルでは、この能力は、NポートID仮想化又はNPIVと呼ばれ、イーサネットにおいて、アダプターはプロミスキャス(promiscuous)モードと呼ばれるものにおいて動作し、埋め込まれた仮想スイッチを含み、又は、メモリーバッファーを分離するために、特定のMACアドレスに対してアドレス指定されるデータをフィルタリングしルーティングしてもよい。
【0025】
[0035]各々のネットワーク識別子は、ネットワークを介して送信できるように情報をフォーマットするように構成されたソフトウェアプロトコルスタック(414−418)に関連付けることができる。特定のTCP/IPの例において、プロセスは、アプリケーション層のポートを介してTCP/IPスタックのアプリケーション層のインスタンスに結合することができる。最終的に、プロトコルスタックの異なる機能によって処理される情報は、ファブリックを介して送信できるデータのフレームの組立を担当しているメディアアクセス制御層として知られるものに存在する、一群の関数によって処理することができる。プロトコルスタックのこの層は、ネットワーク上で送信されるフレームに、仮想関数のためのメディアアクセス制御アドレスを追加する。その後、プロトコルスタックは、フレーム内の情報を電気信号に変換してネットワークへ当該フレームを送信するように構成される物理層に、組み立てられたフレームを渡す。
【0026】
[0036]入出力メモリー管理ユニット426(I/O−MMU)は、PCI−Expressインターコネクトなどの直接メモリーアクセス動作をRAMに対して実行できる入出力相互接続を結合するために使用することができる。本開示の実施例において、I/O−MMU426は、パーティションからのゲスト物理アドレスをシステム物理アドレスに変換するハイパーバイザー202からのページテーブルを含んでもよい。I/O−MMU426は、コンピューターシステム400内の複数の位置に存在することができることを示し、破線で示される。たとえば、I/O−MMUは、マザーボード上のチップ又は論理プロセッサーのコンポーネントであってもよい。
【0027】
[0037]図5は、本開示の実施例における、ゲスト物理アドレスとシステム物理アドレスとの間の関係を示す。ゲストメモリーはハイパーバイザー202によって制御されるメモリーの表示である。ゲストメモリーはゲストオペレーティングシステムに割り当てられ、それらのメモリーマネージャーによって制御することができる。ゲスト物理アドレスは、システムの物理アドレス(SPA)、例えばハイパーバイザー202によって管理される物理的なコンピューターシステムのメモリー、によってバックアップすることができる。図面によって示すように、実施例において、GPA及びSPAは、メモリー・ブロック、例えば、メモリーの1つ又は複数のページ、へと配置することができる。GPAとSPAとの関係は、その内容が参照により全体として本明細書に組み込まれる、「強化されたシャドウページテーブルアルゴリズム」なるタイトルの、同一出願人による米国特許出願第11/128,665号に記載されるものなどのシャドウページテーブルによって維持することができる。動作において、ゲスト・オペレーティングシステムがGPAブロック1内にデータを格納するとき、データは実際にはシステム上のブロック6などの異なるSPAに格納することができる。本開示の実施例において、I/O−MMU426は、1つのGPA空間から別のGPA空間に直接的にストレージデータを移動するために、入出力動作中に変換を行うことができる。この実施例では、論理プロセッサーサイクルは、これらの変換を達成するための命令をハイパーバイザーにおいて実行する必要なくして、保存することができる。
【0028】
[0038]図6は仮想ストレージターゲットオフロード技術を記述する高レベルの動作環境を示す。図6は、SR−IOVネットワークアダプター402とその仮想関数406を介してストレージの仮想化クライアント604と通信する、仮想マシンストレージサービス602を示す。図に示すように、本開示のこの実施例において、SR−IOVネットワークアダプター402は、ソフトウェア通信経路をバイパスすることにより、仮想マシンと仮想マシンのストレージサービスとの間の入出力を伝送するために使用することができる。これは、仮想マシンの入出力を実行するために使用されるCPUサイクルの量を減らし、ストレージ・サービス602に移行する能力を高め、潜在的に、親パーティションにおいて実行されるホストオペレーティングシステムの負担及び/又はハイパーバイザー202の負担を低減する。
【0029】
[0039]仮想マシンストレージサービス602は、SANによって提供される論理ユニット番号(LUN)、例えば、子パーティションの代わりに他のストレージ仮想化技術によって既に仮想化されてもよいダーク(dirk)、などの物理的な記憶装置と通信するように構成することができる。1つの例では、これは、仮想マシンから入出力要求を受信しLUNへルーティングするように、仮想マシンストレージサービス602を構成することを含んでもよい。別の例では、LUNがサブ割り当てされる場合、仮想マシンストレージサービス602は、仮想ハードドライブを生成し、仮想マシンにそれらを公開(エクスポーズ)し、LUN又は物理ドライブ上の仮想ハードドライブ(VHD)ファイルとしてそれらを格納するように構成することができる。VHDファイルは単一のファイル内にカプセル化することができる仮想マシンハードディスクを表す。仮想マシンストレージサービス602は、ファイルを解析し、物理的なストレージであるかのようにゲストオペレーティングシステム220にさらすことができるディスクをもたらすことができる。仮想マシンストレージサービス602によって生成された仮想ハードディスクは、ローカルであるように見えるような方法でゲストオペレーティングシステムにアクセス可能であるバスに対して表すことができる。
【0030】
[0040]本開示の実施例において、仮想マシンストレージサービス602は、一意のネットワーク識別子を仮想マシンストレージサービス602に付加し、例えば、データセンター内のストレージターゲットとして仮想マシンストレージサービス602をアドバタイズするために使用されるストレージターゲットパラメーターを設定することによって、ネットワーク内のファイバーチャネルターゲット又はインターネットスモールコンピューターシステムインターフェース(iSCSI)ターゲットなどの、ストレージターゲットであるように構成することができる。iSCSIの例示的な環境において、仮想マシンストレージサービス602は、インターネットプロトコルを介して子パーティションにアクセス可能なLUNをもたらすことによって、iSCSIターゲットを実施することができる。仮想マシンストレージクライアント604又はゲストオペレーティングシステムは、仮想マシンストレージサービス602のアドレスを取得することができ、SCSIハードディスクへの接続をエミュレートする接続を設定することができる。SCSI又はハードドライブ及び仮想マシンストレージサービス602が子パーティションに仮想ハードドライブを提供するのと同じ方法で、仮想マシンストレージクライアント604は仮想マシンストレージサービス602を扱うことができる。この例では、仮想マシンストレージクライアント604は、ネットワークファイルシステム環境で行われるようにリモートディレクトリーをマウントする必要なく、仮想マシンストレージサービス602によって提供される仮想ディスク上のファイルシステムを直接的に作成及び管理することができる。ゲストOS220の観点から、それはハードドライブと同様の方法で機能する1つ又は複数の論理ユニットに結合されるネットワークに結合されたネットワークアダプターを有する。
【0031】
[0041]図7は、本開示の態様を実施するための例示的な動作環境を示す。図6と同様に、1つ又は複数のSR−IOVネットワークアダプターが、仮想マシンと仮想マシンストレージサービスとの間の入出力を転送するために使用することができ、これによって、ソフトウェア通信パスを使用して入出力を送信する必要性をなくすことができる。これにより、仮想マシンの入出力を実行するために使用されるCPUサイクルの量が低減され、ストレージサービス602に移行する能力が高められ、ホストオペレーティングシステム上の負担及び/又はハイパーバイザー202上の負担が潜在的に低減される。
【0032】
[0042]この例の環境においては、2つのコンピューターシステム700及び702を含むデータセンターがスイッチ704に接続されて図示されている(2つのコンピューターシステムが示されるが、当業者であれば、データセンターがより多くのコンピューターシステムを有し得ることを理解することができる)。コンピューターシステム700及び702は図1−4に記載されるものと同様のコンポーネントを有してもよく、スイッチ704は相互接続されたスイッチ及びルーターの全体的なインフラストラクチャーであってもよい。さらに、コンピューターシステム700及び702は、本明細書に開示される技術をより明確に説明するために、特定の機能を含むように示されており、本発明は、示されたトポロジーにおいて実施されるものには限定されない。
【0033】
[0043]コンピューターシステム700は、本明細書に記載された技術に従ってストレージサービス602に移行するように構成されるマネージャー250を含んでもよく、したがって、仮想マシンストレージサービス602は、同一の又は異なるコンピューターシステムにおいて1つのパーティションから別のパーティションに移行することができることを示すように点線で示される。仮想関数706及び708は、特定の実施例において仮想マシンストレージサービス602が仮想関数を介してアクセスする必要なしにSR−IOVアダプター402とインターフェースすることができることを示すように、点線で示される。この例示的な実施例において、親パーティション204及び712は物理ハードウェアの制御を有することができ、仮想関数は必要とされない。
【0034】
[0044]続けて図面について概括すると、仮想マシンストレージサービス602は、本開示の実施例において、割り当てられた一意の識別子を抽出し、任意の必要な状態情報と共に当該識別子を異なるパーティションに移動することによって、移行させることができる。1つの例では、このプロセスは、マネージャー250を実行する論理プロセッサーが一意の識別子を抽出すること、マネージャー250を実行する論理プロセッサーが、アダプター(402又は718)に、異なるパーティションにおける仮想関数に一意の識別子を加えるよう指示すること、及び、マネージャー250を実行する論理プロセッサーが、仮想マシンストレージサービス602のインスタンスに、それ自身を仮想関数に加えることを含んでもよい。別の例において、このプロセスは、マネージャー250を実行する論理プロセッサーが一意の識別子を抽出すること、マネージャー250を実行する論理プロセッサーが、アダプター(402又は718)に、当該アダプター(402又は718)に一意の識別子を付加するよう指示すること、及び、マネージャー250を実行する論理プロセッサーが、ファブリック上で通信するために一意の識別子を使用するよう、異なるパーティションにおいてインスタンスを作成された仮想マシンストレージサービス602のインスタンスに指示することを含んでもよい。
【0035】
[0045]以下は動作手順を示す一連のフローチャートである。理解を容易にするために、フローチャートは、最初のフローチャートが全体の「全体像」の視点を介して実施を示し、後続のフローチャートがさらなる追加及び/又は詳細を提供するように構成される。さらに、当業者であれば、破線で描かれた動作が任意のものであると考えられることを理解することができるであろう。
【0036】
[0046]図8を参照すると、本開示の態様を実施するための動作手順が示される。図に示すように、動作800が動作手順を開始し、動作802は移行ストレージサービスを達成する(effectuate)ことを示し、当該移行可能なストレージサービスは子パーティションについての仮想ハードディスク入出力要求を管理するように構成され、移行可能なストレージサービスにはネットワークについての一意のネットワーク識別子が割り当てられる。例えば、図6に移ると、仮想マシンストレージサービス602などの移行可能なストレージサービスは、コンピューターシステムによって達成することができる。つまり、仮想マシンストレージサービス602を示す命令は論理プロセッサーによって実行することができる。仮想マシンストレージサービス602は、一意のネットワーク識別子に接続され、1つのパーティションから別のものへと、それ自体によって、すなわち他の管理モジュールを移動させることなく、移動させることができるので、仮想マシンストレージサービス602は移行可能であると考えられる。
【0037】
[0047]例示的な実施例において、仮想マシンストレージサービス602はネットワーク上で一意の識別子を排他的に使用することができる、例えば、それは、データセンター内の一意のネットワークアドレスを使用して通信する唯一のプロセスであってもよい。この例において、仮想マシンストレージサービス602は、状態情報が異なるパーティションに送信されて仮想マシンストレージサービス602の別のインスタンスを構成するのに使用できるように、自身の状態をシリアル化する(serialize)ように構成することができる。別の例示的な実施例において、仮想マシンストレージサービス602は、仮想関数に接続される仮想マシンにおいて実行することができる。この例では、仮想マシンストレージサービス602はまた、一意の識別子を使用してネットワークにおいて排他的に通信することができる。仮想マシンストレージサービス602を移行させることは、仮想マシンストレージサービス602を含む仮想マシンの状態をシリアル化すること、及びそれを別のパーティションに送信することを含んでもよい。
【0038】
[0048]具体的な例では、図7に移ると、仮想マシンストレージサービス602は、親パーティション204から子パーティション246へ移行させることができる。この特定の例では、論理プロセッサーはマネージャー250を実行することができる、すなわち、論理プロセッサーは、マネージャー250を示す命令を実行することができ、データセンター内で通信するために、仮想マシンストレージサービス602によって使用される一意の識別子を抽出することができる。その後、当該一意の識別子は子パーティション246に送信することができ、仮想マシンストレージサービス602のインスタンスを開始することができる。アダプター402中のルーティングテーブルを更新することができ、入出力要求は、親パーティション204の代わりに、子パーティション246へと、アダプター402によってルーティングすることができる。この例では、子パーティション246は、既に使用されている任意の他の一意の識別子に加えて一意の識別子を使用するように構成することができる。
【0039】
[0049]図8の説明を続けると、動作804は、移行ストレージサービスをネットワーク内のストレージターゲットとして設定することを示す。例えば、本開示の実施例において、仮想マシンストレージ・サービス602は、データセンター内のストレージターゲットであるように構成することができる。上記と同様に、仮想マシンストレージサービス602は、ネットワーク内で一意のネットワーク識別子に接続され、ゲストOS220によってストレージターゲットとして検出することができる。通信セッションをゲストOS220と仮想マシンストレージサービス602との間に開くことができ、ゲストOS220は、仮想マシンストレージサービス602によって公開される仮想ハードドライブを検出し、ローカルハードドライブであるかのように仮想ディスクを使用することができる。特定の例において、仮想マシンストレージサービス602は、上述のようにiSCSIターゲットをエミュレートすることができる。この例では、仮想マシンストレージサービス602は、物理ディスクの代わりに仮想ディスクを公開することができ、LUN又は物理ディスクに対して読み取り又は書き込みをすることによって仮想マシンからの入出力を処理することができる。
【0040】
[0050]図9に移ると、図8の動作手順の代替的な実施例が示されている。動作906は、移行可能なストレージサービスをリモートコンピューターシステムへ移行させることを示す。例えば、図6に目を向けると、実施例において、移行可能なストレージサービス、たとえば仮想マシンストレージサービス602は、データセンター内のリモートコンピューターシステムに移行させることができる。例えば、1つの実施例において、リモートコンピューターシステムは、仮想マシンストレージサービス602を現在ホスティングしているコンピューターシステムよりも多くの入出力帯域幅を利用可能にしてもよく、ストレージサービス602を移動する決定をすることができる。この例では、論理プロセッサーは、マネージャー250を実行し、ストレージサービス602に割り当てられる一意の識別子を抽出し、それをリモートコンピューターに送信することができる。その後、リモートコンピューターのマネージャー250は、ストレージサービス602のインスタンスに一意の識別子を付加することができる。
【0041】
[0051]特定の例において、図7に目を向けると、仮想マシンストレージサービス602は、子パーティション246から親パーティション712へと移行させることができる。この特定の例において、コンピューターシステム700のマネージャー250は、仮想マシンストレージサービス602に付加された一意の識別子を抽出し、それをコンピューターシステム702に送信することができる。コンピューターシステム702のマネージャー250は、論理プロセッサー上で実行することができ、親パーティション712において実行される仮想マシンストレージサービス602のインスタンスに一意の識別子を付加することができる。この例において、仮想ストレージサービス602は、仮想関数708を使用して又は使用せずに子パーティション246において仮想マシンストレージサービス602によってサービスを提供されたクライアントからの入出力を送信/受信するときに、一意の識別子を使用することができる。
【0042】
[0052]この特定の例において、仮想マシンストレージサービス602の状態情報及びプロトコルスタックは、入出力サービスを中断することができないように、コンピューターシステム702に送信することができる。たとえば、コンピューターシステム700のプロトコルスタックの少なくとも機能的に等価な状態を反映するよう、コンピューターシステム702のマネージャー250がプロトコルスタックを構成することを可能にするのに十分な情報を、コンピューターシステム702に送信することができる。状態情報は、送信されることになっている次のパケットの数(番号)、使用されるソケット番号、最大バッファーサイズ、サーバーのポート番号、クライアントのポート番号などを含んでもよい。状態情報はまた、より高レベルのプロトコル情報などの情報を含んでもよい。他の例は、使用される暗号化プロトコルに関連する情報であってもよい。
【0043】
[0053]この例示的な実施例においては、クライアントの観点から接続が断たれる代わりに休止されたため、クライアントに対するサービスは中断されずに動作する。例えば、仮想マシンストレージサービス602が移行される場合、プロトコルスタックは、例えば現在の動作を完了させるか又はキャンセルすることによって、それが実行している現在の動作を終えることができ、必要に応じて、プロトコルが短い期間の間情報を送信することを控えることを要求する仮想マシンストレージクライアント604にバインドされるプロトコルに対して、バックオフメッセージを送信することができる。コンピューターシステム702上のプロトコルスタックがインスタンス化される場合、それは、コンピューターシステム700のプロトコルスタックと同等の状態を有することができ、以前にコンピューターシステム700に関連付けられていた一意の識別子を用いてネットワーク上で通信することができる。コンピューターシステム702上で新たに設定されたプロトコルスタックは、必要に応じて再開(resume)メッセージを送信するよう構成することができ、仮想マシンストレージクライアント604にサービス提供するプロトコルは入出力の送信を再開することができる。スイッチ704は、コンピューターシステム702上の仮想マシンストレージサービス602にプロトコルメッセージが送信されるように、ルーティングを解決することができる。
【0044】
[0054]図9の説明を続けると、動作908は、子パーティションについての入出力要求に関連付けられるゲスト物理アドレスをシステムの物理アドレスへ変換するように、入出力メモリー管理ユニットを構成することを示す。例えば、図7を参照すると、本発明の実施例において、コンピューターシステム700の入出力メモリー管理ユニット426は、ゲスト物理アドレスをシステム物理アドレスに変換するために使用することができる。たとえば、ゲストオペレーティングシステム220が入出力動作、例えば読み取り又は書き込み、を開始する場合、ゲストオペレーティングシステム220は、システム物理アドレスに変換する必要があり得るゲスト物理アドレスを含むコマンドを生成する。例示的な実施例において、これらの変換はMMUの代わりにI/O−MMU426において生じてもよい。I/O−MMU426にメモリー変換をオフロードすることによって、ハイパーバイザー202及び/又は親パーティション204の負担が低減される。たとえば、ゲストOS220は、ディスクオフセットをゲストメモリーアドレスへ読み込む要求を含む、読み取り動作を発行することができる。この例では、入出力メモリー管理ユニット426は、子パーティション248のゲストメモリーアドレスをシステムアドレスにマッピングするテーブルを使用することができ、ゲストが読み取りを始めることを望むゲストメモリーアドレスを物理的に支持するシステムアドレスへとゲストメモリーアドレスに変換することができる。仮想マシンストレージサービス602は、要求を受信し、クライアントが要求する情報を取得し、以前に要求されたデータを含む応答メッセージを提供することができる。当該応答はゲストメモリーアドレスとして指定されたバッファー内に提供することができ、その場合、アダプター402及びI/O−MMU426は提供されたゲストメモリーアドレスをシステム物理アドレスに変換することができ、次いで、アダプター402は、クライアントの要求を満たすために、応答バッファーからの応答データを要求バッファーにコピーすることができる。
【0045】
[0055]この技術は、クライアントが仮想マシンストレージサービス602と同じ物理コンピューター上にある場合に周辺装置によって実行されるメモリー間直接メモリーアクセス(DMA)動作に類似する。この例示的な実施例において、ネットワークアダプター402は、システム物理アドレスの1つのブロックから情報を取り出し、それを、仮想マシンストレージクライアント604又は仮想マシンストレージサービス602に代わってシステム物理アドレスの別のブロックに移動するので、入出力動作はメモリー間のDMA動作に類似したものとなり得る。特定の例は、仮想マシンストレージクライアント604によって発行される読み取り動作を含んでもよい。この例では、仮想マシンストレージクライアント604は、それが制御するメモリーページに読み込むことを望むストレージデータのページを指定する、読み取り動作を発行することができる。この例では、データのページは、要求を満たすために、仮想マシンストレージサービス602によって使用されるページへとコピーされ、次いで、仮想マシンストレージクライアント604によって指定されたメモリーページに当該データをコピーする。
【0046】
[0056]図9の説明を続けると、動作910は、子パーティションから入出力ジョブ要求を受信することを示し、当該子パーティションは、ネットワークの第2の一意のネットワーク識別子を含む仮想関数に接続される。たとえば、図6に示すように、実施例において、子パーティション248は仮想関数406を含んでもよい。この例では、子パーティション248は仮想関数406を介してSR−IOVアダプター402に排他的にインターフェースすることができ、入出力要求を送信することができる。アダプター402は、コマンドが仮想マシンストレージサービス602に関連付けられた一意の識別子にアドレス指定されていると判断して、それに対してコマンドを送信することができる。この場合、子パーティション248からの入出力コマンドは、ハイパーバイザー202又はパーティション間の通信インターフェースを介して要求を送信させることなく、仮想マシンストレージサービス602に送信することができる。さらに、アダプター402は、どのメモリーページをバッファーとして使用するか、従って、どのアドレス空間の間でデータをコピーするか、を決定する際に、クライアント604及び仮想マシンストレージサービス602の一意の識別子を使用することができる。
【0047】
[0057]具体的な例において、入出力要求は、(ゲスト物理アドレスにおける)データの位置及びデータが書き込まれるべき仮想ハードドライブ上の位置を指定する、書き込み動作であってもよい。この例において、ストレージ仮想化クライアント604は、仮想マシンストレージサービス602の一意の識別子に宛てた情報の1つ又は複数のパケットに、当該要求を配置することができる。この例では、アダプター402は、要求を受信して仮想マシンストレージサービス602に送信することができる。アダプター402は、さらに、データを子パーティションのゲスト物理アドレスから仮想マシンストレージサービス602に割り当てられるシステム物理アドレスに移動することができる。つまり、アダプター402及びI/O−MMU426は、送信バッファー及び受信バッファーの両方をゲスト物理アドレスからシステム物理アドレスへ変換するようにこうせいすることができ、アダプター402は、その後、システム物理アドレスの観点から内部で、データを内部の送信バッファーから受信バッファーにコピーすることができる。その後、仮想マシンストレージサービス602は、その仮想ハードドライブの実施と一貫した適切な位置にデータを格納することができる。当業者であれば理解することができるように、これは仮想ハードドライブファイルを使用することを含んでもよく、LUN上にデータを格納することを含んでもよく、又は、おそらくは冗長的に、データを格納するための他の技術及び位置を含んでもよい。
【0048】
[0058]図9の説明を続けると、動作912は、第1のパーティションにおいて移行可能なストレージサービスを実行すること、第2のパーティションにおいて仮想マシンを管理するように構成される管理サービスを実行することを示し、子パーティションは第3のパーティションである。例えば、1つの実施例において、仮想マシンストレージサービス602は子パーティション246などの第1のパーティションにおいて実行することができ、親パーティション204は管理サービスを実行することができ、仮想マシンストレージクライアント604はパーティション248において実行することができる。この例示的な実施例では、仮想マシンストレージサービス602は、管理プロセスとは別個のパーティションにある。この構成において、子パーティション246は、SANターゲットのように動作する専用のストレージパーティションのように効果的に動作してもよい。この構成により、ハイパーバイザー202及び親パーティション上の負担を低減することができる。たとえば、親パーティションからストレージサービスを分離することによって、オペレーティングシステム内のロッキング(locking)を低減することができる。さらに、このようにしてコンピューターシステムを構成することにより、ハイパーバイザースケジューラー上の負担は、パーティション間で送信する必要があるメッセージの数を減らすことによって低減される。
【0049】
[0059]図9の説明を続けると、動作914は、移行可能なストレージサービスを一意のネットワーク識別子を含むネットワークアダプターの仮想関数と関連付けること、及びネットワークアダプターの第2の仮想関数に子パーティションを接続することを示す。例えば、図7に目を向けると、実施例において、仮想マシンストレージサービス602は、仮想関数404などの仮想関数に関連付けることができる。仮想マシンストレージサービス602が子パーティション246において実行される例において、仮想関数404は、制御された方法で、すなわち、子パーティション246における任意のプロセスがそのパーティションの外側にあるデータにアクセスしないことを確実にする方法で、アダプター402にアクセスするように使用することができる。さらに、仮想マシンのスナップショット動作を、仮想マシンストレージサービス602を移行するために使用することができる。
【0050】
[0060]図9の説明を続けると、動作916は、子パーティションから入出力ジョブ要求を受信することに応答して論理プロセッサーに通知を送信すること、及び論理プロセッサーが移行可能なストレージサービスを実行していることを決定することを示す。例えば、1つの実施例において、入出力ジョブがソフトウェア処理を必要とする場合、ハイパーバイザー202は割り込みを受信して実行することができる。ハイパーバイザー202は、仮想マシンストレージサービス602を実行しているか又は実行することになっている論理プロセッサーを識別することができ、割り込み又は軽量の(lightweight)通知を送信することによって、その論理プロセッサーに通知することができる。仮想マシンストレージサービス602が子パーティションに位置する場合、割り込みは、メッセージを処理するために管理パーティションを開始する必要なしに、論理プロセッサーに送信することができる。仮想マシンストレージサービス602が現在コンテキストを実行している場合、仮想マシンストレージサービス602への切り替えは、生じる必要はなく、代わりに軽量な通知を使用することができるように、中断することもない。
【0051】
[0061]図9の説明を続けると、動作918は、入出力トラフィックがネットワークアダプターを介して独自のネットワーク識別子と少なくとも1つの他の一意のネットワーク識別子との間で運ばれるときに、入出力トラフィックがセキュリティポリシーに準拠していることを決定することを示す。例えば、実施例において、アダプター402はネットワークトラフィックのセキュリティポリシーを含んでもよい。この例示的な実施例において、アダプター402は、仮想マシンストレージサービス602と例えば仮想マシンに付加される別の一意の識別子との間で送信される入出力トラフィックがセキュリティポリシーに従うことを決定するように構成することができる。特定の例において、セキュリティポリシーは、すべての入出力トラフィックが暗号化されることを必要とするかもしれない。この例では、アダプター402は、仮想ハードドライブへの書き込みが平文であるか暗号化されているかを決定するように構成することができる。別の例では、セキュリティポリシーは、仮想ローカルエリアネットワークが完全に別々に保持され、異なる仮想ローカルエリアネットワーク内のエンドポイント間でデータトラフィックが許可されないことを要求してもよい。
【0052】
[0062]次に図10に移ると、動作1000、1002、及び1004を含む本開示の態様を実施するための動作手順を示す。動作1000は動作手順を開始し、動作1002は、ネットワークアダプターの第1の一意のネットワーク識別子を、子パーティションについての仮想ハードドライブディスク入出力要求を管理するように構成されたストレージサービスへ付加することを示す。例えば、図6に目を向けると、本開示の実施例において、SR−IOVアダプター402は、複数のネットワーク識別子をもたらすことができ、それらのうちの1つを仮想マシンストレージサービス602に割り当てることができる。ファイバーチャネルの例では、ファイバーチャネルホストバスアダプターは、複数の一意の識別子が同じポートで使用できるようにするために、NポートID仮想化又は(NPIV)を使用することができる。このファイバーチャネルの例では、仮想マシンストレージサービス602は、ファブリック上で通信するために、割り当てられたNPIVアドレスを排他的に使用することができる。
【0053】
[0063]図10の説明を続けると、動作1004は、ネットワークアダプターによってもたらされる仮想関数を子パーティションに付加することを示し、仮想関数は第2の一意のネットワーク識別子を含む。例えば、再び図6を参照すると、SR−IOVアダプター402は、一意のネットワーク識別子を含む仮想関数406をインスタンス化して、仮想マシンに付加することができる。この例示的な実施例において、アダプター402は、ハイパーバイザー202をバイパスしてアダプターを介して入出力要求をストレージサービス602へルーティングするスイッチ、又は別個のパーティション間通信機構として機能するように構成される。今度はこれによって、パーティションに通知しパーティションを切り替えるために論理プロセッサー上で命令を実行するのに使用される時間を減らすことができる。
【0054】
[0064]次に図11に移ると、追加の動作1106、1108、1110、1112、1114を含む図10の動作手順の代替的な実施例を示す。動作1106は、第1の一意のネットワーク識別子を含むように第2の仮想関数を構成する要求を、第2のネットワークアダプターを含むリモートコンピューターシステムへ送信することを示す。例えば、1つの実施例において、論理プロセッサーは、マネージャー250において命令を実行することができ、仮想マシンストレージ・サービス602に付加された一意のネットワーク識別子を含む別のアダプターを有するリモートコンピューターシステムにおいて仮想関数を構成する要求を生成することができる。図7に目を向けると、特定の例において、コンピューターシステム700のマネージャー250は、アダプター718を有するコンピューターシステム702へ、生成された要求を送信することができる。この例における要求は、仮想関数710をインスタンス化し、仮想マシンストレージサービス602のインスタンスに関連付けられた一意の識別子を含むように命じるために、コンピューターシステム702のマネージャー250によって使用することができる。
【0055】
[0065]図11の説明を続けると、動作1108は、子パーティションにストレージサービスを移行すること、及び子パーティションに割り当てられる第2の仮想関数を、第1の一意のネットワーク識別子を使用するように構成することを示す。例えば、図7に目を向けると、論理プロセッサーは、マネージャー250を実行し、例えば親パーティション204から子パーティション246へと仮想マシンストレージサービス602を移行させることができる。この例では、論理プロセッサーは、マネージャー250を実行し、仮想マシンストレージサービス602に関連付けられる一意の識別子を抽出し、それをアダプター402に送信することができる。アダプター402は、仮想関数404をインスタンス化し、それに一意の識別子を付加することができる。その後、マネージャー250は、仮想マシンストレージサービス602のインスタンスに一意の識別子を付加することができる。この例示的な実施例において、仮想マシンストレージサービス602は、管理プロセスとは別個のパーティションにあり、事実上、iSCSIターゲットのように動作する専用のストレージパーティションとなっている。
【0056】
[0066]動作1110に移ると、入出力メモリー管理ユニットによって、子パーティションからの入出力要求に関連付けられるゲスト物理アドレスをシステム物理アドレスに変換することを示す。例えば、図7を参照すると、本開示の実施例において、コンピューターシステム700の入出力メモリー管理ユニット426は、ゲスト物理アドレスをシステム物理アドレスに変換するために使用することができる。たとえば、ゲストオペレーティングシステム220が入出力動作、例えば読み取り又は書き込みを開始するとき、ゲストオペレーティングシステム220はゲスト物理アドレスを含むコマンドを生成する。この例では、入出力メモリー管理ユニット426は、子パーティション246のゲストメモリーアドレスを親パーティション204によって使用されるシステムアドレスにマッピングするテーブルを使用することができる。アダプター402及びI/O−MMU426は、送信バッファー及び受信バッファーの両方をゲスト物理アドレスからシステム物理アドレスに変換するように構成することができ、次いで、アダプター402は、内部の送信バッファーから内部の受信バッファーへデータをコピーすること及びその逆を行うことができる。
【0057】
[0067]動作1112に移ると、入出力トラフィックが一意のネットワーク識別子と第2の一意のネットワーク識別子との間で運ばれるときに入出力トラフィックのセキュリティポリシーへの準拠を監視するようにネットワークアダプターを構成することを示す。例えば、実施例では、アダプター402はネットワークトラフィックのセキュリティポリシーを含んでもよい。この例示的な実施例において、アダプター402は、仮想マシンストレージサービス602と例えば仮想マシンに付加されるものなどの別の一意の識別子との間で送信される入出力トラフィックがセキュリティポリシーに準拠していることを決定するように構成することができる。特定の例は、特定の仮想マシンがネットワークにおいて特定の一意の識別子を使用して入出力を送信することを要求するセキュリティポリシーを含んでもよい。この例におけるアダプター402は、仮想マシンからの情報のパケットを監視し、それらがセキュリティポリシーに準拠しているかどうかを決定することができる。
【0058】
[0068]動作1114に移ると、所定のしきい値を超える量の入出力要求がリモートコンピューターシステムから受信されたという決定に応答して、ストレージサービスをインスタンス化してストレージサービスに第1の一意のネットワーク識別子を割り当てる要求を、リモートコンピューターシステムに送信することを示す。例えば、本開示の1つの実施例において、論理プロセッサーは、マネージャー250を示す命令を実行して、仮想マシンストレージサービス602のインスタンスを作成してそれを一意の識別子に付加するようコンピューターシステム702などのリモートコンピューターシステムに指示する要求を送信することができる。論理プロセッサーは、入ってくる入出力要求に関連付けられた一意の識別子を監視し、しきい値を超える数の要求がコンピューターシステム702から受信されたことを決定した後に、この要求を生成することができる。特定の例において、マネージャー250は、過去30分にわたって入出力要求の60%がコンピューターシステム702に現在関連付けられる一意の識別子から受信されたと決定したかもしれない。この例では、マネージャー250は、仮想マシンストレージサービス602がコンピューターシステム702上でローカルに実行して、それを移行させる場合に、データセンターの性能を増加することができると決定することができる。
【0059】
[0069]ここで図12に移ると、動作1200及び1202を含む動作手順が示される。動作1200は動作手順を開始し、動作1202は子パーティションにおいてストレージサービスを実行することを示し、記憶装置は第2の子パーティションについての仮想ハードドライブディスク入出力要求を管理するように構成され、記憶装置にはネットワーク内の独自のネットワーク識別子が割り当てられる。例えば、1つの実施例において、仮想マシンストレージサービス602は、子パーティション、例えば子パーティション246においてもたらすことができ、ネットワーク内の一意の識別子、例えばワールドワイドな名前を割り当てることができる。この例示的な実施例における子パーティション246は、ハイパーバイザー202及び/又は親パーティション204によって制御することができる。この構成において、子パーティション246は、事実上、iSCSIターゲットのように動作する専用のストレージパーティションとなり得る。
【0060】
[0070]ここで図13に移ると、動作1304、1306、1308、1310、及び1312を含む図12の動作手順の代替的な実施例が示される。動作1304を見ると、所定のしきい値を超える量の入出力要求がリモートコンピューターシステムから受信されたという決定に応答して、ストレージサービスをインスタンス化してストレージサービスに第1の一意のネットワーク識別子を割り当てる要求をリモートコンピューターシステムに送信することを示す。例えば、本開示の1つの実施例において、論理プロセッサーは、マネージャー250を示す命令を実行し、仮想マシンストレージサービス602のインスタンスを作成してそれを一意の識別子に付加することをコンピューターシステム702などのリモートコンピューターシステムに指示する要求を送信することができる。論理プロセッサーは、入ってくる入出力要求に関連付けられた一意の識別子を監視し、しきい値を超える数の要求がコンピューターシステム702から受信されたと決定した後に、この要求を生成することができる。特定の例において、マネージャー250は、過去30分にわたる入出力要求の60%がコンピューターシステム702に現在関連付けられる一意の識別子から受信されたと決定するかもしれない。この例では、マネージャー250は、仮想マシンストレージサービス602がコンピューターシステム702上でローカルに実行して、それを移行させる場合に、データセンターの性能を増加することができると決定することができる。
【0061】
[0071]図13の説明を続けると、動作1306はストレージサービスをハイパーバイザーへ移行することを示す。例えば、図7に目を向けると、実施例において、仮想マシンストレージサービス602はハイパーバイザー202に移行することができる。この例示的な実施例において、コンピューターシステム702は図3に示すものと同様のアーキテクチャーを有してもよく、ストレージ・サービス602を子パーティション246からハイパーバイザー202に移動させる決定がなされてもよい。この例では、論理プロセッサーは、マネージャー250を実行して仮想マシンストレージサービス602に関連付けられる一意の識別子を抽出することができ、ハイパーバイザー202は、仮想マシンストレージサービス602のインスタンスにそれを付加するることができる。例示的な実施例において、ハイパーバイザー202はハードウェアを制御するので、それは、アダプター402の物理的な機能にアクセスするように構成することができる。ファイバーチャネルの例においては、ファイバーチャネルホストバスコントローラーは、アダプター402を介して入出力コマンドを送受信するべく、一意の識別子を使用するためにNPIVを使用することができる。
【0062】
[0072]図13の説明を続けると、動作1308は、ストレージサービスを親パーティションに移行することを示す。例えば、図7に目を向けると、実施例において、仮想マシンストレージサービス602は子パーティション246から親パーティション204又は712に移行することができる。この例では、論理プロセッサーは、マネージャー250を実行し、仮想マシンストレージサービス602に関連付けられる一意の識別子を抽出し、また、リモートコンピューター又はローカルコンピューターシステム上の親パーティション204にそれを送信することができる。その後、一意の識別子はストレージサービス602のインスタンスに付加することができる。
【0063】
[0073]図13の説明を続けると、動作1310は、ハイパーバイザーにストレージサービスを割り当てることを示す。この例示的な実施例において、仮想関数406は、子パーティション248に接続することができ、ネットワーク上の第2の一意のネットワーク識別子を有することができる。図に示すように、この例示的な実施例において、子パーティション246及び248の両方は同じSR−IOVアダプター402に接続することができる。したがって、この例示的な実施例において、入出力要求は、ハイパーバイザー202を介する代わりにSR−IOVアダプター402を介して、又はスイッチ704を介して入出力を送信する必要なしにパーティション間通信機構を介して、渡すことができる。
【0064】
[0074]図13の説明を続けると、動作1312は、子パーティションについての入出力要求に関連付けられるゲスト物理アドレスをシステム物理アドレスへ変換するように入出力メモリー管理ユニットを構成することを示す。例えば、図7を参照すると、本開示の実施例において、コンピューターシステム700の入出力メモリー管理ユニット426は、ゲスト物理アドレスをシステム物理アドレスに変換するために使用することができる。たとえば、ゲストオペレーティングシステム220が入出力動作、例えば読み取り又は書き込み、を開始する場合、ゲストオペレーティングシステム220はゲスト物理アドレスを含むコマンドを生成する。この例では、入出力メモリー管理ユニット426は、子パーティション248のゲストメモリーアドレスを親パーティションによって使用されるシステムアドレスへマッピングするテーブルを使用することができる。アダプター402及びI/O−MMU426は、送信バッファー及び受信バッファーの両方をゲスト物理アドレスからシステム物理アドレスに変換するように構成することができ、次いで、アダプター402は、内部の送信バッファーから内部の受信バッファーへデータをコピーすること及びその逆を行うことができる。
【0065】
[0075]前述の詳細な説明においては、例及び/又は動作図によってシステム及び/又はプロセスの様々な実施例を記載してきた。そのようなブロック図及び/又は実施例が1つ又は複数の機能及び/又は動作を含む限りにおいて、当業者には、そのようなブロック図や例における各々の機能及び/又は動作を、ハードウェア、ソフトウェア、ファームウェア、又はそれらの実質的に任意の組み合わせの広い範囲によって、個別に及び/又は集合的に実施することができることが理解されよう。
【0066】
[0076]本明細書に記載された本願の主題の特定の態様が示され、記載されたが、本明細書の教示に基づいて、本明細書に記載された主題及びそのより広い態様を逸脱することなく変更及び修正をなすことができ、したがって、添付の特許請求の範囲は、本明細書に記載された主題の真の趣旨及び範囲内にあるようにすべてそのような変更及び修正をその範囲内に包含するものであることは、当業者にとって明らかであろう。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13