一种数据校验的方法、系统、芯片和电子设备与流程

文档序号:29944985发布日期:2022-05-07 15:49阅读:100来源:国知局
一种数据校验的方法、系统、芯片和电子设备与流程

1.本发明涉及数据检测领域,更具体地,特别是指一种数据校验的方法、系统、芯片和电子设备。


背景技术:

2.数据静默损坏是指由于硬件错误、固件或软件bug(漏洞)、存储介质损坏等,或者在数据从数据源传输到存储介质的过程中发生错误等原因引起数据错误,但该错误并不影响数据处理过程因而没有被抛出异常,直到数据被再次使用时才发现数据错误。
3.为了防止存储在磁盘中的数据出现静默损坏,一般会对磁盘进行数据一致性校验。磁盘端的数据一致性校验通常会为每一块数据附加额外的保护信息,一般由三个字段组成,分别是crc(cyclic redundancy check,循环冗余校验)、参考标签和应用标签。循环冗余校验是对数据块按指定的循环冗余算法进行计算,然后将冗余校验值进行保存,这样可以检测数据在传输或者在存储过程中发生的错误。参考标签一般是数据写入磁盘/从磁盘读取的逻辑地址的低位或者是逻辑地址经过其他运算的结果,这样可以防止数据的待读写地址发生错误而引起数据“张冠李戴”。应用标签是协议提供给更高层软件的字段,由应用层软件进行添加和校验。
4.在可靠性要求较高的存储系统中,一般会采用raid(redundant arrays of independent disks,磁盘阵列)对数据进行冗余处理,以实现当其中部分磁盘损坏或者数据块损坏时,可以通过其他的磁盘或数据进行恢复。在吞吐率等性能要求较高的系统中,磁盘阵列的管理和计算一般采用专用的硬件芯片来完成,主机对该芯片下发数据读写命令,由该芯片将主机命令分解至下游各磁盘,并完成磁盘阵列的冗余计算等操作。以下称这种包含硬件磁盘阵列管理和计算芯片的设备为硬磁盘阵列或磁盘阵列加速器。
5.在使用了硬磁盘阵列的系统中,数据静默损坏发生的场景将变得更加复杂,数据不再是从主机直接流向磁盘,而是中间还需要经过磁盘阵列加速器,并完成磁盘阵列的计算等操作,最终再写入磁盘。传统的由磁盘提供的数据保护方法,仅能保证数据在向磁盘传输的过程中和落盘后的数据损坏被检测,这也许可以保护用软件实现的磁盘阵列系统,但对于硬磁盘阵列的数据路径,仅仅是一小部分。
6.目前从公开资料中能获得部分用于磁盘阵列系统的数据一致性保护的方法,最常见的是分别在磁盘阵列加速器和主机以及磁盘阵列加速器与磁盘之间都加入数据一致性保护。具体的方法是,在主机和磁盘阵列加速器之间的数据路径中添加数据一致性检测,一般仍采用上文所述的三个字段。磁盘阵列卡在接收到主机发送的数据和校验字段后,将数据在磁盘阵列加速器中进行循环冗余校验校验并和主机下发的循环冗余校验字段进行比较,以防止数据在传输过程中出现错误;同时对主机下发的命令中的逻辑地址和主机下发的校验字段中的参考标签进行比较,以防止地址在传输过程中发生错误。校验完成后,磁盘阵列加速器提取出数据,完成磁盘阵列冗余数据的计算、磁盘地址的映射等操作,然后重新生成写往磁盘的数据循环冗余校验、参考标签等数据,并发往磁盘。从磁盘读取数据则用相
反的操作,首先对磁盘的数据计算循环冗余校验并和保存的循环冗余校验字段进行比较,正确后将该数据提取出来并发往主机。
7.上述方法的本质是将数据一致性检查分成了主机到加速器和加速器到磁盘两段路径进行操作,每一段路径都进行了完整的检查。虽然该检查看似覆盖了整个主机到磁盘的数据路径,并且每一段路径确实能防止静默损坏,但是,当错误发生在两段之间,例如数据在到达加速器时一致性校验正确,但数据在加速器内部的存储器或者总线传输的时候发生错误,此时,对于磁盘来说,由于它无法检测数据循环冗余校验生成之间发生的错误,因此错误的数据会被保存下来并无法被发现。产生这种错误的根本原因在于分段检测的两段并不能保证覆盖整个路径。
8.另外,由于磁盘阵列系统本身包含冗余的纠错信息,它的重要意义在于当错误发生时,可以放弃错误的数据,而仅使用剩余的正确数据恢复出所需要的数据。因此,数据一致性的检测在磁盘阵列系统中不能仅做到检错,而是要能配合纠错的功能,将最终的正确数据返回给用户。目前传统方法,也并不能提供一个完整的机制来实现上述功能。例如上述分段检测的方式,即使增加了其他检测机制,例如应用端对加速器返回的数据进行检测可以发现错误,但是如果无法获知错误发生的位置,仍然无法通过磁盘阵列重新计算出正确数据,这无疑降低了磁盘阵列作为冗余系统的可靠性。


