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

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

 
 
 
 
 

日志

 
 

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

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

  下载LOFTER 我的照片书  |
为解决断电、网络错误等各种故障带来的成员磁盘数据不一致问题, 软RAID都带有resync算法。  经典的resync算法从头到尾按序扫描所有成员磁盘,   用某一成员磁盘的数据替换其他成员磁盘。resync的时间长、代价高是这种算法的主要缺点。为了加快磁盘的resync速度,Paul Claments等人在MD中实现了写意向位图(Write Intention Log)。

位图每一位对应一个bitmap chunk(默认为64MB), 1表示bitmap chunk为脏,0表示非脏。写意向位图按照4KB为单位分为多个位图页面,MD内存中为每个页面维护长度为4bit的页面属性, 第0个bit是BITMAP_PAGE_DIRTY,1代表脏位图页面, 即位图页面中有脏位需要写到外存。 写操作之前, 先检查chunk对应的位图位, 若为0,则先设置Chunk位图位为1, 同时设置位图页面为脏。 等到写操作完成之后,再清除Chunk位图位, 并异步持久化位图。与数据库领域的WAL原则相似, 提交写请求到成员磁盘之前,MD也要确保刷出所有脏位图页。

有了写意向位图之后, resync只需处理位图中设置为1的Chunk,同步数据量大大降低。写意向位图另外一个作用是加速磁盘临时故障处理(磁盘临时故障多出现于iSCSI/nbd等远程输出的存储设备),磁盘故障期间写意向位图不清零,作用是记录故障期间改动过的Chunk,当故障盘再次加入阵列时,写意向位图可加速同步过程。

写意向位图的缺点非常明显, 以internal位图为例, 性能降低到1/3:每个成员磁盘都额外增加了置位和清零两次位图操作。  针对性能问题, MD专门采取了一些优化措施。

第一、 批量提交写请求
每个raid设备对应一个raid1d后台线程, 该线程集中派发写请求到成员磁盘, 集中派发的好处是raid1d每次往成员磁盘发送一批写请求,降低位图写次数。

第二、 异步清零
简化的异步清零的过程如下: 
首先, MD在内存中记录每个chunk上正在进行的写操作个数pending writes,  pending writes等于0时,所有成员磁盘上的chunk是一致的
其次, 每发起一次写操作都要增加pending writes, 每完成一次写操作都要减小pending writes。当pending writes等于0时,MD将位图脏位清零, 并设置位图页面BITMAP_PAGE_PENDING属性, 表示图页面中有脏位被清零BITMAP_PAGE_PENDING属性的页面不会马上写到外存, 一般是等到该位图页面变脏时顺带着刷到外存。由于位图位只在内存清零,外存仍然为1, 此时再次写chunk,只需要内存修改位图位, 无需再次写到外存。
再次, raid1d后台线程定期扫描位图, 写出BITMAP_PAGE_PENDING属性的页面, 以控制resync 时间。

性能分析:
先来估算一下位图数据量, 假设chunk大小为64MB(默认值),采用2副本,10TB数据的位图大小为2*10TB/64MB = 3.2M比特。
修改频度高,数据量小, 位图页面无疑是系统写热点。 因此在一个不太闲的系统中, 清零几乎无代价, 再加上批量提交带来的性能提升, 位图导致的性能损失理应小于50%。

以上只是MD位图基本思想, 位图真实实现较为复杂, 例如写意向位图分为内存位图和外存位图,其中内存位图: 每个chunk对应16bit,  最高位是resync needed标志, 系统重启时根据外存位图初始化。 次高位时resync active,表示是否正在执行resync操作。最低14位是counter,counter等于pending write count加上外存位图位。
  评论这张
 
阅读(1005)| 评论(0)
推荐 转载

历史上的今天

评论

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

页脚

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