CN115981572A - 数据一致性验证方法、装置、电子设备及可读存储介质 - Google Patents

数据一致性验证方法、装置、电子设备及可读存储介质 Download PDF

Info

Publication number
CN115981572A
CN115981572A CN202310102085.3A CN202310102085A CN115981572A CN 115981572 A CN115981572 A CN 115981572A CN 202310102085 A CN202310102085 A CN 202310102085A CN 115981572 A CN115981572 A CN 115981572A
Authority
CN
China
Prior art keywords
data block
field
storage
target
target data
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
CN202310102085.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.)
Inspur Electronic Information Industry Co Ltd
Original Assignee
Inspur Electronic Information Industry 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 Inspur Electronic Information Industry Co Ltd filed Critical Inspur Electronic Information Industry Co Ltd
Priority to CN202310102085.3A priority Critical patent/CN115981572A/zh
Publication of CN115981572A publication Critical patent/CN115981572A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开了一种数据一致性验证方法、装置、电子设备及可读存储介质,涉及数据存储技术领域,方法包括:接收主机端发送的数据写入请求;根据所述数据写入请求确定目标数据块;对所述目标数据块进行字段解析,获得各字段内容;其中,所述字段内容包括存储地址字段、版本号字段、其他字段,所述其他字段基于所述存储地址字段和所述版本号字段按照预设字段生成规则生成;判断各所述字段内容是否满足预设字段格式;若否,则输出验证失败提示。应用本申请所提供的技术方案,可以实现存储系统内实时的数据一致性验证,保证存储系统的稳定运行。

Description

