欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    阵列重建技术总结.docx

    • 资源ID:3758016       资源大小:62.82KB        全文页数:11页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    阵列重建技术总结.docx

    1、阵列重建技术总结阵列重建技术总结1.概述 RAID阵列的高可靠性依赖于磁盘的冗余性,当RAID阵列中一块硬盘失效后,RAID阵列数据丢失的风险会变大。此时阵列需要进行重建操作,以保证数据的完整性。阵列的重建方式包括传统重建、拷贝重建和局部重建,三种重建方式的自动灵活调配使用可使重建对业务的影响降到最低,并可大大缩短对失效磁盘重建的时间,降低RAID失效的风险,提高RAID阵列对数据的保护能力。1.1 重建的概念重建是将RAID LUN的状态从降级恢复成正常的过程,当一个RAID LUN中的硬盘数据因为某种原因出错或者丢失,就必须用剩余的数据根据特定类型算法计算出错或丢失数据,从而达到恢复数据及

    2、运行状态的目的。1.2 重建流程重建过程中,系统会对每个RAID LUN都会启动一个重建线程,同一时刻每个RAID Group上只有一个LUN重建线程在执行,其它线程处于休眠状态,当一个RAID Group上的LUN重建完成后会唤醒休眠中的线程继续重建过程,直到其上的所有LUN都重建完成。重建的处理过程如下:1) 管理框架收到来自命令行的重建命令或者发生引发重建的事件后,向LUN Core发起针对LUN的重建请求。2) LUN Core针对每个条带发起重建,将重建命令下发给LUN IO。3) LUN IO根据重建策略,读取正常磁盘的条带中每个条块的数据,通过异或运算,计算出新盘所在条块的值;或

    3、者直接从故障盘读取能读到的正常值。4) LUN IO将计算/读取出来的数据通过IO命令下发给DISK,DISK将数据写入磁盘。5)当完成所有条带的重建后,LUN Core更新超级块的信息。如果没有重建完,返回2继续重建。6)每十分钟更新一次重建完成点信息到LUN DDF。7)重建完成后,需要更新LUN的状态。2.传统重建2.1 传统重建的概念传统重建是通过读其他数据盘计算校验值来写重建盘,重建完成后阵列重新具备冗余性。重建是以条带为单位进行的,比如A盘和B盘是数据盘,D盘是重建盘。阵列的条块是64k,重建时每次从A盘和B盘读取64k的数据,进行异或运算后写D盘。数据盘A110100*0数据盘B

    4、0111011100110010重建盘D10100110011010002.2 传统重建的触发条件1)冗余阵列中的一个数据盘拔盘后,踢盘时间内没有回来,会踢掉源盘,如果存在合适的热备启动传统重建。2)拷贝重建中,源盘本来就有读写错误记录或者遇到读错误,该错误所在条带按传统重建方式处理。3)拷贝重建的源盘达到512个读错误,踢源盘转化为传统重建。4)拷贝重建的源盘达到512个写错误,踢源盘转化为传统重建。5)拷贝重建的源盘missing后,踢盘时间内未回来,踢掉源盘转化为传统重建。注:踢盘时间默认为10分钟,可用命令进行更改,例如更改为5分钟的命令如下:echo 5 /sys/module/ra

    5、id/parameters/lun_disk_missing_time更改后,只存于当前内存中,重启后无效。2.3 传统重建的读写错误处理传统重建读写错误处理要区分CP点之前和之后,CP点之前就是已经重建过的条带,条带具有冗余性;CP点之后就是没有重建过的条带。业务在CP点之前,可能会读重建盘,业务在CP点之后,肯定不会读重建盘。下面分情况对数据盘(重建盘)的业务读写和重建读写分别进行讨论。2.3.1对数据盘的读写若数据盘的业务读遇到读错误,区分CP点之前和之后。CP点之前,比如A盘遇到读错误,再下发一次读,如果没读成功,会去读B盘和D盘进行异或后写A盘,整个修复过程成功,命令返回成功,不记录

    6、任何错误;如果过程中读B盘失败,则命令返回失败,A盘B盘记录读错误;如果过程中写A盘失败或者再回读A盘失败,命令返回成功,A盘记录写错误。CP点之后,遇到读错误会记录,业务会报错,记录到512个不再记录;LUN变failed,遇到读错误记录或者写错误记录,业务会报错。若数据盘的重建读遇到读错误,重建跳过继续重建,数据盘和重建盘都记录读错误;重建读遇到读错误记录或者写错误记录,重建跳过继续重建,重建盘记录读错误。数据盘读错误达到512个,LUN变faield。若数据盘遇到业务写错误,记录写错误,LUN状态变failed,可resume恢复。2.3.2对重建盘的读写若重建盘的业务读遇到读错误,区分

    7、CP点之前和之后。CP点之前,比如A盘遇到读错误,会去读B盘和D盘进行异或后写A盘,整个修复过程成功,命令返回成功,不记录任何错误;如果过程中读B盘失败,则命令返回失败,A盘B盘记录读错误;如果过程中写A盘失败或者再回读A盘失败,命令返回成功,A盘记录写错误。CP点之后,读命令不会下发到重建盘。重建盘不论是遇到重建写错误或是业务写错误都会踢盘。2.4 传统重建的磁盘上下电处理 不同情况的上下电处理如下表所示:RAID LUN状态业务流量是否需要局部重建数据盘b类错误下电重建暂停,保持原来的降级状态,磁盘上电后,接着原来的进度重建。不会报错,向上层返回busy,磁盘上电后流量可正常下发。不需要数

    8、据盘非b类错误下电重建暂停,变failed状态,磁盘上电后,接着原来的进度重建。会报错,磁盘上电后流量可正常下发不需要重建盘b类错误下电重建暂停,保持降级状态,磁盘上电后,局部重建完成后可接着原来的进度重建。流量正常如果下电期间有写业务需要进行局部重建重建盘非b类错误下电重建暂停,保持降级状态,磁盘上电后,局部重建完成后可接着原来的进度重建。流量正常如果下电期间有写业务需要进行局部重建3.拷贝重建3.1 拷贝重建的概念原normal状态的RAID LUN,由于读写错误导致RAID LUN变为degraded状态,无missing盘且存在热备盘时会加盘进行重建,即拷贝重建。重建过程中,直接从源盘

    9、(故障数据盘)拷贝数据到重建盘。当源盘数据无法读取时,该条带按传统重建方式重建。在重建完成后踢掉源盘,RAID LUN变为normal状态。一般情况下拷贝重建比传统重建快一点,但如果源盘读很慢的时候,拷贝重建方式可能比传统重建还慢;从下图可以看出,拷贝重建会比传统重建少很多次的读和异或计算;在RAID LUN盘数越多的情况下,拷贝重建效率越明显。3.2拷贝重建的触发条件1) Normal RAID LUN(已同步、同步中和未同步)中成员磁盘遇到写错误会加盘拷贝重建。2)传统重建中的RAID LUN,在数据盘遇到写错误后会failed,resume起来传统重建完成后加盘拷贝重建。3)拷贝重建中的

    10、RAID LUN数据盘在冗余条带遇到写错误,待拷贝重建完成后加盘继续拷贝重建;在非冗余条带遇到写错误,resume起来拷贝重建完成后加盘拷贝重建。4)局部重建、写异常恢复中的RAID LUN,在数据盘遇到写错误会failed,resume起来清除局部重建记录和写异常记录后加盘拷贝重建。5)超级块错误或smart检测故障时会触发拷贝重建,故障盘记录写错误,重建完成后踢出故障磁盘并标记failed。6)在进行坏块替换时,替换失败会触发拷贝重建。7)开启坏块替换,DDF区写错误会触发拷贝重建。8)开启坏块替换,在替换记录达到8190后会触发拷贝重建。3.3 拷贝重建中磁盘的读写错误处理拷贝重建过程遵

    11、循双写双不写原则,即在有业务或局部重建写流量时,源盘与重建盘均在位,会对两块盘都进行写入。若有一块盘missing,会停止对两块磁盘的写入,防止数据不一致。 3.3.1重建读写错误处理重建读时源盘遇到读错误,读错误会增加,该条带用传统重建方式写重建盘;当读错误增加至512个时,踢掉源盘,从0开始传统重建。当用传统重建方式写重建盘时,读数据盘失败,数据盘和重建盘均记录读错误。重建写时重建盘遇到写错误,会踢掉重建盘,寻找合适的空白盘加入重新开始拷贝重建。3.3.2业务读写错误处理业务读时只会读数据盘和源盘,不会读重建盘。若是在冗余条带,遇到读错误时会进行写修复。若是在非冗余条带,遇到读错误不影响R

    12、AID LUN状态,读错误记录增加。业务写时遵循双写双不写原则,业务写错误有以下情况:1)当源盘发生写错误,写错误记录增加,RAID LUN状态不变,磁盘列表不变。2)当重建盘发生写错误,RAID LUN会踢掉重建盘,加入空白盘重新拷贝重建。3)当数据盘在冗余条带发生写错误,RAID LUN状态不变,继续拷贝重建,在拷贝重建完成后再加盘拷贝重建;如在非冗余条带发生写错误,RAID LUN会failed。拷贝重建前RAID LUN如未同步,在拷贝重建过程中查询NV-RAM是不会有写异常记录的;如拷贝重建前RAID LUN有同步过,在拷贝重建过程中,落在已同步过的条带上的写流量会产生写异常记录;即

    13、写异常记录跟拷贝重建的CP点无关,只跟同步和传统重建的CP点有关。注:以上提到的读写错误数如无说明均指少于512个错误,拷贝重建过程中关于512读写错误情况如下:1)源盘有512个读错误或写错误会踢盘从0开始传统重建2)重建盘有512个读错误会踢盘重新加盘拷贝重建3)数据盘有512个读错误或写错误RAID LUN变failed3.4 拷贝重建中的拔盘处理1)数据盘数达到数据冗余性的拷贝重建RAID LUN拔一块盘的处理情况:a) 源盘:超过踢盘时间后,踢盘变为传统重建,原拷贝重建盘变为传统重建盘,重建CP保持继续。b)重建盘:超过踢盘时间后,先踢盘加新盘拷贝重建。c)其它数据盘:RAID LU

    14、N failed,十分钟内自动resume为degraded,先踢盘继续拷贝重建,拷贝重建完成后加新盘进行传统重建。2 ) 数据盘达到数据完整性的拷贝重建RAID LUN拔一块盘的处理情况:a)源盘:RAID LUN failed,不能自动resume 。b)重建盘: 超过踢盘时间后,先踢missing盘加新盘拷贝重建。c)其它数据盘:RAID LUN failed,不能自动resume。4.局部重建4.1 局部重建的概念局部重建指的是一块磁盘离线(包括手动拔插、SAS拔插、B类错误上下电、链路不稳等各种情况导致的离线),且该RAID LUN上存在业务写流量,此时系统会记录写入数据涉及的条带,

    15、并标记该RAID LUN中离线磁盘为Missing状态,等磁盘重新上线后且能回到RAID LUN中,则重建这段时间内写入的条带,达到重新利用该硬盘的目的。避免采用全盘重建,缩短重建时间。局部重建完成后或者硬盘无法回到RAID LUN中,将清除记录的条带信息。局部重建只针对具有冗余性的RAID LUN。包括normal状态的阵列各个数据盘、重构重建的重键盘、拷贝重建的重键盘和被重建盘都会发生局部重建。4.2 局部重建的触发条件1) Normal状态下RAID LUN的磁盘离线(包括手动拔插磁盘、SAS拔插、B类错误上下电、链路不稳情况导致的磁盘离线),而此时RAID LUN有上层业务写入(包括业

    16、务数据写入,逻辑资源LV创建)。磁盘在磁盘丢失踢盘时间之内上线,此时RAID LUN会对磁盘进行局部重建。2) RAID LUN处于传统重建过程中重建盘发生磁盘离线,而此时RAID LUN有上层业务写入,并且磁盘丢失踢盘时间之内上线,会对重建盘进行局部重建。3) RAID LUN处于拷贝重建过程中重建盘或被重建盘发生磁盘离线,而此时RAID LUN有上层业务写入,并且磁盘丢失踢盘时间之内上线,会对重建盘和被重建盘进行局部重建。4.3 局部重建的读写错误处理4.3.1 重建盘读错误局部重建过程中,重建盘不会有读命令。采用读其他数据盘数据进行异或运算得出。4.3.2 重建盘写错误1 ) norma

    17、l态下RAID LUN发生局部重建遇到重建盘写错误,先完成局部重建,后触发拷贝重建。达到512个写错误,直接踢盘进行传统重建。2) 传统重建下发生局部重建,遇到重建盘写错误,直接踢掉重建盘,重新加盘进行传统重建。3) 拷贝重建下发生的局部重建,遇到重建盘写错误。踢掉重建盘,加盘先进行局部重建,重建完成之后拷贝重建。4.3.3数据盘读错误1)normal状态下RAID LUN发生局部重建,数据盘达到512个读错误,LUN变failed,会自动resume清除局部重建记录,加盘传统重建,但是此时会发现原局部重建盘也有512个读错误,无法传统重建,RAID LUN变failed,resume会失败。

    18、2)拷贝重建状态发生局部重建,数据盘达到512个读错误,RAID LUN变failed,resume会失败。(数据盘,重建盘,源盘都会有512个读错误)3)传统重建状态发生局部重建,数据盘512个读错误,RAID LUN变failed,遇到resume失败。(未达到512个之前的读错误,记录DDF)。4.3.4数据盘写错误1)normal态下RAID LUN发生的局部重建,数据盘遇到写错误,RAID LUN变failed,遇到resume后,删除局部重建记录,局部重建盘恢复为normal,加盘对数据盘进行拷贝重建。(数据盘的写错误可能发生在冗余条带,也可能发生在还未完成重建的不冗余条带,我司软

    19、件不判断是否为冗余条带写错误,直接failed)2)拷贝重建下发生局部重建,数据盘遇到写错误,记录错误,局部重建完之后,继续原来拷贝重建,完成后再加盘对数据盘进行拷贝重建;如果遇到512个写错误,RAID LUN会failed。遇到resume后,删除局部重建记录,踢掉有512个错误的数据盘和重建盘,加盘进行传统重建,完成后再加盘进行拷贝重建。3)传统重建下发生的局部重建,遇到数据盘写错误, RAID LUN变failed,遇到resume删除局部重建记录,继续从原进度开始传统重建。重建完成后再加盘对出现写错误的数据盘拷贝重建。(此局部重建过程有数据盘写错误RAID LUN就会变failed,

    20、即局部重建过程不会出现数据盘512个写错误。)4)拷贝重建下发生局部重建,重建过程中源盘发生写错误,错误记录,局部重建完成之后,继续拷贝重建。写错误达到512个,踢盘,继续局部重建,重建完成之后,对重建盘从0开始传统重建。4.4 局部重建的磁盘离线处理4.4.1 重建盘离线1) normal态下RAID LUN发生磁盘离线导致的局部重建,重建过程中遇到局部重建盘离线,若有业务写入,则继续写入其他数据盘,记录写入条带。看是否在磁盘丢失踢盘时间之内磁盘是否上线,上线则进行局部重建,离线则重新加盘传统重建(系统有热备盘的时候)。2)传统重建下发生的局部重建,局部重建过程中遇到重建盘离线,若有业务写入

    21、,则继续写入其他数据盘,记录写入条带。看是否在磁盘丢失踢盘时间之内磁盘是否上线,上线则进行局部重建,离线则删除局部重建记录,重新加盘传统重建。3)拷贝重建下发生的局部重建,遇到重建盘离线,有业务写入时,写入数据盘,不写入源盘(拷贝重建双写双不写原则)。磁盘丢失踢盘时间之内磁盘是否上线则继续局部重建,离线则继续完成源盘的局部重建,完成后加盘从0开始拷贝重建。4.4.2 数据盘离线(特指非重建盘)1)normal态RAID LUN发生局部重建,遇到数据盘(非重建盘)离线(目前磁盘下电后90s内RAID LUN状态不变),RAID LUN变failed状态,向上返回错误,不进行业务写入。如果在磁盘丢

    22、失踢盘时间之内磁盘上线:继续原有的局部重建。如果中途遇到resume命令,踢掉离线的数据盘,删除局部重建记录。加盘进行传统重建。2)传统重建下发生局部重建过程中,遇到数据盘离线,RAID LUN变failed,无法resume。磁盘回来之后完成局部重建后继续传统重建。3)拷贝重建下发生的局部重建,遇到数据盘离线,RAID LUN变failed状态,如果遇到resume则踢数据盘,删除局部重建记录,进行传统重建,传统重建完之后再加盘进行拷贝重建。如果十分钟之内磁盘上线则继续局部重建(磁盘上线前未遇到resume命令),完成后加盘拷贝重建。(因DDF区错误或smart告警导致的拷贝重建发生局部重建过程中,数据盘missing,RAID LUN依然是degraded,但是实际是假降级真failed情况,且无法resume,磁盘丢失踢盘时间之后也不会踢除missing盘)。4)拷贝重建过程中发生的局部重建,过程中遇到源盘missing, RAID LUN依然是degraded,局部重建停止,如果在磁盘丢失踢盘时间之后,源盘还没回来,则踢掉源盘,继续重建盘的局部重建,重建完成之后对原重建盘从0开始传统重建。


    注意事项

    本文(阵列重建技术总结.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开