面向虚拟机的软件开发

作者:Thomas Burger

本文讨论了独立软件厂商为何要开发面向虚拟机环境软件以及能够使软件性能在虚拟机环境中实现最优化的软件技术,并要充分利用英特尔® 虚拟化技术(Intel® Virtual Technology)。此外,本文还讨论了在软件开发和分配工作中使用虚拟机带来的优势。


引言:独立软件厂商(ISV)为何应该为虚拟环境开发软件?

使用虚拟机(VM)技术正在成为业界的普遍做法。现在越来越多的机构开始使用虚拟化来减缓服务器的增长速度(以及相关的能量消耗、空气调节、构建空间和占地等要求),从而为重要应用提供高可用性,并优化应用的部署和移植。虚拟化技术可以简化 IT 操作并支持 IT 机构快速响应不断变化的业务需求。希望节约资金、提高效率和释放宝贵资源的客户应该充分利用这一全新机遇。

虚拟机正逐渐成为开发人员首选软件分发和封装工具的标准容器。它可以提供一个直观的机制,支持将应用最佳实践的提升融入分发封装中,从而帮助用户显著简化开箱即用的体验,同时帮助开发人员简化支持问题。确保环境的完整性能够提高客户满意度并降低厂商的支持成本。

多年来 Oracle* 一直将 10g 产品作为虚拟机配置提供。

盘点现状,我们惊喜地发现:虚拟机软件的成本降低了,计算机的能力和速度提高了,诸如英特尔® 虚拟化技术等硬件大幅提高了虚拟机的速度和能力,涌现了虚拟 SMP(多台 CPU 虚拟机)等多项技术进步,用于将物理机转换为虚拟机或复制虚拟机的工具也已面世。

最后,虚拟机软件还可增加安全性。每个虚拟机均相互独立,一台虚拟机中的冲突或病毒威胁不会影响到其它机器。


虚拟环境是什么样的?

运行于物理计算机上的操作系统能够控制计算机的硬件,并且只有一套操作系统能够随时控制硬件。虚拟机绕过“一台计算机,一套操作系统”的限制,使用称为虚拟机监视器(VMM)的软件来向虚拟机分配物理硬件资源。VMM 向每台虚拟机的模拟硬件分配资源。

 A Roadmap Overview and Update
by Rich Uhlig, Senior Principal Engineer, Corporate Technology GroupSession IVTS001 ©2006 Intel Corporation


在软件开发中使用虚拟机

软件开发人员可通过以下方式使用虚拟化技术,从而获得巨大优势:

  • 沙盒功能(Sandboxing)——虚拟机可以设置为特定配置,以确保环境完整性,从而支持开发和测试。
  • 灾难恢复与高可用性——崩溃的系统可以通过虚拟图像迅速进行恢复。备用虚拟机不占用驱动器空间之外的其它资源,需要时可立即启动。
  • 证据分析(Forensic Analysis)——虚拟图像的屏幕快照可支持迅速恢复,并对试用版测试中的不稳定表现进行调查。


节约资源

通过仅允许一台机器在各种环境和平台中开发和/或测试软件,可节省大量物理资源。这其中不仅包括初期的采购成本,还有计算机使用的空间、能量消耗和维护资源等。

在复杂的项目中,环境可移植性通常是一个问题,需要在许多平台上进行试验。在复制特殊环境时,使用虚拟机可节省时间。您可创建一个预先载入特殊软件集的虚拟硬盘库,以支持开发和测试团队克隆磁盘并迅速复制特殊环境。一旦发生冲突,复制开发环境的工作即被省去。


安全性

在虚拟机中部署开发环境可轻松实现企业的安全性和各项标准。您可以与其他同事共享虚拟机图像,或利用该图像在家中的个人电脑上创建虚拟机(以“沙盒功能”方式),从而将其与您的个人计算机隔离开,以满足企业安全性的要求。

