虚拟机的实现原理
虚拟机简介
首先看一下整个虚拟机在物理机上的结构图(本图来源网络)
每台虚拟机的组成要素:虚拟机的os,应用程序需要的各种包,应用程序。而每一台虚拟机都是在Hypervisor的基础上建立起来的。
Hypervisor
Hypervisor(虚拟机管理器)是一种运行在物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享一套基础物理硬件,因此也可以看作是虚拟环境中的“元”操作系统,它可以协调访问服务器上的所有物理设备和虚拟机,也叫虚拟机监视器(Virtual Machine Monitor)。【来自百度百科】
针对上图的可以理解为:Hypervisor是运行在物理机之上,为多台虚拟机提供能够宿主在物理主机之上的基础环境。
其实Hypervisor可以分为两种:
(来自维基百科)
I型--裸机型,直接运行在物理设备之上,是一种基于内核的虚拟机(其中包括 Oracle 虚拟机、VMware ESX Server、Microsoft Hyper-V 和 Citrix XenServer【2】)。这种类型的Hypervisor所扮演的角色是一种抽象概念的OS。
II型--宿主机型,运行在宿主机器的操作系统上(如上图)(VMware Workstation、Microsoft Virtual PC 和 Parallels Workstation【2】 ) 创建硬件全仿真实例。Hypervisor构建出一整套虚拟硬件平台(CPU/Memory/Storage/Adapter),上面需要你再去安装新的操作系统和需要的应用软件,这样底层和上层的OS就可以完全无关化。
二者各方面对比
因素 |
裸机型 |
主机型 |
性能 |
性能高,资源开销小,高级的资源控制。 |
性能较差,资源开销大有限的资源控制,虚拟机竞争资源。 |
硬件兼容性 |
没有太多要求,因为虚拟化平台运行在传统操作系统之上,有操作系统硬件的驱动程序支持。 |
运行在经过认证的有限的软、硬件集合内 |
易用性 |
安装容易,但配置很复杂。 |
安装、使用和维护都很简单,不需要专门的技能。 |
高可用性 |
高可用性,主机发生故障时能够提供持续的可用性 |
缺少高可用特性,主机发生故障时,故障解决前虚拟机将处于停机状态。 |
可靠性 |
可靠性高,hypervisor经过很多QA(quality-assurance)测试和严格的硬件认证。 直接运行在硬件上,而不是主机操作系统,减少了一个可能发生故障的组件。 |
主机型hypervisor使用通用的硬件并没有对虚拟化进行专门的测试。 |
虚拟化hypervisor管理 |
提供了几种控制台,能够容易的管理数量巨大的主机及虚拟机; 市场上具有很多用于裸机虚拟化hypervisor的第三方管理和自动化产品可以使用。 |
管理员必须单独管理每个虚拟机,在大型虚拟化基础设施中将非常繁琐,也很耗时。 |
成本 |
裸机hypervisor成本却很昂贵,尤其是当你想扩大规模并使用高级特性时。多数裸机虚拟化hypervisor宣称是免费的,但是仅限于核心hypervisor. |
成本较低,许多基于主机的hypervisor是免费的或者仅仅花费数百美元。 |
可扩展性 |
能够扩展到相当大的规模,使用裸机hypervisor,如果你的主机具有足够的硬件资源,那么你能够轻松地在一台主机上运行数百个虚拟机。 在vSphere 5中单个虚拟机能够配置高达1TB的内存以及32个虚拟CPU。 |
非常有限的可扩展性,VMware基于主机的虚拟化hypervisor VMware Workstation,仅能够支持32GB的内存以及8个虚拟CPU。 |
产品 |
Xen, Oracle VM Server for SPARC, Oracle VM Server for x86, Microsoft Hyper-V and VMware ESX/ESXi. |
VMware Workstation, VMware Player, VirtualBox, Parallels Desktop for Mac and QEMU |
(表格来源于网络)
【参阅】
【1】http://www.ibm.com/developerworks/cn/linux/l-hypervisor/
【2】虚拟化技术分类