为数百台虚拟机Web服务器selectSAN技术

问题

我们在一个现有的平台上有一个性能问题,所以我现在正在转向蜂巢式的思想,对此有第二个意见。 性能问题到目前为止与IOPS而不是吞吐量有关。

情景

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

一点背景思考

目前我们最多有6台主机(刀片服务器中心将会在目前的增长时间内处于满负荷状态),而且我们正在运行iSCSI到戴尔MD3220i w / MD1220进行扩展。

我们考虑过的可能的select,以及与他们一起的直接想法:

  • 通过NFS数据存储区分散虚拟机,并运行满足性能要求的NFS存储器,以满足给定数量的虚拟机。 NFS看起来比较便宜,并且被抽象得比块级存储更多,所以我们可以根据需要移动它。
  • 添加更多的MD3220i控制器/目标。 我们担心这样做可能会对VMWare处理大量目标产生负面影响。
  • 将所有磁盘从Nearline SAS交换到SSD。 这应该完全解决IOPS问题,但是降低存储容量有明显的副作用。 而且它还是非常昂贵的。
  • vSphere 5有一个存储设备。 我们还没有研究这么多,但它一定能运作好吗?

问题

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

我不是在寻找“购买SAN x,因为这是最好的”答案。 我正在寻找关于各种SAN技术(iSCSI,FC,FCoE,InfiniBand,NFS等),不同types的存储(SATA,SAS,SSD)以及处理100多个虚拟机的存储方法的思考(合并,分离,Sharding等)。

绝对的任何想法,链接,指南,指针等在这方面是值得欢迎的。 我也很想听听我们已经考虑过的上述选项的想法。

非常感谢任何input!

更新3月5日'12

迄今为止的一些精彩回应,非常感谢大家!

到目前为止,对这个问题的回答,我开始认为以下路线是:

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

这听起来似乎是值得使用主要SAN供应商的售前服务来获得他们的scheme。

我将继续考虑这个问题一段时间。 同时,更多的build议感激地收到!

一个好的VMWare存储平台的关键是了解VMWare产生的负载。

  • 首先,由于您托pipe了大量服务器,因此工作负载通常是随机的。 有很多IOstream同时进行,其中不能成功预caching。
  • 其次,它是可变的。 在正常的操作过程中,您可能会看到70%的随机读取,但是当您决定将虚拟机移动到新的数据存储区或其他位置时,您将看到大量的60GB顺序写入。 如果您对体系结构不太在意,则可能会削弱存储处理正常IO的能力。
  • 第三,你的环境的一小部分通常会产生大部分的存储工作量。

处理VMWare平台的最佳存储方式是从基础开始。

  • 您需要能够为大型随机读取工作负载提供服务,这意味着更小的更快的驱动器以及可能的SSD。 大多数现代存储系统允许您根据访问方式自动移动数据。 如果你打算使用SSD,你想确保这是你如何使用它。 它应该在那里逐渐减less热点。 无论您是否使用SSD,将所有的工作放在所有驱动器上是有好处的,因此使用某种types的存储池是有好处的。
  • 您需要能够处理间歇性的大写操作,这并不关心底层驱动器的主轴速度,而是关心控制器堆栈的效率和高速caching的大小。 如果您有镜像caching(除非您在控制器出现故障时愿意返回备份),则用于镜像的两个caching之间的带宽通常会成为大量顺序写入的瓶颈。 确保你得到的任何东西都有一个高速控制器(或集群)互连来进行写入caching。 尽你所能,以尽可能多的端口获得高速前端networking,同时保持现实的价格。 良好前端性能的关键是尽可能多地将存储负载放在尽可能多的前端资源上。
  • 您可以通过build立低优先级存储层以及精简configuration来严格降低成本。 如果您的系统没有自动将单个块迁移到便宜的大型/慢速驱动器(如7200 RPM和2TB +尺寸的近线SAS或SATA),请尝试手动执行。 大型慢速磁带机是档案,备份,某些文件系统甚至服务器使用率低的优秀目标。
  • 坚持认为存储是VAAI集成,以便VMWare可以取消分配虚拟机的未使用部分以及数据存储。

我的大型VMWare部署是10GbE以上的NFS和iSCSI。 这意味着服务器中的双端口10GbE HBA以及存储磁头。 我是基于ZFS存储的粉丝。 在我的情况下,它是围绕商业NexentaStor ,但一些select滚动自己的。

在这种情况下,基于ZFS的存储的主要function是ARC / L2ARCcachingfunction,允许您分层存储。 最活跃的数据将在RAM和SSD存储中成为第二层。 使用10k或15k SAS驱动器运行主存储池也是有益的。

这是分析和了解您的工作量的另一个案例。 与可以分析存储模式并帮助您计划的人一起工作。 在ZFS / NexentaStor方面,我喜欢PogoStorage 。 没有这种洞察力,传输方式(FC,FCoE,iSCSI,NFS)可能就不重要了。 你有任何监视你现有的基础设施? I / O活动现在是什么样的?

关键问题是:“瓶颈在哪里?” 你提到IOPS,但是这是否意味着你确定磁盘本身是瓶颈,还是仅仅是SAN端口没有运行,或者虚拟机比你想的要多得多?

如果您已经确定磁盘是限制因素,那么切换到NFS或者infiniband或者其他什么都不会影响您的性能 – 您需要SSD(或者至less将固态硬盘分层存储)或者整包更多锭子(一种解决scheme,自从世界步进电机生产冲入海洋以来,其本身已经变得更加昂贵)。

但是,如果您不能100%确定实际存在瓶颈的位置,则需要首先find – 根据其他人的猜测,或多或less地随意更换部分存储基础架构非常有效(特别是考虑到将要实施的变化是多么昂贵)。

如果你想要iscsi或nfs,那么最低限度你会想要几个10 / 40GB的端口或infiniband这是迄今为止最便宜的select,但本地存储解决schemeinfiniband似乎是有限的。 问题将是bladecenter的模块有什么select,通常是8gb fc或10 \ 1gbe,也可能是infiniband。 请注意,infiniband可以与nfs一起使用,并且在性能\价格方面没有任何结果。 如果刀片中心支持qdr infiniband,我会通过nfs与qdr infiniband tca进行某种types的linux主机。 这是一个很好的链接,描述这个http://www.zfsbuild.com/2010/04/15/why-we-chose-infiniband-teady-of-10gige

但如果bladecenter可以支持qdr infiniband,你可以买得起原生infiniband,那就是你应该select的解决scheme。

目前,你可以得到40gb的开关更便宜(这是一个奇怪的想法),然后10gbe开关,但我怀疑你是刀片中心将支持。

本地存储已经结束了 我对本地RAID 5的写吞吐量感到非常满意 – 与DRBD8镜像到我的XEN-machine的集群伙伴(当然,这是“不支持”的)。

除此之外,我很确定mySQL是你的性能问题(我从来没有看到过更糟糕的数据库)。 尝试调整它,并/或尝试将整个数据库放入文件系统caching(读取访问)…