掌桥专利:专业的专利平台
掌桥专利
首页

数据校验方法、装置、计算机设备及存储介质

文献发布时间:2023-06-19 16:04:54



技术领域

本发明涉及分布式存储技术领域,更为具体地,本发明能够提供一种数据校验方法、装置、计算机设备及存储介质。

背景技术

分布式存储是指将数据分散存储于多台独立的设备上,采用可扩展的分布式存储系统结构,利用多台存储服务器分担存储负荷和利用位置服务器定位存储信息,因而分布式存储不但提高了系统可靠性、可用性和存取效率,而且还易于扩展。但是,用户经常遇到由于机械硬盘的潜在故障而导致数据写入与读出不一致的问题,该问题被称之为静默错误。

静默错误主要包括位腐(Bit Rot)、磁盘幻象写(Phantom writes)及磁盘指向错误(Misdirected reads/writes)三种。位腐指磁盘上的某个区域自发地丢失或改变电荷时,其中包含的通过存储的电荷表示存储的数据将被删除、损坏或呈现为不可读;磁盘幻象写指虽然执行了写操作,而实际机械硬盘中并无数据写入(未写入);磁盘指向错误指读取数据时指向了错误的磁盘位置(读出错)。对于分布式存储的多个副本,磁盘指向错误只导致数据暂时读错误,可通过纠正数据访问地址等手段保证获取准确的数据;但是对于位腐或磁盘幻象写情况,无法区分多个副本中哪个副本是正确的,常规方案只能够采用人工手动排查方式,以确定准确的副本,该方案不仅效率非常低,而且在数据量较大的情况下往往难以实施。

发明内容

为解决现有技术在出现位腐或磁盘幻象写情况下难以从分布式存储的多个副本中确定准确副本的问题,本发明提供了数据校验方法、装置、计算机设备及存储介质,以达到有效确定分布式存储的准确副本等目的。

为实现上述的技术目的,本发明提供了一种数据校验方法,应用于分布式存储系统的存储节点上;该数据校验方法可包括但不限于如下的至少一个步骤。

比较第一副本数据与第二副本数据,以得到第一副本数据与第二副本数据的第一比较结果;其中,第一副本数据和第二副本数据互为备份,第一副本数据和第二副本数据存储于分布式存储系统的不同或相同存储节点上。

根据第一比较结果为不同,生成第一副本数据的第一校验码。

根据第一校验码与预存的校验码相同,判定第一副本数据为正确的副本数据且第二副本数据为错误的副本数据。

本发明的可实施方式中,该数据校验方法还可包括:

根据第一校验码与预存的校验码不同,生成第二副本数据的第二校验码。

根据第二校验码与预存的校验码相同,判定第二副本数据为正确的副本数据且第一副本数据为错误的副本数据。

本发明的可实施方式中,该数据校验方法还可包括:

根据第一校验码与预存的校验码不同且第二校验码与预存的校验码不同,比较第一副本数据包含的第一数据块与第二副本数据包含的第二数据块,以得到第一数据块与第二数据块的第二比较结果。

根据第二比较结果对目标数据块进行修复;目标数据块包括至少一个第一数据块和/或至少一个第二数据块。

生成经过修复的目标数据块的新校验码。

根据新校验码与目标数据块的预存的校验码相同,确定修复成功。

本发明的可实施方式中,根据第二比较结果对目标数据块进行修复可包括:根据第二比较结果,以错误的第一数据块和/或错误的第二数据块作为目标数据块;对目标数据块中的数据位进行修复。

本发明的可实施方式中,对目标数据块中的数据位进行修复包括:

比较错误的第一数据块包含的第一数据位与错误的第二数据块包含的第二数据位,以得到第三比较结果。

根据第三比较结果,确定目标数据块中错误的数据位。

对多个连续错误的数据位进行反转处理,和/或逐一对错误的数据位进行反转处理。

本发明的可实施方式中,该数据校验方法还可包括:利用正确的副本数据对错误的副本数据进行修复,以使第一副本数据与第二副本数据相同。

本发明的可实施方式中,该数据校验方法还包括:获取第一副本数据或第二副本数据的物理地址;根据物理地址与预存的校验码的映射关系,获取预存的校验码;预存的校验码存储于固态硬盘的校验区,固态硬盘为支持端到端数据保护的固态硬盘,预存的校验码类型为数据完整性域或数据完整性扩展类型。

