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 的所有功能已合并。
还有一件要记住的事情是,qemu-kvm 的优势正在合并到 qemu 的较新版本中,所以我希望有一天两者之间的差异会消失。
答案2
KVM 是一个内核模块,它允许通过虚拟化特定的 CPU 扩展,直接在主机 CPU 和 RAM 中调度虚拟机的 CPU 请求,同时将开销降到最低。QEMU 提供其余的模拟硬件,因为一台机器,即使是虚拟的,也不仅仅是一个 CPU - 它还包含许多额外的硬件。QEMU 也可以模拟 CPU,但与 KVM 的方式相比,它的速度非常慢,因此合并,以兼顾两全其美