什么是虚拟化?

虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以比原本的组态更好的方式来应用这些资源。这些资源的新虚拟部份是不受现有资源的架设方式,地域或物理组态所限制。一般所指的虚拟化资源包括计算能力和资料存储。

为什么要用虚拟化?

1、基础架构的利用率,通过将基础架构资源池化并打破一个应用一台物理机的限制,虚拟化大幅提升了资源利用率。通过减少额外硬件的采购,企业可以节约大幅成本。;

2、虚拟机比真实的机器可以被更容易从外部被控制和检查,并且可以配置更灵活,比如动态分配CPU资源、内存、磁盘等;

3、创建一个新的虚拟机不需要预先购买硬件,只需要在有资源空闲的设备上用简单的命令创建一台即可,大大简化了服务器的供应问题;

4、同时,一个新的虚拟机可以容易地从一台计算机转移到另一台上,这点还可以被用于远距离灾难恢复方案。

5、节约能耗、制冷和机房空间。通过减少数据中心里服务器和相关硬件的数量,企业可以从减少机房空间、能耗与制冷需求中获益,从而降低IT成本。

CPU指令的特权级

要彻底弄明白什么是虚拟化,我们得先讲讲CPU的特权级。

CPU的特权级(Ring)也叫hierarchical protection domains(等级保护域)。它是CPU设计的一种机制,用来保护数据和阻止恶意行为,确保计算机安全。特权级共分为4级:0、1、2、3。特权级是针对CPU指令的,并非操作系统,操作系统仅提供不同权限访问级别的资源。

操作系统一般只使用特权级0和3。特权最高的是0,可以直接操作硬件,如CPU和内存。一般操作系统和驱动运行在此级别下。特权级3是给一般的程序使用的,可以调用基本的CPU指令。特权级3是无法调用特权级0的指令的,如果非要调用则会显示为非法指令。

引用特权级的概念是为了保护计算机,一些危险指令只有操作系统可以执行,防止普通程序滥用其他程序的资源。如间谍软件要想开启摄像头就必须向特权级0的驱动程序请求开启,否则就不允许。

虚拟化基本类型

全虚拟化(FullVirtulization)

在Guest机器和Host机器中间加一层Hypervisor,Hypervisor是一种运行在物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享一套基础物理硬件。Host机器看它像跑在自己上面的程序,Guest机器看它像自己所运行的硬件。

主要是在Guest OS和硬件之间捕捉和处理那些对虚拟化敏感的特权指令,使Guest OS无需修改就能运行,速度会根据不同的实现而不同,但大致能满足用户的需求。这种方式是业界现今最成熟和最常见的,知名的产品有VirtualBox,KVM,VMware Workstation和VMware vSphere。

优点:Guest OS无需修改,速度和功能都非常不错,更重要的是使用非常简单。

缺点:基于Hosted模式(和Hypervisor一样,是一种模拟硬件的程序)的全虚拟产品性能方面不是特别优异,特别是I/O方面。

前景:由于这种模式不仅使Guest OS免于修改,而且将通过引入硬件辅助虚拟化技术来提高其性能,在未来几年内全虚拟化应该还会是主流。

半虚拟化(Parairtulization):

Hypervisor运行在Kernel Mode, Ring 0。Guest OS不能直接运行在Ring 0,而是需要对Kernel进行修改,将运行在Ring 0上的指令转为调用Hypervisor,Guest OS上的APP运行在Ring3。

它与完全虚拟化有一些类似,它也利用Hypervisor来实现对底层硬件的共享访问,但是由于在Hypervisor 上面运行的Guest OS已经集成与半虚拟化有关的代码,使得Guest OS能够非常好地配合Hyperivosr来实现虚拟化。通过这种方法将无需重新编译或捕获特权指令,使其性能非常接近物理机,其最经典的产品就是Xen,而且因为微软的Hyper-V所采用技术和Xen类似,所以也可以把Hyper-V归属于半虚拟化。

优点:这种模式和全虚拟化相比,架构更精简,而且在整体速度上有一定的优势。

缺点:需要对Guest OS进行修改,所以在用户体验方面比较麻烦。

前景:我觉得其将来应该和现在的情况比较类似,在公有云(比如Amazon EC2)平台上应该继续占有一席之地,但是很难在其他方面和类似VMware vSphere这样的全虚拟化产品竞争,同时它也将会利用硬件辅助虚拟化技术来提高速度,并简化架构。

 

硬件辅助全虚拟化(HardwareAssisted Virtualization)

Intel VT和AMD-V创建一个新的Ring -1单独给Hypervisor使用,Guest OS可以直接使用Ring 0而无需修改。