本发明的可实施方式中,该数据校验方法中比较第一副本数据与第二副本数据之前,还包括:接收数据校验指令;基于数据校验指令遍历机械硬盘各个存储卷的数据,以确定第一副本数据和第二副本数据;固态硬盘的缓存区用于缓存加速机械硬盘。

为实现上述技术目的,本发明提供了一种数据校验装置,应用于分布式存储系统的存储节点上;该数据校验装置包括但不限于副本数据比较模块、校验码生成模块以及副本数据判定模块。

副本数据比较模块,用于比较第一副本数据与第二副本数据,以得到第一副本数据与第二副本数据的第一比较结果;其中,第一副本数据和第二副本数据互为备份,第一副本数据和第二副本数据存储于分布式存储系统的不同或相同存储节点上。

校验码生成模块,用于根据第一比较结果为不同,生成第一副本数据的第一校验码。

副本数据判定模块,用于根据第一校验码与预存的校验码相同,判定第一副本数据为正确的副本数据且第二副本数据为错误的副本数据。

本发明的可实施方式中,校验码生成模块,用于根据第一校验码与预存的校验码不同,生成第二副本数据的第二校验码;副本数据判定模块,用于根据第二校验码与预存的校验码相同,判定第二副本数据为正确的副本数据且第一副本数据为错误的副本数据。

本发明的可实施方式中,该数据校验装置还能够包括数据块比较模块、数据块修复模块以及修复结果判断模块。

数据块比较模块,用于根据第一校验码与预存的校验码不同且第二校验码与预存的校验码不同,比较第一副本数据包含的第一数据块与第二副本数据包含的第二数据块,以得到第一数据块与第二数据块的第二比较结果。

数据块修复模块,用于根据第二比较结果对目标数据块进行修复;目标数据块包括至少一个第一数据块和/或至少一个第二数据块。

修复结果判断模块,用于根据新校验码与目标数据块的预存的校验码相同,确定修复成功;校验码生成模块用于生成经过修复的目标数据块的新校验码。

本发明的可实施方式中,数据块修复模块,用于根据第二比较结果以错误的第一数据块和/或错误的第二数据块作为目标数据块,并用于对目标数据块中的数据位进行修复。

本发明的可实施方式中,数据块修复模块,用于比较错误的第一数据块包含的第一数据位与错误的第二数据块包含的第二数据位,以得到第三比较结果。

数据块修复模块,用于根据第三比较结果,确定目标数据块中错误的数据位。

数据块修复模块,用于对多个连续错误的数据位进行反转处理,和/或用于逐一对错误的数据位进行反转处理。

本发明的可实施方式中,数据块修复模块还用于利用正确的副本数据对错误的副本数据进行修复,以使第一副本数据与第二副本数据相同。

本发明的可实施方式中,该数据校验装置还包括但不限于校验码获取模块。

校验码获取模块,用于获取第一副本数据或第二副本数据的物理地址,以及用于根据物理地址与预存的校验码的映射关系,获取预存的校验码;预存的校验码存储于固态硬盘的校验区;固态硬盘为支持端到端数据保护的固态硬盘,预存的校验码类型为数据完整性域或数据完整性扩展类型。

本发明的可实施方式中,该数据校验装置包括但不限于数据校验启动模块。

数据校验启动模块,用于接收数据校验指令,以及用于基于数据校验指令遍历机械硬盘各个存储卷的数据,以确定第一副本数据和第二副本数据;固态硬盘的缓存区用于缓存加速机械硬盘。

为实现上述技术目的,本发明还可提供一种计算机设备,包括存储器和处理器,存储器中存储有计算机可读指令,该计算机可读指令被处理器执行时,使得处理器执行本发明任一实施例中的数据校验方法的步骤。

为实现上述技术目的,本发明还能够提供一种存储有计算机可读指令的存储介质,该计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行本发明任一实施例中的数据校验方法的步骤。

