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 通信示意图 ![]()
XEN与VMware ESXi、Hyper-V 以及 KVM 架构与特点比较【非原创】的更多相关文章
- Xen,VMware ESXi,Hyper-V和KVM等虚拟化技术的原理解析
Xen,VMware ESXi,Hyper-V和KVM等虚拟化技术的原理解析 2018年04月03日 13:51:55 阅读数:936 XEN 与 VMware ESXi,Hyper-V 以及 K ...
- How To Install Proxmox Nested on VMware ESXi (Full Support OpenVZ & KVM)
https://imanudin.net/2015/03/04/how-to-install-proxmox-nested-on-vmware-esxi-full-support-openvz-kvm ...
- KVM架构及模块简介
1.简介 2.架构 3.KVM模块及QEMU 一.简介 KVM(Kernel Virtual Machine)基于内核的虚拟机.阿维·齐维迪(Avi Kivity)在一家名为Qumranet的初创企业 ...
- 初试集群虚拟化搭建(二)—— Xen, kvm, OpenStack, VMware ESXi, Citrix XenServer等种种选择
小伙伴们找到了一些主流方案的资料,最终选择了XenServer6.5作为平台搭建. Xen 特点: 功能强大,支持Linux的各种发行版本 通常是在现有Linux操作系统上安装,是一种半虚拟化的安装方 ...
- VMware vSphere虚拟化-VMware ESXi 5.5组件安装过程记录
几种主要的虚拟化 ESXi是VMware公司研发的虚拟机服务器,ESXi已经实现了与Virtual Appliance Marketplace的直接整合,使用户能够即刻下载并运行虚拟设备.这为 即插即 ...
- VMware ESXi 5.5无法与Windows 2012 NTP Server同步时间
这次笔者需要面对的环境对时间的同步有比较高的要求, 而虚拟化的环境中时间是比较容易出问题的, 您可以参考上一篇博文为什么Domain controller上的time synchronization非 ...
- vmware esxi 查看网卡、Raid卡驱动
vmware esxi 查看网卡.Raid卡驱动 http://blog.51cto.com/adamcrab/1942763 查看网卡 [root@localhost:~] esxcfg-nics ...
- Hyper V NAT 网络设置 固定IP / DHCP
Hyper V 默认的Default Switch同时支持了NAT网络以及DHCP,虚拟机能够访问外网. 但使用过程中发现这个IP网段经常变化,而且Hyper V没有提供管理其NAT网络与DHCP的图 ...
- windows server 2008 r2 企业版 hyper v做虚拟化的相关问题处理
windows server 2008 r2 企业版 hyper v做虚拟化的相关问题处理 今天在dell r710 上用windows server 2008 r2企业版hyper v 做虚拟化,添 ...
随机推荐
- ZooKeeper入门实战教程(一)-介绍与核心概念
1.ZooKeeper介绍与核心概念1.1 简介ZooKeeper最为主要的使用场景,是作为分布式系统的分布式协同服务.在学习zookeeper之前,先要对分布式系统的概念有所了解,否则你将完全不知道 ...
- 范仁义html+css课程---9、video、audio、canvas和svg元素略讲
范仁义html+css课程---9.video.audio.canvas和svg元素略讲 一.总结 一句话总结: video:HTML5视频标签. audio:html5音频标签. canvas:绘制 ...
- Server Tomcat v8.5 Server at localhost was unable to start within 45 seconds. If the server requires more time, try increasing the timeout in the server editor.
Server Tomcat v9.0 Server at localhost was unable to start within 45 seconds. If the server requires ...
- Java NIO Buffer中各种状态属性的含义
关于NIO Buffer中的3个重要状态属性的含义: postion, limit与capacity. public class NioTest { public static void main(S ...
- SQL,NoSQL和NewSQL的区别
SQL(Structured Query Language):数据库,指关系型数据库.主要代表:SQL Server.Oracle.MySQL.PostgreSQL. NoSQL(Not Only S ...
- C++中深入理解dynamic_cast
转载:https://blog.csdn.net/gaojing303504/article/details/78860773 dynamic_cast运算符的主要用途:将基类的指针或引用安全地转换成 ...
- scrapy爬虫案例:问政平台
问政平台 http://wz.sun0769.com/index.php/question/questionType?type=4 爬取投诉帖子的编号.帖子的url.帖子的标题,和帖子里的内容. it ...
- thinkphp项目部署在phpstudy里的nginx上
朋友的一个thinkphp做的项目,让我帮他部署一下的,LINUX服务器,用宝塔. 第一台服务器,装上宝塔,宝塔里装NGINX,PHP5.6,再建立网站,绑定域名,访问成功,一切正常! 昨天试着给另一 ...
- C# 动态执行JS
有时候需要,在程序中灵活的嵌入自定义的计算逻辑,使用C#加载JS脚本形式可以实现: // 添加引用 using Microsoft.JScript; string jsStr = "var ...
- Pan wutong团队技术支持
本网页为Pan wutong团队的技术支持网址,如果在我们开发的游戏中遇到任何问题,欢迎联系我们! QQ:2535510006 邮箱:2535510006@qq.com