用于软件开发和测试的新工具可安装在虚拟机上,不会危害到主要设置。在全新的虚拟机上创建标准环境的副本并安装新工具,即可了解其在不损害原有结构的情况下的执行情况。


高效性

由于所有软件都保存在虚拟容器中,因此它们可以轻松地从虚拟测试环境移动到生产环境中,从而减轻了从开发到质量检验再到生产环境的移植工作。

使用基于虚拟机的开发工作可支持开发和质检团队使用 VMware Lab Manager 等产品,这一虚拟实验室自动化(VLA)系统可提供虚拟机自助式管理能力。使用 VLA 可减少构建、维护和重新构建虚拟机环境所花费的时间,从而提高工作效率。


局限性

虚拟机可与其它正在运行的虚拟机共享物理资源并消耗一些处理成本。由于它们总是争取到虚拟机不应用于性能的资源,因此增加了旨在运行与非虚拟机平台的测试应用的压力。


在软件开发中使用虚拟机

销售虚拟机图像等预先配置的系统(其中操作系统和所有必要软件全部到位)可确保正确的配置,从而减少支持工作。

由于客户和开发人员的平台存在细微差别,因此通常很难重现问题的情况,但是虚拟机支持下载和检查虚拟机的图像,这就降低了支持成本。


虚拟机平台支持的应用

如果可能,最好能够避免数据库服务器等高性能和高要求的应用,因为运行这些应用需要将费用保持在最低程度,同时机器利用率也会接近饱和。最适合使用虚拟机作为最佳解决方案的领域包括 Web 服务器、DNS 服务器、应用服务器、电子邮件服务器、以及大多数时间空闲或甚少使用的任何网络应用。


支持虚拟机、IVT 优化型软件的优势

专为支持虚拟机并面向 IVT 优化所开发和配置的软件将在虚拟机平台上运行得更出色、更快速。通过避免使用为 VMM 增加负担的技术,充分利用 IVT 的各项属性,这种软件将为注重性能的客户提供更多竞争优势。


为虚拟机开发并配置应用

虚拟机软件开发的首要规则是:

  • 虚拟机是内存密集型设备
  • 虚拟机是 I/O 密集型设备——当然是指在物理环境中。VMM 必须创建和管理虚拟设备。
  • 流程的创建与破坏——虚拟系统的成本非常高昂,VMM 可处理关于创建和需要进行破坏后清理的 VMM 记录。
  • 其它虚拟机都在等待 CPU 时间。应该避免使用过多占用 CPU 的技术。


错误用法:

  • 内存映射 I/O 和设备映射 I/O:当进行 I/O 调用时,VMM 必须执行大量记录工作,以确保高速缓存、内存和磁盘保持同步。如果系统上的虚拟机数量众多,那么每次当虚拟机秩序混乱时,VMM 都必须在进行其它记录的同时保存内存状态,并在虚拟机恢复正常后将一切复原。因此,如果应用要依靠这种调用才能工作,那么性能将有所下降。
  • 创建和破坏流程:由于操作系统拥有平台,所以创建流程当然在本地环境中进行。在虚拟环境中,VMM 需要跟踪虚拟机的流程,除此之外,还要跟踪运行在平台上的其它虚拟机。每次创建流程时,都需要创建内存中的页面,与此流程相关的寄存器需要进行虚拟化,从而也增加了成本。同样,当流程被破坏时,VMM 也需要运行清除程序。
  • 大量占用 CPU 周期的循环:当本地环境中有一个完整的 (1) 循环时,对应用的影响很小,甚至没有影响。但这是由于整个平台都来支持这个应用。在虚拟环境中,每台虚拟机都在争夺资源,尤其是与其它虚拟机争夺 CPU 资源。因此,虚拟机中的完整 (1) 循环会误导 VMM——在实际并不需要的时候为虚拟机提供整个 CPU 资源。


