虚拟机中的 SQL Server IO 性能较差

虚拟机中的 SQL Server IO 性能较差

我有一个小型 VM ESX 3.0 实现 - 主要用于测试 Web 服务器,但是有 1 个 db 服务器的 io 性能非常差。

在 RAID 中添加额外的虚拟化磁盘是否会对性能有很大帮助?

答案1

我的经验是,无论在哪个操作系统下运行数据库,在 VMware(或其他虚拟化)下 I/O 都相当慢。较新的 VMware 版本大大改善了这种情况,但它仍然不同于裸机操作系统安装。

答案2

我不知道 ESX 3.0 有什么样的 I/O 开销,因为它是一个过时的产品。

针对 VMware vSphere (4.x) 的测试表明,只要您正确扩展设置,I/O 密集型应用程序几乎没有任何开销。

首先:VMware 中的 RAID 性能与其他所有 RAID 使用情况一样,基本都会受到影响。您不能将多个 VM 和一个 I/O 繁重的 VM 放在同一个 LUN/阵列上,并期望它会运行良好。

您可以采取几个步骤来确保您的数据库获得最佳性能。以下是最基本的步骤:

  1. 改进缓存。添加大量 RAM。与几年前相比,这很便宜。
  2. 将数据库数据和日志文件放在不同的阵列(主轴 - 如磁盘)上
  3. 尽可能隔离您的 DB VM。我听说过极端情况下,他们会运行一个带有单个 DB VM 的 ESX 服务器。不过,这是一个昂贵的选择。

我还建议您在更改配置之前找出导致 I/O 瓶颈的原因。

答案3

这是很典型的情况 - VM 用户经常忽略数据库的 IO 负载。数据库通常不适合共享存储,因为它们需要大量 IO。建议的设置是从共享存储运行 VM,但实际数据库使用的磁盘来自单独的专用 LUN。

与其说 VmWare 在 IO 方面很差,不如说数据库经常有特殊需求。例如(Hyper-V,但适用相同的原则):* 我运行一个相当大的 Hyper-V 服务器,有 32GB RAM。* 操作系统 + 虚拟映像运行 4 个磁盘 RAID 10,Velociraptor。性能还不错……除了:* 在那里运行的 SQL Server 在 RAID 10 中还有另外 6 个(!)磁盘用于存储数据,以满足专用 IO 负载要求,另外还有用于记录的磁盘。

根本没有真正的方法可以正确地将所有数据置于同一个 RAID 下。数据库通常喜欢 IO 性能 - 而共享设置无法保证这些。

因此,我的建议是:为实际数据准备一些单独的光盘。

相关内容