基于Intel-VT技术的Smart-VM 第1章 绪论
1.1 课题背景自从 IBM 开发出 IBM 370/390 之后,硬件虚拟机技术的发展日新月异。为了克服虚拟机技术应用在 x86 上遇到的困难,英特尔推出了 Intel-VT 技术。 Intel-VT 技术综合了全虚拟化和半虚拟化的优点:跟全虚拟化比起来,由于大部分客户操作系统的指令都是由处理器执行,所以理论上性能接近于在裸机上运行的性能;跟半虚拟化比起来,客户操作系统不需要修改,就可以在...
1.1 课题背景
自从 IBM 开发出 IBM 370/390 之后,硬件虚拟机技术的发展日新月异。为了克服虚拟机技术应用在 x86 上遇到的困难,英特尔推出了 Intel-VT 技术。 Intel-VT 技术综合了全虚拟化和半虚拟化的优点:跟全虚拟化比起来,由于大部分客户操作系统的指令都是由处理器执行,所以理论上性能接近于在裸机上运行的性能;跟半虚拟化比起来,客户操作系统不需要修改,就可以在硬件上运行,大大减轻了虚拟机监控器的开发难度。
由于 Intel-VT 技术的优点,目前,不管是公司,还是研究机构,都在开展 Intel-VT 技术的应用研究。我们实验室对这方面的技术积累已经达到了一定程度。该课题设立的目的,就是为了能够在国家基金的支持下,研究硬件虚拟机监控器如何充分利用 Intel-VT 技术。
1.2 国内外发展现状
1.2.1 VMware
VMware 是一个 “ 虚拟 PC” 软件。它可以在一台机器上同时运行二个或更多 Windows 、 DOS 、 LINUX 系统。与 “ 多启动 ” 系统相比, VMware 采用了完全不同的概念。 “ 多启动 ” 系统在一个时刻只能运行一个系统,在系统切换时需要重新启动机器。 VMware 是真正 “ 同时 ” 运行多个操作系统在主系统的平台上。 VMware 是提供一套虚拟机解决方案的软件公司,主要产品分为如下四个:
a) VMware-ESX-Server :这个版本并不需要操作系统的支持。它本身就是一个操作系统,用来管理硬件资源。所有的系统都安装在它的上面。带有远程 web 管理和客户端管理功能;
b) VMware-GSX-Server :这个版本就要安装在一个操作系统下了,这个操作系统叫做 HOST OS. 这个 HOST OS 可以是 Windows 2000 Server 以上的 Windows 系统或者是 Linux( 官方支持列表中只有 RH, SUSE, Mandrake 很少的几种 ) ,和 VMware-ESX- Server 一样带有远程 web 管理和客户端管理功能;
c) VMware-WorkStation :这个版本和 VMware-GSX-Server 版本的机构是一样的。也是要安装在一个操作系统 下,对操作系统的要求也是 Windows 2000 以上或者 Linux 。和 Vmware-GSX-Server 的区别就是没有 web 远程管理和客户端管理;
d) 瘦客户机终端操作系统 (DeTOS)6.0 :戴闻 (Devon) IT 公司与 vmware 公司合作开发的瘦客户机终端操作系统( DeTOS ) 6.0 是一种基于 Linux 操作系统的,可捆绑多客户并连接到众多的各类服务器,利用不同类型协议的网络终端管理软件;
下面,重点介绍两款比较有代表性的产品:
1.2.1.1 VMware Workstation
VMware Workstation 是一款功能强大的桌面虚拟计算机软件,提供用户可在单一的桌面上同时运行不同的操作系统,和进行开发、测试、部署新的应用程序的最佳解决方案。 VMware Workstation 可在一部实体机器上模拟完整的网络环境,以及可便于携带的虚拟机器,其更好的灵活性与先进的技术胜过了市面上其他的虚拟计算机软件。对于企业的 IT 开发人员和系统管理员而言, VMware 在虚拟网路,实时快照,拖曳共享文件夹,支持 PXE 等方面的特点使它成为必不可少的工具。
VMware Workstation 的安装跟在 Windows 上安装普通的应用程序一样方便。而且针对每个操作系统你都可以进行虚拟的分区、配置而不影响真实硬盘的数据,你甚至可以通过网卡将几台虚拟机用网卡连接为一个局域网,极其方便。安装在 VMware 操作系统性能上比直接安装在硬盘上的系统低不少,因此,比较适合学习和测试。
VMware Workstation 主要的功能有:
1. 不需要分区或重开机就能在同一台 PC 上使用多个不同的操作系统;
2. 完全隔离并且保护不同操作系统的操作环境以及所有安装在操作系统上面的应用软件和资料;
3. 不同的操作系统之间还能互动操作,包括网络、周边、文件分享以及复制粘贴功能;
4. 有复原功能;
5. 能够设定并且随时修改操作系统的操作环境,如:内存、磁碟空间、周边设备等等;
除了为网络适配器、 CD-ROM 读盘机、硬盘驱动器、以及 USB 设备的访问提供了桥梁外, VMware 工作站还提供了模拟某些硬件的能力。例如,能将一个 ISO 文件作为一张 CDROM 安装在系统上、也能将 .vmdk 文件作为硬盘驱动器安装、以及可将网络适配器驱动程序配置为通过宿主计算机使用网络地址转换( NAT )来访问网络,而非使用与宿主机桥接的方式(该方式为:宿主网络上的每个客户操作系统必须分配一个 IP 地址)。
VMware 工作站还允许无须将 LiveCD 烧录到真正的光盘上、也无须重启计算机,而对这些 LiveCD 进行测试。还可以捕获在 VMware 工作站下运行的某个操作系统的快照。每个快照可以用来在任何时候将虚拟机回滚到保存的状态。这种多快照功能使 VMware 工作站成为销售人员演示复杂的软件产品、开发人员建立虚拟开发和测试环境的非常流行的工具。 VMware 工作站包含有将多个虚拟机指定为编队的能力,编队可以作为一个物体来开机、关机、挂起和恢复 — 这使 VMware 工作站在用于测试客户端 - 服务器环境时特别有用。
1.2.1.2 VMware ESX Server
VMware ESX Server 是为 IT 环境提供基于虚拟化的分布式服务的基础。作为 VMware Infrastructure 的核心组成部分, ESX Server 是 一个强大且经过生产验证虚拟化层,它将处理器、内存、存储器和网络资源抽象成多台虚拟机,这些虚拟机可以并行在同一台物理服务器上运行。在多个虚拟机间共 享硬件资源可以提高硬件的利用率,并大幅度降低资金和运营成本。虚拟机具有高可用性、资源优化、操作自动化和安全功能,这些功能甚至可以向资源要求极高的 关键应用程序提供服务级别。 ESX Server 为企业 IT 环境提供了最高级别的性能、可扩展性和稳定性。
使用 VMware ESX Server[1] :
1. 在专用系统上运行的应用程序可以转移到位于一个单一、更为可靠和可扩展的系统上的不同虚拟机中。
2. 可以从任何位置对服务器实行远程管理,从而简化了服务器维护。
3. 可以通过高级资源管理保证服务级别。
图 1.1[1] 展示了 VMware ESX 的架构图。 VMware 虚拟机监控器作为隔离层,运行在 x86 硬件上,客户操作系统运行在 VMware 虚拟机监控器之上。
图 1 . 1 VMware ESX 架构图
1.2.2 Xen
如今,虚拟化市场上满是各种不同的虚拟化解决方案。多年以来, VMware 一直控制着基于 i386 的虚拟化市场。然而,现在的开源解决方案 Xen 也在迅速地扩张自己的市场。
Xen 是一个开放源代码虚拟机监视器,由 剑桥大学 开发。 Xen 项目刚开始的目标,是单个 计算机 上运行多达 100 个的操作系统。操作系统必须进行显式地修改( “ 移植 ” )以在 Xen 上运行(但是提供对用户应用的兼容性)。这使得 Xen 无需特殊硬件支持,就能达到高性能的虚拟化 [2] 。
目前, Xen 提供了两种的虚拟化技术可供选择:
l 一种是半虚拟化技术。 Xen 通过一种叫做半虚拟化的技术获得高效能的表现 ( 较少的效能损失 , 典型的情况下大约损失 2%, 在最糟的情况下会有 8% 的效能耗损 ; 与其它使用完全的虚拟化却造成最高到 20% 损耗的其他解决方案形成一个明显的对比 ) ,甚至在某些与传统虚拟技术极度不友好的架构上(如 x86 ), Xen 也有极佳的表现。与那些传统透过软件模拟实现硬件的虚拟机不同,在 3.0 版本及在 Intel VT-X 支援前的 Xen 需要让客户操作系统与 Xen API 进行连接。到目前为止,这样连结已经可以运用在 NetBSD, GNU/Linux, FreeBSD 和贝尔实验室的 Plan 9 系统上。在 Brainshare 2005 会议上, Novell 展示了 NetWare 与 Xen 的连通。与 Windows XP 连通的技术曾在 Xen 开发初期进行,但微软的协议未能允许它发布。 Sun 微系统公司也正积极研究 Solaris 与 Xen 的连结,使其能在 Xen 平台上运作。
l 另一种是硬件辅助虚拟化。英特尔对 Xen 贡献修改以支持 Vanderpool 架构扩展。如果主系统支持 Vanderpool 或者 Pacifica 扩展( Intel 和 AMD 对本地支持虚拟化的扩展),这项技术将允许未修改的客操作系统运行在 Xen 虚拟机中。事实上,那意味著性能的提升,并且你可以在没有进行任何协议不允许的修改的情况下对 Windows 进行虚拟。
Xen 虚拟机可以在不停止的情况下在多个物理主机之间实时迁移。在操作过程中,虚拟机在没有停止工作的情况下内存被反复的复制到目标机器。虚拟机在最终目的地开始执行之前,会有一次 60-300 秒的非常短暂的暂停以执行最终的同步化,给人无缝迁移的感觉。类似的技术被用来暂停一台正在运行的虚拟机到磁盘,并切换到另外一台,第一台虚拟机在以后可以恢复。
图 1 . 2 Xen 架构图
图 1.2[3] 是 Xen 的架构图。 Xen Hypervisor 是一个介于硬件和操作系统之间的软件层,它负责在各虚拟机之间进行 CPU 调度和内存分配。 Xen Hypervisor 不仅抽象出硬件层,同时控制虚拟机的执行,因为这些虚拟机共享同一个处理环境。 Xen Hypervisor 不会处理网络、存储设备、视频以及其他 I/O 。
Domain 0 是一个修改过的 Linux kernel ,是唯一运行在 Xen Hypervisor 之上的虚拟机,它拥有访问物理 I/O 资源的权限,同时和系统上运行的其他虚拟机进行交互。 Domain 0 需要在其它 Domain 启动之前启动。
Domain U 运行在 Xen Hypervisor 上的所有半虚拟化虚拟机被称为 “Domain U PV Guests” ,其上运行着被修改过内核的操作系统,如 Linux 、 Solaris 、 FreeBSD 等其它 UNIX 操作系统。所有的全虚拟化虚拟机被称为 “Domain U HVM Guests” ,其上运行着不用修改内核的操作系统,如 Windows 等。 Domain U PV Guests 的内核知道它自己不能直接访问物理硬件,因为他知道有其他的虚拟机也运行在同一个环境中。而 Domain U HVM Guests 的内核不知道他正在和其他虚拟机共享一个处理环境,它认为它运转在物理硬件上。 Domain U PV Guests 包含两个驱动: “PV Network Driver” 和 “PV Block Driver” 。
Domain U HVM Guests 虚拟机内没有 PV Driver ,而是在 Domain 0 里为每一个 HVM Guest 启动一个特殊守护进程: Qemu-dm ,由 Qemu-dm 负责客户操作系统的网络和磁盘请求。 Domain U HVM Guests 必须进行初始化为某类机器,所以要在 Domain U 上附加一个软件: Xen 虚拟固件,来模拟 BIOS 。
1.2.3 Hyper-V
Hyper-V 采用微内核的架构,兼顾了安全性和性能的要求。 Hyper-V 底层的 Hypervisor 运行在最高的特权级别下,微软将其称为 ring-1 (而 Intel 则将其称为 root mode ),而虚拟机的 OS 内核和驱动运行在 ring 0 ,应用程序运行在 ring 3 下,这种架构就不需要采用复杂的 BT (二进制特权指令翻译)技术,可以进一步提高安全性。
由于 Hyper-V 底层的 Hypervisor 代码量很小,不包含任何第三方的驱动,非常精简,所以安全性更高。 Hyper-V 采用基于 VMbus 的高速内存总线架构,来自虚拟机的硬件请求(显卡、鼠标、磁盘、网络),可以直接经过 VSC ,通过 VMbus 总线发送到根分区的 VSP , VSP 调用对应的设备驱动,直接访问硬件,中间不需要 Hypervisor 的帮助。
图 1.3[4] 是 Hyper-V 架构图。这种架构效率很高,不再像以前的 Virtual Server ,每个硬件请求,都需要经过用户模式、内核模式的多次切换转移。更何况 Hyper-V 现在可以支持 Virtual SMP , Windows Server 2008 虚拟机最多可以支持 4 个虚拟 CPU ;而 Windows Server 2003 最多可以支持 2 个虚拟 CPU 。每个虚拟机最多可以使用 64GB 内存,而且还可以支持 X64 操作系统。
与之前的 Virtual PC 、 Virtual Server 类似, Hyper-V 也是微软的一种虚拟化技术解决方案,但在各方面都取得了长足的发展。
图 1 . 3 Hyper-V 架构图
从架构上讲 Hyper-V 只有 “ 硬件- Hyper-V -虚拟机 ” 三层,本身非常小巧,代码简单,且不包含任何第三方驱动,所以安全可靠、执行效率高,能充分利用硬件资源,使虚拟机系统性能更接近真实系统性能。
按照微软的虚拟化产品路线,微软在将 2008 年第四季度,推出脱离 Windows Server 2008 的、独立的虚拟化产品 Hyper-V Server 。
1.2.4 KVM
KVM 是一种完全 虚拟化 解决 方案 ,它有一个方面非常独特:它将 Linux 内核转换为一个 使用 内核模块的 hypervisor 。这个模块允许使用其他客户 操作系统 ,然后在宿主 Linux 内核的用户空间中运行。内核中的 KVM 通过 /dev/kvm 字符设备来公开虚拟化后的硬件。客户操作系统使用为 PC 硬件仿真修改过的 QEMU 进程与 KVM 模块接口。
图 1.4[5] 是 KVM 的架构图。 KVM 模块向内核中引入了一个新的执行模块。普通内核支持内核模式和用户模式,而 KVM 则引入了一种客户模式。客户模式用来执行所有非 I/O 客户代码,而普通用户模式支持客户 I/O 。
KVM 的引入代表了作为主流 Linux 内核一部分的第一个虚拟化 技术 。它已经存在于 2.6.20 树中,不过也可以作为 2.6.19 内核的一个内核模块使用。当在支持虚拟化的硬件上运行时, KVM 支持 Linux ( 32 位和 64 位)和 Windows ( 32 位)客户机。
图 1 . 4 KVM 架构图
1.3 术语解释
半虚拟化:在半虚拟化中,客户操作系统使用一个专门的 API (半虚拟化接口)与 VMM 通信, VMM 则负责处理虚拟化请求,并将这些请求递交到硬件上。
半虚拟化接口( Virtual Machine Interfaces: VMI ):为了便于半虚拟化虚拟机的开发, VMware 和开源社区共同开发出了一套半虚拟化接口。
Intel-VT ( Intel Virtualization Technology ):英特尔公司的虚拟化技术。
客户操作系统:指运行在虚拟机监控器之上,接受虚拟机监控器监控的操作系统。
全虚拟化:虚拟机与一个叫做虚拟机监控器的部件进行通信,而虚拟机监控器则与硬件平台进行通信。
VMX(Virtual Machine Extensions) :用于支持 Intel-VT 技术的处理器模式。
虚拟 8086 监控器: Smart-VM 虚拟机监控器的一个子模块,用于监控在虚拟 8086 模式下运行的 8086 程序。
虚拟机管理程序:通过虚拟机管理程序,你可以在一台物理计算机上模拟出一台或多台虚拟的计算机,这些虚拟机完全就像真正的计算机那样进行工作,例如你可以安装操作系统、安装应用程序、访问 网络资源 等。
虚拟机监控器( VMM ):与虚拟机管理程序同。
虚拟机控制结构( VMCS, Virtual Machine Control Structure ):用于支持 VMX 操作的数据结构。
硬件辅助虚拟化:指虚拟机监控器利用硬件提供的特殊功能(如 Intel-VT, AMD-V 等),来实现虚拟化功能。
硬件虚拟机:指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。
1.4 本章小结
近几年来,硬件虚拟机的产品层出不穷,显示出了这个领域的活力。
本章主要介绍了我们的课题背景。还有就是针对目前市面上的几款流行的硬件虚拟机进行了简要的介绍。
VMware 是在 x86 平台上,占有绝对领先的地位。但是 Xen 等其他几款硬件虚拟机也逐渐壮大起来了,开始与 VMware 争夺市场资源。 Xen 的优势是它是开源软件,可以得到开源社区的技术支持。而 Hyper-V 则是微软的产品,作为全球 IT 行业的领袖企业之一, Hyper-V 有它得天独厚的先天优势。
更多推荐
所有评论(0)