正确用法:

  • 内存和设备:如果可能,应避免过度使用内存映像功能。
  • 使用流程池,提高效率并保持在客户机操作系统中。流程池将改进程序员端的记录工作,但是这意味着从环境切换中更快地恢复过来。
  • 在可能的时候,将机器占用的 CPU 周期返回。使用计时器和信号技术能够释放虚拟机的 CPU 周期。


应用问题的类型和减少问题的方法

输入和输出密集型应用

众多数据 I/O 将加剧 VMM 中的竞争。尝试最大限度减少数据 I/O。

网络密集型应用

使用多台虚拟机并将流量分配到多个映射到虚拟 NIC(网络接口卡)的物理 NIC 上。

磁盘密集型应用

如果应用为磁盘密集型,则应该确保虚拟机停留于存储域网络(SAN)中。数据驱动器应该保存在 SAN 上的另一个逻辑单元号(LUN——用于单独磁盘驱动器的地址)上,而不是操作系统驱动器上。如果在本地平台上运行时性能出现巨大差异,那么 SAN 上的 LUN 可以转换为原始磁盘[1]。这样将可以最大限度提升 IO 性能。

如果多台虚拟机拥有相同的 IO 属性,那么应该确保它们分布在 SAN 上不同的 LUN 上。


面向英特尔® 虚拟化技术而优化

使用 IVT 有助于降低纯软件 VMM 的成本,从而解决上述问题。

使用 IVT 将:

降低 VMM 复杂性

  • 从设计上根除“虚拟化漏洞”
  • 减少 VMM 中的具体设备知识需求
  • 增强可靠性和保护能力
  • 提供对设备 DMA 和中断的新的控制能力
  • 提升功能性
  • 为传统(未改动的)客户机操作系统提供支持
  • 支持 pass-through 访问 I/O 设备(如适用)
  • 提高性能
  • 取消到 VMM 的不必要的移植
  • 新的地址转换机制(面向 CPU 和各种设备)
  • 减少内存需求(转换后的编码、阴影表格(shadow table))


英特尔为 ISV 提供英特尔® 虚拟化技术(英特尔® VT)开发工具

架构与硬件

30 多年来,英特尔一直是芯片技术的领先企业,一如既往地引导逻辑处理器追求更高的处理器速度和性能,并致力于研究全新的材料和架构。英特尔的创新历史随着支持全新机遇的全新平台而延续。其中的最新成果——英特尔® 虚拟化技术(英特尔® VT)提供了对英特尔® 服务器和客户机平台的一系列硬件增强特性,可以显著改进虚拟化解决方案。英特尔® 虚拟化技术包括:

VT-x ——面向 IA-32 架构的英特尔® 虚拟化技术,为 IA-32 增加了两种全新的 CPU 操作模式:VMX 根操作和 VMX 非根操作。VMX 根操作设计用于 VMM,其运行方式非常类似于没有 VT-x 的 IA-32。VMX 非根操作可提供 VMM 控制,且用于支持虚拟机的其它 IA-32 环境。这两种操作模式均可支持全部 4 种优先级水平,支持客户机的软件以适当的优先级水平运行,并为 VMM 提供运行多种优先级水平的灵活性。通过 VT-x,客户机软件与 VMM 之间的每次转换都可改变线性地址空间,从而支持客户机软件充分利用其自己的地址空间。VMX 转换由 VMCS 进行管理,它驻留在物理地址空间中,而且不是线性地址空间中。

VT-i ——面向安腾架构的英特尔® 虚拟化技术,可为 VMM 提供客户机软件不能使用的虚拟地址位。VMM 可通过将客户呼叫截取到 PAL 流程(报告所部署的虚拟地址位数量),从而隐藏对该地址位的硬件支持。这样,客户机将不会期望使用这一最高位,硬件也不允许它使用,从而为 VMM 提供单独使用一半虚拟地址空间的“特权”。通过 VT-i,VMM 可以使用虚拟处理器描述符(VPD)中的虚拟化加速字段来表示客户机软件能够读取或写入中断控制寄存器,而且不需要调用每次存取的 VMM。VMM 可在发出任何虚拟中断前建立这些寄存器的数值,并且可以在客户机中断处理程序返回前对其进行修改。

