文章比较老了,但是很实用。对于要配置RAID的朋友来说值得一学。


原文:Tom’s Hardware
作者:Patrick Schmid, Achim Roos
当你增加硬盘数量的时候,磁盘阵列的性能会怎样变化?我们此次RAID评测的第一部分将给出2~8个硬盘按照RAID 0、RAID 1、RAID 0+1三种配置运行的详细测试结果。


1、RAID Testing With 2-8 Drives

  大部分资深玩家和主流用户采用RAID配置都是为了性能提升——很少是因为安全性问题。所以大多数磁盘阵列都是由2块硬盘组成的RAID 0。你考虑过当你增加硬盘之后,磁盘阵列的性能会有多少提升么?值得这么做么?什么时候磁盘阵列会遭遇瓶颈?系统管理员和骨灰级玩家们坐好了,现在就来看看Tom’s Hardware磁盘阵列终极评测。
  我们的目标很明确:用最低需求测试所有常见的RAID模式,然后逐步增加硬盘到八块。我们估计这应该是高端PC和入门级服务器能够采用的最高配置了,你很难再往机箱里塞下更多的硬盘,除非使用外部eSATA设备。而超过八个端口的专业RAID控制器也需要昂贵的多轴线缆,有时候被称作“mini SAS”,用来代替每个驱动器单独的一条线缆。
  这是第一部分,我们在此着重于RAID 0、RAID 1和RAID 0+1,而在第二部分将会讨论RAID 5和RAID 6的情况。
2、Why RAID Charts?

  我们要进行这项评测有很多原因,一方面现在有大量的应用程序要求高效率的存储性能:考虑一下那些需要稳定数据流的视频或音频应用程序,比如高清晰的HD视频或音频录制,压缩比稍有降低数据流就会立刻暴涨起来;大型网络中的文件服务器需要在同一时刻为许多客户端提供快速的更新服务;或者是数据汇集服务器,它们存储了大量的摄像头监控照片,通讯记录,以及来自粒子加速器内部传感器或者其他各种科学应用的数据。
  而除此之外,我们需要的还不仅仅是高吞吐率,有一些应用程序每秒钟就有数以百计的I/O操作。庞大的数据库无法缓存到系统内存中,这就更加依赖于存储器的I/O性能了,你可能已经想到电路交换,信用卡交易,订单和存货系统等等。
  我们的RAID评测涵盖了所有可能采用的配置情况,测试了访问时间,传输带宽,最大、平均、最小的读写速度,而且加入了对一些典型应用的I/O性能测试,例如文件服务器、WEB服务器,数据库服务器以及工作站。
 要想建立一个同时提供高I/O性能和高吞吐率的磁盘阵列很简单,你只需要并行地布置尽可能多地硬盘就行,只要控制器支持得了。主板一般有4到6个SATA端口,并且提供基本的RAID支持,而专业的RAID控制卡则可以提供8个,12个,16个甚至24个端口。不过你要记住,这样的RAID阵列只要有一个硬盘损坏就会损失它的全部数据,所以不要再这上面存放那些需要长期保存的数据。
  通常想要同时具备数据安全性和高性能的话,可以采用RAID 0+1(两组或更多组并行阵列互相镜像),或者RAID 5。后者空出来一个硬盘,将数据分配给其它的硬盘,再由控制器计算出这些数据的奇偶校验信息,存储在最初空出来的那个硬盘上。为了避免这块硬盘成为性能瓶颈,控制器会轮流选择各块硬盘用来存储校验信息(如果没有最后这条规则的话,那就是RAID 3了)。在本文(第一部分)中我们将会专注于讨论RAID 0,RAID 1和RAID 0+1。

A,B和C是同一个文件的不同段。在RAID 0模式下,控制器会在所有RAID 0驱动器上轮流选择不同大小的段(一般是8-32kB)来存储信息,这有助于提高读写性能。不过RAID 0对硬盘错误非常敏感。配置RAID 0模式需要两块以上的硬盘。


RAID 1需要两块硬盘。控制器会同时将数据写入两个驱动器,也就是说会有百分之百的数据冗余。如果一个硬盘坏掉了,另一个仍可以完好工作。换掉损坏的驱动器之后,控制器将会恢复RAID 1阵列的数据。有一些RAID控制器能够通过交替访问两块驱动器来加速数据读取。
  RAID 1是最简单最高效创建安全存储阵列的方法:你只需要两块硬盘和一个支持基本RAID模式的控制器(大部分100美元以下的主板都已经支持了)。安装Windows的时候,你需要给安装程序提供一个RAID驱动,以便它能够正确访问RAID阵列。一旦完成之后,阵列就能够完全像一个单硬盘一样工作了。如果你怕这个过程出错,我们建议你花20-40美元买一个移动硬盘盒,这样你就可以方便地换掉出错的硬盘。如果有了问题,注意,一定要确保你没把好硬盘和坏的给搞混了!
  有一些控制器还可以将数据镜像至不止一个驱动器上,这样你可以用三个甚至四个硬盘互做镜像备份。如果你真的执意要这么做的话,你最好先确保使用了非常可靠的电源供应,还要一个带有过载保护的UPS,并且你的计算机运行的操作系统足够稳定。在理想温度下运转也有助于延长硬盘的数据存储时间。如果这些还不够,你就配置个RAID 5+1,带奇偶校验地将整个RAID 5再镜像一份。只是有一点,我们感觉这样的要求十分庞大复杂,而且也远远超出了我们大多数人的需要了。
  RAID 0+1: Mirrored Stripe Set (Performance & Data Safety)

