一种数据校验方法和装置转让专利

申请号 : CN201580004176.7

文献号 : CN107430533B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 罗庆超

申请人 : 华为技术有限公司

摘要 :

本发明实施例公开了一种数据校验方法和装置,该方法可包括:接收对目标存储实体进行校验的校验命令,其中,所述目标存储实体存储在所述存储器连续的地址中,所述目标存储实体包括头部、有效数据和所述有效数据的校验数据,其中,所述头部包括所述有效数据的位置信息和所述校验数据的位置信息;根据所述校验命令查找所述目标存储实体;通过所述目标存储实体的头部包括的所述有效数据的位置信息和所述校验数据的位置信息读取所述有效数据和所述校验数据,并使用所述校验数据对所述有效数据进行校验,当校验失败时,则确定所述有效数据错误。本发明实施例可以提高数据校验效率。

权利要求 :

1.一种数据校验方法,应用于存储控制器中,所述存储控制器和存储器连接,其特征在于,包括:

接收对目标存储实体进行校验的校验命令,其中,所述目标存储实体存储在所述存储器连续的地址中,所述目标存储实体包括头部、有效数据和所述有效数据的校验数据,其中,所述头部包括所述有效数据的位置信息和所述校验数据的位置信息;所述有效数据包括数据和描述所述数据的描述字符,其中,所述描述字符是Key或者元数据;所述校验数据包括至少一项:用于校验所述描述字符是否错误的第一校验值以及用于校验所述数据是否错误的第二校验值;

根据所述校验命令查找所述目标存储实体;

通过所述目标存储实体的头部包括的所述有效数据的位置信息和所述校验数据的位置信息读取所述有效数据和所述校验数据,并使用所述校验数据对所述有效数据进行校验,当校验失败时,则确定所述有效数据错误。

2.如权利要求1所述的方法,其特征在于,所述头部还包括用于校验所述有效数据是否错误的特定值,在读取所述有效数据和所述校验数据之前,所述方法还包括:根据所述校验命令读取所述头部中的所述特定值,并使用预设的校验规则对所述特定值进行校验,当所述特定值校验失败时,则确定所述有效数据错误。

3.如权利要求1或2所述的方法,其特征在于,所述方法还包括:

当所述有效数据错误时,向修复装置上报错误信息,由所述修复装置从其他存储器中获得所述有效数据的副本,对所述目标存储实体的有效数据进行修复。

4.如权利要求2所述的方法,其特征在于,所述目标存储实体是目标存储地址范围内的所有存储实体:

所述校验命令携带有用于指示所述目标存储地址范围的标记信息;

所述根据所述校验命令读取所述头部中的所述特定值,包括:

根据所述校验命令携带的所述标记信息识别出所述目标存储地址,并确定所述目标存储地址的首个存储地址为所述目标存储实体中首个存储实体的头部中的所述特定值的存储地址,从所述首个存储地址中读取所述首个存储实体的头部中的所述特定值;

根据所述首个存储实体的所述特定值的存储地址确定出所述首个存储实体的头部的存储地址,并在所述首个存储实体的头部的存储地址中获取所述首个存储实体的有效数据的位置信息和校验数据的位置信息,并根据所述首个存储实体的有效数据的位置信息和校验数据的位置信息确定所述首个存储实体的存储地址的末端存储地址,并将与所述末端存储地址连续的存储地址作为所述目标存储实体中与所述首个存储实体中连续的下一个存储实体的头部的所述特定值的存储地址,并读取所述下一个存储实体的头部中的特定值。

5.如权利要求2所述的方法,其特征在于,所述目标存储实体是所述存储器内所有存储实体:

所述校验命令携带有用于指示对所述存储器内存储的所有存储实体进行校验的标记信息;

所述根据所述校验命令读取所述头部中的所述特定值,包括:

根据所述校验命令携带的所述标记信息确定所述存储器中的首个存储地址为所述目标存储实体中首个存储实体的头部中的所述特定值的存储地址,从所述首个存储地址中读取所述首个存储实体的头部中的所述特定值;

根据所述首个存储实体的所述特定值的存储地址确定出所述首个存储实体的头部的存储地址,并在所述首个存储实体的头部的存储地址中获取所述首个存储实体的有效数据的位置信息和校验数据的位置信息,并根据所述首个存储实体的有效数据的位置信息和校验数据的位置信息确定所述首个存储实体的存储地址的末端存储地址,并将与所述末端存储地址连续的存储地址作为所述目标存储实体中与所述首个存储实体中连续的下一个存储实体的头部的所述特定值的存储地址,并读取所述下一个存储实体的头部中的特定值。

6.如权利要求2所述的方法,其特征在于,所述校验命令携带有所述目标存储实体的标签信息;

所述根据所述校验命令读取所述头部中的所述特定值包括:

当内存中存储有所述目标存储实体的标签信息以及所述目标存储实体的地址信息时,使用所述标签信息查找所述目标存储实体的地址信息,并在所述地址信息描述的存储地址中读取所述目标存储实体的头部中的所述特定值。

7.如权利要求2所述的方法,其特征在于,所述校验命令携带有所述目标存储实体的标签信息,所述有效数据包括数据和描述所述数据的描述字符,其中,所述描述字符是键Key或者元数据;

所述根据所述校验命令读取所述头部中的所述特定值包括:

当内存中没有存储所述目标存储实体的标签信息或者没有存储所述目标存储实体的地址信息时,读取所述存储器中任一所述特定值,并根据该特定值确定该特定值所属的当前存储实体的头部,在所述当前存储实体的头部中获取所述当前存储实体的描述字符的位置信息,并根据所述当前存储实体的描述字符的位置信息读取所述当前存储实体的描述字符与所述校验命令携带的所述标签信息进行比较,以判断所述当前存储实体是否为所述目标存储实体。

8.如权利要求2所述的方法,其特征在于,所述校验命令携带有所述目标存储实体的标签信息,所述有效数据包括数据和描述所述数据的描述字符,其中,所述描述字符是键Key或者元数据;

所述根据所述校验命令读取所述头部中的所述特定值包括:

当内存中没有存储所述目标存储实体的标签信息或者没有存储所述目标存储实体的地址信息时,读取所述存储器存储的首个存储实体的所述特定值,并根据该特定值确定所述首个存储实体的头部,在所述首个存储实体的头部中获取所述首个存储实体的描述字符的位置信息,并根据所述首个存储实体的描述字符的位置信息读取所述首个存储实体的描述字符与所述校验命令携带的所述标签信息进行比较,以判断所述首个存储实体是否为所述目标存储实体;

当判断所述首个存储实体不是所述目标存储实体时,在所述首个存储实体的头部的存储地址中获取所述首个存储实体的数据的位置信息和校验数据的位置信息,并根据所述首个存储实体的数据的位置信息、描述字符的位置信息和校验数据的位置信息确定所述首个存储实体的存储地址的末端存储地址,并将与所述末端存储地址连续的存储地址作为所述目标存储实体中与所述首个存储实体中连续的下一个存储实体的头部的所述特定值的存储地址,并读取所述下一个存储实体的头部中的特定值,并根据所述下一个存储实体的特定值确定所述下一个存储实体的头部,在所述下一个存储实体的头部中获取所述下一个存储实体的描述字符的位置信息,并根据所述下一个存储实体的描述字符的位置信息读取所述下一个存储实体的描述字符与所述校验命令携带的所述标签信息进行比较,以判断所述下一个存储实体是否为所述目标存储实体。

9.如权利要求7或8所述的方法,其特征在于,所述使用预设的校验规则对所述特定值进行校验,包括:

判断所述特定值与预先定义的预定值是否匹配,若不匹配,则确定所述描述字符和所述数据都错误。

10.一种数据校验方法,其特征在于,包括:

生成对与存储控制器连接的存储器存储的目标存储实体进行校验的校验命令,其中,所述目标存储实体存储在所述存储器连续的地址中,所述目标存储实体包括头部、有效数据和所述有效数据的校验数据,其中,所述头部包括所述有效数据的位置信息和所述校验数据的位置信息;所述有效数据包括数据和描述所述数据的描述字符,其中,所述描述字符是Key或者元数据;所述校验数据包括至少一项:用于校验所述描述字符是否错误的第一校验值以及用于校验所述数据是否错误的第二校验值;

向所述存储控制器发送所述校验命令,以使根据所述校验命令查找所述目标存储实体,并由所述存储控制器通过所述目标存储实体的头部包括的所述有效数据的位置信息和所述校验数据的位置信息读取所述有效数据和所述校验数据,并使用所述校验数据对所述有效数据进行校验,当值校验失败时,则确定所述有效数据错误。

11.如权利要求10所述的方法,其特征在于,所述头部还包括用于校验所述有效数据是否错误的特定值,其中,当所述存储控制器根据所述校验命令读取所述头部中的所述特定值,并使用预设的校验规则对所述特定值进行校验,当所述特定值校验失败时,则确定所述有效数据错误。

12.如权利要求10或11所述的方法,其特征在于,所述方法还包括:

接收所述存储控制器上报的所述有效数据错误的错误信息,并从其他存储器中获得所述有效数据的副本,对所述目标存储实体的有效数据进行修复。

13.如权利要求10或11所述的方法,其特征在于,

所述校验命令携带有用于指示目标存储地址范围的标记信息,其中,所述目标存储实体是所述目标存储地址范围内的所有存储实体;或者所述校验命令携带有用于指示对所述存储器内存储的所有存储实体进行校验的标记信息,其中,所述目标存储实体是所述存储器内所有存储实体:或者所述校验命令携带有所述目标存储实体的标签信息。

14.一种数据校验装置,应用于存储控制器中,所述存储控制器和存储器连接,其特征在于,包括:接收单元、查找单元和校验单元,其中:所述接收单元,用于接收对目标存储实体进行校验的校验命令,其中,所述目标存储实体存储在所述存储器连续的地址中,所述目标存储实体包括头部、有效数据和所述有效数据的校验数据,其中,所述头部包括所述有效数据的位置信息和所述校验数据的位置信息;

所述有效数据包括数据和描述所述数据的描述字符,其中,所述描述字符是Key或者元数据;所述校验数据包括至少一项:用于校验所述描述字符是否错误的第一校验值以及用于校验所述数据是否错误的第二校验值;

所述查找单元,用于根据所述校验命令查找所述目标存储实体;

所述校验单元,用于通过所述目标存储实体的头部包括的所述有效数据的位置信息和所述校验数据的位置信息读取所述有效数据和所述校验数据,并使用所述校验数据对所述有效数据进行校验,当校验失败时,则确定所述有效数据错误。

15.如权利要求14所述的装置,其特征在于,所述头部还包括用于校验所述有效数据是否错误的特定值;所述装置还包括:读取单元,用于根据所述校验命令读取所述头部中的所述特定值;

所述校验单元还用于使用预设的校验规则对所述特定值进行校验,当所述特定值校验失败时,则确定所述有效数据错误。

16.如权利要求14或15所述的装置,其特征在于,所述装置还包括:

上报单元,用于当所述校验单元校验所述有效数据错误时,向修复装置上报错误信息,由所述修复装置从其他存储器中获得所述有效数据的副本,对所述目标存储实体的有效数据进行修复。

17.如权利要求15所述的装置,其特征在于,所述目标存储实体是目标存储地址范围内的所有存储实体:

所述校验命令携带有用于指示所述目标存储地址范围的标记信息;

所述读取单元用于根据所述校验命令携带的所述标记信息识别出所述目标存储地址,并确定所述目标存储地址的首个存储地址为所述目标存储实体中首个存储实体的头部中的所述特定值的存储地址,从所述首个存储地址中读取所述首个存储实体的头部中的所述特定值;以及根据所述首个存储实体的所述特定值的存储地址确定出所述首个存储实体的头部的存储地址,并在所述首个存储实体的头部的存储地址中获取所述首个存储实体的有效数据的位置信息和校验数据的位置信息,并根据所述首个存储实体的有效数据的位置信息和校验数据的位置信息确定所述首个存储实体的存储地址的末端存储地址,并将与所述末端存储地址连续的存储地址作为所述目标存储实体中与所述首个存储实体中连续的下一个存储实体的头部的所述特定值的存储地址,并读取所述下一个存储实体的头部中的特定值。

18.如权利要求15所述的装置,其特征在于,所述目标存储实体是所述存储器内所有存储实体:

所述校验命令携带有用于指示对所述存储器内存储的所有存储实体进行校验的标记信息;

所述读取单元用于根据所述校验命令携带的所述标记信息确定所述存储器中的首个存储地址为所述目标存储实体中首个存储实体的头部中的所述特定值的存储地址,从所述首个存储地址中读取所述首个存储实体的头部中的所述特定值;以及用于根据所述首个存储实体的所述特定值的存储地址确定出所述首个存储实体的头部的存储地址,并在所述首个存储实体的头部的存储地址中获取所述首个存储实体的有效数据的位置信息和校验数据的位置信息,并根据所述首个存储实体的有效数据的位置信息和校验数据的位置信息确定所述首个存储实体的存储地址的末端存储地址,并将与所述末端存储地址连续的存储地址作为所述目标存储实体中与所述首个存储实体中连续的下一个存储实体的头部的所述特定值的存储地址,并读取所述下一个存储实体的头部中的特定值。

19.如权利要求15所述的装置,其特征在于,所述校验命令携带有所述目标存储实体的标签信息;

所述读取单元用于当内存中存储有所述目标存储实体的标签信息以及所述目标存储实体的地址信息时,使用所述标签信息查找所述目标存储实体的地址信息,并在所述地址信息描述的存储地址中读取所述目标存储实体的头部中的所述特定值。

20.如权利要求15所述的装置,其特征在于,所述校验命令携带有所述目标存储实体的标签信息,所述有效数据包括数据和描述所述数据的描述字符,其中,所述描述字符是键Key或者元数据;

所述读取单元用于当内存中没有存储所述目标存储实体的标签信息或者没有存储所述目标存储实体的地址信息时,读取所述存储器中任一所述特定值,并根据该特定值确定该特定值所属的当前存储实体的头部,在所述当前存储实体的头部中获取所述当前存储实体的描述字符的位置信息,并根据所述当前存储实体的描述字符的位置信息读取所述当前存储实体的描述字符与所述校验命令携带的所述标签信息进行比较,以判断所述当前存储实体是否为所述目标存储实体。

