理解Qemu和KVM的关系

Mar*_*tin 19 linux virtual-machines qemu kvm-virtualization

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
# 
Run Code Online (Sandbox Code Playgroud)

..和“计算机模拟”,这意味着不仅执行动态二进制转换,而且模拟整个虚拟机(视频卡、声卡、网卡、光学设备等)。例如:

# qemu-system-sparc64 -hda hda.img -cdrom debian-6.0.5-sparc-CD-1.iso -boot d
Run Code Online (Sandbox Code Playgroud)

正如我所了解的,Qemu 不知道如何利用硬件虚拟化(例如 x86 架构上的 Intel VT-x 或 AMD-V 解决方案),而在这种情况下,KVM 可以提供帮助 - 可以使用 KVM 支持启动 Qemu。但是,除了在特定硬件架构上访问仿真程序对硬件辅助虚拟化的访问之外,KVM 是否提供任何其他功能?是否可以仅使用 KVM 创建整个(CPU、显卡、I/O 设备等)虚拟机?如果是,那么应该使用哪些程序来创建和控制这个虚拟机?

chu*_*utz 17

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

KVM 也常用作QEMU 项目fork(更准确的名称是 qemu-kvm)的名称,更好地支持硬件虚拟化。这一说法得到了 QEMU 项目的证实,但从 QEMU 1.3 版开始,qemu-kvm 的所有功能都已合并

该下载页面KVM项目解释说,差别也非常的好。

要记住的另一件事是,qemu-kvm 的优势正在合并到新版本的 qemu 中,所以我希望有一天两者之间的差异会消失。


dya*_*sny 6

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