VMware 自从 1998 年试水服务器虚拟化以来,已经成为虚拟化市场不争的领头羊。大量企业的广泛应用使得 VMware 的产品成为高稳定、高可靠、高性能的代名词。而 VMware 的旗舰产品 VMware VI3(Virtual Infrastructure 3) 则成为企业级数据中心首选的虚拟化平台。 而企业级数据中心对性能相当敏感,如何获得最优性能成为企业级数据中心追求的目标之一。因此,本文针对 VMware ESX Server 上的虚拟机性能优化来进行探讨,希望对企业级数据中心起到抛砖引玉的作用。 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

首先,需要从物理和虚拟两个层次研究 ESX Server 的配置, ESX Server 的配置将影响所有虚拟机的性能,因此是性能调优的首要考虑因素;性能优化的第二方面是虚拟机的配置,包括硬件配置、选项设置等 ;第三方面当然是虚拟机内 客户操作系统 的配置,该部分的性能优化实际和虚拟架构本身没有直接关系,但是却和用户的应用性能关系密切,用户反应的性能问题很多时候也可从该层次获得圆满解决。

下面分别讨论优化 VMware ESX Server 客户操作系统性能的 12 招妙计,其中招数 1 4 属于 ESX Server 服务器配置优化,招数 5 9 属于虚拟机相关配置调优,招数 10 12 属于操作系统相关的调优建议。

第一招:升级到最新版本
当然这招适用的前提是您原来运行的是 VMware ESX Server 2.x 的版本。如果您是 VMware 的新用户,你可以直接跳过这招。

VI3 VMware 最新的企业级虚拟化产品,较老版本相比有显著的性能提升, VMware 优化了 ESX Server 的好多组件,例如: VI3 里的虚拟机开始使用 PAE 内存,可以访问到 16GB 的内存,而原来的版本最多可用到的内存只有 3.6GB VI3 中的虚拟网络性能也大大改善; VMFS3 VMFS 家族的新成员,不仅仅是简单的升级版本,而是改善了性能和扩展能力;虚拟机对服务控制台的依赖降低; ESX 3.0 主机可以支持 Broadcom 的网卡数多达 20 个,而最多支持的 Intel e1000 网卡更是多达 32 个。 关于具体的硬件最大支持能力,请参考 VMware 的支持列表,可以从下载。

第二招:升级服务器的CPU和内存
这招是新购硬件时要重点考虑的。原来在购买服务器时,大多依赖于应用部门提出的要求。部署了虚拟化之后,建议用户尽可能买高端服务器,可以很方便的提升整个资源的利用率,可以提供资源的调度灵活性等。当然,所谓的高端服务器,主要是指 CPU 和内存的配置要高端。

在进行 CPU 选择时,要考虑 CPU 的效率, CPU 运作高效是虚拟架构高效的重要前提,有时候,发热过高会导致 CPU 性能急剧下降。如果可能,尽量配置多核、多颗 CPU
当然,内存的性能也很重要。 VMware 建议 ESX Server 至少配置 8GB 内存,当然×××,每台 ESX Server 最多可以支持 64GB 内存。在虚拟机配置时,尽可能避免内存过载,虽然 VMware 可以处理过载,但是内存过载会导致在内存和硬盘之间进行交换,这会严重影响系统性能。

第三招: 提升服务器的存储
提升存储性能显然可以改善很多系统的性能,如果可能的话,建议使用外部存储,这可以避免内置存储性能导致的瓶颈。

你可以安装多个磁盘控制器或尽可能多的磁盘来提高系统的性能,当然,在规划虚拟机时,也要考虑虚拟文件存放的分布问题,特别时面对高 I/O 的虚拟机。当然,具体的 I/O 配置需要根据应用进行,实际上 VMware 和我们的合作伙伴提供了很多 I/O 配置的最佳实践,你可以到 VMware 的网站下载相关的文档进行参考。

第四招: 优化服务器的网络
在虚拟环境中,尽量配置千兆以太网卡来确保性能,千兆以太网络是 VMware ESX Server 虚拟架构的推荐配置。当配置物理网卡时,速率和工作模式要和交换机端口的配置一致。 如果只有 100Mbps 的快速以太网络,建议将网卡和交换机端口的速率 / 模式设成 100/ 全双工。当配置千兆以太网络时,建议将交换机端口和网卡模式配置为自适应。

配置多块网卡时要使用 teaming 功能,将多块网卡封装称一块虚拟网卡,增加带宽的同时,提高了可靠性,当然也可以简化管理。如果配置了千兆网卡,建议使用 vmxnet e1000 虚拟网卡,尽可能不用 vlance 网卡。

