CN110347527A - 一种校验和状态的判定方法、系统、装置及可读存储介质 - Google Patents

一种校验和状态的判定方法、系统、装置及可读存储介质 Download PDF

Info

Publication number
CN110347527A
CN110347527A CN201810283293.7A CN201810283293A CN110347527A CN 110347527 A CN110347527 A CN 110347527A CN 201810283293 A CN201810283293 A CN 201810283293A CN 110347527 A CN110347527 A CN 110347527A
Authority
CN
China
Prior art keywords
verification
data
memory
disk
checkout
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.)
Pending
Application number
CN201810283293.7A
Other languages
English (en)
Inventor
古亮
李诗逸
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sangfor Technologies Co Ltd
Original Assignee
Sangfor Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Sangfor Technologies Co Ltd filed Critical Sangfor Technologies Co Ltd
Priority to CN201810283293.7A priority Critical patent/CN110347527A/zh
Publication of CN110347527A publication Critical patent/CN110347527A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本申请公开了一种校验和状态的判定方法,借助内存这一高速缓存介质实时保存与数据对应的最新校验和,解决了硬盘保存时易出现的不同步现象,并根据校验和与对应数据间的映射关系检测数据是否更新,内存会保存最新校验和但却可能未能下发至本地磁盘,为防止磁盘中老旧的、错误的校验和在后续数据完整性检验过程中被使用,通过向其附加失效标志的方式提醒后续处理步骤。该判定方法能够从源头上防止使用错误校验和事件的再发生,即在检测到存在该失效标志后就不再执行后续处理步骤,可以节省大量时间和计算性能,提升了工作效率。本申请还同时公开了一种校验和状态的判定系统、装置及计算机可读存储介质,具有上述有益效果。

Description

