CN108573007A - 检测数据一致性的方法、装置、电子设备及存储介质 - Google Patents

检测数据一致性的方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN108573007A
CN108573007A CN201710427716.3A CN201710427716A CN108573007A CN 108573007 A CN108573007 A CN 108573007A CN 201710427716 A CN201710427716 A CN 201710427716A CN 108573007 A CN108573007 A CN 108573007A
Authority
CN
China
Prior art keywords
data
copy
check code
written
check
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
CN201710427716.3A
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.)
Beijing Kingsoft Cloud Network Technology Co Ltd
Beijing Kingsoft Cloud Technology Co Ltd
Original Assignee
Beijing Kingsoft Cloud Network Technology Co Ltd
Beijing Kingsoft Cloud Technology 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 Beijing Kingsoft Cloud Network Technology Co Ltd, Beijing Kingsoft Cloud Technology Co Ltd filed Critical Beijing Kingsoft Cloud Network Technology Co Ltd
Priority to CN201710427716.3A priority Critical patent/CN108573007A/zh
Publication of CN108573007A publication Critical patent/CN108573007A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本发明实施例提供了检测数据一致性的方法、装置、电子设备及存储介质,应用于对象存储技术领域,该检测数据一致性的方法包括:获取待检测数据的所有副本,其中,副本包括数据主体及第一校验码,第一校验码为将副本写入分布式对象存储系统中时,所存储的验证码;分别根据每个副本的数据主体,通过预设算法,计算各副本的第二校验码;判断所有第一校验码及所有第二校验码是否均相同;在所有第一校验码及所有第二校验码均相同时,判定待检测数据的所有副本具备一致性。通过该检测数据一致性的方法,能够检测已写入分布式对象存储系统中数据的一致性。

Description

