CN110955545B - 一种数据完整性校验方法、系统及相关设备 - Google Patents

一种数据完整性校验方法、系统及相关设备 Download PDF

Info

Publication number
CN110955545B
CN110955545B CN201811124530.1A CN201811124530A CN110955545B CN 110955545 B CN110955545 B CN 110955545B CN 201811124530 A CN201811124530 A CN 201811124530A CN 110955545 B CN110955545 B CN 110955545B
Authority
CN
China
Prior art keywords
target data
checksum
data
client
aligned
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
Application number
CN201811124530.1A
Other languages
English (en)
Other versions
CN110955545A (zh
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 CN201811124530.1A priority Critical patent/CN110955545B/zh
Publication of CN110955545A publication Critical patent/CN110955545A/zh
Application granted granted Critical
Publication of CN110955545B publication Critical patent/CN110955545B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本发明实施例提供了一种数据完整性校验方法、系统及相关设备,根据保存在客户端中的校验和实现数据完整性的校验,可以有效节约系统资源,降低误判率。实施例方法包括:当接收到目标数据的写请求时,根据目标数据写入的内存地址判断目标数据是否为对齐的数据;若目标数据为非对齐的数据,则根据目标数据的内存地址识别目标数据中非对齐数据块及对齐数据块;根据预置算法生成对齐数据块的第一类校验和,及目标数据的非对齐数据块的第二类校验和;将目标数据对应的所有校验和存储在客户端;当接收到读取目标数据的指令时,采用对齐读取的方式重新读取目标数据;根据客户端保存的目标数据对应的所有校验和对重新读取到的目标数据的完整性进行校验。

Description

一种数据完整性校验方法、系统及相关设备
技术领域
本发明涉及数据存储技术领域,尤其涉及一种数据完整性校验方法、系统及相关设备。
背景技术
保持数据完整性是现代存储系统最重要的职责,因此有各种各样的技术被开发和应用来改进数据完整性校验。
其中最常用,最受欢迎的就是校验和方法。传统的针对存储系统的校验和方法一般在原数据写入的时候计算校验和,并将校验和与数据存储在一起,当再次读取的时候重新计算的校验和,通过两次计算的校验和的一致性进行数据完整性判断。
现有方案校验和与原数据需要存储在一起,校验和需要随原数据的转移而转移,对于多副本系统,则需要重复存储副本的数量一致的校验和,浪费系统资源,同时在校验和写入过程中因为校验和与原数据的写入不同步,并发IO下其他访问请求在读取时会出现用旧校验来验证新数据和用新校验来验证旧数据的误判场景,而且多次写入校验和会提高校验和刷写错误的概率,错误的校验和会导致数据校验误判。
发明内容
本发明实施例提供了一种数据完整性校验方法、系统及相关设备,根据保存在客户端内存中的校验和实现数据完整性的校验,可以有效节约系统资源,降低误判率。
本申请第一方面提供了一种数据完整性校验方法,其特征在于,包括:
当接收到目标数据的写请求时,根据所述目标数据写入的内存地址判断所述目标数据是否为对齐的数据;
若所述目标数据为非对齐的数据,则根据所述目标数据的内存地址识别所述目标数据中非对齐数据块及对齐数据块;
根据预置算法生成所述对齐数据块的第一类校验和,及所述目标数据的非对齐数据块的第二类校验和;
将所述目标数据对应的所有校验和存储在所述客户端;
当接收到读取所述目标数据的指令时,采用对齐读取的方式重新读取所述目标数据;
根据所述客户端保存的所述目标数据对应的所有校验和对重新读取到的所述目标数据的完整性进行校验。
可选的,作为一种可能的实施方式,本发明实施例中的数据完整性校验方法,若所述目标数据为对齐的数据,所述方法还包括:
将所述目标数据分为一个或多个对齐数据块,并根据所述预置算法分别生成第一类校验和。
可选的,作为一种可能的实施方式,本发明实施例中的数据完整性校验方法中,所述将所述目标数据对应的所有校验和存储在所述客户端,包括:
判断所述目标数据写入的内存地址中原来的数据对应的历史校验和是否保存在所述客户端;
若存在历史校验和,则采用所述目标数据对应的校验和替换对应的历史校验和;
若不存在历史校验和,则根据所述客户端中用于存储校验和的存储队列的占用情况为所述目标数据对应的校验和分配存储空间。
可选的,作为一种可能的实施方式,本发明实施例中的数据完整性校验方法中,所述根据所述客户端中用于存储校验和的存储队列的占用情况为所述目标数据对应的校验和分配存储空间,包括:
在所述客户端设置第一存储队列及第二存储队列,所述第一存储队列用于存储客户端缓存中的数据对应的校验和,所述第二存储队列用于存储非客户端存储的数据对应的校验和;
若所述目标数据缓存在所述客户端,且所述第二存储队列为空,则淘汰所述第一存储队列末尾的已有校验和,并将所述目标数据对应的校验和存储在所述第一存储队列;
若所述目标数据缓存在所述客户端,且所述第二存储队列为非空,则淘汰所述第二存储队列末尾的已有校验和,并将所述目标数据对应的校验和存储在所述第二存储队列;
若所述目标数据没有缓存在所述客户端,且所述第二存储队列为空,则直接返回提示信息;
若所述目标数据没有缓存在所述客户端,且所述第二存储队列为非空,则淘汰所述第二存储队列末尾的已有校验和,并将所述目标数据对应的校验和存储在所述第二存储队列。
可选的,作为一种可能的实施方式,本发明实施例中的数据完整性校验方法中,当所述目标数据为非对齐数据时,保存所述第二类校验和对应的非对齐数据块的数据长度信息;
所述根据所述客户端保存的所述目标数据对应的第一类校验和及第二类校验和对重新读取到的所述目标数据的完整性进行校验,包括:
根据非对齐数据块的数据长度信息将重新读取到的所述目标数据拆分成非对齐数据块及对齐数据块;
根据拆分之后的非对齐数据块及对齐数据块重新计算所述目标数据对应的校验和;
校验重新计算得到的校验和与所述目标数据存储在所述客户端的校验和是否一致,若一致,则判定重新读取到的所述目标数据是完整的。
本发明实施例第二方面提供了一种数据完整性校验系统,其特征在于,包括:
判断模块,当接收到目标数据的写请求时,用于根据所述目标数据写入的内存地址判断所述目标数据是否为对齐的数据;
识别模块,若所述目标数据为非对齐的数据,则根据所述目标数据的内存地址识别所述目标数据中非对齐数据块及对齐数据块;
第一计算模块,用于根据预置算法生成所述对齐数据块的第一类校验和,及所述目标数据的非对齐数据块的第二类校验和;
第一存储模块,用于将所述目标数据对应的所有校验和存储在所述客户端;
读取模块,当接收到读取所述目标数据的指令时,采用对齐读取的方式重新读取所述目标数据;
校验模块,用于根据所述客户端保存的所述目标数据对应的所有校验和对重新读取到的所述目标数据的完整性进行校验。
可选的,作为一种可能的实施方式,本发明实施例中的数据完整性校验系统还包括:
第二计算模块,若所述目标数据为对齐的数据,则将所述目标数据分为一个或多个对齐数据块,并根据所述预置算法分别生成第一类校验和。
可选的,作为一种可能的实施方式,本发明实施例中的数据完整性校验系统中,所述第一存储模块包括:
判断单元,用于判断所述目标数据写入的内存地址中原来的数据对应的历史校验和是否保存在所述客户端;
第一存储单元,若存在历史校验和,则采用所述目标数据对应的校验和替换对应的历史校验和;
第二存储单元,若不存在历史校验和,则根据所述客户端中用于存储校验和的存储队列的占用情况为所述目标数据对应的校验和分配存储空间。
可选的,作为一种可能的实施方式,本发明实施例中的数据完整性校验系统中,所述客户端设置有第一存储队列及第二存储队列,所述第一存储队列用于存储客户端缓存中的数据对应的校验和,所述第二存储队列用于存储非客户端存储的数据对应的校验和;
所述第二存储单元包括:
第一子单元,若所述目标数据缓存在所述客户端,且所述第二存储队列为空,则用于淘汰所述第一存储队列末尾的已有校验和,并将所述目标数据对应的校验和存储在所述第一存储队列;
第二子单元,若所述目标数据缓存在所述客户端,且所述第二存储队列为非空,则用于淘汰所述第二存储队列末尾的已有校验和,并将所述目标数据对应的校验和存储在所述第二存储队列;
第三子单元,若所述目标数据没有缓存在所述客户端,且所述第二存储队列为空,则直接返回提示信息;
第四子单元,若所述目标数据没有缓存在所述客户端,且所述第二存储队列为非空,则用于淘汰所述第二存储队列末尾的已有校验和,并将所述目标数据对应的校验和存储在所述第二存储队列。
可选的,作为一种可能的实施方式,本发明实施例中的数据完整性校验系统还包括第二存储模块;当所述目标数据为非对齐数据时,所述第二存储模块用于保存所述第二类校验和对应的非对齐数据块的数据长度信息;
所述校验模块包括:
拆分单元,用于根据非对齐数据块的数据长度信息将重新读取到的所述目标数据拆分成非对齐数据块及对齐数据块;
计算单元,用于根据拆分之后的非对齐数据块及对齐数据块重新计算所述目标数据对应的校验和;
校验单元,用于校验重新计算得到的校验和与所述目标数据存储在所述客户端的校验和是否一致,若一致,则判定重新读取到的所述目标数据是完整的。
本发明实施例第三方面提供了一种计算机装置,其特征在于,所述计算机装置包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现如第一方面及第一方面任意一种可能的实施方式中的步骤。
本发明实施例第四方面提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现如第一方面及第一方面任意一种可能的实施方式中的步骤。
从以上技术方案可以看出,本发明实施例具有以下优点:
本发明实施例中,当接收到目标数据的写请求时,可以根据目标数据写入的内存地址判断目标数据是否为对齐的数据,若目标数据为非对齐的数据,则根据目标数据的内存地址识别目标数据中非对齐数据块及对齐数据块,并根据预置算法生成对齐数据块的第一类校验和,及目标数据的非对齐数据块的第二类校验和,当接收到读取目标数据的指令时,采用对齐读取的方式重新读取目标数据,根据客户端保存的目标数据对应的所有校验和对重新读取到的目标数据的完整性进行校验。相对于现有方案中,本方案可以对非对齐数据块进行校验,避免了非对齐读取无法验证的情况发生,提高了校验的准确率;其次,本申请将目标数据对应的所有校验和存储在客户端,无需将检验和随目标数据进行转移,节约了系统资源。
附图说明
图1为本发明实施例中一种数据完整性校验方法的一个实施例示意图;
图2为本发明实施例中一种数据完整性校验方法的另一个实施例示意图;
图3为本发明实施例中一种数据完整性校验方法的具体运用实例的系统架构示意图;
图4为本发明实施例中一种数据完整性校验方法的具体运用实例的流程示意图;
图5为本发明实施例中一种数据完整性校验方法的具体运用实例中读取验证的流程示意图;
图6为本发明实施例中一种数据完整性校验系统的一个实施例示意图;
图7为本发明实施例中一种数据完整性校验系统的另一个实施例示意图;
图8为本发明实施例中一种数据完整性校验系统中的第二存储单元的功能细化示意图;
图9为本发明实施例中一种数据完整性校验系统的另一个实施例示意图;
图10为本发明实施例中一种计算机装置的一个实施例示意图。
具体实施方式
本发明实施例提供了一种数据完整性校验方法、系统及相关设备,根据保存在客户端内存中的校验和实现数据完整性的校验,可以有效节约系统资源,降低误判率。
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
本发明适用于采用校验和的数据完整性保护方案,通过在在写入校验和时,在客户端就用数据来生成校验和,并保存在客户端缓存中。对于对齐的数据就直接生成校验和并覆盖旧的校验和,而对非对齐数据,就用非对齐数据生成部分校验和,覆盖旧的校验和并保存偏移量和数据长度。为了提高校验和的利用率,每次读取都采用对齐读取,这样只要所属对齐数据块有对应的校验和,即使部分校验和也可以用来进行校验。此外通过对保存在缓存中的校验区分优先级,给客户端缓存数据更高的优先级,使客户端缓存数据能在内存中保存的更久,这样就助于提高发现客户端缓存数据错误的概率。
为了便于理解,下面对本发明实施例中的具体流程进行描述,请参阅图1,本发明实施例中一种数据完整性校验方法的一个实施例可包括:
101、当接收到目标数据的写请求时,根据目标数据写入的内存地址判断目标数据是否为对齐的数据。
本申请实施例中,当目标数据通过客户端需要缓存到客户端缓存或存储到其他服务器建立副本时,客户端会接收到对应的写请求,该请求中会包含目标数据写入的内存地址,数据完整性校验系统可以根据目标数据写入的内存地址判断目标数据是否为对齐的数据。具体的,可以根据目标数据写入的内存地址识别目标数据的偏移量及数据长度,进而识别目标数据是否为对齐的数据。
实际运用中,数据的刷写操作往往是以一定字节长度为基本单位,按照基本单位进行读写操作,本申请实施例中的对齐的数据是指,数据的长度是基本单位的整数倍,且数据的偏移量与基本单位的取余计算的余数为零的数据。例如,某一计算机系统以4K为基本单位进行数据操作,如果根据目标数据的写入的内存地址识别出第一数据将被书写到3K至5K对应的存储空间时,则可以确定该第一数据的偏移量为3K,与基本单位4K的余数不为零,则该第一数据为非对齐数据。若第二数据的写入的内存地址识别出第二数据将被书写到8K至12K对应的存储空间时,则可以确定该第二数据的偏移量为8K,数据长度为4K,为对齐数据。
102、若目标数据为非对齐的数据,则根据目标数据的内存地址识别目标数据中非对齐数据块及对齐数据块。
当识别到目标数据为非对齐的数据时,可以根据目标数据的内存地址识别目标数据中非对齐数据块及对齐数据块。例如,当目标数据写入的内存地址为3K至11K之间的存储空间时,可以将目标数据划分为两个非对齐数据块(3K~4K、8K~11K)及一个对齐的数据块(4K~8K)。
可选的,当目标数据为对齐的数据时,数据完整性校验系统可以将目标数据分为一个或多个对齐数据块,并根据预置算法分别生成第一类校验和。
103、根据预置算法生成对齐数据块的第一类校验和,及目标数据的非对齐数据块的第二类校验和。
在对目标数据进行分块之后,若目标数据为非对齐的数据时可以按照预置的算法生成对齐数据块的第一类校验和,及目标数据的非对齐数据块的第二类校验和。若目标数据为对齐的数据时,则可以按照预置的算法生成对齐数据块的第一类校验和。可以理解的是,具体的第一类校验和及第二类校验和的数量是根据目标数据的对齐数据块的数量及非对齐数据块的数量确定的,可能是一个也可能是多个。
104、将目标数据对应的所有校验和存储在客户端。
为了避免现有技术中多个副本中分别存储校验和导致误判情况,本申请实施例中,可以将目标数据对应的所有校验和存储在客户端,在进行数据下发建立副本时,校验和无需写入副本中。
105、当接收到读取目标数据的指令时,采用对齐读取的方式重新读取目标数据。
当目标数据写入客户端缓存中或服务器的副本之后,客户端保存有目标数据的所有校验和。当用户通过客户端重新提取目标数据时,本申请实施例中的数据完整性校验系统采用对齐读取的方式重新读取目标数据。由于采用对齐读取的方式,无需进行读补齐操作,没有明显的读补齐额外开销,可以简化读处理操作,节约系统资源。
106、根据客户端保存的目标数据对应的所有校验和对重新读取到的目标数据的完整性进行校验。
当用户通过客户端重新读取到目标数据之后,可以根据客户端保存的目标数据对应的所有校验和对重新读取到的目标数据的完整性进行校验。
具体的,本申请实施例中,数据完整性校验系统可以根据管理的存储空间大小,合理的在内存中设置用于保存校验和的队列,并建立不同内存位置与对应的检验和的映射关系,当读取对应的存储位置的数据时,可以根据存储位置与校验和的映射关系查找对应的校验和进行数据完整性校验。
优选的,若目标数据为对齐的数据,则数据完整性校验系统可以直接将重新读取到的目标数据拆分为一个个对齐数据块,并根据拆分的数据块按照相同的预置算法计算对应的校验和,校验重新计算得到的校验和与目标数据存储在客户端的校验和是否一致,若一致,则判定重新读取到的目标数据是完整的。
优选的,当目标数据为非对齐数据时,保存第二类校验和对应的非对齐数据块的数据长度信息。当目标数据为非对齐数据时,校验过程可以包括:
根据非对齐数据块的数据长度信息将重新读取到的目标数据拆分成非对齐数据块及对齐数据块;根据拆分之后的非对齐数据块及对齐数据块重新计算目标数据对应的校验和;校验重新计算得到的校验和是否与目标数据存储在客户端的校验和一致,若一致,则判定重新读取到的目标数据是完整的。
具体的,例如,当目标数据写入的内存地址为3K至11K之间的存储空间时,可以将目标数据划分为两个非对齐数据块(3K~4K、8K~11K)及一个对齐的数据块(4K~8K),进而计算出的目标数据的校验和包括两个第二类检验和及一个第一类校验和。在存储第二类检验和时,将非对齐数据块的数据长度信息与对应的第二类检验和进行关联存储,当重新读取到目标数据时,可以根据客户端内存中存储的目标数据的数据长度信息将重新读取到的目标数据拆分成非对齐数据块及对齐数据块,根据拆分之后的非对齐数据块及对齐数据块重新计算目标数据对应的校验和;校验重新计算得到的校验和是否与目标数据存储在客户端的校验和一致,若一致,则判定重新读取到的目标数据是完整的。
本发明实施例中,当接收到目标数据的写请求时,可以根据目标数据写入的内存地址判断目标数据是否为对齐的数据,若目标数据为非对齐的数据,则根据目标数据的内存地址识别目标数据中非对齐数据块及对齐数据块,并根据预置算法生成对齐数据块的第一类校验和,及目标数据的非对齐数据块的第二类校验和,当接收到读取目标数据的指令时,采用对齐读取的方式重新读取目标数据,根据客户端保存的目标数据对应的所有校验和对重新读取到的目标数据的完整性进行校验。相对于现有方案中,本方案可以对非对齐数据块进行校验,避免了非对齐读取无法验证的情况发生,提高了校验的准确率;其次,本申请将目标数据对应的所有校验和存储在客户端,无需将检验和随目标数据进行转移,节约了系统资源。
在上述图1所示的实施例的基础上,为了保障客户端缓存中的数据校验的效率,本申请实施例中可以为客户端缓存及非客户端缓存分别设置不同的存储队列。请参阅图2,本申请实施例中一种数据完整性校验方法的另一个实施例可包括:
201、当接收到目标数据的写请求时,根据目标数据写入的内存地址判断目标数据是否为对齐的数据。
202、若目标数据为非对齐的数据,则根据目标数据的内存地址识别目标数据中非对齐数据块及对齐数据块。
203、根据预置算法生成对齐数据块的第一类校验和,及目标数据的非对齐数据块的第二类校验和。
本申请实施例中的步骤201至203、步骤207至208中描述的内容分别与上述图1所示的实施例中的步骤101至103、105至106中描述的内容类似,具体请参阅步骤101至103、105至106,此处不做赘述。
204、判断目标数据写入的内存地址中原来的数据对应的历史校验和是否保存在客户端。
为了避免现有技术中多个副本中分别存储校验和导致误判情况,本申请实施例中,可以将目标数据对应的所有校验和存储在客户端,在进行数据下发建立副本时,校验和无需写入副本中。
具体的,由于客户端保存的校验和与数据的存储位置具有映射关系,在原来的存储位置的数据被新的数据替换之后,新的数据对应的校验和需要替换原来的历史校验和。将校验和存入客户端内存之前,需要判断目标数据写入的内存地址中原来的数据对应的历史校验和是否保存在客户端,如果存在历史校验和,则执行下述步骤205,否则执行步骤206。
205、若存在历史校验和,则采用目标数据对应的校验和替换对应的历史校验和。
将校验和存入客户端内存之前,需要判断目标数据写入的内存地址中原来的数据对应的历史校验和是否保存在客户端,如果存在历史校验和,则采用目标数据对应的校验和替换对应的历史校验和。
206、若不存在历史校验和,则根据客户端中用于存储校验和的存储队列的占用情况为目标数据对应的校验和分配存储空间。
将校验和存入客户端内存之前,需要判断目标数据写入的内存地址中原来的数据对应的历史校验和是否保存在客户端,如果不存在历史校验和,则根据客户端中用于存储校验和的存储队列的占用情况为目标数据对应的校验和分配存储空间。例如,可以判断原来分配的存储空间是否有空余空间,如果没有空余空间可以再次为校验和分配更多空间,也可以对现有的已存储的校验和进行淘汰,具体的实施方式此处不做限定。
优选的,本申请实施例中,当存储空间不足时,优选采用淘汰已存储的校验和的方式。具体的,数据完整性校验系统可以在客户端设置第一存储队列及第二存储队列,第一存储队列用于存储客户端缓存中的数据对应的校验和,第二存储队列用于存储非客户端存储的数据对应的校验和。若目标数据缓存在客户端,且第二存储队列为空,则淘汰第一存储队列末尾的已有校验和,并将目标数据对应的校验和存储在第一存储队列;若目标数据缓存在客户端,且第二存储队列为非空,则淘汰第二存储队列末尾的已有校验和,并将目标数据对应的校验和存储在第二存储队列;若目标数据没有缓存在客户端,且第二存储队列为空,则直接返回提示信息;若目标数据没有缓存在客户端,且第二存储队列为非空,则淘汰第二存储队列末尾的已有校验和,并将目标数据对应的校验和存储在第二存储队列。
具体的,第一存储队列与第二存储队列的的大小可以采用指针进行调整,当目标数据缓存在客户端时,若第二存储队列指针为空,即说明并没有为第二存储队列分配空间,只能在第一存储队列淘汰已有的校验和;当第二存储队列指针为非空则说明有为第二存储队列分配空间,由于客户端缓存的数据的使用频率较高,本申请实施例中设置客户端缓存的数据的优先级高于非客户端缓存的数据的优先级,所以当第一存储队列的空间不足时,此时可以先淘汰第二存储队列中队尾的已有校验和,将第二存储队列的部分空间分配给第一存储队列,以存储目标数据对应的校验和。当目标数据缓存在非客户端时,若第二存储队列指针为空,即说明并没有为第二存储队列分配空间,由于客户端缓存的数据优先级较高,则无法存储目标数据的校验和,系统可以返回提醒信息,提示用户无法存储;当第二存储队列指针为非空则说明有为第二存储队列分配空间,当第二存储队列的空间不足时,此时可以先淘汰第二存储队列中队尾的已有校验和,以存储目标数据对应的校验和。
207、当接收到读取目标数据的指令时,采用对齐读取的方式重新读取目标数据。
208、根据客户端保存的目标数据对应的所有校验和对重新读取到的目标数据的完整性进行校验。
本申请实施例中,可以对非对齐数据块进行校验,避免了非对齐读取无法验证的情况发生,提高了校验的准确率;其次,本申请将目标数据对应的所有校验和存储在客户端,无需将检验和随目标数据进行转移,节约了系统资源。进一步的,本申请实施例中还可以设置不同的校验和缓存队列,优先满足客户端缓存数据对应的校验和的存储需求,可以有效提高数据校验效率。
为了便于理解,下面将结合具体运用实例对本申请中的数据完整性校验方法进行说明。本申请适用于分布式存储系统,具体的系统架构可参阅图3,包括客户端及多个服务器。客户端在接收到客户下发的写请求时,在客户端生成校验和,并把校验和存在内存中,等待下次读取该数据时再进行验证。图3是客户端校验的架构,数据d下发到客户端,在客户端内存中采用校验和算法生成校验和c,然后把校验和c存在内存中,继续下发数据d到服务器1,2,...(有几个副本就下发到几个服务器,如3个,那么就下发到服务器s1,s2,s3)。
具体的校验流程请参阅图4,在写下发的过程,对数据d使用校验和算法生成校验和c,然后下发写请求到服务器或者客户端缓存。等写成功返回时,先看数据d所对应的范围是否存在校验和。如果已经存在就覆盖现有校验和。而不存在的话,就要插入校验和。插入校验和需判断内存校验和是否已满。如果已满,就需要做校验和淘汰后再插入;没满的话就可以直接插入。在做校验和淘汰时,先需要判断本次校验和c对应的数据是否有缓存在客户端,如果是存储在客户端,则为客户端缓存返回,否则为非客户端缓存返回。然后再判断no-cli-cache是否为空。为了优先保证客户端缓存的校验验证,内存校验和总共有两个队列,一个是存客户端缓存校验和的队列,叫cli-cache,另一个是存非客户端缓存校验和的队列,叫non-cli-cache。淘汰时优先淘汰non-cli-cache,当non-cli-cache为空时,再淘汰cli-cache中的校验和。这样一种设计可以保证客户端缓存的校验验证,而客户端缓存被访问的频率要高很多,这样在有限空间的情况下可以有更高的概率发现校验和不一致的情况。那么在做淘汰时总共有四种情况:
客户端缓存返回,non-cli-cache为空。那么就淘汰cli-cache内存校验和队尾
客户端缓存返回,non-cli-cache非空。那么就淘汰non-cli-cache内存校验和队尾。
非客户端缓存返回,non-cli-cache为空。那么直接返回了。因为内存校验和满同时无法进行淘汰,也就没有插入校验和的空间。
非客户端缓存返回,non-cli-cache非空。那么就淘汰non-cli-cache内存校验和队尾。
无论是做淘汰,内存校验和不满,还是覆盖已有校验和,都是保证校验和可以存在内存校验和。在保存校验和之前还要做一些处理,如果客户端缓存返回,则cflag=1,否则cflag=0。然后判断是否是完整校验和,完整校验和的判断就是用d的(offset mod ck_size)==0,(size mod ck_size)==0,是否按照ck_size对齐,同时长度是否是ck_size的整数倍,其中,offset是数据偏移量,ck_size是指一次读写操作的基本单位,例如一次读写操作的存储空间大小为4K,则对应的ck_size为4K。如果(offset mod ck_size)==0,(size mod ck_size)==0都满足说明是完整校验和,那么就把c,offset,cflag存入内存校验和。否则说明不是完整校验和,那么就把c,offset,csize,cflag存在内存校验和(这里的csize指的是ck_size中的内部size,令c_offset=offset%ck_size,指的是ck_size中的偏移,其实还存在c_offset+csize>ck_size的越界情况,还要做越界拆分处理)。如果size是n个ck_size,那么c其实表示的是n个校验和c1,c2...,cn-1,相应的要清理出来的内存校验和空间也是n,也要存入这个n个校验和。非对齐的也有类似的情况。
最后直接根据cflag来进行插入,如果cflag=1,那么就插入cli-cache内存校验和队首,而cflag=0的话就插入到non-cli-cache内存校验和队首,然后返回。上面就是写入生成校验和、保存校验和的完整流程。
图5所示的是客户端校验的详细读取验证流程。读请求读到所要数据后返回,读取d(roffset,rsize),查询是否有校验和,且判断校验和的类型是完整校验和还是部分校验和。那么有四种情况:
读取数据是对齐数据,但校验和是非对齐数据的校验和;
读取数据是对齐数据,校验和也是对齐数据的校验和;
读取数据是非对齐数据,但校验和是对齐数据的校验和;
读取数据是非对齐数据,但校验和是非对齐数据的校验和;
为了避免这种复杂情况,以及非对齐数据只有和之前生成部分校验和是同一小块数据才能进行验证的情况,我们令读取时就都按对齐读取,这样没有明显的额外开销,而且可以简化处理。同时多余读取的非对齐部分,可能下次被访问到。我们对写不做这个处理的原因是写对齐,需要做读补齐,读补齐操作有大的性能影响。因此简化后的情况((roffsetmod ck_size)==0,(rsize mod ck_size)==0):
csize!=0校验和是非对齐数据的校验和,那么就用(offset mod roffset),rsize取数据块d中对应的段,然后生成校验和c’,然后和之前存储的校验和c进行验证。
csize=0说明校验和对齐数据的校验和,所以可以直接用数据d生成校验和c’,然后和之前存储的校验和c进行验证。
如果c=c’成立,则说明校验验证成功,否则断言说明校验失败0。如果rsize是n个ck_size,那么c’其实表示的是n个校验和c1,c2...,cn-1,相应的要验证的校验和也是n,对每个校验和都要做上述处理。
可以理解的是,在本发明的各种实施例中,上述各步骤的序号的大小并不意味着执行顺序的先后,各步骤的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
上述实施例对本发明实施例中的数据完整性校验方法进行了描述,下面将对本发明实施例中的数据完整性校验系统进行描述,请参阅图6,本发明实施例中一种数据完整性保护系统的一个实施例可包括:
判断模块501,当接收到目标数据的写请求时,用于根据目标数据写入的内存地址判断目标数据是否为对齐的数据;
识别模块502,若目标数据为非对齐的数据,则根据目标数据的内存地址识别目标数据中非对齐数据块及对齐数据块;
第一计算模块503,用于根据预置算法生成对齐数据块的第一类校验和,及目标数据的非对齐数据块的第二类校验和;
第一存储模块504,用于将目标数据对应的所有校验和存储在客户端;
读取模块505,当接收到读取目标数据的指令时,采用对齐读取的方式重新读取目标数据;
校验模块506,用于根据客户端保存的目标数据对应的所有校验和对重新读取到的目标数据的完整性进行校验。
本发明实施例中,当接收到目标数据的写请求时,可以根据目标数据写入的内存地址判断目标数据是否为对齐的数据,若目标数据为非对齐的数据,则根据目标数据的内存地址识别目标数据中非对齐数据块及对齐数据块,并根据预置算法生成对齐数据块的第一类校验和,及目标数据的非对齐数据块的第二类校验和,当接收到读取目标数据的指令时,采用对齐读取的方式重新读取目标数据,根据客户端保存的目标数据对应的所有校验和对重新读取到的目标数据的完整性进行校验。相对于现有方案中,本方案可以对非对齐数据块进行校验,避免了非对齐读取无法验证的情况发生,提高了校验的准确率;其次,本申请将目标数据对应的所有校验和存储在客户端,无需将检验和随目标数据进行转移,节约了系统资源。
可选的,作为一种可能的实施方式,请参阅图7,本发明实施例中的数据完整性校验系统,还可以进一步包括:
第二计算模块507,若目标数据为对齐的数据,则将目标数据分为一个或多个对齐数据块,并根据预置算法分别生成第一类校验和。
可选的,作为一种可能的实施方式,请参阅图7,本发明实施例中的数据完整性校验系统中的第一存储模块504包括:
判断单元5041,用于判断目标数据写入的内存地址中原来的数据对应的历史校验和是否保存在客户端;
第一存储单元5042,若存在历史校验和,则采用目标数据对应的校验和替换对应的历史校验和;
第二存储单元5043,若不存在历史校验和,则根据客户端中用于存储校验和的存储队列的占用情况为目标数据对应的校验和分配存储空间。
可选的,作为一种可能的实施方式,本发明实施例中的数据完整性校验系统中,客户端设置有第一存储队列及第二存储队列,第一存储队列用于存储客户端缓存中的数据对应的校验和,第二存储队列用于存储非客户端存储的数据对应的校验和。请参阅图8,第二存储单元5043包括:
第一子单元50431,若目标数据缓存在客户端,且第二存储队列为空,则用于淘汰第一存储队列末尾的已有校验和,并将目标数据对应的校验和存储在第一存储队列;
第二子单元50432,若目标数据缓存在客户端,且第二存储队列为非空,则用于淘汰第二存储队列末尾的已有校验和,并将目标数据对应的校验和存储在第二存储队列;
第三子单元50433,若目标数据没有缓存在客户端,且第二存储队列为空,则直接返回提示信息;
第四子单元50434,若目标数据没有缓存在客户端,且第二存储队列为非空,则用于淘汰第二存储队列末尾的已有校验和,并将目标数据对应的校验和存储在第二存储队列。
可选的,作为一种可能的实施方式,请参阅图9,本发明实施例中的数据完整性校验系统中,还包括第二存储模508;当目标数据为非对齐数据时,第二存储模块508用于保存第二类校验和对应的非对齐数据块的数据长度信息;
校验模块506包括:
拆分单元5061,用于根据非对齐数据块的数据长度信息将重新读取到的目标数据拆分成非对齐数据块及对齐数据块;
计算单元5062,用于根据拆分之后的非对齐数据块及对齐数据块重新计算目标数据对应的校验和;
校验单元5063,用于校验重新计算得到的校验和与目标数据存储在客户端的校验和是否一致,若一致,则判定重新读取到的目标数据是完整的。
上面从模块化功能实体的角度对本发明实施例中的数据完整性校验系统进行了描述,下面从硬件处理的角度对本发明实施例中的计算机装置进行描述:
本发明实施例还提供了一种计算机装置10,如图10所示,为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明实施例方法部分。该计算机装置10一般指服务器等处理能力较强的计算机设备。
参考图10,计算机装置10包括:电源910、存储器920、处理器930、有线或无线网络接口940以及存储在存储器中并可在处理器上运行的计算机程序。处理器执行计算机程序时实现上述数据完整性校验方法实施例中的步骤,例如图1所示的步骤101至106。或者,处理器执行计算机程序时实现上述各装置实施例中各模块或单元的功能。
本发明的一些实施例中,处理器具体用于实现如下步骤:
当接收到目标数据的写请求时,根据目标数据写入的内存地址判断目标数据是否为对齐的数据;
若目标数据为非对齐的数据,则根据目标数据的内存地址识别目标数据中非对齐数据块及对齐数据块;
根据预置算法生成对齐数据块的第一类校验和,及目标数据的非对齐数据块的第二类校验和;
将目标数据对应的所有校验和存储在客户端;
当接收到读取目标数据的指令时,采用对齐读取的方式重新读取目标数据;
根据客户端保存的目标数据对应的所有校验和对重新读取到的目标数据的完整性进行校验。
可选的,本发明的一些实施例中,处理器还可以用于实现如下步骤:
将目标数据分为一个或多个对齐数据块,并根据预置算法分别生成第一类校验和。
可选的,本发明的一些实施例中,处理器还可以用于实现如下步骤:
判断目标数据写入的内存地址中原来的数据对应的历史校验和是否保存在客户端;
若存在历史校验和,则采用目标数据对应的校验和替换对应的历史校验和;
若不存在历史校验和,则根据客户端中用于存储校验和的存储队列的占用情况为目标数据对应的校验和分配存储空间。
可选的,本发明的一些实施例中,处理器还可以用于实现如下步骤:
在客户端设置第一存储队列及第二存储队列,第一存储队列用于存储客户端缓存中的数据对应的校验和,第二存储队列用于存储非客户端存储的数据对应的校验和;
若目标数据缓存在客户端,且第二存储队列为空,则淘汰第一存储队列末尾的已有校验和,并将目标数据对应的校验和存储在第一存储队列;
若目标数据缓存在客户端,且第二存储队列为非空,则淘汰第二存储队列末尾的已有校验和,并将目标数据对应的校验和存储在第二存储队列;
若目标数据没有缓存在客户端,且第二存储队列为空,则直接返回提示信息;
若目标数据没有缓存在客户端,且第二存储队列为非空,则淘汰第二存储队列末尾的已有校验和,并将目标数据对应的校验和存储在第二存储队列。
可选的,本发明的一些实施例中,处理器还可以用于实现如下步骤:
当目标数据为非对齐数据时,保存第二类校验和对应的非对齐数据块的数据长度信息;
根据客户端保存的目标数据对应的第一类校验和及第二类校验和对重新读取到的目标数据的完整性进行校验,包括:
根据非对齐数据块的数据长度信息将重新读取到的目标数据拆分成非对齐数据块及对齐数据块;
根据拆分之后的非对齐数据块及对齐数据块重新计算目标数据对应的校验和;
校验重新计算得到的校验和与目标数据存储在客户端的校验和是否一致,若一致,则判定重新读取到的目标数据是完整的。
计算机装置10可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。示例性的,计算机程序可以被分割成一个或多个模块/单元,一个或者多个模块/单元被存储在存储器中,并由处理器执行。一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述计算机程序在计算机装置中的执行过程。
本领域技术人员可以理解,图10中示出的结构并不构成对计算机装置10的限定,计算机装置10可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置,例如计算机装置还可以包括输入输出设备、总线等。
所称处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,处理器是计算机装置的控制中心,利用各种接口和线路连接整个计算机装置的各个部分。
存储器可用于存储计算机程序和/或模块,处理器通过运行或执行存储在存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现计算机装置的各种功能。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(SmartMedia Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
本发明还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时,可以实现如下步骤:
当接收到目标数据的写请求时,根据目标数据写入的内存地址判断目标数据是否为对齐的数据;
若目标数据为非对齐的数据,则根据目标数据的内存地址识别目标数据中非对齐数据块及对齐数据块;
根据预置算法生成对齐数据块的第一类校验和,及目标数据的非对齐数据块的第二类校验和;
将目标数据对应的所有校验和存储在客户端;
当接收到读取目标数据的指令时,采用对齐读取的方式重新读取目标数据;
根据客户端保存的目标数据对应的所有校验和对重新读取到的目标数据的完整性进行校验。
可选的,本发明的一些实施例中,处理器还可以用于实现如下步骤:
将目标数据分为一个或多个对齐数据块,并根据预置算法分别生成第一类校验和。
可选的,本发明的一些实施例中,处理器还可以用于实现如下步骤:
判断目标数据写入的内存地址中原来的数据对应的历史校验和是否保存在客户端;
若存在历史校验和,则采用目标数据对应的校验和替换对应的历史校验和;
若不存在历史校验和,则根据客户端中用于存储校验和的存储队列的占用情况为目标数据对应的校验和分配存储空间。
可选的,本发明的一些实施例中,处理器还可以用于实现如下步骤:
在客户端设置第一存储队列及第二存储队列,第一存储队列用于存储客户端缓存中的数据对应的校验和,第二存储队列用于存储非客户端存储的数据对应的校验和;
若目标数据缓存在客户端,且第二存储队列为空,则淘汰第一存储队列末尾的已有校验和,并将目标数据对应的校验和存储在第一存储队列;
若目标数据缓存在客户端,且第二存储队列为非空,则淘汰第二存储队列末尾的已有校验和,并将目标数据对应的校验和存储在第二存储队列;
若目标数据没有缓存在客户端,且第二存储队列为空,则直接返回提示信息;
若目标数据没有缓存在客户端,且第二存储队列为非空,则淘汰第二存储队列末尾的已有校验和,并将目标数据对应的校验和存储在第二存储队列。
可选的,本发明的一些实施例中,处理器还可以用于实现如下步骤:
当目标数据为非对齐数据时,保存第二类校验和对应的非对齐数据块的数据长度信息;
根据客户端保存的目标数据对应的第一类校验和及第二类校验和对重新读取到的目标数据的完整性进行校验,包括:
根据非对齐数据块的数据长度信息将重新读取到的目标数据拆分成非对齐数据块及对齐数据块;
根据拆分之后的非对齐数据块及对齐数据块重新计算目标数据对应的校验和;
校验重新计算得到的校验和与目标数据存储在客户端的校验和是否一致,若一致,则判定重新读取到的目标数据是完整的。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (10)

1.一种数据完整性校验方法,其特征在于,包括:
当接收到目标数据的写请求时,根据所述目标数据写入的内存地址判断所述目标数据是否为对齐的数据;
若所述目标数据为非对齐的数据,则根据所述目标数据的内存地址识别所述目标数据中非对齐数据块及对齐数据块;
根据预置算法生成所述对齐数据块的第一类校验和,及所述目标数据的非对齐数据块的第二类校验和;
将所述目标数据对应的所有校验和存储在客户端;
当接收到读取所述目标数据的指令时,采用对齐读取的方式重新读取所述目标数据;
根据所述客户端保存的所述目标数据对应的所有校验和对重新读取到的所述目标数据的完整性进行校验。
2.根据权利要求1所述的方法,其特征在于,若所述目标数据为对齐的数据,所述方法还包括:
将所述目标数据分为一个或多个对齐数据块,并根据所述预置算法分别生成第一类校验和。
3.根据权利要求1或2所述的方法,其特征在于,所述将所述目标数据对应的所有校验和存储在所述客户端,包括:
判断所述目标数据写入的内存地址中原来的数据对应的历史校验和是否保存在所述客户端;
若存在历史校验和,则采用所述目标数据对应的校验和替换对应的历史校验和;
若不存在历史校验和,则根据所述客户端中用于存储校验和的存储队列的占用情况为所述目标数据对应的校验和分配存储空间。
4.根据权利要求3所述的方法,其特征在于,所述根据所述客户端中用于存储校验和的存储队列的占用情况为所述目标数据对应的校验和分配存储空间,包括:
在所述客户端设置第一存储队列及第二存储队列,所述第一存储队列用于存储客户端缓存中的数据对应的校验和,所述第二存储队列用于存储非客户端存储的数据对应的校验和;
若所述目标数据缓存在所述客户端,且所述第二存储队列为空,则淘汰所述第一存储队列末尾的已有校验和,并将所述目标数据对应的校验和存储在所述第一存储队列;
若所述目标数据缓存在所述客户端,且所述第二存储队列为非空,则淘汰所述第二存储队列末尾的已有校验和,并将所述目标数据对应的校验和存储在所述第二存储队列;
若所述目标数据没有缓存在所述客户端,且所述第二存储队列为空,则直接返回提示信息;
若所述目标数据没有缓存在所述客户端,且所述第二存储队列为非空,则淘汰所述第二存储队列末尾的已有校验和,并将所述目标数据对应的校验和存储在所述第二存储队列。
5.根据权利要求3所述的方法,其特征在于,当所述目标数据为非对齐数据时,保存所述第二类校验和对应的非对齐数据块的数据长度信息;
所述根据所述客户端保存的所述目标数据对应的第一类校验和及第二类校验和对重新读取到的所述目标数据的完整性进行校验,包括:
根据非对齐数据块的数据长度信息将重新读取到的所述目标数据拆分成非对齐数据块及对齐数据块;
根据拆分之后的非对齐数据块及对齐数据块重新计算所述目标数据对应的校验和;
校验重新计算得到的校验和与所述目标数据存储在所述客户端的校验和是否一致,若一致,则判定重新读取到的所述目标数据是完整的。
6.一种数据完整性校验系统,其特征在于,包括:
判断模块,当接收到目标数据的写请求时,用于根据所述目标数据写入的内存地址判断所述目标数据是否为对齐的数据;
识别模块,若所述目标数据为非对齐的数据,则根据所述目标数据的内存地址识别所述目标数据中非对齐数据块及对齐数据块;
第一计算模块,用于根据预置算法生成所述对齐数据块的第一类校验和,及所述目标数据的非对齐数据块的第二类校验和;
第一存储模块,用于将所述目标数据对应的所有校验和存储在客户端;
读取模块,当接收到读取所述目标数据的指令时,采用对齐读取的方式重新读取所述目标数据;
校验模块,用于根据所述客户端保存的所述目标数据对应的所有校验和对重新读取到的所述目标数据的完整性进行校验。
7.根据权利要求6所述的系统,其特征在于,还包括:
第二计算模块,若所述目标数据为对齐的数据,则将所述目标数据分为一个或多个对齐数据块,并根据所述预置算法分别生成第一类校验和。
8.根据权利要求6或7所述的系统,其特征在于,所述第一存储模块包括:
判断单元,用于判断所述目标数据写入的内存地址中原来的数据对应的历史校验和是否保存在所述客户端;
第一存储单元,若存在历史校验和,则采用所述目标数据对应的校验和替换对应的历史校验和;
第二存储单元,若不存在历史校验和,则根据所述客户端中用于存储校验和的存储队列的占用情况为所述目标数据对应的校验和分配存储空间。
9.一种计算机装置,其特征在于,所述计算机装置包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现如权利要求1至5中任意一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现如权利要求1至5中任意一项所述方法的步骤。
CN201811124530.1A 2018-09-26 2018-09-26 一种数据完整性校验方法、系统及相关设备 Active CN110955545B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811124530.1A CN110955545B (zh) 2018-09-26 2018-09-26 一种数据完整性校验方法、系统及相关设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811124530.1A CN110955545B (zh) 2018-09-26 2018-09-26 一种数据完整性校验方法、系统及相关设备

Publications (2)

Publication Number Publication Date
CN110955545A CN110955545A (zh) 2020-04-03
CN110955545B true CN110955545B (zh) 2023-07-14

Family

ID=69964582

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811124530.1A Active CN110955545B (zh) 2018-09-26 2018-09-26 一种数据完整性校验方法、系统及相关设备

Country Status (1)

Country Link
CN (1) CN110955545B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NO346991B1 (en) * 2020-09-29 2023-03-27 Mhwirth As A method and system for verifying a software application
CN112799974B (zh) * 2021-01-26 2021-12-03 科东(广州)软件科技有限公司 一种存储卡的控制方法及系统
CN112767767B (zh) * 2021-01-29 2022-12-23 重庆子元科技有限公司 一种虚拟训练系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105930103A (zh) * 2016-05-10 2016-09-07 南京大学 一种分布式存储ceph的纠删码覆盖写方法
CN107729769A (zh) * 2017-09-27 2018-02-23 深信服科技股份有限公司 数据完整性保护方法、设备、系统及可读存储介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6571362B1 (en) * 2000-06-26 2003-05-27 Storage Technology Corporation Method and system of reformatting data blocks for storage as larger size data blocks
US8271700B1 (en) * 2007-11-23 2012-09-18 Pmc-Sierra Us, Inc. Logical address direct memory access with multiple concurrent physical ports and internal switching
CN102981927B (zh) * 2011-09-06 2015-11-25 阿里巴巴集团控股有限公司 分布式独立冗余磁盘阵列存储方法及分布式集群存储系统
US9990146B2 (en) * 2016-02-03 2018-06-05 Sandisk Technologies Llc Apparatus and method of data sequencing
CN107861832B (zh) * 2017-09-27 2020-11-13 深信服科技股份有限公司 数据验证方法、装置及可读存储介质

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105930103A (zh) * 2016-05-10 2016-09-07 南京大学 一种分布式存储ceph的纠删码覆盖写方法
CN107729769A (zh) * 2017-09-27 2018-02-23 深信服科技股份有限公司 数据完整性保护方法、设备、系统及可读存储介质

Also Published As

Publication number Publication date
CN110955545A (zh) 2020-04-03

Similar Documents

Publication Publication Date Title
US20200097174A1 (en) Distributed generation of random data in a storage system
US11461027B2 (en) Deduplication-aware load balancing in distributed storage systems
CN110955545B (zh) 一种数据完整性校验方法、系统及相关设备
US10108359B2 (en) Method and system for efficient cache buffering in a system having parity arms to enable hardware acceleration
CN108628541B (zh) 一种文件存储的方法、装置及存储系统
CN109445687B (zh) 一种数据存储方法以及协议服务器
US11416166B2 (en) Distributed function processing with estimate-based scheduler
US11474919B2 (en) Method for managing multiple disks, electronic device and computer program product
US11385823B2 (en) Method, electronic device and computer program product for rebuilding disk array
US9513829B1 (en) Transaction logging using round-robin block allocation and I/O size based partitions
EP4152140A1 (en) Network card and method for network card to process data
US20240143188A1 (en) Data processing method and apparatus, device, and readable storage medium
CN109983749B (zh) 计算设备和提高数据传递速度的方法
CN109478171B (zh) 提高openfabrics环境中的吞吐量
US8930626B1 (en) Cache management system and method
US10282116B2 (en) Method and system for hardware accelerated cache flush
US11068299B1 (en) Managing file system metadata using persistent cache
CN110780806B (zh) 促进元数据和数据捆绑存储的原子性保证的方法和系统
US11099740B2 (en) Method, apparatus and computer program product for managing storage device
CN110609660A (zh) Ssd阵列的主机端映射方法、装置、计算机设备及存储介质
US20210034463A1 (en) Storage system resource rebuild based on input-output operation indicator
CN111464258B (zh) 一种数据校验方法、装置、计算设备及介质
US11662955B2 (en) Direct memory access data path for RAID storage
CN116400852A (zh) 固态硬盘写性能的优化方法、装置、计算机设备及存储介质
CN113259410B (zh) 一种基于分布式存储的数据传输校验方法及系统

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