IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ アマゾン・テクノロジーズ・インコーポレーテッドの特許一覧

特許7007425部分的にオフロードされた仮想化マネージャにおけるメモリ割当て技術
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-01-11
(45)【発行日】2022-01-24
(54)【発明の名称】部分的にオフロードされた仮想化マネージャにおけるメモリ割当て技術
(51)【国際特許分類】
   G06F 9/455 20060101AFI20220117BHJP
   G06F 9/445 20180101ALI20220117BHJP
   G06F 9/50 20060101ALI20220117BHJP
【FI】
G06F9/455 150
G06F9/445
G06F9/50 120A
【請求項の数】 15
【外国語出願】
(21)【出願番号】P 2020099238
(22)【出願日】2020-06-08
(62)【分割の表示】P 2018568313の分割
【原出願日】2017-06-29
(65)【公開番号】P2020166879
(43)【公開日】2020-10-08
【審査請求日】2020-06-29
(31)【優先権主張番号】15/199,497
(32)【優先日】2016-06-30
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】507303550
【氏名又は名称】アマゾン・テクノロジーズ・インコーポレーテッド
(74)【代理人】
【識別番号】100098394
【弁理士】
【氏名又は名称】山川 茂樹
(74)【代理人】
【識別番号】100064621
【弁理士】
【氏名又は名称】山川 政樹
(72)【発明者】
【氏名】リグオーリ,アンソニー・ニコラス
(72)【発明者】
【氏名】シェーンヘア,ヤン
(72)【発明者】
【氏名】ラスラン,カリマラー・アフメッド・モハメッド
(72)【発明者】
【氏名】ミラー,コンラート・ヤン
(72)【発明者】
【氏名】シローニ,フィリッポ
【審査官】坂庭 剛史
(56)【参考文献】
【文献】特表2013-535711(JP,A)
【文献】特表2015-529918(JP,A)
【文献】特表2007-505402(JP,A)
【文献】特開2013-041409(JP,A)
【文献】国際公開第2015/171478(WO,A1)
【文献】特表2009-537897(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/455
G06F 9/445
G06F 9/48
G06F 9/50
(57)【特許請求の範囲】
【請求項1】
仮想化ホストの1つまたは複数のオフロードカード上で動作する第1の仮想化マネージャコンポーネントにおける構成要求を、仮想化コンピューティングサービスの御プレーンから取得することであって、前記構成要求は、前記制御プレーンにおいて、クライアントからのプログラマチック要求に応答して生成される、前記取得することと、
前記第1の仮想化マネージャコンポーネントによって、前記仮想化ホストの1つまたは複数のCPU上で動作する第2の仮想化マネージャコンポーネントに対して、前記構成要求に応答して実行されるべき1つまたは複数の動作の指示を提供することと、
前記第2の仮想化マネージャコンポーネントによって、前記1つまたは複数の動作を開始することと、を含む方法。
【請求項2】
前記構成要求は、仮想マシンを起動する要求を含むことを特徴とする、請求項1に記載の方法。
【請求項3】
前記1つまたは複数の動作の前記指示を提供することは、前記第2の仮想化マネージャコンポーネントからアクセス可能なキューにタスク要求を格納させることを含むことを特徴とする、請求項1~2のいずれか一項に記載の方法。
【請求項4】
前記第1の仮想化マネージャコンポーネントによって、前記仮想化ホストのメインメモリの一部を、仮想マシンが使用するために割り当てることをさらに含む、請求項1~3のいずれか一項に記載の方法。
【請求項5】
前記第1の仮想化マネージャコンポーネントによって、前記第2の仮想化マネージャコンポーネントにより追加の動作が実行されるべきであることを指示するために、前記第2の仮想化マネージャコンポーネントに割り込みを発行することをさらに含む、請求項1~4のいずれか一項に記載の方法。
【請求項6】
前記第1の仮想化マネージャコンポーネントによって、前記仮想化ホストをセキュリティサービスに登録させることと、
前記第1の仮想化マネージャコンポーネントによって、前記セキュリティサービスから前記仮想化ホストに送信された1つまたは複数のアーチファクトを保存することと、
前記第1の仮想化マネージャコンポーネントによって、前記1つまたは複数のアーチファクトを用いて、1つまたは複数の通信をセキュリティ保護することと、をさらに含む、請求項1~5のいずれか一項に記載の方法。
【請求項7】
前記第1の仮想化マネージャコンポーネントによって、前記第2の仮想化マネージャコンポーネントを起動させることをさらに含む、請求項1~6のいずれか一項に記載の方法。
【請求項8】
仮想化ホストを含むシステムであって、前記仮想化ホストは、
1つまたは複数のCPUと、
プログラム命令の第1のセットを格納するメインメモリであって、前記プログラム命令の第1のセットは、前記1つまたは複数のCPU上または前記1つまたは複数のCPU間で実行されることで、第1の仮想化マネージャコンポーネントを実現する、メインメモリと、
1つまたは複数のプロセッサおよび他のメモリを有する1つまたは複数のオフロードカードであって、前記他のメモリはプログラム命令の第2のセットを含み、前記プログラム命令の第2のセットは、前記1つまたは複数のオフロードカードの前記1つまたは複数のプロセッサ上または前記1つまたは複数のプロセッサ間で実行されることで、第2の仮想化マネージャコンポーネントを実現する、1つまたは複数のオフロードカードと、を備え、
前記第2の仮想化マネージャコンポーネントは、
仮想化コンピューティングサービスの制御プレーンから構成要求を取得し、
前記第1の仮想化マネージャコンポーネントに対して、前記構成要求に応答して実行されるべき1つまたは複数の動作の指示を提供する、ように構成されており、
前記第1の仮想化マネージャコンポーネントは、
前記1つまたは複数の動作を開始するように構成されている、システム
【請求項9】
前記構成要求は、仮想マシンを起動する要求を含むことを特徴とする、請求項8に記載のシステム。
【請求項10】
前記1つまたは複数の動作の前記指示を提供するために、前記第2の仮想化マネージャコンポーネントは、前記第1の仮想化マネージャコンポーネントからアクセス可能なキューにタスク要求を格納させるようにさらに構成されていることを特徴とする、請求項8~9のいずれか一項に記載のシステム。
【請求項11】
前記第2の仮想化マネージャコンポーネントは、
前記仮想化ホストのメインメモリの一部を、仮想マシンが使用するために割り当てるようにさらに構成されていることを特徴とする、請求項8~10のいずれか一項に記載のシステム。
【請求項12】
前記第2の仮想化マネージャコンポーネントは、
前記第の仮想化マネージャコンポーネントにより追加の動作が実行されるべきであることを指示するために、前記第の仮想化マネージャコンポーネントに割り込みを発行するようにさらに構成されていることを特徴とする、請求項8~11のいずれか一項に記載のシステム。
【請求項13】
前記第2の仮想化マネージャコンポーネントは、
前記仮想化ホストをセキュリティサービスに登録させ、
前記セキュリティサービスから前記仮想化ホストに送信された1つまたは複数のアーチファクトを保存し、
前記1つまたは複数のアーチファクトを用いて、1つまたは複数の通信をセキュリティ保護する、ようにさらに構成されていることを特徴とする、請求項8~12のいずれか一項に記載のシステム。
【請求項14】
前記第2の仮想化マネージャコンポーネントは、
前記第1の仮想化マネージャコンポーネントを起動させるようにさらに構成されていることを特徴とする、請求項8~13のいずれか一項に記載のシステム。
【請求項15】
プログラム命令を格納した1つまたは複数の非一時的なコンピュータアクセス可能ストレージ媒体であって、前記プログラム命令は、1つまたは複数のプロセッサ上または1つまたは複数のプロセッサ間で実行されることで、
クライアントからのプログラマチック要求に応答して制御プレーンにおいて生成される構成要求を、仮想化ホストの1つまたは複数のオフロードカード上で動作する第1の仮想化マネージャコンポーネントに、仮想化コンピューティングサービスの前記制御プレーンから取得させ、
前記仮想化ホストの1つまたは複数のCPU上で動作する第2の仮想化マネージャコンポーネントに対して、前記構成要求に応答して実行されるべき1つまたは複数の動作の指示を提供することを、前記第1の仮想化マネージャコンポーネントに実行させ、
前記第2の仮想化マネージャコンポーネントに、前記1つまたは複数の動作を開始させる、1つまたは複数の非一時的なコンピュータアクセス可能ストレージ媒体。
【発明の詳細な説明】
【背景技術】
【0001】
多くの企業及び他の組織は、コンピューティングシステムが同じ場所に配置される(例えば、ローカルネットワークの一部として)、またはその代わりに、複数の異なる地理的場所に配置される(例えば、1つまたは複数のプライベートまたはパブリックの中間ネットワークを介して接続される)といった、非常に多くのコンピューティングシステムをそれらの運用をサポートするために相互接続するコンピュータネットワークを運用する。例えば、単一の組織によって、かつ単一の組織の代理として運用されるプライベートデータセンター、及び、コンピューティングリソースを顧客に提供するために事業としてエンティティによって運用されるパブリックデータセンターなどの、かなりの数の相互接続されたコンピューティングシステムを収容するデータセンターが一般的になっている。ネットワークアクセス、電源、様々な顧客が所有するハードウェアためのセキュアな設置設備を提供するパブリックデータセンター運用者もいれば、顧客による使用のために利用可能になされたハードウェアリソースをも含む「フルサービス」設備を提供するパブリックデータセンター運用者もいる。
【0002】
コモディティハードウェアの仮想化技術の出現は、多様なニーズを持つ多くの顧客に対して大規模なコンピューティングリソースを管理する点で利益をもたらし、様々なコンピューティングリソースが複数の顧客によって効率的にかつ安全に共有できるようにしてきた。例えば、仮想化技術は、単一の仮想化ホストによってホストされる1つまたは複数の「ゲスト」仮想マシンを各ユーザに提供することによって、単一の物理仮想化ホストを複数のユーザ間で共有することを可能にし得る。そのような各仮想マシンは、ユーザに所与のハードウェアコンピューティングリソースの唯一の運用者であると錯覚させる個別の論理コンピューティングシステムとして機能するソフトウェアシミュレーションを意味し得、また様々な仮想マシン間にアプリケーションの分離及びセキュリティをも提供する。同一ホスト上にいくつかの異なる仮想マシンのインスタンスを作成することはまた、データセンターでの全体的なハードウェア利用レベルの増加を助け得、投資においてより高いリターンをもたらす。
【0003】
例えば管理用仮想マシンインスタンス及び/またはハイパーバイザを含み得る各仮想化マネージャは、様々な仮想化環境において各仮想化ホストにインストールされ得る。仮想化マネージャは、タスクの中でもとりわけ、顧客に代わってホスト上のゲスト仮想マシンを開始/停止させること、ゲスト仮想マシンとホスト及びネットワークの様々なハードウェアコンポーネントとの間で仲介役として機能すること、ゲスト仮想マシンに関するメトリクスを収集すること、及びセキュリティルールを実行することに関与し得る。仮想化環境の運用者の観点からすれば、仮想化マネージャによって消費されるリソース(例えば、ホストCPUサイクル、ホストメモリなど)は、ホスト上でインスタンスを作成することができるゲスト仮想マシンの数を減らし、それによってホストハードウェア及び関連するインフラストラクチャにおける運用者の収益化レベルは下がる傾向があり得る。加えて、少なくともいくつかの場合、ゲスト仮想マシンをサポートするために仮想化マネージャによって行われる管理動作またはバックグラウンド動作は、時間依存の顧客アプリケーションと干渉する傾向があり得る。かくして、現在の仮想化環境のセキュリティかつ機能の要件を効率的に満たす仮想化マネージャを設計することは、重要な挑戦を意味し得る。
【図面の簡単な説明】
【0004】
図1】少なくとも一部の実施形態による、部分的にオフロードされた仮想化マネージャが仮想化コンピューティングサービスで用いられ得る例示的なシステム環境の図である。
図2】少なくとも一部の実施形態による、仮想化ホストの例示的なコンポーネントの図である。
図3】少なくとも一部の実施形態による、ホストにおける仮想化マネージャコンポーネントのサブセットのためのものであり得るオフロードカードの例示的なコンポーネントの図である。
図4】少なくとも一部の実施形態による、仮想化マネージャによって用いられ得るトラステッドプラットフォームモジュールの例示的なコンポーネントの図である。
図5】少なくとも一部の実施形態による、仮想化マネージャで用いられ得る例示的な多段階ブート手順の態様の図である。
図6】少なくとも一部の実施形態による、仮想化マネージャに関連する実行可能なプログラムのために用いられるストレージデバイスのセキュリティを高めるために行われ得る動作の態様を示す流れ図である。
図7】少なくとも一部の実施形態による、仮想化コンピューティングサービスのセキュリティインフラストラクチャ内に仮想化ホストを記録するために行われ得る動作の態様を示す流れ図である。
図8】少なくとも一部の実施形態による、仮想化ホストのコンポーネントに関連する異なる信頼レベルの例の図である。
図9】少なくとも一部の実施形態による、ゲスト仮想マシンを起動するのに仮想コンピューティングサービスコンポーネントの様々な層で必要とされ得る相互作用の例の図である。
図10】少なくとも一部の実施形態による、仮想化ホストにおけるゲスト仮想マシンの例示的な状態遷移の図である。
図11】少なくとも一部の実施形態による、仮想化ホストのメインメモリを、オフロードされた仮想化マネージャコンポーネントによって管理されるセクションとハイパーバイザによって管理されるセクションとに区画する例の図である。
図12】少なくとも一部の実施形態による、ホストメモリのハイパーバイザによって管理されるセクション、及びオフロードされた仮想化マネージャコンポーネントによって管理されるメモリセクションに含まれるメタデータの例示的な内容の図である。
図13】少なくとも一部の実施形態による、仮想化マネージャのコンポーネント間の例示的なメモリインベントリに関する相互作用の図である。
図14】少なくとも一部の実施形態による、仮想化マネージャのコンポーネント間の、ゲスト仮想マシンのインスタンス作成及び終了に関連する例示的なメモリに関する相互作用の図である。
図15】少なくとも一部の実施形態による、仮想化マネージャのコンポーネント間の、ハイパーバイザのライブアップデートに関連する例示的な相互作用の図である。
図16】少なくとも一部の実施形態による、部分的にオフロードされた仮想化マネージャの様々なコンポーネントによって行われ得るメモリ管理関連動作の態様を示す流れ図である。
図17】少なくとも一部の実施形態による、ハイパーバイザのライブアップデートに関連する動作の態様を示す流れ図である。
図18】少なくとも一部の実施形態による、オポチュニスティックハイパーバイザの例示的なサブコンポーネント及び通信機構の図である。
図19】少なくとも一部の実施形態による、オポチュニスティックハイパーバイザによる管理タスクの実行に関連するイベントの例示的なシーケンスの図である。
図20】少なくとも一部の実施形態による、オポチュニスティックハイパーバイザによる管理タスクの実行に関連するイベントの例示的なシーケンスの図である。
図21】少なくとも一部の実施形態による、ハイパーバイザにおける割込み駆動型タスク及びキューベースのタスクの実装に関連する動作の態様を示す流れ図である。
図22】少なくとも一部の実施形態による、ハイパーバイザにおける異なる期待持続時間のタスクの管理に関連する動作の態様を示す流れ図である。
図23】少なくとも一部の実施形態による、オポチュニスティックハイパーバイザの使用によって可能となされ得るアプリケーションの応答時間のばらつきの低減の例の図である。
図24】少なくとも一部の実施形態で使用され得る例示的なコンピューティングデバイスを示すブロック図である。
【発明を実施するための形態】
【0005】
いくつかの実施形態及び例示の図面の例として実施形態が本明細書中に記載されているが、当業者は、実施形態が、記載された実施形態または図面に限定されないことを認識するであろう。それらについての図面及び詳細な説明は、実施形態を特定の開示された形式に限定することを意図しておらず、逆に、その意図は、添付の特許請求の範囲によって定義される趣旨及び範囲内にある全ての修正物、均等物、及び代替物をカバーすることであることが理解されるべきである。本明細書中で使用される表題は、構成を目的としているにすぎず、説明または特許請求の範囲を限定するために使用されることを意味していない。この出願全体を通じて使用されるように、単語「may」は、必須の意味(すなわち、~しなければならないを意味する)ではなく、許容的な意味(すなわち、~する可能性があるを意味する)で使用される。同様に、単語「include(含む)」、「including(含む)」、及び「includes(含む)」は、含むが、それに限定しないことを意味する。特許請求の範囲で使用されるとき、用語「or(または)」は、包括のor(または)として使用され、排他のor(または)としては使用されない。例えば、句「at least one of x,y,or z(x、yまたはzのうちの少なくとも1つ)」は、x、y及びzのいずれか1つ、及びそれらの任意の組み合わせを意味する。
【0006】
仮想化ホストで部分的にオフロードされた仮想化マネージャを用いる仮想マシン管理の方法及び装置の様々な実施形態が記載される。所与の仮想化ホストは、様々な実施形態においてネットワーキング、インタラクティブデバイスなどで使用可能な様々な他のハードウェアコンポーネントに加えて、1つまたは複数のプライマリ物理CPU(中央処理装置)またはコア及びメインメモリ(例えば1つまたは複数のランダムアクセスメモリまたはRAMデバイスを備える)を備え得る。様々なクライアントの代わりにゲスト仮想マシンをサポートするために、例えば、CPU及び/またはメインメモリの一部の仮想化されたバージョンが、仮想化マネージャのコンポーネントによって作成されてゲスト仮想マシンに割り当てられ得、仮想化ネットワークデバイスが、ゲスト仮想マシンにアクセス可能となされ得る。仮想化ホストの仮想化マネージャは、様々な実施形態においてソフトウェア、ファームウェア及び/またはハードウェアのコンポーネントの様々な組み合わせを備え得、それらは集合的に、ゲスト仮想マシンが仮想化ホスト上で確立され管理されることを可能にする。
【0007】
「部分的にオフロードされた」という用語は、本明細書中で、様々な実施形態において以下の特徴を有する仮想化マネージャを記載するのに用いられ得る。つまり、仮想化ホスト上のゲスト仮想マシンをサポートするのに必要とされる仮想化管理タスクの少なくともいくつかは、仮想化ホストのプライマリCPUまたはコアを用いて実行されなくてもよいという特徴である。そうしたタスクは、「オフロードされた」タスクと呼ばれ得、ホストの物理CPU上の仮想化管理に関するオーバーヘッドを低減させる。ホストのCPUを用いる代わりに、オフロードカード(例えば、あるバージョンのペリフェラルコンポーネントインターコネクト-ExpressもしくはPCI-E規格、またはQuickPathインターコネクト(QPI)もしくはUltraPathインターコネクト(UPI)などの他のインターコネクトを実装するバスを介して、プライマリCPU(複数可)からアクセス可能なカード)上に配置された1つまたは複数のプロセッサが、様々な実施形態において、オフロードされたタスクの少なくともいくつかのために用いられ得る。他の実
施形態では、いくつかのオフロードされた仮想化管理タスクは、仮想化ホストの外部のコンピューティングデバイスにおいて、例えば、ゲスト仮想マシンが動作する仮想化ホストからネットワーク接続を介してアクセス可能な別のホストにおいて実装され得る。オフロードされたタスクの実装に関与するファームウェア及び/またはソフトウェアのコンポーネントは、一般に、本明細書中で、オフロードされた仮想化マネージャコンポーネント(OVMC)またはオフロードされた仮想化管理コンポーネントと称され得る。仮想化コントローラ及びネットワーク処理オフローダといった、様々な実施形態において用いられ得るいくつかの異なるOVMCの例が、以下に、より詳細に記載される。
【0008】
少なくとも一部の実施形態では、ゲスト仮想マシンの管理に関連する作業負荷は、より大きい部分とより小さい部分に高いレベルで分割され得、より大きい部分はオフロードされ、より小さい部分は仮想化ホスト上で動作するオポチュニスティックハイパーバイザによって実装される。以下にさらなる詳細が論じられるように、ハイパーバイザは、主にゲスト仮想マシンによる物理CPUの自発的な放棄の結果として機会がもたらされたとき(例えば、ゲスト仮想マシンが、入力/出力動作を行う、タイマー値を読み出す、またはゲスト仮想マシンが自らでは完了することはできない何らかの他の動作を行う必要があるとき)に、ホストの物理CPUをハイパーバイザが利用するという点で、オポチュニスティックであるとして記載され得る。デフォルトでは、ハイパーバイザのサブコンポーネントのプロセスの一部または全ては、休止またはアイドル状態を保っていてもよい(すなわちCPUサイクルを消費しない)。大部分の動作条件下で、サブコンポーネントの1つまたは複数は、ゲスト仮想マシンが物理CPUを放棄したときのみ休止状態からアクティブ状態に遷移し得る。ハイパーバイザが行う未処理の仮想化管理タスクを備えるキューまたは同様の論理データ構造は、一部のそうした実施形態で保持され得、タスクエントリは、オフロードされた仮想化マネージャコンポーネント(場合によっては、仮想化コンピューティングサービスの制御プレーンコンポーネントからタスクの一部に対する要求を順次受信していてもよい)の要求でキューに追加される。オポチュニスティックハイパーバイザが物理CPUを利用可能になると、キューから未処理タスクを取得し、対応する動作を行い、そして物理CPUを放棄して、ゲスト仮想マシンがその処理を再開することを可能にし得る。
【0009】
一部の実施形態では、オポチュニスティックハイパーバイザによって処理される仮想化管理タスクは、例えばタスクの期待持続時間またはそれらの相対的な複雑性に基づいて、少なくとも2つのカテゴリに分類され得る。より短いまたはより簡単なタスクは完全に実行され得、より複雑な、またはより長いタスクは、それぞれのサブタスクにその状態遷移が対応する状態マシンを用いて扱われ得る。かくして、例えば、長いタスクT1は、N個の異なるサブタスク、ST1、ST2、...STNに分割され得る。オポチュニスティックハイパーバイザに物理CPUを利用する機会が与えられ、ハイパーバイザが、T1はまだ完了していないと判定すると、一部の実施形態では、T1の次の未終了のサブタスクSTkが、T1の永続的状態マシン表現を用いて識別され得る。そしてハイパーバイザはSTkを実行し、それを行ったことを示すように永続的状態マシンを更新し、ゲスト仮想マシンに対して物理CPUを放棄し得る。一般に、オポチュニスティックハイパーバイザは、ホストの物理CPU(複数可)のその使用を最小化するように、かつ、主にゲスト仮想マシンが少なくともいくらかの期間(例えば、I/O動作を完了するのに必要な時間)物理CPUの使用を見込まないときに物理CPUを使用するように設計され得る。仮想化管理タスクのそうしたオポチュニスティックなスケジューリングの結果、少なくとも一部の実施形態では、ゲスト仮想マシンで開始される様々なタイプのトランザクションまたは動作のパフォーマンスの変動が実質的に低減され得る。例えば、所与のゲスト仮想マシンが時間依存のトランザクションを含むアプリケーションに対して用いられる場合、トランザクション応答時間のばらつきは、オポチュニスティックハイパーバイザの採用によって、最小化または少なくされ得る(例えば、他の仮想化管理技術と比較して)。アプリケー
ション動作、特に持続時間の短い時間依存の動作の応答性のばらつきは、本明細書中で、「ジッター」または「CPUジッター」と称され得る。
【0010】
少なくとも一部の実施形態では、仮想化マネージャは、プロバイダネットワークの仮想化コンピューティングサービスに実装され得る。分散されたクライアントのセットにインターネット及び/または他のネットワークを介してアクセス可能な1つまたは複数のネットワークアクセス可能なサービス(様々な種類のクラウドベースのコンピューティングまたはストレージサービスなど)を提供するために企業または公共部門機関などのエンティティによって構築されたネットワークは、本明細書中では、プロバイダネットワークと称され得る。プロバイダネットワークは、「パブリッククラウド」環境と呼ばれる場合もある。プロバイダネットワークのリソースは、場合によっては、複数のデータセンターに分散されてもよく、データセンターは多数の都市、州、国に分散されてもよい。少なくとも一実施形態では、本明細書中に記載される仮想化マネージャの種類は、プロバイダネットワークの外部のデータセンターに位置するホストに配置され得る。例えば、仮想化コンピューティングサービスの様々な管理用のまたは制御プレーンコンポーネントは、プロバイダネットワーク内で実行され得、そのような制御プレーンコンポーネントは、顧客所有のデータセンターに(またはプロバイダネットワークの外部の何らかの他の施設に)位置する仮想化ホストで動作している部分的にオフロードされた仮想化マネージャと通信し得る。
【0011】
仮想化コンピューティングサービスは、少なくとも一部の実施形態では、ゲスト仮想マシンを仮想化ホストに割り当てるマルチテナントモードをサポートし得る。マルチテナントモードでは、所与の仮想化ホストを用いて、いくつかの異なる顧客に対するそれぞれのゲスト仮想マシンのインスタンスを作成し得る。逆に、様々な実施形態でやはり、または代わりにサポートされ得る単一テナントモードでは、所与の仮想化ホストは、単一のクライアントのゲスト仮想マシン(複数可)にのみ用いられ得る。特にマルチテナントモードでは、かつ、単一テナントモードでさえ、クライアントのセキュリティ及び/または分離の要件を満たすことを確保するのは重大なことであり得る。仮想化コンピューティングサービスプロバイダの観点からすれば、仮想化マネージャコンポーネントは、それらのセキュリティ機構が外部攻撃またはバグによって破られることが成功不可能(非常に高い確率で)なように設計されるべきことが理想である。万が一破られた場合、破られたことは可能な限り速く特定されるべきであり、破られたことによる影響を低減させる改善措置がとられるべきである(仮想化マネージャを無効にするまたはシャットダウンするなどの)。
【0012】
これら及び他のセキュリティ要件を満たすことを助けるために、少なくとも一部の実施形態では、部分的にオフロードされた仮想化マネージャに対して、セキュアな多段階ブート手順が実装され得る。仮想化コントローラ(仮想化マネージャのオフロードされたコンポーネントの1つ)は、様々な実施形態において、所与の仮想化ホストでセキュアなブート手順を編成することに関与し得る。仮想化ホストのコンポーネントを製造する際に、選択されたセキュリティ鍵ペアの公開鍵が、1つまたは複数のオフロードされた仮想化マネージャコンポーネント(仮想化コントローラを含む)が動作予定のカード上に搭載された耐タンパー性デバイスに焼かれ得る。鍵ペアの秘密鍵は、例えば仮想化コンピューティングサービスに(例えば、プロバイダネットワークに実装されたHSMサービスを介して)アクセス可能なハードウェアセキュリティモジュール(HSM)機器に別途格納され得る。様々な実施形態では、ブート手順の第1の段階において、公開鍵を用いて、1つまたは複数のファームウェアプログラムの署名を認証し得る。オフロードカードのハードウェアに焼かれた鍵を用いてセキュリティが実行される第1の段階は、通常、仮想化ホストのライフタイム中に変更/更新される確率が低いファームウェア(例えば、オフロードカード上のシリアルペリフェラルインターフェース(SPI)フラッシュストレージに格納されている)を実行することを備え得る。少なくとも一部の実施形態では、第1の段階中にロ
ードされたファームウェアの少なくとも一部は、第1の段階が終了した後で用いられなくてもよい。つまり、ブートの第1の段階が完了した後、第1の段階中にロードされたプログラムは、次回のブートまで再度必要とされなくてもよい。第1の段階が失敗した場合(例えば、ファームウェアプログラムの署名を、焼かれた鍵を用いて検証することができない場合)、少なくとも一実施形態では、仮想化ホストはブート不能(またはブートが非常に難しい)と見なされ得る。
【0013】
第1の段階が成功した場合、様々な実施形態では、ブート手順の第2の段階が開始され得、第2の段階において、様々なファームウェア/ソフトウェアプログラムが、セキュリティモジュール(少なくとも一部の実装例ではやはりオフロードカード上に搭載されている)を用いて「測定され」得る。一部の実施形態では、セキュリティモジュールは、Trusted Computing Groupコンソーシアムによって策定され、International Organization for Standardization及びInternational Electrotechnical Commission(ISO/IEC)によって承認された様々なバージョンのトラステッドプラットフォームモジュール仕様のいずれかといった、標準化機構によって承認された仕様にしたがって実装され得る。そうした実施形態において、セキュリティモジュールは、トラステッドプラットフォームモジュールすなわちTPMと称され得る。他の実施形態では、必ずしも完全にTPM仕様に準拠しないがTPMと同様のセキュリティ関連の特徴をサポートする他のハードウェアコンポーネントまたはデバイスが用いられ得る。以下の記載の大半において、TPMは、ブート時に、及びホストのソフトウェア状態をチェックするなどの他の動作において、仮想化マネージャによって用いられるセキュリティモジュールの主な例として用いられ得るが、本明細書中に記載されるTPMを利用するアルゴリズムは、TPM以外のタイプのセキュリティモジュールが利用可能である実施形態で同じ成果をもって用いられ得る。TPMなどのセキュリティモジュールは、以下にさらに詳細が論じられるように、様々な暗号化、ハッシング及びランダムナンバー関連の動作で用いられ得る。TPMによってサポートされる機能の1つは、プロセッサ制御レジスタ(PCR)のセットに格納されたハッシュ値を用いてソフトウェア/ファームウェアの状態(そして状態変化)の証拠を格納することであり得る。選択されたPCRを用いて所与のソフトウェア/ファームウェアプログラムM1を測定する際、PCRの現在の内容(H1)(例えば、PCRに用いられる何らかの初期値、または何らかの他のソフトウェア/ファームウェアプログラムに対応するハッシュ値)及びプログラムM1の内容に基づく暗号強度ハッシュ値H2が生成され得る。次いで、PCRの以前の状態及び「測定され」ているプログラム次第である新しいハッシュ値H2は、「PCRのM1による拡張」と称される動作において、PCRに格納され得る。実際には、PCR拡張機構により、一連の変化またはイベントの履歴が、偽造は(ほぼ)不可能であるが同時に検証可能ではあるように(例えば、一連のハッシュ演算を、期待される、または既知のバージョンのプログラム上で実行し、PCRの内容をシーケンスの最終的な結果と比較することによって)ハードウェアに格納されることが可能となり得る。ブート手順のこの第2の「測定」段階において、様々な実施形態では、ロードされているファームウェア/ソフトウェアの正確なバージョンの証拠がこのようにしてTPMのPCRの1つまたは複数に格納され得る。ブートの第1の段階で用いられるファームウェアとは逆に、第2の段階でロードされるファームウェアの新しいバージョンは、一部の実施形態において、少なくとも時々、仮想化ホストのライフタイム中に配備され得、次いで、変更されたバージョンのハッシュベースの測定値が、セキュリティモジュールから利用可能となり得る。
【0014】
ブート手順の第2の段階が終了する少し前に、仮想化コントローラの特殊なストリップドダウンまたは最小バージョンが、様々な実施形態において、オフロードカードの1つまたは複数のプロセッサで起動され得る。特殊な最小バージョンを用いることの主要な目的には、仮想化コントローラのよりフル機能なバージョンへのライブアップデートを行うこ
とを可能にするのに十分な機能性を提供することが含まれ得る。この異なるバージョンは、オフロードカードで、暗号化されたストレージデバイス(例えば、別のフラッシュメモリコンポーネントまたはソリッドステートドライブ)から取得され得る。異なるバージョンを復号化するのに用いられる鍵はセキュリティモジュールに格納され得、セキュリティモジュールの状態(例えば1つまたは複数のPCR値)がブート手順の前の段階が成功したことを示す場合に仮想化コントローラの最小バージョンに対して利用可能になされるのみであり得る。仮想化コントローラの新しいバージョンのために用いられるストレージデバイスが最初に暗号化される(一番初めにホストが立ち上げられるとき)やり方に関する詳細を以下に提供する。その後、仮想化コントローラの異なるフル機能のバージョンは起動されて、最小バージョンを置き換え得る(すなわち、最小バージョンが動作していたプロセッサと同じオフロードデバイスプロセッサ(複数可)上で)。このインプレース置換技術は、経時的に仮想化コントローラのいくつかの新しいバージョンを配備するのに潜在的に用いられ得、例えば、「測定する」段階が終了する少し前、いずれの場合にも同一の最小バージョンが最初に起動される。
【0015】
仮想化コントローラのフル機能バージョンの準備が整った後、署名チェックは、様々な実施形態において、部分的にオフロードされた仮想化マネージャの様々な他のコンポーネント(例えばネットワーク処理オフローダ及び/またはハイパーバイザ)の初期化または起動に対するセキュリティ機構として用いられ得る。これらの追加のコンポーネントは、様々な実施形態では、やはりオフロードカード(例えば、仮想化コントローラが動作するのと同一のカードまたは異なるオフロードカードのいずれか)で動作し得るものもあり、仮想化ホストのプライマリCPUで動作し得るものもある。仮想化コントローラのフル機能バージョンは、様々な実施形態では、例えば以下に論じるようにホスト識別管理サービスとの相互作用を介して、様々なソフトウェア及び/またはファームウェアの新しいバージョンが仮想化ホストのライフタイム中に仮想化ホストで安全に取得され得るように、仮想化ホストを仮想化コンピューティングサービスのネットワークセキュリティインフラストラクチャに登録することに関与し得る。仮想化マネージャのコンポーネントの全ての起動に成功し、多段階のセキュアなブート手順が完了した後、通常の仮想化管理動作が仮想コンピューティングサービスのクライアントに代わって開始され得る-例えば、ゲスト仮想マシンが、要求に応じて、仮想化マネージャによってインスタンス作成(または終了)され得る。セキュリティ関連のエラーによってブートの動作のいずれかが失敗した場合、仮想化ホストはブート不能状態に置かれる(エラーが第1の段階中に起きた場合)か、または、失敗の証拠がTPM及び/またはネットワークセキュリティインフラストラクチャコンポーネントを用いて追跡可能となる。
【0016】
少なくとも一部の実施形態では、仮想化ホストのメインメモリの大部分に対するメモリ割当て決定は、オフロードされた仮想化マネージャコンポーネントによって処理され得、それによって、さらにオポチュニスティックハイパーバイザの作業負荷を減らし、ハイパーバイザのライブアップデートが行われることを可能にする。そうした実施形態の1つでは、メインメモリの1つのセクション(例えば、数ギガバイトのうち数百メガバイト)は、オポチュニスティックハイパーバイザのために確保され得、残りのセクションの割当ては、オフロードされたコンポーネント(仮想化コーディネータのメモリアロケータなど)によって管理され得る。ハイパーバイザが立ち上げられた後(例えば、上述した多段階ブート手順が終了する少し前)、オフロードされたコンポーネントは、メモリインベントリクエリをハイパーバイザに送信し得、ゲスト仮想マシンに利用可能なメインメモリ(オフロードされたコンポーネントによって個々のゲスト仮想マシンに割り当てられる)の量を示す応答が提供され得る。新しいゲスト仮想マシンが起動されると、ゲスト仮想マシンに(及び、ゲスト仮想マシンのデバイス状態情報などのメタデータに)用いられる物理メモリの特定の部分が、オフロードされた仮想化マネージャコンポーネントによって、利用可能なメモリから選択され得る。ハイパーバイザには、オフロードされた仮想マネージャコ
ンポーネントによって、ゲスト仮想マシンに対する割当て決定に関して通知がされ得る。ハイパーバイザは、ハイパーバイザによって管理されるセクション内でメモリ割当てのために自らのページテーブルを(例えば、4キロバイトといった相対的に小さなページサイズで)セットし得、一方、それぞれのゲスト仮想マシンに対するページテーブルの場所(ハイパーバイザと異なるページサイズを用い得る)は、オフロードされた仮想化マネージャコンポーネントによって選択され得る。ゲスト仮想マシンのページテーブルに用いられる特定のメモリ領域(複数可)は、少なくとも一部の実施形態では、オフロードされた仮想化マネージャコンポーネントによって選択され得、選択された領域(複数可)の表示が、ハイパーバイザに、データ構造で(本明細書中でページングメタデータと称され得る)提供され得る。次いで、ハイパーバイザは、データ構造に含まれる情報を用いて、ゲスト仮想マシンに対するページテーブルをセットし得る。少なくとも一部の実施形態では、メインメモリのハイパーバイザによって管理されるセクションの一部は、ハイパーバイザのライブアップデートのために確保され得る(例えば、ハイパーバイザの新しいバージョンを表す実行可能イメージを格納するために)。ハイパーバイザのメモリ管理及びライブアップデートに関するさらなる詳細を以下に提供する。
【0017】
例示的なシステム環境
図1は、少なくとも一部の実施形態による、部分的にオフロードされた仮想化マネージャが仮想化コンピューティングサービスで用いられ得る例示的なシステム環境を示す。示すように、システム100は、様々なクライアント120の代わりに複数のネットワークアクセス可能なサービスが実装され得るプロバイダネットワーク102を備える。プロバイダネットワークのサービスは、描かれた実施形態では、とりわけ、仮想化コンピューティングサービス(VCS)132、ならびに、ブロックデバイスストレージサービス160(ブロックデバイスレベルプログラマチックインターフェースを介して記憶容量を提供する)及びオブジェクトストレージサービス170(非構造化ストレージオブジェクトにアクセスするためのウェブサービスインターフェースを公開する)を含むいくつかのストレージに関するサービスを含み得る。様々な実施形態では、ハードウェアセキュリティモジュール(HSM)機器サービス150を含むいくつかのセキュリティに関するサービスもプロバイダネットワークでサポートされ得る。サービスのいくつかは、クライアントの要求を満たすために他のサービスを使用し得る-例えば、描かれた実施形態では、仮想化コンピューティングサービスのゲスト仮想マシンのために用いられる永続ストレージの少なくとも一部は、ストレージサービスの1つまたは複数を介して取得され得る、仮想化コンピューティングサービスに関連するセキュリティ鍵は、HSMサービスに格納され得るなどである。
【0018】
VCS132は、描かれた実施形態では、仮想化ホストフリート145及び制御プレーンフリート140を備え得る。ホストフリート145の仮想化ホスト134は、ゲスト仮想マシン(GVM)138のインスタンスを作成するのに用いられ得る。例えば、仮想化ホスト134Aは、GVM138A及び138Bを備え得、仮想化ホスト134Bは、GVM138Kを備える。GVMは、クライアント120によって使用されて各種アプリケーションを動作させ得、それらのいくつかは、プロバイダネットワーク102の他のサービスのリソースの使用を含み得、及び/または、プロバイダネットワーク102外のリソースの使用を含み得る。仮想化ホスト134の少なくともいくつかは、描かれた実施形態では、それぞれ部分的にオフロードされた仮想化マネージャ(PVM)136を備え得る。例えば、ホスト134AはPVM136Aを備え、ホスト134BはPVM136Bを備えるなどである。上述したように、PVMが用いられるシナリオでは、仮想化ホスト134のローカルゲスト仮想マシン138の管理を管理することへの全体の関与は、オポチュニスティックハイパーバイザ(仮想化ホストのプライマリCPUを用いる)とオフロードカード(PCI-Eカードまたはペリフェラルインターコネクトを介して接続された他のカードなど)上に搭載されたプロセッサ上で動作し得る1つまたは複数の他の仮想化管
理コンポーネントの間で分割され得る。
【0019】
PVM手法は、クライアントによって要求されるGVMにおいて代わりに配備することができる仮想化ホストのリソース(メインCPU及びメインメモリなど)を消費する仮想化管理の作業負荷を減らすように設計され得る。様々な実施形態では、ネットワークプロトコル処理(例えば、VCSで用いられているカプセル化プロトコルに対する)及びもっと言えばゲスト仮想マシンに対するメモリ割当てといった仮想化管理タスクは、以下に論じるように、オフロードされた仮想化マネージャコンポーネントで完全に、または主に行われ得る。ハイパーバイザそれ自体のCPU使用及びメモリフットプリントは、様々な実施形態で、最少化され得る-例えば、ハイパーバイザのサブコンポーネントの大部分または全ては、デフォルトで休止またはアイドルを保っていてもよく、主に物理CPUがゲスト仮想マシン138によって放棄された場合に、仮想化管理タスクを行う。GVMが(例外的な状況下を除き)ハイパーバイザによって割り込まれることなく、必要な間物理CPUサイクルを消費することが可能にされたハイパーバイザ挙動のデフォルトでの休止モードの結果、様々なアプリケーション動作のパフォーマンスのばらつきは低減され得る。セキュリティ鍵、TPM測定値などの組み合わせを含むセキュアな多段階ブート手順が、仮想化マネージャコンポーネント自体のために用いられ得る。仮想化マネージャコンポーネントが置き換えられる、またはアップグレードされる必要があるときゲスト仮想マシンのリブートを回避するという全体的な目的をもって、様々なPVMコンポーネントのチェーンローディング及び/またはライブアップデートがサポートされ得る。少なくとも一部の実施形態では、フリート145の全ての仮想化ホストが部分的にオフロードされた仮想化マネージャを利用し得るわけではないことに留意されたい。例えば、いくつかのホストは、それぞれの管理用の仮想マシン及び/または本格的な非オポチュニスティックハイパーバイザを備え得、仮想化管理処理をプライマリCPUから迂回させるのに用いることができるオフロードカードを含まなくてもよい。
【0020】
VCS制御プレーンフリート140は、描かれた実施形態では、例えばホスト識別マネージャ172、配置マネージャ174、モニタリングマネージャ176などを含むいくつかのサブコンポーネントを備え得る。ホスト識別マネージャ172は、描かれた実施形態では、ホストとプロバイダネットワーク102の様々な他のコンポーネントの間の通信のセキュリティが強化されるように、VCS132の公開鍵インフラストラクチャ内に仮想化ホスト134を登録し得る。配置マネージャ174は、どの仮想化ホスト(複数可)が1つまたは複数のGVM138に対する所与のクライアントの要求を満たすのに用いられるかを正確に判定することに関与し得る。場合によっては、仮想化ホストは、いくつかの異なるクライアントのGVMが単一の仮想化ホストでインスタンス作成されるマルチテナントモードで用いられ得、場合によっては、ホストの少なくともいくつかは、単一のクライアント(単一テナントモード)のGVM専用であってもよい。モニタリングマネージャ176は、ハイパーバイザのサブコンポーネントによって及び/またはオフロードされた仮想化マネージャコンポーネントによって初期に取得され得るメトリクスを含む、個々のGVM138及び/またはホスト134に関連する様々なメトリクス(例えば、パフォーマンス測定値、健康状態インジケータなど)を収集し得る。
【0021】
VCS132は、描かれた実施形態では、クライアント132が、取得、解放、ゲスト仮想マシン138との相互作用の要求を送信することを可能にするクライアントフェーシングプログラマチックインターフェース160(例えば、アプリケーションプログラミングインターフェースすなわちAPI、ウェブベースのコンソール、コマンドラインツール、グラフィカルユーザインターフェースなど)のセットを実装し得る。例えば、「launchGVMs」要求またはコマンドの同等物は、指定された特徴を有する1つまたは複数のGVM138のインスタンスを作成するのに用いられ得、「terminateGVMs」コマンドまたは要求の同等物は、クライアントのGVMの1つまたは複数を無効に
するのに用いられ得る。一般に、VCS132の制御プレーンコンポーネントで受信されるクライアント要求は、内部形式に変換され、実装のための適切な仮想化ホストにおいてPVMに送信され得る。PVM自体内で、一部の実施形態では、オフロードされたコンポーネントがまず内部コマンド/要求を受信し得、必要な場合は実装のためにオポチュニスティックハイパーバイザにコマンド/要求の何らかのバージョンを渡す(例えば、GVMによるホストリソースの使用に割り込まないように非同期のキューベースのプロトコルを用いて)。VCS132で用いられ得る様々な低オーバーヘッドのセキュアな仮想化管理技術の様々な態様の詳細を以下に提供する。
【0022】
例示的な仮想化ホストコンポーネント
図2は、少なくとも一部の実施形態による、仮想化ホストの例示的なコンポーネントを示す。示すように、仮想化ホスト202は、プライマリ物理プロセッサセット204、メインメモリ(例えば、ランダムアクセスメモリすなわちRAMの1つまたは複数のモジュール)208、部分的にオフロードされた仮想化マネージャ(PVM)270及びGVM250A~250Cなどのゼロ以上のゲスト仮想マシンGVM250を備え得る。(仮想化ホスト202はまた、混乱を避けるために図2に示さないが、例えば様々な永続ストレージデバイスといったいくつかの他のコンポーネントも備え得る。)プライマリ物理プロセッサセット204は、描かれた実施形態では、pCPU205A~205Cを含むいくつかの物理CPU(pCPU)を備え得る。vCPUまたは仮想CPUと呼ばれるpCPUの仮想化バージョンは、GVMのライフタイム中に、PVM270によって個々のGVMに割り当てられ得る。各GVM250は、動作システムのそれぞれのインスタンス(例えば、オペレーティングシステム252A~252C)、及び、仮想化コンピューティングサービスのクライアントに代わって動作しているアプリケーションのセット(例えば254A~254C)を備え得る。
【0023】
PVM270は、描かれた実施形態では、オポチュニスティックストリップドダウンハイパーバイザ220(pCPUを用いる)、及びpCPUを用いない1つまたは複数のオフロードされた仮想化マネージャコンポーネント(OVMC)272を備え得る。OVMC272は、例えば、仮想化コントローラ215及びネットワーク処理オフローダ216を含み得る。OVMCのそれぞれは、一部の実施形態では、それぞれのシステムオンチップ設計を用いて実装され得る。描かれた実施形態では両方のOVMC272は単一のオフロードカード210(例えばPCI-Eカード)内に組み込まれるとして示されるが、異なる実施形態では、OVMCの配置及び機構に関する他の手法が用いられ得る。例えば、一実施形態において、単一のシステムオンチップ実装を用いて、仮想化コントローラ及びネットワーク処理オフローダの機能を実行し得、それによって、2つの異なるOVMCの必要性がなくなる。別の実施形態では、仮想化コントローラ215及びネットワーク処理オフローダ216に対してそれぞれのオフロードカードが用いられ得る。仮想化コントローラは、その名前によって示唆されるように、描かれた実施形態では、ホスト202で行われる仮想化管理作業の多くを調整または編成することに関与し得る-例えば、仮想化コントローラは、以下に論じるようにPVMのコンポーネントの中で最初に、ブートし、PVMの他のコンポーネントの起動をトリガし、VCS制御プレーンと通信し、ゲスト仮想マシンに対するメモリ割当て決定を行うなどし得る。ネットワーク処理オフローダ216は、描かれた実施形態では、1つまたは複数のネットワーキングプロトコル(例えば、VCS内で用いられるカプセル化プロトコルを含む)を実装すること、及び、GVMと仮想化ホストの外部のネットワーキングエンドポイントの間の仲介役として機能することに関与し得る。
【0024】
ハイパーバイザ220は、描かれた実施形態では、少なくともいくつかの従来のハイパーバイザによって行われる作業の多くが代わりにOVMC272によって処理され得、それによってハイパーバイザ220の複雑性及びサイズが低減するので、ストリップドダウ
ンとして記載され得る。加えて、ハイパーバイザ220は、ほとんどの状況下で、ハイパーバイザがCPUサイクルを用いる前、GVMがpCPU205の制御を自発的に放棄するまで待機し得るので、オポチュニスティックとして表され得る。かくして、例えば、特定のGVM138がI/O要求(I/Oは完了に約T1の時間がかかることが見込まれる)を発行し、I/O要求に対する応答が受信されるまでpCPUを明け渡すと、ハイパーバイザはこの機会を利用して、GVMがpCPUの使用を見込まない間、pCPUを用いて1つまたは複数の仮想化管理タスク(通常時間T2がかかり得る、T2<<T1)を行い得る。このようにして、ハイパーバイザ220は、描かれた実施形態では、アプリケーション254のパフォーマンスに与える影響は最小限であり得る。
【0025】
ハイパーバイザ220は、描かれた実施形態では、それ自体に、オペレーティングシステムカーネルレベルコンポーネントのセット222、ハイパーバイザコーディネータ225、1つまたは複数のGVMマネージャ228、分離/セキュリティコンポーネント229及び/またはメッセージングマネージャ231を含むいくつかのサブコンポーネントを備え得る。ハイパーバイザコーディネータ225、GVMマネージャ228のそれぞれ、分離/セキュリティコンポーネント229及び/またはメッセージングマネージャ231は、少なくとも一部の実施形態では、それぞれのユーザモードプロセスとして実装され得る。様々な実施形態では、これらのコンポーネントの少なくともいくつかは、簡易な特化されたプロトコルを用いてパイプを介して互いに通信するそれぞれの静的にリンクされたプログラムのインスタンスとして実装され得る。ハイパーバイザのサブコンポーネントは、記述された実施形態では、デフォルトで受動的な、または休止のままでもよく、イベント(他のサブコンポーネントからのメッセージ、GVMによって開始されたコンテキストの切替えなどといった)に応じてのみ反応しアクティブ化する。一部の実装例では、例えば、ハイパーバイザのサブコンポーネントのいくつかは、通常、大部分の時間、ポーリングシステムコール(epoll()または同等物などの)でブロックされたままであってもよい。
【0026】
カーネルレベルコンポーネント222は、GVMによって発行されたVM exit命令(例えば、GVMがpCPUを明け渡すとき)への初期応答などの様々な低レベルの演算に対するサポートを提供し得る。ハイパーバイザコーディネータ225は、その名前から示されるように、他のサブコンポーネントの動作を編成することに関与し得る。ハイパーバイザコーディネータ225は、例えば、OVMC272とハイパーバイザの間の通信に対して用いることができるAPIを実装し得、GVMの起動及び終了を開始する(例えば、OVMCの要求により)、GVMマネージャによって収集されたメトリクスを公開する、デバッグ機能を提供するなどを行う。
【0027】
各GVMマネージャ228は、コーディネータ225によって提供される仕様に基づいて各GVMを起動またはインスタンス作成すること、GVMのメトリクス及びログをモニタリングすることなどに関与し得る。一部の実施形態では、GVMマネージャ228はまた、例えばGVMのI/O要求をトラップし、それらをOVMCの助けを得て完了するメモリマップドI/O動作に変換することによって、特定のデバイスに対するGVMによって要求されたI/O動作を支援し得る。少なくとも一部の実施形態では、セキュリティに関する最小権限の原則にしたがって、GVMマネージャ238は、GVMのインスタンス作成中に、可能な限り早く、自身の権限の多くを下げ得る。例えば、1つまたは複数のvPCU(仮想CPU)スレッドがGVMに対して生成され、GVMのメモリがマッピングされた後、GVMマネージャは、その権限のいくつかを無効にして、セキュリティが破られる機会を減少させ得る。一実施形態では、GVMマネージャ228は、GVMメモリのランダムサンプルが期待通りゼロに設定されているかどうかをチェックし得(一度にGVMメモリ全体をチェックする代わりに)、それによって、GVMを立ち上げる速度を増加させる。一部の実施形態では、GVMマネージャとGVMの間に1対1のマッピングがあ
ってもよく、他の実施形態では、単一のGVMマネージャが複数のGVMに関与してもよい。
【0028】
メッセージングマネージャ231は、例えば仮想化コントローラによってキューベースのプロトコルを用いて発行されたコマンドをハイパーバイザ内のパイプメッセージに変換することによって、仮想化コントローラ215とハイパーバイザの間の仲介役として機能し得る。セキュリティ及び分離コンポーネント229は、例えば、GVM間のデータの不注意な共有を回避することができるように、GVMが終了するときにGVMのメモリをスクラブまたはクリーンアップすることに関与し得る。PVMは少なくとも一部の実施形態では追加のコンポーネント(図2に示さず)を備え得、少なくとも一実施形態では、図2に示すPVMコンポーネントの1つまたは複数は必要とされない場合があることに留意されたい。
【0029】
例示的なオフロードカードコンポーネント
図3は、少なくとも一部の実施形態による、ホストにおける仮想化マネージャコンポーネントのサブセットに対するものであり得るオフロードカードの例示的なコンポーネントを示す。示すように、オフロードカード302は、オフローディングプロセッサ317A及び317B(上述の仮想化ホストのプライマリpCPUとは区別されるような)のそれぞれのセットを有する一対のシステムオンチップ(SOC)315及び316を備え得る。描かれた実施形態では、SOCの一方(例えば315)は仮想化コントローラのために用いられ得、他方はネットワーク処理オフローダのために用いられ得る。セキュアなブートROM325は、以下にさらなる詳細を論じるように、仮想化コントローラによる多段階ブート動作の初期段階に対して用いられ得る。オフロードカード302はまた、ブート手順中に及び/またはブート後の状態検証で拡張的にやはり用いられ得るセキュリティモジュール(トラステッドプラットフォームモジュール(TPM)など)330も含み得、TPMの例示的なサブコンポーネントは図4に示される。
【0030】
加えて、オフロードカード302は、様々な実施形態では、いくつかの、ストレージに、電力に、及び接続性に関するコンポーネントを備え得る。例えば、1つまたは複数のフラッシュデバイス/インターフェース(またはSSD)335がオフロードカード内に組み込まれ得る。これらのデバイスは、例えば、様々な仮想化管理コンポーネント、ゲスト仮想マシンコンポーネントなどに対応するファームウェア及び/またはソフトウェアを格納するのに用いられ得る。PCI-Eインターフェース340は、様々な実施形態では、ハイパーバイザと通信するために、及び/または、SOC間の通信のために用いられ得る。他の実施形態では、様々な形態のQuickPathインターコネクト(QPI)またはUltraPathインターコネクト(UPI)といった他のタイプのインターコネクト及び対応するインターフェースが用いられ得る。ネットワークインターフェース345は、一部の実施形態では、仮想化マネージャと仮想化コンピューティングサービスの制御プレーンの間の通信に対して用いられるとともに、少なくとも一実施形態では、ゲスト仮想マシンと様々なネットワークエンドポイントの間のデータプレーン通信に対して用いられ得る。オフロードカード302はまた、一部の実施形態では、例えば広範な停電の場合に少なくとも何らかの目的とした時間または日数の間OVMCの動作を維持するために十分な電源360も備え得る。一部の実装例では、スーパーキャパシタベースの電源が用いられ得る。
【0031】
一部の実施形態では、オフロードされた仮想化マネージャコンポーネントのために、同一のカード上の別々のSOCが必要とされない場合もある。例えば、一実施形態では、仮想化コントローラ機能及びネットワークオフローディングタスクを行うことが可能な単一のSOCが利用され得る。他の実施形態では、ネットワーク処理タスクを行うために、仮想化コントローラに対して用いられるのとは別のカードが用いられ得る。図3に示すオフ
ロードカードコンポーネントのセットは包括的であることを意図せず、一部の実施形態では、タイマーなどといったいくつかの他のコンポーネントがカードに組み込まれ得る。様々な実装例では、図3に示すコンポーネントの少なくともいくつかは必要とされない場合がある。
【0032】
図4は、少なくとも一部の実施形態による、仮想化マネージャによって用いられ得るトラステッドプラットフォームモジュール(TPM)の例示的なコンポーネントを示す。先に論じたように、同様の機能性を提供するが必ずしもTPM基準または仕様に完全に準拠していない他のタイプのセキュリティモジュールまたはデバイスが様々な実施形態で用いられ得る。図3に示すように、トラステッドプラットフォームモジュールは、一部の実施形態では、仮想化コントローラを備えるオフロードカード内に組み込まれ得、他の実施形態では、TPMは、オフロードカードの外部に位置され得る(例えば、仮想化コントローラからバスまたは他のインターコネクトを介して連絡可能な別のカード上に、または、仮想化ホストの外部のデバイスに)。TPMを用いて実装される要求またはコマンドは、「トラステッドコンピューティング要求(TCR)」と称され得る。一般に言って、例えば仮想化ホスト及び/またはGVMのソフトウェア/ファームウェア構成を認証する要求、ハッシュ値または鍵といった暗号アーチファクトを生成及び/または格納する要求、構成状態が変わった場合に値を復号化することができないように対応する構成状態に暗号化された値を関連付けるすなわち「シール」する要求などを含むいくつかの異なるタイプのTCRが、様々な実施形態でサポートされ得る。多段階ブートのコンテキストで以下に論じるように仮想化マネージャコンポーネントからの発信に加えて、TCRは、異なる実施形態では、ソフトウェアスタックのいくつかの異なる層から発信され得る。例えば、いくつかのTCRは、GVMのアプリケーション層から(またはTPMを備える仮想化ホストと通信する外部エンティティから)発信されてもよく、仮想化マネージャなどのソフトウェアの下位レベルからTPMに送信される特定のコマンドシーケンスに変換されてもよい。他のTCRは、オペレーティングシステム層、デバイスドライバ層などから発信されてもよい。
【0033】
図4のTPM410は、描かれた実施形態では、他のコンポーネントの中でもとりわけ、I/Oインターフェース484、ROM475、プラットフォーム構成レジスタ(PCR)セット470、鍵セット424及び暗号プロセッサ426を備え得る。例えばローピンカウント(LPC)バス、PCI-Eバス、シリアルペリフェラルインターフェース(SPI)バス、拡張シリアルペリフェラルインターフェース(eSPI)バス、集積回路間通信(I2C)バスなどを含むいくつかの異なるタイプの通信バスまたはインターコネクトが、異なる実装例では、I/Oインターフェース484を介して用いられ得る。ROM475は、様々な実施形態では、TPMファームウェアに対して用いられ得る。
【0034】
PCR0~PCRkなどのいくつかの個々のPCRを備えるPCRセット470は、仮想化ホストの様々なコンポーネントに対応するハッシュ署名を格納するのに用いられ得る。特に、様々な実施形態では、PCRの1つまたは複数は、以下により詳細を論じるように、仮想化マネージャ自体のブートの際に用いられ得る。鍵セット424は、例えば、様々なTCRに対して用いられる1つまたは複数のエンドースメント鍵、ストレージルート鍵及び/またはアテステーション鍵を含み得る。エンドースメント鍵は、一般に製造時に、TPMハードウェアに永続的に組み込まれる暗号鍵であってもよい。エンドースメント鍵は、少なくとも一部の実施形態では、TPMの外部で解除されなくてもよく、対応する公開鍵はTPMそれ自体が真正であることを検証するのに用いられ得る。エンドースメント鍵は、データを暗号化するのにも用いられ得、対応する公開鍵を用いて、暗号化されたバージョンが後に復号化され得、それによって復号化がTPMで行われたということが検証され得る。ストレージルート鍵は、一部の実施形態では、新しい鍵をTPMなしで用いることができないように、GVMで、または仮想化マネージャコンポーネントで動作中の
アプリケーションに代わって作成された新しい鍵を保護するために用いられ得る。TPMの製造時に作成及び格納され得るエンドースメント鍵とは異なり、ストレージルート鍵は、一部の実装例では、何らかのエンティティ(プロバイダネットワークアドミニストレータなど)がTPMの所有権を取得したときに作成され得る。アテステーション鍵は、一部の実施形態では、プラットフォームアテスターとの相互作用で用いられ得て、例えば、仮想化ホストの共有コンポーネントが仮想化コンピューティングサービス及び/またはクライアントの要件を満たすことを検証する。
【0035】
いくつかの異なるタイプの暗号値が、様々な実施形態では、暗号プロセッサ426を用いて取得され得る。例えば、暗号強度鍵(リベスト-シャミア-エイドルマン(RSA)アルゴリズムまたは他の同様のアルゴリズムに関連する鍵など)は、鍵ジェネレータ428を用いて取得され得る。SHA-1などのいくつかの形態のSHA(セキュアハッシュアルゴリズム)のいずれも、ハッシュジェネレータ432で用いられて、所望の質レベルを満たすハッシュ値を生成し得る。そのようなハッシュ値は、場合によっては、仮想化マネージャのブートプロセスの1つまたは複数の段階中に用いられてPCRを拡張し得る。高品質なランダムノイズ値またはランダムナンバーは、描かれた実施形態では、RNG(ランダムナンバー/ノイズジェネレータ)430を用いて取得され得る。単調に増加する連続番号は、連続番号ソース(複数可)434から取得され得、ノンス値として、または一意識別子を必要とする他のアプリケーションに対して用いられ得る。一部の実施形態では、他のタイプの暗号機能もまた、または、代わりに、TPMを用いて行われ得る。一部の実施形態では、対称暗号エンジン及び非対称暗号エンジンは両方ともTPMに含まれ得、他の実施形態では、両方のタイプのエンジンの代わりに、対称暗号エンジンまたは非対称暗号エンジンのいずれかが含まれ得る。
【0036】
様々な実施形態では、TPMは、鍵(以下で論じられるブート手順の後の段階に対して用いられる鍵を含む)などの様々なデータ項目の「シーリング」をサポートし得る。鍵などのオブジェクトがシールされると、PCRの選択されたセット(または全て)の内容は、鍵をシールする要求が受信された時点でTPMに記録され得る。シールされたデータは、選択されたPCRが、シーリング時に有していた値と同一の値を有する場合に抽出され得る。少なくとも一実施形態では、TPMは、GVM固有のサブコンポーネントを、例えば、GVM固有のTCRではなくホスト単位で一般に用いられ得る図4に示すコンポーネントに加えて、含み得る。
【0037】
多段階ブート手順
図5は、少なくとも一部の実施形態による、仮想化マネージャに対して用いられ得る例示的な多段階ブート手順の態様を示す。図5の左側に、様々な段階の概略が順番に示され、右側に、段階のうちいくつかにおいて用いられるプライマリセキュリティ技術が示される。多段階ブート手順は、少なくとも一部の実施形態では、仮想化ホストに電源が入ると開始し得る。初期のセキュアブート段階501では、1つまたは複数のファームウェアプログラムが読み込まれ(例えば、オフロードカードのSPIフラッシュストレージから)、オフローディングプロセッサまたはプロセッサ(複数)で(例えば、仮想化コントローラが動作予定のオフロードカードで)実行され得る。この初期の(そして通常非常に短い)段階において、ファームウェアの署名は、ハードウェアに(例えば、TPMなどのセキュリティモジュール内に組み込まれてもよく、組み込まれなくてもよい、オフロードカードの耐タンパー性のまたはタンパープルーフの格納場所に)焼かれた公開鍵を用いて検証され得る。要素504に示すように、公開鍵が属する鍵ペアの対応する秘密鍵は、少なくとも一部の実施形態では、ハードウェアセキュリティモジュール機器に格納され得る。描かれた実施形態では、段階501で用いられるファームウェアは、通常、段階が完了した後で再使用される必要はなくてもよい。実際、長時間動作するであろう、または再使用されるであろうファームウェア(例えば、ブート手順の後半及び/またはブート後に、PC
I-E構成空間エミュレーションのために用いられるコードなどの)の導入は、ブート手順の第2の段階の開始を意味し得る。段階501で用いられるファームウェアは、描かれた実施形態では、仮想化ホストの有用なライフタイム中に変更されないままであることが見込まれ得、そのことは、ハードウェアに焼かれた鍵がその段階に対して適切なセキュリティ手段であり得ることの理由の1つである。逆に、段階501に続く段階で用いられるファームウェアまたはソフトウェアは、経時的に修正され得る(例えば、機能を拡張するために、またはバグを取り除くために)。
【0038】
図5において測定ブート段階506と称される第2の段階では、要素509に示すように、実行または起動されるファームウェア/ソフトウェアプログラムの1つまたは複数が用いられて、セキュリティモジュールのPCR(またはいくつかのPCR)を拡張し得、それによって、プログラムの正確な(かつ偽造が難しい)証拠を残す。例えば、一実施形態では、特定のPCR、例えばPCR-kは、測定ブート段階において、各ファームウェアプログラムM1、M2及びM3ごとに1回で、3回拡張され得る。段階506の開始時に、PCR-kにおいてV0を初期値(例えばゼロだけを含み得る)とする。M1がロード及び実行される直前に、セキュリティモジュールは、V0及びM1を入力としてハッシュ関数Hの値を計算し(例えば、図4に示すハッシュジェネレータ432または同等物を用いて)、その値をPCR-kに格納し得る。かくして、PCR-kの新しい値は以下のように設定され得る:PCR-k←H(V0,M1)。次に、M2がロードされると、PCR-kの現在値及び新しいプログラムM2をとるハッシュ関数の出力は、以下のように、PCR-kに格納され得る:PCR-k←H(H(V0,M1),M2)。同様に、PCR-kは、M3がロードされるときM3によって再度拡張され得、したがって、PCR-0の最終値が以下のように設定される:PCR-k←H(H(H(V0,M1),M2
),M3)。結果的に、暗号強度ハッシュ関数が用いられると仮定すると、全てのプログラムの暗号強度表現、及びプログラムがアクティブ化されたシーケンスは、セキュリティモジュールに格納され得る。ロードされているファームウェア/ソフトウェアの「測定値」と称され得るPCR値は、様々な実施形態では、セキュリティモジュールのI/Oインターフェースを介してアクセス可能になされ得、そしてプログラムの期待されたバージョンが用いられたことを検証するのに用いられ得る。
【0039】
測定ブート段階の終了時または終了する少し前に、仮想化コントローラの特殊な最小バージョン(本明細書中でVminとして示され得る)が、描かれた実施形態では、要素511に示すように、ロード及び起動され得る。様々なプログラムの測定値は1つまたは複数のPCRを拡張することによって格納され得るので、このことは、PCR(例えば、上記の例ではPCR-k)がVminの内容に少なくとも部分的に基づいたハッシュ値を含むことを意味する。最小バージョンの主要な目的には、共通のベースラインに、仮想化コントローラのより本格的なバージョンが経時的に起動される(例えばチェーンローディングを介して)ことを可能にするだけの機能性を提供することが含まれ得る。チェーンローディングとは、例えば現在実行しているプログラムと新しいプログラムの間で情報を渡すための共通データ領域を用いて、現在実行しているプログラムを新しいプログラムで置き換えるのに用いられる技術である。ブート手順の初期段階(仮想化コントローラの新しい本格的なバージョンへのアップデートより前)がセキュリティを破られることなく行われたことを確保するために、要素514に示すように、PCR(複数可)の内容が、チェーンローディングが開始される前にチェックされ得る。仮想化コントローラの本格的なバージョンV4がインストール予定の例示的なシナリオを検討すると、例えば、特定の年の6月1日である。その後、例えば12月1日に、バージョンV5がインストール予定である。両方のケースで、初めの3段階(仮想化コントローラの特殊な最小バージョンであるVminのスタートアップまで)は同一であってもよく(それらの段階におけるファームウェアプログラムの変更がなかったと仮定)、したがってVminが立ち上げられたとき、TPMのPCRに同一の値が格納され得、ブートの初期の段階で何も変更がなかったこと
が、PCRの内容を読み出すことによって検証され得る。6月のシナリオでは、Vminは、V4によってチェーンローディングを介して置き換えられ得、12月のシナリオでは、Vminは直接V5によって置き換えられ得る(例えば、V4または他の中間のバージョンを通過する必要なく)。
【0040】
仮想化コントローラの新しいバージョン(例えばVnew)は、少なくとも一部の実施形態では、オフロードカードからアクセス可能な暗号化されたストレージデバイス(例えば、フラッシュベースのデバイスまたはSSD)に格納され得る。Vnewを復号化するために、鍵は、セキュリティモジュールからVminによって取得されなければいけない場合がある(要素509に示すように)。描かれた実施形態では、セキュリティモジュールは、PCR状態が、測定ブート段階などのブートの初期段階の成功したセキュアな完了を表す場合に鍵を提供するのみであり得る。かくして、少なくとも一部の実施形態では、何らかの形でブートの初期段階が攻撃され破られた場合、PCR値は期待値と合致せず、Vnewへのライブアップデートはブロックされ得る。一部の実施形態では、要素501に対応する動作で用いられた鍵と同一の鍵がストレージデバイスに対して用いられ得、他の実施形態では、異なる鍵が用いられ得る。
【0041】
要素516に示すように、仮想化コントローラの新しいバージョンVnewは、描かれた実施形態では、セキュリティモジュールから取得された鍵を用いて、暗号化されたストレージデバイスから取得され得る。次いで、仮想化マネージャの追加のコンポーネント(その実行可能なバージョンもやはり暗号化されたストレージデバイスから取得され得る)が、仮想化コントローラの本格的なバージョンVnewによって起動され得る(要素521)。先に論じたように、これらの追加のコンポーネントの少なくともいくつか(ハイパーバイザ及び/またはネットワーク処理オフローダなど)は、仮想化コントローラ自体に対して用いられるプロセッサ(複数可)以外のプロセッサ上で動作し得る。これらのコンポーネントの実行可能なバージョンは、様々な実施形態では、それらが暗号化されたストレージデバイスに書き込まれる前に、仮想化コンピューティングサービスの制御プレーンコンポーネントによって署名され得る。コンポーネントのそれぞれの署名は、要素519及び524に示すように、仮想化ホストが登録されている公開鍵インフラストラクチャを用いてチェックされ得る。ホストをそうしたインフラストラクチャに登録する手順が図7の文脈で以下に論じられる。
【0042】
仮想化マネージャのコンポーネント(仮想化コントローラVnew、ネットワーク処理オフローダ、図2の文脈で論じられるオポチュニスティックハイパーバイザのサブコンポーネントなど)の全てがインスタンス作成に成功した後、多段階ブートは完了したと見なされ得る(要素526)。少なくとも一部の実施形態では、ハイパーバイザのサブコンポーネントの1つまたは複数は、先に論じたように、休止状態であり得る。次いで、仮想化マネージャは、GVMのインスタンス作成/起動の要求、既存のGVMの終了要求、ホストのソフトウェア/ファームの状態の認証の要求などのGVMに関する要求の処理を開始し得る。
【0043】
暗号化されたストレージデバイスに対する初期鍵の生成
図6は、少なくとも一部の実施形態による、仮想化マネージャに関連する実行可能プログラムに対して用いられるストレージデバイスのセキュリティを高めるために行われ得る動作の態様を示す流れ図である。そうしたプログラムは、とりわけ、仮想化コントローラの本格的なバージョン(上記でVnewと称される)、ハイパーバイザのバージョン及び/またはネットワーク処理オフローダのバージョンを含み得る。図6に描かれた実施形態においてセキュリティモジュールとしてTPMが用いられるが、他のタイプのセキュリティモジュールが様々な実施形態で用いられ得る。要素601に示すように、仮想化ホストの初めてのブート(例えば、仮想化ホストが、製造及びテスト後にデータセンターにイン
ストールされた後にブートされる全く初めての)が開始され得る。図5に示す最初のいくつかのブート段階は、Vminが起動するときまでに(起動したときを含む)行われ得る(例えば、焼かれた鍵を用いて安全性が保証される第1のブート段階、及び測定ブート段階)(要素604)。
【0044】
次いで、Vminは、ストレージデバイスが有効状態にあるかどうかを、例えばストレージデバイスのヘッダ部の内容を検査することによってチェックしようと試み得る。ヘッダがヌルである(または、ストレージデバイスに対する暗号鍵がまだ生成されていないことを示す何らかの他の値を有する)場合、このことは、ストレージデバイスが無効状態にあることを示し得る(要素607)。次いで、Vminは、描かれた実施形態では、TPMの暗号エンジンを用いて、ストレージデバイスに対する暗号鍵(例えば、AES-256-XTSなどのAdvanced Encryption Standardに準拠した鍵)を生成し得る(要素610)。次いで、この鍵は、PCRの現在の内容(この時点で、要素604で記述されたブートプロセスの段階で生成されたハッシュ値を備える)を用いてTPMでシールされ得る(要素613)。
【0045】
描かれた実施形態では、鍵のシールされたバージョンは、ストレージデバイスのヘッダに配置され得(要素616)、それは、ストレージデバイスが適切に初期化されていることを示すものとして機能し得る。ストレージデバイスへのその後のアクセスにおいて(例えば、図5の要素511に対応する動作のように、仮想化コントローラの本格的なバージョンがストレージデバイスから取得される必要があるたびに)、鍵のシール解除されたバージョンがTPMから取得されて、ストレージデバイスの内容を復号化し得る(要素619)。
【0046】
VCSネットワークセキュリティインフラストラクチャにおける仮想化ホストの登録
各仮想化ホストは、そのライフタイム中に、仮想化コンピューティングサービス自体を含む1つまたは複数のサービスの制御プレーンエンティティなどの、プロバイダネットワークの様々な他のコンポーネントと安全に通信しなくてはならない場合がある。そうするために、少なくとも一部の実施形態では、ホストで動作中の仮想化マネージャは、ホストを、公開鍵インフラストラクチャの、または何らかの他の同様なセキュリティインフラストラクチャのメンバーとして、仮想化コンピューティングサービスに関連するホスト識別管理サービスとのネットワーク相互作用を介して、登録または記録することが必要とされ得る。そうしたホスト識別管理サービスは、一部の実施形態では、仮想化コンピューティングサービス内のリソースを用いて実装され得(例えば、図1に示すホスト識別マネージャ172の1つまたは複数を用いて)、他の実施形態では、ホスト識別管理サービスは、仮想化コンピューティングサービスの外部にあってもよい。一般に言って、様々な実施形態では、ホスト識別管理サービスは、仮想化ホストをセキュリティインフラストラクチャに記録/登録すること、もたらされた証明書を必要に応じて新しくし交代させること、証明書失効リストを管理すること、及び/または個々の仮想化ホスト上の各キーストアの内容を保つことに関与し得る。
【0047】
図7は、少なくとも一部の実施形態による、仮想化コンピューティングサービスのセキュリティインフラストラクチャ内に仮想化ホストを記録するために行われ得る動作の態様を示す流れ図である。図6のように、図7に描かれた実施形態においてセキュリティモジュールとしてTPMが用いられるが、他の実施形態では他のタイプのセキュリティモジュールが用いられ得る。要素701に示すように、仮想化マネージャのコンポーネント(仮想化コントローラの最小化されたバージョンVminなど)は、セキュリティ鍵ペアを(例えば、TPMを用いて)生成し、そして、ホスト識別管理サービス(HIMS)とのセキュアな通信セッションで用いるための自己署名証明書を作成することによって記録手順を開始し得る。TLS(トランスポート層セキュリティ)などの任意の適切なセキュアな
/暗号のネットワーキングプロトコルを用いて、セッションのための接続を確立し得る(要素704)。少なくとも一部の実施形態では、仮想化コントローラは、記録の目的でHIMSと相互作用する部分的にオフロードされた仮想化マネージャのコンポーネントであってもよい。
【0048】
HIMSは、チャレンジペイロード(例えば、何らかのランダムデータ、及び仮想化マネージャによってセッションのために提供される公開鍵を備える)を仮想化マネージャに送信することによって、記録手順へのその関与を開始し得る(要素707)。チャレンジメッセージは、公開鍵を検証し、チャレンジペイロードをTPMに送信し得る(要素710)。TPMは、例えばアテステーション鍵及び1つまたは複数のPCRの現在の値を用いて応答ペイロードを準備し(要素713)、応答ペイロードを仮想化マネージャに提供し得る。
【0049】
そして、応答ペイロードは、仮想化マネージャによってHIMSに伝えられ得る(要素716)。HIMSは、応答ペイロードを用いて、仮想化ホストの状態が記録を受入れ可能である、または記録に対して有効であることを確認し得る。HIMSは、次いで、例えばホストに対してX509識別証明書を生成して識別証明書をホストの仮想化マネージャに送信することによって、仮想化ホストを記録または登録し得る(要素719)。識別証明書は、描かれた実施形態では、仮想化ホストからの少なくともいくつかの後続の通信の安全を保証するのに用いられ得る。一部の実施形態では、HIMSはまた、仮想化マネージャにアクセス可能なローカルキーストアに(例えば、暗号化されたストレージデバイスにまたはTPMに)格納される1つまたは複数の追加の証明書も送信し得る(要素722)。そうした追加の証明書は、様々なコンポーネント(仮想化コントローラのフル機能バージョン、オポチュニスティックハイパーバイザ及び/またはネットワーク処理オフローダを含む)の更新のために生成されるペイロードの署名を検証するのに仮想化マネージャによって用いられ得る。一部の実施形態では、仮想化コントローラのバージョンの署名を検証するのに用いられる証明書は、TPMのPCRを拡張するのに用いられ得る、つまり、この証明書は、先に論じたブート手順の第2の段階におけるファームウェアコンポーネントが測定されたのと同じ様に測定され得る。
【0050】
ホストが記録されて仮想化マネージャのフルバージョンが立ち上げられた後、クライアント要求に応答してGVMを起動する/終了するといった様々なGVMに関する動作が開始され得る。仮想化コンピューティングサービスのセキュリティをさらに高めるために、少なくとも一部の実施形態では、仮想化コンピューティングサービスのHIMSまたは他の制御プレーンコンポーネントは、クエリ(例えばアテステーションクエリ)を仮想化マネージャに、またはTPMに、仮想化マネージャを介して送信することによって、ホストの状態を周期的に(またはトリガ条件に応答して)認証し得る(要素725)。そうした認証クエリは、例えば、その測定値または他のインジケータがTPMに格納されている1つまたは複数のソフトウェア/ファームウェアプログラムのバージョンを識別する要求を含み得る。適切な認証データがTPMから取得され得、HIMSまたは他の制御プレーンコンポーネントに提供され得る。一部の実施形態では、そうしたクエリに対して応答が受信されない、または期待外の/無効な応答が受信された場合、HIMSまたは他の制御プレーンコンポーネントは、ホストが無効状態である、または破られている状態であることを示す警告をトリガし得、適切な改善措置(ホストを無効にし、デバッグするといった)が開始され得る。
【0051】
仮想化ホスト内の信頼レベル
図8は、少なくとも一部の実施形態による、仮想化ホストのコンポーネントに関連する異なる信頼レベルの例を示す。多段階ブートプロセス、ライブアップデート用の仮想化マネージャコンポーネントの新しいバージョンのための暗号化されたストレージデバイスの
使用、ホスト識別管理サービスとの相互作用、及びハイパーバイザの関与の最小化を含む上述の様々な技術の結果、仮想化ホストに存在するセキュリティが破られていることの見逃しの危険性は最小化され得る。図8において矢印885で示すように、ストリップドダウンオポチュニスティックハイパーバイザ820、ネットワーク処理オフローダ816及びゲスト仮想マシン850を含む、仮想化ホストで動作するソフトウェア/ファームウェアコンポーネント802の大部分は、セキュリティの観点から信頼できないものと見なされ得る。それらのコンポーネントのそれぞれに向けられるセキュリティ攻撃、またはそれらのコンポーネントのそれぞれにもたらされるバグは、仮想化コンピューティングサービスのセキュリティ依存の部分との相互作用の多くが仮想化コントローラによって行われ得るという理由で、影響は局在する傾向があり、広範囲の停電を生じさせない可能性がある。ハイパーバイザによって従来処理される機能性の多くがオフロードされているので、ハイパーバイザのセキュリティが破られる機会は低減され得、ハイパーバイザ自体に向けられたセキュリティ攻撃の成功の影響は最小化され得る。
【0052】
仮想化コントローラは、矢印880で示すように、描かれた実施形態では、ソフトウェア/ファームウェアスタックの主要な信頼できるコンポーネントと見なされ得る。仮想化コントローラのセキュリティを破ることが成功している可能性は、上述のように、セキュリティモジュールの機能及び最も初期のブート段階での焼き付けられた鍵を用いて最小化され得る。さらに、仮想化マネージャの様々なコンポーネントに対するライブアップデートの使用及びホスト識別管理サービスによる仮想化ホストの状態に関するチェックにより、攻撃が検出される速度、及び攻撃が生じたときに改善措置が取られる(動作中のゲスト仮想マシンへの影響は最小で)速度が向上され得る。
【0053】
ゲスト仮想マシンのインスタンス作成
図9は、少なくとも一部の実施形態による、ゲスト仮想マシンを起動するために仮想コンピューティングサービスのコンポーネントの様々な層の間で必要とされ得る相互作用の例を示す。サービスのクライアント910は、GVM(メモリサイズ、処理能力レベル、オペレーティングシステムバージョンなどといったGVMの所望の特徴が要求に記されている)をインスタンス作成または起動する要求を、サービスのプログラマチックインターフェース915を用いて(例えば、セキュアなハイパーテキスト転送プロトコルベースのウェブサービスインターフェースを用いて)送信し得る。クライアントの要求は、制御プレーンコンポーネント960で受信され、選択された仮想化ホストに送信するために内部形式に変換され得る。特定のホストが、例えば制御プレーンの配置マネージャによって、所望のGVMの特徴、ホストにおける利用可能なリソース容量などに基づいて選択され得る。一部の実施形態では、仮想化ホストのオフロードカードで動作している仮想化コントローラによって、REST(Representational State Transfer)アプリケーションプログラミングインターフェースがサポートされ得る。制御プレーンコンポーネントは、仮想化コントローラのプログラマチックインターフェース918を用いて、GVMのインスタンス作成の要求の内部バージョンを仮想化コントローラ965に送信し得る。
【0054】
次いで、オフロードカードベースの仮想化コントローラは、描かれた実施形態では、オポチュニスティックハイパーバイザ970を対象とした対応する要求をフォーマットし得る。少なくとも一部の実施形態では、キューベースのプロトコルを用いて、要求をオフロードカードからハイパーバイザに、例えばPCI-EベースのDMA(ダイレクトメモリアクセス)を用いて送信し得る。GVMのインスタンス作成の要求がハイパーバイザのプログラマチックインターフェース921を介して受信されると、ホストのために設けられる仮想化ホストのリソースのサブセットが識別され得、ゲスト仮想マシンは適切なマシンイメージを用いて起動され得る(要素980)。ゲスト仮想マシンに対して用いられるマシンイメージは、様々な実施形態では、1つまたは複数の仮想化マネージャコンポーネン
トによって格納場所から読み込まれ得る。一部の実施形態では、各仮想化ホストは、スロットマップ972のいくつかのGVM「スロット」973(例えばスロット973A~973K)を有し得、各スロットは、所与のGVMのために用いられるリソースを表している。使用中のスロット(スロット973Aまたは973Kなど)は、対応するリソースが現在クライアントに割り当てられていることを示し得、使われていないスロットは、新しいGVMに対して用いられ得る。少なくとも一部の実施形態では、所与のGVMに割り当てられる仮想化ホストのメインメモリの特定の部分は、さらなる詳細を以下に論じるように、仮想化コントローラによって選択され得る。
【0055】
図10は、少なくとも一部の実施形態による、仮想化ホストにおけるゲスト仮想マシンの例示的な状態遷移を示す。図9の文脈で上述した種類の特定のスロットを用いてGVMのインスタンス作成がされるよりも前に、GVMは非存在状態1001にあると見なされ得る。例えばホストの仮想化マネージャと共に動作する仮想化コンピューティングサービスの制御プレーンコンポーネントによって、スロットがインスタンスに対して割り当てられると、インスタンスは初めは非アクティブ状態1004となり得る。次いで、GVMは、アクティブ状態1007に、例えばGVMがそこからいくつかの他のアクティブ状態に遷移し得る初期「仕様保留」状態1010に移行し得る。
【0056】
仕様保留状態1010で、オポチュニスティックハイパーバイザのGVMマネージャプロセスはGVMに対して割り当てられていてもよいが、GVMの仕様(GVMプロセスのインスタンス作成に必要とされる詳細な情報を含む)は、まだGVMマネージャプロセスに提供されていなくてもよい。仕様保留状態1010から、GVMは、一時停止状態1013に入り得る。一時停止状態で、仕様はGVMマネージャに提供されていてもよいが、GVMの仮想CPUスレッド(vCPU)はまだ、物理CPU(pCPU)での実行のためにスケジューリングされていない。一時停止状態は、例えば、デバッグ目的のために、及び/またはデバイスを取り付け/取り外しするために用いられ得る。
【0057】
vPCUがpCPU上で動作可能にされると、GVMは、動作状態1016に入り得、クライアントのアプリケーションはpCPUを用いて動作し得る。以下に論じるように、GVMのメタデータ(ハイパーバイザのライブアップデートの際に用いられる)のために確保されたメモリの領域にvCPU状態を格納することによって、一時停止状態1013からシリアライズされた状態1019に到達し得る。シリアライズされた状態1019または動作状態のいずれかから、GVMは、例えばハイパーバイザのライブアップデートに必要とされるときハイパーバイザのGVMマネージャコンポーネントによって一時停止され得る。加えて、動作状態または一時停止状態から、GVMは、描かれた実施形態では、例えばハイパーバイザにGVMを終了する通知がなされたとき、またはスタックしているように見える動作中のGVMを途中停止する動作が必要とされたとき、イクジット状態1022に入り得る。GVMのリブートが計画または要求された場合、様々な実施形態では、GVMはリスタート後、非アクティブ状態に戻され得る(その後アクティブ状態になる)。
【0058】
仮想化ホストからGVMを永続的に終了する決定がなされると、GVMに対して割り当てられていたホストのメインメモリ(ならびに他のリソース)の一部分はスクラブまたはクリーニングされる必要があり得、例えば終了されたGVMからそのスロットを占める予定の次のGVMへのデータの不注意な伝送を防ぐ。このようにして、GVMは、イクジット状態1022からスクラブ状態1010に遷移し得、ここでは、ハイパーバイザのセキュリティコンポーネントは、メモリが上書きされている(例えばゼロで)ことを確保する。何らかの理由でメモリをスクラブできない場合、対応するスロットは、「壊れたスロット」1080と見なされ得、仮想化コンピューティングサービスの制御プレーンに、スロットは新しいGVMに対して利用可能ではないことが通知され得る。一部の実施形態では
、壊れたスロットのメモリを利用可能にする修理動作が開始され得る。スクラブが成功した場合、スロットに関連するメモリは、新しいGVMに対して再使用され得、非存在状態1001から開始される。
【0059】
メモリ管理オフローディング
上述したブートに関する動作及びセキュリティに関する動作に加え、少なくとも一部の実施形態では、仮想化ホストにおけるメモリ割当てタスクの大きなサブセットが、オフロードされた仮想化マネージャコンポーネントで行われ得る。特に、少なくとも一部の実施形態では、オポチュニスティックハイパーバイザが仮想化ホストのメインメモリの相対的に小さい部分を管理し得る一方、メモリの残りの部分に関する割当て決定は、仮想化コントローラまたは別のオフロードされたメモリマネージャによってなされ得る。この手法は、ハイパーバイザによってなされなければならない作業の量をさらに減らし、それによって、pCPUサイクルのうちより多くをゲスト仮想マシンによって利用可能にするという利益を有し得る。加えて、以下に記述するように、この手法はまた、ハイパーバイザのライブアップデートが行われることを可能にし得、その間、動作中のゲスト仮想マシンはリブートされる必要がなくてもよい。
【0060】
図11は、少なくとも一部の実施形態による、仮想化ホストのメインメモリを、オフロードされた仮想化マネージャコンポーネントによって管理されるセクションとハイパーバイザによって管理されるセクションに区切る例を示す。示すように、仮想化ホストのメインメモリ1110は、ハイパーバイザによって管理されるセクション1115とオフロードされた仮想化マネージャコンポーネント(OVMC)によって管理されるセクション1120に分割される。OVMCによって管理されるセクションは、描かれた実施形態では、GVMのメモリ割当てに対してと、さらにはハイパーバイザのアップデート中にGVMデバイス状態を格納するのに用いられ得るGVMごとのメタデータ1121に対して用いられ得る。ハイパーバイザによって管理されるセクション1115の少なくとも一部は、描かれた実施形態では、ハイパーバイザのライブアップデート中に上書きされ得る。対照的に、ハイパーバイザによって管理されていないことを少なくとも部分的な理由として、OVMCによって管理される部分1120の内容はハイパーバイザのアップデートを通して存続し得る。
【0061】
図12は、少なくとも一部の実施形態による、ホストメモリのハイパーバイザによって管理されるセクションのかつオフロードされた仮想化マネージャコンポーネントによって管理されるメモリセクションに含まれるメタデータの例示的な内容を示す。ハイパーバイザによって管理されるセクション1215は、描かれた実施形態では、1つまたは複数のページテーブル1217、ハイパーバイザのオペレーティングシステムカーネルレベルコンポーネントによって用いられるデータ構造1218、ハイパーバイザコーディネータ、GVMマネージャなどに割り当てられたメモリの特定の領域といったハイパーバイザプロセスメモリ1219、ならびにライブアップデートイメージ格納セクション1221を備え得る。ハイパーバイザで用いられるページテーブル1217は、一部の実施形態では、4キロバイトまたは8キロバイトのページなどの極めて小さなサイズの個々の割当てを管理するように構成され得る。ハイパーバイザのライブアップデートが行われるとき、ハイパーバイザは、セクション1221の内容を用いて適切な場所でブートされ得る。セクション1221は、後で、ハイパーバイザのさらに別のより最近アップデートされたバージョンを格納するのに用いられ得る。このようにして、ハイパーバイザによって管理されるメモリセクション1215は、様々な時点でのハイパーバイザの2つのバージョン-現在のバージョン及びセクション1221のブート予定のバージョンを備え得る。
【0062】
メインメモリの、GVMごとのメタデータセクション1251は、仮想化ホストでインスタンス作成されることになる様々な異なるGVMに対するメモリのそれぞれの部分を備
え得る。GVMごとのメタデータ部分のそれぞれは、描かれた実施形態では、GVMに対する1つまたは複数のページテーブル及びデバイス状態保存領域を備え得る。かくして、例えば、GVM1-メタデータ部分は、描かれた例では、ページテーブル(複数可)1257A及びデバイス状態保存領域1259Aを備え、GVM2-メタデータ部分は、ページテーブル(複数可)1257B及びデバイス状態保存領域1259Bを備える。GVM固有のページテーブル1257におけるエントリのページサイズは、少なくとも一部の実施形態では、ハイパーバイザによって用いられるページサイズとは異なり得る。例えば、ハイパーバイザは、一実装例では、4キロバイトのページでその一部からメモリを割り当て得、GVMに対して用いられるページサイズは2メガバイトであり得る。少なくとも一実装例では、同一ホスト上の異なるGVMに対して異なるページサイズが用いられ得る-例えば、GVM1のページはそれぞれ2メガバイトであってもよく、GVM2のページはそれぞれ4メガバイトのサイズであってもよい。様々な実施形態では、ハイパーバイザ及び異なるGVMに対して用いられるページの特定のサイズは、メモリ割当ての期待パターンに基づいて判定され得る(例えば、仮想化コンピューティングサービスの制御プレーンによって)。GVMのI/Oデバイス(例えば、1つまたは複数のパススルーI/Oデバイス)、vCPUなどの状態は、様々な実施形態では、例えばハイパーバイザのライブアップデートが行われるときにGVMが一時停止される短い期間中に、GVMに対する状態保存領域に保存され得る。少なくとも一部の実施形態では、OVMCは、メインメモリのどの領域が所与のGVM(例えば、GVMのオペレーティングシステム及びアプリケーション)及びGVMのメタデータに対して用いられるかを判定し、ハイパーバイザにその情報を提供し得る。かくして、GVM固有のメモリ割当て決定がOVMCによってなされ得、それらの決定の結果の少なくとも一部は、そうした実施形態では、OVMCによってハイパーバイザに提供され得る。所与のGVMに対するページテーブル及びデバイス状態保存領域は、少なくとも一部の実装例では、連続していなくてもよいことに留意されたい。
【0063】
GVMに代わってメモリ割当て決定を行うために、OVMCは、様々な実施形態では、最初にメモリに関する情報をハイパーバイザから取得する必要があり得る。図13は、少なくとも一部の実施形態による、仮想化マネージャのコンポーネントの間の例示的なメモリインベントリに関する相互作用を示す。示すように、OVMC1310は、例えば先に記述した多段階ブート動作の後半の段階において、オポチュニスティックハイパーバイザの実行可能ファイル(複数可)1325を起動するコマンド1322を発行し得る。ハイパーバイザが立ち上がると、ハイパーバイザは、作業準備ができていると示すメッセ―ジ1325をOVMC1310に送信し得る。
【0064】
OVMCは、メモリインベントリ要求1328をハイパーバイザに送信し得、事実上、ハイパーバイザに、OVMCによって管理されるメモリの領域を示すように依頼する。ハイパーバイザは、要求された情報を、例えば利用可能なメモリ記述子1331の形で提供し得る。OVMCは、その後、このメモリの様々な部分を、個々のGVMに(例えば、GVM内で動作しているオペレーティングシステムプロセス及びアプリケーションプロセスで用いられる)及び/または、ハイパーバイザのライブアップデート中に用いられるGVMごとのメタデータ(GVM固有のページテーブル及びデバイス状態格納情報などの)に対して割り当て得る。
【0065】
図14は、少なくとも一部の実施形態による、仮想化マネージャのコンポーネントの間での、ゲスト仮想マシンのインスタンス作成及び終了に関連する例示的なメモリに関する相互作用を示す。起動要求1402の指示は、OVMC1410によって、例えば仮想コンピューティングサービスの制御プレーンコンポーネント(クライアントからのGVMに対する対応する要求が受信されていてもよい)から受信され得る。要求は、例えばGVMに対して構築されるメモリのサイズ、GVMに割り当てられる処理能力などを含む、インスタンス作成されるGVMの様々な性質を示し得る。OVMC1410は、メモリを、G
VM自体に対して(すなわち、GVMで実行されるオペレーティングシステム及びアプリケーションに対して)、及び、GVMがハイパーバイザのライブアップデート中に短時間一時停止される場合/されるときに保存されなくてはならない場合があるGVMのページテーブル及び様々なメタデータエントリに対して割り当て得る。GVM及びそのメタデータに対して割り当てられるメモリに関する情報1422は、OVMCによってオポチュニスティックハイパーバイザ1435に提供され得、OVMCは、ホストにおける追加のGVMに対して利用可能(もしあれば)のままである使用されていないメモリの量に関するその記録を更新し得る。少なくとも一部の実施形態では、GVMのメモリ要求に対応するために、バディ割当てアルゴリズム1425がOVMCで用いられ得る。
【0066】
自らの代わりにGVMがインスタンス作成されるクライアントがGVM上でそれらのアプリケーションの動作を完了した後で、クライアントは、GVM終了要求を仮想化コンピューティングサービスの制御プレーンに送信し得る。GVM終了要求の内部バージョン1404の指示は、制御プレーンからOVMC1410に提供され得る。終了コマンド1428が、OVMCによってオポチュニスティックハイパーバイザ1435に送信され得る。それに応じて、GVMは、ハイパーバイザによってシャットダウンされ得る。GVMがシャットダウンされた後で、GVMに割り当てられていた物理メモリの一部は、スクラブまたはクリーニングされ得(例えば、オポチュニスティックハイパーバイザ1435のコンポーネントによってメモリをゼロで上書きすることによって)、メモリが他のGVMに対して利用可能であるという表示1431がOVMC1410に提供され得る。OVMCは、それに応じて、メモリ割当のその記録を更新し得、必要に応じて、解放されたメモリの少なくとも一部を何らかの他のGVMに対して利用し得る。
【0067】
図15は、少なくとも一部の実施形態による、仮想化マネージャのコンポーネントの間での、ハイパーバイザのライブアップデートに関連する例示的な相互作用を示す。オポチュニスティックハイパーバイザの新しいバージョンを配備する要求1502が、描かれた実施形態では、仮想化コンピューティングサービスの制御プレーンコンポーネントからOVMCで受信され得る。それに応じて、新しいバージョンの実行可能イメージを格納するコマンド1522が、OVMCから、オポチュニスティックハイパーバイザ1535の現在動作中のバージョンに送信され得る。一部の実装例では、OVMCは、新しいバージョンの内容を送信し得、他の実装例では、OVMCは、新しいバージョンが取得される場所の指示を提供し得る。新しいバージョンの内容は、仮想化ホストのメインメモリのハイパーバイザによって管理される部分のライブアップデートイメージ格納セクション1575内に保存され得る。少なくとも一部の実施形態では、新しいバージョンは、様々な強化及び/またはバグ修正に加えて、ハイパーバイザの現在のバージョンによってその動作のために用いられる既存のデータ構造(メモリ管理に用いられる構造を含む)をハイパーバイザの新しいバージョンによって用いられる修正バージョンに変換するコードを備え得る。
【0068】
仮想化ホストフリートにおけるハイパーバイザ1435の新しいバージョンの配備は、様々な実施形態では、2つの時間的に切り離されたステップで行われ得る:新しいバージョンがフリートのホストのいくつかまたは全てにおけるホストメモリのハイパーバイザによって管理される部分に格納される分散段階と;新しいバージョンがそれをライブブートすることによってホストで立ち上げられるアクティブ化段階である。2つの段階は、様々な理由で切り離され得る-例えば、新しいバージョンがエラーなしで、(潜在的に非常に多数の)目的とされたホストのセットに格納されていることを確認するには、及び/または、ホストフリートの目的とされる部分の異なる断片は、最終的に、異なるバージョンの動作ハイパーバイザとなるというシナリオの回避を試みるには、かなりの時間量がかかり得るという理由である。
【0069】
ハイパーバイザの格納された新しいバージョンのアクティブ化をトリガするために、描
かれた実施形態では、ライブアップデート要求1504がOVMC1510に送信され得る。そして、OVMC1510は、ブートインプレースコマンド1528をハイパーバイザ1535の現在のバージョンに送信し得る。現在のバージョンは、任意の動作中のGMVを一時的に一時停止し、GVMの状態を(OVMCによって管理されるメモリを用いて)シリアライズし、その後、格納された新しいバージョンを用いてライブアップデート1565を実装し得る。新しいバージョンへのリブートが成功した場合、オポチュニスティックハイパーバイザの新しいバージョンは、描かれた実施形態では、一時停止された(もしあれば)GVMを再アクティブ化し、ハイパーバイザ準備完了メッセージ1531をOVMCに送信し得る。GVMは、様々な実施形態では、ハイパーバイザのアップデートにおいてリブートされなくてもよく、GVMが一時停止される期間は、通常、少なくとも何人かのGVMユーザまたはアプリケーションが一時停止に気付かないこともあるほどに短くてもよい。GVMの状態は、リブートインプレースの前に、OVMCによって管理されるメモリの一部に保存されたので、GVMは、何らかの理由でライブアップデートが失敗し、以前に動作していたハイパーバイザがその動作を再開しなくてはならない場合でも、迅速に再アクティブ化され得る。
【0070】
図16は、少なくとも一部の実施形態による、部分的にオフロードされた仮想化マネージャの様々なコンポーネントによって行われ得るメモリ管理に関する動作の態様を示す流れ図である。要素1601に示すように、オフロードされた仮想化マネージャコンポーネント(OVMC)は、例えば先に論じた多段階ブート動作の後期段階の1つにおいて、仮想化ホストでオポチュニスティックハイパーバイザの1つまたは複数のコンポーネントをスタートアップし得る。ハイパーバイザは、自らのメモリ割当てを管理するために、第1のページテーブルのためにホストのメインメモリのセクションを確保し得る(すなわち、GVMに対して割り当てられたメモリとは対照的に、ハイパーバイザコントローラ、GVMマネージャなどといったハイパーバイザの様々なサブコンポーネントに対するハイパーバイザの内部メモリ割当て)(要素1604)。少なくとも一部の実施形態では、このハイパーバイザのページテーブルに表されるページのサイズは、例えばハイパーバイザのサブコンポーネントから期待される典型的なメモリ割当てパターンに基づいて、4キロバイトまたは何らかの他の相対的に小さなページサイズに設定され得る。
【0071】
ハイパーバイザのライブアップデートのために、ホストのメインメモリのハイパーバイザによって管理される部分の一部も形成するホストのメインメモリの第2の部分は確保されて(要素1607)、例えば、アップデートが必要とされるのに応じてハイパーバイザの新しいバージョンを格納し得る。新しいバージョンは、描かれた実施形態では、この段階では必ずしも利用可能でなくてもよいが、それのために最終的に用いられる空間はそれでも確保され得る。
【0072】
OVMCは、メモリインベントリ要求をハイパーバイザに送信して(要素1610)、例えばメインメモリのうちどれほどが(及びどの具体的なセクションが)GVM及び関連するメタデータのためにOVMCによって管理されるかを判定し得る。ハイパーバイザは、描かれた実施形態では、メモリのこのOVMCによって管理される部分のサイズ及び場所の指示をOVMCに送信して戻し得る(要素1613)。OVMCによって管理される部分は、利用可能な全物理メモリ(ハイパーバイザによってその初期化中に検出される)とハイパーバイザによって管理される部分の差を備え得る。OVMCによって管理される部分は、ハイパーバイザのライブアップデート中、そのまま残され得る(すなわち上書きされなくてもよい)。
【0073】
OVMCによって管理されるメモリ領域に関する情報が処理された後で、OVMCは、ホストでのGVMのインスタンス作成を可能にし得る。新しいGVMがインスタンス作成されるとき、OVMCは、GVMのために用いられるメモリの領域(例えば、GVM固有
のページテーブル、GVMのオペレーティングシステム及びプロセッサのための空間、GVMのまとめられたデバイス状態情報を保存するのに用いられるメタデータ領域を含む)をOVMCによって管理される領域から選択し得る(要素1616)。様々な実施形態では、GVMのページテーブルが構築される特定のメモリアドレス範囲はOVMCによって選択され得るが、ハイパーバイザは、ページテーブルの実際の作成に関与し得る。ページテーブルのために用いられるアドレス範囲は、OVMCによってハイパーバイザにGVMページングメタデータの一部として提供され得る。GVM固有のページテーブルは、少なくとも一部の実施形態では、メモリのハイパーバイザによって管理されるセクションのためにハイパーバイザによって用いられるページサイズまたは複数のページサイズと異なるサイズ(または異なる複数のサイズ)のページをサポートし得る。ページングメタデータは、一部の実装例では、GVMに対して用いられるページサイズの指示を含み得る。ハイパーバイザには、OVMCによってGVMに対してなされる割当て決定に関して通知がなされ得る(要素1619)。
【0074】
GVMが終了する前にハイパーバイザのライブアップデートが行われる場合、ハイパーバイザは、GVMの仮想CPUを一時停止し、デバイス状態を、OVMCによってGVMに対して割り当てられているメタデータ領域に保存し得る(要素1622)。ハイパーバイザのライブアップデートは、ホストのGVMをリブートすることなしに行われ得、その代わりに、描かれた実施形態では、GVMの状態が、GVMが一時停止されている短い期間の後で復元され得る。GVMが最終的に終了されると、OVMCによってそれに割り当てられたメモリは、ハイパーバイザによってスクラブされ得(要素1625)、OVMCには、終了されたGVMのメモリが例えば他のGVMに対して利用可能であることが通知され得る。
【0075】
図17は、少なくとも一部の実施形態による、ハイパーバイザのライブアップデートに関連する動作の態様を示す流れ図である。要素1701に示すように、仮想化ホストにおけるオフロードされた仮想化マネージャコンポーネント(OVMC)は、オポチュニスティックハイパーバイザの新しいバージョンがホスト上に(そこでは、オポチュニスティックハイパーバイザの現在のバージョンが既に動作中である)インストールまたは配備されるという指示を受信し得る。指示は、例えば、仮想化ホストが用いられている仮想化コンピューティングサービスの制御プレーンコンポーネントから受信され得る。OVMCは、新しいバージョンに対する実行可能ファイルの内容(または内容へのポインタ)をハイパーバイザの現在のバージョンに、例えばハイパーバイザコントローラのサブコンポーネントに送信し得る(要素1704)。新しいバージョンは、新しい機能、バグ修正などに加えて、一部の実施形態では、ハイパーバイザで用いられる様々なデータ構造に対して用いられる変換機能を備え得る。例えば、新しい属性は、ハイパーバイザの新しいバージョンにおいて特定のメモリ管理に関するデータ構造に追加されていてもよく、変換機能が、古いデータ構造(OVMCによって割り当てられたメタデータ領域に格納され得る)を修正されたデータ構造に変換するために提供され得る。
【0076】
現在のハイパーバイザバージョンは、ライブアップデートのために指定されたホストのメインメモリのセクションに、新しいバージョン用の実行可能ファイルを格納し得る(要素1707)。新しいバージョンが安全に格納された後で、ある時点で、OVMCは、新しいバージョンをライブアップデートを介してアクティブ化する要求またはコマンドを現在のハイパーバイザに送信し得る(要素1710)-例えば、ゲスト仮想マシンがリブートされることを必要としないアップデート手順を用いて。アクティブ化コマンド/要求は、一部の実施形態では、仮想化コンピューティングサービスの制御プレーンからの別の通信に応じて、OVMCからハイパーバイザに送信され得る。他の実施形態では、ライブアップデートは、制御プレーンからの任意の追加の通信または指示なしで、OVMCによって、または、ハイパーバイザ自体の現在のバージョンによって開始され得る(例えば、新
しいバージョンがメインメモリのハイパーバイザによって管理される部分に格納されるとすぐに、ライブアップデートは開始され得る)。
【0077】
ハイパーバイザの現在のバージョン(例えば、ハイパーバイザのGVMマネージャコンポーネント)は、描かれた実施形態では、ライブアップデートの一部として、動作中のGVMを休止または一時停止させ得る。所与のGVMに関連する状態情報(例えば仮想CPU状態、パススルーI/Oデバイス状態などを含む)は、メインメモリのOVMCによって管理される部分の適切なGVMごとのメタデータセクションに格納され得る(要素1713)。
【0078】
一時停止してGVM(複数可)の状態情報を保存した後で、ハイパーバイザは、描かれた実施形態では、例えば「kexec」機構の同等物を用いて、新しいバージョンへのインプレースリブートを行い得る(要素1716)。この段階において、ハイパーバイザの更新前バージョンによって以前に用いられていたメインメモリの少なくとも一部は上書きされ得るが、メインメモリのOVMCによって管理される部分は、修正されないままであってもよい。ハイパーバイザの新しいバージョンがブートした後で、それは、一時停止されているGVMを再アクティブ化し得る(要素1719)。一部の実施形態では、ライブアップデートが成功したという通知がOVMCに提供され得る(要素1722)。様々な実施形態では、ハイパーバイザの新しいバージョンが仮想化コンピューティングサービスにおいて開発配備されると、同様の動作セットが、仮想化ホストのライフサイクル中に数回行われ得る。
【0079】
少なくとも一実施形態では、ゲスト仮想マシンに対する少なくともいくつかのメモリ割当ては、オフロードカードそれ自体の一部ではない、仮想化サービスの制御プレーンコンポーネントで行われ得る。例えば、仮想化ホストとは別のホスト(仮想化ホストからネットワークを介して連絡可能な)で動作中の制御プレーンコンポーネントは、一部のそうした実施形態では、仮想化ホストのハイパーバイザに、GVMのための利用可能なメモリ、割り当てられたGVMごとのメモリなどに関して問い合わせすることに関与し得る。そうした遠隔制御プレーンコンポーネントは、仮想化ホストに対する、オフロードされた仮想化マネージャコンポーネントの別の変形と見なされ得る。
【0080】
ハイパーバイザにおけるオポチュニスティックタスク処理
先に記述したように、仮想化マネージャは、様々な実施形態では、そうでなければゲスト仮想マシンに対して用いることができるホストリソース(例えば、物理CPU及び物理メモリ)の消費を最小化するように設計され得る。一部の実施形態では、この最小化の一態様は、GVMによって物理CPUが自発的に放棄されるまで特定の仮想化管理タスクを先送りし、その後、物理CPUが利用可能であることをGVMが見込まない期間にタスクを行う機会を利用するハイパーバイザを備え得る。それを行うために、様々な実施形態では、OVMCまたは仮想化コンピューティングサービスの制御プレーンによって発行されるコマンド/要求に向けた非同期的なアプローチが取られ得る。さらに、デフォルトで、ハイパーバイザのサブコンポーネントの一部または全ては、休止状態または受動状態を保ち得、ホストリソースを利用する機会が有効になったとき、及び/または、他のサブコンポーネントからのメッセージが受信されたとき、受動状態をイクジットする。このオポチュニスティックアプローチによって、先に記述したように、GVMで実行されているアプリケーション動作のパフォーマンスにおける変動すなわちジッターの低減が支援され得る。
【0081】
図18は、少なくとも一部の実施形態による、オポチュニスティックハイパーバイザの例示的なサブコンポーネント及び通信機構を示す。示すように、仮想化ホスト1802は、pCPU1805A及び1805Bを含むいくつかの物理CPU(pCPU)1805
を備え得る。ホストはまた、オポチュニスティックな、デフォルトで休止しているハイパーバイザ1820、及びオフロードカード1810上の1つまたは複数のオフロードされた仮想化マネージャコンポーネント(OVMC)1872も備え得る。OVMCは、ネットワーク処理オフローダ1815及び仮想化コントローラ1816を含み得る。ハイパーバイザ1820は、描かれた実施形態では、ハイパーバイザコーディネータ1825、カーネルレベルコンポーネント1822、1つまたは複数のGVMマネージャ1828、分離/セキュリティコンポーネント1829及びキューマネージャ1875を備え得る。
【0082】
示す例示的なシナリオでは、pCPU1805のそれぞれは、各GVMによる使用のために指定される-例えば、GVMマネージャ1828Aは、GVM1850Aに割り当てられた仮想CPUをpCPU1805Aにマッピングし、GVMマネージャ1828Bは、GVM1850Bに割り当てられた仮想CPUをpCPU1805Bにマッピングする。他の実施形態では、GVMとpCPUの1:1のマッピングは、必ずしも実行されなくてもよい-例えば、単一のpCPUがいくつかのGVM間で共有され得、または、所与のGVMが1つより多いpCPUにマッピングされ得る。
【0083】
キューマネージャ1875は、描かれた実施形態では、仮想化コントローラ1816とハイパーバイザの他のコンポーネントの仲介役として動作し得る。一部の実装例では、仮想化コントローラ1816は、自らを、NVMe(不揮発性メモリエクスプレス)デバイスとして公開し得、キューマネージャは、仮想化コントローラによって発行された管理用のコマンド/要求を論理「to-do」タスクキュー1848のそれぞれのエントリ(エントリT5及びT6などの)に変換し得る。そうしたタスクの例として、とりわけ、所与のGVM、様々なハードウェアのサブコンポーネントまたはハイパーバイザそれ自体に関連するメトリクスを収集すること、既存のGVMのシャットダウンまたは再スタートを開始すること、新しいGVMを起動すること、終了作業中のGVMによって使用されていたメモリをスクラブすることなどが含まれ得る。少なくとも一部の実施形態では、キューを利用した、またはファーストインファーストアウトのプロトコルが、物理キューデータ構造を必ずしも実装しなくても用いられ得ることに留意されたい。つまり、論理to-doタスクキュー1848は、バッファの連結リストなどといった、キュー以外の物理データ構造を用いて実装されてもよいことがある。少なくとも一部の実施形態では、ストレイトフォワードなキューの変形が用いられ得る-例えば、エントリは、単なるファーストインファーストアウトポリシーを用いる代わりに相対的優先順位に基づいてキュー内に配置され得る。
【0084】
ハイパーバイザコーディネータ1825といったハイパーバイザの他のコンポーネントは、GVMによってpCPUが解放された結果アクティブ化されると、to-doタスクキューの内容を検査し、未処理タスクが存在する場合、応答アクションをとり得る。タスクの性質次第で、ハイパーバイザコーディネータは、タスク自体を行うかまたはタスクを、実装するために別のサブコンポーネントに渡すかのいずれかを行い得る。タスクの完了後、一部の実施形態では、要求された動作の結果を示すエントリ(例えばT1またはT2)は、任意完了タスクキュー1849に配置され得る。キューマネージャは、描かれた実施形態では、対応するエントリが完了タスクキュー1849に配置されている場合/配置されているとき、要求されたタスクは完了しているという表示(及び/または要求されたタスクの結果)を仮想化コントローラに提供し得る。一部の実施形態では、完了タスクキューは実装されなくてもよい。少なくとも一実装例では、ハイパーバイザのサブコンポーネントの少なくともいくつかの間で統合内部通信機構としてパイプが用いられ得る。サブコンポーネントのいくつかまたは全ては、通常、時間の多くを、メッセージを待機しながら、ポーリングプリミティブでブロック状態(例えば、epoll()システムコールまたは論理的同等物を用いて)で費やす。
【0085】
描かれた実施形態では、ハイパーバイザのサブコンポーネントが、少なくとも、それに割り当てられた所与の仮想化管理タスクの目的とされた部分を完了するとすぐに、デフォルトの受動状態または休止状態に遷移し得、タスクのために用いられたpCPUは解放され、pCPUを放棄したGVMに戻され得る。GVMは、異なる実施形態では、様々な理由でpCPUを明け渡し得る。例えば、GVMはI/O動作が完了するのを待機しなくてはならないという理由で、または、タイマー値が読み出されなくてはならないという理由で、などである。一部の実施形態では、GVMは、ハイパーバイザコンポーネントによってコーディネートされる、または行われる動作を要求し得、pCPUを放棄して、ハイパーバイザが要求された動作を行うのを可能にし得る。オペレーティングシステムコンポーネントまたはデバイスドラバレベルコンポーネントといった、GVMの管理上のコンポーネントは、様々な実施形態では、通常、pCPUを放棄し得る。
【0086】
一部の実装例では、GVMによる特定の仮想化命令(「VM exit」命令と呼ばれ得る)の発行は、pCPUが放棄されていることをカーネルレベルコンポーネント1822に示し得る。カーネルレベルコンポーネントは、ハイパーバイザ1820の1つまたは複数の他のコンポーネント(コンテキストを切り替えているGVMに関連するGVMマネージャ1828、及び/またはハイパーバイザコーディネータ1825など)に、pCPUが利用可能になったことを通知し得る。この通知は、to-doタスクキュー1848の検査をトリガし得(現在利用可能なpCPUを用いて)、ひいては、1つまたは複数のキューされているタスク(ならびに、GVMによるpCPUの解放へつながったGVMによって要求された動作、そうした動作が要求された場合)の実行につながり得る。解放されたpCPUは、キューされているタスクの少なくとも一部を行うのに用いられ得る。キューされているタスクが完了されると、タスクを行ったハイパーバイザコンポーネントは、様々な実施形態において、そのデフォルトの受動/休止状態に再遷移し得る。キューされている仮想化管理タスクは、様々な実施形態では、GVMがpCPUの使用を見込まない期間中に主に(またはその期間中にのみ)、pCPUを用いて行われ得る。
【0087】
大抵の場合、オポチュニスティックハイパーバイザで処理される個々の仮想化管理タスクは、様々な実施形態において、特にGVM(そのpCPUの放棄がタスクの実行につながった)が通常pCPUを放棄した後のそれを使用しないことを見込む期間の長さに比べて、非常にわずかな時間をとり得る。結果的に、大部分のタスクは、ハイパーバイザによって、ハイパーバイザ自体がpCPUを解放する前に、完全に動作し得る。しかしながら、少なくとも一部の実施形態では、ハイパーバイザは、より長期的な仮想化管理タスクを行うことを必要とされ得る、または要求され得ることがある。そうした実施形態では、より長いタスクに必要とされる作業は、状態マシンを用いて管理され得、状態マシンの個々の遷移は、全体のタスクのうち別々に実行可能なサブタスクに対応する。図18に描かれた実施形態では、状態マシン格納領域1862は、そうしたより長期的なタスクに対応するのに用いられ得る。
【0088】
より長いタスク全体を一挙に行うことに代えて、描かれた実施形態では、対応する状態マシンの1つまたはいくつかの状態遷移が、ハイパーバイザがpCPUを解放する前に、一度行われ得、状態遷移が完了しているという表示が領域1862に格納される。pCPUが利用可能になると、ハイパーバイザコンポーネントは、場合によっては、状態マシンによって表されるタスクがまだ完了していないことを判定し得る(例えば、to-doタスクキューのヘッドを検査することによって)。次いで、ハイパーバイザコンポーネントは、マシンの現在の状態を検査し、次の遷移を行うために行われる必要がある作業を識別し、その作業を行い、領域1862の状態マシン表現を更新し、そして、さらなる状態遷移が依然完了していない場合でもpCPUを解放してその休止状態に再エンターし得る。タスクが最終的に完了するまで、ハイパーバイザコンポーネントは、より長期的なタスクの作業をさらに行う機会を得る度に、そのようにし得る。場合によっては、pCPUが解
放されてGVMに戻される前に、1つより多い状態遷移が完了され得る。
【0089】
場合によっては、仮想化管理タスクは、例えば仮想化コンピューティングサービスの制御プレーンによって、高い優先順位を割り当てられ得、このタスクはpCPUがGVMによって自発的に明け渡される前にハイパーバイザコンポーネントをアクティブ化することを要するとしても、可能な限り早く完了されるべきであることを示す。割り込みベースの機構は、そうした高い優先順位のタスクのために用いられ得、このタスクは、大部分の実施形態において通常非常にまれに必要とされ得る。タスクを受動的にキューする代わりに、仮想化コントローラは、ハイパーバイザに割り込みを発行し得、ハイパーバイザコンポーネントに高い優先順位のタスクを呼び起こさせ開始させる。そうした高い優先順位のタスクは、例えば、特定のゲスト仮想マシンの不健康な状態を診断または解決することを含み得る(例えば、GVMが無限ループにとらわれているように見える、または、正常な通信に無反応である場合)。割り込みベースの機構は、一部の実施形態では、主にキューベースの機構が不十分に見える異常な状況下で用いられる、OVMCとハイパーバイザの間の相互作用のバックアップ技術として機能し得る。
【0090】
図19及び図20は、少なくとも一部の実施形態による、オポチュニスティックハイパーバイザによる管理タスクの実行に関連するイベントの例示的なシーケンスを集合的に示す。デフォルト状態1945では、ゲスト仮想マシン1910はpCPU1950を利用し、一方、ハイパーバイザ1925のプロセス/コンポーネントは休止状態または受動状態にとどまり(すなわちpCPUサイクルを消費しない)、GVM1910がpCPUを解放するのを待機する。
【0091】
GVM1910は、最終的に、図19の要素1947で示すように、pCPUを自発的に解放し得る。場合によっては、GVM1910は、要求1924(タイマーアクセス要求またはI/O要求などの)をハイパーバイザ1925に発行し得、その要求は、GVMが作業を進めることができる前に応答を必要とし、pCPU1950は、応答が取得されるまで放棄される。場合によっては、GVM1910は、作業要求1924を発行することなくpCPUを明け渡し得る-例えば、GVMで動作中のアプリケーションがsleep()コマンドまたは同等物を発行する場合。
【0092】
要素1948に示すように、その後、ハイパーバイザ1925はpCPU1950を取得し得る。ハイパーバイザは、to-doタスクキュー1971を検査して、未処理の(今のところ未完了な)仮想化管理タスクが存在するかどうかを確認し得る。描かれたシナリオでは、タスクT5及びT6がto-doキュー1971に存在し、したがって、ハイパーバイザは、少なくともキューのヘッドのタスク(すなわちT5)に対応する作業を開始し得る。GVM要求1924に関連する作業は継続され得る(例えば、キュー1971の検査及びタスクT5の実行と並行して)。キューされているタスクの典型的な持続時間は、様々な実施形態では、GVM要求1924を処理するのに要される時間よりずっと短いものであり得る。
【0093】
デキューされたタスクは、最終的に、GVM1910によって明け渡されたpCPUを用いてハイパーバイザによって完了され得る(図20の要素1949に示すように)。T5が完了していることを示すエントリは、描かれた実施形態では、完了タスクキュー1957に配置され得る。GVM要求1924に関連する作業は、場合によっては、まだ継続中であり得る。ハイパーバイザは、描かれた実施形態では、タスクT6が未処理のままであり得るとしても、T5を終了した後でpCPUを明け渡し得る(図20の要素1950に示すように)。一部の実施形態では、ハイパーバイザは、GVM要求1924がどれくらいかかるかを推定し、その推定が、キューされているタスクはGVM要求が満たされる前に完了することができると示す場合、1つより多いキューされているタスク(例えばT
5及びT6の両方)を行い得る。GVM要求1924に対応する応答1952は最終的にGVM1910に提供され得る。次いで、GVMは、pCPUを再取得し得、ハイパーバイザはデフォルトの休止状態に再度再エンターし得る(要素1945)。
【0094】
先に記述したように、特定の仮想化管理タスクに対して、ハイパーバイザをアクティブ化するための割り込みベースのアプローチが取られ得る。図21は、少なくとも一部の実施形態による、割り込み駆動型キューベースのタスクのハイパーバイザでの実装に関連する動作の態様を示す流れ図である。要素2101に示すように、仮想化コンピューティングサービスの制御プレーンは、要求R1を、オフロードされた仮想化マネージャコンポーネント上に送信し得る。OVMCは、要求された動作の優先順位または緊急性を判定し得る(要素2104)。要素2107に対応する動作で判定されるように、即座のまたは緊急の応答が必要とされる場合(すなわち、要求R1が平均的な仮想化管理タスクに対して高い優先順位を有する場合)、割り込み機構が用いられてハイパーバイザをアクティブ化し得る(要素2110)。R1に対して必要とされる作業の詳細は、即座の実装のためにハイパーバイザに提供され得る。少なくとも一部の実施形態では、ハイパーバイザは、今度は、高い優先順位の作業を行うために、GVMを割り込みまたは一時停止し得る(要素2113)。先に記述したように、場合によっては、高い優先順位の要求には、GVM-例えば、正常な通信に対応するように見えない、または、ループに閉じ込められているように見えるGVMの異常なまたは期待外の状態を解決またはデバッグすることが含まれ得る。
【0095】
要素2107に対応する動作でやはり判定されるように、R1が、即座に完了される必要がない通常の優先順位のタスクに対応する場合、キューベースのプロトコルを用いて、R1に関してハイパーバイザに非同期的に通知し得る(要素2116)。例えば、R1の詳細を含むタスク記述子は、キュー、または、pCPUがGVMによって放棄されハイパーバイザが受動状態からアクティブ状態に遷移するときにハイパーバイザコンポーネントによってこのタスク記述子を読み出すことができる何らかの他の場所に配置され得る。
【0096】
上述したように、場合によっては、相対的に短い大部分のタスクとは対照的に、長い持続時間の仮想化管理タスクがハイパーバイザによって行われなければならない場合がある。図22は、少なくとも一部の実施形態による、異なる期待持続時間のタスクをハイパーバイザで管理することに関連する動作の態様を示す流れ図である。要素2201に示すように、物理CPUはハイパーバイザに対して利用可能となり得る(例えば、GVMが自発的にpCPUを解放したとき)。ハイパーバイザは、例えば論理to-doタスクキューのヘッドまたはパイプラインを検査することによって、まだ完了していない未処理の仮想化管理タスクT1を識別し得る(要素2204)。
【0097】
仮想化管理タスクは、描かれた実施形態では、完全実行タスク(通常、持続期間が短い)と状態マシン必要タスク(持続期間が長い)として分類され得る。ハイパーバイザが、T1は完全実行タスクであると判定した場合(要素2207に対応する動作で判定されたように)、ハイパーバイザは、pCPUを解放しGVMの使用に戻す前に、T1を終わらせ得る(要素2210)。そうではなく、要素2207に対応する動作でやはり判定されるように、T1が状態マシンの使用を必要とするより長いタスクである場合、T1に対する状態マシン表現にアクセスし得る(または作成し得る、これがT1への初めての遭遇である場合)。状態マシンの次の遷移に対応する作業が実装され得る。状態マシン表現は更新されて、遷移が行われたことを示し得、pCPUは、ハイパーバイザによって解放され得る(要素2213)。一部の実施形態では、タスクが状態マシンを必要とするか否かに関する決定は、オフロードされた仮想化マネージャコンポーネントで、または仮想化コンピューティングサービスの制御プレーンコンポーネントで、少なくとも部分的になされ得る-つまり、ハイパーバイザは、自身で決定をしなくてもよい場合がある。
【0098】
様々な実施形態では、図5図6図7図16図17図21及び図22の流れ図に示された動作以外の少なくともいくつかの動作が上述の様々な仮想化管理技術を実装するのに用いられ得ることに留意されたい。示される動作のうちのいくつかは、一部の実施形態では実装されなくてもよく、または、異なる順番で、もしくは逐次的ではなく並行して実装されてもよい。
【0099】
図23は、少なくとも一部の実施形態による、オポチュニスティックハイパーバイザの使用によって可能となされ得る、アプリケーションに対する応答時間のばらつきの低減の例を提供する。要素2310は、仮想化コンピューティングサービスのゲスト仮想マシンを用いて動作し得る時間依存のアプリケーションまたはテストの例示的な疑似コードセクションを示す。この例では、時間依存の動作の10000回の反復がループで行われる。時間依存の動作は、場合によってはpCPU単独で実行することができる計算を備え得、または、場合によっては要求応答モードで何らかの他のネットワークエンドポイントと通信することを含み得る。
【0100】
2つのヒストグラムスタイルのグラフ2315及び2316は、それぞれ、非オポチュニスティックハイパーバイザが用いられるシナリオ及びオポチュニスティックハイパーバイザが用いられるシナリオにおける応答時間度数分布を表す。グラフのそれぞれにおいて、時間依存の動作の個々の反復に対して測定される応答時間はX軸に沿って増大し、応答時間の発生の度数はY軸に沿って増大する。従来の非オポチュニスティックハイパーバイザが用いられると、アプリケーションの時間依存の動作に関連する処理は、非常に頻繁に割り込まれ得、応答時間度数分布はグラフ2315に示すものと同様の結果になる。最多数の応答時間(分布のモード2371)は、アプリケーションタスクがあまり中断されなかった(すなわち、ハイパーバイザまたは他の仮想化管理コンポーネントによる割り込みが最小であった)シナリオに対応し得るが、それでもこのモードよりも大きい応答時間が相当数存在し、非常に多くのばらつきが示される。応答時間における広がりが大きいものは、それぞれの場合にハイパーバイザによって行われている仮想化管理タスク次第で時間量が異なる様々な割り込みである、アプリケーションの、ハイパーバイザによって生成される種々の割り込みによって生じている場合がある。
【0101】
対照的に、上述の種類のオポチュニスティックハイパーバイザ(物理CPUを、ゲスト仮想マシンが自発的に放棄するまで取得しない傾向がある)が用いられるシナリオでは、応答時間の分布は全く異なり得る。応答時間の圧倒的大部分は、最小割込み値周辺に近接して集まり得、それによって、非オポチュニスティックハイパーバイザが用いられるときよりもかなり低いジッターが示される。それでも応答時間がより高い場合がいくつか存在するが、これらの場合もまた、最小割込みモード値に近接する傾向がある。オポチュニスティックかつ低フットプリントのハイパーバイザの使用によって可能となされたタイムクリティカルなアプリケーション動作に対する応答時間のばらつきの低減は、様々な実施形態において、アプリケーションの特定のクラスにとって極めて大きな価値を持ち得る。
【0102】
使用事例
仮想化管理処理作業負荷の多くを、仮想化ホストのプライマリCPU及びメモリから離してオフロードする、かつ、セキュリティ機能が高められた多段階仮想化マネージャブートプロセスを実装する上述の技術は、種々の環境において有用であり得る。プロバイダネットワークで実装される多くの大規模な仮想化コンピューティングサービスでは、仮想化管理に関連するオーバーヘッドは、かなりの事業コストを意味し得る。サービス顧客の仮想マシンに割り当てることができないCPUサイクル及びメモリ空間によって、プロバイダネットワーク運用者において投資へのリターンが低くなる結果となり得る。さらに、少なくとも特定のアプリケーションに対して、仮想化管理コンポーネントが顧客アプリケー
ションと干渉する程度は、タイムクリティカルなアプリケーションの結果に影響を与え得、したがって、顧客満足に影響を与え得る。本明細書中に記載するオフローディング技術は、仮想化管理に関連するリソース(例えばCPU及びメモリ)のフットプリントを著しく低減させ得、アプリケーションのパフォーマンスの変動を低減させ得る。サービス顧客のセキュリティ及び分離要件も、仮想化管理の多くが、オペレーティングシステムの別の管理インスタンス及び本格的なハイパーバイザを用いることによるのではなくオフロードカードから処理されるときに、より容易に満たされ得る。
【0103】
例示的なコンピュータシステム
少なくとも一部の実施形態では、部分的にオフロードされた仮想化マネージャなどを実装する技術を含む本明細書中に記載した技術の1つまたは複数の一部またはすべてを実装するサーバは、1つまたは複数のコンピュータアクセス可能な媒体を含んだ、またはそれにアクセスするように構成されている汎用コンピュータシステムを含み得る。図24は、そのような汎用コンピューティングデバイス9000を例示する。例示される実施形態では、コンピューティングデバイス9000は、入力/出力(I/O)インターフェース9030を介して、システムメモリ9020(不揮発性及び揮発性メモリモジュールの両方を含み得る)に連結される、1つまたは複数のプロセッサ9010を含む。コンピューティングデバイス9000は、I/Oインターフェース9030に連結されるネットワークインターフェース9040をさらに含む。
【0104】
様々な実施形態では、コンピューティングデバイス9000は、1つの物理プロセッサ9010を含むユニプロセッサシステム、または、いくつかの物理プロセッサ9010(例えば、2つ、4つ、8つ、または別の好適な数)を含むマルチプロセッサシステムであり得る。プロセッサ9010は、命令を実行することが可能な任意の好適なプロセッサであり得る。例えば、様々な実施形態では、プロセッサ9010は、x86、PowerPC、SPARC、もしくはMIPS ISA、または任意の他の好適なISAなどの様々な命令セットアーキテクチャ(ISA)のうちのいずれかを実装する、汎用または組込みプロセッサであり得る。マルチプロセッサシステムでは、プロセッサ9010の各々は、同じISAを一般的に実装し得るが、必ずしも実装しなくてもよい。一部の実装例では、グラフィックス処理ユニット(GPU)は、従来のプロセッサの代わりに、またはそれらに加えて使用され得る。
【0105】
システムメモリ9020は、プロセッサ(複数可)9010によってアクセス可能な命令及びデータを記憶するように構成され得る。少なくとも一部の実施形態では、システムメモリ9020は、揮発性及び非揮発性部分の両方を含み得、他の実施形態では、揮発性メモリのみが使用され得る。様々な実施形態では、システムメモリ9020の揮発性部分は、スタティックランダムアクセスメモリ(SRAM)、同期ダイナミックRAM、または任意の他のタイプのメモリなどの任意の適切なメモリ技術を使用して実装され得る。システムメモリの(例えば、1つまたは複数のNVDIMMを含み得る)非揮発性部分に関しては、一部の実施形態では、NANDフラッシュデバイスを含むフラッシュベースのメモリデバイスが使用され得る。少なくとも一部の実施形態では、システムメモリの不揮発性部分は、スーパーキャパシタまたは他の蓄電装置(例えば、バッテリ)などの電源を含み得る。様々な実施形態では、メモリスタベースの抵抗ランダムアクセスメモリ(ReRAM)、3次元NAND技術、強誘電RAM、磁気抵抗RAM(MRAM)、または様々なタイプの相変化メモリ(PCM)のうちのいずれかが、少なくともシステムメモリの不揮発性部分に対して使用され得る。例示される実施形態では、上述のそれらの方法、技術、及びデータなどの1つまたは複数の所望の機能を実装するプログラム命令及びデータは、コード9025及びデータ9026として、システムメモリ9020内に記憶されることが示される。
【0106】
一実施形態では、I/Oインターフェース9030は、プロセッサ9010と、システムメモリ9020と、ネットワークインターフェース9040、または、様々なタイプのオフロードカード、永続的及び/または揮発性記憶デバイスなどの他の周辺インターフェースを含む、デバイス内の任意の周辺デバイスとの間のI/Oトラフィックを調整するように構成され得る。一部の実施形態では、I/Oインターフェース9030は、あるコンポーネント(例えば、システムメモリ9020)からのデータ信号を、別のコンポーネント(例えば、プロセッサ9010)による使用に適した形式に変換するために、任意の必要なプロトコル、タイミング、または他のデータ変換を実行し得る。一部の実施形態では、I/Oインターフェース9030は、例えば、ペリフェラルコンポーネントインターコネクト(PCI)またはPCI-Expressバス規格、もしくはユニバーサルシリアルバス(USB)規格の変形など、様々なタイプの周辺バスを通じて取設されるデバイスに対するサポートを含み得る。一部の実施形態では、I/Oインターフェース9030の機能は、例えば、ノースブリッジ及びサウスブリッジなどの2つ以上の別々のコンポーネントに分割され得る。また、一部の実施形態では、システムメモリ9020へのインターフェースなどのI/Oインターフェース9030の機能性のうちのいくつかまたはすべては、プロセッサ9010に直接組み込まれ得る。
【0107】
ネットワークインターフェース9040は、データが、コンピューティングデバイス9000と、例えば、図1図23に例示されるような他のコンピュータシステムまたはデバイスなどの、ネットワーク(1つまたは複数)9050に取設される他のデバイス9060との間で交換されることを可能にするように構成され得る。様々な実施形態では、ネットワークインターフェース9040は、例えば、イーサネット(登録商標)ネットワークのタイプなどの任意の適切な有線または無線の一般データネットワークを介した通信をサポートし得る。さらに、ネットワークインターフェース9040は、アナログ音声ネットワークまたはデジタルファイバ通信ネットワークなどの電気通信/テレフォニネットワークを介した、ファイバチャネルSANなどのストレージエリアネットワークを介した、または任意の他の適切なタイプのネットワーク及び/またはプロトコルを介した通信をサポートし得る。
【0108】
一部の実施形態では、システムメモリ9020は、対応する方法及び装置の実施形態を実装するための図1図23に関して上述のようなプログラム命令及びデータを記憶するように構成される、コンピュータアクセス可能な媒体の一実施形態であり得る。しかし、他の実施形態では、プログラム命令及び/またはデータは、異なるタイプのコンピュータアクセス可能な媒体上で、受信、送信、または記憶され得る。一般的に言えば、コンピュータアクセス可能な媒体は、I/Oインターフェース9030を介してコンピューティングデバイス9000に連結される、磁気媒体または光媒体、例えば、ディスクまたはDVD/CDなどの非一時的記憶媒体またはメモリ媒体を含み得る。非一時的コンピュータアクセス可能記憶媒体はまた、システムメモリ9020または別のタイプのメモリとして、コンピューティングデバイス9000の一部の実施形態に含まれ得る、RAM(例えば、SDRAM、DDR SDRAM、RDRAM、SRAMなど)、ROMなどといった任意の揮発性または不揮発性媒体も含み得る。さらに、コンピュータアクセス可能な媒体は、ネットワークインターフェース9040を介して実装され得るような、ネットワーク及び/または無線リンクなどの通信媒体を介して伝送される伝送媒体または電気信号、電磁信号、もしくはデジタル信号などの信号を含み得る。図24に示されるような複数のコンピューティングデバイスのうちの一部またはすべては、様々な実施形態では、記載される機能性を実装するために使用され得て、例えば、様々な異なるデバイス及びサーバ上で実行するソフトウェアコンポーネントが、機能性を提供するために協働し得る。一部の実施形態では、記載される機能性の一部は、汎用コンピュータシステムを使用して実装されることに加えて、またはその代わりに、記憶デバイス、ネットワークデバイス、または特殊目的コンピュータシステムを使用して実装され得る。「コンピューティングデバイス」と
いう用語は、本明細書で使用される場合、少なくともすべてのこれらのタイプのデバイスを指し、これらのタイプのデバイスに限定されない。
【0109】
本開示の実施形態は、以下の条項を鑑みて説明することができる。
1.仮想化ホストの1つまたは複数のプロセッサと、
前記仮想化ホストのメインメモリと、
第1のオフロードされた仮想化マネージャコンポーネントを含む1つまたは複数のオフロードされた仮想化マネージャコンポーネントであって、前記第1のオフロードされた仮想化マネージャコンポーネントはペリフェラルインターコネクトを介して前記1つまたは複数のプロセッサからアクセス可能である、前記オフロードされた仮想化マネージャコンポーネントとを備えるシステムであって、
前記メモリは、前記1つまたは複数のプロセッサで実行されると、
第1のサイズのメモリページに対する第1のページテーブルのために、前記メインメモリの第1の部分を指定し、前記第1のサイズの少なくともいくつかのメモリページは、前記ハイパーバイザの1つまたは複数のサブコンポーネントに代わって割り当てられ、
前記ハイパーバイザのライブアップデートに対して用いられる実行可能なオブジェクトのために、前記メインメモリの少なくとも第2の部分を確保し、
前記第1のオフロードされた仮想化マネージャコンポーネントからのクエリに応じて、
1つまたは複数のゲスト仮想マシンに対して利用可能である前記メインメモリの少なくとも第3の部分の指示を提供するように構成されているハイパーバイザを実装するプログラム命令を備え、
前記第1のオフロードされた仮想化マネージャコンポーネントは、
メインメモリの前記第3の部分のサブセットを、前記仮想化ホストにおいてインスタンス作成される第1のゲスト仮想マシンに割り当て、
前記ハイパーバイザに、少なくとも、第2のサイズのメモリページに対する第2のページテーブルの位置を示すページングメタデータを送信し、前記第2のページテーブルは前記ハイパーバイザによって構築され、前記第1のゲスト仮想マシンに代わって用いられるように構成されている、前記システム。
【0110】
2.前記第2のページテーブルが、前記第1のサイズよりも大きいサイズのメモリページに対するエントリを備える、条項1に記載のシステム。
【0111】
3.前記第1のオフロードされた仮想化マネージャコンポーネントが、
前記ハイパーバイザに、ライブアップデートに用いられる前記ハイパーバイザの新しいバージョンを備える実行可能なオブジェクトの指示を送信し、前記新しいバージョンは、前記ハイパーバイザによる前記ライブアップデートに先立って用いられるメモリ管理データ構造に適用される変換機能を備えるように構成されており、
前記ハイパーバイザが、
前記実行可能なオブジェクトを、前記メインメモリの前記第2の部分に格納するように構成されている、条項1に記載のシステム。
【0112】
4.前記第1のオフロードされた仮想化マネージャコンポーネントが、
前記第1のゲスト仮想マシンが前記仮想化ホストにおいて起動された後で、前記ハイパーバイザに、前記ハイパーバイザのライブアップデートを開始するコマンドを送信するように構成されており、
前記ハイパーバイザが、
前記第1のゲスト仮想マシンをリブートすることなしに、前記コマンドに応答するライブアップデートの一部として、前記メインメモリの前記第2の部分に格納されている実行可能なオブジェクトを用いてインプレースリブート動作を行うように構成されている、
条項1に記載のシステム。
【0113】
5.前記第1のオフロードされた仮想化マネージャコンポーネントが、
少なくとも前記第1のゲスト仮想マシンに関するデバイス状態情報を保存するのに利用される前記メインメモリの第4の部分を選択し、前記デバイス状態情報は、前記ハイパーバイザのライブアップデート中、前記ハイパーバイザのインプレースリブートを通して保持され、
前記メインメモリの前記第4の部分の位置を前記ハイパーバイザに提供するように構成されている、条項1に記載のシステム。
【0114】
6.仮想化ホストに関連するオフロードされた仮想化マネージャコンポーネントによって、1つまたは複数のゲスト仮想マシンに対して用いられる前記仮想化ホストのメモリの少なくとも第1の部分を判定することと、
前記仮想化ホストのハイパーバイザによって、前記ハイパーバイザのライブアップデートのために、前記メモリの少なくとも第2の部分を確保することと、
前記オフロードされた仮想化マネージャコンポーネントによって、メモリの前記第1の部分のサブセットを、前記仮想化ホストにおいてインスタンス作成される第1のゲスト仮想マシンに割り当てることと、
前記オフロードされた仮想化マネージャコンポーネントによって、前記ハイパーバイザに、前記第1のゲスト仮想マシンに代わって利用されるメモリの前記第1の部分の前記サブセットの指示を提供することとを含む、方法。
【0115】
7.前記ハイパーバイザによって、前記ハイパーバイザのサブコンポーネントに代わって割り当てられる少なくとも特定のサイズのメモリページに対して用いられる第1のページテーブルを確立することと、
前記オフロードされた仮想化マネージャコンポーネントによって、前記第1のゲスト仮想マシンによってアクセスされるページに対して用いられる第2のページテーブルの位置を選択することと、
前記オフロードされた仮想化マネージャコンポーネントによって、前記第2のページテーブルの前記位置を前記ハイパーバイザに提供することとをさらに含む、条項6に記載の方法。
【0116】
8.前記第2のページテーブルが、前記特定のサイズとは異なるサイズのメモリページに対するエントリを備える、条項7に記載の方法。
【0117】
9.(a)前記第1のゲスト仮想マシンに割り当てられたメモリの前記第1の部分の前記サブセットを修正することなく、かつ(b)前記第1のゲスト仮想マシンをリブートすることなく、前記ハイパーバイザのライブアップデートを、前記メモリの前記第2の部分を用いて行うことをさらに含む、条項6に記載の方法。
【0118】
10.前記オフロードされた仮想化マネージャコンポーネントによって、前記ハイパーバイザに、ライブアップデートに用いられる前記ハイパーバイザの新しいバージョンを備える実行可能なオブジェクトの指示を送信することであって、前記新しいバージョンは、前記ハイパーバイザによる前記ライブアップデートに先立って用いられるメモリ管理データ構造に適用される変換機能を備える、前記送信することと、
前記ハイパーバイザによって、前記新しいバージョンを、前記メモリの前記第2の部分に格納することとをさらに含む、条項6に記載の方法。
【0119】
11.前記オフロードされた仮想化マネージャコンポーネントによって、前記ハイパーバイザのライブアップデートを開始するコマンドを前記ハイパーバイザに送信することを
さらに含む、条項6に記載の方法。
【0120】
12.前記オフロードされた仮想化マネージャコンポーネントによって、少なくとも前記第1のゲスト仮想マシンに関するデバイス状態情報を保存するのに利用される前記メモリの第3の部分を選択することであって、前記デバイス状態情報は、前記ハイパーバイザのライブアップデート中、前記ハイパーバイザのインプレースリブートを通して保持される、前記選択することと、
前記オフロードされた仮想化マネージャコンポーネントによって、メモリの前記第3の部分の位置を前記ハイパーバイザに提供することとをさらに含む、条項6に記載の方法。
【0121】
13.前記デバイス状態情報が、前記第1のゲスト仮想マシンによって入力/出力(I/O)動作を行うために用いられるパススルーデバイスに関連する少なくとも1つのエントリを備える、条項12に記載の方法。
【0122】
14.前記オフロードされた仮想化マネージャコンポーネントの少なくとも一部が、(a)ペリフェラルコンポーネントインターコネクト-Express(PCI-E)バス、(b)QuickPathインターコネクト(QPI)、または(c)UltraPathインターコネクト(UPI)のうち1つまたは複数を介して、前記仮想化ホストの1つまたは複数のプロセッサからアクセス可能な基板に実装される、条項6に記載の方法。
【0123】
15.前記オフロードされた仮想化マネージャコンポーネントの少なくとも一部が、前記仮想化ホストからネットワーク接続を介してアクセス可能な異なるホスト内に組み込まれ、前記異なるホストが、仮想化コンピューティングサービスの制御プレーンの一部である、条項6に記載の方法。
【0124】
16.1つまたは複数のプロセッサで実行されると、仮想化ホストに関連するオフロードされた仮想化マネージャコンポーネントを実装するプログラム命令を格納する非一時的なコンピュータアクセス可能なストレージ媒体であって、前記オフロードされた仮想化マネージャコンポーネントは、
前記仮想化ホストのハイパーバイザから、前記ハイパーバイザによるメモリ割当て決定が行われない前記仮想化ホストのメモリの少なくとも第1の部分の指示を受信し、
メモリの前記第1の部分のサブセットを、前記仮想化ホストにおいてインスタンス作成される特定のゲスト仮想マシンに割り当て、
前記第1のゲスト仮想マシンに代わって利用されるメモリの前記第1の部分の前記サブセットの指示を前記ハイパーバイザに提供するように構成されている、前記媒体。
【0125】
17.前記オフロードされた仮想化マネージャコンポーネントが、
前記第1のゲスト仮想マシンによってアクセスされるメモリページのために用いられる第1のページテーブルの位置を選択し、前記ハイパーバイザは、少なくとも第2のページテーブルを利用して前記メモリの第2の部分を管理するように構成されており、前記第2の部分に関するメモリ割当て決定は前記ハイパーバイザによって行われ、
前記第2のページテーブルの前記位置を前記ハイパーバイザに提供するように構成されている、条項6に記載の非一時的なコンピュータアクセス可能なストレージ媒体。
【0126】
18.前記第1のページテーブルが、第1のサイズのメモリページに対して用いられ、前記第2のページテーブルが、異なるサイズのメモリページに対して用いられる、条項17に記載の非一時的なコンピュータアクセス可能なストレージ媒体。
【0127】
19.前記オフロードされた仮想化マネージャコンポーネントが、
前記ハイパーバイザに、ライブアップデートに用いられる前記ハイパーバイザの新し
いバージョンを備える実行可能なオブジェクトの指示を送信するように構成されており、前記新しいバージョンは、前記ハイパーバイザによる前記ライブアップデートに先立って用いられるメモリ管理データ構造に適用される変換機能を備える、条項16に記載の非一時的なコンピュータアクセス可能なストレージ媒体。
【0128】
20.前記オフロードされた仮想化マネージャコンポーネントが、
少なくとも前記第1のゲスト仮想マシンに関するデバイス状態情報を保存するのに利用される前記メモリの第2の部分を選択し、前記デバイス状態情報は、前記ハイパーバイザのライブアップデート中、前記ハイパーバイザのインプレースリブートを通して保持され、
メモリの前記第3の部分の位置を前記ハイパーバイザに提供するように構成されている、条項16に記載の非一時的なコンピュータアクセス可能なストレージ媒体。
【0129】
結論
様々な実施形態は、命令の受信、送信、または記憶、及び/またはコンピュータアクセス可能媒体に関する前述の説明に従って実装されたデータをさらに含み得る。一般的に言えば、コンピュータアクセス可能媒体は、磁気または光学媒体、例えば、ディスクまたはDVD/CD-ROM、RAM(例えば、SDRAM、DDR、RDRAM、SRAMなど)、ROMなどといった揮発性または不揮発性媒体などの記憶媒体またはメモリ媒体、ならびにネットワーク及び/または無線リンクなどの通信媒体を介して伝送される伝送媒体または電気信号、電磁信号、もしくはデジタル信号などの信号を含み得る。
【0130】
本明細書で図に例示され説明される様々な方法は、本方法の例となる実施形態を表す。本方法は、ソフトウェア、ハードウェア、またはこれらの組み合わせで実装され得る。方法の順序は変更され得て、様々な要素の、追加、再順位付け、組み合わせ、除外、変更などがされ得る。
【0131】
本開示の利点を有する当業者に明白であるように、種々の変形及び変更を行い得る。すべてのそのような変形及び変更を含むことを意図しており、したがって、上記説明が限定的な意味ではなく、例示的であると考えるべきである。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24