第五招: 在服务器上适当分布虚拟机
VMware ESX 2.x 版本中,你可以根据自己对虚拟机负载的判定,手动将不同负载的虚拟机进行组合,分布到不同服务器,确保负载的均衡,这是一个手工的过程,并且往往很难做到准确判定。并且,由于虚拟机创建方便,可能经常会有些虚拟机创建好了而没有使用,又忘记删除不用的虚拟机。而如果不用的虚拟机也启用了,仍然占用资源。因此,要将不需要运行的虚拟机及时关闭,从而节省资源。

升级到 VI3 后,虚拟机的分布可以完全自动化, DRS 可以帮助管理员完成虚拟机负载的分布,确保每台服务器都有合理的负载运行,这可以大大降低管理员的工作负载,并且由于自动化实现,负载分布会很均匀。在配置了 DRS VI3 环境中,配置虚拟机时再也不需要指定具体的 ESX Server ,而是指定一个资源池, DRS 会自动移动虚拟机到合适的 ESX Server 上去。当虚拟机添加、关闭或删除时, DRS 会自动管理所有 ESX Server 的负载。

如果一台虚拟机没有足够的资源运行, DRS 会自动均衡资源池里的虚拟机资源来确保所有虚拟机的运行。如果资源池资源已经用光,可以简单增加 ESX Server 到该资源池,这个过程不需要停机。

VI3's DRS 功能是基于 VMotion 实现的, VMotion 可以不需停机、在线迁移一台虚拟机从一台物理服务器到另外一台物理服务器,这实际也改善了虚拟架构的性能,让不同的物理服务器资源获得最大限度利用,而不是负载不均衡的配置。

第六招: 谨慎使用远程访问控制台
有时候关闭不用的 VMware 远程控制台就会使虚拟机的性能大大改善,尽管你可能认为该操作对性能的影响很小。实际上,每个远程控制台 (VMRC) 进程都会直接消耗 ESX Server 服务控制台中宝贵的 CPU 资源。建议尽可能不要通过 VMRC 连接虚拟机, VMRC 是标准的远程访问技术,没有进行任何优化。除非需要进行某些特定的配置,必须使用 VMRC ,否则建议关闭 VMRC

为了优化性能,你可以使用第三方的远程控制软件,如: Citrix ICA 客户端、 Microsoft Terminal Service RDP Telnet SSH 等来连接远程的 ESX Server 的服务控制台。当然,有些远程访问方式并不是等同的, VNC 可能消耗的资源就比上面提到的几种访问方式大,但仍然比 VMRC 消耗的资源少。

第七招: 虚拟机CPU和内存配置优化
物理服务器上增加 CPU 数量和多余内存无疑会提高操作系统和应用的性能,在虚拟的环境中也一样。但是,多 CPU 和内存共享会增加 ESX Server 的负载,这种情况要尽量避免。 如果看到虚拟机运行很慢,要检查 CPU 的利用率,看看每颗 CPU 的空闲时间是多少,同时也要通过 VMware 管理界面检查整个系统的 CPU 利用率。

使用 VMware SMP 增加虚拟机的 CPU 数量有时候不能解决虚拟机性能问题,因为有些应用不能利用到多 CPU 的优势。在启用 SMP 之前要分析一下操作系统和应用是否能利用 SMP 来改善性能。如果应用不是多线程或多进程的,启用虚拟 SMP 只会消耗物理 CPU 资源,而不能提高虚拟机本身的性能。

要节俭的使用 Virtual SMP ,大多数情况下虚拟机运行在单虚拟 CPU 时性能最好。当然,具体情况只能分别对待,需要的话,可以测试一下各个虚拟机的情况。

如果性能差不是 CPU 导致的,需要检查内存的使用情况。最重要的就是看客户操作系统是否在使用交换内存,如果如此,就要及时纠正。有很多手段来决定是否在使用交换内存,在 Linux 客户操作系统,你可以使用 vmstat 命令查看;在 Windows 平台上,你可以使用“管理工具”下面的“性能工具”来检查每秒的内存页面数。如果某虚拟机的内存页错误很高,如: 1000 页每秒,此时可以增加其最小内存来避免频繁页交换。如果最低内存大小已经快速逼近最大内存,需要增加资源设定。

您只需要为虚拟机配置需求的内存量就可以了,为虚拟机配置过多的内存并不能改善性能,而如此配置会浪费您宝贵的内存资源。

更改虚拟机最小和最大 CPU 资源分配值是优化性能的另外一种方法。为了避免 CPU 资源争抢,配置 CPU 的最小份额为某适当值,而不是设为零。相反地,为了避免低优先级的虚拟机消耗太多的 CPU 资源,可以设置该虚拟机的最大 CPU 份额,如 50 %,从而确保其他高优先级的虚拟机能够利用到尽可能多的 CPU 资源。

