首先来看一下整个虚拟机在物理机上的结构图:
每台虚拟机的组成要素:虚拟机的os,应用程序需要的各种包,应用程序。而每一台虚拟机都是在Hypervisor的基础上建立起来的。下面来看一下什么是Hypervisor?
一、什么是Hypervisor?
Hypervisor是一种运行在物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享一套基础物理硬件,因此也可以看作是虚拟环境中的“元”操作系统,它可以协调访问服务器上的所有物理设备和虚拟机,也叫虚拟机监视器(Virtual Machine Monitor)。Hypervisor是所有虚拟化技术的核心。非中断地支持多工作负载迁移的能力是Hypervisor的基本功能。当服务器启动并执行Hypervisor时,它会给每一台虚拟机分配适量的内存、CPU、网络和磁盘,并加载所有虚拟机的客户操作系统。
综上所述,Hypervisor是运行在物理机之上,为多台虚拟机提供能够宿主在物理主机之上的基础环境。
其实Hypervisor可以分为两种类型:
I型 – 裸机型:直接运行在物理设备之上,是一种基于内核的虚拟机(其中包括 Oracle 虚拟机、VMware ESX Server、Microsoft Hyper-V 和 Citrix XenServer)。这种类型的Hypervisor所扮演的角色是一种抽象概念的OS。
II型 – 宿主机型:运行在宿主机器的操作系统上(如上图)(VMware Workstation、Microsoft Virtual PC 和 Parallels Workstation ) 创建硬件全仿真实例。Hypervisor构建出一整套虚拟硬件平台(CPU/Memory/Storage/Adapter),上面需要你再去安装新的操作系统和需要的应用软件,这样底层和上层的OS就可以完全无关化。
两者对比如下:
因素 | 裸机型 | 主机型 |
性能 | 性能高,资源开销小,高级的资源控制。 | 性能较差,资源开销大有限的资源控制,虚拟机竞争资源。 |
硬件兼容性 | 没有太多要求,因为虚拟化平台运行在传统操作系统之上,有操作系统硬件的驱动程序支持。 | 运行在经过认证的有限的硬件集合内,如VMware ESX和ESXi。 |
易用性 | 安装容易,但配置很复杂。 | 安装、使用和维护都很简单,不需要专门的技能。 |
高可用性 | 高可用性,主机发生故障时能够提供持续的可用性 | 缺少高可用特性,主机发生故障时,故障解决前虚拟机将处于停机状态。 |
可靠性 | 可靠性高,Hypervisor经过很多QA(quality-assurance)测试和严格的硬件认证。
直接运行在硬件上,而不是主机操作系统,减少了一个可能发生故障的组件。 |
主机型Hypervisor使用通用的硬件并没有对虚拟化进行专门的测试。 |
虚拟化Hypervisor管理 | 提供了几种控制台,能够容易的管理数量巨大的主机及虚拟机;
市场上具有很多用于裸机虚拟化Hypervisor的第三方管理和自动化产品可以使用。
|
管理员必须单独管理每个虚拟机,在大型虚拟化基础设施中将非常繁琐,也很耗时。 |
成本 | 裸机Hypervisor成本却很昂贵,尤其是当你想扩大规模并使用高级特性时。多数裸机虚拟化Hypervisor宣称是免费的,但是仅限于核心Hypervisor. | 成本较低,许多基于主机的Hypervisor是免费的或者仅仅花费数百美元。 |
可扩展性 | 能够扩展到相当大的规模,使用裸机Hypervisor,如果你的主机具有足够的硬件资源,那么你能够轻松地在一台主机上运行数百个虚拟机。
在vSphere 5中单个虚拟机能够配置高达1TB的内存以及32个虚拟CPU。
|
非常有限的可扩展性,VMware基于主机的虚拟化Hypervisor VMware Workstation,仅能够支持32GB的内存以及8个虚拟CPU。 |
产品 | VMware ESX和ESXi,微软的Hyper-V,Citrix的XenServer,orcal虚拟机,linux KVM。 | VMware Server(GSX)、Workstation和Microsoft Virtual PC、Microsoft Virtual Server等 |
二、Hypervisor的构成
Hypervisor仅是一个从其虚拟操作系统抽象机器硬件的分层应用程序。通过这种方式,每个虚拟操作系统看到的仅是一个VM而不是真实的硬件机器。
在较高级别上,Hypervisor需要少量设施启动虚拟操作系统:一个需要驱动的内核映像、一个配置(比如 IP 地址和所需的内存量)、一个磁盘和一个网络设备。磁盘和网络设备通常映射到机器的物理磁盘和网络设备(如图所示)。最后,需要使用一组虚拟操作系统工具启动和管理虚拟操作系统。
然后,一个简化的 Hypervisor 架构实现最后的关键功能,从而使来宾操作系统可以和宿主操作系统同时运行。实现这个功能需要一些特定的要素,如下图所示。首先,类似于将用户空间应用程序和内核函数连接起来的系统调用,一个通常可用的虚拟化调用(hypercall,Hypervisor 对操作系统进行的系统调用)层允许来宾系统向宿主操作系统发出请求。可以在内核中虚拟化 I/O,或通过来宾操作系统的代码支持它。故障必须由 Hypervisor 亲自处理,从而解决实际的故障,或将虚拟设备故障发送给来宾操作系统。Hypervisor 还必须处理在来宾操作系统内部发生的异常。(毕竟,来宾操作系统发生的错误仅会停止该系统,而不会影响 Hypervisor 或其他来宾操作系统)。Hypervisor 的核心要素之一是页映射器,它将硬件指向特定操作系统(来宾或 Hypervisor)的页。最后,需要使用一个高级别的调度器在Hypervisor和来宾操作系统之间传输控制。
三、为什么要使用 Hypervisor?
Hypervisor 是所有虚拟化技术的核心。 非中断地支持多工作负载迁移的能力是其基本功能。通过 Hypervisor,可以更充分地利用系统可用资源并提升 IT 移动性。因为客户机虚拟机不依赖于主机硬件,这意味着它们可以轻松地在不同服务器之间移动。软硬件架构和管理更高效、更灵活,硬件的效能能够更好地发挥出来。