KVM与XEN区别是啥

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了KVM与XEN区别是啥相关的知识,希望对你有一定的参考价值。

参考技术A 一、KVM简介

KVM是一个全虚拟化的解决方案。可以在x86架构的计算机上实现虚拟化功能。但KVM需要CPU中虚拟化功能的支持,只可在具有虚拟化支持的CPU上运行,即具有VT功能的Intel CPU和具有AMD-V功能的AMD CPU。

Xen与KVM的比较

Xen是Linux下的一个虚拟化解决方案,但由于被Citrix收购后,变成了和红帽企业版一样了,卖服务收取费用,Redhat从rhel6.0开始已经从内核中把XEN踢出去了,全心投入开发免费的KVM,虽然市场上老用户还在用Xen,但相信kvm会逐步占领大面积的市场,必竟有redhat做为强大支持源。

Xen的实现方法是运行支持Xen功能的kernel,这个kernel是工作在Xen的控制之下,叫做Domain0,使用这个kernel启动机器后,你可以在这个机器上使用qemu软件,虚拟出多个系统。Xen的缺点是如果你需要更新Xen的版本,你需要重新编译整个内核,而且,稍有设置不慎,系统就无法启动。

相比较,KVM就简化的多了。它不需要重新编译内核,也不需要对当前kernel做任何修改,它只是几个可以动态加载的.ko模块。它结构更加精简、代码量更小。所以,出错的可能性更小。并且在某些方面,性能比Xen更胜一筹。

  二、KVM的使用

  现在以Turbolinux 11版本为基础,介绍KVM的使用方法。

  在安装之前,你需要先确认,你的CPU是否支持虚拟化技术,执行:
 
  # egrep '^flags.*(vmx|svm)' /proc/cpuinfo

  如果有输出返回,则表示你的CPU支持虚拟化技术。

  1.KVM的安装

  从官方网站下载KVM源码包:http://kvm.qumranet.com
  我们使用KVM-33版本

  # tar zxf kvm-33.tar.gz
  # cd kvm-33
  # ./configure --prefix=/usr/local/kvm-33
  # make
  # make install

  make install后,kvm的模块会安装到/lib/modules/$KernelVersion/extra/目录下。其他相关文件会安装到/usr/local/kvm-33/目录下。

  将kvm相关目录连接到系统目录中

  # ln -s /usr/local/kvm-33/bin/* /usr/bin/
  # ln -s /usr/local/kvm-33/lib/* /usr/lib/
  (若为x86_64系统,则执行: ln -s /usr/local/kvm-33/lib64/* /usr/lib64/)
  # ln -s /usr/local/kvm-33/include/kvmctl.h /usr/include/
  # ln -s /usr/local/kvm-33/include/linux/* /usr/include/linux/
  # ln -s /usr/local/kvm-33/share/qemu /usr/share/

  2.KVM的使用

  a.你需要先建立一个映像文件作为虚拟系统的硬盘

  # mkdir /images
  # cd /images
  # /usr/bin/qemu-img -f qcow gtes11.img 20G

  b.创建网络配置脚本

  # echo ’/sbin/ifconfig $1 10.0.1.1 netmask 255.255.255.0’ > /etc/qemu-ifup

  c.加载KVM模块

  Intel CPU使用:
  # modprobe kvm-intel
  AMD CPU使用:
  # modprobe kvm-amd

  d.安装虚拟系统

  # /usr/bin/qemu-i386 -m 512 -k en-us -M pc -hda /images/gtes11.img -cdrom /iso/zuma-SP3-rc3-6-\
disc1-20061031.iso -net nic,vlan=1,model=rtl8139,macaddr=00:00:00:00:99:01 -net tap,vlan=1,ifname=tap0,\
script=/etc/qemu-ifup -vnc localhost:1 -boot d

  在另一个终端执行:

  # vncviewer localhost:1

  参数分析:

  我们为虚拟系统分配512MB内存。使用gtes11.img作为它的第一块硬盘,使用Turbolinux10.5的disc1作为它的光盘。
并从光盘引导。它有一块rtl8139的网卡,MAC地址为:00:00:00:00:99:01,并把这个网卡与主机的tap0接口连接。
tap0接口使用/etc/qemu-ifup脚本进行初始化。虚拟系统的输出作为一个vnc服务器,绑定在主机的localhost:1上。

  注:

  1.若为x86_64系统,则使用/usr/bin/qemu-system-x86_64代替qemu-i386

  2.在64位系统上,可以安装32位和64位的虚拟系统。但在32位系统上,只能安装32位的虚拟系统。

  qemu参数介绍:

  -da 映像文件:使用映像文件作为虚拟系统的第一块硬盘。同样还可以使用hdb、hdc、hdd指定第2、3、4块硬盘。
  -drom 光盘映像文件:使用光盘映像文件作为虚拟系统的光盘。
  -oot [a|c|d|n]:设置虚拟系统的引导顺序。a为软驱、c为硬盘、d为光驱、n为网络。
  - 内存大小:设置虚拟系统使用的内存大小,单位为MB。
  - 语言:设置虚拟系统键盘类型。
  -et nic[,vlan=n][,macaddr=addr][,model=type]
建立一个虚拟网卡,并把它连接到VLAN的n端口上。
  -net tap[,vlan=n][,fd=h][,ifname=name][,script=file]

  把主机的TAP网络接口连接到VLAN的n端口上,并使用script指定的脚本进行初始化。

XEN与VMware ESXiHyper-V 以及 KVM 架构与特点比较非原创

XEN与VMware ESXi、Hyper-V 以及 KVM 架构与特点比较

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Kim_Weir/article/details/80555766
XEN 与 VMware ESXi,Hyper-V 以及 KVM 特点比较: 
a.XEN 有简化虚拟模式,不需要设备驱动,能够保证每个虚拟用户系统相互独立,依赖于 service domains 来完成一些功能; 
b.Vmware ESXI 与 XEN 比较类似,包含设备驱动以及管理栈等基本要素,硬件支持依赖于 VMware 创建的驱动; 
c.Hyper-V 是基于 XEN 管理栈的修改; 
d.KVM 与 XEN 方式不同,KVM 是以 Linux 内核作为管理工具的。 

虚拟机的体系结构 
1.XEN 体系结构 

图 1. XEN 体系结构图
技术图片 

一个 XEN 虚拟机环境主要由以下几部分组成: 
XEN Hypervisor; 
Domain 0 —— Domain Management and Control(XEN DM&C); 
Domain U Guest(Dom U) 
a. PV Guest 
b. HVM Guest 

下图 2 显示除了各部分之间的关系: 

图 2. Xen 三部分组成之间关系图
技术图片

XEN Hypervisor : 

XEN Hypervisor 是介于操作系统和硬件之间的一个软件描述层。它负责在各个虚拟机之间进行 CPU 调度和内存分配。XEN Hypervisor 不仅抽象出虚拟机的硬件,同时还控制着各个虚拟机的执行。XEN Hypervisor 不会处理网络、存储设备、视频以及其他 I/O. 

Domain 0: 

Domain 0 是一个修改过的 Linux kernel,是唯一运行在 Xen Hypervisor 之上的虚拟机,它拥有访问物理 I/O 资源的权限,同时和系统上运行的其他虚拟机进行交互。Domain 0 需要在其它 Domain 启动之前启动。 

Domain U: 

运行在 Xen Hypervisor 上的所有半虚拟化(paravirtualized)虚拟机被称为“Domain U PV Guests”,其上运行着被修改过内核的操作系统,如 Linux、Solaris、FreeBSD 等其它 UNIX 操作系统。所有的全虚拟化虚拟机被称为“Domain U HVM Guests”,其上运行着不用修改内核的操作系统,如 Windows 等。 

2.Hyper-V 体系结构 

图 3. Hyper-V 体系结构图
技术图片

Hyper-V 是微软提出的一种系统管理程序虚拟化技术,采用微内核的架构,兼顾了安全性和性能的要求。Hyper-V 底层的 Hypervisor 运行在最高的特权级别下,微软将其称为 ring -1(而 Intel 则将其称为 root mode),而虚机的 OS 内核和驱动运行在 ring 0,应用程序运行在 ring 3 下,这种架构就不需要采用复杂的 BT(二进制特权指令翻译)技术,可以进一步提高安全性。从架构上讲 Hyper-V 只有“硬件-Hyper-V-虚拟机”三层,本身非常小巧,代码简单,且不包含任何第三方驱动,所以安全可靠、执行效率高,能充分利用硬件资源,使虚拟机系统性能更接近真实系统性能。 

Hyper-V 支持分区层面的隔离。分区是逻辑隔离单位,受虚拟机监控程序支持,并且操作系统在其中执行。Microsoft 虚拟机监控程序必须至少有一个父 / 根分区,用于运行 64 位版本的 Windows Server 2008 操作系统。虚拟化堆栈在父分区中运行,并且可以直接访问硬件设备。随后,根分区会创建子分区用于承载来宾操作系统。根分区使用虚拟化调用应用程序编程接口 (API) 来创建子分区。 

分区对物理处理器没有访问权限,也不能处理处理器中断。相反,它们具有处理器的虚拟视图,并运行于每个来宾分区专用的虚拟内存地址区域。虚拟机监控程序负责处理处理器中断,并将其重定向到相应的分区。Hyper-V 还可以通过输入输出内存管理单元 (IOMMU) 利用硬件加速来加快各个来宾虚拟地址空间相互之间的地址转换。IOMMU 独立于 CPU 使用的内存管理硬件运行,并用于将物理内存地址重新映射到子分区使用的地址。从系统的结构图,我们可以看出来 Hyper-V 与 Xen 的架构很相似。 
a.Vmware ESXI 体系结构 

图 4. Vmware ESXI 体系结构图
技术图片

由上图我们可以看出来管理工具也是直接嵌入到了 ESXi vmKernel 中,没有再分化出单独的管理工具,这一点与 Xen 是相区别的。 
a.KVM 体系结构 

图 5. KVM 体系结构图
技术图片

KVM 是一个独特的管理程序,通过将 KVM 作为一个内核模块实现,在虚拟环境下 Linux 内核集成管理程序将其作为一个可加载的模块可以简化管理和提升性能。在这种模式下,每个虚拟机都是一个常规的 Linux 进程,通过 Linux 调度程序进行调度。 

通过以上四种虚拟机的体系结构图,我们可以看出他们在整个系统中的位置,以及相互之间的区别。 


-------------------------------------------------------------------------------- 


XEN 工作原理 

上面我们针对 Xen 的体系结构进行了简单的描述,我们知道 Xen 主要由 Xen Hypervisor,Domain0,DomainU 三部分组成。下面通过 Domain 0 与 Domain U 的通信以及这三部分的交互来探讨一下 Xen 的工作原理。 
之前我们已经提到过 Domain U 分为 PV 客户系统和 HVM 客户系统两种,我们首先讨论一下 PV 客户系统,也就是半虚拟化操作系统工作原理。 

首先我们需要知道在 Domain 0 中有两个驱动 Network Backend Driver 和 Block Backend Driver,它们分别用来处理来自 Domain U 的网络和本地磁盘请求。由于 Xen Hypervisor 不会支持网络和磁盘请求的,因此一个 PV(半虚拟化)客户系统必须通过和 Xen Hypervisor、Domain 0 通信,从而来实现网络和磁盘请求。由于 Xen 文档中已经探讨过 PV 客户系统如何将一个数据写到本地硬盘,下面我们就来讨论一下 PV 客户系统如何将一个数据发送到网络中去。在这之前我们首先要了解到一点,那就是 Domain U PV Guest 中也包括两个驱动“PV Network Driver”和“PV Block Driver”,它们分别也是用来处理发送网络和本地磁盘请求用的,这与 Domain 0 中的两个驱动是相对应的。 

当一个 PV 客户系统的网络设备驱动程序接收到一个发送数据请求的时候,并且通过 Xen Hypervisor 发送数据到本地网络设备(网卡之类的设备)中,这个网络设备是和 Domain 0 共享的。在 Domain 0 和 Domain U 之间存在一个事件通道(event channel),通过该通道二者进行异步的域间中断通信。Domain 0 会接收到一个来自 Xen Hypervisor 的中断,触发 PV Network Backend Driver 访问上述网络设备,读取来自 PV 客户系统的数据,然后将这些数据发送出去。 

下图中事件通道表示为连接 Domain 0 与 Domain U 的一个区域,这是系统工作流的一个简化。事实上事件通道运行在 Xen Hypervisor 中,通过 Xenstored(Xenstored 维护一个信息档案,包括内存和建立在 Domain 0 与 Domain U 之间的事件通道。Domain 0 通过改变这个档案来设置和其他虚拟机的设备通道)中的特定中断实现,提供 Domain 0 与 Domain U 之间的快速共享网络设备,见图6。 

图 6. Domain 0 与 Domain U PV Guest 通信示意图
技术图片
上面我们已经分析了 PV 客户系统的工作原理,下面我们再简要的介绍一下 HVM 客户系统的工作原理。 

由于一个 HVM Guests 虚拟机中没有上面提到得 PV driver,所以 Xen 在 Domain 0 中为每一个 HVM Guest 都启动一个守护进程 Qemu-dm 处理来自客户系统的网络和磁盘请求,所以当一个 HVM Guest 有相应的网络和 I/O 请求的时候,它就会直接与 Domain0 中和它相对应的 Qemu-dm 来进行交互,通过 Domain 0 最终达到访问网络设备或者磁盘的目的。见下图 7: 

图 7. Domain 0 与 Domain U HVM Guest 通信示意图 
技术图片

以上是关于KVM与XEN区别是啥的主要内容,如果未能解决你的问题,请参考以下文章

docker kvm xen那种利用率最低

open vswitch和网桥的区别

linux 哪个虚拟机好???

Xen与XenServer的区别

科普:KVM与XEN虚拟化环境究竟有何不同?

KVM与XEN虚拟化环境究竟有何不同