Intel/AMD等硬件厂商通过对部分全虚拟化和半虚拟化使用到的软件技术进行硬件化来提高性能。硬件辅助虚拟化技术常用于优化全虚拟化和半虚拟化产品,而不是独创一派,最出名的例子莫过于VMware Workstation,它虽然属于全虚拟化,但是在它的6.0版本中引入了硬件辅助虚拟化技术,比如Intel的VT-x和AMD的AMD-V。现在市面上的主流全虚拟化和半虚拟化产品都支持硬件辅助虚拟化,包括VirtualBox,KVM,VMware ESX和Xen。

优点:通过引入硬件技术,将使虚拟化技术更接近物理机的速度。

缺点:现有的硬件实现不够优化,还有进一步提高的空间。

前景:因为通过使用硬件技术不仅能提高速度,而且能简化虚拟化技术的架构,所以预见硬件技术将会被大多数虚拟化产品所采用。

操作系统级虚拟化(OperatingSystem Level Virtualization)

介绍:这种技术通过对服务器操作系统进行简单地隔离来实现虚拟化,主要用于VPS。主要的技术有Parallels Virtuozzo Containers,Unix-like系统上的chroot和Solaris上的Zone等,当今炒的最火热的当属docker。

优点:因为它是对操作系统进行直接的修改,所以实现成本低而且性能不错。

缺点:在资源隔离方面表现不佳,而且对Guest OS的型号和版本有限定。

前景:docker的出现算是在操作系统级虚拟化的一个革命性技术,未来发展前景相当可观。


什么是hypervisor

hypervisor为操作系统提供独立的虚拟硬件平台,而虚拟硬件平台反过来又提供对底层机器的虚拟的完整访问。hypervisor之于操作系统类似于操作系统之于进程。

虚拟化和hypervisor

关于什么是虚拟化,请参考我的另一篇博客《虚拟化技术介绍》,有更详细的讲解。

虚拟化就是隐藏底层物理硬件,让多个操作系统可以透明地使用和共享硬件资源的一种技术手段。这种架构的另一个更常见的名称是平台虚拟化。

在典型的虚拟化分层架构中,提供平台虚拟化的层称为 hypervisor (有时称为虚拟机管理程序或 VMM)。虚拟操作系统称为虚拟机(VM)。下图展示了常用硬件虚拟化的简单分层架构,当然并不是所有虚拟化解决方案都是一样的。

可以看到,hypervisor是提供底层机器虚拟化的中间软件层。操作系统将对机器的底层资源的访问虚拟化为进程。hypervisor 也做一样的事情,但其对象不是进程,而是整个虚拟机操作系统。

Hypervisor的两种类型

hypervisor 可以划分为两大类。一种是直接运行在物理硬件之上的,例如基于内核的虚拟机KVM,它本身是一个基于操作系统的hypervisor。另一种是运行在另一个操作系统中,例如QEMU 和 WINE。

hypervisor的构成

hypervisor仅是一个从其虚拟操作系统抽象机器硬件的分层应用程序。通过这种方式,每个虚拟操作系统看到的仅是一个VM而不是真实的硬件机器。

在较高级别上,hypervisor需要少量设施启动虚拟操作系统:一个需要驱动的内核映像、一个配置(比如 IP 地址和所需的内存量)、一个磁盘和一个网络设备。磁盘和网络设备通常映射到机器的物理磁盘和网络设备(如图所示)。最后,需要使用一组虚拟操作系统工具启动和管理虚拟操作系统。

然后,一个简化的hypervisor架构实现最后的关键功能,从而使虚拟操作系统可以和宿主操作系统同时运行。实现这个功能需要一些特定的要素,如图所示。

首先,类似于将用户空间应用程序和内核函数连接起来的系统调用,一个通常可用的虚拟化调用(hapercall,hypervisor对操作系统进行的系统调用)层允许虚拟系统向宿主操作系统发出请求。可以在内核中虚拟化I/O,或通过虚拟操作系统的代码支持它。故障必须由 hypervisor 亲自处理,从而解决实际的故障,或将虚拟设备故障发送给虚拟操作系统。hypervisor 还必须处理在虚拟操作系统内部发生的异常。(毕竟,虚拟操作系统发生的错误仅会停止该系统,而不会影响 hypervisor 或其他虚拟操作系统)。hypervisor的核心要素之一是页映射器,它将硬件指向特定操作系统(虚拟OS或 hypervisor)的页。最后,需要使用一个高级别的调度器在hypervisor和虚拟操作系统之间传输控制。

