磁盘阵列的原理及相关知识( 五 )


RAID 4
RAID 4也使用一个校验磁盘,但和RAID 3不一样,RAID 4的方式是RAID 0加上一个校验磁盘,如下图:磁盘0 磁盘1 磁盘2 磁盘3 磁盘4
A0 A1 A2 A3 P1
A4 A5 A6 A7 P2
… … … … …
4N-3 4N-2 4N-1 4N PNRAID 4是以扇区作数据分段,各磁盘相同位置的分段形成一个校验磁盘分段(parity block),放在校验磁盘 。这种方式可在不同的磁盘平行执行不同的读取命令,大幅提高磁盘阵列的读取性能;但写入数据时,因受限于校验磁盘,同一时间只能作一次,启动所有磁盘读取同一校验分段的所有数据分段,与要写入的数据做好校验计算再写入 。RAID 4在读取数据时,有和RAID 0同样好的性能,但校验盘则形成写入时的瓶颈,因为如果写入少于一个整体分段的话,需要一个RMW cycle (Read-Modify-Write),譬如写入一个数据分段,控制器首先把分段的数据和该分段的校验验值读出来,然后用校验值减去分段的旧数据,再加上新的数据,并计算出新的校验值,最后才把数据及校验值写入 。因为数据及校验值都要先读出来再写入,这就增加了磁盘的转动,读取时延(Latency)的时间 。
但如果写入是一个整体分段(如A0)会有较好的性能,因为旧的数据不必读出来,控制器直接就利用要写入的数据计算新的校验值并直接写入所有的磁盘 。OAraid?;磁盘阵列控制器是采用这种方式,所以OAraid?;磁盘阵列的RAID 4非常适于大型文件的应用 。
RAID 4如果校验磁盘故障,就变成RAID 0,读取的性能没有影响,但写入的性能提升,因为不用计算校验值 。但如果其中一个数据盘故障,不管是对故障盘的读取或写入都必须把同一所有的分段读出来以恢复故障盘的数据,这使得RAID 4性能降低 。
RAID 5
RAID 5和RAID 4相似,但避免了RAID 4的瓶颈,方法是不用校验磁盘而将校验数据以循环的方式放在每一个磁盘中,如下图:磁盘0 磁盘1 磁盘2 磁盘3 磁盘4
P1 A0 A1 A2 A3
A4 P2 A5 A6 A7
… … … … …
4N-3 4N-2 4N-1 PN 4N磁盘阵列的第一个磁盘分段是校验值,第二个磁盘至后一个磁盘再折回第一个磁盘的分段是数据,然后第二磁盘的分段是校验值,从第三个磁盘再折回第二个磁盘的分段是数据,以此类推,直到放完为止 。图中的第一个P1是由A0,A1,…,A3计算出来,第二个校验值分段,P2是A4,A5,…,A7计算出来,也就是校验值是由各磁盘同一位置的分段的数据所计算出来 。这种方式能大幅增加小档案的存取性能,不但可同时读取,甚至有可能同时执行多个写入的动作,如可写入数据至磁盘1而其校验值分段在磁盘2,同时写入数据到磁盘4而其校验值分段在磁盘1,这对联机交易处理(OPTP, On-Line Transaction Processing)如银行系统、金融、股市等,或大型数据库的处理提供了最佳的解决方案(solution),因为这些应用的每一笔数据量小,磁盘输入输出频繁而且必须容错 。

(接上)事实上,RAID 5的性能并无如此理想,因为多数数据的修改,都要把同一校验值分段的所有数据读出来修改后,做完校验计算再写回去,也就是RMW cycle,所以RAID 5和RAID 4在写入上有相同的难题,但因RAID 5校验值分散在各个盘的不同位置,相当程度地分散了负载,故有较好的性能,尤其是对小型数据 。正因为牵一发而动全身,所以:
R:N(可同时读取所有磁盘)
W:1(可同时写入磁盘数)
S:N-1(利用率)
RAID 5的控制比较复杂,尤其是利用硬件对磁盘阵列的控制,因为这种方式的应用比其他的RAID level要掌握更多的事情,有更多的输入输出需求,既要速度快,又要处理数据,计算校验值,做错误校正等,所以价格较高;其应用最好是OLTP,至于用于大型文件,不见得有最佳的性能 。

推荐阅读