一种基于磁盘读错误类别读取磁盘数据的方法和装置制造方法

文档序号:6627866阅读:181来源:国知局
一种基于磁盘读错误类别读取磁盘数据的方法和装置制造方法
【专利摘要】本发明提供的基于磁盘读错误类别读取磁盘数据的方法在阵列执行读业务过程中、阵列同步过程中、阵列重建过程中产生的读错误类型进行区分,然后在进行后续业务的读IO时,根据不同的读错误类型读取或者不读取对应的数据,以最大限度地保证读取数据的完整性与正确性,最大范围的减小对阵列的影响。
【专利说明】一种基于磁盘读错误类别读取磁盘数据的方法和装置

【技术领域】
[0001]本发明涉及RAID阵列【技术领域】,尤其涉及一种基于磁盘读错误类别读取磁盘数据的方法和装置。

【背景技术】
[0002]在数据存储的过程中,当丢失一块或多块磁盘时,冗余阵列将根据不同的阵列类型提供完整的数据。对于RAID5,可以允许丢失一块磁盘;对于RAID6,可以允许丢失两块磁盘;对于RAID10,每个镜像对可以允许丢失一块磁盘等。对于RAID5,在丢失一块磁盘的情况下,其它磁盘上又记录了读错误,或者在磁盘个数完整的情况下,一个条带上记录多个读错误,在这种情况下很难读取完整的数据。对于录像监控数据,如果录像索引没有落在这些出问题的条带上,影响的范围很有限;但是如果录像索引落在了这些出问题的条带上,并且没有对录像索引进行备份,那么影响的范围就比较大。对于文件系统,如果文件系统需要的数据无法读取成功,那么会影响整个文件系统的运行,甚至对文件系统会造成严重的破坏。在碰到上述存在的读错误的情况下,如何最大范围的减小对阵列的影响是当前需要解决的问题。


【发明内容】