虚拟化技术介绍 hypervisor简介相关推荐

  1. 【HCIA】虚拟化技术介绍

    虚拟化技术介绍 虚拟化(Virtualization)的含义很广泛.将任何一种形式的资源抽象成另一种形式的技术都是虚拟化,是资源的一种逻辑表示.解除了物理硬件和操作系统之间的紧耦合关系. •虚拟化是云 ...

  2. KVM 虚拟化技术之Hypervisor的实现

    KVM 虚拟化技术之Hypervisor的实现 VMM(VirtualMachineMonitor)对物理资源的虚拟可以划分为三个部分: CPU虚拟化.内存虚拟化和I/O设备虚拟化,其中以CPU的虚拟 ...

  3. 交换机虚拟化和堆叠的区别_网工知识角|一分钟记熟NFV网络功能虚拟化技术介绍...

    点上方蓝字关注,每天都有新收获! 学网络,就在IE-LAB 国内高端网络工程师培养基地 NFV网络功能虚拟化(Network Functions Virtualization),是一种网络架构的概念, ...

  4. 虚拟化技术—— 介绍

    什么是虚拟化 虚拟化是指计算机元件在虚拟的基础上而不是真实的基础上运行.虚拟化技术可以扩大硬件的容量,简化软件的重新配置过程.CPU的虚拟化技术可以单CPU模拟多CPU并行,允许一个平台同时运行多个操 ...

  5. 虚拟化技术之虚拟化技术介绍及Xen的应用实现

    虚拟化技术是什么: 在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器.网络.内存及存储等,予以抽象.转换后呈现出来,打破实体结构间的不可切 ...

  6. KVM虚拟化技术介绍及搭建

    目录 前言 一.虚拟化 1.1 虚拟化发展历史 1.2 虚拟化分类 1.2.1 架构分类 1.2.2 虚拟化程度分类 1.3 虚拟化的优势及劣势 1.3.1 优势 1.3.2 劣势 二.KVM 2.1 ...

  7. 虚拟化技术xen的简介和安装

    虚拟化技术的分类: 1,模拟:Emulation ​ Qemu,PearPC,Bochs 2,完全虚拟化:Full Virtualization,Native Virtualization ​ HVM ...

  8. Xen、OpenVZ、KVM、Hyper-V、VMWare虚拟化技术介绍

    已经迁移:https://www.heguo.org/blog/myweishanli/article/389 国内外vps主机提供商所提供的主机大多是基于Xen.OpenVZ.KVM.Hyper-V ...

  9. libvirt虚拟化技术介绍

    一.libvirt简介 libvirt 是一个管理 hypervisor 的上层软件,它通过不同的驱动统一管理不同类型的 hypervisor ,并对外提供统一.稳定的应用程序接口. 在云场景中,业内 ...

  10. haproxy和oracle,IRF虚拟化技术介绍

    ainiyanyan13142007-03-30 22:39 1 编写applet 程序的页面输出 红色的 "hello would !" 2 请编写application 计算并 ...

最新文章

  1. 关于hadoop与jstl冲突的jar包
  2. __proto__(隐式原型)与prototype(显式原型)
  3. 物联网数据库需求——写入快,分析能力强
  4. wust2013届推免生复试机试代码
  5. 你真敢ZAO吗?解读换脸AI “细思极恐” 的用户协议
  6. 151205 财务管理原理作业(笔试题型)
  7. VSCode TODO 帮助扩展
  8. Spring基础精华知识点
  9. uniapp 小程序 H5 移动端 写 table 表格 组件
  10. PN结相关知识点(PN结原理)
  11. Python:OpenCV4人脸关键点检测以及表情检测
  12. 苏轼被贬 康震《唐宋八大家之苏轼》
  13. UltraLAB台式图形工作站(并行计算高效王~高性能计算工作站EX620i介绍)
  14. 什么是ROOT?ROOT权限有什么用?
  15. 软件推荐--Files2Folder
  16. 服务器上的文件夹访问被拒绝,修改windows文件权限,解决“拒绝访问”或无法删除的问题-文件访问被拒绝...
  17. CNCC|AI大模型开源开放生态技术论坛,助力多领域AI生态发展
  18. Redis-keys命令
  19. nginx学习,看这一篇就够了:使用:正向代理、反向代理、负载均衡, 常用命令和配置文件
  20. windows系统扩展C盘的工具推荐(解决了C盘和压缩卷不相邻无法扩展C盘问题)

热门文章

  1. zipkin+elk微服务日志收集分析系统
  2. MircoPython 的组件扩展方法
  3. ipad和iphone切图_如何在iPhone和iPad上使用触控板模式选择文本
  4. 设正整数n的十进制表示为n=ak……a1a0(0=ai=9,0=i=k,ak!=0),n的个位为起始数字的数字的正负交错之和T(n)=a0+a1+……+(-1)kak,证明:11|n的充分必要...
  5. java 向路由器发送报文_9.IP选路 - loda0128的个人空间 - OSCHINA - 中文开源技术交流社区...
  6. Firefox火狐浏览器如何本地备份导入、导出密码
  7. 输入一系列整数,建立二叉排序树,并进行前序,中序,后序遍历。
  8. 基于知识图谱和图卷积神经网络的应用——学习笔记
  9. ODL(C版本)安装过程
  10. 使用高德地图API获取天气