检测数据一致性的方法、装置、电子设备及存储介质
技术领域
本发明涉及对象存储技术领域,特别是涉及检测数据一致性的方法、装置、电子设备及存储介质。
背景技术
随着计算机技术的发展,网络中的数据量呈现井喷式的增长,传统文件存储系统由于无用元数据过多占用空间,文件读取涉及磁盘IO(Input/Output,输入/输出端口)瓶颈等原因,已经无法满足巨量数据的存储。对象存储能够在一个高度可用的系统中存储任意的对象,用户和应用可以在对象存储系统中使用简单的API(Application ProgrammingInterface,应用程序编程接口)访问数据,对象存储系统有着接近无限的扩展能力,适用于大量数据存储。常用的对象存储系统有Google File System,Haystack,Taobao FileSystem等。
分布式对象存储通过在多个磁盘上存储多个副本来保证数据的安全,多个副本间的一致性模型是存储系统和数据使用者间约定的,包括:强一致性,弱一致性和最终一致性。强一致性指存储系统中的某个数据被成功更新(事务成功返回)后,后续任何对该数据的读取操作都能得到更新后的值。这也是传统的关系数据库所提供的一致性模型。所谓弱一致性是指存储系统中的某个数据被更新后,后续对该数据的读取操作得到的不一定是更新后的值,在这种情况下有个“不一致性时间窗口”存在,在过了这个“不一致性时间窗口”之后,后续的读取才能得到更新后的值。而最终一致性是弱一致性的一种情况,指的是某个数据更新后没有被再次更新,那么最终所有的读取操作都会返回更新后的数据。
在现有的应用于分布式对象存储系统的检测数据一致性的方法中,在将待存储数据的副本写入到各存储介质(如磁盘等)时,分别检查各副本的校验码与用户发送的存储请求中的校验码是否相同,若均相同则认为各副本中的数据符合一致性。但是在副本写入到各存储介质中后,由于物理碰撞、硬件过期及掉电等原因,会导致副本中数据的损毁,因此对于已写入分布式对象存储系统中的数据仍然需要检测数据的一致性,但现有的检测数据一致性的方法不能够检测已写入分布式对象存储系统中数据的一致性。
发明内容
本发明实施例的目的在于提供一种检测数据一致性的方法、装置、电子设备及存储介质,以实现检测已写入分布式对象存储系统中数据的一致性。具体技术方案如下:
第一方面,本发明实施例提供了一种检测数据一致性的方法,应用于分布式对象存储系统,包括:
获取待检测数据的所有副本,其中,所述副本包括数据主体及第一校验码,第一校验码为将所述副本写入所述分布式对象存储系统中时,所存储的验证码;
分别根据每个副本的数据主体,通过预设算法,计算各副本的第二校验码;
判断所有第一校验码及所有第二校验码是否均相同;
在所有第一校验码及所有第二校验码均相同时,判定所述待检测数据的所有副本具备一致性。
可选的,在所述获取待检测数据的所有副本之后,所述方法还包括:
当存在缺失的副本时,对所述缺失的副本进行恢复。
可选的,在所述当存在缺失的副本时,对所述缺失的副本进行恢复之后,所述方法还包括:
发送标识所述缺失的副本的告警信息。
可选的,在所述判断所有第一校验码及所有第二校验码是否均相同之后,所述方法还包括:
在所有第一校验码及所有第二校验码不均相同时,比较所有第一校验码及所有第二校验码,确定正常数据及异常数据;
利用所述正常数据,修复所述异常数据。
可选的,所述获取待检测数据的所有副本,包括:
周期性的获取所述待检测数据的所有副本。
可选的,在所述获取待检测数据的所有副本之前,所述方法还包括:
接收由数据写入端发送的待写入数据及校验码;
利用所述预设算法对所述待写入数据进行计算,生成第三校验码;
在由所述数据写入端发送的校验码与所述第三校验码相同时,写入所述待写入数据至所述分布式对象存储系统中,并将所述第三校验码写入到当前存储装置的Block结构的ObjectHeader中。
可选的,在所述在由所述数据写入端发送的校验码与所述第三校验码相同时,写入所述待写入数据至所述分布式对象存储系统中,并将所述第三校验码写入到当前存储装置的Block结构的ObjectHeader中之后,所述方法还包括:
获取所述待写入数据及接收到的所述待写入数据的校验码,将接收到的所述待写入数据的校验码与所述数据写入端发送的校验码进行比较;
在接收到的所述待写入数据的校验码与所述数据写入端发送的校验码相同时,保存所述待写入数据,并将接收到的所述待写入数据的校验码写入到当前存储装置的Block结构的ObjectHeader中。
可选的,在所述在所有第一校验码及所有第二校验码均相同时,判定所述待检测数据的所有副本具备一致性之后,所述方法还包括:
获取由数据请求端发送的读取指令,根据所述读取指令选择待读取数据的第一副本,其中,所述第一副本为所述待读取数据的任意副本;
利用所述预设算法,对所述第一副本的数据主体进行计算,生成第四校验码;
在所述第四校验码与所述第一副本中保存的校验码相同时,向所述数据请求端发送所述第一副本。
可选的,在所述利用所述预设算法,对所述第一副本的数据主体进行计算,生成第四校验码之后,所述方法还包括:
在所述第四校验码与所述第一副本中存储的校验码不同时,选取所述待读取数据的第二副本,其中,所述第二副本为所述待读取数据的除所述第一副本外的其他副本中的副本;
利用所述预设算法,对所述第二副本的数据主体进行计算,生成第五校验码;
在所述第五校验码与所述第二副本中保存的校验码相同时,向所述数据请求端发送所述第二副本;
根据所述第二副本修复所述第一副本。
第二方面,本发明实施例提供了一种检测数据一致性的装置,应用于分布式对象存储系统,包括:
副本获取模块,用于获取待检测数据的所有副本,其中,所述副本包括数据主体及第一校验码,第一校验码为将所述副本写入所述分布式对象存储系统中时,所存储的验证码;
第一计算模块,用于分别根据每个副本的数据主体,通过预设算法,计算各副本的第二校验码;
第一判定模块,用于判断所有第一校验码及所有第二校验码是否均相同;
一致性判定模块,用于在所有第一校验码及所有第二校验码均相同时,判定所述待检测数据的所有副本具备一致性。
可选的,所述检测数据一致性的装置还包括:
第一恢复模块,用于当检测到存在缺失的副本时,对所述缺失的副本进行恢复。
可选的,所述检测数据一致性的装置还包括:
告警模块,用于发送标识所述缺失的副本的告警信息。
可选的,所述检测数据一致性的装置还包括:
异常确定模块,用于在所有第一校验码及所有第二校验码不均相同时,比较所有第一校验码及所有第二校验码,确定正常数据及异常数据;
第二恢复模块,用于利用所述正常数据,修复所述异常数据。
可选的,所述副本获取模块具体用于:
周期性的获取所述待检测数据的所有副本。
可选的,所述检测数据一致性的装置还包括:
待写入数据接收模块,用于接收由数据写入端发送的待写入数据及校验码;
第二计算模块,用于利用所述预设算法对所述待写入数据进行计算,生成第三校验码;
数据写入模块,用于在由所述数据写入端发送的校验码与所述第三校验码相同时,写入所述待写入数据至所述分布式对象存储系统中,并将所述第三校验码写入到当前存储装置的Block结构的ObjectHeader中。
可选的,所述检测数据一致性的装置还包括:
第二判定模块,用于获取所述待写入数据及接收到的所述待写入数据的校验码,将接收到的所述待写入数据的校验码与所述数据写入端发送的校验码进行比较;
副本同步模块,用于在接收到的所述待写入数据的校验码与所述数据写入端发送的校验码相同时,保存所述待写入数据,并将接收到的所述待写入数据的校验码写入到当前存储装置的Block结构的ObjectHeader中。
可选的,所述检测数据一致性的装置还包括:
读取指令接收模块,用于获取由数据请求端发送的读取指令,根据所述读取指令选择待读取数据的第一副本,其中,所述第一副本为所述待读取数据的任意副本;
第三计算模块,用于利用所述预设算法,对所述第一副本的数据主体进行计算,生成第四校验码;
第三判定模块,用于在所述第四校验码与所述第一副本中保存的校验码相同时,向所述数据请求端发送所述第一副本。
可选的,所述检测数据一致性的装置还包括:
第四判定模块,用于在所述第四校验码与所述第一副本中存储的校验码不同时,选取所述待读取数据的第二副本,其中,所述第二副本为所述待读取数据的除所述第一副本外的其他副本中的副本;
第四计算模块,用于利用所述预设算法,对所述第二副本的数据主体进行计算,生成第五校验码;
第五判定模块,用于在所述第五校验码与所述第二副本中保存的校验码相同时,向所述数据请求端发送所述第二副本;
第三恢复模块,用于根据所述第二副本修复所述第一副本。
第三方面,本发明实施例提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现上述第一方面的任一所述的方法步骤。
第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面的任一所述的方法步骤。
本发明实施例提供的检测数据一致性的方法、装置、电子设备及存储介质,获取待检测数据的所有副本,其中,副本包括数据主体及第一校验码,第一校验码为将副本写入分布式对象存储系统中时,所存储的验证码;分别根据每个副本的数据主体,通过预设算法,计算各副本的第二校验码;判断所有第一校验码及所有第二校验码是否均相同;在所有第一校验码及所有第二校验码均相同时,判定待检测数据的所有副本具备一致性。可以检测已写入分布式对象存储系统中数据的一致性。当然,实施本发明的任一产品或方法必不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例的检测数据一致性的方法的流程示意图;
图2为本发明实施例的两副本待检测数据的分布式对象存储系统中,同一待检测数据的各副本的示意图;
图3为本发明实施例的三副本待检测数据的分布式对象存储系统中,同一待检测数据的各副本的示意图;
图4为本发明实施例的block结构文件的示意图;
图5为本发明实施例的检测数据一致性的装置的示意图;
图6为本发明实施例的检测数据一致性的电子设备的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
由于物理碰撞,硬件掉电等原因,分布式对象存储系统中存储的数据的副本会损毁,因此不仅要在写入数据时检查数据的一致性,还需要对已写入到分布式对象存储系统中的数据进行一致性检验。为此,参见图1,本发明实施例提供了一种检测数据一致性的方法,包括:
S101,获取待检测数据的所有副本,其中,副本包括数据主体及第一校验码,第一校验码为将副本写入分布式对象存储系统中时,所存储的验证码。
本发明实施例中的待检测数据为分布式对象存储系统中的任意一个等待检测副本一致性的数据,本发明实施例的检测数据一致性的方法是针对每个待检测数据的检验方法,可以理解的是本发明实施例中的第一校验码及第二校验码为同一个待检测数据的各副本的校验码。
在检测待检测数据的所有副本的一致性时,首先要确定待检测数据的各副本的标识(例如副本的ID),检测装置根据各副本的标识,获取待检测数据的所有副本。在未发生损毁的情况下,每个副本均包括数据主体及第一校验码,且第一校验码与写入待检测数据时数据写入端(请求写入数据的客户端)发送的校验码相同。数据主体为待检测数据的数据正文。
检测装置可以为一种设备,包括:处理器、存储器、通信接口和总线;处理器、存储器和通信接口通过总线连接并完成相互间的通信;存储器存储可执行程序代码;处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,以用于执行检测数据一致性的方法。
检测装置还可以为一种应用于分布式对象存储系统的应用程序,用于在运行时执行检测数据一致性的方法。
检测装置还可以为一种应用于分布式对象存储系统的存储介质,用于存储可执行代码,可执行代码用于执行检测数据一致性方法。
S102,分别根据每个副本的数据主体,通过预设算法,计算各副本的第二校验码。
检测装置利用预设算法,计算各副本的数据主体的第二校验码。预设算法为符合本发明实施例的任意校验码计算方法,例如循环冗余检验算法、消息摘要算法第5版、安全哈希算法、累加和校验算法或奇偶校验算法等。此处的预设算法与数据写入端中计算校验码的算法相同,以保证能够将第二校验码与第一校验码进行比较。
可选的,分别根据每个副本的数据主体,通过预设算法,计算各副本的第二校验码,包括:向分布式对象存储系统中保存有待检测数据副本的各存储装置发送计算指令,以使各存储装置分别根据自身存储的副本的数据主体,利用预设算法,计算出各存储装置自身中待检测数据副本的数据主体的检验码,作为第二校验码。在本发明实施例中,向各存储装置发送计算指令,以使各存储装置分别计算自身中待检测数据副本的数据主体的检验码,充分利用了每个存储装置的计算能力,能够合理利用计算资源。对于正常工作的分布式对象存储系统,每个存储装置的运算压力均不同,且不同时段同一存储装置的运算压力也会不同,检测装置可以实时汇总每个存储装置的运算压力,根据每个存储装置当前的运算压力,决定计算校验码的速度,即实时控制检测数据一致性的速度,能够最大化的利用分布式对象存储系统中的各项资源。
S103,判断所有第一校验码及所有第二校验码是否均相同。
检测装置根据计算出的第二校验码,及各副本中的第一校验码,判断同一待检测数据的所有副本的第一校验码及第二校验码是否均相同。
所有第一校验码及所有第二校验码的判断顺序为符合本发明实施例的任意顺序,例如先判断所有第一校验码是否相同,再判断所有第二校验码是否相同,然后选取任意的第一校验码与第二校验码进行判断。
可选的,判断所有第一校验码及所有第二校验码是否均相同,包括:分别判定分布式对象存储系统中保存有待检测数据副本的各存储装置内的数据主体的第二校验码与第一校验码是否相同,再判定各存储装置间存储的第一校验码是否均相同。在本发明实施例中,在各存储装置之间,仅需判定各存储装置中存储的第一校验码是否均相同,数据传输的信令负载低,能够节约通信资源。
S104,在所有第一校验码及所有第二校验码均相同时,判定待检测数据的所有副本具备一致性。
在同一待检测数据的所有第一校验码及所有第二校验码均相同时,判定该待检测数据的所有副本具备一致性。
在本发明实施例中,分别根据每个副本的数据主体,计算各副本的第二校验码,并在所有第一校验码及所有第二校验码均相同时,判定待检测数据的所有副本具备一致性,可以检测已写入分布式对象存储系统中数据的一致性,对数据一致性的检测考虑更加全面。并且判断所有第一校验码及所有第二校验码是否均相同,能够确定各数据主体的一致性,数据一致性的判定准确。
可选的,在获取待检测数据的所有副本之后,该方法还包括:
当存在缺失的副本时,对缺失的副本进行恢复。
分布式对象存储系统中记录了待检测数据的各副本的标识,检测装置根据副本的标识无法找到相应的副本时,判定该副本缺失。检测装置根据检测到的副本,来恢复缺失的副本。可选的,对检测到的副本进行数据一致性的检测,在检测到的副本具有一致性时,选取任一的副本进行拷贝,对缺失的副本进行恢复。保证副本的一致性,能够保证恢复的副本的正确性。
在本发明实施例中,对缺失的副本进行恢复,防止因副本缺失造成的数据失效,保证了待检测数据的有效性。能够对已写入分布式对象存储系统中的数据进行校正,对于数据一致性的校正考虑更全面。
可选的,在当存在缺失的副本时,对缺失的副本进行恢复之后,该方法还包括:
发送标识缺失的副本的告警信息。
告警信息中还可以包括恢复缺失的副本的数据来源,以方便运维人员对数据的整体掌控。
在本发明实施例中,发送标识缺失的副本的告警信息,方便运维人员分析异常的原因。
可选的,在判断所有第一校验码及所有第二校验码是否均相同之后,该方法还包括:
步骤一,在所有第一校验码及所有第二校验码不均相同时,比较所有第一校验码及所有第二校验码,确定正常数据及异常数据。
当同一待检测数据的所有第一校验码及所有第二校验码不均相同时,对所有第一校验码及所有第二校验码进行比较,选取相同的第一校验码和第二校验码对应的数据作为正常数据,选取与其他第一校验码及第二校验码不同的第一校验码和/或第二校验码对应的数据作为异常数据。可选的,当无法确认正常数据及异常数据时,发送标识副本异常的告警信息。发送标识副本异常的告警信息,方便运维人员分析异常和修复副本。
步骤二,利用正常数据,修复异常数据。
可选的,利用正常数据,修复异常数据,包括:删除异常数据,拷贝与异常数据对应的正常数据替代异常数据,以完成修复异常数据。其中,当异常数据为数据主体时,与异常数据对应的正常数据为正常的数据主体,当异常数据为第一校验码时,与异常数据对应的正常数据为正常的第一校验码。将异常数据进行删除,拷贝正常数据替代异常数据,仅针对副本中异常的部分进行操作,修改的数据少。
可选的,利用正常数据,修复异常数据,包括:删除包含异常数据的副本,拷贝数据主体及第一校验码均为正常数据的副本代替包含异常数据的副本。拷贝数据主体及第一校验码均为正常数据的副本代替包含异常数据的副本,将整个副本进行删除或拷贝操作,操作简单。
参见图2,以两副本待检测数据的分布式对象存储系统为例,对修复异常数据的方法进行举例说明。其中,Header Crc1 201为两副本待检测数据中第一个副本的第一校验码,Body Crc1 202为两副本待检测数据中第一个副本的第二校验码,Header Crc2 203为两副本待检测数据中第二个副本的第一校验码,Body Crc2 204为两副本待检测数据中第二个副本的第二校验码。
当Header Crc1 201=Body Crc1 202=Header Crc2 203=Body Crc2 204时,两副本待检测数据中第一个副本的第一校验码、两副本待检测数据中第一个副本的数据主体、两副本待检测数据中第二个副本的第一校验码及两副本待检测数据中第二个副本的数据主体均为正常数据,两个副本具备一致性。
当Header Crc1 201=Body Crc1 202=Header Crc2 203≠Body Crc2 204时,两副本待检测数据中第一个副本的第一校验码、两副本待检测数据中第一个副本的数据主体及两副本待检测数据中第二个副本的第一校验码为正常数据,两副本待检测数据中第二个副本的数据主体为异常数据。删除两副本待检测数据中第二个副本,拷到两副本待检测数据中第一个副本代替删除的两副本待检测数据中第二个副本。
当Header Crc1 201=Body Crc1 202=Body Crc2 204≠Header Crc2 203时,两副本待检测数据中第一个副本的第一校验码、两副本待检测数据中第一个副本的数据主体及两副本待检测数据中第二个副本的数据主体为正常数据,两副本待检测数据中第二个副本的第一校验码为异常数据。删除两副本待检测数据中第二个副本,拷到两副本待检测数据中第一个副本代替删除的两副本中第二个副本。
当Header Crc1 201=Body Crc1 202≠Header Crc2 203≠Body Crc2 204时,两副本待检测数据中第一个副本的第一校验码及两副本待检测数据中第一个副本的数据主体为正常数据,两副本待检测数据中第二个副本的第一校验码及两副本待检测数据中第二个副本的数据主体为异常数据。删除两副本待检测数据中第二个副本,拷到两副本待检测数据中第一个副本代替删除的两副本待检测数据中第二个副本。
当无法确认正常数据及异常数据时,发送标识副本异常的告警信息,以方便运维人员进行人工修复。
在实际的分布式对象存储系统中,为保证数据的安全,通常保存三个副本。多数情况下出现损毁的副本仅为三个副本中的一个,此时仍有两个副本是正常的,选取任一正常的副本,帮助恢复损毁的副本。
参见图3,以三副本待检测数据的分布式对象存储系统为例,对修复异常数据的方法进行举例说明。其中,Header Crc3 301为三副本待检测数据中第一个副本的第一校验码,Body Crc3 302为三副本待检测数据中第一个副本的第二校验码,Header Crc4 303为三副本待检测数据中第二个副本的第一校验码,Body Crc4 304为三副本待检测数据中第二个副本的第二校验码,Header Crc5305为三副本待检测数据中第三个副本的第一校验码,Body Crc5 306为三副本待检测数据中第三个副本的第二校验码。
当Header Crc3 301=Body Crc3 302=Header Crc4 303=Body Crc4 304=Header Crc5 305=Body Crc5 306时,三个副本中的数据(包括第一校验码及数据主体)均为正常数据,三副本待检测数据具备一致性。
当Header Crc3 301=Body Crc3 302=Header Crc4 303=Body Crc4 304=Header Crc5 305≠Body Crc5 306时,三副本待检测数据中第三个副本的数据主体为异常数据,三个副本中除异常数据外的其他的数据为正常数据。删除三副本待检测数据中第三个副本,拷贝三副本待检测数据中第一个或第二个副本替换删除的三副本待检测数据中第三个副本。
当Header Crc3 301=Body Crc3 302=Header Crc4 303=Body Crc4 304=BodyCrc5 306≠Header Crc5 305时,三副本待检测数据中第三个副本的第一校验码为异常数据,三个副本中除异常数据外的其他的数据为正常数据。删除三副本待检测数据中第三个副本,拷贝三副本待检测数据中第一个或第二个副本替换删除的三副本待检测数据中第三个副本。
当Header Crc3 301=Body Crc3 302=Header Crc4 303=Body Crc4 304≠Header Crc5 305≠Body Crc5 306时,三副本待检测数据中第三个副本的数据主体及第三个副本的第一校验码为异常数据,三个副本中除异常数据外的其他的数据为正常数据。删除三副本待检测数据中第三个副本,拷贝三副本待检测数据中第一个或第二个副本替换删除的三副本待检测数据中第三个副本。
当Header Crc3 301=Body Crc3 302=Header Crc4 303=Header Crc5 305≠Body Crc4 304≠Body Crc5 306时,三副本待检测数据中第二个副本的数据主体及第三个副本的数据主体为异常数据,三个副本中除异常数据外的其他的数据为正常数据。删除三副本待检测数据中第二个副本及第三个副本,拷贝三副本待检测数据中第一个副本替换删除的三副本待检测数据中第二个副本及第三个副本。
当Header Crc3 301=Body Crc3 302=Body Crc4 304=Header Crc5 305≠Header Crc4 303≠Body Crc5 306时,三副本待检测数据中第二个副本的第一校验码及第三个副本的数据主体为异常数据,三个副本中除异常数据外的其他的数据为正常数据。删除三副本待检测数据中第二个副本及第三个副本,拷贝三副本待检测数据中第一个副本替换删除的三副本待检测数据中第二个副本及第三个副本。
当Header Crc3 301=Body Crc3 302=Header Crc4 303=Body Crc5 306≠Body Crc4 304≠Header Crc5 305时,三副本待检测数据中第二个副本的数据主体及第三个副本的第一校验码为异常数据,三个副本中除异常数据外的其他的数据为正常数据。删除三副本待检测数据中第二个副本及第三个副本,拷贝三副本待检测数据中第一个副本替换删除的三副本待检测数据中第二个副本及第三个副本。
当Header Crc3 301=Body Crc3 302=Body Crc4 304=Body Crc5 306≠Header Crc4 303≠Header Crc5 305时,三副本待检测数据中第二个副本的第一校验码及第三个副本的第一校验码为异常数据,三个副本中除异常数据外的其他的数据为正常数据。删除三副本待检测数据中第二个副本及第三个副本,拷贝三副本待检测数据中第一个副本替换删除的三副本待检测数据中第二个副本及第三个副本。
当Header Crc3 301=Body Crc3 302=Header Crc4 303≠Body Crc4 304≠Header Crc5 305≠Body Crc5 306时,三副本待检测数据中第二个副本的数据主体、第三个副本的第一校验码及第三个副本的数据主体为异常数据,三个副本中除异常数据外的其他的数据为正常数据。删除三副本待检测数据中第二个副本及第三个副本,拷贝三副本待检测数据中第一个副本替换删除的三副本待检测数据中第二个副本及第三个副本。
当Header Crc3 301=Body Crc3 302=Body Crc4 304≠Header Crc4 303≠Header Crc5 305≠Body Crc5 306时,三副本待检测数据中第二个副本的第一校验码、第三个副本的第一校验码及第三个副本的数据主体为异常数据,三个副本中除异常数据外的其他的数据为正常数据。删除三副本待检测数据中第二个副本及第三个副本,拷贝三副本待检测数据中第一个副本替换删除的三副本待检测数据中第二个副本及第三个副本。
当Header Crc3 301=Body Crc3 302≠Header Crc4 303≠Body Crc4 304≠Header Crc5 305≠Body Crc5 306时,三副本待检测数据中第二个副本的数据主体、第二个副本的第一校验码、第三个副本的第一校验码及第三个副本的数据主体为异常数据,三个副本中除异常数据外的其他的数据为正常数据。删除三副本待检测数据中第二个副本及第三个副本,拷贝三副本待检测数据中第一个副本替换删除的三副本待检测数据中第二个副本及第三个副本。
当无法确认正常数据及异常数据时,发送标识副本异常的告警信息,以方便运维人员进行人工修复。
在本发明实施例中,确定正常数据及异常数据,利用正常数据,修复异常数据,保证了同一待检测数据各副本的一致性,同时保证了各副本的正确性。能够对已写入分布式对象存储系统中的数据进行校正,对于数据一致性的校正考虑更全面。并且根据正常数据自动修复异常数据,不需要过多的人工介入,省时省力。
可选的,获取待检测数据的所有副本,包括:
周期性的获取待检测数据的所有副本。
周期性的获取所有待检测数据的所有副本,在每个周期中对分布式对象存储系统中所有的数据进行一致性检测,并利用正常数据修复异常数据,能够保障数据的安全性。
获取待检测数据的所有副本的周期为符合本发明实施例的任意周期,根据分布式对象存储系统的实际情况进行设定。例如以一个包含600台存储装置,每个存储装置包括36块容量为4T的磁盘的分布式对象存储系统为例,其周期可以设定为三周或更长。
仅在数据读取时检测数据的一致性,数据损坏发现不及时,特别是对于读取频率低的冷数据,容易造成数据失效,而周期性的检测分布式对象存储系统中的待检测数据的一致性,能够及时发现冷数据和热数据的损坏。
本发明实施例的检测数据一致性的方法能够应用于高频存储和低频存储的分布式对象存储系统中,并且均能够尽早发现数据的损坏并进行修复。
在本发明实施例中,周期性的获取待检测数据的所有副本,并对分布式对象存储系统中的待检测数据的各副本进行一致性检测,能够实时保证分布式对象存储系统中同一待检测数据的各副本的一致性。
可选的,在获取待检测数据的所有副本之前,该方法还包括:
步骤一,接收由数据写入端发送的待写入数据及校验码。
当数据写入端在向分布式对象存储系统中写入数据时,数据写入端会利用预设算法计算待写入数据的校验码,并向分布式对象存储系统发送待写入数据及校验码。
步骤二,利用预设算法对待写入数据进行计算,生成第三校验码。
此处的预设算法应该与数据写入端计算待写入数据的校验码的算法相同,以保证后续对数据写入端发送的校验码及第三校验码进行比较。
步骤三,在由数据写入端发送的校验码与第三校验码相同时,写入待写入数据至分布式对象存储系统中,并将第三校验码写入到当前存储装置的Block结构的ObjectHeader中。
对象存储的基本思想是将大量的小文件合并到一起,形成一个大文件。一般一个大文件分为索引文件和数据文件两部分,如图4所示。分布式对象存储系统中,一个大Block文件,包含一个索引文件及一个数据文件。索引文件中包含多个索引(index),每个索引中包括序号(sequence number)、对象标识符(object ID)、偏移(offset)及长度(size)等信息,用于维护各小文件的位置信息,在内存和磁盘中各有一份,大Block文件中的索引文件能够方便快速检索。数据文件中的对象数据主体(Object Body)为实际的文件的数据,对象页眉(Object Header)包括幻数(Magic Number)、对象标识符(object ID)、长度(size)及校验码等信息,对象页眉的长度是固定的。
在本发明实施例中,数据写入端发送的校验码与第三校验码相同,说明待写入数据在由数据写入端发送至分布式对象存储系统的过程中,并没有损毁,保证了接收到的待写入数据的正确性和一致性。
可选的,在利用预设算法对待写入数据进行计算,生成第三校验码之后,该方法还包括:当由数据写入端发送的校验码与第三校验码不相同时,向数据写入端发送错误报告,以使数据写入端重新发送校验码及待写入数据。
在本发明实施例中,向数据写入端发送错误报告,以使数据写入端重新发送校验码及待写入数据,能够保证接收到的待写入数据的准确性。
可选的,在由数据写入端发送的校验码与第三校验码相同时,写入待写入数据至分布式对象存储系统中,并将第三校验码写入到当前存储装置的Block结构的ObjectHeader中之后,该方法还包括:
步骤一,获取待写入数据及接收到的待写入数据的校验码,将接收到的待写入数据的校验码与数据写入端发送的校验码进行比较。
在进行副本同步时,每个存储装置在接收到副本之后,检测装置获取副本中的待写入数据及存储装置接收到的待写入数据的校验码,将存储装置接收到的待写入数据的校验码与数据写入端发送的校验码进行比较。
步骤二,在接收到的待写入数据的校验码与数据写入端发送的校验码相同时,保存待写入数据,并将接收到的待写入数据的校验码写入到当前存储装置的Block结构的ObjectHeader中。
在本发明实施例中,在接收到的待写入数据的校验码与数据写入端发送的校验码相同时,保存待写入数据,能够保证副本同步的正确性和一致性。
可选的,在所有第一校验码及所有第二校验码均相同时,判定待检测数据的所有副本具备一致性之后,该方法还包括:
步骤一,获取由数据请求端发送的读取指令,根据读取指令选择待读取数据的第一副本,其中,第一副本为待读取数据的任意副本。
当数据请求端需要读取数据时,向分布式对象存储系统发送数据读取指令,读取指令中包含标识待读取数据的指令。检测装置获取读取指令,根据读取指令中标识待读取数据的指令(例如对象标识符)确定待读取数据,并在分布式对象存储系统中,随机选取一个存储有待读取数据的副本,作为第一副本。
步骤二,利用预设算法,对第一副本的数据主体进行计算,生成第四校验码。
检测装置利用预设算法,计算第一副本的数据主体的校验码,作为第四校验码。预设算法为符合本发明实施例的任意校验码计算方法,例如循环冗余检验算法、消息摘要算法第5版、安全哈希算法、累加和校验算法或奇偶校验算法等。
步骤三,在第四校验码与第一副本中保存的校验码相同时,向数据请求端发送第一副本。
第一副本中除了包含待读取数据的数据主体外,还存储了数据主体的校验码。当计算出的校验码与第一副本中存储的校验码相同时,说明第一副本中的数据正确。
在本发明实施例中,在读取数据时,比较计算得到的校验码与副本中保存的校验码,能够保证副本中数据的正确性。并且能自动修复异常数据,无需人工介入,省时省力。
可选的,在利用预设算法,对第一副本的数据主体进行计算,生成第四校验码之后,该方法还包括:
步骤一,在第四校验码与第一副本中存储的校验码不同时,选取待读取数据的第二副本,其中,第二副本为待读取数据的除第一副本外的其他副本中的副本。
当计算出的校验码与第一副本中存储的校验码不同时,说明第一副本出现了损毁。从而需要选其他的待读取数据的副本进行数据读取。
步骤二,利用预设算法,对第二副本的数据主体进行计算,生成第五校验码。
步骤三,在第五校验码与第二副本中保存的校验码相同时,向数据请求端发送第二副本。
若第五校验码与第二副本中保存的校验码扔不相同,在尚未选取的待读取数据的副本中再次随机选取一个副本,并通过预设算法计算该副本的校验码,直至计算出的校验码与该副本中存储的校验码相同,或不存在未选取的副本。
步骤四,根据第二副本修复第一副本。
在第二副本中的数据正确时,删除数据损毁的第一副本,拷贝第二副本代替删除的第一副本。从而保证分布式存储系统中每个副本的正确性。
在本发明实施例中,在选择的副本损毁时,选取待读取数据的正常的副本进行数据传输,并修复损毁的副本,在保证待读取数据正确性的同时,能自动修复损毁的副本,无需人工介入,保证了同一待检测数据各副本的一致性。
分布式对象存储系统中,一个大Block文件,包含一个索引文件及一个数据文件。索引文件中包含多个索引(index),数据文件包括多个对象的数据主体(Object Body)及页眉(Object Header)。为了优化检测速度,可以同时记录及计算、大Block文件及大Block文件中的每个对象的校验码,在检验数据的一致性时,先比较同一待检测数据的各大Block文件计算出的校验码与存储的校验码是否相同,若相同,则认为各大Block文件具备一致性,若不相同,在分别比较各大Block文件中每个对象计算出的校验码与存储的校验码是否相同,从而确定异常数据。在本发明实施例中,先比较同一待检测数据的各大Block文件计算出的校验码与存储的校验码是否相同,若相同,则认为各大Block文件具备一致性,若不相同,在分别比较各大Block文件中每个对象计算出的校验码与存储的校验码是否相同,从而确定异常数据,相比于仅比较同一待检测数据各对象计算出的校验码与存储的校验码是否相同,可以提升检测数据一致性的速度。
上述检测数据一致性的方法应用于分布式对象存储系统,因此本发明实施例还提供了一种分布式对象存储系统,该分布式对象存储系统在运行时执行如下步骤:
步骤一,获取待检测数据的所有副本,其中,副本包括数据主体及第一校验码,第一校验码为将副本写入分布式对象存储系统中时,所存储的验证码。
步骤二,分别根据每个副本的数据主体,通过预设算法,计算各副本的第二校验码。
步骤三,判断所有第一校验码及所有第二校验码是否均相同。
步骤四,在所有第一校验码及所有第二校验码均相同时,判定待检测数据的所有副本具备一致性。
在本发明实施例中,分别根据每个副本的数据主体,计算各副本的第二校验码,并在所有第一校验码及所有第二校验码均相同时,判定待检测数据的所有副本具备一致性,可以检测已写入分布式对象存储系统中数据的一致性,对数据一致性的检测考虑更加全面。并且判断所有第一校验码及所有第二校验码是否均相同,能够确定各数据主体的一致性,数据一致性的判定准确。
可选的,分布式对象存储系统在获取待检测数据的所有副本之后,执行的步骤还包括:
当存在缺失的副本时,对缺失的副本进行恢复。
在本发明实施例中,对缺失的副本进行恢复,防止因副本缺失造成的数据失效,保证了待检测数据的有效性。能够对已写入分布式对象存储系统中的数据进行校正,对于数据一致性的校正考虑更全面。
可选的,分布式对象存储系统在当存在缺失的副本时,对缺失的副本进行恢复之后,执行的步骤还包括:
发送标识缺失的副本的告警信息。
在本发明实施例中,发送标识缺失的副本的告警信息,方便运维人员分析异常的原因。
可选的,分布式对象存储系统在判断所有第一校验码及所有第二校验码是否均相同之后,执行的步骤还包括:
在所有第一校验码及所有第二校验码不均相同时,比较所有第一校验码及所有第二校验码,确定正常数据及异常数据;
利用正常数据,修复异常数据。
在本发明实施例中,确定正常数据及异常数据,利用正常数据,修复异常数据,保证了同一待检测数据各副本的一致性,同时保证了各副本的正确性。能够对已写入分布式对象存储系统中的数据进行校正,对于数据一致性的校正考虑更全面。并且根据正常数据自动修复异常数据,不需要过多的人工介入,省时省力。
可选的,分布式对象存储系统执行获取待检测数据的所有副本,具体包括:
周期性的获取待检测数据的所有副本。
在本发明实施例中,周期性的获取待检测数据的所有副本,并对分布式对象存储系统中的待检测数据的各副本进行一致性检测,能够实时保证分布式对象存储系统中同一待检测数据的各副本的一致性。
可选的,分布式对象存储系统在获取待检测数据的所有副本之前,执行的步骤还包括:
接收由数据写入端发送的待写入数据及校验码;
利用预设算法对待写入数据进行计算,生成第三校验码;
在由数据写入端发送的校验码与第三校验码相同时,写入待写入数据至分布式对象存储系统中,并将第三校验码写入到当前存储装置的Block结构的ObjectHeader中。
在本发明实施例中,数据写入端发送的校验码与第三校验码相同,说明待写入数据在由数据写入端发送至分布式对象存储系统的过程中,并没有损毁,保证了接收到的待写入数据的正确性和一致性。
可选的,分布式对象存储系统在由数据写入端发送的校验码与第三校验码相同时,写入待写入数据至分布式对象存储系统中,并将第三校验码写入到当前存储装置的Block结构的ObjectHeader中之后,执行的步骤还包括:
获取待写入数据及接收到的待写入数据的校验码,将接收到的待写入数据的校验码与数据写入端发送的校验码进行比较;
在接收到的待写入数据的校验码与数据写入端发送的校验码相同时,保存待写入数据,并将接收到的待写入数据的校验码写入到当前存储装置的Block结构的ObjectHeader中。
在本发明实施例中,在接收到的待写入数据的校验码与数据写入端发送的校验码相同时,保存待写入数据,能够保证副本同步的正确性和一致性。
可选的,分布式对象存储系统在所有第一校验码及所有第二校验码均相同时,判定待检测数据的所有副本具备一致性之后,执行的步骤还包括:
获取由数据请求端发送的读取指令,根据读取指令选择待读取数据的第一副本,其中,第一副本为待读取数据的任意副本;
利用预设算法,对第一副本的数据主体进行计算,生成第四校验码;
在第四校验码与第一副本中保存的校验码相同时,向数据请求端发送第一副本。
在本发明实施例中,在读取数据时,比较计算得到的校验码与副本中保存的校验码,能够保证副本中数据的正确性。并且能自动修复异常数据,无需人工介入,省时省力。
可选的,分布式对象存储系统在对第一副本的数据主体进行计算,生成第四校验码之后,执行的步骤还包括:
在第四校验码与第一副本中存储的校验码不同时,选取待读取数据的第二副本,其中,第二副本为待读取数据的除第一副本外的其他副本中的副本;
利用预设算法,对第二副本的数据主体进行计算,生成第五校验码;
在第五校验码与第二副本中保存的校验码相同时,向数据请求端发送第二副本;
根据第二副本修复第一副本。
在本发明实施例中,在选择的副本损毁时,选取待读取数据的正常的副本进行数据传输,并修复损毁的副本,在保证待读取数据正确性的同时,能自动修复损毁的副本,无需人工介入,保证了同一待检测数据各副本的一致性。
参见图5,本发明实施例还提供了一种检测数据一致性的装置,应用于分布式对象存储系统,包括:
副本获取模块501,用于获取待检测数据的所有副本,其中,副本包括数据主体及第一校验码,第一校验码为将副本写入分布式对象存储系统中时,所存储的验证码。
第一计算模块502,用于分别根据每个副本的数据主体,通过预设算法,计算各副本的第二校验码。
第一判定模块503,用于判断所有第一校验码及所有第二校验码是否均相同。
一致性判定模块504,用于在所有第一校验码及所有第二校验码均相同时,判定待检测数据的所有副本具备一致性。
在本发明实施例中,分别根据每个副本的数据主体,计算各副本的第二校验码,并在所有第一校验码及所有第二校验码均相同时,判定待检测数据的所有副本具备一致性,可以检测已写入分布式对象存储系统中数据的一致性,对数据一致性的检测考虑更加全面。并且判断所有第一校验码及所有第二校验码是否均相同,能够确定各数据主体的一致性,数据一致性的判定准确。
可选的,本发明实施例的检测数据一致性的装置还包括:
第一恢复模块,用于当检测到存在缺失的副本时,对缺失的副本进行恢复。
在本发明实施例中,对缺失的副本进行恢复,防止因副本缺失造成的数据失效,保证了待检测数据的有效性。能够对已写入分布式对象存储系统中的数据进行校正,对于数据一致性的校正考虑更全面。
可选的,本发明实施例的检测数据一致性的装置还包括:
告警模块,用于发送标识缺失的副本的告警信息。
在本发明实施例中,发送标识缺失的副本的告警信息,方便运维人员分析副本缺失的原因。
可选的,本发明实施例的检测数据一致性的装置还包括:
异常确定模块,用于在所有第一校验码及所有第二校验码不均相同时,比较所有第一校验码及所有第二校验码,确定正常数据及异常数据。
第二恢复模块,用于利用正常数据,修复异常数据。
在本发明实施例中,确定正常数据及异常数据,利用正常数据,修复异常数据,保证了同一待检测数据各副本的一致性,同时保证了各副本的正确性。能够对已写入分布式对象存储系统中的数据进行校正,对于数据一致性的校正考虑更全面。并且根据正常数据自动修复异常数据,不需要过多的人工介入,省时省力。
可选的,本发明实施例的副本获取模块具体用于:
周期性的获取待检测数据的所有副本。
在本发明实施例中,周期性的获取待检测数据的所有副本,并对分布式对象存储系统中的待检测数据的各副本进行一致性检测,能够实时保证分布式对象存储系统中同一待检测数据的各副本的一致性。
可选的,本发明实施例的检测数据一致性的装置还包括:
待写入数据接收模块,用于接收由数据写入端发送的待写入数据及校验码。
第二计算模块,用于利用预设算法对待写入数据进行计算,生成第三校验码。
数据写入模块,用于在由数据写入端发送的校验码与第三校验码相同时,写入待写入数据至分布式对象存储系统中,并将第三校验码写入到当前存储装置的Block结构的ObjectHeader中。
在本发明实施例中,数据写入端发送的校验码与第三校验码相同,说明待写入数据在由数据写入端发送至分布式对象存储系统的过程中,并没有损毁,保证了接收到的待写入数据的正确性和一致性。
可选的,本发明实施例的检测数据一致性的装置还包括:
第二判定模块,用于获取待写入数据及接收到的待写入数据的校验码,将接收到的待写入数据的校验码与数据写入端发送的校验码进行比较。
副本同步模块,用于在接收到的待写入数据的校验码与数据写入端发送的校验码相同时,保存待写入数据,并将接收到的待写入数据的校验码写入到当前存储装置的Block结构的ObjectHeader中。
在本发明实施例中,在接收到的待写入数据的校验码与数据写入端发送的校验码相同时,保存待写入数据,能够保证副本同步的正确性和一致性。
可选的,本发明实施例的检测数据一致性的装置还包括:
读取指令接收模块,用于获取由数据请求端发送的读取指令,根据读取指令选择待读取数据的第一副本,其中,第一副本为待读取数据的任意副本;
第三计算模块,用于利用预设算法,对第一副本的数据主体进行计算,生成第四校验码。
第三判定模块,用于在第四校验码与第一副本中保存的校验码相同时,向数据请求端发送第一副本。
在本发明实施例中,在读取数据时,比较计算得到的校验码与副本中保存的校验码,能够保证副本中数据的正确性。并且能自动修复异常数据,无需人工介入,省时省力。
可选的,本发明实施例的检测数据一致性的装置还包括:
第四判定模块,用于在第四校验码与第一副本中存储的校验码不同时,选取待读取数据的第二副本,其中,第二副本为待读取数据的除第一副本外的其他副本中的副本。
第四计算模块,用于利用预设算法,对第二副本的数据主体进行计算,生成第五校验码。
第五判定模块,用于在第五校验码与第二副本中保存的校验码相同时,向数据请求端发送第二副本。
第三恢复模块,用于根据第二副本修复第一副本。
在本发明实施例中,在选择的副本损毁时,选取待读取数据的正常的副本进行数据传输,并修复损毁的副本,在保证待读取数据正确性的同时,能自动修复损毁的副本,无需人工介入,保证了同一待检测数据各副本的一致性。
本发明实施例还提供了一种电子设备,如图6所示,包括处理器601、通信接口602、存储器603和通信总线604,其中,处理器601,通信接口602,存储器603通过通信总线604完成相互间的通信,
存储器603,用于存放计算机程序;
处理器601,用于执行存储器603上所存放的程序时,实现如下步骤:
步骤一,获取待检测数据的所有副本,其中,副本包括数据主体及第一校验码,第一校验码为将副本写入分布式对象存储系统中时,所存储的验证码。
步骤二,分别根据每个副本的数据主体,通过预设算法,计算各副本的第二校验码。
步骤三,判断所有第一校验码及所有第二校验码是否均相同。
步骤四,在所有第一校验码及所有第二校验码均相同时,判定待检测数据的所有副本具备一致性。
在本发明实施例中,分别根据每个副本的数据主体,计算各副本的第二校验码,并在所有第一校验码及所有第二校验码均相同时,判定待检测数据的所有副本具备一致性,可以检测已写入分布式对象存储系统中数据的一致性,对数据一致性的检测考虑更加全面。并且判断所有第一校验码及所有第二校验码是否均相同,能够确定各数据主体的一致性,数据一致性的判定准确。
当然,处理器601在执行存储器603上所存放的程序时,还能够实现上述检测数据一致性的方法的任意方法步骤。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
步骤一,获取待检测数据的所有副本,其中,副本包括数据主体及第一校验码,第一校验码为将副本写入分布式对象存储系统中时,所存储的验证码。
步骤二,分别根据每个副本的数据主体,通过预设算法,计算各副本的第二校验码。
步骤三,判断所有第一校验码及所有第二校验码是否均相同。
步骤四,在所有第一校验码及所有第二校验码均相同时,判定待检测数据的所有副本具备一致性。
在本发明实施例中,分别根据每个副本的数据主体,计算各副本的第二校验码,并在所有第一校验码及所有第二校验码均相同时,判定待检测数据的所有副本具备一致性,可以检测已写入分布式对象存储系统中数据的一致性,对数据一致性的检测考虑更加全面。并且判断所有第一校验码及所有第二校验码是否均相同,能够确定各数据主体的一致性,数据一致性的判定准确。
当然,上述计算机可读存储介质中存储的计算机程序在被处理器执行时,还能够实现上述检测数据一致性的方法的任意方法步骤。
对于分布式对象存储系统/装置/电子设备/存储介质的实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (20)

