存储设备的数据校验方法、装置、设备及存储介质与流程
未命名
10-09
阅读:115
评论:0
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.本技术实施例还公开了一种存储设备的数据校验装置,位于所述存储设备,所述存储设备与测试主机连接,所述装置包括:
66.读命令接收模块,用于接收所述测试主机发送的读命令,所述读命令基于所述测试主机响应用户对所述存储设备的读操作生成;
67.读命令响应模块,用于响应对所述存储设备的读命令,获取目标逻辑块地址对应的数据块;
68.追踪序列获取模块,用于在所述数据块校验失败时,获取针对所述目标逻辑块地址的模式追踪序列;其中,所述模式追踪序列为在对所述目标逻辑块地址对应的数据块进行读操作和/或写操作时记录所操作数据的数据模式的序列,用于维护所述目标逻辑块地址的原始设定数据模式和历史操作数据模式;
69.数据溯源模块,用于根据所述模式追踪序列对所述数据块进行数据溯源。
70.本技术实施例还公开了一种存储设备,包括控制单元、存储单元、缓存单元以及基于所述控制单元执行的计算机程序,所述计算机程序被所述控制单元执行时实现任一项所述存储设备的数据校验方法。
71.本技术实施例还公开了一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现任一项所述存储设备的数据校验方法。
72.本技术实施例包括以下优点:
73.在本技术实施例中,在对所读取的存储设备的数据块进行校验失败的情况下,可
以获取读命令对应读取的目标逻辑块地址的模式追踪序列,基于模式追踪序列所维护的针对目标逻辑块地址的原始设定数据模式以及历史操作数据模式,在实现对存储设备的数据进行校验的同时,实现逻辑块地址级别的历史数据追踪,使得在数据块校验失败的情况下基于历史数据的溯源,有效提高问题定位的速度。
附图说明
74.图1是相关技术中基于okg工具实现数据校验的示意图;
75.图2是本技术的一种存储设备的数据校验方法实施例的步骤流程图;
76.图3是本技术的另一种存储设备的数据校验方法实施例的步骤流程图;
77.图4是本技术实施例提供的预设数据模式库的创建示意图;
78.图5是本技术实施例提供的逻辑块数据的生成示意图;
79.图6是本技术实施例提供的存储设备的数据校验的应用场景示意图;
80.图7是本技术的一种存储设备的数据校验装置实施例的结构框图;
81.图8是本技术的另一种存储设备的数据校验装置实施例的结构框图。
具体实施方式
82.为使本技术的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本技术作进一步详细的说明。
83.为便于本领域技术人员理解本技术,下面对本技术下述各实施例中涉及的术语或名词做出解释:
84.ssd:solid state disk/drive,固态硬盘。
85.dmc:datamiscompare,数据错误比对。
86.ssd固件:指的是运行在ssd上的嵌入式软件。
87.lb:logical block,逻辑块,是host io操作的数据块的单位。
88.host io操作:主机的输入(input)、输出(output)操作。
89.lba:logical blockaddress,lb地址,即逻辑块地址,指的是某个数据区块的地址或是某个地址所指向的数据区块,用户可以通过lba访问ssd。
90.fio:flexible i/o tester,是一种ssd性能测试的开源工具。
91.okg:oakgate,是一种ssd测试工具。
92.checksum:检验和,可以允许存在校验字段用于确保数据的完整性,其中校验和也可以被称为冗余校验。
93.metadata:元数据,用于描述数据的数据,指的是对数据及信息资源的描述性信息,通常可以是属性字段。
94.sd:secure digital card,安全数字卡。
95.cf:compact flash,标准闪存卡,是一种用于便携式电子设备的数据存储设备。
96.mmc:multi media card,多媒体卡,是一种快闪存储卡。
97.nsid:namespace identifier,逻辑空间标识。
98.nvme协议:nvm express,是一种专为固态硬盘(ssd)设计的协议,用于优化ssd存储器的读写速度和性能。
99.存储设备的数据校验,主要表现为对固态硬盘在进行数据读写时的纠错能力的测试,以校验更改错误的数据。
100.在数据校验的相关技术中,通常使用第三方工具,例如fio、okg等对固态硬盘进行相关测试,这些工具一般采用检验和checksum的方式实现校验数据。
101.具体的,如图1所示,okg工具的数据校验,主要是通过向lba数据块中插入一定的元数据metadata,利用所插入的元数据metadata进行数据校验。具体表现为对lba发起读操作时,okg工具将会重新计算当前lba的数据(除末尾8byte以外的数据)所对应的checksum值,即对包含计数标签(即counttag)、数据模式索引(即datapattern index)、幻数(即magic number)、逻辑块的补充部分(即one’s complement oflba)以及逻辑块地址(即lba)等数据模式数据(即data pattern data)计算其所对应的checksum值,并与当前lba数据内记录的checksum值进行校验,以判断数据的正确性;其中,末尾8byte的字段值可以指的是该数据块的校验和(即block checksum),即为当前lba数据内记录的checksum值。但前述基于重新计算的校验和与其原本记录的校验和的数据校验方式,对于没有被数据写入过的lba而言,由于并不存在所记录的校验和,okg工具并不能直接进行数据校验;此外,okg工具实现的数据校验是基于独立的数据流进行的,不能支持跨数据流的数据校验。
102.对于fio工具实现的数据校验而言,其基本原理与上述的okg工具实现数据校验的基本原理类似,其同样是采用检验和checksum的方式实现校验数据。具体可以表现为在数据块的header参数中添加相应的checksum值,fio工具对于header参数的定义与okg工具对于header参数的定义存在不同,其中,fio工具中header参数的具体定义可以表现为如下:
103./*一个与校验数据块相关的头结构。*/
104.structverify_header{
105.uint16_tmagic;/*其中1字节用于限定幻数,所设置的幻数用于存储随机数,防止数据破坏;
106.uint16_tverify_type;/*2字节用于限定参数类型;
107.uint32_t len;/*4字节用于限定长度;
108.uint64_trand_seed;/*8字节用于限定随机种子,使得随机数据可预测;
109.uint64_t offset;/*8字节用于限定偏移量;
110.uint32_ttime_sec;/*4字节用于限定时间值;
111.uint32_ttime_nsec;/*4字节用于限定时间值;
112.uint16_tthread;/*2字节用于限定线程;
113.uint16_tnumberio;/*2字节用于限定数据数字类型;
114.uint32_t crc32;/*4字节用于限定验证数据crc;
115.};
116.由上述可知,其可以呈现为一个校验和的特定头,包含验证数据。假设对于某个区块lba0,采用fio工具对该逻辑块地址进行第一次数据的写入之后,例如表现为“0000000acca0011100000000000000000000000
117.00000100000000000000000000000001e7c 064c
118.00000200001000033ee 63d23412 cdab 3412cdab
119.00000303412cdab 3412cdab 3412cdab 3412cdab
120.0000040
……”
121.在对该逻辑地址进行第二次数据的写入之后,例如表现为“0000000acca0011100000000000000000000000
122.0000010000000000000000000000000c29a 063e
123.00000200001000065339b893412cdab 3412cdab
124.00000303412cdab 3412cdab 3412cdab 3412cdab
125.0000040
……”
126.两次数据写入之后,可以利用crc准确地区分出数据正确性,但是fio工具自身不能提供所指定的lba的历史操作数据模式序列;此外,fio工具不能支持复杂的io工作负载场景,例如在多进程下不同io的复合,难以满足测试需求。此外,fio对于一些特殊场景的测试支持比较困难,例如构造同一个fio任务内的lba灵活指定所操作的数据、构造io并发其他特殊命令的场景等。
127.本技术实施例在对所读取的存储设备的数据块进行校验失败的情况下,可以获取读命令对应读取的目标逻辑块地址的模式追踪序列,基于模式追踪序列所维护的针对目标逻辑块地址的原始设定数据模式以及历史操作数据模式,在实现对存储设备的数据进行校验的同时,实现逻辑块地址级别的历史数据追踪,使得在数据块校验失败的情况下基于历史数据的溯源,有效提高问题定位的速度。进一步地,在检测到对存储设备的读写测试时,还可以将用于记录有各个逻辑块地址的数据模式类型的数据模式库在存储设备中进行恢复,以对所写入逻辑块地址的数据在不同测试实例中进行复用,整体提高对存储设备的测试进度,以便基于所实现的跨脚本、跨测试的数据复用,实现对存储设备进行读写测试时的数据快速校验。
128.参照图2,示出了本技术的一种存储设备的数据校验方法实施例的步骤流程图,具体可以包括如下步骤:
129.步骤201,响应对存储设备的读命令,获取目标逻辑块地址对应的数据块;
130.对于存储设备的读写测试,即io测试场景的检测,可以基于对存储设备的读命令和写命令进行体现。通常表现为在接收到对存储设备的读命令时,可以通过对读命令的响应,基于对存储设备中之前所写入的数据块存储的数据进行读取,以便实现对数据的校验。
131.存储设备可以指的是u盘、存储卡(例如sd、cf、mmc等)、ssd硬盘、普通硬盘等设备,在本技术实施例中以ssd为例,对于数据块存储的数据的读取,通常表现为通过对某个数据区块的地址或是某个地址所指向的数据区块,即逻辑块地址(lba)对ssd实现访问的。此时可以对读命令所要求读取的目标逻辑块地址的数据块进行获取,以便对该数据块所存储的数据进行读取以进行数据校验。
132.步骤202,若数据块校验失败,则获取针对目标逻辑块地址的模式追踪序列;
133.对数据块所存储的数据进行数据校验,其校验方式通常表现为采用校验和或者验证数据或者校验值实现,通常可以表现为基于对校验和或者验证数据或者校验值是否一致的判断结果,对数据块的校验是否通过的结果进行确定。
134.具体的,所接收的读命令可以包括读操作命令、读操作的目标逻辑空间和读操作的目标逻辑块地址,此时可以获取读操作的校验值,以及所读取数据块内部存储的校验值,在一种情况下,若读操作的校验值和数据块的校验值一致,则判定数据块校验通过;在另一
种情况下,若读操作的校验值和数据块的校验值不一致,则判定数据块校验失败。
135.在对数据块校验失败的情况下,可以对该逻辑块地址的历史数据进行追踪,以便可以基于历史数据的溯源,有效提高问题定位的速度。
136.在本技术的一种实施例中,在对数据块校验失败的情况下,可以对目标逻辑块地址的模式追踪序列进行获取,所获取的模式追踪序列为在对目标逻辑块地址对应的数据块进行读操作和/或写操作时记录所操作数据的数据模式的序列,主要可以用于维护目标逻辑块地址的原始设定数据模式和历史操作数据模式,那么此时可以在实现对存储设备的数据进行校验的同时,能够基于模式追踪序列实现逻辑块地址级别的历史数据追踪。
137.其中,数据模式可以指的是用于对在进行读写测试时,从某个逻辑块地址中所写入或者所读取数据的数据模式的限定。数据模式的设定可以用二进制数字的代码进行表示或者采用其他方式进行表示,其具体数据模式的设定可以根据具体测试进行定义,其可以人为进行设定或者按照某种规律或者策略进行自动设定,且其可以随着所用于测试时写入的数据模式进行参数变化。
138.示例性地,数据模式可以包括例如常规的全0、全1的数据模式,或者递增、递减的数据模式,还可以是一些特殊的数据模式或者一些随机生成的数据模式,本技术实施例对此不加以限制。对于特殊的数据模式,可以例如是支持format和trim操作的数据模式,这是由于format和trim命令将让指定的lba的数据变成全0或者全1,而与一般的io操作不同,对于format和trim的数据,通常不在逻辑块地址数据中插入辅助信息(例如crc、lba值等)以提高数据校验速度,因此可以设定一些支持format和trim操作的特殊的数据模式,对于特殊的数据模式的具体设定或者定义,本技术实施例对此不加以限制。
139.在本技术实施例中,原始设定数据模式可以指的是对逻辑块地址的初始设定的数据模式;历史操作数据模式可以指的是在对逻辑块地址的数据模式进行初始设定之后,在历史时间对逻辑块地址进行读操作和/或写操作时相应的数据模式。
140.步骤203,根据模式追踪序列对数据块进行数据溯源。
141.数据溯源,指的是追踪数据的起源和重现数据的历史状态。
142.模式追踪序列所维护的原始设定数据模式,表现为对某个逻辑块地址的原始设定数据模式;模式追踪序列所维护的历史操作数据模式,表现为基于对逻辑块地址的历史读操作和/或历史写操作(即历史io操作)记录得到,即其可以表现为对于当前的目标逻辑块地址,在历史进行某个读操作时所对应读取数据的数据模式,或者在历史进行某个写操作时所对应写入数据的数据模式。即模式追踪序列pattern trace可以逻辑块地址级别,记录其原始设定数据模式,以及与历史读操作和/或历史写操作的历史操作数据模式,其中,原始设定数据模式可以根据具体测试进行定义,对于存储设备中不同逻辑块地址而言,尽可能设定不同的数据模式以尽量覆盖可能涉及的数据模式;而历史操作数据模式是在历史写入或者读取时进行记录的,历史操作数据模式的数量可能为多个。
143.对当前校验失败的数据块的数据溯源,在模式追踪序列可以维护原始设定数据模式和历史操作数据模式的情况下,此时可以直接基于模式追踪序列所记录的多个历史操作数据模式和原始设定数据模式,对数据块的历史读操作和/或历史写操作的历史读写状态进行呈现,以便基于所呈现的历史读写状态有效提高问题定位的速度。
144.在实际应用中,历史读写状态可以指的是在模式追踪序列中,读操作或者写操作
和其相应数据的数据模式的对应状态,此时在数据块校验失败的情况下,则可以通过其所呈现的序列中所记载的基于不同操作对应的数据模式,对导致数据错误的来源进行定位,即可以捕获数据错误比对的逻辑块地址以及辅助定位错误数据来源,在实现对存储设备的数据进行校验的同时,实现逻辑块地址级别的历史数据追踪,使得在数据块校验失败的情况下基于历史数据的溯源,有效提高问题定位的速度。
145.在本技术的一种优选实施例中,由于模式追踪序列是基于逻辑块地址级别的记录,其在对于单笔命令进行响应时,能够基于单笔命令中的逻辑块地址区间,在响应命令以及数据校验失败时一次性命中区间中各个逻辑块地址的数据块的数据溯源,即目标逻辑块地址还可以是读命令所携带的逻辑块地址区间中的各个逻辑块地址。
146.在本技术实施例中,在对所读取的存储设备的数据块进行校验失败的情况下,可以获取读命令对应读取的目标逻辑块地址的模式追踪序列,基于模式追踪序列所维护的针对目标逻辑块地址的原始设定数据模式以及历史操作数据模式,在实现对存储设备的数据进行校验的同时,实现逻辑块地址级别的历史数据追踪,使得在数据块校验失败的情况下基于历史数据的溯源,有效提高问题定位的速度。
147.参照图3,示出了本技术的另一种存储设备的数据校验方法实施例的步骤流程图,具体可以包括如下步骤:
148.步骤301,创建预设数据模式库,通过数据模式库对存储设备中各个逻辑块地址的数据模式类型进行记录;
149.存储设备可以指的是u盘、存储卡(例如sd、cf、mmc等)、ssd硬盘、普通硬盘等设备,对存储设备的数据校验,通常表现为对存储设备的读写测试(即io测试)场景,通常表现为在接收到对存储设备的读命令时,可以通过对读命令的响应,基于对存储设备中之前所写入的数据块存储的数据进行读取,以便实现对数据的校验。
150.在本技术实施例中以ssd为例,在ssd研发阶段通常dmc是一种固件测试的比较常见同时也比较难定位的问题,为了提高复现概率,此时在对存储设备进行写入时,可以基于用于记录存储设备中各个逻辑块地址的数据模式类型的预设数据模式库进行实现,以便在对不同的测试实例进行测试时,能够基于预设数据模式库实现跨脚本、跨测试的数据复用,从而整体提高对存储设备的测试进度。
151.具体的,针对ssd的io测试场景,为了有效识别dmc,通常不适用相同的数据模式进行读写测试,那么此时可以使用随机数据模式的方式进行读写测试,以尽量保证所进行读写测试的数据模式的不重复性。进一步地,为了在尽可能不损耗io性能的前提下,实现对数据模式的随机化,此时可以通过预生成数据模式库pattern library实现,以使其尽可能维护可能涉及的数据模式。
152.数据模式可以指的是用于对在进行读写测试时,从某个逻辑块地址中所写入或者所读取数据的数据模式的限定。数据模式的设定可以用二进制数字的代码进行表示或者采用其他方式进行表示,其具体数据模式的设定可以根据具体测试进行定义,其可以人为进行设定或者按照某种规律或者策略进行自动设定,且其可以随着所用于测试时写入的数据模式进行参数变化。
153.示例性地,数据模式可以包括例如常规的全0、全1的数据模式,或者递增、递减的数据模式,还可以是一些特殊的数据模式或者一些随机生成的数据模式,本技术实施例对
此不加以限制。对于特殊的数据模式,可以例如是支持format和trim操作的数据模式,这是由于format和trim命令将让指定的lba的数据变成全0或者全1,而与一般的io操作不同,对于format和trim的数据,通常不在逻辑块地址数据中插入辅助信息(例如crc、lba值等)以提高数据校验速度,因此可以设定一些支持format和trim操作的特殊的数据模式,对于特殊的数据模式的具体设定或者定义,本技术实施例对此不加以限制。
154.具体的,对于所创建的预设数据模式库pattern library,可以如图4所示,对于各个不同的数据模式,例如模式1(即pattern 1)、模式2(即pattern 2)、模式3(即pattern3)以及模式n(即pattern n)等,可以按照占一个字节的内存,例如为模式1分配byte1、为模式2分配byte2的分配方式进行计算,此时若对于所创建的预设数据模式库预先分配1kb的内存即可支持维护1024种数据模式。为了减少io过程中的开销,此时还可以预先对前述1024种数据模式预先分配相应的数据缓冲区(buffer),数据缓冲区分配在主机内存中,其指的是在内存中预留指定大小的存储空间用来对输入/输出(i/o)的数据作临时存储,主要可以用于驱动按照相应数据模式与所分配的内存快速拼接得到逻辑块地址具体的数据,此时按照各个lba4kb的计算,其内存为4mb,不足以影响io开销从而影响io性能。
155.对于所创建的预设数据模式库,存在尽量使其地覆盖可能涉及的数据模式的需求,而对于数据模式库中具体数据模式的记录,可以基于对存储设备的写命令实现。具体表现为可以对存储设备的写命令进行响应,此时所响应的写命令可以包括写操作指令、写操作的逻辑块地址区间,在同一笔写命令中对应逻辑块地址区间的原始设定数据模式相同,那么可以在对同一笔写命令进行生成时,基于对不同笔命令中原始设定数据模式的设定,使得实现对预设数据模式库中各个不同的数据模式的记录,以便以命令为单位维护各笔命令中的逻辑地址区间和对应的数据模式类型。
156.数据模式类型,可以用于指示在预设数据模式库中的索引值。具体的,在对某笔写命令进行响应时,可以基于逻辑块地址区间的起始逻辑块地址、预设计数值和预设随机数,计算得到原始设定数据模式在预设数据模式库的索引值,然后依据索引值,将逻辑块地址区间的原始设定数据模式和所分配的内存空间关联记录在预设数据模式库中,实现对各种不同数据模式在预设数据模式库中的记录。
157.示例性地,在对索引值进行计算时,其起始逻辑块地址可以基于某笔命令中所携带的逻辑块地址区间进行确定,逻辑块地址区间可以指的是单笔命令的开始lba至结束lba的区间,该逻辑块地址区间可以是单个lba,也可以是n个lba;预设计数值可以基于一个递增的计数器counter进行确定,该递增的计数器counter可以用于对所接收的命令数进行计数;预设随机数主要可以按照某个默认的序列生成随机数实现,具体可以采用randseed得到。索引值index的具体计算公式可以表现为(该笔命令的起始lba+counter+randseed)%1001,以便可以依据索引值index加载预先分配内存和对应的数据模式,快速拼接得到实际的落盘数据,即对逻辑块数据进行生成。
158.在实际应用中,由于同一笔命令中对应逻辑块地址区间的原始设定数据模式相同,此时为了避免用一笔命令中的落盘数据相同,此时可以在各个逻辑块地址的数据模式中补充一下其他相关信息,例如lba、nsid、crc等信息。
159.具体的,可以基于逻辑块地址区间的原始设定数据模式和所分配的内存空间,生成逻辑块地址区间中各个逻辑块地址的逻辑块数据,以便在响应写操作命令时,将逻辑块
数据写入存储设备。在具体实现中,由于一个内存空间可能包括多个逻辑空间,各个逻辑空间存在id进行区分,用于在命令中指定读写的是哪个ns中的逻辑块,例如对于如果不指定ns,对同一个lba来说,假设lba0,ssd不知道去读或者写哪里,因为各个逻辑空间存在有lba0,如图5所示,可以基于索引值相应预分配的内存空间获取逻辑空间标识nsid,以及基于原始设定数据模式生成的数据datapattern data,然后基于逻辑块地址区间的逻辑块地址lba、逻辑空间标识nsid和基于原始设定数据模式生成的数据datapattern data,计算得到校验值crc,然后基于逻辑块地址区间的逻辑块地址lba、逻辑空间标识nsid、基于原始设定数据模式生成的数据datapattern data以及校验值crc进行拼接,得到当前逻辑块地址所在数据块的逻辑块数据,以便在将相应逻辑块数据写入相应逻辑块地址的数据块时,实现对存储设备中各个逻辑块地址的数据模式类型的记录,完成对预设数据模式库中多种数据模式的覆盖。
160.需要说明的是,在将相应逻辑块数据写入相应逻辑块地址的数据块时,还可以将逻辑块数据的校验值crc也同步记录到数据块中,便于后续在发起读命令时,能够基于校验值crc实现快速校验。
161.在本技术的一些实施例中,可以在检测到对存储设备的读写测试时,将预设数据模式库恢复至存储设备中,可以在对不同的测试实例进行测试时,能够基于用于记录存储设备中各个逻辑块地址的数据模式类型的预设数据模式库在不同测试实例的存储设备中进行恢复,快速实现整个ssd上对预设数据模式库所记录的各个逻辑块地址的数据模式类型的无限制复用,从而实现跨脚本、跨测试的数据复用。其中,存储设备的读写测试可以基于对存储设备的读命令和写命令体现,在实际应用中,在对上述的预设数据模式库进行保存之后,在下一次测试前可以将其恢复到存储设备的内存中,使得在前边测试过程中在存储设备的逻辑块地址中写入过的数据可以直接复用于本次测试,在不对数据进行清洗然后再重写入一遍的情况下,达到整体提高对存储设备的测试进度,进而实现数据快速校验的目的。
162.步骤302,响应对存储设备的写命令,生成和/或更新逻辑块地址区间中各个逻辑块地址的模式追踪序列;
163.在对预设数据模式库进行复用之后,在对存储设备的写命令进行响应的过程中,对于同一笔命令,可以以命令为单位维护各笔命令中的逻辑地址区间和对应的数据模式类型,具体表现为对相应操作所对应的数据模式进行记录,形成一组模式追踪序列,即记录各个逻辑块地址的原始设定数据模式;在后续再次接收到对存储设备的写命令时,也可以对相应逻辑块地址的模式追踪序列进行更新。
164.具体的,可以在响应写命令,然后将逻辑块数据写入存储设备之后,获取逻辑块地址区间中各个逻辑块地址的索引值,然后依据逻辑块地址区间的各个逻辑块地址和逻辑块地址区间中各个逻辑块地址对应的索引值,生成和/或更新逻辑块地址区间中各个逻辑块地址的模式追踪序列,实现基于对目标逻辑块地址的历史读操作和/或历史写操作记录得到模式追踪序列,便于后续对相应逻辑块地址的数据块实现数据溯源。
165.其中,一笔命令是nvme协议定义的一个命令,host(主机)主要是通过使用一笔笔命令对ssd进行操作的,单笔命令中所要处理的逻辑块地址区间可以是单个lba,也可以是n个lba,在对模式追踪序列pattern trace进行生成与更新的过程中,如果各笔命令处理单
个lba,其对于模式追踪序列而言的压缩比是1:1,如果各笔命令处理n个lba,那么模式追踪序列patterntrace的压缩比可以达到n:1,进一步减小io开销。
166.在本技术的一些实施例中,为了避免模式追踪序列pattern trace内容的无限增大,可以采用rotating模式对上限大小size进行固定,具体表现为当模式追踪序列pattern trace所占空间达到上限时,在继续保存新的数据的同时可以将相应大小的旧数据进行删除,以确保新的pattern trace可以被进行记录,示例性地,假设模式追踪序列pattern trace上限的大小为100mb,则可以记录约364万条的io操作和对应数据模式。
167.步骤303,响应对存储设备的读命令,获取针对目标逻辑块地址的模式追踪序列,根据模式追踪序列对数据块进行数据溯源。
168.对存储设备的读写测试,即io测试场景的检测,通常表现为在接收到对存储设备的读命令时,可以通过对读命令的响应,基于对存储设备中之前所写入的数据块存储的数据进行读取,以便实现对数据的校验。
169.对数据块所存储的数据进行数据校验,其校验方式通常表现为采用校验和或者验证数据或者校验值实现,通常可以表现为基于对校验和或者验证数据或者校验值是否一致的判断结果,对数据块的校验是否通过的结果进行确定。
170.具体的,所接收的读命令可以包括读操作命令、读操作的目标逻辑空间和读操作的目标逻辑块地址,此时可以获取读操作的校验值,以及所读取数据块内部存储的校验值,在一种情况下,若读操作的校验值和数据块的校验值一致,则判定数据块校验通过;在另一种情况下,若读操作的校验值和数据块的校验值不一致,则判定数据块校验失败。
171.在本技术实施例中,对于读操作的校验值,可以通过获取预设数据模式库,其预设数据模式库用于记录对存储设备中各个逻辑块地址的数据模式类型,数据模式类型可以用于指示在预设数据模式库中的索引值,此时可以基于索引值从预设数据模式库中获取数据模式数据,然后再基于数据模式数据、目标逻辑空间的逻辑空间标识以及目标逻辑地址计算得到读操作的校验值,以基于该计算得到的校验值与数据块内部记录的校验值进行一致性校验。
172.在对数据块校验失败的情况下,可以对该逻辑块地址的历史数据进行追踪,以便可以基于历史数据的溯源,有效提高问题定位的速度。数据溯源,指的是追踪数据的起源和重现数据的历史状态,在本技术的一种实施例中,在对数据块校验失败的情况下,可以对目标逻辑块地址的模式追踪序列进行获取,所获取的模式追踪序列主要可以用于维护目标逻辑块地址的原始设定数据模式和历史操作数据模式,那么此时可以在实现对存储设备的数据进行校验的同时,能够基于模式追踪序列实现逻辑块地址级别的历史数据追踪。
173.其中,模式追踪序列所维护的原始设定数据模式,表现为对某个逻辑块地址的原始设定数据模式;模式追踪序列所维护的历史操作数据模式,表现为基于对逻辑块地址的历史读操作和/或历史写操作记录得到,即其可以表现为对于当前的目标逻辑块地址,在历史进行某个读操作时所对应读取数据的数据模式,或者在历史进行某个写操作时所对应写入数据的数据模式。即模式追踪序列pattern trace可以逻辑块地址级别,记录其原始设定数据模式,以及与历史读操作和/或历史写操作的历史操作数据模式。需要说明的是,原始设定数据模式可以根据具体测试进行定义,对于存储设备中不同逻辑块地址而言,可以基于预设数据模式库尽可能设定不同的数据模式实现对尽量覆盖可能涉及的数据模式;而历
史操作数据模式是在历史写入或者读取时进行记录的,历史操作数据模式的数量可能为多个。
174.在实际应用中,对当前校验失败的数据块的数据溯源,在模式追踪序列可以维护原始设定数据模式和历史操作数据模式的情况下,此时可以直接基于模式追踪序列所记录的多个历史操作数据模式和原始设定数据模式,对数据块的历史读操作和/或历史写操作的历史读写状态进行呈现,以便基于所呈现的历史读写状态有效提高问题定位的速度。其中,历史读写状态可以指的是在模式追踪序列中,读操作或者写操作和其相应数据的数据模式的对应状态,此时在数据块校验失败,即crc错误的情况下,可以生成数据错误比对错误通知(即dmc error通知),并通过其所呈现的序列中所记载的基于不同操作对应的数据模式,对导致数据错误的来源进行定位。
175.具体的,可以从模式追踪序列所记录的多个历史操作数据模式中,获取与原始设定数据模式不一致的目标历史操作数据模式,然后基于目标历史操作数据模式从模式追踪序列中定位相应的历史读操作或者历史写操作,并获取所定位的历史读操作读取的历史逻辑块数据或者所定位的历史写操作写入的历史逻辑块数据,实现对错误数据来源的确定,以捕获数据错误比对的逻辑块地址以及辅助定位错误数据来源。
176.在本技术的一些实施例中,在响应读命令,并采用校验值crc进行快速校验时,在一种情况下,可以在发现dmc时,从模式追踪序列中解析得到当前的目标逻辑块地址的历史io操作和对应的数据模式类型以快速定位问题;而在另一种情况下,可以在未发现dmc时,在读取相应目标逻辑块地址对应的数据块中存储的逻辑块数据以外,还可以基于当前的读操作命令对从模式追踪序列进行更新,便于当前的目标逻辑块地址的模式追踪序列pattern trace对当前的读操作以及对应读取数据的数据模式类型进行记录,使得后续基于模式追踪序列pattern trace对相应逻辑块地址的数据块实现数据溯源。
177.在本技术实施例中,在对所读取的存储设备的数据块进行校验失败的情况下,可以获取读命令对应读取的目标逻辑块地址的模式追踪序列,基于模式追踪序列所维护的针对目标逻辑块地址的原始设定数据模式以及历史操作数据模式,在实现对存储设备的数据进行校验的同时,实现逻辑块地址级别的历史数据追踪,使得在数据块校验失败的情况下基于历史数据的溯源,有效提高问题定位的速度。进一步地,在检测到对存储设备的读写测试时,还可以将用于记录有各个逻辑块地址的数据模式类型的数据模式库在存储设备中进行恢复,以对所写入逻辑块地址的数据在不同测试实例中进行复用,整体提高对存储设备的测试进度,以便基于所实现的跨脚本、跨测试的数据复用,实现对存储设备进行读写测试时的数据快速校验。
178.参照图6,示出了本技术实施例提供的存储设备的数据校验的应用场景示意图,主要应用在对存储设备的读写测试,即io测试的场景,涉及测试主机(host)610和存储设备(假设为ssd)611之间的通信。
179.其中,测试主机(host)610主要负责进行输入、输出操作,在本测试场景中其对ssd主要是通过一笔笔命令进行操作的,输入、输出操作可以分别表现为写操作和读操作,然后具体可以通过lba实现对ssd的访问;存储设备611,可以包括控制单元、存储单元、缓存单元以及基于控制单元执行的计算机程序,该计算机程序被控制单元执行时实现本技术实施例所提出的存储设备的数据校验方法。
180.对于存储设备611而言,其涉及对数据模式的管理、逻辑块地址的历史数据的管理以及数据模式的固化过程,以便基于前述过程,实现对数据正确性的快速校验。
181.具体的,数据模式的管理表现为对预设数据模式库pattern library的生成,以用于维护存储设备中各个逻辑块地址所对应的数据模式类型。
182.逻辑块地址的历史数据的管理,可以表现为对逻辑块地址区间中各个逻辑块地址的模式追踪序列的更新或者生成。其可以表现为在对预设数据模式库进行复用之后,在对存储设备的写命令进行响应的过程中,对于同一笔命令,可以以命令为单位维护各笔命令中的逻辑地址区间和对应的数据模式类型,具体表现为对相应操作所对应的数据模式进行记录,形成一组模式追踪序列,即记录各个逻辑块地址的原始设定数据模式;在后续再次接收到对存储设备的写命令时,也可以对相应逻辑块地址的模式追踪序列进行更新,便于后续在对数据块校验失败的情况下实现数据溯源。
183.数据模式的固化过程,可以表现为对预设数据模式库pattern library的保存,以在对不同的测试实例进行测试时能够基于预设数据模式库pattern library,使得在前边测试过程中在存储设备的逻辑块地址中写入过的数据可以直接复用于本次测试,在不对数据进行清洗然后再重写入一遍的情况下,从而实现跨脚本、跨测试的数据复用,达到整体提高对存储设备的测试进度。
184.对数据正确性的快速校验过程,可以表现为在对数据块校验失败时,从相应逻辑块地址的模式追踪序列中解析得到当前的目标逻辑块地址的历史io操作和对应的数据模式类型以快速定位问题。
185.在实际应用中,当host发送写命令时,存储设备可以执行如下步骤:
186.步骤s1,接收测试主机发送的写命令,写命令基于测试主机响应用户对存储设备的写操作生成;步骤s2,响应对存储设备的写命令,更新目标逻辑块地址的模式追踪序列。
187.当host610发送读命令时,存储设备611可以执行如下步骤:
188.步骤s3,接收测试主机发送的读命令,读命令基于测试主机响应用户对存储设备的读操作生成;步骤s4,响应对存储设备的读命令,获取目标逻辑块地址对应的数据块;步骤s5,若数据块校验失败,则获取针对目标逻辑块地址的模式追踪序列;其中,模式追踪序列用于维护目标逻辑块地址的原始设定数据模式和历史操作数据模式;步骤s6,根据模式追踪序列对数据块进行数据溯源。
189.对于上述步骤的具体实现过程,可以参照前述存储设备的数据校验方法实施例的阐述内容,本技术实施例在此加以赘述。
190.在本技术实施例中,可以基于预设数据模式库将存储设备中各个逻辑块地址的数据模式类型进行记录,在不同测试之间加载该记录,实现跨脚本、跨测试的数据复用,结合模式追踪序列,实现历史数据的追踪,有效提高问题定位的速度,即能够在尽可能保证ssd读写性能不受影响的情况下,通过捕获dmc的lba以及辅助定位错误数据来源的通用测试方式,在提供dmc lba上数据具体出错的位置offset和提供单笔命令中的dmc lba的前提下,实现ssd读写中数据的快速校验,并支持lba级别的历史数据追踪以及全盘数据的测试复用的目的。
191.需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本技术实施例并不受所描述的动作顺序的限制,因为依
据本技术实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本技术实施例所必须的。
192.参照图7,示出了本技术的一种存储设备的数据校验装置实施例的结构框图,位于所述存储设备,具体可以包括如下模块:
193.读命令响应模块701,用于响应对所述存储设备的读命令,获取目标逻辑块地址对应的数据块;
194.追踪序列获取模块702,用于在所述数据块校验失败时,获取针对所述目标逻辑块地址的模式追踪序列;其中,所述模式追踪序列为在对所述目标逻辑块地址对应的数据块进行读操作和/或写操作时记录所操作数据的数据模式的序列,用于维护所述目标逻辑块地址的原始设定数据模式和历史操作数据模式;
195.数据溯源模块703,用于根据所述模式追踪序列对所述数据块进行数据溯源。
196.在本技术的一种实施例中,所述读命令包括读操作命令、读操作的目标逻辑空间和读操作的目标逻辑块地址;读命令响应模块701可以包括如下子模块:
197.数据库读取子模块,用于响应对所述存储设备的读操作命令,读取所述目标逻辑空间下目标逻辑块地址对应的数据块;
198.读命令响应模块701还可以包括如下子模块:
199.数据校验子模块,用于获取读操作的校验值和所述数据块的校验值;在所述读操作的校验值和所述数据块的校验值一致时,判定所述数据块校验通过;和/或,在所述读操作的校验值和所述数据块的校验值不一致时,判定所述数据块校验失败。
200.在本技术的一种实施例中,所述模式追踪序列中历史操作数据模式基于对所述目标逻辑块地址的历史读操作和/或历史写操作记录得到,所述历史操作数据模式的数量为多个,所述数据溯源用于指示对所述数据块数据起源的追踪和数据历史状态的重现;
201.数据溯源模块703可以包括如下子模块:
202.历史操作数据模式呈现子模块,用于基于所述模式追踪序列所记录的多个历史操作数据模式和原始设定数据模式,对所述数据块的历史读操作和/或历史写操作的历史读写状态进行呈现。
203.在本技术的一种实施例中,在所述响应对所述存储设备的读命令之前,本技术实施例提出的装置还可以包括如下模块:
204.数据模式类型记录模块,用于创建预设数据模式库;通过所述数据模式库对所述存储设备中各个逻辑块地址的数据模式类型进行记录;其中,所述数据模式类型用于指示在预设数据模式库中的索引值。
205.在本技术的一种实施例中,数据模式类型记录模块可以包括如下子模块:
206.写命令响应子模块,用于响应对所述存储设备的写命令;所述写命令包括写操作指令、写操作的逻辑块地址区间,其中,在同一笔写命令中对应逻辑块地址区间的原始设定数据模式相同;基于所述逻辑块地址区间的起始逻辑块地址、预设计数值和预设随机数,计算得到所述原始设定数据模式在所述预设数据模式库的索引值;依据所述索引值,将所述逻辑块地址区间的原始设定数据模式和所分配的内存空间关联记录在所述预设数据模式库中。
207.在本技术的一种实施例中,数据模式类型记录模块还可以包括如下子模块:
208.逻辑块数据写入子模块,用于基于所述逻辑块地址区间的原始设定数据模式和所分配的内存空间,生成所述逻辑块地址区间中各个逻辑块地址的逻辑块数据;在响应所述写操作命令时,将所述逻辑块数据写入所述存储设备。
209.在本技术的一种实施例中,在将所述逻辑块数据写入所述存储设备之后,数据模式类型记录模块还可以包括如下子模块:
210.模式追踪序列更新子模块,用于获取所述逻辑块地址区间中各个逻辑块地址的索引值;依据所述逻辑块地址区间的各个逻辑块地址和所述逻辑块地址区间中各个逻辑块地址对应的索引值,生成和/或更新所述逻辑块地址区间中各个逻辑块地址的模式追踪序列。
211.在本技术的一种实施例中,逻辑块数据写入子模块可以包括如下单元:
212.逻辑块数据生成单元,用于基于所述内存空间获取逻辑空间标识,以及基于原始设定数据模式生成的数据;基于所述逻辑块地址区间的逻辑块地址、逻辑空间标识和所述基于原始设定数据模式生成的数据,计算得到校验值;基于所述逻辑块地址区间的逻辑块地址、所述逻辑空间标识、所述基于原始设定数据模式生成的数据以及所述校验值拼接得到当前逻辑块地址所在数据块的逻辑块数据。
213.在本技术的一种实施例中,本技术实施例提出的装置还可以包括如下模块:
214.数据模式库复用模块,用于在检测到对所述存储设备的读写测试时,将所述预设数据模式库恢复至所述存储设备中,实现对所述预设数据模式库所记录的各个逻辑块地址的数据模式类型的复用;其中,所述存储设备的读写测试基于对所述存储设备的读命令和写命令体现。
215.在本技术实施例中,本技术实施例提出的存储设备的数据校验装置,在对所读取的存储设备的数据块进行校验失败的情况下,可以获取读命令对应读取的目标逻辑块地址的模式追踪序列,基于模式追踪序列所维护的针对目标逻辑块地址的原始设定数据模式以及历史操作数据模式,在实现对存储设备的数据进行校验的同时,实现逻辑块地址级别的历史数据追踪,使得在数据块校验失败的情况下基于历史数据的溯源,有效提高问题定位的速度。
216.参照图8,示出了本技术的另一种存储设备的数据校验装置实施例的结构框图,位于所述存储设备,所述存储设备与测试主机连接,具体可以包括如下模块:
217.读命令接收模块801,用于接收所述测试主机发送的读命令,所述读命令基于所述测试主机响应用户对所述存储设备的读操作生成;
218.读命令响应模块802,用于响应对所述存储设备的读命令,获取目标逻辑块地址对应的数据块;
219.追踪序列获取模块803,用于在所述数据块校验失败时,获取针对所述目标逻辑块地址的模式追踪序列;其中,所述模式追踪序列为在对所述目标逻辑块地址对应的数据块进行读操作和/或写操作时记录所操作数据的数据模式的序列,用于维护所述目标逻辑块地址的原始设定数据模式和历史操作数据模式;
220.数据溯源模块804,用于根据所述模式追踪序列对所述数据块进行数据溯源。
221.对于如图8所示的存储设备的数据校验装置,其相应模块所具体实现数据校验的具体过程可以参照前述内容,本技术实施例在此不加以赘述。
222.在本技术实施例中,本技术实施例提出的存储设备的数据校验装置,在对所读取的存储设备的数据块进行校验失败的情况下,可以获取读命令对应读取的目标逻辑块地址的模式追踪序列,基于模式追踪序列所维护的针对目标逻辑块地址的原始设定数据模式以及历史操作数据模式,在实现对存储设备的数据进行校验的同时,实现逻辑块地址级别的历史数据追踪,使得在数据块校验失败的情况下基于历史数据的溯源,有效提高问题定位的速度。
223.对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
224.本技术实施例还提供了一种电子设备,包括:
225.包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,该计算机程序被处理器执行时实现上述存储设备的数据校验方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
226.本技术实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储计算机程序,计算机程序被处理器执行时实现上述存储设备的数据校验方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
227.本说明书中的各个实施例均采用递进的方式描述,各个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
228.本领域内的技术人员应明白,本技术实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本技术实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
229.本技术实施例是参照根据本技术实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的各一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
230.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
231.这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
232.尽管已描述了本技术实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为
包括优选实施例以及落入本技术实施例范围的变更和修改。
233.需要说明的是,本技术所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
234.还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
235.以上对本技术所提供的一种存储设备的数据校验方法、一种存储设备的数据校验装置、相应的一种存储设备、相应的一种电子设备以及相应的一种计算机可读存储介质,进行了详细介绍,本文中应用了具体个例对本技术的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本技术的方法及其核心思想;同时,对于本领域的一般技术人员,依据本技术的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本技术的限制。
技术特征:
1.一种存储设备的数据校验方法,其特征在于,所述方法包括:响应对所述存储设备的读命令,获取目标逻辑块地址对应的数据块;若所述数据块校验失败,则获取针对所述目标逻辑块地址的模式追踪序列;其中,所述模式追踪序列为在对所述目标逻辑块地址对应的数据块进行读操作和/或写操作时记录所操作数据的数据模式的序列,用于维护所述目标逻辑块地址的原始设定数据模式和历史操作数据模式;根据所述模式追踪序列对所述数据块进行数据溯源。2.根据权利要求1所述的方法,其特征在于,所述读命令包括读操作命令、读操作的目标逻辑空间和读操作的目标逻辑块地址;所述响应对所述存储设备的读命令,获取目标逻辑块地址对应的数据块,包括:响应对所述存储设备的读操作命令,读取所述目标逻辑空间下目标逻辑块地址对应的数据块;还包括:获取读操作的校验值和所述数据块的校验值;若所述读操作的校验值和所述数据块的校验值一致,则判定所述数据块校验通过;和/或,若所述读操作的校验值和所述数据块的校验值不一致,则判定所述数据块校验失败。3.根据权利要求1或2所述的方法,其特征在于,所述模式追踪序列中历史操作数据模式基于对所述目标逻辑块地址的历史读操作和/或历史写操作记录得到,所述历史操作数据模式的数量为多个,所述数据溯源用于指示对所述数据块数据起源的追踪和数据历史状态的重现;所述根据所述模式追踪序列对所述数据块进行数据溯源,包括:基于所述模式追踪序列所记录的多个历史操作数据模式和原始设定数据模式,对所述数据块的历史读操作和/或历史写操作的历史读写状态进行呈现。4.根据权利要求1所述的方法,其特征在于,在所述响应对所述存储设备的读命令之前,还包括:创建预设数据模式库;通过所述数据模式库对所述存储设备中各个逻辑块地址的数据模式类型进行记录;其中,所述数据模式类型用于指示在预设数据模式库中的索引值。5.根据权利要求4所述的方法,其特征在于,所述通过所述数据模式库对所述存储设备中各个逻辑块地址的数据模式类型进行记录,包括:响应对所述存储设备的写命令;所述写命令包括写操作指令、写操作的逻辑块地址区间,其中,在同一笔写命令中对应逻辑块地址区间的原始设定数据模式相同;基于所述逻辑块地址区间的起始逻辑块地址、预设计数值和预设随机数,计算得到所述原始设定数据模式在所述预设数据模式库的索引值;依据所述索引值,将所述逻辑块地址区间的原始设定数据模式和所分配的内存空间关联记录在所述预设数据模式库中。6.根据权利要求5所述的方法,其特征在于,还包括:基于所述逻辑块地址区间的原始设定数据模式和所分配的内存空间,生成所述逻辑块地址区间中各个逻辑块地址的逻辑块数据;
在响应所述写操作命令时,将所述逻辑块数据写入所述存储设备。7.根据权利要求6所述的方法,其特征在于,在将所述逻辑块数据写入所述存储设备之后,还包括:获取所述逻辑块地址区间中各个逻辑块地址的索引值;依据所述逻辑块地址区间的各个逻辑块地址和所述逻辑块地址区间中各个逻辑块地址对应的索引值,生成和/或更新所述逻辑块地址区间中各个逻辑块地址的模式追踪序列。8.根据权利要求6所述的方法,其特征在于,所述基于所述逻辑块地址区间的原始设定数据模式和所分配的内存空间,生成所述逻辑块地址区间中各个逻辑块地址的逻辑块数据,包括:基于所述内存空间获取逻辑空间标识,以及基于原始设定数据模式生成的数据;基于所述逻辑块地址区间的逻辑块地址、逻辑空间标识和所述基于原始设定数据模式生成的数据,计算得到校验值;基于所述逻辑块地址区间的逻辑块地址、所述逻辑空间标识、所述基于原始设定数据模式生成的数据以及所述校验值拼接得到当前逻辑块地址所在数据块的逻辑块数据。9.根据权利要求4所述的方法,其特征在于,还包括:在检测到对所述存储设备的读写测试时,将所述预设数据模式库恢复至所述存储设备中,实现对所述预设数据模式库所记录的各个逻辑块地址的数据模式类型的复用;其中,所述存储设备的读写测试基于对所述存储设备的读命令和写命令体现。10.一种存储设备的数据校验方法,其特征在于,所述存储设备与测试主机连接,所述方法包括:接收所述测试主机发送的读命令,所述读命令基于所述测试主机响应用户对所述存储设备的读操作生成;响应对所述存储设备的读命令,获取目标逻辑块地址对应的数据块;若所述数据块校验失败,则获取针对所述目标逻辑块地址的模式追踪序列;其中,所述模式追踪序列为在对所述目标逻辑块地址对应的数据块进行读操作和/或写操作时记录所操作数据的数据模式的序列,用于维护所述目标逻辑块地址的原始设定数据模式和历史操作数据模式;根据所述模式追踪序列对所述数据块进行数据溯源。11.一种存储设备的数据校验装置,其特征在于,位于所述存储设备,所述装置包括:读命令响应模块,用于响应对所述存储设备的读命令,获取目标逻辑块地址对应的数据块;追踪序列获取模块,用于在所述数据块校验失败时,获取针对所述目标逻辑块地址的模式追踪序列;其中,所述模式追踪序列为在对所述目标逻辑块地址对应的数据块进行读操作和/或写操作时记录所操作数据的数据模式的序列,用于维护所述目标逻辑块地址的原始设定数据模式和历史操作数据模式;数据溯源模块,用于根据所述模式追踪序列对所述数据块进行数据溯源。12.一种存储设备的数据校验装置,其特征在于,位于所述存储设备,所述存储设备与测试主机连接,所述装置包括:读命令接收模块,用于接收所述测试主机发送的读命令,所述读命令基于所述测试主
机响应用户对所述存储设备的读操作生成;读命令响应模块,用于响应对所述存储设备的读命令,获取目标逻辑块地址对应的数据块;追踪序列获取模块,用于在所述数据块校验失败时,获取针对所述目标逻辑块地址的模式追踪序列;其中,所述模式追踪序列为在对所述目标逻辑块地址对应的数据块进行读操作和/或写操作时记录所操作数据的数据模式的序列,用于维护所述目标逻辑块地址的原始设定数据模式和历史操作数据模式;数据溯源模块,用于根据所述模式追踪序列对所述数据块进行数据溯源。13.一种存储设备,其特征在于,包括控制单元、存储单元、缓存单元以及基于所述控制单元执行的计算机程序,所述计算机程序被所述控制单元执行时实现如权利要求1至9或者权利要求10中任一项所述存储设备的数据校验方法。14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求1至9或者权利要求10中任一项所述存储设备的数据校验方法。
技术总结
本申请实施例提供了存储设备的数据校验方法、装置、设备及存储介质,所述方法包括:响应对存储设备的读命令,获取目标逻辑块地址对应的数据块;若数据块校验失败,则获取针对目标逻辑块地址的模式追踪序列;根据模式追踪序列对数据块进行数据溯源。在对所读取的存储设备的数据块进行校验失败的情况下,基于模式追踪序列所维护的针对目标逻辑块地址的原始设定数据模式以及历史操作数据模式,在实现对存储设备的数据进行校验的同时,实现逻辑块地址级别的历史数据追踪,使得在数据块校验失败的情况下基于历史数据的溯源,有效提高问题定位的速度。的速度。的速度。
技术研发人员:王小兵 李元杰 吕镱 刘欢
受保护的技术使用者:杭州阿里巴巴飞天信息技术有限公司
技术研发日:2023.06.27
技术公布日:2023/10/8
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