当然,还可以定义每个虚拟机使用哪个 CPU ,该配置称为“ CPU 亲和”( Processor Affinity )。默认情况下这个参数是关闭的,大多数情况下这是推荐配置。只有真的必须时,才需要打开这个选项。

如果有个虚拟机特别耗费资源,你可能才需要设定 CPU 亲和来隔离这个虚拟机,来确保该虚拟机的性能。当然,这种配置也可以保护该服务器上的其他虚拟机,但是配置了 CPU 亲和的虚拟机不能进行动态 DRS ,要特别注意该配置的使用。

第八招: 删除不需要的虚拟硬件
在物理服务器增加或删除硬件都很耗时费力,物理服务器上不用的多余硬件一般都不会影响系统的性能,但是虚拟机的环境完全不同。 删除或关闭虚拟硬件时增加虚拟机性能的好办法,当然可能对性能的影响并不大,但是每个虚拟机很小的性能优化可能会大幅度改善整个服务器的性能。
如果某虚拟机不需要 CD/DVD ROM 驱动器、软驱、网卡或串口 / 并口,那么就毫不客气地删除或关闭。如果之后需要,随时可以轻松打开或添加,虚拟硬件的添加相当方便、快速。

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />
 
第九招: 升级VMware Tools
ESX Server 升级或安装补丁后,要及时更新安装在客户操作系统里的 VMware Tools 。有时,补丁包里保护对 VMware Tools 的更新,及时更新虚拟机里的 VMware Tools 是很重要的。

如果你从 VMware 的其他平台迁移过来的虚拟机,迁移后记得更新虚拟机里的 VMware Tools ,不同的 VMware 产品, VMware Tools 的版本是不一样的。

VMware Tools 里,要确保 ESX Server 主机和虚拟机的时间同步,同时运行多个不同的时钟会引起很多不必要的麻烦。当然,如果使用了 VMware Tools 来进行时间同步,就不要使用其他的时间同步方式,如 NTP 客户端等。如果您必须使用其他的时间同步机制,那么必须关闭 VMware Tools 里的时间同步。这种情况出现在 Windows 活动目录的成员虚拟机上,它们必须同域控制器进行时间同步。
 
为了确保Windows虚拟机良好的显示性能,可以在Windows虚拟机种启用Windows Display Properties->Settings->Advanced->Troubleshoot->Hardware acceleration”功能,这可以使VMRC的鼠标移动更为流畅。 具体配置见下图所示。
第十招: 优化Windows客户操作系统
对虚拟机的虚拟磁盘进行碎片整理可以有益于 I/O 性能的改善,通过第三方基于服务器的磁盘碎片整理工具可以使磁盘的组织结构更为合理。 当然,要合理运行磁盘碎片整理程序,确保在系统空闲时间进行,从而降低对生产业务的影响。

注意:如果虚拟机带回退日志运行,则这招就失灵了。

关闭有些无需的服务和后台进程,也可以虚拟机系统节约资源。当然,禁用某些服务时要小心,确保你要禁用的服务不影响你系统的运行。如果你不能确认一个服务是否是必须的,请咨询系统管理员获得确认,或者创建一个虚拟机的克隆,进行禁用服务影响的具体测试。

下面列出了一些可以在虚拟机里停用或禁用的通用 Windows 服务。当这些服务并非需要时,请停用他们。当然,这需要根据虚拟机的应用情况具体分析。

ü       Alerter

ü       Clip Book

ü       Computer Browser

ü       DHCP Client (Unless using DHCP IP addresses)

ü       Fast User Switching Compatibility (Windows XP)

ü       IMAPI CD-Burning COM Service (Windows XP)

ü       Indexing Service (Unless needed)

ü       Internet Connection Firewall (ICF) / Internet Connection Sharing

ü       IPSEC Services

ü       Messenger

ü       Network DDE

ü       Network DDE DSDM

ü       Network Location Awareness (NLA)

ü       Print Spooler (May be needed in some cases)

ü       Remote Desktop <?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />Help Session Manager

ü       Remote Registry (May be needed)

ü       Routing and Remote Access (May be needed)

ü       Smart Card

ü       SSDP Discovery Service

ü       System Restore Service (Windows XP)

ü       Telnet (May be needed)

ü       Themes

ü       Uninterruptible Power Supply

ü       Windows Audio (Windows XP)

ü       Windows Image Acquisition (WIA)

ü       Windows Time (May be needed)

ü       Wireless Zero Configuration

