一种磁盘故障处理方法、装置、设备及存储介质与流程

文档序号:27487142发布日期:2021-11-22 13:18阅读:173来源:国知局
一种磁盘故障处理方法、装置、设备及存储介质与流程

1.本技术涉及存储技术领域,特别是涉及一种磁盘故障处理方法、装置、设备及存储介质。


背景技术:

2.随着计算机技术的快速发展,大数据、云计算、高性能应用逐渐兴起,其后端存储多为分布式存储系统。在分布式存储系统运行过程中,一旦有磁盘发生故障,就会触发踢盘操作,将故障磁盘剔除出分布式存储系统。
3.实际上,磁盘发生故障的原因很多,在很多情况下,磁盘发生故障并非是整个磁盘都无法正常使用,如果只要有磁盘发生故障就将其剔除出分布式存储系统,将会增加较多不必要的换盘操作,人力物力成本较高,容易影响分布式存储系统的稳定性。


技术实现要素:

4.本技术的目的是提供一种磁盘故障处理方法、装置、设备及存储介质,以减少不必要的换盘操作,节省人力物力成本,提升分布式存储系统的稳定性。
5.为解决上述技术问题,本技术提供如下技术方案:
6.一种磁盘故障处理方法,包括:
7.在监测到在目标磁盘中读取对象出现输入/输出i/o错误时,获取所述目标磁盘的当前故障扇区的故障原因;
8.如果所述故障原因为介质错误,则对所述当前故障扇区进行隔离处理;
9.将所述当前故障扇区中存储的对象恢复至所述目标磁盘的其他非隔离扇区。
10.在本技术的一种具体实施方式中,在所述获取所述目标磁盘的当前故障扇区的故障原因之后,还包括:
11.如果所述故障原因不是介质错误,则在分布式存储系统中剔除所述目标磁盘。
12.在本技术的一种具体实施方式中,在所述在分布式存储系统中剔除所述目标磁盘之后,还包括:
13.输出针对所述目标磁盘的故障告警信息。
14.在本技术的一种具体实施方式中,在所述故障原因为介质错误的情况下,在所述对所述当前故障扇区进行隔离处理之前,还包括:
15.确定所述目标磁盘的扇区在设定时间段内发生介质错误的故障次数是否达到设定次数阈值;
16.如果未达到所述次数阈值,则执行所述对所述当前故障扇区进行隔离处理的步骤。
17.在本技术的一种具体实施方式中,还包括:
18.如果所述目标磁盘的扇区在所述设定时间段内发生介质错误的故障次数达到所述次数阈值,则在分布式存储系统中剔除所述目标磁盘。
19.在本技术的一种具体实施方式中,所述获取所述目标磁盘的当前故障扇区的故障原因,包括:
20.通过小型计算机系统接口scsi通用设备文件名sg获取所述目标磁盘的当前故障扇区的故障原因。
21.在本技术的一种具体实施方式中,还包括:
22.在接收到扇区隔离信息查询指令时,输出分布式存储系统中当前隔离扇区的相关信息,所述相关信息包括介质错误发生时间及逻辑区块地址号。
23.一种磁盘故障处理装置,包括:
24.故障原因获取模块,用于在监测到在目标磁盘中读取对象出现输入/输出i/o错误时,获取所述目标磁盘的当前故障扇区的故障原因;
25.隔离处理模块,用于如果所述故障原因为介质错误,则对所述当前故障扇区进行隔离处理;
26.对象恢复模块,用于将所述当前故障扇区中存储的对象恢复至所述目标磁盘的其他非隔离扇区。
27.一种磁盘故障处理设备,包括:
28.存储器,用于存储计算机程序;
29.处理器,用于执行所述计算机程序时实现上述任一项所述的磁盘故障处理方法的步骤。
30.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述的磁盘故障处理方法的步骤。
31.应用本技术实施例所提供的技术方案,在监测到目标磁盘中读取对象出现i/o错误时,获取目标磁盘的当前故障扇区的故障原因,如果故障原因为介质错误,则对当前故障扇区进行隔离处理,并将当前故障扇区中存储的对象恢复至目标磁盘的其他非隔离扇区。在发生介质错误的情况下,只是隔离当前故障扇区,并将当前故障扇区中存储的对象恢复至其他非隔离扇区,使得其他非隔离扇区仍能够正常响应对象读取请求,减少了不必要的换盘操作,节省了人力物力成本,提升了分布式存储系统的稳定性。
附图说明
32.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
33.图1为本技术实施例中一种磁盘故障处理方法的实施流程图;
34.图2为本技术实施例中一种磁盘故障处理装置的结构示意图;
35.图3为本技术实施例中一种磁盘故障处理设备的结构示意图。
具体实施方式
36.本技术的核心是提供一种磁盘故障处理方法,可以应用于存储引擎,如bluestore。bluestore为构建在裸磁盘设备上的存储引擎,不再使用系统的文件系统,如
xfs(一种高性能的日志文件系统),而是直接管理裸盘。通过存储引擎可以直接对分布式存储系统的磁盘中存储的对象进行访问。
37.存储引擎在监测到在目标磁盘中读取对象出现输入/输出(input/output,i/o)错误时,可以获取目标磁盘的当前故障扇区的故障原因,当故障原因为介质错误时,可以对当前故障扇区进行隔离处理,并将当前故障扇区中存储的对象恢复至目标磁盘的其他非隔离扇区。这样可以减少不必要的换盘操作,节省人力物力成本,提升分布式存储系统的稳定性。
38.为了使本技术领域的人员更好地理解本技术方案,下面结合附图和具体实施方式对本技术作进一步的详细说明。显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
39.参见图1所示,为本技术实施例所提供的一种磁盘故障处理方法的实施流程图,该方法可以包括以下步骤:
40.s110:在监测到在目标磁盘中读取对象出现i/o错误时,获取目标磁盘的当前故障扇区的故障原因。
41.存储引擎可以直接对分布式存储系统的磁盘进行管理。客户端如果有对象读取请求,将会通过存储引擎在磁盘中进行相应对象读取,存储引擎将读取到的对象返回给客户端。
42.存储引擎可以对读取对象出现的错误进行监测。在监测到在目标磁盘中读取对象出现i/o错误(i/o error,eio)时,可以获取目标磁盘的当前故障扇区的故障原因。
43.具体的,存储引擎可以通过sg获取目标磁盘的当前故障扇区的故障原因。存储引擎在启动时可以维护一份磁盘和sg(scsi(small computer system interface,小型计算机系统接口)通用设备文件名)的关系,在监测到在目标磁盘中读取对象出现i/o错误时,通过sg的i/o控制接口可以读取目标磁盘对应的sg,通过sg确定目标磁盘的当前故障扇区,同时,sg的i/o控制接口可以将感知信息(sense info)透传到用户态,基于此可以查询准确的故障原因。
44.磁盘扇区的故障原因可能有多种,如hardware error、medium error、not ready、拔盘、did_bad_target、did_no_connect、did_soft_error、命令超时等等,其中hardware error表示硬件错误,medium error表示介质错误。
45.s120:如果故障原因为介质错误,则对当前故障扇区进行隔离处理。
46.对于磁盘扇区而言,介质错误即medium error是一种较为常见的非致命错误,可能是介质异常,或者因抖动导致的失败,一个或较少扇区发生介质错误,如果将相应的扇区隔离,将可避免影响磁盘其他扇区的运行。
47.所以,在获取到目标磁盘的当前故障扇区的故障原因后,可以根据故障原因,确定是否对当前故障扇区进行隔离处理。如果故障原因为介质错误,则可以对当前故障扇区进行隔离处理,如可以通过标记不可用等方式使当前故障扇区隔离出分布式存储系统,不再使用。这样可以避免进行换盘操作,隔离当前故障扇区后,目标磁盘的其他非隔离扇区还可以正常工作。
48.s130:将当前故障扇区中存储的对象恢复至目标磁盘的其他非隔离扇区。
49.在对当前故障扇区进行隔离处理之后,可以将当前故障扇区中存储的对象恢复至目标磁盘的其他非隔离扇区,如可以触发静默数据恢复操作,这样目标磁盘中存储的对象还是完整的,可以正常响应对象读取请求,避免影响上层业务。
50.应用本技术实施例所提供的方法,在监测到目标磁盘中读取对象出现i/o错误时,获取目标磁盘的当前故障扇区的故障原因,如果故障原因为介质错误,则对当前故障扇区进行隔离处理,并将当前故障扇区中存储的对象恢复至目标磁盘的其他非隔离扇区。在发生介质错误的情况下,只是隔离当前故障扇区,并将当前故障扇区中存储的对象恢复至其他非隔离扇区,使得其他非隔离扇区仍能够正常响应对象读取请求,减少了不必要的换盘操作,节省了人力物力成本,提升了分布式存储系统的稳定性。
51.在本技术的一个实施例中,在获取目标磁盘的当前故障扇区的故障原因之后,该方法还可以包括以下步骤:
52.如果故障原因不是介质错误,则在分布式存储系统中剔除目标磁盘。
53.在本技术实施例中,在监测到在目标磁盘中读取对象出现i/o错误时,获取到目标磁盘的当前故障扇区的故障原因后,可以根据故障原因,进一步确定处理方案。如果故障原因不是介质错误,如为硬件错误,即hardware error,或者其他错误,则可以认为目标磁盘已无法正常工作,可以在分布式存储系统中剔除目标磁盘,以避免目标磁盘的错误影响分布式存储系统的整体运行,用户可以根据实际情况进行换盘操作。
54.在本技术的一个实施例中,在分布式存储系统中剔除目标磁盘之后之后,该方法还可以包括以下步骤:
55.输出针对目标磁盘的故障告警信息。
56.在分布式存储系统中剔除目标磁盘之后,可以输出针对目标磁盘的故障告警信息,以使用户及时获知当前剔除的目标磁盘,及时更换故障磁盘。故障告警信息可以通过灯光、短信、邮件、人机交互界面等形式输出。
57.在本技术的一个实施例中,在故障原因为介质错误的情况下,在对当前故障扇区进行隔离处理之前,还可以包括以下步骤:
58.步骤一:确定目标磁盘的扇区在设定时间段内发生介质错误的故障次数是否达到设定次数阈值;
59.步骤二:如果未达到次数阈值,则执行对当前故障扇区进行隔离处理的操作;
60.步骤三:如果故障扇区在设定时间段内发生介质错误的故障次数达到次数阈值,则在分布式存储系统中剔除目标磁盘。
61.为便于描述,将上述两个步骤结合起来进行说明。
62.在本技术实施例中,在监测到目标磁盘中读取对象出现i/o错误时,获取到目标磁盘的当前故障扇区的故障原因后,在故障原因为介质错误的情况下,可以先确定目标磁盘的扇区在设定时间段内发生介质错误的故障次数是否达到设定次数阈值。如果目标磁盘的扇区在设定时间段内发生介质错误的故障次数达到设定次数阈值,则可以认为目标磁盘故障发生概率较大,再继续使用可能会影响分布式存储系统的整体运行,在这种情况下,可以在分布式存储系统中剔除目标磁盘,以保障分布式存储系统的稳定性。如果目标磁盘的扇区在设定时间段内发生介质错误的故障次数未达到设定次数阈值,则可以认为目标磁盘的发生介质错误的扇区还不足以影响目标磁盘的正常工作,在这种情况下,可以对当前故障
扇区进行隔离处理。
63.其中,时间段、次数阈值等可以根据实际情况进行设定和调整。如时间段为24小时,次数阈值为6,即确定目标磁盘的扇区在24小时内发生介质错误的故障次数是否达到6次。或者,时间段为7*24小时,次数阈值为12,即确定目标磁盘的扇区在7*24小时内发生介质错误的故障次数是否达到12次。再或者,时间段为目标磁盘启用开始到当前时刻的时间,次数阈值为500,即确定目标磁盘的扇区自目标磁盘开始启用到当前时刻的时间内发生介质错误的故障次数是否达到500次。
64.在对当前故障扇区进行隔离处理之前,先确定目标磁盘的扇区在设定时间段内发生介质错误的故障次数是否达到设定次数阈值,以此判定目标磁盘的扇区是否频繁发生介质错误的故障,在介质错误的故障不是频繁发生的情况下,再对当前故障扇区进行隔离处理,可以避免不必要的换盘操作,在介质错误的故障频繁发生的情况下,在分布式存储系统中剔除目标磁盘,以避免影响分布式存储系统的整体运行。
65.在本技术的一个实施例中,该方法还可以包括以下步骤:
66.在接收到扇区隔离信息查询指令时,输出分布式存储系统中当前隔离扇区的相关信息,相关信息包括介质错误发生时间及逻辑区块地址号。
67.在本技术实施例中,用户在有扇区隔离信息的查询需求时,可以通过客户端向存储引擎发出相应的扇区隔离信息查询指令,存储引擎在接收到扇区隔离信息查询指令时,可以输出分布式存储系统中当前隔离扇区的相关信息,相关信息可以包括介质错误发生时间及逻辑区块地址号,以方便用户根据当前隔离扇区的相关信息进行分析、修复、调整等操作。
68.相应于上面的方法实施例,本技术实施例还提供了一种磁盘故障处理装置,下文描述的磁盘故障处理装置与上文描述的磁盘故障处理装置方法可相互对应参照。
69.参见图2所示,该装置可以包括以下模块:
70.故障原因获取模块210,用于在监测到在目标磁盘中读取对象出现输入/输出i/o错误时,获取目标磁盘的当前故障扇区的故障原因;
71.隔离处理模块220,用于如果故障原因为介质错误,则对当前故障扇区进行隔离处理;
72.对象恢复模块230,用于将当前故障扇区中存储的对象恢复至目标磁盘的其他非隔离扇区。
73.应用本技术实施例所提供的装置,在监测到目标磁盘中读取对象出现i/o错误时,获取目标磁盘的当前故障扇区的故障原因,如果故障原因为介质错误,则对当前故障扇区进行隔离处理,并将当前故障扇区中存储的对象恢复至目标磁盘的其他非隔离扇区。在发生介质错误的情况下,只是隔离当前故障扇区,并将当前故障扇区中存储的对象恢复至其他非隔离扇区,使得其他非隔离扇区仍能够正常响应对象读取请求,减少了不必要的换盘操作,节省了人力物力成本,提升了分布式存储系统的稳定性。
74.在本技术的一种具体实施方式中,还包括磁盘剔除模块,用于:
75.在获取目标磁盘的当前故障扇区的故障原因之后,如果故障原因不是介质错误,则在分布式存储系统中剔除目标磁盘。
76.在本技术的一种具体实施方式中,还包括告警信息输出模块,用于:
77.在在分布式存储系统中剔除目标磁盘之后,输出针对目标磁盘的故障告警信息。
78.在本技术的一种具体实施方式中,还包括隔离判定模块,用于:
79.在故障原因为介质错误的情况下,在对当前故障扇区进行隔离处理之前,确定目标磁盘的扇区在设定时间段内发生介质错误的故障次数是否达到设定次数阈值;
80.如果未达到次数阈值,则触发隔离处理模块220执行对当前故障扇区进行隔离处理的操作。
81.在本技术的一种具体实施方式中,隔离判定模块,还用于:
82.如果目标磁盘的扇区在设定时间段内发生介质错误的故障次数达到次数阈值,则触发磁盘剔除模块执行在分布式存储系统中剔除目标磁盘的操作。
83.在本技术的一种具体实施方式中,故障原因获取模块210,用于:
84.通过小型计算机系统接口scsi通用设备文件名sg获取目标磁盘的当前故障扇区的故障原因。
85.在本技术的一种具体实施方式中,还包括信息输出模块,用于:
86.在接收到扇区隔离信息查询指令时,输出分布式存储系统中当前隔离扇区的相关信息,相关信息包括介质错误发生时间及逻辑区块地址号。
87.相应于上面的方法实施例,本技术实施例还提供了一种磁盘故障处理设备,包括:
88.存储器,用于存储计算机程序;
89.处理器,用于执行计算机程序时实现上述磁盘故障处理方法的步骤。
90.如图3所示,为磁盘故障处理设备的组成结构示意图,磁盘故障处理设备可以包括:处理器10、存储器11、通信接口12和通信总线13。处理器10、存储器11、通信接口12均通过通信总线13完成相互间的通信。
91.在本技术实施例中,处理器10可以为中央处理器(central processing unit,cpu)、特定应用集成电路、数字信号处理器、现场可编程门阵列或者其他可编程逻辑器件等。
92.处理器10可以调用存储器11中存储的程序,具体的,处理器10可以执行磁盘故障处理方法的实施例中的操作。
93.存储器11中用于存放一个或者一个以上程序,程序可以包括程序代码,程序代码包括计算机操作指令,在本技术实施例中,存储器11中至少存储有用于实现以下功能的程序:
94.在监测到在目标磁盘中读取对象出现输入/输出i/o错误时,获取目标磁盘的当前故障扇区的故障原因;
95.如果故障原因为介质错误,则对当前故障扇区进行隔离处理;
96.将当前故障扇区中存储的对象恢复至目标磁盘的其他非隔离扇区。
97.在一种可能的实现方式中,存储器11可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统,以及至少一个功能(比如信息获取功能、对象恢复功能)所需的应用程序等;存储数据区可存储使用过程中所创建的数据,如扇区存储对象数据、故障原因数据等。
98.此外,存储器11可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件或其他易失性固态存储器件。
99.通信接口12可以为通信模块的接口,用于与其他设备或者系统连接。
100.当然,需要说明的是,图3所示的结构并不构成对本技术实施例中磁盘故障处理设备的限定,在实际应用中磁盘故障处理设备可以包括比图3所示的更多或更少的部件,或者组合某些部件。
101.相应于上面的方法实施例,本技术实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述磁盘故障处理方法的步骤。
102.本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。
103.专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
104.结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd

rom、或技术领域内所公知的任意其它形式的存储介质中。
105.本文中应用了具体个例对本技术的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本技术的技术方案及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本技术原理的前提下,还可以对本技术进行若干改进和修饰,这些改进和修饰也落入本技术权利要求的保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1