一种元数据校验方法、系统、计算机设备及存储介质转让专利

申请号 : CN202211455849.9

文献号 : CN115509800B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 费卫宏白建王萌萌

申请人 : 苏州浪潮智能科技有限公司

摘要 :

本发明涉及存储技术领域,尤其公开了一种元数据校验方法、系统、计算机设备及存储介质,方法包括:响应于硬盘上电,对所述硬盘的所有元数据进行分块,并计算每块元数据的一级初始校验值,得到一级初始校验集;对所述一级初始校验集进行计算得到二级初始校验集;开启第一定时器,并设置离散校验周期;按所述离散校验周期触发元数据离散校验逻辑以基于所述二级初始校验集对所述元数据进行离散校验;响应于所述元数据的离散校验通过,则触发元数据巡检逻辑以基于所述一级初始校验集对所述元数据进行巡检。通过本发明的方案,实现了在硬盘运行过程中对元数据的检查,能够及时发现异常元数据,以此来保证数据的完备性和正确性。

权利要求 :

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

响应于硬盘上电,对所述硬盘的所有元数据进行分块,并计算每块元数据的一级初始校验值,得到一级初始校验集,并将所述一级初始校验集保存在全局数组中,其中,全局数组下标表示对应块元数据,全局数组值表示对应块元数据的一级初始校验值;

对所述一级初始校验集进行计算得到二级初始校验集;

开启第一定时器,并设置离散校验周期;

按所述离散校验周期触发元数据离散校验逻辑,并在触发所述元数据离散校验逻辑后,关闭所述第一定时器,并基于所述元数据离散校验逻辑在每个所述离散校验周期内基于所述二级初始校验集对所述元数据进行离散校验;

响应于所述元数据的离散校验通过,则触发元数据巡检逻辑,并基于所述元数据巡检逻辑执行以下步骤:开启第二定时器,并设置巡检周期;

按所述巡检周期与划分的块依次获取所述硬盘当前的元数据,并依次计算每块元数据的一级校验值;

在每计算完一块元数据的一级校验值后,将计算得到的一级校验值与所述初始校验集中对应的一级初始校验值进行对比;

若是对比结果一致,则返回按巡检周期依次计算每块元数据的一级校验值的步骤以计算下一块元数据的一级校验值;

响应于所有块的元数据校验完成,则关闭所述第二定时器;

在关闭所述第二定时器后,开启所述第一定时器,并退出所述元数据巡检逻辑;

在所述硬盘运行过程中,响应于有元数据发生更新,则基于更新后的元数据重新计算一级初始校验值,并基于重新计算的一级初始校验值更新所述一级初始校验集与所述二级初始校验集。

2.根据权利要求1所述的方法,其特征在于,还包括:响应于所述元数据的离散校验未通过,向主机通报发生元数据异步事件,并禁用所述元数据巡检逻辑。

3.根据权利要求1所述的方法,其特征在于,还包括:若是对比结果不一致,则关闭所述第二定时器,并禁用所述元数据巡检逻辑。

4.根据权利要求1所述的方法,其特征在于,还包括:若是对比结果不一致,则向主机通报发生元数据异步事件,并关闭所述第二定时器以及禁用所述元数据巡检逻辑。

5.根据权利要求1所述的方法,其特征在于,还包括:若是对比结果不一致,则将当前时刻的二级校验集与所述二级初始校验集不一致的信息记录到日志,并关闭所述第二定时器以及禁用所述元数据巡检逻辑。

6.根据权利要求1所述的方法,其特征在于,在每个所述离散校验周期内基于所述二级初始校验集对所述元数据进行离散校验包括:获取所述硬盘运行的当前时刻的元数据的一级校验集,并对当前时刻的一级校验集进行计算得到当前时刻的二级校验集;

对比所述当前时刻的二级校验集与所述二级初始校验集;

若是所述当前时刻的二级校验集与所述二级初始校验集一致,则所述元数据的离散校验通过。