数据一致性验证方法、装置、电子设备及可读存储介质
技术领域
本申请涉及数据存储技术领域,特别涉及一种数据一致性验证方法、装置、电子设备及可读存储介质。
背景技术
SAN(Storage Area Network,一种集中式管理的高速存储网络)存储系统提供多种块存储协议服务,广泛应用于企业级数据存储,其连接拓扑包括主机、IP(InternetProtocol,网络协议)/FC(Fiber Channel,光纤通道)适配卡、IP/FC交换机、SAN存储系统,其中,SAN存储系统又包括前端IP/FC适配卡、SAN协议服务层、缓存层、存储池层、RAID(Redundant Arrays of Independent Disks,磁盘阵列)层、硬盘接口层、后端硬盘等。
SAN存储系统需要保证数据一致性,即每个扇区读出的数据是上一次写到该扇区的数据,包括不写错数据和位置、不读错、不漏写、不写乱序等。但是,由于SAN存储系统及其应用拓扑包含较多软件、硬件模块,在开发过程数据一致性的测试分析难度较大。传统技术中,如基于数据一致性字段的验证技术、vdbench和fio等主机端测试工具,均存在无法实时发现的问题,即无法实现实时的数据一致性验证,异常问题发现太晚,给存储系统的稳定运行带来了不好的影响。
因此,如何实现存储系统内实时的数据一致性验证,保证存储系统的稳定运行是本领域技术人员亟待解决的问题。
发明内容
本申请的目的是提供一种数据一致性验证方法,用于解决传统技术中基于测试工具无法实现实时的数据一致性验证的问题;本申请的另一目的是提供另一种数据一致性验证方法、数据一致性验证装置、电子设备及计算机可读存储介质,均具有上述有益效果。
第一方面,本申请提供了一种数据一致性验证方法,应用于存储端,所述方法包括:
接收主机端发送的数据写入请求;
根据所述数据写入请求确定目标数据块;
对所述目标数据块进行字段解析,获得各字段内容;其中,所述字段内容包括存储地址字段、版本号字段、其他字段,所述其他字段基于所述存储地址字段和所述版本号字段按照预设字段生成规则生成;
判断各所述字段内容是否满足预设字段格式;
若否,则输出验证失败提示。
可选地,所述判断各所述字段内容是否满足预设字段格式,包括:
根据所述数据写入请求确定命令描述块;
对所述命令描述块进行解析,获得存储指示信息;
根据所述存储指示信息获取所述目标数据块对应的历史数据块,并获取所述历史数据块的版本号信息;
根据所述存储指示信息按照所述预设字段生成规则生成验证信息;
当所述存储地址字段与所述存储指示信息相匹配,且所述版本号字段与所述版本号信息相匹配,且所述其他字段与所述验证信息相匹配时,确定各所述字段内容满足所述预设字段格式。
可选地,所述根据所述存储指示信息获取所述目标数据块对应的历史数据块,包括:
根据所述存储指示信息判断缓存中是否存在所述历史数据块;
若是,则从所述缓存中读取所述历史数据块;
若否,则根据所述存储指示信息确定底层存储位置,并从所述底层存储位置读取所述历史数据块。
可选地,所述预设字段生成规则包括哈希运算规则和数值递增规则,基于所述存储地址字段和所述版本号字段按照所述预设字段生成规则生成所述其他字段,包括:
按照所述哈希运算规则对所述存储地址字段和所述版本号字段进行计算获得哈希值,并将所述哈希值作为所述其他字段的第一个字节;
基于所述哈希值,按照所述数值递增规则对所述其他字段中除所述第一个字节之外的其他字节进行填充。
可选地,当各所述字段内容满足所述预设字段格式时,所述方法还包括:
当数据写入模式为缓存下刷模式时,将所述目标数据块写入缓存,并在所述缓存的数据块存储量达到预设阈值时,将所述目标数据块从所述缓存下刷至底层存储;
当所述数据写入模式为直写模式时,将所述目标数据块写入所述底层存储。
可选地,所述将所述目标数据块从所述缓存下刷至底层存储,包括:
按照预设更新规则对所述目标数据块进行格式更新,获得新的目标数据块;
从所述底层存储读取所述新的目标数据块对应的旧数据块;
利用所述旧数据块对所述新的目标数据块进行验证;
当验证通过时,将所述新的目标数据块从所述缓存下刷至所述底层存储。
可选地,所述按照预设更新规则对所述目标数据块进行格式更新,获得新的目标数据块,包括:
对所述目标数据块重新进行字段划分,获得各新字段;
根据所述目标数据块中的各所述字段内容确定所述目标数据块在所述底层存储的存储信息;
根据各所述字段内容和所述存储信息对各所述新字段进行字段填充,获得所述新的目标数据块。
可选地,所述方法还包括:
当所述旧数据块对所述新的目标数据块的验证未通过时,根据所述旧数据块和所述新的目标数据块生成异常日志。
可选地,所述方法还包括:
当接收到所述主机端发送的数据读取请求时,根据所述数据读取请求确定目标读数据块;
判断缓存中是否存在所述目标读数据块;
若是,则从所述缓存中获取所述目标读数据块,并将所述目标读数据块反馈至所述主机端;
若否,则从底层存储中获取所述目标读数据块,并将所述目标读数据块反馈至所述主机端。
第二方面,本申请提供了另一种数据一致性验证方法,应用于主机端,所述方法包括:
下发数据读取请求至存储端;
接收所述存储端反馈的目标读数据块;
对所述目标读数据块进行字段解析,获得各字段内容;
判断各所述字段内容是否满足所述目标读数据块的生成规则;
若否,则输出验证失败提示。
可选地,所述方法还包括:
根据硬盘扇区大小生成目标数据块;
将所述目标数据块添加至数据写入请求,并将所述数据写入请求下发至所述存储端,以使所述存储端根据所述目标数据块进行数据一致性校验。
第三方面,本申请还公开了一种数据一致性验证装置,应用于存储端,所述装置包括:
接收模块,用于接收主机端发送的数据写入请求;
确定模块,用于根据所述数据写入请求确定目标数据块;
第一解析模块,用于对所述目标数据块进行字段解析,获得各字段内容;其中,所述字段内容包括存储地址字段、版本号字段、其他字段,所述其他字段基于所述存储地址字段和所述版本号字段按照预设字段生成规则生成;
第一判断模块,用于判断各所述字段内容是否满足预设字段格式;
第一输出模块,用于若各所述字段内容满足所述预设字段格式,则输出验证失败提示。
第四方面,本申请还公开了另一种数据一致性验证装置,应用于主机端,所述装置包括:
下发模块,用于下发数据读取请求至存储端;
反馈模块,用于接收所述存储端反馈的目标读数据块;
第二解析模块,用于对所述目标读数据块进行字段解析,获得各字段内容;
第二判断模块,用于判断各所述字段内容是否满足所述目标读数据块的生成规则;
第二输出模块,用于若各所述字段内容满足所述目标读数据块的生成规则,则输出验证失败提示。
第五方面,本申请还公开了一种电子设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上所述的任一种数据一致性验证方法的步骤。
第六方面,本申请还公开了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的任一种数据一致性验证方法的步骤。
应用本申请所提供的技术方案,预先设置特定类型的数据块中的字段格式,即上述预设字段格式,由此,当从数据写入请求中获得待写入的目标数据块时,可以先对其进行字段解析得到该目标数据块中的各字段内容,然后通过判断各字段内容是否满足预设字段格式来确定存储端的写入数据块是否满足数据一致性,从而实现数据一致性验证,显然,该种实现方式在每一个数据块写入存储端的过程中即实现了数据一致性验证,具有较高的实时性,有助于及时发现问题,进而保证存储系统的稳定运行。
附图说明
为了更清楚地说明现有技术和本申请实施例中的技术方案,下面将对现有技术和本申请实施例描述中需要使用的附图作简要的介绍。当然,下面有关本申请实施例的附图描述的仅仅是本申请中的一部分实施例,对于本领域普通技术人员来说,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图,所获得的其他附图也属于本申请的保护范围。
图1为本申请所提供的第一种数据一致性验证方法的流程示意图;
图2为本申请所提供的第二种数据一致性验证方法的流程示意图;
图3为本申请所提供的一种数据块中MAGIC_2字段的示意图;
图4为本申请所提供的第一种数据一致性验证装置的流程示意图;
图5为本申请所提供的第二种数据一致性验证装置的流程示意图;
图6为本申请所提供的一种电子设备的结构示意图。
具体实施方式
本申请的核心是提供一种数据一致性验证方法,该数据一致性验证方法可以实现存储系统内实时的数据一致性验证,保证存储系统的稳定运行;本申请的另一核心是提供另一种数据一致性验证方法、数据一致性验证装置、电子设备及计算机可读存储介质,均具有上述有益效果。
为了对本申请实施例中的技术方案进行更加清楚、完整地描述,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行介绍。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例提供了一种数据一致性验证方法。
请参考图1,图1为本申请所提供的一种数据一致性验证方法的流程示意图,该数据一致性验证方法应用于存储端,可以包括如下S101至S105。
S101:接收主机端发送的数据写入请求;
本步骤旨在实现数据写入请求的接收,该数据写入请求即为用于实现数据存储的请求指令,由主机端发起,即主机端向存储端发起数据写入请求,以请求将待存储数据(即下述目标数据块)保存至存储端,从而实现数据存储,并在数据存储过程中实现数据一致性验证。
S102:根据数据写入请求确定目标数据块;
本步骤旨在实现目标数据块的确定,如上所述,该目标数据块即为待存储数据。具体而言,主机端在向存储端发起数据写入请求时,可以将待写入的目标数据块附加于该数据写入请求中,由此,存储端即可通过请求解析获得目标数据块。
S103:对目标数据块进行字段解析,获得各字段内容;其中,字段内容包括存储地址字段、版本号字段、其他字段,其他字段基于存储地址字段和版本号字段按照预设字段生成规则生成;
本步骤旨在实现字段解析,即对目标数据块进行字段解析,获得每一个字段内容。需要说明的是,在主机端-存储端正常运行状态下,目标数据块是由主机端按照S104中所述的预设字段格式生成的目标数据块,可以通过存储端对其各字段内容进行字段格式判断实现数据一致性校验。当然,预设字段格式则是由技术人员根据实际需求设定的一种字段格式,其具体内容并不唯一,可以实现数据一致性校验即可,例如,可以包括用于记录目标数据块在存储端中的存储信息(如逻辑卷、逻辑地址等)的字段、用于记录目标数据块版本号的字段等,不同的字段用于记录不同的关于目标数据块的相关信息。
其中,数据块中的字段内容可以包括存储地址字段、版本号字段、其他字段,存储地址字段用于记录目标数据块的存储信息,如上所述的逻辑卷、逻辑地址等,版本号字段用于记录目标数据块的版本号,其他字段则基于存储地址字段和版本号字段按照预设字段生成规则生成,也就是按照预先设定的计算方法对存储地址字段和版本号字段中的内容进行计算,得到其他字段中的记录信息。
S104:判断各字段内容是否满足预设字段格式;若否,则执行S105,若是,则执行S106;
S105:输出验证失败提示。
S106:确定验证通过。
本步骤旨在实现字段内容的格式判断,通过判断目标数据块中的各字段内容是否满足预设字段格式,来确定数据一致性校验是否通过。显然,当目标数据块中的各字段内容满足预设字段格式时,确定数据一致性校验通过,当不满足预设字段格式时,确定数据一致性校验未通过,此时,说明存在异常,如目标数据块生成错误、目标数据块传输错误、乱序错误等,进一步,还可以输出验证失败提示,用于提醒技术人员当前存在数据一致性问题。
可见,本申请实施例所提供的数据一致性验证方法,预先设置特定类型的数据块中的字段格式,即上述预设字段格式,由此,当从数据写入请求中获得待写入的目标数据块时,可以先对其进行字段解析得到该目标数据块中的各字段内容,然后通过判断各字段内容是否满足预设字段格式来确定存储端的写入数据块是否满足数据一致性,从而实现数据一致性验证,显然,该种实现方式在每一个数据块写入存储端的过程中即实现了数据一致性验证,具有较高的实时性,有助于及时发现问题,进而保证存储系统的稳定运行。
在本申请的一个实施例中,上述判断各字段内容是否满足预设字段格式,可以包括如下步骤:
根据数据写入请求确定命令描述块;
对命令描述块进行解析,获得存储指示信息;
根据存储指示信息获取目标数据块对应的历史数据块,并获取历史数据块的版本号信息;
根据存储指示信息按照预设字段生成规则生成验证信息;
当存储地址字段与存储指示信息相匹配,且版本号字段与版本号信息相匹配,且其他字段与验证信息相匹配时,确定各字段内容满足预设字段格式。
本申请实施例还提供了一种判断目标数据块中的各字段内容是否满足预设字段格式的实现方法具体为:首先,对数据写入请求进行解析,获得命令描述块,该命令描述块用于描述将目标数据块写入存储端的相关信息,因此,通过对命令描述块进行进一步的解析,可以得到其中的存储指示信息,该存储指示信息与当前目标数据块中的存储地址字段相对应,因此,可以用于对目标数据块中的存储地址字段进行匹配校验;其次,根据存储指示信息获取目标数据块对应的历史数据块,该历史数据块是指相较于当前目标数据块而言的上一版本的目标数据块,因此,可以利用历史数据块中的版本号字段对当前目标数据块中的版本号字段进行匹配校验;进一步,在数据块中的其他字段基于存储地址字段和版本号字段按照预设字段生成规则生成的基础上,可以同样按照该预设字段生成规则对命令描述块中的存储指示信息进行处理,生成验证信息,由此,则可以利用该验证信息对当前目标数据块中的其他字段进行匹配校验。最后,基于上次三类匹配校验,在确定存储地址字段与存储指示信息相匹配,且版本号字段与版本号信息相匹配,且其他字段与验证信息相匹配的基础上,即可判定当前目标数据块的各字段内容满足预设字段格式,若存在其中一类不匹配,则判定当前目标数据块的各字段内容不满足预设字段格式。
在本申请的一个实施例中,上述根据存储指示信息获取目标数据块对应的历史数据块,可以包括如下步骤:
根据存储指示信息判断缓存中是否存在历史数据块;
若是,则从缓存中读取历史数据块;
若否,则根据存储指示信息确定底层存储位置,并从底层存储位置读取历史数据块。
本申请实施例提供了一种获取历史数据块的实现方法。可以理解的是,存储端用于实现数据存储,其主要可以包括缓存存储和底层存储,为实现历史数据块的快速获取,进而提高数据一致性验证的效率,可以优先选择从缓存中获取历史数据块,当缓存中不存在历史数据块时,再从底层存储获取。因此,在从命令描述块中获得存储指示信息之后,可以先根据该存储指示信息判断缓存中是否存在目标数据块对应的历史数据块,若存在,则直接从缓存中获取该历史数据块,若不存在,则根据存储指示信息确定历史数据块在底层存储中的存储位置,即上述底层存储位置,然后从该底层存储位置中获取历史数据块。
在本申请的一个实施例中,预设字段生成规则可以包括哈希运算规则和数值递增规则,基于存储地址字段和版本号字段按照预设字段生成规则生成其他字段,可以包括如下步骤:
按照哈希运算规则对存储地址字段和版本号字段进行计算获得哈希值,并将哈希值作为其他字段的第一个字节;
基于哈希值,按照数值递增规则对其他字段中除第一个字节之外的其他字节进行填充。
本申请实施例提供了一种具体类型的预设字段生成规则,该预设字段生成规则可以包括哈希运算规则和数值递增规则,用于实现目标数据块中其他字段的生成。在生成过程中,首先,按照哈希运算规则对存储地址字段和版本号字段进行计算获得哈希值,也就是对存储地址字段中的信息和版本号字段中的信息进行哈希运算,得到哈希值,该哈希值即作为其他字段中的第一个字节;进一步,其他字段中除第一个字节之外的其他字节,则可以按照数值递增规则进行填充,例如,当其他字段中的第一个字节为0x34时,第二个字节则为0x35,并以此类推。
在本申请的一个实施例中,当各字段内容满足预设字段格式时,该数据一致性验证方法还可以包括如下步骤:
当数据写入模式为缓存下刷模式时,将目标数据块写入缓存,并在缓存的数据块存储量达到预设阈值时,将目标数据块从缓存下刷至底层存储;
当数据写入模式为直写模式时,将目标数据块写入底层存储。
如上所述,存储端主要可以包括缓存存储和底层存储,其在数据存储过程中数据写入模式主要分为缓存下刷模式和直写模式,其中,缓存下刷模式是先将目标数据块存储至缓存,然后再从缓存下刷至底层存储;直写模式则是直接将目标数据块存储至底层存储。在此基础上,在目标数据块中的各字段内容满足预设字段格式时,也即数据一致性验证通过时,则可以先获取存储端当前的数据写入模式,然后根据数据写入模式执行相应的目标数据块写入操作。在实现过程中,当数据写入模式为缓存下刷模式时,可以先将目标数据块写入缓存中,直至缓存中的数据块存储量达到一定阈值,再将缓存中的数据块统一下刷至底层存储;当数据写入模式为直写模式时,则可以直接将目标数据块写入底层存储中。
在本申请的一个实施例中,上述将目标数据块从缓存下刷至底层存储,可以包括如下步骤:
按照预设更新规则对目标数据块进行格式更新,获得新的目标数据块;
从底层存储读取新的目标数据块对应的旧数据块;
利用旧数据块对新的目标数据块进行验证;
当验证通过时,将新的目标数据块从缓存下刷至底层存储。
本申请实施例提供了一种将目标数据块从缓存下刷至底层存储的实现方法。可以理解的是,在将目标数据块有主机端发送至存储端的过程中,需要保证数据一致性,在将目标数据块从缓存下刷至底层缓存的过程中,同样需要保证数据一致性,因此,在此过程中同样可以进行数据一致性校验。
在此基础上,可以先按照预设更新规则对目标数据块进行格式更新,获得新的目标数据块,需要说明的是,此处预设更新规则对应于上述预设字段格式,预设字段格式用于生成一种特定格式的目标数据块,预设更新规则用于修改为另一种特定格式的目标数据块,也就是说,预设更新规则用于实现目标数据块格式的更新,然后类似于上述对目标数据块的数据一致性验证,同样可以根据数据块格式实现新的目标数据块的数据一致性验证。在验证过程中,可以先从底层存储获取新的目标数据块对应的旧数据块,其中,新的目标数据块与旧数据块之间的对应关系,类似于上述目标数据块与历史数据块之间的对应关系;进一步,则可以利用旧数据块对新的目标数据块进行格式验证,如若验证通过,则可以将新的目标数据块从缓存下刷至底层存储,如若验证失败,则停止下刷新的目标数据块。
在本申请的一个实施例中,上述按照预设更新规则对目标数据块进行格式更新,获得新的目标数据块,可以包括如下步骤:
对目标数据块重新进行字段划分,获得各新字段;
根据目标数据块中的各字段内容确定目标数据块在底层存储的存储信息;
根据各字段内容和存储信息对各新字段进行字段填充,获得新的目标数据块。
本申请实施例提供了一种具体类型的预设更新规则。如上所述,预设字段格式用于生成一种特定格式的目标数据块,预设更新规则用于修改为另一种特定格式的目标数据块,此处,特定格式是指字段格式,也就是说,预设更新规则具体用于实现目标数据块中字段格式的更新。因此,在更新过程中,可以先对目标数据块重新进行字段划分,获得多个新字段;然后,则可以结合目标数据块中原始的各个字段内容以及该目标数据块在底层存储的存储信息(包括但不限于所在的磁盘阵列、硬盘等相关信息),对划分得到的各个新字段进行字段填充,从而得到新的目标数据。其中,各个新字段填充的内容根据预先设定的格式进行填充即可,可用于实现数据一致性校验即可,本申请对此不做限定。
在本申请的一个实施例中,该数据一致性验证方法还可以包括:当旧数据块对新的目标数据块的验证未通过时,根据旧数据块和新的目标数据块生成异常日志。
本申请实施例提供了一种日志生成方法。具体而言,当旧数据块对新的目标数据块的验证未通过时,也即在数据一致性校验未通过时,可以进行异常日志的生成,用于实现异常溯源,此处,可以根据旧数据块和新的目标数据块的相关信息及其自身信息共同实现异常日志的生成。此外,当通过判断目标数据块中的各字段内容是否满足预设字段格式实现数据一致性验证时,如若验证未通过,同样可以生成异常日志。
在本申请的一个实施例中,该数据一致性验证方法还可以包括如下步骤:
当接收到主机端发送的数据读取请求时,根据数据读取请求确定目标读数据块;
判断缓存中是否存在目标读数据块;
若是,则从缓存中获取目标读数据块,并将目标读数据块反馈至主机端;
若否,则从底层存储中获取目标读数据块,并将目标读数据块反馈至主机端。
本申请实施例所提供的数据一致性验证方法还可以实现数据读取功能,即主机端向存储端的数据读取。如上所述,存储端可以包括缓存存储和底层存储,为提高数据读取效率,当存储端接收到主机端发送的数据读取请求时,可以先判断缓存中是否存在需要读取的目标读数据块,如若存在,则直接从缓存中读取得到该目标读数据块并反馈至主机端即可,反之,如若不存在,则可以直接从底层存储获取目标读数据块,并反馈至主机端。由此,实现主机端向存储端的数据读取。
本申请实施例提供了另一种数据一致性验证方法。
请参考图2,图2为本申请所提供的第二种数据一致性验证方法的流程示意图,该数据一致性验证方法可应用于主机端,包括如下S201和S202。
S201:下发数据读取请求至存储端;
本步骤旨在实现数据读取请求的下发,该数据读取请求即为用于实现数据读取的请求指令,由主机端发起,即主机端向存储端发起数据读取请求,以请求读取某数据(即下述目标读数据块),从而实现数据读取,并在数据读取过程中实现数据一致性验证。
S202:接收存储端反馈的目标读数据块;
本步骤旨在实现目标读数据块的获取。具体而言,存储端在接收到主机端下发的数据读取请求之后,即可根据该数据读取请求确定目标读数据块,并从缓存或者底层存储中获得该目标数据块,然后反馈至主机端,由此,实现了主机端向存储端的数据读取。
S203:对目标读数据块进行字段解析,获得各字段内容;
本步骤旨在实现字段解析,即对目标读数据块进行字段解析,获得每一个字段内容。需要说明的是,在主机端-存储端正常运行状态下,目标读数据块是在数据写入过程中由主机端按照上述S104中所述的预设字段格式生成的数据块,此处,S104中所述的预设字段格式即为下述S204中目标读数据块的生成规则,在此基础上,可以通过主机端对其各字段内容进行字段格式判断实现数据一致性校验。
S204:判断各字段内容是否满足目标读数据块的生成规则;若否,则执行S205,若是,则执行S206;
S205:输出验证失败提示;
S206:确定验证通过。
本步骤旨在实现字段内容的格式判断,通过判断目标读数据块中的各字段内容是否满足其生成规则,来确定数据一致性验证是否通过。显然,当目标数据块中的各字段内容满足其生成规则时,确定数据一致性校验通过,当不满足生成规则时,则确定数据一致性校验未通过。
可见,本申请实施例所提供的数据一致性验证方法,预先设置数据块的生成规则,在将数据块从主机端保存至存储端,再从存储端读取该数据块时,则可以通过判断数据块中的各字段内容是否满足预先设置的数据块生成规则来确定主机端的读数据块是否满足数据一致性,从而实现数据一致性验证,显然,该种实现方式在每一个数据块读取的过程中即实现了数据一致性验证,具有较高的实时性,有助于及时发现问题,进而保证存储系统的稳定运行。
在本申请的一个实施例中,该数据一致性验证方法还可以包括如下步骤:
根据硬盘扇区大小生成目标数据块;
将目标数据块添加至数据写入请求,并将数据写入请求下发至存储端,以使存储端根据目标数据块进行数据一致性校验。
本申请实施例提供了一种数据存储过程中主机端生成目标数据块的实现方法,在实现过程中,可以根据硬盘扇区大小生成目标数据块,具体可以是使目标数据块的大小恰好为硬盘扇区大小的倍数,以便于后续目标数据块在硬盘中的存储;然后,将目标数据块添加至数据写入请求中下发至存储端,由存储端实现数据写入过程中的数据一致性验证,该过程参照上述基于存储端实现数据一致性验证的实施例即可,本申请在此不再赘述。
本申请实施例提供了又一种数据一致性验证方法。
在本申请实施例中,可以通过定义和使用主机端和存储端(以SAN存储端为例)都可识别的数据块格式,在SAN存储端处理IO(Input/Output,输入输出)的过程中根据数据块格式检测是否发生写错数据、写错位置、漏写、写乱序等问题,并在发现问题和异常后进一步触发系统日志保存、暂停IO等动作来提高问题诊断分析效率。
首先,本申请实施例所提供的数据一致性验证方法应用于存储系统,该存储系统主要包括主机端IO测试工具、应用于SAN存储端的IO处理软件模块、应用于硬盘的IO处理模块。其中,SAN存储端通过管理多个硬盘,创建RAID、存储池、逻辑卷,通过SAN网络提供逻辑卷对应的块设备存储服务,因此,SAN存储端的IO处理栈层包括:
(1)SAN协议服务层,负责与主机端通信、接收和处理SAN读写命令和其他命令;
(2)缓存层,负责缓存读写数据,写数据成功写到缓存层后应答主机端完成,后续再异步将数据写到后端硬盘上;
(3)存储池层,负责存储空间管理,将多个RAID空间组成池,提供逻辑卷的空间映射,并提供普通卷、精简和压缩卷等类型的逻辑卷;
(4)RAID层,负责将多个硬盘按照RAID算法组成RAID0,RAID1,RAID5,RAID6等硬盘阵列;
(5)硬盘接口层,负责管理和读写硬盘、后端驱动。
进一步,本申请实施例中所定义的数据块(其大小为硬盘扇区大小512B的倍数)格式如表1(预设字段格式/目标数据块生成规则)和表2(预设更新规则)所示:
表1 第一种数据块格式
其中,OTHERS_1字段产生的方法:基于LUN_ID,LUN_LBA,VERSION三个字段计算得出1字节长度的哈希值,该哈希值作为OTHERS_1区段的第一个字节数值,其后每个字节的数值递增。例如哈希值是0x34,则OTHERS_1字段的第一个字节值是0x34,第2个字节值是0x35,依此类推。
表2 第二种数据块格式
其中,OTHERS_2字段产生的方法:在LUN_ID,LUN_LBA,VERSION相同的情况下,OTHERS_2字段的数据与按照第一种数据块格式计算的OTHERS_1字段重叠部分的数据相同,OTHERS_2字段的数据相当于OTHERS_1的子集,即OTHERS_2中各个字节的数值与OTHERS_1中在数据块中相同偏移量的字节数值相同,当一个数据块从第一种数据块格式转变到第二种数据块格式时,OTHERS_2中的数据不用变更。假定字段MAGIC_1的起始字节在数据块中的偏移量为offset1,OTHERS_2字段的起始字节在数据块中的偏移量为offset2,那么:先基于LUN_ID,LUN_LBA,VERSION三个字段计算得出1字节长度的哈希值;然后,OTHERS_2字段的第一个字节数值等于该哈希值加上(offset2-offset1)并取模256,其后每个字节的数值递增,例如,哈希值是0x34,offset2-offset1=48,则OTHERS_2字段的第一个字节数值等于(0x34+48) mod 256=0x64,第2个字节值是0x65,依此类推。
基于上述数据块格式,本申请实施例所提供的数据一致性验证的实现流程可以包括:
1、主机端发起写请求:
主机端IO测试工具发起的每个IO,均按照数据块大小对齐且按照硬盘扇区倍数大小生成,在写数据时,采用第一种数据块格式及各字段规则设置相应字段,为每个数据块记录最后写入的VERSION值,一般写入成功后在下次写同一块数据前读出数据进行检查,下次写同一数据块地址时变更VERSION值。变更VERSION值最简单方法是递增1,从而OTHERS_1区段的内容也随之变更。主机端记录每个数据块VERSION值的方式可以使用内存,也可以存放到测试卷以外的介质上。
2、SAN存储端接收到写请求后的处理流程:
(1)检查每个数据块(目标数据块)的LUN_ID和LUN_LBA,与命令描述块(SCSI协议的命令描述块CDB或NVMe协议的Write命令信息)对应的逻辑卷、起始逻辑块地址是否一致,不一致则表明写请求和数据块传输错误或者主机生成错误。
(2)根据前述数据块中OTHERS_1字段的生成规则,检查写请求中各数据块的OTHERS_1字段数据是否正确,若不正确,则识别出写请求和数据块传输错误或者主机生成错误。
(3)获取写请求中各个数据块对应的卷和逻辑地址在存储端上一次写入数据,即上一个版本的数据块,记为LAST_DATA,根据LAST_DATA中每个数据块的VERSION(记为LAST_VERSION),与本次写请求中对应数据块的VERSION(记为CUR_VERSION)相比较,若CUR_VERSION=LAST_VERSION或者CUR_VERSION=LAST_VERSION的下一个版本号,则表明写入正确,否则表明数据不一致,存在丢失写入的情况。其中,CUR_VERSION=LAST_VERSION主要适用于写重试的情况,例如因为链路故障导致写请求失败,切换链路后主机端重新发起写请求,会造成存储端收到重复的写请求。
其中,获取LAST_DATA方法是:首先从缓存中获取,若缓存中不存在,则向下层RAID、硬盘读取。当然出于降低性能影响的目的,若缓存中不存在LAST_DATA,也可以跳过向下层RAID、硬盘读取和对比数据的步骤。
(4)当存储端启用缓存下刷模式而非直写模式时,将各数据块更新到缓存中,并在完成后应答主机。在更新数据块到缓存中时,若写入前缓存中没有该逻辑块未写到盘上的脏数据,则从当前数据块中提取VERSION值单独记录,记为该数据块的CACHE_EARLY_VERSION,该数值将在缓存下刷时用于计算和设置按照第二种数据块格式定义的VERSION_ON_DISK。若写入前缓存中已有该逻辑块的未写到盘上的脏数据,则CACHE_EARLY_VERSION已经记录,不需要更新。
(5)根据缓存算法,当缓存脏数据达到一定水位后,将缓存中的数据块下刷到后端盘(底层存储)上,下刷时,按照第二种数据块格式更新缓存中的数据块:
(a)VERSION_ON_DISK字段,等于CACHE_EARLY_VERSION的上一个版本,即如果按照最简单的递增规则,CACHE_EARLY_VERSION的上一个版本等于在字段位宽范围内的减1;
(b)MAGIC_1字段,设置为MAGIC_VALUE_1。
(6)缓存下刷请求到达存储池层时,确定该数据块是否要写到与上一次不同的硬盘或同一个硬盘不同的扇区,若不同,则按照第二种数据块格式更新FLAGS字段,设置FLAG_REDIRECT位,表示数据写入位置重新定向。此外,若开启了压缩,数据块经过压缩后MAGIC_1字段所在位置的值极大概率上不等于MAGIC_VALUE_1。
(7)缓存下刷请求到达RAID层时,根据数据块按照第二种数据块格式的FLAGS、MAGIC_1字段判断是否更改数据,具体是指若FLAGS没有设置FLAG_REDIRECT,且MAGIC_1字段的值等于MAGIC_VALUE_1,则确认更改,否则确认不更改。进一步,更改方法为按照第二种数据块格式的定义更新MAGIC_2、RAID_ID、RAID_MB_ID、DISK_ID、DISK_LBA、CHECKSUM1等字段,其中,MAGIC_2的更新规则是:
(a)对于RAID0,RAID1,MAGIC_2使用值MAGIC_VALUE_2_1;
(b)对于RAID5或者RAID6,保证RAID条带中相同偏移量的数据块中,只有1个数据块的MAGIC_2使用值MAGIC_VALUE_2_2,其他数据块的MAGIC_2使用值MAGIC_VALUE_2_1,使得经过RAID5或RAID6的奇偶校验后,校验值不等于MAGIC_VALUE_2_1或MAGIC_VALUE_2_2中的任一个。例如,请参考图3,图3为本申请所提供的一种数据块中MAGIC_2字段的示意图,假设RAID6条带宽度是5,一个条带包含3个条带块,每个条带块包含1个或多个数据块或者校验块,有3个区块是数据(数据块1、数据块2、数据块3),1个区块是异或校验P(P校验块),1个区块是按照RAID6算法计算的校验Q(Q校验块),那么,同一个条带块中相同偏移量的3个数据块有2个数据块的MAGIC_2使用值MAGIC_VALUE_2_1,1个数据块的MAGIC_2使用值MAGIC_VALUE_2_2,使得两个MAGIC_VALUE_2_1和一个MAGIC_VALUE_2_2计算P校验和Q校验值既不等于MAGIC_VALUE_2_1也不等于MAGIC_VALUE_2_2。
(8)缓存下刷请求到达硬盘接口层时,按照第二种数据块格式判断:
(a)FLAGS字段未设置FLAG_REDIRECT标记;
(b)MAGIC_1字段等于MAGIC_VALUE_1;
(c)MAGIC_2字段等于MAGIC_VALUE_2_1或MAGIC_VALUE_2_2;
如若上述3个条件都满足,则判定为来自主机端的数据块,且写入位置不变和未经压缩,此时,则执行先从盘上读出相同位置的旧数据块并检查接收到的数据块是否合法,其检查方法如下:
(a)检查旧数据块中的LUN_ID,LUN_LBA与待写入数据块中的LUN_ID,LUN_LBA应相等;
(b)检查旧数据块中的CHECKSUM1、OTHERS_2字节内容应正确;
(c)检查旧数据块的VERSION值应等于待写入数据块中的VERSION_ON_DISK(若不等于则判断为存在漏写);
若上述检查结果存在任意一个有问题,则取消写盘,返回错误,还可进一步停止IO、记录相关日志信息等提高诊断效率。
(9)数据块写入到硬盘时,在硬盘内部可按照步骤(8)的方法对写数据块进行检查,若检查有异常,放弃写入并返回失败。为了节省空间,硬盘内部对于满足检查条件的数据块可不记录OTHERS_2字段的数据,因为该部分数据可通过计算产生。
其中,对于不支持上述数据检查功能的硬盘,可只执行步骤(8),对于修改了硬盘固件从而支持上述数据检查功能的硬盘,可只执行步骤(9)。
3、主机端读数据的处理流程:
(1)主机端按照数据块大小对齐与硬盘扇区倍数发起读请求。
(2)存储端接收和处理读请求,若缓存层中存在相应的数据块(目标读数据块),则从缓存层获取并返回,否则从后端盘上读取已写入盘的数据块返回。
(3)主机端检查读取的数据块是否正确:
(a)按照第一种数据块格式或第二种数据块格式比较返回数据块的LUN_ID、LUN_LBA与读请求的相关参数应一致;
(b)比较VERSION字段与主机端记录的值应相同;
(c)按照第二种数据块格式中的MAGIC_1字段和MAGIC_2字段值判断是否已写入盘以及是否是第二种数据块格式,具体为应同时满足:MAGIC_1值等于MAGIC_VALUE_1、MAGIC_2值等于MAGIC_VALUE_2_1或MAGIC_VALUE_2_2,若满足,则按照第二种数据块格式检查OTHERS_2字段数据以及CHECKSUM1校验应正确,否则按照第一种数据块格式检查OTHERS_1区段数据应正确。
可见,本申请实施例所提供的数据一致性验证方法,预先设置特定类型的数据块中的字段格式,即上述预设字段格式,由此,当从数据写入请求中获得待写入的目标数据块时,可以先对其进行字段解析得到该目标数据块中的各字段内容,然后通过判断各字段内容是否满足预设字段格式来确定存储端的写入数据块是否满足数据一致性,从而实现数据一致性验证,显然,该种实现方式在每一个数据块写入存储端的过程中即实现了数据一致性验证,具有较高的实时性,有助于及时发现问题,进而保证存储系统的稳定运行。
本申请实施例提供了一种数据一致性验证装置。
请参考图4,图4为本申请所提供的一种数据一致性验证装置的结构示意图,该数据一致性验证装置可应用于存储端,包括:
接收模块110,用于接收主机端发送的数据写入请求;
确定模块120,用于根据数据写入请求确定目标数据块;
第一解析模块130,用于对目标数据块进行字段解析,获得各字段内容;其中,字段内容包括存储地址字段、版本号字段、其他字段,其他字段基于存储地址字段和版本号字段按照预设字段生成规则生成;
第一判断模块140,用于判断各字段内容是否满足预设字段格式;
第一输出模块150,用于若各字段内容满足预设字段格式,则输出验证失败提示。
可见,本申请实施例所提供的数据一致性验证装置,预先设置特定类型的数据块中的字段格式,即上述预设字段格式,由此,当从数据写入请求中获得待写入的目标数据块时,可以先对其进行字段解析得到该目标数据块中的各字段内容,然后通过判断各字段内容是否满足预设字段格式来确定存储端的写入数据块是否满足数据一致性,从而实现数据一致性验证,显然,该种实现方式在每一个数据块写入存储端的过程中即实现了数据一致性验证,具有较高的实时性,有助于及时发现问题,进而保证存储系统的稳定运行。
在本申请的一个实施例中,上述第一判断模块140可以包括:
确定单元,用于根据数据写入请求确定命令描述块;
解析单元,用于对命令描述块进行解析,获得存储指示信息;
获取单元,用于根据存储指示信息获取目标数据块对应的历史数据块,并获取历史数据块的版本号信息;
生成单元,用于根据存储指示信息按照预设字段生成规则生成验证信息;
判断单元,用于当存储地址字段与存储指示信息相匹配,且版本号字段与版本号信息相匹配,且其他字段与验证信息相匹配时,确定各字段内容满足预设字段格式。
在本申请的一个实施例中,上述获取单元可具体用于根据存储指示信息判断缓存中是否存在历史数据块;若是,则从缓存中读取历史数据块;若否,则根据存储指示信息确定底层存储位置,并从底层存储位置读取历史数据块。
在本申请的一个实施例中,预设字段生成规则可以包括哈希运算规则和数值递增规则,上述第一判断模块140还可以包括其他字段生成单元,用于按照哈希运算规则对存储地址字段和版本号字段进行计算获得哈希值,并将哈希值作为其他字段的第一个字节;基于哈希值,按照数值递增规则对其他字段中除第一个字节之外的其他字节进行填充。
在本申请的一个实施例中,当各字段内容满足预设字段格式时,该数据一致性验证方法还可以包括:
第一写入模块,用于当数据写入模式为缓存下刷模式时,将目标数据块写入缓存,并在缓存的数据块存储量达到预设阈值时,将目标数据块从缓存下刷至底层存储;
第二写入模块,用于当数据写入模式为直写模式时,将目标数据块写入底层存储。
在本申请的一个实施例中,上述第一写入模块可以包括:
更新单元,用于按照预设更新规则对目标数据块进行格式更新,获得新的目标数据块;
读取单元,用于从底层存储读取新的目标数据块对应的旧数据块;
验证单元,用于利用旧数据块对新的目标数据块进行验证;
下刷单元,用于当验证通过时,将新的目标数据块从缓存下刷至底层存储。
在本申请的一个实施例中,上述更新单元可具体用于对目标数据块重新进行字段划分,获得各新字段;根据目标数据块中的各字段内容确定目标数据块在底层存储的存储信息;根据各字段内容和存储信息对各新字段进行字段填充,获得新的目标数据块。
在本申请的一个实施例中,上述第一写入模块还可以包括日志生成单元,用于当旧数据块对新的目标数据块的验证未通过时,根据旧数据块和新的目标数据块生成异常日志。
在本申请的一个实施例中,该数据一致性验证装置还可以包括数据读取模块,用于当接收到主机端发送的数据读取请求时,根据数据读取请求确定目标读数据块;判断缓存中是否存在目标读数据块;若是,则从缓存中获取目标读数据块,并将目标读数据块反馈至主机端;若否,则从底层存储中获取目标读数据块,并将目标读数据块反馈至主机端。
对于本申请实施例提供的装置的介绍请参照上述方法实施例,本申请在此不做赘述。
本申请实施例提供了另一种数据一致性验证装置。
请参考图5,图5为本申请所提供的另一种数据一致性验证装置的结构示意图,该数据一致性验证装置可应用于主机端,包括:
下发模块210,用于下发数据读取请求至存储端;
反馈模块220,用于接收存储端反馈的目标读数据块;
第二解析模块230,用于对目标读数据块进行字段解析,获得各字段内容;
第二判断模块240,用于判断各字段内容是否满足目标读数据块的生成规则;
第二输出模块250,用于若各字段内容满足目标读数据块的生成规则,则输出验证失败提示。
可见,本申请实施例所提供的数据一致性验证装置,预先设置数据块的生成规则,在将数据块从主机端保存至存储端,再从存储端读取该数据块时,则可以通过判断数据块中的各字段内容是否满足预先设置的数据块生成规则来确定主机端的读数据块是否满足数据一致性,从而实现数据一致性验证,显然,该种实现方式在每一个数据块读取的过程中即实现了数据一致性验证,具有较高的实时性,有助于及时发现问题,进而保证存储系统的稳定运行。
在本申请的一个实施例中,该数据一致性验证装置还可以包括数据写入请求生成模块,用于根据硬盘扇区大小生成目标数据块;将目标数据块添加至数据写入请求,并将数据写入请求下发至存储端,以使存储端根据目标数据块进行数据一致性校验。
对于本申请实施例提供的装置的介绍请参照上述方法实施例,本申请在此不做赘述。
本申请实施例提供了一种电子设备。
请参考图6,图6为本申请所提供的一种电子设备的结构示意图,该电子设备可包括:
存储器,用于存储计算机程序;
处理器,用于执行计算机程序时可实现如上述任意一种数据一致性验证方法的步骤。
如图6所示,为电子设备的组成结构示意图,电子设备可以包括:处理器10、存储器11、通信接口12和通信总线13。处理器10、存储器11、通信接口12均通过通信总线13完成相互间的通信。
在本申请实施例中,处理器10可以为中央处理器(Central Processing Unit,CPU)、特定应用集成电路、数字信号处理器、现场可编程门阵列或者其他可编程逻辑器件等。
处理器10可以调用存储器11中存储的程序,具体的,处理器10可以执行数据一致性验证方法的实施例中的操作。
存储器11中用于存放一个或者一个以上程序,程序可以包括程序代码,程序代码包括计算机操作指令,在本申请实施例中,存储器11中至少存储有用于实现以下功能的程序:
接收主机端发送的数据写入请求;
根据数据写入请求确定目标数据块;
对目标数据块进行字段解析,获得各字段内容;其中,字段内容包括存储地址字段、版本号字段、其他字段,其他字段基于存储地址字段和版本号字段按照预设字段生成规则生成;
判断各字段内容是否满足预设字段格式;
若否,则输出验证失败提示;
或者:
下发数据读取请求至存储端;
接收存储端反馈的目标读数据块;
对目标读数据块进行字段解析,获得各字段内容;
判断各字段内容是否满足目标读数据块的生成规则;
若否,则输出验证失败提示。
在一种可能的实现方式中,存储器11可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统,以及至少一个功能所需的应用程序等;存储数据区可存储使用过程中所创建的数据。
此外,存储器11可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件或其他易失性固态存储器件。
通信接口12可以为通信模块的接口,用于与其他设备或者系统连接。
当然,需要说明的是,图6所示的结构并不构成对本申请实施例中电子设备的限定,在实际应用中电子设备可以包括比图6所示的更多或更少的部件,或者组合某些部件。本申请实施例提供了一种计算机可读存储介质。
本申请实施例所提供的计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时可实现如上述任意一种数据一致性验证方法的步骤。
该计算机可读存储介质可以包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
对于本申请实施例提供的计算机可读存储介质的介绍请参照上述方法实施例,本申请在此不做赘述。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM或技术领域内所公知的任意其它形式的存储介质中。
以上对本申请所提供的技术方案进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请的保护范围内。

