サーバー仮想化技術に関する深い知識

サーバー仮想化技術に関する深い知識

サーバー仮想化テクノロジーは、IBM メインフレーム仮想化 z/VM にまで遡ることができます。これは、z シリーズ メインフレーム上でサーバー仮想化を実装します (非仮想化オペレーティング システムは z/OS です)。 z/VM に基づいて数百の仮想マシンを実行できます。その後、Power の KVM テクノロジーは PowerKVM になりました。 AIX 仮想化 PowerVM は、vSCSI と NPIV の両方のテクノロジをサポートします (仮想化システムは VIOS と呼ばれます)。今日の内容は、CPU 仮想化、メモリ仮想化、Intel ハードウェア支援テクノロジ、IO 仮想化、GPU 仮想化など、詳細な技術科学記事をカバーしています。どうか譲って今日の内容は無視してください。

多くの読者は、サーバー仮想化技術はコンテナ技術の影響を受けており、時代遅れになっているのではないかと考えているかもしれません。実際、多くのシナリオでは、仮想化テクノロジをコンテナに置き換えることはできません。したがって、クラウド コンピューティングの分野に参入したい初心者としては、サーバー仮想化について深く理解しておく必要があります。次に、仮想化の発展の歴史とその外部要因や推進力について見てみましょう。

パーティショニング テクノロジにより、仮想化レイヤーでサーバー リソースを複数の仮想マシンに分割できるようになります。単一のサーバー上で複数のアプリケーションを実行できるようになります。各オペレーティング システムは、仮想化レイヤーによって提供される仮想ハードウェアのみを認識します。

仮想マシンの分離により、仮想マシンが相互に分離されるため、1 台の仮想マシンのクラッシュまたは障害 (オペレーティング システムの障害、アプリケーションのクラッシュ、ドライバーの障害など) が同じサーバー上の他の仮想マシンに影響を及ぼしません。

カプセル化とは、仮想マシン全体 (ハードウェア構成、BIOS 構成、メモリ状態、ディスク状態、CPU 状態) を、物理ハードウェアから独立した小さなファイル セットに保存することを意味します。これにより、いくつかのファイルをコピーするだけで、必要なときに必要な場所に仮想マシンをコピー、保存、移動できるようになります。

CPU仮想化開発

サーバー仮想化は、仮想化の程度に応じて、完全仮想化、準仮想化、ハードウェア支援仮想化に分けられます。

CPU 仮想化の条件と技術的な難しさ。 CPU 自体にはさまざまな動作レベルがあり、これらのレベルはさまざまな権限に対応しています。仮想マシンがこれらの機密命令を実行するとエラーが発生する可能性があり、マシン全体の安定性に影響を与えるため、VM が直接実行することは許可されません。この問題を解決するには、仮想化プラットフォームが必要です。

完全仮想化: VMM は、従来オペレーティング システムが配置されているソフトウェア スタック内に配置され、オペレーティング システムは、従来アプリケーションが配置されている場所に配置されます。各ゲスト OS は、物理リソース (プロセッサ、メモリ、ストレージ、グラフィックス カード、ネットワーク カードなど) へのインターフェイスを提供し、ハードウェア環境をシミュレートするために、特殊な命令アクセス通信のバイナリ変換を実行する必要があります。

準仮想化: ゲスト OS コードの一部が変更され、ゲスト OS は特権命令に関連するすべての操作を VMM に送信されるハイパーコールに変換し、VMM は処理を続行して結果を返します。

ハードウェア支援による仮想化: 新しい命令と動作モードを導入し、VMM とゲスト OS を異なるモード (ROOT モードと非 ROOT モード) で実行できるようにし、ゲスト OS をリング 0 で実行します。これにより、ゲスト OS のコア命令を VMM を経由せずにコンピュータ システムのハードウェアに直接送信して実行できます。

仮想化ソフトウェアアーキテクチャの分類

サーバー仮想化は、クラウド コンピューティングにおいて最も重要なテクノロジの 1 つです。仮想化には、サーバー、ストレージ、ネットワーク、データ センターの仮想化など、幅広い意味があります。その目的は、あらゆる形式のリソースを別の形式のテクノロジーに抽象化することであり、それが仮想化です。今日は、サーバー仮想化アーキテクチャの分類について説明します。

ホスト型仮想化: 仮想化管理ソフトウェアは、基盤となるオペレーティング システム (Windows や Linux など) 上の共通アプリケーションとして使用され、それを介して対応する仮想マシンが作成され、基盤となるサーバー リソースが共有されます。

