版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
阵列重建技术总结概述RAID阵列的高可靠性依赖于磁盘的冗余性,当RAID阵列中一块硬盘失效后,RAID阵列数据丢失的风险会变大。此时阵列需要进行重建操作,以保证数据的完整性。阵列的重建方式包括传统重建、拷贝重建和局部重建,三种重建方式的自动灵活调配使用可使重建对业务的影响降到最低,并可大大缩短对失效磁盘重建的时间,降低RAID失效的风险,提高RAID阵列对数据的保护能力。1.1重建的概念重建是将RAIDLUN的状态从降级恢复成正常的过程,当一个RAIDLUN中的硬盘数据因为某种原因出错或者丢失,就必须用剩余的数据根据特定类型算法计算出错或丢失数据,从而达到恢复数据及运行状态的目的。1.2重建流程重建过程中,系统会对每个RAIDLUN都会启动一个重建线程,同一时刻每个RAIDGroup上只有一个LUN重建线程在执行,其它线程处于休眠状态,当一个RAIDGroup上的LUN重建完成后会唤醒休眠中的线程继续重建过程,直到其上的所有LUN都重建完成。重建的处理过程如下:1)管理框架收到来自命令行的重建命令或者发生引发重建的事件后,向LUNCore发起针对LUN的重建请求。2)LUNCore针对每个条带发起重建,将重建命令下发给LUNIO。3)LUNIO根据重建策略,读取正常磁盘的条带中每个条块的数据,通过异或运算,计算出新盘所在条块的值;或者直接从故障盘读取能读到的正常值。4)LUNIO将计算/读取出来的数据通过IO命令下发给DISK,DISK将数据写入磁盘。5)当完成所有条带的重建后,LUNCore更新超级块的信息。如果没有重建完,返回2继续重建。6)每十分钟更新一次重建完成点信息到LUNDDF。7)重建完成后,需要更新LUN的状态。传统重建2.1传统重建的概念传统重建是通过读其他数据盘计算校验值来写重建盘,重建完成后阵列重新具备冗余性。重建是以条带为单位进行的,比如A盘和B盘是数据盘,D盘是重建盘。阵列的条块是64k,重建时每次从A盘和B盘读取64k的数据,进行异或运算后写D盘。数据盘A1101000101011010数据盘B0111011100110010重建盘D10100110011010002.2传统重建的触发条件冗余阵列中的一个数据盘拔盘后,踢盘时间内没有回来,会踢掉源盘,如果存在合适的热备启动传统重建。拷贝重建中,源盘本来就有读写错误记录或者遇到读错误,该错误所在条带按传统重建方式处理。拷贝重建的源盘达到512个读错误,踢源盘转化为传统重建。拷贝重建的源盘达到512个写错误,踢源盘转化为传统重建。拷贝重建的源盘missing后,踢盘时间内未回来,踢掉源盘转化为传统重建。注:踢盘时间默认为10分钟,可用命令进行更改,例如更改为5分钟的命令如下:echo5>/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点之后,读命令不会下发到重建盘。重建盘不论是遇到重建写错误或是业务写错误都会踢盘。2.4传统重建的磁盘上下电处理不同情况的上下电处理如下表所示:RAIDLUN状态业务流量是否需要局部重建数据盘b类错误下电重建暂停,保持原来的降级状态,磁盘上电后,接着原来的进度重建。不会报错,向上层返回busy,磁盘上电后流量可正常下发。不需要数据盘非b类错误下电重建暂停,变failed状态,磁盘上电后,接着原来的进度重建。会报错,磁盘上电后流量可正常下发不需要重建盘b类错误下电重建暂停,保持降级状态,磁盘上电后,局部重建完成后可接着原来的进度重建。流量正常如果下电期间有写业务需要进行局部重建重建盘非b类错误下电重建暂停,保持降级状态,磁盘上电后,局部重建完成后可接着原来的进度重建。流量正常如果下电期间有写业务需要进行局部重建拷贝重建3.1拷贝重建的概念原normal状态的RAIDLUN,由于读写错误导致RAIDLUN变为degraded状态,无missing盘且存在热备盘时会加盘进行重建,即拷贝重建。重建过程中,直接从源盘(故障数据盘)拷贝数据到重建盘。当源盘数据无法读取时,该条带按传统重建方式重建。在重建完成后踢掉源盘,RAIDLUN变为normal状态。一般情况下拷贝重建比传统重建快一点,但如果源盘读很慢的时候,拷贝重建方式可能比传统重建还慢;从下图可以看出,拷贝重建会比传统重建少很多次的读和异或计算;在RAIDLUN盘数越多的情况下,拷贝重建效率越明显。3.2拷贝重建的触发条件1)NormalRAIDLUN(已同步、同步中和未同步)中成员磁盘遇到写错误会加盘拷贝重建。2)传统重建中的RAIDLUN,在数据盘遇到写错误后会failed,resume起来传统重建完成后加盘拷贝重建。3)拷贝重建中的RAIDLUN数据盘在冗余条带遇到写错误,待拷贝重建完成后加盘继续拷贝重建;在非冗余条带遇到写错误,resume起来拷贝重建完成后加盘拷贝重建。4)局部重建、写异常恢复中的RAIDLUN,在数据盘遇到写错误会failed,resume起来清除局部重建记录和写异常记录后加盘拷贝重建。5)超级块错误或smart检测故障时会触发拷贝重建,故障盘记录写错误,重建完成后踢出故障磁盘并标记failed。在进行坏块替换时,替换失败会触发拷贝重建。开启坏块替换,DDF区写错误会触发拷贝重建。开启坏块替换,在替换记录达到8190后会触发拷贝重建。3.3拷贝重建中磁盘的读写错误处理拷贝重建过程遵循双写双不写原则,即在有业务或局部重建写流量时,源盘与重建盘均在位,会对两块盘都进行写入。若有一块盘missing,会停止对两块磁盘的写入,防止数据不一致。 3.3.1重建读写错误处理重建读时源盘遇到读错误,读错误会增加,该条带用传统重建方式写重建盘;当读错误增加至512个时,踢掉源盘,从0开始传统重建。当用传统重建方式写重建盘时,读数据盘失败,数据盘和重建盘均记录读错误。重建写时重建盘遇到写错误,会踢掉重建盘,寻找合适的空白盘加入重新开始拷贝重建。3.3.2业务读写错误处理业务读时只会读数据盘和源盘,不会读重建盘。若是在冗余条带,遇到读错误时会进行写修复。若是在非冗余条带,遇到读错误不影响RAIDLUN状态,读错误记录增加。业务写时遵循双写双不写原则,业务写错误有以下情况:当源盘发生写错误,写错误记录增加,RAIDLUN状态不变,磁盘列表不变。当重建盘发生写错误,RAIDLUN会踢掉重建盘,加入空白盘重新拷贝重建。当数据盘在冗余条带发生写错误,RAIDLUN状态不变,继续拷贝重建,在拷贝重建完成后再加盘拷贝重建;如在非冗余条带发生写错误,RAIDLUN会failed。拷贝重建前RAIDLUN如未同步,在拷贝重建过程中查询NV-RAM是不会有写异常记录的;如拷贝重建前RAIDLUN有同步过,在拷贝重建过程中,落在已同步过的条带上的写流量会产生写异常记录;即写异常记录跟拷贝重建的CP点无关,只跟同步和传统重建的CP点有关。注:以上提到的读写错误数如无说明均指少于512个错误,拷贝重建过程中关于512读写错误情况如下:源盘有512个读错误或写错误会踢盘从0开始传统重建重建盘有512个读错误会踢盘重新加盘拷贝重建数据盘有512个读错误或写错误RAIDLUN变failed3.4拷贝重建中的拔盘处理1)数据盘数达到数据冗余性的拷贝重建RAIDLUN拔一块盘的处理情况:a)源盘:超过踢盘时间后,踢盘变为传统重建,原拷贝重建盘变为传统重建盘,重建CP保持继续。重建盘:超过踢盘时间后,先踢盘加新盘拷贝重建。其它数据盘:RAIDLUNfailed,十分钟内自动resume为degraded,先踢盘继续拷贝重建,拷贝重建完成后加新盘进行传统重建。2)数据盘达到数据完整性的拷贝重建RAIDLUN拔一块盘的处理情况:源盘:RAIDLUNfailed,不能自动resume。重建盘:超过踢盘时间后,先踢missing盘加新盘拷贝重建。其它数据盘:RAIDLUNfailed,不能自动resume。局部重建4.1局部重建的概念局部重建指的是一块磁盘离线(包括手动拔插、SAS拔插、B类错误上下电、链路不稳等各种情况导致的离线),且该RAIDLUN上存在业务写流量,此时系统会记录写入数据涉及的条带,并标记该RAIDLUN中离线磁盘为Missing状态,等磁盘重新上线后且能回到RAIDLUN中,则重建这段时间内写入的条带,达到重新利用该硬盘的目的。避免采用全盘重建,缩短重建时间。局部重建完成后或者硬盘无法回到RAIDLUN中,将清除记录的条带信息。局部重建只针对具有冗余性的RAIDLUN。包括normal状态的阵列各个数据盘、重构重建的重键盘、拷贝重建的重键盘和被重建盘都会发生局部重建。4.2局部重建的触发条件1)Normal状态下RAIDLUN的磁盘离线(包括手动拔插磁盘、SAS拔插、B类错误上下电、链路不稳情况导致的磁盘离线),而此时RAIDLUN有上层业务写入(包括业务数据写入,逻辑资源LV创建)。磁盘在磁盘丢失踢盘时间之内上线,此时RAIDLUN会对磁盘进行局部重建。2)RAIDLUN处于传统重建过程中重建盘发生磁盘离线,而此时RAIDLUN有上层业务写入,并且磁盘丢失踢盘时间之内上线,会对重建盘进行局部重建。3)RAIDLUN处于拷贝重建过程中重建盘或被重建盘发生磁盘离线,而此时RAIDLUN有上层业务写入,并且磁盘丢失踢盘时间之内上线,会对重建盘和被重建盘进行局部重建。4.3局部重建的读写错误处理4.3.1重建盘读错误局部重建过程中,重建盘不会有读命令。采用读其他数据盘数据进行异或运算得出。4.3.2重建盘写错误1)normal态下RAIDLUN发生局部重建遇到重建盘写错误,先完成局部重建,后触发拷贝重建。达到512个写错误,直接踢盘进行传统重建。2)传统重建下发生局部重建,遇到重建盘写错误,直接踢掉重建盘,重新加盘进行传统重建。3)拷贝重建下发生的局部重建,遇到重建盘写错误。踢掉重建盘,加盘先进行局部重建,重建完成之后拷贝重建。数据盘读错误1)normal状态下RAIDLUN发生局部重建,数据盘达到512个读错误,LUN变failed,会自动resume清除局部重建记录,加盘传统重建,但是此时会发现原局部重建盘也有512个读错误,无法传统重建,RAIDLUN变failed,resume会失败。2)拷贝重建状态发生局部重建,数据盘达到512个读错误,RAIDLUN变failed,resume会失败。(数据盘,重建盘,源盘都会有512个读错误)3)传统重建状态发生局部重建,数据盘512个读错误,RAIDLUN变failed,遇到resume失败。(未达到512个之前的读错误,记录DDF)。数据盘写错误1)normal态下RAIDLUN发生的局部重建,数据盘遇到写错误,RAIDLUN变failed,遇到resume后,删除局部重建记录,局部重建盘恢复为normal,加盘对数据盘进行拷贝重建。(数据盘的写错误可能发生在冗余条带,也可能发生在还未完成重建的不冗余条带,我司软件不判断是否为冗余条带写错误,直接failed)2)拷贝重建下发生局部重建,数据盘遇到写错误,记录错误,局部重建完之后,继续原来拷贝重建,完成后再加盘对数据盘进行拷贝重建;如果遇到512个写错误,RAIDLUN会failed。遇到resume后,删除局部重建记录,踢掉有512个错误的数据盘和重建盘,加盘进行传统重建,完成后再加盘进行拷贝重建。3)传统重建下发生的局部重建,遇到数据盘写错误,RAIDLUN变failed,遇到resume删除局部重建记录,继续从原进度开始传统重建。重建完成后再加盘对出现写错误的数据盘拷贝重建。(此局部重建过程有数据盘写错误RAIDLUN就会变failed,即局部重建过程不会出现数据盘512个写错误。)4)拷贝重建下发生局部重建,重建过程中源盘发生写错误,错误记录,局部重建完成之后,继续拷贝重建。写错误达到512个,踢盘,继续局部重建,重建完成之后,对重建盘从0开始传统重建。4.4局部重建的磁盘离线处理4.4.1重建盘离线1)normal态下RAIDLUN发生磁盘离线导致的局部重建,重建过程中遇到局部重建盘离线,若有业务写入,则继续写入其他数据盘,记录写入条带。看是否在磁盘丢失踢盘时间之内磁盘是否上线,上线则进行局部重建,离线则重新加盘传统重建(系统有热备盘的时候)。2)传统重建下发生的局部重建,局部重建过程中遇到重建盘离线,若有业务写入,则继续写入其他数据盘,记录写入条带。看是否在磁盘丢失踢盘时间之内磁盘是否上线,上线则进行局部重建,离线则删除局部重建记录,重新加盘传统重建。3)拷贝重建下发生的局部重建,遇到重建盘离线,有业务写入时,写入数据盘,不写入源盘(拷贝重建双写双不写原则)。磁盘丢失踢
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2026学年朱自清背影片段教学设计
- 2025-2026学年湘美版美术八年级下册5.1变化的公共空间教学设计
- 2025-2026学年人教版八年级英语u6写作课教学设计
- 2025-2026学年新课标音乐教案小学
- 2025-2026学年仙女弹琴教学设计
- 2025-2026学年克千克吨大单元教学设计
- 2025-2026学年夏天托班教案
- 6《会摇尾巴的狼》 公开课一等奖创新教学设计
- 2025-2026学年我家的笑声教案
- 2025-2026学年教学设计子议题怎么写
- 2025年智能焊接机器人产业发展蓝皮书
- 2025年四川省成都市中考英语真题(原卷版)
- 中华民族共同体概论课件第三讲文明初现与中华民族起源(史前时期)
- 金属学与热处理教案哈尔滨工业大学
- 肥厚型心肌病课件
- GB/T 12250-2023蒸汽疏水阀标志
- 中午吃饭员工管理制度
- 驾驶员不良驾驶习惯的纠正与预防
- 乳糜胸的护理教学课件
- 民航概论PPT全套教学课件
- 正确使用词语包括熟语主题讲座
评论
0/150
提交评论