Claims (15)

1.一种数据一致性验证方法,其特征在于,应用于存储端,所述方法包括:
接收主机端发送的数据写入请求;
根据所述数据写入请求确定目标数据块;
对所述目标数据块进行字段解析,获得各字段内容;其中,所述字段内容包括存储地址字段、版本号字段、其他字段,所述其他字段基于所述存储地址字段和所述版本号字段按照预设字段生成规则生成;
判断各所述字段内容是否满足预设字段格式;
若否,则输出验证失败提示。
2.根据权利要求1所述的方法,其特征在于,所述判断各所述字段内容是否满足预设字段格式,包括:
根据所述数据写入请求确定命令描述块;
对所述命令描述块进行解析,获得存储指示信息;
根据所述存储指示信息获取所述目标数据块对应的历史数据块,并获取所述历史数据块的版本号信息;
根据所述存储指示信息按照所述预设字段生成规则生成验证信息;
当所述存储地址字段与所述存储指示信息相匹配,且所述版本号字段与所述版本号信息相匹配,且所述其他字段与所述验证信息相匹配时,确定各所述字段内容满足所述预设字段格式。
3.根据权利要求2所述的方法,其特征在于,所述根据所述存储指示信息获取所述目标数据块对应的历史数据块,包括:
根据所述存储指示信息判断缓存中是否存在所述历史数据块;
若是,则从所述缓存中读取所述历史数据块;
若否,则根据所述存储指示信息确定底层存储位置,并从所述底层存储位置读取所述历史数据块。
4.根据权利要求2所述的方法,其特征在于,所述预设字段生成规则包括哈希运算规则和数值递增规则,基于所述存储地址字段和所述版本号字段按照所述预设字段生成规则生成所述其他字段,包括:
按照所述哈希运算规则对所述存储地址字段和所述版本号字段进行计算获得哈希值,并将所述哈希值作为所述其他字段的第一个字节;
基于所述哈希值,按照所述数值递增规则对所述其他字段中除所述第一个字节之外的其他字节进行填充。
5.根据权利要求1所述的方法,其特征在于,当各所述字段内容满足所述预设字段格式时,所述方法还包括:
当数据写入模式为缓存下刷模式时,将所述目标数据块写入缓存,并在所述缓存的数据块存储量达到预设阈值时,将所述目标数据块从所述缓存下刷至底层存储;
当所述数据写入模式为直写模式时,将所述目标数据块写入所述底层存储。
6.根据权利要求5所述的方法,其特征在于,所述将所述目标数据块从所述缓存下刷至底层存储,包括:
按照预设更新规则对所述目标数据块进行格式更新,获得新的目标数据块;
从所述底层存储读取所述新的目标数据块对应的旧数据块;
利用所述旧数据块对所述新的目标数据块进行验证;
当验证通过时,将所述新的目标数据块从所述缓存下刷至所述底层存储。
7.根据权利要求6所述的方法,其特征在于,所述按照预设更新规则对所述目标数据块进行格式更新,获得新的目标数据块,包括:
对所述目标数据块重新进行字段划分,获得各新字段;
根据所述目标数据块中的各所述字段内容确定所述目标数据块在所述底层存储的存储信息;
根据各所述字段内容和所述存储信息对各所述新字段进行字段填充,获得所述新的目标数据块。
8.根据权利要求6所述的方法,其特征在于,所述方法还包括:
当所述旧数据块对所述新的目标数据块的验证未通过时,根据所述旧数据块和所述新的目标数据块生成异常日志。
9.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当接收到所述主机端发送的数据读取请求时,根据所述数据读取请求确定目标读数据块;
判断缓存中是否存在所述目标读数据块;
若是,则从所述缓存中获取所述目标读数据块,并将所述目标读数据块反馈至所述主机端;
若否,则从底层存储中获取所述目标读数据块,并将所述目标读数据块反馈至所述主机端。
10.一种数据一致性验证方法,其特征在于,应用于主机端,所述方法包括:
下发数据读取请求至存储端;
接收所述存储端反馈的目标读数据块;
对所述目标读数据块进行字段解析,获得各字段内容;
判断各所述字段内容是否满足所述目标读数据块的生成规则;
若否,则输出验证失败提示。
11.根据权利要求10所述的方法,其特征在于,所述方法还包括:
根据硬盘扇区大小生成目标数据块;
将所述目标数据块添加至数据写入请求,并将所述数据写入请求下发至所述存储端,以使所述存储端根据所述目标数据块进行数据一致性校验。
12.一种数据一致性验证装置,其特征在于,应用于存储端,所述装置包括:
接收模块,用于接收主机端发送的数据写入请求;
确定模块,用于根据所述数据写入请求确定目标数据块;
第一解析模块,用于对所述目标数据块进行字段解析,获得各字段内容;
第一判断模块,用于判断各所述字段内容是否满足预设字段格式;
第一输出模块,用于若各所述字段内容满足所述预设字段格式,则输出验证失败提示。
13.一种数据一致性验证装置,其特征在于,应用于主机端,所述装置包括:
下发模块,用于下发数据读取请求至存储端;
反馈模块,用于接收所述存储端反馈的目标读数据块;
第二解析模块,用于对所述目标读数据块进行字段解析,获得各字段内容;其中,所述字段内容包括存储地址字段、版本号字段、其他字段,所述其他字段基于所述存储地址字段和所述版本号字段按照预设字段生成规则生成;
第二判断模块,用于判断各所述字段内容是否满足所述目标读数据块的生成规则;
第二输出模块,用于若各所述字段内容满足所述目标读数据块的生成规则,则输出验证失败提示。
14.一种电子设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至11任一项所述的数据一致性验证方法的步骤。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至11任一项所述的数据一致性验证方法的步骤。
CN202310102085.3A 2023-02-13 2023-02-13 数据一致性验证方法、装置、电子设备及可读存储介质 Pending CN115981572A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310102085.3A CN115981572A (zh) 2023-02-13 2023-02-13 数据一致性验证方法、装置、电子设备及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310102085.3A CN115981572A (zh) 2023-02-13 2023-02-13 数据一致性验证方法、装置、电子设备及可读存储介质

