为数百台 VM Web 服务器选择 SAN 技术

为数百台 VM Web 服务器选择 SAN 技术

问题

我们在现有平台上遇到了性能问题,因此我向集体智慧寻求第二意见。到目前为止,性能问题与 IOPS 有关,而不是吞吐量。

场景

一个由 16 台主机组成的刀片中心,每台主机配备 64GB RAM。(这是一台戴尔 M1000e 和 M610s,但这可能不相关)500 台虚拟机,所有 Web 服务器(或相关的 Web 技术,如 MySQL、负载平衡器等),大约 90% 是 Linux,其余的是 Windows。虚拟机管理程序是 VMWare vSphere。我们需要提供主机 HA,因此本地存储不可用。因此,主机只需使用 SD 卡即可启动。

一些背景思考

目前,我们拥有多达 6 台主机(按照目前的增长速度,刀片中心将在一年内达到满负荷运转),并且我们正在运行 iSCSI 到带有 MD1220 的 Dell MD3220i 以进行扩展。

我们考虑过的可能的选择以及立即想到的:

  • 将虚拟机分布在 NFS 数据存储中,并运行满足给定数量虚拟机性能要求的 NFS 存储。NFS 似乎扩展起来更便宜,并且比块级存储抽象得更多一些,因此我们可以根据需要移动它。
  • 添加更多 MD3220i 控制器/目标。但我们担心这样做可能会对 VMWare 处理大量目标的方式产生负面影响。
  • 将所有磁盘从近线 SAS 换成 SSD。这应该可以完全解决 IOPS 问题,但其副作用很明显,就是会削减我们的存储容量。而且成本仍然非常高。
  • vSphere 5 有一个存储设备。我们还没有深入研究过,但它一定运行良好?

问题

你会在所有这些设备下面运行什么样的存储?它不需要扩展到另一个刀片中心,它只需要为所有这些虚拟机提供相对较好的性能。

我并不是在寻找“购买 SAN x 因为它是最好的”这样的答案。我在寻找关于各种 SAN 技术(iSCSI、FC、FCoE、InfiniBand、NFS 等)、不同类型的存储(SATA、SAS、SSD)以及处理数百台虚拟机存储的方法(整合、分离、分片等)的想法。

对此,我们绝对欢迎任何想法、链接、指南、提示等。我也很乐意听听我们已经考虑过的上述选项的想法。

非常感谢您的任何意见!

2012 年 3 月 5 日更新

到目前为止有一些非常棒的回应,非常感谢大家!

根据目前对这个问题的回答,我开始认为以下路线是可行的:

  • 将可用存储分层到 VMWare 集群,并将 VM 磁盘放置在适合其工作负载的存储上。
  • 可能利用能够自动管理将数据放置到合适存储器上的 SAN。
  • Infiniband 看起来是获取主机满负荷运行所需带宽最具成本效益的方法。

这听起来确实值得利用主要 SAN 供应商的售前服务来了解他们对此场景的看法。

我将继续考虑这个问题一段时间。与此同时,如果您有任何建议,我将不胜感激!

答案1

良好的 VMWare 存储平台的关键在于了解 VMWare 会产生什么样的负载。

  • 首先,由于您托管了许多服务器,因此工作负载通常是随机的。有许多 IO 流同时进行,并且其中很多都无法成功预缓存。
  • 其次,它是可变的。在正常操作期间,您可能会看到 70% 的随机读取,但是当您决定将虚拟机移动到新的数据存储或其他地方时,您会看到大量的 60GB 连续写入。如果您对架构不谨慎,这可能会削弱您的存储处理正常 IO 的能力。
  • 第三,您的环境的一小部分通常会产生很大一部分的存储工作负载。

为 VMWare 平台构建存储的最佳方法是从基础开始。

  • 您需要能够处理大量随机读取工作负载,这意味着更小、更快的驱动器,以及可能的 SSD。大多数现代存储系统允许您根据访问方式自动移动数据。如果您要使用 SSD,您需要确保这就是您使用它的方式。它应该作为一种逐渐减少热点的方式存在。无论您是否使用 SSD,能够将所有工作放在所有驱动器上都是有益的,因此具有某种存储池的东西将是有益的。
  • 您需要能够处理间歇性大量写入,这不太关心底层驱动器的主轴速度,但会关心控制器堆栈的效率和缓存的大小。如果您有镜像缓存(除非您愿意在控制器发生故障时返回备份,否则这不是可选的),通常,用于镜像的两个缓存之间的带宽将成为大量连续写入的瓶颈。确保您获得的任何内容都具有用于写入缓存的高速控制器(或集群)互连。尽最大努力获得具有尽可能多的端口的高速前端网络,同时保持价格合理。良好前端性能的关键是将您的存储负载放在尽可能多的前端资源上。
  • 通过为低优先级存储设置层级以及精简配置,您可以大幅降低成本。如果您的系统没有自动将单个块迁移到廉价的大型/慢速驱动器(如 7200 RPM 和 2TB 以上的近线 SAS 或 SATA),请尝试手动执行此操作。大型慢速驱动器是存档、备份、某些文件系统甚至使用率较低的服务器的绝佳目标。
  • 坚持存储是 VAAI 集成的,以便 VMWare 可以取消分配虚拟机以及数据存储中未使用的部分。

答案2

我的大型 VMWare 部署是通过 10GbE 的 NFS 和 iSCSI。这意味着服务器和存储头中都有双端口 10GbE HBA。我非常喜欢基于 ZFS 的存储。在我的案例中,它围绕着商业NexentaStor,但有些人选择自己动手。

在此背景下,基于 ZFS 的存储的主要功能是 ARC/L2ARC 缓存功能,可让您分层存储。最活跃的数据将作为第二层存储在 RAM 和 SSD 存储中。使用 10k 或 15k SAS 驱动器运行主存储池也会很有帮助。

这是分析和了解您的工作负载的另一个案例。与能够分析您的存储模式并帮助您规划的人合作。在 ZFS/NexentaStor 方面,我喜欢Pogo存储。如果没有这种洞察力,传输方法(FC、FCoE、iSCSI、NFS)可能并不重要。您是否对现有基础设施进行过任何监控?I/O 活动现在是什么样子的?

答案3

关键问题是:“瓶颈在哪里?”您提到了 IOPS,但这是否意味着您明确地将磁盘本身视为瓶颈,或者仅仅是 SAN 端口未满负荷运行,或者虚拟机的 iowait 远远超出您的预期?

如果您已明确确定磁盘是限制因素,那么切换到 NFS 或 infiniband 或其他任何方式都不会对您的性能产​​生任何影响 - 您需要 SSD(或至少是混合使用 SSD 的分层存储)或一整套更多主轴(自从世界上的步进电机生产被冲入海洋以来,这种解决方案本身最近变得更加昂贵)。

但是,如果你不能 100% 确定瓶颈实际上在哪里,那么你需要先找到它——根据其他人的猜测或多或少随机地交换存储基础设施的部分内容不会很有效(特别是考虑到实施任何更改的成本将非常昂贵)。

答案4

本地存储用完了吗?我对本地 RAID 5 的写入吞吐量非常满意 - 使用 DRBD8 镜像到我的 XEN 机器的集群伙伴...(但当然“不支持”)。

除此之外,我很确定 mySQL 是您的性能问题(我从未见过更糟糕的数据库)。尝试将其调优和/或尝试将整个数据库放入文件系统缓存中(用于读取访问)...

相关内容