本发明的有益效果为:在面对出现位腐或磁盘幻象写的情形下难以从分布式存储的多个副本中确定准确副本的问题,本发明通过比较第一副本数据和第二副本数据的方式发现副本不一致的问题,在此基础上利用生成的第一副本数据的第一校验码与预存的校验码判断为相同的方式,则确定第一副本数据为正确的副本数据且第二副本数据为错误的副本数据。可见本发明能够快速且高效地确定分布式存储中的准确的副本,基于所确定的准确的副本保证端到端数据的一致性,从而保证从分布式存储系统获取到准确的数据,进而提升了用户体验,用户满意度较高。

附图说明

图1示出了本发明一个或多个实施例中数据校验方法的一种可实施方式示意图。

图2示出了本发明一个或多个实施例中数据校验方法的另一种实施方式示意图。

图3示出了本发明一个或多个实施例中数据校验方法的再一种实施方式示意图。

图4示出了本发明一个或多个实施例中具有缓存加速架构的分布式存储结构示意图。

图5示出了本发明一个或多个实施例中缓存行与核心行的缓存映射关系示意图。

图6示出了本发明一个或多个实施例中数据校验装置的一种可实施方式示意图。

图7示出了本发明一个或多个实施例中数据校验装置的另一种实施方式示意图。

图8示出了本发明一个或多个实施例中计算机设备内部结构组成的示意图。

具体实施方式

下面结合说明书附图对本发明所提供的数据校验方法、装置、计算机设备及存储介质进行详细的解释和说明。

如图1所示,并可结合图2和图3,本发明一个或多个实施例提供了一种数据校验方法,应用于分布式存储技术领域,具体应用于分布式存储系统的存储节点上,该数据校验方法可包括但不限于如下的至少一个步骤。

步骤100,比较第一副本数据与第二副本数据,以得到第一副本数据与第二副本数据的第一比较结果;其中,第一副本数据和第二副本数据互为备份,第一副本数据和第二副本数据存储于分布式存储系统的不同或相同存储节点上。第一副本数据为分布式存储的副本数据,第二副本数据也为分布式存储的副本数据,第一副本数据和第二副本数据可以作为集群内两副本。当然,第一副本数据和第二副本数据或可作为分布式存储的三副本,此时第一副本数据作为两副本、第二副本数据作为一副本,或者第二副本数据作为两副本、第一副本数据作为一副本。应当理解的是,在没有任何错误或故障情况下,分布式存储的不同副本完全相同。本实施例以分布式存储两副本为例进行说明,第一副本数据、第二副本数据组成分布式存储两副本,本发明实施例中的第一副本数据、第二副本数据可分布在不同的存储节点上,或者第一副本数据、第二副本数据可分布在相同的存储节点上。

步骤200,根据第一比较结果为不同,生成第一副本数据的第一校验码。第一比较结果为不同能够说明第一副本数据与第二副本数据不一致,即本实施例分布式存储的两副本不同,需确定准确的副本。本发明实施例中的第一校验码类型与预存的校验码类型相同,预存的校验码类型例如为DIF(Data Integrity Field,数据完整性域类型)或DIX(DataIntegrity Extensions,数据完整性扩展类型)。DIF或DIX校验码例如可为在硬盘512字节的数据区后面增加的一个连续的8字节数据,该8字节数据被称为(PI,ProtectionInformation,保护信息)。对于DIF-数据完整性域类型,PI信息是直接设置用户数据后面,用户数据和PI共享一个缓存区(buffer);对于DIX-数据完整性扩展类型,PI信息是一个单独的缓存区(buffer),即需要提供两个独立的buffer,一个用于存放用户数据且另一个用来存放PI信息。例如数据块大小(block size)为512字节,PI使能时,如果存储8个数据块,对于DIF需要申请(512+8)×8字节的buffer,对于DIX需要申请512×8字节buffer和8×8字节PI buffer。

本实施例中以第一副本数据(chunk1)大小为1M字节、一个数据块(block)大小为512字节、一个缓存行(cacheline)为64K字节为例,则该第一副本数据为16个缓存行,并需要遍历2048个数据块;每一个数据块对应一个校验码,则本发明实施例生成第一副本数据的第一校验码数量可以为2048个,各第一校验码例如可以为ci,i=1,2,3……,2048。

