注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

网易杭研后台技术中心的博客

 
 
 
 
 

日志

 
 

MD软RAID-1故障恢复原理和优缺点  

来自peterylh   2012-12-17 23:18:21|  分类: 默认分类 |举报 |字号 订阅

  下载LOFTER 我的照片书  |
MD是linux软RAID标准实现,MD RAID-1有两种故障处理 :resync和recovery,resync处理异常宕机导致的成员磁盘数据不同步。 recovery处理新加入或者替换磁盘时的数据恢复。 

MD RAID-1故障处理的优点是故障恢复在线完成,且不太影响读写响应时间。 以resync为例: resync的同步策略是从第一个正常成员盘同步到其他成员盘,并从第一个Chunk(可以看成是RAID阵列上较长一段连续空间)开始按照扇区号增序同步。resync过程中能正常处理读写请求,读操作总是发往第一个可用的成员磁盘(可用磁盘指的是已经同步了该扇区的成员磁盘,可通过recovery_offset识别)。写操作处理则和非故障流程完全一致。读写均不需要等待resync完成, 也不需要与sheepdog一样使用读时修复机制,所以读写响应时间基本无影响。 

raid-1故障处理主要缺陷是降低可靠性。 即使是三副本raid-1, resync过程中,第一个盘仍然成为单点故障点, 降低系统可靠性。举个例子:

假设给定一个三副本RAID-1阵列, 由三个成员磁盘disk1,disk2,disk3组成,给定一个扇区sector, 初始内容为99

初始状态: disk1,disk2,disk3 = 99, 99, 99
write 100 sector
write 100 on disk2
crash
当前状态为: disk1,disk2, disk3 = 99,100,99 
restart
begin resync, (sector尚未开始同步)
read sector
disk1 return 99
disk1 failed
read sector
disk2 return 100 (只有两种选择,一种是报IO错误,还有一种是返回100,无论哪种情况都有问题)

resync整个磁盘的代价较高, raid-1采用两个策略降低同步的概率和范围。首先,超级快中设计一个in_sync标志, 没有IO时,in_sync设置为1,并写回磁盘。 写操作遇到in_sync=1时,则先修改in_sync=0并写回 磁盘之后才执行。其次,提供可选的写意向位图, 每个Chunk对应1位,含义是Chunk是否为脏。写操作之前若Chunk对应的位不为1,则先设置Chunk位图位, 写完成之后,再异步清除Chunk位图位。若Chunk对应的位已经为1,则直接执行写操作。有了写意向位图之后, resync只需处理设置为1的Chunk就可以了,同步数据量大大减小。写意向位图另外一个作用是加速磁盘临时故障处理(磁盘临时故障多出现于iSCSI等远程输出的存储设备),磁盘故障期间写意向位图不清零,作用是记录故障期间改动过的Chunk,当故障盘再次加入阵列时,写意向位图可加速同步过程。
写意向位图的缺点是增大写代价:增加了1次同步io,一次异步io。位图的开销与IO访问模式特别相关,若IO特别集中, 性能影响不大,若IO特别随机影响影响比较大。

参考资料:
1. md manual, http://linux.die.net/man/4/md, 说明了写意向位图, write-behind, resync, recovery等概念。
2. linux_软RAID阅读笔记.pdf, http://knighraincn.spaces.live.com/ ,吴素贞整理
  评论这张
 
阅读(744)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017