21.如权利要求15所述的装置,其特征在于,所述校验命令携带有所述目标存储实体的标签信息,所述有效数据包括数据和描述所述数据的描述字符,其中,所述描述字符是键Key或者元数据;

所述读取单元用于当内存中没有存储所述目标存储实体的标签信息或者没有存储所述目标存储实体的地址信息时,读取所述存储器存储的首个存储实体的所述特定值,并根据该特定值确定所述首个存储实体的头部,在所述首个存储实体的头部中获取所述首个存储实体的描述字符的位置信息,并根据所述首个存储实体的描述字符的位置信息读取所述首个存储实体的描述字符与所述校验命令携带的所述标签信息进行比较,以判断所述首个存储实体是否为所述目标存储实体;以及用于当判断所述首个存储实体不是所述目标存储实体时,在所述首个存储实体的头部的存储地址中获取所述首个存储实体的数据的位置信息和校验数据的位置信息,并根据所述首个存储实体的数据的位置信息、描述字符的位置信息和校验数据的位置信息确定所述首个存储实体的存储地址的末端存储地址,并将与所述末端存储地址连续的存储地址作为所述目标存储实体中与所述首个存储实体中连续的下一个存储实体的头部的所述特定值的存储地址,并读取所述下一个存储实体的头部中的特定值,并根据所述下一个存储实体的特定值确定所述下一个存储实体的头部,在所述下一个存储实体的头部中获取所述下一个存储实体的描述字符的位置信息,并根据所述下一个存储实体的描述字符的位置信息读取所述下一个存储实体的描述字符与所述校验命令携带的所述标签信息进行比较,以判断所述下一个存储实体是否为所述目标存储实体。

22.如权利要求20或21所述的装置,其特征在于,所述校验单元用于判断所述特定值与预先定义的预定值是否匹配,若不匹配,则确定所述描述字符和所述数据都错误。

23.一种数据校验装置,其特征在于,包括:生成单元和发送单元,其中:

所述生成单元,用于生成对与存储控制器连接的存储器存储的目标存储实体进行校验的校验命令,其中,所述目标存储实体存储在所述存储器连续的地址中,所述目标存储实体包括头部、有效数据和所述有效数据的校验数据,其中,所述头部包括所述有效数据的位置信息和所述校验数据的位置信息;所述有效数据包括数据和描述所述数据的描述字符,其中,所述描述字符是Key或者元数据;所述校验数据包括至少一项:用于校验所述描述字符是否错误的第一校验值以及用于校验所述数据是否错误的第二校验值;

所述发送单元,用于向所述存储控制器发送所述生成单元生成所述校验命令,以使根据所述校验命令查找所述目标存储实体,并由所述存储控制器通过所述目标存储实体的头部包括的所述有效数据的位置信息和所述校验数据的位置信息读取所述有效数据和所述校验数据,并使用所述校验数据对所述有效数据进行校验,当值校验失败时,则确定所述有效数据错误。

24.如权利要求23所述的装置,其特征在于,所述头部还包括用于校验所述有效数据是否错误的特定值,其中,当所述存储控制器根据所述校验命令读取所述头部中的所述特定值,并使用预设的校验规则对所述特定值进行校验,当所述特定值校验失败时,则确定所述有效数据错误。

25.如权利要求23或24所述的装置,其特征在于,所述装置还包括:

修复单元,用于接收所述存储控制器上报的所述有效数据错误的错误信息,并从其他存储器中获得所述有效数据的副本,对所述目标存储实体的有效数据进行修复。

26.如权利要求23或24所述的装置,其特征在于,

所述校验命令携带有用于指示目标存储地址范围的标记信息,其中,所述目标存储实体是所述目标存储地址范围内的所有存储实体;或者所述校验命令携带有用于指示对所述存储器内存储的所有存储实体进行校验的标记信息,其中,所述目标存储实体是所述存储器内所有存储实体:或者所述校验命令携带有所述目标存储实体的标签信息。

27.一种数据校验装置,其特征在于,包括:存储控制器、网络接口、存储器和通信总线,其中,所述通信总线用于实现所述存储控制器、网络接口和存储器之间连接通信,所述存储控制器执行所述存储器中存储的程序用于实现以下方法:接收对目标存储实体进行校验的校验命令,其中,所述目标存储实体存储在所述存储器连续的地址中,所述目标存储实体包括头部、有效数据和所述有效数据的校验数据,其中,所述头部包括所述有效数据的位置信息和所述校验数据的位置信息;所述有效数据包括数据和描述所述数据的描述字符,其中,所述描述字符是Key或者元数据;所述校验数据包括至少一项:用于校验所述描述字符是否错误的第一校验值以及用于校验所述数据是否错误的第二校验值;

根据所述校验命令查找所述目标存储实体;

通过所述目标存储实体的头部包括的所述有效数据的位置信息和所述校验数据的位置信息读取所述有效数据和所述校验数据,并使用所述校验数据对所述有效数据进行校验,当校验失败时,则确定所述有效数据错误。

28.如权利要求27所述的装置,其特征在于,所述头部还包括用于校验所述有效数据是否错误的特定值,在读取所述有效数据和所述校验数据之前,所述存储控制器执行的程序还包括:根据所述校验命令读取所述头部中的所述特定值,并使用预设的校验规则对所述特定值进行校验,当所述特定值校验失败时,则确定所述有效数据错误。

29.如权利要求27或28所述的装置,其特征在于,所述存储控制器执行的程序还包括:

当所述有效数据错误时,向修复装置上报错误信息,由所述修复装置从其他存储器中获得所述有效数据的副本,对所述目标存储实体的有效数据进行修复。

30.如权利要求28所述的装置,其特征在于,所述目标存储实体是目标存储地址范围内的所有存储实体:

所述校验命令携带有用于指示所述目标存储地址范围的标记信息;

所述存储控制器执行的根据所述校验命令读取所述头部中的所述特定值的程序,包括:

根据所述校验命令携带的所述标记信息识别出所述目标存储地址,并确定所述目标存储地址的首个存储地址为所述目标存储实体中首个存储实体的头部中的所述特定值的存储地址,从所述首个存储地址中读取所述首个存储实体的头部中的所述特定值;

根据所述首个存储实体的所述特定值的存储地址确定出所述首个存储实体的头部的存储地址,并在所述首个存储实体的头部的存储地址中获取所述首个存储实体的有效数据的位置信息和校验数据的位置信息,并根据所述首个存储实体的有效数据的位置信息和校验数据的位置信息确定所述首个存储实体的存储地址的末端存储地址,并将与所述末端存储地址连续的存储地址作为所述目标存储实体中与所述首个存储实体中连续的下一个存储实体的头部的所述特定值的存储地址,并读取所述下一个存储实体的头部中的特定值。

31.如权利要求28所述的装置,其特征在于,所述目标存储实体是所述存储器内所有存储实体:

所述校验命令携带有用于指示对所述存储器内存储的所有存储实体进行校验的标记信息;

所述存储控制器执行的根据所述校验命令读取所述头部中的所述特定值的程序,包括:

根据所述校验命令携带的所述标记信息确定所述存储器中的首个存储地址为所述目标存储实体中首个存储实体的头部中的所述特定值的存储地址,从所述首个存储地址中读取所述首个存储实体的头部中的所述特定值;

根据所述首个存储实体的所述特定值的存储地址确定出所述首个存储实体的头部的存储地址,并在所述首个存储实体的头部的存储地址中获取所述首个存储实体的有效数据的位置信息和校验数据的位置信息,并根据所述首个存储实体的有效数据的位置信息和校验数据的位置信息确定所述首个存储实体的存储地址的末端存储地址,并将与所述末端存储地址连续的存储地址作为所述目标存储实体中与所述首个存储实体中连续的下一个存储实体的头部的所述特定值的存储地址,并读取所述下一个存储实体的头部中的特定值。

32.如权利要求28所述的装置,其特征在于,所述校验命令携带有所述目标存储实体的标签信息;

所述存储控制器执行的根据所述校验命令读取所述头部中的所述特定值的程序包括:

当内存中存储有所述目标存储实体的标签信息以及所述目标存储实体的地址信息时,使用所述标签信息查找所述目标存储实体的地址信息,并在所述地址信息描述的存储地址中读取所述目标存储实体的头部中的所述特定值。

33.如权利要求28所述的装置,其特征在于,所述校验命令携带有所述目标存储实体的标签信息,所述有效数据包括数据和描述所述数据的描述字符,其中,所述描述字符是键Key或者元数据;

所述存储控制器执行的根据所述校验命令读取所述头部中的所述特定值的程序包括:

当内存中没有存储所述目标存储实体的标签信息或者没有存储所述目标存储实体的地址信息时,读取所述存储器中任一所述特定值,并根据该特定值确定该特定值所属的当前存储实体的头部,在所述当前存储实体的头部中获取所述当前存储实体的描述字符的位置信息,并根据所述当前存储实体的描述字符的位置信息读取所述当前存储实体的描述字符与所述校验命令携带的所述标签信息进行比较,以判断所述当前存储实体是否为所述目标存储实体。

34.如权利要求28所述的装置,其特征在于,所述校验命令携带有所述目标存储实体的标签信息,所述有效数据包括数据和描述所述数据的描述字符,其中,所述描述字符是键Key或者元数据;

所述存储控制器执行的根据所述校验命令读取所述头部中的所述特定值的程序包括:

当内存中没有存储所述目标存储实体的标签信息或者没有存储所述目标存储实体的地址信息时,读取所述存储器存储的首个存储实体的所述特定值,并根据该特定值确定所述首个存储实体的头部,在所述首个存储实体的头部中获取所述首个存储实体的描述字符的位置信息,并根据所述首个存储实体的描述字符的位置信息读取所述首个存储实体的描述字符与所述校验命令携带的所述标签信息进行比较,以判断所述首个存储实体是否为所述目标存储实体;

当判断所述首个存储实体不是所述目标存储实体时,在所述首个存储实体的头部的存储地址中获取所述首个存储实体的数据的位置信息和校验数据的位置信息,并根据所述首个存储实体的数据的位置信息、描述字符的位置信息和校验数据的位置信息确定所述首个存储实体的存储地址的末端存储地址,并将与所述末端存储地址连续的存储地址作为所述目标存储实体中与所述首个存储实体中连续的下一个存储实体的头部的所述特定值的存储地址,并读取所述下一个存储实体的头部中的特定值,并根据所述下一个存储实体的特定值确定所述下一个存储实体的头部,在所述下一个存储实体的头部中获取所述下一个存储实体的描述字符的位置信息,并根据所述下一个存储实体的描述字符的位置信息读取所述下一个存储实体的描述字符与所述校验命令携带的所述标签信息进行比较,以判断所述下一个存储实体是否为所述目标存储实体。

35.如权利要求33或34所述的装置,其特征在于,所述存储控制器执行的使用预设的校验规则对所述特定值进行校验的程序,包括:判断所述特定值与预先定义的预定值是否匹配,若不匹配,则确定所述描述字符和所述数据都错误。

36.一种数据校验装置,其特征在于,包括:处理器、网络接口、存储器和通信总线,其中,所述通信总线用于实现所述处理器、网络接口和存储器之间连接通信,所述处理器执行所述存储器中存储的程序用于实现以下方法:生成对与存储控制器连接的存储器存储的目标存储实体进行校验的校验命令,其中,所述目标存储实体存储在所述存储器连续的地址中,所述目标存储实体包括头部、有效数据和所述有效数据的校验数据,其中,所述头部包括所述有效数据的位置信息和所述校验数据的位置信息;所述有效数据包括数据和描述所述数据的描述字符,其中,所述描述字符是Key或者元数据;所述校验数据包括至少一项:用于校验所述描述字符是否错误的第一校验值以及用于校验所述数据是否错误的第二校验值;

向所述存储控制器发送所述校验命令,以使根据所述校验命令查找所述目标存储实体,并由所述存储控制器通过所述目标存储实体的头部包括的所述有效数据的位置信息和所述校验数据的位置信息读取所述有效数据和所述校验数据,并使用所述校验数据对所述有效数据进行校验,当值校验失败时,则确定所述有效数据错误。

37.如权利要求36所述的装置,其特征在于,所述头部还包括用于校验所述有效数据是否错误的特定值,其中,当所述存储控制器根据所述校验命令读取所述头部中的所述特定值,并使用预设的校验规则对所述特定值进行校验,当所述特定值校验失败时,则确定所述有效数据错误。

38.如权利要求36或37所述的装置,其特征在于,所述处理器执行的程序还包括:

接收所述存储控制器上报的所述有效数据错误的错误信息,并从其他存储器中获得所述有效数据的副本,对所述目标存储实体的有效数据进行修复。

39.如权利要求36或37所述的装置,其特征在于,

所述校验命令携带有用于指示目标存储地址范围的标记信息,其中,所述目标存储实体是所述目标存储地址范围内的所有存储实体;或者所述校验命令携带有用于指示对所述存储器内存储的所有存储实体进行校验的标记信息,其中,所述目标存储实体是所述存储器内所有存储实体:或者所述校验命令携带有所述目标存储实体的标签信息。

说明书 :

一种数据校验方法和装置

技术领域

[0001] 本发明涉及通信领域,尤其涉及一种数据校验方法和装置。

背景技术

[0002] 目前数据存储技术中进行数据校验时,往往都是将存储盘内存储的数据读取至使用该数据的上层应用系统,例如:文件系统。由上层应用系统对读取的数据进行校验,当数据校验错误时,上层应用系统会通过大量的元数据查询到校验错误数据所在的逻辑区块地址(Logical Block Address,LBA)关联的信息,或者通过校验错误数据所在的LBA对应的文件的元数据和数据反向查找表得到该LBA关联的信息。上层应用系统再使用该LBA关联的信息对校验错误数据进行修复。然而,在上述技术中对数据进行校验时是将数据读取至上层应用系统,这样会带来大量的介质访问,从而导致校验的效率很低。

发明内容