本发明中如果第一比较结果为不同,则生成第一副本数据的第一校验码;如果第一比较结果为相同,则数据一致性校验通过,继续下一个副本数据(chunk),即返回步骤100,对其他剩余的副本数据进行校验。显然地,本发明只有在第一副本数据与第二副本数据两者比较结果不同时,才进行校验码的计算,可见本发明具有占用资源更小、执行效率更高及实现过程更便捷等突出优点。

步骤300,根据第一校验码与预存的校验码相同,判定第一副本数据为正确的副本数据且第二副本数据为错误的副本数据。本发明具体将预存的校验码作为副本数据是否准确的判断依据,如果生成的当前副本数据的校验码与预存的校验码相同,则说明当前的副本数据为正确的副本数据;如果生成的当前副本数据的校验码与预存的校验码不同,说明当前的副本数据为错误的副本数据。本发明可根据生成的第一校验码与预存的校验码相同,快速且准确地判断出第一副本数据为正确的副本数据,而第一副本数据与第二副本数据不同,说明第二副本数据为错误的副本数据,可见本发明能够有效确定分布式存储的准确副本,解决常规技术存在的无法自动区分多个副本中哪个副本正确的问题。

本发明一个或多个实施例中的数据校验方法还能够包括:利用正确的副本数据对错误的副本数据进行修复,本实施例具体利用正确的第一副本数据对错误的第二副本数据进行修复,以使第二副本数据与第一副本数据相同;具体实施时,本发明通过第一副本数据覆盖第二副本数据方式进行修复。

如图4所示,本发明实施例中的数据校验方法在比较第一副本数据与第二副本数据之前还可包括:接收数据校验指令,基于数据校验指令遍历机械硬盘各个存储卷的数据,以确定第一副本数据和第二副本数据;固态硬盘的缓存区用于缓存加速机械硬盘。具体实施时,存储引擎处理模块按照预设周期发出数据校验指令,实现以预设周期触发数据一致校验,则本发明校验装置可按照预设周期接收数据校验指令,该数据校验指令用于启动数据遍历的流程,具体逐一遍历节点中各存储卷副本数据(chunk),遍历的副本数据可包括本发明涉及的第一副本数据chunk1和第二副本数据chunk1’。其中,本发明第一副本数据和第二副本数据可以存储于不同的节点中或不同的机械硬盘中,图4示出了三个存储节点,具体实施时节点数量根据实际需求进行设置。对于任一个存储节点,其包括n个硬盘,n≥1且为整数;本实施例各存储节点分别设置有固态硬盘(SSD),固态硬盘包括缓存区和校验区,缓存区用于缓存待存储至机械硬盘的数据,校验区用于存储预存的校验码,预存的校验码类型可为DIF或DIX。本发明通过固态硬盘(SSD)同时实现缓存盘功能和校验码存放盘功能,而不需要增加新的硬件介质,降低了分布式存储系统的搭建成本。

如图4和图5所示,本发明实施例中的数据校验方法还能够包括获取预存的校验码过程:获取第一副本数据或第二副本数据的物理地址,根据物理地址与预存的校验码的映射关系,获取预存的校验码;预存的校验码存储于固态硬盘的校验区,固态硬盘为支持端到端数据保护的固态硬盘,预存的校验码类型为数据完整性域或数据完整性扩展类型。图5中示出的映射关系例如可以是核心行5与缓存行1之间存在缓存映射,核心行1与缓存行2之间存在缓存映射,核心行6与缓存行3之间存在缓存映射,核心行2与缓存行4之间存在缓存映射,核心行9与缓存行5之间存在缓存映射,核心行3与缓存行6之间存在缓存映射,当然并不限于此。本发明实施例通过查询副本数据的元数据的方式获取副本数据的物理地址,具体可以通过查询分布式存储的第一副本数据chunk1的元数据方式确定第一副本数据chunk1存放位置,该存放位置例如具体为节点1disk sdb 0x10000位置;然后再访问副本数据的物理地址所对应的SSD校验区,按照节点1disk sdb 0x10000位置的索引对应的预存的校验码,对于1M字节大小的第一副本数据(chunk1),则校验码CRC16值可为ai,i=1,2,3……,2048。具体实施时,本实施例能通过应用程序接口(API,Application ProgrammingInterface)调用的方式获取预存的校验码。本实施例判断第一校验码与预存的校验码相同可包括:判断ci==ai是否成立,若成立,则说明第一校验码与预存的校验码相同,判定第一副本数据为正确的副本数据且第二副本数据为错误的副本数据。

