虚拟化的类型
Posted 陈老师门徒计划
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了虚拟化的类型相关的知识,希望对你有一定的参考价值。
1.4虚拟化的类型
虚拟化可以根据不同划分标准进行分类,包括全虚拟化,CPU 虚拟化,硬件虚拟化,服务器虚拟化,桌面虚拟化等等。我们通常所说的虚拟化主要是指平台虚拟化技术,通过使用 Hypervisor,隐藏特定计算平台的实际物理特性,为用户提供抽象的、统一的、模拟的计算环境(即虚拟机)。
这种分类并不是绝对的,一个优秀的虚拟化软件往往融合了多项技术。例如 VMware Workstation 是一个著名的全虚拟化的 VMM,但是它使用了一种被称为动态二进制翻译的技术把对特权状态的访问转换成对影子状态的操作,从而避免了低效的 Trap-And-Emulate (陷入-模拟)的处理方式,这与半虚拟化相似,只不过半虚拟化是静态地修改程序代码。
下面分别介绍四类主流的分类方法:
1.4.1从虚拟化的层次划分,主要分为软件辅助的虚拟化和硬件辅助的虚拟化
1)软件辅助虚拟化
软件虚拟化, 顾名思义, 就是通过软件的方法在现有的物理平台上实现对物理平台访问的截获和模拟(让客户机的特权指令陷入异常,从而触发宿主机进行虚拟化)。常见的软件虚拟机例如QEMU,它是通过软件来仿真X86平台处理器的取指、解码和执行,客户机的指令并不在物理平台上直接执行。由于所有的指令都是软件模拟的,因此性能往往比较差,但是可以在同一平台上模拟不同架构平台的虚拟机。
2)硬件辅助虚拟化
是指在 CPU 中加入新的指令集和处理器运行模式,完成虚拟化操作系统对硬件资源的的直接调用。典型技术指的是 Intel VT,AMD-V。
需要说明的是,硬件虚拟化技术是一套解决方案。完整的情况需要CPU、主板芯片组、Bios和软件的支持
1.4.2从虚拟平台角度分为全虚拟化和半虚拟化
1)Full-virtualization(全虚拟化)
全虚拟化为虚拟机提供了完整的虚拟X86平台, 包括处理器、 内存和外设等, 支持运行任何理论上可在真实物理平台上运行的操作系统,使得为原始硬件设计的操作系统或其它系统软件完全不做任何修改就可以在虚拟机中运行,这也是全虚拟化无可比拟的优势。
在全虚拟化情况下,虚拟机并不知道自己运行在虚拟化环境下,是无感知的,安装使用时跟在物理机上没有什么区别。但是这种完全虚拟化中间需要软件做支撑的,需要软件去模拟提供所有的硬件资源,至少是这个CPU的特权指令需要用软件去模拟的,因为你要让各Guest并不知道自己运行在虚拟环境中,那么你就必须要提供一个带有特权指令的CPU。
全虚拟化不需要更改Guest OS,兼容性好。典型的代表有 Vmware WorkStation,ESX Server 早期版本,Microsoft Virtrual Server,KVM。
2)Para-virtualization(半虚拟化,也被称为超虚拟化或者叫准虚拟化)
半虚拟化通过修改Guest OS 部分访问特权状态的代码以便直接与 VMM 直接交互。在半虚拟化虚拟机中,部分硬件接口以软件的形式提供给客户机操作系统,这可以通过 Hypercall(VMM 提供给Guest OS 的直接调用,与系统调用类似)的方式来提供,所以也被称为超虚拟化。
依靠这些指令可以直接通过 Hypervisor 层调用硬件资源,从而免除了 Hypervisor 层转换指令的开销,由于不需要产生额外的异常和模拟部分硬件执行流程,半虚拟化可以大幅度提高性能。
Xen是开源准虚拟化技术的一个例子,操作系统作为虚拟服务器在Xen Hypervisor上运行之前,它必须在内核层面进行某些改变。因此,Xen适用于BSD、Linux、Solaris及其他开源操作系统,但不适合对像Windows这些专有的操作系统进行虚拟化处理,因为它们不公开源代码,所以无法修改其内核。
典型代表有Xen,VMware vSphere,Microsoft Hyper-V
总结
由于硬件辅助虚拟化的出现,使得完全虚拟化在性能上也得到了提升。并且相比半虚拟化而言,完全虚拟化使用上更加简化,虚拟过程对于Guest而言是透明的。所以完全虚拟化更加符合市场需求,比如后面说的KVM虚拟机。
1.4.3从虚拟化的运行模式,可以分为裸金属虚拟化,宿主型虚拟化和容器虚拟化
1)裸金属虚拟化(也叫 Hypervisor 虚拟化、裸机或原生或I型)
指直接在底层硬件上安装VMM作为 Hypervisor,Hypervisor将负责管理所有的资源和虚拟环境支持。
该模型中,VMM 可以看作一个为虚拟化而生的完整的操作系统,掌控有所有资源(CPU,内存,I/O 设备)。VMM 承担管理资源的重任,其还需向上提供 VM 用于运行 Guest OS,因此VMM 还负责虚拟环境的创建和管理。
它主要实现两个基本功能,其一是识别、捕获和响应虚拟机所发出的 CPU 特权指令或保护指令;其二是负责处理虚拟机队列和调度,并将物理硬件的处理结果返回给相应的虚拟机。这种结构问题是,硬件设备多种多样,VMM 不能把所有的设备驱动都一一实现,所以此模型支持有限的设备。如下图所示:
优点:因 VMM 同时具有物理资源的管理功能和虚拟化功能,故虚拟化的效率会较高;安全性方面,VM 的安全只依赖于 VMM 的安全。
缺点:因 VMM 完全拥有物理资源,因此,VMM 需要进行物理资源的管理,包括设备的驱动,而设备驱动的开发工作量是很大的,这对VMM 是个很大的挑战。
采用该结构的 VMM 有:VMWare ESX/ESXI , Citrix XenServer 和Microsoft Hyper-V,Linux KVM。
注:KVM 将 Linux 转变为 1 类(裸机恢复)虚拟机监控程序。
注:xen在架构上属于裸金属虚拟化,但是Xen有点特别,hypervisor直接运行在硬件之上,管理硬件资源。xen 的hypervisor管理程序被称为dom0,实际上一个特权虚拟机,负责调度底层的hypervisor和转发特权指令。其他普通虚拟机称为domU。微软的hyper-V技术跟xen架构高度相似,至今被认为是微软借与思杰技术合作而抄袭得来。
2)宿主模型虚拟化(OS-hosted,也叫寄居虚拟化或II型)
指 VMM 之下还有一层宿主操作系统,由于 Guest OS 对硬件的访问必须经过宿主操作系统,因而带来了额外的性能开销,但可充分利用宿主操作系统提供的设备驱动和底层服务来进行内存管理、进程调度和资源管理等。宿主型虚拟化中VM的应用程序调用硬件资源时需要经过:VM 内核->Hypervisor->主机内核 ,导致性能是虚拟化技术中最差的。
此模型的物理资源由Host OS(例如 Windows, Linux etc.)管理,实际的虚拟化功能由 VMM 提供。VMM 通过调用Host OS 的服务来获得资源,实现 CPU,内存和 I/O设备的虚拟化。如下图所示:
优点:可以充分利用现有OS 的设备驱动,VMM 无需自己实现大量的设备驱动,轻松实现I/O 设备的虚拟化。
缺点:因资源受Host OS 控制,VMM 需调用 Host OS 的服务来获取资源进行虚拟化,其效率和功能会受到一定影响。
采用该结构的 VMM 有:VMware Workstation,VMWare Server (GSX),Virtual PC,Virtual Server。
3)容器虚拟化
基于内核的虚拟化,所有的虚拟机都是一个独立的容器,但共同运行硬件之上,使用着同一个内核。优点就是速度快,部署容易,缺点就是相互间的资源相互隔离比较麻烦,但现在市场也都有了相对成熟的解决方案。如, Docker,也有人说Docker具有取代虚拟化的势头。
1.4.4 从虚拟化在云计算的应用领域进行划分,可分为服务器虚拟化(即计算虚拟化),网络虚拟化,存储虚拟化,应用程序虚拟化,平台虚拟化,桌面虚拟化
1)服务器虚拟化:就是将一台服务器虚拟成多台服务器进行使用,服务器虚拟化是基础架构即服务(IaaS)的基础。
2)网络虚拟化:笼统来讲,包括 VLAN、VPN、VPLS、MPLS、LISP、Virtualrouters、VRFs 等在内的都可以认为是网络虚拟化的某种表现形式。但当前新兴的网络虚拟化概念从深度、广度和影响上都远远超过了以上的技术。网络虚拟化简单说就是把网络层的一些功能从硬件中剥离出来,新建立所谓的网络虚拟层。
3)存储虚拟化:简单来说就是将整个云系统的存储资源进行统一整合管理,再为不同用户分配各自的存储空间。
4)应用程序虚拟化:简单来说就是把应用程序对底层硬件系统和硬件的依赖抽象出来,从而解除应用程序与 OS 和硬件的耦合关系。应用程序运行在本地应用的虚拟化环境中,这个环境为应用程序屏蔽了底层可能和其他应用产生冲突的内容。应用程序虚拟化是(SaaS)的基础。
5)平台虚拟化:是集成各种开发资源虚拟出的一个面向开发人员的统一接口,软件开发人员可以方便的在这个平台上开发各种应用并嵌入云计算中,使其成为新的云服务供给用户使用。
6)桌面虚拟化:将用户的桌面环境与其使用的终端设备进行解耦。服务器上的存放每个人的完整桌面环境。用户可以使用具有足够处理功能和显示功能的不同终端设备通过网络访问该桌面。
以上是关于虚拟化的类型的主要内容,如果未能解决你的问题,请参考以下文章