RAID 0+1首先用两块以上硬盘并行创建一个带区集(stripe set),然后连同整个结构镜像至另外一个一模一样的带区集上,我们称之为带区集镜像(mirrored stripe set)。RAID 1+0正好相反,先创建几个RAID 1镜像阵列,然后并行布置为带区集,称为驱动器镜像的带区集(stripe set made of mirrored drives)。就性能而言两种RAID没有什么区别,一般来说大部分控制器都支持RAID 0+1。
  带区集镜像提供了RAID 0的性能,同时还具备RAID 1的数据安全性,不过很显然你至少需要4块硬盘才能搭建起一个RAID 0+1阵列。我们依次尝试了4块、6块、8块硬盘的配置。

理论上在RAID 0阵列中放置多个驱动器,能够成倍地提高传输率,在现实中这个速度的提高不可能是线性的。不过每增加一个硬盘都会带来明显的性能提升,这个可以从本文的测试部分明显的看出来。
  很显然更多数目的硬盘能够提供更好的传输率和I/O性能,因为你可以将所有硬盘的I/O和吞吐量合并起来。不过,还有一些因素会影响这些性能的发挥:首先是RAID控制器,不是所有产品都能够提供稳定的高速数据传输;其次是控制器接口。目前的三种型号,PCI-X最高支持到533MB/s,PCI-E X4支持1GB/s的上行和下行数据,PCI-E X1支持上下行各250MB/s。你要确保接口带宽至少要比你期待的RAID阵列数据带宽高出50%才行,因为网络传输率可能会相当地低。
  最后,过多的硬盘数量也会影响访问时间,尤其是从文件系统中获取一些很少量的信息的时候,可能会需要从各个硬盘分别读取。如果各个硬盘都要访问,则平均访问时间将是所有单个硬盘的最大访问时间。RAID系统本身也有一套协议,大约能把12-14ms的访问时间提高到20ms左右。
  当你增加更多的I/O请求,阵列的表现就比单个硬盘要好,像NCQ(Native Command Queuing)和控制器缓存功能都可以发挥作用了。对于数据库应用,最好是选用带有大缓存的控制器来增加吞吐量,同时减少对频繁访问区段的访问时间。

我们需要一个能够支持高性能RAID的足够强力的测试系统。选用了IWill(虽然这厂已经不在了)的双Opteron主板,是因为它同时提供了PCI-X和PCI-E插槽。DK88基于nVIDIA的nForce 4芯片组,拥有所有服务器/工作站主板所需的功能:带有TCP/IP减荷的双Broadcom千兆以太网卡;基本的USB 2.0和ATi整合显卡;UltraATA/133和SATA/300接口。主板支持每个CPU配置8个DDR400插槽,允许最多64GB ECC校验内存。存储测试并不需要那么多的系统资源,因此我们只安装了2G内存,并且采用了2.2GHz的Opteron 875双核处理器,其实一颗单核CPU运行在它一半的频率上就已经足够了。

我们希望在测试中采用比较快的硬盘,但是如果把我们所有的WD1500(10000RPM) Raptor硬盘都拿来测试的话,存储评测室的其它项目就没法进行了,因此我们打算换用比较快的主流硬盘来进行测试,最终选择了价格便宜而速度不错的Samsung SpinPoint T166。我们放弃了500GB(HD501LJ)而选用320GB(HD321KJ)的原因很简单:我们可不想一测就是一个星期!尤其是c’t magazine的Harald Bögeholz开发的测试工具h2benchw在大容量硬盘上运行会非常耗时。
  三星的SpinPoint T166是目前的主流型号,转速7200RPM,带有NCQ功能和8MB缓存,SATA/300接口。下一代的SpinPoint HD102UJ容量高达1T,前几周刚发布,不过。。。

我们正在进行一项RAID控制器的评测,恰好可以在其中选择一个最适合此次RAID测试的型号。Areca的ARC-1220带有8个SATA/300接口,支持NCQ,内置256M DDR缓存和Intel IOP333 异或/奇偶校验器,接口为4倍PCI-E,卡型为半高,正适合小型机架服务器。选用它是因为操作简单,能够快速初始化RAID阵列。当然,大部分其他的8口SATA RAID控制器应该也能胜任这样的工作。
Test Setup

