了解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 # 

…和“计算机仿真”,这意味着不仅执行dynamic二进制翻译,而且仿真整个虚拟机(video卡,声卡,网卡,光学设备等)。 例如:

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

正如我所了解的,Qemu不知道如何利用硬件虚拟化(例如x86架构上的英特尔VT-x或AMD-V解决scheme),KVM可以提供帮助的情况就是这样 – 可以通过KVM支持启动Qemu。 但是,除了仿真程序访问特定硬件体系结构上的硬件辅助虚拟化之外,KVM是否还提供其他任何function? 是否有可能仅使用KVM创build整个(CPU,video卡,I / O设备等)虚拟机? 如果是,那么应该使用哪个程序来创build和控制此虚拟机?

你是部分正确的。 只要小心,因为可能会有一些混乱。 KVM是Linux内核中虚拟化技术的名称。

KVM也通常用作QEMU项目的一个分支名称(更准确的名字是qemu-kvm),更好地支持硬件虚拟化 。 QEMU项目证实了这一说法,但是从QEMU 1.3版本开始,qemu-kvm的所有function已经合并 。

KVM项目 的下载页面也很好地解释了这种差异。

还有一点需要注意的是,qemu-kvm的优点正在被合并到qemu的新版本中,所以我希望有一天它们之间的区别将消失。

KVM是一个内核模块,它允许通过虚拟化特定的CPU扩展,直接在主机CPU和RAM中调度一个VM CPU请求,同时开销最小。 QEMU提供了其余的模拟硬件,因为一台机器,甚至是虚拟的,不仅仅是一个CPU – 这是很多额外的硬件。 QEMU也可以模仿CPU,但是与KVM的方式相比,它的速度非常慢,因此合并以获得两全其美