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. lumen response全局函数设置header

    设置header Cache-Controlreturn response()->json($return)->header('Cache-Control', 'public');

  2. 一个区分度很大的iOS面试题

    @property 后面可以有哪些修饰符?@property中有哪些属性关键字? 属性可以拥有的特质分为四类: 原子性--- nonatomic 特质 在默认情况下,由编译器合成的方法会通过锁定机制确 ...

  3. 统一建模语言UML

    目录 1. UML定义 2. UML结构 2.1 视图(View) 2.2 图(Diagram) 2.3 模型元素(Model element) 2.4 通用机制(General mechanism) ...

  4. Vue 中 css scoped 样式穿透 ( stylus[>>>] / sass / less[/deep/] )

    scoped看起来很好用,当时在Vue项目中,当我们引入第三方组件库时(如使用element-ui),需要在局部组件中修改第三方组件库样式,而又不想去除scoped属性造成组件之间的样式覆盖.这时我们 ...

  5. 综合练习1,划分vlan,单臂路由,DHCP服务及其限制网段、租期,设置根桥,OSPF路由通告综合练习

    实验要求: 1.在LSW1上分别给vlan10和vlan20做DHCP网段分别为192.168.10.0/24.192.168.20.0/24禁用192.168.10.200-253,192.168. ...

  6. jqGrid常用方法

    var jqGrid = $("#jqGrid"); // 获取选中行id[单行],test1就是最先一个行id var test1 = jqGrid.jqGrid("g ...

  7. Asp.Net Core文件上传

    文件上传功能在实际开发中经常使用,在 .Net Core中,文件上传接收类型不再使用 HttpPostedFile 或 HttpFileCollection来接收,而是使用 IFormFile 或 I ...

  8. SpringBoot中使用 RabbitMQ -测试

    本章主要建立在已经安装好Erlang以及RabbitMQ的基础上,接下来,简单介绍一下使用 1.首先到RabbitMQ的管理界面新建一个队列(Direct模式) 2.测试项目的基础结构如下: 这里为了 ...

  9. AirFlow后台运行调度程序

    nohup airflow worker>>$AIRFLOW_HOME/airflow-worker.log >& & nohup airflow scheduler ...

  10. html5 外链式实现加减乘除

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...