一种检测磁盘的方法和装置转让专利

申请号 : CN201510051825.0

文献号 : CN104572380B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 文中领张书宁徐旸刘友生吴庆民

申请人 : 浪潮(北京)电子信息产业有限公司

摘要 :

本发明公开了一种检测磁盘的方法和装置,包括:对当前的扇区进行检测,若检测到当前的扇区正常,则计算当前的扇区的扇区标识和当前步长之间的和值;判断出计算得到的和值大于或等于1且小于或等于廉价冗余磁盘阵列RAID的总扇区数,将扇区标识为计算得到的和值的扇区作为当前的扇区继续执行对当前的扇区进行检测的步骤;当判断出连续检测到扇区正常的次数大于或等于预设次数,且当前步长大于0时,将当前步长调大后继续执行计算当前的扇区的扇区标识和当前步长之间的和值的步骤。通过本发明的方案,在判断出连续检测到扇区正常的次数大于或等于预设次数,且当前步长大于0时,将当前步长调大后继续检测,降低了对磁盘的访问频率。

权利要求 :

1.一种检测磁盘的方法,其特征在于,包括:

对当前的扇区进行检测,若检测到当前的扇区正常,则计算当前的扇区的扇区标识和当前步长之间的和值;

判断出计算得到的和值大于或等于1且小于或等于廉价冗余磁盘阵列RAID的总扇区数,将扇区标识为计算得到的和值的扇区作为当前的扇区继续执行对当前的扇区进行检测的步骤;

当判断出连续检测到扇区正常的次数大于或等于预设次数,且当前步长大于0时,将当前步长调大后继续执行计算当前的扇区的扇区标识和当前步长之间的和值的步骤。

2.根据权利要求1所述的方法,其特征在于,当检测到所述当前的扇区异常时,该方法还包括:修复所述当前的扇区;判断出所述当前步长大于0,将所述当前步长调整为起始跳跃幅度继续执行所述计算当前的扇区的扇区标识和当前步长之间的和值的步骤。

3.根据权利要求2所述的方法,其特征在于,当判断出所述当前步长小于0时,该方法还包括:将所述当前步长调整为起始跳跃幅度的负数继续执行所述计算当前的扇区的扇区标识和当前步长之间的和值的步骤。

4.根据权利要求2所述的方法,其特征在于,当判断出检测到的所述RAID的磁盘中的扇区异常的数量大于或等于预设阈值时,该方法还包括:将扇区异常的数量大于或等于预设阈值的磁盘中的所有数据迁移到新的磁盘中,根据所述新的磁盘的磁盘标识更新管理模块中磁盘标识和扇区标识之间的对应关系。

5.根据权利要求1或2所述的方法,其特征在于,当判断出连续检测到扇区正常的次数大于或等于预设次数,且所述当前步长小于0时,该方法还包括:将所述当前步长调小后继续执行所述计算当前的扇区的扇区标识和当前步长之间的和值的步骤。

6.根据权利要求1或2所述的方法,其特征在于,当判断出所述计算得到的和值大于所述RAID的总扇区数时,该方法还包括:将扇区标识为所述RAID的总扇区数的扇区作为所述当前的扇区,将起始跳跃幅度的负数作为所述当前步长继续执行所述对当前的扇区进行检测的步骤。

7.根据权利要求1或2所述的方法,其特征在于,当判断出所述计算得到的和值小于1时,该方法还包括:将第1个扇区作为所述当前的扇区,将起始跳跃幅度作为所述当前步长继续执行所述对当前的扇区进行检测的步骤。

8.一种检测磁盘的装置,其特征在于,至少包括:

检测模块,用于对当前的扇区进行检测,将检测结果发送给计算模块;在第一判断结果为计算得到的和值大于或等于1且小于或等于廉价冗余磁盘阵列RAID的总扇区数时,将扇区标识为计算得到的和值的扇区作为当前的扇区继续对当前的扇区进行检测;

计算模块,用于在检测结果为当前的扇区正常时,计算当前的扇区的扇区标识和当前步长之间的和值;在第二判断结果为检测到扇区正常的次数大于或等于预设次数,且当前步长大于0时,将当前步长调大后继续执行计算当前的扇区的扇区标识和当前步长之间的和值的步骤;

判断模块,用于判断计算得到的和值是否大于或等于1且小于或等于廉价冗余磁盘阵列RAID的总扇区数,将得到的第一判断结果发送给检测模块;判断连续检测到扇区正常的次数是否大于或等于预设次数,且当前步长是否大于0,将得到的第二判断结果发送给计算模块。

9.根据权利要求8所述的装置,其特征在于,所述判断模块还用于:在所述检测结果为所述当前的扇区异常时,修复所述当前的扇区;判断所述当前步长是否大于0,将得到的第三判断结果发送给计算模块;

所述计算模块还用于:

在所述第三判断结果为所述当前步长大于0时,将所述当前步长调整为起始跳跃幅度继续计算所述当前的扇区的扇区标识和所述当前步长之间的和值。

10.根据权利要求9所述的装置,其特征在于,所述计算模块还用于:在所述第三判断结果为所述当前步长小于0时,将所述当前步长调整为起始跳跃幅度的负数继续计算所述当前的扇区的扇区标识和所述当前步长之间的和值。

11.根据权利要求9所述的装置,其特征在于,所述判断模块还用于:判断检测到的所述RAID的磁盘中的扇区异常的数量是否大于或等于预设阈值,将得到的第四判断结果发送给迁移模块;

还包括:

迁移模块,用于在所述第四判断结果为检测到的所述RAID的磁盘中的扇区异常的数量大于或等于预设阈值时,将扇区异常的数量大于或等于预设阈值的磁盘中的所有数据迁移到新的磁盘中,根据所述新的磁盘的磁盘标识更新管理模块中磁盘标识和扇区标识之间的对应关系。

12.根据权利要求8或9所述的装置,其特征在于,所述计算模块还用于:在所述第二判断结果为连续检测到扇区正常的次数大于或等于所述预设次数,且所述当前步长小于0时,将所述当前步长调小后继续计算所述当前的扇区的扇区标识和所述当前步长之间的和值。

13.根据权利要求8或9所述的装置,其特征在于,所述检测模块还用于:在第一判断结果为计算得到的和值大于所述RAID的总扇区数时,将扇区标识为所述RAID的总扇区数的扇区作为所述当前的扇区,将起始跳跃幅度的负数作为所述当前步长继续对所述当前的扇区进行检测。

14.根据权利要求8或9所述的装置,其特征在于,所述检测模块还用于:在所述第一判断结果为所述计算得到的和值小于1时,将第1个扇区作为所述当前的扇区,将起始跳跃幅度作为所述当前步长继续对所述当前的扇区进行检测。

说明书 :

一种检测磁盘的方法和装置

技术领域

[0001] 本发明涉及计算机数据存储技术,尤指一种检测磁盘的方法和装置。

背景技术

[0002] 廉价冗余磁盘阵列(RAID,Redundant Arrays of Inexpensive Disks)是David A.Patterson等人在前人研究工作的基础之上提出的概念。RAID包含有多个机械磁盘和用于实现数据访问的管理模块。由于RAID技术实现磁盘的并发访问,RAID能给存储系统提供更高的性能,并提供一定的数据保护作用,但是随着机械磁盘存储容量的不断变大,数据承载量的增加,RAID的可靠性变得越来越低,数据丢失的风险越来越大。
[0003] 因此,需要对RAID内的磁盘进行检测。现有的检测方法大致包括:
[0004] 对于RAID内的每一个磁盘,预留一部分磁盘空间作为备用扇区区域,并用磁盘空间最末端的一块区域存放磁盘数据格式(DDF,Disk Data Format)的RAID信息,备用扇区区域中预留了若干地址连续的扇区作为备用扇区,用来在磁盘上产生坏扇区时进行重映射,备用扇区按照逻辑块寻址模式(LBA,Logical Block Addressing)从小到大进行排序,被分配使用时按照排序结果依次进行。管理模块周期性检测各磁盘是否存在坏扇区,若存在坏扇区则将坏扇区中的数据保存到备用扇区区域中,并保存坏扇区的地址和备用扇区区域中保存该坏扇区中的数据的扇区的地址之间的对应关系。
[0005] 现有的检测方法中,由于管理模块在进行磁盘检测时按块的顺序对每一个扇区进行检测,对磁盘的访问频率较高,影响业务的概率较大。

发明内容

[0006] 为了解决上述问题,本发明提出了一种检测磁盘的方法和装置,能够降低对磁盘的访问频率。
[0007] 为了达到上述目的,本发明提出了一种检测磁盘的方法,包括:
[0008] 对当前的扇区进行检测,若检测到当前的扇区正常,则计算当前的扇区的扇区标识和当前步长之间的和值;
[0009] 判断出计算得到的和值大于或等于1且小于或等于廉价冗余磁盘阵列RAID的总扇区数,将扇区标识为计算得到的和值的扇区作为当前的扇区继续执行对当前的扇区进行检测的步骤;
[0010] 当判断出连续检测到扇区正常的次数大于或等于预设次数,且当前步长大于0时,将当前步长调大后继续执行计算当前的扇区的扇区标识和当前步长之间的和值的步骤。
[0011] 优选地,当检测到所述当前的扇区异常时,该方法还包括:
[0012] 修复所述当前的扇区;判断出所述当前步长大于0,将所述当前步长调整为起始跳跃幅度继续执行所述计算当前的扇区的扇区标识和当前步长之间的和值的步骤。
[0013] 优选地,当判断出所述当前步长小于0时,该方法还包括:
[0014] 将所述当前步长调整为起始跳跃幅度的负数继续执行所述计算当前的扇区和扇区标识和当前步长之间的和值的步骤。
[0015] 优选地,当判断出检测到的所述RAID的磁盘中的扇区异常的数量大于或等于预设阈值时,该方法还包括:
[0016] 将扇区异常的数量大于或等于预设阈值的磁盘中的所有数据迁移到新的磁盘中,根据所述新的磁盘的磁盘标识更新管理模块中磁盘标识和扇区标识之间的对应关系。
[0017] 优选地,当判断出连续检测到扇区正常的次数大于或等于预设次数,且所述当前步长小于0时,该方法还包括:
[0018] 将所述当前步长调小后继续执行所述计算当前的扇区的扇区标识和当前步长之间的和值的步骤。
[0019] 优选地,当判断出所述计算得到的和值大于所述RAID的总扇区数时,该方法还包括:
[0020] 将扇区标识为所述RAID的总扇区数的扇区作为所述当前的扇区,将起始跳跃幅度的负数作为所述当前步长继续执行所述对当前的扇区进行检测的步骤。
[0021] 优选地,当判断出所述计算得到的和值小于1时,该方法还包括:
[0022] 将第1个扇区作为所述当前的扇区,将起始跳跃幅度作为所述当前步长继续执行所述对当前的扇区进行检测的步骤。
[0023] 本发明还提出了一种检测磁盘的装置,至少包括:
[0024] 检测模块,用于对当前的扇区进行检测,将检测结果发送给计算模块;在第一判断结果为计算得到的和值大于或等于1且小于或等于廉价冗余磁盘阵列RAID的总扇区数时,将扇区标识为计算得到的和值的扇区作为当前的扇区继续对当前的扇区进行检测;
[0025] 计算模块,用于在检测结果为当前的扇区正常时,计算当前的扇区的扇区标识和当前步长之间的和值;在第二判断结果为检测到扇区正常的次数大于或等于预设次数,且当前步长大于0时,将当前步长调大后继续执行计算当前的扇区的扇区标识和当前步长之间的和值的步骤;
[0026] 判断模块,用于判断计算得到的和值是否大于或等于1且小于或等于廉价冗余磁盘阵列RAID的总扇区数,将得到的第一判断结果发送给检测模块;判断连续检测到扇区正常的次数是否大于或等于预设次数,且当前步长是否大于0,将得到的第二判断结果发送给计算模块。
[0027] 优选地,所述判断模块还用于:
[0028] 在所述检测结果为所述当前的扇区异常时,修复所述当前的扇区;判断所述当前步长是否大于0,将得到的第三判断结果发送给计算模块;
[0029] 所述计算模块还用于:
[0030] 在所述第三判断结果为所述当前步长大于0时,将所述当前步长调整为起始跳跃幅度继续计算所述当前的扇区的扇区标识和所述当前步长之间的和值。
[0031] 优选地,所述计算模块还用于:
[0032] 在所述第三判断结果为所述当前步长小于0时,将所述当前步长调整为起始跳跃幅度的负数继续计算所述当前的扇区的扇区标识和所述当前步长之间的和值。
[0033] 优选地,所述判断模块还用于:
[0034] 判断检测到的所述RAID的磁盘中的扇区异常的数量是否大于或等于预设阈值,将得到的第四判断结果发送给迁移模块;
[0035] 还包括:
[0036] 迁移模块,用于在所述第四判断结果为检测到的所述RAID的磁盘中的扇区异常的数量大于或等于预设阈值时,将扇区异常的数量大于或等于预设阈值的磁盘中的所有数据迁移到新的磁盘中,根据所述新的磁盘的磁盘标识更新管理模块中磁盘标识和扇区标识之间的对应关系。
[0037] 优选地,所述计算模块还用于:
[0038] 在所述第二判断结果为连续检测到扇区正常的次数大于或等于所述预设次数,且所述当前步长小于0时,将所述当前步长调小后继续计算所述当前的扇区的扇区标识和所述当前步长之间的和值。
[0039] 优选地,所述检测模块还用于:
[0040] 在第一判断结果为计算得到的和值大于所述RAID的总扇区数时,将扇区标识为所述RAID的总扇区数的扇区作为所述当前的扇区,将起始跳跃幅度的负数作为所述当前步长继续对所述当前的扇区进行检测。
[0041] 优选地,所述检测模块还用于:
[0042] 在所述第一判断结果为所述计算得到的和值小于1时,将第1个扇区作为所述当前的扇区,将起始跳跃幅度作为所述当前步长继续对所述当前的扇区进行检测。
[0043] 与现有技术相比,本发明包括:对当前的扇区进行检测,若检测到当前的扇区正常,则计算当前的扇区的扇区标识和当前步长之间的和值;判断出计算得到的和值大于或等于1且小于或等于廉价冗余磁盘阵列RAID的总扇区数,将扇区标识为计算得到的和值的扇区作为当前的扇区继续执行对当前的扇区进行检测的步骤;当判断出连续检测到扇区正常的次数大于或等于预设次数,且当前步长大于0时,将当前步长调大后继续执行计算当前的扇区的扇区标识和当前步长之间的和值的步骤。通过本发明的方案,在判断出连续检测到扇区正常的次数大于或等于预设次数,且当前步长大于0时,将当前步长调大后继续检测,降低了对磁盘的访问频率。

附图说明

[0044] 下面对本发明实施例中的附图进行说明,实施例中的附图是用于对本发明的进一步理解,与说明书一起用于解释本发明,并不构成对本发明保护范围的限制。
[0045] 图1为本发明检测磁盘的方法的流程图;
[0046] 图2为本发明RAID中扇区的组成示意图;
[0047] 图3为本发明检测磁盘的装置的结构组成示意图。

具体实施方式

[0048] 为了便于本领域技术人员的理解,下面结合附图对本发明作进一步的描述,并不能用来限制本发明的保护范围。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的各种方式可以相互组合。
[0049] 参见图1,本发明提出了一种检测磁盘的方法,包括:
[0050] 步骤100、对当前的扇区进行检测,若检测到当前的扇区正常,则计算当前的扇区的扇区标识和当前步长之间的和值。
[0051] 本步骤中,当检测到当前的扇区异常时,修复当前的扇区,判断出当前步长大于0,将当前步长调整为起始跳跃幅度继续执行计算当前的扇区的扇区标识和当前步长之间的和值的步骤。
[0052] 其中,判断出当前步长小于0,将当前步长调整为起始跳跃幅度的负数继续执行计算当前的扇区的扇区标识和当前步长之间的和值的步骤。
[0053] 其中,如何修复当前的扇区属于本领域技术人员的公知常识,并不用于限定本发明的保护范围,这里不再赘述。
[0054] 其中,当判断出RAID的磁盘中的扇区异常的数量大于或等于预设阈值时,将扇区异常的数量大于或等于预设阈值的磁盘中的所有数据迁移到新的磁盘中,根据新的磁盘的磁盘标识更新管理模块中磁盘标识和扇区标识之间的对应关系。即将扇区异常的数量大于或等于预设阈值的磁盘的磁盘标识和扇区标识之间的对应关系更新为新的磁盘的磁盘标识和扇区标识之间的对应关系。
[0055] 其中,磁盘标识可以是任意唯一标识RAID中各个磁盘的标识,例如,编号,名称等等。
[0056] 本步骤中,开始检测时,可以将RAID的第1个扇区作为当前的扇区,可以将起始跳跃幅度作为当前步长。
[0057] 其中,起始跳跃幅度为预先设置,可以设置为1。
[0058] 本步骤中,扇区标识可以是扇区的编号。
[0059] 本步骤中,如何对当前的扇区进行检测属于本领域技术人员的公知常识,并不用于限定本发明的保护范围,这里不再赘述。
[0060] 例如,可以采用读写检测方法检测扇区是否正常。具体地,从扇区中读数据或向扇区中写数据,当读数据失败或写数据失败时,判断出扇区异常;当读数据成功且写数据成功时,判断出扇区正常。
[0061] 步骤101、判断出计算得到的和值大于或等于1且小于或等于RAID的总扇区数,将扇区标识为计算得到的和值的扇区作为当前的扇区继续执行对当前的扇区进行检测的步骤。
[0062] 本步骤中,当判断出计算得到的和值大于RAID的总扇区数时,将扇区标识为RAID的总扇区数的扇区作为当前的扇区,将起始跳跃幅度的负数作为当前步长继续执行对当前的扇区进行检测的步骤。
[0063] 当判断出计算得到的和值小于1时,将第1个扇区作为当前的扇区,将起始跳跃幅度作为当前步长继续执行对当前的扇区进行检测的步骤。
[0064] 步骤102、当判断出连续检测到扇区正常的次数大于或等于预设次数,且当前步长大于0时,将当前步长调大后继续执行计算当前的扇区的扇区标识和当前步长之间的和值的步骤。
[0065] 本步骤中,当判断出连续检测到扇区正常的次数大于或等于预设次数,且当前步长小于0时,将当前步长调小后继续执行计算当前的扇区的扇区标识和当前步长之间的和值的步骤。
[0066] 本步骤中,可以将当前步长调整为起始跳跃幅度的整数倍。
[0067] 下面通过具体实施例详细说明本发明的方法。
[0068] 图2为RAID中扇区的组成示意图。如图2所示,RAID包括三个磁盘,每个磁盘包括4个扇区,在RAID的管理模块中保存有磁盘标识和扇区标识之间的对应关系,例如,磁盘1和扇区1~4之间的对应关系,磁盘2和扇区5~8之间的对应关系,磁盘3和扇区9~12之间的对应关系。
[0069] 检测过程如下:
[0070] 对扇区1进行检测,正常,继续对扇区2进行检测,正常,继续对扇区3进行检测,调整步长,对扇区5进行检测,异常,修复扇区5,调整步长,对扇区6进行检测,正常,对扇区7进行检测,正常,对扇区8进行检测,正常,对扇区11进行检测,正常,对扇区12进行检测,正常,调整步长,对扇区11进行检测,正常,对扇区10进行检测,正常,对扇区7进行检测,正常,对扇区4进行检测,异常,修复扇区4,调整步长,对扇区3进行检测,正常,对扇区2进行检测,正常,对扇区1进行检测,正常,调整步长步长,以此类推。
[0071] 参见图3,本发明还提出了一种检测磁盘的装置,至少包括:
[0072] 检测模块,用于对当前的扇区进行检测,将检测结果发送给计算模块;在第一判断结果为计算得到的和值大于或等于1且小于或等于廉价冗余磁盘阵列RAID的总扇区数时,将扇区标识为计算得到的和值的扇区作为当前的扇区继续对当前的扇区进行检测;
[0073] 计算模块,用于在检测结果为当前的扇区正常时,计算当前的扇区的扇区标识和当前步长之间的和值;在第二判断结果为检测到扇区正常的次数大于或等于预设次数,且当前步长大于0时,将当前步长调大后继续执行计算当前的扇区的扇区标识和当前步长之间的和值的步骤;
[0074] 判断模块,用于判断计算得到的和值是否大于或等于1且小于或等于廉价冗余磁盘阵列RAID的总扇区数,将得到的第一判断结果发送给检测模块;判断连续检测到扇区正常的次数是否大于或等于预设次数,且当前步长是否大于0,将得到的第二判断结果发送给计算模块。
[0075] 本发明的装置中,判断模块还用于:
[0076] 在检测结果为当前的扇区异常时,修复当前的扇区;判断当前步长是否大于0,将得到的第三判断结果发送给计算模块;
[0077] 计算模块还用于:
[0078] 在第三判断结果为当前步长大于0时,将当前步长调整为起始跳跃幅度继续计算当前的扇区的扇区标识和当前步长之间的和值。
[0079] 本发明的装置中,计算模块还用于:
[0080] 在第三判断结果为当前步长小于0时,将当前步长调整为起始跳跃幅度的负数继续计算当前的扇区的扇区标识和当前步长之间的和值。
[0081] 本发明的装置中,判断模块还用于:
[0082] 判断检测到的RAID的磁盘中扇区异常的数量是否大于或等于预设阈值,将得到的第四判断结果发送给迁移模块;
[0083] 还包括:
[0084] 迁移模块,用于在第四判断结果为检测到的RAID的磁盘中的扇区异常的数量大于或等于预设阈值时,将扇区异常的数量大于或等于预设阈值的磁盘中的所有数据迁移到新的磁盘中,根据新的磁盘的磁盘标识更新管理模块中磁盘标识和扇区标识之间的对应关系。
[0085] 本发明的装置中,计算模块还用于:
[0086] 在第二判断结果为连续检测到扇区正常的次数大于或等于预设次数,且当前步长小于0时,将当前步长调小后继续计算当前的扇区的扇区标识和当前步长之间的和值。
[0087] 本发明的装置中,检测模块还用于:
[0088] 在第一判断结果为计算得到的和值大于RAID的总扇区数时,将扇区标识为RAID的总扇区数的扇区作为当前的扇区,将起始跳跃幅度的负数作为当前步长继续对当前的扇区进行检测。
[0089] 本发明的装置中,检测模块还用于:
[0090] 在第一判断结果为计算得到的和值小于1时,将第1个扇区作为当前的扇区,将起始跳跃幅度作为当前步长继续对当前的扇区进行检测。
[0091] 需要说明的是,以上所述的实施例仅是为了便于本领域的技术人员理解而已,并不用于限制本发明的保护范围,在不脱离本发明的发明构思的前提下,本领域技术人员对本发明所做出的任何显而易见的替换和改进等均在本发明的保护范围之内。