简述KVM架构和Xen架构

暑假最后一篇更新,由于,,,明天我就回学校了。架构

如下均为我的理解,若是有不对的地方还望各位dalao不吝赐教。操作系统

虚拟化

虚拟化是经过Hypervisor程序实现的,Hypervisor的做用是将硬件虚拟化提供给多个操做系统使用,是虚拟化技术的核心。
虚拟化分为两种:1型虚拟化2型虚拟化线程

  • 1型虚拟化是将Hypervisor直接安装在物理机上,而后虚拟机直接运行在Hypervisor上,Xen就是属于1型虚拟化
  • 2型虚拟化是先在硬件上安装操做系统,而后将Hypervisor做为系统的一个程序运行在系统上从而实现对虚拟机的管理,KVM就是属于2型虚拟化

KVM架构


先来看一下KVM,KVM是基于Linux内核实现的,KVM的内核模块叫作kvm.ko,实现对Linux的CPU和内存虚拟化,是Linux的一个进程,负责VCPU内存的分配,而其余设备的虚拟就交给了qemu
qemu运行在用户空间,KVM运行在内核,二者经过/dev/kvm进行交互。
KVM仅支持全局虚拟化。code


Xen架构


再来看一下XenXen支持全虚拟化和半虚拟化,(全虚拟化就是运行在虚拟环境的虚拟机没法感知到本身是运行在虚拟环境之上,只会以为本身是运行在硬件之上,半虚拟化是运行在虚拟环境的虚拟机能够感知到本身不是直接运行在硬件环境之上)这一点不一样于KVM的仅支持全局虚拟化。Xen是直接运行在硬件上的,也就是上面提到的1型虚拟化,直接对硬件进行虚拟化,而后在硬件之上直接跑虚拟机,在Xen架构中的虚拟机分为两种:Domain0DoaminU.Domain0又叫作特权虚拟机,具备直接访问硬件和管理其余操做系统的权限,而DoaminU就是普通的虚拟机,DoaminU不能直接访问硬件,全部的操做都是经过驱动发送到特权虚拟机Domain0,由Domain0去和硬件交互再返回给普通用户,因此,Xen架构的虚拟化须要先运行Domain0
Xen架构也是对CPU内存进行虚拟化,提供给虚拟机用,其他硬件访问是经过特权虚拟机直接与硬件进行交互再返回的。
默认Domain0VCPU和内存的大小是这样计算的:blog

Domain0的VCPU = 物理设备线程数 % 10而后向上取最小的一个偶数,就是Domain0的VCPU数。
Domain0的内存:若是物理设备的内存小于96G,那么就默认为8G,若是物理机的内存大于96G,那么Domain0的内存 = 物理机内存 *0.05 + 8G进程

相关文章
相关标签/搜索