(1)Type 1类型:裸金属架构虚拟化层

    Type 1类型或者说裸金属架构的虚拟化是运行在服务器硬件之上,如图1-5所示。这种虚拟化的类型能得到更好的硬件控制,从而实现更稳定的性能和更高的安全性。虚拟机操作系统(VM)运行在裸金属架构虚拟化层(Hypervisor)之上,而裸金属架构虚拟化层(Hypervisor)运行在硬件层(Hardware)之上。目前在市场上使用这种虚拟化架构的产品有微软的Hyper-v、VMware vSphere的ESXi和Citrix的XenServer。

虚拟化类型_第1张图片


    (2)Type 2类型:寄居架构虚拟化层

    Type 2类型或者说寄居架构虚拟化层是作为一种应用程序运行在操作系统之上的,这就是寄居架构虚拟化层通常被称为托管的虚拟机管理程序的原因。在Type 2类型的虚拟化环境中,虚拟机操作系统(VM)都运行在虚拟化层之上,从图1-5可以看出,Type 1类型和Type 2类型(如图1-6所示)在架构方面存在一些差异。Type 1类型的裸金属架构虚拟化层(Hypervisor)运行在硬件层(Hardware)之上,二Type 2类型中,我们可以看到虚拟化层(Hypervisor)是安装在操作系统层(Operating System)之上的。虚拟机操作系统(VM)不允许直接访问硬件资源,这种没有办法直接访问硬件资源的设计,会带来不必要的资源开销,所以在Type 1类型中,虚拟机(VM)直接通过虚拟化层(Hypervisor)得到资源,而虚拟化层(Hypervisor)直接调用硬件层(Hardware)资源。在Type 2类型中,虚拟机(VM)不能直接通过虚拟化层(Hypervisor)直接调用硬件层(Hardware)资源,而是通过安装在硬件层的操作系统得到资源,这样一来,硬件层的一部分资源还要维持操作系统层(Operation System)的运行,造成一定的资源损失。Type 2类型还有一个缺点就是,如果系统是Windows NT,一旦发生故障,则虚拟化平台也将发生故障,并终止服务。属于Type 2类型的虚拟化产品主要是Microsoft的Virtual PC和VMware vSphere的VMware player、VMware Workstion。Type 2类型的虚拟化层如图1-6所示。

虚拟化类型_第2张图片


    (3)Monolithic hypervisors虚拟化层

    Monolithichypervisors虚拟化层是Type 1类型的一个子类型,这种类型的虚拟机管理程序的驱动程序来自虚拟操作系统,它要求Hypervisor感知设备驱动,并被托管和管理在“Hypervisor”层,如图1-7所示。所以,使用Monlithic hypervisors虚拟化层会带来一些好处,但是也有一些不足。好处是它们不再需要父操作系统来控制,可以直接控制服务器硬件,提供更好的性能。而不足之处主要有以下两点:

    ·不是每一个硬件提供商都为此类型的虚拟机管理程序提供驱动,这是因为一些不同的主板和其他设备都有不同的驱动程序,因此,找到一个兼容的硬件驱动供应商支持可能是一个潜在的艰巨的任务。

    ·Monlithic hypervisors虚拟化层允许虚拟化监控程序接近内核kernel(Ring 1)和硬件资源,这可能会造成恶意后门的打开。一旦恶意后门被打开,恶意***者就可以控制运行在服务器上所有的虚拟机上了。

    ·VMware vSphereESXI Server采用的就是Monolithic hypervisors虚拟化层。

虚拟化类型_第3张图片


    (4)Microkernel hypervisors虚拟化层

    Microkernel hypervisors虚拟化层不需要设备驱动,因为它的设备驱动是独立运行在“控制层”的。相应的,Microkernel hypervisors虚拟化层的设备驱动程序一般都运行在kernel mode(Ring 0)和可信的操作系统(OS)的用户模式(Ring 3)中,只有当CPU和内存发生调度时,才会运行在Ring 1中。Microkernel hypervisors虚拟化层的虚拟机监控程序的优点是,由于大多数硬件制造商都会提供操作系统,并且提供的操作系统会兼容Microkernel hypervisors设备的驱动程序,所以找到兼容的硬件是很容易的。Microkernel hypervisors虚拟化层如图1-8所示。

虚拟化类型_第4张图片

    

    Microkernel hypervisors虚拟化层要求驱动程序必须安装在物理机上运行的操作系统中,并且必须运行在虚拟化层的父分区中,这就意味着我们不需要将设备驱动程序安装在每个虚拟机操作系统子分区(VM)上,因为当这些虚拟机操作系统需要访问主机上的物理硬件资源计算机时,不需要访问硬件,而只需要和父分区进行通信即可。微软Hyper-v的架构采用的就是Microkernel hypervisors虚拟化层。

    Microkernel hypervisors优点如下:

    ·设备驱动不需要将每个设备都纳入Hypervisors层或者VMM Kernel。由于微软没有提供应用程序编程接口(API)来访问“Hypervisor层”,所以它受到***的可能小,没人可以将外部代码插入“Hypervisor层”。

    ·设备驱动不需要Hypervisor的感知,所以这种架构可以使用更多的设备。不需要关闭“Hypervisor层”,包括设备驱动程序。设备驱动程序可以安装在操作系统运行的“控制层”(Windows Server 2008 R2、Windows Server 2012),可以使用虚拟机访问“硬件层”的硬件Microkernel hypervisor架构。除了服务器虚拟化之外,在“控制层”允许安装其他的服务器。因为微软的Hypervisor代码只有600KB,因此“Hypervisor层”不需要用很多时间来初始化组件。

    Microkernel hypervisors确定如下:

    ·在操作“Hypervisor层”之前,需要在“控制层”安装操作系统,这是一个最大的缺点。

    ·如果“控制层”正在运行的操作系统崩溃,无论是由什么原因导致的,所有的虚拟机也都会崩溃。这会进一步导致需要花费更多的经费在“控制层”的操作系统与“Hypervisor层”的虚拟机上。每个Windows的操作系统的安全维护都需要通过微软发布的安全更新,因此在“控制层”运行的操作系统必须用最新的安全更新。而更新就需要重启操作系统,这需要将所有的虚拟机进行离线,基于这个原因,就必须使用Hyper-v live迁移功能将集群迁移到另一个节点上,以保证不会出现死机问题。