Publications (1)

Publication Number Publication Date
CN115981572A true CN115981572A (zh) 2023-04-18

Family

ID=85958091

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310102085.3A Pending CN115981572A (zh) 2023-02-13 2023-02-13 数据一致性验证方法、装置、电子设备及可读存储介质

Country Status (1)

Country Link
CN (1) CN115981572A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116700632A (zh) * 2023-08-07 2023-09-05 湖南中盈梦想商业保理有限公司 一种高可靠的金融信息数据存储方法
CN117574446A (zh) * 2024-01-16 2024-02-20 苏州元脑智能科技有限公司 一种数据保护方法、装置、设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130198585A1 (en) * 2012-02-01 2013-08-01 Xyratex Technology Limited Method of, and apparatus for, improved data integrity
US20130226887A1 (en) * 2012-02-24 2013-08-29 Xyratex Technology Limited Method of, and apparatus for, improved data integrity in a networked storage system
CN115061634A (zh) * 2022-06-30 2022-09-16 济南浪潮数据技术有限公司 一种系统业务负载分配方法、装置、介质

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130198585A1 (en) * 2012-02-01 2013-08-01 Xyratex Technology Limited Method of, and apparatus for, improved data integrity
US20130226887A1 (en) * 2012-02-24 2013-08-29 Xyratex Technology Limited Method of, and apparatus for, improved data integrity in a networked storage system
CN115061634A (zh) * 2022-06-30 2022-09-16 济南浪潮数据技术有限公司 一种系统业务负载分配方法、装置、介质

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116700632A (zh) * 2023-08-07 2023-09-05 湖南中盈梦想商业保理有限公司 一种高可靠的金融信息数据存储方法
CN116700632B (zh) * 2023-08-07 2023-10-24 湖南中盈梦想商业保理有限公司 一种高可靠的金融信息数据存储方法
CN117574446A (zh) * 2024-01-16 2024-02-20 苏州元脑智能科技有限公司 一种数据保护方法、装置、设备及存储介质
CN117574446B (zh) * 2024-01-16 2024-04-05 苏州元脑智能科技有限公司 一种数据保护方法、装置、设备及存储介质

