为了使虚拟基础架构(以及你的关键应用)运行良好,其必须配置虚拟CPU、虚拟内存以及虚拟磁盘I/O。随着hypervisor各项统计功能及监控工具越来越智能,监控虚拟CPU和内存也变得简单了。但是,虚拟基础架构的存储性能监控在很大程度上还缺乏科学的方法。当然也有存储性能的科学统计分析方式,不过不同的是对于hypervisor和物理服务器环境,存储时属于外部的。因此,hypervisor(以及你的虚拟化性能监控工具)并不能洞悉存储内部发生的事情(不过这点正在发生改变)。
尽管如此,你仍可采取一些方法来改善虚拟服务器的存储性能。这里列出10项技巧可以帮你改善虚拟机的存储系统性能。
1、了解IOPS
简单来说,虚拟服务器存储调优的学问就是“进入的IOPS和流出的IOPS”。每个LUN中的驱动器每秒能够提供一定数量的I/O,服务器和存储之间的通道亦具备一定的吞吐量,而应用程序则会要求更多。虽然这个问题可以简化成“是否足够或想要更多?”但是答案并不简单。以下技巧中谈到的许多工具、技术和解决方案可以帮助你获取更多的I/O量或降低I/O需求(通常这会要求对应用的深入了解以及和应用所有者或开发者的协作)。
在虚拟基础架构中,理解虚拟机和数据存储I/O情况的最佳途径是使用专为虚拟化技术定制的性能分析工具。每样工具都可以帮你“了解你的IOPS”。
这些工具可以是内置的VMware esxtop CLI工具,vCenter中的性能制表(其中可以通过disk.numberRead.summation和disk.numberWrite.summation计数器反应IOPS),也可以是第三方提供的收费工具。由于vCenter需要根据产生IOPS的抽样时间分段统计,这种方式更适合于估算。而第三方工具(或者VMware vCenter Operation Manager)费用更高,但也更易于使用,更为智能。
注意,LUN配置和RAID类型选择可能会对I/O性能产生巨大的影响。
2、了解应用程序
虽然存储和虚拟化管理员有许多工具来炮制更多的I/O,但通常他们在降低I/O需求方面能做的事情都非常有限。同样,许多IT经理更乐于花精力在建设多如杂草的数据中心基础架构上,而完全忽略了其中运行着的应用程序。
如果你并不了解哪些应用程序是最为I/O密集的、运行在哪些虚拟机上、所承载的服务器集群以及所使用的存储都有哪些,你很难真正了解存储性能。你的应用程序对读操作敏感还是写操作?弄清这些问题可以引导你达到更高效地存储调优。通过理解这些应用程序,并且和应用所有者或开发者协同工作,你或许能够降低I/O工作负载,为公司省下一笔原本要去采购新存储阵列或增加高性能驱动器上的开销。
假如应用程序已经是虚拟化的,你可以使用上述工具来了解其通常的I/O负载和读写操作的敏感程度。假如应用程序没有虚拟化,你可能想要创建应用程序虚拟化的概念验证,在实际负载环境下测试这种虚拟应用,基于测试对生产工作负载进行建模。也可能是,假如生产应用已经使用了SAN环境,你可以在虚拟化之前通过SAN供应商提供的性能工具来测量物理服务器的I/O负载。
3、最大限度地利用现有存储
改善存储性能的方式之一是确保你使用到已有的绝大部分存储。有一部分特性你可能都没用到,也可能有些特性能够降低成本。你甚至要考虑重新配置你的存储LUN或RAID组来为虚拟基础架构获取更好的性能。I/O工作负载一直在变,而已有的LUN部署和RAID组或许已经有很长一段时间,不再适用。通过在不同的LUN中重新平衡工作负载,或者改变某一LUN的RAID类型,你也许可以为虚拟化基础架构和物理服务器改善性能。很多情况下,管理员通常会寻找一些“华而不实”的方法来改善性能,而其实是虚拟化基础架构的存储性能问题通常在传统物理服务器上。
4、VAAI或ODX
VMware的阵列集成应用接口(vStorage APIs for Array Integration,VAAI)允许vSphere hypervisor将部分存储相关的工作交给存储完成。比如,虚拟机的克隆操作可以不经过hypervisor,而在存储上直接完成。VAAI通过使用硬件加速的方式也明显降低了磁盘加锁的时间。所以要确保你的存储支持VAAI,这样才能保证虚拟基础架构能从存储交付中获益。
在Microsoft Hyper-V环境中,卸载数据传输(Offloaded Data Transfer,ODX)和VAAI相似。如果你正使用Hyper-V,你肯定想要你的存储能够支持ODX。
要检查存储是否支持VMware VAAI,你可以在VMware兼容性列表中寻找SAN和NAS的支持名称。而要获悉是否兼容支持ODX,你可以直接询问厂商其产品是否通过Microsoft ODX认证。随着时间的推移,越来越多的厂商会在其企业级存储阵列中增加VAAI和ODX的兼容认证。
5、限制快照数量
虚拟化之中最有用的功能之一就是能够对虚拟机进行快照。这种时间点的虚拟机内存和虚拟磁盘的照片在应用程序或操作系统升级出错或需要测试配置变更时十分有用。快照在虚拟化备份和虚拟磁盘变更时复制应用程序,避免宕机时也会用到。不过,过多的快照是不可取的,它会占用磁盘空间,引起备份应用性能下降以及VMotion和其它存储相关功能的性能问题。快照应当只是临时使用,然后就删除。
6、传统存储自动配置与自动精简配置
通过自动精简配置的虚拟磁盘创建虚拟机的功能十分有用。我在实验室环境中总会应用到自动精简配置。然而,在虚拟层和物理存储阵列上的自动精简配置必需慎重规划和管理。自动精简配置最大的问题就是会用光所有的存储。不过,如果你的存储不支持VAAI,自动精简配置后的虚拟磁盘需要增加容量时也会造成性能的下降。在这种情况下,你可能就需要为虚拟机磁盘使用传统的存储自动配置(建立磁盘时一次性给足),而在你的存储阵列上使用自动精简配置。
7、虚拟化认知存储
一些新的存储阵列被称为具备“虚拟化认知”的特性。这意味着存储可以和VMware vCenter通讯,这样存储就能够了解上面运行的虚拟机和SAN/NAS上虚拟机磁盘文件(VMDKs)的通讯路径。虚拟化管理员和存储管理员可以从中获益颇多。举例来说,你可以找出哪个虚拟机产生大量IOPS,或者哪个虚拟机正处于严重的存储延迟中。一些虚拟化认知的存储系统甚至提供单个的虚拟机快照和克隆。你并不必要将存储阵列替换成这样一台虚拟化认知的设备,不过未来可以考虑,或者你应当讯问目前的存储供应商以了解其是否有规划在新版本中发布类似的特性。
8、分区队列
在之前的虚拟机操作系统中并不会计算分区队列的数量,这可能会引起性能问题。然而,在Windows Vista、Windows 7和Windows 2008(或之后的版本,比如Windows 8和Windows 2012)中并没有这样的问题。一些虚拟化认知的存储可以自动化排列VMDKs而无关操作系统。但是假如你的企业使用早先的操作系统,你应当核实VMDKs是否与虚拟机文件系统(VMFS)和SAN LUN一致。
有许多工具可以帮助你验证Windows Vista和Windows 2008操作系统之前的分区队列,其中包括免费的UberAlign或商业化产品vOptimizer Pro。
9、存储I/O控制
在多台虚拟化主机共享同一存储时,需要确保存储不会被消耗大量I/O的应用独占,或者更关键的应用程序无法获取足够I/O。VMware的vSphere Storage I/O控制可以做到这点,只需要在VMFS数据存储中通过单选框激活即可。
10、存储分布式资源规划(SDRS)
就像VMware为处理器和内存进行的分布式资源规划一样,SDRS为存储提供类似的功能。SDRS会在某个数据存储处于高延迟或高磁盘空间利用率时,从一个数据存储中迁移更多的虚拟机磁盘(不需宕机)到另一个上(甚至是一台阵列到另一台)。确保你的存储可以通过VASA 的VMware vStorage APIs和vCenter通讯,这样vCenter可以识别存储的SDRS功能,以防止其存储使用过度。
假如这一切都不能奏效……
虽然存储对任何人来说都不够,不过你可能确实得花点钱来购置一台新存储系统以获取虚拟化基础架构所需的高性能。虚拟化基础架构中每块磁盘LUN上可能都有超过50个虚拟机,和之前一对一的服务器和磁盘LUN映射的I/O负载有着天壤之别。新存储除了提供更高的性能以外,你还可以获取诸如虚拟化认知存储、混合存储、VAAI、VASA等更多特性。
数据中心的虚拟化是一种全新的思维模式;随着虚拟机的整合,存储必需重新加以考量并重新配置。