本技术涉及数据存储,特别涉及一种数据一致性验证方法、装置、电子设备及可读存储介质。
背景技术:
1、san(storage area network,一种集中式管理的高速存储网络)存储系统提供多种块存储协议服务,广泛应用于企业级数据存储,其连接拓扑包括主机、ip(internetprotocol,网络协议)/fc(fiber channel,光纤通道)适配卡、ip/fc交换机、san存储系统,其中,san存储系统又包括前端ip/fc适配卡、san协议服务层、缓存层、存储池层、raid(redundant arrays of independent disks,磁盘阵列)层、硬盘接口层、后端硬盘等。
2、san存储系统需要保证数据一致性,即每个扇区读出的数据是上一次写到该扇区的数据,包括不写错数据和位置、不读错、不漏写、不写乱序等。但是,由于san存储系统及其应用拓扑包含较多软件、硬件模块,在开发过程数据一致性的测试分析难度较大。传统技术中,如基于数据一致性字段的验证技术、vdbench和fio等主机端测试工具,均存在无法实时发现的问题,即无法实现实时的数据一致性验证,异常问题发现太晚,给存储系统的稳定运行带来了不好的影响。
3、因此,如何实现存储系统内实时的数据一致性验证,保证存储系统的稳定运行是本领域技术人员亟待解决的问题。
技术实现思路
1、本技术的目的是提供一种数据一致性验证方法,用于解决传统技术中基于测试工具无法实现实时的数据一致性验证的问题;本技术的另一目的是提供另一种数据一致性验证方法、数据一致性验证装置、电子设备及计算机可读存储介质,均具有上述有益效果。
2、第一方面,本技术提供了一种数据一致性验证方法,应用于存储端,所述方法包括:
3、接收主机端发送的数据写入请求;
4、根据所述数据写入请求确定目标数据块;
5、对所述目标数据块进行字段解析,获得各字段内容;其中,所述字段内容包括存储地址字段、版本号字段、其他字段,所述其他字段基于所述存储地址字段和所述版本号字段按照预设字段生成规则生成;
6、判断各所述字段内容是否满足预设字段格式;
7、若否,则输出验证失败提示。
8、可选地,所述判断各所述字段内容是否满足预设字段格式,包括:
9、根据所述数据写入请求确定命令描述块;
10、对所述命令描述块进行解析,获得存储指示信息;
11、根据所述存储指示信息获取所述目标数据块对应的历史数据块,并获取所述历史数据块的版本号信息;
12、根据所述存储指示信息按照所述预设字段生成规则生成验证信息;
13、当所述存储地址字段与所述存储指示信息相匹配,且所述版本号字段与所述版本号信息相匹配,且所述其他字段与所述验证信息相匹配时,确定各所述字段内容满足所述预设字段格式。
14、可选地,所述根据所述存储指示信息获取所述目标数据块对应的历史数据块,包括:
15、根据所述存储指示信息判断缓存中是否存在所述历史数据块;
16、若是,则从所述缓存中读取所述历史数据块;
17、若否,则根据所述存储指示信息确定底层存储位置,并从所述底层存储位置读取所述历史数据块。
18、可选地,所述预设字段生成规则包括哈希运算规则和数值递增规则,基于所述存储地址字段和所述版本号字段按照所述预设字段生成规则生成所述其他字段,包括:
19、按照所述哈希运算规则对所述存储地址字段和所述版本号字段进行计算获得哈希值,并将所述哈希值作为所述其他字段的第一个字节;
20、基于所述哈希值,按照所述数值递增规则对所述其他字段中除所述第一个字节之外的其他字节进行填充。
21、可选地,当各所述字段内容满足所述预设字段格式时,所述方法还包括:
22、当数据写入模式为缓存下刷模式时,将所述目标数据块写入缓存,并在所述缓存的数据块存储量达到预设阈值时,将所述目标数据块从所述缓存下刷至底层存储;
23、当所述数据写入模式为直写模式时,将所述目标数据块写入所述底层存储。
24、可选地,所述将所述目标数据块从所述缓存下刷至底层存储,包括:
25、按照预设更新规则对所述目标数据块进行格式更新,获得新的目标数据块;
26、从所述底层存储读取所述新的目标数据块对应的旧数据块;
27、利用所述旧数据块对所述新的目标数据块进行验证;
28、当验证通过时,将所述新的目标数据块从所述缓存下刷至所述底层存储。
29、可选地,所述按照预设更新规则对所述目标数据块进行格式更新,获得新的目标数据块,包括:
30、对所述目标数据块重新进行字段划分,获得各新字段;
31、根据所述目标数据块中的各所述字段内容确定所述目标数据块在所述底层存储的存储信息;
32、根据各所述字段内容和所述存储信息对各所述新字段进行字段填充,获得所述新的目标数据块。
33、可选地,所述方法还包括:
34、当所述旧数据块对所述新的目标数据块的验证未通过时,根据所述旧数据块和所述新的目标数据块生成异常日志。
35、可选地,所述方法还包括:
36、当接收到所述主机端发送的数据读取请求时,根据所述数据读取请求确定目标读数据块;
37、判断缓存中是否存在所述目标读数据块;
38、若是,则从所述缓存中获取所述目标读数据块,并将所述目标读数据块反馈至所述主机端;
39、若否,则从底层存储中获取所述目标读数据块,并将所述目标读数据块反馈至所述主机端。
40、第二方面,本技术提供了另一种数据一致性验证方法,应用于主机端,所述方法包括:
41、下发数据读取请求至存储端;
42、接收所述存储端反馈的目标读数据块;
43、对所述目标读数据块进行字段解析,获得各字段内容;
44、判断各所述字段内容是否满足所述目标读数据块的生成规则;
45、若否,则输出验证失败提示。
46、可选地,所述方法还包括:
47、根据硬盘扇区大小生成目标数据块;
48、将所述目标数据块添加至数据写入请求,并将所述数据写入请求下发至所述存储端,以使所述存储端根据所述目标数据块进行数据一致性校验。
49、第三方面,本技术还公开了一种数据一致性验证装置,应用于存储端,所述装置包括:
50、接收模块,用于接收主机端发送的数据写入请求;
51、确定模块,用于根据所述数据写入请求确定目标数据块;
52、第一解析模块,用于对所述目标数据块进行字段解析,获得各字段内容;其中,所述字段内容包括存储地址字段、版本号字段、其他字段,所述其他字段基于所述存储地址字段和所述版本号字段按照预设字段生成规则生成;
53、第一判断模块,用于判断各所述字段内容是否满足预设字段格式;
54、第一输出模块,用于若各所述字段内容满足所述预设字段格式,则输出验证失败提示。
55、第四方面,本技术还公开了另一种数据一致性验证装置,应用于主机端,所述装置包括:
56、下发模块,用于下发数据读取请求至存储端;
57、反馈模块,用于接收所述存储端反馈的目标读数据块;
58、第二解析模块,用于对所述目标读数据块进行字段解析,获得各字段内容;
59、第二判断模块,用于判断各所述字段内容是否满足所述目标读数据块的生成规则;
60、第二输出模块,用于若各所述字段内容满足所述目标读数据块的生成规则,则输出验证失败提示。
61、第五方面,本技术还公开了一种电子设备,包括:
62、存储器,用于存储计算机程序;
63、处理器,用于执行所述计算机程序时实现如上所述的任一种数据一致性验证方法的步骤。
64、第六方面,本技术还公开了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的任一种数据一致性验证方法的步骤。
65、应用本技术所提供的技术方案,预先设置特定类型的数据块中的字段格式,即上述预设字段格式,由此,当从数据写入请求中获得待写入的目标数据块时,可以先对其进行字段解析得到该目标数据块中的各字段内容,然后通过判断各字段内容是否满足预设字段格式来确定存储端的写入数据块是否满足数据一致性,从而实现数据一致性验证,显然,该种实现方式在每一个数据块写入存储端的过程中即实现了数据一致性验证,具有较高的实时性,有助于及时发现问题,进而保证存储系统的稳定运行。