一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种数据块修复方法、装置、设备及存储介质与流程

2022-03-09 00:24:51 来源:中国专利 TAG:


1.本发明涉及数据块修复技术领域,更具体地说,涉及一种数据块修复方法、装置、设备及存储介质。


背景技术:

2.磁盘上的坏块是指磁盘发生物理损伤时产生的无法进行擦写处理的分块。而raid(redundant arrays of independent disks,磁盘阵列)也有一个相似的概念,当阵列中一个分块的所有副本因为介质错误不可读时,就会被标记成坏块。区别于磁盘上的物理坏块,raid的坏块是一个逻辑坏块,这些被标记的坏块在物理层(磁盘或者协议层)有可能是可读的,所以raid标记的坏块是有可能被消除的。raid中的坏块会影响存储设备的io(input/output,输入/输出)处理性能。如果阵列中的一个分块被标记成坏块,那么这个分块就不能被读取。当客户主机需要读取该分块上的数据时,raid会利用该分块所在条带上的其他分块重新构建出该分块的数据内容再返回给客户主机,这无疑会延长io的处理响应时长;并且如果一个条带上累积出现两个以上的坏块,raid将无法重构出坏块区域,这直接导致raid无法响应主机端对该条带的读写处理。所以,raid标记坏块后,有必要及时检测消除坏块。
3.目前,raid消除坏块的方式较为单一,如果主机端下发的写io正好命中某个坏块,并且在该坏块上写数据成功,那么raid就会擦除该坏块的标记。这种消除坏块的方式有很大的局限性,必须要求io写数据的位置正好命中坏块。从概率统计角度来说,相对于整个阵列,一个写io命中一个坏块的概率是很小的,所以通常一个分块被标记坏块后,会存在很长的时间。


技术实现要素:

4.本发明的目的在于提供一种数据块修复方法、装置、设备及存储介质,以及时修复raid的坏块,提高raid存储数据的安全性和容错能力,保证raid的性能和稳定性。
5.为实现上述目的,本发明提供一种数据块修复方法,包括:
6.检测raid中的坏块;
7.根据所述坏块的条带号和磁盘id生成坏块io,并将所述坏块io存储至巡检元数据管理表;
8.若最近写巡检任务从所述巡检元数据管理表中获取的io信息为坏块io,则根据所述坏块io重构所述坏块的数据,并将所述数据写入磁盘。
9.其中,所述检测raid中的坏块之后,还包括:
10.将所述坏块添加至坏块管理表。
11.其中,所述将所述数据写入磁盘之后,还包括:
12.判断所述数据是否成功写入磁盘;
13.若是,则判定所述坏块修复成功;若否,则判定所述坏块修复失败。
14.其中,所述判定所述坏块修复成功之后,还包括:
15.从所述坏块管理表中删除所述坏块。
16.其中,所述判定所述坏块修复失败之后,还包括:
17.判断所述坏块的累积修复次数是否大于预定阈值;
18.若是,则判定所述坏块为物理坏块;若否,则继续执行所述将所述坏块io存储至巡检元数据管理表的步骤。
19.为实现上述目的,本发明进一步提供一种数据块修复装置,包括:
20.检测模块,用于检测raid中的坏块;
21.生成模块,用于根据所述坏块的条带号和磁盘id生成坏块io;
22.存储模块,用于将所述坏块io存储至巡检元数据管理表;
23.重构模块,用于在最近写巡检任务从所述巡检元数据管理表中获取的io信息为坏块io时,根据所述坏块io重构所述坏块的数据,并将所述数据写入磁盘。
24.其中,所述数据块修复装置还包括:
25.添加模块,用于在检测出raid中的坏块之后,将所述坏块添加至坏块管理表。
26.其中,所述数据块修复装置还包括:
27.第一判断模块,用于将所述数据写入磁盘之后,判断所述数据是否成功写入磁盘;若是,则判定所述坏块修复成功;若否,则判定所述坏块修复失败。
28.为实现上述目的,本发明进一步提供一种电子设备,包括:
29.存储器,用于存储计算机程序;
30.处理器,用于执行所述计算机程序时实现上述数据块修复方法的步骤。
31.为实现上述目的,本发明进一步提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述数据块修复方法的步骤。
32.通过以上方案可知,本发明实施例提供一种数据块修复方法、装置、设备及存储介质;在本方案中,检测raid中的坏块后,根据坏块的条带号和磁盘id生成坏块io,并将坏块io存储至巡检元数据管理表;若最近写巡检任务从巡检元数据管理表中获取的io信息为坏块io,则根据坏块io重构坏块的数据,并将数据写入磁盘。可见,在本方案中,基于raid最近写巡检任务,利用其执行周期短、执行速度快的特点,自动检测坏块、识别坏块、消除坏块,从而及时消除坏块对存储阵列io处理性能的影响,有效降低主机端读写io的响应时长,避免出现无法响应主机端读写数据的场景,提高raid存储数据的安全性和容错能力,保证raid的性能和稳定性。
附图说明
33.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
34.图1为本发明实施例公开的一种数据块修复方法流程示意图;
35.图2为本发明实施例公开的巡检元数据管理表记录坏块流程图;
36.图3为本发明实施例公开的巡检任务修复坏块处理流程图;
37.图4为本发明实施例公开的坏块修复结果检测流程图;
38.图5为本发明实施例公开的一种数据块修复装置流程示意图;
39.图6为本发明实施例公开的一种电子设备结构示意图。
具体实施方式
40.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
41.本发明实施例公开了一种数据块修复方法、装置、设备及存储介质,本方案基于raid最近写巡检任务智能消除坏块;其中,该raid最近写巡检任务的目的是对最近写io的位置,检测磁盘分块是否可读并校验条带数据是否一致。由于最近写巡检只是检测元数据中记录的1024个io,任务执行周期很短;并且巡检校验数据一致性和重构修复坏块的操作功能相近。所以本方案利用最近写巡检执行快捷、执行功能相近的特点,提出了一种坏块修复方案。在本方案中,raid标记坏块后,会在最近写巡检的元数据记录中添加一个特殊的坏块io。最近写巡检执行任务时,若发现要检测的io是一个坏块io,会直接使用条带上的其他分块重构坏块区域,然后把重构出的数据写入坏块区域,如果数据写入成功,则消除坏块,通过该方式,可及时修复raid的坏块,提高raid存储数据的安全性和容错能力,保证raid的性能和稳定性。
42.参见图1,本发明实施例提供的一种数据块修复方法流程示意图,包括:
43.s101、检测raid中的坏块;
44.在本方案中,首先需要检测raid中的坏块,并将该坏块添加至坏块管理表,该坏块管理表中记载了raid中的所有坏块,如果通过本方案对坏块修复成功,则本方案还需要从该坏块管理表中删除该坏块,以便让用户清楚的了解raid中的坏块。
45.s102、根据坏块的条带号和磁盘id生成坏块io,并将坏块io存储至巡检元数据管理表;
46.参见图2,本发明实施例提供的巡检元数据管理表记录坏块流程图;通过如2可以看出,本方案在raid检测到坏块后,将坏块添加到坏块管理表中保存管理,并利用坏块所属信息计算得出坏块所在的条带号和磁盘id(identity document,唯一标识)。然后利用条带号和磁盘id生成坏块io,并初始化对应坏块的修复次数为0,将坏块io存储到最近写巡检元数据管理表中,以便最近写巡检任务从该巡检元数据管理表中获取坏块io对坏块进行修复。
47.s103、若最近写巡检任务从巡检元数据管理表中获取的io信息为坏块io,则根据坏块io重构坏块的数据,并将数据写入磁盘。
48.参见图3,本发明实施例提供的巡检任务修复坏块处理流程图;通过图3可以看出,最近写巡检任务按后进后出的原则从巡检元数据管理表中取出需要检测的io。如果获取到的io是一个最近写的io,那么按照原先任务处理,检测条带是否可读,校验数据是否一致。如果获取到的io是一个坏块io,那么raid会利用坏块所在条带上的其他数据分块和校验分
块,重构坏块所在区域,计算出坏块上应该保存的数据。然后将重构出的坏块数据写入对应磁盘,如果写入成功,则坏块修复完成。
49.并且,本方案将数据写入磁盘之后,还需要判断数据是否成功写入磁盘;若是,则判定坏块修复成功;若否,则判定坏块修复失败,并判断坏块的累积修复次数是否大于预定阈值;若是,则判定坏块为物理坏块;若否,则继续执行将坏块io存储至巡检元数据管理表的步骤。参见图4,本发明实施例提供的坏块修复结果检测流程图;通过图4可以看出,本方案如果坏块重构数据写盘成功,表示坏块修复成功,从坏块管理表中删除坏块。如果坏块重构数据写盘失败,表示坏块修复失败,将坏块累积修复次数加一。判断该坏块的累积修复次数是否大于十次。如果坏块累积修复次数已经大于等于十次,则默认该坏块是物理坏块,无法修复,不再自动修复处理。如果坏块累积修复次数小于十次,则将坏块io重新记录到最近写巡检元数据管理表中,等待最近写巡检任务继续执行修复操作。需要说明的是,在本实施例中,仅以预定阈值为十次为例进行说明,对于存储性能和安全性要求更严格的设备,可以考虑提高尝试修复坏块的次数,甚至考虑不限制坏块修复次数,在此并不具体限定。
50.综上可以看出,本方案在修复坏块时,会根据坏块的条带号和磁盘id生成坏块io。坏块io生成后,raid会把它添加到最近写巡检的元数据记录中。最近写巡检执行任务时,按照后进后出的原则从元数据记录中取出io。若发现要检测的io是一个坏块io,会直接使用条带上的其他分块重构坏块区域,然后把重构出的数据写入坏块区域,如果数据写入成功,则消除坏块,否则会重新把坏块io重新添加到最近写巡检的元数据记录中。如果同一个坏块在尝试修复满十次后仍无法修复,则默认该坏块为物理坏块,放弃修复处理。通过该方式,使得本方案可及时消除坏块对存储阵列io处理性能的影响,有效降低主机端读写io的响应时长,避免出现无法响应主机端读写数据的场景,提高raid存储数据的安全性和容错能力,保证raid的性能和稳定性。
51.下面对本发明实施例提供的修复装置、设备及存储介质进行介绍,下文描述的修复装置、设备及存储介质与上文描述的修复方法可以相互参照。
52.参见图5,本发明实施例提供的一种数据块修复装置流程示意图,包括:
53.检测模块11,用于检测raid中的坏块;
54.生成模块12,用于根据所述坏块的条带号和磁盘id生成坏块io;
55.存储模块13,用于将所述坏块io存储至巡检元数据管理表;
56.重构模块14,用于在最近写巡检任务从所述巡检元数据管理表中获取的io信息为坏块io时,根据所述坏块io重构所述坏块的数据,并将所述数据写入磁盘。
57.其中,所述数据块修复装置还包括:
58.添加模块,用于在检测出raid中的坏块之后,将所述坏块添加至坏块管理表。
59.其中,所述数据块修复装置还包括:
60.第一判断模块,用于将所述数据写入磁盘之后,判断所述数据是否成功写入磁盘;若是,则判定所述坏块修复成功;若否,则判定所述坏块修复失败。
61.其中,所述数据块修复装置还包括:
62.删除模块,用于在判定所述坏块修复成功之后,从所述坏块管理表中删除所述坏块。
63.其中,所述数据块修复装置还包括:
64.第二判断模块,用于在判定所述坏块修复失败之后,判断所述坏块的累积修复次数是否大于预定阈值;若是,则判定所述坏块为物理坏块;若否,则继续触发所述存储模块。
65.参见图6,本发明实施例提供的一种电子设备结构示意图,包括:
66.存储器21,用于存储计算机程序;
67.处理器22,用于执行所述计算机程序时实现上述方法实施例所述的数据块修复方法的步骤。
68.在本实施例中,设备可以是pc(personal computer,个人电脑),也可以是智能手机、平板电脑、掌上电脑、便携计算机等终端设备。
69.该设备可以包括存储器21、处理器22和总线23。
70.其中,存储器21至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、磁性存储器、磁盘、光盘等。存储器21在一些实施例中可以是设备的内部存储单元,例如该设备的硬盘。存储器21在另一些实施例中也可以是设备的外部存储设备,例如设备上配备的插接式硬盘,智能存储卡(smart media card,smc),安全数字(secure digital,sd)卡,闪存卡(flash card)等。进一步地,存储器21还可以既包括设备的内部存储单元也包括外部存储设备。存储器21不仅可以用于存储安装于设备的应用软件及各类数据,例如执行修复方法的程序代码等,还可以用于暂时地存储已经输出或者将要输出的数据。
71.处理器22在一些实施例中可以是一中央处理器(central processing unit,cpu)、控制器、微控制器、微处理器或其他数据处理芯片,用于运行存储器21中存储的程序代码或处理数据,例如执行修复方法的程序代码等。
72.该总线23可以是外设部件互连标准(peripheral component interconnect,简称pci)总线或扩展工业标准结构(extended industry standard architecture,简称eisa)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
73.进一步地,设备还可以包括网络接口24,网络接口24可选的可以包括有线接口和/或无线接口(如wi-fi接口、蓝牙接口等),通常用于在该设备与其他电子设备之间建立通信连接。
74.可选地,该设备还可以包括用户接口25,用户接口25可以包括显示器(display)、输入单元比如键盘(keyboard),可选的用户接口25还可以包括标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是led显示器、液晶显示器、触控式液晶显示器以及oled(organic light-emitting diode,有机发光二极管)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在设备中处理的信息以及用于显示可视化的用户界面。
75.图6仅示出了具有组件21-25的设备,本领域技术人员可以理解的是,图6示出的结构并不构成对设备的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。
76.本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述方法实施例所述的数据块修复方法的步骤。
77.其中,该存储介质可以包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
78.综上所述,本方案利用坏块的相关信息生成一个坏块io,记录到最近写巡检元数据管理表中;最近写巡检任务重构坏块区域数据内容,尝试通过对坏块区域的覆写消除坏块;对同一坏块循环尝试执行预定次数消除坏块处理,若超过预定次数未消除,则默认为物理坏块。通过该方式,及时修复raid的坏块,提高raid存储数据的安全性和容错能力,保证raid的性能和稳定性。
79.本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
80.对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献