一种校验和状态的判定方法、系统、装置及可读存储介质
技术领域
本申请涉及数据完整性保护技术领域,特别涉及一种校验和状态的判定方法、系统、装置及计算机可读存储介质。
背景技术
保持数据的完整性是现代存储系统中最重要的职责,为尽可能完善这一机制,不断有各式相关技术被开发和应用于增强或改进这一机制,其中目前常用的且较为成熟的方法为利用校验和来完成数据完整性的校验。
校验和是从由数据块导出的小块基准,用于检测该数据块是否在传输或存储期间引入或发生了错误,通常情况下不对数据的真实性做判别。利用校验和来完成数据完整性的校验原理为:利用校验和生成算法为写入的数据计算得到一个校验和,而该校验和还用于与在实际读取该数据时重新生成的另一校验和进行比对,仅当两者一致时才能说明数据通过了完整性校验。
现有技术使用本地磁盘保存该数据与对应的校验和,依据上述校验原理,保存在本地磁盘的校验和应随数据的改变进行更新,但由于校验和本身也会出现各式错误,以及借助本地磁盘进行保存时在固有存储机制的限制下在写入过程会出现数据的写入与校验和的写入不同步的现象,以及很多系统中存在的并发IO特性(诸如分布式存储系统)更是放大了这一问题,该问题的出现会因产生的不同步现象而出现时间差,而该时间差的出现则会导致使用错误的校验和进行数据完整性校验事件的发生。现有技术中并未针对此种情况提供一个行之有效的解决方案,无疑会在校验和源头错误的情况下浪费大量不必要的时间和计算性能。
因此,如何针对现有基于校验和的数据完整性保护方案存在的技术缺陷,提供一种能够有效判断已保存磁盘校验和状态的、方案更科学有效的数据完整性保护方法是本领域技术人员亟待解决的问题。
发明内容
本申请的目的是提供一种校验和状态的判定方法,通过在检测到数据更新时向旧的磁盘校验和附加失效标志,使得在检测到存在该失效标志后就不再执行后续处理步骤,可以节省大量时间和计算性能,提升了工作效率。
本申请的另一目的在于提供了一种校验和状态的判定系统、装置及计算机可读存储介质。
为实现上述目的,本申请提供一种校验和状态的判定方法,该判定方法包括:
根据每次写入的数据计算得到对应的校验和,并将所述校验和缓存至内存,得到内存校验和;其中,所述内存校验和与对应的数据存在映射关系;
根据所述映射关系判断所述内存校验和对应的数据是否执行了数据更新操作;
若执行了所述数据更新操作,则向执行了所述数据更新操作的数据对应的磁盘校验和附加失效标志;其中,所述磁盘校验和为已保存至磁盘的校验和。
可选的,在根据所述映射关系判断所述内存校验和对应的数据是否执行了数据更新操作之前,还包括:
根据预设校验和组合规则将预设数量的内存校验和进行组合,得到内存校验和组。
可选的,根据所述映射关系判断所述内存校验和对应的数据是否执行了数据更新操作,包括:
根据所述映射关系判断所述内存校验和组对应的数据是否执行了所述数据更新操作。
可选的,根据所述映射关系判断所述内存校验和组对应的数据是否执行了所述数据更新操作,包括:
根据所述映射关系获取所述内存校验和组对应数据的数据更新次数;
根据所述数据更新次数判断对应数据是否仅进行了首次更新。
可选的,若执行了所述数据更新操作,则向执行了所述数据更新操作的数据对应的磁盘校验和附加失效标志,包括:
若所述数据仅执行了首次更新,则向所述数据对应的磁盘校验和附加所述失效标志。
可选的,该判定方法还包括:
将缓存至所述内存中的内存校验和每隔预设时间间隔通过预设下发路径回刷至所述磁盘,得到最新磁盘校验和;
利用所述最新磁盘校验和覆盖对应的原磁盘校验和。
为实现上述目的,本申请还提供了一种校验和状态的判定系统,该判定系统包括:
校验和生成及缓存单元,用于根据每次写入的数据计算得到对应的校验和,并将所述校验和缓存至内存,得到内存校验和;其中,所述内存校验和与对应的数据存在映射关系;
更新操作执行判定单元,用于根据所述映射关系判断所述内存校验和对应的数据是否执行了数据更新操作;
失效标志附加单元,用于当执行了所述数据更新操作时,向执行了所述数据更新操作的数据对应的磁盘校验和附加失效标志;其中,所述磁盘校验和为已保存至磁盘的校验和。
可选的,该判定系统还包括:
内存校验和组合单元,用于根据预设校验和组合规则将预设数量的内存校验和进行组合,得到内存校验和组。
可选的,所述更新操作执行判定单元包括:
校验和组更新操作判定子单元,用于根据所述映射关系判断所述内存校验和组对应的数据是否执行了所述数据更新操作。
可选的,所述校验和组更新操作判定子单元包括:
数据更新次数获取模块,用于根据所述映射关系获取所述内存校验和组对应数据的数据更新次数;
首次更新判别模块,用于根据所述数据更新次数判断对应数据是否仅进行了首次更新。
可选的,所述失效标志附加单元包括:
首次更新处理子单元,用于当所述数据仅执行了首次更新时,向所述数据对应的磁盘校验和附加所述失效标志。
可选的,该判定系统还包括:
校验和回刷单元,用于将缓存至所述内存中的内存校验和每隔预设时间间隔通过预设下发路径回刷至所述磁盘,得到最新磁盘校验和;
磁盘校验和更新单元,用于利用所述最新磁盘校验和覆盖对应的原磁盘校验和。
为实现上述目的,本申请还提供了一种校验和状态的判定装置,该判定装置包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上述内容所描述的校验和状态的判定方法的步骤。
为实现上述目的,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述内容所描述的校验和状态的判定方法的步骤。
本申请所提供的一种校验和状态的判定方法:根据每次写入的数据计算得到对应的校验和,并将所述校验和缓存至内存,得到内存校验和;其中,所述内存校验和与对应的数据存在映射关系;根据所述映射关系判断所述内存校验和对应的数据是否执行了数据更新操作;若执行了所述数据更新操作,则向执行了所述数据更新操作的数据对应的磁盘校验和附加失效标志;其中,所述磁盘校验和为已保存至磁盘的校验和。
显然,本申请所提供的技术方案,借助内存这一高速缓存介质实时保存与数据对应的最新校验和,解决了硬盘保存时易出现的不同步现象,并根据校验和与对应数据间的映射关系检测数据是否更新,内存会保存最新校验和但却可能未能下发至本地磁盘,为防止磁盘中老旧的、错误的校验和在后续数据完整性检验过程中被使用,通过向其附加失效标志的方式提醒后续处理步骤。该判定方法能够从源头上防止使用错误校验和事件的再发生,即在检测到存在该失效标志后就不再执行后续处理步骤,可以节省大量时间和计算性能,提升了工作效率。本申请同时还提供了一种校验和状态的判定系统、装置及计算机可读存储介质,具有上述有益效果,在此不再赘述。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例所提供的一种校验和状态的判定方法的流程图;
图2为本申请实施例所提供的另一种校验和状态的判定方法的流程图;
图3为本申请实施例所提供的一种校验和状态的判定系统的结构框图;
图4为本申请实施例所提供的一种基于valid标志的校验和状态的判定方法的写入过程示意图;
图5为本申请实施例所提供的一种基于valid标志的校验和状态的读取过程示意图。
具体实施方式
本申请的核心是提供一种校验和状态的判定方法、系统、装置及计算机可读存储介质,借助内存这一高速缓存介质实时保存与数据对应的最新校验和,解决了硬盘保存时易出现的不同步现象,并根据校验和与对应数据间的映射关系检测数据是否更新,内存会保存最新校验和但却可能未能下发至本地磁盘,为防止磁盘中老旧的、错误的校验和在后续数据完整性检验过程中被使用,通过向其附加失效标志的方式提醒后续处理步骤。该判定方法能够从源头上防止使用错误校验和事件的再发生,即在检测到存在该失效标志后就不再执行后续处理步骤,可以节省大量时间和计算性能,提升了工作效率。
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
以下结合图1,图1为本申请实施例所提供的一种校验和状态的判定方法的流程图。
其具体包括以下步骤:
S101:根据每次写入的数据计算得到对应的校验和,并将校验和缓存至内存,得到内存校验和;其中,内存校验和与对应的数据存在映射关系;
本步骤旨在利用内存这一高速缓存介质来保存计算得到的校验和。内存区别于大容量的本地磁盘的特点为:存储容量小、读写速度快且断电后数据易失。
在数据量级成爆炸性增长的今天,分布式存储由于其能够进行超大容量数据存储的特性逐渐被广泛应用,但需要知道的是,实现分布式存储的基础是由多个存储设备共同组建的分布式存储网络,在网络中连接不同存储设备(节点)的链路很多,因此会存在并发访问的特性,当然,不止分布式存储系统才存在并发访问的特性,但是一旦存在并发访问特性,在并发IO下易出现无法使用不同步存储的最新校验和正常进行数据完整性的校验,即使用了老旧的、错误的校验和对基于更新后数据重新生成的校验和进行比对,结果当然是错误。
为解决上述问题,本申请旨在借助内存这一高速缓存介质实时保存与数据对应的最新校验和,由于内存通常采用的是高速闪存芯片,设计用途本就用于数据的高速读写,因此能够解决直接采用硬盘保存时易出现的不同步现象,实现数据与对应校验和的同步存储。同时由于保存至内存的校验和是基于某个写入数据计算得到的,其两者之间必然存在一个映射(对应)关系,可以在实际使用过程中根据该映射关系判断该数据是否在后续过程中执行了更新,并在执行了更新操作后将重新生成的最新校验和实时保存在内存中。这样即使因断电等特殊情况也不会因为内存中最新的校验和未及时回刷至磁盘而导致误判现象的发生。
进一步的,缓存至内存的校验和最终还是需要借助磁盘这一载体对数据进行持久化保存,因为内存中保存的数据在设备断电时就会清空,将内存中保存的校验和转移保存至磁盘的过程可以被称为回刷操作,即将内存校验和回刷至磁盘中进行持久化保存。其中,如何执行回刷操作、执行回刷操作的触发条件、每隔多长时间执行一次回刷操作等具体参数均可以根据实际情况自行灵活设定,例如可采用固定周期的回刷操作执行方式,每隔10S将当前周期内内存中保存的校验和统一回刷至磁盘;也可以采用固定数据大小的方式回刷操作执行方式,每当内存中保存的校验和总大小足够4KB时,就执行一次回刷操作等等,此处并不对具体的实现方式进行限定,可视实际情况结合自身特殊要求选择最符合自身利益的回刷操作执行方式。
S102:根据映射关系判断内存校验和对应的数据是否执行了数据更新操作;
在S101的基础上,本步骤旨在判断内存校验和对应的数据是否执行了数据更新操作。因为校验和是基于数据本身计算得到的,类似于哈希算法计算得到特征值的方式,该校验和拥有与特征值一样的特性:与对应数据之间存在唯一的对应关系,即当对应数据执行更新操作后,会在使用相同的校验和生成算法的基础上计算得到一个新的对应的校验和,同时原校验和就不能够用于校验更新后数据的数据完整性,因为原校验和与新数据之间已经不存在这一对应关系。
这一对应关系可以通过如下例子进行理解:当原数据为A时,利用校验和生成算法D计算得到A对应的校验和B,此时A与B之间存在如上述的对应关系,当将B保存至内存中成为内存校验和后这一对应关系仍然存在,而能够体现出这一对应关系可以为一个同源的标签,该标签同时附加在A和B中。当A因各种原因发生改变成为A’,利用D计算得到对应的校验和C,此时A’与C之间存在新的对应关系,同时这两者之间附加的标签也会体现出A’是由A发生改变得到的,因此在将C保存至内存中时就可以根据该新标签确定B为A’改变前的A对应的校验和,即B已经不是最新的,应使用新的校验和C覆盖B,只将最新的校验和保存在内存中,因为保存旧的校验和的意义不大,还可能为误判埋下隐患。
由于保存在内存中的校验和均为最新的校验和,第一时间内这些最新的校验和可能还未被回刷至磁盘,而一旦数据发生改变,磁盘中已保存的老旧校验和已经不能够用于后续的数据完整性校验步骤,因此需要本步骤对数据是否执行了更新操作进行判别。进一步的,不管这个数据在对应的最新校验和保存至磁盘之前执行了多少次更新操作,只要其执行过一次更新操作,就足以判定磁盘中保存的校验和为老旧的校验和,因此可以只对其进行是否仅执行了首次更新的判别来得到与上述判别方式相同的判断结果。
S103:磁盘中保存的磁盘校验和已为最新的校验和;
本步骤建立在S102的判断结果为内存校验和对应的数据未执行数据更新操作的基础上,说明该数据没有发生改变,那么磁盘中已保存的磁盘校验和也就是最新的校验和,也就依然可以使用磁盘中已保存的磁盘校验和完成后续的数据完整性校验。
S104:向执行了数据更新操作的数据对应的磁盘校验和附加失效标志;其中,磁盘校验和为已保存至磁盘的校验和。
本步骤建立在S102的判断结果为内存校验和对应的数据执行了数据更新操作的基础上,说明该数据已经因各种原因发生了改变,那么磁盘中已保存的磁盘校验和在该数据发生改变的那一刻已经不是最新的,为防止后续处理过程中误使用老旧的磁盘校验和,本步骤向老旧的磁盘校验和附加失效标志,以提醒后续处理步骤不能使用附加有该失效标志的老旧磁盘校验和执行后续处理操作。由于命令返回的固有机制限制,因此不能向附加失效标志一样简单的将最新生成的校验和回刷至磁盘中进行保存或替代老旧的磁盘校验和。
因此本申请旨在于数据发生改变的那一刻向老旧的磁盘校验和附加失效标志,以防止使用老旧的磁盘校验和对改变后数据执行数据完整性校验操作。
进一步的,还可以根据预设的校验和组合规则将多个内存校验和变为一个校验和组,之所以这么做是因为通常情况下一个数据文件在利用校验和生成算法得到校验和时需要将该数据文件拆分为一个个最小数据块,并根据每个数据块对应得到校验和,最终将各校验和借助特定的规则得到该数据文件对应的校验和,而由于有时数据文件的更改只是更改了某个数据块上的一些数据,其它完全没有变化时,借助校验和组的方式可以减少各校验和的生成数量,只需将改变的数据块的校验和重新计算得到,再将各校验和借助该特定的规则得到更改后数据文件对应的校验和即可。
基于上述技术方案,本申请实施例提供的一种校验和状态的判定方法,借助内存这一高速缓存介质实时保存与数据对应的最新校验和,解决了硬盘保存时易出现的不同步现象,并根据校验和与对应数据间的映射关系检测数据是否更新,内存会保存最新校验和但却可能未能下发至本地磁盘,为防止磁盘中老旧的、错误的校验和在后续数据完整性检验过程中被使用,通过向其附加失效标志的方式提醒后续处理步骤。该判定方法能够从源头上防止使用错误校验和事件的再发生,即在检测到存在该失效标志后就不再执行后续处理步骤,可以节省大量时间和计算性能,提升了工作效率。
以下结合图2,图2为本申请实施例所提供的另一种校验和状态的判定方法的流程图。
本步骤旨在针对实施例一提供一种具体的实现方式,具体包括以下步骤:
S201:根据每次写入的数据计算得到对应的校验和,并将校验和缓存至内存,得到内存校验和;其中,内存校验和与对应的数据存在映射关系;
本步骤与S101相同,可以参见实施例一对S101的描述内容,在此不再赘述。
S202:根据预设校验和组合规则将预设数量的内存校验和进行组合,得到内存校验和组;
本步骤旨在根据预设校验和组合规则将预设数量的内存校验和进行组合,得到内存校验和组。其中,该预设校验和组合规则可以是在S104中描述的规则,也可以是基于其它特殊要求诞生的组合规则,其区别多个校验和单独存在的方式应在特殊的应用场景下更适合使用,增加效率,节省计算步骤。
S203:根据所述映射关系获取所述内存校验和组对应数据的数据更新次数;
S204:根据所述数据更新次数判断对应数据是否仅进行了首次更新;
S203和S204旨在根据数据的数据更新次数判别是否仅进行了首次更新,因为是否进行了首次更新也就意味着该数据是否进行了更新,并不在乎更新了多少次,因为只要进行了更新,原磁盘校验和就不能被后续流程使用。
S205:磁盘中保存的磁盘校验和已为最新的校验和;
S206:向所述数据对应的磁盘校验和附加所述失效标志;
S207:将缓存至所述内存中的内存校验和每隔预设时间间隔通过预设下发路径回刷至所述磁盘,得到最新磁盘校验和;
S208:利用所述最新磁盘校验和覆盖对应的原磁盘校验和。
S207和S208两步骤用于阐述如何执行回刷操作以将最新的校验和从内存中转移至磁盘中进行持久化保存,并同时替代老旧的磁盘校验和,使其在该数据未再次发生改变前能够用于进行数据完整性的校验。
其中,该预设时间间隔、预设下发路径均可以视实际情况选择和设定,此处并不做具体限定。
基于上述技术方案,本申请实施例提供的一种校验和状态的判定方法,借助内存这一高速缓存介质实时保存与数据对应的最新校验和,解决了硬盘保存时易出现的不同步现象,并根据校验和与对应数据间的映射关系检测数据是否更新,内存会保存最新校验和但却可能未能下发至本地磁盘,为防止磁盘中老旧的、错误的校验和在后续数据完整性检验过程中被使用,通过向其附加失效标志的方式提醒后续处理步骤。该判定方法能够从源头上防止使用错误校验和事件的再发生,即在检测到存在该失效标志后就不再执行后续处理步骤,可以节省大量时间和计算性能,提升了工作效率。
因为情况复杂,无法一一列举进行阐述,本领域技术人员应能意识到根据本申请提供的基本方法原理结合实际情况可以存在很多的例子,在不付出足够的创造性劳动下,应均在本申请的保护范围内。
下面请参见图3,图3为本申请实施例所提供的一种校验和状态的判定系统的结构框图。
该判定系统可以包括:
校验和生成及缓存单元100,用于根据每次写入的数据计算得到对应的校验和,并将校验和缓存至内存,得到内存校验和;其中,内存校验和与对应的数据存在映射关系;
更新操作执行判定单元200,用于根据映射关系判断内存校验和对应的数据是否执行了数据更新操作;
失效标志附加单元300,用于当执行了数据更新操作时,向执行了数据更新操作的数据对应的磁盘校验和附加失效标志;其中,磁盘校验和为已保存至磁盘的校验和。
进一步的,该判定系统还可以包括:
内存校验和组合单元,用于根据预设校验和组合规则将预设数量的内存校验和进行组合,得到内存校验和组。
其中,更新操作执行判定单元200包括:
校验和组更新操作判定子单元,用于根据映射关系判断内存校验和组对应的数据是否执行了数据更新操作。
其中,校验和组更新操作判定子单元包括:
数据更新次数获取模块,用于根据映射关系获取内存校验和组对应数据的数据更新次数;
首次更新判别模块,用于根据数据更新次数判断对应数据是否仅进行了首次更新。
其中,失效标志附加单元300包括:
首次更新处理子单元,用于当数据仅执行了首次更新时,向数据对应的磁盘校验和附加失效标志。
进一步的,该判定系统还可以包括:
校验和回刷单元,用于将缓存至内存中的内存校验和每隔预设时间间隔通过预设下发路径回刷至磁盘,得到最新磁盘校验和;
磁盘校验和更新单元,用于利用最新磁盘校验和覆盖对应的原磁盘校验和。
基于上述系统的内容,以下通过一个具体的例子进行详细描述:
本实施例在写入校验和时,并不立即把校验和写下去,而是通过写invalid(失效)标志使底层校验和(磁盘校验和)无效,同时把校验和缓存在内存中,等之后再一起刷回。缓存和底层会把多个校验和组织在一起,叫做校验和组,每个缓存中的校验和组都会映射到底层。只要这个校验和组对应的数据进行了更新,就会判断是否为该校验和组对应数据的第一次更新,如果是的话,就需要刷invalid标志到底层的校验和组;否则就不用。如果一个校验和组是附加有invalid标志的,那么就说明其是旧的,而最新的校验数据在保存在内存。这样即使因断电等特殊情况也不会因为内存中最新的校验和未及时回刷至磁盘而导致误判现象的发生。同时借助第一个更新的invalid标志刷回和定时的批量回刷操作来大大减少每次数据更新的校验和更新。
具体的,图4为本申请实施例所提供的一种基于valid标志的校验和状态的判定方法的写入过程示意图:客户端/用户发下来的写请求,用需要写入的数据块d去生成校验和c。根据数据块d的位置计算对应的校验和组g,g=d/m。m是一个校验和组对应的数据区大小。每个校验和组由m/k个校验和加上大小为n的元数据区构成。其中k是生成校验和的数据单元,一般是4KB。元数据区n中有一个valid(有效状态判别)标志,如果磁盘校验和数据和内存校验和数据一致的话,valid_flag=1,否则valid_flag=0。当一个写请求到来时,先判断valid_flag,如果valid_flag=1,那么就会令valid_flag=0,同时把它刷到底层磁盘,然后在写返回时更新校验和内存校验和组中。而如果valid_flag=0,就只需要在写返回时更新校验和到内存校验和组中。系统会有一个刷回的守护线程来定时批量刷回校验和组,刷回线程只会刷回valid_flag=0的校验和组,并在刷回的同时把valid_flag置为1。
图5为本申请实施例所提供的一种基于valid标志的校验和状态的读取过程示意图:用户执行读取d操作,系统会从对应的磁盘/SSD上读取数据并向上返回。在返回时,需要用数据块d去生成校验和,并用之前存储在校验和中的校验和进行验证。根据数据块d的位置计算对应的校验和组g,g=d/m。然后从该校验和组中读取d%m对应位置的校验和c’,然后进行比较,如果c=c’,说明数据正确,就返回该数据给用户。否则,说明数据出错,需要触发修复。但如果该校验所对应的校验和组并不在内存中,就需要从底层磁盘进行读取。而从底层磁盘读取上来的校验和组可能存在两种状态,一种是valid_flag=0的状态,即该校验和组是旧的过时的,那么就需要把该校验和组中的数据都清零,然后把c’更新到该校验和组中。而另一个是valid_flag=1的状态,即该校验和组和数据是一致的,那么就用对应位置的校验和去进行验证,就像内存校验和组的验证一样。
由此可见,本实施例通过引入校验和组概念、实现首次更新校验和组刷回valid_flag标志和定时刷回校验和组的更新流程,可以有效检测和避免校验和误判,并大大减少每次数据更新带来的校验和更新操作,从而提高性能。
基于上述实施例,本申请还提供了一种校验和状态的判定装置,可以包括存储器和处理器,其中,该存储器中存有计算机程序,该处理器调用该存储器中的计算机程序时,可以实现上述实施例所提供的步骤。当然该判定装置还可以包括各种必要的网络接口、电源以及其它零部件等。
本申请还提供了一种计算机可读存储介质,其上存有计算机程序,该计算机程序被执行终端或处理器执行时可以实现上述实施例所提供的步骤。该存储介质可以包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random AccessMemory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其它变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其它要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。