7.根据权利要求6所述的方法,其特征在于,还包括:若是所述当前时刻的二级校验集与所述二级初始校验集不一致,则所述元数据的离散校验未通过。

8.根据权利要求6所述的方法,其特征在于,还包括:响应于所述元数据的离散校验未通过,将所述当前时刻的二级校验集与所述二级初始校验集不一致的信息记录到日志。

9.根据权利要求6所述的方法,其特征在于,还包括:响应于所述元数据的离散校验未通过,向主机通报发生元数据异步事件,并将所述当前时刻的二级校验集与所述二级初始校验集不一致的信息记录到日志,并禁用所述元数据巡检逻辑。

10.根据权利要求1所述的方法,其特征在于,计算每块元数据的一级初始校验值包括:基于循环冗余校验计算每块元数据的一级初始校验值。

11.根据权利要求1所述的方法,其特征在于,对所述一级初始校验集进行计算得到二级初始校验集包括:对所述一级初始校验集进行循环冗余校验计算得到二级初始校验集。

12.一种元数据校验系统,其特征在于,包括:

第一计算模块,所述第一计算模块配置为响应于硬盘上电,对所述硬盘的所有元数据进行分块,并计算每块元数据的一级初始校验值,得到一级初始校验集,并将所述一级初始校验集保存在全局数组中;

第二计算模块,所述第二计算模块配置为对所述一级初始校验集进行计算得到二级初始校验集;

开启模块,所述开启模块配置为开启第一定时器,并设置离散校验周期;

离散校验模块,所述离散校验模块配置为按所述离散校验周期触发元数据离散校验逻辑,并在触发所述元数据离散校验逻辑后,关闭所述第一定时器,并基于所述元数据离散校验逻辑在每个所述离散校验周期内基于所述二级初始校验集对所述元数据进行离散校验;

巡检模块,所述巡检模块配置为响应于所述元数据的离散校验通过,则触发元数据巡检逻辑,其中,所述元数据巡检逻辑配置为:开启第二定时器,并设置巡检周期;

按所述巡检周期与划分的块依次获取所述硬盘当前的元数据,并依次计算每块元数据的一级校验值;

在每计算完一块元数据的一级校验值后,将计算得到的一级校验值与所述初始校验集中对应的一级初始校验值进行对比;

若是对比结果一致,则返回按巡检周期依次计算每块元数据的一级校验值的步骤以计算下一块元数据的一级校验值;

响应于所有块的元数据校验完成,则关闭所述第二定时器;

在关闭所述第二定时器后,开启所述第一定时器,并退出所述元数据巡检逻辑;

所述第一计算模块配置为在所述硬盘运行过程中,响应于有元数据发生更新,则基于更新后的元数据重新计算一级初始校验值,并基于重新计算的一级初始校验值更新所述一级初始校验集与所述二级初始校验集。

13.一种计算机设备,包括:

至少一个处理器;以及

存储器,所述存储器存储有可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时执行如权利要求1至11任意一项所述的方法的步骤。

14.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时执行如权利要求1至11任意一项所述的方法的步骤。

说明书 :

一种元数据校验方法、系统、计算机设备及存储介质

技术领域

[0001] 本发明涉及存储技术领域,尤其涉及一种元数据校验方法、系统、计算机设备及存储介质。

背景技术

[0002] 在SSD(固态硬盘(Solid State Disk或Solid State Drive,简称SSD))设备运行过程中,对于需要频繁访问的关键数据,都会加载到DRAM(Dynamic Random Access Memory,动态随机存取存储器DRAM)中,需要用到的时候,直接访问内存,十分快速便捷。当前SSD设备中,读写流程中元数据的数据量比较大且在设备运行中,一直存放在内存中。随着SSD设备的长时间稳定运行,SSD设备温度持续处于较高的状态,此时从内存中读取元数据,会存在以下问题:
[0003] 在软件上,由于软件误操作,或是地址越界访问,导致内存中的元数据被篡改,但是元数据使用者感知不到,使用了错误的数据,导致SSD运行异常,此时难以确定是元数据本身生成时就是错误的,还是在运行过程中被软件误修改的,抑或是其他逻辑有问题导致的,因此没法对问题进行快速定位和解决。
[0004] 在硬件上,SSD在高温、长时间运行、电磁干扰等恶劣环境下,内存中的数据有小概率会出现变迁。在此前提下,如果SSD感知不到数据有问题,依旧取用此数据进行用户数据读写处理,最严重的情况就会导致用户需要保存的数据丢失,无法读出。而且在SSD设备出现问题之后,开发工程师也无法确定是那个环节引起的,也没有手段来确定问题是否是元数据异常导致的业务流程问题。

发明内容

[0005] 有鉴于此,本发明提出了一种元数据校验方法、系统、计算机设备及存储介质,通过在硬盘运行过程中,对元数据进行检查,从而及时发现异常元数据,以此来保证数据的完备性和正确性;并且通过采用离散校验、分级校验的方式,减少校验过程中对CPU的占用率,避免影响硬盘主要业务的运行速度。
[0006] 基于上述目的,本发明实施例的一方面提供了一种元数据校验方法,具体包括如下步骤:
[0007] 响应于硬盘上电,对所述硬盘的所有元数据进行分块,并计算每块元数据的一级初始校验值,得到一级初始校验集;
[0008] 对所述一级初始校验集进行计算得到二级初始校验集;
[0009] 开启第一定时器,并设置离散校验周期;
[0010] 按所述离散校验周期触发元数据离散校验逻辑以基于所述二级初始校验集对所述元数据进行离散校验;
[0011] 响应于所述元数据的离散校验通过,则触发元数据巡检逻辑以基于所述一级初始校验集对所述元数据进行巡检。
[0012] 在一些实施方式中,方法还包括:
[0013] 响应于所述元数据的离散校验未通过,向主机通报发生元数据异步事件,并禁用所述元数据巡检逻辑。
[0014] 在一些实施方式中,所述离散校验逻辑包括:
[0015] 关闭所述第一定时器;
[0016] 在每个所述离散校验周期内基于所述二级初始校验集对所述元数据进行离散校验。
[0017] 在一些实施方式中,所述元数据巡检逻辑包括:
[0018] 开启第二定时器,并设置巡检周期;
[0019] 按所述巡检周期依次计算每块元数据的一级校验值,并基于所述初始校验集中对应的一级初始校验值对每次计算得到的一级校验值进行校验;
[0020] 响应于所有块的元数据校验完成,则关闭所述第二定时器。
[0021] 在一些实施方式中,方法还包括:
[0022] 在关闭所述第二定时器后,开启所述第一定时器,并退出所述元数据巡检逻辑。
[0023] 在一些实施方式中,所述元数据巡检逻辑包括:
[0024] 开启第二定时器,并设置巡检周期;
[0025] 按所述巡检周期与划分的块依次获取所述硬盘当前的元数据,并依次计算每块元数据的一级校验值;
[0026] 在每计算完一块元数据的一级校验值后,将计算得到的一级校验值与所述初始校验集中对应的一级初始校验值进行对比;
[0027] 若是对比结果一致,则返回按巡检周期依次计算每块元数据的一级校验值的步骤以计算下一块元数据的一级校验值。
[0028] 在一些实施方式中,方法还包括:
[0029] 若是对比结果不一致,则关闭所述第二定时器,并禁用所述元数据巡检逻辑。
[0030] 在一些实施方式中,方法还包括:
[0031] 若是对比结果不一致,则向主机通报发生元数据异步事件,并关闭所述第二定时器以及禁用所述元数据巡检逻辑。
[0032] 在一些实施方式中,方法还包括:
[0033] 若是对比结果不一致,则将当前时刻的二级校验集与所述二级初始校验集不一致的信息记录到日志,并关闭所述第二定时器以及禁用所述元数据巡检逻辑。
[0034] 在一些实施方式中,方法还包括:
[0035] 响应于所有块的元数据巡检完成,则关闭所述第二定时器,并开启所述第一定时器,并退出所述元数据巡检逻辑。
[0036] 在一些实施方式中,所述元数据离散校验逻辑包括:
[0037] 关闭所述第一定时器;
[0038] 获取所述硬盘运行的当前时刻的元数据的一级校验集,并对当前时刻的一级校验集进行计算得到当前时刻的二级校验集;
[0039] 对比所述当前时刻的二级校验集与所述二级初始校验集;
[0040] 若是所述当前时刻的二级校验集与所述二级初始校验集一致,则所述元数据的离散校验通过。
[0041] 在一些实施方式中,方法还包括:
[0042] 若是所述当前时刻的二级校验集与所述二级初始校验集不一致,则所述元数据的离散校验未通过。
[0043] 在一些实施方式中,方法还包括:
[0044] 响应于所述元数据的离散校验未通过,将所述当前时刻的二级校验集与所述二级初始校验集不一致的信息记录到日志。
[0045] 在一些实施方式中,方法还包括:
[0046] 响应于所述元数据的离散校验未通过,向主机通报发生元数据异步事件,并将所述当前时刻的二级校验集与所述二级初始校验集不一致的信息记录到日志,并禁用所述元数据巡检逻辑。
[0047] 在一些实施方式中,计算每块元数据的一级初始校验值包括:
[0048] 基于循环冗余校验计算每块元数据的一级初始校验值。
[0049] 在一些实施方式中,对所述一级初始校验集进行计算得到二级初始校验集包括:
[0050] 对所述一级初始校验集进行循环冗余校验计算得到二级初始校验集。
[0051] 在一些实施方式中,方法还包括:
[0052] 在所述硬盘运行过程中,响应于有元数据发生更新,则基于更新后的元数据重新计算一级初始校验值,并基于重新计算的一级初始校验值更新所述一级初始校验集与所述二级初始校验集。
[0053] 本发明实施例的另一方面,还提供了一种元数据校验系统,包括:
[0054] 第一计算模块,所述第一计算模块配置为响应于硬盘上电,对所述硬盘的所有元数据进行分块,并计算每块元数据的一级初始校验值,得到一级初始校验集;
[0055] 第二计算模块,所述第二计算模块配置为对所述一级初始校验集进行计算得到二级初始校验集;
[0056] 开启模块,所述开启模块配置为开启第一定时器,并设置离散校验周期;
[0057] 离散校验模块,所述离散校验模块配置为按所述离散校验周期触发元数据离散校验逻辑以基于所述二级初始校验集对所述元数据进行离散校验;
[0058] 巡检模块,所述巡检模块配置为响应于所述元数据的离散校验通过,则触发元数据巡检逻辑以基于所述一级初始校验集对所述元数据进行巡检。
[0059] 本发明实施例的又一方面,还提供了一种计算机设备,包括:至少一个处理器;以及存储器,所述存储器存储有可在所述处理器上运行的计算机程序,所述计算机程序由所述处理器执行时实现如上方法的步骤。
[0060] 本发明实施例的再一方面,还提供了一种计算机可读存储介质,计算机可读存储介质存储有被处理器执行时实现如上方法步骤的计算机程序。
[0061] 本发明至少具有以下有益技术效果:通过在硬盘运行过程中,对元数据进行检查,从而及时发现异常元数据,以此来保证数据的完备性和正确性;并且通过采用离散校验、分级校验的方式,减少校验过程中对CPU的占用率,避免影响硬盘主要业务的运行速度。