1.一种检测数据一致性的方法,其特征在于,应用于分布式对象存储系统,包括:
获取待检测数据的所有副本,其中,所述副本包括数据主体及第一校验码,第一校验码为将所述副本写入所述分布式对象存储系统中时,所存储的验证码;
分别根据每个副本的数据主体,通过预设算法,计算各副本的第二校验码;
判断所有第一校验码及所有第二校验码是否均相同;
在所有第一校验码及所有第二校验码均相同时,判定所述待检测数据的所有副本具备一致性。
2.根据权利要求1所述的方法,其特征在于,在所述获取待检测数据的所有副本之后,所述方法还包括:
当存在缺失的副本时,对所述缺失的副本进行恢复。
3.根据权利要求2所述的方法,其特征在于,在所述当存在缺失的副本时,对所述缺失的副本进行恢复之后,所述方法还包括:
发送标识所述缺失的副本的告警信息。
4.根据权利要求1所述的方法,其特征在于,在所述判断所有第一校验码及所有第二校验码是否均相同之后,所述方法还包括:
在所有第一校验码及所有第二校验码不均相同时,比较所有第一校验码及所有第二校验码,确定正常数据及异常数据;
利用所述正常数据,修复所述异常数据。
5.根据权利要求1所述的方法,其特征在于,所述获取待检测数据的所有副本,包括:
周期性的获取所述待检测数据的所有副本。
6.根据权利要求1所述的方法,其特征在于,在所述获取待检测数据的所有副本之前,所述方法还包括:
接收由数据写入端发送的待写入数据及校验码;
利用所述预设算法对所述待写入数据进行计算,生成第三校验码;
在由所述数据写入端发送的校验码与所述第三校验码相同时,写入所述待写入数据至所述分布式对象存储系统中,并将所述第三校验码写入到当前存储装置的Block结构的ObjectHeader中。
7.根据权利要求6所述的方法,其特征在于,在所述在由所述数据写入端发送的校验码与所述第三校验码相同时,写入所述待写入数据至所述分布式对象存储系统中,并将所述第三校验码写入到当前存储装置的Block结构的ObjectHeader中之后,所述方法还包括:
获取所述待写入数据及接收到的所述待写入数据的校验码,将接收到的所述待写入数据的校验码与所述数据写入端发送的校验码进行比较;
在接收到的所述待写入数据的校验码与所述数据写入端发送的校验码相同时,保存所述待写入数据,并将接收到的所述待写入数据的校验码写入到当前存储装置的Block结构的ObjectHeader中。
8.根据权利要求1所述的方法,其特征在于,在所述在所有第一校验码及所有第二校验码均相同时,判定所述待检测数据的所有副本具备一致性之后,所述方法还包括:
获取由数据请求端发送的读取指令,根据所述读取指令选择待读取数据的第一副本,其中,所述第一副本为所述待读取数据的任意副本;
利用所述预设算法,对所述第一副本的数据主体进行计算,生成第四校验码;
在所述第四校验码与所述第一副本中保存的校验码相同时,向所述数据请求端发送所述第一副本。
9.根据权利要求8所述的方法,其特征在于,在所述利用所述预设算法,对所述第一副本的数据主体进行计算,生成第四校验码之后,所述方法还包括:
在所述第四校验码与所述第一副本中存储的校验码不同时,选取所述待读取数据的第二副本,其中,所述第二副本为所述待读取数据的除所述第一副本外的其他副本中的副本;
利用所述预设算法,对所述第二副本的数据主体进行计算,生成第五校验码;
在所述第五校验码与所述第二副本中保存的校验码相同时,向所述数据请求端发送所述第二副本;
根据所述第二副本修复所述第一副本。
10.一种检测数据一致性的装置,其特征在于,应用于分布式对象存储系统,包括:
副本获取模块,用于获取待检测数据的所有副本,其中,所述副本包括数据主体及第一校验码,第一校验码为将所述副本写入所述分布式对象存储系统中时,所存储的验证码;
第一计算模块,用于分别根据每个副本的数据主体,通过预设算法,计算各副本的第二校验码;
第一判定模块,用于判断所有第一校验码及所有第二校验码是否均相同;
一致性判定模块,用于在所有第一校验码及所有第二校验码均相同时,判定所述待检测数据的所有副本具备一致性。
11.根据权利要求10所述的装置,其特征在于,所述检测数据一致性的装置还包括:
第一恢复模块,用于当检测到存在缺失的副本时,对所述缺失的副本进行恢复。
12.根据权利要求11所述的装置,其特征在于,所述检测数据一致性的装置还包括:
告警模块,用于发送标识所述缺失的副本的告警信息。
13.根据权利要求10所述的装置,其特征在于,所述检测数据一致性的装置还包括:
异常确定模块,用于在所有第一校验码及所有第二校验码不均相同时,比较所有第一校验码及所有第二校验码,确定正常数据及异常数据;
第二恢复模块,用于利用所述正常数据,修复所述异常数据。
14.根据权利要求10所述的装置,其特征在于,所述副本获取模块具体用于:
周期性的获取所述待检测数据的所有副本。
15.根据权利要求10所述的装置,其特征在于,所述检测数据一致性的装置还包括:
待写入数据接收模块,用于接收由数据写入端发送的待写入数据及校验码;
第二计算模块,用于利用所述预设算法对所述待写入数据进行计算,生成第三校验码;
数据写入模块,用于在由所述数据写入端发送的校验码与所述第三校验码相同时,写入所述待写入数据至所述分布式对象存储系统中,并将所述第三校验码写入到当前存储装置的Block结构的ObjectHeader中。
16.根据权利要求15所述的装置,其特征在于,所述检测数据一致性的装置还包括:
第二判定模块,用于获取所述待写入数据及接收到的所述待写入数据的校验码,将接收到的所述待写入数据的校验码与所述数据写入端发送的校验码进行比较;
副本同步模块,用于在接收到的所述待写入数据的校验码与所述数据写入端发送的校验码相同时,保存所述待写入数据,并将接收到的所述待写入数据的校验码写入到当前存储装置的Block结构的ObjectHeader中。
17.根据权利要求10所述的装置,其特征在于,所述检测数据一致性的装置还包括:
读取指令接收模块,用于获取由数据请求端发送的读取指令,根据所述读取指令选择待读取数据的第一副本,其中,所述第一副本为所述待读取数据的任意副本;
第三计算模块,用于利用所述预设算法,对所述第一副本的数据主体进行计算,生成第四校验码;
第三判定模块,用于在所述第四校验码与所述第一副本中保存的校验码相同时,向所述数据请求端发送所述第一副本。
18.根据权利要求17所述的装置,其特征在于,所述检测数据一致性的装置还包括:
第四判定模块,用于在所述第四校验码与所述第一副本中存储的校验码不同时,选取所述待读取数据的第二副本,其中,所述第二副本为所述待读取数据的除所述第一副本外的其他副本中的副本;
第四计算模块,用于利用所述预设算法,对所述第二副本的数据主体进行计算,生成第五校验码;
第五判定模块,用于在所述第五校验码与所述第二副本中保存的校验码相同时,向所述数据请求端发送所述第二副本;
第三恢复模块,用于根据所述第二副本修复所述第一副本。
19.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-9任一所述的方法步骤。
20.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-9任一所述的方法步骤。
CN201710427716.3A 2017-06-08 2017-06-08 检测数据一致性的方法、装置、电子设备及存储介质 Pending CN108573007A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710427716.3A CN108573007A (zh) 2017-06-08 2017-06-08 检测数据一致性的方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710427716.3A CN108573007A (zh) 2017-06-08 2017-06-08 检测数据一致性的方法、装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN108573007A true CN108573007A (zh) 2018-09-25

