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

硬盘写错误的处理方法、装置、设备和介质与流程

2021-10-29 20:10:00 来源:中国专利 TAG:硬盘 介质 装置 错误 实施


1.本发明实施例涉及硬盘存储技术领域,尤其涉及一种硬盘写错误的处理方法、装置、设备和介质。


背景技术:

2.随着硬盘技术的发展,单碟磁盘的容量迅速增长,单位磁盘面积的容量目前已经逼近了理论上限。传统硬盘在记录数据(写入数据)时,是把数据写到不重叠的平行磁道上,磁道之间有一定间距,具体如图1(a)所示。叠瓦式磁记录((shingled magnetic recording,简称smr)硬盘在记录数据时,是利用smr硬盘读取所需的磁道宽度可以小于写入所需的磁道宽度,读磁头的宽度可以小于写磁头的宽度的事实,通过部分重叠前一磁道写入数据,同时留出足够的空间给较窄的读磁头读取前一条磁道的数据,具体如图1(b)所示。相较于传统硬盘而言,smr硬盘通过叠瓦式将数据写入在相同的面积内可容纳更多磁道,从而提高了数据存储密度,降低磁盘单位存储容量的成本。
3.实际应用中,虽然smr硬盘采用叠瓦式记录,将一个区域(zone)内的磁道按序部分重叠,可获得更高的数据存储密度、更大的磁盘容量和更低的单位容量成本,但是smr硬盘在zone内写入数据时,只能顺序写,不支持随机写,且每个zone内都有一个写指针,因此数据写操作的逻辑区块地址(logical block address,简称:lba)须与zone内写指针地址相同。如果smr硬盘判断数据写操作的逻辑区块地址与写指针地址不同,则向上层应用返错,并返回写指针当前地址,从而导致上层应用无法在该zone区中继续执行写操作。
4.例如,在视频监控领域中,当监控视频应用(上层应用)需要将产生的视频数据按照时间顺序存储到硬盘中时,若硬盘判断监控视频应用下发的视频数据写操作的lba与目标区域的写指针地址不同时,则向监控视频应用返错,从而导致监控视频应用无法将产生的视频数据写入到硬盘中。
5.因此,在上层应用下发的数据写操作的lba与目标区域的写指针地址不同导致出现写错误时,如何将数据写入至硬盘中,成为目前亟需解决的问题。


技术实现要素:

6.本发明实施例提供一种硬盘写错误的处理方法、装置、设备和介质,实现在硬盘中写入数据出现写错误时,能够继续将数据写入硬盘中。
7.第一方面,本发明实施例提供了一种硬盘写错误的处理方法,该方法包括:
8.确定上层应用向硬盘发送写操作的时长是否达到时长阈值;
9.若达到时长阈值,且未接收到所述硬盘反馈的写结果,则控制所述硬盘进行下电和上电操作,并向所述硬盘重新发送所述写操作或者向所述硬盘发送所述上层应用发送的新的写操作;
10.若接收到所述硬盘反馈的写错误信息,则根据所述写错误信息,对写错误进行处理。
11.第二方面,本发明实施例还提供了一种硬盘写错误的处理装置,该装置包括:
12.确定模块,用于确定上层应用向硬盘发送写操作的时长是否达到时长阈值;
13.控制模块,用于若达到时长阈值,且未接收到所述硬盘反馈的写结果,则控制所述硬盘进行下电和上电操作,并向所述硬盘重新发送所述写操作或者向所述硬盘发送所述上层应用发送的新的写操作;
14.处理模块,用于若接收到所述硬盘反馈的写错误信息,则根据所述写错误信息,对写错误进行处理。
15.第三方面,本发明实施例还提供了一种电子设备,包括:
16.一个或多个处理器;
17.存储装置,用于存储一个或多个程序,
18.当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明实施例中任一所述的硬盘写错误的处理方法。
19.第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本发明实施例中任一所述的硬盘写错误的处理方法。
20.本发明实施例公开的技术方案,具有如下有益效果:
21.通过确定上层应用向硬盘发送写操作的时长是否达到时长阈值,若确定达到时长阈值,且未收到硬盘反馈的写结果,则控制硬盘进行下电和上电操作,并向硬盘重新发送写操作或者向硬盘发送上层应用发送的新的写操作,若接收到硬盘反馈的写错误信息,则根据写错误信息,对写错误进行处理,以使硬盘将写操作对应的数据写入硬盘中,以此解决在硬盘中写入数据出现写错误时,也能继续将数据写入硬盘中,从而提高了数据写入的可靠性。
附图说明
22.图1(a)是相关技术中利用传统硬盘记录数据的示意图;
23.图1(b)是相关技术中利用叠瓦式磁记录硬盘记录数据的示意图;
24.图2是本发明实施例提供的一种硬盘写错误的处理方法的流程示意图;
25.图3是本发明实施例提供的另一种硬盘写错误的处理方法的流程示意图;
26.图4是本发明实施例提供的再一种硬盘写错误的处理方法的流程示意图;
27.图5是本发明实施例提供的一种对硬盘写错误进行处理方式的示意图;
28.图6是本发明实施例提供的一种硬盘写错误的处理装置的结构示意图;
29.图7是本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
30.下面结合附图和实施例对本发明实施例作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明实施例,而非对本发明实施例的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明实施例相关的部分而非全部结构。
31.下面参考附图对本发明实施例的硬盘写错误的处理方法、装置、设备和介质。
32.图2是本发明实施例提供的一种硬盘写错误的处理方法的流程示意图,本实施例可适用于在硬盘中写入数据出现写错误时,对写错误进行处理的情况,该方法可以由硬盘
写错误的处理装置来执行,该装置可由硬件和/或软件组成,并一般可集成于电子设备中。如图2所示,该方法具体包括如下:
33.s201,确定上层应用向硬盘发送写操作的时长是否达到时长阈值。
34.本发明实施例中,上层应用可以是任意具有数据存储需求的应用,例如监控视频应用或各类办公软件等,此处对其不做具体限定。其中,各类办公软件可以为但不限于:word、excel和visio等。
35.在本实施例中,硬盘为叠瓦式磁记录(shingled magnetic recording,简称smr)硬盘。
36.其中,时长阈值可根据实际应用需要进行设置。例如,15秒(s),20s或者30s等。优选的,本发明实施例可将时长阈值设置为15s。
37.示例性的,当上层应用产生要存储的数据时,可先向中间层发送携带有待存储数据的写操作,进而中间层将该写操作发送给驱动层(硬盘写错误的处理装置),然后驱动层再将该写操作发送给硬盘,以使硬盘根据该写操作将待存储的数据写入至与该数据对应的目标区域中。在硬盘将数据成功写入或者未成功写入目标区域之后,会将写结果反馈给驱动层,驱动层再将写结果反馈给中间层,之后中间层将写结果反馈给上层应用,以使上层应用根据写结果确定是否发送新的待存储数据的写操作。其中,中间层可选为小型计算机系统接口(small computer system interface,简称为:scsi)。本实施例中,写结果包括:写成功结果和写错误结果。
38.通常将写操作发送给硬盘,以使硬盘将数据写入目标区域并接收硬盘反馈写结果的花费时长相对稳定,一般不会达到时长阈值,例如15s。因此,当上层应用将写操作发送给硬盘之后,硬盘写错误的处理装置会启动预先配置的计时器,以监测硬盘是否在时长阈值内返回写结果。本实施例中时长阈值根据实际需要进行适应性设置,此处对其不做具体限定。
39.s202,若达到时长阈值,且未接收到所述硬盘反馈的写结果,则控制所述硬盘进行下电和上电操作,并向所述硬盘重新发送所述写操作或者向所述硬盘发送所述上层应用发送的新的写操作。
40.需要说明的是,向硬盘发送的写操作中除了携带有待存储的数据之外,还包括:数据的目标逻辑区块地址。也就是说,在硬盘接收到写操作之后,硬盘首先会对写操作进行解析,以获取待存储的数据及数据的目标逻辑区块地址;然后,将数据的目标逻辑区块地址与该目标逻辑区块对应目标区域中的写指针地址进行比对,以确定目标逻辑区块地址和写指针地址是否相同;若相同,则将写操作的数据(待存储的数据)写入至写指针地址所指的区域中,并向硬盘写错误的处理装置返回写成功结果;若不同,则向硬盘写错误的处理装置返回写错误结果,其中写错误结果具体为本实施例中写错误信息。
41.然而,当硬盘反馈了写结果,但是硬盘与硬盘写错误的处理装置之间的链路出现瞬时异常,或者硬盘写错误的处理装置自身出现瞬时异常,导致硬盘写错误的处理装置无法接收到硬盘反馈的写结果,从而使得上层应用在超过时长阈值未接收到写结果时,误认为硬盘写操作失败,而自动发起重写机制;或者,当硬盘出现异常掉电,导致硬盘停止工作,从而不能执行对写操作携带的数据进行写入操作,使得硬盘写错误的处理装置监测到向硬盘发送写操作的时长达到时长阈值,且未能接收到硬盘反馈的写结果,误认为硬盘写操作
已执行完成,而接收上层应用下发的新的写操作,以将新的写操作发送给硬盘的情况。
42.因此,本实施例在确定向硬盘发送写操作的时长达到时长阈值,且未接收到硬盘反馈的写结果时,首先控制硬盘进行下电和上电操作,以排查是否是因为硬盘异常掉电而导致没有反馈写结果的问题。其中,控制硬盘进行下电和上电操作时,还对下电和上电次数进行统计。之后,再向重新上电的硬盘重新发送写操作或者向硬盘发送上层应用发送的新的写操作,以使硬盘根据写操作进行数据写入操作,实现将上层应用发送的数据写入硬盘中。
43.需要说明的是,控制硬盘进行下电和上电操作,并向硬盘重新发送写操作或者向硬盘发送上层应用发送的新的写操作,需要满足以下条件:硬盘与硬盘写错误的处理装置之间的链路恢复正常,或者硬盘写错误的处理装置恢复正常。也就是说,当硬盘与硬盘写错误的处理装置之间的链路恢复正常,或者硬盘写错误的处理装置恢复正常时,才能执行向硬盘重新发送写操作或者向硬盘发送新的写操作。
44.s203,若接收到所述硬盘反馈的写错误信息,则根据所述写错误信息,对写错误进行处理。
45.其中,所述写错误信息包括:写指针的当前地址、写操作的目标逻辑区块地址或者新的写操作的目标逻辑区块地址,其中所述写指针位于所述目标逻辑区块地址对应的目标区域。
46.示例性的,若接收到硬盘反馈的写结果,且确定该写结果为写错误信息时,通过对该写错误信息进行解析,以获取该写错误信息中写指针的当前地址和写操作的目标逻辑区块地址,或者获取该写错误信息中写指针的当前地址和新的写操作的目标逻辑区块地址。然后,根据写错误信息中写指针的当前地址和写操作的目标逻辑区块地址,或者写指针的当前地址和新的写操作的目标逻辑区块地址的比较结果,对写错误进行处理,以使将写操作携带的数据写入至硬盘中。
47.即,本实施例中根据所述写错误信息,对写错误进行处理,可包括:确定所述写错误信息中所述写指针的当前地址和所述写操作的目标逻辑区块地址的第一比较结果;或者,确定所述写错误信息中所述写指针的当前地址和新的写操作的目标逻辑区块地址的第二比较结果;根据所述第一比较结果或者所述第二比较结果,对所述写错误进行处理。
48.由于硬盘的种类可包括多种,例如,主机管理的叠瓦式磁记录(host managed shingled magnetic recording,简称为:hm smr)硬盘、主机感知的叠瓦式磁记录(host aware shingled magnetic recording,简称为:ha smr)硬盘和驱动器自管理的叠瓦式磁记录(drive managed shingled magnetic recording,简称为:dm smr)硬盘。其中,dm smr硬盘内顺序写入区域需要进行数据迁移、垃圾回收等背景操作,dm smr盘的性能可能受到不可预测的影响,性能波动巨大。hm smr硬盘不将自身伪装为传统磁盘,而是根据zbc/zac标准对外暴露了区域(zone)和写指针(wp)的抽象结构,允许上层应用来完全管理smr盘的顺序写入约束,对不符合顺序写规则的i/o请求则直接返错。通过向上暴露新接口,hm smr硬盘的i/o行为完全受应用控制,因而其性能是可控的,能最大化发挥smr盘的优势。ha smr硬盘提供了和hm smr硬盘一样的新接口,但是当其收到不符合顺序写原则的i/o时,ha smr应盘将允许其写入而非报错,具有一定的灵活性。
49.为此,根据写错误信息,对写错误进行处理之前,本发明实施例可选的,还包括:确
定所述硬盘的类型是否为主机管理的叠瓦式磁记录硬盘;若是,则执行对写错误进行处理步骤。
50.也就是说,当确定硬盘的类型为主机管理的叠瓦式磁记录硬盘时,才进行写错误处理,否则不做处理。
51.在本发明一个实施例中,向所述硬盘重新发送所述写操作或者向所述硬盘发送所述上层应用发送的新的写操作之后,若监测到再次到达时长阈值时,还未接收到硬盘反馈的写结果,则确定硬盘的下电次数和上电次数是否达到预设次数(例如3次)。若未达到3次,则再一次控制硬盘进行下电和上电操作,并向硬盘重新发送写操作或者向硬盘发送上层应用发送的新的写操作;若监测到再一次达到时长阈值时,仍未接收到硬盘反馈的写结果,则确定下电次数和上电次数是否达到3,若达到3次,则更换硬盘进行数据写入操作。
52.本发明实施例提供的硬盘写错误的处理方法,通过确定上层应用向硬盘发送写操作的时长是否达到时长阈值,若确定达到时长阈值,且未收到硬盘反馈的写结果,则控制硬盘进行下电和上电操作,并向硬盘重新发送写操作或者向硬盘发送上层应用发送的新的写操作,若接收到硬盘反馈的写错误信息,则根据写错误信息,对写错误进行处理,以使硬盘将写操作对应的数据写入硬盘中,以此解决在硬盘中写入数据出现写错误时,也能继续将数据写入硬盘中,从而提高了数据写入的可靠性。
53.图3是本发明实施例提供的另一种硬盘写错误的处理方法的流程示意图,本实施例在上述实施例的基础上进行进一步优化。在此基础上,对“确定所述写指针的当前地址和所述写操作的目标逻辑区块地址的第一比较结果;根据所述第一比较结果,对所述写错误进行处理”进一步优化。如图3所示,该方法具体包括如下:
54.s301,确定上层应用向硬盘发送写操作的时长是否达到时长阈值。
55.s302,若达到时长阈值,且未接收到所述硬盘反馈的写结果,则控制所述硬盘进行下电和上电操作,并向所述硬盘重新发送所述写操作。
56.s303,若接收到所述硬盘反馈的写错误信息,则将所述写错误信息中所述写指针的当前地址和所述写操作的目标逻辑区块地址进行作差,得到第一差值。
57.示例性的,通过对硬盘反馈的写错误信息进行解析,以获取该写错误信息包括的写指针的当前地址和写操作的目标逻辑区块地址。然后,将写指针的当前地址和写操作的目标逻辑区块地址进行作差,得到第一差值。
58.例如,若写指针的当前地址为:x1,写操作的目标逻辑区块地址为y1,则x1-y1=d1。
59.s304,获取所述写操作的i/o大小。
60.可选的,获取写操作的i/o大小,可通过如下方式实现:
61.方式一
62.在接收到上层应用发送的写操作时,硬盘写错误的处理装置会对写操作进行分析处理,以得到写操作的i/o大小,并将该写操作的i/o大小存储至自身存储模块中。从而,当接收到硬盘反馈的写错误信息为向硬盘重新发送写操作的错误信息时,可基于该写操作的标识从存储模块中,获取对应的写操作的i/o大小。
63.方式二
64.上层应用发送写操作时,将该写操作的i/o大小携带在该写操作中。当硬盘写错误
的处理装置接收到上层应用发送的上述写操作之后,通过对该写操作进行解析,可获取该写操作的i/o大小。然后,将该写操作的i/o大小存储至自身存储模块中,从而当接收到硬盘反馈的写错误信息为向硬盘重新发送写操作的错误信息时,可基于该写操作的标识从存储模块中,获取对应的写操作的i/o大小。
65.需要说明的是,上述两种获取写操作的i/o大小的方式仅作为对本发明实施例的示例性说明,不作为对本发明实施例的具体限定。
66.s305,确定所述第一差值是否大于所述写操作的i/o大小,若大于,则执行s306,否则,执行s307。
67.以上述示例继续说明,假设写操作的i/o大小为z1,则将d1减去z1得到差值,然后确定差值是否大于零;若差值大于零,则确定d1大于z1;否则,确定d1小于或者等于z1。
68.s306,若所述第一差值大于所述写操作的i/o大小,则确定上层应用出现异常,控制所述硬盘将所述写操作的数据写入至预留区域,并记录所述预留区域地址与目标区域地址之间的映射关系。
69.其中,所述目标区域为所述写操作的逻辑区块对应的区域。
70.其中,预留区域是指预先在硬盘的起始位置或者结束位置处预留的一个区域。
71.也就是说,当确定第一差值大于写操作的i/o大小时,可确定写指针的当前地址(所在位置)在写操作的目标逻辑区块地址之后,且差距较大,即确定硬盘已成功将该写操作的数据存储至目标区域。为此,本实施例可将写操作的数据写入至预留区域中,以避免硬盘再次向硬盘写错误的处理装置反馈写错误信息。其中,将写操作的数据写入预留区域中之后,还记录预留区域地址与目标区域地址之间的映射关系,以为后续将预留区域中的该写操作的数据移动至目标区域奠定基础。
72.s307,若所述第一差值小于或者等于所述写操作的i/o大小,则确定所述硬盘的写结果为成功,向上层应用反馈数据写成功的信息。
73.具体的,当确定第一差值小于或者等于写操作的i/o大小时,确定硬盘将上层应用发送的写操作的数据已经成功存储至目标区域,则向上层应用反馈数据写成功的信息,以使上层应用根据写成功的信息,确定是否下发下一个写操作。
74.本发明实施例提供的硬盘写错误的处理方法,通过确定上层应用向硬盘发送写操作的时长是否达到时长阈值,若确定达到时长阈值,且未收到硬盘反馈的写结果,则控制硬盘进行下电和上电操作,并向硬盘重新发送写操作,若接收到硬盘反馈的写错误信息,且写错误信息为向硬盘重新发送写操作的结果,则根据写错误信息,对写错误进行处理,以使硬盘在确定写操作的目标逻辑区块地址与写指针的当前地址不同时,也能将写操作对应的数据写入硬盘中,以此解决在硬盘中写入数据出现写错误时,也能继续将数据写入硬盘中,从而提高了数据写入的可靠性。
75.基于上述实施例,本发明实施例根据写错误信息,对写错误进行处理之后,可选的还包括:若所述预留区域中存储的数据量达到预设阈值或者写指针再次移动到所述预留区域中任意数据的目标区域时,则根据所述数据的目标区域地址,将所述预留区域中的数据移动至目标区域中。
76.其中,预设阈值可根据预留区域的大小进行适应性设置。例如,若预留区域的大小为512千字节(kb),那么预设阈值可设置为409.6kb或者435.2kb等。
77.也就是说,当预留区域中存储的数据量达到预设阈值或者写指针再次移动到预留区域中任一数据的目标区域时,将预留区域中的数据移动到对应目标区域,以实现在出现写错误时,将数据保存暂时存储于预留区域,以确保硬盘可以继续进行数据存储操作,且不会出现数据丢失的情况。
78.图4是本发明实施例提供的再一种硬盘写错误的处理方法的流程示意图,本实施例在上述实施例的基础上进行进一步优化。在此基础上,对“确定所述写错误信息中所述写指针的当前地址和新的写操作的目标逻辑区块地址的第二比较结果;根据所述第二比较结果,对所述写错误进行处理”进一步优化。如图4所示,该方法具体包括:
79.s401,确定上层应用向硬盘发送写操作的时长是否达到时长阈值。
80.s402,若达到时长阈值,且未接收到所述硬盘反馈的写结果,则控制所述硬盘进行下电和上电操作,并向所述硬盘发送所述上层应用发送的新的写操作。
81.s403,若接收到所述硬盘反馈的写错误信息,则将所述写错误信息中所述新的写操作的目标逻辑区块地址与写指针的当前地址进行作差,得到第二差值。
82.示例性的,通过对硬盘反馈的写错误信息进行解析,以获取该写错误信息包括的写指针的当前地址和新的写操作的目标逻辑区块地址。然后,将新的写操作的目标逻辑区块地址和写指针的当前地址进行作差,得到第二差值。
83.例如,若写指针的当前地址为:p,写操作的目标逻辑区块地址为:m,则m-p=d2。
84.s404,获取所述新的写操作的i/o大小。
85.可选的,获取新的写操作的i/o大小,可通过如下方式实现:
86.方式一
87.在接收到上层应用发送的新的写操作时,硬盘写错误的处理装置会对新的写操作进行分析处理,以得到新的写操作的i/o大小,并将该新的写操作的i/o大小存储至自身存储模块中。因此,当接收到硬盘反馈的写错误信息为向硬盘发送上层应用发送的新的写操作的错误信息时,可基于该新的写操作的标识从存储模块中,获取对应的新的写操作的i/o大小。
88.方式二
89.上层应用发送新的写操作时,将该新的写操作的i/o大小携带在该新的写操作中。当硬盘写错误的处理装置接收到上层应用发送的上述新的写操作之后,通过对该新的写操作进行解析,可获取该新的写操作的i/o大小。然后,将该新的写操作的i/o大小存储至自身存储模块中,从而当接收到硬盘反馈的写错误信息为向硬盘发送所述上层应用发送的新的写操作的错误信息时,可基于该新的写操作的标识从存储模块中,获取对应新的写操作的i/o大小。
90.需要说明的是,上述两种获取新的写操作的i/o大小的方式仅作为对本发明实施例的示例性说明,不作为对本发明实施例的具体限定。
91.s405,确定所述第二差值是否大于所述新的写操作的i/o大小,若大于,则执行s406,否则,执行s407。
92.以上述示例继续说明,假设写操作的i/o大小为z2,则将d2减去z2得到差值,然后确定差值是否大于零;若差值大于零,则确定d2大于z2;否则,确定d2小于或者等于z2。
93.s406,若所述第二差值大于所述新的写操作的i/o大小,则确定上层应用或硬盘出
现异常,控制所述硬盘将所述新的写操作的数据写入至预留区域中,并记录所述预留区域地址与目标区域地址之间的映射关系。
94.其中,所述目标区域为所述新的写操作的逻辑区块对应的区域。
95.其中,上层应用或硬盘出现异常,是指上层应用或硬盘出现异常掉电。
96.其中,预留区域是指预先在硬盘的起始位置或者结束位置处预留的一个区域。
97.也就是说,当确定第二差值大于新的写操作的i/o大小时,可确定写指针的当前地址(所在位置)在新的写操作的目标逻辑区块地址之前,且差距较大,即确定写指针的当前地址所指的目标区域并未写入数据,因此无法将新的写操作的数据写入与新的写操作的目标逻辑区域地址对应的目标区域中。为此,本实施例可将新的写操作的数据写入至预留区域中,以避免硬盘再次向硬盘写错误的处理装置反馈写错误信息。其中,将新的写操作的数据写入预留区域中之后,还记录预留区域地址与目标区域地址之间的映射关系,以为后续将预留区域中的该新的写操作的数据移动至目标区域奠定基础。
98.s407,若所述第二差值小于或者等于所述新的写操作的i/o大小,则在所述第二差值对应区域中写入第一数值,并将所述新的写操作的数据写入至目标区域。
99.其中,第一数值可根据实际需要进行设置。优选的,本实施例将第一数值设置为0。
100.具体的,当确定第二差值小于或者等于新的写操作的i/o大小时,确定写指针的当前地址在新的写操作的目标逻辑区块地址之前,且差距较小。为了使得硬盘将该新的写操作的数据写入目标区域,本实施例可在第二差值对应区域中写入第一数据,以使写指针的当前地址移动至与新的写操作的目标逻辑区块地址相同,从而将新的写操作的数据写入目标区域中。
101.下面结合图5,对本实施例上述提供的硬盘写错误的处理方法进行说明。
102.若硬盘写错误出现在smr硬盘组成的阵列中,其中阵列的写是按条带写的。下面以raid5为例,硬盘阵列由三块smr硬盘a、b和c组成。当上层应用在对该raid进行写操作的时候,当写到条带0中的段b0时,硬盘c异常掉电,但是上层应用误认为该条带0写成功了。从而导致硬盘a和硬盘b的写指针已经到了段a1、b1的起始位置,但是硬盘c的写指针还在c0起始位置。针对这种情况,本发明实施例基于获取硬盘反馈的写错误信息中写指针的当前地址f和新的写操作的目标逻辑区块地址g,对该写错误进行处理。如果g-f<=新的写操作的i/o大小,则对g至f之间区域中写0补全该区域,并重试写操作,避免后续写入无法进行。如果g-f>新的写操作的i/o大小,则通过在硬盘预留区域写入新的写操作的数据,并记录所述预留区域地址与目标区域地址之间的映射关系。
103.本发明实施例提供的硬盘写错误的处理方法,通过确定上层应用向硬盘发送写操作的时长是否达到时长阈值,若确定达到时长阈值,且未收到硬盘反馈的写结果,则控制硬盘进行下电和上电操作,并向硬盘重新发送写操作或者向硬盘发送上层应用发送的新的写操作,若接收到硬盘反馈的写错误信息,且写错误信息为向硬盘发送上层应用发送的新的写操作的结果,则根据写错误信息,对写错误进行处理,以使硬盘在确定新的写操作的目标逻辑区块地址与写指针的当前地址不同时,也能将写操作对应的数据写入硬盘中,以此解决在硬盘中写入数据出现写错误时,也能继续将数据写入硬盘中,从而提高了数据写入的可靠性。
104.基于上述实施例,本发明实施例根据写错误信息,对写错误进行处理之后,可选的
还包括:若所述预留区域中存储的数据量达到预设阈值或者写指针再次移动到所述预留区域中任意数据的目标区域时,则根据所述数据的目标区域地址,将所述预留区域中的数据移动至目标区域中。
105.其中,预设阈值可根据预留区域的大小进行适应性设置。例如,若预留区域的大小为512千字节(kb),那么预设阈值可设置为409.6kb或者435.2kb等。
106.也就是说,当预留区域中存储的数据量达到预设阈值或者写指针再次移动到预留区域中任一数据的目标区域时,将预留区域中的数据移动到对应目标区域,以实现在出现写错误时,将数据保存暂时存储于预留区域,以确保硬盘可以继续进行数据存储操作,且不会出现数据丢失的情况。
107.为了实现上述目的,本发明实施例还提出了一种硬盘写错误的处理装置。图6是本发明实施例提供的一种硬盘写错误的处理装置的结构示意图。如图6所示,该装置600包括:确定模块610、控制模块620和处理模块630。
108.其中,确定模块610,用于确定上层应用向硬盘发送写操作的时长是否达到时长阈值;
109.控制模块620,用于若达到时长阈值,且未接收到所述硬盘反馈的写结果,则控制所述硬盘进行下电和上电操作,并向所述硬盘重新发送所述写操作或者向所述硬盘发送所述上层应用发送的新的写操作;
110.处理模块630,用于若接收到所述硬盘反馈的写错误信息,则根据所述写错误信息,对写错误进行处理。
111.作为本发明实施例的一种可选的实现方式,所述写错误信息包括:写指针的当前地址、写操作的目标逻辑区块地址或者新的写操作的目标逻辑区块地址,其中所述写指针位于所述目标逻辑区块地址对应的目标区域;
112.相应地,所述处理模块630,包括:第一确定单元、第二确定单元和处理单元;
113.其中,第一确定单元,用于确定所述写错误信息中所述写指针的当前地址和所述写操作的目标逻辑区块地址的第一比较结果;或者,
114.第二确定单元,用于确定所述写错误信息中所述写指针的当前地址和新的写操作的目标逻辑区块地址的第二比较结果;
115.处理单元,用于根据所述第一比较结果或者所述第二比较结果,对所述写错误进行处理。
116.作为本发明实施例的一种可选的实现方式,所述第一确定单元,具体用于:
117.将所述写错误信息中所述写指针的当前地址和所述写操作的目标逻辑区块地址进行作差,得到第一差值;
118.相应地,处理单元,具体用于:
119.获取所述写操作的i/o大小;
120.确定所述第一差值是否大于所述写操作的i/o大小;
121.根据比较结果,对所述写错误进行处理。
122.作为本发明实施例的一种可选的实现方式,所述处理单元,还用于:
123.若所述第一差值大于所述写操作的i/o大小,则确定上层应用出现异常,控制所述硬盘将所述写操作的数据写入至预留区域,并记录所述预留区域地址与目标区域地址之间
的映射关系;其中,所述目标区域为所述写操作的逻辑区块对应的区域;
124.若所述第一差值小于或者等于所述写操作的i/o大小,则确定所述硬盘的写结果为成功,向上层应用反馈数据写成功的信息。
125.作为本发明实施例的一种可选的实现方式,所述第二确定单元,具体用于:
126.将所述写错误信息中所述新的写操作的目标逻辑区块地址与写指针的当前地址进行作差,得到第二差值;
127.相应地,处理单元,具体用于:
128.获取所述新的写操作的i/o大小;
129.确定所述第二差值是否大于所述新的写操作的i/o大小;
130.根据比较结果,对所述写错误进行处理。
131.作为本发明实施例的一种可选的实现方式,所述处理单元,还用于:
132.若所述第二差值大于所述新的写操作的i/o大小,则确定上层应用或硬盘出现异常,控制所述硬盘将所述新的写操作的数据写入至预留区域中,并记录所述预留区域地址与目标区域地址之间的映射关系;其中,所述目标区域为所述新的写操作的逻辑区块对应的区域;
133.若所述第二差值小于或者等于所述新的写操作的i/o大小,则在所述第二差值对应区域中写入第一数值,并将所述新的写操作的数据写入至目标区域。
134.作为本发明实施例的一种可选的实现方式,所述装置600还包括:数据移动模块;
135.其中,数据移动模块,用于若所述预留区域中存储的数据量达到预设阈值或者写指针再次移动到所述预留区域中任意数据的目标区域时,则根据所述数据的目标区域地址,将所述预留区域中的数据移动至目标区域中。
136.作为本发明实施例的一种可选的实现方式,所述装置600,所述方法还包括:硬盘类型确定模块;
137.其中,硬盘类型确定模块,用于确定所述硬盘的类型是否为主机管理的叠瓦式磁记录硬盘;
138.所述控制模块,还用于若是,则执行对写错误进行处理步骤。
139.需要说明的是,前述对硬盘写错误的处理方法实施例的解释说明也适用于该实施例的硬盘写错误的处理装置,其实现原理类似,此处不再赘述。
140.本发明实施例提供的硬盘写错误的处理装置,通过确定上层应用向硬盘发送写操作的时长是否达到时长阈值,若确定达到时长阈值,且未收到硬盘反馈的写结果,则控制硬盘进行下电和上电操作,并向硬盘重新发送写操作或者向硬盘发送上层应用发送的新的写操作,若接收到硬盘反馈的写错误信息,则根据写错误信息,对写错误进行处理,以使硬盘将写操作对应的数据写入硬盘中,以此解决在硬盘中写入数据出现写错误时,也能继续将数据写入硬盘中,从而提高了数据写入的可靠性。
141.为了实现上述目的,本发明实施例还提出了一种电子设备。
142.图7是本发明提供的一种电子设备的结构示意图。图7示出了适于用来实现本发明实施方式的示例性电子设备700的框图。图7显示的电子设备700仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
143.如图7所示,电子设备700以通用计算设备的形式表现。电子设备700的组件可以包
括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
144.总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(isa)总线,微通道体系结构(mac)总线,增强型isa总线、视频电子标准协会(vesa)局域总线以及外围组件互连(pci)总线。
145.电子设备700典型地包括多种计算机系统可读介质。这些介质可以是任何能够被电子设备700访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
146.系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(ram)30和/或高速缓存存储器32。电子设备700可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图7未显示,通常称为“硬盘驱动器”)。尽管图7中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如cd-rom,dvd-rom或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
147.具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
148.电子设备700也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该电子设备700交互的设备通信,和/或与使得该电子设备700能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口22进行。并且,电子设备700还可以通过网络适配器20与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与电子设备700的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备700使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。
149.处理单元16通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现本发明实施例所提供的硬盘写错误的处理方法,包括:
150.确定上层应用向硬盘发送写操作的时长是否达到时长阈值;
151.若达到时长阈值,且未接收到所述硬盘反馈的写结果,则控制所述硬盘进行下电和上电操作,并向所述硬盘重新发送所述写操作或者向所述硬盘发送所述上层应用发送的新的写操作;
152.若接收到所述硬盘反馈的写错误信息,则根据所述写错误信息,对写错误进行处理。
153.需要说明的是,前述对硬盘写错误的处理方法实施例的解释说明也适用于该实施
例的电子设备,其实现原理类似,此处不再赘述。
154.本发明实施例提供的电子设备,通过确定上层应用向硬盘发送写操作的时长是否达到时长阈值,若确定达到时长阈值,且未收到硬盘反馈的写结果,则控制硬盘进行下电和上电操作,并向硬盘重新发送写操作或者向硬盘发送上层应用发送的新的写操作,若接收到硬盘反馈的写错误信息,则根据写错误信息,对写错误进行处理,以使硬盘将写操作对应的数据写入硬盘中,以此解决在硬盘中写入数据出现写错误时,也能继续将数据写入硬盘中,从而提高了数据写入的可靠性。
155.为了实现上述目的,本发明还提出了一种计算机可读存储介质。
156.本发明实施例提供的计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明实施例所述的硬盘写错误的处理方法,该方法包括:
157.确定上层应用向硬盘发送写操作的时长是否达到时长阈值;
158.若达到时长阈值,且未接收到所述硬盘反馈的写结果,则控制所述硬盘进行下电和上电操作,并向所述硬盘重新发送所述写操作或者向所述硬盘发送所述上层应用发送的新的写操作;
159.若接收到所述硬盘反馈的写错误信息,则根据所述写错误信息,对写错误进行处理。
160.本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
161.计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
162.计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于无线、电线、光缆、rf等等,或者上述的任意合适的组合。
163.可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、smalltalk、c ,还包括常规的过程式程序设计语言—诸如”c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提
供商来通过因特网连接)。
164.注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
再多了解一些

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

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

相关文献

  • 日榜
  • 周榜
  • 月榜