服务器虚拟化概述
在服务器虚拟化技术中,被虚拟出来的服务器称为虚拟机(Virtual Machine,VM)。运行在虚拟机里的操作系统称为客户操作系统,即Guest OS。负责管理虚拟机的软件称为虚拟机管理器,缩写为VMM,也称为Hypervisor。
服务器虚拟化通常有两种架构,分别是寄生架构(Hosted)与裸金属架构(Bare-metal)。
(1)寄生架构。
一般而言,在使用计算机之前,首先要安装操作系统,该操作系统称为宿主操作系统,即Host OS。如果采用虚拟机技术,则需要在操作系统之上再安装一个VMM,然后利用这个VMM创建并管理虚拟机。这种后装模式称为寄生架构,因为VMM看起来像是“寄生”在操作系统上的。例如,Oracle公司的VirtualBox就是一种寄生架构。
(2)裸金属架构。
顾名思义,裸金属架构是指将VMM直接安装在物理服务器之上而无须先安装操作系统的预装模式。在安装了VMM之后,再在VMM上安装其他操作系统(如Windows、Linux等)。由于VMM“看起来”是直接安装在物理计算机上的,所以称为裸金属架构,例如KVM、Xen、VMware ESX。
目前,普遍认为裸金属架构的性能要比寄生架构高。很多资料都宣传说,裸金属架构是直接运行在物理硬件之上的,无须通过Host OS,所以性能更高。
图3-1为Xen的工作流程,其中有3个Domain。一开始,很多人会将Domain误认为是CPU的一种特殊状态,这是因为在很多文档里会用一些比较模糊的措辞,例如“此时,系统会进入Domain 0状态”,从而让人产生误解。其实,Domain在虚拟化技术里表示的不是CPU的状态,而是“域”,更通俗地说,就是一台虚拟机。
虽然从图3-1上看,Xen是运行在硬件之上的,但实际上,Xen严重依赖于一个特殊的Domain,那就是Domain 0。其实,Xen在发布其裸金属版本的时候,里面就包含了一个裁剪过的Linux内核,它为Xen提供了除CPU调度和内存管理之外的所有功能,包括硬件驱动、I/O、网络协议、文件系统、进程通信等所有其他操作系统所做的事情。这个Linux内核就运行在Domain 0 里面。这就是为什么当启动裸金属架构版的Xen时会自动启动Domain 0。因为没有这个Linux内核,Xen将无法工作。事实上,基于裸金属架构的VMM中往往包含了一个经过修改的Host OS。
图3-1 Xen的工作流程
因此,裸金属架构其实并不说明VMM能够抛开Host OS在硬件之上运行。如果我们把图3-1中的Domain 0放到与Xen Hypervisor平级的位置,或者放到Xen Hypervisor下面,Domain 0就与寄生架构没有区别了,如图3-2所示。而事实上,即使是寄生架构的产品,例如VirtualBox,在Host OS里面也会有一个运行于核心的驱动程序,它可以直接与物理设备打交道。
如果仔细看图3-2,会发现Domain 1和Domain 2与Domain 0之间还有一些通信。这与传统的寄生架构一样,Guest OS有时也是需要访问Host OS的。所以,裸金属架构本身不会给Guest OS的性能带来任何提升。
从目前的趋势来看,虚拟化将成为操作系统本身功能的一部分。例如,KVM就是Linux标准内核的一个模块,微软的Windows 2008也自带Hyper-V。
图3-2 寄生架构