Claims (14)

1.一种校验和状态的判定方法,其特征在于,包括:
根据每次写入的数据计算得到对应的校验和,并将所述校验和缓存至内存,得到内存校验和;其中,所述内存校验和与对应的数据存在映射关系;
根据所述映射关系判断所述内存校验和对应的数据是否执行了数据更新操作;
若执行了所述数据更新操作,则向执行了所述数据更新操作的数据对应的磁盘校验和附加失效标志;其中,所述磁盘校验和为已保存至磁盘的校验和。
2.根据权利要求1所述的判定方法,其特征在于,在根据所述映射关系判断所述内存校验和对应的数据是否执行了数据更新操作之前,还包括:
根据预设校验和组合规则将预设数量的内存校验和进行组合,得到内存校验和组。
3.根据权利要求2所述的判定方法,其特征在于,根据所述映射关系判断所述内存校验和对应的数据是否执行了数据更新操作,包括:
根据所述映射关系判断所述内存校验和组对应的数据是否执行了所述数据更新操作。
4.根据权利要求3所述的判定方法,其特征在于,根据所述映射关系判断所述内存校验和组对应的数据是否执行了所述数据更新操作,包括:
根据所述映射关系获取所述内存校验和组对应数据的数据更新次数;
根据所述数据更新次数判断对应数据是否仅进行了首次更新。
5.根据权利要求1所述的判定方法,其特征在于,若执行了所述数据更新操作,则向执行了所述数据更新操作的数据对应的磁盘校验和附加失效标志,包括:
若所述数据仅执行了首次更新,则向所述数据对应的磁盘校验和附加所述失效标志。
6.根据权利要求1至5任一项所述的判定方法,其特征在于,还包括:
将缓存至所述内存中的内存校验和每隔预设时间间隔通过预设下发路径回刷至所述磁盘,得到最新磁盘校验和;
利用所述最新磁盘校验和覆盖对应的原磁盘校验和。
7.一种校验和状态的判定系统,其特征在于,包括:
校验和生成及缓存单元,用于根据每次写入的数据计算得到对应的校验和,并将所述校验和缓存至内存,得到内存校验和;其中,所述内存校验和与对应的数据存在映射关系;
更新操作执行判定单元,用于根据所述映射关系判断所述内存校验和对应的数据是否执行了数据更新操作;
失效标志附加单元,用于当执行了所述数据更新操作时,向执行了所述数据更新操作的数据对应的磁盘校验和附加失效标志;其中,所述磁盘校验和为已保存至磁盘的校验和。
8.根据权利要求7所述的判定系统,其特征在于,还包括:
内存校验和组合单元,用于根据预设校验和组合规则将预设数量的内存校验和进行组合,得到内存校验和组。
9.根据权利要求8所述的判定系统,其特征在于,所述更新操作执行判定单元包括:
校验和组更新操作判定子单元,用于根据所述映射关系判断所述内存校验和组对应的数据是否执行了所述数据更新操作。
10.根据权利要求9所述的判定系统,其特征在于,所述校验和组更新操作判定子单元包括:
数据更新次数获取模块,用于根据所述映射关系获取所述内存校验和组对应数据的数据更新次数;
首次更新判别模块,用于根据所述数据更新次数判断对应数据是否仅进行了首次更新。
11.根据权利要求7所述的判定系统,其特征在于,所述失效标志附加单元包括:
首次更新处理子单元,用于当所述数据仅执行了首次更新时,向所述数据对应的磁盘校验和附加所述失效标志。
12.根据权利要求7至11任一项所述的判定系统,其特征在于,还包括:
校验和回刷单元,用于将缓存至所述内存中的内存校验和每隔预设时间间隔通过预设下发路径回刷至所述磁盘,得到最新磁盘校验和;
磁盘校验和更新单元,用于利用所述最新磁盘校验和覆盖对应的原磁盘校验和。
13.一种校验和状态的判定装置,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至6任一项所述的校验和状态的判定方法的步骤。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述的校验和状态的判定方法的步骤。
CN201810283293.7A 2018-04-02 2018-04-02 一种校验和状态的判定方法、系统、装置及可读存储介质 Pending CN110347527A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810283293.7A CN110347527A (zh) 2018-04-02 2018-04-02 一种校验和状态的判定方法、系统、装置及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810283293.7A CN110347527A (zh) 2018-04-02 2018-04-02 一种校验和状态的判定方法、系统、装置及可读存储介质