ベアメタル仮想化: ハイパーバイザーは、物理ハードウェア上で直接実行される仮想マシン監視プログラムです。主に 2 つの基本機能を実装します。1 つ目は、仮想マシンによって発行された CPU 特権命令または保護命令を識別、キャプチャ、および応答することです。 2 番目に、仮想マシンのキューとスケジュールの処理を担当し、物理ハードウェアの処理結果を対応する仮想マシンに返します。

オペレーティング システムの仮想化: 個別のハイパーバイザー レイヤーはありません。代わりに、ホスト オペレーティング システム自体が、複数の仮想サーバー間でハードウェア リソースを割り当て、それらを相互に独立させる役割を担います。明らかな違いの 1 つは、OS レベルの仮想化を使用する場合、すべての仮想サーバーで同じ OS (各インスタンスには独自のアプリケーションとユーザー アカウントがありますが)、Virtuozzo/OpenVZ/Docker などを実行する必要があることです。

ハイブリッド仮想化: ハイブリッド仮想化モデルは、ホスト型仮想化と同様にホスト オペレーティング システムを使用しますが、ホスト オペレーティング システムの上にハイパーバイザーを配置する代わりに、カーネル レベルのドライバーがホスト オペレーティング システム カーネルに挿入されます。このドライバーは、仮想マシンとホスト オペレーティング システム間のハードウェア アクセスを調整する仮想ハードウェア マネージャー (VHM) として機能します。ご覧のとおり、ハイブリッド仮想化モデルは、メモリ マネージャーと既存のカーネルの CPU スケジューリング ツールに依存しています。ベアメタル仮想化や OS 仮想化アーキテクチャと同様に、冗長なメモリ マネージャーや CPU スケジューラーが存在しないことで、このモデルのパフォーマンスが大幅に向上します。

さまざまなアーキテクチャの比較

ベアメタル仮想化アーキテクチャとハイブリッド仮想化アーキテクチャは、仮想化アーキテクチャの今後の開発トレンドになります。ハードウェア支援による仮想化と組み合わせることで、物理マシンに近い動作パフォーマンスを実現できます。 KVM、Hyper-V、VMware などの主流のサーバー仮想化はすべて、ハードウェア支援による仮想化をサポートしています。

メモリ仮想化

仮想環境では、仮想化ハイパーバイザーは、仮想化されたメモリがクライアント OS のメモリの想定と理解に準拠するようにシミュレートする必要があります。仮想マシンの観点から見ると、物理メモリは複数のクライアント OS によって同時に使用されます。これにより、物理メモリが複数のシステム間で分割されている場合のクライアント OS メモリの連続性の問題が解決されます。

上記の問題を解決するために、仮想マシン OS が仮想物理アドレスを認識できるようにクライアント物理アドレス空間の新しいレイヤーが導入され、仮想化ハイパーバイザーがそれを物理プロセッサによる実行のために物理アドレスに変換する役割を担います。つまり、仮想マシンの場合、クライアントの物理アドレスとホストの物理アドレス間のマッピング関係を維持します。仮想マシンのクライアント物理アドレスへのアクセスを傍受し、それを物理アドレスに変換します。

完全なメモリ仮想化: 仮想化マネージャーは、各ゲストのシャドウ ページ テーブルを維持し、仮想アドレス (VA) とマシン アドレス (MA) 間のマッピング関係を維持します。

メモリ準仮想化テクノロジー: ゲスト OS が新しいページ テーブルを作成すると、そのページ テーブルが VMM に登録されます。その後、ゲストが実行されるときに、ゲスト上のプログラムが適切なアドレスに直接アクセスできるように、VMM はこのテーブルを継続的に管理および維持します。

ハードウェア支援によるメモリ仮想化: 元のページ テーブルに基づいて EPT (拡張ページ テーブル) ページ テーブルが追加され、これを通じてゲストの物理アドレスをホストの物理アドレスに直接変換できます。

I/O仮想化テクノロジー

仮想化後、サーバーのイーサネット ポートが複数のポートに分割されると、ネットワーク、ストレージ、サーバー間のトラフィックが不十分になる可能性があります。 I/O ボトルネックが発生すると、CPU はデータを待機してアイドル状態になり、計算効率が大幅に低下します。したがって、ネットワーク インターフェイスの使用を最大限に活用するには、仮想化を I/O システムにも拡張して、ワークロード、ストレージ、サーバー間で帯域幅を動的に共有する必要があります。

