一种高并发的文件存储方法、系统、介质及电子终端与流程

文档序号:25654795发布日期:2021-06-29 21:39阅读:94来源:国知局
一种高并发的文件存储方法、系统、介质及电子终端与流程

1.本发明涉及文件存储领域,尤其涉及一种高并发的文件存储方法、系统、介质及电子终端。


背景技术:

2.随着文件存储技术的发展,文件系统得到了越来越广泛的应用,然而,针对特殊的应用场景,例如:在高并发的分布式系统中,受限于机械盘的性能,如果实时更新文件信息,将极大影响写入性能,如果采用缓存方式更新文件信息,在异常掉电场景下,会丢失数据信息;目前,通常采用掉电保护装置,在设备宕机时,刷新文件信息,或者采用固态硬盘提高数据刷写性能,然而,采用掉电保护装置或固态硬盘的方法均会增加系统成本,且不便于实施。


技术实现要素:

3.本发明提供一种高并发的文件存储方法、系统、介质及电子终端,以解决现有技术中在高并发的情况下,不能较好地在减少数据更新频率的同时避免丢失数据信息,以及成本较高的问题。
4.本发明提供的高并发的文件存储方法,包括:
5.对存储介质中的不同元数据区域设置不同的区域标记,其中,所述元数据区域包括:日志区;
6.根据所述区域标记,确定目标元数据区域,进而获取元数据信息;
7.根据所述目标元数据区域的日志区中的标识信息,对所述元数据信息进行更新;
8.根据更新后的所述元数据信息,进行文件存储。
9.可选的,所述日志区包括:头部标识区、一个或多个尾部标识区;
10.根据所述目标元数据区域的日志区中头部标识区中的标识信息和尾部标识区中的标识信息,对所述元数据信息进行更新。
11.可选的,不同所述元数据区域包括:第一元数据区域和第二元数据区域;
12.当所述第一元数据区域和第二元数据区域中其中一个元数据区域被写满时,则切换至另一个元数据区域,继续写入元数据及日志,并对当前被写满的元数据区域的区域标记进行更新,获取更新后的区域标记,将更新后的区域标记写入另一元数据区域的头部。
13.可选的,根据所述区域标记,确定目标元数据区域,进而获取元数据信息的步骤包括:
14.对比不同所述元数据区域的区域标记,将区域标记较大的元数据区域确定为目标元数据区域,所述元数据区域还包括:元数据存储区,所述元数据存储区的头部区域包括:区域标记、存储区数据长度,所述元数据存储区的尾部区域包括:元数据校验信息;
15.加载所述目标元数据区域的元数据存储区中的元数据信息,加载所述日志区中的日志。
16.可选的,对所述元数据信息进行更新的步骤包括:
17.根据所述头部标识区中的标识信息和尾部标识区中的标识信息,判断所述头部标识区中的标识信息和尾部标识区中的标识信息是否相同,获取上一次写入的日志信息,所述日志信息包括:预申请文件块的信息、关闭的文件块信息、文件块偏移位置、文件块当前写入长度;
18.根据所述日志信息,获取数据结束位置;
19.根据所述数据结束位置,对所述元数据信息进行一次更新。
20.可选的,对所述元数据信息进行更新的步骤还包括:
21.根据所述预申请文件块的信息,获取对应的预申请文件块的文件块偏移位置,进而判断对应的所述预申请文件块是否存在尾部校验区,获取判断结果;
22.根据所述判断结果,获取文件块真实长度信息;
23.根据所述文件块真实长度信息,对所述元数据信息进行二次更新。
24.可选的,根据更新后的所述元数据信息,进行文件存储的步骤包括:
25.根据更新后的元数据信息,获取所述存储介质中的文件块信息,所述文件块信息包括:已用文件块信息、空闲文件块信息;
26.根据预设的预申请文件块个数和所述空闲文件块信息,进行文件块预申请,获取预申请文件块,并在所述预申请文件块头部的头部校验区写入第一校验信息;
27.根据预设的日志更新周期,将预申请操作日志和/或其它日志批量写入日志区。
28.可选的,所述第一校验信息包括:文件块名称、创建时间和第一冗余校验码,其中,所述第一冗余校验码的获取步骤包括:根据所述文件块名称、创建时间、预设的第一校验规则,获取第一冗余校验码;
29.当将待写入数据写入对应的所述预申请文件块后,在所述预申请文件块的尾部校验区中写入第二校验信息,所述第一校验信息与所述第二校验信息相同。
30.可选的,当所述第一元数据区域或第二元数据区域中其中一个元数据区域的日志区被写满时,则切换至另一个元数据区域的日志区,继续写入日志,并将对应的日志区的头部标识区中的区域标记加一;
31.根据第一元数据区域的区域标记和所述第二元数据区域的区域标记,确定目标元数据区域;
32.保存第一待写入元数据和第二待写入元数据,所述第一待写入元数据和所述第二待写入元数据相同,将所述第一待写入元数据写入所述目标元数据区域中的元数据存储区,进而进行元数据区域切换。
33.可选的,在将所述第一待写入元数据写入所述目标元数据区域中的元数据存储区的过程中,若元数据发生变更,则对所述第二待写入元数据进行更新,并将更新内容写入临时区;
34.当所述第一待写入元数据已经写入所述目标元数据区域中的元数据存储区时,将所述临时区中的更新内容写入对应的元数据存储区中,使所述第一待写入元数据和所述第二待写入元数据保持一致,完成元数据区域切换。
35.可选的,所述头部标识区中的标识信息包括:区域标记、随机值和第二冗余校验码,其中所述第二冗余校验码的获取步骤包括:根据所述区域标记、随机值和预设的第二校
验规则,获取第二冗余校验码;
36.在写入日志的过程中,将待写入日志按照预设的日志大小写入所述日志区,并在预设大小的日志尾部的尾部标识区写入标识信息,所述头部标识区的标识信息与所述尾部标识区的标识信息相同。
37.可选的,根据预设的合并时间,将所述日志区中的数据合并至元数据存储区。
38.可选的,当进行元数据区域切换时,将当前被写满的元数据区域的区域标记加一,获取更新后的区域标记,并将更新后的区域标记写入另一元数据区域的头部。
39.本发明还提供一种高并发的文件存储系统,包括:
40.预处理模块,用于对存储介质中的不同元数据区域设置不同的区域标记,其中,所述元数据区域包括:日志区;
41.元数据信息加载模块,用于根据所述区域标记,确定目标元数据区域,进而获取元数据信息;
42.元数据更新模块,用于根据所述目标元数据区域的日志区中的标识信息,对所述元数据信息进行更新;
43.文件存储模块,用于根据更新后的所述元数据信息,进行文件存储;所述预处理模块、元数据信息加载模块、元数据更新模块和文件存储模块连接。
44.可选的,所述日志区包括:头部标识区、一个或多个尾部标识区;
45.所述元数据更新模块根据所述目标元数据区域的日志区中头部标识区中的标识信息和尾部标识区中的标识信息,对所述元数据信息进行更新。
46.可选的,不同所述元数据区域包括:第一元数据区域和第二元数据区域;
47.当所述第一元数据区域和第二元数据区域中其中一个元数据区域被写满时,则切换至另一个元数据区域,继续写入元数据及日志,并对当前被写满的元数据区域的区域标记进行更新,获取更新后的区域标记,将更新后的区域标记写入另一元数据区域的头部。
48.本发明还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一项所述方法。
49.本发明还提供一种电子终端,包括:处理器及存储器;
50.所述存储器用于存储计算机程序,所述处理器用于执行所述存储器存储的计算机程序,以使所述终端执行如上述任一项所述方法。
51.本发明的有益效果:本发明中的高并发的文件存储方法,通过对存储介质中的不同元数据区域设置不同的区域标记,根据所述区域标记,确定目标元数据区域,进而获取元数据信息;使得不同元数据区域根据不同的区域标记进行交替写,一次数据写入只需修改单个元数据,减少写入次数,提高存储性能,同时,根据所述目标元数据区域的日志区中的标识信息,对所述元数据信息进行更新,根据更新后的所述元数据信息,进行文件存储,能够较好地利用日志区中的标识信息,对元数据信息进行更新,在异常情况下,能够有效避免丢失数据信息,减少更新次数,成本较低。
附图说明
52.图1是本发明实施例中高并发的文件存储方法的流程示意图一;
53.图2是本发明实施例中高并发的文件存储系统的结构示意图一;
54.图3是本发明实施例中高并发的文件存储方法的切换元数据区域的流程示意图;
55.图4是本发明实施例中高并发的文件存储方法的数据加载的流程示意图;
56.图5是本发明实施例中高并发的文件存储方法的创建预申请文件块的流程示意图;
57.图6是本发明实施例中高并发的文件存储方法的数据写入的流程示意图;
58.图7是本发明实施例中高并发的文件存储方法的数据读取的流程示意图;
59.图8是本发明实施例中高并发的文件存储系统的结构示意图二。
60.附图标识:
61.01

