仮想化について語るパート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 のパフォーマンスが大幅に向上しました。

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

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

推薦する

US クラウド サーバー\US VPS 推奨「トップ」販売業者「Bandwagonhost」

市場にはアメリカのクラウドサーバー(アメリカの VPS)が数多くありますが、なぜ Bandwagon...

Docker-Compose を通じて Elasticsearch と Kibana を素早くデプロイする

1. 概要Docker Compose を使用して Elasticsearch と Kibana を...

成功するウェブサイトには、高品質な内部リンクの構築が欠かせません

無駄なおしゃべりにこれ以上時間を無駄にせず、すぐに本題に入りましょう。ウェブサイトに内部リンクを構築...

ソフトウェア定義ストレージ (SDS) の使用開始

インターネット、モノのインターネット、ビッグデータの出現により、データは飛躍的に増加しています。毎日...

JVMパフォーマンスチューニングを合理的に計画する方法

JVM のパフォーマンス チューニングには多くの側面でのトレードオフが伴い、小さな変更が全体に影響す...

ウェブサイトがKでホームページだけが残った3つの理由の分析例

ウェブサイトの最適化の過程で、ウェブサイトが K 化されることは非常に一般的です。ほとんどのウェブマ...

ウェブサイトディレクトリとサブドメインを使用してウェブサイトを構築することの違い

多くの企業は、ディレクトリよりも見た目が美しく、かっこいいため、第 2 レベルのドメイン名を使用する...

共有サイトMegauploadの閉鎖により、米国政府のウェブサイトへの大規模なハッカー攻撃が発生した。

海外メディアの報道によると、米司法省は最近、音楽や映画の著作権を侵害している疑いがあるとして、ファイ...

大型モバイルゲーム市場は100億を超える

白黒携帯の時代からフィーチャーフォンの時代まで、カジュアルゲームは常に人気モバイルゲームランキングの...

エッジコンピューティング: ビジネスチャンスと成功のための技術的考慮事項

デジタルへの移行により、デバイス、センサー、電話、ネットワーク、相互接続されたインフラストラクチャが...

「ハイブリッドクラウド産業推進アライアンス」が設立され、ZStackの強みが強化

1月10日、中国情報通信研究院(以下、「CAICT」)が主催し、クラウドコンピューティング標準およ...

SEOは生き残るために絶え間ない革新を必要とします

SEO 技術は、検索エンジンのアルゴリズムの調整ごとに常に変化しています。SEO 担当者が、従来の考...

企業がSEO業者に全面的に頼るべきではない5つの理由

2005 年に SEO 業界が誕生して以来、自分自身や他のウェブマスターに利益をもたらすこの業界に参...

マルチクラウド開発者になる方法

現在、企業のクラウド支出は増加傾向にあり、マルチクラウド戦略に投資する企業が増えています。したがって...