转自:http://book.2cto.com/201302/15631.html
hypervisor支持在裸机设备(如CPU、内存、磁盘和网络接口)之上的硬件级虚拟化(如图3-1b所示)。hypervisor直接处在物理硬件和其操作系统之间。该虚拟化层可以指VMM,也可以指hypervisor。hypervisor为客户操作系统和应用程序提供了超级调用。根据功能的不同,hypervisor可以是一个微内核体系结构,如微软的Hyper-V,也可以是一个单一hypervisor结构,如用于服务器虚拟化的VMware ESX。
微内核的hypervisor包括基本的、不变的功能,如物理内存管理和处理器调度,设备驱动和其他可变组件则处于hypervisor之外。单一hypervisor则实现前述所有功能,包括设备驱动相关功能。因此,微内核hypervisor的代码尺寸小于单一hypervisor。实质上,hypervisor必须可以将物理设备转换为可被多个虚拟机使用的虚拟资源。
Xen体系结构
Xen是一个由剑桥大学开发的开源hypervisor程序。Xen属于微内核hypervisor,其中策略与机制分离。Xen hypervisor实现所有机制,策略则留给Domain 0处理,如图3-5所示。Xen本地不包括任何设备驱动[7],它只是提供了一种客户操作系统可以直接访问物理设备的机制。因此,Xen的代码尺寸很小。Xen提供了一个处于硬件和操作系统之间的虚拟环境。现在,大量厂商正在开发商业的Xen hypervisor,有Citrix XenServer[62]和Oracle VM[42]。
Xen系统的核心组件是hypervisor、内核和应用程序。这三个组件的组织很重要。与其他虚拟化系统类似,hypervisor之上可运行许多客户操作系统。然而,不是所有客户操作系统都处于平等地位,实际上,其中一个虚拟机具有控制其他虚拟机的特权。具有控制特权的客户操作系统称为Domain 0,其他客户操作系统则称为Domain U。Domain 0是Xen的一个具有特权的客户操作系统。在启动Xen时,没有任何文件系统驱动可用,这时,Domain 0被首先启动。Domain 0可以直接访问硬件和管理设备。因此,Domain 0的一个任务是为所有Domain U分配和映射硬件资源。
例如,Xen基于Linux,其安全级别是C2。它的管理虚拟机称为Domain 0,具有管理处于同一台主机的其他虚拟机的特权。如果Domain 0被入侵,则黑客可以控制整个系统。因此,在虚拟机系统中,需要相应的安全策略来提高Domain 0的安全性。Domain 0,像VMM一样,可以像操作文件一样简单地创建、复制、保存、读取、修改、共享、迁移和回滚虚拟机,为用户提供了极大好处。遗憾的是,Xen在软件生命周期和数据生存期中带来一系列安全问题。
按照惯例,可以把一个机器的生存期想象为一条直线,其中机器的当前状态是一个点,该点随着软件的执行而单向移动。在这期间,可以改变配置、安装软件或打补丁。这时,虚拟机状态类似于一棵树:在任何点,执行可以到达多个不同的分支,其中虚拟机的多个实例可以在任何时候处于该树的任何点。允许虚拟机回滚到它们前面执行的状态(例如,修复配置错误)或从同一个点返回多次。(例如,作为一种发布动态内容或者循环在线系统镜像的方式。)