作为一个较佳的实施方式,本发明涉及的预存的校验码、第一校验码以及第二校验码可利用SSD控制芯片生成,即本发明能够实现通过SSD硬件能力加速校验码的计算,实现使能依靠固态硬盘芯片能力自动生成和存储校验码。相比于常规的利用CPU计算校验码的方式存在耗费大量的CPU资源情况,本发明提供的技术方案能为分布式存储系统带来更高的性能。

本发明分布式存储系统可以包括IO(Input Output,输入输出)引擎处理模块和缓存处理模块。IO引擎处理模块可用于响应存储客户端的IO请求,以及分发多副本IO请求到指定节点,并定期启动数据校验。缓存处理模块可用于将数据缓存至本节点的缓存区,将本节点数据块的预存的验证码保存至本节点的校验区。具体实施时,数据存储过程可包括初始化过程和IO写入过程中的校验码存储过程。在初始化过程中,将SSD划分为如上的缓存区和校验区,缓存区用作本节点的机械硬盘的缓存区,校验区用作本节点机械硬盘的数据块的预存的校验码;其中,本实施例例如可按照数据块与校验码的512:8=64:1比例,校验区的存储空间至少为节点所有机械硬盘总容量的1/64,若考虑节点允许增加机械硬盘,SSD需要为校验区预留空间;初始化过程可通过存储IO引擎按照缓存区与多块机械硬盘架构进行集群部署,以配置多个节点。在校验码存储过程中,首先,存储客户端访问存储系统,向存储IO引擎下发写IO,存储IO引擎用于查询IO对应的副本数据(chunk)元数据,例如可得到两副本节点号1和节点号2,以及将两副本IO分发到所指定的节点1和节点2;其次,利用缓存处理模块在节点1先将数据写入SSD缓存区,再写入硬盘存储空间,写入SSD缓存时,可利用SSD支持DIF或DIX的硬件特征,通过SSD控制芯片自动对每个写入SSD的数据生成预存的校验码,该校验码例如可以是CRC16(Cyclic Redundancy Check,循环冗余校验)校验码,并将预存的校验码存储至SSD校验区,后续可通过API获取预存的校验码;在缓存(cache)落盘前或在缓存淘汰前,将当前缓存行(cacheline)按照512字节分块,通过SSD驱动DIF或DIX API,以确定大小为512字节的数据块所对应的预存的校验码ai,i以512字节为单位;在节点1中查找内存中的缓存的元数据,获取当前缓存行对应的物理磁盘(例如机械硬盘)的地址bj,例如图5中缓存行1至缓存行6,核心行(core line)1至核心行(core line)9具体可为后端存储(Backend Storage),核心行存放物理地址bj,j以缓存行大小为单位,本实施例缓存行大小可以为64K字节;然后以物理地址bj为索引,将ai按序保存至校验区,其中一条缓存行对应有64K/512=125个校验码;最后,可利用缓存处理模块在指定节点1将缓存的IO数据落盘,完成将数据存储至机械硬盘;对于节点2,校验码存储过程和数据存储过程与节点1类似,则不再进行赘述;通过上述方式实现两副本的写入过程,在本发明中实现第一副本数据和第二副本数据写入对应节点机械硬盘的过程。

如图2所示,如果第一校验码与预存的校验码不同,本发明实施例的数据校验方法还可包括步骤400和步骤500。

步骤400,根据第一校验码与预存的校验码不同,生成第二副本数据的第二校验码。本发明实施例中的第二校验码类型也与预存的校验码类型相同,例如可以为DIF或DIX。可见本发明在第一副本数据chunk1校验不通过情况下,继续校验第二副本数据chunk1’,以判断第二副本数据chunk1’是否为正确的数据。

步骤500,根据第二校验码与预存的校验码相同,判定第二副本数据为正确的副本数据且第一副本数据为错误的副本数据。本发明用于Ceph等分布式存储系统,通过快速确定正确的副本数据方式响应用户数据请求。

本发明实施例中的数据校验方法还可包括:利用正确的副本数据对错误的副本数据进行修复,具体利用正确的第二副本数据对错误的第一副本数据进行修复,以使第一副本数据与第二副本数据相同;本实施例在具体实施时,可通过正确的第二副本数据覆盖第一副本数据方式进行修复。

