阵列重建技术总结Word格式文档下载.docx

上传人:b****3 文档编号:6189308 上传时间:2023-05-06 格式:DOCX 页数:11 大小:62.82KB
下载 相关 举报
阵列重建技术总结Word格式文档下载.docx_第1页
第1页 / 共11页
阵列重建技术总结Word格式文档下载.docx_第2页
第2页 / 共11页
阵列重建技术总结Word格式文档下载.docx_第3页
第3页 / 共11页
阵列重建技术总结Word格式文档下载.docx_第4页
第4页 / 共11页
阵列重建技术总结Word格式文档下载.docx_第5页
第5页 / 共11页
阵列重建技术总结Word格式文档下载.docx_第6页
第6页 / 共11页
阵列重建技术总结Word格式文档下载.docx_第7页
第7页 / 共11页
阵列重建技术总结Word格式文档下载.docx_第8页
第8页 / 共11页
阵列重建技术总结Word格式文档下载.docx_第9页
第9页 / 共11页
阵列重建技术总结Word格式文档下载.docx_第10页
第10页 / 共11页
阵列重建技术总结Word格式文档下载.docx_第11页
第11页 / 共11页
亲,该文档总共11页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

阵列重建技术总结Word格式文档下载.docx

《阵列重建技术总结Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《阵列重建技术总结Word格式文档下载.docx(11页珍藏版)》请在冰点文库上搜索。

阵列重建技术总结Word格式文档下载.docx

2.传统重建

2.1传统重建的概念

传统重建是通过读其他数据盘计算校验值来写重建盘,重建完成后阵列重新具备冗余性。

重建是以条带为单位进行的,比如A盘和B盘是数据盘,D盘是重建盘。

阵列的条块是64k,重建时每次从A盘和B盘读取64k的数据,进行异或运算后写D盘。

数据盘A

110100*********0

数据盘B

0111011100110010

重建盘D

1010011001101000

2.2传统重建的触发条件

1)冗余阵列中的一个数据盘拔盘后,踢盘时间内没有回来,会踢掉源盘,如果存在合适的热备启动传统重建。

2)拷贝重建中,源盘本来就有读写错误记录或者遇到读错误,该错误所在条带按传统重建方式处理。

3)拷贝重建的源盘达到512个读错误,踢源盘转化为传统重建。

4)拷贝重建的源盘达到512个写错误,踢源盘转化为传统重建。

5)拷贝重建的源盘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盘,整个修复过程成功,命令返回成功,不记录任何错误;

CP点之后,读命令不会下发到重建盘。

重建盘不论是遇到重建写错误或是业务写错误都会踢盘。

2.4传统重建的磁盘上下电处理

不同情况的上下电处理如下表所示:

RAIDLUN状态

业务流量

是否需要局部重建

数据盘b类错误下电

重建暂停,保持原来的降级状态,磁盘上电后,接着原来的进度重建。

不会报错,向上层返回busy,磁盘上电后流量可正常下发。

不需要

数据盘非b类错误下电

重建暂停,变failed状态,磁盘上电后,接着原来的进度重建。

会报错,磁盘上电后流量可正常下发

重建盘b类错误下电

重建暂停,保持降级状态,磁盘上电后,局部重建完成后可接着原来的进度重建。

流量正常

如果下电期间有写业务需要进行局部重建

重建盘非b类错误下电

3.拷贝重建

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。

6)在进行坏块替换时,替换失败会触发拷贝重建。

7)开启坏块替换,DDF区写错误会触发拷贝重建。

8)开启坏块替换,在替换记录达到8190后会触发拷贝重建。

3.3拷贝重建中磁盘的读写错误处理

拷贝重建过程遵循双写双不写原则,即在有业务或局部重建写流量时,源盘与重建盘均在位,会对两块盘都进行写入。

若有一块盘missing,会停止对两块磁盘的写入,防止数据不一致。

3.3.1重建读写错误处理

重建读时源盘遇到读错误,读错误会增加,该条带用传统重建方式写重建盘;

当读错误增加至512个时,踢掉源盘,从0开始传统重建。

当用传统重建方式写重建盘时,读数据盘失败,数据盘和重建盘均记录读错误。

重建写时重建盘遇到写错误,会踢掉重建盘,寻找合适的空白盘加入重新开始拷贝重建。

3.3.2业务读写错误处理

业务读时只会读数据盘和源盘,不会读重建盘。

