Xen 是一种开源的、属于类型1(裸金属虚拟化,Baremetal Hypervisor)的虚拟化技术,它使多个同样操作系统或不同操作系统的虚拟机运行在同一个物理主机节点上成为可能并实现。

Xen 是唯一的属于类型1(裸金属虚拟化,Baremetal Hypervisor)并且开源的虚拟化技术,它被作为商业应用或开源应用的基础而加以使用,如服务器虚拟化、Infrastructure as a service(Iaas)、桌面虚拟化、安全应用、嵌入式和硬件设备等。

Xen 虚拟化技术的关键特性:

1)  轻便小型的设计:核心代码有1MB左右,它使用了微小内核设计,占用极少内存,加上有限的接口设计,使得它比其他虚拟化技术更健壮、更安全。

2)  操作系统无关性:Domain0 一般安装在Linux 操作系统中,也可以使用其他操作系统代替。如NetBSD、OpenSolaris等。

3)  驱动分离:Xen 虚拟化技术允许主要的硬件设备驱动运行与虚拟机内部,当驱动出现 crash(宕机)或者报错时,包含该驱动的虚拟机可以重启,该驱动也可以重启,这样不会影响其他的虚拟机。

4)  半虚拟化技术:运行在半虚拟化技术上的虚拟机已经经过优化,它们可以运行得更加流畅,比运行在需要硬件扩展支持的全虚拟化管理程序(HVM)上的虚拟机更快。

Xen 虚拟化关键技术有3点(包括类型、Domain0、Toolstacks)

类型:Xen 虚拟机技术支持半虚拟化(Para-Virtualization,PV)和全虚拟化(Hardware-assisted Virtualization,HVM)两种类型。

Domain0:Xen 虚拟化架构中包含一个特殊的域(Domain0),其包括硬件设备驱动和控制虚拟机的Toolstack。

Toolstacks:其涵盖各种不同的Toolstack。

普及知识点:

裸金属虚拟化(Baremetal Hypervisor),类型1:该类型的虚拟化技术直接运行在物理主机节点硬件上设备上,并且管理虚拟机操作系统。

可托管的虚拟化(Hosted Hypervisor),类型2:该类型的虚拟化技术允许运行在普通的操作系统上,和普通的计算机程序类似。

Xen 架构的重点:

1)  Xen 虚拟化管理程序是一个极小的软件程序,包含大概15万行代码。Xen 虚拟化管理程序本没有I/O功能。

2)  虚拟机是一个虚拟化的环境,每个虚拟机都运行着自己的操作系统和应用程序。Xen 支持两种虚拟化模式:半虚拟化和全虚拟化模式。在同一个虚拟化管理程序上可以同时并行使用两种虚拟化模式,也可以串行在全虚拟化模式上使用半虚拟化模式,以此保证半虚拟化和全虚拟化的连续性。虚拟机与硬件之间的完全隔离的,它们没有任何权限可以访问底层的硬件和I/O设备等,因此它们也被叫做DomainU(Unprivileged Domain)。

3)  Domain0:是一个特殊的虚拟机,其具备特殊的、足够的权限直接访问底层的硬件设备,处理所有底层的I/O设备请求,并与其他虚拟机(DomainU)进行交互通信。Domain0对外部开放一个接口,使用户可以控制整个系统。没有Domain0,Xen 虚拟化管理程序是无法使用的,它是整个系统启动后加载的第一个虚拟机。

4)  Toolstack:包含在Domain0中,也叫作控制栈,其允许用户管理虚拟机,包括虚拟机创建、删除和配置等。

5)  终端是Toolstack 对外部开放的一个接口,用户可以通过命令行或图形化界面控制整个系统,OpenStack 和CloudStack 中的编排服务也被支持。

6)  Domain0 要求一个支持 Xen 虚拟化管理程序的内核,半虚拟化的虚拟机(DomainU)要求一个支持半虚拟化的内核。比较新的Linux 操作系统基本都支持,也包括Toolstack。

虚拟化类型

半虚拟化(PV):

