CN108932176A - 数据降级存储方法及装置 - Google Patents
数据降级存储方法及装置 Download PDFInfo
- Publication number
- CN108932176A CN108932176A CN201710393050.4A CN201710393050A CN108932176A CN 108932176 A CN108932176 A CN 108932176A CN 201710393050 A CN201710393050 A CN 201710393050A CN 108932176 A CN108932176 A CN 108932176A
- Authority
- CN
- China
- Prior art keywords
- data
- band
- stored
- piecemeal
- offline
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/1084—Degraded mode, e.g. caused by single or multiple storage removals or disk failures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/10—Indexing scheme relating to G06F11/10
- G06F2211/1002—Indexing scheme relating to G06F11/1076
- G06F2211/1026—Different size groups, i.e. non uniform size of groups in RAID systems with parity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/10—Indexing scheme relating to G06F11/10
- G06F2211/1002—Indexing scheme relating to G06F11/1076
- G06F2211/1059—Parity-single bit-RAID5, i.e. RAID 5 implementations
Abstract
本发明实施例公开了一种数据降级存储方法及装置,属于数据存储技术领域。方法包括:获取待存储的数据,检测是否存在线条带,如果不存在线条带,则为数据分配离线条带;如果离线条带中在线分块的数量大于预设的每个条带中校验分块的数量加1,则在离线条带的在线分块中重新分配数据分块和校验分块,其中,校验分块的数量为预设的每个条带中校验分块的数量;将数据存入离线条带中。解决了现有技术中处于降级状态的RAID仅会继续分散存储后续存入的数据,而不再计算并存储检验数据,一旦某个数据分块发生读写失败,导致存储在该磁盘上的所有数据丢失且无法恢复的问题,达到了保证处于降级状态的RAID所存储的数据的可恢复性的效果。
Description
技术领域
本发明实施例涉及数据存储技术领域,特别涉及一种数据降级存储方法及装置。
背景技术
独立磁盘冗余阵列(英文:Redundant Array of Independent Disks,简称:RAID)是指通过RAID控制器将多个独立磁盘通过硬件或软件方式组合在一起形成的磁盘阵列。RAID通过多个磁盘对数据同时进行读或写操作,提高了数据传输速率,通过数据校验/镜像功能提供容错,增强了数据读写的安全性。
以目前普遍使用的分布式奇偶校验的独立磁盘结构(英文:RAID Level 5,简称:RAID5)型的独立磁盘冗余阵列为例,图1A所示的RAID5架构,由3台磁盘(磁盘110、磁盘120和磁盘130)搭配RAID控制器100所组成,将数据存储空间按固定大小划分成若干个条带,比如,条带1、条带2和条带3。各磁盘的相同区域为组成条带的分块,比如,条带1由分别位于磁盘110、磁盘120和磁盘130的相同区域的分块110a、分块120a和分块130a组成。
在将数据存入RAID5时,RAID控制器首先将该数据划分成若干个子数据,比如子数据A、子数据B、子数据C、子数据D、子数据E及子数据F,然后将各个子数据分散储存于各条带的对应分块上,比如,将子数据A存入到条带1中的分块110a中,将子数据B存入到条带1中的分块120a中。
RAID5中每个条带中的分块均包括两种类型:数据分块和校验分块。其中,数据分块用于存储数据,如图1A所示的条带1中的分块110a和分块110b属于数据分块;校验分块用于存储同一条带中的数据分块所存储的子数据的异或运算(XOR运算)结果,当数据分块发生读写失败时,RAID控制器可利用校验分块中存储的XOR运算结果以及未发生读写失败的数据分块中的数据,对发生读写失败的数据分块中存储的数据进行恢复,如图1A所示条带1中的分块130a用于存储条带1中的分块110a所存储的子数据A与分块120a所存储的子数据B的异或运算结果。
在RAID中,子数据存入某一个分块时若发生读写失败,该分块所属的磁盘则被判定为工作异常的磁盘。工作异常的磁盘会被直接踢出RAID(称该磁盘处于离线状态),当RAID中存在处于离线状态的磁盘时,会导致该RAID由正常状态转换为降级状态,RAID控制器会将条带中剩余的分块全部分配为数据分块,后续存入的数据会分散存储到这些数据分块上。在后续过程中,一旦某个数据分块发生读写失败,该数据分块所属的磁盘会被直接踢出RAID,导致存储在该磁盘上的所有数据丢失且无法恢复。
发明内容
为了解决处于降级状态的RAID仅会继续分散存储后续存入的数据,而不再计算并存储检验数据,一旦某个数据分块发生读写失败,导致存储在该磁盘上的所有数据丢失且无法恢复的问题,本发明实施例提供了一种数据降级存储方法及装置。所述技术方案包括:
第一方面,提供了一种数据降级存储方法,所述方法包括:
获取待存储的数据,检测是否存在在线条带,如果不存在在线条带,则为所述数据分配离线条带;
如果所述离线条带中在线分块的数量大于预设的每个条带中校验分块的数量加1,则在所述离线条带的在线分块中重新分配数据分块和校验分块,其中,所述校验分块的数量为所述预设的每个条带中校验分块的数量;
根据重新分配的数据分块和校验分块,将所述数据存入所述离线条带中。
可选的,所述获取待存储的数据,包括:
获取待存储的数据,基于预设的子数据容量将所述数据划分成至少一个子数据;
所述将所述数据存入所述离线条带中,包括:
将所述至少一个子数据存入所述离线条带的数据分块中,生成所述子数据对应的校验数据,将所述校验数据存入所述校验分块。
可选的,所述生成所述子数据对应的校验数据,包括:
如果所述离线条带中存在未存入子数据的数据分块,则向所述离线条带中未存入子数据的数据分块存入预设的填充数据,生成所述子数据和所述填充数据对应的校验数据;
如果所述离线条带中不存在未存入子数据的数据分块,则生成全部子数据对应的校验数据。
可选的,当所述生成所述子数据对应的校验数据,包括:
如果所述子数据的数目为1,则生成与所述子数据相同的校验数据;
如果所述子数据的数目大于1,则生成全部子数据对应的校验数据。
可选的,在所述为所述数据分配离线条带之后,所述方法还包括:
如果所述离线条带中在线分块的数量小于或等于预设的每个条带中校验分块的数量加1,则将所述离线条带中的在线分块都设置为数据分块;
根据重新分配的数据分块,将所述数据存入所述离线条带中。
可选的,所述将所述数据存入所述离线条带中,包括:
将所述数据复制多份分别存储到所述离线条带的多个数据分块中。
可选的,在所述将所述数据存入所述离线条带中之后,所述方法还包括:
当检测到空闲的在线条带时,将所述数据转移到所述空闲的在线条带中。
第二方面,提供了一种数据降级存储装置,所述装置包括:
分配模块,用于获取待存储的数据,检测是否存在在线条带,如果不存在在线条带,则为所述数据分配离线条带;
第一设置模块,用于如果所述离线条带中在线分块的数量大于预设的每个条带中校验分块的数量加1,则在所述离线条带的在线分块中重新分配数据分块和校验分块,其中,所述校验分块的数量为所述预设的每个条带中校验分块的数量;
第一存入模块,用于根据重新分配的数据分块和校验分块,将所述数据存入所述离线条带中。
可选的,所述分配模块,还用于获取待存储的数据,基于预设的子数据容量将所述数据划分成至少一个子数据;
所述第一存入模块,还用于将所述至少一个子数据存入所述离线条带的数据分块中,生成所述子数据对应的校验数据,将所述校验数据存入所述校验分块。
可选的,所述第一存入模块,包括:
第一生成单元,用于如果所述离线条带中存在未存入子数据的数据分块,则向所述离线条带中未存入子数据的数据分块存入预设的填充数据,生成所述子数据和所述填充数据对应的校验数据;
第二生成单元,用于如果所述离线条带中不存在未存入子数据的数据分块,则生成全部子数据对应的校验数据。
可选的,所述第一存入模块,还包括:
第三生成单元,用于如果所述子数据的数目为1,则生成与所述子数据相同的校验数据;
第四生成单元,用于如果所述子数据的数目大于1,则生成全部子数据对应的校验数据。
可选的,所述装置还包括:
第二设置模块,用于在所述为所述数据分配离线条带之后,如果所述离线条带中在线分块的数量小于或等于预设的每个条带中校验分块的数量加1,则将所述离线条带中的在线分块都设置为数据分块;
第二存入模块,用于根据重新分配的数据分块,将所述数据存入所述离线条带中。
可选的,所述第二存入模块,还用于将所述数据复制多份分别存储到所述离线条带的多个数据分块中。
可选的,所述装置还包括:
转移模块,用于在所述将所述数据存入所述离线条带中之后,当检测到空闲的在线条带时,将所述数据转移到所述空闲的在线条带中。
本发明实施例提供的技术方案带来的有益效果包括:
通过在RAID为降级状态时,在离线条带的在线分块中重新分配数据分块和校验分块,或者将离线条带中的在线分块都设置为数据分块后,根据重新分配的数据分块和校验分块,将数据存入离线条带中,由于在RAID为降级状态时,仍会生成存入离线条带的子数据对应的校验数据,从而保证存入离线条带的子数据的可恢复性,因此解决了现有技术中处于降级状态的RAID仅会继续分散存储后续存入的数据,而不再计算并存储检验数据,一旦某个数据分块发生读写失败,导致存储在该磁盘上的所有数据丢失且无法恢复的问题,达到了保证处于降级状态的RAID所存储的数据的可恢复性的效果。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1A是本发明一个示例性实施例提供的RAID5架构的架构示意图;
图1B是本发明一个示例性实施例提供的RAID控制器的结构示意图;
图2是本发明一个实施例提供的数据降级存储方法的流程图;
图3是本发明一个实施例提供的离线条带中在线分块的数量大于预设的每个条带中校验分块的数量加1时数据降级存储方法的流程图;
图4是本发明一个实施例提供的离线条带中在线分块的数量小于或等于预设的每个条带中校验分块的数量加1时数据降级存储方法的流程图;
图5A是本发明一个实施例提供的数据降级存储装置的框图;
图5B是本发明另一个实施例提供的数据降级存储装置的框图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
请参考图1B,其示出了本发明一个示例性实施例提供的RAID控制器的结构示意图。该RAID控制器10可以包括:组管理组件20、存储组件30和条带服务组件40。
组管理组件20用于管理磁盘阵列与存储池,该存储池用于存储未被存入条带中的待存储的数据。
存储组件30用于为待存储的数据提供存储和读取服务,并定时向组管理组件20上报反应自身负载情况的心跳。
条带服务组件40用于对待存储的数据进行编码或解码,将编码或解码后的待存储的数据存发送至存储组件30。
在本发明实施例中,提供了一种数据降级存储方法,由于在RAID为降级状态时,仍会生成存入离线条带的子数据对应的校验数据,从而保证存入离线条带的子数据的可恢复性,因此达到了保证处于降级状态的RAID所存储的数据的可恢复性的效果。下面将基于上面的本发明实施例涉及的共性方面,对本发明实施例进行进一步详细说明。
请参考图2,其示出了本发明一个实施例提供的数据降级存储方法的流程图。该方法应用于图1B所示的RAID控制器10中,可以包括如下几个步骤。
步骤201,获取待存储的数据,检测是否存在在线条带,如果不存在在线条带,则为数据分配离线条带。
该在线条带为包括的分块均为在线分块的条带,该离线条带为包括的分块存在离线分块的条带,其中,在线表示工作正常,离线表示工作异常。
在获取待存储的数据之前,将多个存储设备通过硬件或软件方式组合在一起形成的存储设备组后,组管理组件为该存储设备组创建至少一个存储池,设置每个存储池的存储容量、每个存储池的安全级别,以及每个存储池所属存储设备组的组标识。
其中,存储容量用于指示该存储池中最大存储数据的容量,比如:1G,1T。
安全级别用于定义在线条带的在线分块中数据分块的数量和校验分块的数量,表明该存储池中的数据在存入条带之后,同时损坏(即离线)多少存储设备不造成待存储的数据丢失。比如,某一存储池的安全级别为3+1,那么该存储池中的数据所存入的条带中有3块数据分块和1块校验分块,当该条带中有1块分块离线时,该待存储的数据不会丢失。再比如,某一存储池的安全级别为8+3,那么该存储池中的数据所存入的条带中有8块数据分块和3块校验分块,当该条带中最多3块分块同时离线时,该待存储的数据不会丢失。
组标识由云存储生成,利用组标识可将待存储的数据存入该组标识对应的存储设备中。
获取待存储的数据后,先将该数据缓存至可存储的容量大于该数据的大小的存储池中,条带服务组件对该数据进行编码或解码,并向组管理组件请求一组存储设备组的IP地址。
一般情况下,请求的存储设备组包括的存储设备的数量为该存储池的安全级别定义的数据分块的数量和校验分块的数量之和(比如,缓存待存储的数据的存储池的安全级别为8+3,那么请求的一组存储设备组包括的存储设备的个数为11(8+3)个),当组管理组件接收到条带服务组件发送的请求后,获取该存储设备组中的一个条带,检测该条带中包括的在线分块的数量,若该条带中包括的在线分块的数量与该存储设备组包括的存储设备的数量相同,说明该存储设备组包括的存储设备均正常工作。由于各磁盘的相同区域为组成条带的分块,因此若该条带包括的分块均为在线分块,该条带则为在线条带;同理,若该条带中包括的在线分块的数量小于该存储设备组包括的存储设备的数量,说明该存储设备组中存在未正常工作的存储设备,若该条带中存在离线分块,该条带则为离线条带。如果不存在在线条带,组管理组件则为数据分配离线条带,将该离线条带对应的存储设备组的IP地址反馈给条带服务组件,条带服务器接收到离线条带对应的存储设备组的IP地址后,自动触发数据的降级写逻辑。
步骤202,如果离线条带中在线分块的数量大于预设的每个条带中校验分块的数量加1,则在离线条带的在线分块中重新分配数据分块和校验分块,其中,校验分块的数量为预设的每个条带中校验分块的数量。
校验数据需要根据至少两个数据生成,对同一组数据采用的校验算法不同,得到的检验数据也不同,当检验分块的数量大于1时,各个校验分块对应的检验算法也不同。其中,检验算法为异或校验、奇偶校验、伽罗华域乘法等等,本实施例对检验算法的具体方式不做限定。
由校验分块用于存储同一条带中的数据分块所存储的数据的校验结果可知,一个条带的在现分块中至少得包括两块数据分块,根据两块数据分块中存储的数据才能生成检验数据。在线分块的数量为数据分块的数量和校验分块的数量之和,也就是说,在线分块至少比检验分块多2块,才能保证在数据块存有数据的情况下,检验数据的有效生成。
条带服务组件触发降级后,会自动将待存储的数据的安全级别设置为(X-M)+M,以保证降级后的待存储的数据的安全级别的冗余份数(校验分块的数量)仍为存储池的安全级别的冗余份数(校验分块的数量),使得待存储的数据的存储流程不会被中断,即仍分散存入离线条带的各个数据分块中。其中,X为在线分块的数量,M为在线分块中校验分块的数量,X-M为在线分块中数据分块的数量。
因此,如果离线条带中在线分块的数量大于预设的每个条带中校验分块的数量加1,组管理组件则在离线条带的在线分块中重新分配数据分块和校验分块,使得重新分配后的校验分块的数量为预设的每个条带中校验分块的数量(即预设的安全级别所定义的校验分块的数量)。
需要说明的是,检验数据的生成方式可为奇偶校验、异或校验等,本实施例不限定检验数据的生成方式。
步骤203,根据重新分配的数据分块和校验分块,将数据存入离线条带中。
RAID控制器根据重新分配的数据分块和校验分块,将数据存入离线条带中之后,当某个数据分块在存入数据的过程中发生读写失败时,若发生读写失败的是数据分块,在RAID重建的过程中,条带服务组件可根据校验分块中存储的检验数据以及未发生读写失败的数据分块中的数据,对发生读写失败的数据分块中的数据进行恢复,从而恢复待存储的数据;若发生读写失败的是校验分块,由于存储在数据分块中的数据未丢失,因此条带服务组件可根据存储在数据分块中的数据重新计算检验数据。
综上所述,本实施例提供的数据降级存储方法,通过在RAID为降级状态时,在离线条带的在线分块中重新分配数据分块和校验分块,或者将离线条带中的在线分块都设置为数据分块后,将数据存入离线条带中,由于在RAID为降级状态时,仍会生成存入离线条带的子数据对应的校验数据,从而保证存入离线条带的子数据的可恢复性,因此解决了现有技术中处于降级状态的RAID仅会继续分散存储后续存入的数据,而不再计算并存储检验数据,一旦某个数据分块发生读写失败,导致存储在该磁盘上的所有数据丢失且无法恢复的问题,达到了保证处于降级状态的RAID所存储的数据的可恢复性的效果。
在一种可能实现的方式中,请参考图3,其示出了本发明一个实施例提供的离线条带中在线分块的数量大于预设的每个条带中校验分块的数量加1时数据降级存储方法的流程图。该方法应用于图1B所示的RAID控制器10中,可以包括如下几个步骤。
步骤301,获取待存储的数据,基于预设的子数据容量将数据划分成至少一个子数据,检测是否存在在线条带,如果不存在在线条带,则为数据分配离线条带。
举例,设预设的子数据容量为1MB,数据的容量为12MB,条带服务组件获取待存储的数据后,以1MB为单位将数据划分成12个子数据。
步骤302,如果离线条带中在线分块的数量大于预设的每个条带中校验分块的数量加1,则在离线条带的在线分块中重新分配数据分块和校验分块,其中,校验分块的数量为预设的每个条带中校验分块的数量。
举例,设重新分配后的离线条带中数据分块数量为3,校验分块的数量为2。RAID控制器将待存入的至少一个子数据分散储存于该离线条带的3个数据分块中,并分别计算出3个数据分块中所存储的子数据对应的2个校验数据,并将2个校验数据分别存储到该离线条带的2个数据分块中。
步骤303,根据重新分配的数据分块和校验分块,将至少一个子数据存入离线条带的数据分块中,生成子数据对应的校验数据,将校验数据存入校验分块。
在一种可能实现的方式中,由于条带服务组件将至少一个子数据存入离线条带的数据分块后,可能会出现部分离线条带中存在未存入子数据的数据分块的情况,因此步骤303中“生成子数据对应的校验数据”的步骤包含下述两种情况:
第一种情况A1,如果离线条带中存在未存入子数据的数据分块,则向离线条带中未存入子数据的数据分块存入预设的填充数据,生成子数据和填充数据对应的校验数据。
举例,设数据分块的数量为6,子数据的数量为4,预设的填充数据为0。那么,将子数据分散存入数据分块后,会剩下2块数据分块未存入子数据,此时条带服务组件可向未存入子数据的2块数据分块存入0,生成存储在4块数据分块中的子数据和存储在2块数据分块中的0对应的校验数据。
需要说明的是,预设的填充数据可以为一位数据,也可以为多位数据,可以为正数,也可以为0或者负数,本实例不对预设的填充数据的位数和数值做具体限定。
第二种情况A2,如果离线条带中不存在未存入子数据的数据分块,则生成全部子数据对应的校验数据。
在一种可能实现的方式中,由于在基于预设的子数据容量将数据划分成至少一个子数据后,可能会出现数据仅被划分成一个子数据的情况,因此步骤303中“生成子数据对应的校验数据”的步骤还包含下述两种情况:
第三种情况B1,如果子数据的数目为1,则生成与子数据相同的校验数据。
由于检验数据需根据至少两个字数才能有效生成,如果数据仅被划分成1个子数据,则无法生成对应的检验数据,此时条带服务组件可直接生成与子数据相同的检验数据。
第四种情况B2,如果子数据的数目大于1,则生成全部子数据对应的校验数据。
如果子数据的数目大于1,则可生成对应的校验数据,条带服务组件将至少一个子数据存入离线条带的数据分块中,生成该离线条带的数据分块中存储的全部子数据对应的校验数据。
需要说明的是,第一种情况A1至第四种情况B2可以并列实施。
步骤304,当检测到空闲的在线条带时,将数据转移到空闲的在线条带中。
在离线条带中的离线分块所属的存储设备被全部修复后,存储设备组中的离线条带变更为在线条带,当组管理组件检测到空闲的在线条带时,首先按照预设的每个条带中校验分块的数量,分配该空闲的线条带中的数据分块和校验分块,然后向条带服务组件下发数据重写任务,条带服务组件接收到数据重写任务后,将数据转移到该空闲的在线条带的数据分块中,并生成存入数据分块中的数据对应的校验数据,将校验数据存入校验分块。
需要说明的是,可以周期性检测空闲的在线条带,也可以定期检测空闲的在线条带,还可以由人为手动检测空闲的在线条带,本实施例不对检测空闲的在线条带的具体时间点和具体频率进行限定。
综上所述,本实施例提供的数据降级存储方法,通过在RAID为降级状态时,在离线条带的在线分块中重新分配数据分块和校验分块,或者将离线条带中的在线分块都设置为数据分块后,将数据存入离线条带中,由于在RAID为降级状态时,仍会生成存入离线条带的子数据对应的校验数据,从而保证存入离线条带的子数据的可恢复性,因此解决了现有技术中处于降级状态的RAID仅会继续分散存储后续存入的数据,而不再计算并存储检验数据,一旦某个数据分块发生读写失败,导致存储在该磁盘上的所有数据丢失且无法恢复的问题,达到了保证处于降级状态的RAID所存储的数据的可恢复性的效果。
在一种可能实现的方式中,请参考图4,其示出了本发明一个实施例提供的离线条带中在线分块的数量小于或等于预设的每个条带中校验分块的数量加1时数据降级存储方法的流程图。该方法应用于图1B所示的RAID控制器10中,可以包括如下几个步骤。
步骤401,获取待存储的数据,基于预设的子数据容量将数据划分成至少一个子数据,检测是否存在在线条带,如果不存在在线条带,则为数据分配离线条带。
步骤402,如果离线条带中在线分块的数量小于或等于预设的每个条带中校验分块的数量加1,则将离线条带中的在线分块都设置为数据分块。
如果离线条带中在线分块的数量小于或等于预设的每个条带中校验分块的数量加1,说明在保证校验分块数量的前提下,数据分块的数量只有1块甚至没有,待存储的数据无法进行分散存入。为了保证数据的存储,可不对在线分块进行校验分块的设置,即组管理组件将离线条带中的在线分块都设置为数据分块。
步骤403,根据重新分配的数据分块,将数据复制多份分别存储到离线条带的多个数据分块中。
RAID控制器根据重新分配的数据分块,将数据复制多份分别存储到离线条带的多个数据分块中之后,当某个数据分块在存入数据的过程中发生读写失败时,由于该待存储的数据在其他数据分块上也有存储,条带服务组件仍能对该待存储的数据进行恢复。
举例,设重新分配后的离线条带中数据分块数量为3。RAID控制器可以将待存储的数据复制2份分别存储到离线条带的任意2个数据分块中,也可以将待存储的数据复制2份分别存储到离线条带的全部3个数据分块中。
需要说明的是,数据被复制的份数和数据被分别存储到离线条带的数据分块的个数相同。
步骤404,当检测到空闲的在线条带时,将数据转移到空闲的在线条带中。
需要说明的是,本实施例中步骤401与步骤301类似,步骤404与步骤304类似,因此,本实施例不再对步骤401和步骤404赘述说明。
综上所述,本实施例提供的数据降级存储方法,通过在RAID为降级状态时,在离线条带的在线分块中重新分配数据分块和校验分块,或者将离线条带中的在线分块都设置为数据分块后,将数据存入离线条带中,由于在RAID为降级状态时,仍会生成存入离线条带的子数据对应的校验数据,从而保证存入离线条带的子数据的可恢复性,因此解决了现有技术中处于降级状态的RAID仅会继续分散存储后续存入的数据,而不再计算并存储检验数据,一旦某个数据分块发生读写失败,导致存储在该磁盘上的所有数据丢失且无法恢复的问题,达到了保证处于降级状态的RAID所存储的数据的可恢复性的效果。
下述为本发明装置实施例,可以用于执行本发明方法实施例。对于本发明装置实施例中未披露的细节,请参照本发明方法实施例。
请参考图5A,其示出了本发明一个实施例提供的数据降级存储装置的框图。该装置具有实现上述方法示例的功能,所述功能可以由硬件实现,也可以由硬件执行相应的软件实现。该装置包括:分配模块501、第一设置模块502和第一第一存入模块503。
分配模块501,用于获取待存储的数据,检测是否存在在线条带,如果不存在在线条带,则为数据分配离线条带;
第一设置模块502,用于如果离线条带中在线分块的数量大于预设的每个条带中校验分块的数量加1,则在离线条带的在线分块中重新分配数据分块和校验分块,其中,校验分块的数量为预设的每个条带中校验分块的数量;
第一存入模块503,用于根据重新分配的数据分块和校验分块,将数据存入离线条带中。
综上所述,本发明实施例提供的数据降级存储装置,通过在RAID为降级状态时,在离线条带的在线分块中重新分配数据分块和校验分块,或者将离线条带中的在线分块都设置为数据分块后,将数据存入离线条带中,由于在RAID为降级状态时,仍会生成存入离线条带的子数据对应的校验数据,从而保证存入离线条带的子数据的可恢复性,因此解决了现有技术中处于降级状态的RAID仅会继续分散存储后续存入的数据,而不再计算并存储检验数据,一旦某个数据分块发生读写失败,导致存储在该磁盘上的所有数据丢失且无法恢复的问题,达到了保证处于降级状态的RAID所存储的数据的可恢复性的效果。
在基于图5A所示实施例提供的一个可选实施例中,请参考图5B,其示出了本发明另一个实施例提供的数据降级存储装置的框图。该分配模块501,还用于
获取待存储的数据,基于预设的子数据容量将数据划分成至少一个子数据;
第一存入模块503,还用于将至少一个子数据存入离线条带的数据分块中,生成子数据对应的校验数据,将校验数据存入校验分块。
在基于图5A所示实施例提供的另一个可选实施例中,请参考图5B,该第一存入模块503,包括:第一生成单元503a和第二生成单元503b。
第一生成单元503a,用于如果离线条带中存在未存入子数据的数据分块,则向离线条带中未存入子数据的数据分块存入预设的填充数据,生成子数据和填充数据对应的校验数据;
第二生成单元503b,用于如果离线条带中不存在未存入子数据的数据分块,则生成全部子数据对应的校验数据。
在基于图5A所示实施例提供的再一个可选实施例中,请参考图5B,该第一存入模块503,还包括:第三生成单元503c和第四生成单元503d。
第三生成单元503c,用于如果子数据的数目为1,则生成与子数据相同的校验数据;
第四生成单元503d,用于如果子数据的数目大于1,则生成全部子数据对应的校验数据。
在基于图5A所示实施例提供的又一个可选实施例中,请参考图5B,该装置还包括:第二设置模块504和第二存入模块505。
第二设置模块504,用于在为数据分配离线条带之后,如果离线条带中在线分块的数量小于或等于预设的每个条带中校验分块的数量加1,则将离线条带中的在线分块都设置为数据分块;
第二存入模块505,用于根据重新分配的数据分块,将数据复制多份分别存储到离线条带的多个数据分块中。
在基于图5A所示实施例提供的又一个可选实施例中,请参考图5B,该第二存入模块505,还用于将数据存入离线条带的至少一个数据分块中。
在基于图5A所示实施例提供的又一个可选实施例中,请参考图5B,该装置还包括:转移模块506。
转移模块506,用于在将数据存入离线条带中之后,当检测到空闲的在线条带时,将数据转移到空闲的在线条带中。
需要说明的是:上述实施例提供的装置在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置和方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (14)
1.一种数据降级存储方法,其特征在于,所述方法包括:
获取待存储的数据,检测是否存在在线条带,如果不存在在线条带,则为所述数据分配离线条带;
如果所述离线条带中在线分块的数量大于预设的每个条带中校验分块的数量加1,则在所述离线条带的在线分块中重新分配数据分块和校验分块,其中,所述校验分块的数量为所述预设的每个条带中校验分块的数量;
根据重新分配的数据分块和校验分块,将所述数据存入所述离线条带中。
2.根据权利要求1所述的方法,其特征在于,所述获取待存储的数据,包括:
获取所述待存储的数据,基于预设的子数据容量将所述数据划分成至少一个子数据;
所述将所述数据存入所述离线条带中,包括:
将所述至少一个子数据存入所述离线条带的数据分块中,生成所述子数据对应的校验数据,将所述校验数据存入所述校验分块。
3.根据权利要求2所述的方法,其特征在于,所述生成所述子数据对应的校验数据,包括:
如果所述离线条带中存在未存入子数据的数据分块,则向所述离线条带中未存入子数据的数据分块存入预设的填充数据,生成所述子数据和所述填充数据对应的校验数据;
如果所述离线条带中不存在未存入子数据的数据分块,则生成全部子数据对应的校验数据。
4.根据权利要求2所述的方法,其特征在于,所述生成所述子数据对应的校验数据,包括:
如果所述子数据的数目为1,则生成与所述子数据相同的校验数据;
如果所述子数据的数目大于1,则生成全部子数据对应的校验数据。
5.根据权利要求1所述的方法,其特征在于,在所述为所述数据分配离线条带之后,所述方法还包括:
如果所述离线条带中在线分块的数量小于或等于预设的每个条带中校验分块的数量加1,则将所述离线条带中的在线分块都设置为数据分块;
根据重新分配的数据分块,将所述数据存入所述离线条带中。
6.根据权利要求5所述的方法,其特征在于,所述将所述数据存入所述离线条带中,包括:
将所述数据复制多份分别存储到所述离线条带的多个数据分块中。
7.根据权利要求1-6任一所述的方法,其特征在于,在所述将所述数据存入所述离线条带中之后,所述方法还包括:
当检测到空闲的在线条带时,将所述数据转移到所述空闲的在线条带中。
8.一种数据降级存储装置,其特征在于,所述装置包括:
分配模块,用于获取待存储的数据,检测是否存在在线条带,如果不存在在线条带,则为所述数据分配离线条带;
第一设置模块,用于如果所述离线条带中在线分块的数量大于预设的每个条带中校验分块的数量加1,则在所述离线条带的在线分块中重新分配数据分块和校验分块,其中,所述校验分块的数量为所述预设的每个条带中校验分块的数量;
第一存入模块,用于根据重新分配的数据分块和校验分块,将所述数据存入所述离线条带中。
9.根据权利要求8所述的装置,其特征在于,所述分配模块,还用于获取待存储的数据,基于预设的子数据容量将所述数据划分成至少一个子数据;
所述第一存入模块,还用于将所述至少一个子数据存入所述离线条带的数据分块中,生成所述子数据对应的校验数据,将所述校验数据存入所述校验分块。
10.根据权利要求9所述的装置,其特征在于,所述第一存入模块,包括:
第一生成单元,用于如果所述离线条带中存在未存入子数据的数据分块,则向所述离线条带中未存入子数据的数据分块存入预设的填充数据,生成所述子数据和所述填充数据对应的校验数据;
第二生成单元,用于如果所述离线条带中不存在未存入子数据的数据分块,则生成全部子数据对应的校验数据。
11.根据权利要求9所述的装置,其特征在于,所述第一存入模块,还包括:
第三生成单元,用于如果所述子数据的数目为1,则生成与所述子数据相同的校验数据;
第四生成单元,用于如果所述子数据的数目大于1,则生成全部子数据对应的校验数据。
12.根据权利要求8所述的装置,其特征在于,所述装置还包括:
第二设置模块,用于在所述为所述数据分配离线条带之后,如果所述离线条带中在线分块的数量小于或等于预设的每个条带中校验分块的数量加1,则将所述离线条带中的在线分块都设置为数据分块;
第二存入模块,用于根据重新分配的数据分块,将所述数据存入所述离线条带中。
13.根据权利要求12所述的装置,其特征在于,所述第二存入模块,还用于将所述数据复制多份分别存储到所述离线条带的多个数据分块中。
14.根据权利要求8-13任一所述的装置,其特征在于,所述装置还包括:
转移模块,用于在所述将所述数据存入所述离线条带中之后,当检测到空闲的在线条带时,将所述数据转移到所述空闲的在线条带中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710393050.4A CN108932176B (zh) | 2017-05-27 | 2017-05-27 | 数据降级存储方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710393050.4A CN108932176B (zh) | 2017-05-27 | 2017-05-27 | 数据降级存储方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108932176A true CN108932176A (zh) | 2018-12-04 |
CN108932176B CN108932176B (zh) | 2021-09-21 |
Family
ID=64448566
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710393050.4A Active CN108932176B (zh) | 2017-05-27 | 2017-05-27 | 数据降级存储方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108932176B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110059062A (zh) * | 2019-04-22 | 2019-07-26 | 苏州浪潮智能科技有限公司 | 一种文件系统的条带设置方法、系统及相关组件 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040095666A1 (en) * | 2002-11-20 | 2004-05-20 | International Business Machines Corporation | On-drive integrated sector format raid error correction code system and method |
CN101916173A (zh) * | 2010-08-27 | 2010-12-15 | 杭州华三通信技术有限公司 | 一种基于raid的数据读写方法及其系统 |
CN102043685A (zh) * | 2010-12-31 | 2011-05-04 | 成都市华为赛门铁克科技有限公司 | 独立磁盘冗余阵列系统及其数据恢复方法 |
CN102722340A (zh) * | 2012-04-27 | 2012-10-10 | 华为技术有限公司 | 数据处理方法、装置及系统 |
-
2017
- 2017-05-27 CN CN201710393050.4A patent/CN108932176B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040095666A1 (en) * | 2002-11-20 | 2004-05-20 | International Business Machines Corporation | On-drive integrated sector format raid error correction code system and method |
CN101916173A (zh) * | 2010-08-27 | 2010-12-15 | 杭州华三通信技术有限公司 | 一种基于raid的数据读写方法及其系统 |
CN102043685A (zh) * | 2010-12-31 | 2011-05-04 | 成都市华为赛门铁克科技有限公司 | 独立磁盘冗余阵列系统及其数据恢复方法 |
CN102722340A (zh) * | 2012-04-27 | 2012-10-10 | 华为技术有限公司 | 数据处理方法、装置及系统 |
Non-Patent Citations (1)
Title |
---|
吴素贞: ""磁盘阵列高可用技术研究"", 《中国博士学位论文全文数据库(信息科技辑)》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110059062A (zh) * | 2019-04-22 | 2019-07-26 | 苏州浪潮智能科技有限公司 | 一种文件系统的条带设置方法、系统及相关组件 |
CN110059062B (zh) * | 2019-04-22 | 2020-05-29 | 苏州浪潮智能科技有限公司 | 一种文件系统的条带设置方法、系统及相关组件 |
Also Published As
Publication number | Publication date |
---|---|
CN108932176B (zh) | 2021-09-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106201338B (zh) | 数据存储方法及装置 | |
CN108228086B (zh) | Raid重建的方法和设备 | |
US5805788A (en) | Raid-5 parity generation and data reconstruction | |
US20190129815A1 (en) | Drive extent based end of life detection and proactive copying in a mapped raid (redundant array of independent disks) data storage system | |
US5826001A (en) | Reconstructing data blocks in a raid array data storage system having storage device metadata and raid set metadata | |
US7093069B2 (en) | Integration of a RAID controller with a disk drive module | |
US20060123270A1 (en) | Method and system for recovering from abnormal interruption of a parity update operation in a disk array system | |
CN104765693A (zh) | 一种用于存储数据的方法、装置和系统 | |
US9983804B2 (en) | Skewing expected wearout times of memory devices | |
US8433950B2 (en) | System to determine fault tolerance in an integrated circuit and associated methods | |
US20060218438A1 (en) | Method and apparatus for identifying failure module | |
CN109739436A (zh) | Raid重构方法、存储介质和装置 | |
US20170132079A1 (en) | Rebuilding and verifying an encoded data slice utilizing slice verification information | |
CN110291505A (zh) | 减少应用的恢复时间 | |
CN107153661A (zh) | 一种基于hdfs系统的数据的存储、读取方法及其装置 | |
CN108932176A (zh) | 数据降级存储方法及装置 | |
CN106062721B (zh) | 一种将数据写入存储系统的方法和存储系统 | |
US20120185724A1 (en) | Parity-based vital product data backup | |
CN113157491A (zh) | 数据备份方法、装置、通信设备及存储介质 | |
CN109558086B (zh) | 一种数据读取方法、系统及相关组件 | |
CN104156276B (zh) | 一种防两块磁盘损坏的raid方法 | |
CN103823637B (zh) | 一种数据处理方法及设备 | |
CN104407806A (zh) | 独立磁盘冗余阵列组硬盘信息的修改方法和装置 | |
CN104281499A (zh) | 基于奇偶校验的raid条带镜像数据分布方法 | |
KR101810029B1 (ko) | 스토리지 장치용 기록 방법 및 기록 장치 |
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 |