若是在冗余条带,遇到读错误时会进行写修复。

若是在非冗余条带,遇到读错误不影响RAIDLUN状态,读错误记录增加。

业务写时遵循双写双不写原则,业务写错误有以下情况:

1)当源盘发生写错误,写错误记录增加,RAIDLUN状态不变,磁盘列表不变。

2)当重建盘发生写错误,RAIDLUN会踢掉重建盘,加入空白盘重新拷贝重建。

3)当数据盘在冗余条带发生写错误,RAIDLUN状态不变,继续拷贝重建,在拷贝重建完成后再加盘拷贝重建;

如在非冗余条带发生写错误,RAIDLUN会failed。

拷贝重建前RAIDLUN如未同步,在拷贝重建过程中查询NV-RAM是不会有写异常记录的;

如拷贝重建前RAIDLUN有同步过,在拷贝重建过程中,落在已同步过的条带上的写流量会产生写异常记录;

即写异常记录跟拷贝重建的CP点无关,只跟同步和传统重建的CP点有关。

以上提到的读写错误数如无说明均指少于512个错误,拷贝重建过程中关于512读写错误情况如下:

1)源盘有512个读错误或写错误会踢盘从0开始传统重建

2)重建盘有512个读错误会踢盘重新加盘拷贝重建

3)数据盘有512个读错误或写错误RAIDLUN变failed

3.4拷贝重建中的拔盘处理

1)数据盘数达到数据冗余性的拷贝重建RAIDLUN拔一块盘的处理情况:

a)源盘:

超过踢盘时间后,踢盘变为传统重建,原拷贝重建盘变为传统重建盘,重建CP保持继续。

b)重建盘:

超过踢盘时间后,先踢盘加新盘拷贝重建。

c)其它数据盘:

RAIDLUNfailed,十分钟内自动resume为degraded,先踢盘继续拷贝重建,拷贝重建完成后加新盘进行传统重建。

2)数据盘达到数据完整性的拷贝重建RAIDLUN拔一块盘的处理情况:

a)源盘:

RAIDLUNfailed,不能自动resume。

超过踢盘时间后,先踢missing盘加新盘拷贝重建。

RAIDLUNfailed,不能自动resume。

4.局部重建

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)拷贝重建下发生的局部重建,遇到重建盘写错误。

踢掉重建盘,加盘先进行局部重建,重建完成之后拷贝重建。

4.3.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)。

4.3.4数据盘写错误

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)拷贝重建下发生的局部重建,遇到重建盘离线,有业务写入时,写入数据盘,不写入源盘(拷贝重建双写双不写原则)。

磁盘丢失踢盘时间之内磁盘是否上线则继续局部重建,离线则继续完成源盘的局部重建,完成后加盘从0开始拷贝重建。

4.4.2数据盘离线(特指非重建盘)

1)normal态RAIDLUN发生局部重建,遇到数据盘(非重建盘)离线(目前磁盘下电后90s内RAIDLUN状态不变),RAIDLUN变failed状态,向上返回错误,不进行业务写入。

如果在磁盘丢失踢盘时间之内磁盘上线:

继续原有的局部重建。

如果中途遇到resume命令,踢掉离线的数据盘,删除局部重建记录。

加盘进行传统重建。

2)传统重建下发生局部重建过程中,遇到数据盘离线,RAIDLUN变failed,无法resume。

磁盘回来之后完成局部重建后继续传统重建。

3)拷贝重建下发生的局部重建,遇到数据盘离线,RAIDLUN变failed状态,如果遇到resume则踢数据盘,删除局部重建记录,进行传统重建,传统重建完之后再加盘进行拷贝重建。

如果十分钟之内磁盘上线则继续局部重建(磁盘上线前未遇到resume命令),完成后加盘拷贝重建。

(因DDF区错误或smart告警导致的拷贝重建发生局部重建过程中,数据盘missing,RAIDLUN依然是degraded,但是实际是假降级真failed情况,且无法resume,磁盘丢失踢盘时间之后也不会踢除missing盘)。

4)拷贝重建过程中发生的局部重建,过程中遇到源盘missing,RAIDLUN依然是degraded,局部重建停止,如果在磁盘丢失踢盘时间之后,源盘还没回来,则踢掉源盘,继续重建盘的局部重建,重建完成之后对原重建盘从0开始传统重建。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 总结汇报 > 其它

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

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