当 RAID 控制器处于负载状态时,它们有多智能?
给定一个中高端控制器和机柜(即当前标准的戴尔或惠普现成套件...)、RAID 5、10gb 光纤、至少 3/4 的利用空间,以及许多小型非连续的、对文件进行大量混合读/写访问的文件(例如在文件或电子邮件服务器上可以找到的文件)...
实际实施问题:在空间大小相同的情况下,少量大型高速驱动器(即 4x 1TB 15,000 rpm)和大量较小、中速或低速驱动器(即 9x 500GB 7200 或 10,000 rpm)哪个速度更快?
理论问题:RAID 机柜/控制器是否知道驱动器磁头当前的位置以及它们需要查找的位置,以便它们可以将读取分配给磁头移动距离最短的驱动器?或者这有关系吗?
在共享存储阵列上使用大量非连续小文件时,还有哪些其他变量可以最小化响应时间并最大化吞吐量?请注意,由于数据的性质,缓存不会发挥那么大的作用。
答案1
根据您的描述,您的工作负载将大量随机访问,因此限制因素是每秒随机 IO 操作数。在 RAID-5 上,您(实际上)每物理主轴每转磁盘的 I/O 读取或写入次数将略少于一次。在这种情况下,更多的物理磁盘和更快的 RPM 意味着更高的吞吐量。
在数据请求的工作集溢出缓存的严重随机 I/O 情况下,系统的吞吐量是物理磁盘数量 x 磁盘速度的函数。磁盘越多越好,速度越快越好。
关于你的理论问题,磁盘支持一项称为“标记命令队列'。这允许控制器将 I/O 请求分派到磁盘并异步接收请求。磁盘上的内部板是知道磁盘磁头的位置,并能按照其认为最佳的顺序完成操作,从而优化操作。该算法是“电梯寻求‘
结果可以无序返回,但会用请求编号进行标记,以便 RAID 控制器知道与哪个请求匹配回复(因此称为“标记”)。SATA 有一个略有不同的协议,称为“本机命令排队' 做类似的事情。
在这种情况下,RAID 控制器不必知道磁盘头的物理位置,因为这由磁盘本身的固件管理。
在大量随机访问的工作负载下,一对 FC 环路将支持相当多的磁盘。对于视频等流式工作负载,FC 将更快地成为瓶颈。
某些控制器可以支持非常大的缓存大小。您可能想尝试估算工作集大小,看看是否真的可以升级控制器的缓存以适应它。如果您有统计学背景,您可能能够根据从请求中收集的使用情况统计数据构建蒙特卡罗模型。
提高性能的另一种可能性可能是使用一层固态磁盘进行快速存储,但这取决于您的控制器是否支持此配置。
答案2
IOPS、IOPS 和 IOPS。这些就是你需要考虑的。更快的旋转驱动器可能会获得更多的 IOPS。或者,更高的主轴数也可能获得更多的 IOPS。
有一个很好的比较Adaptec 的文章这几乎回答了完全相同的问题。
如果您考虑过某些驱动器(例如来自特定供应商的驱动器),那么您可以进行数学计算。
答案3
目前没有 1TB 15krpm 磁盘,因此这充其量只是理论上的,但我们有类似的使用场景,对于您正在查看的中级系统,我强烈建议使用 2.5 英寸 SFF SAS 磁盘,理想情况下为 15krpm。一个大小合适的阵列并不昂贵,并且对于顺序流量来说速度非常快,对于随机流量来说也非常快。看看 HP MSA 70。
答案4
一般来说,答案取决于你正在查看的系统。如果你希望系统运行速度快,我通常会查看驱动器的 IOP 并以此来决定。不过,我倾向于选择大量驱动器,而不是较少的驱动器。
在 Linux 中还可以做许多其他事情来提高性能。
通常,Raid 系统中的磁头在 Raid5/6 系统中应保持同步。通过使写入足够大,确保在写入之前不必读取某个区域。