[0003]有鉴于此,本发明提供一种基于磁盘读错误类别读取磁盘数据的方法和装置。
[0004]该方法应用于RAID阵列,包括:在业务读过程中,如果产生的读错误,将对应磁盘数据块标记第一类别读错误;当后续业务的读1所需读取的数据块是所述标记有第一类别读错误的磁盘数据块时,执行对该磁盘数据块的读操作。
[0005]或者,在阵列同步过程中,如果在预读阶段产生两个或者两个以上读错误时,将其中一个读错误对应的磁盘数据块标记第二类别读错误,将剩余的读错误对应的磁盘数据块分别标记第一类别读错误,或者将所有读错误对应的磁盘数据块分别标记第一类别读错误,且将校验盘对应的磁盘数据块标记第二类别读错误;当后续业务的读1所需读取的数据块是所述标记有第一类别读错误的磁盘数据块时,执行对该磁盘数据块的读操作;当后续业务的读1所需读取的数据块是所述标记有第二类别读错误的磁盘数据块时,则不读取该磁盘数据块的数据。
[0006]或者,在阵列同步过程中,如果在预读阶段产生一个读错误时,将该读错误对应的磁盘数据块标记第一类别读错误,如果转读校验盘数据块进行修复时对该校验盘数据块读取错误,则将该校验盘数据块标记第二类别读错误。
[0007]或者,在阵列重建过程中,如果读磁盘数据块时产生读错误,则将所述读错误对应的磁盘数据块标记第一类别读错误,将重建盘上对应的磁盘数据块标记第二类别读错误;当后续业务的读1所需读取的数据块是所述标记有第一类别读错误的磁盘数据块时,执行对该磁盘数据块的读操作;当后续业务的读1所需读取的数据块是所述标记有第二类别读错误的磁盘数据块时,则不读取该磁盘数据块的数据。
[0008]优选地,对于标记有第一类别读错误的磁盘数据块,如果满数据块读取成功,则清除第一类别读错误标识;对于标记有第二类别读错误的磁盘数据块,如果有新的数据写入该磁盘数据块且满数据块写成功时,则清除该第二类别读错误标识。
[0009]一种基于磁盘读错误类别读取磁盘数据的装置,该装置应用于RAID阵列,该装置包括:读错误标识模块,用于在业务读过程中,如果产生的读错误,将对应磁盘数据块标记第一类别读错误;读1执行模块,用于当后续业务的读1所需读取的数据块是所述标记有第一类别读错误的磁盘数据块时,执行对该磁盘数据块的读操作。
[0010]或者,读错误标识模块,用于在阵列同步过程中,如果在预读阶段产生两个或者两个以上读错误时,将其中一个读错误对应的磁盘数据块标记第二类别读错误,将剩余的读错误对应的磁盘数据块分别标记第一类别读错误,或者将所有读错误对应的磁盘数据块分别标记第一类别读错误,且将校验盘对应的磁盘数据块标记第二类别读错误;读1执行模块,用于当后续业务的读1所需读取的数据块是所述标记有第一类别读错误的磁盘数据块时,执行对该磁盘数据块的读操作;当后续业务的读1所需读取的数据块是所述标记有第二类别读错误的磁盘数据块时,则不读取该磁盘数据块的数据。
[0011]或者,所述读错误标识模块,还用于在阵列同步过程中,如果在预读阶段产生一个读错误时,将该读错误对应的磁盘数据块标记第一类别读错误,如果转读校验盘数据块进行修复时对该校验盘数据块读取错误,则将该校验盘数据块标记第二类别读错误。
[0012]或者,读错误标识模块,用于在阵列重建过程中,如果读磁盘数据块时产生读错误,则将所述读错误对应的磁盘数据块标记第一类别读错误,将重建盘上对应的磁盘数据块标记第二类别读错误;读1执行模块,用于当后续业务的读1所需读取的数据块是所述标记有第一类别读错误的磁盘数据块时,执行对该磁盘数据块的读操作;当后续业务的读1所需读取的数据块是所述标记有第二类别读错误的磁盘数据块时,则不读取该磁盘数据块的数据。
[0013]优选地,所述装置还包括读错误标记清除模块;对于标记有第一类别读错误的磁盘数据块,如果满数据块读取成功,则读错误标记清除模块清除第一类别读错误标识;对于标记有第二类别读错误的磁盘数据块,如果有新的数据写入该磁盘数据块且满数据块写成功时,则读错误标记清除模块清除该第二类别读错误标识。
[0014]相较于现有技术,本发明技术方案最大限度地保证读取数据的完整性与正确性,最大范围的减小对阵列的影响。

【专利附图】

【附图说明】
[0015]图1是现有的一个RAID阵列示意图。
[0016]图2是本发明实施例一种涉及读错误处理方式的阵列同步流程。
[0017]图3a、图3b是本发明实施例具有不同类别读错误的RAID阵列示意图。
[0018]图4是本发明实施例一种涉及读错误处理方式的阵列重建流程。
[0019]图5是本发明实施例重建后的具有不同类别读错误的RAID阵列示意图。
[0020]图6是本发明实施例缺盘且具有读错误标识的RAID阵列示意图。
[0021 ]图7是本发明实施例装置逻辑结构图。

