转自 这里

Xen是一个开源的type-1或者裸机管理程序,它使得一个物理主机能够同时并行运行多个相同的或者不同的操作系统实例。Xen是目前唯一的开源可得的type-1管理程序。Xen被应用于许多商业和开源的应用程序中,比如:服务器虚拟化(server virtualization)、基础设施即服务(Infrastructure as a Service)、桌面虚拟化(desktop virtualization)、安全应用程序(security applications)、嵌入式和硬件设备(embedded and hardware appliances)。毫无疑问,Xen驱动着当今大部分的云计算市场。

Xen支持运行两种不同类型的虚拟机:半虚拟化(PV)和全虚拟化(HVM)。在一个单一的Xen系统中可以同时运行这两种不同类型的虚拟机。另外,在全虚拟化(HVM)虚拟机中也能够使用半虚拟化(PV)技术:实质上是创建一个半虚拟化(PV)和全虚拟化(HVM)的连续体。这种方式被称为PV on HVM。想要获取更多关于虚拟化的知识可以看这里

那么Xen虚拟化技术中的半虚拟化(PV)和全虚拟化(HVM)有什么区别呢?

Xen Paravirtualization (PV)

半虚拟化是由Xen引入的高效和轻量的虚拟化技术,随后被其他虚拟化平台采用。半虚拟化技术不需要物理机CPU含有虚拟化扩展。但是,要使虚拟机能够高效的运行在没有仿真或者虚拟仿真的硬件上,半虚拟化技术需要一个Xen-PV-enabled内核和PV驱动。可喜的是,Linux、NetBSD、FreeBSD和OpenSolaris都提供了Xen-PV-enabled内核。Linux内核从2.6.24版本起就使用了Linux pvops框架来支持Xen。这意味着半虚拟化技术可以在绝大多数的Liunx发行版上工作(除了那么内核很古老的发行版)。关于半虚拟化技术的更多信息可以看这里)

Xen Full Virtualization (HVM)

全虚拟化或者叫硬件协助的虚拟化技术使用物理机CPU的虚拟化扩展来虚拟出虚拟机。全虚拟化技术需要Intel VT或者AMD-V硬件扩展。Xen使用Qemu来仿真PC硬件,包括BIOS、IDE硬盘控制器、VGA图形适配器(显卡)、USB控制器、网络适配器(网卡)等。虚拟机硬件扩展被用来提高仿真的性能。全虚拟化虚拟机不需要任何的内核支持。这意味着,Windows操作系统可以作为Xen的全虚拟化虚拟机使用(众所周知,除了微软没有谁可以修改Windows内核)。由于使用了仿真技术,通常来说全虚拟化虚拟机运行效果要逊于半虚拟化虚拟机。

PV on HVM

为了提高性能,全虚拟化虚拟机也可以使用一些特殊的半虚拟化设备驱动(PVHVM 或者 PV-on-HVM驱动)。这些半虚拟化驱动针对全虚拟化环境进行了优化并对磁盘和网络IO仿真进行分流,从而得到一个类似于或优于半虚拟化虚拟机性能的全虚拟化虚拟机。这意味着,你可以对只支持全虚拟化技术的操作系统进行优化,比如Windows。

Xen半虚拟化虚拟机自动使用PV驱动-因此不需要提供这些驱动,你已经在使用这些优化过的驱动了。另外,只有Xen全虚拟化虚拟机才需要PVHVM驱动。关于PV on HVM的更多信息可以看这里

PV in an HVM Container (PVH) - New in Xen 4.4

Xen 4.4会带来一个被称作PVH的新的虚拟化模式。实质上,它是一个使用了针对启动和I/O的半虚拟化驱动的半虚拟化模式。与全虚拟化不同的是,它使用了硬件虚拟化扩展,但是不需要进行仿真。在Xen 4.3发布后,xen-unstable会加入对此模式的补丁,Xen 4.4中将可以预览到这个功能。PVH拥有结合和权衡所以虚拟化模式优点的潜力,与此同时简化Xen的架构。

