CN115657956B - 一种应对缓存数据丢失的元数据一致性写入方法和系统 - Google Patents
一种应对缓存数据丢失的元数据一致性写入方法和系统 Download PDFInfo
- Publication number
- CN115657956B CN115657956B CN202211364152.0A CN202211364152A CN115657956B CN 115657956 B CN115657956 B CN 115657956B CN 202211364152 A CN202211364152 A CN 202211364152A CN 115657956 B CN115657956 B CN 115657956B
- Authority
- CN
- China
- Prior art keywords
- metadata
- writing
- batch
- counter value
- count
- 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
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种应对缓存数据丢失的元数据一致性写入方法和系统,涉及文件系统技术领域。该方法包括:将待更新元数据写入已设置的批次缓冲区中,写入完成后的计数器值为第一计数。获取当前计数器值并与第一计数比较,若增量大于所述预设缓冲深度,且无异常,将所述待更新元数据的标志信息写入存储器,并记录写入时的计数器值为第二计数,若增量大于所述预设缓冲深度,且无异常,将所述待更新元数据写入文件系统的元数据记录中,并记录写入时的计数器值为第三计数,获取当前计数器值并与第三计数比较,若增量大于所述预设缓冲深度,且无异常,清除存储器中的该批次缓冲区的标志信息,通过本方案显著提升文件系统可靠性与稳定性。
Description
技术领域
本发明涉及文件系统技术领域,尤其涉及一种应对缓存数据丢失的元数据一致性写入方法和系统。
背景技术
文件系统是一种存储和组织数据的方法,通过将硬盘、光盘等物理设备所提供的数据块访问形式封装与抽象成为文件、目录等高级访问形式,极大的简化了数据存储、访问、检索过程。
文件系统通过元数据记录文件-数据块组织、目录结构、底层存储资源的状态与信息。文件系统元数据间具有复杂的内在逻辑联系,这种联系被破坏时将使文件系统内部状态出现矛盾,例如负责文件-数据块组织部分的元数据记录某个数据块属于特定文件,但负责底层存储资源部分的元数据同时记录该数据块为空闲数据块,此现象即为文件系统元数据不一致。文件系统元数据不一致会导致数据读写错误、文件丢失、文件系统崩溃等严重错误。
元数据的部分写入是造成文件系统元数据不一致的重要原因。文件操作会涉及到多处元数据变更,例如进行文件写入时,会同时变更文件-数据块组织元数据与底层空闲存储资源状态元数据。在将变动的元数据保存至存储设备中,必须保证所有元数据或者全部成功保存,或者全部未保存。如果仅部分元数据被保存,则元数据间所记录信息会出现逻辑矛盾,从而导致文件系统元数据不一致。
为优化数据写入性能,部分存储系统内设置缓存区,数据被提交至存储系统缓存后即反馈成功,此后缓存中的数据由存储系统按特定策略逐步实际写入存储介质。如果该过程中发生系统断电、存储介质连接断开等异常,缓存中尚未实际写入存储介质的数据将会丢失。
现有文件系统通过写时复制与日志方法增强元数据写入一致性保证能力,但不足以在存在缓存数据丢失故障的存储系统中保证文件系统元数据一致性。
发明内容
本发明所要解决的技术问题是针对现有技术的不足,提供一种应对缓存数据丢失的元数据一致性写入方法和系统。
本发明解决上述技术问题的技术方案如下:
一种应对缓存数据丢失的元数据一致性写入方法,包括:
S1,设置计数器,设置预设缓冲深度;
S2,将待更新元数据写入已设置的批次缓冲区中,写入完成后记录最后一笔写入时的计数器值为第一计数。此后运行过程中,获取当前计数器值并与第一计数比较,若增量大于所述预设缓冲深度,且无异常,执行后续步骤;
S3,将所述待更新元数据的标志信息写入存储器,并记录写入时的计数器值为第二计数,此后运行过程中,获取当前计数器值并与第二计数比较,若增量大于所述预设缓冲深度,且无异常,执行后续步骤;
S4,将所述待更新元数据写入文件系统的元数据记录中,并记录写入时的计数器值为第三计数,此后运行过程中,获取当前计数器值并与第三计数比较,若增量大于所述预设缓冲深度,且无异常,执行后续步骤;
S5,清除存储器中的该批次缓冲区的标志信息,并记录清除时的计数器值为第四计数,此后运行过程中,获取当前计数器值并与第三计数比较,若增量大于所述预设缓冲深度,且无异常,执行完成。
本发明的有益效果是:在现有技术中部分存储系统内设置缓存区,数据被提交至存储系统缓存后即反馈成功,此后缓存中的数据由存储系统按特定策略逐步实际写入存储介质。如果该过程中发生系统断电、存储介质连接断开等异常,缓存中尚未实际写入存储介质的数据将会丢失,通过本方案优化数据写入性能,在存在缓存数据丢失故障的存储系统中保证文件系统元数据一致性。
采用该方式进行文件系统元数据写入,可以有效鉴别文件系统元数据是否处于一致状态,并可将处于不一致状态的元数据恢复为一致状态,从而显著提升文件系统可靠性与稳定性。此外该方法写入放大倍率稳定,不改变文件系统元数据布局,有利于进行文件系统扫描与错误恢复。
进一步地,还包括:
当待更新元数据包括多个批次数据,设置多个批次缓冲区;
根据多个批次数据的关联关系,分别依次执行每个批次数据的S1-S5步骤;其中,在先批次数据先于在后批次数据完成S1-S5步骤。
进一步地,还包括:
读取所述已设置的批次缓冲区中的每一个缓冲区的有效标志;
当未识别到有效标志时,则所述文件系统的元数据处于一致状态,执行所述文件系统的后续访问;
当识别到有效标志时,则当前文件系统的元数据处于不一致状态,执行一致性恢复操作,当前文件系统的元数据恢复一致状态时,再进行所述文件系统的后续访问。
进一步地,所述一致性恢复操作具体包括:
通过每个包括有效标志的批次缓冲区的第一计数,对每个包括有效标志的批次缓冲区进行排序,获得排序结果;
根据排序结果将每个包括有效标志的批次缓冲区的数据块依次更新所述文件系统的元数据记录中,并替换对应的数据块;
删除所有包括有效标志的批次缓冲区记录,完成所述文件系统的元数据的一致性恢复。
进一步地,S4之后还包括:
释放所述已设置的批次缓冲区,供后续元数据写入使用。
本发明解决上述技术问题的另一种技术方案如下:
一种应对缓存数据丢失的元数据一致性写入系统,包括:设置模块、第一写入模块、第二写入模块、第三写入模块和清除模块;
所述设置模块用于设置计数器,设置预设缓冲深度;
所述第一写入模块用于将待更新元数据写入已设置的批次缓冲区中,写入完成后记录最后一笔写入时的计数器值为第一计数。此后运行过程中,获取当前计数器值并与第一计数比较,若增量大于所述预设缓冲深度,且无异常,执行后续步骤;
所述第二写入模块用于将所述待更新元数据的标志信息写入存储器,并记录写入时的计数器值为第二计数,此后运行过程中,获取当前计数器值并与第二计数比较,若增量大于所述预设缓冲深度,且无异常,执行后续步骤;
所述第三写入模块用于将所述待更新元数据写入文件系统的元数据记录中,并记录写入时的计数器值为第三计数,此后运行过程中,获取当前计数器值并与第三计数比较,若增量大于所述预设缓冲深度,且无异常,执行后续步骤;
所述清除模块用于清除存储器中的该批次缓冲区的标志信息,并记录清除时的计数器值为第四计数,此后运行过程中,获取当前计数器值并与第三计数比较,若增量大于所述预设缓冲深度,且无异常,执行完成。
本发明的有益效果是:在现有技术中部分存储系统内设置缓存区,数据被提交至存储系统缓存后即反馈成功,此后缓存中的数据由存储系统按特定策略逐步实际写入存储介质。如果该过程中发生系统断电、存储介质连接断开等异常,缓存中尚未实际写入存储介质的数据将会丢失,通过本方案优化数据写入性能,在存在缓存数据丢失故障的存储系统中保证文件系统元数据一致性。
采用该方式进行文件系统元数据写入,可以有效鉴别文件系统元数据是否处于一致状态,并可将处于不一致状态的元数据恢复为一致状态,从而显著提升文件系统可靠性与稳定性。此外该方法写入放大倍率稳定,不改变文件系统元数据布局,有利于进行文件系统扫描与错误恢复。
进一步地,还包括:多批次写入模块,用于当待更新元数据包括多个批次数据,设置多个批次缓冲区;
根据多个批次数据的关联关系,分别依次执行每个批次数据的一致性写入步骤;其中,在先批次数据先于在后批次数据完成一致性写入步骤。
进一步地,还包括:一致性判断模块,用于读取所述已设置的批次缓冲区中的每一个缓冲区的有效标志;
当未识别到有效标志时,则所述文件系统的元数据处于一致状态,执行所述文件系统的后续访问;
当识别到有效标志时,则当前文件系统的元数据处于不一致状态,执行一致性恢复操作,当前文件系统的元数据恢复一致状态时,再进行所述文件系统的后续访问。
进一步地,还包括:一致性恢复模块,用于通过每个包括有效标志的批次缓冲区的第一计数,对每个包括有效标志的批次缓冲区进行排序,获得排序结果;
根据排序结果将每个包括有效标志的批次缓冲区的数据块依次更新所述文件系统的元数据记录中,并替换对应的数据块;
删除所有包括有效标志的批次缓冲区,完成所述文件系统的元数据的一致性恢复。
进一步地,还包括:缓存释放模块,用于释放所述已设置的批次缓冲区,供后续元数据写入使用。
本发明附加的方面的优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明实践了解到。
附图说明
图1为本发明的实施例提供的一种应对缓存数据丢失的元数据一致性写入方法的流程示意图;
图2为本发明的实施例提供的一种应对缓存数据丢失的元数据一致性写入系统的结构框图;
图3为本发明的其他实施例提供的文件系统元数据一致性判定过程示意图;
图4为本发明的其他实施例提供的文件系统元数据一致性恢复过程示意图;
图5为本发明的其他实施例提供的初始状态时文件系统元数据未变更示意图;
图6为本发明的其他实施例提供的元数据更新示意图;
图7为本发明的其他实施例提供的设置新的批次缓冲区1示意图;
图8为本发明的其他实施例提供的向批次缓冲区中追加提交示意图;
图9为本发明的其他实施例提供的提交写入批次缓冲区0标志信息示意图;
图10为本发明的其他实施例提供的合并提交计数示意图;
图11为本发明的其他实施例提供的标志信息清除计数示意图;
图12为本发明的其他实施例提供的标志信息读取示意图;
图13为本发明的其他实施例提供的将A的批次缓冲区中所有数据块替换原有数据块示意图;
图14为本发明的其他实施例提供的将B的批次缓冲区中所有数据块替换原有数据块示意图;
图15为本发明的其他实施例提供的恢复至一致状态示意图。
具体实施方式
以下结合附图对本发明的原理和特征进行描述,所举实施例只用于解释本发明,并非用于限定本发明的范围。
如图1所示,为本发明实施例提供的一种应对缓存数据丢失的元数据一致性写入方法,包括:
S1,设置计数器,设置预设缓冲深度;例如:存储器缓存深度为1024条记录,则设置缓冲区深度为1024。
S2,将待更新元数据写入已设置的批次缓冲区中,写入完成后记录最后一笔写入时的计数器值为第一计数。此后运行过程中,获取当前计数器值并与第一计数比较,若增量大于所述预设缓冲深度,且无异常,执行后续步骤;
例如,初始计数器值为0,将待更新元数据写入已设置的批次缓冲区后计数器为10000,此后等待,当计数器达到11024后,执行后续步骤;
S3,将所述待更新元数据的标志信息写入存储器,并记录写入时的计数器值为第二计数,此后运行过程中,获取当前计数器值并与第二计数比较,若增量大于所述预设缓冲深度,且无异常,执行后续步骤;其中,所述标志信息包括第一计数。
例如,将所述待更新元数据的标志信息写入存储器后计数器值为20000,此后等待,当计数器达到21024后,执行后续步骤;
S4,将所述待更新元数据写入文件系统的元数据记录中,并记录写入时的计数器值为第三计数,此后运行过程中,获取当前计数器值并与第三计数比较,若增量大于所述预设缓冲深度,且无异常,执行后续步骤;其中,此后可以对其它批次缓冲区进行写入操作,写入过程中计数器会增加;也可以插入无效的写操作(例如对特定地址插入无意义的写),已使得计数器增加。其中,异常可以是存储器反馈写入失败,或失联。
例如,将所述待更新元数据写入文件系统的元数据记录后计数器值为30000,此后等待,当计数器达到31024后,执行后续步骤。
S5,清除存储器中的该批次缓冲区的标志信息,并记录清除时的计数器值为第四计数,此后运行过程中,获取当前计数器值并与第三计数比较,若增量大于所述预设缓冲深度,且无异常,执行完成。其中,第一计数是更新元数据写入批次缓冲区后的计数器值;第二计数是写入更新标志后的计数器值;第三计数是写入文件系统元数据记录后的计数器值;第四计数是清除更新标志后的计数器值。
例如,将所述待更新元数据写入文件系统的元数据记录后计数器值为40000,此后等待,当计数器达到41024后,执行完成。
其中,在各步骤等待时,计数器的增加可以来源于对其它批次缓冲区的操作,也可以来源于向存系统插入无意义写入,以推进计数器值增加,减少等待时间。
在现有技术中部分存储系统内设置缓存区,数据被提交至存储系统缓存后即反馈成功,此后缓存中的数据由存储系统按特定策略逐步实际写入存储介质。如果该过程中发生系统断电、存储介质连接断开等异常,缓存中尚未实际写入存储介质的数据将会丢失,通过本方案优化数据写入性能,在存在缓存数据丢失故障的存储系统中保证文件系统元数据一致性。
采用该方式进行文件系统元数据写入,可以有效鉴别文件系统元数据是否处于一致状态,并可将处于不一致状态的元数据恢复为一致状态,从而显著提升文件系统可靠性与稳定性。此外该方法写入放大倍率稳定,不改变文件系统元数据布局,有利于进行文件系统扫描与错误恢复。
可选地,在一些实施例中,还包括:
当待更新元数据包括多个批次数据,设置多个批次缓冲区;
根据多个批次数据的关联关系,分别依次执行每个批次数据的S1-S5步骤;其中,在先批次数据先于在后批次数据完成S1-S5步骤。
需要说明的是,在先批次数据先于在后批次数据完成S1-S5步骤,具体包括:后批次只有在前批次执行完S2后,方可执行S2;后批次只有在前批次执行完S3后,方可执行S3;后批次只有在前批次执行完S4后,方可执行S4;各缓冲区执行S5的前提条件为之前的批次缓冲区已执行完成S5。
可选地,在一些实施例中,还包括:
读取所述已设置的批次缓冲区中的每一个缓冲区的有效标志;
当未识别到有效标志时,则所述文件系统的元数据处于一致状态,执行所述文件系统的后续访问;
当识别到有效标志时,则当前文件系统的元数据处于不一致状态,执行一致性恢复操作,当前文件系统的元数据恢复一致状态时,再进行所述文件系统的后续访问。
可选地,在一些实施例中,所述一致性恢复操作具体包括:
通过每个包括有效标志的批次缓冲区的第一计数,对每个包括有效标志的批次缓冲区进行排序,获得排序结果;
根据排序结果将每个包括有效标志的批次缓冲区的数据块依次更新所述文件系统的元数据记录中,并替换对应的数据块;
删除所有包括有效标志的批次缓冲区记录,完成所述文件系统的元数据的一致性恢复。
可选地,在一些实施例中,S4之后还包括:
释放所述已设置的批次缓冲区,供后续元数据写入使用。
在某一实施例中,元数据一致性写入方法可以包括:
步骤11初始化时设置提交计数器,记录向存储器缓存提交的写入数量。设置每批次包含的提交数量。设置缓存深度为存储系统缓存所能够容纳提交的最大数量。
步骤12从存储系统中分配地址空间,设置为批次缓冲区。当进行元数据更新时,将更新所包含的所有数据变更提交写入至该批次缓冲区地址,并更新提交计数。提交计数的增加值等于更新中所包含提交写入的数量。每次更新所包含的所有数据块应保持一致状态。需要说明的是,元数据从不同的角度记录的文件系统的状态,这些状态具有一定的逻辑关系,如果不同元数据中记录违背了这种关系,即发生了不一致。例如文件系统维护总存储空间,空闲空间,已使用空间,如果空闲空间,已使用空间不等于总存储空间及发生了不一致。在实际应用中,新创建的文件系统处于一致状态,通过文件系统操作会导致文件系统改变。每次文件系统操作会涉及到多处元数据变更,如果这些变更同时被实施,或同时被放弃,则元数据处于一致状态。这里对于一致的保证方法可以为:确保变更所涉及的数据块变化,在一次更新中或者全部被包含,或者全部为包含。
步骤13变更提交后,如果当前批次中所包含的元数据变更提交数量超过所设置每批次包含的提交数量时,记录该批次缓冲区的最终提交计数值,并停止对该批次缓冲区的后续写入。重复步骤12建立新的缓存,将后续元数据更新写入新的批次缓冲区。
步骤14对于每个批次缓冲区,当提交计数器距离各批次缓冲区最终提交计数值超过缓存深度时,若存储系统未发生失效,则说明该批次缓冲区所有数据均得到可靠写入,此时向存储系统提交写入批次缓冲区标志信息,信息内容包括批次缓冲区有效标志及最终提交计数值;记录此次提交的提交计数,即为标志信息提交计数。如果存储系统发生失效,报错并停止后续写入,此时文件系统更新失败,但依旧可恢复至一致性状态。其中,这里的失效表示存储器未能正确写入;判断方法可以包括:存储器反馈失败,超时未反馈成功和存储器断开链接等。
需要说明的是,在另一实施例中,如图3所示,文件系统元数据一致性判定方法可以包括:
步骤111读取所有批次缓冲区的标志信息(包括有效标志及最终提交计数值)
步骤112如果不存在任何有效标志,说明当前文件系统处于一致状态,可以正常执行后续访问。
如果存在有效标志,说明当前文件系统处于不一致状态,需要进行文件系统一致性恢复后方可进行后续访问。
在另一实施例中,对于处于不一致状态的文件系统元数据,通过执行恢复方法可以使元数据重新回归至一致状态,恢复方法如下,如图4所示:
在另一实施例中,对于每个批次缓冲区,当提交计数器距离标志信息提交计数超过缓存深度时,若存储系统未发生失效,则说明该批次缓冲区标志信息已被可靠写入,此时将批次缓冲区中的更改合并写入至元数据记录;记录最后一笔提交的提交计数,既为合并提交计数。如果存储系统发生失效,报错并停止后续写入,此时文件系统更新失败,但依旧可恢复至一致性状态。其中,一致性恢复方法如图3所示。其中,这里的失效表示存储器未能正确写入;判断方法可以包括:存储器反馈失败,超时未反馈成功和存储器断开链接等。
在另一实施例中,对于每个批次缓冲区,当提交计数器距离合并提交计数超过缓存深度时,若存储系统未发生失效,则说明该批次缓冲区元数据合并可靠写入,此时清除该批次缓冲区的标志信息;记录此次提交的提交计数,即为标志信息清除提交计数。如果存储系统发生失效,报错并停止后续写入,此时文件系统更新失败,但依旧可恢复至一致性状态。其中,一致性恢复方法如图4所示。其中,这里的失效表示存储器未能正确写入;判断方法可以包括:存储器反馈失败,超时未反馈成功和存储器断开链接等。
在另一实施例中,对于每个批次缓冲区,当提交计数器距离标志信息清除提交计数超过缓存深度时,若存储系统未发生失效,则说明该批次缓冲区已经成功清除,该批次缓冲区地址空间可重新回收利用。如果存储系统发生失效,报错并停止后续写入,此时文件系统更新失败,但依旧可恢复至一致性状态。其中,一致性恢复方法如图4所示。其中,这里的失效表示存储器未能正确写入;判断方法可以包括:存储器反馈失败,超时未反馈成功和存储器断开链接等。
在现有技术中部分存储系统内设置缓存区,数据被提交至存储系统缓存后即反馈成功,此后缓存中的数据由存储系统按特定策略逐步实际写入存储介质。如果该过程中发生系统断电、存储介质连接断开等异常,缓存中尚未实际写入存储介质的数据将会丢失,通过本方案优化数据写入性能,在存在缓存数据丢失故障的存储系统中保证文件系统元数据一致性。
采用该方式进行文件系统元数据写入,可以有效鉴别文件系统元数据是否处于一致状态,并可将处于不一致状态的元数据恢复为一致状态,从而显著提升文件系统可靠性与稳定性。此外该方法写入放大倍率稳定,不改变文件系统元数据布局,有利于进行文件系统扫描与错误恢复。
在某一实施例中,如图2所示,一种应对缓存数据丢失的元数据一致性写入系统,包括:设置模块1101、第一写入模块1102、第二写入模块1103、第三写入模块1104和清除模块1105;
所述设置模块1101用于设置计数器,设置预设缓冲深度;
所述第一写入模块1102用于将待更新元数据写入已设置的批次缓冲区中,写入完成后记录最后一笔写入时的计数器值为第一计数。此后运行过程中,获取当前计数器值并与第一计数比较,若增量大于所述预设缓冲深度,且无异常,执行后续步骤;
所述第二写入模块1103用于将所述待更新元数据的标志信息写入存储器,并记录写入时的计数器值为第二计数,此后运行过程中,获取当前计数器值并与第二计数比较,若增量大于所述预设缓冲深度,且无异常,执行后续步骤;
所述第三写入模块1104用于将所述待更新元数据写入文件系统的元数据记录中,并记录写入时的计数器值为第三计数,此后运行过程中,获取当前计数器值并与第三计数比较,若增量大于所述预设缓冲深度,且无异常,执行后续步骤;
所述清除模块1105用于清除存储器中的该批次缓冲区的标志信息,并记录清除时的计数器值为第四计数,此后运行过程中,获取当前计数器值并与第三计数比较,若增量大于所述预设缓冲深度,且无异常,执行完成。
在现有技术中部分存储系统内设置缓存区,数据被提交至存储系统缓存后即反馈成功,此后缓存中的数据由存储系统按特定策略逐步实际写入存储介质。如果该过程中发生系统断电、存储介质连接断开等异常,缓存中尚未实际写入存储介质的数据将会丢失,通过本方案优化数据写入性能,在存在缓存数据丢失故障的存储系统中保证文件系统元数据一致性。
采用该方式进行文件系统元数据写入,可以有效鉴别文件系统元数据是否处于一致状态,并可将处于不一致状态的元数据恢复为一致状态,从而显著提升文件系统可靠性与稳定性。此外该方法写入放大倍率稳定,不改变文件系统元数据布局,有利于进行文件系统扫描与错误恢复。
可选地,在一些实施例中,还包括:多批次写入模块,用于当待更新元数据包括多个批次数据,设置多个批次缓冲区;
根据多个批次数据的关联关系,分别依次执行每个批次数据的一致性写入步骤;其中,在先批次数据先于在后批次数据完成一致性写入步骤。
可选地,在一些实施例中,还包括:一致性判断模块,用于读取所述已设置的批次缓冲区中的每一个缓冲区的有效标志;
当未识别到有效标志时,则所述文件系统的元数据处于一致状态,执行所述文件系统的后续访问;
当识别到有效标志时,则当前文件系统的元数据处于不一致状态,执行一致性恢复操作,当前文件系统的元数据恢复一致状态时,再进行所述文件系统的后续访问。
可选地,在一些实施例中,还包括:一致性恢复模块,用于通过每个包括有效标志的批次缓冲区的第一计数,对每个包括有效标志的批次缓冲区进行排序,获得排序结果;
根据排序结果将每个包括有效标志的批次缓冲区的数据块依次更新所述文件系统的元数据记录中,并替换对应的数据块,获取当前计量增量,计量增量大于所述预设缓冲深度,则无异常;
删除所有包括有效标志的批次缓冲区记录,获取当前计量增量,计量增量大于所述预设缓冲深度,则无异常,恢复所述文件系统的元数据的一致性。
可选地,在一些实施例中,还包括:缓存释放模块,用于释放所述已设置的批次缓冲区,供后续元数据写入使用。
在某一实施例中,文件系统元数据一致性写入实例:
(1)初始状态:文件系统完成初始化,提交计数为0,设置每个批次中至少包含15笔提交,预设缓存深度为3。初始状态时文件系统元数据未变更,如图5所示。
(2)在该批次所包含的提交计数范围(0-14)内,当进行元数据更新时,将更新所包含的所有数据变更首先提交写入批次缓冲区0。由于每次元数据更新的所有数据块保持一致状态,所以批次缓冲区0中所有数据块具有一致性,如图6所示。
(3)假设进行最后更新前提交计数为13,最后一笔更新包含3个提交,全部提交后计数为16,此时已经超过批次最少提交数量,记录批次缓冲区的最终提交计数16,并设置新的批次缓冲区1,将所有后续变更均提交写入至新的批次缓冲区1,如图7所示。
(4)此后继续向批次缓冲区中追加提交,后续3笔提交写入均提交至批次缓冲区1,如图8所示。
(5)此时提交计数距离批次缓冲区0的最终提交计数超过预设缓存深度,此时提交写入批次缓冲区0标志信息(包括有效标志及最终提交计数值)。但这笔提交是由于一致性算法所产生,而非元数据变更所产生,所以不记录至批次缓冲区1的提交计数,如图9所示。
(6)此后继续向批次缓冲区中追加提交,后续3笔提交写入均提交至批次缓冲区1,此时提交计数距离提交写入批次缓冲区0标志信息(包括有效标志及最终提交计数值)的提交计数超过预设缓存深度,此时将批次缓冲区0中的更改合并写入至元数据记录。并记录最后一笔提交的提交计数,既为合并提交计数,如图10所示。
(7)此后继续向批次缓冲区中追加提交,后续3笔提交写入均提交至批次缓冲区1,此时提交计数距离批次缓冲区0的合并提交计数超过预设缓存深度,此时清除该批次缓冲区的标志信息,并记录此次提交的提交计数,即为标志信息清除计数,如图11所示。
(8)此后继续向批次缓冲区中追加提交,后续3笔提交写入均提交至批次缓冲区1,此时距离清除批次缓冲区0中标志信息清除计数超过预设缓存深度,若不存在错误,则说明该批次缓冲区已经成功清除,该批次缓冲区空间重新回收利用。如果存在错误,则报错并停止后续写入。此时文件系统更新失败,但依旧可恢复至一致性状态。
在另一实施例中,文件系统元数据一致性判定方法:
步骤101读取所有批次缓冲区的有效标志
步骤102如果不存在任何有效标志,说明当前文件系统处于一致状态,可以正常执行后续访问。
如果存在有效标志,说明当前文件系统处于不一致状态,需要进行文件系统一致性恢复后方可进行后续访问。
在文件系统加载时,读取所有批次缓冲区的标志信息(包括有效标志及最终提交计数值),如果不存在任何有效标志,说明当前文件系统处于一致状态,可以正常执行后续访问。如果存在有效标志,说明当前文件系统处于不一致状态,需要进行文件系统一致性恢复后方可进行后续访问。
在另一实施例中,文件系统一致性恢复实例如下:
(1)初始状态:读取所有批次缓冲区的标志信息(包括有效标志及最终提交计数值),发现两个拥有有效标志的批次缓冲区。按照批次缓冲区最终提交计数进行排序。由于最终提交计数值A小于最终提交计数值B,所以先对最终提交计数值为A的批次缓冲区进行处理,如图12所示。
(2)将最终提交计数值为A的批次缓冲区中所有数据块合并至文件系统元数据记录,替换原有数据块,如图13所示。
(3)将最终提交计数值为B的批次缓冲区中所有数据块合并至文件系统元数据记录,替换原有数据块。
(4)删除所有批次缓冲区记录,文件系统元数据恢复至一致状态。
可以理解,在一些实施例中,可以包含如上述各实施例中的部分或全部可选实施方式。
需要说明的是,上述各实施例是与在先方法实施例对应的产品实施例,对于产品实施例中各可选实施方式的说明可以参考上述各方法实施例中的对应说明,在此不再赘述。
读者应理解,在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的方法实施例仅仅是示意性的,例如,步骤的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个步骤可以结合或者可以集成到另一个步骤,或一些特征可以忽略,或不执行。
上述方法如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种应对缓存数据丢失的元数据一致性写入方法,其特征在于,包括:
S1,设置计数器,设置预设缓冲深度;
S2,将待更新元数据写入已设置的批次缓冲区中,写入完成后记录最后一笔写入时的计数器值为第一计数;此后运行过程中,获取当前计数器值并与第一计数比较,若增量大于所述预设缓冲深度,且无异常,执行后续步骤;
S3,将所述待更新元数据的标志信息写入存储器,并记录写入时的计数器值为第二计数,此后运行过程中,获取当前计数器值并与第二计数比较,若增量大于所述预设缓冲深度,且无异常,执行后续步骤;
S4,将所述待更新元数据写入文件系统的元数据记录中,并记录写入时的计数器值为第三计数,此后运行过程中,获取当前计数器值并与第三计数比较,若增量大于所述预设缓冲深度,且无异常,执行后续步骤;
S5,清除存储器中的该批次缓冲区的标志信息,并记录清除时的计数器值为第四计数,此后运行过程中,获取当前计数器值并与第三计数比较,若增量大于所述预设缓冲深度,且无异常,执行完成。
2.根据权利要求1所述的一种应对缓存数据丢失的元数据一致性写入方法,其特征在于,还包括:
当待更新元数据包括多个批次数据,设置多个批次缓冲区;
根据多个批次数据的关联关系,分别依次执行每个批次数据的S1-S5步骤;其中,在先批次数据先于在后批次数据完成S1-S5步骤。
3.根据权利要求1所述的一种应对缓存数据丢失的元数据一致性写入方法,其特征在于,还包括:
读取所述已设置的批次缓冲区中的每一个缓冲区的有效标志;
当未识别到有效标志时,则所述文件系统的元数据处于一致状态,执行所述文件系统的后续访问;
当识别到有效标志时,则当前文件系统的元数据处于不一致状态,执行一致性恢复操作,当前文件系统的元数据恢复一致状态时,再进行所述文件系统的后续访问。
4.根据权利要求3所述的一种应对缓存数据丢失的元数据一致性写入方法,其特征在于,所述一致性恢复操作具体包括:
通过每个包括有效标志的批次缓冲区的第一计数对每个包括有效标志的批次缓冲区进行排序,获得排序结果;
根据排序结果将每个包括有效标志的批次缓冲区的数据块依次更新所述文件系统的元数据记录中,并替换对应的数据块;
删除所有包括有效标志的批次缓冲区记录,完成所述文件系统的元数据的一致性恢复。
5.根据权利要求1所述的一种应对缓存数据丢失的元数据一致性写入方法,其特征在于,S4之后还包括:
释放所述已设置的批次缓冲区,供后续元数据写入使用。
6.一种应对缓存数据丢失的元数据一致性写入系统,其特征在于,包括:设置模块、第一写入模块、第二写入模块、第三写入模块和清除模块;
所述设置模块用于设置计数器,设置预设缓冲深度;
所述第一写入模块用于将待更新元数据写入已设置的批次缓冲区中,写入完成后记录最后一笔写入时的计数器值为第一计数;此后运行过程中,获取当前计数器值并与第一计数比较,若增量大于所述预设缓冲深度,且无异常,执行后续步骤;
所述第二写入模块用于将所述待更新元数据的标志信息写入存储器,并记录写入时的计数器值为第二计数,此后运行过程中,获取当前计数器值并与第二计数比较,若增量大于所述预设缓冲深度,且无异常,执行后续步骤;
所述第三写入模块用于将所述待更新元数据写入文件系统的元数据记录中,并记录写入时的计数器值为第三计数,此后运行过程中,获取当前计数器值并与第三计数比较,若增量大于所述预设缓冲深度,且无异常,执行后续步骤;
所述清除模块用于清除存储器中的该批次缓冲区的标志信息,并记录清除时的计数器值为第四计数,此后运行过程中,获取当前计数器值并与第三计数比较,若增量大于所述预设缓冲深度,且无异常,执行完成。
7.根据权利要求6所述的一种应对缓存数据丢失的元数据一致性写入系统,其特征在于,还包括:多批次写入模块,用于当待更新元数据包括多个批次数据,设置多个批次缓冲区;
根据多个批次数据的关联关系,分别依次执行每个批次数据的一致性写入步骤;其中,在先批次数据先于在后批次数据完成一致性写入步骤。
8.根据权利要求6所述的一种应对缓存数据丢失的元数据一致性写入系统,其特征在于,还包括:一致性判断模块,用于读取所述已设置的批次缓冲区中的每一个缓冲区的有效标志;
当未识别到有效标志时,则所述文件系统的元数据处于一致状态,执行所述文件系统的后续访问;
当识别到有效标志时,则当前文件系统的元数据处于不一致状态,执行一致性恢复操作,当前文件系统的元数据恢复一致状态时,再进行所述文件系统的后续访问。
9.根据权利要求8所述的一种应对缓存数据丢失的元数据一致性写入系统,其特征在于,还包括:一致性恢复模块,用于通过每个包括有效标志的批次缓冲区的第一计数,对每个包括有效标志的批次缓冲区进行排序,获得排序结果;
根据排序结果将每个包括有效标志的批次缓冲区的数据块依次更新所述文件系统的元数据记录中,并替换对应的数据块;
删除所有包括有效标志的批次缓冲区记录,完成所述文件系统的元数据的一致性恢复。
10.根据权利要求6所述的一种应对缓存数据丢失的元数据一致性写入系统,其特征在于,还包括:缓存释放模块,用于释放所述已设置的批次缓冲区,供后续元数据写入使用。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211364152.0A CN115657956B (zh) | 2022-11-02 | 2022-11-02 | 一种应对缓存数据丢失的元数据一致性写入方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211364152.0A CN115657956B (zh) | 2022-11-02 | 2022-11-02 | 一种应对缓存数据丢失的元数据一致性写入方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115657956A CN115657956A (zh) | 2023-01-31 |
CN115657956B true CN115657956B (zh) | 2023-08-22 |
Family
ID=84994387
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211364152.0A Active CN115657956B (zh) | 2022-11-02 | 2022-11-02 | 一种应对缓存数据丢失的元数据一致性写入方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115657956B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103765373A (zh) * | 2013-10-18 | 2014-04-30 | 华为技术有限公司 | 数据存储方法、数据存储装置和存储设备 |
CN103902479A (zh) * | 2014-03-27 | 2014-07-02 | 浪潮电子信息产业股份有限公司 | 一种基于元数据日志的元数据缓存快速重建机制 |
WO2017087015A1 (en) * | 2015-11-19 | 2017-05-26 | Hewlett Packard Enterprise Development Lp | Count of metadata operations |
CN111414320A (zh) * | 2020-02-20 | 2020-07-14 | 上海交通大学 | 基于日志文件系统的非易失内存构建磁盘cache的方法及系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10691553B2 (en) * | 2015-12-16 | 2020-06-23 | Netapp, Inc. | Persistent memory based distributed-journal file system |
US11360942B2 (en) * | 2017-03-13 | 2022-06-14 | Wandisco Inc. | Methods, devices and systems for maintaining consistency of metadata and data across data centers |
-
2022
- 2022-11-02 CN CN202211364152.0A patent/CN115657956B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103765373A (zh) * | 2013-10-18 | 2014-04-30 | 华为技术有限公司 | 数据存储方法、数据存储装置和存储设备 |
CN103902479A (zh) * | 2014-03-27 | 2014-07-02 | 浪潮电子信息产业股份有限公司 | 一种基于元数据日志的元数据缓存快速重建机制 |
WO2017087015A1 (en) * | 2015-11-19 | 2017-05-26 | Hewlett Packard Enterprise Development Lp | Count of metadata operations |
CN111414320A (zh) * | 2020-02-20 | 2020-07-14 | 上海交通大学 | 基于日志文件系统的非易失内存构建磁盘cache的方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN115657956A (zh) | 2023-01-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10176190B2 (en) | Data integrity and loss resistance in high performance and high capacity storage deduplication | |
US5043871A (en) | Method and apparatus for database update/recovery | |
US7925925B2 (en) | Delta checkpoints for a non-volatile memory indirection table | |
CA2818472C (en) | Optimized startup verification of file system integrity | |
EP1503290A2 (en) | Transaction consistent copy-on-write database | |
CN107943414A (zh) | 嵌入式Linux的文件系统分区及数据读写方法 | |
CN107665219B (zh) | 一种日志管理方法及装置 | |
CN113515501B (zh) | 非易失性内存数据库管理系统恢复方法、装置和电子设备 | |
CN104516959A (zh) | 一种管理数据库日志的方法及装置 | |
WO2023116346A1 (zh) | 异常掉电下Trim数据的恢复方法、系统及固态硬盘 | |
KR20170054767A (ko) | 데이터베이스 관리 시스템 및 그의 데이터 변경 및 복구 방법 | |
CN111414320B (zh) | 基于日志文件系统的非易失内存构建磁盘cache的方法及系统 | |
US20140324782A1 (en) | Applying write elision | |
CN113821382B (zh) | 一种实时数据库数据处理方法、系统和设备 | |
CN114138192A (zh) | 存储节点在线升级方法、装置、系统及存储介质 | |
CN115657956B (zh) | 一种应对缓存数据丢失的元数据一致性写入方法和系统 | |
JP4757825B2 (ja) | ファイル管理装置、プログラム、コンピュータ読み取り可能な記録媒体 | |
US6854038B2 (en) | Global status journaling in NVS | |
WO2015057962A1 (en) | Concurrently accessing memory | |
CN115658624B (zh) | 一种应对系统不稳定时间区间的元数据写入方法和系统 | |
JPH06149485A (ja) | データ完結性保証処理方法 | |
JPH0816881B2 (ja) | データベース更新方法 | |
CN112214356A (zh) | 文件数据恢复方法、装置、计算机设备及存储介质 | |
CN111506458A (zh) | 一种提升f2fs文件系统事务性能的方法、模块及存储系统 | |
US20240176489A1 (en) | Priority based raid (redundant array of independent disks) rebuild for a data storage system |
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 |