Family

ID=63576075

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710427716.3A Pending CN108573007A (zh) 2017-06-08 2017-06-08 检测数据一致性的方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN108573007A (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111143347A (zh) * 2019-11-15 2020-05-12 苏州浪潮智能科技有限公司 一种对象存储数据一致性测试方法、系统、终端及存储介质
CN111176885A (zh) * 2019-12-31 2020-05-19 浪潮电子信息产业股份有限公司 一种分布式存储系统的数据校验方法及相关装置
CN111200590A (zh) * 2019-12-09 2020-05-26 杭州安恒信息技术股份有限公司 多个周期统计数据一致性校验的算法
CN112306753A (zh) * 2020-10-30 2021-02-02 联想(北京)有限公司 一种数据修复方法、装置及系统
CN112416891A (zh) * 2020-11-26 2021-02-26 北京天融信网络安全技术有限公司 数据检测方法、装置、电子设备及可读存储介质
CN112558875A (zh) * 2020-12-14 2021-03-26 北京百度网讯科技有限公司 数据校验方法、装置、电子设备及存储介质
CN113391767A (zh) * 2021-06-30 2021-09-14 北京百度网讯科技有限公司 数据一致性的校验方法、装置、电子设备及可读存储介质
CN113434561A (zh) * 2021-06-24 2021-09-24 北京金山云网络技术有限公司 直播数据校验方法、系统、电子设备及存储介质
CN113486313A (zh) * 2021-07-05 2021-10-08 江苏欧帝电子科技有限公司 一种学校体系人员的统一身份认证方法和系统
CN114780021A (zh) * 2022-03-25 2022-07-22 北京百度网讯科技有限公司 副本修复方法、装置、电子设备及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101512990A (zh) * 2006-09-29 2009-08-19 英特尔公司 对通过串行总线的设备写入进行验证的方法和系统
CN102325167A (zh) * 2011-07-21 2012-01-18 杭州微元科技有限公司 一种网络文件传输的校验方法
CN102857554A (zh) * 2012-07-26 2013-01-02 福建网龙计算机网络信息技术有限公司 基于分布式存储系统进行数据冗余处理方法
CN103370692A (zh) * 2012-11-21 2013-10-23 华为技术有限公司 一种修复数据的方法及装置
CN104077373A (zh) * 2014-06-24 2014-10-01 北京京东尚科信息技术有限公司 一种数据一致性校验方法
CN104978336A (zh) * 2014-04-08 2015-10-14 云南电力试验研究院(集团)有限公司电力研究院 基于Hadoop分布式计算平台的非结构化数据存储系统

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101512990A (zh) * 2006-09-29 2009-08-19 英特尔公司 对通过串行总线的设备写入进行验证的方法和系统
CN102325167A (zh) * 2011-07-21 2012-01-18 杭州微元科技有限公司 一种网络文件传输的校验方法
CN102857554A (zh) * 2012-07-26 2013-01-02 福建网龙计算机网络信息技术有限公司 基于分布式存储系统进行数据冗余处理方法
CN103370692A (zh) * 2012-11-21 2013-10-23 华为技术有限公司 一种修复数据的方法及装置
CN104978336A (zh) * 2014-04-08 2015-10-14 云南电力试验研究院(集团)有限公司电力研究院 基于Hadoop分布式计算平台的非结构化数据存储系统
CN104077373A (zh) * 2014-06-24 2014-10-01 北京京东尚科信息技术有限公司 一种数据一致性校验方法

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111143347A (zh) * 2019-11-15 2020-05-12 苏州浪潮智能科技有限公司 一种对象存储数据一致性测试方法、系统、终端及存储介质
CN111200590B (zh) * 2019-12-09 2022-08-19 杭州安恒信息技术股份有限公司 多个周期统计数据一致性校验的算法
CN111200590A (zh) * 2019-12-09 2020-05-26 杭州安恒信息技术股份有限公司 多个周期统计数据一致性校验的算法
CN111176885A (zh) * 2019-12-31 2020-05-19 浪潮电子信息产业股份有限公司 一种分布式存储系统的数据校验方法及相关装置
CN112306753A (zh) * 2020-10-30 2021-02-02 联想(北京)有限公司 一种数据修复方法、装置及系统
CN112416891A (zh) * 2020-11-26 2021-02-26 北京天融信网络安全技术有限公司 数据检测方法、装置、电子设备及可读存储介质
CN112416891B (zh) * 2020-11-26 2023-11-28 北京天融信网络安全技术有限公司 数据检测方法、装置、电子设备及可读存储介质
CN112558875A (zh) * 2020-12-14 2021-03-26 北京百度网讯科技有限公司 数据校验方法、装置、电子设备及存储介质
CN113434561A (zh) * 2021-06-24 2021-09-24 北京金山云网络技术有限公司 直播数据校验方法、系统、电子设备及存储介质
CN113391767A (zh) * 2021-06-30 2021-09-14 北京百度网讯科技有限公司 数据一致性的校验方法、装置、电子设备及可读存储介质
CN113486313B (zh) * 2021-07-05 2023-07-25 江苏欧帝电子科技有限公司 一种学校体系人员的统一身份认证方法和系统
CN113486313A (zh) * 2021-07-05 2021-10-08 江苏欧帝电子科技有限公司 一种学校体系人员的统一身份认证方法和系统
CN114780021A (zh) * 2022-03-25 2022-07-22 北京百度网讯科技有限公司 副本修复方法、装置、电子设备及存储介质
CN114780021B (zh) * 2022-03-25 2022-11-29 北京百度网讯科技有限公司 副本修复方法、装置、电子设备及存储介质

Similar Documents

Publication Publication Date Title
CN108573007A (zh) 检测数据一致性的方法、装置、电子设备及存储介质
AU2017228544A1 (en) Nonvolatile media dirty region tracking
US8762337B2 (en) Storage replication systems and methods
US20040123202A1 (en) Mechanisms for detecting silent errors in streaming media devices
CN103778030B (zh) 日志子系统写入方法、错误追踪方法及处理器
CN105468479B (zh) 一种磁盘阵列raid坏块处理方法及装置
US9329799B2 (en) Background checking for lost writes and data corruption
CN110008129B (zh) 一种存储定时快照的可靠性测试方法、装置及设备
US9164857B2 (en) Scalable structured data store operations
CN102135925B (zh) 用于检测错误检查和纠正内存的方法和装置
US9665448B2 (en) Semiconductor integrated circuit
CN111176885A (zh) 一种分布式存储系统的数据校验方法及相关装置
US8762336B2 (en) Geo-verification and repair
CN106168918A (zh) 扩展纠错编码数据存储
CN109801668A (zh) 数据储存装置及应用于其上的操作方法
CN105550230B (zh) 分布式存储系统节点故障的侦测方法和装置
CN106227617A (zh) 自修复方法和基于纠删码算法的存储系统
CN108509143B (zh) 一种基于云存储的数据检测方法及装置
CN109144766B (zh) 一种数据存储、重构方法和装置、及电子设备
CN112084097B (zh) 一种磁盘告警方法及装置
CN113485872A (zh) 故障处理方法、装置及分布式存储系统
CN109542665A (zh) 掉电恢复方法、数据写入方法及装置
CN113626248A (zh) 一种raid中条带数据不一致的修复方法和系统
CN107239357B (zh) 脱机交易记录保存方法、装置、计算机设备和存储介质
CN107885640B (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