[0003] 本发明实施例提供了一种数据校验方法和装置,可以提高数据校验效率。
[0004] 第一方面,本发明实施例一种数据校验方法,应用于存储控制器中,所述存储控制器和存储器连接,包括:
[0005] 接收对目标存储实体进行校验的校验命令,其中,所述目标存储实体存储在所述存储器连续的地址中,所述目标存储实体包括头部、有效数据和所述有效数据的校验数据,其中,所述头部包括所述有效数据的位置信息和所述校验数据的位置信息;
[0006] 根据所述校验命令查找所述目标存储实体;
[0007] 通过所述目标存储实体的头部包括的所述有效数据的位置信息和所述校验数据的位置信息读取所述有效数据和所述校验数据,并使用所述校验数据对所述有效数据进行校验,当校验失败时,则确定所述有效数据错误。
[0008] 在第一方面的第一种可能的实现方式中,所述头部还包括用于校验所述有效数据是否错误的特定值,在读取所述有效数据和所述校验数据之前,所述方法还包括:
[0009] 根据所述校验命令读取所述头部中的所述特定值,并使用预设的校验规则对所述特定值进行校验,当所述特定值校验失败时,则确定所述有效数据错误。
[0010] 结合第一方面或者第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述方法还包括:
[0011] 当所述有效数据错误时,向修复装置上报错误信息,由所述修复装置从其他存储器中获得所述有效数据的副本,对所述目标存储实体的有效数据进行修复。
[0012] 结合第一方面的第一种可能的实现方,在第一方面的第三种可能的实现方式,所述目标存储实体是目标存储地址范围内的所有存储实体:
[0013] 所述校验命令携带有用于指示所述目标存储地址范围的标记信息;
[0014] 所述根据所述校验命令读取所述头部中的所述特定值,包括:
[0015] 根据所述校验命令携带的所述标记信息识别出所述目标存储地址,并确定所述目标存储地址的首个存储地址为所述目标存储实体中首个存储实体的头部中的所述特定值的存储地址,从所述首个存储地址中读取所述首个存储实体的头部中的所述特定值;
[0016] 根据所述首个存储实体的所述特定值的存储地址确定出所述首个存储实体的头部的存储地址,并在所述首个存储实体的头部的存储地址中获取所述首个存储实体的有效数据的位置信息和校验数据的位置信息,并根据所述首个存储实体的有效数据的位置信息和校验数据的位置信息确定所述首个存储实体的存储地址的末端存储地址,并将与所述末端存储地址连续的存储地址作为所述目标存储实体中与所述首个存储实体中连续的下一个存储实体的头部的所述特定值的存储地址,并读取所述下一个存储实体的头部中的特定值。
[0017] 结合第一方面的第一种可能的实现方式,在第一方面的第四种可能的实现方式中,所述目标存储实体是所述存储器内所有存储实体:
[0018] 所述校验命令携带有用于指示对所述存储器内存储的所有存储实体进行校验的标记信息;
[0019] 所述根据所述校验命令读取所述头部中的所述特定值,包括:
[0020] 根据所述校验命令携带的所述标记信息确定所述存储器中的首个存储地址为所述目标存储实体中首个存储实体的头部中的所述特定值的存储地址,从所述首个存储地址中读取所述首个存储实体的头部中的所述特定值;
[0021] 根据所述首个存储实体的所述特定值的存储地址确定出所述首个存储实体的头部的存储地址,并在所述首个存储实体的头部的存储地址中获取所述首个存储实体的有效数据的位置信息和校验数据的位置信息,并根据所述首个存储实体的有效数据的位置信息和校验数据的位置信息确定所述首个存储实体的存储地址的末端存储地址,并将与所述末端存储地址连续的存储地址作为所述目标存储实体中与所述首个存储实体中连续的下一个存储实体的头部的所述特定值的存储地址,并读取所述下一个存储实体的头部中的特定值。
[0022] 结合第一方面的第一种可能的实现方式,在第一方面的第五种可能的实现方式中,所述校验命令携带有所述目标存储实体的标签信息;
[0023] 所述根据所述校验命令读取所述头部中的所述特定值包括:
[0024] 当内存中存储有所述目标存储实体的标签信息以及所述目标存储实体的地址信息时,使用所述标签信息查找所述目标存储实体的地址信息,并在所述地址信息描述的存储地址中读取所述目标存储实体的头部中的所述特定值。
[0025] 结合第一方面的第一种可能的实现方式或者第一方面的第五种可能的实现方,在第一方面的第六种可能的实现方式中,所述校验命令携带有所述目标存储实体的标签信息,所述有效数据包括数据和描述所述数据的描述字符,其中,所述描述字符是键Key或者元数据;
[0026] 所述根据所述校验命令读取所述头部中的所述特定值包括:
[0027] 当内存中没有存储所述目标存储实体的标签信息或者没有存储所述目标存储实体的地址信息时,读取所述存储器中任一所述特定值,并根据该特定值确定该特定值所属的当前存储实体的头部,在所述当前存储实体的头部中获取所述当前存储实体的描述字符的位置信息,并根据所述当前存储实体的描述字符的位置信息读取所述当前存储实体的描述字符与所述校验命令携带的所述标签信息进行比较,以判断所述当前存储实体是否为所述目标存储实体。
[0028] 结合第一方面的第一种可能的实现方式或者第一方面的第五种可能的实现方式,在第一方面的第七种可能的实现方式中,所述校验命令携带有所述目标存储实体的标签信息,所述有效数据包括数据和描述所述数据的描述字符,其中,所述描述字符是键Key或者元数据;
[0029] 所述根据所述校验命令读取所述头部中的所述特定值包括:
[0030] 当内存中没有存储所述目标存储实体的标签信息或者没有存储所述目标存储实体的地址信息时,读取所述存储器存储的首个存储实体的所述特定值,并根据该特定值确定所述首个存储实体的头部,在所述首个存储实体的头部中获取所述首个存储实体的描述字符的位置信息,并根据所述首个存储实体的描述字符的位置信息读取所述首个存储实体的描述字符与所述校验命令携带的所述标签信息进行比较,以判断所述首个存储实体是否为所述目标存储实体;
[0031] 当判断所述首个存储实体不是所述目标存储实体时,在所述首个存储实体的头部的存储地址中获取所述首个存储实体的数据的位置信息和校验数据的位置信息,并根据所述首个存储实体的数据的位置信息、描述字符的位置信息和校验数据的位置信息确定所述首个存储实体的存储地址的末端存储地址,并将与所述末端存储地址连续的存储地址作为所述目标存储实体中与所述首个存储实体中连续的下一个存储实体的头部的所述特定值的存储地址,并读取所述下一个存储实体的头部中的特定值,并根据所述下一个存储实体的特定值确定所述下一个存储实体的头部,在所述下一个存储实体的头部中获取所述下一个存储实体的描述字符的位置信息,并根据所述下一个存储实体的描述字符的位置信息读取所述下一个存储实体的描述字符与所述校验命令携带的所述标签信息进行比较,以判断所述下一个存储实体是否为所述目标存储实体。
[0032] 结合第一方面的上述任一种可能的实现方式,在第一方面的第八种可能的实现方式中,所述有效数据包括数据和描述所述数据的描述字符,其中,所述描述字符是Key或者元数据;
[0033] 所述校验数据包括如下至少一项:
[0034] 用于校验所述描述字符是否错误的第一校验值以及用于校验所述数据是否错误的第二校验值。
[0035] 结合第一方面的第六种可能的实现方式或者第一方面的第七种可能的实现方式或者第一方面的第八种可能的实现方式,在第一方面的第九种可能的实现方式中,所述使用预设的校验规则对所述特定值进行校验,包括:
[0036] 判断所述特定值与预先定义的预定值是否匹配,若不匹配,则确定所述描述字符和所述数据都错误。
[0037] 第二方面,本发明实施例提供一种数据校验方法,包括:
[0038] 生成对与存储控制器连接的存储器存储的目标存储实体进行校验的校验命令,其中,所述目标存储实体存储在所述存储器连续的地址中,所述目标存储实体包括头部、有效数据和所述有效数据的校验数据,其中,所述头部包括所述有效数据的位置信息和所述校验数据的位置信息;
[0039] 向所述存储控制器发送所述校验命令,以使根据所述校验命令查找所述目标存储实体,并由所述存储控制器通过所述目标存储实体的头部包括的所述有效数据的位置信息和所述校验数据的位置信息读取所述有效数据和所述校验数据,并使用所述校验数据对所述有效数据进行校验,当值校验失败时,则确定所述有效数据错误。
[0040] 在第二方面的第一种可能的实现方式中,所述头部还包括用于校验所述有效数据是否错误的特定值,其中,当所述存储控制器根据所述校验命令读取所述头部中的所述特定值,并使用预设的校验规则对所述特定值进行校验,当所述特定值校验失败时,则确定所述有效数据错误。
[0041] 结合第二方面或者第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述方法还包括:
[0042] 接收所述存储控制器上报的所述有效数据错误的错误信息,并从其他存储器中获得所述有效数据的副本,对所述目标存储实体的有效数据进行修复。
[0043] 结合第二方面或者第二方面的第一种可能的实现方式,在第二方面的第三种可能的实现方式中,所述校验命令携带有用于指示目标存储地址范围的标记信息,其中,所述目标存储实体是所述目标存储地址范围内的所有存储实体;或者
[0044] 所述校验命令携带有用于指示对所述存储器内存储的所有存储实体进行校验的标记信息,其中,所述目标存储实体是所述存储器内所有存储实体:或者
[0045] 所述校验命令携带有所述目标存储实体的标签信息。
[0046] 结合第二方面的上述任一种可能的实现方式,在第二方面的第四种可能的实现方式中,所述有效数据包括数据和描述所述数据的描述字符,其中,所述描述字符是Key或者元数据;
[0047] 所述校验数据包括如下至少一项:
[0048] 用于校验所述描述字符是否错误的第一校验值以及用于校验所述数据是否错误的第二校验值。
[0049] 第三方面,本发明实施例提供一种数据校验装置,应用于存储控制器中,所述存储控制器和存储器连接,包括:接收单元、查找单元和校验单元,其中:
[0050] 所述接收单元,用于接收对目标存储实体进行校验的校验命令,其中,所述目标存储实体存储在所述存储器连续的地址中,所述目标存储实体包括头部、有效数据和所述有效数据的校验数据,其中,所述头部包括所述有效数据的位置信息和所述校验数据的位置信息;
[0051] 所述查找单元,用于根据所述校验命令查找所述目标存储实体;
[0052] 所述校验单元,用于通过所述目标存储实体的头部包括的所述有效数据的位置信息和所述校验数据的位置信息读取所述有效数据和所述校验数据,并使用所述校验数据对所述有效数据进行校验,当校验失败时,则确定所述有效数据错误。
[0053] 在第三方面的第一种可能的实现方式中,所述头部还包括用于校验所述有效数据是否错误的特定值;所述装置还包括:
[0054] 读取单元,用于根据所述校验命令读取所述头部中的所述特定值;
[0055] 所述校验单元还用于使用预设的校验规则对所述特定值进行校验,当所述特定值校验失败时,则确定所述有效数据错误。
[0056] 结合第三方面或者第三方面的第一种可能的实现方,在第三方面的第二种可能的实现方式中,所述装置还包括:
[0057] 上报单元,用于当所述校验单元校验所述有效数据错误时,向修复装置上报错误信息,由所述修复装置从其他存储器中获得所述有效数据的副本,对所述目标存储实体的有效数据进行修复。
[0058] 结合第三方面的第一种可能的实现方中,在第三方面的第三种可能的实现方式,所述目标存储实体是目标存储地址范围内的所有存储实体:
[0059] 所述校验命令携带有用于指示所述目标存储地址范围的标记信息;
[0060] 所述读取单元用于根据所述校验命令携带的所述标记信息识别出所述目标存储地址,并确定所述目标存储地址的首个存储地址为所述目标存储实体中首个存储实体的头部中的所述特定值的存储地址,从所述首个存储地址中读取所述首个存储实体的头部中的所述特定值;以及根据所述首个存储实体的所述特定值的存储地址确定出所述首个存储实体的头部的存储地址,并在所述首个存储实体的头部的存储地址中获取所述首个存储实体的有效数据的位置信息和校验数据的位置信息,并根据所述首个存储实体的有效数据的位置信息和校验数据的位置信息确定所述首个存储实体的存储地址的末端存储地址,并将与所述末端存储地址连续的存储地址作为所述目标存储实体中与所述首个存储实体中连续的下一个存储实体的头部的所述特定值的存储地址,并读取所述下一个存储实体的头部中的特定值。
[0061] 结合第三方面的第一种可能的实现方,在第三方面的第四种可能的实现方式中,所述目标存储实体是所述存储器内所有存储实体:
[0062] 所述校验命令携带有用于指示对所述存储器内存储的所有存储实体进行校验的标记信息;
[0063] 所述读取单元用于根据所述校验命令携带的所述标记信息确定所述存储器中的首个存储地址为所述目标存储实体中首个存储实体的头部中的所述特定值的存储地址,从所述首个存储地址中读取所述首个存储实体的头部中的所述特定值;以及用于根据所述首个存储实体的所述特定值的存储地址确定出所述首个存储实体的头部的存储地址,并在所述首个存储实体的头部的存储地址中获取所述首个存储实体的有效数据的位置信息和校验数据的位置信息,并根据所述首个存储实体的有效数据的位置信息和校验数据的位置信息确定所述首个存储实体的存储地址的末端存储地址,并将与所述末端存储地址连续的存储地址作为所述目标存储实体中与所述首个存储实体中连续的下一个存储实体的头部的所述特定值的存储地址,并读取所述下一个存储实体的头部中的特定值。
[0064] 结合第三方面的第一种可能的实现方中,在第三方面的第五种可能的实现方式中,所述校验命令携带有所述目标存储实体的标签信息;
[0065] 所述读取单元用于当内存中存储有所述目标存储实体的标签信息以及所述目标存储实体的地址信息时,使用所述标签信息查找所述目标存储实体的地址信息,并在所述地址信息描述的存储地址中读取所述目标存储实体的头部中的所述特定值。
[0066] 结合第三方面的第一种可能的实现方式或者第三方面的第五种可能的实现方,在第三方面的第六种可能的实现方式中,所述校验命令携带有所述目标存储实体的标签信息,所述有效数据包括数据和描述所述数据的描述字符,其中,所述描述字符是键Key或者元数据;
[0067] 所述读取单元用于当内存中没有存储所述目标存储实体的标签信息或者没有存储所述目标存储实体的地址信息时,读取所述存储器中任一所述特定值,并根据该特定值确定该特定值所属的当前存储实体的头部,在所述当前存储实体的头部中获取所述当前存储实体的描述字符的位置信息,并根据所述当前存储实体的描述字符的位置信息读取所述当前存储实体的描述字符与所述校验命令携带的所述标签信息进行比较,以判断所述当前存储实体是否为所述目标存储实体。
[0068] 结合第三方面的第一种可能的实现方式或者第三方面的第五种可能的实现方式,在第三方面的第七种可能的实现方式中,所述校验命令携带有所述目标存储实体的标签信息,所述有效数据包括数据和描述所述数据的描述字符,其中,所述描述字符是键Key或者元数据;
[0069] 所述读取单元用于当内存中没有存储所述目标存储实体的标签信息或者没有存储所述目标存储实体的地址信息时,读取所述存储器存储的首个存储实体的所述特定值,并根据该特定值确定所述首个存储实体的头部,在所述首个存储实体的头部中获取所述首个存储实体的描述字符的位置信息,并根据所述首个存储实体的描述字符的位置信息读取所述首个存储实体的描述字符与所述校验命令携带的所述标签信息进行比较,以判断所述首个存储实体是否为所述目标存储实体;以及用于当判断所述首个存储实体不是所述目标存储实体时,在所述首个存储实体的头部的存储地址中获取所述首个存储实体的数据的位置信息和校验数据的位置信息,并根据所述首个存储实体的数据的位置信息、描述字符的位置信息和校验数据的位置信息确定所述首个存储实体的存储地址的末端存储地址,并将与所述末端存储地址连续的存储地址作为所述目标存储实体中与所述首个存储实体中连续的下一个存储实体的头部的所述特定值的存储地址,并读取所述下一个存储实体的头部中的特定值,并根据所述下一个存储实体的特定值确定所述下一个存储实体的头部,在所述下一个存储实体的头部中获取所述下一个存储实体的描述字符的位置信息,并根据所述下一个存储实体的描述字符的位置信息读取所述下一个存储实体的描述字符与所述校验命令携带的所述标签信息进行比较,以判断所述下一个存储实体是否为所述目标存储实体。
[0070] 结合第三方面的上述任一种可能的实现方式,在第三方面的第八种可能的实现方式中,所述有效数据包括数据和描述所述数据的描述字符,其中,所述描述字符是Key或者元数据;
[0071] 所述校验数据包括如下至少一项:
[0072] 用于校验所述描述字符是否错误的第一校验值以及用于校验所述数据是否错误的第二校验值。
[0073] 结合第三方面的第六种可能的实现方式或者第三方面的第七种可能的实现方式或者第三方面的第八种可能的实现方式,在第三方面的第九种可能的实现方式中,所述校验单元用于判断所述特定值与预先定义的预定值是否匹配,若不匹配,则确定所述描述字符和所述数据都错误。
[0074] 第四方面,本发明实施例提供一种数据校验装置,包括:生成单元和发送单元,其中:
[0075] 所述生成单元,用于生成对与存储控制器连接的存储器存储的目标存储实体进行校验的校验命令,其中,所述目标存储实体存储在所述存储器连续的地址中,所述目标存储实体包括头部、有效数据和所述有效数据的校验数据,其中,所述头部包括所述有效数据的位置信息和所述校验数据的位置信息;
[0076] 所述发送单元,用于向所述存储控制器发送所述生成单元生成所述校验命令,以使根据所述校验命令查找所述目标存储实体,并由所述存储控制器通过所述目标存储实体的头部包括的所述有效数据的位置信息和所述校验数据的位置信息读取所述有效数据和所述校验数据,并使用所述校验数据对所述有效数据进行校验,当值校验失败时,则确定所述有效数据错误。
[0077] 在第四方面的第一种可能的实现方式中,所述头部还包括用于校验所述有效数据是否错误的特定值,其中,当所述存储控制器根据所述校验命令读取所述头部中的所述特定值,并使用预设的校验规则对所述特定值进行校验,当所述特定值校验失败时,则确定所述有效数据错误。
[0078] 结合第四方面或者第四方面的第一种可能的实现方式,在第四方面的第二种可能的实现方式中,所述装置还包括:
[0079] 修复单元,用于接收所述存储控制器上报的所述有效数据错误的错误信息,并从其他存储器中获得所述有效数据的副本,对所述目标存储实体的有效数据进行修复。
[0080] 结合第四方面或者第四方面的第一种可能的实现方式,在第四方面的第三种可能的实现方式中,所述校验命令携带有用于指示目标存储地址范围的标记信息,其中,所述目标存储实体是所述目标存储地址范围内的所有存储实体;或者
[0081] 所述校验命令携带有用于指示对所述存储器内存储的所有存储实体进行校验的标记信息,其中,所述目标存储实体是所述存储器内所有存储实体:或者
[0082] 所述校验命令携带有所述目标存储实体的标签信息。
[0083] 结合第四方面的上述任一种可能的实现方式,在第四方面的第四种可能的实现方式中,所述有效数据包括数据和描述所述数据的描述字符,其中,所述描述字符是Key或者元数据;
[0084] 所述校验数据包括如下至少一项:
[0085] 用于校验所述描述字符是否错误的第一校验值以及用于校验所述数据是否错误的第二校验值。
[0086] 第五方面,本发明实施例一种数据校验装置,包括:存储控制器、网络接口、存储器和通信总线,其中,所述通信总线用于实现所述存储控制器、网络接口和存储器之间连接通信,所述存储控制器执行所述存储器中存储的程序用于实现以下方法:
[0087] 接收对目标存储实体进行校验的校验命令,其中,所述目标存储实体存储在所述存储器连续的地址中,所述目标存储实体包括头部、有效数据和所述有效数据的校验数据,其中,所述头部包括所述有效数据的位置信息和所述校验数据的位置信息;
[0088] 根据所述校验命令查找所述目标存储实体;
[0089] 通过所述目标存储实体的头部包括的所述有效数据的位置信息和所述校验数据的位置信息读取所述有效数据和所述校验数据,并使用所述校验数据对所述有效数据进行校验,当校验失败时,则确定所述有效数据错误。
[0090] 在第五方面的第一种可能的实现方式中,所述头部还包括用于校验所述有效数据是否错误的特定值,在读取所述有效数据和所述校验数据之前,所述存储控制器执行的程序还包括:
[0091] 根据所述校验命令读取所述头部中的所述特定值,并使用预设的校验规则对所述特定值进行校验,当所述特定值校验失败时,则确定所述有效数据错误。
[0092] 结合第五方面或者第五方面的第一种可能的实现方式,在第五方面的第二种可能的实现方式中,所述存储控制器执行的程序还包括:
[0093] 当所述有效数据错误时,向修复装置上报错误信息,由所述修复装置从其他存储器中获得所述有效数据的副本,对所述目标存储实体的有效数据进行修复。
[0094] 结合第五方面的第一种可能的实现方,在第五方面的第三种可能的实现方式,所述目标存储实体是目标存储地址范围内的所有存储实体:
[0095] 所述校验命令携带有用于指示所述目标存储地址范围的标记信息;
[0096] 所述存储控制器执行的根据所述校验命令读取所述头部中的所述特定值的程序,包括:
[0097] 根据所述校验命令携带的所述标记信息识别出所述目标存储地址,并确定所述目标存储地址的首个存储地址为所述目标存储实体中首个存储实体的头部中的所述特定值的存储地址,从所述首个存储地址中读取所述首个存储实体的头部中的所述特定值;
[0098] 根据所述首个存储实体的所述特定值的存储地址确定出所述首个存储实体的头部的存储地址,并在所述首个存储实体的头部的存储地址中获取所述首个存储实体的有效数据的位置信息和校验数据的位置信息,并根据所述首个存储实体的有效数据的位置信息和校验数据的位置信息确定所述首个存储实体的存储地址的末端存储地址,并将与所述末端存储地址连续的存储地址作为所述目标存储实体中与所述首个存储实体中连续的下一个存储实体的头部的所述特定值的存储地址,并读取所述下一个存储实体的头部中的特定值。
[0099] 结合第五方面的第一种可能的实现方式,在第五方面的第四种可能的实现方式中,所述目标存储实体是所述存储器内所有存储实体:
[0100] 所述校验命令携带有用于指示对所述存储器内存储的所有存储实体进行校验的标记信息;
[0101] 所述存储控制器执行的根据所述校验命令读取所述头部中的所述特定值的程序,包括:
[0102] 根据所述校验命令携带的所述标记信息确定所述存储器中的首个存储地址为所述目标存储实体中首个存储实体的头部中的所述特定值的存储地址,从所述首个存储地址中读取所述首个存储实体的头部中的所述特定值;
[0103] 根据所述首个存储实体的所述特定值的存储地址确定出所述首个存储实体的头部的存储地址,并在所述首个存储实体的头部的存储地址中获取所述首个存储实体的有效数据的位置信息和校验数据的位置信息,并根据所述首个存储实体的有效数据的位置信息和校验数据的位置信息确定所述首个存储实体的存储地址的末端存储地址,并将与所述末端存储地址连续的存储地址作为所述目标存储实体中与所述首个存储实体中连续的下一个存储实体的头部的所述特定值的存储地址,并读取所述下一个存储实体的头部中的特定值。
[0104] 结合第五方面的第一种可能的实现方式,在第五方面的第五种可能的实现方式中,所述校验命令携带有所述目标存储实体的标签信息;
[0105] 所述存储控制器执行的根据所述校验命令读取所述头部中的所述特定值的程序包括:
[0106] 当内存中存储有所述目标存储实体的标签信息以及所述目标存储实体的地址信息时,使用所述标签信息查找所述目标存储实体的地址信息,并在所述地址信息描述的存储地址中读取所述目标存储实体的头部中的所述特定值。
[0107] 结合第五方面的第一种可能的实现方式或者第五方面的第五种可能的实现方,在第五方面的第六种可能的实现方式中,所述校验命令携带有所述目标存储实体的标签信息,所述有效数据包括数据和描述所述数据的描述字符,其中,所述描述字符是键Key或者元数据;
[0108] 所述存储控制器执行的根据所述校验命令读取所述头部中的所述特定值的程序包括:
[0109] 当内存中没有存储所述目标存储实体的标签信息或者没有存储所述目标存储实体的地址信息时,读取所述存储器中任一所述特定值,并根据该特定值确定该特定值所属的当前存储实体的头部,在所述当前存储实体的头部中获取所述当前存储实体的描述字符的位置信息,并根据所述当前存储实体的描述字符的位置信息读取所述当前存储实体的描述字符与所述校验命令携带的所述标签信息进行比较,以判断所述当前存储实体是否为所述目标存储实体。
[0110] 结合第五方面的第一种可能的实现方式或者第五方面的第五种可能的实现方式,在第五方面的第七种可能的实现方式中,所述校验命令携带有所述目标存储实体的标签信息,所述有效数据包括数据和描述所述数据的描述字符,其中,所述描述字符是键Key或者元数据;
[0111] 所述存储控制器执行的根据所述校验命令读取所述头部中的所述特定值的程序包括:
[0112] 当内存中没有存储所述目标存储实体的标签信息或者没有存储所述目标存储实体的地址信息时,读取所述存储器存储的首个存储实体的所述特定值,并根据该特定值确定所述首个存储实体的头部,在所述首个存储实体的头部中获取所述首个存储实体的描述字符的位置信息,并根据所述首个存储实体的描述字符的位置信息读取所述首个存储实体的描述字符与所述校验命令携带的所述标签信息进行比较,以判断所述首个存储实体是否为所述目标存储实体;
[0113] 当判断所述首个存储实体不是所述目标存储实体时,在所述首个存储实体的头部的存储地址中获取所述首个存储实体的数据的位置信息和校验数据的位置信息,并根据所述首个存储实体的数据的位置信息、描述字符的位置信息和校验数据的位置信息确定所述首个存储实体的存储地址的末端存储地址,并将与所述末端存储地址连续的存储地址作为所述目标存储实体中与所述首个存储实体中连续的下一个存储实体的头部的所述特定值的存储地址,并读取所述下一个存储实体的头部中的特定值,并根据所述下一个存储实体的特定值确定所述下一个存储实体的头部,在所述下一个存储实体的头部中获取所述下一个存储实体的描述字符的位置信息,并根据所述下一个存储实体的描述字符的位置信息读取所述下一个存储实体的描述字符与所述校验命令携带的所述标签信息进行比较,以判断所述下一个存储实体是否为所述目标存储实体。
[0114] 结合第五方面的上述任一种可能的实现方式,在第五方面的第八种可能的实现方式中,所述有效数据包括数据和描述所述数据的描述字符,其中,所述描述字符是Key或者元数据;
[0115] 所述校验数据包括如下至少一项:
[0116] 用于校验所述描述字符是否错误的第一校验值以及用于校验所述数据是否错误的第二校验值。
[0117] 结合第五方面的第六种可能的实现方式或者第五方面的第七种可能的实现方式或者第五方面的第八种可能的实现方式,在第五方面的第九种可能的实现方式中,其特征在于,所述存储控制器执行的使用预设的校验规则对所述特定值进行校验的程序,包括:
[0118] 判断所述特定值与预先定义的预定值是否匹配,若不匹配,则确定所述描述字符和所述数据都错误。
[0119] 第六方面,本发明实施例提供一种数据校验装置,包括:处理器、网络接口、存储器和通信总线,其中,所述通信总线用于实现所述处理器、网络接口和存储器之间连接通信,所述处理器执行所述存储器中存储的程序用于实现以下方法:
[0120] 生成对与存储控制器连接的存储器存储的目标存储实体进行校验的校验命令,其中,所述目标存储实体存储在所述存储器连续的地址中,所述目标存储实体包括头部、有效数据和所述有效数据的校验数据,其中,所述头部包括所述有效数据的位置信息和所述校验数据的位置信息;
[0121] 向所述存储控制器发送所述校验命令,以使根据所述校验命令查找所述目标存储实体,并由所述存储控制器通过所述目标存储实体的头部包括的所述有效数据的位置信息和所述校验数据的位置信息读取所述有效数据和所述校验数据,并使用所述校验数据对所述有效数据进行校验,当值校验失败时,则确定所述有效数据错误。
[0122] 在第六方面的第一种可能的实现方式中,所述头部还包括用于校验所述有效数据是否错误的特定值,其中,当所述存储控制器根据所述校验命令读取所述头部中的所述特定值,并使用预设的校验规则对所述特定值进行校验,当所述特定值校验失败时,则确定所述有效数据错误。
[0123] 结合第六方面或者第六方面的第一种可能的实现方式,在第六方面的第二种可能的实现方式中,所述处理器执行的程序还包括:
[0124] 接收所述存储控制器上报的所述有效数据错误的错误信息,并从其他存储器中获得所述有效数据的副本,对所述目标存储实体的有效数据进行修复。
[0125] 结合第六方面或者第六方面的第一种可能的实现方式,在第六方面的第三种可能的实现方式中,其特征在于,
[0126] 所述校验命令携带有用于指示目标存储地址范围的标记信息,其中,所述目标存储实体是所述目标存储地址范围内的所有存储实体;或者
[0127] 所述校验命令携带有用于指示对所述存储器内存储的所有存储实体进行校验的标记信息,其中,所述目标存储实体是所述存储器内所有存储实体:或者
[0128] 所述校验命令携带有所述目标存储实体的标签信息。
[0129] 结合第六方面的上述任一种可能的实现方式,在第六方面的第四种可能的实现方式中,所述有效数据包括数据和描述所述数据的描述字符,其中,所述描述字符是Key或者元数据;
[0130] 所述校验数据包括如下至少一项:
[0131] 用于校验所述描述字符是否错误的第一校验值以及用于校验所述数据是否错误的第二校验值。
[0132] 上述技术方案中,接收对目标存储实体进行校验的校验命令,其中,所述目标存储实体存储在所述存储器连续的地址中,所述目标存储实体包括头部、有效数据和所述有效数据的校验数据,其中,所述头部包括所述有效数据的位置信息和所述校验数据的位置信息;根据所述校验命令查找所述目标存储实体;通过所述目标存储实体的头部包括的所述有效数据的位置信息和所述校验数据的位置信息读取所述有效数据和所述校验数据,并使用所述校验数据对所述有效数据进行校验,当校验失败时,则确定所述有效数据错误。这样可以实现在进行数据校验时,不需要对数据进行传输,从而提高数据校验效率。

