SSD的测试数据生成方法、数据一致性检测方法及装置与流程
- 国知局
- 2024-07-31 19:29:28
本发明涉及数据存储,尤其涉及一种ssd的测试数据生成方法、数据一致性检测方法及装置。
背景技术:
1、在同一块固态盘(ssd)内,由于采用异地更新策略,任意一个逻辑区块地址(lba,logical block address)的数据在更新时,会将其旧数据对应的物理区块地址(pba,physics block address)标记为失效,然后重新选择一个新的pba存放更新后的数据。这会在ssd内部留下一串失效的pba。如果固件存在bug,在特定的触发条件下(例如异常断电),可能会再次将错误的pba和lba进行关联,从而导致用户读取的数据版本出错。
2、另一方面,同一台计算机或服务器安装了不只一块ssd时,如果固件存在bug,也可能会把不同ssd的lba和pba进行错误的关联映射,从而导致用户读取的数据版本出错。
3、为此,ssd厂家在压力测试阶段,需要通过数据一致性检查的方法来验证固件是否存在上述bug。所谓的数据一致性检查,指的是通过检查ssd读出的某个lba的数据是否和这个lba最新写入的数据一致。为了实现这个目的,必须通过某种机制获取该lba最新写入的测试序列。目前通常的做法是,存储该写入数据的序列,或是生成该序列的随机数发生器种子,或者是产生该随机数发生器种子的相关信息。也即现有方案都需要在测试计算机上存储各个lba写入数据的相关信息,但是,随着ssd单盘容量的攀升,以及在一台服务器上装配数十片ssd的情况越来越普遍,要进行这种数据一致性检查的压力测试,涉及测试的lba数量动辄就是数十吉(1g是10的9次方)。如果每个lba都要存储与写入数据相关的信息,其需要的存储量会非常惊人。即使每个lba只存一个bit,其占用的空间都难以满足。而且,超大的存储量也会显著降低测试的速度。
4、综上所述,在数据一致性检查时,如何能够不用存储写入数据的相关信息,就能获得每个lba的写入数据以用于和读出数据进行比对,是一个亟待解决的技术问题。
技术实现思路
1、鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的ssd的测试数据生成方法、数据一致性检测方法及装置。
2、本发明的一个方面,提供了一种ssd的测试数据生成方法,所述方法包括:
3、根据写命令中携带的目标lba的地址信息和用于对当前测试任务进行标识的全局公共信息生成第一初始测试序列,不同测试任务对应的全局公共信息不同;
4、获取当前写命令完成时所述目标lba对应的数据更新次数,根据所述数据更新次数生成第一校验序列;
5、根据所述第一校验序列对所述第一初始测试序列进行数据处理生成第一目标测试序列,并将所述第一目标测试序列作为所述目标lba的写入数据,以在数据读取后通过对从目标lba的读取数据解析出的全局公共信息、地址信息分别与数据读取时测试任务对应的全局公共信息、读命令中携带的地址信息进行比对,实现目标lba的数据一致性检测。
6、可选地,所述根据所述数据更新次数生成第一校验序列包括:
7、将所述数据更新次数的明码数据作为所述第一校验序列;
8、或,根据所述数据更新次数对预设初始伪随机序列按照与所述数据更新次数对应的序列变换算法进行数据变换得到目标伪随机序列,将所述目标伪随机序列作为所述第一校验序列;
9、或,根据预设的映射关系表查找与所述数据更新次数对应的目标伪随机序列,将所述目标伪随机序列作为第一校验序列,所述映射关系表中包括有数据更新次数与伪随机序列之间的对应关系。
10、可选地,所述全局公共信息包括测试编号和/或测试开始时间的时间戳。
11、可选地,所述根据所述第一校验序列对所述第一初始测试序列进行数据处理生成第一目标测试序列包括:
12、将所述第一校验序列作为所述第一初始测试序列的延长部分添加到所述第一初始测试序列的头部、尾部或预先指定位置中的一处或多处以得到所述第一目标测试序列。
13、可选地,所述根据所述第一校验序列对所述第一初始测试序列进行数据处理生成第一目标测试序列包括:
14、将所述第一校验序列和所述第一初始测试序列的部分数据或全部数据进行逐个比特的异或运算处理以得到所述第一目标测试序列,其中,所述第一初始测试序列中参与异或运算处理的数据中包括所述全局公共信息。
15、本发明的第二方面,提供了一种ssd的数据一致性检测方法,所述方法包括:
16、根据读命令中携带的目标lba的地址信息获取从目标lba中读取的第二目标测试序列,所述第二目标测试序列采用如上所述ssd的测试数据生成方法生成;
17、对所述第二目标测试序列进行解析以获取所述第二目标测试序列中的第二校验序列和第二初始测试序列;
18、根据所述第二校验序列提取所述目标lba对应的数据更新次数;
19、当所述数据更新次数与日志文件中存储的目标lba的更新次数一致时,从所述第二初始测试序列中提取出地址信息和全局公共信息;
20、检测所述地址信息是否为目标lba的地址信息,以及所述全局公共信息标识的测试任务是否为当前正在执行的测试任务,当所述地址信息为目标lba的地址信息且所述全局公共信息标识的测试任务为当前正在执行的测试任务时判定目标lba通过数据一致性检测。
21、可选地,所述对所述第二目标测试序列进行解析以获取所述第二目标测试序列中的第二校验序列和第二初始测试序列包括:
22、根据生成所述第二目标测试序列时所述第二校验序列添加到所述第二初始测试序列的位置,从所述第二目标测试序列提取出第二校验序列和第二初始测试序列。
23、可选地,所述对所述第二目标测试序列进行解析以获取所述第二目标测试序列中的第二校验序列和第二初始测试序列包括:
24、遍历预设的各个伪随机序列,查找对生成所述第二目标测试序列时参与异或运算处理的数据进行正确解扰的第二伪随机序列,并获取解扰后的测试序列;
25、将所述第二伪随机序列作为第二校验序列,并将解扰后的测试序列中删除所述第二校验序列以外的数据作为第二初始测试序列。
26、可选地,根据所述第二校验序列提取所述目标lba对应的数据更新次数包括:
27、根据对目标lba进行数据写入时生成第一校验序列的方式选取对应的提取数据更新次数的方式,提取数据更新次数的方式包括:将所述第二校验序列作为所述目标lba对应的数据更新次数;或根据所述映射关系表查找与所述第二校验序列对应的数据更新次数;或根据所述第二校验序列与预设初始伪随机序列之间的数据变换关系确定与所述第二校验序列对应的数据更新次数。
28、本发明的第三方面,提供了一种ssd的测试数据生成装置,所述装置包括用于实现如上所述ssd的测试数据生成方法的功能模块。
29、本发明的第四方面,提供了一种ssd的数据一致性检测装置,所述装置包括用于实现如上所述ssd的数据一致性检测方法的功能模块。
30、本发明的第五方面,提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上所述ssd的测试数据生成方法的步骤,或如上所述ssd的数据一致性检测方法的步骤。
31、本发明实施例提供的ssd的测试数据生成方法、数据一致性检测方法及装置,在对ssd进行测试数据写入时,基于各个lba的地址信息和当前测试任务的全局公共信息以及各个lba对应的数据更新次数三个关键信息生成的写入对应lba的测试数据,进而能够不用保存各个lba的写入数据或者是生成该写入数据的参数即可获得每个lba的写入数据,以实现和读出数据的一致性比对,节省了大量存储空间,降低了对内存的要求,有效地提高了测试速率。
32、上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
本文地址:https://www.jishuxx.com/zhuanli/20240731/182747.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。
下一篇
返回列表