半虚拟化是由 Xen 虚拟化管理程序引入的一个轻量级、高效的虚拟化模式,之后被其他虚拟化平台所被采用。半虚拟化不要求物理主机节点CPU具备扩展性,但是其需要支持半虚拟化的内核和驱动。因此,虚拟机能够感知到虚拟化管理程序;同时,因为没有硬件仿真,所以运行非常高效。支持半虚拟化的内核包括Linux、FreeBSD、NetBSD和OpenSolaris。

全虚拟化(HVM):

全虚拟化需要物理主机节点CPU扩展特性的支持,为此,Intel和AMD厂商提供了Intel VT和AMD-V技术。Xen 虚拟化管理程序使用QEMU 仿真硬件设备,包括BIOS、IDE磁盘控制器、VGA图形适配器、USB控制器和网络适配器等。硬件的扩展特性提高了仿真性能,同时,全虚拟化模式下的虚拟机不再需要特殊内核的支持,这也意味着Windows 操作系统在基于Xen全虚拟化的平台也是被支持的。一般情况下,半虚拟化的虚拟机比全虚拟化的虚拟机性能表现更好,因为全虚拟化的虚拟机需要硬件仿真,会消耗一部分性能。在某些情况下,可以使用半虚拟化驱动加速全虚拟化虚拟机的I/O性能。在Windows 虚拟机中,需要安装合适的虚拟化驱动。

全虚拟化模式+半虚拟化驱动(PVHVM)

全虚拟化模式下的虚拟机可以使用指定的半虚拟化驱动,以此达到增强系统性能的目的。这些驱动是为全虚拟化环境而优化的半虚拟化驱动,绕过磁盘和网络的模式仿真,从而在全虚拟化模式下获得更好的性能。这也就意味着在使用一些虚拟机操作系统时会获得更好的性能。

基于Xen 虚拟化管理程序的半虚拟化虚拟机可以自动使用半虚拟化驱动,全虚拟化模式下使用的半虚拟化驱动仅使用于全虚拟化模式的虚拟机。

半虚拟化+硬件扩展特性(PVH)

Xen虚拟化管理程序4.4 版本中包含一种虚拟化模式,叫做基于DomainU的PVH;4.5版本又开发了一种基于Domain0(Linux和BSD)的PVH虚拟化模式,其实质是半虚拟化的虚拟机可以使用半虚拟化驱动以提高I/O性能,也可以使用硬件扩展特性提高系统性能,不需要硬件仿真。从本质上讲,PVH对两种虚拟化模式进行了合并,简化Xen虚拟化管理程序的架构。

简而言之,PVH在linux和BSD中使用了极少的代码和接口,从而减少了TCB和攻击的可能性,降低了风险。一旦对其进行相应的优化,它将具备更好的性能和更低的延迟,特别是在64位的操作系统上表现更优。PVH要求虚拟机操作系统对其提供支持,在配置文件中设置pvh=1即可启用PVH支持。

