ITPub博客

首页 > Linux操作系统 > Linux操作系统 > RAID 5技术实现以及性能特点

RAID 5技术实现以及性能特点

原创 Linux操作系统 作者:szandrew 时间:2009-07-18 10:34:40 0 删除 编辑
RAID 5技术实现以及性能特点


RAID 5如何计算校验位?
为了简化计算,假设这个RAID5由3+1块盘构成,只有一个条带Stripe,且每行只有1bit构成。D1,D2,D3为数据盘,P1为校验盘。
校验数据的计算公式为:P1=D1 xor D2 xor D3。(xor表示异或操作)
例如第一行: 1 xor 0 = 1;1 xor 1 = 0;因此第一行的校验位就是0
例如第三行: 0 xor 0 = 0;0 xor 0 = 0;因此第三行的校验位就是0

RAID 5如何恢复数据?
很多人第一次听到RAID 5时都会感到奇怪:奇偶校验,应该只能校验“对与错”(还不是一定得,错错就得正了),怎么能够恢复数据呢?
其实,根据P1=D1 xor D2 xor D3 我们可以很容易推导出 D1 = D2 xor D3 xor P1
如果D1数据丢失,D1的第一行=0 xor 1 xor 0 = 1;果然和原有数据一致;其他数据也一样同理可得。

RAID 5只要修改数据其实只需要读写两块硬盘
现在的问题是如果要修改D1的数据岂不是要把D2,D3的数据都读一遍再去写P1了嘛?这样岂不是很没有效率?
关键在于P1还有一种方法来计算,新校验数据=(老数据 xor 新数据) xor 老校验数据;道理也非常简单,如果数据变化了,也把校验数据翻转一遍。这样只需要读取数据盘和校验盘两块硬盘即可。
比如D1的第一行的“1”变成0,P1为:1 xor 0 = 1;1 xor 0  = 1,其他数据以此类推。

RAID 5的写效率为何比较差?
写RAID 5要经过5个步骤,差不多就是“读”--“算”--“写”的过程。
  1. 读出老数据
  2. 读出校验数据
  3. 计算新校验数据
  4. 写新数据
  5. 写新校验数据
而普通硬盘的写操作当然就是有一个步骤:“写”

RAID 5可以实现并发写操作吗?
RAID5是可以实现并发操作的,因为一次IO写只需要两块硬盘的配合,比如在一个5块盘构成的RAID 5,在有些时候(看具体的数据分布)可以同时进行2个并发写操作;依此类推,10块盘构成的RAID5可以进行(10-1)mod 2=4个并发写操作。

RAID 5的“写惩罚”是什么回事?
    当RAID 5盘阵中有一块盘损坏,如果还要写数据,就要对所有的未损坏盘全部进行写操作。当然恢复一个损坏的磁盘,要把所有的数据全部读一边才能计算出损坏磁盘上的 数据。例如,一个由5块磁盘构成的RAID 5,进行修复时需要把其他四块盘上的数据全部读一遍;由10块盘构成的RAID5,进行修复时需要把其他9块盘上的数据全部读一遍。
    在5块盘构成的RAID5中,差不多恢复一个146G的磁盘需要2个小时的时间。而在这两个小时过程中一定不能发生第二块盘损坏,否则就只能是“丢数据”了。

RAID 5的并发写和可靠性的矛盾?
上面说过,RAID5中盘越多,并发能力越强;但是盘越多,可靠性就越差;同时“写惩罚”就越严重


RAID 5的适用范围
  1. RAID 5 适用于“读”操作远远多于“写”操作的系统。比如:视频服务器,文件服务器。
  2. 盘阵的Cache能够解决问题。比如,花大价钱买的磁盘阵列柜(奇怪的是,为什么舍得花大价钱买柜子,不舍得花钱多买些硬盘来组成RAID10)
  3. 有人建议最好不要用RAID5(参见反RAID5联盟:BAARF
第 一条容易理解,再此不在赘述。第二条的意思是:一次写的数据Cache完全能够装下,这样Cache到磁盘的过程就可以由盘阵来慢慢操作了。当然如果在进 行数据库备份这样的操作,盘阵Cache一般就装不下了,这样写性能就会大幅度下降。另外如果存在大量小的的随机写,性能也会大幅度下降。

RAID 5不适用的范围
    数据库的存储。

RAID5和RAID10,哪种RAID更适合你(上)
RAID5和RAID10,哪种RAID更适合你(下)

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/91771/viewspace-609558/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-07-18

  • 博文量
    18
  • 访问量
    25988