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

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

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

(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-03-28
(45)【発行日】2025-04-07
(54)【発明の名称】ハイパーバイザのホットリスタート
(51)【国際特許分類】
   G06F 9/455 20180101AFI20250331BHJP
【FI】
G06F9/455 150
【請求項の数】 20
(21)【出願番号】P 2022554566
(86)(22)【出願日】2021-03-15
(65)【公表番号】
(43)【公表日】2023-05-25
(86)【国際出願番号】 US2021022266
(87)【国際公開番号】W WO2021211241
(87)【国際公開日】2021-10-21
【審査請求日】2024-02-05
(31)【優先権主張番号】16/849,695
(32)【優先日】2020-04-15
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】314015767
【氏名又は名称】マイクロソフト テクノロジー ライセンシング,エルエルシー
(74)【代理人】
【識別番号】100079108
【弁理士】
【氏名又は名称】稲葉 良幸
(74)【代理人】
【識別番号】100109346
【弁理士】
【氏名又は名称】大貫 敏史
(74)【代理人】
【識別番号】100117189
【弁理士】
【氏名又は名称】江口 昭彦
(74)【代理人】
【識別番号】100134120
【弁理士】
【氏名又は名称】内藤 和彦
(74)【代理人】
【識別番号】100108213
【弁理士】
【氏名又は名称】阿部 豊隆
(72)【発明者】
【氏名】シャーウィン,ブルース ジェイ.,ジュニア
(72)【発明者】
【氏名】ラマチャンドラン,サイ ガネーシュ
【審査官】坂東 博司
(56)【参考文献】
【文献】特開2012-220990(JP,A)
【文献】米国特許出願公開第2012/0254865(US,A1)
【文献】特開2007-310884(JP,A)
【文献】特開2016-170669(JP,A)
【文献】Hardik Bagdi et al.,HyperFresh: Live Refresh of Hypervisors Using Nested Virtualization,the 8th Asia-Pacific Workshop,米国,Association for Computing Machinery,2017年09月02日,pp.1-8, [online],[令和7年2月21日検索],インターネット <URL:https://kartikgopalan.github.io/publications/bagdi17hyperfresh.pdf>,DOI:10.1145/3124680.3124734
【文献】SPOORTI DODDAMANI et al.,Fast and Live Hypervisor Replacement,VEE 2019: Proceedings of the 15th ACM SIGPLAN/SIGOPS International Conference on Virtual Execution Environments,20190414,米国,Association for Computing Machinery,pp.45-58,[online],[令和7年2月21日検索],インターネット <URL:https://dl.acm.org/doi/pdf/10.1145/3313808.3313821>,https://doi.org/10.1145/3313808.3313821
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/455
(57)【特許請求の範囲】
【請求項1】
計算システムであって、
1つ又は複数のプロセッサと、
前記1つ又は複数のプロセッサによって実行されるとき、
1つ又は複数のゲストパーティションを作成する第1のハイパーバイザを実行すること、
サービスパーティションを作成すること、
前記第1のハイパーバイザの静的システム状態を用いて前記サービスパーティション内の第2のハイパーバイザを初期設定すること
前記第1のハイパーバイザのランタイム状態の少なくとも一部を前記第2のハイパーバイザと同期することであって、前記第1のハイパーバイザのランタイム状態の少なくとも一部を前記第2のハイパーバイザと同期することは、
前記第1のハイパーバイザからのシステム不変条件に対する要求を共用メモリ上でインターセプトすること、及び
前記共用メモリを介して前記第2のハイパーバイザに前記システム不変条件を伝送するために前記第2のハイパーバイザに逆ハイパーコールを発行すること
を含む、同期すること、及び
前記第1のハイパーバイザを置換するために前記第2のハイパーバイザを前記サービスパーティションから仮想化解除すること
を前記計算システムに行わせるように構成されるコンピュータ実行可能命令をその上に記憶している1つ又は複数のコンピュータ可読媒体と、
を含む、計算システム。
【請求項2】
前記サービスパーティション内の前記第2のハイパーバイザを初期設定することが、前記計算システムの前記1つ又は複数のコンピュータ可読媒体の特定の部分に対する読み出し専用の固有アクセスを付与することを更に含む、請求項1に記載の計算システム。
【請求項3】
前記ランタイム状態が(1)前記ゲストパーティションのゲスト物理メモリを前記計算システムのホスト物理メモリにマップする1つ又は複数の第2レベルメモリページテーブル、(2)1つ又は複数のページフレーム番号データベース、又は(3)ゲストパーティションに付加される物理装置のリスト及び前記物理装置のリストの割り当てのうちの少なくとも1つを含む、請求項1に記載の計算システム。
【請求項4】
前記1つ又は複数のゲストパーティションの少なくとも1つが特権親パーティションを含み、
前記特権親パーティションがホストオペレーティングシステム又は仮想化サービスモジュールを動作させ、
前記ホストオペレーティングシステム又は前記仮想化サービスモジュールが、前記第2のハイパーバイザの前記初期設定及び同期を調整するように構成されるオーケストレータを含み、
前記第1のハイパーバイザは前記第2のハイパーバイザから前記第1のハイパーバイザへの特定の要求を前記オーケストレータがインターセプトすることを可能にする、
請求項1に記載の計算システム。
【請求項5】
前記第2のハイパーバイザから前記第1のハイパーバイザへの要求を前記オーケストレータがインターセプトするとき、前記オーケストレータは前記第2のハイパーバイザに逆ハイパーコールを発行し、メモリページの一部を通信目的で前記第2のハイパーバイザと共用する、請求項4に記載の計算システム。
【請求項6】
前記第2のハイパーバイザを前記初期設定することが、
前記第2のハイパーバイザ用のローダブロックを前記第1のハイパーバイザによって生成することであって、前記ローダブロックは初期設定のための前記静的システム状態の少なくとも一部を記述する論理的構成体を含む、生成すること、
前記オーケストレータによって前記計算システムの1つ又は複数のシステム不変条件を得ること、
前記1つ又は複数のシステム不変条件を前記第2のハイパーバイザと共用すること、及び
前記1つ又は複数のシステム不変条件に基づいて前記第2のハイパーバイザを初期設定すること
を含む、請求項5に記載の計算システム。
【請求項7】
前記1つ又は複数のシステム不変条件が、前記計算システムの1つ又は複数のハードウェア資源によってサポートされる1つ又は複数の特徴を含む、請求項6に記載の計算システム。
【請求項8】
前記オーケストレータが、前記1つ又は複数の特徴を(1)前記第1のハイパーバイザからハイパーコールによって又は(2)ハードウェア資源から直接、のうちの少なくとも1つから得る、請求項7に記載の計算システム。
【請求項9】
前記オーケストレータが、ハードウェア機能を発見し又はクエリするバイナリインタフェースによって前記特徴の少なくとも1つを得る、請求項8に記載の計算システム。
【請求項10】
前記第1のハイパーバイザのランタイム状態を同期することは、
前記オーケストレータによって前記第1のハイパーバイザのランタイム状態を集めること、
前記オーケストレータによって、逆ハイパーコール上で前記第2のハイパーバイザと前記ランタイム状態を共用すること、及び
前記第2のハイパーバイザに、前記ランタイム状態を複製させること、
を含む、請求項6に記載の計算システム。
【請求項11】
前記ランタイム状態を集めることは、
前記第1のハイパーバイザにより、ゲストパーティションによって呼び出されるハイパーコールを受信すること、
前記第1のハイパーバイザにより、前記ハイパーコールにサービス提供すること、及び
前記オーケストレータによって、前記ハイパーコールと、前記第1のハイパーバイザによる前記ハイパーコールのサービス中に生じたアクションのログとを記録すること、
を含み、前記ランタイム状態を共有することは、
前記オーケストレータにより、前記ハイパーコールを前記第2のハイパーバイザにフィードすること、及び
前記オーケストレータにより、前記第2のハイパーバイザに前記アクションのログをフィードすること、
を含む、請求項10に記載の計算システム。
【請求項12】
前記ランタイム状態を複製することは、
前記第2のハイパーバイザ内で前記オーケストレータから逆ハイパーコールを受信すること、
前記逆ハイパーコールを呼び出した前記ゲストパーティションのコンテキストを切り替えること、
前記第2のハイパーバイザにおいて、必要なソフトウェア状態又は休止ハードウェア状態を再構築するために逆ハイパーコールを処理すること、及び
前記逆ハイパーコールの完了を前記オーケストレータに知らせること
を含む、請求項10に記載の計算システム。
【請求項13】
親パーティションがホストオペレーティングシステム及び仮想化サービスモジュールを含み、
前記仮想化サービスモジュールは、少なくとも1つの他のゲストパーティションに仮想化サービスを提供するように構成され、
前記計算システムは、更に、前記ホストオペレーティングシステムをリスタートすることなしに、前記仮想化サービスモジュールをホットリスタートするように構成される、
請求項3に記載の計算システム。
【請求項14】
前記第2のハイパーバイザを仮想化解除することは、
前記第1のハイパーバイザから前記第2のハイパーバイザに前記計算システムの物理的ハードウェアの制御を移すこと、
前記1つ又は複数のゲストパーティションのそれぞれをフリーズすること、
前記第1のハイパーバイザの最終状態を前記第2のハイパーバイザに伝達すること、
それぞれのゲストパーティションを前記第2のハイパーバイザに切り替えること、及び
ゲストパーティションのそれぞれを解凍すること、
を含む、請求項1に記載の計算システム。
【請求項15】
前記計算システムは、更に、前記1つ又は複数のゲストパーティションの少なくとも1つをホットリスタートするように構成される、請求項1に記載の計算システム。
【請求項16】
計算システムによって実装される、ホストのハイパーバイザのホットリスタートのための方法であって、
1つ又は複数のゲストパーティションを作成する第1のハイパーバイザを実行すること、
サービスパーティションを作成すること、
前記第1のハイパーバイザの静的システム状態を用いて前記サービスパーティション内の第2のハイパーバイザを初期設定すること、
前記第1のハイパーバイザのランタイム状態の少なくとも一部を前記第2のハイパーバイザと同期することであって、前記第1のハイパーバイザのランタイム状態の少なくとも一部を前記第2のハイパーバイザと同期することは、
前記第1のハイパーバイザからのシステム不変条件に対する要求を共用メモリ上でインターセプトすること、及び
前記共用メモリを介して前記第2のハイパーバイザに前記システム不変条件を伝送するために前記第2のハイパーバイザに逆ハイパーコールを発行すること
を含む、同期すること、及び
前記第1のハイパーバイザを置換するために前記第2のハイパーバイザを前記サービスパーティションから仮想化解除すること
を含む、方法。
【請求項17】
前記ランタイム状態が(1)前記ゲストパーティションのゲスト物理メモリを前記計算システムのホスト物理メモリにマップする1つ又は複数の第2レベルメモリページテーブル、(2)1つ又は複数のページフレーム番号データベース、又は(3)ゲストパーティションに付加される物理装置のリスト及び前記物理装置のリストの割り当てのうちの少なくとも1つを含む、請求項16に記載の方法。
【請求項18】
前記1つ又は複数のゲストパーティションの少なくとも1つが特権親パーティションを含み、
前記特権親パーティションがホストオペレーティングシステム又は仮想化サービスモジュールを動作させ、
前記ホストオペレーティングシステム又は前記仮想化サービスモジュールが、前記第2のハイパーバイザの前記初期設定及び同期を調整するように構成されるオーケストレータを含む、
請求項16に記載の方法。
【請求項19】
コンピュータ実行可能命令を含むコンピュータプログラムであって、前記コンピュータ実行可能命令は、計算システムの1つ又は複数のプロセッサによって実行されるとき、
1つ又は複数のゲストパーティションを作成する第1のハイパーバイザを実行すること、
サービスパーティションを作成すること、
前記第1のハイパーバイザの静的システム状態を用いて前記サービスパーティション内の第2のハイパーバイザを初期設定すること、
前記第1のハイパーバイザのランタイム状態の少なくとも一部を前記第2のハイパーバイザと同期することであって、前記第1のハイパーバイザのランタイム状態の少なくとも一部を前記第2のハイパーバイザと同期することは、
前記第1のハイパーバイザからのシステム不変条件に対する要求を共用メモリ上でインターセプトすること、及び
前記共用メモリを介して前記第2のハイパーバイザに前記システム不変条件を伝送するために前記第2のハイパーバイザに逆ハイパーコールを発行すること
を含む、同期すること、及び
前記第1のハイパーバイザを置換するために前記第2のハイパーバイザを前記サービスパーティションから仮想化解除すること
を前記計算システムに行わせるように構成される、コンピュータプログラム。
【請求項20】
前記第2のハイパーバイザを仮想化解除することは、
前記第1のハイパーバイザから前記第2のハイパーバイザに前記計算システムの物理的ハードウェアの制御を移すこと、
前記1つ又は複数のゲストパーティションのそれぞれをフリーズすること、
前記第1のハイパーバイザの最終状態を前記第2のハイパーバイザに伝達すること、
それぞれのゲストパーティションを前記第2のハイパーバイザに切り替えること、及び
ゲストパーティションのそれぞれを解凍すること、
を含む、請求項16に記載の方法。
【発明の詳細な説明】
【背景技術】
【0001】
背景
[0001] 計算における仮想化は、物理コンポーネントを論理オブジェクトへと抽象化することをしばしば指す。仮想マシン(VM)は、プロセッサ、メモリ、記憶域、及びネットワークの接続性を含むハードウェア資源を仮想化し、仮想化した資源をホストオペレーティングに示すことができる。VMの仮想化のプロセスは(1)基礎を成す物理的ハードウェア内の実資源に仮想資源又は状態、例えばレジスタ、メモリ、又はファイルをマッピングすること、及び(2)仮想マシン命令及び/又はシステムコールによって指定されるアクション、例えば仮想マシンのアプリケーションバイナリインタフェース(ABI)又は命令セットアーキテクチャ(ISA)インタフェースのエミュレーションを実行するために、機械命令及び/又はシステムコールを使用することの少なくとも2つの部分を含む。
【0002】
[0002] ハイパーバイザは、仮想マシンがその内部で動作する環境(即ち仮想化されたハードウェアパーティション)を提供するソフトウェア層である。ハイパーバイザは、物理的なハードウェア計算システム上の物理資源とVMとの間に位置する。ハイパーバイザなしでは、オペレーティングシステムが自らの下にあるハードウェアと直接通信し、即ちディスクオペレーションがディスクサブシステムに直接行き、メモリ呼び出しが物理メモリから直接フェッチされる。複数のVMの複数のオペレーティングシステムが単一のマシン上で同時に実行されている場合、複数のVMによる共用ハードウェアの同時制御を防ぐようにハイパーバイザが各VMと共用ハードウェアとの間の対話を管理する。
【0003】
[0003] ハイパーバイザが(例えばソフトウェアのアップグレードにより)リセット又はリスタートする場合、ハイパーバイザ上で実行されている全てのVMが中断(例えばリスタート、一時停止等)され、そのことは作業負荷及びVM上で動作しているサービスに著しく影響を与え得る。
【0004】
[0004] 本明細書で主張する内容は任意の不利点を解決する実施形態、又は上記のような環境内でのみ動作する実施形態に限定されない。むしろこの背景は、本明細書に記載する一部の実施形態を実践することができる或る例示的な技術分野を例示するために与えるに過ぎない。
【発明の概要】
【課題を解決するための手段】
【0005】
簡単な概要
[0005] この概要は、以下の詳細な説明の中で更に説明する一連の概念を単純化した形で紹介するために提供する。この概要は、特許請求の範囲に記載する内容の重要な特徴又は本質的な特徴を識別することも、特許請求の範囲に記載する内容の範囲を決定する際の助けとして使用されることも意図しない。
【0006】
[0006] 本明細書に記載する実施形態は、現在実行されているゲストパーティションへの干渉が殆どない状態で第1のハイパーバイザを第2のハイパーバイザと置換するハイパーバイザのホットリスタートに関する。本明細書に記載する実施形態は計算システムにおいて実装される。まず、計算システムが計算システム上で第1のハイパーバイザを実行する。第1のハイパーバイザは1つ又は複数のゲストパーティションを作成するように構成される。ハイパーバイザのソフトリスタート中にサービスパーティションが作成される。第2のハイパーバイザがサービスパーティション内で初期設定される。サービスパーティションは、そのゲスト物理アドレス(GPA)空間とホスト物理アドレス(HPA)空間との間のアイデンティティマッピングと共に作成される。任意選択的に、サービスパーティションはその初期設定を促進するために従来のパーティション/仮想マシンを超える追加の特権を与えられ得る。プラットフォームのブート及びセキュリティ要件を満たすことができる如何なる実行環境もサービスパーティションを作成し及び/又は初期設定することができる。例えば第1のハイパーバイザ等の計算システムの高信頼計算処理機構(TCB)内のコンポーネントが、第2のハイパーバイザを作成又は初期設定するタスクを課され得る。初期設定中、第1のハイパーバイザの状態の少なくとも一部が第2のハイパーバイザに初期設定される。第1のハイパーバイザの状態は、これだけに限定されないが(1)静的システム状態、(2)動的システム状態、及び(3)論理的ソフトウェア状態を含む。静的システム状態は、これだけに限定されないが第1のハイパーバイザのシステムトポロジ、メモリマップ、及びメモリレイアウトを含む。動的システム状態は、これだけに限定されないが汎用レジスタ、モード制御レジスタを含むゲストから見えるハードウェアアーキテクチャ状態を含む。動的システム状態は、これだけに限定されないが仮想中央処理装置(CPU)の状態等のゲストVMの状態、第2レベルページテーブル(入れ子ページテーブルとしても知られる)、及び割り当てられたハードウェア装置(例えばネットワークカード)のリストを含む、仮想化命令セットアーキテクチャ(ISA)固有ハードウェア状態も含む。論理的ソフトウェア状態は、これだけに限定されないがページフレーム番号(PFN)データベースを含む。動的システム状態及び論理的ソフトウェア状態はランタイム中に絶えず変化し得るので、これらの状態はランタイム状態とも呼ばれる。最後に、第1のハイパーバイザを置換するために第2のハイパーバイザがサービスパーティションから仮想化解除され、各VMの状態が第2のハイパーバイザによって回復される。
【0007】
[0007] 一部の実施形態では、1つ又は複数のゲストパーティションの少なくとも1つが特権親パーティションを含み、親パーティションは第2のハイパーバイザの初期設定及び同期を調整するように構成されるオーケストレータを含むホストオペレーティングシステムを動作させる。一部の実施形態では、第1のハイパーバイザは第2のハイパーバイザから受信される一定の要求(例えばハイパーコールインターセプト、レジスタインターセプト)をオーケストレータが登録すること及び完了することを可能にしてサポートする。(第2のハイパーバイザから第1のハイパーバイザに送信される)これらの要求はオーケストレータによってインターセプト(例えば登録及び完了)されるので、かかる要求は「インターセプト」とも呼ばれる。一部の実施形態では、インターセプトを受信することに応答し、関連する状態を移行するためにハイパーコールのアプリケーションバイナリインタフェース(ABI)に従う第2のハイパーバイザにオーケストレータが「逆ハイパーコール」を発行する。ハイパーコールはゲストパーティションからハイパーバイザへの呼び出しであり、「逆ハイパーコール」は特権ソフトウェア又はハードウェアコンポーネント(例えばオーケストレータ)からサービスパーティション内の第2のハイパーバイザへの呼び出しである。一部の実施形態では、オーケストレータがメモリページの一部を通信目的(例えばハイパーコール、インターセプト、及び/又は逆ハイパーコール)で第1のハイパーバイザ及び第2のハイパーバイザと共用し得る。
【0008】
[0008] 実施形態の例はハイパーバイザにサービス提供するための専用パーティション(例えばサービスパーティション)内で実装されるが、サービスの動作不能時間を減らし、より優れた動作可能時間及び継続性を提供するために仮想マシン内のデータ構造を事前に初期設定する及び/又はVM/パーティション内のランタイム状態を移行/同期する全体的な技法は任意のVMのOSの任意の部分に使用され得る。
【0009】
[0009] 更なる特徴及び利点が以下の説明に記載され、説明から部分的に明らかになり、又は本明細書の教示を実践することによって知られ得る。本発明の特徴及び利点は、添付の特許請求の範囲の中で具体的に指摘する器具及び組み合わせによって実現し得ることができる。本発明の特徴は以下の説明及び添付の特許請求の範囲からより完全に明らかになり、又は以下に記載する本発明を実践することによって知ることができる。
【0010】
図面の簡単な説明
[0010] 上記に挙げた利点及び特徴並びに他の利点及び特徴を得ることができる方法を説明するために、上記で簡潔に記載した内容のより具体的な説明を添付図面に示す特定の実施形態を参照することによって行う。これらの図面は典型的な実施形態を示すに過ぎず、従って範囲を限定するものと見なすべきではないことを理解し、添付図面を用いて実施形態を更なる特定性及び詳細と共に記載し説明する。
【図面の簡単な説明】
【0011】
図1A】[0011]1つ又は複数の仮想マシンをホストするハイパーバイザを含む計算システムの一例を示す。
図1B】[0011]1つ又は複数の仮想マシンをホストするハイパーバイザを含む計算システムの一例を示す。
図2】[0012]ゲストパーティションとホスト計算システムとの間の同型性の概略図を示す。
図3A】[0013]VM状態管理の実施形態の一例を示す。
図3B】[0013]VM状態管理の実施形態の一例を示す。
図4】[0014]多段式メモリページテーブルを使用するメモリ仮想化の実施形態400の一例を示す。
図5A】[0015]ハイパーバイザのホットリスタートが有効化される計算システムの一例を示す。
図5B】[0015]ハイパーバイザのホットリスタートが有効化される計算システムの一例を示す。
図6A】[0016]ハイパーバイザのホットリスタートのための方法の一例の流れ図を示す。
図6B】[0017]サービスパーティションを初期設定するための方法の一例の流れ図を示す。
図6C】[0018]第1のハイパーバイザのランタイム状態の一部を第2のハイパーバイザと同期するための方法の一例の流れ図を示す。
図6D】[0019]第1のハイパーバイザのランタイム状態を集めるための方法の一例の流れ図を示す。
図6E】[0020]第1のハイパーバイザのランタイム状態を第2のハイパーバイザと共用するための方法の一例の流れ図を示す。
図6F】[0021]第1のハイパーバイザのランタイム状態を第2のハイパーバイザと複製するための方法の一例の流れ図を示す。
図6G】[0022]第2のハイパーバイザを仮想化解除するための方法の一例の流れ図を示す。
図7】[0023]本明細書に記載する原理を採用することができる計算システムの一例を示す。
【発明を実施するための形態】
【0012】
詳細な説明
[0024] 本明細書に記載する実施形態は、現在実行されているゲストパーティションへの干渉が殆どない状態で第1のハイパーバイザを第2のハイパーバイザと置換するハイパーバイザのホットリスタートに関する。本明細書に記載する実施形態は計算システムにおいて実装される。まず、計算システムが計算システム上で第1のハイパーバイザを実行する。第1のハイパーバイザは、そのそれぞれがゲストオペレーティングシステムをホストする1つ又は複数の仮想マシン/パーティションを作成するように構成される。ハイパーバイザのソフトリスタート中、アイデンティティがマッピングされた第2レベルページテーブルを有するサービスパーティションが作成される。次いで第2のハイパーバイザがサービスパーティション内で初期設定され、第1のハイパーバイザの状態の少なくとも一部と同期する。プラットフォームのブート及びセキュリティ要件を満たすことができる如何なる実行環境も第2のハイパーバイザを作成し及び/又は初期設定することができる。例えば第1のハイパーバイザ等の高信頼計算処理機構(TCB)内のコンポーネントが、サービスパーティションを作成及び/又は初期設定するタスクを課され得る。
【0013】
[0025] 一部の実施形態では、第1のハイパーバイザの状態は、これだけに限定されないが(1)静的システム状態、(2)動的システム状態、及び(3)論理的ソフトウェア状態を含む。静的システム状態は、これだけに限定されないが第1のハイパーバイザのシステムトポロジ、メモリマップ、及びメモリレイアウトを含む。動的システム状態は、これだけに限定されないが汎用レジスタ、モード制御レジスタを含むゲストから見えるハードウェアアーキテクチャ状態を含む。動的システム状態は、これだけに限定されないが仮想中央処理装置(CPU)の状態等のゲストVMの状態、第2レベルページテーブル(入れ子ページテーブルとしても知られる)、及び割り当てられたハードウェア装置(例えばネットワークカード)のリストを含む、仮想化命令セットアーキテクチャ(ISA)固有ハードウェア状態も含む。論理的ソフトウェア状態は、これだけに限定されないがページフレーム番号(PFN)データベースを含む。動的システム状態及び論理的ソフトウェア状態はランタイム中に絶えず変化し得るので、これらの状態はランタイム状態とも呼ばれる。最後に、第1のハイパーバイザを置換するために第2のハイパーバイザがサービスパーティションから仮想化解除され、各VMの状態が第2のハイパーバイザによって回復される。
【0014】
[0026] 一部の実施形態では、1つ又は複数のゲストパーティションの少なくとも1つが特権親パーティションを含み、親パーティションは第2のハイパーバイザの初期設定及び同期を調整するように構成されるオーケストレータを含むホストオペレーティングシステムを動作させる。一部の実施形態では、第1のハイパーバイザがシステムの高信頼計算処理機構(TCB)の一部であり、第2のハイパーバイザのために生成される入力の信頼性を維持するためにオーケストレータが高信頼実行環境(TEE)内で実行される。一部の実施形態では、第1のハイパーバイザは第2のハイパーバイザから受信される一定の要求をオーケストレータが登録すること及び完了することを可能にしサポートする。(第2のハイパーバイザから第1のハイパーバイザに送信される)これらの要求はオーケストレータによってインターセプト(例えば登録及び完了)されるので、かかる要求は「インターセプト」とも呼ばれる。一部の実施形態では、インターセプトを受信することに応答し、関連する状態を移行するためにハイパーコールのアプリケーションバイナリインタフェース(ABI)に従う第2のハイパーバイザにオーケストレータが「逆ハイパーコール」を発行する。ハイパーコールは、典型的には適切な特権の操作を要求するゲストパーティションからハイパーバイザへの呼び出しである。ゲストパーティションコンテキストからハイパーバイザコンテキストへの切り替えは、プラットフォーム固有命令を使用して実現される。プラットフォーム固有命令/メカニズムを使用することに対し、特権操作の完了時に制御がハイパーバイザコンテキストからゲストコンテキストに返される。「逆ハイパーコール」は、特権コンポーネント(例えばオーケストレータ)からハイパーコールABIを使用するサービスパーティション内のハイパーバイザへの操作を要求する。オーケストレータから第2のハイパーバイザコンテキストへの切り替えは、ハイパーコールABIによって要求される通りにフォーマットされたレジスタを有するサービスパーティションの仮想プロセッサの実行を許可することによって実現される。逆ハイパーコールの完了時に、サービスパーティション内の第2のハイパーバイザから元のオーケストレータへの意図的なコンテキストの切り替えを引き起こす非常に特殊なインターセプトを第2のハイパーバイザが生成する。一部の実施形態では、オーケストレータが1つ又は複数のメモリページを通信目的(例えばハイパーコール、インターセプト、及び/又は逆ハイパーコール)で第1のハイパーバイザ及び第2のハイパーバイザと共用し得る。
【0015】
[0027] 一部の実施形態では、第2のハイパーバイザを初期設定することは、第1のハイパーバイザが第2のハイパーバイザ用のローダブロックを生成することを含む。ローダブロックは、初期設定のための静的システム状態の一部を記述する論理的構成体を含む。静的システム状態は、システムトポロジ、メモリマップ、及びレイアウト等の様々なシステム不変条件を含む。メモリマップは、ほぼ全てのシステムメモリのアイデンティティマップを含む。一部の実施形態では、アイデンティティマップは、少なくとも、置換されている第1のハイパーバイザから見えるメモリを含む。例えば一部の事例では、第1の(古い)ハイパーバイザ及び第2の(新しい)ハイパーバイザがどちらもシステム内のメモリの全てに関して知っている。一部の事例では、例えば誤りを含む一部のRAMをオフラインにしなければならないとき、又はホットリスタート中にホットアドされた新たなメモリに関して第2の(新たな)ハイパーバイザが知らなければならないとき、第1のハイパーバイザ及び/又は第2のハイパーバイザの少なくとも1つが全てのメモリについて知らない。オーケストレータは、計算システムのハードウェア資源によってサポートされる少なくとも1つ又は複数の特徴を含む計算システムの1つ又は複数のシステム不変条件を(1)ハイパーバイザによって特定の資源が仮想化されていない場合はハードウェア又はシステム資源から直接、及び/又は(2)基礎を成す物理的ハードウェア資源へのオーケストレータのアクセスが第1のハイパーバイザによって仮想化されている場合は第1のハイパーバイザから得る。一部の実施形態では、オーケストレータが関連するシステム不変条件を逆ハイパーコールによって移行する。次いで、第2のハイパーバイザが共用された1つ又は複数のシステム不変条件に基づいて初期設定される。一部の実施形態では、第2のハイパーバイザを初期設定することが、一定の物理資源に対する読み出し専用の固有アクセスを第2のハイパーバイザに提供することも含み得る。
【0016】
[0028] サービスパーティション内の静的システム状態を用いて第2のハイパーバイザが初期設定された後、計算システムは第1のハイパーバイザのランタイム状態を第2のハイパーバイザに移行し、それを同期させておく。ランタイム状態は少なくとも動的システム状態及び論理的ソフトウェア状態を含む。第1のハイパーバイザのランタイム状態を同期することは、オーケストレータが第1のハイパーバイザのランタイム状態を集め、逆ハイパーコール上で第2のハイパーバイザとランタイム状態を共用/移行することを含み得る。上記で述べたように、動的システム状態は、これだけに限定されないが汎用レジスタ、モード制御レジスタを含むゲストから見えるハードウェアアーキテクチャ状態を含む。動的システム状態は、これだけに限定されないが仮想中央処理装置(CPU)の状態等のゲストVMの状態、第2レベルページテーブル(入れ子ページテーブルとしても知られる)、及び割り当てられたハードウェア装置(例えばネットワークカード)のリストを含む、仮想化命令セットアーキテクチャISA固有ハードウェア状態も含む。論理的ソフトウェア状態は、これだけに限定されないがページフレーム番号(PFN)データベースを含む。次いで第2のハイパーバイザが共用された第2レベルメモリページテーブル及び/又はPFNデータベースを複製し、第2のハイパーバイザが最終的に仮想化解除されるまでそれらを休眠させておく。
【0017】
[0029] 加えて、この同期中、第1のハイパーバイザ上で実行されるゲストパーティションは動作し続け、第1のハイパーバイザにハイパーコールを発行する。従って、計算集約的な状態の初期同期後、過去に伝送された状態に影響を及ぼす第1のハイパーバイザへの追加の入ハイパーコールも第2のハイパーバイザに同期しなければならない場合がある。一部の実施形態では、かかる状態の変化も逆ハイパーコールを使用して伝送される。
【0018】
[0030] 第1のハイパーバイザと第2のハイパーバイザとが完全に又はほぼ同期されると、第2のハイパーバイザが仮想化解除される。一部の実施形態では、仮想化解除は第1のハイパーバイザが第2のハイパーバイザに「トランポリン」し、第2のハイパーバイザに全ての物理的ハードウェア制御を譲ることを含む。「トランポリン」は、割り込みサービスルーチン、I/Oルーチン等を示すアドレスを保持するメモリ位置のことを指す場合がある。ここでは「トランポリン(する)」とは、第1のハイパーバイザから第2のハイパーバイザに全ての物理的ハードウェアの制御を移すことを指す。一部の実施形態では、トランポリンは、カーネルソフトリブートのための計算システムの既存の制御移行メカニズムを再利用することによって実現され得る。一部の実施形態では、他のどのシステム又はユーザソフトウェア、バーリングシステムファームウェアもトランポリンプロセス中に実行することを許可されない。但し、仮想化解除の前にプログラムされたダイレクトメモリアクセス(DMA)は実行中であり続け、完了することができる。一部の実施形態では、第2のハイパーバイザが追加の初期設定にかけられ、ハードウェア状態を検証し、ハードウェアを再初期設定し、及び/又は第1のハイパーバイザによって過去にプログラムされていない新たなハードウェアを初期設定することができる。仮想化解除は第1のハイパーバイザ上で現在実行されているゲストパーティションのそれぞれをフリーズし、第1のハイパーバイザの最終状態を第2のハイパーバイザに伝送することも含み得る。その後、ゲストパーティションのそれぞれが第2のハイパーバイザ上に切り替えられる。次いで、第2のハイパーバイザがゲストパーティションのそれぞれを解凍する。第1のハイパーバイザのメモリフットプリントが、全体的なメモリ負荷を受ける計算システムによってしきりに又はゆっくり回収され得る。
【0019】
[0031] 本明細書に記載する実施形態は、独自のオペレーティングシステム及び関連するアプリケーションプログラムをそれぞれ実行する複数のゲストパーティションを同時にサポート可能なVM環境内で実装されるので、図1図4に関して仮想化及びハイパーバイザについての幾らかの導入的解説を説明する。
【0020】
[0032] ハイパーバイザベースの仮想化は、(「親」パーティション内で動作する)特権ホストオペレーティングシステム並びに(「子」パーティション内で動作する)複数のゲストオペレーティングシステムが、システム資源一式へのアクセスを有する錯覚が各オペレーティングシステムに与えられた状態で、単一の計算システムのハードウェアへのアクセスを同時に共用することをしばしば可能にする。この錯覚を作り出すために、一部の実施形態では計算システムにおけるハイパーバイザが、独自のオペレーティングシステム及び関連するアプリケーションプログラムをそれぞれ実行する仮想的ハードウェアマシン(即ちVM)として動作する複数のパーティションを作成する。各オペレーティングシステムは1組の仮想化されたハードウェア資源を制御し管理する。
【0021】
[0033] 図1Aは、1つ又は複数のVM110A、120Aをホストするハイパーバイザ140Aを含む計算システム100Aの一例を示す。計算システム100Aは、1つ又は複数のプロセッサ151、1つ又は複数の記憶装置152、及び/又は1つ若しくは複数の周辺装置153等の様々なハードウェア装置150を含む。周辺装置153は、計算システム100Aのための入力及び出力(I/O)を行うように構成され得る。省略符号154は、異なる又は追加のハードウェア装置が計算システム100A内に含まれ得ることを表す。以下、ハイパーバイザ140Aを実行する物理的ハードウェア150は「ホスト計算システム」100Aとも呼び(「ホスト」とも呼び)、ハイパーバイザ140A上でホストされるVM110A、120Aを「ゲストパーティション」とも呼ぶ(「ゲスト」とも呼ぶ)。
【0022】
[0034] 図1Aに示すように、ハイパーバイザ140Aは1つ又は複数のゲストパーティション(例えばVM A110、VM B120)をホストする。省略符号130は、任意の数のゲストパーティションが計算システム100Aにおいて含まれ得ることを表す。ハイパーバイザ140Aは計算システム100Aの物理的ハードウェア資源150の一部をゲストパーティション110A、120Aのそれぞれに割り当て、資源114A、124Aを所有している錯覚をゲストパーティション110A、120Aに与える。これらの「錯覚的」な資源を「仮想」資源と呼ぶ。VM110A、120Aのそれぞれは、独自のオペレーティングシステム(OS)113A、123Aを実行するために独自の仮想資源114A、124Aを使用する。オペレーティングシステム113A、123Aは仮想資源114A、124Aをその様々なユーザアプリケーション112A、122Aに割り当てることができる。例えば、ゲストパーティション110AはOS113A及びユーザアプリケーション112Aを実行する。OS113AがWindows(登録商標)オペレーティングシステムである場合、ユーザアプリケーション112AはWindows(登録商標)アプリケーションとなる。別の例として、VM120AがOS123A及びユーザアプリケーション1122Aを実行する。OS123AがLinuxオペレーティングシステムである場合、ユーザアプリケーション122AはLinuxアプリケーションとなる。
【0023】
[0035] 各仮想的ハードウェア資源114A、124Aは、対応する物理的ハードウェア資源150を有しても有さなくてもよい。対応する物理的ハードウェア資源150が利用可能な場合、ハイパーバイザ140Aはその使用を要求するゲストパーティション110A、120Aにアクセスをどのように提供するのかを決定する。例えば資源150はパーティション化することができ、又は時分割され得る。マッチする物理的ハードウェア資源を仮想的ハードウェア資源114A、124Aが有さない場合、ハイパーバイザ140Aは典型的にはホスト計算システム100A上で物理的に利用可能なソフトウェアと他のハードウェア資源との組み合わせによって所望のハードウェア資源のアクションをエミュレートすることができる。
【0024】
[0036] 図1Aに示すように、一部の実施形態ではハイパーバイザ140Aは、システムアーキテクチャによって定義される最上位の特権レベル内で実行される唯一のソフトウェアであり得る。そのようなシステムをネイティブVMシステムと呼ぶ。概念的に、ネイティブVMシステムでは、ハイパーバイザ140Aがベアハードウェア上に最初にインストールされ、次いでゲストパーティションVM A110A及びVM B120Aがハイパーバイザ140A上にインストールされる。ゲストオペレーティングシステム113A、123A及び特権が低い他のアプリケーション112A、122Aは、ハイパーバイザの特権よりも低い特権のレベル内で実行される。これはゲストOS 113A、123Aの特権レベルがハイパーバイザ140Aによってエミュレートされる可能性があることを概して意味する。
【0025】
[0037] 或いは一部の実施形態では、既存のOSを既に実行しているホストプラットフォーム上にハイパーバイザがインストールされる。そのようなシステムをホスト型VMシステムと呼ぶ。ホスト型VMシステムでは、ゲストパーティションのそれぞれによって望まれる資源を制御し管理するために、ホストOS上で既に利用可能な機能をハイパーバイザが利用する。ホスト型VMシステムでは、ハイパーバイザがユーザレベルで又はホストオペレーティングシステムと同様に特権レベルで実装され得る。或いは、ハイパーバイザの一部がユーザレベルで実装され、ハイパーバイザの別の部分が特権レベルで実装される。
【0026】
[0038] 一部の実施形態では、同じ計算システム上で実行されるゲストパーティションの1つが、他のゲストパーティションよりも特権を与えられていると見なされ得る。図1Bはかかる実施形態の一例を示し、ここではより高い特権を与えられたゲストパーティションを親パーティション110Bと呼ぶことができ、残りのパーティションを子パーティション120Bと呼ぶ。一部の実施形態では、親パーティション110Bがオペレーティングシステム113B及び/又は仮想化サービスモジュール115Bを含む。オペレーティングシステム113B及び/又は仮想化サービスモジュール115Bのそれぞれは装置ドライバ114Bによるハードウェア装置150への直接アクセスを有し得る。従って、オペレーティングシステム113Bはホストオペレーティングシステムと呼ぶこともできる。更に、仮想化サービスモジュール115Bはハイパーコールを使用して子パーティション120Bを作成可能であり得る。構成にもよるが、仮想化サービスモジュール115Bは、仮想化クライアントモジュール125Bによって各子パーティション140Bにハードウェア資源のサブセットを公開することができる。子パーティション120Bは、物理プロセッサへの直接アクセスを概して有さず、及び/又は実割り込み(real interrupt)を処理することができない。代わりに、子パーティション120Bは仮想的ハードウェア資源124Bの仮想的なビューを得るために仮想化クライアントモジュール125Bを使用することができる。
【0027】
[0039] 一部の実施形態では、親パーティション110Bは、仮想化サービスモジュール115Bの構成をユーザ(例えばシステム管理者)が見て修正することを可能にし得るVM管理サービスアプリケーション112Bも含み得る。例えばハイパーバイザ140BはMicrosoft(登録商標)Hyper-Vハイパーバイザとすることができ、親パーティションはWindows(登録商標)サーバを実行することができる。親パーティションのユーザインタフェースは、子パーティション120Bのフルユーザインタフェースを表示するウィンドウを提供し得る。子パーティション120B上で実行されるアプリケーションとの対話はウィンドウ内で行われ得る。ホストオペレーティングシステム113BがWindows(登録商標)である場合、同じプラットフォーム上の子パーティション120Bと対話するためにデスクトップインタフェース上にグラフィカルウィンドウを確立することができる。図1Bの要素113B、122B、123B、及び/又は124Bは図1Aの要素113A、122A、123A、及び/又は124Aと同様であり、従って更に論じることはない。
【0028】
[0040] ネイティブVMシステムであろうがホスト型VMシステムであろうが、ハイパーバイザとゲストパーティションとの間の関係は概して従来の計算システム内のオペレーティングシステムとアプリケーションプログラムとの間の関係と類似している。従来の計算システムでは、オペレーティングシステムがアプリケーションのレベルよりも高い特権レベル内で、例えばユーザモードに対するカーネルモード内で概して機能する。同様にVM環境では、ハイパーバイザもゲストパーティションのモードよりも高い特権モード内で動作する。ゲストパーティションがページテーブルの更新等の特権操作を行う必要がある場合、ゲストパーティションは従来の操作におけるシステムコールと全く同じようにかかる操作を要求するためにハイパーコールを使用する。
【0029】
[0041] 従って、記載する本発明の実施形態はネイティブVMシステム及びホスト型VMシステムの両方に適用可能であり、本明細書の「ハイパーバイザ」という用語は任意の種類のVMシステムによって実装されるハイパーバイザを指す。
【0030】
[0042] ハイパーバイザがどのように動作するのかを更に理解するために、各ゲストパーティションの状態をハイパーバイザがどのように保持するのかも理解する必要がある。計算システムでは、計算システムの構築された状態が計算システムのハードウェア資源内に含まれ、かかるハードウェア資源によって保持される。通常、階層の一方の端におけるレジスタから階層の他方の端における二次記憶域(例えばハードドライブ)に及ぶ状態資源の構築された階層がある。
【0031】
[0043] VM環境では、各ゲストパーティションが独自の構築済み状態情報を有し、ゲストの状態の各要素をホストのメモリ階層内のその自然レベルにマップするのに十分な物理資源がホスト計算システム内にある場合もない場合もある。例えばゲストのレジスタ状態は、レジスタコンテキストブロックの一部としてホストプラットフォームの主メモリ内に実際に保たれ得る。
【0032】
[0044] 通常の動作では、ハイパーバイザ140Aがゲストパーティション110A、120A間で制御を周期的に切り替える。ゲストの状態に対する操作が行われると、ゲストオペレーティングシステム113A、123A上で行われるようにホスト計算システム100A上で保持される状態が修正される。一部の実施形態では、ハイパーバイザ140Aが、仮想的ゲストオペレーティングシステム113A、123Aの状態を物理的ホスト計算システム100Aの状態にマップする同型性(isomorphism)を構築する。
【0033】
[0045] 図2は、ゲストパーティション210とホスト計算システム220との間の同型性200の概略図を示す。同型性200は、関数230、即ちV(状態A)=状態A’、及びV(状態B)=状態B’を使用してゲスト状態211、212をホスト状態221、222にマップする。ゲストパーティション210の状態を状態A211から状態B212に修正するゲストパーティション210内の一連の操作に関して、ホスト計算システムの状態を状態A’221から状態B’222に修正するホスト計算システム220内の対応する一連の操作がある。ゲストパーティション210とホスト計算システム220との間の同型性200はハイパーバイザ(例えば140A、140B)によって管理される。
【0034】
[0046] 実施形態では、このVMの同型性が実現されるようにゲスト状態を管理する2つの基本的なやり方がある。1つのやり方は、ハイパーバイザによって管理されるポインタが現在アクティブなゲスト状態を示した状態で、各ゲストの状態をホスト計算システムのメモリ階層内の固定位置に保持することによって或る程度の間接参照(indirection)を用いることである。ハイパーバイザがゲストパーティション間で切り替わると、ハイパーバイザは現在のゲストとマッチするようにポインタを変更する。図3Aは、間接参照による状態管理のかかる実施形態300Aの一例を示す。図3Aを参照し、ハイパーバイザによって管理されるホスト計算システムのメモリ320が、レジスタコンテキストブロック321、322内に各VM A及びBのレジスタ値を記憶する。プロセッサ310Aのレジスタブロックポインタ311Aは、現在アクティブなゲストパーティション(例えばVM B)のレジスタコンテキストブロック322を指す。異なるゲストパーティションが活性化される場合、ハイパーバイザは、活性化されたゲストパーティションのレジスタコンテキストブロック321、322を指すようにプロセッサにおいて記憶されたポインタ311Aを変更し、活性化されたVMプログラムを指すようにプログラムカウンタをロードし、実行を開始する。
【0035】
[0047] ゲスト状態を管理する別のやり方は、ハイパーバイザによって活性化されるとき常にゲストの状態情報をメモリ階層内のその自然レベルに複製し、異なるゲストが活性化されたときにそれを複製し戻すことである。図3Bは、複製によるゲスト状態管理のかかる実施形態300Bの一例を示す。図3Bに示すように、ハイパーバイザによって管理されるホストメモリ320が、レジスタコンテキストブロック321、322内に各ゲストパーティションのVM A及びBのレジスタ値を同様に記憶する。しかし図3Aにあるのと異なり、ここではハイパーバイザはVM Bの活性化時に(前のゲストのレジスタを再びメモリ320に保存した後)全ゲストレジスタコンテンツ322をプロセッサ310Bのレジスタファイル311B内に複製する。
【0036】
[0048] 間接参照と複製との間の選択は、例えば使用頻度及びハイパーバイザによって管理されているゲスト状態がネイティブシステム上と異なる種類のハードウェア資源内に保持されるかどうかによって決まり得る。汎用レジスタ等の頻繁に使用される状態情報では、仮想マシンが活性化されるたびに仮想マシンの状態を対応する物理資源にスワップするのが好ましくあり得る。しかし図3A及び図3Bに示すように、何れの場合も各VMのレジスタ値321、322はレジスタコンテキストブロックの一部としてホストプラットフォームの主メモリ320内にしばしば保たれる。
【0037】
[0049] VMの状態管理に加えて、メモリ管理も解説するに値する。VM環境では、ゲストパーティションのそれぞれが「第1レベル」メモリページテーブルとも呼ばれる1組の独自の仮想メモリテーブルを有する。第1レベルメモリページテーブルのそれぞれにおけるアドレス変換は、その仮想アドレス空間内のアドレスをゲスト物理メモリ内の位置に変形する。ここではゲスト物理メモリは、ホスト計算システム上のホスト物理メモリに対応しない。代わりに、ホスト物理アドレス(HPA)とも呼ばれるホストハードウェアの物理メモリ内のアドレスを決定するために、ゲスト物理アドレス(GPA)は更なるマッピングにかけられる。GPAからHPAへのこのマッピングは、「第2レベル」又は入れ子メモリページテーブルとも呼ばれるホスト計算システムの別の1組の仮想メモリテーブルによって行われる。全てのゲストのゲスト物理メモリの合算した合計サイズはシステム上の実際の物理メモリよりも大きくあり得ることに留意されたい。実施形態では、ハイパーバイザがゲストそれぞれのスワップ空間とは別個の独自のスワップ空間を保持し、ハイパーバイザがゲスト物理ページをその独自のスワップ空間の内外にスワップすることによって物理メモリを管理する。更に、全ての仮想的に又は物理的に割り当てられたページ、及びその対応する属性の状態がページフレーム番号(PFN)リストと呼ばれるリスト内に記憶される。仮想的に又は物理的に割り当てられたページのトラックがPFNデータベースと呼ばれるデータベース内に記憶される。
【0038】
[0050] 図4は、多段式メモリページテーブル440及び450を使用するメモリ仮想化の実施形態400の一例を示す。第1レベルメモリテーブル440内の各エントリが、仮想メモリのPFNデータベース410内の位置(例えばPFN)をゲスト物理メモリのPFNデータベース420内の位置(例えばPFN)にマップする。図4に示すように、PFNデータベース410の一部がVM A上で実行されるプログラムの仮想的に割り当てられたページを追跡し、PFNデータベース420の一部がVM AのゲストVMの物理メモリを追跡する。更に、GPAをHPAに変換するために、ハイパーバイザはゲスト物理ページをホスト物理ページにマップする第2レベルメモリページテーブル450も保持する。ホスト計算システムの物理メモリを追跡するPFNデータベース430もある。
【0039】
[0051] 図4に示すように、1500と番号付けされた物理ページフレームが2500と番号付けされたゲスト物理ページフレームに割り当てられ、このゲスト物理ページフレームは3000と番号付けされた仮想メモリページフレームに割り当てられる。同様に、物理ページフレーム2000は6000と番号付けされたゲスト物理ページフレームに割り当てられ、このゲスト物理ページフレームは2000と番号付けされた仮想メモリページフレームに割り当てられる。残りの物理メモリページは他のVMに、又はハイパーバイザ自体に割り当てることができる。各VMのレジスタ値を記録するためにハイパーバイザ自体に割り当てられたものを含むこれらの残りの物理メモリページ(例えばメモリ320)は、PFNデータベース430によっても追跡される。
【0040】
[0052] 図4は多段式ページテーブルを用いたメモリ管理の単純化した概念を示すための概略図に過ぎない。同じ又は同様のメモリ管理目的を実現するために追加のメカニズムが実装されてもよい。例えば一部の実施形態では、ページ変換がページテーブルと変換索引バッファ(TLB)との組み合わせによってサポートされる。
【0041】
[0053] 図1A図4を参照して仮想環境、及びハイパーバイザが様々なハードウェア資源をどのように管理し仮想化するのかを記載し、今度はハイパーバイザのホットリスタートの具体的な実施形態を図5A及び図5Bに関して説明する。
【0042】
[0054] 図5Aは、ハイパーバイザのホットリスタートが有効化される計算システム500Aの一例を示す。計算システム500Aは、図1Aに示したように、ハイパーバイザ520Aがシステムアーキテクチャによって定められる最上位の特権レベル内で実行される唯一のソフトウェアであるネイティブVMシステムを含み得る。或いは計算システム500Aは、ホストOSを既に実行している計算システム上にハイパーバイザ520Aがインストールされるホスト型VMシステムを含み得る。
【0043】
[0055] 計算システム500AがネイティブVMシステムを含もうがホスト型VMシステムを含もうが、ハイパーバイザのホットリスタート中にサービスパーティション560と呼ばれる新たなパーティションが生成される。実施形態では、サービスパーティション560が他のパーティションの種類と異なるように扱われる。サービスパーティション560の作成時に、少なくとも一部のプロセッサ資源及びメモリ資源を含むハードウェア資源がサービスパーティション560に割り当てられる。一部の実施形態では、ハードウェア資源の割り当てがユーザ入力に基づき得る。代替的実施形態では、ハイパーバイザ520A又はサービスパーティション560を作成したコンポーネントが、プロセッサ資源及び/又はメモリ資源の所定部分をサービスパーティション560に自動で割り当てる。
【0044】
[0056] プロセッサ資源の割り当ては、サービスパーティション560が必要とする処理能力の総量を指定することができ、利用可能なプロセッサの割り当てを作業負荷管理ソフトウェアにまかせ、又はサービスパーティション560若しくはハイパーバイザ520Aはシステム内の特定のプロセッサがサービスパーティション560の使用に充てられることを指定し得る。サービスパーティション560又はハイパーバイザ520Aは、サービスパーティション560が一定数のプロセッサを必要とするが、サービスパーティション560がそれらのプロセッサを他のパーティションと共用する用意があることを指定し得る。例えばサービスパーティション560によって合計8個の処理装置が必要とされる場合、サービスパーティション560又はハイパーバイザ520Aは、サービスパーティション560が専用の8個のプロセッサを必要とすること、又はサービスパーティション560が16個のプロセッサを必要とするが、プロセッサそれぞれの利用可能計算能力の半分しか必要としないことを指定し得る。(RAM及び/又はハードディスクを含む)メモリの割り当ては、特定の粒度のチャンク、例えば1MBを単位としたメモリ量を指定し得る。
【0045】
[0057] 次いでサービスパーティション560が初期設定される。高信頼計算処理機構(TCB)内の任意のコンポーネントが、サービスパーティション560を作成及び/又は初期設定するタスクを課され得る。一部の実施形態では、第1のハイパーバイザ520AがTCBの一部であり、第1のハイパーバイザ520Aがサービスパーティション560を生成及び/又は初期設定する。初期設定プロセスは一連のアクションを含むブートストラッピングを含み、各アクションは最終的に全システムが活性化されるまで次のアクションを行えるようにする機能を活性化する。一部の実施形態では、ハイパーバイザ520Aが第2のハイパーバイザ561用のローダブロックを構築する。初期設定コードを実行することはサービスパーティション560の他の側面を初期設定することを可能にする。図5Aに示すように、従来のOS541A、551Aがロードされる他の通常のゲストパーティション540A、550Aと異なり、ハイパーバイザ561がサービスパーティション560内にロードされる。明瞭にするために、以下ハイパーバイザ520A及び561を第1のハイパーバイザ520A及び第2のハイパーバイザ561と呼ぶ。一部の実施形態では、第2のハイパーバイザ561を初期設定することが、一定の物理資源510に対する読み出し専用の固有アクセスを第2のハイパーバイザに提供することも含み得る。
【0046】
[0058] ハイパーバイザのホットリスタートの目的は、ゲスト仮想マシンに対する最小限から知覚不能な中断を伴って第1のハイパーバイザ520Aを第2のハイパーバイザ561と最終的に置換することである。第2のハイパーバイザ561が第1のハイパーバイザ520Aを置換する前に、第1のハイパーバイザ520Aが利用可能なシステム不変条件(例えばハードウェア資源510がサポートする特徴)を用いて第2のハイパーバイザ561を初期設定し、次いでランタイム状態512を第2のハイパーバイザ561と同期する。一部の実施形態では、ハイパーバイザ520Aによって管理されるメモリ(例えばRAM)内にランタイム状態512が記憶される。図3A図3B、及び図4に関して記載したように、ランタイム状態512は、各ゲストパーティション(例えばゲストA 540A、550A)のレジスタ値321、322等のハードウェアアーキテクチャ状態、各ゲストパーティション(例えばゲストA 540A、550A)の第2レベルメモリページテーブル450等の仮想化ハードウェア状態、及び/又は第1のハイパーバイザ520Aに関連するPFNデータベース430等のソフトウェア定義状態を含み得る。
【0047】
[0059] 一部の実施形態では、初期設定及び同期中の第1のハイパーバイザ520Aと第2のハイパーバイザ561との間の通信がオーケストレータ530Aによって調整される。第1のハイパーバイザ520Aは、第2のハイパーバイザ561から受信される一定の要求をオーケストレータ530Aが登録すること及び完了することを可能にし、サポートする。オーケストレータ530Aは、第1のハイパーバイザ520Aと第2のハイパーバイザ561との間の通信を調整するように構成されるホスト計算システム500Aのソフトウェアコンポーネントである。一部の実施形態では、第1のハイパーバイザ520Aがシステムの高信頼計算処理機構(TCB)の一部であり、第2のハイパーバイザのために生成される入力の信頼性を維持するためにオーケストレータ530Aが高信頼実行環境(TEE)内で実行される。
【0048】
[0060] 一部の実施形態では、第2のハイパーバイザ561に状態を伝送するためにオーケストレータ530Aが逆ハイパーコールを使用することができ、及び/又は一部のサービス(例えば第2のハイパーバイザ561がアクセスを有さない物理資源の特性)をオーケストレータ530Aに要求するために第2のハイパーバイザ561がインターセプトを使用することができる。一部の実施形態では、オーケストレータ530A、第1のハイパーバイザ520A、及び第2のハイパーバイザ561の間でデータを効率的に伝えることができるように、オーケストレータ530Aがメモリページ511の一部を第2のハイパーバイザ561と共用する。一部の実施形態では、関連する状態を移行するためにハイパーコールのアプリケーションバイナリインタフェース(ABI)に従う第2のハイパーバイザにオーケストレータ530Aが逆ハイパーコールを発行する。
【0049】
[0061] 上記で論じたように、サービスパーティション560が作成されロードされると、第2のハイパーバイザ561はハードウェア資源510の特徴等の様々なシステム不変条件をまず得る必要がある。一部の実施形態では、第1のハイパーバイザ520Aが認める特徴と、第2のハイパーバイザ561が認める特徴との間に厳密な結合がある。
【0050】
[0062] 或いは他の実施形態では、第1のハイパーバイザと第2のハイパーバイザとの間に疎結合がある。オーケストレータ530Aは、第2のハイパーバイザ561の初期設定に関連するハードウェア資源の特徴及び特性を得るために第1のハイパーバイザをハイパーコールによってクエリすることができ、及び/又はハードウェア資源を直接クエリすることができる。例えば第2のハイパーバイザ561はCPUID又はMSR値を読み出そうと試みることができる。しかし仮想マシン自体の中にあり、第2のハイパーバイザ561は基礎を成す物理計算システムの物理値ではなく仮想化された値にしかアクセスできない場合がある。その場合、オーケストレータ530Aは対応する物理資源の対応する物理値を得るために第1のハイパーバイザ520Aへのハイパーコールを呼び出すことができる。例えば第2のハイパーバイザ561はXSAVE機能及び命令に関するプロセッササポートをクエリしたい場合がある。第1のハイパーバイザ520AがXSAVEの仮想化をサポートしない場合、オーケストレータ530Aが基礎を成すプロセッサの特性をクエリし、プロセッサがXSAVEをサポートすることを決定することができる。第2のハイパーバイザ561がクエリ結果へのアクセスを有するように、得られたクエリ結果を共用メモリページ511内に記憶することもできる。一部の事例では、第2のハイパーバイザ561がハードウェア資源510の全ての特徴を得ることができない場合がある。一部の実施形態では、かかる特徴が初期設定中に未知のままにされ、仮想化解除後に後で得られる。
【0051】
[0063] システム不変条件を得ることに加え、第1のハイパーバイザ520Aのランタイム状態が第2のハイパーバイザ561と同期されもする。ランタイム状態は少なくとも動的システム状態及び論理的ソフトウェア状態を含む。動的システム状態は、これだけに限定されないが汎用レジスタ及び制御レジスタを含むゲストから見えるハードウェアアーキテクチャ状態を含む。動的システム状態は、これだけに限定されないが仮想中央処理装置(CPU)の状態等のゲストVMの状態、第2レベルページテーブル(入れ子ページテーブルとしても知られる)、及び割り当てられたハードウェア装置(例えばネットワークカード)のリストを含む、仮想化命令セットアーキテクチャISA固有ハードウェア状態も含む。第1のハイパーバイザのランタイム状態512を同期することは、1つ若しくは複数の第2レベルメモリページテーブル及び/又は1つ若しくは複数のPFNデータベースを第2のハイパーバイザ561に少なくとも同期することを含む。第2レベルメモリテーブルは、各ゲストパーティションのGPAをHPA(例えば図4の第2レベルメモリページテーブル450)にマップするメモリページテーブルである。同期されるPFNデータベースは、ホスト計算システムの物理メモリを追跡するPFNデータベース(例えばPFNデータベース430)を含み得る。
【0052】
[0064] 但し、2つのハイパーバイザ520A及び561間のランタイム状態の初期同期後、及び第2のハイパーバイザ561の仮想化解除前、ゲストパーティション540A、550Aは依然として第1のハイパーバイザ520A上で実行されており、それらのゲストパーティション540A、550Aは引き続きハイパーコールを呼び出し得る。入ハイパーコールが第1のハイパーバイザ520Aによってサービス提供されると、ハイパーコールを呼び出したゲストパーティション540A又は550Aの状態が変化し、第2のハイパーバイザ561の過去に同期された状態がもはや正確ではなくなる。この問題を解決するために、入ハイパーコール(第2のハイパーバイザの仮想化解除前)も記録され、第2のハイパーバイザ561と同期される必要がある。
【0053】
[0065] 一部の実施形態では、オーケストレータ530Aが、各入ハイパーコールを記録及び同期するタスクも課される。例えば第1のハイパーバイザ520Aがゲストパーティション540A、540Bによって呼び出されるハイパーコールを受信しサービス提供する場合、オーケストレータ530Aはハイパーコール及び第1のハイパーバイザ520Aによるハイパーコールのサービス中に生じたアクションのログを記録する。同時に、オーケストレータ530Aは逆ハイパーコールによって第2のハイパーバイザ561にハイパーコールをフィードする。一部の実施形態では、第2のハイパーバイザ561の命令ポイント(instruction point)がハイパーコールディスパッチループ内にあり、そのため第2のハイパーバイザ561に逆ハイパーコールが供給されるとき第2のハイパーバイザ561がそれを処理する。逆ハイパーコールを受信し、第2のハイパーバイザ561はハイパーコールを呼び出したゲストパーティション540A、540Bのコンテキストを切り替え、必要なソフトウェア状態及び/又は休止ハードウェア状態を再構築するために逆ハイパーコールを処理する。逆ハイパーコールの完了時に、第2のハイパーバイザ561がオーケストレータ530Aに完了を知らせる。
【0054】
[0066] 一部の事例では、一連のハイパーコールが短期間のうちにサービス提供され、オーケストレータ530Aは一連のハイパーコールの最後の又は関連性のある動作に関連する状態を送信するだけでもよい。その場合、第2のハイパーバイザ561はアクションの部分ログをリプレイすること、即ち凝縮されたリプレイを行うことだけできる。このプロセスは、第2のハイパーバイザ561が第1のハイパーバイザ520Aと完全に又は少なくとも実質的に同期されるまで必要な回数繰り返され得る。その後、第1のハイパーバイザ520Aを置換するために第2のハイパーバイザ561がサービスパーティション560から仮想化解除される。仮想化解除は第1のハイパーバイザ520Aが第2のハイパーバイザにトランポリンし、第2のハイパーバイザ561に全ての物理的ハードウェア制御を譲ることを含む。一部の実施形態では、トランポリンは、カーネルソフトリブートのための計算システム500Aの既存の制御移行メカニズムを再利用することによって実現され得る。
【0055】
[0067] 一部の実施形態では、第2のハイパーバイザ561が追加の初期設定にかけられ、ハードウェア状態を検証し、ハードウェアを再初期設定し、及び/又は第1のハイパーバイザによって過去にプログラムされていない新たなハードウェアを初期設定することができる。一部の実施形態では、仮想化解除は第1のハイパーバイザ520Aが全てのゲストパーティション540A、550Aをフリーズし、最終状態の詳細を第2のハイパーバイザ561に伝送し、第2のハイパーバイザ上にゲストパーティションを移行することを含み得る。次いで、第2のハイパーバイザがゲストパーティションのそれぞれを解凍する。第2のハイパーバイザ561が仮想化解除を開始すると、第1のハイパーバイザ520Aが事実上終了される。他のどのシステムソフトウェア、ユーザソフトウェア、及び/又はシステムファームウェアも仮想化解除中に実行することを許可されない。但し、仮想化解除の前にプログラムされたDMAは実行中であり続け、完了することができる。
【0056】
[0068] 例えばゲストパーティション(例えば子A 540A、550A)が物理装置へのアクセスを提供される場合、ゲストパーティションはDMA操作のソース又はターゲットとして自らのGPAを用いてDMAを開始することができる。(第1のハイパーバイザによって入出力メモリ管理ユニット(IOMMU)内にプログラムされ得る)第2レベルページテーブルは、必要な許可チェックを行うことに加えてGPAをHPAに変換し、DMAエンジンにHPAを提供する。先に述べたように、第1のハイパーバイザが第2のハイパーバイザにアーキテクチャゲスト状態並びにアーキテクチャ仮想状態を伝送/同期した。アーキテクチャ仮想状態は、とりわけCPU、IOMMU、及び/又は装置のドメイン情報のための第2レベルページテーブルを含む。従って第2のハイパーバイザが仮想化解除しハードウェアを再初期設定する場合、第2のハイパーバイザは自らが先の同期段階中に構築した新たなページテーブルを用いてハードウェアを慎重にプログラムする。新たなページテーブルの実効アドレスの変換及び許可は2つの異なるインスタンスでありながら同一なので、DMAエンジンからの新たな全ての変換要求は忠実性を損なうことなしに実行中であり続け、同じページテーブルを成功裏に使用することができる。
【0057】
[0069] 加えて一部の実施形態では、第1のハイパーバイザ520Aのメモリフットプリントが、全体的なメモリ負荷を受ける計算システムによってしきりに又はゆっくり回収され得る。
【0058】
[0070] 図5Bは、ハイパーバイザのホットリスタートが有効化される計算システム500Bの別の例を示す。計算システム500Bは図1Bの計算システム100Bに対応し、ゲストパーティションの1つ(例えば親パーティション110B、530B)が残りのゲストパーティション(例えば子パーティション120B、540B、550B)よりも特権を与えられている。一部の実施形態では、親パーティション530Bがホストオペレーティングシステム及び/又は仮想化サービスモジュール531Bを含み、その何れか1つは子パーティション540B及び550Bを作成し管理し、様々なシステム管理機能及び装置ドライバを扱うように構成され得る。図5Aに示した実施形態と同様に、サービスパーティション560が作成され、第2のハイパーバイザ561がサービスパーティション560内で初期設定され、最終的にハイパーバイザのホットリスタートを完了するために第1のハイパーバイザ520Bが第2のハイパーバイザ561と置換される。
【0059】
[0071] 一部の実施形態では、計算システム500B内で親パーティション530Bの方が子パーティション540B、550Bよりも高レベルの特権を有するので、親パーティション530Bのホストオペレーティングシステム又は仮想化サービスモジュール531Bの一部としてオーケストレータ532Bを親パーティション530B内に実装することができる。オーケストレータ532Bは、第1のハイパーバイザ520Bと第2のハイパーバイザ561との間の通信を調整するようにオーケストレータ530Bと同様に機能する。図5Bの要素541B、551Bは図5Aの要素541A、551Aと同様であり、従って更に論じることはない。
【0060】
[0072] 加えて一部の実施形態では、ハイパーバイザ520A、520Bのホットリスタートにゲストパーティション540A、550A、530B、540B、550Bのカーネルソフトリブート又はリセットも付随し得る。カーネルソフトリブートでは、ゲストパーティション540A、550A、530B、540B、又は550Bが新たなパーティションとして再作成され、再初期設定されてもよく、対応するゲストパーティションのランタイム状態が新たなパーティションと同期される。ゲストパーティションの全てのランタイム状態が新たなパーティションと同期されると、対応するゲストパーティションのカーネルソフトリブートを完了するために新たなパーティションが対応するゲストパーティションを置換することができる。一部の実施形態では、ハイパーバイザ520Bのホットリスタートに付随して親パーティション530Bだけがホットリスタートされる。或いは又は加えて、ハイパーバイザ520A、520Bのホットリスタートと共に、ゲストパーティション540A、550A、及び/又は子パーティション540B、550Bのそれぞれがホットリスタートされる。
【0061】
[0073] 一部の実施形態は、親パーティション530B内のホストオペレーティングシステムをリスタートすることなしに親パーティション530B内のVM関連コンポーネントをリスタートする。例えば一部の実施形態は、ホストオペレーティングシステム113Bをリスタートすることなしに、ハイパーバイザのホットリスタートに関連して仮想化サービスモジュール531Bをリスタートする。このようにして、ホストオペレーティングシステム113Bをリスタートすることなしに、ハイパーバイザをそのオペレーティングシステムレベル管理コンポーネントと共にアップグレード及びリスタートすることができる。
【0062】
[0074] 本明細書に記載のハイパーバイザのホットリスタートは、従来のハイパーバイザのリスタートと異なり実行中のゲストVMに与えられる中断時間を大幅に減らす。ホストされているVMの数及び管理されているハードウェア資源の量に応じて数分かかり得る通常のハイパーバイザのリスタートと異なり、本明細書に記載の第2のハイパーバイザ561は第1のハイパーバイザ520A又は520Bが依然として実行中の間に初期設定及び同期され、従って実行中の各ゲストパーティションにおいて、ユーザが気付かない可能性さえある短い(例えば1秒又は数秒未満の)フリーズ期間しか生じない。
【0063】
[0075] 次に以下の解説は、実行され得る幾つかの方法及び方法の行為に言及する。方法の行為は一定の順序で論じる場合があり、又は特定の順序で行われるものとして流れ図の中で示される場合があるが、別段の定めがない限り又は或る行為が行われる前に完了している別の行為にその行為が依存することを理由に要求されない限り、特定の順序付けは要求されない。
【0064】
[0076] 図6Aは、ハイパーバイザのホットリスタートのための方法600の一例の流れ図を示す。方法600は、計算システム100A、100B、又は500A、500Bに対応し得る計算システム上で実装される。方法600は、第1のハイパーバイザを実行すること(610)を含む。それを受けて第1のハイパーバイザは、そのそれぞれがゲストオペレーティングシステムをホストし得る1つ又は複数のゲストパーティションを作成する(620)。ハイパーバイザのホットリスタートの目的は、第1のハイパーバイザを新たなハイパーバイザと置換することである。ハイパーバイザのホットリスタートが行われると、計算システムはサービスパーティションを作成し(630)、サービスパーティション内の第2のハイパーバイザを初期設定する(640)。次に、第1のハイパーバイザのランタイム状態の少なくとも一部が第2のハイパーバイザと同期される(650)。同期が完了又はほぼ完了すると、計算システムは第1のハイパーバイザを第2のハイパーバイザと置換するために第2のハイパーバイザを仮想化解除する(660)。
【0065】
[0077] 図6Bは、図6Aのステップ640に対応する、サービスパーティションを初期設定するための方法640の一例の流れ図を示す。方法640は、第2のハイパーバイザ用のローダブロックを第1のハイパーバイザによって生成すること(641)を含む。ローダブロックは、初期設定のための静的システム特性及び資源の一部を記述する論理的構成体である。方法640は、1つ又は複数のシステム不変条件を得ること(642)及び1つ又は複数のシステム不変条件を第2のハイパーバイザと共用すること(643)も含む。次いで第2のハイパーバイザが1つ又は複数のシステム不変条件に基づいて初期設定される(644)。一部の実施形態では、システム不変条件が計算システムのハードウェア資源の1つ又は複数の特徴を含む(645)。一部の実施形態では、第1のハイパーバイザと第2のハイパーバイザとの間に厳密な結合がある(646)。一部の実施形態では、第1のハイパーバイザと第2のハイパーバイザとの間に疎結合がある。その場合、ハードウェア資源の1つ又は複数の特徴をハイパーコールによって第1のハイパーバイザから得ることができ(647)、又はシステムコールによってハードウェア資源から直接得ることができる(648)。
【0066】
[0078] 図6Cは、図6Aのステップ650に対応する、第1のハイパーバイザのランタイム状態の一部を第2のハイパーバイザと同期するための方法650の一例の流れ図を示す。方法650は、図5A又は図5Bのオーケストレータ530A、532Bによって実行され得る。方法650は、第1のハイパーバイザのランタイム状態を集めること(651)を含む。方法650は、第2のハイパーバイザとランタイム状態を共用すること(652)も含み、これはオーケストレータ530A、532Bにより逆ハイパーコールによって行われてもよく、シグナリング及び/又はメッセージ/データの受け渡しを助けるために共用メモリページに更に依存してもしなくてもよい。次いで第1のハイパーバイザの共用ランタイム状態が第2のハイパーバイザによって複製される(653)。第2のハイパーバイザが仮想化解除される前、第1のハイパーバイザ上で実行されているゲストパーティションは動作し続け、依然としてハイパーコールを行うことができ、集められるランタイム状態はすぐに不正確になる。従って、第2のハイパーバイザと第1のハイパーバイザとが完全に又はほぼ同期するまでこのプロセスが数回繰り返され得る。
【0067】
[0079] 図6Dは、図6Cのステップ651に対応する、第1のハイパーバイザのランタイム状態を集めるための方法651の一例の流れ図を示す。方法651は、1つ又は複数の第2レベルメモリページテーブル及び1つ又は複数のPFNに関係する現在のデータを集めること(651-A)を含む。方法651は、入ハイパーコールに関係するデータを集めること651-Bも含む。具体的には、ゲストパーティションによってハイパーコールが呼び出されるとき、受信されるハイパーコールを第1のハイパーバイザが受信し(651-C)、サービス提供する(651-D)。次いで計算システム(例えばオーケストレータ530A又は532B)は受信されるハイパーコール及びハイパーコールのサービス中に生じたアクションのログを記録する(651-E)。
【0068】
[0080] 図6Eは、図6Cのステップ652に対応する、第1のハイパーバイザのランタイム状態を第2のハイパーバイザと共用するための方法652の一例の流れ図を示す。方法652は、第2のハイパーバイザに1つ又は複数の第2レベルページテーブル及び1つ又は複数のPFNをフィードすること(652-A)を含む。方法652は、第2のハイパーバイザに入ハイパーコールをフィードすること(652-B)及び(第1のハイパーバイザによる)ハイパーコールのサービス中に生じたアクションのログを第2のハイパーバイザにフィードすること(652-C)も含む。
【0069】
[0081] 図6Fは、図6Cのステップ653に対応する、第1のハイパーバイザのランタイム状態を第2のハイパーバイザと複製するための方法653の一例の流れ図を示す。方法653は、第2のハイパーバイザ内でオーケストレータから逆ハイパーコールを受信すること(653-A)を含む。次いで第2のハイパーバイザは、ハイパーコールを呼び出したゲストパーティションのコンテキストを切り替え(653-B)、必要なソフトウェア状態及び/又は休止ハードウェア状態を再構築するために逆ハイパーコールを処理する(653-C)。逆ハイパーコールの処理の完了時に、第2のハイパーバイザがオーケストレータに知らせる(653-D)。
【0070】
[0082] 図6Gは、図6Aのステップ660に対応する、第2のハイパーバイザを仮想化解除するための方法660の一例の流れ図を示す。方法660は、第1のハイパーバイザ上で現在実行されている各ゲストパーティションをフリーズすること(661)を含む。次いで、第1のハイパーバイザの最終状態を第2のハイパーバイザに伝送する(662)。次にゲストパーティションのそれぞれを第2のハイパーバイザ上に切り替え(663)、第2のハイパーバイザがゲストパーティションのそれぞれを解凍する(664)。最後に、第1のハイパーバイザを終了する(665)。
【0071】
[0083] たとえ上記の実施形態の例がハイパーバイザにサービス提供するための専用パーティション(例えばサービスパーティション)内で実装されても、時間を節約するためにデータ構造を事前に初期設定する及び/又はランタイム状態を移行/同期する全体的な技法は任意のVMの任意の部分に使用され得ることに留意されたい。
【0072】
[0084] 最後に、本明細書に記載した原理は計算システム(例えば図1A図1Bの計算システム100A、100B、及び/又は図5A若しくは図5Bの500A、500B)の脈絡で実装されるので、図7に関して計算システムについての幾らかの導入的解説を説明する。
【0073】
[0085] 現在、計算システムは多岐にわたる形をますます取っている。計算システムは例えば携帯型装置、器具、ラップトップコンピュータ、デスクトップコンピュータ、メインフレーム、分散型計算システム、データセンタ、更にはウェアラブル(例えばグラス)等、従来は計算システムと見なされていなかった装置であり得る。この説明及び特許請求の範囲で「計算システム」という用語は、少なくとも1つの物理的な及び有形のプロセッサと、プロセッサによって実行され得るコンピュータ実行可能命令をその上に有することができる物理的な及び有形のメモリとを含む任意の装置又はシステム(又はその組み合わせ)を含むものとして広く定義する。メモリは任意の形を取ることができ、計算システムの性質及び形式に依存し得る。計算システムはネットワーク環境にわたって分散させることができ、複数の構成計算システムを含み得る。
【0074】
[0086] 図7に示すように、その最も基本的な構成において、計算システム700は典型的には少なくとも1つのハードウェア処理ユニット702及びメモリ704を含む。処理ユニット702は汎用プロセッサを含むことができ、書き換え可能ゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、又は他の任意の専用回路も含み得る。メモリ704は、揮発性、不揮発性、又はその2つの何らかの組み合わせであり得る物理的なシステムメモリとすることができる。「メモリ」という用語は、本明細書では物理記憶媒体等の不揮発性大容量記憶域を指すために使用することもある。計算システムが分散される場合、処理、メモリ、及び/又は記憶機能も分散され得る。
【0075】
[0087] 計算システム700は、「実行可能コンポーネント」としばしば呼ばれる複数の構造もその上に有する。例えば計算システム700のメモリ704は、実行可能コンポーネント706を含むものとして示されている。「実行可能コンポーネント」という用語は、ソフトウェア、ハードウェア、又はその組み合わせであり得る構造であるものとして計算分野の当業者によく知られている構造の名称である。例えばソフトウェアによって実装される場合、実行可能コンポーネントの構造は、かかる実行可能コンポーネントが計算システムのヒープ内に存在しても又はコンピュータ可読記憶媒体上に存在しても、計算システム上で実行され得るソフトウェアオブジェクト、ルーチン、メソッド等を含み得ることを当業者なら理解されよう。
【0076】
[0088] その場合、計算システムの1つ又は複数のプロセッサによって(例えばプロセッサスレッドによって)解釈されるとき計算システムに機能を行わせるように、実行可能コンポーネントの構造がコンピュータ可読媒体上に存在することを当業者なら認識されよう。かかる構造は、(実行可能コンポーネントがバイナリであった場合にそうであるように)プロセッサによって直接コンピュータ可読であり得る。或いはこの構造は、プロセッサによって直接解釈可能であるかかるバイナリを生成するために、解釈可能であるように構成すること及び/又は(単段又は多段内に)コンパイルすることができる。「実行可能コンポーネント」という用語を使用するとき、実行可能コンポーネントの構造の例のそのような理解は計算分野の当業者の理解の範囲内に十分ある。
【0077】
[0089] 「実行可能コンポーネント」という用語は更に、書き換え可能ゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、又は他の任意の専用回路内等、ハードウェア内で排他的に又はほぼ排他的に実装されるハードコード又はハードワイヤード論理ゲート等の構造を含むものとして当業者によってよく理解されている。従ってソフトウェアによって実装されようが、ハードウェアによって実装されようが、又は組み合わせによって実装されようが、「実行可能コンポーネント」という用語は計算分野の当業者によってよく理解されている構造のための用語である。この説明では、「コンポーネント」、「エージェント」、「マネージャ」、「サービス」、「エンジン」、「モジュール」、「仮想マシン」等の用語も使用され得る。この説明及びこの事例で使用するとき、(修飾節と共に表されていようがいまいが)これらの用語は「実行可能コンポーネント」という用語と同義であり、従って計算分野の当業者によってよく理解されている構造も有することを意図する。
【0078】
[0090] 上記の説明では、1つ又は複数の計算システムによって実行される行為に関して実施形態を記載してきた。かかる行為がソフトウェアによって実装される場合、実行可能コンポーネントを構成するコンピュータ実行可能命令を実行したことに応答し、(その行為を実行する関連する計算システムの)1つ又は複数のプロセッサが計算システムの動作を指示する。例えばかかるコンピュータ実行可能命令は、コンピュータプログラム製品を形成する1つ又は複数のコンピュータ可読媒体によって具体化され得る。かかる動作の一例はデータの操作を含む。FPGA又はASIC内等、かかる行為がハードウェア内で排他的に又はほぼ排他的に実装される場合、コンピュータ実行可能命令はハードコード又はハードワイヤード論理ゲートであり得る。コンピュータ実行可能命令(及び操作されるデータ)は計算システム700のメモリ704内に記憶され得る。計算システム700は、例えばネットワーク710上で計算システム700が他の計算システムと通信することを可能にする通信チャネル708も含み得る。
【0079】
[0091] 全ての計算システムがユーザインタフェースを必要としないが、一部の実施形態では、計算システム700はユーザとインタフェースする際に使用するためのユーザインタフェースシステム712を含む。ユーザインタフェースシステム712は、出力メカニズム712A並びに入力メカニズム712Bを含み得る。本明細書に記載した原理は厳密な出力メカニズム712A又は入力メカニズム712Bに限定されず、それはそれらが装置の性質に依存するからである。但し出力メカニズム712Aは、例えばスピーカ、ディスプレイ、触覚出力、ホログラム等を含み得る。入力メカニズム712Bの例は、例えばマイクロホン、タッチスクリーン、ホログラム、カメラ、キーボード、マウス、又は他のポインタ入力、任意の種類のセンサ等を含み得る。
【0080】
[0092] 以下でより詳細に論じるように、本明細書に記載した実施形態は、例えば1つ又は複数のプロセッサ及びシステムメモリ等のコンピュータハードウェアを含む専用計算システム又は汎用計算システムを含む又は利用することができる。本明細書に記載した実施形態は、コンピュータ実行可能命令及び/又はデータ構造を運び又は記憶するための物理的な及び他のコンピュータ可読媒体も含む。かかるコンピュータ可読媒体は、汎用計算システム又は専用計算システムによってアクセス可能な任意の利用可能媒体とすることができる。コンピュータ実行可能命令を記憶するコンピュータ可読媒体は物理記憶媒体である。コンピュータ実行可能命令を運ぶコンピュータ可読媒体は伝送媒体である。従って限定ではなく例として、本発明の実施形態は記憶媒体及び伝送媒体という少なくとも2つの明らかに異なる種類のコンピュータ可読媒体を含み得る。
【0081】
[0093] コンピュータ可読記憶媒体は、コンピュータ実行可能命令又はデータ構造の形で所望のプログラムコード手段を記憶するために使用することができ、汎用計算システム又は専用計算システムによってアクセス可能なRAM、ROM、EEPROM、CD-ROM、又は他の光ディスク記憶域、磁気ディスク記憶域、又は他の磁気記憶装置、又は他の任意の物理的な及び有形の記憶媒体を含む。
【0082】
[0094] 「ネットワーク」は、計算システム及び/又はモジュール及び/又は他の電子装置間の電子データの搬送を可能にする1つ又は複数のデータリンクとして定義される。情報がネットワーク又は別の通信接続(ハードワイヤード、無線、又はハードワイヤード若しくは無線の組み合わせ)上で計算システムに転送され又は提供される場合、計算システムはその接続を伝送媒体として適切に見なす。伝送媒体は、コンピュータ実行可能命令又はデータ構造の形で所望のプログラムコード手段を運ぶために使用することができ、汎用計算システム又は専用計算システムによってアクセス可能なネットワーク及び/又はデータリンクを含み得る。上記のものの組み合わせもコンピュータ可読媒体の範囲に含まれるものとする。
【0083】
[0095] 更に、様々な計算システムコンポーネントへの到達時に、コンピュータ実行可能命令又はデータ構造の形を取るプログラムコード手段は伝送媒体から記憶媒体に(又はその逆に)自動で転送され得る。例えばネットワーク又はデータリンク上で受信されるコンピュータ実行可能命令又はデータ構造はネットワークインタフェースモジュール(例えば「NIC」)内のRAM内にバッファし、その後、計算システムのRAM及び/又は計算システムにおけるより揮発性が低い記憶媒体に徐々に転送することができる。従って記憶媒体は、伝送媒体を同じく(或いは主に)利用する計算システムコンポーネントに含めることができることを理解すべきである。
【0084】
[0096] コンピュータ実行可能命令は、例えばプロセッサにおいて実行されるとき、汎用計算システム、専用計算システム、又は専用処理装置に一定の機能又は機能群を実行させる命令及びデータを含む。或いは又は加えて、コンピュータ実行可能命令は一定の機能又は機能群を実行するように計算システムを構成することができる。コンピュータ実行可能命令は、例えばアセンブリ言語更にはソースコード等の中間形式命令等、プロセッサによって直接実行される前に幾らかの変換(コンパイル等)にかけられるバイナリ更には命令であり得る。
【0085】
[0097] 本内容は構造上の特徴及び/又は方法論的な行為に固有の言語で記載してきたが、添付の特許請求の範囲の中で定める内容は記載した特徴又は上記の行為に必ずしも限定されないことを理解すべきである。むしろ記載した特徴及び行為は特許請求の範囲を実装する形式の例として開示する。
【0086】
[0098] 本発明は、パーソナルコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、メッセージプロセッサ、携帯型装置、マルチプロセッサシステム、マイクロプロセッサベースの又はプログラム可能な家庭用電化製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、携帯電話、PDA、ページャ、ルータ、スイッチ、データセンタ、ウェアラブル(グラス等)等を含む、多くの種類の計算システム構成を有するネットワーク計算環境内で実践できることを当業者なら理解されよう。本発明は、ネットワークを介して(ハードワイヤードデータリンク、無線データリンク、又はハードワイヤードデータリンクと無線データリンクとの組み合わせによって)リンクされるローカル及びリモート計算システムがどちらもタスクを実行する分散型システム環境内でも実践することができる。分散型システム環境では、プログラムモジュールがローカルメモリ記憶装置及びリモートメモリ記憶装置の両方の中に位置し得る。
【0087】
[0099] 当業者は本発明がクラウド計算環境内で実践され得ることも理解されよう。クラウド計算環境は分散され得るが、それは必須ではない。分散される場合、クラウド計算環境は組織内で国際的に分散されてもよく及び/又は複数の組織にわたって保持されるコンポーネントを有し得る。この説明及び添付の特許請求の範囲では、「クラウドコンピューティング」は構成可能な計算資源(例えばネットワーク、サーバ、記憶域、アプリケーション、及びサービス)の共用プールに対するオンデマンドのネットワークアクセスを可能にするためのモデルとして定義する。「クラウドコンピューティング」の定義は、適切に導入されたときかかるモデルから得ることができる他の数多くの利点の何れにも限定されない。
【0088】
[00100] 残りの図面は、先に記載した計算システム700に対応し得る様々な計算システムを論じ得る。残りの図面の計算システムは、説明する本明細書で開示した様々な実施形態を実装し得る様々なコンポーネント又は機能ブロックを含む。様々なコンポーネント又は機能ブロックはローカル計算システム上に実装することができ、又はクラウド内にある要素を含む若しくはクラウドコンピューティングの側面を実装する分散型計算システム上に実装することができる。様々なコンポーネント又は機能ブロックはソフトウェア、ハードウェア、又はソフトウェアとハードウェアとの組み合わせとして実装することができる。残りの図面の計算システムは図示のコンポーネントよりも多く又は少なく含むことができ、状況に応じてコンポーネントの一部が組み合わせられてもよい。必ずしも示されていないが、計算システムの様々なコンポーネントはその様々な機能を実行するために必要なとき、プロセッサ702及びメモリ704等のプロセッサ及びメモリにアクセスする及び/又はそれらを利用することができる。
【0089】
[00101] 本明細書で開示したプロセス及び方法では、プロセス及び方法内で実行される動作が異なる順序で実装されてもよい。更に、略述した動作は例として示したに過ぎず、開示した実施形態の本質から逸れることなしに動作の一部を任意選択的とすることができ、より少ないステップ及び動作に組み合わせることができ、更なる動作で補足することができ、又は追加の動作へと拡張することができる。
【0090】
[00102] 本発明は、本発明の趣旨又は特性から逸脱することなく他の特定の形で実施することができる。記載した実施形態は、あらゆる点で限定ではなく例示に過ぎないと見なすべきである。従って、本発明の範囲は上記の説明によってではなく添付の特許請求の範囲によって示す。特許請求の範囲の意味及び等価性の範囲に含まれるあらゆる変更が特許請求の範囲に包含される。
図1A
図1B
図2
図3A
図3B
図4
図5A
図5B
図6A
図6B
図6C
図6D
図6E
図6F
図6G
図7