Xen 虚拟化技术的更多相关文章

  1. Xen虚拟化技术中PV和HVM的区别

    转自 这里 Xen是一个开源的type-1或者裸机管理程序,它使得一个物理主机能够同时并行运行多个相同的或者不同的操作系统实例.Xen是目前唯一的开源可得的type-1管理程序.Xen被应用于许多商业 ...

  2. Xen虚拟化技术详解---第四章----申请超级调用

    内核驱动程序privcmd负责将位于GuestOS用户空间的超级调用请求传递到GuestOS内核中,与Linux系统的内核驱动程序相同,该操作要在系统调用ioctl()的帮助下完成. 1.关于ioct ...

  3. 基于KVM、Xen、OpenVZ等虚拟化技术的WEB在线管理工具

    1.Proxmox proxmox是一个开源的虚拟化管理平台,支持集群管理和HA.在存储方面,proxmox除了支持常用的lvm,nfs,iscsi,还支持集群存储glusterfs和ceph,这也是 ...

  4. VPS的虚拟化技术—-XEN,KVM,OPENVZ

    市场上的VPS商家主要有 Xen ,KVM 和 OpenVZ 三种开源的虚拟化技术 Xen 是一个开放源代码虚拟机监视器,由剑桥大学开发.它打算在单个计算机上运行多达 100个满特征的操作系统.操作系 ...

  5. 虚拟化技术对比:Xen vs KVM

    恒天云:http://www.hengtianyun.com/download-show-id-68.html 一.说明 本文主要从功能方面和性能方面对Xen和KVM对比分析,分析出其优缺点指导我们恒 ...

  6. 云计算大数据:Xen、KVM、VMware、hyper-v等虚拟化技术的比较

    1.Xen.KVM.VMware.hyper-v等虚拟化技术的比较,xen和kvm,是开源免费的虚拟化软件. vmware是付费的虚拟化软件. hyper-v比较特别,是微软windows 2008 ...

  7. 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 ...

  8. 虚拟化技术:Xen与KVM的对比

    作为开源的虚拟化技术,对比Xen和KVM可以看到,Xen以6个无与伦比的优势领先:更好的可用资源.平台支持.可管理性.实施.动态迁移和性能基准. 可用资源:Xen的问世要比KVM早4年之久(两者分别是 ...

  9. Amzaon EC2虚拟化技术演进:从 Xen 到 Nitro

      今年2月,由光环新网运营的 AWS 中国(北京)区域和由西云数据运营的 AWS 中国 (宁夏)区域发布新的实例类型,新的实例类型包括 C5.C5d.R5.R5d.除了这四种之外,在AWS国外部分区 ...

随机推荐

  1. 初步了解Docker容器(三)

    目录 一.初步了解 1.docker run运行容器 2.docker images查看镜像 3.docker ps查看容器 4.查看其Dockerfile文件 二.Docker 知识问答 小结 一. ...

  2. go os.State类用法

    参考文章: https://blog.csdn.net/weixin_43851310/article/details/87988648

  3. 当后端返回的数据是以属性做开头,怎么用length取值

    在我们前端开发中,一般需要的数据是分条的如 [{},{},{},{}] ,这样的数据方便我们用length取值,尤其是在表格中.在控制台看的时候能轻易的看出1 2 3 4条,但有时候后台返回的数据不是 ...

  4. ELK优化难题解决

    你头疼的ELK难题,本文几乎都解决了 一.ELK实用知识点总结 1.编码转换问题 这个问题,主要就是中文乱码. input中的codec=>plain转码: codec => plain ...

  5. Selenium问题集锦

    此文章用于记录使用Selenium遇见的问题~ 问题1:sendkeys直接报错如下: 解决方案:selenium 驱动和Chrome浏览器的版本必须对应,不然会报此错.驱动地址:点此跳转 下载前先看 ...

  6. Hbuider APP打包流程

      1,下载HBuilder,注册并登陆.首先打开“文件”-“新建”-“移动APP”,输入“应用名称”,“位置”可以根据需要自己选择即可,“选择模板”建议选择空模板: 2,新建完成后, 在项目管理器会 ...

  7. Xamarin.Forms FlyoutIcon 不显示(not shown)

    升级了VS2019到16.4版本,然后默认创建了一个Xamarin Shell程序 结果运行后是这个样子 难道不应该是这个样子吗? 百了个度一晚上没解决,资料本身就少,再就是提示设置FlyoutIco ...

  8. Excel时间序列函数

    year 返回对应于某个日期的年份. month 返回对应于某个日期的月份. day 返回对应于某个日期的年份. weekday 返回对应于某个日期的天数. weeknum 返回对应日期在本年中是第几 ...

  9. HNUSTOJ-1617 Graph(费马数)

    1617: Graph 时间限制: 1 Sec  内存限制: 32 MB提交: 31  解决: 5[提交][状态][讨论版] 题目描述 Your task is to judge whether a ...

  10. localStorage存取储数组。(存对象同理)

    var array = ['111','222','333','444','555']; 存window.localStorage.setItem('array',JSON.stringify(arr ...