RAID控制器在负载情况下有多聪明?
给定一个中等到高端的控制器和机柜(即当前标准的戴尔或惠普现成的套件…),RAID 5,10gb光纤,至less3/4的空间利用率,顺序与重型混合读/写访问文件,如可以在文件或电子邮件服务器上find…
实际的实施问题 :给定相同数量的空间,less量大型高速驱动器(即4x 1TB 15,000 rpm)或更小数量的中等或低速驱动器(即9x 500GB 7200或更less) 10,000转)驱动器?
理论问题 :RAID机柜/控制器是否知道当前驱动器的磁头位置以及它们需要寻求的位置,以便能够以最小磁头行程距离将读取分配给磁带机? 还是有关系?
还有哪些其他variables可以最大限度地减less响应时间,并通过共享存储arrays上的大量非顺序小文件实现吞吐量最大化? 请注意,由于数据的性质,高速caching不会发挥重要作用。
从你的描述来看,你的工作负载将会是随机访问,所以限制因素是每秒IO操作。 在RAID-5上,实际上,每个物理主轴的磁盘每旋转一圈,读取或写入的次数就会less于一次I / O。 在这种情况下,更多物理磁盘和更快的RPM意味着更多的吞吐量
在数据请求的工作集溢出高速caching的严重随机I / O情况下,系统的吞吐量是物理磁盘数量x磁盘速度的函数。 磁盘越多越好,越快越好。
在您的理论问题上,这些磁盘支持一种称为“ 标记命令排队 ”的function。 这允许控制器分派I / O请求到磁盘并且asynchronous地接收请求。 磁盘上的内部电路板知道磁头的位置,并且可以通过按照其确定的最佳顺序完成操作来优化操作。 这个algorithm是“ 电梯寻找 ”
结果可以不按顺序返回,但用请求编号标记,以便RAID控制器知道哪个请求与回复匹配(因此为'tagged')。 SATA有一个稍微不同的协议,称为“ 本地命令排队 ”,做类似的事情。
在这种情况下,RAID控制器不必知道磁盘的物理位置,因为这是由磁盘本身的固件pipe理的。
在高度随机的访问工作负载上,一对FC环路将支持相当多的磁盘。 对于像video这样的stream媒体工作负载,FC将更快地成为瓶颈。
一些控制器可以支持令人印象深刻的大容量缓 你可能想尝试估计工作集的大小,看看你是否可以实际升级你的控制器的caching来适应它。 如果您有统计背景,则可以根据从请求中收集的使用情况统计信息构build一个蒙特卡洛模型。
提高性能的另一种可能性可能是使用一层固态硬盘来实现快速存储,不过这取决于您的控制器是否支持这种configuration。
IOPS,IOPS和IOPS。 这些是你需要考虑的。 您可能会从更快的旋转驱动器获得更多的IOPS。 或者,您可以从更高的主轴数量获得更多的IOPS。
Adaptec有一篇很好的比较文章可以回答几乎完全相同的问题。
如果你有一些驱动器(即从一个特定的供应商),那么你可以运行math。
目前没有1TB的15krpm磁盘,所以这是最好的理论,但是我们有类似的使用场景,对于像您所看到的中级系统,我强烈build议使用2.5“SFF SAS磁盘,理想情况下是15krpm 。一个体面的大小arrays并不是很昂贵,对于快速的stream量来说是非常快的,而且是非常快速的随机的。看一下HP MSA 70。
我已经使用Perc5 / i和6 / i控制器在戴尔服务器上进行了大量testing。 我们转售戴尔,而且当新的服务器或新磁盘configuration通过我们的大门时,我几乎不能抵挡加速testing的诱惑。 NB我使用我自己devise的磁盘testing仪进行testing。 除了几年的经验之外,我对我的testing仪没有任何特别的要求,表明它与服务器在现场的速度有很好的关联。 有关血淋淋的细节,请参阅http://ratsauce.sourceforge.net/index.html#diskthrasher 。
无论如何,我的经验表明,至less有六个磁盘RAID5,每个额外的磁盘产生一个有用的速度提高。 我已经testing了15K SAS磁盘,还有(西部数据RE2和RE3)SATA磁盘,而SATA磁盘在随机访问方面显然要慢很多,6个SATA磁盘RAID5至less和4个15K SAS磁盘一样好磁盘RAID5。 所以我会去更便宜的磁盘。
你关于磁头定位读取的问题只适用于RAID1或RAID10,我不再使用这些,所以我不能评论。 从我有点模糊的内存中,Perc 4e / Di上的RAID1比单个磁盘快得多,这表明这有一些好处。 但是差别很小,速度可能会增加10-20%,这可能是由于RAID控制器上的caching更好。
顺便说一下,如果你下载我的diskthrasher应用程序,我包含了各种磁盘configuration的大量testing结果。
JR
一般来说,答案取决于你正在看的系统。 如果你希望系统速度更快,我通常会查看IOP的驱动器是否有能力来决定。 不过,我倾向于select大量的驱动器而不是更小的驱动器。
在linux中还有很多其他的东西可以提高性能。
通常Raid系统中的磁头应该在Raid5 / 6系统中同步。 确保在写入足够大的数据之前,不必先读取一个区域。
我认为这里只有太多的变数可以作为一般性的build议。 比较驱动器的数量和速度是不现实的,因为其他因素如磁头和磁盘的数量也将起作用,所以它也取决于驱动器模型。
理想情况下,您可以select几种不同的型号来满足您的应用需求,并根据您的实际工作负载进行相互比较,然后购买符合要求的产品。
只要你记得大多数“大”的SAN有50%的开销,最终结果通常是相当快的。
最大的是NAS前端(迄今为止除了NetApp)不能处理任何严重的元数据负载,所以要小心。
Raid控制器在理论上可以知道最后期望的头部位置,并在重新sorting请求时使用它(这毕竟是电梯algorithm的传统部分),但是现在巨大的RAMcaching更容易。