Similar Documents

Publication Publication Date Title
CN115981572A (zh) 数据一致性验证方法、装置、电子设备及可读存储介质
US8086919B2 (en) Controller having flash memory testing functions, and storage system and testing method thereof
US8136015B2 (en) Data storage apparatus and data storage method
US10474527B1 (en) Host-assisted error recovery
US11340986B1 (en) Host-assisted storage device error correction
CN112513804B (zh) 一种数据处理方法及装置
US10878111B2 (en) Peer storage devices supporting protection information
US7840877B2 (en) Mass storage system and method
CN103019880B (zh) 一种数据校验方法及存储设备、存储系统
KR20220001222A (ko) 베드 블록을 처리하는 메모리 시스템 및 동작 방법
WO2019210844A1 (zh) 存储设备异常检测方法及装置、分布式存储系统
WO2023279906A1 (zh) 一种数据处理方法、装置、设备及可读存储介质
CN115292266A (zh) 一种基于存储器的高可靠日志存储方法
US7921265B2 (en) Data access method, channel adapter, and data access control device
CN113094206A (zh) 一种基于纠错的高速数据存取方法及装置
US7293139B2 (en) Disk array system generating a data guarantee code on data transferring
CN115543871B (zh) 数据存储方法及相关设备
CN115658404A (zh) 一种测试方法及系统
CN105354107A (zh) NOR Flash的数据传输方法及系统
CN115470040A (zh) 基于快照的重删指纹阈值的测试方法、装置、设备、介质
CN110134572B (zh) 验证存储系统中的数据
CN112579329A (zh) 快速处理uecc的方法及其存储设备
JPWO2016194199A1 (ja) ストレージ装置
CN104731672A (zh) 数据存储的方法及设备
WO2024040919A1 (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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20230418