一种基于可变条带的RAID维护方法及系统与流程

文档序号:12469333阅读:219来源:国知局
一种基于可变条带的RAID维护方法及系统与流程

本发明涉及存储技术领域,特别涉及一种基于可变条带的RAID维护方法及系统。



背景技术:

当前,随着互联网、云计算和物联网等技术的发展,数据存储方面的相关技术也得到了快速的发展。其中,固态硬盘作为新一代的存储设备,已经广泛地应用于多个领域。

由于固态硬盘中NAND闪存的擦写次数有限制,因此为了能够保障数据的完整性,现有的固态硬盘通过实现RAID(即Redundant Arrays of Independent Disks)的方式,来保证能够通过冗余校验数据将遭到损坏的数据恢复出来。从而保证数据的完整性。

固态硬盘的RAID磁盘阵列中通常包括多个RAID条带,其中,每个RAID条带内包括多个超级块,而每个超级块则包括多组数据块,超级块中数据块的组数即为该超级块所对应的条带长度,通常情况下,每个超级块中数据块的总组数与固态硬盘的通道数是相同的,也即,每个超级块中的每组数据块对应于固态硬盘的一个通道,每个超级块的条带长度与固态硬盘的通道数相同。

传统的固态硬盘是基于固定的条带长度来实现RAID的。这种实现RAID的方式使得,当往某个超级块中的某个数据块写入数据时出现写入失败的情况,这个时候为了使该超级块的条带长度保持稳定以确保能够继续在该超级块上实现RAID,则需要从其他地方选出一个好的数据块来替换上述坏的数据块,并对超级块与数据块之间的映射关系进行相应的动态更新。可见,上述RAID的维护过程需要动态维护超级块和数据块之间的映射表,复杂性较高。

综上所述可以看出,如何降低RAID维护过程的复杂性是目前有待解决的问题。



技术实现要素:

有鉴于此,本发明的目的在于提供一种基于可变条带的RAID维护方法及系统,降低了RAID维护过程的复杂性。其具体方案如下:

一种基于可变条带的RAID维护方法,包括:

在将目标数据写入第一数据块的过程中,对相应的写入操作进行实时监视,其中,所述第一数据块为位于目标RAID条带的第一超级块上的任一数据块;

若监视到所述写入操作发生写错误事件,则将所述目标数据写入第二数据块,并在预设映射文件中将所述第一数据块当前的状态标记为不可写状态,以相应地使所述第一超级块上的条带长度减1;其中,所述第二数据块为位于所述目标RAID条带的第二超级块上的任一数据块,所述预设映射文件为预先记录的超级块与数据块之间映射关系的文件;

若当前所述第一超级块上的条带长度大于或等于预设最短长度,则在当前所述第一超级块上重新实现RAID,其中,所述预设最短长度为能允许在超级块上实现RAID的最短条带长度。

优选的,所述预设映射文件为基于bitmap方式进行构建的映射文件。

优选的,所述在当前所述第一超级块上重新实现RAID的过程之前,还包括:

将所述第一超级块上已保存的所有有效数据迁移至其他超级块。

优选的,在将所述第一超级块上已保存的所有有效数据迁移至其他超级块之后,还包括:

若当前所述第一超级块上的条带长度小于所述预设最短长度,则将当前所述第一超级块上的所有完好数据块回收至预设回收库中。

优选的,所述RAID维护方法,还包括:

当所述预设回收库中的所有完好数据块的总数量大于或等于预设数量,则将所述预设回收库中的所有完好数据块构建成一个新的超级块。

本发明还公开了一种基于可变条带的RAID维护系统,包括:

写入操作监视模块,用于在将目标数据写入第一数据块的过程中,对相应的写入操作进行实时监视,其中,所述第一数据块为位于目标RAID条带的第一超级块上的任一数据块;

数据重写模块,用于当所述写入操作监视模块监视到所述写入操作发生写错误事件,则将所述目标数据写入第二数据块,所述第二数据块为位于所述目标RAID条带的第二超级块上的任一数据块;

数据块标记模块,用于当所述写入操作监视模块监视到所述写入操作发生写错误事件,则在预设映射文件中将所述第一数据块当前的状态标记为不可写状态,以相应地使所述第一超级块上的条带长度减1,所述预设映射文件为预先记录的超级块与数据块之间映射关系的文件;

RAID实现模块,用于在所述数据块标记模块进行标记处理后,若当前所述第一超级块上的条带长度大于或等于预设最短长度,则在当前所述第一超级块上重新实现RAID,所述预设最短长度为能允许在超级块上实现RAID的最短条带长度。

优选的,所述预设映射文件为基于bitmap方式进行构建的映射文件。

优选的,所述RAID维护系统,还包括:

数据迁移模块,用于在所述RAID实现模块重新实现RAID之前,将所述第一超级块上已保存的所有有效数据迁移至其他超级块。

