阵列重建技术总结.docxVIP

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
阵列重建技术总结 概述 RAID阵列的高可靠性依赖于磁盘的冗余性,当RAID阵列中一块硬盘失效后,RAID阵列数据丢失的风险会变大。此时阵列需要进行重建操作,以保证数据的完整性。阵列的重建方式包括传统重建、拷贝重建和局部重建,三种重建方式的自动灵活调配使用可使重建对业务的影响降到最低,并可大大缩短对失效磁盘重建的时间,降低RAID失效的风险,提高RAID阵列对数据的保护能力。 1.1 重建的概念 重建是将RAID LUN的状态从降级恢复成正常的过程,当一个RAID LUN中的硬盘数据因为某种原因出错或者丢失,就必须用剩余的数据根据特定类型算法计算出错或丢失数据,从而达到恢复数据及运行状态的目的。 1.2 重建流程 重建过程中,系统会对每个RAID LUN都会启动一个重建线程,同一时刻每个RAID Group上只有一个LUN重建线程在执行,其它线程处于休眠状态,当一个RAID Group上的LUN重建完成后会唤醒休眠中的线程继续重建过程,直到其上的所有LUN都重建完成。 重建的处理过程如下: 1) 管理框架收到来自命令行的重建命令或者发生引发重建的事件后,向LUN Core发起针对LUN的重建请求。 2) LUN Core针对每个条带发起重建,将重建命令下发给LUN IO。 3) LUN IO根据重建策略,读取正常磁盘的条带中每个条块的数据,通过异或运算,计算出新盘所在条块的值;或者直接从故障盘读取能读到的正常值。 4) LUN IO将计算/读取出来的数据通过IO命令下发给DISK,DISK将数据写入磁盘。 5)当完成所有条带的重建后,LUN Core更新超级块的信息。如果没有重建完,返回2继续重建。 6)每十分钟更新一次重建完成点信息到LUN DDF。 7)重建完成后,需要更新LUN的状态。 传统重建 2.1 传统重建的概念 传统重建是通过读其他数据盘计算校验值来写重建盘,重建完成后阵列重新具备冗余性。重建是以条带为单位进行的,比如A盘和B盘是数据盘,D盘是重建盘。阵列的条块是64k,重建时每次从A盘和B盘读取64k的数据,进行异或运算后写D盘。 数据盘A 1101000101011010 数据盘B 0111011100110010 重建盘D 1010011001101000 2.2 传统重建的触发条件 冗余阵列中的一个数据盘拔盘后,踢盘时间内没有回来,会踢掉源盘,如果存在合适的热备启动传统重建。 拷贝重建中,源盘本来就有读写错误记录或者遇到读错误,该错误所在条带按传统重建方式处理。 拷贝重建的源盘达到512个读错误,踢源盘转化为传统重建。 拷贝重建的源盘达到512个写错误,踢源盘转化为传统重建。 拷贝重建的源盘missing后,踢盘时间内未回来,踢掉源盘转化为传统重建。 注:踢盘时间默认为10分钟,可用命令进行更改,例如更改为5分钟的命令如下: echo 5 /sys/module/raid/parameters/lun_disk_missing_time 更改后,只存于当前内存中,重启后无效。 2.3 传统重建的读写错误处理 传统重建读写错误处理要区分CP点之前和之后,CP点之前就是已经重建过的条带,条带具有冗余性;CP点之后就是没有重建过的条带。业务在CP点之前,可能会读重建盘,业务在CP点之后,肯定不会读重建盘。下面分情况对数据盘(重建盘)的业务读写和重建读写分别进行讨论。 2.3.1对数据盘的读写 若数据盘的业务读遇到读错误,区分CP点之前和之后。CP点之前,比如A盘遇到读错误,再下发一次读,如果没读成功,会去读B盘和D盘进行异或后写A盘,整个修复过程成功,命令返回成功,不记录任何错误;如果过程中读B盘失败,则命令返回失败,A盘B盘记录读错误;如果过程中写A盘失败或者再回读A盘失败,命令返回成功,A盘记录写错误。CP点之后,遇到读错误会记录,业务会报错,记录到512个不再记录;LUN变failed,遇到读错误记录或者写错误记录,业务会报错。 若数据盘的重建读遇到读错误,重建跳过继续重建,数据盘和重建盘都记录读错误;重建读遇到读错误记录或者写错误记录,重建跳过继续重建,重建盘记录读错误。数据盘读错误达到512个,LUN变faield。 若数据盘遇到业务写错误,记录写错误,LUN状态变failed,可resume恢复。 2.3.2对重建盘的读写 若重建盘的业务读遇到读错误,区分CP点之前和之后。CP点之前,比如A盘遇到读错误,会去读B盘和D盘进行异或后写A盘,整个修复过程成功,命令返回成功,不记录任何错误;如果过程中读B盘失败,则命令返回失败,A盘B盘记录读错误;如果过程中写A盘失败或者再回读A盘失败,命令返回成功,A盘记录写错误。CP点之后,读命令不会下发到重建盘。 重建盘不论是遇到重建写错误或是业务写错误都会

文档评论(0)

添香小铺 + 关注
实名认证
服务提供商

专注于产业研究、商业计划、房地产营销策划、企业运营及咨询管理方案撰写,欢迎咨询。

1亿VIP精品文档

相关文档