虚拟化技术的分类及介绍
虚拟化是云计算系统中的一种基础技术,可以说当前一个云计算服务必定是构建在虚拟化的基础上的。本文首先介绍了不同抽象层次的虚拟化技术,之后对应用广泛的系统级虚拟化和操作系统级虚拟化进行了更详细的分类和描述,最后介绍了各种典型虚拟化方案的具体实现。
虚拟化是计算机系统中的一个重要概念,基本上每个计算机系统都提供一个给上层软件的界面,从处理器提供的基本指令集到很多中间件系统提供的巨大的应用程序界面集。虚拟化本质上是扩展或替换一个现存界面来模仿另一个系统的行为,其对计算机系统的重要性主要体现在以下几个方面。
相比高层软件(比如中间件和应用软件),硬件和底层系统软件变化得比较快,也就是说,我们面对的一种情况是旧有软件的维护跟不上下层平台更新的步伐。通过移植旧有软件的底层接口到新平台,可使得一大类的现有软件可以立刻在新平台上工作。
在服务器机器上,一个组织为它提供的每个服务都分配一台虚拟机,接着,将虚拟机以最佳方式分配到物理服务器上。与进程不同,虚拟机能很简单地迁移到其他物理机器上,这增加了管理服务器基础设施的灵活性。这个方法能潜在地减少服务器计算机的投资并减少能量消耗,后者是大型服务器中心的关键问题。
虚拟化技术和云计算的提供极为相关。云计算采用了这样一个模型,即作为一个服务,提供云上创建的存储、计算和高层对象。所提供的服务覆盖从诸如物理体系结构等的底层方面(基础设施即服务IaaS)到诸如软件平台(平台即服务PaaS),再到任意应用层次的服务(软件即服务SaaS)。云服务的提供被虚拟化技术直接驱动,允许为云的用户提供一个或多个虚拟机,供用户自己使用。
分布式应用的需求也激发虚拟化解决方案的开发者去以很少的开销创建和销毁虚拟机。在可能需要动态地请求资源的应用中,这是必要的。例如对于多人在线游戏或分布式多媒体应用,通过采用合适的资源分配策略满足虚拟机服务质量需求,能提升对这样的应用的支持度。
另一个好处是,在单台计算机上提供对几个不同操作系统环境的便利访问,虚拟化可用于在一种物理体系结构上提供多种操作系统类型。
虚拟化技术起始于IBM370体系结构,它的VM操作系统能为运行在同一计算机上的不同程序提供几个完整的虚拟机。最近,人们对虚拟化的兴趣大增,有许多研究项目和商业系统为商用PC、服务器和云基础设施提供虚拟化解决方案。
现代计算机系统是一个庞大的整体,整个系统的复杂性是不言而喻的。因而,整个计算机系统被分成了多个自下而上的层次,每一个层次都向上一层次呈现一个抽象,并且每一层只需知道下层抽象的接口,而不需要了解其内部运作机制。这样以层的方式抽象资源的好处是每一层只需要考虑本层设计以及与相邻层间的相互交互,从而大大降低了系统设计的复杂性,提高了软件的移植性。
本质上,虚拟化就是由位于下层的软件模块,通过向上一层软件模块提供一个与它原先所期待的运行环境完全一致的接口的方法,抽象出一个虚拟的软件或硬件接口,使得上层软件可以直接运行在虚拟的环境上。虚拟化可以发生在现代计算机系统的各个层次上,不同层次的虚拟化会带来不同的虚拟化概念。
如前文所述,虚拟化技术起源于上世纪70年代的IBM370体系,经过四十余年的发展,当前存在诸多实现在不同层次的虚拟化技术,原理不尽相同,且每一种技术都相当复杂。在本文中,将通过不同的角度对目前存在的较流行的虚拟化技术进行分类,并对其原理进行初步介绍,旨在对纷繁复杂的虚拟化技术有个整体认识及厘清不同虚拟化技术之间的相互关系。