Xen虚拟化技术中PV和HVM的区别的更多相关文章

  1. 虚拟化技术比较 PV HVM

    很多人看到同样配置的VPS价格相差很大,甚是不理解,其实VPS使用的虚拟技术种类有很多,如OpenVZ.Xen.KVM.Xen和HVM与PV.在XEN中pv是半虚拟化,hvm是全虚拟化,pv只能用于L ...

  2. Xen 虚拟化技术

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

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

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

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

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

  5. VPS选购及辨别vps虚拟化技术

    现在国内外的VPS(Virtual Private Server)服务商非常多,每个服务商使用的VPS架构都不同.VPS属于虚拟化服务器,中文名:虚拟专用服务器. 常见的VPS虚拟化架构有多种:Ope ...

  6. 虚拟化技术原理(CPU、内存、IO)

    本文来自:http://www.ywnds.com/?p=5856 虚拟化 云计算现在已经非常成熟了,而虚拟化是构建云计算基础架构不可或缺的关键技术之一. 云计算的云端系统, 其实质上就是一个大型的分 ...

  7. 虚拟化技术KVM

    1>虚拟化技术: 计算机虚拟化技术是多种技术的综合实现,它包括硬件平台,操作系统,存储以及网络等,简单地说,虚拟化技术就是在单台主机上可以虚拟多个虚假主机,并可以在这些虚拟主机上运行不同的操作系 ...

  8. CPU虚拟化技术(留坑)

    留坑~~~ 不知道这个是这么实现的 CPU虚拟化技术就是单CPU模拟多CPU并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率.虚 ...

  9. Intel虚拟化技术——EPT、VPID

    背景 内存用于暂存CPU将要执行的指令和数据,所有程序的运行都必须先载入到内存中才可以,内存的大小及其访问速度也直接影响整个系统性能.在平台虚拟化技术中,Guest的运行也需要依赖内存.和运行在真实物 ...

随机推荐

  1. C语言进阶—— 接续符和转义符13

    接续符的意义: C语言中的接续符 (\) 是指示编译器行为的利器 我们来看一个案例: #in\ clud\ e <st\ dio.h> in\ t m\ ain(\ ) { pri\ nt ...

  2. 15.3,redis持久化RDB与AOF

    redis持久化 Redis是一种内存型数据库,一旦服务器进程退出,数据库的数据就会丢失,为了解决这个问题,Redis提供了两种持久化的方案,将内存中的数据保存到磁盘中,避免数据的丢失. RDB持久化 ...

  3. 2 Mongodb基本操作

    1.基本操作 MongoDB将数据存储为一个文档,数据结构由键值(key=>value)对组成 MongoDB文档类似于JSON对象,字段值可以包含其他文档.数组.文档数组 安装管理mongod ...

  4. android onCreate的两个方法

    override fun onCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?) { } override ...

  5. web在线调试

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

  6. JWT应用

    调试器库简介问一件T恤! 精心制作 JSON Web令牌简介 新:免费获得JWT手册并深入学习JWT! 什么是JSON Web Token? JSON Web Token(JWT)是一个开放标准(RF ...

  7. laravel5.5事件广播系统

    目录 1. 定义广播事件 1.1 广播名称 1.2 广播数据 1.3 广播队列 1.4 广播条件 2. 频道授权 2.1 定义授权路由 2.2 定义授权回调 3. 对事件进行广播 3.1 可以使用ev ...

  8. JMeter学习笔记(九) 参数化2--CSV Data Set Config

    2.CSV Data Set Config 1)添加 CSV Data Set Confi 2)配置CSV Data Set Config 3)添加HTTP请求,引用参数,格式 ${} 4)执行HTT ...

  9. 【转载】Unity3D研究院之IOS&Andoird使用Sharesdk遇到的坑

    这两天研究了一下ShareSDK,说实话挺好用的,但是还是有点坑的地方.那么雨松MOMO写下博文记录一下来我遇到的坑,嘿嘿. 大部分内容它的文档上已经说的很清楚了. http://wiki.share ...

  10. php连接数据库增删改查----多条件查询

    关于查询,可以直接写在主页面上 来进行查询 首先,先建立一个表单 <form method="post" action="crud.php"> &l ...