Publications (1)

Publication Number Publication Date
CN110347527A true CN110347527A (zh) 2019-10-18

Family

ID=68173616

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810283293.7A Pending CN110347527A (zh) 2018-04-02 2018-04-02 一种校验和状态的判定方法、系统、装置及可读存储介质

Country Status (1)

Country Link
CN (1) CN110347527A (zh)

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09282237A (ja) * 1996-04-19 1997-10-31 Fujitsu General Ltd Eepromを用いた記憶装置
JPH09326172A (ja) * 1996-06-06 1997-12-16 Sony Corp 記録再生データ伝送方法及び装置
US6412092B1 (en) * 1999-04-14 2002-06-25 Hewlett-Packard Company Method and apparatus to reduce the cost of preparing the checksum for out bound data in network communication protocols by caching
US20020091938A1 (en) * 1999-05-18 2002-07-11 Matti Hiltunen Method and device for authenticating locally-stored program code
US20030081468A1 (en) * 2001-09-28 2003-05-01 Claus-Peter Kubiak Method and device for backing up data in a memory module and memory module
US20030131280A1 (en) * 2002-01-04 2003-07-10 Gittins Robert S. Method and apparatus for facilitating validation of data retrieved from disk
US20090276476A1 (en) * 2008-05-05 2009-11-05 Chris Jolly Peer-to-peer data archiving and retrieval system
JP2010191594A (ja) * 2009-02-17 2010-09-02 Nec Corp データ検証装置、データの正当性検証方法、及びプログラム
US20100246669A1 (en) * 2009-03-25 2010-09-30 Syclipse Technologies, Inc. System and method for bandwidth optimization in data transmission using a surveillance device
US20140040698A1 (en) * 2012-08-06 2014-02-06 Advanced Micro Devices, Inc. Stacked memory device with metadata mangement

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09282237A (ja) * 1996-04-19 1997-10-31 Fujitsu General Ltd Eepromを用いた記憶装置
JPH09326172A (ja) * 1996-06-06 1997-12-16 Sony Corp 記録再生データ伝送方法及び装置
US6412092B1 (en) * 1999-04-14 2002-06-25 Hewlett-Packard Company Method and apparatus to reduce the cost of preparing the checksum for out bound data in network communication protocols by caching
US20020091938A1 (en) * 1999-05-18 2002-07-11 Matti Hiltunen Method and device for authenticating locally-stored program code
US20030081468A1 (en) * 2001-09-28 2003-05-01 Claus-Peter Kubiak Method and device for backing up data in a memory module and memory module
US20030131280A1 (en) * 2002-01-04 2003-07-10 Gittins Robert S. Method and apparatus for facilitating validation of data retrieved from disk
US20090276476A1 (en) * 2008-05-05 2009-11-05 Chris Jolly Peer-to-peer data archiving and retrieval system
JP2010191594A (ja) * 2009-02-17 2010-09-02 Nec Corp データ検証装置、データの正当性検証方法、及びプログラム
US20100246669A1 (en) * 2009-03-25 2010-09-30 Syclipse Technologies, Inc. System and method for bandwidth optimization in data transmission using a surveillance device
US20140040698A1 (en) * 2012-08-06 2014-02-06 Advanced Micro Devices, Inc. Stacked memory device with metadata mangement

