有关SAN性能的问题,特别是EMC VNX SAN。我有大量的进程分布在同时运行的多个刀片服务器上。进程数通常约为200.每个进程从存储加载2个小文件,一个3KB,一个30KB。有数百万(20)个文件需要处理。这些进程在VMWare上的Windows Server上运行。最初设置的方式是将SAN上的1TB LUN捆绑到VMWare中的单个15TB驱动器中,然后作为网络共享从一个Windows实例共享到所有进程。这些进程同时运行,性能极差。从本质上讲,SAN同时通过Windows共享同时处理200个请求,并且SAN不能很好地处理它。我正在寻找提高绩效的建议。提前谢谢......
答案 0 :(得分:3)
对于所有的表现问题,它取决于某种程度的问题'。
当你谈到访问SAN时,会有一系列潜在的瓶颈要解开。首先,我们需要了解实际问题是什么:
从一开始就开始:
您使用的是哪种底层存储?
您是否陷入购买大型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操作'特别是在慢速磁盘上,存储是最糟糕的情况,因为没有一个聪明的优化技巧。