附图说明

[0133] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0134] 图1是本发明实施例提供的一种数据校验方法的流程示意图;
[0135] 图2是本发明实施例提供的另一种数据校验方法的流程示意图;
[0136] 图3是本发明实施例提供的一种存储实体的结构示意图;
[0137] 图4是本发明实施例提供的一种存储实体的校验示意图;
[0138] 图5是本发明实施例提供的一种数据校验装置的结构示意图;
[0139] 图6是本发明实施例提供的另一种数据校验装置的结构示意图;
[0140] 图7是本发明实施例提供的另一种数据校验装置的结构示意图;
[0141] 图8是本发明实施例提供的另一种数据校验装置的结构示意图;
[0142] 图9是本发明实施例提供的另一种数据校验装置的结构示意图;
[0143] 图10是本发明实施例提供的另一种数据校验装置的结构示意图;
[0144] 图11是本发明实施例提供的另一种数据校验装置的结构示意图;
[0145] 图12是本发明实施例提供的另一种数据校验装置的结构示意图;
[0146] 图13是本发明实施例提供的另一种数据校验装置的结构示意图。

具体实施方式

[0147] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0148] 请参阅图1,图1是本发明实施例提供的一种数据校验方法的流程示意图,其中,该方法应用于存储控制器中,且该存储控制器和存储器连接,如图1所示,上述方法可以包括如下步骤:
[0149] 101、接收对目标存储实体进行校验的校验命令,其中,所述目标存储实体存储在所述存储器连续的地址中,所述目标存储实体包括头部、有效数据和所述有效数据的校验数据,其中,所述头部包括所述有效数据的位置信息和所述校验数据的位置信息。
[0150] 本实施例中,上述校验命令可以是上述存储控制器接收其他设备发送的校验命令,例如:接收修复装置发送的校验命令;或者上述校验命令可以是接收用户输入的校验命令;或者上述校验命令可以是存储控制器自动触发的校验命令等。
[0151] 本实施例中,上述目标存储实体可以是存储器存储的一个或者多个存储实体。另外,存储器存储的存储实体可以理解为占用存储器的连续存储地址的存储内容,例如:键值(Key-Value,KV)实体、存储文件和存储对象。另外,上述目标存储实体存储在所述存储器连续的地址中可以理解为,目标存储实体包括的头部、有效数据和校验数据连续在存储器中。
[0152] 另外,上述有效数据的位置信息可以理解为用于表示该有效数据的存储位置的位置信息,上述校验数据的位置信息也可以理解为用于表示该校验数据的存储位置的位置信息。
[0153] 102、根据所述校验命令查找所述目标存储实体。
[0154] 当接收到上述校验命令后,就可以查找上述目标存储实体,例如:查找目标存储实体的头部。
[0155] 103、通过所述目标存储实体的头部包括的所述有效数据的位置信息和所述校验数据的位置信息读取所述有效数据和所述校验数据,并使用所述校验数据对所述有效数据进行校验,当校验失败时,则确定所述有效数据错误。
[0156] 本实施例中,可以根据上述有效数据的位置信息和所述校验数据的位置信息确定有效数据和校验数据的存储地址,这样在对应的存储地址中就可以读取到有效数据和校验数据,从而可以使用所述校验数据对所述有效数据进行校验,当校验失败时,则确定所述有效数据错误。
[0157] 其中,有效数据错误可以理解为有效数据发生错误,例如:有效数据中部分或者全部发生翻转,其中,该翻转可以是指示由原来的0翻转为1或者由原来的1翻转为0,又例如:有效数据中部分或者全部丢失,又例如:有效数据无法访问等。
[0158] 由于在上述方法中目标存储实体是连续存储在存储器中,而目标存储实体中包括头部、有效数据和校验数据,这样在对有效数据进行校验时就可以直接根据头部包括的内容获取到有效数据和校验数据,以使用校验数据对有效数据进行校验。从而可以实现对有效数据进行校验时,不需要进行有效数据的传输,也不需要再从其他地方获取校验数据,从而本实施例中可以提高数据校验的效率。
[0159] 本实施例中,上述存储控制器可以应用于任意智能设备中的存储控制器,例如:服务器、基站、计算机、笔记本电脑、手机、智能电视、平板电脑等智能设备。
[0160] 本实施例中,接收对目标存储实体进行校验的校验命令,其中,所述目标存储实体存储在所述存储器连续的地址中,所述目标存储实体包括头部、有效数据和所述有效数据的校验数据,其中,所述头部包括所述有效数据的位置信息和所述校验数据的位置信息;根据所述校验命令查找所述目标存储实体;通过所述目标存储实体的头部包括的所述有效数据的位置信息和所述校验数据的位置信息读取所述有效数据和所述校验数据,并使用所述校验数据对所述有效数据进行校验,当校验失败时,则确定所述有效数据错误。这样可以实现在进行数据校验时,不需要对数据进行传输,从而提高数据校验效率。
[0161] 请参阅图2,图2是本发明实施例提供的另一种数据校验方法的流程示意图,该方法应用于存储控制器中,且该存储控制器和存储器连接,如图2所示,包括以下步骤:
[0162] 201、接收对目标存储实体进行校验的校验命令,其中,所述目标存储实体存储在所述存储器连续的地址中,所述目标存储实体包括头部、有效数据和所述有效数据的校验数据,其中,所述头部包括所述有效数据的位置信息和所述校验数据的位置信息。
[0163] 本实施例中,上述校验命令可以携带有上述目标存储实体的标签信息,其中,本实施例中,在存储器中每一个存储实体唯一对应的一个标签信息。这样通过该标签信息就可以识别出上述目标存储实体。
[0164] 202、根据所述校验命令查找所述目标存储实体。
[0165] 203、通过所述目标存储实体的头部包括的所述有效数据的位置信息和所述校验数据的位置信息读取所述有效数据和所述校验数据,并使用所述校验数据对所述有效数据进行校验,当校验失败时,则确定所述有效数据错误。
[0166] 本实施例中,上述头部还可以包括用于校验所述有效数据是否错误的特定值,其中,该特定值可以理解为魔术数字(Magic),其长度也固定,比如为0x0102030405060708,长度为4字节。另外,上述方法还可以包括下步骤:
[0167] 根据所述校验命令读取所述头部中的所述特定值,并使用预设的校验规则对所述特定值进行校验,当所述特定值校验失败时,则确定所述有效数据错误。
[0168] 该实施方式中,当上述有效数据包括数据和描述字符时,上述使用预设的校验规则对所述特定值进行校验可以包括:
[0169] 判断所述特定值与预先定义的预定值是否匹配,若不匹配,则确定所述描述字符和所述数据都错误。
[0170] 如该实施方式中,存储器存储的所有存储实体的特定值为上述预先定义的预定值,这样当确定任意存储实体的特定值与上述预定值不匹配时,就可以确定该存储实体的有效数据错误。
[0171] 当然,该实施方式中,对上述特定值的校验还可以对特定值进行特定运算,当运算结果与预设结果不一致时,则确定特定值校验失败。
[0172] 另外,上述实施方式中,目标存储实体可以是目标存储地址范围内的所有存储实体:另外,上述校验命令可以携带有用于指示所述目标存储地址范围的标记信息。例如:上述目标存储地址范围可以是地址00XX到11XX的存储地址范围,那么,这里的标记信息就可以表示该范围的首个存储地址和末端存储,或者可以理解为起始地址和末尾地址;或者这里的标记信息可以表示首个存储地址和00XX至11XX的偏移信息。
[0173] 另外,上述根据所述校验命令读取所述头部中的所述特定值的步骤,可以包括:
[0174] 根据所述校验命令携带的所述标记信息识别出所述目标存储地址,并确定所述目标存储地址的首个存储地址为所述目标存储实体中首个存储实体的头部中的所述特定值的存储地址,从所述首个存储地址中读取所述首个存储实体的头部中的所述特定值;
[0175] 根据所述首个存储实体的所述特定值的存储地址确定出所述首个存储实体的头部的存储地址,并在所述首个存储实体的头部的存储地址中获取所述首个存储实体的有效数据的位置信息和校验数据的位置信息,并根据所述首个存储实体的有效数据的位置信息和校验数据的位置信息确定所述首个存储实体的存储地址的末端存储地址,并将与所述末端存储地址连续的存储地址作为所述目标存储实体中与所述首个存储实体中连续的下一个存储实体的头部的所述特定值的存储地址,并读取所述下一个存储实体的头部中的特定值。
[0176] 由于本实施方式中,每个存储实体的结构布局都相同,那么,当获取到首个存储实体的末端存储地址后,而特定值的长度固定,那么就可以将与该末端存储地址连续的存储地址作为下一个存储实体的头部的所述特定值的存储地址。另外,该实施方式中特定值位于头部的最前端,即头部的首个存储地址属于特定值的存储地址。
[0177] 需要说明的是,上述仅介绍的首个存储实体和下一个存储实体的特定值获取方式,在该实施方式中,上述目标存储地址范围内的其他存储实体的特定值获取方式都可以参考上述首个存储实体和下一个存储实体的特定值获取方式,此处不作重复说明。
[0178] 上述实施方式中,上述目标存储实体可以是所述存储器内所有存储实体:上述校验命令可以携带有用于指示对所述存储器内存储的所有存储实体进行校验的标记信息。例如:该标记信息可以是指示对存储器进行全盘校验的标记信息。上述根据所述校验命令读取所述头部中的所述特定值的步骤,可以包括:
[0179] 根据所述校验命令携带的所述标记信息确定所述存储器中的首个存储地址为所述目标存储实体中首个存储实体的头部中的所述特定值的存储地址,从所述首个存储地址中读取所述首个存储实体的头部中的所述特定值;
[0180] 根据所述首个存储实体的所述特定值的存储地址确定出所述首个存储实体的头部的存储地址,并在所述首个存储实体的头部的存储地址中获取所述首个存储实体的有效数据的位置信息和校验数据的位置信息,并根据所述首个存储实体的有效数据的位置信息和校验数据的位置信息确定所述首个存储实体的存储地址的末端存储地址,并将与所述末端存储地址连续的存储地址作为所述目标存储实体中与所述首个存储实体中连续的下一个存储实体的头部的所述特定值的存储地址,并读取所述下一个存储实体的头部中的特定值。
[0181] 该实施方式中,可以实现对存储器全盘进行校验。
[0182] 上述实施方式中,上述校验命令可以携带有所述目标存储实体的标签信息;例如:上述目标存储实体为单一存储实体时,该校验命令就可以携带该存储实体的标记信息;当上述目标存储实体为多个存储实体时,该校验命令可以携带这多个存储实体的标记信息。
另外,上述根据所述校验命令读取所述头部中的所述特定值的步骤,可以包括:
[0183] 当内存中存储有所述目标存储实体的标签信息以及所述目标存储实体的地址信息时,使用所述标签信息查找所述目标存储实体的地址信息,并在所述地址信息描述的存储地址中读取所述目标存储实体的头部中的所述特定值。
[0184] 该实施方式中,可以实现当内存中存储有所述目标存储实体的标签信息以及所述目标存储实体的地址信息时直接使用内存信息读取目标存储实体的特定值。
[0185] 上述实施方式中,上述校验命令可以携带有所述目标存储实体的标签信息,上述有效数据可以包括数据和描述所述数据的描述字符,其中,所述描述字符是键(Key)或者元数据;例如:上述描述字符为键时,那么,上述目标存储实体就可以为KV数据,而有效数据包括的数据就可以为值(Value)。另外,上述根据所述校验命令读取所述头部中的所述特定值的步骤可以包括:
[0186] 当内存中没有存储所述目标存储实体的标签信息或者没有存储所述目标存储实体的地址信息时,读取所述存储器中任一所述特定值,并根据该特定值确定该特定值所属的当前存储实体的头部,在所述当前存储实体的头部中获取所述当前存储实体的描述字符的位置信息,并根据所述当前存储实体的描述字符的位置信息读取所述当前存储实体的描述字符与所述校验命令携带的所述标签信息进行比较,以判断所述当前存储实体是否为所述目标存储实体。
[0187] 该实施方式中,可以以读取任意存储实体的特定值的方式获取该存储实体的描述字符,例如:随机获取。再将该描述字符与上述标签信息进行比较,当比较结果表示描述字符与上述标签信息一致时,则可以判断所述当前存储实体为所述目标存储实体。
[0188] 另外,该实施方式中,上述根据所述校验命令读取所述头部中的所述特定值的步骤,可以包括:
[0189] 当内存中没有存储所述目标存储实体的标签信息或者没有存储所述目标存储实体的地址信息时,读取所述存储器存储的首个存储实体的所述特定值,并根据该特定值确定所述首个存储实体的头部,在所述首个存储实体的头部中获取所述首个存储实体的描述字符的位置信息,并根据所述首个存储实体的描述字符的位置信息读取所述首个存储实体的描述字符与所述校验命令携带的所述标签信息进行比较,以判断所述首个存储实体是否为所述目标存储实体;
[0190] 当判断所述首个存储实体不是所述目标存储实体时,在所述首个存储实体的头部的存储地址中获取所述首个存储实体的数据的位置信息和校验数据的位置信息,并根据所述首个存储实体的数据的位置信息、描述字符的位置信息和校验数据的位置信息确定所述首个存储实体的存储地址的末端存储地址,并将与所述末端存储地址连续的存储地址作为所述目标存储实体中与所述首个存储实体中连续的下一个存储实体的头部的所述特定值的存储地址,并读取所述下一个存储实体的头部中的特定值,并根据所述下一个存储实体的特定值确定所述下一个存储实体的头部,在所述下一个存储实体的头部中获取所述下一个存储实体的描述字符的位置信息,并根据所述下一个存储实体的描述字符的位置信息读取所述下一个存储实体的描述字符与所述校验命令携带的所述标签信息进行比较,以判断所述下一个存储实体是否为所述目标存储实体。
[0191] 该实施方式中,可以实现按照特定顺序查找目标存储实体。
[0192] 在上述各实施方式中,上述有效数据包括数据和描述所述数据的描述字符,而该描述字符可以是Key或者元数据;另外,上述校验数据可以包括如下至少一项:
[0193] 用于校验所述描述字符是否错误的第一校验值以及用于校验所述数据是否错误的第二校验值。
[0194] 该实施方式中,可以通过上述第一校验值和第二校验值实现对描述字符和数据的校验。例如:上述使用所述校验数据对所述有效数据进行校验可以包括:
[0195] 对所述描述字符执行预设校验运算,以获取第一运算值上述使用所述校验数据对所述有效数据进行校验,并判断所述第一运算值与所述第一校验值是否一致,若不一致,则确定所述描述字符错误。
[0196] 其中,上述预设校验运算可以是异或运算,即上述第一校验值可以对上述目标存储实体的原始描述字符进行异或运算得获取的值。
[0197] 该实施方式中,当所述校验数据还包括所述第二校验值时,上述使用所述校验数据对所述有效数据进行校验进一步还可以包括:
[0198] 对所述数据执行所述预设校验运算,以获取第二运算值,并判断所述第二运算值与所述第二校验值是否一致,若不一致,则确定所述数据错误。
[0199] 通过该实施方式可以实现校验目标存储实体的数据或者描述字符是否错误,或者可以校验数据和描述字符是否都错误的情况,以提高校验的精度。
[0200] 该实施方式中,当上述头部还包括上述特定值时,当使用预设的校验规则对所述特定值进行校验,当所述特定值校验失败时,则可以确定所述描述字符和所述数据都错误。
[0201] 该实施方式中因为当特定值校验失败时,则可以理解为无法识别出目标存储实体的特定值,而在上述目标存储实体中描述字符和数据是基于特定值识别出的,这样就无法识别出数据结构中描述字符和数据,即可以确定所述描述字符和所述数据都错误。或者可以是预先设定一种校验规则,该校验规则可以是当特定值校验失败时,就可以默认所述描述字符和所述数据都错误。
[0202] 在上述各种实施方式中,上述有效数据的位置信息可以包括有效数据的偏移信息和长度,而上述校验数据的位置信息可以包括校验数据的长度,当然,上述校验数据的位置信息或者有效数据的位置信息中还可以包括有效数据和校验数据之间的位置关系,这样就可以通过有效数据的偏移信息和有效数据的长度和校验数据的长度,以及这两者之间的位置关系,就可以计算出有效数据和校验数据的存储地址。或者,上述有效数据的位置信息还可以包括有效数据的长度,而上述校验数据的位置信息可以包括校验数据的偏移信息和长度,这样同样可以获取到有效数据和校验数据的存储地址;或者上述有效数据的位置信息可以包括有效数据的偏移信息和长度,校验数据的位置信息可以包括校验数据的偏移信息和长度。
[0203] 本实施例中,上述方法还可以包括如下步骤:
[0204] 203、当所述有效数据错误时,向修复装置上报错误信息,由所述修复装置从其他存储器中获得所述有效数据的副本,对所述目标存储实体的有效数据进行修复。
[0205] 该实施方式中,可以实现当有效数据错误时,可以向修复装置上报错误信息,由修复装置从其他存储器中获得所述有效数据的副本,对所述目标存储实体的有效数据进行修复。
[0206] 另外,上述修复装置上可以安装有上层应用系统,在进行数据修复时可以是修复装置安装的上层应用系统进行修复,其中,上层应用系统可以修复装置上安装的可以进行数据修复的应用程序,例如:文件系统或者云应用等。
[0207] 在该实施方式中,步骤201接收的校验命令可以是由该修复装置下发的。
[0208] 该实施方式中,上述方法还可以包括如下步骤:
[0209] 在对所述目的存储实体进行校验时,向所述修复装置上报当前校验结果、当前校验进度和预期校验结束时间中的至少一种。
[0210] 该实施方式可以实现及时向修复装置上报当前校验的校验结果、当前校验进度和预期校验结束时间中的至少一种。
[0211] 下面以KV实体进行举例说明,例如:如图3所示,上述目标存储实体可以包括特定值、键、第一校验值、值和第二校验值,其中,该特定值可以用Magic(魔术数字)表示,其定义可以是用于识别上述值和键,即通过识别出该Magic就可以识别出后面的键和值。例如:Magic为某个指定数字,其长度也固定,比如为0x0102030405060708,长度为3字节,这样在校验时只要发现匹配该数字的就是Magic,那么就可以在偏移4字节就是键内容。上述键可以用Key-meta表示,其用于管理键的名称和长度,以及还可以用于管理值的位置和长度,即通过该Key-meta可以确认键的名称和长度,以及确定值的位置和长度。上述第一校验值可以用chksum表示,上述值可以用value表示,上述第二校验值可以用chksum1表示。
[0212] 另外,在KV实体的头部可以包括如下信息:
[0213]
[0214]
[0215] 该实例中,健的包信息中包括了值的偏移信息,以及健、值、校验数据的长度,且头部中还包括了键和值的位置关系,从而可以根据该头部包括的信息计算出键、值和校验数据的位置信息。
[0216] 另外,上述struct kv_layout还可以包括如下信息:
[0217] u32offset;//魔术数字的偏移(8比特无符号型,4字节)
[0218] 即包括魔术数字的偏移信息,这样可以实现根据该偏移信息计算出键、值和校验数据的位置信息。
[0219] 需要说明的是,当上述目标存储实体包括多个KV实体时,可以如图4所示进行有效数据的校验:
[0220] 401、判断Magic(魔术数字)是否匹配,当匹配时,执行步骤402,当不匹配时,执行步骤403。
[0221] 其中,Magic是否匹配可以是将该Magic与预定值是否匹配。另外,本实施例中,每个存储实体的Magic可以是相同的,或者在实施例中,某一个存储区间的存储实体的Magic可以是相同的。
[0222] 402、校验键(Key-meta)是否一致,若是,则执行步骤406,若否,则执行步骤407。
[0223] 其中,校验键(Key-meta)是否一致可以是判断键(Key-meta)进行异或运算的值与第一校验值是否一致。
[0224] 403、记录Magic错误,并扫描下一个Magic。
[0225] 404、判断是否到时指定边界。
[0226] 其中,该指定边界是校验命令所指示的存储地址的边界。
[0227] 405、梳理错误记录,准备上报校验结果。
[0228] 其中,上报校验结果可以是等所有需要校验的存储实体都校验完后,再统一上报,或者可以是校验完一定数量的数据结构后,将当前校验结果进行上报。
[0229] 406、校验值(Value)是否一致,若执行步骤408,若不一致,则执行步骤409。
[0230] 407、记录键(Key-meta)错误,并扫描下一个Magic。
[0231] 408、确定当前KV实体校验通过。
[0232] 409、记录校验值(Value)错误,并扫描下一个Magic。
[0233] 410、扫描下一个Magic。
[0234] 该实施方式介绍一个依次对多个KV实体进行扫描校验的实施方式。
[0235] 本实施例中,在图1所示的实施例的基础上增加了多种可选的实施方式,且都可以实现提高数据校验效率。
[0236] 请参阅图5,图5是本发明实施例提供的另一种数据校验方法的流程示意图,如图5所示,包括以下步骤:
[0237] 501、生成对与存储控制器连接的存储器存储的目标存储实体进行校验的校验命令,其中,所述目标存储实体存储在所述存储器连续的地址中,所述目标存储实体包括头部、有效数据和所述有效数据的校验数据,其中,所述头部包括所述有效数据的位置信息和所述校验数据的位置信息。
[0238] 其中,上述校验命令和目标存储实体可以参考图1和图2所示的实施例中的描述,此处不作重复说明。
[0239] 502、向所述存储控制器发送所述校验命令,以使根据所述校验命令查找所述目标存储实体,并由所述存储控制器通过所述目标存储实体的头部包括的所述有效数据的位置信息和所述校验数据的位置信息读取所述有效数据和所述校验数据,并使用所述校验数据对所述有效数据进行校验,当值校验失败时,则确定所述有效数据错误。
[0240] 需要说明的是,本实施例中是以修复装置为执行主体进行撰写的,其修复装置可以是图2所示的实施例中的修复装置。
[0241] 本实施例中,生成对与存储控制器连接的存储器存储的目标存储实体进行校验的校验命令,其中,所述目标存储实体存储在所述存储器连续的地址中,所述目标存储实体包括头部、有效数据和所述有效数据的校验数据,其中,所述头部包括所述有效数据的位置信息和所述校验数据的位置信息;向所述存储控制器发送所述校验命令,以使根据所述校验命令查找所述目标存储实体,并由所述存储控制器通过所述目标存储实体的头部包括的所述有效数据的位置信息和所述校验数据的位置信息读取所述有效数据和所述校验数据,并使用所述校验数据对所述有效数据进行校验,当值校验失败时,则确定所述有效数据错误。这样可以实现提高数据校验效率。
[0242] 请参阅图6,图6是本发明实施例提供的另一种数据校验方法的流程示意图,如图6所示,包括以下步骤:
[0243] 601、生成对与存储控制器连接的存储器存储的目标存储实体进行校验的校验命令,其中,所述目标存储实体存储在所述存储器连续的地址中,所述目标存储实体包括头部、有效数据和所述有效数据的校验数据,其中,所述头部包括所述有效数据的位置信息和所述校验数据的位置信息。
[0244] 本实施例中,上述头部还包括用于校验所述有效数据是否错误的特定值,其中,当所述存储控制器根据所述校验命令读取所述头部中的所述特定值,并使用预设的校验规则对所述特定值进行校验,当所述特定值校验失败时,则确定所述有效数据错误。
[0245] 这样可以实现特定值校验有效数据是否错误。
[0246] 602、向所述存储控制器发送所述校验命令,以使根据所述校验命令查找所述目标存储实体,并由所述存储控制器通过所述目标存储实体的头部包括的所述有效数据的位置信息和所述校验数据的位置信息读取所述有效数据和所述校验数据,并使用所述校验数据对所述有效数据进行校验,当值校验失败时,则确定所述有效数据错误。
[0247] 本实施例中,上述方法还可以包括如下步骤:
[0248] 603、接收所述存储控制器上报的所述有效数据错误的错误信息,并从其他存储器中获得所述有效数据的副本,对所述目标存储实体的有效数据进行修复。
[0249] 通过该步骤就可以实现对目标存储实体的有效数据进行修复,且在修复过程由于不需要进行数据的传输,这样可以提高数据修复的效率。
[0250] 本实施例中,上述校验命令可以携带有用于指示目标存储地址范围的标记信息,其中,所述目标存储实体是所述目标存储地址范围内的所有存储实体。
[0251] 这样该校验命令就可以使用存储控制器根据该标记信息实现对目标存储实体的校验,其获取数据和校验的过程可以参考图2所示的实施例。
[0252] 本实施例中,上述校验命令可以携带有用于指示对所述存储器内存储的所有存储实体进行校验的标记信息,其中,所述目标存储实体是所述存储器内所有存储实体。
[0253] 这样该校验命令就可以使用存储控制器根据该标记信息实现对所述存储器内所有存储实体的校验,其获取数据和校验的过程可以参考图2所示的实施例。
[0254] 本实施例中,上述校验命令可以携带有所述目标存储实体的标签信息。
[0255] 这样该校验命令就可以使用存储控制器根据该标记信息实现对所述目标存储实体的校验,其获取数据和校验的过程可以参考图2所示的实施例。
[0256] 本实施例中,上述有效数据可以包括数据和描述所述数据的描述字符,其中,所述描述字符是Key或者元数据;
[0257] 所述校验数据可以包括如下至少一项:
[0258] 用于校验所述描述字符是否错误的第一校验值以及用于校验所述数据是否错误的第二校验值。
[0259] 这样可以实现分别对数据和描述字符进行校验,且当数据或者描述字符发生错误时,可以只对其错误的数据或者描述字符进行校验,以提高校验的精度和效率。
[0260] 另外,本实施例中,修复装置还可以根据存储控制器上报的错误信息,判断目标存储实体当前的错误类型,例如:上述错误信息表示目标存储实体的描述信息和/或者数据的发生翻转时,可以确定当前错误为静默数据损坏,这样修复装置可以在副本中遍历相应的描述信息和数据进行比较修复。当上述错误信息表示目标存储实体不能进行访问时,例如:存储控制器对目标存储实体进行校验时,无法访问到目标存储实体内的数据,即校验结果就可以表示无法进行访问或者丢失,该情况就可以确认是LBA故障或者硬盘磁头故障或者SSD颗粒故障,从而可以通过副本中存储的副本数据与当前能够进行访问或者理解为没有被丢失的存储实体进行比较,以确认无法进行访问或者丢失的存储实体,并从副本中获取对应的副本数据修复磁盘装置中无法行访问或者丢失的存储实体。
[0261] 需要说明的是,本实施例中是以修复装置为执行主体进行撰写的,其修复装置可以是图2所示的实施例中的修复装置,其实施方式都可以参考图2介绍的实施方式。
[0262] 本实施例中,在图5所示的实施例的基础上增加了多种可选的实施方式,且都可以实现提高数据校验效率。
[0263] 请参阅图7,图7是本发明实施例提供的一种数据校验装置的结构示意图,应用于存储控制器中,所述存储控制器和存储器连接,如图7所示,包括:接收单元71、查找单元72和校验单元73,其中:
[0264] 接收单元71,用于接收对目标存储实体进行校验的校验命令,其中,所述目标存储实体存储在所述存储器连续的地址中,所述目标存储实体包括头部、有效数据和所述有效数据的校验数据,其中,所述头部包括所述有效数据的位置信息和所述校验数据的位置信息。
[0265] 本实施例中,上述校验命令可以是上述存储控制器接收其他设备发送的校验命令,例如:接收修复装置发送的校验命令;或者上述校验命令可以是接收用户输入的校验命令;或者上述校验命令可以是存储控制器自动触发的校验命令等。
[0266] 本实施例中,上述目标存储实体可以是存储器存储的一个或者多个存储实体。另外,存储器存储的存储实体可以理解为占用存储器的连续存储地址的存储内容,例如:KV实体、存储文件和存储对象。另外,上述目标存储实体存储在所述存储器连续的地址中可以理解为,目标存储实体包括的头部、有效数据和校验数据连续在存储器中。
[0267] 另外,上述有效数据的位置信息可以理解为用于表示该有效数据的存储位置的位置信息,上述校验数据的位置信息也可以理解为用于表示该校验数据的存储位置的位置信息。
[0268] 查找单元72,用于根据所述校验命令查找所述目标存储实体;
[0269] 当接收到上述校验命令后,就可以查找上述目标存储实体,例如:查找目标存储实体的头部。
[0270] 校验单元73,用于通过所述目标存储实体的头部包括的所述有效数据的位置信息和所述校验数据的位置信息读取所述有效数据和所述校验数据,并使用所述校验数据对所述有效数据进行校验,当校验失败时,则确定所述有效数据错误。
[0271] 本实施例中,可以根据上述有效数据的位置信息和所述校验数据的位置信息确定有效数据和校验数据的存储地址,这样在对应的存储地址中就可以读取到有效数据和校验数据,从而可以使用所述校验数据对所述有效数据进行校验,当校验失败时,则确定所述有效数据错误。
[0272] 本实施例中,上述装置可以应用于任意智能设备中,例如:服务器、基站、计算机、笔记本电脑、手机、智能电视、平板电脑等智能设备。
[0273] 本实施例中,接收对目标存储实体进行校验的校验命令,其中,所述目标存储实体存储在所述存储器连续的地址中,所述目标存储实体包括头部、有效数据和所述有效数据的校验数据,其中,所述头部包括所述有效数据的位置信息和所述校验数据的位置信息;根据所述校验命令查找所述目标存储实体;通过所述目标存储实体的头部包括的所述有效数据的位置信息和所述校验数据的位置信息读取所述有效数据和所述校验数据,并使用所述校验数据对所述有效数据进行校验,当校验失败时,则确定所述有效数据错误。这样可以实现在进行数据校验时,不需要对数据进行传输,从而提高数据校验效率。
[0274] 请参阅图8,图8是本发明实施例提供的另一种数据校验装置的结构示意图,应用于存储控制器中,所述存储控制器和存储器连接,如图8所示,包括:接收单元81、查找单元82和校验单元83,其中:
[0275] 接收单元81,用于接收对目标存储实体进行校验的校验命令,其中,所述目标存储实体存储在所述存储器连续的地址中,所述目标存储实体包括头部、有效数据和所述有效数据的校验数据,其中,所述头部包括所述有效数据的位置信息和所述校验数据的位置信息。
[0276] 查找单元82,用于根据所述校验命令查找所述目标存储实体。
[0277] 校验单元83,用于通过所述目标存储实体的头部包括的所述有效数据的位置信息和所述校验数据的位置信息读取所述有效数据和所述校验数据,并使用所述校验数据对所述有效数据进行校验,当校验失败时,则确定所述有效数据错误。
[0278] 本实施例中,上述头部还可以包括用于校验所述有效数据是否错误的特定值;所述装置还包括:
[0279] 读取单元84,用于根据所述校验命令读取所述头部中的所述特定值;
[0280] 所述校验单元83还可以用于使用预设的校验规则对所述特定值进行校验,当所述特定值校验失败时,则确定所述有效数据错误。
[0281] 其中,该实施方式中,当上述有效数据包括数据和描述字符时,校验单元83可以用于判断所述特定值与预先定义的预定值是否匹配,若不匹配,则确定所述描述字符和所述数据都错误。
[0282] 该实施方式中,可以实现当特定值校验错误时,就可以直接确定描述字符和数据都错误。
[0283] 该实施方式中,上述目标存储实体是目标存储地址范围内的所有存储实体:所述校验命令可以携带有用于指示所述目标存储地址范围的标记信息;
[0284] 所述读取单元84可以用于根据所述校验命令携带的所述标记信息识别出所述目标存储地址,并确定所述目标存储地址的首个存储地址为所述目标存储实体中首个存储实体的头部中的所述特定值的存储地址,从所述首个存储地址中读取所述首个存储实体的头部中的所述特定值;以及根据所述首个存储实体的所述特定值的存储地址确定出所述首个存储实体的头部的存储地址,并在所述首个存储实体的头部的存储地址中获取所述首个存储实体的有效数据的位置信息和校验数据的位置信息,并根据所述首个存储实体的有效数据的位置信息和校验数据的位置信息确定所述首个存储实体的存储地址的末端存储地址,并将与所述末端存储地址连续的存储地址作为所述目标存储实体中与所述首个存储实体中连续的下一个存储实体的头部的所述特定值的存储地址,并读取所述下一个存储实体的头部中的特定值。
[0285] 这样可以实现对一定存储地址范围内的存储实体进行校验。
[0286] 该实施方式中,上述目标存储实体可以是所述存储器内所有存储实体:另外,上述校验命令可以携带有用于指示对所述存储器内存储的所有存储实体进行校验的标记信息;
[0287] 所述读取单元84可以用于根据所述校验命令携带的所述标记信息确定所述存储器中的首个存储地址为所述目标存储实体中首个存储实体的头部中的所述特定值的存储地址,从所述首个存储地址中读取所述首个存储实体的头部中的所述特定值;以及用于根据所述首个存储实体的所述特定值的存储地址确定出所述首个存储实体的头部的存储地址,并在所述首个存储实体的头部的存储地址中获取所述首个存储实体的有效数据的位置信息和校验数据的位置信息,并根据所述首个存储实体的有效数据的位置信息和校验数据的位置信息确定所述首个存储实体的存储地址的末端存储地址,并将与所述末端存储地址连续的存储地址作为所述目标存储实体中与所述首个存储实体中连续的下一个存储实体的头部的所述特定值的存储地址,并读取所述下一个存储实体的头部中的特定值。
[0288] 这样可以实现对存储器内所有存储实体进行校验。
[0289] 本实施例中,上述校验命令可以携带有所述目标存储实体的标签信息;读取单元84用于当内存中存储有所述目标存储实体的标签信息以及所述目标存储实体的地址信息时,使用所述标签信息查找所述目标存储实体的地址信息,并在所述地址信息描述的存储地址中读取所述目标存储实体的头部中的所述特定值。
[0290] 这样可以实现直接使用内存中的信息读取到目标存储实体的特定值。
[0291] 该实施方式中,上述校验命令可以携带有所述目标存储实体的标签信息,所述有效数据包括数据和描述所述数据的描述字符,其中,所述描述字符是键Key或者元数据;
[0292] 读取单元84用于当内存中没有存储所述目标存储实体的标签信息或者没有存储所述目标存储实体的地址信息时,读取所述存储器中任一所述特定值,并根据该特定值确定该特定值所属的当前存储实体的头部,在所述当前存储实体的头部中获取所述当前存储实体的描述字符的位置信息,并根据所述当前存储实体的描述字符的位置信息读取所述当前存储实体的描述字符与所述校验命令携带的所述标签信息进行比较,以判断所述当前存储实体是否为所述目标存储实体。
[0293] 这样可以实现随机获取一存储实体与目标存储实体进行比较,当比较为目标存储实体时就可以直接获取该存储实体的特定值。
[0294] 该实施方式中,上述校验命令可以携带有所述目标存储实体的标签信息,所述有效数据包括数据和描述所述数据的描述字符,其中,所述描述字符是键Key或者元数据;
[0295] 所述读取单元84可以用于当内存中没有存储所述目标存储实体的标签信息或者没有存储所述目标存储实体的地址信息时,读取所述存储器存储的首个存储实体的所述特定值,并根据该特定值确定所述首个存储实体的头部,在所述首个存储实体的头部中获取所述首个存储实体的描述字符的位置信息,并根据所述首个存储实体的描述字符的位置信息读取所述首个存储实体的描述字符与所述校验命令携带的所述标签信息进行比较,以判断所述首个存储实体是否为所述目标存储实体;以及用于当判断所述首个存储实体不是所述目标存储实体时,在所述首个存储实体的头部的存储地址中获取所述首个存储实体的数据的位置信息和校验数据的位置信息,并根据所述首个存储实体的数据的位置信息、描述字符的位置信息和校验数据的位置信息确定所述首个存储实体的存储地址的末端存储地址,并将与所述末端存储地址连续的存储地址作为所述目标存储实体中与所述首个存储实体中连续的下一个存储实体的头部的所述特定值的存储地址,并读取所述下一个存储实体的头部中的特定值,并根据所述下一个存储实体的特定值确定所述下一个存储实体的头部,在所述下一个存储实体的头部中获取所述下一个存储实体的描述字符的位置信息,并根据所述下一个存储实体的描述字符的位置信息读取所述下一个存储实体的描述字符与所述校验命令携带的所述标签信息进行比较,以判断所述下一个存储实体是否为所述目标存储实体。
[0296] 这样可以实现按照特定顺序查找目标存储实体,以及获取目标存储实体的特定值。
[0297] 本实施例中,上述有效数据可以包括数据和描述所述数据的描述字符,其中,所述描述字符是Key或者元数据;另外,上述校验数据可以包括如下至少一项:
[0298] 用于校验所述描述字符是否错误的第一校验值以及用于校验所述数据是否错误的第二校验值。
[0299] 该实施方式中,可以通过上述第一校验值和第二校验值实现对描述字符和数据的校验。校验单元83可以用于对所述描述字符执行预设校验运算,以获取第一运算值上述使用所述校验数据对所述有效数据进行校验,并判断所述第一运算值与所述第一校验值是否一致,若不一致,则确定所述描述字符错误。
[0300] 其中,上述预设校验运算可以是异或运算,即上述第一校验值可以对上述目标存储实体的原始描述字符进行异或运算得获取的值。
[0301] 该实施方式中,校验单元83可以用于对所述数据执行所述预设校验运算,以获取第二运算值,并判断所述第二运算值与所述第二校验值是否一致,若不一致,则确定所述数据错误。
[0302] 通过该实施方式可以实现校验目标存储实体的数据或者描述字符是否错误,或者可以校验数据和描述字符是否都错误的情况,以提高校验的精度。
[0303] 本实施例中,如图9所示,所述装置还可以包括:
[0304] 上报单元85,用于当所述校验单元83校验所述有效数据错误时,向修复装置上报错误信息,由所述修复装置从其他存储器中获得所述有效数据的副本,对所述目标存储实体的有效数据进行修复。
[0305] 该实施方式中,可以实现当有效数据错误时,可以向修复装置上报错误信息,由修复装置从其他存储器中获得所述有效数据的副本,对所述目标存储实体的有效数据进行修复。
[0306] 本实施例中,在图7所示的实施例的基础上增加了多种可选的实施方式,且都可以实现提高数据校验效率。
[0307] 请参阅图10,图10是本发明实施例提供的另一种数据校验装置的结构示意图,如图10所示,包括:生成单元101和发送单元102,其中:
[0308] 生成单元101,用于生成对与存储控制器连接的存储器存储的目标存储实体进行校验的校验命令,其中,所述目标存储实体存储在所述存储器连续的地址中,所述目标存储实体包括头部、有效数据和所述有效数据的校验数据,其中,所述头部包括所述有效数据的位置信息和所述校验数据的位置信息。
[0309] 其中,上述校验命令和目标存储实体可以参考图1和图2所示的实施例中的描述,此处不作重复说明。
[0310] 发送单元102,用于向所述存储控制器发送所述生成单元生成所述校验命令,以使根据所述校验命令查找所述目标存储实体,并由所述存储控制器通过所述目标存储实体的头部包括的所述有效数据的位置信息和所述校验数据的位置信息读取所述有效数据和所述校验数据,并使用所述校验数据对所述有效数据进行校验,当值校验失败时,则确定所述有效数据错误。
[0311] 本实施例中,上述头部还可以包括用于校验所述有效数据是否错误的特定值,其中,当所述存储控制器根据所述校验命令读取所述头部中的所述特定值,并使用预设的校验规则对所述特定值进行校验,当所述特定值校验失败时,则确定所述有效数据错误。
[0312] 这样可以实现特定值校验有效数据是否错误。
[0313] 如图11所示,上述装置还可以包括:
[0314] 修复单元103,用于接收所述存储控制器上报的所述有效数据错误的错误信息,并从其他存储器中获得所述有效数据的副本,对所述目标存储实体的有效数据进行修复。
[0315] 通过该步骤就可以实现对目标存储实体的有效数据进行修复,且在修复过程由于不需要进行数据的传输,这样可以提高数据修复的效率。
[0316] 本实施例中,上述校验命令可以携带有用于指示目标存储地址范围的标记信息,其中,所述目标存储实体是所述目标存储地址范围内的所有存储实体。
[0317] 这样该校验命令就可以使用存储控制器根据该标记信息实现对目标存储实体的校验,其获取数据和校验的过程可以参考图2所示的实施例。
[0318] 本实施例中,上述校验命令可以携带有用于指示对所述存储器内存储的所有存储实体进行校验的标记信息,其中,所述目标存储实体是所述存储器内所有存储实体。
[0319] 这样该校验命令就可以使用存储控制器根据该标记信息实现对所述存储器内所有存储实体的校验,其获取数据和校验的过程可以参考图2所示的实施例。
[0320] 本实施例中,上述校验命令可以携带有所述目标存储实体的标签信息。
[0321] 这样该校验命令就可以使用存储控制器根据该标记信息实现对所述目标存储实体的校验,其获取数据和校验的过程可以参考图2所示的实施例。
[0322] 本实施例中,上述有效数据可以包括数据和描述所述数据的描述字符,其中,所述描述字符是Key或者元数据;
[0323] 所述校验数据可以包括如下至少一项:
[0324] 用于校验所述描述字符是否错误的第一校验值以及用于校验所述数据是否错误的第二校验值。
[0325] 这样可以实现分别对数据和描述字符进行校验,且当数据或者描述字符发生错误时,可以只对其错误的数据或者描述字符进行校验,以提高校验的精度和效率。
[0326] 需要说明的是,本实施例的装置可以应用于图2所示的修复装置,本实施例的装置的实施方式都可以参考图2所示的实施例中描述的实施方式。
[0327] 本实施例中,生成对与存储控制器连接的存储器存储的目标存储实体进行校验的校验命令,其中,所述目标存储实体存储在所述存储器连续的地址中,所述目标存储实体包括头部、有效数据和所述有效数据的校验数据,其中,所述头部包括所述有效数据的位置信息和所述校验数据的位置信息;向所述存储控制器发送所述校验命令,以使根据所述校验命令查找所述目标存储实体,并由所述存储控制器通过所述目标存储实体的头部包括的所述有效数据的位置信息和所述校验数据的位置信息读取所述有效数据和所述校验数据,并使用所述校验数据对所述有效数据进行校验,当值校验失败时,则确定所述有效数据错误。这样可以实现提高数据校验效率。
[0328] 请参阅图12,图12是本发明实施例提供的另一种数据校验装置的结构示意图,如图12所示,包括:存储控制器121、网络接口122、存储器123和通信总线124,其中,所述通信总线124用于实现所述存储控制器121、网络接口122和存储器123之间连接通信,所述存储控制器执行所述存储器中存储的程序用于实现以下方法:
[0329] 接收对目标存储实体进行校验的校验命令,其中,所述目标存储实体存储在所述存储器连续的地址中,所述目标存储实体包括头部、有效数据和所述有效数据的校验数据,其中,所述头部包括所述有效数据的位置信息和所述校验数据的位置信息;
[0330] 根据所述校验命令查找所述目标存储实体;
[0331] 通过所述目标存储实体的头部包括的所述有效数据的位置信息和所述校验数据的位置信息读取所述有效数据和所述校验数据,并使用所述校验数据对所述有效数据进行校验,当校验失败时,则确定所述有效数据错误。
[0332] 本实施例中,上述头部还可以包括用于校验所述有效数据是否错误的特定值,在读取所述有效数据和所述校验数据之前,所述存储控制器执行的程序还包括:
[0333] 根据所述校验命令读取所述头部中的所述特定值,并使用预设的校验规则对所述特定值进行校验,当所述特定值校验失败时,则确定所述有效数据错误。
[0334] 本实施例中,上述存储控制器121执行的程序还可以包括:
[0335] 当所述有效数据错误时,向修复装置上报错误信息,由所述修复装置从其他存储器中获得所述有效数据的副本,对所述目标存储实体的有效数据进行修复。
[0336] 本实施例中,上述目标存储实体可以是目标存储地址范围内的所有存储实体:
[0337] 所述校验命令携带有用于指示所述目标存储地址范围的标记信息;
[0338] 存储控制器121执行的根据所述校验命令读取所述头部中的所述特定值的程序,可以包括:
[0339] 根据所述校验命令携带的所述标记信息识别出所述目标存储地址,并确定所述目标存储地址的首个存储地址为所述目标存储实体中首个存储实体的头部中的所述特定值的存储地址,从所述首个存储地址中读取所述首个存储实体的头部中的所述特定值;
[0340] 根据所述首个存储实体的所述特定值的存储地址确定出所述首个存储实体的头部的存储地址,并在所述首个存储实体的头部的存储地址中获取所述首个存储实体的有效数据的位置信息和校验数据的位置信息,并根据所述首个存储实体的有效数据的位置信息和校验数据的位置信息确定所述首个存储实体的存储地址的末端存储地址,并将与所述末端存储地址连续的存储地址作为所述目标存储实体中与所述首个存储实体中连续的下一个存储实体的头部的所述特定值的存储地址,并读取所述下一个存储实体的头部中的特定值。
[0341] 本实施例中,上述目标存储实体可以是所述存储器内所有存储实体:所述校验命令可以携带有用于指示对所述存储器内存储的所有存储实体进行校验的标记信息;
[0342] 存储控制器121执行的根据所述校验命令读取所述头部中的所述特定值的程序,可以包括:
[0343] 根据所述校验命令携带的所述标记信息确定所述存储器中的首个存储地址为所述目标存储实体中首个存储实体的头部中的所述特定值的存储地址,从所述首个存储地址中读取所述首个存储实体的头部中的所述特定值;
[0344] 根据所述首个存储实体的所述特定值的存储地址确定出所述首个存储实体的头部的存储地址,并在所述首个存储实体的头部的存储地址中获取所述首个存储实体的有效数据的位置信息和校验数据的位置信息,并根据所述首个存储实体的有效数据的位置信息和校验数据的位置信息确定所述首个存储实体的存储地址的末端存储地址,并将与所述末端存储地址连续的存储地址作为所述目标存储实体中与所述首个存储实体中连续的下一个存储实体的头部的所述特定值的存储地址,并读取所述下一个存储实体的头部中的特定值。
[0345] 本实施例中,上述校验命令可以携带有所述目标存储实体的标签信息;
[0346] 存储控制器121执行的根据所述校验命令读取所述头部中的所述特定值的程序,可以包括:
[0347] 当内存中存储有所述目标存储实体的标签信息以及所述目标存储实体的地址信息时,使用所述标签信息查找所述目标存储实体的地址信息,并在所述地址信息描述的存储地址中读取所述目标存储实体的头部中的所述特定值。
[0348] 本实施例中,上述校验命令可以携带有所述目标存储实体的标签信息,所述有效数据包括数据和描述所述数据的描述字符,其中,所述描述字符是键Key或者元数据;
[0349] 存储控制器121执行的根据所述校验命令读取所述头部中的所述特定值的程序,可以包括:
[0350] 当内存中没有存储所述目标存储实体的标签信息或者没有存储所述目标存储实体的地址信息时,读取所述存储器中任一所述特定值,并根据该特定值确定该特定值所属的当前存储实体的头部,在所述当前存储实体的头部中获取所述当前存储实体的描述字符的位置信息,并根据所述当前存储实体的描述字符的位置信息读取所述当前存储实体的描述字符与所述校验命令携带的所述标签信息进行比较,以判断所述当前存储实体是否为所述目标存储实体。
[0351] 本实施例中,上述校验命令可以携带有所述目标存储实体的标签信息,所述有效数据包括数据和描述所述数据的描述字符,其中,所述描述字符是键Key或者元数据;
[0352] 存储控制器121执行的根据所述校验命令读取所述头部中的所述特定值的程序,可以包括:
[0353] 当内存中没有存储所述目标存储实体的标签信息或者没有存储所述目标存储实体的地址信息时,读取所述存储器存储的首个存储实体的所述特定值,并根据该特定值确定所述首个存储实体的头部,在所述首个存储实体的头部中获取所述首个存储实体的描述字符的位置信息,并根据所述首个存储实体的描述字符的位置信息读取所述首个存储实体的描述字符与所述校验命令携带的所述标签信息进行比较,以判断所述首个存储实体是否为所述目标存储实体;
[0354] 当判断所述首个存储实体不是所述目标存储实体时,在所述首个存储实体的头部的存储地址中获取所述首个存储实体的数据的位置信息和校验数据的位置信息,并根据所述首个存储实体的数据的位置信息、描述字符的位置信息和校验数据的位置信息确定所述首个存储实体的存储地址的末端存储地址,并将与所述末端存储地址连续的存储地址作为所述目标存储实体中与所述首个存储实体中连续的下一个存储实体的头部的所述特定值的存储地址,并读取所述下一个存储实体的头部中的特定值,并根据所述下一个存储实体的特定值确定所述下一个存储实体的头部,在所述下一个存储实体的头部中获取所述下一个存储实体的描述字符的位置信息,并根据所述下一个存储实体的描述字符的位置信息读取所述下一个存储实体的描述字符与所述校验命令携带的所述标签信息进行比较,以判断所述下一个存储实体是否为所述目标存储实体。
[0355] 本实施例中,上述有效数据可以包括数据和描述所述数据的描述字符,其中,所述描述字符是Key或者元数据;
[0356] 所述校验数据可以包括如下至少一项:
[0357] 用于校验所述描述字符是否错误的第一校验值以及用于校验所述数据是否错误的第二校验值。
[0358] 本实施例中,存储控制器121执行的使用预设的校验规则对所述特定值进行校验的程序,可以包括:
[0359] 判断所述特定值与预先定义的预定值是否匹配,若不匹配,则确定所述描述字符和所述数据都错误。
[0360] 本实施例中,上述装置包括的存储控制器可以是图1和图2所示的实施例中介绍的存储控制器,其实施方式都可以参考图1和图2所示的实施例中介绍的实施方式。
[0361] 本实施例中,接收对目标存储实体进行校验的校验命令,其中,所述目标存储实体存储在所述存储器连续的地址中,所述目标存储实体包括头部、有效数据和所述有效数据的校验数据,其中,所述头部包括所述有效数据的位置信息和所述校验数据的位置信息;根据所述校验命令查找所述目标存储实体;通过所述目标存储实体的头部包括的所述有效数据的位置信息和所述校验数据的位置信息读取所述有效数据和所述校验数据,并使用所述校验数据对所述有效数据进行校验,当校验失败时,则确定所述有效数据错误。这样可以实现在进行数据校验时,不需要对数据进行传输,从而提高数据校验效率。
[0362] 请参阅图13,图13是本发明实施例提供的另一种数据校验装置的结构示意图,如图13所示,包括:处理器131、网络接口132、存储器133和通信总线134,其中,所述通信总线134用于实现所述处理器131、网络接口132和存储器133之间连接通信,所述处理器131执行所述存储器中存储的程序用于实现以下方法:
[0363] 生成对与存储控制器连接的存储器存储的目标存储实体进行校验的校验命令,其中,所述目标存储实体存储在所述存储器连续的地址中,所述目标存储实体包括头部、有效数据和所述有效数据的校验数据,其中,所述头部包括所述有效数据的位置信息和所述校验数据的位置信息;
[0364] 向所述存储控制器发送所述校验命令,以使根据所述校验命令查找所述目标存储实体,并由所述存储控制器通过所述目标存储实体的头部包括的所述有效数据的位置信息和所述校验数据的位置信息读取所述有效数据和所述校验数据,并使用所述校验数据对所述有效数据进行校验,当值校验失败时,则确定所述有效数据错误。
[0365] 本实施例中,上述头部还可以包括用于校验所述有效数据是否错误的特定值,其中,当所述存储控制器根据所述校验命令读取所述头部中的所述特定值,并使用预设的校验规则对所述特定值进行校验,当所述特定值校验失败时,则确定所述有效数据错误。
[0366] 本实施例中,上述处理器131执行的程序还可以包括:
[0367] 接收所述存储控制器上报的所述有效数据错误的错误信息,并从其他存储器中获得所述有效数据的副本,对所述目标存储实体的有效数据进行修复。
[0368] 本实施例中,上述校验命令可以携带有用于指示目标存储地址范围的标记信息,其中,所述目标存储实体是所述目标存储地址范围内的所有存储实体。
[0369] 本实施例中,上述校验命令可以携带有用于指示对所述存储器内存储的所有存储实体进行校验的标记信息,其中,所述目标存储实体是所述存储器内所有存储实体。
[0370] 本实施例中,上述校验命令可以携带有所述目标存储实体的标签信息。
[0371] 本实施例中,上述有效数据可以包括数据和描述所述数据的描述字符,其中,所述描述字符是Key或者元数据;
[0372] 所述校验数据包括如下至少一项:
[0373] 用于校验所述描述字符是否错误的第一校验值以及用于校验所述数据是否错误的第二校验值。
[0374] 需要说明的是,本实施例中的装置可以是如图2所示的实施例中介绍的修复装置,其实施方式都可以参考图2所示的实施例中介绍的实施方式。
[0375] 本实施例中,生成对与存储控制器连接的存储器存储的目标存储实体进行校验的校验命令,其中,所述目标存储实体存储在所述存储器连续的地址中,所述目标存储实体包括头部、有效数据和所述有效数据的校验数据,其中,所述头部包括所述有效数据的位置信息和所述校验数据的位置信息;向所述存储控制器发送所述校验命令,以使根据所述校验命令查找所述目标存储实体,并由所述存储控制器通过所述目标存储实体的头部包括的所述有效数据的位置信息和所述校验数据的位置信息读取所述有效数据和所述校验数据,并使用所述校验数据对所述有效数据进行校验,当值校验失败时,则确定所述有效数据错误。这样可以实现提高数据校验效率。
[0376] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存取存储器(Random Access Memory,简称RAM)等。
[0377] 以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。