安装 Ubuntu 11.10 并将在 Ubuntu 11.04 上创建的 KVM 映像复制到新系统后,我注意到 Virt-manager 说它正在使用 QEMU 而不是 KVM。运行时virsh version
它还显示Running hypervisor: QEMU 0.14.1
。
但是,当我运行kvm-ok
它时,它显示INFO: /dev/kvm exists
和KVM acceleration can be used
。此外,我的 VM 的 XML 文件明确指出它应该使用 KVM:<domain type='kvm'>
<emulator>/usr/bin/kvm</emulator>
。
此外,还lsmod |grep kvm
显示以下内容(当虚拟机运行时):
kvm_intel 61643 3
kvm 383822 1 kvm_intel
那么我如何知道使用的是 KVM 还是 QEMU?为什么这些不同的命令会给出如此矛盾的输出?
答案1
因为 kvm 建立在 QEMU 之上,所以它只是一种硬件加速。
通过它您可以看到运行 VM 的实际进程是一个 kvm 进程。
ps xa| grep "[b]in/kvm"
答案2
http://en.wikipedia.org/wiki/Kernel-based_Virtual_Machine#Design
KVM 本身不执行任何模拟。相反,用户空间程序使用 /dev/kvm 接口来设置客户 VM 的地址空间,为其提供模拟 I/O,并将其视频显示映射回主机。QEMU 版本 0.10.0 及更高版本利用了这一点。