根据VMM在整个物理系统中(或上一层虚拟机系统中)实现位置及实现方法的不同,系统虚拟机的模型可以分为监控模型(Hypervisor Model)、宿主模型(Host-based Model)和混合模型(Hybrid Model),如图1-3所示。
图1-3 虚拟机监控器实现的三种模型
在监控模型中,VMM直接运行在裸机上(没有操作系统)。采用这种模型的VMM运行在处理器的最高特权级,而所有的客户机则运行在较低的特权级,以便VMM可以截获所有客户机OS对系统资源的访问,从而实现对系统资源的虚拟化,如VMware ESX Server。监控模型下的VMM需要实现各种设备驱动程序,因此具有很高的工程复杂性,同时基于裸机的Hypervisor在安装和部署上也具有较高的复杂性。监控模型也常常被称为一型虚拟机监控器(Type-1 Hypervisor)模型。
在宿主模型中,VMM运行在宿主机OS(Host OS)内,作为宿主机操作系统的一个扩充。这种方式的虚拟机也叫宿主虚拟机,它使得VMM可以充分利用宿主机OS所提供的设备驱动程序及底层服务,因此它的工程复杂性相对较低。但缺点是VMM的开发受制于宿主机OS的接口,有些功能的实现可能比较困难或者需要修改宿主机OS,而后者在闭源操作系统中通常只有宿主机OS开发者才可以完成,因此局限性比较大。随着开源操作系统内核Linux的普及,基于Linux的宿主模型的KVM Hypervisor成为主流的服务器虚拟化解决方案和嵌入式虚拟化解决方案。宿主模型的VMM通常由内核态VMM和用户态VMM共同合作完成对虚拟平台的模拟,如VMware Workstation 和Linux操作系统上的KVM虚拟机监控器 。宿主模型的VMM不需要去除原来机器上已经安装的操作系统,安装和部署也比较容易,因此容易被普通用户所接受。宿主模型常常被称为二型虚拟机监控器(Type-2 Hypervisor)模型。
混合模型集两者的优点,既可以利用宿主机OS的现成设备驱动实现虚拟机的设备模型,又可以实现不同的安全模型,它的典型代表是微软公司的Hyper-V和Citrix公司的Xen开源Hypervisor。