一种RAID重构方法及装置与流程

文档序号:26719618发布日期:2021-09-22 20:25阅读:375来源:国知局
一种RAID重构方法及装置与流程
一种raid重构方法及装置
技术领域
1.本发明涉及数据存储技术领域,特别是涉及一种raid重构方法及装置。


背景技术:

2.当raid(redundant arrays of independent disks,磁盘阵列)中的某个硬盘发生读写异常时,该硬盘将会被从raid中移出,从而,所移出的硬盘中所存储的数据将会在raid中丢失,并且,会降低raid的数据安全性,使得raid处于降级状态。
3.为了保证raid中所存储数据的完整性,以及raid的数据安全性,提升raid的安全等级,需要在移出了发生读写异常的硬盘后的raid中添加新的空白硬盘,并重构该空白硬盘中所存储的数据内容。
4.基于此,如何在保证raid中所存储数据的完整性,以及raid的数据安全性,提升raid的安全等级的前提下,快速高效地对移出了发生读写异常的硬盘后的raid进行重构,成为当前亟待解决的技术问题。


技术实现要素:

5.本发明实施例的目的在于提供一种raid重构方法及装置,以实现在保证raid中所存储数据的完整性,以及raid的数据安全性,提升raid的安全等级的前提下,快速高效地对移出了发生读写异常的硬盘后的raid进行重构。具体技术方案如下:
6.第一方面,本发明实施例提供了一种raid重构方法,其特征在于,应用于raid驱动,所述方法包括:
7.确定目标硬盘;其中,所述目标硬盘用于重构目标raid;
8.遍历所述目标raid所属的文件系统中存储的各个元数据,并在遍历到每个元数据时,确定该元数据对应的目标数据文件是否为有效文件;
9.如果是,根据所述目标raid中未被移出的初始硬盘中所存储的指定数据,重构待存储至所述目标硬盘中的目标数据;所述指定数据为:所述目标数据文件对应的数据;
10.如果否,遍历下一元数据,并返回所述在遍历到每个元数据时,确定该元数据对应的目标数据文件是否为有效文件的步骤;
11.将所述目标数据存储至所述目标硬盘中。
12.第二方面,本发明实施例提供了一种raid重构装置,应用于raid驱动,所述装置包括:
13.硬盘确定模块,用于确定目标硬盘;其中,所述目标硬盘用于重构目标raid;
14.元数据遍历模块,用于遍历所述目标raid所属的文件系统中存储的各个元数据,并在遍历到每个元数据时,确定该元数据对应的目标数据文件是否为有效文件;如果是,触发数据重构模块,如果否,遍历下一元数据,并返回所述在遍历到每个元数据时,确定该元数据对应的目标数据文件是否为有效文件的步骤;
15.所述数据重构模块,用于根据所述目标raid中未被移出的初始硬盘中所存储的指
定数据,重构待存储至所述目标硬盘中的目标数据;其中,所述指定数据为:所述目标数据文件对应的数据;
16.数据存储模块,用于将所述目标数据存储至所述目标硬盘中。
17.第三方面,本发明实施例提供了一种raid驱动,所述raid驱动用于执行上述第一方面提供的任一raid重构方法步骤。
18.第四方面,本发明实施例提供了一种电子设备,设置有raid驱动,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
19.存储器,用于存放计算机程序;
20.处理器,用于执行存储器上所存放的程序时,实现上述第一方面提供的任一raid重构方法步骤。
21.第五方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面提供的任一raid重构方法步骤。
22.第六方面,本发明实施例提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面提供的任一raid重构方法步骤。
23.本发明实施例有益效果:
24.以上可见,应用本发明实施例提供的方案,在对目标raid进行重构时,首先确定用于重构该目标raid的目标硬盘;进而,遍历目标raid所属的文件信息中存储的各个元数据,在遍历到每一元数据时,在该元数据对应的目标数据文件为有效文件的情况下,根据未被移出的初始硬盘中所存储的目标数据文件对应的指定数据,重构待存储至目标硬盘中的目标数据,并将所重构的目标数据存储至该目标硬盘,而在该元数据对应的目标数据文件为无效文件的情况下,则可以跳过该目标数据文件,无需在目标硬盘中重构该目标数据文件对应的数据内容。
25.基于此,应用本发明实施例提供的方案,在对目标raid中所添加的新的目标硬盘中所存储的数据内容进行重构时,可以跳过目标raid中所存储的无效文件,仅重构目标raid中的有效文件,从而,可以避免对无效文件的重构,节省计算资源和重构时间。这样,可以在保证重构后的目标raid中所存储数据的完整性,以及目标raid的数据安全性,提升目标raid的安全等级的前提下,快速高效地对移出了发生读写异常的硬盘后的raid进行重构。
附图说明
26.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的实施例。
27.图1为smr的结构示意图;
28.图2为本发明实施例提供的一种raid重构方法的流程示意图;
29.图3为一种由多个smr创建得到的目标raid的结构示意图;
30.图4为本发明实施例提供的另一种raid重构方法的流程示意图;
31.图5为本发明实施例提供的再一种raid重构方法的流程示意图;
32.图6为本发明实施例提供的一种raid重构装置的结构示意图;
33.图7为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
34.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员基于本技术所获得的所有其他实施例,都属于本发明保护的范围。
35.当raid中的某个硬盘发生读写异常时,该硬盘将会被从raid中移出,从而,所移出的硬盘中所存储的数据将会在raid中丢失,并且,会降低raid的数据安全性,使得raid处于降级状态。基于此,如何在保证raid中所存储数据的完整性,以及raid的数据安全性,提升raid的安全等级的前提下,快速高效地对移出了发生读写异常的硬盘后的raid进行重构,成为当前亟待解决的技术问题。
36.为了解决上述技术问题,本发明实施例提供了一种raid重构方法。
37.其中,该raid重构方法适用于任一需要对移出了发生读写异常的硬盘后的raid进行重构的应用场景,示例性的,视频监控场景,当然并不局限于此。
38.并且,该重构方法应用于raid驱动。在具体应用中,用于执行该重构方法的raid驱动可以是预先设置在笔记本电脑、台式电脑等各类电子设备中的raid驱动,当然,用于执行该重构方法的raid驱动也可以是预先设置在设备集群中的raid驱动。
39.其中,本发明实施例提供的一种raid重构方法,可以包括如下步骤:
40.确定目标硬盘;其中,所述目标硬盘用于重构目标raid;
41.遍历所述目标raid所属的文件系统中存储的各个元数据,并在遍历到每个元数据时,确定该元数据对应的目标数据文件是否为有效文件;
42.如果是,根据所述raid中未被移出的初始硬盘中所存储的指定数据,重构待存储至所述目标硬盘中的目标数据;其中,所述初始硬盘为:所述raid中未被移出的硬盘,所述指定数据为:所述目标数据文件对应的数据;
43.如果否,遍历下一元数据,并返回所述在遍历到每个元数据时,确定该元数据对应的目标数据文件是否为有效文件的步骤。
44.将所述目标数据存储至所述目标硬盘中。
45.以上可见,应用本发明实施例提供的方案,在对目标raid进行重构时,首先确定用于重构该目标raid的目标硬盘;进而,遍历目标raid所属的文件信息中存储的各个元数据,在遍历到每一元数据时,在该元数据对应的目标数据文件为有效文件的情况下,根据未被移出的初始硬盘中所存储的目标数据文件对应的指定数据,重构待存储至目标硬盘中的目标数据,并将所重构的目标数据存储至该目标硬盘,而在该元数据对应的目标数据文件为无效文件的情况下,则可以跳过该目标数据文件,无需在目标硬盘中重构该目标数据文件对应的数据内容。
46.基于此,应用本发明实施例提供的方案,在对目标raid中所添加的新的目标硬盘
中所存储的数据内容进行重构时,可以跳过目标raid中所存储的无效文件,仅重构目标raid中的有效文件,从而,可以避免对无效文件的重构,节省计算资源和重构时间。这样,可以在保证重构后的目标raid中所存储数据的完整性,以及目标raid的数据安全性,提升目标raid的安全等级的前提下,快速高效地对移出了发生读写异常的硬盘后的raid进行重构。
47.在对本发明实施例提供的一种raid重构方法进行具体说明之前,首先本发明实施例可以涉及到的smr进行简要说明。
48.smr(shingled magnetic recording,叠瓦式磁记录盘),通过重叠磁道,调整了smr中数据存储的方式,进而,提高了smr的磁道密度,从而增加了单个smr的存储容量。其中,smr提供了一种磁盘数据存储技术,应用该技术,可以将盘片上的数据磁道,按照类似于屋顶上的瓦片的叠放方式,进行部分重叠,因此,smr可以被称为叠瓦式磁记录技术,从而,应用smr可以大幅提高磁盘的存储密度。
49.然而,由于所具有的特殊的存储结构形式,smr不支持数据随机写入与原地更新,从而,导致smr的数据存储可操作性差,并且,数据存储效率低。
50.其中,smr将磁道划分为若干个带(band),即划分为由连续磁道所构成的若干个可连续写入区域,每个可连续写入区域构成一个需要顺序写入的基本单元。band是关于smr的物理概念,其对应的逻辑概念是“区域(zone)”,是能够对smr进行操作的上层软件所能看到的smr中的顺序写入区域。
51.通常,smr中的一个zone的空间大小在256mb量级。其中,由于smr需要确保可以从磁道的未重叠部分读取数据,因此,每个zone内的数据读取依旧可以随机进行。并且,smr在生产制造时,就进行了区域划分,从而,可以通过在每个zone之间留出较大的间隔来标识每个zone的起始位置。此外,硬盘厂商可以在smr上设置一小块区域,并在该小块区域内采用传统硬盘非重叠的磁道组织方式,以牺牲部分存储密度的代价,换取在该小块区域内的随机写入的能力。其中,该小块区域可以被称为“传统区(conventional zone)”,从而,可以为能够对smr进行操作的上层应用的随机写操作提供一个落脚点。
52.图1为smr的结构示意图,其中,如图1所示,可以得到smr的如下特点:
53.smr以zone为管理单元,并且,每个zone的空间大小通常为256mb;smr的smr区中的每个zone支持乱写读操作,但是只支持顺序写操作,即只能按照顺序,依次从前向后写入数据;smr中包括smr(shingled magnetic recording,叠瓦式磁记录盘)区和cmr(conventional magnetic recording,常规磁记录盘)区,cmr区的空间大小较小,且支持乱写操作;smr中的每个zone必须打开之后,才可以进行读写,并且,存在打开个数限制;smr支持zac/zbc命令进行zone状态的获取、读写和清空。
54.下面结合附图,对本发明实施例提供的一种raid重构方法进行具体说明。
55.图2为本发明实施例提供的一种raid重构方法的流程示意图,如图2所示,该重构方法可以包括如下步骤s201

s204:
56.s201:确定目标硬盘;
57.其中,目标硬盘用于重构目标raid;
58.在对移出了发生读写异常的硬盘之后的目标raid进行重构时,需要在该待重构的目标raid中添加新的硬盘,以使所添加的新的硬盘替代被移出的硬盘,并且,将被移出的硬
盘中所存储的数据重构至该新的硬盘中。
59.基于此,在对移出了发生读写异常的硬盘之后的目标raid进行重构时,首先需要确定用于重构目标raid的目标硬盘。其中,该目标硬盘即为在该待重构的目标raid中添加的新的硬盘。
60.其中,raid驱动所在的电子设备可以关联有多个未被使用的空白硬盘,从而,raid驱动可以检测到当前所存在的多个未被使用的空白硬盘,进而,raid驱动需要在所检测到的多个未被使用的空白硬盘中确定用于重构目标raid的目标硬盘。
61.可选的,用户可以通过输入标识、点选标识等方式,向raid驱动发送所选取的用于重构目标raid的目标硬盘的硬盘标识,从而,raid驱动便可以将所检测到的多个未被使用的空白硬盘中,具有所接收到的硬盘标识的硬盘确定为用于重构目标raid的目标硬盘。
62.可选的,raid驱动可以将所检测到的多个未被使用的空白硬盘中随机选取用于重构目标raid的目标硬盘。
63.可选的,raid驱动可以按照预设规则,将所检测到的多个未被使用的空白硬盘中符合该预设规则的硬盘确定为目标硬盘。
64.例如,该预设规则可以为:将上述多个未被使用的空白硬盘中,硬盘标识最小的硬盘设置为目标硬盘;也可以为:将上述多个未被使用的空白硬盘中,最先检测到的硬盘设置为目标硬盘。这都是合理的。
65.其中,上述关于预设规则的例子仅仅用于对raid驱动确定目标硬盘的方式进行举例,而非限定,任意能够实现上述步骤s101的方式均属于本发明的保护范围。
66.此外,上述目标raid可以是利用各种类型的硬盘创建的,示例性的,smr当然并不局限于此。其中,目标raid中的硬盘和上述目标硬盘为同一类型的硬盘。
67.可选的,利用smr所创建的目标raid可以包括第一阵列(raid

s)和第二阵列(raid

c),该第一阵列(raid

s)是由该raid中的各个smr中的smr区配置得到的,并且,第一阵列(raid

s)包括多个条带(stripe),每个条带(stripe)包括多个smr的smr区中偏移地址相同的写入区域(zone),且用于存储按照对齐顺序写入的方式写入的数据文件;该第二阵列(raid

c)是由该raid中的各个smr中的cmr区配置得到的。
68.可选的,该第二阵列(raid

c)至少用于缓存每个数据文件的数据内容和存储每个数据文件的元数据。
69.示例性的,图3为一种由多个smr创建得到的目标raid的结构示意图。
70.如图3所示,smr1

smr3所对应的列分别为用于创建目标raid的各个smr,raid

c区域为目标raid的第二阵列,raid

s区域为目标raid的第一阵列,raid所对应的列即为利用smr1

smr3创建的目标raid。
71.其中,date_file

1至date_file

n分别为目标raid的第一阵列(raid

s)中的各个条带(stripe)。并且,date_file

1是由分别偏移地址相同且分别位于pd1

pd3中的三个写入区域(zone)zone

1构成的,date_file

2是由分别偏移地址相同且分别位于smr1

smr3中的三个写入区域(zone)zone

2构成的,依次类推,date_file

n是由分别偏移地址相同且分别位于smr1

smr3中的三个写入区域(zone)zone

n构成的。
72.s202:遍历目标raid所属的文件系统中存储的各个元数据,并在遍历到每个元数据时,确定该元数据对应的目标数据文件是否为有效文件;如果是,执行步骤s203,如果否,
执行步骤s204。
73.s203:根据目标raid中未被移出的初始硬盘中所存储的指定数据,重构待存储至目标硬盘中的目标数据;
74.其中,初始硬盘为:目标raid中未被移出的硬盘,指定数据为:目标数据文件对应的数据;
75.s204:遍历下一元数据,并返回步骤s202中,在遍历到每个元数据时,确定该元数据对应的目标数据文件是否为有效文件。
76.s205:将目标数据存储至目标硬盘中。
77.在确定出用于重构目标raid的目标硬盘后,便可以进一步重构该目标硬盘中所存储的数据,使得该目标硬盘中所存储的数据与被移出的硬盘中所存储的数据保持一致。
78.对于目标raid中所存储的每个数据文件而言,目标raid中的每个硬盘均存储有与该数据文件对应的数据,例如,存储有该数据文件中的部分数据内容,又例如,存储有该数据文件的校验值等。当将发生读写异常的硬盘移出目标raid时,则目标raid将丢失该硬盘中所存储的与目标raid中所存储的每个数据文件对应的数据。
79.基于此,对目标硬盘中所存储的数据进行重构也就意味着将被移出的硬盘中所存储的与目标raid中所存储的每个数据文件对应的数据,恢复至上述所确定的目标硬盘中,从而,在重构完成后的目标raid中恢复被移出的硬盘中所存储的与目标raid中所存储的每个数据文件对应的数据。
80.由于针对目标raid中所存储的每一数据文件,均会在目标raid所属的文件系统对应存储有元数据,因此,在对目标硬盘中所存储的数据进行重构时,可以利用目标raid所属的文件系统存储的各个元数据实现。
81.这样,在确定出用于重构目标raid的目标硬盘后,便可以遍历目标raid所属的文件系统存储的各个元数据。
82.其中,在一些情况下,目标raid的各个存储位置处并不一定全部存储有效文件的数据内容。例如,一些存储位置处可能并没有存储数据内容,又例如,另一些存储位置处所存储的数据可能是用户已经删除的数据等。其中,所谓有效文件可以是当前所存储的,且满足用户需求的数据文件,并且,用户可以根据实际应用中的需求设置属于有效文件的数据文件,本发明实施例不对有效文件的具体内容进行限定。
83.基于此,目标raid所属的文件系统存储的每个元数据对应于目标raid中的部分存储位置所存储的数据文件,并且,每个元数据可以指示所对应的数据文件是否为有效文件。
84.其中,当某个存储位置未存储有数据文件时,则可以认为该存储位置所对应的元数据所对应的数据文件为无效文件。
85.这样,对于目标raid所属的文件系统所存储的各个元数据而言,当某个元数据所对应的数据文件为无效文件时,尽管目标raid所属的文件系统中仍然存储有该元数据,但是,在对目标raid进行重构时,可以无需在上述目标硬盘中重构该元数据对应的无效文件。
86.也就是说,当某个元数据所对应的数据文件为无效文件时,则跳过该无效文件,不对该无效文件进行重构,即不需要在上述目标硬盘中重构该元数据对应的无效文件。
87.基于此,在遍历到目标raid所属的文件系统所存储的每个元数据时,便可以首先确定该元数据对应的目标数据文件是否为有效文件。
88.其中,在遍历到每个元数据时,可以首先根据该元数据中所记录的各类信息,例如,用于表征数据文件是否为有效文件的标记信息等,确定该元数据对应的目标数据文件是否为有效文件。
89.如果该元数据对应的目标数据文件为有效文件,则需要在目标硬盘中重构该目标数据文件对应的数据,从而,便可以继续执行后续的步骤s203,根据各个初始硬盘中所存储的指定数据,重构待存储至所述目标硬盘中的目标数据。
90.相应的,如果该元数据对应的目标数据文件不是有效文件,即该元数据对应的目标数据文件为无效文件,则不需要在目标硬盘中重构该目标数据文件对应的数据,从而,可以执行后续的步骤s204,即遍历该元数据的下一元数据,并在遍历到下一元数据时,返回执行上述步骤s202中,确定该元数据对应的目标数据文件是否为有效文件的步骤。也就是说,如果该元数据对应的目标数据文件为无效文件,则可以跳过该无效文件,而不需要对该目标数据文件进行重构,即不需要执行后续的步骤s203和s205。这样,通过跳过无效文件,节省了无效数据重构过程的时间,可以提高对目标raid进行重构的效率。
91.这样,在重构目标raid时,便可以跳过目标raid中所存储的无效文件,从而,避免对无效文件的重构,节省计算资源,提高重构效率。
92.由于被移出的硬盘和目标raid中的未被移出的初始硬盘中均存储有上述目标数据文件对应的数据,因此,在重构目标硬盘中所存储的上述目标数据文件对应的数据时,可以首先确定目标raid中的未被移出的初始硬盘中所存储的上述目标数据文件对应的数据,即首先确定目标raid中的未被移出的初始硬盘中所存储的指定数据,进而,便可以用所确定的指定数据,重构待存储至目标硬盘中的目标数据,并将所重构得到的目标数据存储至目标硬盘中。
93.可选的,目标raid中的各个初始硬盘中均可以存储有上述目标数据文件对应的数据,从而,便可以根据各个初始硬盘中所存储的指定数据,重构待存储至目标硬盘中的目标数据。
94.也就是说,所重构的目标数据即为被移出的硬盘中存储的上述目标数据文件对应的数据,从而,在将该目标数据存储至目标硬盘中后,便可以在目标硬盘中重构被移出的硬盘中存储的上述目标数据文件对应的数据。
95.这样,在遍历完成目标raid中所存储的全部数据文件的元数据后,便可以在目标硬盘中重构被移出的硬盘中存储的目标raid中所存储的全部为有效文件的数据文件对应的数据,从而,使得该目标硬盘中所存储的数据与被移出的硬盘中所存储的数据保持一致。
96.基于此,在遍历完目标raid中所存储的全部数据文件的元数据后,便可以确定完成对目标raid的重构,从而,可以确定目标raid可以恢复正常状态,以继续完成数据存储。
97.可选的,一种具体实现方式中,如图4所示,上述本发明实施例提供的一种raid重构方法,还可以包括如下步骤s206。
98.s206:在遍历完各个元数据中的最后一个元数据时,将目标raid标记为正常状态。
99.在本具体实现方式中,在遍历完目标raid所属的文件系统所存储的全部元数据后,便可以确定完成对目标raid的重构,从而,可以确定目标raid可以恢复正常状态。这样,为了便于了解目标raid的重构情况,以满足针对目标raid的数据存储需求,在遍历完各个元数据中的最后一个元数据时,可以将目标raid标记为正常状态。
100.这样,便可以根据目标raid所标记的正常状态,确定已完成目标raid的重构,可以继续利用目标raid进行数据存储。
101.基于此,应用本发明实施例提供的方案,在对目标raid中所添加的新的目标硬盘中所存储的数据内容进行重构时,可以跳过目标raid中所存储的无效文件,仅重构目标raid中的有效文件,从而,可以避免对无效文件的重构,节省计算资源和重构时间。这样,可以在保证重构后的目标raid中所存储数据的完整性,以及目标raid的数据安全性,提升目标raid的安全等级的前提下,提高raid重构的效率。
102.可选的,一种具体实现方式中,在根据目标raid中未被移出的初始硬盘中所存储的指定数据,重构待存储至目标硬盘中的目标数据之前,该方法还可以包括:
103.确定用于存储该元数据对应的目标数据文件的存储位置处是否存在数据写入任务;若不存在,执行根据目标raid中未被移出的初始硬盘中所存储的指定数据,重构待存储至目标硬盘中的目标数据的步骤。
104.其中,目标raid中的各个初始硬盘和目标硬盘的存储空间,可以被划分为各个写入区域(zone),从而,目标raid所存储的数据文件的大小与该写入区域(zone)的空间大小相关。
105.例如,多个smr构成的目标raid中,该目标raid所存储的数据文件的大小可以等于多个smr的数量与每个smr的smr区中的每个写入区域(zone)的空间大小的乘积等。
106.这样,在对上述目标硬盘中所存储的数据进行重构时,针对目标硬盘中的同一个写入区域(zone),可能同时存在数据重构任务和数据写入任务,也就是说,可以同时存在针对同一个写入区域(zone)的两个写操作。
107.而对于某些类型的目标硬盘而言,例如,smr,由于该目标硬盘中的每个写入区域(zone)只能够支持顺序写入,而不支持乱序写入,从而,该目标硬盘中的每个写入区域(zone)不支持两个写操作同时对该写入区域(zone)进行操作,因此,为了保证对目标硬盘中所存储的数据进行重构的顺利进行,需要避免出现针对该目标硬盘中的同一个写入区域(zone),同时存在数据重构任务和数据写入任务的情况发生。
108.基于此,在遍历到每个元数据时,可以确定用于存储该元数据对应的目标数据文件的写入区域(zone)中是否存在数据写入任务。
109.其中,若确定出不存在数据写入任务,则由于不会出现针对该目标硬盘中的同一个写入区域(zone),同时存在数据重构任务和数据写入任务的情况,因此,在该元数对应的目标数据文件为有效文件时,可以进一步执行后续的根据目标raid中未移出的初始硬盘中所存储的指定数据,重构待存储至目标硬盘中的目标数据的步骤。
110.可选的,若确定出存在数据写入任务,则由于出现针对该目标硬盘中的同一个写入区域(zone),同时存在数据重构任务和数据写入任务的情况,因此,无论该元数据对应的目标数据文件是否为有效文件,均可以暂停对该目标硬盘中所存储的数据进行重构,而首先执行上述数据写入任务,从而,在上述数据写入任务完成,并且,该元数对应的目标数据文件为有效文件时,再恢复执行数据重构任务,以对该目标硬盘中所存储的数据进行重构。
111.基于此,在本具体实现方式中,在遍历到每个元数据时,如果要对该元数据对应的目标数据文件进行重构,即重构待存储至目标硬盘中的目标数据,那么,需要满足该元数据对应的目标数据文件为有效文件,且用于存储该元数据对应的目标数据文件的写入区域
(zone)中存在数据写入任务。
112.可选的,一种具体实现方式中,在遍历到每个元数据时,可以首先判断该元数据对应的目标数据文件是否为有效文件。
113.在判断结果为不是有效文件时,跳过该目标数据文件,遍历下一元数据;在判断结果为是有效文件时,进一步判断用于存储该元数据对应的目标数据文件的写入区域(zone)中是否存在数据写入任务。
114.如果判断结果为存在数据写入任务,则执行该数据写入任务,并在数据写入任务执行完毕时,根据目标raid中未被移出的初始硬盘中所存储的指定数据,重构待存储至目标硬盘中的目标数据。如果判断结果为不存在数据写入任务时,则直接根据目标raid中未被移出的初始硬盘中所存储的指定数据,重构待存储至目标硬盘中的目标数据。
115.可选的,一种具体实现方式中,在遍历到每个元数据时,可以首先判断用于存储该元数据对应的目标数据文件的写入区域(zone)中是否存在数据写入任务。
116.在判断结果为不存在数据写入任务时,可以进一步判断该元数据对应的目标数据文件是否为有效文件。
117.如果判断结果为不是有效文件,则跳过该目标数据文件,遍历下一元数据;如果判断结果为是有效文件,则直接根据目标raid中未被移出的初始硬盘中所存储的指定数据,重构待存储至目标硬盘中的目标数据。
118.其中,可选的,在判断结果为存在数据写入任务时,则可以进一步判断该元数据对应的目标数据文件是否为有效文件;从而,如果判断结果为不是有效文件,则跳过该目标数据文件,遍历下一元数据;如果判断结果为是有效文件,则在执行完该数据写入任务后,根据目标raid中未被移出的初始硬盘中所存储的指定数据,重构待存储至目标硬盘中的目标数据。
119.可选的,在判断结果为存在数据写入任务时,则可以执行该数据写入任务,并在执行完该数据写入任务后,进一步判断该元数据对应的目标数据文件是否为有效文件;从而,如果判断结果为不是有效文件,则跳过该目标数据文件,遍历下一元数据;如果判断结果为是有效文件,则直接根据目标raid中未被移出的初始硬盘中所存储的指定数据,重构待存储至目标硬盘中的目标数据。
120.可选的,一种具体实现方式中,在遍历到每个元数据时,可以同时判断该元数据对应的目标数据文件是否为有效文件,以及,用于存储该元数据对应的目标数据文件的写入区域(zone)中是否存在数据写入任务。
121.如果判断结果为:是有效文件,且不存在数据写入任务,则直接根据目标raid中未被移出的初始硬盘中所存储的指定数据,重构待存储至目标硬盘中的目标数据;
122.如果判断结果为:不是有效文件,且不存在数据写入任务,则跳过该目标数据文件,遍历下一元数据;
123.如果判断结果为:是有效文件,且存在数据写入任务,则在执行完该数据写入任务后,根据目标raid中未被移出的初始硬盘中所存储的指定数据,重构待存储至目标硬盘中的目标数据;
124.如果判断结果为:是有效文件,且不存在数据写入任务,则跳过该目标数据文件,遍历下一元数据。
125.在利用目标raid存储数据文件时,为了提高数据安全性,以便于在数据文件中的部分数据丢失的情况下,可以较为容易地进行数据恢复,通常可以与数据文件对应存储该数据文件的校验值。
126.也就是说,可以在目标raid中选取一个用于存储校验值的区域,从而,当向目标raid写入数据文件时,可以将该数据文件写入到目标raid所包括的用于存储数据文件的数据内容的区域中,并将所计算得到的该数据文件的校验值写入到所选取的用于存储校验值的区域中。
127.基于此,可选的,一种具体实现方式中,上述目标raid中的多个硬盘被设置为一个第一类硬盘和至少一个第二类硬盘,其中,每个第二类硬盘用于存储数据文件的部分数据,第一类硬盘用于存储数据文件的校验值;
128.相应的,在本具体实现方式中,上述步骤s103,根据目标raid中未被移出的初始硬盘中所存储的指定数据,重构待存储至目标硬盘中的目标数据的步骤,便可以包括如下步骤11和12。
129.步骤11:若目标硬盘为第一类硬盘,则根据各个初始硬盘中所存储的目标数据文件的部分数据,计算目标数据文件的校验值,作为待存储至目标硬盘中的目标数据;
130.步骤12:若目标硬盘为第二类硬盘,则根据各个初始硬盘中所存储的目标数据文件的的部分数据和校验值,生成目标raid中丢失的目标数据文件中的部分数据,作为待存储至目标硬盘中的目标数据。
131.在本具体实现方式中,所移出的硬盘可以为目标raid中的第一类硬盘,也可以为目标raid中的第二类硬盘,从而,上述目标硬盘可以作为目标raid中的第一类硬盘被添加至目标raid中,也可以作为目标raid中的第二类硬盘被添加至目标raid中。
132.其中,若目标硬盘作为目标raid中的第一类硬盘被添加至目标raid中,则该目标硬盘用于存储数据文件的校验值。也就是说,所遍历到的元数据对应的目标数据文件的全部数据内容被存储在目标raid中的各个初始硬盘中,而需要在目标硬盘中重构该目标数据文件的校验值。
133.基于此,便可以根据目标raid的各个初始硬盘中所存储的该目标数据文件的部分数据,计算该目标数据文件的校验值,并将所计算得到的校验值确定为待存储至目标硬盘中的目标数据。
134.可选的,可以通过目标raid的各个初始硬盘中所存储的该目标数据文件的部分数据的异或运算,计算该目标数据文件的校验值。
135.若目标硬盘作为目标raid中的第二类硬盘被添加至目标raid中,则该目标硬盘用于存储数据文件的数据内容。也就是说,所遍历到的元数据对应的目标数据文件的部分数据和校验值被存储在目标raid中的各个初始硬盘中,而需要在目标硬盘中重构目标raid中所丢失的该目标数据文件的部分数据。
136.基于此,便可以根据目标raid的各个初始硬盘中所存储的目标数据文件的部分数据和校验值,生成目标raid中所丢失的该目标数据文件的部分数据,并将所计算得到的部分数据,确定为待存储至目标硬盘中的目标数据。
137.可选的,一种具体实现方式中,目标raid中的多个硬盘为smr,且目标raid包括第一阵列(raid

s)和第二阵列(raid

c)。
138.其中,第一阵列(raid

s)是由多个smr的smr区构成的,第二阵列(raid

c)是由多个smr的cmr区构成的,第一阵列(raid

s)包括:多个条带(stripe),每个条带(stripe)包括:多个smr的smr区中偏移地址相同的写入区域(zone),且用于存储按照对齐顺序写入的方式写入的数据文件。
139.可选的,各个数据文件的元数据可以存储在目标raid中的第二阵列(raid

c)中的目标区域中。
140.在本具体实现方式中,在利用多个smr创建目标raid时,可以将该多个smr的smr区配置为待创建的目标raid的第一阵列(raid

s)。其中,在配置上述第一阵列(raid

s)的过程中,raid驱动可以确定上述多个smr的smr区中,偏移地址相同的写入区域(zone),从而,将所确定的多个位于不同的smr的smr区中,且偏移地址相同的写入区域(zone)配置为目标raid的第一阵列(raid

s)中的一个条带(stripe)。这样,在遍历完上述多个smr的smr区中全部写入区域(zone),配置得到全部条带(stripe)后,便可以完成对目标raid的第一阵列(raid

s)的配置。
141.这样,目标raid的第一阵列(raid

s)中便可以包括多个条带(stripe),每个条带(stripe)包括多个smr的smr区中偏移地址相同的写入区域(zone)。
142.进而,由于smr的smr区不支持乱序写操作,在向smr区中的每个写入区域(zone)中写入数据文件时,写指针必须从该写入区域(zone)的起始位置开始,依次移动至该写入区域(zone)的终止位置,因此,目标raid的第一阵列(raid

s)同样不支持乱序写操作。这样,在向目标raid的第一阵列(raid

s)中的各个条带(stripe)写入数据文件时,所采用的写入方式为:对齐顺序写入。
143.也就是说,在向目标raid的第一阵列(raid

s)中的每个条带(stripe)写入数据文件时,该条带(stripe)中所包括的各个写入区域(zone)中的写指针是一致的,并且,在该条带(stripe)所包括的每个写入区域(zone)中,写指针必须从该写入区域(zone)的起始位置开始,依次移动至该写入区域(zone)的终止位置。基于此,目标raid的第一阵列(raid

s)中的每个条带(stripe)便可以用于存储按照对齐顺序写入的方式写入的数据文件。
144.此外,还可以将该多个smr的cmr区配置为目标raid的第二阵列(raid

c)。其中,由于smr的cmr区支持乱序写操作,因此,目标raid的第二阵列(raid

c)也可以支持乱序写操作。
145.进而,由于在更改或者添加目标raid的第一阵列(raid

s)中存储的数据文件的元数据时,通常采用乱序写操作对用于存储数据文件的元数据的存储区域进行操作,因此,目标raid的第二阵列(raid

c)可以至少用于存储目标raid的第一阵列(raid

s)中存储的数据文件的元数据。
146.相应的,在本具体实现方式中,如图5所示,本发明实施例提供的一种raid恢复方法还包括如下步骤s207。
147.s207:将目标硬盘的smr区与多个初始硬盘的smr区,配置为目标raid的新的第一阵列(raid

s),并将目标硬盘的cmr区与多个初始硬盘的cmr区,配置为目标raid的新的第二阵列(raid

c)。
148.在本具体实现方式中,由于目标raid中的多个硬盘为smr,则上述所确定的目标硬盘和目标raid中的各个初始硬盘均为smr,并且,目标raid中的多个smr的smr区被配置为目
标raid的第一阵列(raid

s),而目标raid中的多个smr的cmr区被配置为目标raid的第二阵列(raid

c),因此,在将目标硬盘添加至目标raid中,以实现对目标raid的重构时,需要将目标硬盘的smr区与目标raid中的各个初始硬盘的smr区集成在一起,构成重构后的目标raid的第一阵列(raid

s),并且,将目标硬盘的smr区与目标raid中的各个初始硬盘的cmr区集成在一起,构成重构后的目标raid的第二阵列(raid

c)。
149.基于此,在本具体实现方式中,在确定出目标硬盘后,可以将目标硬盘的smr区与多个初始硬盘的smr区,配置为目标raid的新的第一阵列(raid

s),并将目标硬盘的cmr区与多个初始硬盘的cmr区,配置为目标raid的新的第二阵列(raid

c)。
150.在上述图5所示具体实现方式的基础上,目标raid的第二阵列(raid

c)中可以存储有目标raid的第一阵列(raid

s)中所存储的各个数据文件的元数据,因此,针对每个元数据,在该元数据所对应的目标数据文件为有效文件的情况下,在完成对该目标数据文件的重构,即执行完上述步骤s205,将目标数据存储至目标硬盘中后,目标raid的新的第二阵列(raid

c)中存储的该目标数据文件的元数据将随之更新。
151.基于此,可选的,一种具体实现方式中,在上述图5所示具体实现方式的基础上,本发明实施例提供的一种raid重构方法还可以包括如下步骤:
152.在新的第二阵列(raid

c)中更新目标数据文件的元数据。
153.在本具体实现方式中,对于目标数据文件而言,被移出的硬盘中所存储的该目标数据文件所对应的数据内容,在重构后,被重新存储到了所添加的目标硬盘中,从而,该部分数据内容的相关存储信息发生了改变,例如,所在的硬盘的硬盘标识等,这样,所存储的该目标数据文件的元数据也随之发生了改变。
154.这样,在目标raid的第二阵列(raid

c)用于存储目标raid的第一阵列(raid

s)所存储的数据文件的元数据的情况下,目标raid的新的第二阵列(raid

c)中所存储的上述目标数据文件的元数据也可以在将上述目标数据存储至目标硬盘中后发生改变。从而,在将上述目标数据存储至目标硬盘中后,可以根据该目标数据的相关存储信息,在目标raid的新的第二阵列(raid

c)中更新该目标数据文件的元数据。
155.在上述图5所示具体实现方式的基础上,针对目标raid所存储的每个数据文件的元数据,该目标raid中的各个初始硬盘所存储的该元数据所对应目标数据文件对应的数据,与目标硬盘中待重构的该元数据所对应目标数据文件对应的数据,应该被存储在目标raid的第一阵列(raid

s)中的同一条带(stripe)中。
156.也就是说,针对目标raid所存储的每个数据文件的元数据,该目标raid中的各个初始硬盘的指定数据所在的写入区域(zone)所属的条带(stripe),与所确定的目标数据在目标硬盘中所在的写入区域(zone)所属的条带(stripe)相同。
157.基于此,可选的,一种具体实现方式中,在上述图5所示具体实现方式的基础上,上述步骤s205,将目标数据存储至目标硬盘中,可以包括如下步骤21

22。
158.步骤21:确定各个初始硬盘中存储指定数据的写入区域(zone)所属的指定条带(stripe);
159.步骤22:将目标数据存储至目标硬盘的smr区中属于指定条带(stripe)的写入区域(zone)中。
160.在本具体实现方式中,在遍历到目标raid所存储的每个数据文件的元数据时,可
以确定各个初始硬盘中所存储的与该元数据所对应的目标数据文件对应的数据所在的写入区域(zone),即确定各个初始硬盘中所存储的指定数据所在的写入区域(zone),并进一步确定上述写入区域(zone)所属的指定条带(stripe)。
161.这样,便可以在目标硬盘的smr区中确定属于上述指定条带(stripe)的写入区域(zone),从而,将所确定的目标数据存储至上述所确定的属于上述指定条带(stripe)的写入区域(zone)。
162.相应于上述本发明实施例提供的一种raid重构方法,本发明实施例提供了一种raid驱动,其中,该raid驱动可以用于实现上述本发明实施例提供的一种raid重构方法中的任一具体实现方式,也就是说,可以通过运行该raid驱动,完成本发明实施例提供的一种raid重构方法中的任一具体实现方式。
163.其中,本发明实施例不对上述raid驱动的具体编写方式和编写语言进行限定,只要能够实现上述本发明实施例提供的一种raid重构方法中的任一具体实现方式的raid驱动,均属于本发明的保护范围。
164.相应于上述本发明实施例提供的一种raid重构方法,本发明实施例还提供了一种raid重构装置,应用于raid驱动。
165.图6为本发明实施例提供的一种raid重构装置的结构示意图,如图6所示,该装置可以包括如下模块:
166.硬盘确定模块610,用于确定目标硬盘;其中,所述目标硬盘用于重构目标raid;
167.元数据遍历模块620,用于遍历所述目标raid所属的文件系统中存储的各个元数据,并在遍历到每个元数据时,确定该元数据对应的目标数据文件是否为有效文件;如果是,触发数据重构模块630,如果否,遍历下一元数据,并返回所述在遍历到每个元数据时,确定该元数据对应的目标数据文件是否为有效文件的步骤;
168.所述数据重构模块630,用于根据所述目标raid中未被移出的初始硬盘中所存储的指定数据,重构待存储至所述目标硬盘中的目标数据;其中,所述指定数据为:所述目标数据文件对应的数据;
169.数据存储模块640,用于将所述目标数据存储至所述目标硬盘中。
170.基于此,应用本发明实施例提供的方案,在对目标raid中所添加的新的目标硬盘中所存储的数据内容进行重构时,可以跳过目标raid中所存储的无效文件,仅重构目标raid中的有效文件,从而,可以避免对无效文件的重构,节省计算资源和重构时间。这样,可以在保证重构后的目标raid中所存储数据的完整性,以及目标raid的数据安全性,提升目标raid的安全等级的前提下,快速高效地对移出了发生读写异常的硬盘后的raid进行重构。
171.可选的,一种具体实现方式中,所述元数据遍历模块620具体用于:
172.在所述根据所述目标raid中未被移出的初始硬盘中所存储的指定数据,重构待存储至所述目标硬盘中的目标数据之前,确定用于存储该元数据对应的目标数据文件的写入区域中是否存在数据写入任务;如果不存在,触发所述数据重构模块630。
173.可选的,一种具体实现方式中,所述装置还包括:
174.raid标记模块,用于在遍历完所述各个元数据中的最后一个元数据时,将所述目标raid标记为正常状态。
175.可选的,一种具体实现方式中,所述目标raid中的多个硬盘被设置为一个第一类硬盘和至少一个第二类硬盘,其中,每个所述第二类硬盘用于存储数据文件的部分数据,所述第一类硬盘用于存储数据文件的校验值;所述数据重构模块630具体用于:
176.若所述目标硬盘为所述第一类硬盘,则根据各个初始硬盘中所存储的所述目标数据文件的部分数据,计算所述目标数据文件的校验值,作为待存储至所述目标硬盘中的目标数据;
177.若所述目标硬盘为所述第二类硬盘,则根据各个初始硬盘中所存储的所述目标数据文件的部分数据和校验值,生成所述目标raid中丢失的所述目标数据文件的部分数据,作为待存储至所述目标硬盘中的目标数据。
178.可选的,一种具体实现方式中,所述目标raid中的多个硬盘为smr,且所述目标raid包括第一阵列和第二阵列,其中,所述第一阵列是由所述多个smr的smr区构成的,所述第二阵列是由所述多个smr的cmr区构成的,所述第一阵列包括:多个条带,每个条带包括:所述多个smr的smr区中偏移地址相同的写入区域,且用于存储按照对齐顺序写入的方式写入的数据文件;所述装置还包括:
179.阵列配置模块,用于在所述遍历所述目标raid中所存储的各个数据文件的元数据之前,将所述目标硬盘的smr区与所述多个初始硬盘的smr区,配置为所述目标raid的新的第一阵列,并将所述目标硬盘的cmr区与所述多个初始硬盘的cmr区,配置为所述目标raid的新的第二阵列。
180.可选的,一种具体实现方式,所述装置还包括:
181.元数据更新模块,用于在所述新的第二阵列中更新所述目标数据文件的元数据。
182.可选的,一种具体实现方式中,所述数据存储模块640具体用于:
183.确定各个所述初始硬盘中存储所述指定数据的写入区域所属的指定条带;
184.将所述目标数据存储至所述目标硬盘的smr区中属于所述指定条带的写入区域中。
185.相应于上述本发明实施例提供的一种raid重构方法,本发明实施例还提供了一种电子设备,该电子设备设置有raid驱动,如图7所示,包括处理器701、通信接口702、存储器703和通信总线704,其中,处理器701,通信接口702,存储器703通过通信总线704完成相互间的通信,
186.存储器703,用于存放计算机程序;
187.处理器701,用于执行存储器703上所存放的程序时,实现上述本发明实施例提供的任一raid重构方法的步骤。
188.上述电子设备提到的通信总线可以是外设部件互连标准(peripheral component interconnect,pci)总线或扩展工业标准结构(extended industry standard architecture,eisa)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
189.通信接口用于上述电子设备与其他设备之间的通信。
190.存储器可以包括随机存取存储器(random access memory,ram),也可以包括非易失性存储器(non

volatile memory,nvm),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
191.上述的处理器可以是通用处理器,包括中央处理器(central processing unit,cpu)、网络处理器(network processor,np)等;还可以是数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field

programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
192.在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述本发明实施例提供的任一raid重构方法的步骤。
193.在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述本发明实施例提供的任一raid重构方法的步骤。
194.在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solid state disk(ssd))等。
195.需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
196.本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例、电子设备实施例、计算机可读存储介质实施例,以及计算机程序产品实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
197.以上所述仅为本发明的较佳实施例,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1