可以删除从未使用的 Windows 组件,以减少操作系统内存的消耗,让应用获得更多的可用内存,同时增加虚拟机的安全。

许多虚拟机并不需要 NTFS 最后访问的时间标签,可以禁用这个功能,从而可以减少一些不明显的资源消耗,获得更多的 CPU 资源。不用将这个时间标签和最后修改时间标签混淆,最后访问时间标签时文件最后一次读写的记录,而最后修改时间标签记录了文件最后一次写的时间和日期,进行备份和归档时往往需要最后修改时间标签。

一般运行在 VMware ESX Server 上的虚拟机都是服务器,因此不需要象台式机一样那么抢眼的图形显示。为此,可以禁用 Windows 虚拟机里的图形效果增强,同时禁用窗口拖动时显示的功能。

图:禁用 Windows Visual Effect 选项,获得最佳性能

 

图:禁用窗口拖动时的内容显示,获得最佳性能

大多数情况下,你不需要在 Windows 服务器桌面上使用秋叶,因此通常可以禁用 Windows 桌面墙纸。

如果你虚拟机安装的是 Windows XP ,你可能也想禁用系统恢复功能,这可以释放磁盘空间、 CPU I/O 资源。实际上 Windows XP 本身的恢复功能在虚拟机里没有任何作用,因为你可以通过 VMware 添加模式或快照功能达到更为强大的功能。

某些系统电源功能,比如休眠、硬件电源节约(停用硬盘、显示器等),在虚拟机里已经没有任何意义。一般都可以将这些功能禁用,当然也屏幕保护功能同样。

你可能希望通过屏幕保护来锁住远程终端屏幕,增加安全性。但实际上,第六条已经说明,不建议用户长期打开远程管理终端。如果你需要程序交互,只需要关闭远程终端,而不退出。如果你仍然担心安全问题,那你需要重新设计你 ESX Server 的安全设计。

第十一招: 优化Linux操作系统
当使用 Linux 客户操作系统时,建议选择 2.4 或者 2.6 内核版本。 Linux 2.6 内核的默认系统时钟是每秒 1000 次,这对于虚拟机只会增加负担,唯一可以改变该参数的方式就是重新编译,建议改成内核时钟 100 次每秒。如果你不能重新编译内核,可以使用 2.4 Linux 内核, 2.4 版本的 Linux 内核时钟默认为每秒 100 次。

一般运行在 ESX Server 上的 Linux 是服务器,可能不需要 X-Windows 。如果可能,不要安装图形桌面,只使用命令行的控制台,从而可以让 Linux 虚拟机运行的更高效。

如果你实在需要图形桌面,可以使用简化的 Windows 管理器,如 WindowMaker KDE Gnome 两个都是资源消耗大户,因此,尽量避免使用他们。

当然,也要禁用或卸载 Linux 的未用进程、服务和后台任务,包括未用的程序包,这将释放 CPU 和内存资源,让应用运行更顺畅。

第十二招: 使用智能的防病毒和备份配置
如果仅仅将虚拟机部署在开发测试环境,你可能不需要安装防病毒软件保护虚拟机 ( 除非你在测试防病毒解决方案 ) 。开发环境中的虚拟机一般都需要安装防病毒软件。

如何优化防病毒配置来保证虚拟机的性能呢?第一步就是配置病毒扫描周期,将病毒扫描安排在业务不繁忙时刻,确保病毒扫描和应用不形成资源竞争。一般情况下,每天进行一次完整病毒扫描就足够了。

服务器通常不需要实时病毒扫描,因为实时病毒扫描会影响服务器性能。如果可能,就禁用病毒实时扫描,特别是在生产的数据库、文件或 Web 服务器上,尽可能禁用实时病毒扫描功能。

另外,大多数病毒防护方案都可以去除某些类型的文件和目录能力。某些应用文件不需要病毒保护,如数据库数据文件,扫描这种类型文件可能严重影响系统性能。因此,可以在病毒扫描时去除这些文件。交换文件一般也可以跳过病毒扫描。

如果在虚拟机里安装了备份引擎,备份应该安排在系统空闲时间进行,同时也尽量和病毒扫描时间叉开。否则,会引起备份和病毒扫描之间的资源争用,导致系统性能严重下降。

建议尽量采用 VMware Virtual Infrastructure 3 引入的 VCB(VMware Consolidated Backup) 功能,通过将备份负载移到 SAN 上, VCB 减少了备份带来的虚拟机性能下降。当将 VCB 和其他的备份软件结合,就可以轻松实现无需服务器的备份( Server-Free Backup ),从而确保虚拟机可以使用生产服务器的所有资源来运行企业应用,实现应用性能最优化。