我知道 KVM 通过利用 Intel VT 等 CPU 芯片中的虚拟化扩展来提供硬件加速功能。这样 VCPU 就可以直接映射到物理 CPU,以实现几乎原生的速度。
既然 Linux 内核包含了硬盘、网络和内存的驱动程序。为什么我们还需要 QEMU 来实现服务器虚拟化?(假设我们不需要模拟显卡之类的设备)。
此外,借助 virtio 驱动程序提供的半虚拟化支持,磁盘 I/O 和网络性能得到显著改善。为什么我们不能只使用 KVM 和 virtio。在这种情况下 QEMU 的作用是什么?
答案1
QEMU 是虚拟硬件。CPU、芯片组、I/O 总线、中断控制器、基本外设以及使平台正常工作的其他硬件 API。模拟效果足够好,可以在外来硬件上运行十几个平台。速度很慢,因为需要重写 CPU 指令,但可能。相对于本机来说速度较慢,也就是说,QEMU 是一个“快速模拟器”。
主机 Linux 内核类似于虚拟固件和驱动程序。低级地刺激实际硬件使其运行。Linux 当然可以自行运行用户空间程序,在这种情况下,这些程序是模拟硬件的虚拟机。
KVM 添加了利用硬件辅助虚拟化的加速驱动程序。消除模拟和其他开销使其速度更快。模拟任何硬件平台不再可能。但在实践中,购买 ARM、POWER 或 x86 并分别运行其原生架构的客户机效率更高。