如图3所示,如果本发明第一校验码与预存的校验码不同且第二校验码与预存的校验码不同,本发明实施例的数据校验方法还包括步骤600和步骤700。

步骤600,根据第一校验码与预存的校验码不同且第二校验码与预存的校验码不同,比较第一副本数据包含的第一数据块与第二副本数据包含的第二数据块,以得到第一数据块与第二数据块的第二比较结果。可见本发明还能够在第一校验码、第二校验码均不同于预存的校验码情况下,即第一副本数据chunk1和第二副本数据chunk1’均不准确情况下,本发明还能够对副本数据进行试探性修复处理。

步骤700,根据第二比较结果对目标数据块进行修复;目标数据块包括至少一个第一数据块和/或至少一个第二数据块。可见本发明可对第一副本数据包含的第一数据块进行修复,或对第二副本数据包含的第二数据块进行修复,或对第一副本数据包含的第一数据块和第二副本数据包含的第二数据块均进行修复。相比于将数据异常问题交给用户手动解决的传统方式,本发明能够自动修复发生错误的副本数据,保证用户能够读取准确的数据。

本发明实施例能够针对性地修复错误的数据块,根据第二比较结果对目标数据块进行修复包括:根据第二比较结果,以错误的第一数据块和/或错误的第二数据块作为目标数据块;对目标数据块中的数据位进行修复。以副本数据chunk大小为1M字节为例,则每个chunk包括2048个512字节大小的数据块。比较第一副本数据chunk1包含的2048个第一数据块与第二副本数据chunk1’包含的2048个数据块。例如发现第一副本数据chunk1中的数据块ax与第二副本数据chunk1’中的数据块ax’不同,即对数据块ax计算出的校验码与所对应的预存的校验码不同且数据块ax’计算出的校验码与所对应的预存的校验码不同,则确定数据块ax和数据块ax’为错误的数据块(目标数据块),本实施例对数据块ax和/或数据块ax’进行修复处理。

本实施例能够有针对性地修复错误的数据块中的错误的数据位,则本实施例对目标数据块中的数据位进行修复可包括:比较错误的第一数据块包含的第一数据位与错误的第二数据块包含的第二数据位,以得到第三比较结果;根据第三比较结果对目标数据块中的数据位进行反转处理。具体实施时,根据第三比较结果确定相同的第一数据位和第二数据位,并确定不同的第一数据位和第二数据位;对于相同的第一数据位和第二数据位,则保留其数据位作为新数据位,而对于不同的第一数据位和第二数据位,进行对应地修复,修复的方式为反转处理。

具体地,本发明一个或多个实施例中根据第三比较结果对目标数据块中的数据位进行反转处理包括:根据第三比较结果,确定目标数据块中错误的数据位;对多个连续错误的数据位进行反转处理,和/或逐一对错误的数据位进行反转处理。本发明通过对多个连续错误的数据位进行反转处理的数据修复手段,对区域性出错的多个数据位能够更快、更准确地修复;本发明通过逐一对错误的数据位进行反转处理的修复手段,对个别位出错的数据位能够更准确和更有效地修复,所以本发明能够实现对不同情形的数据错误的针对性修复。

本发明一个或多个实施例中的数据校验方法还包括:生成经过修复的目标数据块的新校验码,以及根据新校验码与目标数据块的预存的校验码相同,确定修复成功;否则修复失败。在上述修复是否成功判断方式基础上,本发明也可通过生成经过修复的副本数据的新校验码,以及根据副本数据的新校验码与副本数据的预存的校验码比较,若相同,则可确定修复成功,否则修复失败。

如图6所示,与数据校验方法基于同一发明技术构思,本发明一个或多个实施例还能够提供一种数据校验装置,应用于分布式存储技术领域,具体应用于分布式存储系统的存储节点上。

与数据校验方法相对应,该数据校验装置包括但不限于副本数据比较模块、校验码生成模块以及副本数据判定模块,具体说明如下。

副本数据比较模块,用于比较第一副本数据与第二副本数据,以得到第一副本数据与第二副本数据的第一比较结果;其中,第一副本数据和第二副本数据互为备份,第一副本数据和第二副本数据存储于分布式存储系统的不同或相同存储节点上。