【具体实施方式】
[0022]本发明方案针对阵列执行读业务过程中、阵列同步过程中、阵列重建过程中产生的读错误类型进行区分,然后在进行后续业务的读1时,根据不同的读错误类型读取或者不读取对应的数据,以最大限度地保证读取数据的完整性与正确性,最大范围的减小对阵列的影响。以下通过具体实施例详细说明。
[0023]一、读业务过程
[0024]在业务读过程中,如果产生的读错误,将对应磁盘数据块标记第一类别读错误;当后续业务的读1所需读取的数据块是所述标记有第一类别读错误的磁盘数据块时,执行对该磁盘数据块的读操作。
[0025]下面举个例子进行说明。请参图1给出的一个RAID阵列,该RAID阵列包括Dl?D5五个数据盘和一个校验盘P盘。该阵列存储了视频监控数据;如果用户想要回放一段监控录像,则上层会下发读1到对应的磁盘,在这个业务读过程中,如果读到数据盘Dl上的某一个磁盘数据块出现错误时,则对该磁盘数据块标记read_error,如果Dl、D2等磁盘上的数据块均发生读错误,则对这些磁盘数据块均标记read_error。当一个数据盘读失败促使利用P盘进行修复时,如果读P盘时也出现读错误,则对P盘对应数据块标记read_error。
[0026]后续,用户又一次回放这段监控录像,在这次的业务读过程中,当待读取的磁盘数据块是标记有reacLerror的数据块时,执行对该磁盘数据块的读取。因为前一次读取发生错误,很有可能并不是真正的介质问题,比如说是因为链路问题导致的读错误等,再一次读取的时候就有可能读取成功,所以可以继续对标记有reacLeiror的磁盘数据块进行数据的读取。如果本次对标记有read_error的磁盘数据块满数据读取成功的话,则清除read_error标记。
[0027]二、阵列同步过程
[0028]在阵列同步过程中,如果在预读阶段产生两个或者两个以上读错误时,可以采用以下两种方式中的任一种方式进行读错误类别标记:1)将其中一个读错误对应的磁盘数据块标记第二类别读错误,将剩余的读错误对应的磁盘数据块分别标记第一类别读错误;2)将所有读错误对应的磁盘数据块分别标记第一类别读错误,且将校验盘对应的磁盘数据块标记第二类别读错误。
[0029]如果在预读阶段产生一个读错误时,将该读错误对应的磁盘数据块标记第一类别读错误,如果转读校验盘数据块进行修复时对该校验盘数据块读取错误,则将该校验盘数据块标记第二类别读错误。当后续业务的读1所需读取的数据块是标记有第一类别读错误的磁盘数据块时,执行对该磁盘数据块的读操作;当后续业务的读1所需读取的数据块是标记有第二类别读错误的磁盘数据块时,则不读取该磁盘数据块的数据。
[0030]阵列创建后,一般情况下需要进行同步。同步的原理,简言之:读数据盘条块数据进行异或后写P盘。请参图2所示的阵列同步流程,该流程涉及了读错误时的处理方式。
[0031]S201、判断是否同步完所有条带或者是否出现同步异常而导致的中止,如果是,执行步骤S202,否则执行步骤S203。
[0032]S202、同步结束。
[0033]S203、获取下一个(组)条带进行同步。
[0034]S204、判断预读是否成功,如果是,则执行步骤S207,否则执行步骤S205。
[0035]S205、判断预读阶段是否存在两个或者两个以上读错误,如果是,则执行步骤S206,否则执行步骤S208。
[0036]S206、将其中一个读错误对应的磁盘数据块标记failed_read_error,将其余读错误对应的磁盘数据块分别标记reacLerror ;或者将所有读错误对应的磁盘数据块标记为read_error,且将校验盘对应的数据块标记为failed_read_error。
[0037]S207、对预读成功的所有数据盘数据执行异或计算后写校验盘P盘;返回步骤S201。
[0038]S208、将该读错误的磁盘数据块标记read_error ;且读取P盘数据。
[0039]S209、判断P盘数据是否读取成功,如果是,执行步骤S211,否则执行步骤S210。
[0040]S210、将P盘数据块标记为failed_read_error,返回步骤201。
[0041]S211、将读取成功的所有数据盘数据和P盘数据进行异或后写读错误的磁盘数据块,写成功后清除该磁盘数据块的read_error标记;返回S201。
[0042]以下通过一个例子来说明同步过程中如何进行读错误类别的标记。以图3a为例,假设对图3a中的一个条带η进行同步时,在预读阶段,即读取数据盘上条块数据的时候,D1、D2和D4相应条块Dln、D2n和D4n的数据均出现了读错误的情况,此时有两种方式进行读错误类别的标记:一种方式为将Din、D2n和D4n中的任一数据块标记为failed_read_error,其余两个数据块标记为read_error ;另一种方式为将Dln、D2n、D4n均标记为read_error,将P盘的数据块Pn标记为failed_read_error。
[0043]在同步过程中,有的读错误标记为read_error,有的读错误标记为faild_read_error ;这是为了指导后续业务的读1是否执行读取操作。如果读1所需读取的磁盘数据块是标记有reacLerror的,则可以执行读取操作,如果读1所需读取的磁盘数据块是标记有faild_read_error的,则该磁盘数据块上的数据不能被读取。标记read_error的磁盘数据块上的数据是有效的数据,而标记faild_read_eiT0r的磁盘数据块上的数据是无效的数据,无法保证其正确性。
[0044]以下通过一个具体的例子来说明后续业务的读1针对不同类型的读错误所执行的操作。需要说明的是,本发明中的后续业务的读1不限于应用层下发读业务请求涉及的读10,其他如写业务过程中涉及的读1等也属于该范畴。请参图3b,图3b是完成同步的阵列。如图所示,该阵列在同步的过程中,D2的数据块D2m标记有read_error ;同条带的P盘数据块Pm标记有faild_read_erro;r。在执行随机写业务(非满条带写)时,如果写命令需要将数据写入D2的数据块D2m时,按照现有的写方式将采用读修改写RMW算法执行,即需要读取D2的数据块D2m和P盘数据块Pm上的数据,且将读出的这两个数据块上的数据与待写的数据进行异或后写P盘数据块,再将待写的数据写入D2m。对于D2数据块D2m上的数据,由于其标记有read_error,则可以进行读取,如果读取成功,则清除read_error标记,当然这里的读取成功是指满数据块读取成功;而对于P盘数据块Pm上的数据,由于其标记有faild_read_error,则禁止读取;此时可以进一步读取Dl、D3、D4、D5上对应条块的数据,并对Dl?D5这五个条块数据进行异或后写P盘对应条块,如果写成功,则清除P盘数据块Pm上的faild_read_error标记,当然这里的写成功也是指满数据块写成功。对于待写的数据,写入D2的数据块D2m,写成功后向上层返回成功。此时条带上的数据具有一致性,清除的读错误标记不影响数据的准确性。
[0045]三、阵列重建过程
[0046]在阵列重建过程中,如果读磁盘数据块时产生读错误,则将所述读错误对应的磁盘数据块标记第一类别读错误,将重建盘上对应的磁盘数据块标记第二类别读错误;当后续业务的读1所需读取的数据块是标记有第一类别读错误的磁盘数据块时,执行对该磁盘数据块的读操作;当后续业务的读1所需读取的数据块是标记有第二类别读错误的磁盘数据块时,则不读取该磁盘数据块的数据。
[0047]业务写冗余阵列条带后,条带具有数据一致性,此时当丢失任意一块磁盘时,都可以通过其它磁盘计算出丢失磁盘上的数据。图4给出了重建流程,并且给出重建过程中出现读错误时的处理方式。
[0048]请参图4,RAID中的一块磁盘离线被踢,触发申请热备进行重建,执行下述步骤:
[0049]S401、判断所有条带是否都重建完成,如果是,执行步骤S402,否则执行步骤S403。
[0050]S402、将重建盘交换为数据盘加入阵列中,重建完成。
[0051]S403、判断磁盘是否离线,如果是,执行步骤404,否则执行步骤405。
[0052]S404、重建中止,根据设定的处理决定何时再开始重建。
[0053]S405、获取下一个(组)条带进行重建。
[0054]S406、判断所有数据盘和校验盘的数据块是否预读成功,如果是,执行步骤S407,否则执行步骤S408。
[0055]S407、对所有读取成功的数据块执行异或计算后写重建盘,返回步骤S401。
[0056]S408、对没有读取成功的数据盘和校验盘上的数据块标记read_error ;对重建盘上的数据块标记failed_read_error ;返回步骤S401。
[0057]由于重建完成后,重建盘会变为数据盘加入阵列中,此时重建盘上标记有failed_read_error的数据块用来提示对应的数据是无效的;而其他标记有read_error的数据块则仅表示数据读的时候出现了错误,而数据则是有效的。所以后续业务的读1所需读取的数据块是标记有reacLerror的,则执行对该数据块的读操作;当后续业务的读1所需读取的数据块是标记有failed_read_error标识的,则禁止读取该磁盘数据块的数据。
[0058]以下通过一个具体的例子来说明后续业务的读1针对不同类型的读错误所执行的操作。请参图5,RAID阵列中的数据盘D5离线被踢,在重建完成后,D5’加入到了阵列中。但是其中的一个条带上有两个数据块分别记录了 read_error标识和failed_read_error:磁盘Dl的一个条块记录了 read_error ;重建盘D5’的一个条块记录了 failed_reacLeiror,见图5。若应用层下发了读业务的请求,且该读业务所需读取的数据恰好包括图5中所标示的那个条带(stripe)。由于Dl上的数据块记录有read_error标识,所以可以直接读取,如果满数据块读取成功,可以将该read_error标识清除;而D5’上的数据块记录有failed_read_error,所以不可以直接读取。要想获得D5’上的准确的数据,此时可以将本条带上读出的Dl、D2、D3、D4进行异或计算得到D5’的数据。这样读业务涉及该条带的操作就成功完成了。另外,异或计算得到的D5’的数据写到D5’上,如果写成功,即满数据块写成功,则清除其上的failed_read_error标识,此时该条带上的数据具有一致性。
[0059]请结合图6,在缺一个数据盘的情况下,且其他数据盘记录有read_error读错误时,存在业务写需求的处理方式。
[0060]数据盘Dl的一个数据块上具有reacLerror读错误标识,数据盘D5已被阵列踢出或者处于离线状态;此时如果有数据d5’需要写到和标识有reacLeiror数据块同条带的D5盘上,则读取Dl (在Dl满数据块读取成功后,清除对应数据块上标记的读错误reacLeiror标识)、D2、D3、D4对应数据块上的数据,然后与d5’进行异或得出的数据写P盘对应的数据块。由于磁盘D5离线(或者已被阵列踢出,或者处于下线状态),若磁盘D5已被踢出阵列,则写完P盘后,整个命令完成;若磁盘D5属于临时下线,则需要记录局部重建记录,然后待磁盘在有效时间内上线后,完成局部重建。
[0061]如果此时有数据dl’写磁盘Dl标识有read_error的数据块,那么采用RMW算法,先读取Dl (Dl满数据块读取成功后,清除对应数据块上标记的读错误read_error)、P对应数据块上的数据,然后通过Dl与P进行异或,再与dl’进行异或,得出的结果写P盘,dl’写Dl盘。由于D5离线(或者已被阵列踢出,或者处于下线状态),若磁盘D5已被踢出阵列,则写完P盘和Dl盘后,整个命令完成;若磁盘D5属于临时下线,则需要记录局部重建记录,然后待磁盘在有效时间内上线后,完成局部重建。
[0062]另外,对于写一个标记有两个read_error读错误的条带的具体方法类似前文的处理方式,这里不再赘述。
[0063]以上通过详细的流程以及具体的例子描述了具体在什么情况下标注什么类别的读错误;以及在读错误进行区分标识后,后续业务的读1针对不同类别的读错误如何处理的问题;对于标识有read_error的读错误,可以通过后续再次读取进行修复;对于fail_read_error则不能直接读取,而要通过写的方式进行修复。这样就能最大限度地保证读取数据的完整性与正确性,最大范围的减小对阵列的影响。
[0064]基于同样的构思,本发明还提供了一种基于磁盘读错误类别读取磁盘数据的装置。请参图7所示的本发明实施例装置逻辑结构图。该装置包括:读错误标识模块、读1执行模块和读错误标记清除模块。
[0065]读错误标识模块,用于在业务读过程中,如果产生的读错误,将对应磁盘数据块标记第一类别读错误;读1执行模块,用于当后续业务的读1所需读取的数据块是所述标记有第一类别读错误的磁盘数据块时,执行对该磁盘数据块的读操作。
[0066]读错误标识模块,用于在阵列同步过程中,如果在预读阶段产生两个或者两个以上读错误时,将其中一个读错误对应的磁盘数据块标记第二类别读错误,将剩余的读错误对应的磁盘数据块分别标记第一类别读错误,或者将所有读错误对应的磁盘数据块分别标记第一类别读错误,且将校验盘对应的磁盘数据块标记第二类别读错误;读1执行模块,用于当后续业务的读1所需读取的数据块是所述标记有第一类别读错误的磁盘数据块时,执行对该磁盘数据块的读操作;当后续业务的读1所需读取的数据块是所述标记有第二类别读错误的磁盘数据块时,则不读取该磁盘数据块的数据。所述读错误标识模块,还用于在阵列同步过程中,如果在预读阶段产生一个读错误时,将该读错误对应的磁盘数据块标记第一类别读错误,如果转读校验盘数据块进行修复时对该校验盘数据块读取错误,则将该校验盘数据块标记第二类别读错误。
[0067]读错误标识模块,用于在阵列重建过程中,如果读磁盘数据块时产生读错误,则将所述读错误对应的磁盘数据块标记第一类别读错误,将重建盘上对应的磁盘数据块标记第二类别读错误;读1执行模块,用于当后续业务的读1所需读取的数据块是所述标记有第一类别读错误的磁盘数据块时,执行对该磁盘数据块的读操作;当后续业务的读1所需读取的数据块是所述标记有第二类别读错误的磁盘数据块时,则不读取该磁盘数据块的数据。
[0068]对于标记有第一类别读错误的磁盘数据块,如果满数据块读取成功,读错误标记清除模块清除第一类别读错误标识;对于标记有第二类别读错误的磁盘数据块,如果有新的数据写入该磁盘数据块且满数据块写成功时,读错误标记清除模块清除该第二类别读错误标识。
[0069]以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
【权利要求】
1.一种基于磁盘读错误类别读取磁盘数据的方法,该方法应用于RAID阵列,其特征在于,该方法包括: 在业务读过程中,如果产生的读错误,将对应磁盘数据块标记第一类别读错误; 当后续业务的读1所需读取的数据块是所述标记有第一类别读错误的磁盘数据块时,执行对该磁盘数据块的读操作。
2.一种基于磁盘读错误类别读取磁盘数据的方法,该方法应用于RAID阵列,其特征在于,该方法包括: 在阵列同步过程中,如果在预读阶段产生两个或者两个以上读错误时,将其中一个读错误对应的磁盘数据块标记第二类别读错误,将剩余的读错误对应的磁盘数据块分别标记第一类别读错误,或者将所有读错误对应的磁盘数据块分别标记第一类别读错误,且将校验盘对应的磁盘数据块标记第二类别读错误; 当后续业务的读1所需读取的数据块是所述标记有第一类别读错误的磁盘数据块时,执行对该磁盘数据块的读操作;当后续业务的读1所需读取的数据块是所述标记有第二类别读错误的磁盘数据块时,则不读取该磁盘数据块的数据。
3.如权利要求2所述的方法,其特征在于,在阵列同步过程中,如果在预读阶段产生一个读错误时,将该读错误对应的磁盘数据块标记第一类别读错误,如果转读校验盘数据块进行修复时对该校验盘数据块读取错误,则将该校验盘数据块标记第二类别读错误。
4.一种基于磁盘读错误类别读取磁盘数据的方法,该方法应用于RAID阵列,其特征在于,该方法包括: 在阵列重建过程中,如果读磁盘数据块时产生读错误,则将所述读错误对应的磁盘数据块标记第一类别读错误,将重建盘上对应的磁盘数据块标记第二类别读错误; 当后续业务的读1所需读取的数据块是所述标记有第一类别读错误的磁盘数据块时,执行对该磁盘数据块的读操作;当后续业务的读1所需读取的数据块是所述标记有第二类别读错误的磁盘数据块时,则不读取该磁盘数据块的数据。
5.如权利要求1?4任一项所述的方法,其特征在于,对于标记有第一类别读错误的磁盘数据块,如果满数据块读取成功,则清除第一类别读错误标识;对于标记有第二类别读错误的磁盘数据块,如果有新的数据写入该磁盘数据块且满数据块写成功时,则清除该第二类别读错误标识。
6.一种基于磁盘读错误类别读取磁盘数据的装置,该装置应用于RAID阵列,其特征在于,该装置包括: 读错误标识模块,用于在业务读过程中,如果产生的读错误,将对应磁盘数据块标记第一类别读错误; 读1执行模块,用于当后续业务的读1所需读取的数据块是所述标记有第一类别读错误的磁盘数据块时,执行对该磁盘数据块的读操作。
7.一种基于磁盘读错误类别读取磁盘数据的装置,该装置应用于RAID阵列,其特征在于,该装置包括: 读错误标识模块,用于在阵列同步过程中,如果在预读阶段产生两个或者两个以上读错误时,将其中一个读错误对应的磁盘数据块标记第二类别读错误,将剩余的读错误对应的磁盘数据块分别标记第一类别读错误,或者将所有读错误对应的磁盘数据块分别标记第一类别读错误,且将校验盘对应的磁盘数据块标记第二类别读错误; 读1执行模块,用于当后续业务的读1所需读取的数据块是所述标记有第一类别读错误的磁盘数据块时,执行对该磁盘数据块的读操作;当后续业务的读1所需读取的数据块是所述标记有第二类别读错误的磁盘数据块时,则不读取该磁盘数据块的数据。
8.如权利要求7所述的装置,其特征在于,所述读错误标识模块,还用于在阵列同步过程中,如果在预读阶段产生一个读错误时,将该读错误对应的磁盘数据块标记第一类别读错误,如果转读校验盘数据块进行修复时对该校验盘数据块读取错误,则将该校验盘数据块标记第二类别读错误。
9.一种基于磁盘读错误类别读取磁盘数据的装置,该装置应用于RAID阵列,其特征在于,该装置包括: 读错误标识模块,用于在阵列重建过程中,如果读磁盘数据块时产生读错误,则将所述读错误对应的磁盘数据块标记第一类别读错误,将重建盘上对应的磁盘数据块标记第二类别读错误; 读1执行模块,用于当后续业务的读1所需读取的数据块是所述标记有第一类别读错误的磁盘数据块时,执行对该磁盘数据块的读操作;当后续业务的读1所需读取的数据块是所述标记有第二类别读错误的磁盘数据块时,则不读取该磁盘数据块的数据。
10.如权利要求6?9任一项所述的装置,其特征在于,所述装置还包括读错误标记清除模块;对于标记有第一类别读错误的磁盘数据块,如果满数据块读取成功,则读错误标记清除模块清除第一类别读错误标识;对于标记有第二类别读错误的磁盘数据块,如果有新的数据写入该磁盘数据块且满数据块写成功时,则读错误标记清除模块清除该第二类别读错误标识。
【文档编号】G06F11/07GK104268028SQ201410488434
【公开日】2015年1月7日 申请日期:2014年9月22日 优先权日:2014年9月22日
【发明者】郭永强, 王丽红, 罗亚山 申请人:浙江宇视科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1