优选的,所述RAID维护系统,还包括:

数据块回收模块,用于在所述数据迁移模块将所述第一超级块上已保存的所有有效数据迁移至其他超级块之后,若当前所述第一超级块上的条带长度小于所述预设最短长度,则将当前所述第一超级块上的所有完好数据块回收至预设回收库中。

优选的,所述RAID维护系统,还包括:

超级块构建模块,用于当所述预设回收库中的所有完好数据块的总数量大于或等于预设数量,则将所述预设回收库中的所有完好数据块构建成一个新的超级块。

本发明中,RAID维护方法,包括:在将目标数据写入第一数据块的过程中,对相应的写入操作进行实时监视,其中,第一数据块为位于目标RAID条带的第一超级块上的任一数据块;若监视到写入操作发生写错误事件,则将目标数据写入第二数据块,并在预设映射文件中将第一数据块当前的状态标记为不可写状态,以相应地使第一超级块上的条带长度减1;其中,第二数据块为位于目标RAID条带的第二超级块上的任一数据块,预设映射文件为预先记录的超级块与数据块之间映射关系的文件;若当前第一超级块上的条带长度大于或等于预设最短长度,则在当前第一超级块上重新实现RAID。

可见,本发明中,当超级块中的第一数据块出现写入错误时,则将相应的数据写入另一个超级块上,并将上述第一数据块的状态标记为不可写状态,由此使得第一超级块上的条带长度减少1;并且,在上述超级块的条带长度减少了1的情况下,若当前第一超级块上的条带长度不小于预设最短长度,则在当前第一超级快上重新实现RAID。相较于现有技术的RAID维护方式,本发明只需将损坏的数据块进行相应地标记,然后在条带长度减少了1的超级块上重新实现RAID,而无需利用好的数据块来替换坏的数据块以维持超级块条带长度的稳定性,从而避免了现有技术中由于需要对超级块和数据块之间的映射表进行动态维护所带来的复杂性,也即,本发明降低了RAID维护过程的复杂性。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本发明实施例公开的一种基于可变条带的RAID维护方法流程图;

图2为本发明实施例公开的一种基于可变条带的RAID维护系统结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例公开了一种基于可变条带的RAID维护方法,参见图1所示,该方法包括:

步骤S11:在将目标数据写入第一数据块的过程中,对相应的写入操作进行实时监视,其中,第一数据块为位于目标RAID条带的第一超级块上的任一数据块。

需要说明的是,本发明实施例是应用在固态硬盘的RAID磁盘阵列,其中,RAID磁盘阵列包括至少一个RAID条带,每个RAID条带内包括至少两个超级块,每个超级块包括多组数据块,每个超级块中数据块的组数即为该超级块所对应的条带长度。本发明实施例中,每个超级块中数据块的总组数小于或等于固态硬盘的通道数,每个超级块中的每组数据块均独立地对应于固态硬盘的一个通道。

步骤S12:若监视到写入操作发生写错误事件,则将目标数据写入第二数据块,并在预设映射文件中将第一数据块当前的状态标记为不可写状态,以相应地使第一超级块上的条带长度减1;其中,第二数据块为位于目标RAID条带的第二超级块上的任一数据块,预设映射文件为预先记录的超级块与数据块之间映射关系的文件。

也即,在上述第一数据块出现写入错误事件后,则将相应的目标数据写到同一RAID条带的另一超级块中,并在预设映射文件中将上述第一数据块的状态标记为不可写状态,以使上述第一数据块所在的一组数据块处于被隔离的无效状态,也即使得上述第一超级块上的条带长度减1。

例如,假设某个超级块原本拥有的数据块的组数为5组,也即,该超级块的条带长度为5;若超级块中的某个数据块出现了写错误事件,则将该数据块标记为不可写数据块,以将该数据块所在的一组数据块隔离出来,从而使得该超级块的条带长度变成4。

步骤S13:若当前第一超级块上的条带长度大于或等于预设最短长度,则在当前第一超级块上重新实现RAID,其中,预设最短长度为能允许在超级块上实现RAID的最短条带长度。

可以理解的是,在超级块上实现RAID时,对超级块的条带长度是有最低要求的。而这个最低要求便是上述所谓的预设最短长度。

本实施例中,当某个超级块由于内部的数据块出现写入错误而导致条带长度减少后,若当前该超级块的条带长度依然不小于上述预设最短长度,则可在该超级块上重新实现RAID。

可见,本发明实施例中,当超级块中的第一数据块出现写入错误时,则将相应的数据写入另一个超级块上,并将上述第一数据块的状态标记为不可写状态,由此使得第一超级块上的条带长度减少1;并且,在上述超级块的条带长度减少了1的情况下,若当前第一超级块上的条带长度不小于预设最短长度,则在当前第一超级快上重新实现RAID。相较于现有技术的RAID维护方式,本发明实施例只需将损坏的数据块进行相应地标记,然后在条带长度减少了1的超级块上重新实现RAID,而无需利用好的数据块来替换坏的数据块以维持超级块条带长度的稳定性,从而避免了现有技术中由于需要对超级块和数据块之间的映射表进行动态维护所带来的复杂性,也即,本发明实施例降低了RAID维护过程的复杂性。