附图说明

[0062] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
[0063] 图1为本发明提供的元数据校验方法的一实施例的框图;
[0064] 图2为本发明提供的元数据校验系统的一实施例的示意图;
[0065] 图3为本发明提供的计算机设备的一实施例的结构示意图;
[0066] 图4为本发明提供的计算机可读存储介质的一实施例的结构示意图。

具体实施方式

[0067] 为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
[0068] 需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。
[0069] 基于上述目的,本发明实施例的第一个方面,提出了一种元数据校验方法的实施例。如图1所示,其包括如下步骤:
[0070] S10、响应于硬盘上电,对所述硬盘的所有元数据进行分块,并计算每块元数据的一级初始校验值,得到一级初始校验集;
[0071] S20、对所述一级初始校验集进行计算得到二级初始校验集;
[0072] S30、开启第一定时器,并设置离散校验周期;
[0073] S40、按所述离散校验周期触发元数据离散校验逻辑以基于所述二级初始校验集对所述元数据进行离散校验;
[0074] S50、响应于所述元数据的离散校验通过,则触发元数据巡检逻辑以基于所述一级初始校验集对所述元数据进行巡检。
[0075] 具体的,硬盘上电的初始化阶段,生成元数据时,对整块元数据进行分块处理,对每块元数据进行校验计算,例如CRC(Cyclic Redundancy Check,循环冗余校验)计算,并将计算结果保存在全局数组中,其中,数组下标表示对应第几块元数据,数组值表示该块元数据的一级初始校验值,该数组称为一级初始校验集。由于每块元数据的大小越小,在校验时离散消耗时间越小,对硬盘性能影响越小,但是带来了空间消耗会增多,因此,根据实际情况来权衡划分的每块元数据的大小。
[0076] 计算完所有元数据的初始校验值之后,再计算一级初始校验集进行校验计算,例如CRC计算,即对生成的全局数组校验计算并保存,该值称为二级初始校验值;每次软件主动更新元数据时,只需要重新计算当前数据所在块对应的一级初始校验集数组值,然后再更新对应的二级初始校验值即可。
[0077] 在硬盘运行过程中,使用第一定时器,触发元数据离散校验逻辑,并在元数据离散校验逻辑触发后,关闭第一定时器;若是元数据离散校验通过,触发元数据巡检逻辑;若是元数据离散校验未通过,则将元数据异步事件通报给主机,以此及时地方式元数据的异常,并通过将异常上报给主机,使得开发人员和维护人员能够及时获取到元数据异常信息,并且能够提高硬盘运行过程中的故障排除效率。
[0078] 元数据离散校验逻辑可以通过以下方式实现:计算当前元数据的一级校验集,以及一级校验集的二级校验集,将计算得到的当前元数据的二级校验集与二级初始校验集进行对比,若是对比结果一致,则校验通过,若是对比结果不一致,则校验未通过。
[0079] 元数据巡检逻辑可以通过以下方式实现:开始第二定时器,基于第二定时器触发每一块元数据的校验,即每个巡检周期进行一块元数据的校验,若校验通过,则继续校验下一块元数据,若校验未通过,则将元数据异步事件通报给主机。每个巡检周期的具体过程如下:
[0080] 计算当前元数据的一级校验值,并和一级初始校验集中对应的一级初始校验值进行对比,若是对比结果一致,则校验通过,若是对比万恶记过不一致,则校验未通过。
[0081] 本发明实施例,通过在硬盘运行过程中,对元数据进行检查,从而及时发现异常元数据,以此来保证数据的完备性和正确性;并且通过采用离散校验、分级校验的方式,减少校验过程中对CPU的占用率,避免影响硬盘主要业务的运行速度;并且通过对元数据异常的及时发现,提高硬盘运行过程中的故障排除效率。
[0082] 在一些实施方式中,方法还包括:
[0083] 响应于所述元数据的离散校验未通过,向主机通报发生元数据异步事件,并禁用所述元数据巡检逻辑。
[0084] 在一些实施方式中,所述离散校验逻辑包括:
[0085] 关闭所述第一定时器;
[0086] 在每个所述离散校验周期内基于所述二级初始校验集对所述元数据进行离散校验。
[0087] 在一些实施方式中,所述元数据巡检逻辑包括:
[0088] 开启第二定时器,并设置巡检周期;
[0089] 按所述巡检周期依次计算每块元数据的一级校验值,并基于所述初始校验集中对应的一级初始校验值对每次计算得到的一级校验值进行校验;
[0090] 响应于所有块的元数据校验完成,则关闭所述第二定时器。
[0091] 在一些实施方式中,方法还包括:
[0092] 在关闭所述第二定时器后,开启所述第一定时器,并退出所述元数据巡检逻辑。
[0093] 在一些实施方式中,所述元数据巡检逻辑包括:
[0094] 开启第二定时器,并设置巡检周期;
[0095] 按所述巡检周期与划分的块依次获取所述硬盘当前的元数据,并依次计算每块元数据的一级校验值;
[0096] 在每计算完一块元数据的一级校验值后,将计算得到的一级校验值与所述初始校验集中对应的一级初始校验值进行对比;
[0097] 若是对比结果一致,则返回按巡检周期依次计算每块元数据的一级校验值的步骤以计算下一块元数据的一级校验值。
[0098] 在一些实施方式中,方法还包括:
[0099] 若是对比结果不一致,则关闭所述第二定时器,并禁用所述元数据巡检逻辑。
[0100] 在一些实施方式中,方法还包括:
[0101] 若是对比结果不一致,则向主机通报发生元数据异步事件,并关闭所述第二定时器以及禁用所述元数据巡检逻辑。
[0102] 在一些实施方式中,方法还包括:
[0103] 若是对比结果不一致,则将当前时刻的二级校验集与所述二级初始校验集不一致的信息记录到日志,并关闭所述第二定时器以及禁用所述元数据巡检逻辑。
[0104] 在一些实施方式中,方法还包括:
[0105] 响应于所有块的元数据巡检完成,则关闭所述第二定时器,并开启所述第一定时器,并退出所述元数据巡检逻辑。
[0106] 在一具体实施例中,通过如下方式实现元数据巡检逻辑:
[0107] S11、开启第二定时器,并设置巡检周期,开启第二定时器的用于在每个巡检周期进行一块元数据的校验,直到所有块的元数据校验完成;
[0108] S12、按巡检周期与划分的块获取硬盘中当前需要校验的块的元数据,并计算该块元数据的一级校验值;
[0109] S13、将计算得到的一级校验值与初始校验集中对应的一级初始校验值进行对比;
[0110] S14、若是对比结果一致,则返回步骤S12,计算下一块元数据的一级校验值;
[0111] S15、若是对比结果不一致,则向主机通报发生元数据异步事件,并将对比不一致信息记录到日志,并关闭第二定时器。禁用元数据巡检逻辑;
[0112] S16、响应于所有块的元数据巡检完成,则关闭第二定时器,并开启第一定时器,并退出元数据巡检逻辑。
[0113] 通过上述方案,实现了在硬盘运行过程中对元数据的检查,能够及时发现异常元数据,以此来保证数据的完备性和正确性;并且减少校验过程中对CPU的占用率,避免影响硬盘主要业务的运行速度;并且通过对元数据异常的及时发现,提高硬盘运行过程中的故障排除效率。
[0114] 在一些实施方式中,所述元数据离散校验逻辑包括:
[0115] 关闭所述第一定时器;
[0116] 获取所述硬盘运行的当前时刻的元数据的一级校验集,并对当前时刻的一级校验集进行计算得到当前时刻的二级校验集;
[0117] 对比所述当前时刻的二级校验集与所述二级初始校验集;
[0118] 若是所述当前时刻的二级校验集与所述二级初始校验集一致,则所述元数据的离散校验通过。
[0119] 在一些实施方式中,方法还包括:
[0120] 若是所述当前时刻的二级校验集与所述二级初始校验集不一致,则所述元数据的离散校验未通过。
[0121] 在一些实施方式中,方法还包括:
[0122] 响应于所述元数据的离散校验未通过,将所述当前时刻的二级校验集与所述二级初始校验集不一致的信息记录到日志。
[0123] 在一些实施方式中,方法还包括:
[0124] 响应于所述元数据的离散校验未通过,向主机通报发生元数据异步事件,并将所述当前时刻的二级校验集与所述二级初始校验集不一致的信息记录到日志,并禁用所述元数据巡检逻辑。
[0125] 在一些实施方式中,计算每块元数据的一级初始校验值包括:
[0126] 基于循环冗余校验计算每块元数据的一级初始校验值。
[0127] 在一些实施方式中,对所述一级初始校验集进行计算得到二级初始校验集包括:
[0128] 对所述一级初始校验集进行循环冗余校验计算得到二级初始校验集。
[0129] 在一具体实施例中,通过如下方式实现元数据离散校验逻辑:
[0130] S21、在触发元数据离散校验逻辑后,关闭第一定时器;
[0131] S22、获取硬盘运行的当前时刻的元数据的一级校验集,并对当前时刻的一级校验集进行计算得到当前时刻的二级校验集;
[0132] S23、对比当前时刻的二级校验集与二级初始校验集;
[0133] S24、若是当前时刻的二级校验集与二级初始校验集一致,则元数据的离散校验通过;
[0134] S25、若是当前时刻的二级校验集与二级初始校验集不一致,则元数据的离散校验未通过;
[0135] S26、响应于元数据的离散校验未通过,向主机通报发生元数据异步事件,并将当前时刻的二级校验集与二级初始校验集不一致的信息记录到日志,并禁用元数据巡检逻辑。
[0136] 通过上述方案,实现了在硬盘运行过程中对元数据的检查,能够及时发现异常元数据,以此来保证数据的完备性和正确性;并且通过采用离散校验、分级校验的方式,减少校验过程中对CPU的占用率,避免影响硬盘主要业务的运行速度;并且通过对元数据异常的及时发现,提高硬盘运行过程中的故障排除效率。
[0137] 在一些实施方式中,方法还包括:
[0138] 在所述硬盘运行过程中,响应于有元数据发生更新,则基于更新后的元数据重新计算一级初始校验值,并基于重新计算的一级初始校验值更新所述一级初始校验集与所述二级初始校验集。
[0139] 下面通过一具体实施例对本发明的具体实施方式进行说明。
[0140] S110、在硬盘初始化阶段,生成元数据的时候,对整块元数据进行分块处理,对每块元数据计算CRC,并保存在全局数组中,数组下标表示对应第几块数据,数组值表示该块数据的CRC,该数组称为一级CRC集,即一级初始校验集;
[0141] S111、计算完所有元数据的CRC之后,再对一级CRC集计算CRC,即对步骤S110所生成的数组计算CRC并保存,该值称为二级CRC值,即二级初始校验集;
[0142] S112、设备运行时,使用第一定时器,触发元数据离散校验流程;
[0143] S113、元数据离散校验流程触发后,关闭第一定时器;
[0144] S114、先计算当前一级CRC集的CRC,即二级CRC值,和步骤S111最终计算的二级CRC值对比;
[0145] S115、步骤S114校验通过,则通过标记位,触发元数据巡检逻辑,开始数据巡检,开启第二定时器,进入步骤S117;
[0146] S116、步骤S114校验不通过,则通报异步事件给host(主机),记录LOG(日志),随后禁用巡检流程;
[0147] S117、第二定时器触发每一块的元数据校验,即,计算一块元数据的CRC校验值,并和步骤S110中保存的一级CRC集中保存的对应CRC值进行比较;
[0148] S118、步骤S117校验通过,校验下一块的元数据,即偏移到下一个数据单元,释放CPU,等待第二定时器触发进入下一个数据单元检验;
[0149] S119、所有数据校验完成,关闭第二定时器,打开第一定时器,退出元数据离散巡检逻辑;
[0150] S120、步骤S117校验不通过,则通报异步事件给host,记录LOG,关闭第二定时器,随后禁用巡检流程。
[0151] 本发明实施例,通过在硬盘运行过程中,对元数据进行检查,从而及时发现异常元数据,以此来保证数据的完备性和正确性;并且通过采用离散校验、分级校验的方式,减少校验过程中对CPU的占用率,避免影响硬盘主要业务的运行速度;并且通过对元数据异常的及时发现,提高硬盘运行过程中的故障排除效率。
[0152] 基于同一发明构思,根据本发明的另一个方面,如图2所示,本发明的实施例还提供了一种元数据校验系统,包括:
[0153] 第一计算模块110,所述第一计算模块110配置为响应于硬盘上电,对所述硬盘的所有元数据进行分块,并计算每块元数据的一级初始校验值,得到一级初始校验集;
[0154] 第二计算模块120,所述第二计算模块120配置为对所述一级初始校验集进行计算得到二级初始校验集;
[0155] 开启模块130,所述开启模块130配置为开启第一定时器,并设置离散校验周期;
[0156] 离散校验模块140,所述离散校验模块140配置为按所述离散校验周期触发元数据离散校验逻辑以基于所述二级初始校验集对所述元数据进行离散校验;
[0157] 巡检模块150,所述巡检模块150配置为响应于所述元数据的离散校验通过,则触发元数据巡检逻辑以基于所述一级初始校验集对所述元数据进行巡检。
[0158] 本发明实施例,通过在硬盘运行过程中,对元数据进行检查,从而及时发现异常元数据,以此来保证数据的完备性和正确性;并且通过采用离散校验、分级校验的方式,减少校验过程中对CPU的占用率,避免影响硬盘主要业务的运行速度。
[0159] 结合这里的公开所描述的各种示例性逻辑块、模块和电路可以利用被设计成用于执行这里功能的下列部件来实现或执行:通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑器件、分立门或晶体管逻辑、分立的硬件组件或者这些部件的任何组合。通用处理器可以是微处理器,但是可替换地,处理器可以是任何传统处理器、控制器、微控制器或状态机。处理器也可以被实现为计算设备的组合,例如,DSP和微处理器的组合、多个微处理器、一个或多个微处理器结合DSP和/或任何其它这种配置。
[0160] 结合这里的公开所描述的方法或算法的步骤可以直接包含在硬件中、由处理器执行的软件模块中或这两者的组合中。软件模块可以驻留在RAM存储器、快闪存储器、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动盘、CD‑ROM、或本领域已知的任何其它形式的存储介质中。示例性的存储介质被耦合到处理器,使得处理器能够从该存储介质中读取信息或向该存储介质写入信息。在一个替换方案中,存储介质可以与处理器集成在一起。处理器和存储介质可以驻留在ASIC中。ASIC可以驻留在用户终端中。在一个替换方案中,处理器和存储介质可以作为分立组件驻留在用户终端中。
[0161] 基于同一发明构思,根据本发明的另一个方面,如图3所示,本发明的实施例还提供了一种计算机设备30,在该计算机设备30中包括处理器310以及存储器320,存储器320存储有可在处理器上运行的计算机程序321,处理器310执行程序时执行如上的方法的步骤。
[0162] 其中,存储器作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本申请实施例中的所述元数据校验方法对应的程序指令/模块。处理器通过运行存储在存储器中的非易失性软件程序、指令以及模块,从而执行系统的各种功能应用以及数据处理,即实现上述方法实施例的元数据校验方法。
[0163] 存储器可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据系统的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至本地模块。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
[0164] 基于同一发明构思,根据本发明的另一个方面,如图4所示,本发明的实施例还提供了一种计算机可读存储介质40,计算机可读存储介质40存储有被处理器执行时执行如上方法的计算机程序410。
[0165] 最后需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关硬件来完成,程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,程序的存储介质可为磁碟、光盘、只读存储记忆体(ROM)或随机存储记忆体(RAM)等。上述计算机程序的实施例,可以达到与之对应的前述任意方法实施例相同或者相类似的效果。
[0166] 本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,已经就各种示意性组件、方块、模块、电路和步骤的功能对其进行了一般性的描述。这种功能是被实现为软件还是被实现为硬件取决于具体应用以及施加给整个系统的设计约束。本领域技术人员可以针对每种具体应用以各种方式来实现的功能,但是这种实现决定不应被解释为导致脱离本发明实施例公开的范围。
[0167] 以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。
[0168] 应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。
[0169] 所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。