云图·云途:云计算技术演进及应用
上QQ阅读APP看书,第一时间看更新

3.3 虚拟化的分类

在虚拟化蓬勃发展的这些年里,虚拟化可以根据不同的划分标准进行分类。如根据虚拟化的程度和级别,一般可以将虚拟化技术分成软件虚拟化和硬件虚拟化,全虚拟化和半虚拟化。

3.3.1 软件虚拟化

软件虚拟化就是通过解除应用程序、操作系统与计算机硬件之间的关联性,使得可以在一个物理计算机上建立多个虚拟化环境,每个虚拟化环境中都能模拟出完整的计算机系统,这些虚拟计算机系统与真实计算机系统的使用并无多大差异,可以安装操作系统,在操作系统上安装应用程序。

软件虚拟化可以实现桌面虚拟化和应用虚拟化。桌面虚拟化是将操作系统与计算机硬件设备解耦,这样用户可以在自己的计算机上运行多个操作系统,或是通过网络从任何位置和设备访问存放在服务器上的个人的桌面环境。应用虚拟化就是指解除应用和操作系统、硬件的耦合关系,使应用程序运行在一个虚拟化的环境中,这样就不会跟本地安装的其他程序相冲突,同时也方便了应用程序的升级。

通过软件虚拟化可以带来许多便利。第一,通过创建虚拟机使得部署各种软件运行环境更加容易,加快软件开发的测试和调试周期。另外,也可以使用虚拟机的快照、备份功能对用户的桌面环境进行备份,这样即使用户的桌面环境被攻击或出现重大错误,也可以轻松地恢复原有的桌面环境,便于桌面环境的管理和维护。第二,提高系统资源利用率。在一个计算机上运行多个虚拟环境,每个虚拟环境有不同的空闲和繁忙的时间段,使得单个计算机的资源利用率提高。如果某一个虚拟环境无法正常运行,也不会影响其他虚拟环境的工作。第三,可应用于教育上,提高教学效率。比如在虚拟机中可以做一些“破坏性”的实验,像对硬盘重新分区、格式化、重新安装操作系统等,若是在真实的计算机上进行,可能会导致系统、数据等被破坏,而在虚拟机中就可以不用顾虑这些,因为虚拟机的创建和删除相当简单。

3.3.2 硬件虚拟化

硬件虚拟化是一种基于硬件的虚拟技术,指在硬件层面上,更确切地说是在CPU里对虚拟技术提供了支持,使得Hypervisor运行在比操作系统更高的权限上。宿主机(Host Com-puter)被启动后,在引导操作系统前先初始化VMM并初始化每个虚拟机,每个虚拟机就像有了自己的硬件一样,因而可以完全隔离地运行自己的客户机操作系统。

硬件虚拟化技术是一种CPU芯片虚拟化技术,支持虚拟技术的CPU带有特别优化过的指令集来控制虚拟过程。通过这些指令集,VMM会很容易提高性能,相比软件虚拟化方式会在很大程度上提高性能。硬件虚拟化技术可提供基于芯片的功能,借助兼容VMM软件能够改进纯软件解决方案。同时,由于硬件虚拟化可提供全新的架构,支持操作系统直接在上面运行,无需进行二进制翻译转换,减少性能开销,极大地简化了VMM的设计,从而使VMM可以按标准编写,通用性更好,性能更强。但硬件虚拟化基本上就是在一台宿主机上虚拟了整个系统,各台虚拟机之间相互不可见,这会很明显导致很多重复的线程和重复的内存页出现,性能上肯定会有影响。所以采用这种技术,一台宿主机上虚拟机的个数肯定会有一定的限制。

硬件虚拟化是目前研究最广泛的虚拟化技术,相应的虚拟化系统也相对较多。其中业界最具影响力的VMware和Xen都属于硬件虚拟化的范畴,这将在后续章节中介绍。

3.3.3 全虚拟化

全虚拟化(Full Virtualization)也称为原始虚拟化技术,是指虚拟机模拟了完整的底层硬件,包括处理器、物理内存、时钟、外设等,使得为原始硬件设计的操作系统或其他系统软件完全不做任何修改就可以在虚拟机中运行,且它们不知道自己运行在虚拟化环境下。操作系统与真实硬件之间的交互可以看成是通过一个预先规定的硬件接口进行的。全虚拟化VMM以完整模拟硬件的方式提供全部接口(同时还必须模拟特权指令的执行过程)。

全虚拟化技术是最流行的虚拟化方法,使用Hypervisor这种中间层软件,在虚拟服务器和底层硬件之间建立一个抽象层。Hypervisor可以划分为两大类,第一类是直接运行在物理硬件之上的;第二类是运行在另一个操作系统(运行在物理硬件之上)中。

因为运行在虚拟机上的操作系统通过Hypervisor来最终分享硬件,所以虚拟机发出的指令需经过Hypervisor捕获并处理。为此每个客户机操作系统所发出的指令都要被翻译成CPU能识别的指令格式,这里的客户机操作系统即是运行的虚拟机,所以Hypervisor的工作负荷会很大,会占用一定的资源,因而在性能方面不如裸机,但是运行速度要快于硬件模拟。全虚拟化最大的优点就是运行在虚拟机上的操作系统没有经过任何修改,唯一的限制就是操作系统必须能够支持底层的硬件,不过目前的操作系统一般都能支持底层硬件,所以这个限制就变得微不足道了。

这种方式是业界现今最成熟和最常见的,而且属于宿主模式和Hypervisor模式的都有,知名的产品有IBM CP/CMS、VirtualBox、KVM、VMware Workstation和VMware ESX(其4.0版被改名为VMware vSphere)。

3.3.4 半虚拟化

在全虚拟化模式中,每个客户机操作系统获得的关键平台资源都由Hypervisor控制和分配,以避免发生冲突,为此需要利用二进制转换,而二进制转换的开销又使得全虚拟化的性能大打折扣。为了解决这个问题,引入了一种全新的虚拟化技术,这就是半虚拟化技术(Para-virtualization)。

半虚拟化技术又称为准虚拟化技术,是在全虚拟化的基础上,对客户机操作系统进行修改,增加一个专门的API将客户机操作系统发出的指令进行最优化,即不需要Hypervisor耗费一定的资源进行翻译操作,因此Hypervisor的工作负担变得非常小,而且整体的性能也有很大的提升。经过半虚拟化处理的服务器可与Hypervisor协同工作,其响应能力几乎不亚于未经过虚拟化处理的服务器。因此,半虚拟化具有消耗资源小、性能高的优点。不过缺点是需要修改包含该API的操作系统,但是对于某些不包含该API的操作系统(主要是Windows)不支持,因此它的兼容性和可移植性较差。

通过这种方法将无需重新编译或捕获特权指令,使其性能非常接近物理机,其最经典的产品就是Xen,而且因为微软的Hyper-V所采用的技术和Xen类似,所以也可以把Hyper-V归属于半虚拟化。