虚拟化技术是云计算、云存储服务得以实现的关键技术之一。它将应用程序以及数据,在不同的层次以不同的面貌加以展现,从而使得不同层次的使用者、开发及维持人员,能够方便的使用开发及维护存储的数据、应用于计算和管理的程序。
虚拟技术亦分很多种,从不同的层次上来讲,有cpu一级的虚拟化技术(目前intel正在着手研究着,在底层硬件上直接运行多个操作系统),硬件层上一级的虚拟化技术-----操作系统、vmware都是在硬件之上建立虚拟化程序。还有建立在操作系统之上的虚拟化技术:高级语言虚拟化技术(javaC#)、指令动态解释执行的vmwarevpc、脚本语言运行时系统(如pythonjavascript、matlab、sql等)。
这些虚拟化技术在不同的层次起着不同的作用。如操作系统起到了“将硬件接口抽象”,并提供了应用程序以统一的编程接口使用硬件的能力。在操作系统上建立的vpc等虚拟化技术,使得用户可以在一个操作系统之上,再运行其它操作操作系统、不同体系应用程序的能力。而高级语言虚拟化技术(java),使得编程人员,以理想机器的角度来编写应用程序,进一步将硬件操作,甚至操作系统操作都隔离开来,完全是基于应用的目标来建立虚拟化。而脚本语言、第四代语言更是以高层次的抽象(虚拟化)来实现业务逻辑、应用程序逻辑。
1.虚拟化技术的一般性描述
虚拟化技术与多任务以及超线程技术是完全不同的。多任务是指在一个操作系统中多个程序同时并行运行,而在虚拟化技术中,则可以同时运行多个操作系统,而且每一个操作系统中都有多个程序运行,每一个操作系统都运行在一个虚拟的CPU或者是虚拟主机上;而超线程技术只是单CPU模拟双CPU来平衡程序运行性能,这两个模拟出来的CPU是不能分离的,只能协同工作。
云计算概念是由Google提出的,这是一个美丽的网络应用模式。狭义云计算是指IT基础设施的交付和使用模式,指通过网络以按需、易扩展的方式获得所需的资源;广义云计算是指服务的交付和使用模式,指通过网络以按需、易扩展的方式获得所需的服务。这种服务可以是IT和软件、互联网相关的,也可以是任意其他的服务,它具有超大规模、虚拟化、可靠安全等独特功效;“云计算”图书版本也很多,都从理论和实践上介绍了云计算的特性与功用。
我们在开汽车的时候其实就用到了机械的虚拟化技术,汽车机械运动的复杂形态被逻辑上简化为方向盘、油门、刹车、离合器的简单运动方式,这种简化使汽车机械系统的复杂性被全面屏蔽,方向盘、油门、刹车、离合器成为了人机交互设备。
不只在工业领域就是在金融领域也有虚拟化技术的身影,如复杂的股市变化规律被几个简单的指数所描述,通过指数的变化就能反应股票市场的运行情况,甚至整个经济的运行规律。
物理学也虚拟化技术用的最多的地方,原子核内部的复杂运动情况通过各种宏观物理设备如:拉曼谱、正电子谱、核磁共振等表现出来,其实我们谁也没有真正的看到原子核的形态,但我们能通过对这些物理量的分析得到原子核的结构,那么这些物理设备就实现了对原子核内部结构的虚拟化工作。
以上的描述我们可以看出,虚拟化技术是一门应用很广泛的技术,甚至可以说是一门相当基础的学科。广义的定义虚拟化技术可以这么来看:虚拟化技术就是一种逻辑简化技术,实现物理层向逻辑层的变化。从这个定义来看一个系统采用虚拟化技术后其对外表现出的运动方式是一种逻辑化的运动方式,而不是真实的物理运动方式。所以采用虚拟化技术能实现对物理层运动复杂性的屏蔽,使系统对外运行状态呈现出简单的逻辑运动形态,如下图1.
图1 虚拟化技术的一般性逻辑
2. 虚拟化角度下的云计算架构
虚拟化技术是一项非常综合的技术,对于计算机科学来说大部分工作都是在做虚拟化的工作,网络的七层协议是对物理通讯的虚拟化、传统的操作系统是对单个计算机物理硬件的虚拟化、计算机高级语言是对机器语言的虚拟化、人工智能则是更高级的虚拟化技术。计算机科学的虚拟化层次我们用下图进行了简单的描述,节点的物理硬件和网络物理硬件通过多层虚拟化的逻辑简化过程形成了弹性化的计算、存储和网络带宽三者整合的虚拟资源池,也就是我们今天讲的云计算模式。
图2从虚拟化角度看云计算的架构
我们可以看出云计算的概念位与整个逻辑的最上层,是底层物理硬件经过多次虚拟化抽象而形成的一个逻辑概念。这也就说明了为什么云计算是未来的几年的技术发展方向,因为技术的发展就是一个不断抽象简化的过程,越上层的技术逻辑就是越高级的逻辑,因为这个逻辑是站在了很多巨人肩上的,这些巨人就是下层的虚拟化技术。
所以可以说云计算系统是运行在一个多层虚拟化协议栈上的高度抽象系统,云计算不是新瓶装旧酒,而是更高一级的技术发展,这个酒是面少不了老酒的调味作用。这幅图中我们看到了云计算的立足之本,炒作是推动不了技术发展的,技术的发展有技术发展的逻辑。
3.从虚拟化角度看云计算资源池包括哪些资源
多数文章认为云计算所构成的资源池只包括计算和存储,不过我们从图2中可以看到云计算的资源池除了计算和存储外还有网络带宽,由于云计算系统节点是分布化的,云中心可以不只是一个地方,云计算系统可以实现带宽资源的有效协调,从而将带宽这一资源纳入到资源池,CDN的功能将被纳入到云计算的功能体系。
当然一个开放的通用云计算系统的资源池还包括系统平台所接入的服务,云计算平台作为一个应用接入平台可以实现大量应用的接入和整合,也许服务也应该成为资源被虚拟化技术放入资源池。
4.从虚拟化角度看云计算的产业链
一提到虚拟化大家首先想到了Vmware,Xen等产品,然而大家都忽略了最大的虚拟化产品是现有的操作系统软件Window和Linux,更严格的说90%以上的IT企业都在做虚拟化,思科在做网络层的虚拟化、Intel在做硬件层的虚拟化、大量软件企业在做应用层的虚拟化。
图2中的每一个虚拟化层还可以做更为细致的划分,每一个虚拟化层就代表了云计算产业链上的一个环节。云计算肯定不是一两个虚拟化技术企业的专有技术,云计算“大象无形”的下面是一个巨大产业链和技术逻辑链的支持,只有“大象”才能“无形”。
云计算标准就是要建立一个虚拟化的逻辑协议栈,使产业链上的不同企业能有效的在同一个逻辑递推关系下工作。图3是云计算协议栈的一个简图,其中的每一层可能还会包括许多子层,云计算概念是下层多个逻辑协议层递推出的一个上层概念。
图3云计算简化协议栈
5. 用户和云计算应用开发人员眼中的云计算
用户眼中的云计算就是通过层层虚拟化后的一个逻辑形象,就像汽车驾驶员看到的方向盘和油门一样,用户只需要生活在一个他们熟悉的逻辑环境下就行了,这和电影Matrix中的描述的一样:用户自己应该根本不知道自己是存在于一个虚拟的逻辑环境中的。用户不用知道方向盘是如何使汽车发生转向的,也不用知道油门是如使汽车加速的,这是汽车上的一套机械电子虚拟化层去完成的工作。油门的踩下逻辑上对应用速度的增加,方向盘的顺时针运动逻辑上对应于右转;而真实的物理过程却是油门的踩下对应给油量的增加,方向盘的顺时针运动对应汽车前轮的右偏。在这个比喻下用户看到的云计算系统就是一个可以按自己目前使用习惯使用的一台功能全面的逻辑计算机。
从云计算应用开发人员的眼中看来云计算就是一批工作在不同逻辑层的API,他们要做的就是调用API完成自己的应用逻辑,他们也不用关心下层的逻辑是如何运行的,工作在不同逻辑层的开发人员只负责自己这一层的应用逻辑。如应用开发人员要存储一个文件只需要调用一个write()函数就行了,文件的分割、备份、安全、网络传送由下层逻辑负责。应用开发人员本身做的也是虚拟化工作,只是他们是在向自己的上一层提供虚拟化逻辑。
6. 结语
从虚拟化的角度看云计算可以使我们对云计算的本质有一个清晰的逻辑,虚拟化技术远比我们上面描述的框架复杂,云计算是技术发展的趋势但也面临着巨大的技术壁垒,需要整个产业的全面协作,他决不是一两家虚拟化企业能解决的问题,对于我国来说可能是一个战略性的产业方向,需要从国家层面来解决产业链及协议栈的问题。