CN109885263B - 面向可重组raid的多目标快速重构方法 - Google Patents
面向可重组raid的多目标快速重构方法 Download PDFInfo
- Publication number
- CN109885263B CN109885263B CN201910185121.0A CN201910185121A CN109885263B CN 109885263 B CN109885263 B CN 109885263B CN 201910185121 A CN201910185121 A CN 201910185121A CN 109885263 B CN109885263 B CN 109885263B
- Authority
- CN
- China
- Prior art keywords
- data
- disk
- static
- dynamic
- reconstruction
- 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.)
- Active
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种面向可重组RAID的多目标快速重构方法,属于数据重构技术领域。本发明在分析传统RAID重构机制存在的弊端基础上,设计了一种面向可重组RAID的多目标快速重构方法,充分利用了浮动RAID调度机制中条带可动态重组的特性,在进行数据重构时以条带为单位通过选择多个目标盘并行重构来缩短RAID重构时间,降低了重构期间因再次坏盘而彻底丢失数据的风险,提升了可重组RAID的使用效率。
Description
技术领域
本发明属于数据重构技术领域,具体涉及一种面向可重组RAID的多目快速重构方法。
背景技术
传统RAID技术在一块磁盘出现故障的情况下依然能够保证数据的完整性。当使用新盘(目标盘)替换故障盘时,RAID会进行数据重构,即在读取所有成员盘数据的基础上计算出重构数据并写入目标盘,因此,目标盘的写带宽直接决定了系统数据重构的速度。但是,近年来随着磁盘容量的快速增长,磁盘读写速度受磁盘转速等多方面影响却增长缓慢,已经无法满足存储系统对重构时间的要求。以一块2TB 7.2k rpm磁盘为例,在一次重构过程中磁盘平均写入带宽为30MB/s,完成重构的时间长达18小时。漫长的重构时间同时也加大了重构期间因再次坏盘而彻底丢失数据的风险。
可重组RAID是为了克服传统RAID机制的“小写”性能差、校验块更新频率高等问题而提出的面向闪存的数据容错技术,适用于混合/全闪存阵列存储系统中,能够实现不同固态盘之间的磨损均衡,提升阵列系统的性能和使用寿命。
当前,RAID1和RAID5是存储阵列中应用最为广泛的数据容错技术。RAID1称为磁盘镜像,原理是把一个硬盘上的数据镜像拷贝到另一个硬盘上,即数据在写入一块硬盘的同时,会在另一块闲置的硬盘上生成镜像文件,只要系统中任何一对镜像盘中至少有一块磁盘可以使用,甚至可以一半数量的硬盘发生故障时系统仍然可以继续使用。当一块硬盘失效时,系统会忽略该硬盘,转而使用剩余的镜像硬盘读写数据,在进行数据重构时,可将剩余成员盘上的数据拷贝到备用盘即可,如图1所示。
RAID5将数据以块为单位分布到各个硬盘上。RAID5不对数据进行备份,而是把数据及其对应的奇偶校验信息存储到各成员盘上,并且奇偶校验信息和相对应的数据分别存储在不同的硬盘上。当RAID5的一个成员盘损坏后,可利用剩下的数据和相应的奇偶校验信息来恢复被损坏的数据,如图2所示。
从上述重构过程可以看出,传统RAID1和RAID5在进行重构时均是选择一块备用盘进行数据恢复操作,备用盘的写带宽直接决定了系统数据重构的速度,在对数据安全需求很高的环境下,这样的重构速度显然不符合预期效果,甚至可能产生很严重的数据丢失,对企业或研究部门带来无法预估的后果。
为了提升可重组RAID的使用效率,同时克服传统RAID重构时存在的各种弊端,需要面向可重组RAID设计一种快速重构机制。
发明内容
(一)要解决的技术问题
本发明要解决的技术问题是:如何面向可重组RAID设计一种多目标快速重构方法。
(二)技术方案
为了解决上述技术问题,本发明提供了一种面向可重组RAID的多目标快速重构方法,包括以下步骤:
S1、选择两个备用盘用于进行重构;
S2、触发数据重构线程,进行动、静态盘设置;
S3、进行数据重构;在进行双盘重构时,将元数据的优先重构出来,再采用多线程将RAID中剩余数据按照1:1的比例分别重构到静态备用盘和动态备用盘上;
S4、重构完成,进行数据迁移。
优选地,步骤S2中进行动、静态盘设置时,利用RAID状态检测函数调用成员盘移除函数将故障盘从RAID中剔除,此时相应的成员盘为空,两次调成员盘增加函数,分别添加动态盘和静态盘到RAID中,并设置相应的标志为动态和静态,分别对应静态盘和动态盘。
优选地,步骤S3中将元数据的优先重构出来具体是进行预留空间重构;预留空间是指存储元数据信息的区域,当剔除了故障盘,并添加了备用盘后,RAID状态检测函数调用数据同步线程开启数据修复过程,数据同步线程首先确定预留空间的重构范围,下发预留空间的修复请求至下级同步请求处理函数,实现通过读取其它在线成员盘的数据,采用异或操作获取修复的数据,由于预留空间的数据都默认重构到静态盘,因此直接将修复的数据写到静态盘,待元数据重构完成后,再进行数据重构。
优选地,步骤S3中采用多线程将RAID中剩余数据按照1:1的比例分别重构到静态备用盘和动态备用盘上,即执行动、静态重构线程的过程具体为:
利用静态重构线程和动态重构线程分别将前半部分的数据和后半部分的数据重构静态盘和动态盘中;并在同步请求处理函数增加相应参数,用来表示下发的条带数据是重构到静态盘还是动态盘,此外,在条带数据的数据结构中也增加相应属性,用于表示条带重构盘的动静态性,当下发的请求数据所在扇区对应的条带需重构到静态盘时,将条带设置为静态条带;当下发的请求数据所在扇区对应的条带需重构到动态盘时,将条带设置为动态条带,然后再调用静态重构线程和动态重构线程提交条带处理函数进行处理。
优选地,利用所述条带处理函数进行条带处理具体为:
得到所述修复的数据后,依据数据对应条带的动静态特性,将其分别写到动态盘和静态盘,在条带处理函数中,依据条带的动静态特性值,设置bio请求的设备属性;如果是动态条带,将bio设备设置为动态盘,并递增动态盘的条带重构数目;如果是静态条带,将bio设备设置为静态盘;
设置完bio的设备属性,根据扇区号对条带位图的相应位进行设置,用于记录后半部分数据保存在动态盘还是静态盘中,当数据在保存动态盘时,将对应位图置为1;
然后将bio请求下发给相应的盘,在条带处理的回调函数中,根据条带的动静态特性,获取相应的设备;
自此,恢复后得到的数据就成功下发到相应盘中,当重构完,设置为重构完成状态。
优选地,在步骤S3数据重构完成之后,步骤S4数据迁移之前还进行同步线程回收:
数据重构结束后,系统调用同步线程回收函数对动、静重构线程线程进行回收,并激活静、动态盘,设置静、动态盘为成员盘,同时清除raid重构状态。
优选地,步骤S4中在数据再次更新时进行数据迁移。
优选地,步骤S4中在数据再次更新时进行数据迁移具体为:当有新的写请求到来时,将数据都写到静态盘,如果写请求是针对后半部分的数据,并且位图中相应的位为1,还要将相应的位清0,表示数据已经从动态盘迁移到了静态盘上,同时递减动态盘上的数据数目,当动态盘上的数据数目为0时,说明动态盘上的数据已经全部都迁移到了静态盘上,此时将动态盘从RAID中剔除,让其重新变为备用盘。
优选地,步骤S4中在数据再次更新时进行数据迁移具体为:当有新的读请求到来,如果是涉及元数据或者前半部分的数据,则直接从静态盘中读取,如果是涉及后半部分的数据,根据位图中相应的位来确定数据所在盘,如果相应位为1,从动态盘读取;如果为0,从静态盘读取。
(三)有益效果
本发明在分析传统RAID重构机制存在的弊端基础上,设计了一种面向可重组RAID的多目标快速重构方法,充分利用了浮动RAID调度机制中条带可动态重组的特性,在进行数据重构时以条带为单位通过选择多个目标盘并行重构来缩短RAID重构时间,降低了重构期间因再次坏盘而彻底丢失数据的风险,提升了可重组RAID的使用效率。
附图说明
图1是RAID1重构示意图;
图2是RAID5重构示意图;
图3是本发明的重构原理图;
图4是本发明的重构方法流程图;
图5是本发明的动静态盘设置原理图;
图6是本发明中预留空间重构原理图;
图7是本发明中动静态重构线程示意图;
图8是本发明中位图组织示意图;
图9是本发明重构完成后各盘状态示意图;
图10是本发明中数据迁移原理图;
图11是本发明中数据迁移流程图。
具体实施方式
为使本发明的目的、内容、和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。
为了实现系统数据的快速重构,本发明在分析传统RAID重构机制存在的弊端基础上,面向可重组RAID设计了一种多目标快速重构方法,该方法包括以下步骤:
S1、选择两个备用盘用于进行重构,如图3所示;
S2、触发数据重构线程,进行动、静态盘设置;
S3、进行数据重构;
在进行双盘重构时,由于RAID元数据的重要性,需要将元数据的优先重构出来,再采用多线程将RAID中剩余数据按照1:1的比例分别重构到静态备用盘和动态备用盘上,以加快重构速度,为了实时获取后半部分数据所在的位置,利用位图来记录后半数据部分所在的盘,当重构到动态盘时,将位图中相应位置置为1;
S4、重构完成,进行数据迁移。
整个数据重构流程如图4所示。
进行动、静态盘设置时,
在数据重构初始阶段,RAID状态检测函数会调用成员盘移除函数将故障盘从RAID中剔除,此时相应的成员盘为空。由于RAID中有两个备用盘,会两次调成员盘增加函数,分别添加动态盘和静态盘到RAID中,并设置相应的标志为动态和静态,分别对应静态盘和动态盘,如图5所示。
步骤S3中将元数据的优先重构出来具体是进行预留空间重构;
预留空间是指存储元数据信息的区域。当剔除了故障盘,并添加了备用盘后,RAID状态检测函数会调用数据同步线程开启数据修复过程。数据同步线程首先确定预留空间的重构范围,下发预留空间的修复请求至下级同步请求处理函数,实现通过读取其它在线成员盘的数据,采用异或操作获取修复的数据。由于预留空间的数据都默认重构到静态盘,因此直接将修复的数据写到静态盘,如图6所示。待元数据重构完成后,再进行数据重构。
步骤S3中采用多线程将RAID中剩余数据按照1:1的比例分别重构到静态备用盘和动态备用盘上,即执行动、静态重构线程具体为:
静态重构线程和动态重构线程分别将前半部分的数据和后半部分的数据重构静态盘和动态盘中,如图7所示。
为了在底层标识数据要重构到的盘的动静态属性,在同步请求处理函数增加相应参数,用来表示下发的条带数据是重构到静态盘还是动态盘。
此外,在条带数据的数据结构中也增加了相应属性,用于表示条带重构盘的动静态性。当下发的请求数据所在扇区对应的条带需重构到静态盘时,将条带设置为静态条带;当下发的请求数据所在扇区对应的条带需重构到动态盘时,将条带设置为动态条带,然后再提交条带处理函数(调用静态重构线程和动态重构线程)进行处理。
利用所述条带处理函数进行条带处理具体为:
得到所述修复的数据后,依据数据对应条带的动静态特性,将其分别写到动态盘和静态盘。在条带处理函数中,依据条带的动静态特性值,设置bio请求的设备属性;如果是动态条带,将bio设备设置为动态盘,并递增动态盘的条带重构数目;如果是静态条带,将bio设备设置为静态盘。
设置完bio的设备属性,根据扇区号还要对条带位图的相应位进行设置,用于记录后半部分数据保存在动态盘还是静态盘中。当数据在保存动态盘时,需要将对应位图置为1,位图的组织形式如图8所示。
然后将bio请求下发给相应的盘,在条带处理的回调函数中,根据条带的动静态特性,获取相应的设备。
自此,恢复后得到的数据就成功下发到相应盘中。当重构完,设置为重构完成状态。
在步骤S3数据重构完成之后,步骤S4数据迁移之前还进行同步线程回收:
数据重构结束后,系统调用同步线程回收函数对同步(动、静重构线程)线程进行回收,并激活静、动态盘,设置静、动态盘为成员盘,如图9所示,同时清除raid重构状态。
步骤S4中数据迁移具体为:
由于重构操作结束后数据分别存储在动态盘和静态盘上,因此需要选择合适的时机对数据进行合并。如果直接从动态盘中拷贝到静态盘,效率会很低。因此,选择在数据再次更新时进行迁移。
当有新的写请求到来时,将数据都写到静态盘,如果写请求是针对后半部分的数据,并且位图中相应的位为1,还要将相应的位清0,表示数据已经从动态盘迁移到了静态盘上,同时还要递减动态盘上的数据数目。当动态盘上的数据数目为0时,说明动态盘上的数据已经全部都迁移到了静态盘上,此时可以将动态盘从RAID中剔除,让其重新变为备用盘。
当有新的读请求到来,如果是涉及元数据或者前半部分的数据,则直接从静态盘中读取。如果是涉及后半部分的数据,需要根据位图中相应的位来确定数据所在盘,如果相应位为1,需要从动态盘读取;如果为0,从静态盘读取。
数据迁移流程如图11所示。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
Claims (1)
1.一种面向可重组RAID的多目标快速重构方法,其特征在于,包括以下步骤:
S1、选择两个备用盘用于进行重构;
S2、触发数据重构线程,进行动、静态盘设置;
S3、进行数据重构;在进行双盘重构时,将元数据的优先重构出来,再采用多线程将RAID中剩余数据按照1∶1的比例分别重构到静态备用盘和动态备用盘上;
S4、重构完成,进行数据迁移;
步骤S2中进行动、静态盘设置时,利用RAID状态检测函数调用成员盘移除函数将故障盘从RAID中剔除,此时相应的成员盘为空,两次调成员盘增加函数,分别添加动态盘和静态盘到RAID中,并设置相应的标志为动态和静态,分别对应静态盘和动态盘;
步骤S3中将元数据的优先重构出来具体是进行预留空间重构;预留空间是指存储元数据信息的区域,当剔除了故障盘,并添加了备用盘后,RAID状态检测函数调用数据同步线程开启数据修复过程,数据同步线程首先确定预留空间的重构范围,下发预留空间的修复请求至下级同步请求处理函数,实现通过读取其它在线成员盘的数据,采用异或操作获取修复的数据,由于预留空间的数据都默认重构到静态盘,因此直接将修复的数据写到静态盘,待元数据重构完成后,再进行数据重构;
步骤S3中采用多线程将RAID中剩余数据按照1∶1的比例分别重构到静态备用盘和动态备用盘上,即执行动、静态重构线程的过程具体为:
利用静态重构线程和动态重构线程分别将前半部分的数据和后半部分的数据重构静态盘和动态盘中;并在同步请求处理函数增加相应参数,用来表示下发的条带数据是重构到静态盘还是动态盘,此外,在条带数据的数据结构中也增加相应属性,用于表示条带重构盘的动静态性,当下发的请求数据所在扇区对应的条带需重构到静态盘时,将条带设置为静态条带;当下发的请求数据所在扇区对应的条带需重构到动态盘时,将条带设置为动态条带,然后再调用静态重构线程和动态重构线程提交条带处理函数进行处理;
利用所述条带处理函数进行条带处理具体为:
得到所述修复的数据后,依据数据对应条带的动静态特性,将其分别写到动态盘和静态盘,在条带处理函数中,依据条带的动静态特性值,设置bio请求的设备属性;如果是动态条带,将bio设备设置为动态盘,并递增动态盘的条带重构数目;如果是静态条带,将bio设备设置为静态盘;
设置完bio的设备属性,根据扇区号对条带位图的相应位进行设置,用于记录后半部分数据保存在动态盘还是静态盘中,当数据在保存动态盘时,将对应位图置为1;
然后将bio请求下发给相应的盘,在条带处理的回调函数中,根据条带的动静态特性,获取相应的设备;
自此,恢复后得到的数据就成功下发到相应盘中,当重构完,设置为重构完成状态;
在步骤S3数据重构完成之后,步骤S4数据迁移之前还进行同步线程回收:
数据重构结束后,系统调用同步线程回收函数对动、静重构线程线程进行回收,并激活静、动态盘,设置静、动态盘为成员盘,同时清除raid重构状态;
步骤S4中在数据再次更新时进行数据迁移;
步骤S4中在数据再次更新时进行数据迁移具体为:当有新的写请求到来时,将数据都写到静态盘,如果写请求是针对后半部分的数据,并且位图中相应的位为1,还要将相应的位清0,表示数据已经从动态盘迁移到了静态盘上,同时递减动态盘上的数据数目,当动态盘上的数据数目为0时,说明动态盘上的数据已经全部都迁移到了静态盘上,此时将动态盘从RAID中剔除,让其重新变为备用盘;
步骤S4中在数据再次更新时进行数据迁移具体为:当有新的读请求到来,如果是涉及元数据或者前半部分的数据,则直接从静态盘中读取,如果是涉及后半部分的数据,根据位图中相应的位来确定数据所在盘,如果相应位为1,从动态盘读取;如果为0,从静态盘读取。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910185121.0A CN109885263B (zh) | 2019-03-12 | 2019-03-12 | 面向可重组raid的多目标快速重构方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910185121.0A CN109885263B (zh) | 2019-03-12 | 2019-03-12 | 面向可重组raid的多目标快速重构方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109885263A CN109885263A (zh) | 2019-06-14 |
CN109885263B true CN109885263B (zh) | 2022-02-01 |
Family
ID=66931824
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910185121.0A Active CN109885263B (zh) | 2019-03-12 | 2019-03-12 | 面向可重组raid的多目标快速重构方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109885263B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050102552A1 (en) * | 2002-08-19 | 2005-05-12 | Robert Horn | Method of controlling the system performance and reliability impact of hard disk drive rebuild |
CN101923501A (zh) * | 2010-07-30 | 2010-12-22 | 华中科技大学 | 一种磁盘阵列多级容错方法 |
CN107122269A (zh) * | 2016-02-25 | 2017-09-01 | 伊姆西公司 | 用于保证映射独立磁盘冗余阵列的可靠性的方法和装置 |
CN107526531A (zh) * | 2016-06-21 | 2017-12-29 | 伊姆西公司 | 为映射独立盘冗余阵列(raid)选择raid级别的方法和设备 |
CN108228086A (zh) * | 2016-12-21 | 2018-06-29 | 伊姆西Ip控股有限责任公司 | Raid重建的方法和设备 |
CN110187830A (zh) * | 2019-04-22 | 2019-08-30 | 中国科学院计算技术研究所 | 一种加速磁盘阵列重建的方法及系统 |
-
2019
- 2019-03-12 CN CN201910185121.0A patent/CN109885263B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050102552A1 (en) * | 2002-08-19 | 2005-05-12 | Robert Horn | Method of controlling the system performance and reliability impact of hard disk drive rebuild |
CN101923501A (zh) * | 2010-07-30 | 2010-12-22 | 华中科技大学 | 一种磁盘阵列多级容错方法 |
CN107122269A (zh) * | 2016-02-25 | 2017-09-01 | 伊姆西公司 | 用于保证映射独立磁盘冗余阵列的可靠性的方法和装置 |
CN107526531A (zh) * | 2016-06-21 | 2017-12-29 | 伊姆西公司 | 为映射独立盘冗余阵列(raid)选择raid级别的方法和设备 |
CN108228086A (zh) * | 2016-12-21 | 2018-06-29 | 伊姆西Ip控股有限责任公司 | Raid重建的方法和设备 |
CN110187830A (zh) * | 2019-04-22 | 2019-08-30 | 中国科学院计算技术研究所 | 一种加速磁盘阵列重建的方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN109885263A (zh) | 2019-06-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20070088990A1 (en) | System and method for reduction of rebuild time in raid systems through implementation of striped hot spare drives | |
KR100701563B1 (ko) | 스토리지 제어 장치 및 방법 | |
US7640452B2 (en) | Method for reconstructing data in case of two disk drives of RAID failure and system therefor | |
CN104035830B (zh) | 一种数据恢复方法和装置 | |
US8356292B2 (en) | Method for updating control program of physical storage device in storage virtualization system and storage virtualization controller and system thereof | |
US6892276B2 (en) | Increased data availability in raid arrays using smart drives | |
CN102184129B (zh) | 磁盘阵列的容错方法和装置 | |
CN110187830A (zh) | 一种加速磁盘阵列重建的方法及系统 | |
CN101609420A (zh) | 实现磁盘冗余阵列重建的方法和磁盘冗余阵列及其控制器 | |
CN101916173A (zh) | 一种基于raid的数据读写方法及其系统 | |
CN101504625A (zh) | 实现独立磁盘冗余阵列的方法、固态硬盘和电子设备 | |
US20050091452A1 (en) | System and method for reducing data loss in disk arrays by establishing data redundancy on demand | |
CN102508733A (zh) | 一种基于磁盘阵列的数据处理方法及磁盘阵列管理器 | |
US10409682B1 (en) | Distributed RAID system | |
US8402213B2 (en) | Data redundancy using two distributed mirror sets | |
CN109032513B (zh) | 基于ssd和hdd的raid架构及其备份、重建方法 | |
US20060215456A1 (en) | Disk array data protective system and method | |
US11093339B2 (en) | Storage utilizing a distributed cache chain and a checkpoint drive in response to a data drive corruption | |
CN106095330A (zh) | 一种元数据的存储方法和装置 | |
CN103645997B (zh) | 一种数据保护的方法与系统 | |
US20060259812A1 (en) | Data protection method | |
CN106933707B (zh) | 基于raid技术的数据存储设备数据恢复方法及系统 | |
CN116204137B (zh) | 基于dpu的分布式存储系统、控制方法、装置及设备 | |
US10831601B2 (en) | Reconstruction hard disk array and reconstruction method for to-be-reconstructed hard disks therein including comparing backup data with an access timestamp of first, second and third hard disks | |
CN109885263B (zh) | 面向可重组raid的多目标快速重构方法 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |