LINUX的XEN和KVM到底区别在什么地方?
source: https://www.zhihu.com/question/19844004/answer/121347310
作者:joydchh
链接:https://www.zhihu.com/question/19844004/answer/121347310
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
KVM
<img src="https://pic1.zhimg.com/e4f5b20e348b6b5cc8d85a587f1041e4_b.png" data-rawwidth="769" data-rawheight="633" class="origin_image zh-lightbox-thumb" width="769" data-original="https://pic1.zhimg.com/e4f5b20e348b6b5cc8d85a587f1041e4_r.png">qemu通过libkvm应用程序接口,用fd通过ioctl向设备驱动来发送创建,运行虚机的命令。设备驱动kvm接下来解析命令。
<img src="https://pic1.zhimg.com/1a2e759a10cbaa7acc70b20d53cb0874_b.png" data-rawwidth="1300" data-rawheight="1064" class="origin_image zh-lightbox-thumb" width="1300" data-original="https://pic1.zhimg.com/1a2e759a10cbaa7acc70b20d53cb0874_r.png">domain0做为对hypervisor的扩充,提供对整个平台的管理,直接拥有系统硬件输入输出设备。domain1是一个设备驱动域,拥有部分物理设备。从domain2开始,是普通的用户虚拟化域,不具有任何物理设备,而是通过虚拟设备向位于domain0的后端设备驱动程序申请服务,从而实现对设备的访问。 domain0做为对hypervisor的扩充,提供对整个平台的管理,直接拥有系统硬件输入输出设备。domain1是一个设备驱动域,拥有部分物理设备。从domain2开始,是普通的用户虚拟化域,不具有任何物理设备,而是通过虚拟设备向位于domain0的后端设备驱动程序申请服务,从而实现对设备的访问。
链接:https://www.zhihu.com/question/19844004/answer/121347310
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
有个几个重要区别:
1. KVM内置于Linux,是内核模块;xen是Linux的一个应用。所以KVM可以直接利用Linux来做一些在xen中需要利用hypervisor来做的事情,比如任务调度,内存管理等等。所以相比之下,KVM更轻量,更易管理,并且版本更新也可以随着内核的更新。
KVM
<img src="https://pic1.zhimg.com/e4f5b20e348b6b5cc8d85a587f1041e4_b.png" data-rawwidth="769" data-rawheight="633" class="origin_image zh-lightbox-thumb" width="769" data-original="https://pic1.zhimg.com/e4f5b20e348b6b5cc8d85a587f1041e4_r.png">qemu通过libkvm应用程序接口,用fd通过ioctl向设备驱动来发送创建,运行虚机的命令。设备驱动kvm接下来解析命令。
qemu通过libkvm应用程序接口,用fd通过ioctl向设备驱动来发送创建,运行虚机的命令。设备驱动kvm接下来解析命令。
虚机运行时,有三种模式:
-客户模式:执行非io的客户代码,虚机在这个模式下运行;
-用户模式:代表用户执行io操作,qemu运行在这个模式;
-内核模式:实现客户模式的切换,,kvm工作在这个模式。
<img src="https://pic1.zhimg.com/1a2e759a10cbaa7acc70b20d53cb0874_b.png" data-rawwidth="1300" data-rawheight="1064" class="origin_image zh-lightbox-thumb" width="1300" data-original="https://pic1.zhimg.com/1a2e759a10cbaa7acc70b20d53cb0874_r.png">domain0做为对hypervisor的扩充,提供对整个平台的管理,直接拥有系统硬件输入输出设备。domain1是一个设备驱动域,拥有部分物理设备。从domain2开始,是普通的用户虚拟化域,不具有任何物理设备,而是通过虚拟设备向位于domain0的后端设备驱动程序申请服务,从而实现对设备的访问。 domain0做为对hypervisor的扩充,提供对整个平台的管理,直接拥有系统硬件输入输出设备。domain1是一个设备驱动域,拥有部分物理设备。从domain2开始,是普通的用户虚拟化域,不具有任何物理设备,而是通过虚拟设备向位于domain0的后端设备驱动程序申请服务,从而实现对设备的访问。