RAID-5(一)基础

这些文章已经写了好几年了,可能已经过时了。 在MSN space和QQzone辗转之后,也许这些技术文章还是放在搞技术的博客中更能帮助人。于是做了一个艰难的决定,把这些文章一篇篇搬过来!绝对是原创的。

 

通常阅读RAID的代码,都是从RAID-0开始,因为RAID-0中并没有复杂的逻辑,而是仅仅是将送入RAID-0的数据重新映射并送入下层设备。我最初也是从RAID-0开始的,但是由于工作关系目前我对RAID-5更熟悉一些,还是从

我熟悉的东西开始入手,虽然RAID-5比RAID-0复杂百倍。  

好吧,那就开始进入RAID-5之旅…  

stripe, strip 与 P  
 RAID-5的I/O处理,特别是写请求,通常是以stripe为单位进行的。什么是stripe呢?三言两语还挺难表述的,画个图来说说吧。其中 D1,D2,D3,P1被称为chunk,磁盘上的数据就按照chunk组织到各个disk上。这样,这一排chunk也可以看成是一个stripe,但 这种磁盘空间组织上的stripe,还不是RAID-5中的处理单元的stripe。RAID-5中的一个stripe的宽度总是4K(1 page), 如图中的d1,d2,d3,p1组成的stripe。也就是说D1,D2,D3数据时连续的,但是d1,d2,d3数据时跳跃的。那么每一个 d1,d2,d3或p1在RAID-5中我们称之为strip。  
P(parity)表示校验数据,校验数据的计算非常简单,就是xor,也就是P=D1+D2+D3,(这里+表示xor)。

RAID-5基本原理
有了上面的概念以后,就可以简单描述RAID-5工作的基本过程。假设一个读请求送到RAID-5,那么RAID-5要做的只是找到他储存在哪个磁盘上的哪个位置并将其从磁盘中读出即可。如果一个写请求到来,假设为d2',RAID-5则要先将d2的数据从盘中读出,计算出p1'=p1+d2,然后再计算出 p1''=d2'+p1'作为新的校验数据,然后将d2'和p1''写回磁盘覆盖旧的数据。如果其中一个数据盘无法使用了,此时校验数据就能用来恢复数据。假设disk2无法访问,而此时需要读d2数据,那么RAID-5将会读出d1,d3和p1于是d2=d1+d3+p1;如果需要写d2',那么 RAID-5也会读出d1,d3和p1,于是只需计算新的p1'=d1+d2'+d3,将p1'写回即可。从中也可以看出RAID-5是以stripe作 为单位来处理的。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值