仮想化について語るパート2 - 仮想化が直面する課題

仮想化について語るパート2 - 仮想化が直面する課題

この部分について説明する前に、まず仮想化に関する一般的な概念を理解しておきましょう。

1. 共通の概念

(1)ホストマシン:ホストマシンとは物理的なマシンリソースを指します。物理マシンが複数の仮想マシンに仮想化されている場合、その物理マシンはホスト マシンと呼ばれます。

(2)クライアント:ゲストマシンとも呼ばれ、仮想マシンのリソースを指します。

(3)ホストOSとゲストOS:ホストマシン上で動作するOSがホストOSである。ゲストマシン上で実行されている OS はゲスト OS です。

(4)ハイパーバイザーまたはVMM:仮想化層のシミュレーションを通じて、仮想マシンは上位層ソフトウェアに対して実際のマシンとして表示されます。この仮想化レイヤーは、一般に仮想マシン モニター (VMM) またはハイパーバイザーと呼ばれます。これは、基盤となる物理サーバーとオペレーティング システムの間で実行される中間ソフトウェア レイヤーであり、複数のオペレーティング システムとアプリケーションがハードウェアを共有できるようにします。

さらに理解を深めるために、ハイパーバイザーは仮想環境内の「メタ」オペレーティング システムと考えることができます。メモリやディスクを含むサーバー上のすべての物理デバイスにアクセスできます。ハイパーバイザーは、これらのハードウェア リソースへのアクセスを調整するだけでなく、仮想マシン間の保護も提供します。サーバーが起動してハイパーバイザーを実行すると、すべての仮想マシン クライアントのオペレーティング システムがロードされ、各仮想マシンに適切な量のメモリ、CPU、ネットワーク、ディスクが割り当てられます。

(5)VM:仮想マシン。仮想化技術を利用して、完全なコンピュータハードウェアシステムの機能をソフトウェアでシミュレートすることにより構築された完全な仮想コンピュータシステムを指します。仮想マシンは、ローカル コンピューターを使用する場合と同じように、完全に分離された環境で独立して実行できるため、安全で信頼性があります。

2. 仮想化の課題

ソフトウェアを通じて VMM を設計する場合、多くの問題を解決する必要があります。見てみましょう:

(1)VMMがすべてのシステムリソースを制御することを確認する

x86 プロセッサには、リング 0 ~ リング 3 の 4 つの特権レベルがあります。リング 0 ~ 2 で実行されている場合にのみ、プロセッサは特権リソースにアクセスしたり、特権命令を実行したりできます。リング 0 で実行している場合、プロセッサはすべての特権状態にアクセスできます。 x86 プラットフォーム上のオペレーティング システムは通常、リング 0 とリング 3 のみを使用します。オペレーティング システムはリング 0 で実行され、ユーザー プロセスはリング 3 で実行されます。上記の最初の十分な条件であるリソース制御を満たすには、VMM 自体がリング 0 で実行されている必要があります。同時に、ゲスト OS がシステム リソースを制御しないようにするには、ゲスト OS が自身の動作レベルを下げてリング 1 またはリング 3 で実行する必要があります (リング 2 は使用されません)。

(2)リング圧縮

VMM は物理メモリへのアクセスを保護するためにページングまたはセグメント制限を使用しますが、セグメント制限は 64 ビット モードでは機能せず、ページングは​​リング 0、1、2 を区別しません。 VMM の設計を統一して簡素化するために、ゲスト OS はゲスト プロセスと同様にリング 3 レベルでのみ実行できます。 VMM は、ゲスト OS がリング 0 で実行されるのを防ぎながら、ダウングレードされたゲスト OS をアクティブな攻撃やゲスト プロセスによる意図しない損傷から保護するために、GDT (グローバル記述子テーブル) や IDT (割り込み記述子テーブル) などの特権リソースのゲスト OS 設定を監視する必要があります。

(3)特権レベル名(リングエイリアス)

権限レベル名は、仮想マシンでゲスト OS が実行されるレベルが予期したレベルではないことを意味します。 VMM は、ゲスト OS が仮想マシンで実行されていることを認識できないようにする必要があります。そうしないと、同等条件に違反する可能性があります。たとえば、x86 プロセッサの特権レベルは、CS (コード セグメント) コード セグメント レジスタに格納されます。ゲスト OS は、非特権のプッシュ命令を使用して、CS レジスタをスタックにプッシュできます (スタックはストレージ システムです。プッシュはデータの書き込みで、プッシュで表され、各プッシュで 2 減少します。ポップはデータの出力で、ポップで表され、各ポップで 2 増加します。順序は先入れ後出し、後入れ先出しです)。その後、ポップして値を確認します。たとえば、ゲスト OS が低い権限レベルで特権レジスタ GDT、LDT (Local Descriptor Table)、IDT、および TR (Task Rigister) を読み取る場合、例外は発生しないため、これらの値が期待するものと異なることが検出される場合があります。この課題に対処するために、VMM は、事前に「push %%cs」命令を置き換え、スタックにシャドウ CS レジスタ値を格納するなどの動的バイナリ変換テクノロジを使用できます。たとえば、GDT レジスタ「sgdt dest」を読み取る操作は、「movl fake_gdt, dest」に変更できます。

