一、引言
在生产环境中大多需要服务器来提供服务,但每一个服务可能需要的系统资源很少,独占一台服务器会浪费资源增大耗费,但是想象一下如果一台服务器上同时提供20个服务又会很混乱,因此期望提供服务的OS是独立运行的同时又想减少服务器数量,以降低TOC(Total Cost of Ownership),于是可以利用虚拟化技术隐藏底层物理硬件,从而让多个各自独立运行的OS可以透明地使用和共享这些硬件资源。简单来说,平台虚拟化就是让一台物理计算机能并发运行多个OS。就拿熟悉的VMware Workstation在物理机上的架构来说,物理机的OS之上运行了多个进程,VMware只是其中一个,但是在VMware之上又可以运行多个虚拟机,虚拟机的OS各自独立可以是Red Hat,CentOs,Ubuntu等等。VMware可以理解为是一款模拟了一堆硬件的应用软件,在这些硬件上可以运行额外的OS。下面的叙述中也将虚拟机称为Guest OS或者客户机,宿主机也称为Host OS。
二、虚拟化概述
Virtual Machine Monitor&&Hypervisor
http://www.ibm.com/developerworks/cn/linux/l-hypervisor/
在典型的分层架构中,提供平台虚拟化的层称为hypervisor,它是一种运行在物理服务器和OS之间的中间软件层,允许多个OS和应用共享一套基础物理硬件,因此也可以看作是虚拟环境中的“元”操作系统,Hypervisor是所有虚拟化技术的核心,具有规划、部署、管理和优化虚拟基础结构等端到端功能。非中断地支持多工作负载迁移的能力是Hypervisor的基本功能。当服务器启动并执行Hypervisor时,它会给每一台虚拟机分配适量的内存、CPU、网络和磁盘,并加载所有虚拟机的Guest OS。有时Hypervisor也称为VMM,即虚拟机监控器,VMM既可以与虚拟机在同一台主机上,也可以单独运行在一台主机上,VMM与虚拟机互不影响。1974年,Popek和Goldberg在一篇论文中定义了“经典虚拟化(Classical virtualization)”的基本需求,他们认为,一款真正意义上的VMM至少要符合三个方面的标准:
- 等价执行(Equivalient execution):除了资源的可用性及时间上的不同之外,程序在虚拟化环境中及真实环境中的执行是完全相同的;
- 性能(Performance):指令集中的大部分指令要能够直接运行于CPU上;
- 安全(Safety):VMM要能够完全控制系统资源;
三、虚拟化分类
根据不同标准虚拟化的分类方式有很多,如:完全虚拟化,准/半虚拟化,硬件虚拟化,跨平台虚拟化,应用程序虚拟化等。
1、Full virtualization
在完全虚拟化中,Guest OS不需要做任何修改,对于Guest OS来说,并不知道自己