web-dev-qa-db-ja.com

QemuとKVM

KVMとQemuの違いは何ですか?私が理解しているように、後者は「ユーザーモードエミュレーション」を提供できます。つまり、次のような他のアーキテクチャ用に構築された単一の実行可能ファイルを実行できます。

# file busybox-sparc 
busybox-sparc: ELF 32-bit MSB executable, SPARC, version 1 (SYSV), statically linked, stripped
# qemu-sparc busybox-sparc ls
Packages_arm     Packages_i386    arm              busybox-armv6l   busybox-i686     busybox-powerpc  busybox-sparc    busybox-x86_64   i386
# 

..「コンピュータエミュレーション」。動的バイナリ変換が実行されるだけでなく、仮想マシン全体がエミュレートされます(ビデオカード、サウンドカード、ネットワークカード、光学デバイスなど)。例えば:

# qemu-system-sparc64 -hda hda.img -cdrom debian-6.0.5-sparc-CD-1.iso -boot d

私が理解しているように、Qemuはハードウェア仮想化(たとえば、x86アーキテクチャのIntel VT-xまたはAMD-Vソリューション)を利用する方法を知りません。これは、KVM=が役立つ場合です-KVMサポートでQemuを起動できます。ただし、KVMは、特定のハードウェアアーキテクチャでのハードウェア支援仮想化へのエミュレーションプログラムへのアクセス以外の機能を提供しますか? KVMのみを使用して仮想マシン全体(CPU、ビデオカード、I/Oデバイスなど)を作成することはできますか?可能であれば、この仮想マシンの作成と制御にどのプログラムを使用する必要がありますか?

17
Martin

あなたは部分的に正しいです。混乱が生じる可能性があるので、注意してください。 KVMは、Linuxカーネルの仮想化テクノロジーの名前です。

KVMは、ハードウェア仮想化のサポートを強化したQEMUプロジェクトの fork(より正確な名前はqemu-kvm)の名前)としてもよく使用されます 。この主張は QEMUプロジェクトによって確認された でしたが、QEMUのバージョン1.3以降は qemu-kvmのすべての機能がマージされました

ダウンロードページKVMプロジェクト については、その違いについても十分に説明しています。

もう1つ覚えておかなければならないのは、qemu-kvmの利点がqemuの新しいリリースに統合されていることです。そのため、2つの違いがなくなることを願っています。

16
chutz

KVMは、仮想化固有のCPU拡張を介して、最小限のオーバーヘッドでVMのCPUリクエストをホストCPUおよびRAMで直接スケジュールできるようにするカーネルモジュールです。 QEMUは、エミュレートされた残りのハードウェアを提供します。これは、仮想マシンであっても、マシンは単なるCPUではなく、追加のハードウェアが大量にあるためです。 QEMUはCPUをエミュレートすることもできますが、KVMはそれを行う方法と比較すると、両方の世界のベストを得るには、ひどく遅いのでマージです。

6
dyasny