Similar Documents

Publication Publication Date Title
CN102567242B (zh) 执行同时读取与写入存储器操作的方法及设备
US20080052488A1 (en) Method for a Hash Table Lookup and Processor Cache
CN110352407A (zh) 纠错码存储器
CN105843749B (zh) 一种基于FPGA的NAND Flash容错方法
US7844422B2 (en) Method and system for changing a description for a state transition function of a state machine engine
CN106325773B (zh) 一种存储系统数据的一致性保障方法、系统及缓存装置
US8095831B2 (en) Programmable error actions for a cache in a data processing system
KR20110025188A (ko) 스토어 할당 캐시 미스에서 에러 복구를 위한 스토어 버퍼 사용
KR20100115818A (ko) 스프레드시트 셀들을 위한 동적 수식들
CN103150125A (zh) 提高掉电保护数据缓冲存储器使用寿命的方法及智能卡
CN108899061A (zh) 一种电源常开芯片中的存储器内建自测试方法和系统
CN106909318A (zh) 固态硬盘使用方法及装置
CN103455281B (zh) 由单端口存储器块实现的两端口存储器
CN106020735A (zh) 一种数据存储方法及数据存储装置
CN107111534A (zh) 一种数据处理的方法和装置
CN106024066A (zh) 一种sram的检测方法及系统
CN108959125A (zh) 一种支持数据快速获取的存储访问方法和装置
CN113760187B (zh) 重删io线程生成方法、系统、终端及存储介质
CN108763106B (zh) 一种基于交叉存储的Cache实现方法
CN110347527A (zh) 一种校验和状态的判定方法、系统、装置及可读存储介质
CN110348245A (zh) 基于nvm的数据完整性保护方法、系统、装置及存储介质
CN111341374B (zh) 存储器的测试方法、装置及可读存储器
CN207557929U (zh) 可用于实现容错功能的小容量otprom存储器及芯片
CN109829083A (zh) Spd数据自动验证方法、装置、计算机设备及存储介质
CN112464500B (zh) 备份cell替换电路验证方法、装置、存储介质和终端

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
RJ01 Rejection of invention patent application after publication

Application publication date: 20191018

RJ01 Rejection of invention patent application after publication