CN109739436A - Raid重构方法、存储介质和装置 - Google Patents
Raid重构方法、存储介质和装置 Download PDFInfo
- Publication number
- CN109739436A CN109739436A CN201811552874.2A CN201811552874A CN109739436A CN 109739436 A CN109739436 A CN 109739436A CN 201811552874 A CN201811552874 A CN 201811552874A CN 109739436 A CN109739436 A CN 109739436A
- Authority
- CN
- China
- Prior art keywords
- data
- drop column
- band
- drop
- module
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种RAID重构方法,当x个成员盘发生故障时,包括:步骤11:令故障成员盘上的数据为第一数据,判断热备空间的剩余空间是否足以存储第一数据,如果否,执行步骤13:判断m‑x是否大于等于RAID盘数最小值且未故障成员盘的剩余空间是否满足步骤15重映射的剩余空间要求,如果是,执行步骤14:构建降列条带:每一降列条带包括y个校验数据和m‑x‑y个用户数据,y≤n;步骤15:恢复第一数据中的用户数据,并将未故障成员盘上的用户数据和第一数据中的用户数据重映射至降列条带的用户数据位置,更新降列条带的校验数据和降列条带映射表。基于本发明的方法,通过增设步骤14和15的降列重构,降低了原磁盘重构方法的风险,提高了RAID系统的可靠性。
Description
技术领域
本发明涉及计算机领域,特别涉及一种RAID重构方法、存储介质和装置。
背景技术
存储系统是整个IT系统的基石,是IT技术赖以存在和发挥效能的基础平台。早先的存储形式是存储设备(通常是磁盘)与应用服务器其他硬件直接安装于同一个机箱之内,并且该存储设备是给本台应用服务器独占使用的。
磁盘冗余阵列(RAID,Redundant Array of Inexpensive Disks)技术将一个个单独的磁盘以不同的组合方式形成一个逻辑硬盘,从而提高了磁盘读取的性能和数据的安全性。
在RAID机制容忍磁盘损坏的范围内,及时发现并用同一规格的磁盘把故障成员磁盘(或称为故障成员盘)进行替换,RAID将会自动重构,信息数据不受影响。如果磁盘损坏数量超出容忍范围,磁盘冗余阵列便会失效。
磁盘重构是指:在某一成员盘(导致RAID重构的故障磁盘)出现故障之后,可以利用RAID组中剩余磁盘上的内容恢复导致RAID重构的故障磁盘的内容并将恢复的内容写到一个空闲磁盘中。当空闲磁盘空间用完,再有成员盘故障,RAID组变为降级模式,等待人工替换故障磁盘,如果故障磁盘未被替换时又出现新的故障磁盘,就会导致RAID失效,可见RAID重构时,数据失效的风险较大。
发明内容
有鉴于此,本发明提供一种RAID重构方法、存储介质和装置,以解决如何降低RAID重构机制的风险。
本发明提供一种RAID重构方法,应用于RAID系统,该系统包含:m个成员盘,每一个条带包含n个校验数据和m-n个用户数据,m-n≥2,当x个成员盘发生故障时,x≤n,该方法包括:
步骤11:令故障成员盘上的数据为第一数据,判断热备空间或热备盘的剩余空间是否足以存储第一数据,如果是,执行步骤12,如果否,执行步骤13;
步骤12:恢复第一数据,并将第一数据写入热备空间或热备盘的剩余空间;
步骤13:判断m-x是否大于等于RAID盘数最小值且未故障成员盘的剩余空间是否满足步骤15重映射的剩余空间要求,如果是,执行步骤14;
步骤14:构建降列条带:每一降列条带包括y个校验数据和m-x-y个用户数据,y≤n;
步骤15:恢复第一数据中的用户数据,并将未故障成员盘上的用户数据和第一数据中的用户数据重映射至降列条带的用户数据位置,更新降列条带的校验数据和降列条带映射表。
本发明还提供一种非瞬时计算机可读存储介质,非瞬时计算机可读存储介质存储指令,指令在由处理器执行时使得处理器执行上述RAID重构方法中的步骤。
本发明还提供一种RAID重构装置,包括存储器、处理器以及存储在存储器中并可在处理器上运行的计算机程序,处理器执行计算机程序时实现如权利要求1至4中上述RAID重构方法中的步骤。
本发明还提供一种RAID重构装置,应用于RAID系统,系统包含:m个成员盘,每一个条带包含n个校验数据和m-n个用户数据,m-n≥2,该装置包括:
判断模块1:当x个成员盘发生故障时,x≤n,令故障成员盘上的数据为第一数据,判断热备空间或热备盘的剩余空间是否足以存储第一数据,如果是,执行正常重构模块,如果否,执行判断模块2;
正常重构模块:恢复第一数据,并将第一数据写入热备空间或热备盘的剩余空间;
判断模块2:判断m-x是否大于等于RAID盘数最小值且未故障成员盘的剩余空间是否满足降列重构模块重映射的剩余空间要求,如果是,执行降列条带构建模块;
降列条带构建模块:每一降列条带包括y个校验数据和m-x-y个用户数据,y≤n;
降列重构模块:恢复第一数据中的用户数据,并将未故障成员盘上的用户数据和第一数据中的用户数据重映射至降列条带的用户数据位置,更新降列条带的校验数据和降列条带映射表。
本发明的RAID重构方法,当热备空间不足以存储故障成员盘的数据时,通过步骤14和15(简称为降列重构)自动重建磁盘阵列并重构条带结构以实现数据恢复和重新存储,不必等待人工替换故障成员盘,一次降列重构后,还可以进行下一次降列重构,降低了原磁盘重构方法的风险,提高了RAID系统的可靠性。
附图说明
图1为RAID系统示意图;
图2a为RAID系统数据第一存储布局示意图;
图2b为RAID系统数据第二存储布局示意图;
图3本发明RAID重构方法的流程图;
图4a为成员盘故障第一示意图;
图4b为成员盘故障第二示意图;
图5a为本发明RAID重构方法第一实施例的第一结果示意图;
图5b为本发明RAID重构方法第一实施例的第二结果示意图;
图5c为本发明RAID重构方法第一实施例的第三结果示意图;
图6为成员盘故障第三示意图;
图7a为本发明RAID重构方法第二实施例的第一结果示意图;
图7b为本发明RAID重构方法第二实施例的第二结果示意图;
图7c为本发明RAID重构方法第三和第四实施例的结果示意图;
图8为本发明RAID重构方法第五实施例的结果示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。
本发明的RAID重构方法,应用于RAID系统,该系统包含:成员盘1、成员盘2…成员盘m。
假设m=5,则RAID系统如图1所示,其中的DATA是等待写入RAID系统的数据,包括:D0、D1、D2、D3、D4、D5、D6、D7、D8、D9、D10和D11。硬盘Disk1至Disk5组成磁盘阵列,每个硬盘的存储空间又细分为多个数据块,例如CK10为Disk1的一个数据块,CK20为Disk2的一个数据块,CK30为Disk3的一个数据块……。整个磁盘阵列的存储空间表现为一个数据块矩阵,该矩阵任一一行数据组成一个条带,每一个条带包含n个校验数据和m-n个用户数据,m-n≥2。
假设n=1,则CK10、CK20、CK30、CK40、CK50组成一个条带,其中CK10、CK20、CK30、CK40可用于存储4个数据,CK50为校验数据块,校验数据根据CK10、CK20、CK30、CK40中存储的用户数据生成。图2a为Data写入RAID系统后的第一数据布局示意图,其中D0写入CK10数据块,D1写入CK20数据块,D2写入CK30数据块,D3写入CK40数据块,CK50中的校验数据P1根据D0、D1、D2、D3、D4生成,以此类推,Data数据写入RAID系统后刚好生成3个条带,分别为图中的“条带1、条带2和条带3”。
图2b为Data写入RAID系统后的第二数据布局示意图,与图2a的差异在于,校验数据块在磁盘阵列中成对角线设置,条带1的校验数据P1位于数据块CK50,条带2的校验数据P2位于数据块CK41,条带3的校验数据P3位于数据块CK32,以此类推。
校验数据块的作用在于:当条带的用户数据所属的任一磁盘出现故障,可根据校验数据和其他未故障成员盘的用户数据恢复出故障成员盘的用户数据。另一方面,当条带的校验数据所属的任一磁盘出现故障,也可以根据其他成员盘的用户数据重新生成校验数据。
当x个成员盘发生故障时,x≤n,如图3所示,本发明的RAID重构方法包括:
步骤11:令故障成员盘上的数据为第一数据,判断热备空间或热备盘的剩余空间是否足以存储第一数据,如果是,执行步骤12,如果否,执行步骤13;
步骤12:恢复第一数据,并将第一数据写入热备空间或热备盘的剩余空间;
步骤13:判断m-x是否大于等于RAID盘数最小值且未故障成员盘的剩余空间是否满足步骤15重映射的剩余空间要求,如果是,执行步骤14;
步骤14:构建降列条带:每一降列条带包括y个校验数据和m-x-y个用户数据,y≤n;
隐含地,参照m-n≥2的要求,同理步骤14也需满足m-x-y≥2。
步骤15:恢复第一数据中的用户数据,并将未故障成员盘上的用户数据和第一数据中的用户数据重映射至降列条带的用户数据位置,更新降列条带的校验数据和降列条带映射表。
一个磁盘阵列的任一条带还可以包含多个校验数据,不同的校验数据采用不用的算法生成,任一校验数据均可用于恢复故障的用户数据,由于多个校验数据的RAID重构方法与一个校验数据的RAID重构方法原理相同,下面只给出一个校验数据的RAID重构方法的实施例说明。
以下给出图3方法的实施例。
实施例一
如图4a所示,当成员盘Disk4发生故障后,先检测图4a左侧的热备空间或热备盘的剩余空间是否足以存储故障成员盘上的数据(具体包括:D3、D7、D11)。如果满足,则将故障成员盘上的数据(D3、D7、D11)写入热备空间或热备盘的剩余空间。在图4a中,将D3写入了CK60,D7写入了CK61,D11写入了CK62。
如图4b所示,当成员盘Disk4发生故障后,先检测图4b左侧的热备空间或热备盘的剩余空间是否足以存储故障成员盘上的数据(具体包括:D3、P2、D10)。如果满足,则将故障成员盘上的数据(D3、P2、D10)写入热备空间或热备盘的剩余空间。在图4b中,将D3写入了CK60,P2写入了CK61,D10写入了CK62。
如果图4a或图4b左侧的热备空间或热备盘的剩余空间不足以存储故障成员盘上的数据,则进一步判断剩余磁盘是否还能构成RAID磁盘阵列,具体可通过m-x是否大于盘数最小值来判断,一般而言,盘数最小值为3。
如果m-x≥3,再判断剩余磁盘的剩余空间是否满足步骤15的剩余空间要求,剩余空间要求具体可依据不同的重构方法而定,如果满足,执行步骤14和步骤15.
步骤14:构建降列条带:每一降列条带包括y个校验数据和m-x-y个用户数据,y≤n;
步骤15的一种实现方法为:
步骤151:恢复第一数据中的用户数据;
步骤152:在未故障成员盘的剩余空间分配新降列条带,并将未故障成员盘上的用户数据和第一数据中的用户数据逐一写入新降列条带的用户数据位置,更新新降列条带的校验数据,释放故障前未故障成员盘上的数据占用的数据块空间,更新降列条带映射表。
针对图4a故障情况具体说明如下:
(1)根据未故障的m-1个成员盘重建磁盘阵列,该阵列包含m-1个磁盘,以此构建降列条带:每一降列条带包括1个校验数据和m-2=3个用户数据。例如图5a中,CK17、CK27、CK37和CK57构成一个降列条带,其中CK17、CK27和CK37用于存储用户数据,CK57用于存储该降列条带的校验数据。
(2)恢复第一数据中的用户数据。
例如根据P1和D0、D1、D2恢复出故障数据D3,根据P2和D4、D5、D6恢复出故障数据D7,根据P3和D8、D9、D10恢复出故障数据D11。基于此复原数据Data=D0、D1、D2、D3、D4、D5、D6、D7、D8、D9、D10和D11。
根据Data大小估算实施例一中步骤15重构需要12个用户数据块的存储空间,即剩余空间要求需≥12个用户数据块。
(3)在未故障成员盘的剩余空间新分配降列条带,具体地,在CK13及其之后分配新降列条带,并将输入逐一写入Data数据,将D0写入CK13,D1写入CK23,D2写入CK33,D3写入CK14……。
(4)更新降列条带的校验数据,在CK53处生成降列条带1的校验数据P*1,在CK54处生成降列条带2的校验数据P*2,在CK55处生成降列条带3的校验数据P*3,在CK56处生成降列条带4的校验数据P*4。
(5)释放故障前占用的数据块空间,具体包括原条带1至3的对应的数据块,用于下次使用。
(6)根据降列条带1至4中每个数据块的位置和其中存储的数据更新降列条带映射表。
执行完上述(1)-(6)的步骤后,得到图5a的降列重构布局示意图。
如图6所示,当磁盘阵列中的Disk5故障后,由于无需恢复数据可以省去(2),执行(1)+(3)+(4)+(5)+(6)的步骤后,得到图5b的降列重构布局示意图。
如图4b所示,对角线布置校验数据的Disk4故障后,其中执行(2)时,只需恢复D3和D7即可复原数据Data,执行完上述(1)-(6)的步骤后,得到图5c的降列重构布局示意图。
实施例二
步骤15的另一种实现方法为:
当第一数据不包含校验数据时,执行步骤161,当第一数据只包含校验数据时,执行步骤162;
步骤161:恢复第一数据中的用户数据;在未故障成员盘的剩余空间分配新降列条带,并将第一数据中的用户数据逐一写入新降列条带的用户数据位置,按降列条带结构更新原校验数据,生成新降列条带中缺失的校验数据,更新降列条带映射表;
步骤162:在未故障成员盘的剩余空间分配新降列条带,将未故障成员盘中降列条带结构的校验数据块位置对应的用户数据逐一写入新降列条带的用户数据位置,按降列条带结构生成缺失的校验数据,更新降列条带映射表。
由于实施例二中新分配降列条带只需存储原故障成员盘上的用户数据,对图4a,第一数据不包含校验数据时,剩余空间要求≥3个用户数据块。
图7a为实施例二中对图4a执行步骤14+步骤161后的结果示意图,以下给出具体说明,其中(1)与实施例一相同,不再赘述。
(2’)恢复第一数据中的用户数据。
根据P1和D0、D1、D2恢复出故障数据D3,根据P2和D4、D5、D6恢复出故障数据D7,根据P3和D8、D9、D10恢复出故障数据D11。
剩余空间要求≥3个用户数据块(D3、D7、D11)。
(3’)保留未故障成员盘原存储的数据不变,将原“条带1”对应改为“降列条带1”,将原“条带2”对应改为“降列条带2”,将原“条带3”对应改为“降列条带3”。
(4’)按降列条带结构更新原校验数据,具体,根据D0、D1和D2将CK50数据块中的校验数据更新为P*1,根据D4、D5和D6将CK51数据块中的校验数据更新为P*2,根据D7、D8和D9将CK52数据块中的校验数据更新为P*3。
(5’)在未故障成员盘的剩余空间新分配降列条带,具体地,在CK13及其之后新分配降列条带,并逐一写入故障成员盘上的数据(D3、D7和D11),将D3写入CK13,D7写入CK23,D11写入CK33,并在CK53数据块中生成该降列条带的校验数据P*4。
(6’)根据降列条带1至4中每个数据块的位置和其中存储的数据更新降列条带映射表。
即(1)+(2’)+(3’)+(4’)+(5’)+(6’)构成实施例二的具体方案,其中(3’)+(4’)和(5’)的执行顺序不分先后,也可以先(5’)后(3’)+(4’)。
如图6所示,当第一数据(故障盘Disk5的数据)均为校验数据时,此时,无需恢复第一数据,但是需将Disk4(对应降列条带的校验数据列)的数据(D3、D7和D11)逐一写入CK13、CK23和CK33,然后在CK40、CK41、CK42、CK43上依次生成校验数据P*1、P*2、P*3、P*4。图7b为实施例二中对图6执行步骤14+步骤162后的结果示意图,
实施例三
步骤15的另一种实现方法为:
步骤171:遍历故障前原条带,如果当前原条带中第一数据为非校验数据时,恢复第一数据,并令第二数据等于第一数据,执行步骤172;
步骤172:判断是否存在用户数据位置剩余的空闲降列条带,如果是,执行步骤173,如果否,执行步骤174;
步骤173:将第二数据写入空闲降列条带的剩余用户数据位置,返回步骤171;
步骤174:在未故障成员盘的剩余空间分配新降列条带,将第二数据写入新降列条带的用户数据位置,返回步骤171;
步骤175:如果故障前原条带遍历完毕,按降列条带结构更新原校验数据和/或生成原条带中缺失的校验数据,生成新降列条带中缺失的校验数据,更新降列条带映射表。
例如,在图4b中,原条带1的故障数据为用户数据,则先恢复该用户数据D3,再将D3写入新降列条带(降列条带4)的用户数据块CK23(图7c)。
实施例四
实施例四是对实施例三的补充,步骤171还包括:
如果当前原条带中第一数据为校验数据时,根据降列条带结构确定当前原条带中的校验数据位置对应的数据为第二数据,执行步骤172。
如图4b所示,原条带2的第一数据为校验数据,此时无需恢复第一数据,但是将原条带2变更为降列条带2时,需腾出校验数据块,因此根据降列条带结构确定当前原条带中的校验数据位置,再将校验数据块中的用户数据移走,例如将原条带2中CK31上的D6(第二数据)移走,写入用户数据块CK33,再在CK31上生成降列条带2的校验数据P*2。
实施例三+实施例四对图4b执行RAID重构方法后的结果如图7c所示。
实施例五
实施例五是对实施例三的另一种补充,其中步骤171还包括:如果当前原条带中第一数据为校验数据时,执行步骤176;
步骤176:当前原条带中的数据按降列条带结构分为第三数据和第四数据,第三数据为降列条带中校验数据位置对应的数据,第四数据为降列条带中非校验数据位置对应的数据;
步骤177:判断是否存在第三数据对应的数据位置空闲的匹配降列条带,如果是,执行步骤178,如果否,执行步骤179;
步骤178:将第四数据对应的校验数据写入匹配降列条带的第三数据对应的数据位置,第四数据和第四数据对应的校验数据构成一个降列条带,匹配降列条带中除第四数据对应的校验数据之外的其他数据和第三数据构成另一个降列条带,返回步骤171;
步骤179;在未故障成员盘的剩余空间分配新降列条带,将第四数据对应的校验数据写入新降列条带的第三数据对应的数据位置,第四数据和第四数据对应的校验数据构成一个新降列条带,新降列条带中除第四数据对应的校验数据之外的其他数据和第三数据构成另一个新降列条带,返回步骤171。
对于如图4b所示,原条带2的第一数据为校验数据时,原条带2变更为降列条带2时,实施例四的方法是腾出校验数据块,将原CK31上的D6移走,再在CK31上写入降列条带2的校验数据。而实施五的方法是,不将CK31上的D6移走,在新分配的降列条带4’的CK33上写入降列条带2的校验数据P*2,即实施例4不再限制磁盘矩阵同一行的数据构成一个条带,不同行上的数据也可以构成一个条带,以此最大限度降低数据的写入次数,节约降列重构时间。
实施例三+实施例五对图4b执行RAID重构方法后的结果如图8所示。其中降列条带2’和降列条带4’中,“D4、D5、P*2、D7”组成降列条带2,“D3、D10、D6、P*4”组成降列条带4。降列条带2’和降列条带4’互为匹配降列条带。
本发明的RAID重构方法,当热备空间不足以存储故障成员盘的数据时,自动通过重建磁盘阵列并重构条带结构实现数据恢复和存储,不必等待人工替换故障成员盘,一次降列重构后,还可以继续进行下一次降列重构,降低了原磁盘重构方法的风险,提高了RAID系统的可靠性。
本发明还包括一种非瞬时计算机可读存储介质,非瞬时计算机可读存储介质存储指令,指令在由处理器执行时使得处理器执行上述任一RAID重构方法中的步骤。
本发明还包括一种RAID重构装置,包括存储器、处理器以及存储在存储器中并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述任一RAID重构方法中的步骤。
具体地,RAID重构装置,应用于RAID系统,RAID系统包含:m个成员盘,每一个条带包含n个校验数据和m-n个用户数据,m-n≥2,该装置包括:
判断模块1:当x个成员盘发生故障时,x≤n,令故障成员盘上的数据为第一数据,判断热备空间或热备盘的剩余空间是否足以存储第一数据,如果是,执行正常重构模块,如果否,执行判断模块2;
正常重构模块:恢复第一数据,并将第一数据写入热备空间或热备盘的剩余空间;
判断模块2:判断m-x是否大于等于RAID盘数最小值且未故障成员盘的剩余空间是否满足降列重构模块重映射的剩余空间要求,如果是,执行降列条带构建模块;
降列条带构建模块:每一降列条带包括y个校验数据和m-x-y个用户数据,y≤n;
降列重构模块:恢复第一数据中的用户数据,并将未故障成员盘上的用户数据和第一数据中的用户数据重映射至降列条带的用户数据位置,更新降列条带的校验数据和降列条带映射表。
进一步地,降列重构模块包括:
数据恢复模块:恢复第一数据中的用户数据;
降列重构第一模块:在未故障成员盘的剩余空间分配新降列条带,并将未故障成员盘上的用户数据和第一数据中的用户数据逐一写入新降列条带的用户数据位置,更新新降列条带的校验数据,释放故障前未故障成员盘上的数据占用的数据块空间,更新降列条带映射表。
或者,降列重构模块还可以包括:
当第一数据不包含校验数据时,执行降列重构第二模块,当第一数据只包含校验数据时,执行降列重构第三模块;
降列重构第二模块:恢复第一数据中的用户数据;在未故障成员盘的剩余空间分配新降列条带,并将第一数据中的用户数据逐一写入新降列条带的用户数据位置,按降列条带结构更新原校验数据,生成新降列条带中缺失的校验数据,更新降列条带映射表;
降列重构第三模块:在未故障成员盘的剩余空间分配新降列条带,将未故障成员盘中降列条带结构的校验数据块位置对应的用户数据逐一写入新降列条带的用户数据位置,按降列条带结构生成缺失的校验数据,更新降列条带映射表。
另一方面,降列重构模块也可以包括:
遍历模块:遍历故障前原条带,如果当前原条带中第一数据为非校验数据时,恢复第一数据,令第二数据等于第一数据,执行判断模块3;
判断模块3:判断是否存在用户数据位置剩余的空闲降列条带,如果是,执行降列重构第四模块,如果否,执行降列重构第五模块;
降列重构第四模块:将第二数据写入空闲降列条带的剩余用户数据位置,返回遍历模块;
降列重构第五模块:在未故障成员盘的剩余空间分配新降列条带,将第二数据写入新降列条带的用户数据位置,返回遍历模块;
降列重构第六模块:如果故障前原条带遍历完毕,按降列条带结构更新原校验数据和/或生成原条带中缺失的校验数据,生成新降列条带中缺失的校验数据,更新降列条带映射表。
进一步地,遍历模块还包括:
如果当前原条带中第一数据为校验数据时,根据降列条带结构确定当前原条带中的校验数据位置对应的数据为第二数据,执行第三判断模块。
或者,遍历模块还可以包括:如果当前原条带中第一数据为校验数据时,执行数据分解模块;
数据分解模块:当前原条带中的数据按降列条带结构分为第三数据和第四数据,第三数据为降列条带中校验数据位置对应的数据,第四数据为降列条带中非校验数据位置对应的数据;
第四判断模块:判断是否存在第三数据对应的数据位置空间的匹配降列条带,如果是,执行降列重构第七模块,如果否,执行降列重构第八模块;
降列重构第七模块:将第四数据对应的校验数据写入匹配降列条带的第三数据对应的数据位置,第四数据和第四数据对应的校验数据构成一个降列条带,匹配降列条带中除第四数据对应的校验数据之外的其他数据和第三数据构成另一个降列条带,返回遍历模块;
降列重构第八模块;在未故障成员盘的剩余空间分配新降列条带,将第四数据对应的校验数据写入新降列条带的第三数据对应的数据位置,第四数据和第四数据对应的校验数据构成一个降列条带,新降列条带中除第四数据对应的校验数据之外的其他数据和第三数据构成另一个降列条带,返回遍历模块。
需要说明的是,本发明的RAID重构装置的实施例,与RAID重构方法的实施例原理相同,相关之处可以互相参照。
以上所述仅为本发明的较佳实施例而已,并不用以限定本发明的包含范围,凡在本发明技术方案的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (14)
1.一种RAID重构方法,应用于RAID系统,所述系统包含:m个成员盘,每一个条带包含n个校验数据和m-n个用户数据,m-n≥2,其特征在于,当x个成员盘发生故障时,x≤n,所述方法包括:
步骤11:令所述故障成员盘上的数据为第一数据,判断热备空间或热备盘的剩余空间是否足以存储所述第一数据,如果是,执行步骤12,如果否,执行步骤13;
步骤12:恢复所述第一数据,并将所述第一数据写入热备空间或热备盘的剩余空间;
步骤13:判断m-x是否大于等于RAID盘数最小值且未故障成员盘的剩余空间是否满足步骤15重映射的剩余空间要求,如果是,执行步骤14;
步骤14:构建降列条带:每一降列条带包括y个校验数据和m-x-y个用户数据,y≤n;
步骤15:恢复所述第一数据中的用户数据,并将未故障成员盘上的用户数据和所述第一数据中的用户数据重映射至所述降列条带的用户数据位置,更新所述降列条带的校验数据和降列条带映射表。
2.根据权利要求1所述的方法,其特征在于,所述步骤15包括:
步骤151:恢复所述第一数据中的用户数据;
步骤152:在所述未故障成员盘的剩余空间分配新降列条带,并将未故障成员盘上的用户数据和所述第一数据中的用户数据逐一写入所述新降列条带的用户数据位置,更新所述新降列条带的校验数据,释放故障前未故障成员盘上的数据占用的数据块空间,更新降列条带映射表。
3.根据权利要求1所述的方法,其特征在于,所述步骤15包括:
当所述第一数据不包含校验数据时,执行步骤161,当所述第一数据只包含校验数据时,执行步骤162;
步骤161:恢复所述第一数据中的用户数据;在所述未故障成员盘的剩余空间分配新降列条带,并将所述第一数据中的用户数据逐一写入所述新降列条带的用户数据位置,按降列条带结构更新原校验数据,生成所述新降列条带中缺失的校验数据,更新降列条带映射表;
步骤162:在所述未故障成员盘的剩余空间分配新降列条带,将未故障成员盘中降列条带结构的校验数据块位置对应的用户数据逐一写入所述新降列条带的用户数据位置,按降列条带结构生成缺失的校验数据,更新降列条带映射表。
4.根据权利要求1所述的方法,其特征在于,所述步骤15包括:
步骤171:遍历故障前原条带,如果当前原条带中所述第一数据为非校验数据时,恢复所述第一数据,并令第二数据等于所述第一数据,执行步骤172;
步骤172:判断是否存在用户数据位置剩余的空闲降列条带,如果是,执行步骤173,如果否,执行步骤174;
步骤173:将所述第二数据写入所述空闲降列条带的剩余用户数据位置,返回步骤171;
步骤174:在所述未故障成员盘的剩余空间分配新降列条带,将所述第二数据写入所述新降列条带的用户数据位置,返回步骤171;
步骤175:如果故障前原条带遍历完毕,按所述降列条带结构更新原校验数据和/或生成原条带中缺失的校验数据,生成新降列条带中缺失的校验数据,更新降列条带映射表。
5.根据权利要求4所述的方法,其特征在于,所述步骤171还包括:
如果所述当前原条带中所述第一数据为校验数据时,根据降列条带结构确定所述当前原条带中的校验数据位置对应的数据为第二数据,执行步骤172。
6.根据权利要求4所述的方法,其特征在于,所述步骤171还包括:如果所述当前原条带中所述第一数据为校验数据时,执行步骤176;
步骤176:所述当前原条带中的数据按降列条带结构分为第三数据和第四数据,所述第三数据为降列条带中校验数据位置对应的数据,所述第四数据为降列条带中非校验数据位置对应的数据;
步骤177:判断是否存在第三数据对应的数据位置空闲的匹配降列条带,如果是,执行步骤178,如果否,执行步骤179;
步骤178:将所述第四数据对应的校验数据写入所述匹配降列条带的第三数据对应的数据位置,所述第四数据和所述第四数据对应的校验数据构成一个降列条带,所述匹配降列条带中除所述第四数据对应的校验数据之外的其他数据和所述第三数据构成另一个降列条带,返回步骤171;
步骤179;在所述未故障成员盘的剩余空间分配新降列条带,将所述第四数据对应的校验数据写入所述新降列条带的第三数据对应的数据位置,所述第四数据和所述第四数据对应的校验数据构成一个新降列条带,所述新降列条带中除所述第四数据对应的校验数据之外的其他数据和所述第三数据构成另一个新降列条带,返回步骤171。
7.一种非瞬时计算机可读存储介质,所述非瞬时计算机可读存储介质存储指令,其特征在于,所述指令在由处理器执行时使得所述处理器执行如权利要求1至6中任一所述的RAID重构方法中的步骤。
8.一种RAID重构装置,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至6中任一所述的RAID重构方法中的步骤。
9.一种RAID重构装置,应用于RAID系统,所述系统包含:m个成员盘,每一个条带包含n个校验数据和m-n个用户数据,m-n≥2,其特征在于,所述装置包括:
判断模块1:当x个成员盘发生故障时,x≤n,令所述故障成员盘上的数据为第一数据,判断热备空间或热备盘的剩余空间是否足以存储所述第一数据,如果是,执行正常重构模块,如果否,执行判断模块2;
正常重构模块:恢复所述第一数据,并将所述第一数据写入热备空间或热备盘的剩余空间;
判断模块2:判断m-x是否大于等于RAID盘数最小值且未故障成员盘的剩余空间是否满足降列重构模块重映射的剩余空间要求,如果是,执行降列条带构建模块;
降列条带构建模块:每一降列条带包括y个校验数据和m-x-y个用户数据,y≤n;
降列重构模块:恢复所述第一数据中的用户数据,并将未故障成员盘上的用户数据和所述第一数据中的用户数据重映射至所述降列条带的用户数据位置,更新所述降列条带的校验数据和降列条带映射表。
10.根据权利要求8所述的装置,其特征在于,所述降列重构模块包括:
数据恢复模块:恢复所述第一数据中的用户数据;
降列重构第一模块:在所述未故障成员盘的剩余空间分配新降列条带,并将未故障成员盘上的用户数据和所述第一数据中的用户数据逐一写入所述新降列条带的用户数据位置,更新所述新降列条带的校验数据,释放故障前未故障成员盘上的数据占用的数据块空间,更新降列条带映射表。
11.根据权利要求8所述的装置,其特征在于,所述降列重构模块包括:
当所述第一数据不包含校验数据时,执行降列重构第二模块,当所述第一数据只包含校验数据时,执行降列重构第三模块;
降列重构第二模块:恢复所述第一数据中的用户数据;在所述未故障成员盘的剩余空间分配新降列条带,并将所述第一数据中的用户数据逐一写入所述新降列条带的用户数据位置,按降列条带结构更新原校验数据,生成新降列条带中缺失的校验数据,更新降列条带映射表;
降列重构第三模块:在所述未故障成员盘的剩余空间分配新降列条带,将未故障成员盘中降列条带结构的校验数据块位置对应的用户数据逐一写入所述新降列条带的用户数据位置,按降列条带结构生成缺失的校验数据,更新降列条带映射表。
12.根据权利要求8所述的装置,其特征在于,所述降列重构模块包括:
遍历模块:遍历故障前原条带,如果当前原条带中所述第一数据为非校验数据时,恢复所述第一数据,令第二数据等于所述第一数据,执行第三判断模块;
判断模块3:判断是否存在用户数据位置剩余的空闲降列条带,如果是,执行降列重构第四模块,如果否,执行降列重构第五模块;
降列重构第四模块:将所述第二数据写入所述空闲降列条带的剩余用户数据位置,返回遍历模块;
降列重构第五模块:在所述未故障成员盘的剩余空间分配新降列条带,将所述第二数据写入所述新降列条带的用户数据位置,返回遍历模块;
降列重构第六模块:如果故障前原条带遍历完毕,按所述降列条带结构更新原校验数据和/或生成原条带中缺失的校验数据,生成新降列条带中缺失的校验数据,更新降列条带映射表。
13.根据权利要求12所述的装置,其特征在于,所述遍历模块还包括:
如果所述当前原条带中所述第一数据为校验数据时,根据降列条带结构确定所述当前原条带中的校验数据位置对应的数据为第二数据,执行第三判断模块。
14.根据权利要求12所述的装置,其特征在于,所述遍历模块还包括:如果所述当前原条带中所述第一数据为校验数据时,执行数据分解模块;
数据分解模块:所述当前原条带中的数据按降列条带结构分为第三数据和第四数据,所述第三数据为降列条带中校验数据位置对应的数据,所述第四数据为降列条带中非校验数据位置对应的数据;
第四判断模块:判断是否存在第三数据对应的数据位置空间的匹配降列条带,如果是,执行降列重构第七模块,如果否,执行降列重构第八模块;
降列重构第七模块:将所述第四数据对应的校验数据写入所述匹配降列条带的第三数据对应的数据位置,所述第四数据和所述第四数据对应的校验数据构成一个降列条带,所述匹配降列条带中除所述第四数据对应的校验数据之外的其他数据和所述第三数据构成另一个降列条带,返回遍历模块;
降列重构第八模块;在所述未故障成员盘的剩余空间分配新降列条带,将所述第四数据对应的校验数据写入所述新降列条带的第三数据对应的数据位置,所述第四数据和所述第四数据对应的校验数据构成一个降列条带,所述新降列条带中除所述第四数据对应的校验数据之外的其他数据和所述第三数据构成另一个降列条带,返回遍历模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811552874.2A CN109739436A (zh) | 2018-12-19 | 2018-12-19 | Raid重构方法、存储介质和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811552874.2A CN109739436A (zh) | 2018-12-19 | 2018-12-19 | Raid重构方法、存储介质和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109739436A true CN109739436A (zh) | 2019-05-10 |
Family
ID=66360594
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811552874.2A Pending CN109739436A (zh) | 2018-12-19 | 2018-12-19 | Raid重构方法、存储介质和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109739436A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110442535A (zh) * | 2019-07-19 | 2019-11-12 | 华中科技大学 | 提高分布式固态盘键值缓存系统可靠性的方法及系统 |
CN111221473A (zh) * | 2019-12-30 | 2020-06-02 | 河南创新科信息技术有限公司 | 一种存储系统介质免维护的方法 |
WO2022016900A1 (zh) * | 2020-07-23 | 2022-01-27 | 深圳大普微电子科技有限公司 | 一种存储介质中数据恢复方法、数据恢复系统及相关设备 |
CN115562594A (zh) * | 2022-12-06 | 2023-01-03 | 苏州浪潮智能科技有限公司 | 一种raid卡的构建方法、系统及相关装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE112007002175T5 (de) * | 2006-09-19 | 2009-07-09 | LSI LOGIC, Milpitas | Optimierte Rekonstruktion und Rückkopiemethodik für ein ausgefallenes Laufwerk bei Anwesenheit einer globalen Hot Spare Platte |
CN105094704A (zh) * | 2015-07-24 | 2015-11-25 | 浙江宇视科技有限公司 | 一种高可伸缩性raid阵列存储视频监控数据的方法和装置 |
CN106528003A (zh) * | 2016-12-09 | 2017-03-22 | 曙光信息产业(北京)有限公司 | 一种磁盘阵列的重建方法和装置 |
CN107220148A (zh) * | 2016-03-21 | 2017-09-29 | 伊姆西公司 | 针对独立磁盘冗余阵列的重建方法和设备 |
-
2018
- 2018-12-19 CN CN201811552874.2A patent/CN109739436A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE112007002175T5 (de) * | 2006-09-19 | 2009-07-09 | LSI LOGIC, Milpitas | Optimierte Rekonstruktion und Rückkopiemethodik für ein ausgefallenes Laufwerk bei Anwesenheit einer globalen Hot Spare Platte |
CN105094704A (zh) * | 2015-07-24 | 2015-11-25 | 浙江宇视科技有限公司 | 一种高可伸缩性raid阵列存储视频监控数据的方法和装置 |
CN107220148A (zh) * | 2016-03-21 | 2017-09-29 | 伊姆西公司 | 针对独立磁盘冗余阵列的重建方法和设备 |
CN106528003A (zh) * | 2016-12-09 | 2017-03-22 | 曙光信息产业(北京)有限公司 | 一种磁盘阵列的重建方法和装置 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110442535A (zh) * | 2019-07-19 | 2019-11-12 | 华中科技大学 | 提高分布式固态盘键值缓存系统可靠性的方法及系统 |
CN110442535B (zh) * | 2019-07-19 | 2021-06-11 | 华中科技大学 | 提高分布式固态盘键值缓存系统可靠性的方法及系统 |
CN111221473A (zh) * | 2019-12-30 | 2020-06-02 | 河南创新科信息技术有限公司 | 一种存储系统介质免维护的方法 |
CN111221473B (zh) * | 2019-12-30 | 2023-06-06 | 河南创新科信息技术有限公司 | 一种存储系统介质免维护的方法 |
WO2022016900A1 (zh) * | 2020-07-23 | 2022-01-27 | 深圳大普微电子科技有限公司 | 一种存储介质中数据恢复方法、数据恢复系统及相关设备 |
US11874741B2 (en) | 2020-07-23 | 2024-01-16 | Dapustor Corporation | Data recovery method in storage medium, data recovery system, and related device |
CN115562594A (zh) * | 2022-12-06 | 2023-01-03 | 苏州浪潮智能科技有限公司 | 一种raid卡的构建方法、系统及相关装置 |
CN115562594B (zh) * | 2022-12-06 | 2023-03-24 | 苏州浪潮智能科技有限公司 | 一种raid卡的构建方法、系统及相关装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109739436A (zh) | Raid重构方法、存储介质和装置 | |
CN104052576B (zh) | 一种云存储下基于纠错码的数据恢复方法 | |
US8843782B2 (en) | Method and apparatus for reconstructing redundant array of inexpensive disks, and system | |
US7681104B1 (en) | Method for erasure coding data across a plurality of data stores in a network | |
Xiang et al. | Optimal recovery of single disk failure in RDP code storage systems | |
US8839028B1 (en) | Managing data availability in storage systems | |
EP0768606A2 (en) | RAID array data storage system with storage device metadata and RAIDset metadata | |
CN104364765A (zh) | 分布式数据存储系统中的数据存储和维护的方法以及对应设备 | |
JP2011504269A (ja) | 並列リードソロモンraid(rs−raid)アーキテクチャ、デバイス、および方法 | |
KR20040066638A (ko) | 외부 저장 서브 시스템에서의 패리티 저장 방법 및에러블록 복구 방법 | |
EP3262500A1 (en) | Data stripping, allocation and reconstruction | |
CN105353974B (zh) | 一种适用于磁盘阵列及分布式存储系统的二容错编码方法 | |
CN105808170B (zh) | 一种能够修复单磁盘错误的raid6编码方法 | |
CN104516679B (zh) | 一种raid数据处理方法及装置 | |
Greenan et al. | Reliability of flat XOR-based erasure codes on heterogeneous devices | |
US11860746B2 (en) | Resilient data storage system with efficient space management | |
CN104461373B (zh) | 一种raid数据处理方法及装置 | |
CN105630417B (zh) | 一种raid5系统及在raid5系统失效后继续写数据的方法 | |
CN106933707B (zh) | 基于raid技术的数据存储设备数据恢复方法及系统 | |
Gatla et al. | Understanding the fault resilience of file system checkers | |
CN108780411B (zh) | 数据存储系统中的自主奇偶交换 | |
Iliadis et al. | Most probable paths to data loss: An efficient method for reliability evaluation of data storage systems | |
Zimmermann et al. | HERA: Heterogeneous Extension of RAID. | |
Ke et al. | Extreme protection against data loss with single-overlap declustered parity | |
WO2016201639A1 (zh) | 分布式数据存储方法、控制设备和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190510 |