第一章 企业虚拟化的目的及本质
第一节 什么是虚拟化?
这本书的读者对象大部分是计算机玩家,但如果你问“什么是虚拟化”,我想大部分人的回答都会是“就是在一个操作系统中运行另一个操作系统”。虽然这个答案也没错,但这并不是真正“虚拟化”的意义,只能说是虚拟化在硬件和操作系统之间的一个实践。那到底什么是虚拟化呢?我们下面就来看看在计算机不同层次上,虚拟化的真正定义。
1.1.1 定义计算机的服务层级
计算机的服务层级一般是由下图所示构成,从最底层的硬件开始,向上有操作系统、软件运行的框架(或称为Framework)、应用程序、应用程序提供的服务以及最上层的用户等。任何信息系统大都遵循此架构,也是计算机系统几十年来一直不变的架构。
▲ 计算机的服务层级一般由这几个部分组成
1. 硬件部分
硬件厂家虽然可以用各式各样的新科技来制作先进的产品,但还是得考虑到产品的通用性。以CPU为例,虽然各种CPU厂家都以高速低耗电为主要设计原则,但以信息业来说,还是有几个必须遵守的架构,如Intel架构、PowerPC架构等。这也是硬件厂家在设计时的较少制约。
▲ 以虚拟化来说,当前的CPU架构以Intel的X86为主
2. 操作系统部分
操作系统的功能很复杂,与本书有关的部分,主要还是硬件与上层的沟通。举例来说,如果你买了一片新的显示适配器想要玩三维游戏,必须先安装驱动程序才能发挥硬件的功能及效能。这时操作系统的用处,就是提供游戏和硬件之间沟通的管道(驱动程序),因此没有操作系统的话,硬件和用户之间是被隔离的。
▲ 操作系统提供的功能有很大一部分是为了和下层硬件进行沟通
3. 框架部分
大家都有使用IE的经验,如果你在使用IE时,只将“C:\Program Files\Internet Explorer\iexplore.exe”克隆出来,再拿到另一台电脑使用,这个IE是无法运行的。原因是这个IE在运行时,虽然有运行文件了,但还需要底层的框架提供各种功能。这些框架就是所谓的底层架构(Framework)。这么做的好处是让程序开发人员有一个共通的平台,并且也能确保开发出来的软件能在任何安装Framework的计算机上运行。Java Runtime、Microsoft Framework就是常见的例子。
▲ 没有Framework大部分的软件是无法运行的
4. 软件部分
软件就是我们看到单独的应用程序,如MSN、Word等。当我们要使用软件时,只要运行该软件的运行文件就可以。计算机中软件的单位都是运行文件,再大的软件都有一个代表性的运行文件。而网页上的软件,则由index.html这一类的首页来给定,或是由Web Server来给定软件的入口点。
▲ 本地的软件是以文件为入口点
▲ 网络的应用程序一般是以一个网页文件为入口点
5. 服务部分
软件呈现出来的功能称为服务。一般来说,一个现代的软件服务包括了物理数据(放在数据库系统中)、业务逻辑以及界面(Interface)。用户通过界面,以业务逻辑为工具来操作物理数据,就是一个基本的服务模式。
▲ 软件提供的功能称为服务,如银行安全控件就是一个实时通服务