理解Qemu与KVM的关系

理解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 设备等)虚拟机?如果可以,那么应该使用哪些程序来创建和控制此虚拟机?

答案1

您说得部分正确。但要小心,因为可能会造成一些混淆。KVM 是 Linux 内核中的虚拟化技术的名称。

KVM 也常用作QEMU 项目的分支(更准确的名称应该是 qemu-kvm),对硬件虚拟化有更好的支持.这一说法经 QEMU 项目确认,但从 QEMU 1.3 版本开始qemu-kvm 的所有功能已合并

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

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

答案2

KVM 是一个内核模块,它允许通过虚拟化特定的 CPU 扩展,直接在主机 CPU 和 RAM 中调度虚拟机的 CPU 请求,同时将开销降到最低。QEMU 提供其余的模拟硬件,因为一台机器,即使是虚拟的,也不仅仅是一个 CPU - 它还包含许多额外的硬件。QEMU 也可以模拟 CPU,但与 KVM 的方式相比,它的速度非常慢,因此合并,以兼顾两全其美

相关内容