我可以从个人经验中这么说,因为在我们说话的时候我正在处理这个问题。我目前作为承包商工作的地方为其 SQL Server 开发系统提供了这种类型的环境。我正在尝试在这种环境下开发一个相当适中的 BI 系统,并且确实在努力解决性能问题。
TLB 未命中和模拟 I/O 在幼稚的虚拟机上非常慢。如果您的 O/S 支持准虚拟化(这在 Windows 上仍然不是成熟的技术),那么您可以使用准虚拟化 I/O(本质上是与 VM 中的 API 挂钩的设备驱动程序)。最近版本的 Opteron 支持嵌套页表,这消除了在软件中模拟 MMU 的需要(这真的很慢)。
因此,在大型数据集上运行并执行大量 I/O(例如 ETL 进程)的应用程序会遇到虚拟化的致命弱点。如果您有像数据仓库系统这样的东西,可能会占用内存或磁盘 I/O,您应该考虑其他东西。对于一个简单的事务应用程序,它们可能没问题
从透视角度来看,我正在使用的系统在具有 4 个 2gbit F/C 链接的 SAN 上的刀片(IBM 服务器)上运行。这是一个中档 SAN。VM 有 4GB 的 RAM IIRC,现在有两个虚拟 CPU。在最好的情况下(当 SAN 安静时),这仍然只是我XW9300速度的一半,它在 1 个 U320 总线和 4GB RAM 上有 5 个 SCSI 磁盘(系统、临时数据库、日志、数据、数据)。
您的里程可能会有所不同,但我建议使用工作站系统,例如我描述的用于开发任何 I/O 繁重的工作站系统,而不是 SAN 上的虚拟服务器。除非您的资源使用要求超出了此类工具包(在这种情况下,无论如何它们都远远超出了虚拟服务器),否则这是一个更好的解决方案。硬件并不昂贵——肯定比 SAN、刀片机箱和 VMWare 许可便宜得多。SQL Server 开发者版附带 VS Pro 及更高版本。
这还有一个好处是,您的开发团队不得不从一开始就被迫处理部署——您必须想出一个易于“一键式”部署的架构。这并不像听起来那么难。 Redgate SQL Compare Pro是您的朋友。您的开发人员还将获得数据库管理的基本工作知识。
快速浏览一下惠普的网站,我得到了大约 4,600 美元的 XW8600(他们目前基于至强的型号)的标价,该型号配备四核至强芯片、4GB 内存和 1x146 和 4x73GB 15k SAS 硬盘。街头价格可能会少一些。将此与 SAN、刀片机箱和 VMware 许可的价格以及该设置的备份成本进行比较。对于备份,您可以提供带有备份的网络共享,人们可以根据需要删除压缩的数据库备份文件。
编辑:AMD 网站上的这份白皮书讨论了 VM 上的一些基准测试。从后面的基准测试来看,繁重的 I/O 和 MMU 工作负载确实破坏了 VM 性能。他们的基准测试(由于它是供应商提供的统计数据,因此需要谨慎对待)表明 OLTP 基准测试的速度损失为 3.5 倍。虽然这是供应商提供的,但应牢记:
它对幼稚的虚拟化进行基准测试,并将其与半虚拟化解决方案进行比较,而不是裸机性能。
OLTP 基准测试将具有更多随机访问 I/O 工作负载,并且将花费更多时间等待磁盘寻道。更顺序的磁盘访问模式(数据仓库查询的特征)将有更高的惩罚,并且具有大量 TLB 未命中的内存密集型操作(例如,SSAS 是一个圣经内存猪)也将招致额外的惩罚. 这意味着此类处理的减速可能比白皮书中引用的 OLTP 基准惩罚更为明显。
我们在这里看到的是 TLB 未命中和 I/O 在 VM 上非常昂贵。在 MMU 中具有半虚拟化驱动程序和硬件支持的良好架构将缓解部分或全部这些问题。但是,我认为 Windows Server 2003 根本不支持半虚拟化,而且我不确定 Windows 2008 服务器提供了何种级别的支持。根据我的经验,与相对适中的规格裸机硬件相比,在处理 ETL 流程和 SSAS 多维数据集构建时,VM 会从根本上减慢服务器的速度。