RAID 0 和 RAID 1 的性能
2009年10月13日 | 标签: raid | 作者:vpsee
上个星期订购的硬盘到了,8个 Seagate 500GB SATA 2 硬盘用来升级几台 SUN 服务器,替换上面的几个 250GB 老硬盘。VPSee 一直在服务器上用的是 RAID 10 和 RAID 5,传说中 RAID 0 的 IO 性能有很大提高,VPSee 对 RAID 0 的 IO 性能向往已久,今天刚好有多余的硬盘,可以测试一下。理论上来说,RAID 0 实现了一个线性的磁盘阵列,数据被切分成块(blocks)后分别写入各自硬盘,分散了 IO 负载,IO 性能会有很大提高,如果磁盘阵列里的每个磁盘控制器都只对应一个硬盘,充分分散 IO,那么 IO 性能应该更好。今天的测试结果发现不管是硬件 RAID 0 还是软件 RAID 0 性能都很差,差得自己都不能解释,理论上双硬盘 RAID 0 的性能应该是无 RAID 0的2倍,VPSee 的实际测试数据结果刚好相反,无 RAID 0 的性能是有 RAID 0 的2倍。测试结果还显示硬件 RAID 和 软件 RAID 性能接近,这一点很好解释,测试用的是 SunFire X2100 M2 服务器,上面自带的是 Nvidia RAID,被称为 “FakeRAID”,FakeRAID 其实也是一种软件实现,和 Software RAID 一样都会消耗 CPU,其性能和 Software RAID 相似不奇怪。
10月15日更新:10月13日测试结果显示不带 RAID 0 的性能比带 RAID 0 的还好得多,原因查明是因为其中的一个硬盘有问题,没料到没拆封的新硬盘居然还会有故障,导致先前的测试环境不公平,测试的结果无法合理解释。换了硬盘重新测试硬件 RAID 0,新的测试结果显示 RAID 0 的 IO 性能有较大提高,与理论相符;软件 RAID 1 用 CPU 模拟 RAID 功能,导致系统负载(load average)保持较高状态,和理论相符。(下面的数据已经更新)
双硬盘 + 普通挂载
无 RAID 0 测试也是设置的两块硬盘,一个硬盘用来装系统,另外一个硬盘挂上去。分别用 hdparm,bonnie++,iozone 测试:
# /sbin/hdparm -Tt /dev/sda /dev/sda: Timing cached reads: 4076 MB in 2.00 seconds = 2036.86 MB/sec Timing buffered disk reads: 162 MB in 3.00 seconds = 53.97 MB/sec # ./bonnie++ Version 1.03e ------Sequential Output------ --Sequential Input- --Random- -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP bang 4G 63786 98 68561 64 33488 16 35061 80 100811 19 232.2 0 ------Sequential Create------ --------Random Create-------- -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete-- files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP 16 +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ bang,4G,63786,98,68561,64,33488,16,35061,80,100811,19,232.2,0,16,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++ # ./iozone -s 100M random random bkwd record stride KB reclen write rewrite read reread read write read rewrite read fwrite frewrite fread freread 102400 4 340155 508979 586930 599212 566258 520126 534720 590170 563886 320739 433341 528295 520245
双硬盘 + 硬件 RAID 0(FakeRaid)
分别用 hdparm,bonnie++,iozone 测试:
# /sbin/hdparm -tT /dev/mapper/nvidia_igcjceec3 /dev/mapper/nvidia_igcjceec3: Timing cached reads: 1766 MB in 2.00 seconds = 883.57 MB/sec Timing buffered disk reads: 374 MB in 3.01 seconds = 124.24 MB/sec # ./bonnie++ Version 1.03e ------Sequential Output------ --Sequential Input- --Random- -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP bang 4G 58566 92 116851 66 50132 30 27333 86 149623 35 364.4 1 ------Sequential Create------ --------Random Create-------- -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete-- files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP 16 +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ bang,4G,58566,92,116851,66,50132,30,27333,86,149623,35,364.4,1,16,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++ # ./iozone -s 100M random random bkwd record stride KB reclen write rewrite read reread read write read rewrite read fwrite frewrite fread freread 102400 4 149748 507946 937291 798155 792109 399647 852672 524171 802494 254962 1249892 1514190 1291883
双硬盘 + 软件 RAID 1(Software RAID)
分别用 hdparm,bonnie++,iozone 测试,系统负载 load average 居高不下:
# /sbin/hdparm -tT /dev/sda /dev/sda: Timing cached reads: 2236 MB in 2.00 seconds = 1118.92 MB/sec Timing buffered disk reads: 86 MB in 3.05 seconds = 28.19 MB/sec # ./bonnie++ Version 1.03e ------Sequential Output------ --Sequential Input- --Random- -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP bang 16G 4735 10 4831 2 4117 1 18128 50 48536 7 344.5 1 ------Sequential Create------ --------Random Create-------- -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete-- files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP 16 17649 47 +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ bang,16G,4735,10,4831,2,4117,1,18128,50,48536,7,344.5,1,16,17649,47,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++ # ./iozone -s 100M random random bkwd record stride KB reclen write rewrite read reread read write read rewrite read fwrite frewrite fread freread 102400 4 285771 558272 910466 1622948 1803419 919134 1026424 1561120 1785501 327527 768025 1131377 1174904
怎么不买1T的?价格差不多啊
做raid还要看raid卡参数的,有次我买了两块1T硬盘组硬raid,但我发现RAID卡的速率比硬盘还低
对啊,RAID 卡速率低也就算了,问题是关闭 RAID 后用软件 RAID 性能也很差,差一点也就算了,差了近一半,实在不知道怎么回事:(
nvidia芯片组的服务器?Sun太有才了吧……
[…] 我们如何知道系统性能是好还是差呢?这需要事先建立一个底线,如果性能监测得到的统计数据跨过这条线,我们就可以说这个系统性能差,如果数据能保持在线内我们就说性能好。建立这样底线需要知道一些理论、额外的负载测试和系统管理员多年的经验。如果自己没有多年的经验,有一个简单划底线的办法就是:把这个底线建立在自己对系统的期望上。自己期望这个系统有个什么样的性能,这是一个底线,如果没有达到这个要求就是性能差。比如,VPSee 上个月有个 RAID0 的测试,期望的测试结果应该是 RAID0 的 IO 性能比单硬盘有显著提高,底线是 RAID0 的 IO 至少要比单硬盘要好(好多少不重要,底线是至少要好),测试结果却发现 RAID0 性能还不如单硬盘,说明性能差,这个时候需要问个为什么,这往往是性能瓶颈所在,经过排查发现是原硬盘有硬件瑕疵造成性能测试结果错误。 […]