CN111158948A - 基于去重的数据存储与校验方法、装置及存储介质 - Google Patents

基于去重的数据存储与校验方法、装置及存储介质 Download PDF

Info

Publication number
CN111158948A
CN111158948A CN201911422181.6A CN201911422181A CN111158948A CN 111158948 A CN111158948 A CN 111158948A CN 201911422181 A CN201911422181 A CN 201911422181A CN 111158948 A CN111158948 A CN 111158948A
Authority
CN
China
Prior art keywords
data
read
data block
check code
storage area
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.)
Granted
Application number
CN201911422181.6A
Other languages
English (en)
Other versions
CN111158948B (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 CN201911422181.6A priority Critical patent/CN111158948B/zh
Publication of CN111158948A publication Critical patent/CN111158948A/zh
Application granted granted Critical
Publication of CN111158948B publication Critical patent/CN111158948B/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
    • 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/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • 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/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0674Disk device
    • G06F3/0676Magnetic disk device

Abstract

本发明公开了一种基于去重的数据存储与校验方法,所述方法包括以下步骤:在接收到数据读取请求时,根据数据存储区存储的数据块确定所述数据读取请求对应需要读取的每一个数据块对应的读取校验码;根据信息存储区中存储的校验码与数据块的映射关系确定每一个数据块的存储校验码;在所述读取校验码与对应的存储校验码匹配时,从所述数据存储区读取所述数据读取请求对应的数据块。本发明还公开了一种数据校验装置及计算机可读存储介质。通过将数据与校验码分开存储,增加了数据存储的有效空间,且能提高数据校验的准确性,避免因地址信息出错导致的校验出错的问题。

Description

基于去重的数据存储与校验方法、装置及存储介质
技术领域
本发明涉及数据处理技术领域,尤其涉及一种基于去重的数据存储与校验方法、数据校验装置及计算机可读存储介质。
背景技术
随着数字时代的发展,大数据的应用出现爆炸性增长,而随着数据量的不断增大,数据去重技术越来越受到数据存储类厂商的重视,且数据存储系统与数据应用的客户端之间的数据一致性,已经成为衡量存储质量的关键。
在读取数据时,传统的数据校验方式是先计算出每一个扇区的循环冗余校验码信息,再将数据和校验码一起发送到磁盘。由于数据与校验码存放在一起,在某些情况(如软件出问题)导致待读取数据的物理地址出错时,只要物理地址读取出来的校验码对待读取数据验证成功时就认为数据读取正确,而此时由于物理地址出错读取出来的其实不是想要读取的目标数据,因而,将数据与校验码存放在一起,无法解决待读取数据的物理地址出错时,待读取数据的校验问题。而在存储数据时,若采用传统的数据校验方式将数据和校验码一起存储到磁盘,需要磁盘提供516字节的扇区支持存储512字节的数据和4字节的校验码,会占用较多的磁盘空间,使得磁盘存储的有效数据减少。
上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。
发明内容
本发明主要目的在于提供一种基于去重的数据存储与校验方法、数据校验装置及计算机可读存储介质,旨在解决现有技术中的将数据与校验码存放在一起无法校验出物理地址出错时导致的数据读取出错的问题。
为实现上述目的,本发明提供一种基于去重的数据存储与校验方法,其中所述基于去重的数据校验方法包括以下步骤:
在接收到数据读取请求时,根据数据存储区存储的数据块确定所述数据读取请求对应待读取的每一个数据块对应的读取校验码;
根据信息存储区中的存储校验码与数据块的映射关系确定待读取的每一个数据块的存储校验码;
在所述读取校验码与对应的存储校验码匹配时,从所述数据存储区读取所述数据读取请求对应的待读取的数据块。
可选地,所述根据数据存储区存储的数据块确定所述数据读取请求对应待读取的每一个数据块对应的读取校验码的步骤,包括:
从数据存储区确定所述数据读取请求对应待读取的每一个数据块;
根据所述待读取的数据块确定与待读取的每一个数据块对应的读取校验码。
可选地,所述从数据存储区确定所述数据读取请求对应待读取的每一个数据块的步骤,包括:
从数据存储区中确定与所述数据读取请求对应的指纹信息相匹配的每一个数据块;
将与所述数据读取请求对应的指纹信息相匹配的每一个数据块确定为所述数据读取请求对应待读取的每一个数据块。
可选地,所述根据所述待读取的数据块确定与待读取的每一个数据块对应的读取校验码的步骤,包括:
根据所述待读取的每一个数据块确定与所述待读取的每一个数据块对应的校验码算法;
运用所述校验码算法计算所述待读取的每一个数据块的校验码;
将所述计算得到的校验码确定为相应待读取的数据块对应的读取校验码。
可选地,所述根据信息存储区中的存储校验码与数据块的映射关系确定待读取的每一个数据块的存储校验码的步骤,包括:
根据信息存储区中存储的校验码与指纹信息的映射关系确定与所述待读取的每一个数据块的指纹信息对应的校验码;
根据信息存储区中存储的指纹信息与数据块的映射关系确定所述指纹信息对应的每一个校验码对应的数据块;
将与所述待读取的每一个数据块的指纹信息对应的校验码确定为所述每一个校验码对应的数据块的存储校验码。
可选地,所述在接收到数据读取请求时,根据数据存储区存储的数据块确定所述数据读取请求对应待读取的每一个数据块对应的读取校验码的步骤之前,包括:
将去重得到的数据块存储至数据存储区,以根据数据存储区存储的数据块确定待读取的每一个数据块对应的校验码;
所述根据信息存储区中的存储校验码与数据块的映射关系确定待读取的每一个数据块的存储校验码的步骤之前,包括:
将去重得到的数据块对应的指纹信息及校验码存储至信息存储区,以根据信息存储区中存储的校验码与数据块的映射关系确定每一个数据块的存储校验码。
可选地,所述基于去重的数据存储方法包括以下步骤:
在接收到数据存储请求时,对存储的数据分块得到多个数据块;
判断分块后的数据块中是否存在指纹信息与信息存储区已存指纹信息相同的数据块;
若存在,则将与信息存储区已存指纹信息不同的数据块作为目标数据块,将所述目标数据块存储至数据存储区。
可选地,所述在接收到数据存储请求时,对存储的数据分块得到多个数据块的步骤之后,还包括:
获取分块后的数据块的指纹信息,将分块后的数据块的指纹信息与所述分块后的数据块的映射关系存储至信息存储区,以更新所述信息存储区存储的映射关系;
在接收到下一个数据存储请求时,根据更新后的映射信息执行判断分块后的数据块中是否存在指纹信息与信息存储区已存指纹信息相同的数据块的步骤。
可选地,所述将与信息存储区已存指纹信息不同的数据块作为目标数据块,将所述目标数据块存储至数据存储区的步骤之后,还包括:
获取分块后的数据块的校验码,将分块后的数据块的校验码与分块后的数据块的映射关系存储至信息存储区,以在接收到数据读取请求时,根据所述校验码与数据块的映射关系判断数据是否读取正确。
可选地,所述判断分块后的数据块中是否存在指纹信息与信息存储区已存指纹信息相同的数据块的步骤之后,还包括:
若分块后的数据块中不存在指纹信息与信息存储区已存指纹信息相同的数据块,则分块后的每一个数据块作为目标数据块存储至数据存储区。
此外,为实现上述目的,本发明还提供一种数据校验装置,所述数据校验装置包括存储器、处理器及存储在所述处理器上并可在处理器上运行的基于去重的数据校验程序和/或基于去重的数据存储程序,所述处理器执行所述基于去重的数据校验程序时实现如上所述的基于去重的数据校验方法的步骤,所述处理器执行所述基于去重的数据存储程序时实现如上所述的基于去重的数据存储方法的步骤。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有基于去重的数据校验程序和/或基于去重的数据存储程序,所述基于去重的数据校验程序被处理器执行时实现如上所述的基于去重的数据校验方法的步骤,所述基于去重的数据存储程序被处理器执行时实现如上所述的基于去重的数据存储方法的步骤。
本发明实施例中,在接收到数据读取请求时,根据数据存储区存储的数据块确定所述数据读取请求对应需要读取的每一个数据块对应的读取校验码,并根据信息存储区中存储的校验码与数据块的映射关系确定每一个数据块的存储校验码,然后将每一个数据块的读取校验码与存储校验码进行匹配,若所述读取校验码与对应的存储校验码匹配成功,则从所述数据存储区读取所述数据读取请求对应的数据块,从信息存储区读取每一个数据对应的存储校验码,从数据存储区读取数据读取请求对应的数据块,无论是数据块的物理地址出错还是数据的校验码不匹配都能校验出数据读取出错,提高数据校验的准确性,并且将数据块与数据块对应的映射信息分开存储,使得存储区能够存储更多的数据,提高了数据存储介质的利用率。
附图说明
图1为本发明实施例方案涉及的硬件运行环境的数据校验装置结构示意图;
图2是本发明基于去重的数据校验方法的实施例流程示意图;
图3为本发明基于去重的数据存储方法的实施例流程示意图;
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明的主要解决方案是:在接收到数据读取请求时,根据数据存储区存储的数据块确定所述数据读取请求对应需要读取的每一个数据块对应的读取校验码;根据信息存储区中存储的校验码与数据块的映射关系确定每一个数据块的存储校验码;在所述读取校验码与对应的存储校验码匹配时,从所述数据存储区读取所述数据读取请求对应的数据块。
目前的数据校验方案是通过将存储数据块与对应的存储校验码一起存储到数据存储区,在通过物理地址读取存储数据块时,只要存储数据块的读取验证码与相应的存储校验码一致就认为数据块读取正确,而此时,若因为软件问题等造成物理地址出错,导致读取的存储数据块出错,则无法根据校验码检测出来读取出错。因此,本发明提出一种基于去重的数据存储与校验方法、数据校验装置及计算机可读存储介质,通过将去重后的数据块存储至数据存储区,而将去重后的数据块对应的地址映射信息存储至信息存储区,在接收到数据读取请求时,根据数据存储区存储的数据块确定所述数据读取请求对应需要读取的每一个数据块对应的读取校验码,并根据信息存储区中存储的校验码与数据块的映射关系确定每一个数据块的存储校验码,在所述读取校验码与对应的存储校验码匹配时,从所述数据存储区读取所述数据读取请求对应的数据块完成请求数据的读取。将去重后的数据块与去重后的数据块对应的地址映射信息分别存储到不同的存储区域,这样,在物理地址发生错误时,由于根据物理地址读取出来的数据与欲读取的请求数据不一致,使得计算得到的读取校验码与对应的欲读取的请求数据的存储校验码不一致,从而校验出数据读取出错,提高数据校验的准确形,且提高了数据存储的有效存储空间。
参照图1,图1为本发明实施例方案涉及的硬件运行环境的数据校验装置结构示意图。
如图1所示,该数据校验装置可以包括:通信总线1002,处理器1001,例如CPU,用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的终端结构并不构成对数据校验装置的限定,可以包括比图示更多或更少的部件,或组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及基于去重的数据校验程序和/或基于去重的数据存储程序。
在图1所示的数据校验装置中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接客户端(用户端),与客户端进行数据通信;而处理器1001可以用于调用存储器1005中存储的基于去重的数据校验程序,并执行以下操作:
在接收到数据读取请求时,根据数据存储区存储的数据块确定所述数据读取请求对应待读取的每一个数据块对应的读取校验码;
根据信息存储区中的存储校验码与数据块的映射关系确定待读取的每一个数据块的存储校验码;
在所述读取校验码与对应的存储校验码匹配时,从所述数据存储区读取所述数据读取请求对应的待读取的数据块。
可选地,处理器1001可以调用存储器1005中存储的基于去重的数据校验程序,还执行以下操作:
从数据存储区确定所述数据读取请求对应待读取的每一个数据块;
根据所述待读取的数据块确定与待读取的每一个数据块对应的读取校验码。
可选地,处理器1001可以调用存储器1005中存储的基于去重的数据校验程序,还执行以下操作:
从数据存储区中确定与所述数据读取请求对应的指纹信息相匹配的每一个数据块;
将与所述数据读取请求对应的指纹信息相匹配的每一个数据块确定为所述数据读取请求对应待读取的每一个数据块。
可选地,处理器1001调用存储器1005中存储的基于去重的数据校验程序,并执行以下操作:
根据所述待读取的每一个数据块确定与所述待读取的每一个数据块对应的校验码算法;
运用所述校验码算法计算所述待读取的每一个数据块的校验码;
将所述计算得到的校验码确定为相应待读取的数据块对应的读取校验码。
可选地,处理器1001可以调用存储器1005中存储的基于去重的数据校验程序,还执行以下操作:
根据信息存储区中存储的校验码与指纹信息的映射关系确定与所述待读取的每一个数据块的指纹信息对应的校验码;
根据信息存储区中存储的指纹信息与数据块的映射关系确定所述指纹信息对应的每一个校验码对应的数据块;
将与所述待读取的每一个数据块的指纹信息对应的校验码确定为所述每一个校验码对应的数据块的存储校验码。
可选地,所述在接收到数据读取请求时,根据数据存储区存储的数据块确定所述数据读取请求对应待读取的每一个数据块对应的读取校验码的步骤之前,处理器1001可以调用存储器1005中存储的基于去重的数据校验程序,还执行以下操作:
将去重得到的数据块存储至数据存储区,以根据数据存储区存储的数据块确定待读取的每一个数据块对应的校验码;
可选地,所述根据信息存储区中的存储校验码与数据块的映射关系确定待读取的每一个数据块的存储校验码的步骤之前,处理器1001可以调用存储器1005中存储的基于去重的数据校验程序,还执行以下操作:
将去重得到的数据块对应的指纹信息及校验码存储至信息存储区,以根据信息存储区中存储的校验码与数据块的映射关系确定每一个数据块的存储校验码。
另外,处理器1001还可以用于调用存储器1005中存储的基于去重的数据存储程序,并执行以下操作:
在接收到数据存储请求时,对存储的数据分块得到多个数据块;
判断分块后的数据块中是否存在指纹信息与信息存储区已存指纹信息相同的数据块;
若存在,则将与信息存储区已存指纹信息不同的数据块作为目标数据块,将所述目标数据块存储至数据存储区。
可选地,所述在接收到数据存储请求时,对存储的数据分块得到多个数据块的步骤之后,处理器1001可以调用存储器1005中存储的基于去重的数据存储程序,还执行以下操作:
获取分块后的数据块的指纹信息,将分块后的数据块的指纹信息与所述分块后的数据块的映射关系存储至信息存储区,以更新所述信息存储区存储的映射关系;
在接收到下一个数据存储请求时,根据更新后的映射信息执行判断分块后的数据块中是否存在指纹信息与信息存储区已存指纹信息相同的数据块的步骤。
可选地,所述将与信息存储区已存指纹信息不同的数据块作为目标数据块,将所述目标数据块存储至数据存储区的步骤之后,处理器1001可以调用存储器1005中存储的基于去重的数据存储程序,还执行以下操作:
获取分块后的数据块的校验码,将分块后的数据块的校验码与分块后的数据块的映射关系存储至信息存储区,以在接收到数据读取请求时,根据所述校验码与数据块的映射关系判断数据是否读取正确。
可选地,所述判断分块后的数据块中是否存在指纹信息与信息存储区已存指纹信息相同的数据块的步骤之后,处理器1001可以调用存储器1005中存储的基于去重的数据存储程序,还执行以下操作:
若分块后的数据块中不存在指纹信息与信息存储区已存指纹信息相同的数据块,则分块后的每一个数据块作为目标数据块存储至数据存储区。
参照图2,图2为本发明基于去重的数据校验方法的第一实施例流程图,本实施例中,所基于去重的数据校验方法包括以下步骤:
步骤S10:在接收到数据读取请求时,根据数据存储区存储的数据块确定所述数据读取请求对应待读取的每一个数据块对应的读取校验码;
根据数据存储区存储的数据块确定所述数据读取请求对应待读取的每一个数据块对应的读取校验码之前,需要将去重得到的数据块存储至数据存储区,以根据数据存储区存储的数据块确定所述数据读取请求对应待读取的每一个数据块对应的读取校验码。所述去重指的在接收到数据存储请求时,将要存储的数据分块后,根据分块后的每一个数据的指纹信息,从数据存储区中找出指纹信息与信息存储区存储的指纹信息不同的数据块作为去重得到的数据块进行存储,而与信息存储区存储的指纹信息相同的数据块只保留映射关系,不再对数据块进行存储,以节省数据存储的空间。在接收到数据读取请求时,先从数据存储区确定所述数据读取请求对应待读取的每一个数据块,再根据所述待读取的数据块确定与待读取的每一个数据块对应的读取校验码。而确定所述数据读取请求对应待读取的每一个数据块的步骤可以是:从数据存储区中确定与所述数据读取请求对应的指纹信息相匹配的每一个数据块,将与所述数据读取请求对应的指纹信息相匹配的每一个数据块确定为所述数据读取请求对应待读取的每一个数据块。具体地,根据信息存储区中存储的指纹信息与数据块的映射关系确定与所述数据读取请求对应需要读取的每一个数据块的指纹信息后,将数据存储区存储的数据块的指纹信息与所述数据读取请求对应需要读取的每一个数据块的指纹信息进行比对,根据所述存储区存储的数据块将指纹信息比对一致的数据块确定为所述数据读取请求对应需要读取的每一个数据块。再根据所述待读取的每一个数据块确定与所述待读取的每一个数据块对应的校验码算法,运用所述校验码算法计算所述待读取的每一个数据块的校验码,将所述计算得到的校验码确定为相应待读取的数据块对应的读取校验码。其中,校验码算法的确定可以是根据所述确定的待读取的每一个数据块,将存储至信息存储区之前所述待读取的每一个数据块的校验码算法确定为待读取的每一个数据块的校验码,计算待读取的每一个数据块的校验码。值得注意的是,在将每一个数据块相应的校验码存储到信息存储区时的校验码算法,与从数据存储区读取时的校验码算法应该保持一致,以确保存储的校验码与读取的校验码之间存在可比性。而所述将每一个数据块相应的校验码存储到信息存储区时的校验码算法可以是奇偶校验、纵向冗余校验、累加和校验及循环冗余校验等数据校验方法对应的任一种校验码算法,本实施例中,考虑到算法的可靠性与数据的安全性等因素,优选CRC32算法作为所述数据块的检验码算法。
步骤S20:根据信息存储区中的存储校验码与数据块的映射关系确定待读取的每一个数据块的存储校验码;
在确定与数据读取请求对应的所需读取的每一个数据块后,要根据信息存储区中存储的校验码与数据块的映射关系确定每一个数据块的存储校验码,首先要将去重得到的数据块对应的指纹信息及校验码存储至信息存储区,以根据信息存储区中存储的校验码与数据块的映射关系确定待读取的每一个数据块的存储校验码。而所述将去重得到的数据块对应的指纹信息及校验码存储至信息存储区的步骤可以是在步骤S10在接收到数据读取请求时,根据数据存储区存储的数据块确定所述数据读取请求对应待读取的每一个数据块对应的读取校验码之前,也可以是在步骤S10之后而在步骤S20之前,本实施例优选在步骤S10之前将去重得到的数据块对应的指纹信息及校验码存储至信息存储区。在完成信息存储区的信息存储后,要确定待读取的每一个数据块的存储校验码,先要确定信息存储区中存储的校验码与数据块的映射关系。而所述校验码与数据块的映射关系可以根据信息存储区存储的指纹信息与校验码进行确定,其中指纹信息与数据块的物理地址信息存在映射关系,而所述校验码与所述指纹信息之间存在映射关系,而根据数据块的物理地址信息就可以找到所述物理地址信息对应的数据块,因此,只要已知数据块、物理地址信息、指纹信息及校验码中的至少一个信息,就可以根据相互之间的映射关系确定信息存储区存储的其他信息。如:在知道数据的指纹信息时,可以根据指纹信息确定与指纹信息对应的物理地址信息,根据物理地址信息又可以确定与指纹信息对应的数据块,同时,根据指纹信息还可以确定与指纹信息对应的数据块。本实施例中,提供一种较优的实施方案,根据信息存储区中存储的校验码与指纹信息的映射关系确定与所述需要读取的每一个数据块的指纹信息对应的校验码,而根据信息存储区中存储的指纹信息与数据块的映射关系可以确定所述指纹信息对应的每一个校验码对应的数据块,将与所述需要读取的每一个数据块的指纹信息对应的校验码确定为所述每一个校验码对应的数据块的存储校验码。此处,对所述确定所述数据读取请求对应需要读取的每一个数据块对应的读取校验码的步骤与所述根据信息存储区中存储的校验码与数据块的映射关系确定每一个数据块的存储校验码的步骤的先后顺序不做限定,可以是先确定读取校验码也可以是先确定存储校验码,当然还可以是同时确定所述读取校验码与存储校验,而确定存储校验码与读取校验码的目的在于将存储校验码与读取校验码进行比较,以判断读取的数据块的正确性,从而保证读取的数据读取请求对应的数据的完整性。
步骤S30:在所述读取校验码与对应的存储校验码匹配时,从所述数据存储区读取所述数据读取请求对应的待读取的数据块;
从所述数据存储区读取所述数据读取请求对应的完整的数据块之前,首先要根据确定的读取校验码与相应的存储校验码进行比较以校验数据块的读取是否正确。在所述读取校验码与对应的存储校验码匹配成功,即所述读取校验码与对应的存储校验码一致时,将读取校验码与相应的存储校验码一致的数据块判定为正确的读取数据块,而在读取校验码与对应的存储校验码不一致时,将读取校验码与对应的存储校验码不一致的数据块判定为错误的读取数据块。所述将读取校验码与相应的存储校验码匹配的过程,按照数据读取请求对应的每一个数据块的排列顺序确定校验码的匹配顺序,根据所述匹配顺序依次进行匹配,所述排列顺序对应指的是按照所述排列顺序将每一个数据块拼接起来正好可以得到数据读取请求对应的完整数据。当数据读取请求对应的每一个需要读取的数据块都为正确的读取数据块时,按照匹配顺序将所述正确的读取数据块拼接起来就可以读取出与所述数据读取请求对应的完整的可靠数据;而在数据读取请求对应的每一个需要读取的数据块中至少存在一个错误的读取数据时,则读取错误,无法读取出与所述数据请求对应的完整数据。除此之外,读取出与所述数据读取请求对应的完整的可靠数据的步骤还可以是先获取将验证通过的每一个数据块置于数据缓冲区,在获取完所有验证通过的数据块时,再将获取的每一个数据块,根据每一个数据块相应的标识信息按顺序拼接起来,最终读取出与数据读取请求对应的完整的可靠数据,此时,对于校验过程的匹配顺序不做限定,只要能够匹配到所有的需要进行校验的数据块即可,淡然也可以是按照数据读取请求对应的每一个数据块的排列顺序确定校验码的匹配顺序进行匹配。
本实施例通过在接收到数据读取请求时,根据数据存储区存储的数据块确定所述数据读取请求对应需要读取的每一个数据块对应的读取校验码,并根据信息存储区中存储的校验码与数据块的映射关系确定每一个数据块的存储校验码,将所述读取校验码与对应的存储校验码进行比较,当所述读取校验码与对应的存储校验码匹配时,从所述数据存储区读取所述数据读取请求对应的数据块,实现所述数据读取请求对应的数据的完整读取。将数据块与校验码分别存储到不同的存储区域,不仅有效避免了因地址错误导致的校验结果不准确的问题,也增加数据存储的存储空间,使得存储端可以存储更多的有效数据。
参照图3,图3为本发明基于去重的数据存储方法的实施例流程图,本实施例中,所基于去重的数据存储方法包括以下步骤:
步骤S11:在接收到数据存储请求时,对存储的数据分块得到多个数据块;
在接收到数据存储请求时,先要对存储的数据进行分块处理多个数据块,以合理利用存储端(如磁盘等)的存储空间。所述分块处理可以是按照固定长度进行分块得到多个固定大小的数据块,也可以是按照变长进行分块得到多个大小不一的数据块。在对存储的数据进行分块后,分块后的数据块中可能会存在内容相同的重复数据块,为了节省存储空间,提高数据存储的有效性,需要将分块后的数据块中的重复数据块检测出来,以对分块后的数据块进行去重操作。通常,为了更细粒度的检测重复数据,可以将文件分割成固定大小的数据块,基于固定大小数据块进行重复数据检测,而按照固定长度进行分块会造成空间利用率低和存在磁盘碎片等问题导致存储空间的浪费,因而结合具体的应用情景也可以按照变长对存储的数据进行分块处理,得到不同长度的数据块,如:在具体的应用情景对存储空间的要求比较高时,可以按照变长对存储的数据进行分块处理,而在对存储空间的要求不高或杜宇重复数据进行检测时对数据的块的粒度要求较高时,可以考虑按照固定长度对存储的数据进行分块处理。
步骤S12:判断分块后的数据块中是否存在指纹信息与信息存储区已存指纹信息相同的数据块;
在判断分块后的数据块中是否存在指纹信息与信息存储区已存指纹信息相同的数据块之前,先要计算分块后的每一个数据块的指纹信息。对于不同的分块机制,也可以对应选择不同分块机制对应的指纹算法。基于数据的安全性、处理速度及算法的可靠性与稳定性等方面的考虑,在按照定长对存储的数据进行分块处理时本实施例优选将SHA-1算法作为计算指纹信息的算法计算出存储的数据的指纹信息,将计算得到的指纹信息与信息存储区已存储的指纹信息进行比对以将区分出重复数据块与不重复数据块。在采用SHA-1算法进行指纹计算时,具体的区分过程如下:将存储系统中所有的文件按固定大小划分成数据块后,计算每个数据块的hash值,将所有的hash值单独存储起来构成hash函数值库(指纹信息库,即存储在信息存储区中的指纹信息)。当检测到有数据需要存储时,按照同样的固定长度将其划分成待存储数据块,用划分后的每一个数据块的hash值同hash函数值库中的逐一比较。如果发现待存储数据块的hash函数值已经存在于hash函数值库中,说明该数据块已经在系统中存储过,无需再次存储,只要将指向这个hash函数值所代表的数据块的指针存入相应位置即可;如果待存储数据块的hash函数值不在hash值库中,则将其存储到数据存储区中,并将待存储数据块的hash函数值添加到hash函数值库里。而对于可变大小数据块的检测是基于文件内容将文件分成大小不等的数据块,通常是利用Rabin指纹的方法计算出每一个数据块的指纹值,将计算得到的指纹信息与信息存储区已存储的指纹信息进行比对以将区分出重复数据块与不重复数据块。在采Rabin指纹进行指纹计算时,具体的区分过程如下:从文件头部开始,将固定大小(相互重叠)的滑动窗口中的数据作为Rabin指纹的子序列,计算每个窗口区域的指纹信息,当计算得到的指纹信息满足条件时,就将此时窗口所在位置的边界作为块的边界,继续计算直至整个存储数据都被划分成数据块。接下来再用hash函数(MD5或者SHA)计算出每个划分的数据块hash值,并存储至hash函数值库中。在检测到有要存储的数据时,按照上述方法将要存储的数据划分成数据块,再将每个数据块的hash值与已存储的hash值进行对比,如果检测到相同的hash值,则仅保留指纹信息(即hash值)与数据块的映射信息,如果没有检测到相同的hash值。则存储该hash值不同的数据块并更新hash函数值库。
步骤S13:若存在,则将与信息存储区已存指纹信息不同的数据信息块作为目标数据块,将所述目标数据块存储至数据存储区。
在判断分块后的数据块中是否存在指纹信息与信息存储区已存指纹信息相同的数据块的判断结果为:分块后的数据块中存在指纹信息与信息存储区已存指纹信息相同的数据块时,则将与信息存储区已存指纹信息相同的数据块作为重复数据块,不再进行存储,只保留重复数据块的指纹信息与对应数据块的映射信息;而在判断结果为:分块后的数据块中存在指纹信息与信息存储区已存指纹信息不同的数据块时,则将与信息存储区已存指纹信息不同的数据块作为不重复的目标数据块存储到数据存储区,其中在分块处理后的数据块中不存在指纹信息与信息区已存指纹信息相同的数据块时,将所述分块后的每一个数据块均作为目标数据块存储至存储端的数据区。而在将与信息存储区已存指纹信息不同的数据信息块作为目标数据块,将所述目标数据块存储至数据存储区之后,将分块后的数据块(包括重复数据与不重复的目标数据)的指纹信息与所述分块后的数据块的映射关系存储至信息存储区,以更新所述信息存储区存储的映射关系,这样在接收到下一个数据存储请求时,就可以根据更新后的映射信息执行判断分块后的数据块中是否存在指纹信息与信息存储区已存指纹信息相同的数据块的步骤。而在计算分块后的每一个数据块的指纹信息,并存储至信息存储区的同时,还可以获取分块后的数据块的校验码,将分块后的数据块的校验码与分块后的数据块的映射关系存储至信息存储区,以在接收到数据读取请求时,根据所述校验码与数据块的映射关系判断数据是否读取正确,即根据信息存储区存储的每一个数据块对应的指纹信息从所述信息存储区查询与所述指纹信息对应的校验码,以在接收到数据读取请求时根据所述查询到的存储校验码与读取数据时计算得到的读取校验判断数据是否读取正确。这里指纹信息与对应数据块的映射信息包括指纹信息与对应数据块的物理地址信息之间的映射信息;数据存储区尤指日志式存储系统的段文件,信息存储区尤指元数据中心,其中指纹信息与地址信息的映射信息保存到元数据中心的指纹表中;指纹信息与校验码的映射信息保存在元数据中心的地址映射表中。
本实施例通过在接收到数据存储请求时,对存储的数据分块得到分块后的数据块,判断分块后的数据块中是否存在指纹信息与信息存储区已存指纹信息相同的数据块,若存在,则将与信息存储区已存指纹信息不同的数据信息块作为目标数据块,将所述目标数据块存储至数据存储区,将指纹信息与数据分别存储到信息存储区与数据存储区,可以解决存储到一起占用较多磁盘空间的问题,有效减少磁盘占用空间,而将存储数据去重后存储到数据区,可以进一步提高存储空间的有效数据存储量,便于合理利用存储空间。
此外,本发明实施例还提供一种数据校验装置,所述数据校验装置包括存储器、处理器及存储在所述处理器上并可在处理器上运行的基于去重的数据校验程序和/或基于去重的数据存储程序,所述处理器执行所述基于去重的数据校验程序时实现如上所述基于去重的数据校验方法的步骤,所述处理器执行所述基于去重的数据存储程序时实现如上所述基于去重的数据存储方法的步骤。
此外,本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有基于去重的数据校验程序和/或基于去重的数据存储程序,所述基于去重的数据校验程序被处理器执行时实现如上所述的基于去重的数据校验方法的步骤,所述基于去重的数据存储程序被处理器执行时实现如上所述的基于去重的数据存储方法的步骤。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,电视,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (12)

1.一种基于去重的数据校验方法,其特征在于,所述基于去重的数据校验方法包括以下步骤:
在接收到数据读取请求时,根据数据存储区存储的数据块确定所述数据读取请求对应待读取的每一个数据块对应的读取校验码;
根据信息存储区中的存储校验码与数据块的映射关系确定待读取的每一个数据块的存储校验码;
在所述读取校验码与对应的存储校验码匹配时,从所述数据存储区读取所述数据读取请求对应的待读取的数据块。
2.如权利要求1所述的基于去重的数据校验方法,其特征在于,所述根据数据存储区存储的数据块确定所述数据读取请求对应待读取的每一个数据块对应的读取校验码的步骤,包括:
从数据存储区确定所述数据读取请求对应待读取的每一个数据块;
根据所述待读取的数据块确定与待读取的每一个数据块对应的读取校验码。
3.如权利要求2所述的基于去重的数据校验方法,其特征在于,所述从数据存储区确定所述数据读取请求对应待读取的每一个数据块的步骤,包括:
从数据存储区中确定与所述数据读取请求对应的指纹信息相匹配的每一个数据块;
将与所述数据读取请求对应的指纹信息相匹配的每一个数据块确定为所述数据读取请求对应待读取的每一个数据块。
4.如权利要求2所述的基于去重的数据校验方法,其特征在于,所述根据所述待读取的数据块确定与待读取的每一个数据块对应的读取校验码的步骤,包括:
根据所述待读取的每一个数据块确定与所述待读取的每一个数据块对应的校验码算法;
运用所述校验码算法计算所述待读取的每一个数据块的校验码;
将所述计算得到的校验码确定为相应待读取的数据块对应的读取校验码。
5.如权利要求1所述的基于去重的数据校验方法,其特征在于,所述根据信息存储区中的存储校验码与数据块的映射关系确定待读取的每一个数据块的存储校验码的步骤,包括:
根据信息存储区中存储的校验码与指纹信息的映射关系确定与所述待读取的每一个数据块的指纹信息对应的校验码;
根据信息存储区中存储的指纹信息与数据块的映射关系确定所述指纹信息对应的每一个校验码对应的数据块;
将与所述待读取的每一个数据块的指纹信息对应的校验码确定为所述每一个校验码对应的数据块的存储校验码。
6.如权利要求1所述的基于去重的数据校验方法,其特征在于,所述在接收到数据读取请求时,根据数据存储区存储的数据块确定所述数据读取请求对应待读取的每一个数据块对应的读取校验码的步骤之前,包括:
将去重得到的数据块存储至数据存储区,以根据数据存储区存储的数据块确定待读取的每一个数据块对应的校验码;
所述根据信息存储区中的存储校验码与数据块的映射关系确定待读取的每一个数据块的存储校验码的步骤之前,包括:
将去重得到的数据块对应的指纹信息及校验码存储至信息存储区,以根据信息存储区中存储的校验码与数据块的映射关系确定每一个数据块的存储校验码。
7.一种基于去重的数据存储方法,其特征在于,所述基于去重的数据校验方法包括以下步骤:
在接收到数据存储请求时,对存储的数据分块得到多个数据块;
判断分块后的数据块中是否存在指纹信息与信息存储区已存指纹信息相同的数据块;
若存在,则将与信息存储区已存指纹信息不同的数据块作为目标数据块,将所述目标数据块存储至数据存储区。
8.如权利要求7所述的基于去重的数据存储方法,其特征在于,所述在接收到数据存储请求时,对存储的数据分块得到多个数据块的步骤之后,还包括:
获取分块后的数据块的指纹信息,将分块后的数据块的指纹信息与所述分块后的数据块的映射关系存储至信息存储区,以更新所述信息存储区存储的映射关系;
在接收到下一个数据存储请求时,根据更新后的映射信息执行判断分块后的数据块中是否存在指纹信息与信息存储区已存指纹信息相同的数据块的步骤。
9.如权利要求7所述的基于去重的数据存储方法,其特征在于,所述将与信息存储区已存指纹信息不同的数据块作为目标数据块,将所述目标数据块存储至数据存储区的步骤之后,还包括:
获取分块后的数据块的校验码,将分块后的数据块的校验码与分块后的数据块的映射关系存储至信息存储区,以在接收到数据读取请求时,根据所述校验码与数据块的映射关系判断数据是否读取正确。
10.如权利要求7所述的基于去重的数据存储方法,其特征在于,所述判断分块后的数据块中是否存在指纹信息与信息存储区已存指纹信息相同的数据块的步骤之后,还包括:
若分块后的数据块中不存在指纹信息与信息存储区已存指纹信息相同的数据块,则分块后的每一个数据块作为目标数据块存储至数据存储区。
11.一种数据校验装置,其特征在于,所述装置包括存储器、处理器及存储在存储器上并可在处理器上运行的基于去重的数据校验程序和/或基于去重的数据存储程序,所述处理器执行所述基于去重的数据校验程序时实现权利要求1-6中任一项所述的基于去重的数据校验方法的步骤,所述处理器执行所述基于去重的数据存储程序时实现权利要求7-10中任一项所述的基于去重的数据存储方法的步骤。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有基于去重的数据校验程序和/或基于去重的数据存储程序,所述基于去重的数据校验程序被处理器执行时实现如权利要求1-6中任一项所述的基于去重的数据校验方法的步骤,所述基于去重的数据存储程序被处理器执行时实现如权利要求7-10中任一项所述的基于去重的数据存储方法的步骤。
CN201911422181.6A 2019-12-30 2019-12-30 基于去重的数据存储与校验方法、装置及存储介质 Active CN111158948B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911422181.6A CN111158948B (zh) 2019-12-30 2019-12-30 基于去重的数据存储与校验方法、装置及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911422181.6A CN111158948B (zh) 2019-12-30 2019-12-30 基于去重的数据存储与校验方法、装置及存储介质

Publications (2)

Publication Number Publication Date
CN111158948A true CN111158948A (zh) 2020-05-15
CN111158948B CN111158948B (zh) 2024-04-09

Family

ID=70560663

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911422181.6A Active CN111158948B (zh) 2019-12-30 2019-12-30 基于去重的数据存储与校验方法、装置及存储介质

Country Status (1)

Country Link
CN (1) CN111158948B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113721836A (zh) * 2021-06-15 2021-11-30 荣耀终端有限公司 一种数据去重方法及装置
CN114077569A (zh) * 2020-08-18 2022-02-22 富泰华工业(深圳)有限公司 压缩数据的方法及设备、解压缩数据的方法及设备
CN114237513A (zh) * 2021-12-17 2022-03-25 四川九洲空管科技有限责任公司 文件数据存储器、写入方法、读取方法及存储系统
WO2022204971A1 (zh) * 2021-03-30 2022-10-06 华为技术有限公司 存储方法及存储控制器

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009089716A1 (fr) * 2007-12-14 2009-07-23 Huawei Technologies Co., Ltd. Procédé et dispositif de vérification de données
CN102799598A (zh) * 2011-05-25 2012-11-28 英业达股份有限公司 重复数据删除的数据复原方法
US8910031B1 (en) * 2011-03-29 2014-12-09 Emc Corporation DIF-CRC based fast hashing
CN106201771A (zh) * 2015-05-06 2016-12-07 阿里巴巴集团控股有限公司 数据存储系统和数据读写方法
WO2017088507A1 (zh) * 2015-11-26 2017-06-01 华为技术有限公司 一种更新错误检测和纠正ecc码的方法及装置
WO2019028799A1 (zh) * 2017-08-10 2019-02-14 华为技术有限公司 一种数据访问方法、装置和系统

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102214210B (zh) * 2011-05-16 2013-03-13 华为数字技术(成都)有限公司 重复数据处理方法、装置和系统
CN103294957B (zh) * 2013-05-06 2015-10-28 北京赛思信安技术有限公司 支持重复数据删除文件系统中数据更新时的数据保护方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009089716A1 (fr) * 2007-12-14 2009-07-23 Huawei Technologies Co., Ltd. Procédé et dispositif de vérification de données
US8910031B1 (en) * 2011-03-29 2014-12-09 Emc Corporation DIF-CRC based fast hashing
CN102799598A (zh) * 2011-05-25 2012-11-28 英业达股份有限公司 重复数据删除的数据复原方法
CN106201771A (zh) * 2015-05-06 2016-12-07 阿里巴巴集团控股有限公司 数据存储系统和数据读写方法
WO2017088507A1 (zh) * 2015-11-26 2017-06-01 华为技术有限公司 一种更新错误检测和纠正ecc码的方法及装置
WO2019028799A1 (zh) * 2017-08-10 2019-02-14 华为技术有限公司 一种数据访问方法、装置和系统

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114077569A (zh) * 2020-08-18 2022-02-22 富泰华工业(深圳)有限公司 压缩数据的方法及设备、解压缩数据的方法及设备
CN114077569B (zh) * 2020-08-18 2023-07-18 富泰华工业(深圳)有限公司 压缩数据的方法及设备、解压缩数据的方法及设备
WO2022204971A1 (zh) * 2021-03-30 2022-10-06 华为技术有限公司 存储方法及存储控制器
CN113721836A (zh) * 2021-06-15 2021-11-30 荣耀终端有限公司 一种数据去重方法及装置
CN114237513A (zh) * 2021-12-17 2022-03-25 四川九洲空管科技有限责任公司 文件数据存储器、写入方法、读取方法及存储系统

Also Published As

Publication number Publication date
CN111158948B (zh) 2024-04-09

Similar Documents

Publication Publication Date Title
CN111158948B (zh) 基于去重的数据存储与校验方法、装置及存储介质
US9535781B2 (en) System file repair method and apparatus
CN110716895A (zh) 目标数据归档方法、装置、计算机设备及介质
CN101971149A (zh) 文件存储方法及系统
US11275835B2 (en) Method of speeding up a full antivirus scan of files on a mobile device
CN113342745A (zh) 一种镜像文件的校验方法、装置、电子设备及存储介质
CN110162429B (zh) 系统修复方法、服务器及存储介质
CN107861832B (zh) 数据验证方法、装置及可读存储介质
WO2023000674A1 (zh) 云硬盘数据压缩备份及恢复方法、装置、设备及存储介质
CN106843947B (zh) 代码缺陷的处理方法和装置
CN106776105B (zh) 一种系统启动文件的校验及编译方法
CN106201640A (zh) 一种升级BootLoader程序的方法及装置
CN108196975B (zh) 基于多校验和的数据验证方法、装置及存储介质
US20140337301A1 (en) Big data extraction system and method
CN111338759A (zh) 虚拟磁盘校验码生成方法、装置、设备及存储介质
CN106445737B (zh) 一种多备份启动方法
CN111104248A (zh) 用于验证缓存文件的方法、设备和计算机程序产品
CN113672634A (zh) 保单数据的校验方法、装置、设备及存储介质
WO2020233044A1 (zh) 一种插件校验方法、设备、服务器及计算机可读存储介质
US20190130126A1 (en) Non-transitory computer readable recording medium, alteration detection method, and alteration detection apparatus
CN109002710B (zh) 一种检测方法、装置及计算机可读存储介质
CN115470040A (zh) 基于快照的重删指纹阈值的测试方法、装置、设备、介质
CN112416891B (zh) 数据检测方法、装置、电子设备及可读存储介质
CN111931161B (zh) 基于risc-v处理器的芯片验证方法、设备及存储介质
CN113505026A (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