RAID阵列磁盘暂时失效的数据存储与修复方法及系统

文档序号:32799998发布日期:2023-01-03 23:23阅读:49来源:国知局
RAID阵列磁盘暂时失效的数据存储与修复方法及系统
raid阵列磁盘暂时失效的数据存储与修复方法及系统
技术领域
1.本发明涉及数据存储领域,尤其涉及一种raid阵列磁盘暂时失效的数据存储与修复方法及系统。


背景技术:

2.磁盘失效存在多种形式,即存在永久失效,也存在暂时失效。暂时失效指磁盘仅在一段时间内无法提供正常访问功能,但此后可恢复正常的失效模式。若磁盘发生暂时失效,故障磁盘仅丢失了暂时失效时间段内的数据。现有的raid数据修复模式会对所有数据进行重建,造成系统长期停机。如果暂时失效率较高,将使raid因频繁重建而长期处于不可用状态。
3.针对以上问题,目前业界提出了一系列raid数据自主修复方法,主要方法为当发生磁盘失效时,对raid进行降级,并设置降级io列表记录故障期间发生的所有写入io地址及写入时的故障盘位置等信息。当进行raid读取时,首先检索io是否位于该列表中,如果是,则根据该io写入时的磁盘故障情况结合raid的数据冗余与校验功能对io数据进行重建,从而实现数据可靠读取。当故障磁盘恢复正常功能,则重建降级io列表中io在恢复盘中的对应数据,并重新写入已恢复的故障盘,实现自主修复。
4.尽管现有方案可以有效减少暂时失效导致的系统恢复数据量,但存在如下问题:1)磁盘发生故障后,修复完成前,所有读io均需首先查找降级io列表后方可进行数据访问,随着故障时间的增长,该表长度将会不断扩张,导致检索延迟增加,严重降低raid访问性能。2)降级io列表是raid可靠读取的必备信息,如果将降级io列表存储在额外可靠存储器件中,由于降级io列表会随着故障时间不断增长,因此需要在系统中增加较大容量的高可靠存储器,显著增加raid成本。3)如果将降级io列表直接存储在raid中,写入降级io列表本身也会产生写入io,导致降级io列表改变;为存储改变后的io列表,又会导致新的写入io,从而周而复始,导致写入过程永远无法完成。而若不记录降级io列表写入io信息,则无法在出现不同磁盘暂时失效时可靠判定降级io列表的正确性与可用性。


技术实现要素:

5.为解决上述技术问题,本发明提供了一种raid阵列磁盘暂时失效的数据存储与修复方法及系统。
6.本发明的raid阵列磁盘暂时失效的数据存储与修复方法的技术方案如下:
7.s1、当目标raid阵列初始化运行时,根据所述目标raid阵列的所有磁盘分别设置用于数据写入的第一列表和用于数据读取的第二列表;
8.s2、当目标raid阵列中的任一磁盘的运行状态发生变化时,根据包含所述目标raid阵列中的所有当前可访问磁盘更新第一列表,且当更新后的第一列表中未包含所述目标raid阵列中的所有磁盘时,根据所述更新后的第一列表生成至少一个降级io列表,并判断所述更新后的第一列表中的磁盘数量是否满足第一预设条件,得到第一判断结果;
9.s3、当所述第一判断结果为是时,获取并根据共同包含于所述任一磁盘的运行状态发生变化前的第二列表和所述更新后的第一列表中的所有磁盘,对所述第二列表进行更新,并判断所述更新后的第二列表中的磁盘数量是否满足第二预设条件,得到第二判断结果;
10.s4、当所述第二判断结果为是时,判断所述第一列表的磁盘数量是否大于所述新的第二列表中的磁盘数量,得到第三判断结果;
11.s5、当第三判断结果为是时,采用预设修复方式对所述目标raid阵列的数据进行修复,当所述目标raid阵列修复完成时,根据所述第一列表对所述第二列表进行更新,以完成所述目标raid阵列的数据修复。
12.本发明的raid阵列磁盘暂时失效的数据存储与修复方法的有益效果如下:
13.本发明的方法在不中断正常访问业务的同时,提高了磁盘在暂时失效时的数据存储以及数据修复过程的稳定性。
14.在上述方案的基础上,本发明的raid阵列磁盘暂时失效的数据存储与修复方法还可以做如下改进。
15.进一步,所述预设修复方式包括:
16.基于预设顺序,依次判断每个降级io列表中是否包含所述更新后的第一列表中的所有磁盘,得到每个降级io列表对应的第四判断结果,并将第四判断结果为否的每个降级io列表确定为待处理io列表;
17.分别读取每个待处理io列表中的每个io信息所对应的目标数据,并分别将每个目标数据重新写入所述目标raid阵列,并删除每个待处理io列表。
18.进一步,读取任一待处理io列表中的任一io信息所对应的目标数据的过程,包括:
19.从所述新的第二列表的所有磁盘中,获取目标io信息对应的读取数据;其中,目标io信息为:所述任一待处理io列表中的所述任一io信息;
20.通过raid数据冗余与校验功能,获取所述目标io信息对应的读取数据中的目标数据。
21.进一步,将任一io信息的目标数据重新写入所述目标raid阵列的相应磁盘中的过程,包括:
22.判断所述更新后的第一列表中是否包含所述目标raid阵列中的所有磁盘,得到第五判断结果;
23.当所述第五判断结果为是时,将目标io信息对应的目标数据分别写入至对应的磁盘中;其中,目标io信息为:所述任一待处理io列表中的所述任一io信息。
24.进一步,所述将任一io信息的目标数据重新写入所述目标raid阵列的相应磁盘中的过程,还包括:
25.当所述第五判断结果为否时,将所述目标io信息对应的目标数据分别写入至对应的磁盘中,并将所述目标io信息对应存储至所述更新后的第一列表对应的降级io列表中。
26.进一步,还包括:
27.当所述更新后的第一列表中不包含所述目标raid阵列中的所有磁盘时,将所有写入io信息存储至所述第一列表对应的降级io列表。
28.进一步,还包括:
29.当所述目标raid阵列停止运行时,存储所述目标raid阵列在当前运行状态下对应的第一列表和第二列表;
30.当所述目标raid阵列上电运行时,加载所述目标raid阵列停止运行时所存储的第一列表和第二列表。
31.本发明的raid阵列磁盘暂时失效的数据存储与修复系统的技术方案如下:
32.包括:初始化模块、第一处理模块、第二处理模块、第三处理模块和运行模块;
33.所述初始化模块用于:当目标raid阵列初始化运行时,根据所述目标raid阵列的所有磁盘分别设置用于数据写入的第一列表和用于数据读取的第二列表;
34.所述第一处理模块用于:当目标raid阵列中的任一磁盘的运行状态发生变化时,根据包含所述目标raid阵列中的所有当前可访问磁盘更新第一列表,且当更新后的第一列表中未包含所述目标raid阵列中的所有磁盘时,根据所述更新后的第一列表生成至少一个降级io列表,并判断所述更新后的第一列表中的磁盘数量是否满足第一预设条件,得到第一判断结果;
35.所述第二处理模块用于:当所述第一判断结果为是时,获取并根据共同包含于所述任一磁盘的运行状态发生变化前的第二列表和所述更新后的第一列表中的所有磁盘,对所述第二列表进行更新,并判断所述更新后的第二列表中的磁盘数量是否满足第二预设条件,得到第二判断结果;
36.所述第三处理模块用于:当所述第二判断结果为是时,判断所述第一列表的磁盘数量是否大于所述新的第二列表中的磁盘数量,得到第三判断结果;
37.所述运行模块用于:当第三判断结果为是时,采用预设修复方式对所述目标raid阵列的数据进行修复,当所述目标raid阵列修复完成时,根据所述第一列表对所述第二列表进行更新,以完成所述目标raid阵列的数据修复。
38.本发明的raid阵列磁盘暂时失效的数据存储与修复系统的有益效果如下:
39.本发明的系统在不中断正常访问业务的同时,提高了磁盘在暂时失效时的数据存储以及数据修复过程的稳定性。
40.在上述方案的基础上,本发明的raid阵列磁盘暂时失效的数据存储与修复系统还可以做如下改进。
41.进一步,所述预设修复方式包括:
42.基于预设顺序,依次判断每个降级io列表中是否包含所述更新后的第一列表中的所有磁盘,得到每个降级io列表对应的第四判断结果,并将第四判断结果为否的每个降级io列表确定为待处理io列表;
43.分别读取每个待处理io列表中的每个io信息所对应的目标数据,并分别将每个目标数据重新写入所述目标raid阵列,并删除每个待处理io列表。
44.进一步,读取任一待处理io列表中的任一io信息所对应的目标数据的过程,包括:
45.从所述新的第二列表的所有磁盘中,获取目标io信息对应的读取数据;其中,目标io信息为:所述任一待处理io列表中的所述任一io信息;
46.通过raid数据冗余与校验功能,获取所述目标io信息对应的读取数据中的目标数据。
附图说明
47.图1为本发明实施例的raid阵列磁盘暂时失效的数据存储与修复方法的流程示意图;
48.图2为本发明实施例的raid阵列磁盘暂时失效的数据存储与修复方法中目标raid阵列正常运行情形下的示意图;
49.图3为本发明实施例的raid阵列磁盘暂时失效的数据存储与修复方法中目标raid阵列磁盘故障情形下的第一示意图;
50.图4为本发明实施例的raid阵列磁盘暂时失效的数据存储与修复方法中目标raid阵列磁盘恢复且数据未恢复时的示意图;
51.图5为本发明实施例的raid阵列磁盘暂时失效的数据存储与修复方法中目标raid阵列磁盘故障情形下的第二示意图;
52.图6为本发明实施例的raid阵列磁盘暂时失效的数据存储与修复方法中目标raid阵列磁盘数据修复后存储状态的示意图;
53.图7为本发明实施例的raid阵列磁盘暂时失效的数据存储与修复方法中目标raid阵列磁盘数据修复后正常运行情形下的示意图;
54.图8为本发明实施例的raid阵列磁盘暂时失效的数据存储与修复系统的结构示意图。
具体实施方式
55.如图1所示,本发明实施例的raid阵列磁盘暂时失效的数据存储与修复方法,包括如下步骤:
56.s1、当目标raid阵列初始化运行时,根据所述目标raid阵列的所有磁盘分别设置用于数据写入的第一列表和用于数据读取的第二列表。
57.其中,第一列表中的磁盘用于目标raid阵列的数据写入,第二列表中的磁盘用于目标raid阵列的数据读取。初始化时,第一列表与第二列表完全相同。
58.具体地,假设目标raid阵列包括磁盘1/2/3/4/5,则第一列表为磁盘1/2/3/4/5,第二列表为磁盘1/2/3/4/5。
59.s2、当目标raid阵列中的任一磁盘的运行状态发生变化时,根据包含所述目标raid阵列中的所有当前可访问磁盘更新第一列表,且当更新后的第一列表中未包含所述目标raid阵列中的所有磁盘时,根据所述更新后的第一列表生成至少一个降级io列表,并判断所述更新后的第一列表中的磁盘数量是否满足第一预设条件,得到第一判断结果。
60.其中,目标raid阵列为任意一种类型的raid磁盘阵列,其类型包括但不限于:raid3、raid5、raid6和raid7等。运行状态包括:正常运行或暂时失效。第一列表中为:目标raid阵列的磁盘写入列表,包括当前目标raid阵列中的所有当前可访问的磁盘。第一预设条件为:第一列表中的磁盘数量大于或等于raid数据冗余与校验功能所要求的磁盘数量。
61.其中,降级io列表均存储在目标raid阵列中,具体位置可以由程序指定或配置。
62.其中,根据第一列表得到至少一个降级io列表的过程包括:第一列表
63.所关联的降级io列表可以为新建列表,也可以为已存在列表。如果为新建
64.降级io列表,则记录列表创建时的第一列表中的可用磁盘。如果为已存在
65.列表,则该降级io列表的可用磁盘应与第一列表中的可用磁盘完全相同。
66.具体地,当目标raid阵列中的任一磁盘的运行状态发生变化时,清除运行状态发生变化前的raid磁盘写入列表,生成包含目标raid阵列的所有当前可访问磁盘的第一列表,当所述第一列表中没有包含目标raid阵列中的所有磁盘时,根据第一列表设置得到至少一个降级io列表,并判断第一列表中的磁盘数量是否满足raid数据冗余与校验功能所要求的磁盘数量,得到第一判断结果。
67.需要说明的是,对于raid数据冗余与校验功能所要求的磁盘数量,不同类型的目标raid阵列所要求的磁盘数量不同;例如,对于raid5,如果超过1块磁盘损坏则判定失效,否则有效;对于raid6,可以容忍2块及以上磁盘损坏。
68.需要说明的是,目标raid阵列运行时会对每个磁盘的运行状态进行监控,当发现原本正常磁盘发生异常(暂时失效),或者异常(暂时失效)磁盘恢复正常时判定运行状态发生变化。磁盘状态的监控方法为:检测磁盘是否正常连接或读写是否超时等。
69.s3、当所述第一判断结果为是时,获取并根据共同包含于所述任一磁盘的运行状态发生变化前的第二列表和所述更新后的第一列表中的所有磁盘,对所述第二列表进行更新,并判断所述更新后的第二列表中的磁盘数量是否满足第二预设条件,得到第二判断结果。
70.例如,当磁盘的运行状态发生变化前,第一列表为:1/2/3/4/5,第二列表为:1/2/3/4/5;此时磁盘5失效,则更新后的第一列表为1/2/3/4,运行状态发生变化前的第二列表为1/2/3/4/5,更新后的第二列表为1/2/3/4。当磁盘5恢复正常时,更新后的第一列表为1/2/3/4/5,运行状态发生变化前的第二列表为第一列表为1/2/3/4,则更新后的第二列表为1/2/3/4。
71.其中,第二预设条件为:新的第二列表中的磁盘数量大于或等于raid数据冗余与校验功能所要求的磁盘数量。
72.具体地,当第一列表中的磁盘数量满足raid数据冗余与校验功能所要求的磁盘数量时,根据第一列表和第二列表生成新的第二列表,并判断新的第二列表中的磁盘数量是否大于或等于raid数据冗余与校验功能所要求的磁盘数量,得到第二判断结果。
73.需要说明的是,当第一判断结果为否时,则暂时停止运行,待可用的磁盘恢复至raid数据冗余与校验功能所要求的磁盘数量后继续运行。
74.s4、当所述第二判断结果为是时,判断所述第一列表的磁盘数量是否大于所述新的第二列表中的磁盘数量,得到第三判断结果。
75.具体地,当新的第二列表中的磁盘数量大于或等于raid数据冗余与校验功能所要求的磁盘数量时,第一列表是否包含第二列表中不存在的磁盘,得到第三判断结果。
76.需要说明的是,当第二判断结果为否时,则暂时停止运行,待可用的磁盘恢复至raid数据冗余与校验功能所要求的磁盘数量后继续运行。
77.s5、当第三判断结果为是时,采用预设修复方式对所述目标raid阵列的数据进行修复,当所述目标raid阵列修复完成时,根据所述第一列表对所述第二列表进行更新,以完成所述目标raid阵列的数据修复。
78.其中,根据第一列表对第二列表进行更新的过程包括:当遍历所有的降级io列表后,根据第一列表重新设置第二列表,将第二列表中的磁盘更新为第一列表中的磁盘。例
如,假设第一列表中的磁盘为1/2/3,第二列表的磁盘为1/2,则根据第一列表对第二列表进行更新,更新后的第二列表为1/2/3。
79.具体地,当第一列表的磁盘数量大于新的第二列表中的磁盘数量时,采用预设修复方式对目标raid阵列进行数据修复,该磁盘修复完成后,根据第一列表(raid磁盘写入列表)对第二列表(raid磁盘读取列表)进行更新。
80.需要说明的是,当第三判断结果为否时,则停止执行数据修复的过程。
81.较优地,所述预设修复方式包括:
82.基于预设顺序,依次判断每个降级io列表中是否包含所述更新后的第一列表中的所有磁盘,得到每个降级io列表对应的第四判断结果,并将第四判断结果为否的每个降级io列表确定为待处理io列表。
83.其中,预设顺序可以是顺序、逆序或者其他顺序,在此不设限制。
84.其中,待处理io列表为需要执行数据修复的降级io列表。
85.具体地,遍历所有的降级io列表,依次判断每个降级io列表的可用磁盘是否包含第一列表中的所有磁盘,得到每个降级io列表的第四判断结果;如果任一降级io列表中不包含第一列表中的所有磁盘,则该降级io列表的第四判断结果为否,并将该降级io列表确定为待处理io列表,直至将第四判断结果为否的每个降级io列表确定为待处理io列表。例如,任一降级io列表中的可用磁盘为1/2/4/5,第一列表为1/2/3/4/5。其中磁盘3为该降级io列表中不存在的磁盘,因此对此列表中的io信息进行修复。
86.需要说明的是,当任一降级io列表的第四判断结果为是时,则该降级io列表不执行数据修复。
87.分别读取每个待处理io列表中的每个io信息所对应的目标数据,并分别将每个目标数据重新写入所述目标raid阵列,并删除每个待处理io列表。
88.其中,每个待处理io列表中包含至少一个io信息,每个io信息包括io地址与长度。
89.需要说明的是,完成后,当任一io信息完成读取和写入后,在对应的待处理io列表中删除该io信息记录。当任一降级io列表中的所有io信息被删除后,则删除该降级io列表。
90.较优地,读取任一待处理io列表中的任一io信息所对应的目标数据的过程,包括:
91.从所述新的第二列表的所有磁盘中,获取目标io信息对应的读取数据。
92.其中,目标io信息为:所述任一待处理io列表中的所述任一io信息;
93.具体地,读取目标io信息在新的第二列表(更新后的raid磁盘读取列表)中的所有磁盘中对应的读取数据。
94.通过raid数据冗余与校验功能,获取所述目标io信息对应的读取数据中的目标数据。
95.具体地,当更新的第二列表中未包含目标raid阵列中的所有磁盘,则通过raid数据冗余与校验功能计算得到目标io信息对应的读取数据中的目标数据。
96.此外,由于目标raid阵列处于修复过程,因此不存在新的第二列表中包含目标raid阵列中的所有磁盘的情形。
97.需要说明的是,目标数据指的是用户实际写入和读取的数据。为提升可靠性,目标raid阵列会在目标数据的基础上增加一些冗余信息(即读取数据中包含一些冗余信息)。当出现故障时,如果部分目标数据丢失,可以通过冗余信息以及剩余的有效数据恢复这部分
丢失数据。
98.较优地,将任一io信息的目标数据重新写入所述目标raid阵列的相应磁盘中的过程,包括:
99.判断所述更新后的第一列表中是否包含所述目标raid阵列中的所有磁盘,得到第五判断结果;
100.当所述第五判断结果为是时,将目标io信息对应的目标数据分别写入至对应的磁盘中。
101.其中,目标io信息为:所述任一待处理io列表中的所述任一io信息。
102.具体地,当第一列表中包含所述目标raid阵列中的所有磁盘时,将目标io信息(包括io地址和长度)对应的目标数据分别写入至对应的磁盘中。
103.较优地,所述将任一io信息的目标数据重新写入所述目标raid阵列的相应磁盘中的过程,还包括:
104.当所述第五判断结果为否时,将所述目标io信息对应的目标数据分别写入至对应的磁盘中,并将所述目标io信息对应存储至所述更新后的第一列表对应的降级io列表中。
105.具体地,当第一列表中不包含目标raid阵列中的所有磁盘时,此时目标raid阵列中存在故障盘,将目标io信息对应的目标数据分别写入至对应的磁盘中,并将目标io信息对应存储至所述第一列表对应的降级io列表
106.中。例如,当磁盘2失效时,向阵列的0x100地址写入数据长度0x200,则
107.记录io信息为:0x100地址写入数据长度0x200。
108.需要说明的是,在判断所述第一列表中是否包含所述目标raid阵列中的所有磁盘的过程之前,还包括:根据raid数据冗余与校验功能要求计算目标raid阵列中的各磁盘的应写入数据;向第一列表中的磁盘进行实际写入,忽略其余磁盘。
109.较优地,还包括:
110.当所述更新后的第一列表中不包含所述目标raid阵列中的所有磁盘时,将所有写入io信息存储至所述更新后的第一列表对应的降级io列表。
111.具体地,当所述目标raid阵列中磁盘的运行状态正常时(即不存在暂时失效或恢复正常的情形),此时通过第一列表对数据进行写入,通过第二列表对数据进行读取。例如,假设共有5个磁盘,存在以下两种情形:

第一列表为:1/2/3/4/5,第二列表为:1/2/3/4/5;

第一列表为:1/2/3/4,第二列表为:1/2/3/4。
112.较优地,还包括:
113.当所述目标raid阵列停止运行时,存储所述目标raid阵列在当前运行状态下对应的第一列表和第二列表。
114.当所述目标raid阵列上电运行时,加载所述目标raid阵列停止运行时所存储的第一列表和第二列表。
115.为更好地说明本实施例的技术方案,采用以下实例进行说明。
116.目标raid阵列由5磁盘构成,任意三磁盘中的正确数据可以恢复另外两块磁盘的正确数据。
117.①
如图2所示,目标raid阵列在正常访问中,不存在故障磁盘。此时所有读写访问对磁盘1/2/3/4/5执行,其中,第一列表为1/2/3/4/5,第二列表为1/2/3/4/5。
118.②
如图3所示,假设此时磁盘5发生故障,则第一列表更新为1/2/3/4,并关联降级io列表;第二列表更新为新的第二列表,新的第二列表为1/2/3/4。其中,此时数据的写入仅对磁盘1/2/3/4执行操作,同时在所关联降级io表中添加io信息;此时数据的读取仅对磁盘1/2/3/4执行。
119.③
如图4所示,假设此时磁盘5恢复,第一列表更新为1/2/3/4/5,在完成自主修复前,新的第二列表依旧为1/2/3/4。此时数据的写入对磁盘1/2/3/4/5执行操作,无需添加降级io表记录。在未完成自主修复前,数据的读取依旧仅对磁盘1/2/3/4执行。
120.④
如图5所示,假设在完成数据修复前,磁盘4故障,则第一列表更新为1/2/3/5,并关联降级io列表;新的第二列表更新为1/2/3。此时数据的写入仅对磁盘1/2/3/5执行操作,同时在所关联降级io表中添加io信息;此时数据的读取仅对磁盘1/2/3执行。
121.⑤
此时,第一列表长度大于新的第二列表,执行数据修复的过程。自主修复过程检索已存在降级io列表,发现第一列表中存在磁盘5失效降级io表的raid磁盘信息中不存在的磁盘(磁盘5),因此对该列表中的所有io执行读取并回写(写入)操作。该过程中,数据的读取仅对磁盘1/2/3执行,数据的写入仅对磁盘1/2/3/5执行操作,同时在所关联降级io表中添加io信息。执行完成后,删除该列表。对于磁盘4暂时失效时对应的降级io表,由于不满足自主修复条件,所以跳过数据修复的步骤。如图6所示,当遍历降级io列表完成时,根据第一列表更新设置第二列表。
122.⑥
假设磁盘4恢复,第一列表更新为1/2/3/4/5,根据第二列表确定更新后的新的第二列表为1/2/3/5。此时数据的写入对磁盘1/2/3/4/5执行操作,无需添加降级io表记录。在未完成自主修复前,数据的读取依旧仅对磁盘1/2/3/5执行。由于此时第一列表长度大于新的第二列表长度,执行数据修复的过程。
123.自主修复过程检索已存在降级io列表,发现第一列表中存在磁盘4暂时失效时的降级io表中不存在的磁盘(磁盘4),因此对该列表中的所有io信息执行读取并回写(写入)操作。执行完成后,删除该列表。如图7所示,当遍历降级io列表完成时,根据第一列表更新设置第二列表。此时目标raid阵列的所有磁盘恢复正常运行。
124.本实施例的技术方案在不中断正常访问业务的同时,提高了磁盘在暂时失效时的数据存储以及数据修复过程的稳定性。
125.如图8所示,本发明实施例的raid阵列磁盘暂时失效的数据存储与修复系统200,初始化模块210、第一处理模块220、第二处理模块230、第三处理模块240和运行模块250;
126.所述初始化模块210用于:当目标raid阵列初始化运行时,根据所述目标raid阵列的所有磁盘分别设置用于数据写入的第一列表和用于数据读取的第二列表;
127.所述第一处理模块220用于:当目标raid阵列中的任一磁盘的运行状态发生变化时,根据包含所述目标raid阵列中的所有当前可访问磁盘更新第一列表,且当更新后的第一列表中未包含所述目标raid阵列中的所有磁盘时,根据所述更新后的第一列表生成至少一个降级io列表,并判断所述更新后的第一列表中的磁盘数量是否满足第一预设条件,得到第一判断结果;
128.所述第二处理模块230用于:当所述第一判断结果为是时,获取并根据共同包含于所述任一磁盘的运行状态发生变化前的第二列表和所述更新后的第一列表中的所有磁盘,对所述第二列表进行更新,并判断所述更新后的第二列表中的磁盘数量是否满足第二预设
条件,得到第二判断结果;
129.所述第三处理模块240用于:当所述第二判断结果为是时,判断所述第一列表的磁盘数量是否大于所述新的第二列表中的磁盘数量,得到第三判断结果;
130.所述运行模块250用于:当第三判断结果为是时,采用预设修复方式对所述目标raid阵列的数据进行修复,当所述目标raid阵列修复完成时,根据所述第一列表对所述第二列表进行更新,以完成所述目标raid阵列的数据修复。
131.较优地,所述预设修复方式包括:
132.基于预设顺序,依次判断每个降级io列表中是否包含所述更新后的第一列表中的所有磁盘,得到每个降级io列表对应的第四判断结果,并将第四判断结果为否的每个降级io列表确定为待处理io列表;
133.分别读取每个待处理io列表中的每个io信息所对应的目标数据,并分别将每个目标数据重新写入所述目标raid阵列,并删除每个待处理io列表。
134.较优地,读取任一待处理io列表中的任一io信息所对应的目标数据的过程,包括:
135.从所述新的第二列表的所有磁盘中,获取目标io信息对应的读取数据;其中,目标io信息为:所述任一待处理io列表中的所述任一io信息;
136.通过raid数据冗余与校验功能,获取所述目标io信息对应的读取数据中的目标数据。
137.本实施例的技术方案在不中断正常访问业务的同时,提高了磁盘在暂时失效时的数据存储以及数据修复过程的稳定性。
138.上述关于本实施例的raid阵列磁盘暂时失效的数据存储与修复系统200中的各参数和各个模块实现相应功能的步骤,可参考上文中关于raid阵列磁盘暂时失效的数据存储与修复方法的实施例中的各参数和步骤,在此不做赘述。
139.在此处所提供的说明书中,说明了大量具体细节。然而能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。类似地,为了精简本发明并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明实施例的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。其中,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
140.应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。上述实施例中的步骤,除有特殊说明外,不应理解为对执行顺序的限定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1