技术实现要素:

9.有鉴于此,本发明实施例的目的在于提出一种数据校验的方法、系统、计算机设备及计算机可读存储介质,本发明提供了一种从主机端到磁盘的全栈数据保护的方法,对数据全路径的静默损坏进行检测,避免传统方法出现无法检测的盲区;与磁盘阵列系统进行有机结合,在检测并上报错误的同时可以恢复数据并对恢复的数据进行再次检测,向系统提供正确的数据,避免上层软件需要过多的干预;先对磁盘阵列的冗余校验数据进行计算,在对校验数据进行一致性保护字段的计算,可以对冗余数据的错误进行快速的检测和定位。
10.基于上述目的,本发明实施例的一方面提供了一种数据校验的方法,包括如下步骤:主机向加速器下发输入输出命令;对所述输入输出命令的每一个数据块生成一段对应的保护信息字段,并在所述保护信息字段中加入对应数据块的参考标签和循环冗余校验值;响应于输入输出命令和数据到达加速器,对所述参考标签和循环冗余校验值进行校验;响应于校验均通过且主机读取磁盘,根据所述输入输出命令中的逻辑地址计算出每个待读取数据块的参考标签,并与所述待读取数据块中保护信息字段中的参考标签进行校验,并根据从所述磁盘中读取的数据进行循环冗余校验值的校验;以及响应于校验均通过,将参考标签和循环冗余校验值放入所述待读取数据块的保护信息字段中。
11.在一些实施方式中,所述在所述保护信息字段中加入对应数据块的参考标签和循环冗余校验值包括:使用加速器逻辑地址或磁盘逻辑地址生成数据块的参考标签,并对每一个数据块进行冗余校验计算得到循环冗余校验值。
12.在一些实施方式中,所述对所述参考标签和循环冗余校验值进行校验包括:响应于是使用加速器逻辑地址得到的参考标签,获取所述输入输出命令的起始逻辑地址,并根据所述起始逻辑地址确定每个数据块的逻辑地址;使用所述每个数据块的逻辑地址生成期
望的参考标签,并将所述期望的参考标签与所述保护信息字段中的参考标签进行比对;以及响应于所有数据块均比对成功,对所述每个数据块的逻辑地址进行重映射,并根据重映射后的逻辑地址生成新的参考标签以写入所述保护信息字段。
13.在一些实施方式中,所述对所述参考标签和循环冗余校验值进行校验包括:响应于是使用磁盘逻辑地址得到的参考标签,将所述期望的参考标签与重映射后的逻辑地址生成新的参考标签进行比对;以及响应于所有数据块均比对成功,将所述新的参考标签写入所述保护信息字段。
14.在一些实施方式中,所述方法还包括:计算出冗余磁盘的数据部分,并对所述数据部分进行循环冗余校验计算以生成冗余数据循环冗余校验值写入冗余磁盘。
15.在一些实施方式中,所述方法还包括:将期望的应用标签放入读命令,并利用所述应用标签与从磁盘数据保护信息字段中读取到的应用标签进行比较;以及响应于两者相等,则认为应用标签校验通过。
16.在一些实施方式中,所述方法还包括:响应于主机读取异常磁盘,判断冗余磁盘和其他参与恢复的数据磁盘的数据是否正确,并校验所述冗余磁盘和所述数据磁盘的参考标签;响应于所述冗余磁盘和所述数据磁盘的数据或参考标签存在异常,进行磁盘阵列计算以还原数据;以及对还原数据计算循环冗余校验值,并将所述循环冗余校验值保存到待返回的数据块的保护信息字段中。
17.本发明实施例的另一方面,提供了一种数据校验的系统,包括:下发模块,配置用于主机向加速器下发输入输出命令;保护模块,配置用于对所述输入输出命令的每一个数据块生成一段对应的保护信息字段,并在所述保护信息字段中加入对应数据块的参考标签和循环冗余校验值;第一校验模块,配置用于响应于输入输出命令和数据到达加速器,对所述参考标签和循环冗余校验值进行校验;第二校验模块,配置用于响应于校验均通过且主机读取磁盘,根据所述输入输出命令中的逻辑地址计算出每个待读取数据块的参考标签,并与所述待读取数据块中保护信息字段中的参考标签进行校验,并根据从所述磁盘中读取的数据进行循环冗余校验值的校验;以及执行模块,配置用于响应于校验均通过,将参考标签和循环冗余校验值放入所述待读取数据块的保护信息字段中。
18.本发明实施例的又一方面,还提供了一种芯片,包括数字逻辑电路,所述数字逻辑电路工作时实现如上述任一项实施例所述的数据调度方法的步骤。
19.本发明实施例的再一方面,还提供了一种电子设备,包括上述所述的芯片。
20.本发明具有以下有益技术效果:提供了一种从主机端到磁盘的全栈数据保护的方法,对数据全路径的静默损坏进行检测,避免传统方法出现无法检测的盲区;与磁盘阵列系统进行有机结合,在检测并上报错误的同时可以恢复数据并对恢复的数据进行再次检测,向系统提供正确的数据,避免上层软件需要过多的干预;先对磁盘阵列的冗余校验数据进行计算,在对校验数据进行一致性保护字段的计算,可以对冗余数据的错误进行快速的检测和定位。
附图说明
21.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本
发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
22.图1为本发明提供的数据校验的方法的实施例的示意图;
23.图2为本发明实施例中主机写入过程的参考标签的处理流程图;
24.图3为本发明实施例中生成冗余数据的示意图;
25.图4为本发明实施例中参考标签的读取校验流程图;
26.图5为本发明提供的数据校验的系统的实施例的示意图;
27.图6为本发明提供的数据校验的芯片的实施例的硬件结构示意图;
28.图7为本发明提供的数据校验的电子设备的实施例的示意图。
具体实施方式
29.为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
30.需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。
31.本发明实施例的第一个方面,提出了一种数据校验的方法的实施例。图1示出的是本发明提供的数据校验的方法的实施例的示意图。如图1所示,本发明实施例包括如下步骤:
32.s1、主机向加速器下发输入输出命令;
33.s2、对所述输入输出命令的每一个数据块生成一段对应的保护信息字段,并在所述保护信息字段中加入对应数据块的参考标签和循环冗余校验值;
34.s3、响应于输入输出命令和数据到达加速器,对所述参考标签和循环冗余校验值进行校验;
35.s4、响应于校验均通过且主机读取磁盘,根据所述输入输出命令中的逻辑地址计算出每个待读取数据块的参考标签,并与所述待读取数据块中保护信息字段中的参考标签进行校验,并根据从所述磁盘中读取的数据进行循环冗余校验值的校验;以及
36.s5、响应于校验均通过,将参考标签和循环冗余校验值放入所述待读取数据块的保护信息字段中。
37.主机向加速器下发输入输出命令,对输入输出命令的每一个数据块生成一段对应的保护信息字段,并在所述保护信息字段中加入对应数据块的参考标签和循环冗余校验值。主机向加速器下发的io(input/output,输入输出)写命令包含n个数据块,每一个数据块主机需要为它生成一段保护信息字段。保护信息字段可以包含多种内容,但一般都包含循环冗余校验校验、参考标签两部分内容,部分还包含由更高层应用程序生成的应用标签信息。
38.在一些实施方式中,所述在所述保护信息字段中加入对应数据块的参考标签和循环冗余校验值包括:使用加速器逻辑地址或磁盘逻辑地址生成数据块的参考标签,并对每一个数据块进行冗余校验计算得到循环冗余校验值。
39.为防止主机下发的输入输出命令中的逻辑地址发生传输或其他错误引起数据被
写入错误的位置,主机需要在每一个数据块的保护信息中添加参考标签字段。参考标签由该数据块的逻辑地址运算得到,逻辑地址根据加速器的应用场景可以有不同的定义,一种是磁盘的磁盘阵列由加速器完全管理,主机只能看到加速器提供的虚拟磁盘的逻辑地址,以下简称加速器逻辑地址;另一种是主机参与磁盘磁盘阵列管理,能获知数据块在磁盘阵列中的映射关系,该场景下可以考虑直接使用该数据块最终在磁盘中的逻辑地址以实现更好的数据保护,以下简称磁盘逻辑地址。
40.如果使用加速器逻辑地址,则数据块1使用输入输出命令中的逻辑地址(即起始逻辑地址),数据块2为数据块1的逻辑地址+1,并以此类推,然后主机再将每个数据块的逻辑地址进行运算得到参考标签,一般可以简单采用取该逻辑地址的低位部分作为参考标签。
41.如果使用磁盘逻辑地址,则主机首先根据输入输出命令中的逻辑地址和磁盘阵列的参数等,对每个数据块进行映射,确定该数据块的目标磁盘和磁盘的逻辑地址,再将磁盘的逻辑地址进行运算得到参考标签,一般也可以采用取低位的简单方法。
42.响应于输入输出命令和数据到达加速器,对所述参考标签和循环冗余校验值进行校验。
43.在一些实施方式中,所述对所述参考标签和循环冗余校验值进行校验包括:响应于是使用加速器逻辑地址得到的参考标签,获取所述输入输出命令的起始逻辑地址,并根据所述起始逻辑地址确定每个数据块的逻辑地址;使用所述每个数据块的逻辑地址生成期望的参考标签,并将所述期望的参考标签与所述保护信息字段中的参考标签进行比对;以及响应于所有数据块均比对成功,对所述每个数据块的逻辑地址进行重映射,并根据重映射后的逻辑地址生成新的参考标签以写入所述保护信息字段。
44.如果使用加速器逻辑地址,加速器首先从输入输出命令中获取起始的逻辑地址,然后用与主机端相同的规则生成数据块的逻辑地址,用该逻辑地址生成期望的参考标签,然后与数据块保护信息中的参考标签字段进行比较,如果不相同,则整个输入输出的后续操作都会被跳过,并且向主机报告该错误。如果所有数据块的参考标签校验和其他字段校验都通过,则加速器接收该输入输出命令和相关数据。然后加速卡将主机输入输出命令的逻辑地址根据磁盘阵列参数计算出每个磁盘的输入输出命令的逻辑地址,这个步骤以下称为重映射。同时将每个数据块的逻辑地址也用相同的重映射规则生成,然后生成参考标签放入每个待写入磁盘的数据块的保护信息中。如图2所示。
45.在一些实施方式中,所述对所述参考标签和循环冗余校验值进行校验包括:响应于是使用磁盘逻辑地址得到的参考标签,将所述期望的参考标签与重映射后的逻辑地址生成新的参考标签进行比对;以及响应于所有数据块均比对成功,将所述新的参考标签写入所述保护信息字段。
46.如果使用磁盘逻辑地址,则流程稍有不同,加速器会使用数据块逻辑地址重映射之后的参考标签代替数据块逻辑地址的参考标签参与校验。因此,校验所覆盖的路径比使用加速器逻辑地址更长。
47.本发明实施例要求磁盘对参考标签字段进行校验,当磁盘根据输入输出命令计算的参考标签与数据块保护信息中的参考标签不一致时,需要向加速器报告错误,加速器将重新下发命令。
48.除参考标签外,主机在下发命令时,还需要对每一个数据块进行冗余校验计算得
到循环冗余校验值并添加到该数据块对应的保护信息的循环冗余校验字段中。加速器在接收每一个数据块的同时,也需要对它进行相同的循环冗余校验计算,并在数据块接收完成后,将循环冗余校验的计算值与接收到的数据块保护信息中的循环冗余校验值进行校验。当校验失败时,可尝试再次从主机获取该数据块,也可以选择终止命令并向主机报告该错误。如果校验通过,该循环冗余校验的值会被放入待写入磁盘的数据块的保护信息中。
49.主机还可以选择将由高层应用程序提供的应用标签放入保护信息。该字段可以同时包含在输入输出命令中,由加速器进行校验,这个是本发明默认的做法。也可以在写入过程中在加速器处忽略该字段的校验,而将该字段直接写入磁盘的保护信息以及磁盘的输入输出命令。
50.作为磁盘阵列系统,加速器需要为冗余磁盘生成冗余校验数据,该数据将在某个数据磁盘或者某个数据块发生损坏时,用冗余校验数据和正确的磁盘数据计算出损坏数据的正确值。根据磁盘阵列的实现方式不同,冗余校验数据可能并不存放在同一块磁盘中,而是交织存放在磁盘阵列组的所有磁盘中,因此下文表述的冗余磁盘的数据是代表在当前数据条带中,用于存放冗余校验数据的磁盘,而不是固定的某个磁盘。此外,一个数据条带中,冗余磁盘的个数大于1,例如常见的raid6使用2个冗余磁盘。下文的表述以一个冗余磁盘为例,其余的冗余磁盘可依相同的方法进行,冗余磁盘的数量并不影响本发明实施例的实施。
51.如图3所示,主机写入的同一条带的若干数据块、这些数据块对应的磁盘中的当前数据、剩余磁盘中的当前数据以及冗余磁盘中的当前数据中的某一部分需要参与磁盘阵列的冗余计算。参与计算的数据块对应的应用标签经过同样的冗余校验计算生成应用标签冗余字段写入冗余磁盘数据保护信息,参考标签也经过同样的冗余校验计算生成参考标签冗余写入保护信息。
52.在一些实施方式中,所述方法还包括:计算出冗余磁盘的数据部分,并对所述数据部分进行循环冗余校验计算以生成冗余数据循环冗余校验值写入冗余磁盘。冗余磁盘的循环冗余校验字段的生成与上述两个标签字段不同,加速器需要先计算出冗余磁盘的数据部分,再对该数据部分进行循环冗余校验计算,生成冗余数据循环冗余校验写入冗余磁盘。这个是本发明实施例区别于部分传统方法的点,常规的认知一般认为冗余磁盘的所有内容应该都是数据磁盘的冗余校验计算之后的值,但是这种常规方法会带来一个问题,当冗余磁盘数量大于1时,如果其中一块冗余磁盘的数据错误,磁盘阵列系统在写入、读取和巡检等过程中可能发现校验不匹配,但无法快速定位错误。冗余磁盘应当开启循环冗余校验校验和应用标签校验,写入该磁盘输入输出命令的期望应用标签值为应用标签冗余。参考标签校验应当被关闭。
53.响应于校验均通过且主机读取磁盘,根据所述输入输出命令中的逻辑地址计算出每个待读取数据块的参考标签,并与所述待读取数据块中保护信息字段中的参考标签进行校验,并根据从所述磁盘中读取的数据进行循环冗余校验值的校验。
54.如果主机读取的数据位于被加速器认为的正常磁盘上,加速器需要采用下面的方法进行校验:
55.对于循环冗余校验字段,加速器将从磁盘读到的数据进行循环冗余校验运算,然后将结果与从磁盘的数据保护信息中读到的循环冗余校验字段进行比较,如果相等,则认为数据区正常,否则,加速器将采用读损坏磁盘的流程进行后续处理。
56.在一些实施方式中,所述方法还包括:将期望的应用标签放入读命令,并利用所述应用标签与从磁盘数据保护信息字段中读取到的应用标签进行比较;以及响应于两者相等,则认为应用标签校验通过。对于应用标签,主机首先需要将期望的应用标签放入读命令,然后加速器用该值与从磁盘数据保护信息中读取到的应用标签字段进行比较,如果相等,则认为应用标签校验通过,否则,加速器将采用读损坏磁盘的流程进行处理。
57.对于参考标签,首先加速器将主机输入输出命令中的逻辑地址经过重映射计算对应到每个磁盘操作的逻辑地址,并写入磁盘的输入输出读命令中。然后,加速器将输入输出命令中的逻辑地址作为起始逻辑地址计算出每个数据块的逻辑地址,这些逻辑地址分别进行重映射,对应到不同的磁盘的不同数据块,再生成每个数据块的期望参考标签。
58.磁盘在收到输入输出命令后,将用命令中的逻辑地址计算出每个待读取数据块的参考标签,并与待读取数据中保护信息内的参考标签字段进行校验,以防止从错误的位置读取。
59.加速器对每一个读取到的数据块,将用期望参考标签和数据块保护信息中的参考标签进行比较,如果不通过,则采用读取损坏磁盘的流程进行处理。如果加速器的所有校验都能通过,则加速器将应用标签、参考标签和循环冗余校验放入待返回的保护信息中。其中,如果主机使用的是加速器逻辑地址,则加速器采用数据块逻辑地址生成参考标签,如图4;否则,采用数据块逻辑地址重映射后的参考标签。主机在收到数据和数据的保护信息后,也需要采用同样的规则进行保护信息的校验。
60.响应于校验均通过,将参考标签和循环冗余校验值放入所述待读取数据块的保护信息字段中。
61.在一些实施方式中,所述方法还包括:响应于主机读取异常磁盘,判断冗余磁盘和其他参与恢复的数据磁盘的数据是否正确,并校验所述冗余磁盘和所述数据磁盘的参考标签;响应于所述冗余磁盘和所述数据磁盘的数据或参考标签存在异常,进行磁盘阵列计算以还原数据;以及对还原数据计算循环冗余校验值,并将所述循环冗余校验值保存到待返回的数据块的保护信息字段中。
62.当主机读取的数据位于损坏磁盘,或者在正常读取过程中发现磁盘损坏,则采取下述方法进行数据恢复和校验:
63.首先确认冗余磁盘的数据正确性。加速器读取冗余磁盘的数据区进行循环冗余校验计算,并用该值与保护区的循环冗余校验字段进行比较,如果相等则认为冗余磁盘的数据区没问题。对比传统方法,需要首先用冗余数据和循环冗余校验的冗余校验,先经过磁盘阵列计算还原损坏的数据和损坏数据的循环冗余校验,然后再对恢复的数据进行循环冗余校验计算,与恢复的循环冗余校验进行对比,才能发现保护盘是否正确,可以看出本发明的方法可以快速定位,如果当前选择的冗余磁盘数据也被损坏,可以更换冗余磁盘(当冗余磁盘大于1时),避免无效的磁盘阵列计算过程。然后需要用相同的方法确认其余参与恢复的数据磁盘的数据正确性。对于数据磁盘和冗余磁盘,在读取数据区时,都按照读正常磁盘的过程完成对参考标签的校验。
64.如果所有参与恢复的磁盘的数据和参考标签部分正确,则进行磁盘阵列计算还原数据,并对已还原的数据计算循环冗余校验,并且保存在待返回的保护字段中。由于每个数据都经过循环冗余校验校验,因此可以确保还原的数据的正确性。
65.然后加速卡用数据磁盘的应用标签和冗余磁盘的应用标签冗余进行磁盘阵列计算还原出损坏磁盘的应用标签,如果该标签与主机下发的输入输出命令中的期望应用标签相同,则校验通过,否则,将更换冗余磁盘重新恢复数据(当冗余磁盘大于1时),或者向主机报告错误。
66.然后加速卡用数据磁盘的参考标签和冗余磁盘的参考标签冗余进行磁盘阵列计算还原出损坏磁盘的参考标签,并用与读正常磁盘流程相同的操作计算出期望参考标签进行比较,如果相同,则校验通过,否则,将更换冗余磁盘重新恢复数据(当冗余磁盘大于1时),或者向主机报告错误。
67.如果所有校验通过,则将恢复的数据返回给主机,并且将计算生成的循环冗余校验、还原后的应用标签和参考标签返回给主机。主机侧将采用与读正常磁盘相同的过程对返回数据的保护信息进行校验。
68.本发明提供了一种从主机端到磁盘的全栈数据保护的方法,对数据全路径的静默损坏进行检测,避免传统方法出现无法检测的盲区;与磁盘阵列系统进行有机结合,在检测并上报错误的同时可以恢复数据并对恢复的数据进行再次检测,向系统提供正确的数据,避免上层软件需要过多的干预;先对磁盘阵列的冗余校验数据进行计算,在对校验数据进行一致性保护字段的计算,可以对冗余数据的错误进行快速的检测和定位。
69.需要特别指出的是,上述数据校验的方法的各个实施例中的各个步骤均可以相互交叉、替换、增加、删减,因此,这些合理的排列组合变换之于数据校验的方法也应当属于本发明的保护范围,并且不应将本发明的保护范围局限在实施例之上。
70.基于上述目的,本发明实施例的第二个方面,提出了一种数据校验的系统。如图5所示,系统200包括如下模块:下发模块,配置用于主机向加速器下发输入输出命令;保护模块,配置用于对所述输入输出命令的每一个数据块生成一段对应的保护信息字段,并在所述保护信息字段中加入对应数据块的参考标签和循环冗余校验值;第一校验模块,配置用于响应于输入输出命令和数据到达加速器,对所述参考标签和循环冗余校验值进行校验;第二校验模块,配置用于响应于校验均通过且主机读取磁盘,根据所述输入输出命令中的逻辑地址计算出每个待读取数据块的参考标签,并与所述待读取数据块中保护信息字段中的参考标签进行校验,并根据从所述磁盘中读取的数据进行循环冗余校验值的校验;以及执行模块,配置用于响应于校验均通过,将参考标签和循环冗余校验值放入所述待读取数据块的保护信息字段中。
71.在一些实施方式中,所述保护模块配置用于:使用加速器逻辑地址或磁盘逻辑地址生成数据块的参考标签,并对每一个数据块进行冗余校验计算得到循环冗余校验值。
72.在一些实施方式中,所述第一校验模块配置用于:响应于是使用加速器逻辑地址得到的参考标签,获取所述输入输出命令的起始逻辑地址,并根据所述起始逻辑地址确定每个数据块的逻辑地址;使用所述每个数据块的逻辑地址生成期望的参考标签,并将所述期望的参考标签与所述保护信息字段中的参考标签进行比对;以及响应于所有数据块均比对成功,对所述每个数据块的逻辑地址进行重映射,并根据重映射后的逻辑地址生成新的参考标签以写入所述保护信息字段。
73.在一些实施方式中,所述第一校验模块配置用于:响应于是使用磁盘逻辑地址得到的参考标签,将所述期望的参考标签与重映射后的逻辑地址生成新的参考标签进行比
对;以及响应于所有数据块均比对成功,将所述新的参考标签写入所述保护信息字段。
74.在一些实施方式中,所述系统还包括计算模块,配置用于:计算出冗余磁盘的数据部分,并对所述数据部分进行循环冗余校验计算以生成冗余数据循环冗余校验值写入冗余磁盘。
75.在一些实施方式中,所述系统还包括第三校验模块,配置用于:将期望的应用标签放入读命令,并利用所述应用标签与从磁盘数据保护信息字段中读取到的应用标签进行比较;以及响应于两者相等,则认为应用标签校验通过。
76.在一些实施方式中,所述系统还包括判断模块,配置用于:响应于主机读取异常磁盘,判断冗余磁盘和其他参与恢复的数据磁盘的数据是否正确,并校验所述冗余磁盘和所述数据磁盘的参考标签;响应于所述冗余磁盘和所述数据磁盘的数据或参考标签存在异常,进行磁盘阵列计算以还原数据;以及对还原数据计算循环冗余校验值,并将所述循环冗余校验值保存到待返回的数据块的保护信息字段中。
77.基于上述目的,本发明实施例的第三个方面,提出了一种芯片,包括数字逻辑电路,所述逻辑电路工作时实现如下步骤:s1、为主机向加速器下发的输入输出命令的每一个数据块生成一段对应的保护信息字段,并在所述保护信息字段中加入对应数据块的参考标签和循环冗余校验值;s2、响应于输入输出命令和数据到达加速器,对所述参考标签和循环冗余校验值进行校验;s3、响应于校验均通过且主机读取磁盘,根据所述输入输出命令中的逻辑地址计算出每个待读取数据块的参考标签,并与所述待读取数据块中保护信息字段中的参考标签进行校验,并根据从所述磁盘中读取的数据进行循环冗余校验值的校验;以及s4、响应于校验均通过,将参考标签和循环冗余校验值放入所述待读取数据块的保护信息字段中。
78.在一些实施方式中,所述在所述保护信息字段中加入对应数据块的参考标签和循环冗余校验值包括:使用加速器逻辑地址或磁盘逻辑地址生成数据块的参考标签,并对每一个数据块进行冗余校验计算得到循环冗余校验值。
79.在一些实施方式中,所述对所述参考标签和循环冗余校验值进行校验包括:响应于是使用加速器逻辑地址得到的参考标签,获取所述输入输出命令的起始逻辑地址,并根据所述起始逻辑地址确定每个数据块的逻辑地址;使用所述每个数据块的逻辑地址生成期望的参考标签,并将所述期望的参考标签与所述保护信息字段中的参考标签进行比对;以及响应于所有数据块均比对成功,对所述每个数据块的逻辑地址进行重映射,并根据重映射后的逻辑地址生成新的参考标签以写入所述保护信息字段。
80.在一些实施方式中,所述对所述参考标签和循环冗余校验值进行校验包括:响应于是使用磁盘逻辑地址得到的参考标签,将所述期望的参考标签与重映射后的逻辑地址生成新的参考标签进行比对;以及响应于所有数据块均比对成功,将所述新的参考标签写入所述保护信息字段。
81.在一些实施方式中,所述步骤还包括:计算出冗余磁盘的数据部分,并对所述数据部分进行循环冗余校验计算以生成冗余数据循环冗余校验值写入冗余磁盘。
82.在一些实施方式中,所述步骤还包括:将期望的应用标签放入读命令,并利用所述应用标签与从磁盘数据保护信息字段中读取到的应用标签进行比较;以及响应于两者相等,则认为应用标签校验通过。
83.在一些实施方式中,所述步骤还包括:响应于主机读取异常磁盘,判断冗余磁盘和其他参与恢复的数据磁盘的数据是否正确,并校验所述冗余磁盘和所述数据磁盘的参考标签;响应于所述冗余磁盘和所述数据磁盘的数据或参考标签存在异常,进行磁盘阵列计算以还原数据;以及对还原数据计算循环冗余校验值,并将所述循环冗余校验值保存到待返回的数据块的保护信息字段中。
84.如图6所示,为本发明提供的上述数据校验的芯片的一个实施例的硬件结构示意图。
85.以如图6所示的芯片301为例,在该芯片中包括一个数字逻辑电路310。
86.执行上述数据校验的方法的芯片的任何一个实施例,可以达到与之对应的前述任意方法实施例相同或者相类似的效果。
87.本发明还提供了一种电子设备,如图7所示,为本发明提供的上述数据校验的电子设备的一个实施例的示意图。以如图7所示的电子设备为例,电子设备401包括上述芯片301。
88.最后需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关硬件来完成,数据校验的方法的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,程序的存储介质可为磁碟、光盘、只读存储记忆体(rom)或随机存储记忆体(ram)等。上述计算机程序的实施例,可以达到与之对应的前述任意方法实施例相同或者相类似的效果。
89.以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。
90.应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。
91.上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。
92.本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
93.所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1