有个几个重要区别:
1. KVM内置于Linux,是内核模块;xen是Linux的一个应用。所以KVM可以直接利用Linux来做一些在xen中需要利用hypervisor来做的事情,比如任务调度,内存管理等等。所以相比之下,KVM更轻量,更易管理,并且版本更新也可以随着内核的更新。
2. 从架构中KVM
qemu通过libkvm应用程序接口,用fd通过ioctl向设备驱动来发送创建,运行虚机的命令。设备驱动kvm接下来解析命令。
虚机运行时,有三种模式:
-客户模式:执行非io的客户代码,虚机在这个模式下运行;
-用户模式:代表用户执行io操作,qemu运行在这个模式;
-内核模式:实现客户模式的切换,,kvm工作在这个模式。XEN
domain0做为对hypervisor的扩充,提供对整个平台的管理,直接拥有系统硬件输入输出设备。domain1是一个设备驱动域,拥有部分物理设备。从domain2开始,是普通的用户虚拟化域,不具有任何物理设备,而是通过虚拟设备向位于domain0的后端设备驱动程序申请服务,从而实现对设备的访问。
KVM是修改过的QEMU,而且使用了硬件支持的仿真,仿真速度比QEMU快