I/O 仮想化の目的は、仮想マシンが必要な I/O リソースにアクセスできるようにするだけでなく、それらを分離し、さらに重要なことに、仮想化によって発生するオーバーヘッドを削減することです。

完全仮想化: 仮想化は、I/O デバイス (ディスク、ネットワーク カードなど) をシミュレートすることによって実現されます。ゲスト OS が認識できるのは、統合された I/O デバイスのセットだけです。 VMM は、ゲスト OS の I/O デバイスへのアクセス要求をインターセプトし、ソフトウェアを通じて実際のハードウェアをシミュレートします。この方法はゲストに対して非常に透過的であり、基盤となるハードウェアを考慮する必要はありません。たとえば、ゲストはディスク タイプ、物理インターフェイスなどに基づいて動作します。

準仮想化: フロントエンドおよびバックエンド アーキテクチャを通じて、ゲストの I/O 要求はリング キューを介して特権ドメイン (ドメイン 0 とも呼ばれます) に渡されます。この方法には多くの詳細があるため、後で詳しく分析します。

ハードウェア支援による仮想化: 最も代表的なものは、Intel の VT-d/VT-c、AMD の IOMMU、PCI-SIG の IOV です。このテクノロジには、対応するネットワーク カードの連携も必要です。現在、一般的なネットワーク カードは、通常のネットワーク カード、VMDq パススルー、SR-IOV に分けられます。

通常のネットワーク カードは、Domin0 ブリッジ キューを使用します。

VMDq は、VMM を通じてサーバーの物理ネットワーク カード内の各仮想マシンに独立したキューを割り当てます。仮想マシンからのトラフィックは、ソフトウェア スイッチを介して指定されたキューに直接送信できます。ソフトウェア スイッチは、ソートおよびルーティング操作を実行する必要はありません。 Hyper-V はこのモードを採用しています。

SR-IOV は、異なる仮想機能 (VF) を作成して、仮想マシンが物理的に独立したネットワーク カードを使用できるようにします。これにより、仮想マシンはソフトウェア スイッチを経由せずにハードウェア ネットワーク カードと直接通信できるようになり、仮想化管理プログラム レイヤーでのアドレス変換が削減されます。

仮想化のための Intel ハードウェア サポート

VT-x テクノロジーは、IA 32 プロセッサに VMX ルート操作と VMX 非ルート操作の 2 つの操作モードを追加します。 VMM 自体は VMX ルート操作モードで実行され、ゲスト OS は VMX 非ルート操作モードで実行されます。どちらの動作モードも Ring0 ~ Ring 3 の特権実行レベルをサポートしているため、VMM とゲスト OS の両方が期待する実行レベルを自由に選択できます。仮想マシンが特定の命令を直接実行できるようにすることで、VMM の負担を軽減します。 VT-x は Xeon プロセッサの VT テクノロジーを指し、VT-i は Itanium プロセッサの VT テクノロジーを指します。

VT-d (VT for Direct I/O) は主にチップセットに実装されており、仮想マシンが I/O デバイスに直接アクセスして VMM と CPU の負担を軽減できるようにします。基本的な考え方は、仮想マシンが物理デバイスを直接使用できるようにすることですが、これには I/O アドレス アクセスと DMA の問題が伴います。 VT-d は、DMA 再マッピングと I/O ページ テーブルを使用してこれら 2 つの問題を解決し、仮想マシンが物理デバイスに直接アクセスできるようにします。

VT-c (VT for Connectivity) は主にネットワーク カードに実装されており、VMDq と VMDc という 2 つのコア テクノロジが含まれています。 VMDq は、ネットワーク カード上の特定のハードウェアを介してさまざまな仮想マシンのデータ パケットを事前に分類し、VMM を介して各仮想マシンに配布することで、VMM によるパケット分類の CPU オーバーヘッドを削減します。 VMDc を使用すると、仮想マシンはネットワーク カード デバイスに直接アクセスできます。シングル ルート I/O 仮想化 (SR-IOV) は、PCIe デバイスを複数の仮想マシンに割り当てて直接アクセスできるようにする PCI-SIG 仕様です。

Trusted Execution Technology (TXT) は、高度なモジュール チップを使用して、ユーザーのコンピューターをさまざまなセキュリティの脅威から効果的に保護できます。コンピュータ リソースへのアクセスは、主にハードウェア カーネルとサブシステムを通じて制御されます。コンピュータウイルス、悪意のあるコード、スパイウェア、その他のセキュリティ上の脅威は存在しなくなります。

GPUとGPU仮想化テクノロジー

