Windows system >> Windowsの知識 >  >> Linuxシステムチュートリアル >> Linuxチュートリアル >> KVMの基礎とアーキテクチャII - 基本原則

KVMの基礎とアーキテクチャII - 基本原則

  
 

KVM:Linuxカーネルをベースにしたオープンソースの仮想化ソリューションであるカーネルベースの仮想マシンは、バージョン2.6.20からカーネルの主要ブランチに組み込まれました。当初はX86プラットフォーム上のVMXまたはSVMをサポートするCPUでのみサポートされていましたが、後に標準のLinuxカーネルお​​よびS390、IA64、PowerPCなどのアーキテクチャを徐々にサポートするようになりました。完全にプラットフォームの仮想化機能を提供するために特別に修正されたQemu(Qemu-kvm)の助けを借りて。
KVMは完全に仮想化された仮想マシンを提供するためにx86ハードウェアの仮想化機能に依存しています基本的な考え方は、Linuxカーネルに基づく仮想マシン管理モジュールを追加し、Linuxカーネルで確立され成熟したメカニズムとモジュールを再利用することです。たとえば、プロセススケジューリング、メモリ管理、IO管理などは、実行中の仮想マシンをサポートできるハイパーバイザーになります。
ログイン


ログインKVMは、(IntelのVT-x等)上記のように、完全な仮想化ソリューションは、記載されているハードウェア支援による仮想化技術:以下に示すように、全体的なアーキテクチャ次のように:
VMM(つまり、KVMカーネル)はRing0をrootモードで実行します;
üホスト上のユーザー状態プロセスはroot3でRing3を実行します;
>仮想マシン内のカーネルRing0が非ルートモードで実行中

仮想マシンがRing3を非ルートモードで実行中ユーザー状態プロセス

Qemu-kvmは、KVMによって提供および保守されている改良されたQemuです。 KVMソリューションでは、標準のQemuがより良いパフォーマンスを持つように特別に修正され、KVMと完全に統合されています。
VM(仮想マシン)は伝統的なLinuxプロセスです。 VMはQemu-KVMプロセスのアドレス空間で実行されます;
VMMは/dev /kvmインターフェースを上位層に提供し、/dev /kvmはioctlインターフェースによって制御される標準文字デバイスです; Qemu-kvmは/devを呼び出します/kvmデバイスのioctlインタフェースは、仮想マシンの作成やVの作成など、仮想マシンを制御します。 CPU、実行中の仮想マシンなど

KVM仮想マシンのIOパフォーマンスを向上させるために、KVMはVirtioドライバも提供しています。これはXen環境の準仮想化ドライバに相当します。以下に示すように

2.2 KVM実行は、実質的に
KVMランを表示:
ログインプロセスの説明:
1、ioctlシステムを介して実行/QEMU-KVMユーザ状態動作呼び出しDev /kvmキャラクタデバイス、VMおよびVCPUの作成
2.カーネルKVMモジュールは、関連するデータ構造の作成、つまり初期化を担当します。その後、ユーザー状態に戻ります。3. Qemu-kvmは、ioctl呼び出しを通じてVCPUを実行します。
4を実行した後、カーネルは関連する処理を実行し、VMLAUNCH命令を実行し、VMエントリを通してゲストOSに入り、そしてゲストOSは非ルートモードで実行されます。
5、ゲストOSは対応する仮想マシンコードを実行します。ゲストOSが機密命令を実行した場合、外部割り込みが発生した場合、またはゲストOSに内部例外が発生した場合
7. VM-Exitが発生し、関連情報がVMCS構造体に記録されます。
7. VM-ExitがCPUをルートモードに戻し、VMMがVMCS構造体を読み取り、VM-Exitの原因を判断します。操作または他の周辺命令はユーザモードQemu − kvm(すなわち、ルートモードのリング3)に戻り、Qemu − kvmは関連する命令のシミュレーションを完了する。
9、そうでなければ、VMMは自分自身を処理します - 10、処理が完了した後、VMエントリーはゲストOSに再エントリーされます。

2.3 KVMカーネルモジュールの構成
KVMは主に3つのカーネルモジュールで構成されています。
ü Kvm.ko
ü Kvm-intel.ko
ü Kvm-amd。 Ko

Kvm.koはKVMのコアパブリックモジュールで、kvm-intel.koとkvm-amd.koはそれぞれIntelとAMDのプラットフォームアーキテクチャ用の別々のモジュールです。 KVMコア共通モジュールには、IOMMU、割り込み制御、KVM arch、デバイス管理などのコードが含まれていますこれらのコードは、仮想マシン管理の中核機能を構成しているため、KVM自体は実装されていません。完全なPCシステムの仮想化は、コアCPU仮想化、メモリ仮想化、IO仮想化などの機能の一部を実現し、対応するAPIを上位層に提供するためだけに、残りの仮想化および管理作業は主にQemuに渡されます。 -kvmが担当します。


Copyright © Windowsの知識 All Rights Reserved