校验码生成模块,用于根据第一比较结果为不同,生成第一副本数据的第一校验码。

副本数据判定模块,用于根据第一校验码与预存的校验码相同,判定第一副本数据为正确的副本数据且第二副本数据为错误的副本数据。

本发明实施例中的校验码生成模块还可用于根据第一校验码与预存的校验码不同,生成第二副本数据的第二校验码。副本数据判定模块还可用于根据第二校验码与预存的校验码相同,判定第二副本数据为正确的副本数据且第一副本数据为错误的副本数据。

如图7所示,本发明一个或多个实施例中的数据校验装置还能够包括数据块比较模块、数据修复模块以及修复结果判断模块。

数据块比较模块,可用于根据第一校验码与预存的校验码不同且第二校验码与预存的校验码不同,比较第一副本数据包含的第一数据块与第二副本数据包含的第二数据块,以得到第一数据块与第二数据块的第二比较结果。数据块修复模块,用于根据第二比较结果对目标数据块进行修复;目标数据块包括至少一个第一数据块和/或至少一个第二数据块。

修复结果判断模块,用于根据新校验码与目标数据块的预存的校验码相同,确定修复成功;校验码生成模块用于生成经过修复的目标数据块的新校验码。

具体地,数据块修复模块用于根据第二比较结果以错误的第一数据块和/或错误的第二数据块作为目标数据块,并用于对目标数据块中的数据位进行修复。

更为具体地,数据块修复模块,用于比较错误的第一数据块包含的第一数据位与错误的第二数据块包含的第二数据位,以得到第三比较结果;数据块修复模块,用于根据第三比较结果对目标数据块中的数据位进行反转处理。本发明一个或多个实施例的数据块修复模块,用于根据第三比较结果,确定目标数据块中错误的数据位;数据块修复模块,用于对多个连续错误的数据位进行反转处理,和/或用于逐一对错误的数据位进行反转处理。

可选地,本发明一个或多个实施例中的数据块修复模块还可用于利用正确的副本数据对错误的副本数据进行修复,以使第一副本数据与第二副本数据相同。

本发明一个或多个实施例中的数据校验装置还能够包括校验码获取模块。

校验码获取模块,用于获取第一副本数据或第二副本数据的物理地址,以及用于根据物理地址与预存的校验码的映射关系,获取预存的校验码;预存的校验码存储于固态硬盘的校验区,固态硬盘为支持端到端数据保护的固态硬盘,预存的校验码类型为数据完整性域或数据完整性扩展类型。

本发明一个或多个实施例中的数据校验装置还可包括数据校验启动模块。

数据校验启动模块,用于接收数据校验指令,以及用于基于数据校验指令遍历机械硬盘各个存储卷的数据,以确定第一副本数据和第二副本数据;固态硬盘的缓存区用于缓存加速机械硬盘。

如图8所示,与数据校验方法基于同一发明技术构思,本发明一个或多个实施例还能够提供一种计算机设备,该计算机设备包括存储器和处理器,存储器中存储有计算机可读指令,计算机可读指令被处理器执行时,使得处理器执行本发明任一实施例中的数据校验方法的步骤。其中,数据校验方法的详细执行过程已经在本说明书中有详细的记载,此处不再进行赘述。

如图8所示,与数据校验方法基于同一发明技术构思,本发明一个或多个实施例还可提供一种存储有计算机可读指令的存储介质,计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行本发明任一实施例中的数据校验方法的步骤。其中,数据校验方法的详细执行过程已经在本说明书中有详细的记载,此处不再进行赘述。

在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读存储介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读存储介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读存储介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM,Random Access Memory),只读存储器(ROM,Read-Only Memory),可擦除可编辑只读存储器(EPROM,Erasable Programmable Read-Only Memory,或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM,Compact Disc Read-Only Memory)。另外,计算机可读存储介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。

应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA,Programmable Gate Array),现场可编程门阵列(FPGA,Field Programmable Gate Array)等。

在本说明书的描述中,参考术语“本实施例”、“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明实质内容上所作的任何修改、等同替换和简单改进等,均应包含在本发明的保护范围之内。

技术分类

06120114694482