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

一种硬盘管理方法、装置、设备及机器可读存储介质与流程

2022-03-23 03:16:46 来源:中国专利 TAG:


1.本公开涉及通信技术领域,尤其是涉及一种硬盘管理方法、装置、设备及机器可读存储介质。


背景技术:

2.为了进一步优化存储性能,以及出于对数据安全性的考虑,我们通常会使用raid技术对硬盘进行组合,以获得更好的体验。
3.按照实现方式的不同,raid可以被分为“软raid”、“半软半硬raid”和“硬raid”三种类型。
4.硬件raid不依赖体系架构,需要额外的raid卡。raid卡拥有独立的内存、cpu,能够提供完成的数据处理能力,几乎不占用系统内的额外cpu、内存资源,同时为系统提供高的存储性能与安全性。
5.在这样的场景下,将会有大量的硬盘被统一的管理在同一张raid卡下,这不可避免的造成了本应该独立的硬盘个体之间产生一定程度的耦合关系。
6.在正常情况下,这些耦合并不会带来任何的负面影响,但是在某些场景中这类看似无关痛痒的耦合关系将会给的存储系统带来极大的问题。
7.比如,同一张raid卡下的某一块硬盘发生异常时,由于raid卡的故障处理机制以及这种耦合关系的存在,或许会导致其管理下的所有硬盘的io被阻塞,这种阻塞会持续很长时间,直到异常硬盘被恢复或者被raid卡识别为坏盘并提出管理范围方才终止。


技术实现要素:

8.有鉴于此,本公开提供一种硬盘管理方法、装置及电子设备、机器可读存储介质,以改善上述正常硬盘因耦合长时间被阻塞的问题。
9.具体地技术方案如下:
10.本公开提供了一种硬盘管理方法,应用于硬盘管理设备,所述方法包括:获取被监测硬盘的io状态,过滤找出存在io超时的硬盘;获取io超时的硬盘的硬盘健康状态信息,根据硬盘健康状态信息找出硬盘健康状态信息异常且存在io超时的硬盘;发送下电命令,所述下电命令包含使硬盘健康状态信息异常且存在io超时的硬盘下电的指令。
11.作为一种技术方案,所述发送下电命令,所述下电命令包含使硬盘健康状态信息异常且存在io超时的硬盘下电的指令,包括:向bmc发送硬盘下电命令,以使bmc根据所述硬盘下电命令通过i2c总线控制硬盘背板的cpld对所述硬盘健康状态信息异常且存在io超时的硬盘关联的硬盘槽位进行下电操作。
12.作为一种技术方案,所述获取被监测硬盘的io状态,过滤找出存在io超时的硬盘,包括:统计io下发后,硬盘的返回时间,若在预设时长内硬盘未返回,则认为该硬盘存在io超时。
13.作为一种技术方案,所述获取io超时的硬盘的硬盘健康状态信息,根据硬盘健康
状态信息找出硬盘健康状态信息异常且存在io超时的硬盘,包括:轮询监测硬盘的硬盘健康状态信息;所述硬盘健康状态信息包括medium error、hardware error、not ready、io timeout。
14.本公开同时提供了一种硬盘管理装置,应用于硬盘管理设备,所述装置包括:io模块,用于获取被监测硬盘的io状态,过滤找出存在io超时的硬盘;健康模块,用于获取io超时的硬盘的硬盘健康状态信息,根据硬盘健康状态信息找出硬盘健康状态信息异常且存在io超时的硬盘;下电模块,用于发送下电命令,所述下电命令包含使硬盘健康状态信息异常且存在io超时的硬盘下电的指令。
15.作为一种技术方案,所述发送下电命令,所述下电命令包含使硬盘健康状态信息异常且存在io超时的硬盘下电的指令,包括:向bmc发送硬盘下电命令,以使bmc根据所述硬盘下电命令通过i2c总线控制硬盘背板的cpld对所述硬盘健康状态信息异常且存在io超时的硬盘关联的硬盘槽位进行下电操作。
16.作为一种技术方案,所述获取被监测硬盘的io状态,过滤找出存在io超时的硬盘,包括:统计io下发后,硬盘的返回时间,若在预设时长内硬盘未返回,则认为该硬盘存在io超时。
17.作为一种技术方案,所述获取io超时的硬盘的硬盘健康状态信息,根据硬盘健康状态信息找出硬盘健康状态信息异常且存在io超时的硬盘,包括:轮询监测硬盘的硬盘健康状态信息;所述硬盘健康状态信息包括medium error、hardware error、not ready、io timeout。
18.本公开同时提供了一种电子设备,包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,处理器执行所述机器可执行指令以实现前述的硬盘管理方法。
19.本公开同时提供了一种机器可读存储介质,所述机器可读存储介质存储有机器可执行指令,所述机器可执行指令在被处理器调用和执行时,所述机器可执行指令促使所述处理器实现前述的硬盘管理方法。
20.本公开提供的上述技术方案至少带来了以下有益效果:
21.根据io超时状态和硬盘健康状态信息异常,快速准确找到出现故障的硬盘,并对该硬盘进行下电操作,使异常硬盘下电,避免其持续对耦合的正常硬盘造成影响,同时结合了硬盘健康状态信息来判断,避免了仅根据io超时判断导致收到异常硬盘耦合影响的正常硬盘被误判下电。
附图说明
22.为了更加清楚地说明本公开实施方式或者现有技术中的技术方案,下面将对本公开实施方式或者现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开中记载的一些实施方式,对于本领域普通技术人员来讲,还可以根据本公开实施方式的这些附图获得其他的附图。
23.图1是本公开一种实施方式中的硬盘管理方法的流程图;
24.图2是本公开一种实施方式中的硬盘管理方法的流程图;
25.图3是本公开一种实施方式中的电子设备的硬件结构图。
具体实施方式
26.在本公开实施方式使用的术语仅仅是出于描述特定实施方式的目的,而非限制本公开。本公开和权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。还应当理解,本文中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。
27.应当理解,尽管在本公开实施方式可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
28.cpld(complex programming logic device)复杂可编程逻辑器件;
29.ipmi(intelligent platform management interface)智能平台管理接口;
30.bmc(baseboard management controller)基板管理控制器;
31.raid(redundant array of independent disks)独立硬盘冗余阵列;
32.smart(self-monitoring analysis and reporting technology)自我检测分析与报告技术;
33.osd(object-based storage device)基于对象的存储设备;
34.ioth(io timeout handler)io超时处理程序。
35.在一种方案中,ioth模块利用了linux内核自带的scsi trace机制,以监控系统中所有scsi磁盘的io状态。
36.当有io超过了规定门限还未返回时,会触发内核自定义的io超时处理流程,在该流程中内核会调用scsi_dispatch_cmd_timeout函数记录下超时io的详细信息。
37.同时,位于用户态的ioth模块能够捕获到该信息,信息里面会记录有逻辑盘的host、channel、id、lun值,通过这些值就可以定位到究竟是哪块逻辑盘出现了io超时。
38.然后,ioth模块会将这个信息发送给对应osd,使其及时进行down操作,避免单一osd长时间挂起所带来的严重的业务影响。
39.但这种方案未考虑多块硬盘同时出现io超时的场景,当这样的异常发生时,所有超时的硬盘均被标down,势必对业务产生冲击。
40.且这种方案只是单纯的监视了硬盘io时延,并未对产生io超时的真正原因进行处理(即未找到并隔离异常硬盘),或将导致io反复震荡超时。
41.有鉴于此,本公开提供一种硬盘管理方法、装置及电子设备、机器可读存储介质,以改善上述正常硬盘因耦合长时间被阻塞的问题。
42.具体地技术方案如后述。
43.在一种实施方式中,本公开提供了一种硬盘管理方法,应用于硬盘管理设备,所述方法包括:获取被监测硬盘的io状态,过滤找出存在io超时的硬盘;获取io超时的硬盘的硬盘健康状态信息,根据硬盘健康状态信息找出硬盘健康状态信息异常且存在io超时的硬盘;发送下电命令,所述下电命令包含使硬盘健康状态信息异常且存在io超时的硬盘下电的指令。
44.具体地,如图1,包括以下步骤:
45.步骤s11,获取被监测硬盘的io状态,过滤找出存在io超时的硬盘;
46.步骤s12,获取io超时的硬盘的硬盘健康状态信息,根据硬盘健康状态信息找出硬盘健康状态信息异常且存在io超时的硬盘;
47.步骤s13,发送下电命令,所述下电命令包含使硬盘健康状态信息异常且存在io超时的硬盘下电的指令。
48.根据io超时状态和硬盘健康状态信息异常,快速准确找到出现故障的硬盘,并对该硬盘进行下电操作,使异常硬盘下电,避免其持续对耦合的正常硬盘造成影响,同时结合了硬盘健康状态信息来判断,避免了仅根据io超时判断导致收到异常硬盘耦合影响的正常硬盘被误判下电。
49.在一种实施方式中,所述发送下电命令,所述下电命令包含使硬盘健康状态信息异常且存在io超时的硬盘下电的指令,包括:向bmc发送硬盘下电命令,以使bmc根据所述硬盘下电命令通过i2c总线控制硬盘背板的cpld对所述硬盘健康状态信息异常且存在io超时的硬盘关联的硬盘槽位进行下电操作。
50.在一种实施方式中,所述获取被监测硬盘的io状态,过滤找出存在io超时的硬盘,包括:统计io下发后,硬盘的返回时间,若在预设时长内硬盘未返回,则认为该硬盘存在io超时。
51.在一种实施方式中,所述获取io超时的硬盘的硬盘健康状态信息,根据硬盘健康状态信息找出硬盘健康状态信息异常且存在io超时的硬盘,包括:轮询监测硬盘的硬盘健康状态信息;所述硬盘健康状态信息包括medium error、hardware error、not ready、io timeout。
52.将所有磁盘的io_timeout时间改为5秒,届时每当有磁盘的io下发后超过5秒未返回便会被感知。
53.举例说明:如果某个io下发后超过20秒未返回,那么内核将在其超时5秒、10秒、15秒、20秒四个时间点均记录对应的trace。这意味着会感知到同一个io出现了4次超时,因此能够借助同一个io发生io超时的次数,来确认这个io被阻塞的时间,精度为io_timeout设置的时间。
54.当检测到有磁盘的io下发后超过5秒未返回时,会标记该磁盘存在io超时,作为一种可选方案,当处于io超时状态的磁盘数量大于等于2时达到“多盘io超时”的条件,则触发异常盘处理流程的一个条件。
55.当检测到有磁盘的io下发后超过30秒未返回时,会标记该磁盘存在异常,并触发osd down以实现软件隔离。
56.通过smartctl工具或其他具有相应功能的主动轮询的方式或者raid卡异步事件上报机制监测硬盘健康状态,以确认是否有硬盘正在发生medium error、hardware error、not ready、io timeout等异常现象,如果发现有硬盘正在发生异常,那么将该硬盘标记为异常盘,触发异常盘处理流程的一个条件。
57.当raid卡fw发现硬盘存在异常(包括状态异常和io异常)时,会将相关的异常事件上报到操作系统,我们通过raid卡驱动捕获到这些异常后,便能够识别硬盘的实时健康状态。
58.当模块检测到多盘io阻塞与硬盘状态异常同时发生时,将会开启异常处理流程。
59.此时会使用ipmitool工具或其他具有满足要求的功能的软件模块对发生异常的硬盘进行下电操作,及时阻止异常继续扩散。
60.以ipmitool工具为例,可以在用户态向bmc发送硬盘下电命令,bmc收到该命令后,通过i2c总线控制背板cpld以完成对指定槽位进行下电操作。
61.在一种实施方式中,本公开同时提供了一种硬盘管理装置,如图2,应用于硬盘管理设备,所述装置包括:io模块21,用于获取被监测硬盘的io状态,过滤找出存在io超时的硬盘;健康模块22,用于获取io超时的硬盘的硬盘健康状态信息,根据硬盘健康状态信息找出硬盘健康状态信息异常且存在io超时的硬盘;下电模块23,用于发送下电命令,所述下电命令包含使硬盘健康状态信息异常且存在io超时的硬盘下电的指令。
62.在一种实施方式中,所述发送下电命令,所述下电命令包含使硬盘健康状态信息异常且存在io超时的硬盘下电的指令,包括:向bmc发送硬盘下电命令,以使bmc根据所述硬盘下电命令通过i2c总线控制硬盘背板的cpld对所述硬盘健康状态信息异常且存在io超时的硬盘关联的硬盘槽位进行下电操作。
63.在一种实施方式中,所述获取被监测硬盘的io状态,过滤找出存在io超时的硬盘,包括:统计io下发后,硬盘的返回时间,若在预设时长内硬盘未返回,则认为该硬盘存在io超时。
64.在一种实施方式中,所述获取io超时的硬盘的硬盘健康状态信息,根据硬盘健康状态信息找出硬盘健康状态信息异常且存在io超时的硬盘,包括:轮询监测硬盘的硬盘健康状态信息;所述硬盘健康状态信息包括medium error、hardware error、not ready、io timeout。
65.装置实施方式与对应的方法实施方式相同或相似,在此不再赘述。
66.在一种实施方式中,本公开提供了一种电子设备,包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,处理器执行所述机器可执行指令以实现前述的硬盘管理方法,从硬件层面而言,硬件架构示意图可以参见图3所示。
67.在一种实施方式中,本公开提供了一种机器可读存储介质,所述机器可读存储介质存储有机器可执行指令,所述机器可执行指令在被处理器调用和执行时,所述机器可执行指令促使所述处理器实现前述的硬盘管理方法。
68.这里,机器可读存储介质可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:ram(radom access memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。
69.上述实施方式阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
70.为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本
公开时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
71.本领域内的技术人员应明白,本公开的实施方式可提供为方法、系统、或计算机程序产品。因此,本公开可采用完全硬件实施方式、完全软件实施方式、或结合软件和硬件方面的实施方式的形式。而且,本公开实施方式可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
72.本公开是参照根据本公开实施方式的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可以由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其它可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其它可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
73.而且,这些计算机程序指令也可以存储在能引导计算机或其它可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或者多个流程和/或方框图一个方框或者多个方框中指定的功能。
74.这些计算机程序指令也可装载到计算机或其它可编程数据处理设备上,使得在计算机或者其它可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其它可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
75.本领域技术人员应明白,本公开的实施方式可提供为方法、系统或计算机程序产品。因此,本公开可以采用完全硬件实施方式、完全软件实施方式、或者结合软件和硬件方面的实施方式的形式。而且,本公开可以采用在一个或者多个其中包含有计算机可用程序代码的计算机可用存储介质(可以包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
76.以上所述仅为本公开的实施方式而已,并不用于限制本公开。对于本领域技术人员来说,本公开可以有各种更改和变化。凡在本公开的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本公开的权利要求范围之内。
再多了解一些

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

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

相关文献