VT-d ——面向 Directed I/O 的英特尔® 虚拟化技术,是接下来通往英特尔平台虚拟化全面硬件支持的关键一步。VT-d 扩展了英特尔® 虚拟化技术的发展蓝图,从目前支持 IA-32(VT-x)和英特尔® 安腾® 处理器(VT-i)虚拟化,到对 I/O 设备虚拟化的全新支持。VT-d 能够满足使用虚拟机(VM)技术的两项主要要求。首先,保护从虚拟机访问 I/O 资源不会干扰同一平台上另一台虚拟机的正常运行。VM 之间的相互隔离是实现可用性、可靠性和相互信任的基础。其次,虚拟平台必须提供在多台虚拟机之间共享 I/O 资源的能力。为每台虚拟机复制存储或网络控制器等 I/O 资源既不实用也不经济高效。VT-d I/O 设备虚拟化可以解决上述问题。

软件

英特尔与开发人员和各大高校密切合作,帮助他们创建能够更快更好地在英特尔® 多核平台上运行的个人和商业软件。根据目前的需求和趋势,英特尔相信处理器和平台架构将需要演进到包含大量内核、丰富的内建处理能力、大容量片上内存子系统和先进微内核的虚拟化、可重配置的芯片级多处理(CMP)架构。

支持与培训

英特尔软件网络论坛  为您提供了一个交流平台,在这里您可以提出有关英特尔软件开发产品、英特尔® 平台和技术以及其它主题的问题以寻求解答。英特尔的工程师会参与论坛的讨论并提供答案。另一种选择是英特尔® 软件网络支持中心  。英特尔平台上的虚拟化解决方案软件厂商包括微软*、VMware* 和 XenSource*,我们共同来维护社区网站,提供讨论空间和其它信息。

英特尔可为您提供以下培训资源: 

英特尔® 学习网络,能提供关于众多技术的网络培训和在线研讨会。

英特尔点播式网络广播,支持以点播的方式访问近期英特尔网络广播演示。

英特尔® 软件学院 主要面向软件开发受众,可提供形式灵活的课程,包括教师指导、在线学习以及定制培训。

研究与开发

目前,英特尔和 VMware 与领先的软件厂商合作,共同提供大量业经验证的虚拟化软件解决方案堆栈资源,以支持在VMware Infrastructure 3* 和采用英特尔® 酷睿™ 微体系结构、基于英特尔® 至强® 处理器的服务器平台上开展的部署工作。


总结

虚拟化不仅是 IT 规划和部署中的重要因素,它还可惠及应用开发流程。通过使用虚拟机减少非生产时间、赢得更安全的环境和灵活的新客户接触方式,从而使得 ISV 能够提升软件工程师的工作效率。

客户总是寻求能够充分利用虚拟机优势,而不是阻碍其使用的软件。通过使用上述技巧并利用英特尔® 虚拟化技术基于硬件的优势,ISV 将可在逐渐实现虚拟化的 IT 环境中拥有相当出众的优势。


资源 

英特尔 Virtualize ASAP 计划 ——该计划由英特尔、VMware和其他领先软件厂商共同开展,旨在共享专业知识、最佳实践信息、实施指南和参考配置,共同开发可在使用 VMware® Infrastructure 3© 和基于英特尔® 至强® 处理器的服务器平台的虚拟化环境中运行的应用。

英特尔® 虚拟化技术 ——英特尔® 虚拟化技术(英特尔® VT)是针对英特尔® 架构服务器和客户机平台的一系列硬件增强特性,可显著改进传统的软件虚拟化解决方案。