第一元数据区域;02

第二元数据区域;03

元数据存储区;04

日志区;05

头部校验区;06

文件块;07

尾部校验区
具体实施方式
62.以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
63.需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
64.发明人发现,随着文件存储技术的发展,文件系统得到了越来越广泛的应用,然而,针对特殊的应用场景,例如:在高并发的分布式系统中,受限于机械盘的性能,如果实时更新文件信息,将极大影响写入性能,如果采用缓存方式更新文件信息,在异常掉电场景下,会丢失数据信息;目前,通常采用掉电保护装置,在设备宕机时,刷新文件信息,或者采用固态硬盘提高数据刷写性能,然而,采用掉电保护装置或固态硬盘的方法均会增加系统成本,且不便于实施,因此,发明人提出一种高并发的文件存储方法、系统、介质及电子终端,通过对存储介质中的不同元数据区域设置不同的区域标记,根据所述区域标记,确定目标元数据区域,进而获取元数据信息;使得不同元数据区域根据不同的区域标记进行交替写,一次数据写入只需修改单个元数据,减少写入次数,提高存储性能,同时,根据所述目标元数据区域的日志区04中的标识信息,对所述元数据信息进行更新,根据更新后的所述元数据信息,进行文件存储,能够较好地利用日志区04中的标识信息,对元数据信息进行更新,在异常情况下,能够有效避免丢失数据信息,减少更新次数,成本较低,实施较方便。
65.如图1所示,本实施例中的高并发的文件存储方法,包括:
66.s101:对存储介质中的不同元数据区域设置不同的区域标记,其中,所述元数据区域包括:日志区04;通过对存储介质中不同的元数据区域设置不同的区域标记,能够为元数据分区存储提供标记,例如:选择区域标记较大的元数据区域进行元数据存储,可以理解的,所述存储介质可以为机械硬盘、光盘、机械硬盘、磁带、固态硬盘等,此处不再赘述;在一些实施例中,所述区域标记可以是版本号或其他标记;
67.s102:根据所述区域标记,确定目标元数据区域,进而获取元数据信息;即通过区域标记确定目标元数据区域,并加载目标元数据区域中的元数据信息,实现对元数据信息的获取,例如:判断不同所述元数据区域的区域标记的大小,将区域标记较大的元数据区域作为目标元数据区域,加载目标元数据区域中的元数据信息,可以理解的,也可以将区域标记较小的元数据区域作为目标元数据区域,此处仅进行举例说明;在元数据存储过程中,根据区域标记,确定目标元数据区域,进而进行元数据存储,使得不同元数据区域采用交替写的方式,一次数据写入只需修改单个元数据,减少写入次数,提高存储性能,实施较方便;
68.在一些实施例中,根据所述区域标记,确定目标元数据区域,进而获取元数据信息的步骤包括:
69.对比不同所述元数据区域的区域标记,将区域标记较大的元数据区域确定为目标元数据区域,所述元数据区域还包括:元数据存储区03,所述元数据存储区03的头部区域包括:区域标记、存储区数据长度,所述元数据存储区03的尾部区域包括:元数据校验信息;所述元数据校验信息可以为循环冗余校验码,所述循环冗余校验码可以根据对应元数据存储区03中的数据进行获取;通过设置循环冗余校验码,能够提高元数据加载的精确度;
70.加载所述目标元数据区域的元数据存储区03中的元数据信息,加载所述日志区04中的日志。
71.在一些实施例中,根据预设的合并时间,将所述日志区04中的数据合并至元数据存储区03,避免日志区04数据溢出。
72.s103:根据所述目标元数据区域的日志区04中的标识信息,对所述元数据信息进行更新;通过利用目标元数据区域的日志区04中的标识信息,对元数据信息进行更新,能够较少元数据信息的更新次数;
73.在一些实施例中,所述日志区04包括:头部标识区、一个或多个尾部标识区;
74.根据所述目标元数据区域的日志区04中头部标识区中的标识信息和尾部标识区中的标识信息,对所述元数据信息进行更新;通过在日志区04的头部设置头部标识区,并在日志区04的尾部设置尾部标识区,能够便于后续对元数据信息进行更新;
75.在一些实施例中,所述头部标识区中的标识信息包括:区域标记、随机值和第二冗余校验码,其中所述第二冗余校验码的获取步骤包括:根据所述区域标记、随机值和预设的第二校验规则,获取第二冗余校验码;在一些实施例中,可以利用循环冗余校验,根据所述区域标记、随机值和预设的第二校验规则,获取第二冗余校验码;
76.在写入日志的过程中,将待写入日志按照预设的日志大小写入所述日志区04,并在预设大小的日志尾部的尾部标识区写入标识信息,所述头部标识区的标识信息与所述尾部标识区的标识信息相同。
77.在一些实施例中,对所述元数据信息进行更新的步骤包括:
78.根据所述头部标识区中的标识信息和尾部标识区中的标识信息,判断所述头部标识区中的标识信息和尾部标识区中的标识信息是否相同,获取上一次写入的日志信息,所述日志信息包括:预申请文件块的信息、关闭的文件块信息、文件块偏移位置、文件块当前写入长度;在一些实施例中,可以利用二分法,根据所述头部标识区中的标识信息和尾部标识区中的标识信息,判断所述头部标识区中的标识信息和尾部标识区中的标识信息是否相同,获取上一次写入的日志信息,能够减少判断次数,提高响应速度;
79.根据所述日志信息,获取数据结束位置;
80.根据所述数据结束位置,对所述元数据信息进行一次更新。例如:利用二分法,判断目标元数据区域的日志区04中的头部标识区中的标识信息和一个或多个尾部标识区中的标识信息是否相同,获取最新写入的日志信息,根据所述日志信息,获取数据结束位置;可以理解的,所述数据结束位置为最近一次数据写入的位置;通过利用所述数据结束位置,对元数据信息进行更新,能够有效减少元数据信息的更新次数,提高元数据信息更新的精确度。
81.在一些实施例中,对所述元数据信息进行更新的步骤还包括:
82.根据所述预申请文件块的信息,获取对应的预申请文件块的文件块偏移位置,进而判断对应的所述预申请文件块是否存在尾部校验区07,获取判断结果;
83.根据所述判断结果,获取文件块真实长度信息;
84.根据所述文件块真实长度信息,对所述元数据信息进行二次更新;例如:文件存储系统根据预设的预申请文件块个数,进行预申请文件块创建,并在所述预申请文件块头部的头部校验区05写入第一校验信息,当所述预申请文件块写入数据以后,在所述预申请文件块尾部的尾部校验区07写入第二校验信息,所述第一校验信息和所述第二校验信息相同,从而,在对所述元数据信息进行二次更新的过程中,根据预申请文件块的信息,获取对应的预申请文件块的偏移位置,进而根据所述预申请文件块的偏移位置,判断所述预申请文件块是否存在尾部校验区07,获取判断结果,若所述预申请文件块存在尾部校验区07,并且尾部校验区07中的第二校验信息与对应头部校验区05中的第一校验信息相同,则判定该预申请文件块已用,若所述预申请文件块不存在尾部校验区07,则判定所述预申请文件块为空闲文件块,进而获取文件块真实长度信息,即文件块已用长度,根据所述文件块真实长度信息,对所述元数据信息进行二次更新,从而减少所述元数据信息的更新次数,避免多次更新;
85.s104:根据更新后的所述元数据信息,进行文件存储;例如:根据更新后的元数据信息,确定空闲文件块信息,根据所述空闲文件块信息,将待写入数据写入对应的文件块中,完成高并发的文件存储;通过利用标识信息对元数据进行更新,能够较好地对数据结束位置进行定位,实现对元数据的更新,能够在异常情况下,有效避免丢失数据信息,减少更新次数,成本较低,可行性较高。
86.在一些实施例中,根据更新后的所述元数据信息,进行文件存储的步骤包括:
87.根据更新后的元数据信息,获取所述存储介质中的文件块信息,所述文件块信息包括:已用文件块信息、空闲文件块信息;
88.根据预设的预申请文件块个数和所述空闲文件块信息,进行文件块预申请,获取预申请文件块,并在所述预申请文件块头部的头部校验区05写入第一校验信息;
89.根据预设的日志更新周期,将预申请操作日志和/或其它日志批量写入日志区04;通过定期更新日志,减少数据更新压力,提高数据写入性能,最大限度的保存数据信息,在一些实施例中,可以根据文件写入间隔,获取日志更新周期;
90.在一些实施例中,所述第一校验信息包括:文件块名称、创建时间和第一冗余校验码,其中,所述第一冗余校验码的获取步骤包括:根据所述文件块名称、创建时间、预设的第一校验规则,获取第一冗余校验码;
91.当将待写入数据写入对应的所述预申请文件块后,在所述预申请文件块的尾部校验区07中写入第二校验信息,所述第一校验信息与所述第二校验信息相同。
92.如图2所示,在一些实施例中,不同所述元数据区域包括:第一元数据区域01和第二元数据区域04;
93.当所述第一元数据区域01和第二元数据区域04中其中一个元数据区域被写满时,则切换至另一个元数据区域,继续写入元数据及日志,并将当前被写满的元数据区域的区域标记加一,获取更新后的区域标记,将更新后的区域标记写入另一元数据区域的头部。例如,当所述第一元数据区域01被写满时,则切换至第二元数据区域04,继续写入元数据及日志,并将第二元数据区域04的区域标记加一。
94.如图3所示,在一些实施例中,切换元数据区域的步骤包括:
95.s201:当日志区04被写满时,则切换至另一个元数据区域中的日志区04,并将区域标记加一,即当所述第一元数据区域01或第二元数据区域04中其中一个元数据区域的日志区04被写满时,则切换至另一个元数据区域的日志区04,继续写入日志,并将对应的日志区04的头部标识区中的区域标记加一;例如:当日志区04的日志写满64mb时,则切换至另一个元数据区域中的日志区04,并将对应的切换后的日志区04的头部标识区中的区域标记加一;
96.s202:根据第一元数据区域01的区域标记和所述第二元数据区域04的区域标记,确定目标元数据区域;
97.s203:保存第一待写入元数据和第二待写入元数据,所述第一待写入元数据和所述第二待写入元数据相同,将所述第一待写入元数据写入所述目标元数据区域中的元数据存储区03;例如:在内存中保存第一待写入元数据和第二待写入元数据;
98.s204:在将所述第一待写入元数据写入所述目标元数据区域中的元数据存储区03的过程中,若元数据发生变更,则对所述第二待写入元数据进行更新,并将更新内容写入临时区;
99.s205:当所述第一待写入元数据已经写入所述目标元数据区域中的元数据存储区03时,将所述临时区中的更新内容写入对应的元数据存储区03中,使所述第一待写入元数据和所述第二待写入元数据保持一致,完成元数据区域切换,即完成日志区04切换。在元数据区域切换过程中,当元数据发生变更时,通过将第一待写入元数据写入目标元数据区域中的元数据存储区03,对第二待写入元数据进行更新,并将更新内容写入临时区,在第一待写入元数据写入完成时,将临时区中的更新内容写入对应的元数据存储中,保持第一待写入元数据和第二待写入元数据的一致性,避免元数据区域切换过程中,造成数据缺失或错误,能够较好地完成元数据区域切换,可行性较高。
100.实施例一:
101.如图4所示,当进行数据加载时,s301:根据不同元数据区域中的区域标记,确定目标元数据区域,进而获取元数据信息;
102.s302:加载目标元数据区域的元数据存储区03中的元数据信息,并校验元数据存储区03尾部的元数据校验信息;
103.s303:加载目标元数据区域的日志区04中的信息,根据日志区04中所述头部标识区中的标识信息和尾部标识区中的标识信息,对元数据信息进行一次更新,即判断所述头
部标识区中的标识信息和尾部标识区中的标识信息是否相同,获取上一次写入的日志信息,所述日志信息包括:预申请文件块的信息、关闭的文件块信息、文件块偏移位置、文件块当前写入长度;在一些实施例中,所述头部标识区中的标识信息包括:区域标记、随机值和第二冗余校验码,其中所述第二冗余校验码的获取步骤包括:根据所述区域标记、随机值和预设的第二校验规则,获取第二冗余校验码;
104.在写入日志的过程中,将待写入日志按照预设的日志大小写入所述日志区04,并在预设大小的日志尾部的尾部标识区写入标识信息,所述头部标识区的标识信息与所述尾部标识区的标识信息相同;
105.根据所述日志信息,获取数据结束位置;
106.根据所述数据结束位置,对所述元数据信息进行一次更新。
107.s304:根据所述预申请文件块的信息,对所述元数据信息进行二次更新,即获取对应的预申请文件块的文件块偏移位置,进而判断对应的所述预申请文件块是否存在尾部校验区07,获取判断结果;
108.根据所述判断结果,获取文件块真实长度信息;
109.根据所述文件块真实长度信息,对所述元数据信息进行二次更新。根据预设的日志更新周期,将上述更新操作写入对应的日志区04;
110.s305:根据更新后的元数据信息,进行预申请文件块创建,完成数据加载;
111.实施例二:
112.如图5所示,创建预申请文件块的步骤包括:s401:根据更新后的元数据信息,获取所述存储介质中的文件块信息,所述文件块信息包括:已用文件块信息、空闲文件块信息;
113.s402:根据预设的预申请文件块个数和所述空闲文件块信息,进行文件块预申请,获取预申请文件块,并在所述预申请文件块头部的头部校验区05写入第一校验信息;
114.s403:根据预设的日志更新周期,将预申请操作日志和/或其它日志批量写入日志区04。同时,更新加载的元数据信息。
115.在一些实施例中,所述第一校验信息包括:文件块名称、创建时间和第一冗余校验码,其中,所述第一冗余校验码的获取步骤包括:根据所述文件块名称、创建时间、预设的第一校验规则,获取第一冗余校验码;
116.当将待写入数据写入对应的所述预申请文件块后,在所述预申请文件块的尾部校验区07中写入第二校验信息,所述第一校验信息与所述第二校验信息相同。
117.实施例三:
118.如图6所示,数据写入的过程包括:s501:根据更新后的元数据信息,获取对应的预申请文件块的位置,进而进行待写入数据的写入;
119.s502:当每次将待写入数据写入对应的所述预申请文件块后,在所述预申请文件块的尾部校验区07中写入第二校验信息,所述第一校验信息与所述第二校验信息相同,可以理解的,当第二次进行数据写入时,将用数据覆盖掉原有数据;
120.s503:根据预设的日志更新周期,将文件块更新长度日志写入对应的日志区04,同时,对加载的元数据信息进行更新。
121.实施例四:
122.如图7所示,当进行数据读取时,s601:根据加载的元数据信息,获取预申请文件块
的位置,并读取响应长度数据;
123.s602:当响应长度数据超出文件块真实长度信息时,则拒绝本次数据读取。
124.如图8所示,本实施例还提供一种高并发的文件存储系统,包括:
125.预处理模块,用于对存储介质中的不同元数据区域设置不同的区域标记,其中,所述元数据区域包括:日志区04;
126.元数据信息加载模块,用于根据所述区域标记,确定目标元数据区域,进而获取元数据信息;
127.元数据更新模块,用于根据所述目标元数据区域的日志区04中的标识信息,对所述元数据信息进行更新;
128.文件存储模块,用于根据更新后的所述元数据信息,进行文件存储;所述预处理模块、元数据信息加载模块、元数据更新模块和文件存储模块依次连接;通过对存储介质中的不同元数据区域设置不同的区域标记,根据所述区域标记,确定目标元数据区域,进而获取元数据信息;使得不同元数据区域根据不同的区域标记进行交替写,一次数据写入只需修改单个元数据,减少写入次数,提高存储性能,同时,根据所述目标元数据区域的日志区04中的标识信息,对所述元数据信息进行更新,根据更新后的所述元数据信息,进行文件存储,能够较好地利用日志区04中的标识信息,对元数据信息进行更新,在异常情况下,能够有效避免丢失数据信息,减少更新次数,成本较低,实施较方便。
129.在一些实施例中,所述日志区04包括:头部标识区、一个或多个尾部标识区;
130.所述元数据更新模块根据所述目标元数据区域的日志区04中头部标识区中的标识信息和尾部标识区中的标识信息,对所述元数据信息进行更新。
131.在一些实施例中,不同所述元数据区域包括:第一元数据区域01和第二元数据区域04;
132.当所述第一元数据区域01和第二元数据区域04中其中一个元数据区域被写满时,则切换至另一个元数据区域,继续写入元数据及日志,并对当前被写满的元数据区域的区域标记进行更新,获取更新后的区域标记,将更新后的区域标记写入另一元数据区域的头部。
133.在一些实施例中,所述元数据信息加载模块对比不同所述元数据区域的区域标记,将区域标记较大的元数据区域确定为目标元数据区域,所述元数据区域还包括:元数据存储区03,所述元数据存储区03的头部区域包括:区域标记、存储区数据长度,所述元数据存储区03的尾部区域包括:元数据校验信息;
134.加载所述目标元数据区域的元数据存储区03中的元数据信息,加载所述日志区04中的日志。
135.在一些实施例中,所述元数据更新模块包括:
136.一次更新单元,用于根据所述头部标识区中的标识信息和尾部标识区中的标识信息,判断所述头部标识区中的标识信息和尾部标识区中的标识信息是否相同,获取上一次写入的日志信息,所述日志信息包括:预申请文件块的信息、关闭的文件块信息、文件块偏移位置、文件块当前写入长度;
137.根据所述日志信息,获取数据结束位置;
138.根据所述数据结束位置,对所述元数据信息进行一次更新。
139.在一些实施例中,所述元数据更新模块还包括:
140.二次更新单元,用于对所述元数据信息进行更新的步骤还包括:
141.根据所述预申请文件块的信息,获取对应的预申请文件块的文件块偏移位置,进而判断对应的所述预申请文件块是否存在尾部校验区07,获取判断结果;
142.根据所述判断结果,获取文件块真实长度信息;
143.根据所述文件块真实长度信息,对所述元数据信息进行二次更新。
144.根据更新后的所述元数据信息,进行文件存储的步骤包括:
145.根据更新后的元数据信息,获取所述存储介质中的文件块信息,所述文件块信息包括:已用文件块信息、空闲文件块信息;
146.根据预设的预申请文件块个数和所述空闲文件块信息,进行文件块预申请,获取预申请文件块,并在所述预申请文件块头部的头部校验区05写入第一校验信息;
147.根据预设的日志更新周期,将预申请操作日志和/或其它日志批量写入日志区04。
148.在一些实施例中,所述第一校验信息包括:文件块名称、创建时间和第一冗余校验码,其中,所述第一冗余校验码的获取步骤包括:根据所述文件块名称、创建时间、预设的第一校验规则,获取第一冗余校验码;
149.当将待写入数据写入对应的所述预申请文件块后,在所述预申请文件块的尾部校验区07中写入第二校验信息,所述第一校验信息与所述第二校验信息相同。
150.在一些实施例中,还包括:元数据区域切换模块,用于当所述第一元数据区域01或第二元数据区域04中其中一个元数据区域的日志区04被写满时,则切换至另一个元数据区域的日志区04,继续写入日志,并将对应的日志区04的头部标识区中的区域标记加一;
151.根据第一元数据区域01的区域标记和所述第二元数据区域04的区域标记,确定目标元数据区域;
152.保存第一待写入元数据和第二待写入元数据,所述第一待写入元数据和所述第二待写入元数据相同,将所述第一待写入元数据写入所述目标元数据区域中的元数据存储区03,进而进行元数据区域切换,所述元数据切换模块与所述预处理模块连接。
153.在一些实施例中,在将所述第一待写入元数据写入所述目标元数据区域中的元数据存储区03的过程中,若元数据发生变更,则对所述第二待写入元数据进行更新,并将更新内容写入临时区;
154.当所述第一待写入元数据已经写入所述目标元数据区域中的元数据存储区03时,将所述临时区中的更新内容写入对应的元数据存储区03中,使所述第一待写入元数据和所述第二待写入元数据保持一致,完成元数据区域切换。
155.在一些实施例中,所述头部标识区中的标识信息包括:区域标记、随机值和第二冗余校验码,其中所述第二冗余校验码的获取步骤包括:根据所述区域标记、随机值和预设的第二校验规则,获取第二冗余校验码;
156.在写入日志的过程中,将待写入日志按照预设的日志大小写入所述日志区04,并在预设大小的日志尾部的尾部标识区写入标识信息,所述头部标识区的标识信息与所述尾部标识区的标识信息相同。
157.在一些实施例中,还包括:合并模块,用于根据预设的合并时间,将所述日志区04中的数据合并至元数据存储区03,所述合并模块与所述预处理模块连接。
158.在一些实施例中,当进行元数据区域切换时,所述元数据区域切换模块将当前被写满的元数据区域的区域标记加一,获取更新后的区域标记,并将更新后的区域标记写入另一元数据区域的头部。
159.本实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本实施例中的任一项方法。
160.本实施例还提供一种电子终端,包括:处理器及存储器;
161.所述存储器用于存储计算机程序,所述处理器用于执行所述存储器存储的计算机程序,以使所述终端执行本实施例中任一项方法。
162.本实施例中的计算机可读存储介质,本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过计算机程序相关的硬件来完成。前述的计算机程序可以存储于一计算机可读存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
163.本实施例提供的电子终端,包括处理器、存储器、收发器和通信接口,存储器和通信接口与处理器和收发器连接并完成相互间的通信,存储器用于存储计算机程序,通信接口用于进行通信,处理器和收发器用于运行计算机程序,使电子终端执行如上方法的各个步骤。
164.在本实施例中,存储器可能包含随机存取存储器(random access memory,简称ram),也可能还包括非易失性存储器(non

volatile memory),例如至少一个磁盘存储器。
165.上述的处理器可以是通用处理器,包括中央处理器(central processing unit,简称cpu)、网络处理器(network processor,简称np)等;还可以是数字信号处理器(digital signal processing,简称dsp)、专用集成电路(application specific integrated circuit,简称asic)、现场可编程门阵列(field-programmable gate array,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
166.上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1