GPU パススルーは GPU デバイスを仮想マシンに直接渡します。 GPU 共有は、GPU デバイスを GPU サーバー仮想マシンに直接渡します。 GPU サーバーは GPU デバイスを GPU クライアントと共有できます。 GPU 仮想化とは、GPU デバイスを n 個の vGPU に仮想化し、対応する n 個の仮想マシンが同時に GPU デバイスを直接使用できることを意味します。仮想化をサポートする GPU デバイスは、パススルーまたは仮想化タイプとして構成できます。

GPU 仮想化では、VGX GPU ハードウェア仮想化機能を使用して、物理 GPU デバイスを複数の仮想 GPU デバイスに仮想化し、仮想マシンで使用できるようにします。各仮想マシンは、バインドされた vGPU を介して物理 GPU の一部のハードウェア リソースに直接アクセスできます。すべての vGPU は、物理 GPU の 3D グラフィックス エンジンとビデオ コーデック エンジンへのアクセスを時分割で共有でき、独立したビデオ メモリを備えています。

GPU 仮想化機能では、物理 GPU デバイスを複数の仮想マシンで同時に使用できますが、GPU パススルーの GPU デバイスは 1 台の仮想マシンでのみ使用できます。 GPU 仮想化により、同じ GPU 物理デバイスを使用する仮想マシンが相互に影響を与えないようにすることができます。システムは、物理 GPU デバイスの処理能力を複数の仮想マシンに自動的に割り当てます。 GPU 共有とは、GPU サーバーを介して GPU デバイスをマウントし、ホスト上の GPU サーバーと GPU クライアントの間に高速通信メカニズムを確立して、GPU クライアントが GPU サーバーの GPU デバイスを共有できるようにすることです。 GPU クライアントが GPU 機能を利用できるかどうかは、GPU サーバーに完全に依存します。

<<:  Kafka はどのようにして 1 秒あたり数百万件という超高速同時書き込みを実現するのでしょうか?

>>:  21Vianet Blue Cloud、信頼できる中立的なイネーブラーとなるためのクラウドエコシステム戦略を発表

推薦する

SaaSは「中国ならではのスキル」を発揮できるか?

先月、あるインターネット大手の招待を受けて、北京で企業向けオンラインサービスに関する非公開会議に出席...

記事の掲載が難しい状況に直面し、細部にもっと注意を払う必要がある

今年、百度のアルゴリズムが継続的に改善・調整されたため、自分のウェブサイトや友人のウェブサイトのコン...

良いフォーラムの雰囲気を作るには、ルールを正すことから始まる

最近、あるネットユーザーが国家の法律や規則を遵守せず、国家に不利益なデマをインターネット上で流布し、...

ドラゴンボートフェスティバルのメールマーケティングに中国の要素を加える

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

404 エラー ページとは何ですか? 最適な設定方法を教えてください。

404 エラー ページとは何ですか? ここで言及している 404 ページとは、何らかの理由により、ク...

ウェブマスターネットワークニュース: 6桁ドメイン名の新時代が到来したかもしれない。警察がQvod屋台事件に介入

1. クアイボは今日トラブルに巻き込まれた:多数の警察がその巣を襲撃したKuaiBoが「心機一転」し...

Baiduの外部リンクツールを参考にして外部リンクを作ることについての私の個人的な意見

インターネット上にはすでに百度の外部リンク検索ツールに関する議論の投稿が多数あり、同社はそれらの古い...

外部リンクよりもブランドプロモーションが重要

主要なフォーラム、特にウェブマスター フォーラムをすべて調べた結果、Guardian は非常に一般的...

IT移民労働者のウェブサイトの最適化は、ツールを組み合わせて簡単にするのが得意です

「ウェブサイトの最適化とは何か」「それは簡単なのか」「将来性はあるか」などと聞かれるたびに、どう答え...

一生役立つ企業向けWeiboマーケティングスキルをシェアします

ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービス企業がインターネットマー...

Kubernetes チェックポイント API を使用してコンテナをバックアップおよび復元する

Kubernetes v1.25 では、コンテナ チェックポイント API がアルファ機能として導入...

IDC: パブリック クラウドの拡大により、第 4 四半期のグローバル クラウド IT インフラストラクチャ収益が 2 桁成長

IDC のグローバル クラウド IT インフラストラクチャ四半期追跡レポートによると、2017 年第...

Kafka、RocketMQ、Pulsar の包括的な比較!

[[419149]]画像はBaotu.comよりビッグデータ時代の到来により、Apache の Ka...