所有测试都采用控制器的默认设置。
6、Experiences
  所有测试都在2-8块Samsun HD321KJ硬盘的配置下分别运行,但是各个硬盘只使用了80%的容量。我们没有把每个320GB都填满,是为了使测试能够快一点运行。这能够减少测试运行的时间并确保驱动器发挥出最佳性能,因为它们不用再访问数据传输率较低的内环磁道了。
  在每一个RAID配置上完成一次测试大约要花4-6小时,包括吞吐量、访问时间、I/O测试。除了RAID 0,其他RAID模式都需要进行初始化,这一步每次要再花20分钟。
  期间我们发现了一个关于硬盘电源供应的问题:刚开始我们把所有硬盘都挂在电源供应的同一个功率轨(power rail,参见译注1)上,看起来工作良好,硬盘启动正常(译注2),我们也没有遇到什么问题。然而在测试期间,时不时会有一个硬盘脱离RAID系统。第一次出这个问题的时候我们认为是硬盘原因,第二次又归罪于RAID控制器,事实上直到我们把电源分成三个独立的功率轨之后,问题才彻底解决。

访问时间

单个的HD321KJ平均访问时间超过14ms,偶有速度更快的时候,那是因为仅仅使用了320GB中的80GB。上层协议和磁头定位时间显然是非常重要的,访问时间也会随着硬盘数量增加而提高。最高达到30毫秒的访问时间已经不能说快了,不过幸好I/O性能不不受平均访问时间的影响。
接口带宽

读取速度

这张图表非常清楚地显示了不停增加硬盘数量的时候RAID阵列性能提高趋势。当RAID 0达到5块硬盘的规模之后,读取速度就不再有明显增加了。很显然,我们的测试系统中的某些组件——RAID控制器或者主板——成了6、7、8块硬盘组成的RAID 0阵列发挥性能的瓶颈。理论上,PCI-E X4接口传输率应为1GB/s。
写入速度

写入速度明显低于前面测试的读取速度。显然,这个控制器只能承受最高275MB/s的写入速度。
I/O Performance (RAID 0)

I/O性能基本上取决于Areca的控制器,每增加一块硬盘都会线性地提高一些I/O性能。
I/O Performance (RAID 0+1)

为高性能RAID阵列创建一个理想的环境并不仅仅是把零件堆起来就OK了。我们的测试系统有着工作站的水准,并且采用了Areca的ARC-1220 SATA RAID控制器,理论上应该是一个完美的测试系统,但它最高只能达到500MB/s的接口带宽,不到400MB/s的读取速度,以及275MB/s写入速度。在这套系统上使用5块硬盘就达到了最高性能。不过我们相信换一个不同的系统,或者对RAID 0进行了优化的,这个上限还能更高。本文的第二部分将会Areca控制器实际上对RAID 5和RAID 6进行了很好的优化,只是RAID 0和RAID 1没这个福分了。
  测试系统在I/O测试中表现完美,每增加一块硬盘都会有显著的性能提升。很显然,Areca的ARC-1220非常适合要求高I/O负载的数据库应用。
  尽管数据传输率随着硬盘增加而节节攀升,但是平均访问时间却受到了反面影响。由于每块硬盘都要进行磁头定位,所以RAID阵列的访问时间很接近所有硬盘中最大的访问时间,再加上协议层的消耗。所以,磁盘阵列并不适合要求***性能的发烧PC。近期而言,使用闪存硬盘来组成阵列提高性能会更加有效。除此之外,选择WD的万转Raptor硬盘也能够减少访问时间,只是比较花钱。
译注:

  1、Power Rail - 某些
电源会采用两套独立的电压供应,以便提供大功率的稳定输出。每一组电压系统称为一个Power Rail,功率轨。

   2、硬盘的工作电流通常为1A以下,而启动时候的电流则会高达2.4-3.2A,这是由于硬盘内部的电机系统所决定的固有特性——所有电机系统都必须由远高于正常工作状态所需的电流来完成启动。因此当硬盘启动正常的时候,Toms Hardware 评测人员便会首先排除掉电源供应不足的可能——不过直到最后才发现果然还是因为电源问题。

翻译笔记:

   1、uber, ubers, uber user
A group of people that are the hardcore users of a system, and wish that system to remain exclusive to themselves.

   2、Spin-Up Time
  磁盘盘片从静止加速到全速操作状态所需要的时间。一般是几秒钟。这项参数主要取决于驱动轴的制造工艺和盘片数量。
  这个数据的重要性要看你如何使用硬盘。如果你从来都是启动电脑然后就让硬盘一直保持运转,那么对你来说这个参数实际上并不重要。不过如果你使用电源管理在一段空闲之后停转硬盘,则恢复工作的时候就要等待硬盘重新启动转速。相对于桌面PC用户,这个参数对于笔记本电脑用户而言更加有参考价值,他们会更常使用电源管理功能。

   3、head positioning - 磁头定位


转自:http://bbs.pcbeta.com/forum.php?mod=viewthread&tid=230733