本发明实施例公开了一种具体的基于可变条带的RAID维护方法,相对于上一实施例,本实施例对技术方案作了进一步的说明和优化。具体的:

上一实施例步骤S12中,当监视到写入操作发生写错误事件,则在预设映射文件中将第一数据块当前的状态标记为不可写状态。具体的,上述预设映射文件可以是基于bitmap方式进行构建的映射文件,当然,也可以采用现有的其他映射文件构建方式来构建上述预设映射文件。

另外,上一实施例步骤S13中,在第一超级块上的条带长度减1后,若当前第一超级块的条带长度不小于预设最短长度,则在当前第一超级快上重新实现RAID。当然,为了避免丢失第一超级块中已有的有效数据,本发明实施例中,在当前第一超级块上重新实现RAID的过程之前,还可以进一步包括:将第一超级块上已保存的所有有效数据迁移至其他超级块。例如,可以在重新实现RAID之前,将第一超级块中的所有有效数据迁移至其他RAID条带中的超级块中,也可以迁移至同一RAID条带中的超级块。

本发明实施例中,在将所述第一超级块上已保存的所有有效数据迁移至其他超级块之后,还可以进一步包括:若当前第一超级块上的条带长度小于上述预设最短长度,则将当前第一超级块上的所有完好数据块回收至预设回收库中。

进一步的,本发明实施例中的RAID维护方法,还可以包括:当上述预设回收库中的所有完好数据块的总数量大于或等于预设数量,则将预设回收库中的所有完好数据块构建成一个新的超级块。可以理解的是,上述预设数量为不小于上述预设最短长度的数值。另外,在将上述预设回收库中的完好数据块构建成一个新的超级块后,还可在该超级块上实现RAID。

相应的,本发明实施例还公开了一种基于可变条带的RAID维护系统,参见图2所示,该系统包括:

写入操作监视模块21,用于在将目标数据写入第一数据块的过程中,对相应的写入操作进行实时监视,其中,第一数据块为位于目标RAID条带的第一超级块上的任一数据块;

数据重写模块22,用于当写入操作监视模块21监视到写入操作发生写错误事件,则将目标数据写入第二数据块,第二数据块为位于目标RAID条带的第二超级块上的任一数据块;

数据块标记模块23,用于当写入操作监视模块21监视到写入操作发生写错误事件,则在预设映射文件中将第一数据块当前的状态标记为不可写状态,以相应地使第一超级块上的条带长度减1,预设映射文件为预先记录的超级块与数据块之间映射关系的文件;

RAID实现模块24,用于在数据块标记模块23进行标记处理后,若当前第一超级块上的条带长度大于或等于预设最短长度,则在当前第一超级块上重新实现RAID,预设最短长度为能允许在超级块上实现RAID的最短条带长度。

可见,本发明实施例中,当超级块中的第一数据块出现写入错误时,则将相应的数据写入另一个超级块上,并将上述第一数据块的状态标记为不可写状态,由此使得第一超级块上的条带长度减少1;并且,在上述超级块的条带长度减少了1的情况下,若当前第一超级块上的条带长度不小于预设最短长度,则在当前第一超级快上重新实现RAID。相较于现有技术的RAID维护方式,本发明实施例只需将损坏的数据块进行相应地标记,然后在条带长度减少了1的超级块上重新实现RAID,而无需利用好的数据块来替换坏的数据块以维持超级块条带长度的稳定性,从而避免了现有技术中由于需要对超级块和数据块之间的映射表进行动态维护所带来的复杂性,也即,本发明实施例降低了RAID维护过程的复杂性。

优选的,上述预设映射文件具体可以为基于bitmap方式进行构建的映射文件。

进一步的,本实施例中的RAID维护系统,还可以包括:

数据迁移模块,用于在RAID实现模块重新实现RAID之前,将第一超级块上已保存的所有有效数据迁移至其他超级块。

本实施例中的RAID维护系统,还可以进一步包括:

数据块回收模块,用于在数据迁移模块将第一超级块上已保存的所有有效数据迁移至其他超级块之后,若当前第一超级块上的条带长度小于预设最短长度,则将当前第一超级块上的所有完好数据块回收至预设回收库中。

另外,本实施例中的RAID维护系统,还可以进一步包括:

超级块构建模块,用于当预设回收库中的所有完好数据块的总数量大于或等于预设数量,则将预设回收库中的所有完好数据块构建成一个新的超级块。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上对本发明所提供的一种基于可变条带的RAID维护方法及系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1