SAN性能

时间:2014-11-04 11:49:11

标签: performance san

有关SAN性能的问题,特别是EMC VNX SAN。我有大量的进程分布在同时运行的多个刀片服务器上。进程数通常约为200.每个进程从存储加载2个小文件,一个3KB,一个30KB。有数百万(20)个文件需要处理。这些进程在VMWare上的Windows Server上运行。最初设置的方式是将SAN上的1TB LUN捆绑到VMWare中的单个15TB驱动器中,然后作为网络共享从一个Windows实例共享到所有进程。这些进程同时运行,性能极差。从本质上讲,SAN同时通过Windows共享同时处理200个请求,并且SAN不能很好地处理它。我正在寻找提高绩效的建议。提前谢谢......

1 个答案:

答案 0 :(得分:3)

对于所有的表现问题,它取决于某种程度的问题'。

当你谈到访问SAN时,会有一系列潜在的瓶颈要解开。首先,我们需要了解实际问题是什么:

  • 我们是否存在吞吐量问题 - 例如持续转移或延迟?
  • 听起来我们正在考虑随机读取IO - 这是最难服务的工作负载之一,因为预测性缓存不起作用。

从一开始就开始:

  • 您使用的是哪种底层存储?

    您是否陷入购买大型SATA的陷阱,将其配置为RAID-6?我已经看到很多地方这样做,因为它看起来像便宜的太字节,没有真正做到性能的总和。 SATA驱动器开始减速,每秒约750次IO操作。如果你有大驱动器 - 例如3TB - 每兆兆字节有25个IOP。作为一个粗略的经验法则,每个驱动器200个用于FC / SAS,1500个用于SSD。

  • 你在分层吗? 存储分层是制作“三明治”的巧妙技巧。出于不同的磁盘速度。这通常有效,因为通常只有一小部分文件系统是热的' - 所以你可以将热部分放在快速磁盘上,将冷部分放在慢速磁盘上,平均性能看起来更好。这对随机IO或冷读访问不起作用。它也不适用于完整的磁盘传输 - 因为它只有10%(或任何比例)可以快速传输。其他一切都必须缓慢进行。

  • 您的阵列级别争用是什么? SAN的重点在于您聚合性能,使每个用户具有更高的峰值和更低的平均值,因为这反映了大多数工作负载。 (当你正在处理一个文档时,你需要一阵性能才能获取它,但在你再次保存之前几乎没有任何性能)。

  • 您是如何访问阵列的? 通常使用光纤通道网络访问SAN。与“真实”有很多技术差异。网络,但它们并不重要 - 但争用和带宽仍然存在。特别是在ESX中,我发现存在低估存储IO需求的趋势。 (使用一对HBA的多个VM意味着您将在ESX服务器上进行争用)。

  • 我们正在处理什么样的工作量? 存储阵列的另一个核心优势是缓存机制。它们通常具有非常大的高速缓存和一些聪明的算法,以利用工作负载模式,例如时间局部性和顺序或半顺序IO。写入负载对于阵列来说更容易处理,因为尽管RAID-6的写入惩罚可怕,但写入操作处于软时间约束(它们可以在高速缓存中排队)但是读取操作处于困难时间限制之下(读取不能完成直到获取块)。 这意味着对于真正的随机读取,您基本上根本无法缓存,这意味着您将获得最差的性能。

  • 问题肯定您的阵列?听起来像是你提供了15TB的单个虚拟机,而虚拟机正在处理IO。那是一个瓶颈。 VM为ESX服务器生成了多少IOP,以及那里的争用是什么?网络是什么样的?有多少其他虚拟机使用相同的ESX服务器,可能是争用的来源?它是通过LUN传递还是VMDK的VMFS数据存储区?

所以 - 存在一系列潜在问题,因此很难将其推回到单一来源。我能给你的只是获得良好IO性能的一般建议。

  • 快速磁盘(它们非常昂贵,但如果您需要IO,则需要花钱)。
  • 存储的最短路径(如果可以避免,请不要将VM置于中间。对于CIFS共享,NAS头可能是最佳方法。)
  • 尝试让您的工作负载可缓存 - 我知道,说起来容易做起来难。但是有了数百万个文件,如果你有一个可预测的获取模式,你的数组就会开始预取,并且它的速度会快得多。您可能会发现,如果您开始将文件存档到大块'您将获得性能(因为阵列/客户端将获取整个块,并且它将可用于下一个客户端)。

基本上是许多小型随机IO操作'特别是在慢速磁盘上,存储是最糟糕的情况,因为没有一个聪明的优化技巧。