Microsoft Virtual PC 2007 ——不管您是在现有基础设施中已经采用 Microsoft 虚拟化技术,还是只是虚拟电脑的发烧友,现在您都可以完全免费地下载 Virtual PC 2007。

软件开发人员常见问题:英特尔®虚拟化技术 ——关于英特尔® 虚拟化技术的常见问题解答, 包括开发人员论坛,用于讨论和了解关于上述处理器的信息。

InnoTek 提供的VirtualBox 是运行在 Windows 和 32 位 Linux 主机上的 x86 虚拟化产品家族,完全支持英特尔的硬件虚拟化 VT-x。VirtualBox 可支持多种客户机操作系统,包括 Windows(NT 4.0、2000、XP、Server 2003、Vista)、DOS/Windows 3.x、Linux(2.4 和 2.6)和 OpenBSD,已于 2007 年 1 月经 GNU 通用公共许可证(GPL)许可发行。它可经远程台式机协议(RDP)远程运行虚拟机,以及通过 iSCSI 和 USB 支持远程设备。

vmdev.net 提供了一系列与 VMware 的世界级研发机构直接合作的高级虚拟化开发项目。

VMTN ——VMware 技术网络网站是一个在线开发资源中心,包括一些品牌厂商的预构建虚拟机集合,如 Oracle、BEA、Red Hat、Novell 和 MySQL。VMTN 还发布了许多技术内容,包括文章、操作培训资料、白皮书及 VMware 产品技术文档。

VMware 虚拟化开发中心是 VMware 通过社区源代码计划访问高级虚拟化开发的门户网站。该中心面向有兴趣借助 VMware 的虚拟化软件开发产品的所有软硬件厂商。成员注册后可以访问源代码、文档和其它资源。

VMWare 是工业标准系统虚拟化基础设施软件领域的一家全球领先厂商, 世界上使用同时也是世界上采用 VMware 解决方案(Virtual Lab AutomationVMware ESX)的所有厂商中规模最大的一家。这些企业可借助 VMware 解决方案简化其 IT 业务、充分利用其现有计算投资并快速响应不断变化的业务需求。

Xen 是剑桥大学开发的一款开放源代码虚拟机监视器(VMM),能够支持经过修改的操作系统在显示器顶部运行。英特尔运用英特尔® 虚拟化技术扩展了 Xen VMM 的功能,支持其能够运行未经修改的客户机操作系统。目前,32 位英特尔® 架构处理器和安腾® 架构处理器可完成上述操作。


相关读物 

如何将英特尔®虚拟化技术集成到安腾架构简介中

如何通过 VT-x 和 VT-i 解决虚拟化挑战

英特尔®虚拟化技术相关文章

面向定向 I/O 的英特尔®虚拟化技术

嵌入式和通信基础设施应用中的英特尔® 虚拟化技术

英特尔®虚拟化技术:高效处理器虚拟化的硬件支持

应用英特尔®虚拟化技术,实现新的客户机虚拟化使用模式


商标信息

须经英特尔许可,方可公开使用英特尔的商标。在有关英特尔产品的广告宣传和促销活动中对英特尔商标的适当使用需随附适当的法律声明。


作者简介

Thomas Wolfgang Burger 是 Thomas Wolfgang Burger 咨询公司的所有人。自 1978 年以来,他先后从事过多项工作,如顾问、讲师、作家、分析师及应用开发人员。如欲与他联系,请发送电子邮件至:twburger@gmail.com.

 


 

[1] 原始磁盘映像(RDM)会将整个 SAN LUN 暴露在虚拟机面前,而不是让 VMware ESX 管理程序创建 VMFS (VMware 公司的 SAN 文件系统)卷。这样(通常)会改进性能并允许使用 SAN 专用工具,从而使得虚拟机能够与 SAN 直接交互。

For more complete information about compiler optimizations, see our Optimization Notice.