银行理财经理的一天:虚拟机技术简介

来源:百度文库 编辑:中财网 时间:2024/05/05 09:12:21
在介绍虚拟机之前先要认识一下VMM(Virtual Machine Monitor:虚拟机监视器)和Intel的VT技术,
一、VMM:主要是提供平台的复制,允许多种操作系统实例运行在同一系统上。
VMM访问、管理所有的硬件资源,也管理客户操作系统和它的应用进程。当客户操作系统执行特权指令或者直接和底层硬件交互的时候,VMM中断操作,检查正确性,然后代替客户操作系统执行这些操作。运行在客户操作系统上的应用软件并不知道这种后台操作,表面看起来和一般的操作没有区别。
VMM类型分为:
(1)监控模式(Hypervisor Model)
VMM直接运行在裸机上。采用这种模式的VMM运行在处理器的最高特权,而所有的客户机则运行在较低的特权级以使VMM可以截获所有客户操作系统对系统资源的访问。
(2)主机模式(Host-based Model)
VMM运行在主机操作系统上(Host OS)。这种方式的虚拟机也叫有宿主的虚拟机,它使得VMM可以充分利用宿主操作系统所提供的设备驱动和底层服务,但缺点是宿主操作系统的介入可能会导致系统性能的损失。Vmware WorkStation 就是运行在主机模式上。
(3)混合模式(Hybrid Model)
混合模式集成了监控模式和主机模式的优点,即可以利用主机操作系统的现成设备驱动实现虚拟机的设备模型,又不会失掉监控模式的高效率。Xen就是一款采用混合模式的虚拟机。Xen就是运行在混合模式上。
二、Intel VT技术简介:
Intel VT技术的主要目标是使VMM不必利用泛虚拟化技术和二进制转化技术实现虚拟化,使虚拟机可以在性能较佳的情况下支持更多的操作系统,包括IA-32处理器。
1)VT-X技术概述:
VT-x提供了两个新的CPU工作模式:VMX root 模式和VMX non root 模式,其中root模式被设计用来给VMM调用,非root模式则提供VM运行的IA-32环境。
两者都可以支持所有四个等级,操作系统可以跑在它原来本身的等级上,而VMM则可以灵活的使用各个等级。虚拟技术就是通过根模式和非根模式之间的切换来实现,由非根模式切换到根模式称为VM退出,VM Exit),这有可能是VM中的操作系统执行了某些特权指令,而这些特权指令需要有VMM代为执行;有根模式切换到非根模式称为VM进入(VM Entry),这有可能是VM调度引起的。
2)VMCS(Virtual Machine Control Structure)
VT-x为每个VM设计了一个控制结构VMCS来保存VM和VMM的信息。执行VM entry指令时将VMM的状态保存到VMCS的host area,并加载相应VM的VMCS guest area 到CPU中;执行VM exit时则将当前VM状态保存到VMCS guest area中,并加载VMCS host area 到CPU中。整个VM Entry和VM Exit的过程如图
VMCS中保存的VM的处理器状态包括:段寄存器、CR3、IDTR(中断描述符表寄存器)等。
VMM可以对不同VM的VMCS分别设置不同的虚拟机退出条件,从而实现不同VM的不同虚拟化策略。
VMCS根据物理地址来寻址。VT-x定义了一系列新的指令集,可以直接访问VMCS。
先对VMware WorkStation 做下简要分析:
Vmware Workstation是一个基于主机模型的虚拟机,包括三个模块:VMM,VMX(Virtual Machine eXtension)驱动和Vmware 应用程序。
为了更好地理解VMware Workstation,这里先简要介绍一下Intel x86平台的工作原理。
在X86平台上,保护机制提供了4个优先级,从ring0到ring3。操作系统内核服务位于ring0, ring1和ring2主要用于设备驱动,应用程序运行于ring3。只有运行在ring0的操作系统及内核服务能够运行特权指令,其他ring上的程序运行特权指令都会导致失败。
对于Vmware Workstation的三个模块,VMM和VMX驱动位于ring0, VMX驱动被安装在宿主操作系统中,以获得VMM所需的高特权级,VMApp位于ring3。执行时VMapp通过VMX驱动的帮助将VMM载入核心内存,并赋予它最高特权级ring0。此时宿主操作系统仅能感知到VMApp和VMX驱动,而并不知道VMM的存在。现在机器中存在两个世界:host世界和VMM世界。VMM世界可以直接与处理器硬件通信,或通过VMX驱动与host世界通信。而每一次世界切换都需要保存和重建当前所有的硬件状态,这对性能影响很大。
下图显示了VMware Workstation的架构:

由图可以知道:当Guest OS或其上的应用程序仅跑一些纯粹的计算程序时,它们就通过VMM直接在CPU上运行。当需要进行I/O操作时,这些I/O指令就会被VMM捕获并切换到host世界中执行,这由VMApp来引发相关调用,最后将结果返回VMM世界。由于世界切换的开销非常大,所以虚拟机中的I/O操作性能很低。
三、 接着我们对目前热门的开源Xen做下分析:
Xen是剑桥大学开发的一个开源的混合模型系统虚拟机,最初基于32位的x86体系结构而设计开发,支持多至约100个运行Xenolinux操作系统的虚拟机。Xen引入的管理接口(Hypercalls)和事件(Events)机制事实上修改了x86体系架构,同时预先定义的客户机和VMM之间的共享内存数据交换机制使它具有更高的总体性能。但同时Xen作为一个泛虚拟化实现也就注定了它必须修改Guest OS。Xen将客户机称为Domain,其中Domain0为监控程序(Hypervisor)的扩展提供系统的管理服务。Hypervisor拥有部分硬件I/O资源如定时器处理期间中断IPI等,隔离的设备驱动域(Isolated Driver Domain)也拥有部分的I/O资源如硬盘网卡等(其中Domain0也称为设备驱动域),而普通的Domain只有虚拟的设备而没有直接的硬件I/O设备。另外也将Hypervisor简称为Xen。Xen本身主要基于开源的Linux核心代码移植而来,同时运行于其上的XenoLinux也从Linux移植而来,意为支持Xen架构的Linux。所有原来的x86应用程序均不需任何修改就可以在Xen上运行,即Guest OS的s(Application Binary Interface)不变,从而保证了对应用程序的透明。
2005年12月5日,XenSource发布了Xen3.0版本,正式开始了对完全虚拟化技术的支持。Xen支持的不需要修改Guest OS的虚拟机称为HVM(Hardware Virtual Machine)。Xen 3.0支持Intel VT技术,客户机 SMP(Symmetric Multi-Processing)及客户机CPU热插拔、动态移植、32位/64位和PAE客户机支持、安腾架构支持、安全平台、虚拟机的保存和恢复等全新的特性。动态移植技术可以使得一个虚拟机在不同的物理机器间移植,而不需要关闭机器,同时不中断虚拟机对外的服务。动态移植理论上可以使虚拟机的服务永不间断,在物理机器寿命到来之前到一个新机器上而继续运行。虚拟机的保存和恢复可以为用户提供机器级别的备份,而不需要关心用户程序本身是否有备份功能,实现灾难恢复。
——Johnny,SJTU,自《虚拟机Xen及其内存管理研究》选编