(4)アドレス空間圧縮

アドレス空間の圧縮とは、VMM がゲスト OS のアドレス空間の一部を予約して使用する必要があることを意味します。たとえば、割り込み記述テーブル レジスタ (IDT レジスタ) には、割り込み記述テーブルのリニア アドレスが格納されます。ゲスト OS の実行中に外部割り込みが発生したり、プロセッサ例外がトリガーされたりした場合は、実行権を直ちに VMM に転送する必要があります。したがって、VMM は、ゲスト OS の線形アドレス空間の一部を、独自の割り込み記述テーブルのホスト物理アドレスにマップする必要があります。 VMM はゲスト OS のアドレス空間内で完全に実行することも、独立したアドレス空間を持つこともできます。後者の場合、VMM は、割り込み記述テーブルやグローバル記述子テーブル (GDT) などの重要な特権状態を格納するために、ゲスト OS のアドレス空間のごく一部のみを占有します。どちらの場合でも、VMM はゲスト OS がアドレス空間のこの部分を直接読み取ったり変更したりすることを防ぐ必要があります。

(5)ゲストOSのページフォールト例外の処理

メモリは非常に重要なシステム リソースであり、VMM によって完全に管理される必要があります。ゲスト OS が認識する物理アドレスは、ゲスト物理アドレスのみであり、最終的なホスト物理アドレスではありません。ゲスト OS でページ フォールト例外が発生した場合、VMM はページ フォールト例外の原因、ゲスト プロセスが権限のないアドレスにアクセスしようとしているかどうか、ゲスト リニア アドレスがまだゲスト物理アドレスに変換されていないかどうか、またはゲスト物理アドレスがまだホスト物理アドレスに変換されていないかどうかを把握する必要があります。

実行可能な解決策は、VMM がゲスト OS の各プロセス ページ テーブルに対してシャドウ ページ テーブルを構築し、ゲスト リニア アドレスからホスト物理アドレスへのマッピングを維持し、ホスト CR3 レジスタにこのシャドウ ページ テーブルの物理メモリ アドレスを格納することです。 VMM は、ゲスト OS のグローバル ゲスト物理アドレスとホスト物理アドレスのマッピング テーブルも維持します。ページ フォールト例外が発生するアドレスは常にゲスト リニア アドレスです。 VMM はまず、ゲスト OS のページ テーブルで原因を確認します。ページ テーブル エントリが確立されている場合、つまり、対応するゲスト物理アドレスが存在し、ホスト物理アドレスへのマッピングがまだ確立されていないことを示している場合、VMM は物理メモリのページを割り当て、シャドウ ページ テーブルとマッピング テーブルを更新します。それ以外の場合、VMM はゲスト OS に戻り、ゲスト OS 自体が例外を処理します。

(6)ゲストOSでのシステムコールの処理

システム コールは、オペレーティング システムによってユーザーに提供されるサービス プロセスであり、非常に頻繁に使用されます。最近のオペレーティング システムでは、通常、SYSENTER/SYSEXIT 命令ペアを使用して高速システム コールを実装します。 SYSENTER 命令は、3 つの MSR (モデル固有レジスタ) IA32_SYSENTER_CS、IA32_SYSENTER_EIP、および IA32_SYSENTER_ESP を介してリング 0 に直接転送されます。 SYSEXIT 命令は、リング 0 で実行されない場合、例外をトリガーします。したがって、VMM がこれらの 2 つの命令を Trap-And-Emulate 方式でしか処理できない場合、全体的なパフォーマンスが大幅に低下します。

(7)仮想割り込みと例外の転送

ホスト プロセッサのすべての外部割り込みと例外は VMM によって直接引き継がれ、VMM は必要な仮想割り込みと例外を構築してゲスト OS に転送します。 VMM は、ハードウェアとオペレーティング システムによる割り込みと例外の完全な処理フローをシミュレートする必要があります。たとえば、VMM はまずゲスト OS の現在のカーネル スタックに何らかの情報をプッシュし、次にゲスト OS の対応する処理ルーチンのアドレスを見つけてそこにジャンプする必要があります。 VMM はさまざまなゲスト OS の内部ワークフローに精通している必要があるため、VMM の実装が難しくなります。同時に、ゲスト OS は割り込みを頻繁にマスクしたり有効にしたりする場合があります。これら 2 つの操作は特権レジスタ EFLAGS にアクセスし、VMM によってシミュレートされる必要があるため、パフォーマンスが低下します。ゲスト OS が割り込みを再度有効にすると、VMM にタイムリーに通知され、蓄積された仮想割り込みが転送される必要があります。

(8)ゲストOSが特権リソースに頻繁にアクセスする

ゲスト OS による特権リソースへのアクセスごとにプロセッサ例外がトリガーされ、VMM によってシミュレートされて実行されます。アクセスが頻繁になりすぎると、システム全体のパフォーマンスが大幅に低下します。たとえば、割り込みをマスクして有効にするには、Pentium 4 プロセッサで cli (割り込みクリア) 命令に 60 クロック サイクルかかります。たとえば、プロセッサのローカル高度プログラマブル割り込みプロセッサ (ローカル APIC) には、オペレーティング システムによって変更できるタスク優先度レジスタ (タスク優先度レジスタ) があります。 IO-APIC は、外部割り込みを TPR 値が最も低いプロセッサに転送し (プロセッサが低優先度のスレッドを実行していると想定)、割り込み処理を最適化します。 TPR は、一部のオペレーティング システムによって頻繁に設定される特権レジスタです (Linux カーネルは、初期化フェーズ中に各プロセッサの TPR を同じ値に設定するだけです)。

3. 結論

ソフトウェア VMM が遭遇する上記の課題は、基本的に、ゲスト OS が期待する最高の権限レベルで実行できないために発生します。従来の Trap-And-Emulate 処理方法は、基本的に上記の課題を透過的に解決しますが、設計の複雑さが増し、パフォーマンスが低下します。初期の高度な仮想化ソフトウェアでは、バイナリ変換と準仮想化テクノロジを組み合わせて使用​​していました。中心的なアイデアは、ゲスト OS の特権状態へのアクセスを動的または静的に変更して、不要なハードウェア例外を最小限に抑えることでした。 2005 年にハードウェア支援仮想化テクノロジが登場したことで、VMM の設計がさらに簡素化され、VMM のパフォーマンスが大幅に向上しました。

<<:  クラウド支出の無駄を減らすために知っておくべきこと

>>:  クラウド サービスが分散キャッシュ システム アーキテクチャに統合されると、どのような火花が散るでしょうか?

推薦する

企業ウェブサイト構築におけるトラフィックソースの多様化方法

SEO はかつてウェブサイト トラフィックの主なソースであり、ここ数年で盛んに実施されてきました。検...

justhost のドイツ VPS はいかがでしょうか?簡単な評価とテストデータの共有

Justhost は昨日、ドイツのデータセンターに VPS を設置しました。価格はロシアやアメリカの...

Baidu Green Radishの外部リンクは依然として機能しており、コンテンツは小さくて美しい傾向がある

Baidu Green Radish Algorithm がリリースされてからしばらく経ちました。こ...

K ステーションが主流になったとき、ウェブマスターは何をすべきでしょうか?

時間が経つにつれ、6月末のKステーション、そして7月の狂った調整がありました。毎日、ウェブマスターは...

高帯域幅、低遅延、高可用性を備えたJigoo Technologyは、オーディオおよびビデオ分野で高品質のネットワークを構築します。

4Kや8Kなどの超高精細ビデオ規格の急速な普及に伴い、オーディオとビデオのデータ量が急増し、ストレー...

電子商取引時代の代替アプローチ:ファンがいてこそ未来がある

まず、電子商取引の概念、つまり 3 つのステップについてお話しします。電子商取引1.0の時代は、検索...

小説を読んで学んだマーケティング手法

最近、私はいくつかの小説をフォローしています。これらの小説の中には、まだ連載中のものもあれば、更新さ...

コールドデータからサイト訪問者の熱意を分析する方法

サイト データの分析は、多くの最適化担当者にとって頭痛の種となるかもしれません。ほとんどの人は、大量...

ウェブサイト構築方法とガイドライン

ドメイン名とウェブサイトのスペースが確保できたら、次のステップはウェブサイトの構築方法を検討すること...

マルチアクセス エッジ コンピューティング: IoT とコネクテッド カーの未来

画像ソース: https://pixabay.com/images/id-4343635/テクノロジ...

Dianpingはどのようにして「ゆっくりと」O2Oクローズドループを実現したのでしょうか?

8,000 万人のアクティブなモバイル アプリケーション ユーザー、3,000 人の従業員、10 年...

クラウドプロバイダーとホールセールデータセンターに電力の柔軟性をもたらす方法

不動産投資会社HOYAキャピタルによると、世界トップ5のデータセンター不動産投資信託(REIT)の時...

SEO ガイド: シンプルな SEO プランをすばやく作成する方法!

2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っていますスタートア...

タオバオには李佳琦が必要だ

復帰後も李佳琦は依然として「トップスター」と呼べる。 9月20日、李佳琦がライブ配信を始めるというニ...

クラウドネイティブ時代のエンタープライズマルチアクティブ災害復旧システムを構築するためのアイデアとベストプラクティス

[[409884]]クラウド ネイティブの概念を解釈するときに、マイクロサービスやコンテナについてよ...