CN113672422A - 一种磁盘故障探测方法、装置、设备及可读存储介质 - Google Patents

一种磁盘故障探测方法、装置、设备及可读存储介质 Download PDF

Info

Publication number
CN113672422A
CN113672422A CN202110948411.3A CN202110948411A CN113672422A CN 113672422 A CN113672422 A CN 113672422A CN 202110948411 A CN202110948411 A CN 202110948411A CN 113672422 A CN113672422 A CN 113672422A
Authority
CN
China
Prior art keywords
disk
target
drive
eio
read
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202110948411.3A
Other languages
English (en)
Other versions
CN113672422B (zh
Inventor
贺计文
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Jinan Inspur Data Technology Co Ltd
Original Assignee
Jinan Inspur Data Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Jinan Inspur Data Technology Co Ltd filed Critical Jinan Inspur Data Technology Co Ltd
Priority to CN202110948411.3A priority Critical patent/CN113672422B/zh
Publication of CN113672422A publication Critical patent/CN113672422A/zh
Application granted granted Critical
Publication of CN113672422B publication Critical patent/CN113672422B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0674Disk device
    • G06F3/0676Magnetic disk device

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种磁盘故障探测方法,包括:对检测到的磁盘读对象EIO异常进行解析,得到执行本次IO操作的目标sd驱动;查找目标sd驱动对应的目标sg驱动;调用目标sg驱动的ioctl接口对磁盘的off\len区域进行读取操作;判断是否对磁盘的off\len区域读取成功;若是,则调用目标sd驱动对出现磁盘读对象EIO异常的目标磁盘读对象进行重读操作;若否,则利用目标sg驱动获取磁盘读对象EIO异常对应的错误原因信息,并将错误原因信息透传至用户态。本发明避免了不必要的换盘,降低了对上层业务的影响,提升了存储系统的可用性。本发明还公开了一种磁盘故障探测装置、设备及存储介质,具有相应技术效果。

Description

一种磁盘故障探测方法、装置、设备及可读存储介质
技术领域
本发明涉及存储技术领域,特别是涉及一种磁盘故障探测方法、装置、设备及计算机可读存储介质。
背景技术
随着大数据、云计算、高性能应用大量兴起,将分布式存储系统作为后端存储,而存储在使用一段时间后,经常出现磁盘EIO(I/O Error)故障,即linux错误码,表示IO(输入/输出)出错。
存储读取数据出现EIO时,存储无法区分出具体的故障类型,比如硬盘故障(Hardware error)、Medium error、Not Ready、拔盘、did_bad_target、did_no_connect、did_soft_error、命令超时等等,因用户态无法获取故障原因,所以无法对EIO的磁盘做进一步的处理,只能主动断言(assert)踢盘。该方法会出现很多不必要的换盘,影响上层业务,导致存储系统可用性低。
综上所述,如何有效地解决易出现不必要的换盘,影响上层业务,导致存储系统可用性低等问题,是目前本领域技术人员急需解决的问题。
发明内容
本发明的目的是提供一种磁盘故障探测方法,该方法避免了不必要的换盘,降低了对上层业务的影响,提升了存储系统的可用性;本发明的另一目的是提供一种磁盘故障探测装置、设备及计算机可读存储介质。
为解决上述技术问题,本发明提供如下技术方案:
一种磁盘故障探测方法,包括:
对检测到的磁盘读对象EIO异常进行解析,得到执行本次IO操作的目标sd驱动;
查找所述目标sd驱动对应的目标sg驱动;其中,预先维护有磁盘中各sg驱动与各sd驱动之间的对应关系;
调用所述目标sg驱动的ioctl接口对所述磁盘的off\len区域进行读取操作;
判断是否对所述磁盘的off\len区域读取成功;
若是,则调用所述目标sd驱动对出现所述磁盘读对象EIO异常的目标磁盘读对象进行重读操作;
若否,则利用所述目标sg驱动获取所述磁盘读对象EIO异常对应的错误原因信息,并将所述错误原因信息透传至用户态。
在本发明的一种具体实施方式中,将所述错误原因信息透传至用户态,包括:
判断所述错误原因信息的数据格式是否为sense info格式;
若否,则对所述错误原因信息进行格式转化,得到sense info格式的错误原因信息;
将sense info格式的错误原因信息透传至用户态。
在本发明的一种具体实施方式中,在利用所述目标sg驱动获取所述磁盘读对象EIO异常对应的错误原因信息之后,还包括:
判断所述错误原因信息是否为Medium Error;
若是,则对所述目标磁盘读对象进行数据恢复操作;
若否,则对所述磁盘进行剔除操作。
在本发明的一种具体实施方式中,在对所述磁盘进行剔除操作之后,还包括:
生成故障告警信息,并对所述故障告警信息进行上报操作。
在本发明的一种具体实施方式中,调用所述目标sg驱动的ioctl接口对所述磁盘的off\len区域进行读取操作,包括:
确定所述目标sg驱动对应的目标读缓存区;
计算所述目标读缓存区相对于裸盘的目标偏移量;
调用所述目标sg驱动的ioctl接口根据所述目标偏移量对所述磁盘的off\len区域进行读取操作。
在本发明的一种具体实施方式中,在调用所述目标sd驱动对出现所述磁盘读对象EIO异常的目标磁盘读对象进行重读操作之后,还包括:
判断对所述目标磁盘读对象是否重读成功;
若是,则确定所述磁盘读对象EIO异常为暂态故障;
若否,则重复执行所述调用所述目标sd驱动对出现所述磁盘读对象EIO异常的目标磁盘读对象进行重读操作的步骤,当重读次数达到预设值且均为重读失败时,则执行所述利用所述目标sg驱动获取所述磁盘读对象EIO异常对应的错误原因信息的步骤。
在本发明的一种具体实施方式中,在查找所述目标sd驱动对应的目标sg驱动之前,还包括:
判断所述磁盘是否为scsi协议的磁盘;
若是,则执行所述查找所述目标sd驱动对应的目标sg驱动的步骤。
一种磁盘故障探测装置,包括:
异常解析模块,用于对检测到的磁盘读对象EIO异常进行解析,得到执行本次IO操作的目标sd驱动;
驱动查找模块,用于查找所述目标sd驱动对应的目标sg驱动;其中,预先维护有磁盘中各sg驱动与各sd驱动之间的对应关系;
区域读取模块,用于调用所述目标sg驱动的ioctl接口对所述磁盘的off\len区域进行读取操作;
判断模块,用于判断是否对所述磁盘的off\len区域读取成功;
重读模块,用于当确定对所述磁盘的off\len区域读取成功时,调用所述目标sd驱动对出现所述磁盘读对象EIO异常的目标磁盘读对象进行重读操作;
错误原因获取模块,用于当确定对所述磁盘的off\len区域读取失败时,利用所述目标sg驱动获取所述磁盘读对象EIO异常对应的错误原因信息,并将所述错误原因信息透传至用户态。
一种磁盘故障探测设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如前所述磁盘故障探测方法的步骤。
一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如前所述磁盘故障探测方法的步骤。
本发明所提供的磁盘故障探测方法,对检测到的磁盘读对象EIO异常进行解析,得到执行本次IO操作的目标sd驱动;查找目标sd驱动对应的目标sg驱动;其中,预先维护有磁盘中各sg驱动与各sd驱动之间的对应关系;调用目标sg驱动的ioctl接口对磁盘的off\len区域进行读取操作;判断是否对磁盘的off\len区域读取成功;若是,则调用目标sd驱动对出现磁盘读对象EIO异常的目标磁盘读对象进行重读操作;若否,则利用目标sg驱动获取磁盘读对象EIO异常对应的错误原因信息,并将错误原因信息透传至用户态。
由上述技术方案可知,预先维护磁盘中各sg驱动与各sd驱动之间的对应关系,当检测到磁盘读对象EIO异常时,调用目标sg驱动的ioctl接口对磁盘的off\len区域进行读取操作,通过判断是否对磁盘的off\len区域读取成功,确定是对出现磁盘读对象EIO异常的目标磁盘读对象进行重读操作,还是利用目标sg驱动获取磁盘读对象EIO异常对应的错误原因信息,从而实现了在用户态获取磁盘故障原因,能够根据具体磁盘故障原因确定是否进行换盘处理,避免了不必要的换盘,降低了对上层业务的影响,提升了存储系统的可用性。
相应的,本发明还提供了与上述磁盘故障探测方法相对应的磁盘故障探测装置、设备和计算机可读存储介质,具有上述技术效果,在此不再赘述。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例中磁盘故障探测方法的一种实施流程图;
图2为本发明实施例中磁盘故障探测方法的另一种实施流程图;
图3为本发明实施例中一种磁盘故障探测装置的结构框图;
图4为本发明实施例中一种磁盘故障探测设备的结构框图;
图5为本实施例提供的一种磁盘故障探测设备的具体结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图1,图1为本发明实施例中磁盘故障探测方法的一种实施流程图,该方法可以包括以下步骤:
S101:对检测到的磁盘读对象EIO异常进行解析,得到执行本次IO操作的目标sd驱动。
当检测到出现磁盘读对象EIO异常时,对检测到的磁盘读对象EIO异常进行解析,得到执行本次IO(input/output)操作的目标sd驱动。IO操作即为对存储介质进行的各种读写操作。
S102:查找目标sd驱动对应的目标sg驱动。
其中,预先维护有磁盘中各sg驱动与各sd驱动之间的对应关系。
磁盘中存在多个sg驱动和多个sd驱动,预先维护磁盘中各sg驱动与各sd驱动之间的对应关系,在得到执行本次IO操作的目标sd驱动之后,查找目标sd驱动对应的目标sg驱动。
S103:调用目标sg驱动的ioctl接口对磁盘的off\len区域进行读取操作。
预先构建在裸磁盘设备之上的后端存储Bluestore,其能够绕过OS的文件系统直接管理裸设备,因此可以基于Bluestore通过off、len直接读磁盘。在查找到目标sd驱动对应的目标sg驱动之后,调用目标sg驱动的ioctl接口对磁盘的off\len区域进行读取操作。
S104:判断是否对磁盘的off\len区域读取成功,若是,则执行步骤S105,若否,则执行步骤S106。
在调用目标sg驱动的ioctl接口对磁盘的off\len区域进行读取操作之后,判断是否对磁盘的off\len区域读取成功,若是,则说明本次磁盘读对象EIO异常很可能为暂态故障,执行步骤S105,若否,则说明本次磁盘读对象EIO异常不是常规的暂态故障,执行步骤S106。
S105:调用目标sd驱动对出现磁盘读对象EIO异常的目标磁盘读对象进行重读操作。
当确定对磁盘的off\len区域读取成功时,说明本次磁盘读对象EIO异常很可能为暂态故障,调用目标sd驱动对出现磁盘读对象EIO异常的目标磁盘读对象进行重读操作。从而很可能通过重读操作对出现磁盘读对象EIO异常的目标磁盘读对象读取成功,使得磁盘处于正常的工作状态。
S106:利用目标sg驱动获取磁盘读对象EIO异常对应的错误原因信息,并将错误原因信息透传至用户态。
相较于sd驱动,sg驱动具备获取磁盘EIO错误原因的功能。当确定对磁盘的off\len区域读取失败时,说明本次磁盘读对象EIO异常不是常规的暂态故障,利用目标sg驱动获取磁盘读对象EIO异常对应的错误原因信息,并将错误原因信息透传至用户态,从而用户端可以根据接收到的错误原因信息对磁盘故障进行准确分类,进而根据故障原因做相应的处理。
由上述技术方案可知,预先维护磁盘中各sg驱动与各sd驱动之间的对应关系,当检测到磁盘读对象EIO异常时,调用目标sg驱动的ioctl接口对磁盘的off\len区域进行读取操作,通过判断是否对磁盘的off\len区域读取成功,确定是对出现磁盘读对象EIO异常的目标磁盘读对象进行重读操作,还是利用目标sg驱动获取磁盘读对象EIO异常对应的错误原因信息,从而实现了在用户态获取磁盘故障原因,能够根据具体磁盘故障原因确定是否进行换盘处理,避免了不必要的换盘,降低了对上层业务的影响,提升了存储系统的可用性。
需要说明的是,基于上述实施例,本发明实施例还提供了相应的改进方案。在后续实施例中涉及与上述实施例中相同步骤或相应步骤之间可相互参考,相应的有益效果也可相互参照,在下文的改进实施例中不再一一赘述。
参见图2,图2为本发明实施例中磁盘故障探测方法的另一种实施流程图,该方法可以包括以下步骤:
S201:对检测到的磁盘读对象EIO异常进行解析,得到执行本次IO操作的目标sd驱动。
S202:判断磁盘是否为scsi协议的磁盘,若否,则不做处理,若是,则执行步骤S203。
sg驱动的读操作只适用于scsi协议的存储介质,在检测到磁盘读对象EIO异常之后,首先判断磁盘是否为scsi协议的磁盘,若是,则确定磁盘读对象EIO异常不是常规的暂态故障时,磁盘中的sg驱动能够获取到磁盘读对象EIO异常对应的错误原因信息,执行步骤S203,若否,则说明当前磁盘对sg驱动获取到磁盘读对象EIO异常对应的错误原因信息这一功能不支持,不做处理。
S203:查找目标sd驱动对应的目标sg驱动。
其中,预先维护有磁盘中各sg驱动与各sd驱动之间的对应关系。
S204:确定目标sg驱动对应的目标读缓存区。
在查找到目标sd驱动对应的目标sg驱动之后,确定目标sg驱动对应的目标读缓存区。如预先维护有磁盘中各sg驱动的sg名称与各sd驱动的sd名称之间的对应关系,获取目标sd驱动的目标sd名称对应的目标sg名称,根据目标sg名称打开对应的预存sg文件,得到预分配的目标sg驱动对应的目标读缓存区。
S205:计算目标读缓存区相对于裸盘的目标偏移量。
由于sg驱动只能操作裸盘,不能操作裸盘分区,因此计算目标读缓存区相对于裸盘的目标偏移量LBA。
S206:调用目标sg驱动的ioctl接口根据目标偏移量对磁盘的off\len区域进行读取操作。
在计算得到目标读缓存区相对于裸盘的目标偏移量之后,调用目标sg驱动的ioctl接口根据目标偏移量对磁盘的off\len区域进行读取操作,从而实现了sg驱动对裸盘分区的IO操作。
S207:判断是否对磁盘的off\len区域读取成功,若是,则执行步骤S208,若否,则执行步骤S212。
S208:调用目标sd驱动对出现磁盘读对象EIO异常的目标磁盘读对象进行重读操作。
S209:判断对目标磁盘读对象是否重读成功,若是,则执行步骤S210,若否,则执行步骤S211。
在调用目标sd驱动对出现磁盘读对象EIO异常的目标磁盘读对象进行重读操作之后,判断对目标磁盘读对象是否重读成功,若是,则执行步骤S210,若否,则说明本次磁盘读对象EIO异常可能为暂态故障,也可能不是常规的暂态故障,为进一步确定异常原因,执行步骤S211。
S210:确定磁盘读对象EIO异常为暂态故障。
当确定对目标磁盘读对象重读成功时,确定之前出现的磁盘读对象EIO异常确实为暂态故障。
S211:判断重读次数是否达到预设值,若否,则重复执行步骤S208,若是,则执行步骤S212。
当确定对目标磁盘读对象重读失败时,说明本次磁盘读对象EIO异常可能为暂态故障,也可能不是常规的暂态故障,为进一步确定异常原因,判断重读次数是否达到预设值,若否,则重置执行步骤S208中调用目标sd驱动对出现磁盘读对象EIO异常的目标磁盘读对象进行重读操作的步骤,以进行排除前几次重读时磁盘均处于暂态故障导致的磁盘读对象EIO异常,若是,则说明当前磁盘读对象EIO异常不是常规的暂态故障,执行步骤S212。
需要说明的是,预设值可以根据实际情况进行设定和调整,本发明实施例对此不做限定,如可以设置为3次。
S212:利用目标sg驱动获取磁盘读对象EIO异常对应的错误原因信息。
S213:判断错误原因信息的数据格式是否为sense info格式,若是,则执行步骤S214,若否,则执行步骤S215。
在利用目标sg驱动获取到磁盘读对象EIO异常对应的错误原因信息之后,判断错误原因信息的数据格式是否为sense info格式,若是,则说明当前错误原因信息的数据格式符合用户态数据格式,执行步骤S214,若否,则说明当前错误原因信息的数据格式不符合用户态数据格式,执行步骤S215。
S214:直接将错误原因信息透传至用户态。
当确定错误原因信息的数据格式为sense info格式时,说明当前错误原因信息的数据格式符合用户态数据格式,直接将错误原因信息透传至用户态。
S215:对错误原因信息进行格式转化,得到sense info格式的错误原因信息,将sense info格式的错误原因信息透传至用户态。
当确定错误原因信息的数据格式不是sense info格式时,说明当前错误原因信息的数据格式不符合用户态数据格式,对错误原因信息进行格式转化,得到sense info格式的错误原因信息,将sense info格式的错误原因信息透传至用户态。
S216:判断错误原因信息是否为Medium Error,若是,则执行步骤S217,若否,则执行步骤S218。
在将错误原因信息透传至用户态之后,判断错误原因信息是否为Medium Error,若是,则说明能够通过数据恢复的方式对本次磁盘读对象EIO异常进行修复,执行步骤S217,若否,则说明不能通过数据恢复的方式对本次磁盘读对象EIO异常进行修复,执行步骤S218。
S217:对目标磁盘读对象进行数据恢复操作。
当确定错误原因信息为Medium Error时,说明能够通过数据恢复的方式对本次磁盘读对象EIO异常进行修复,对目标磁盘读对象进行数据恢复操作。
S218:对磁盘进行剔除操作。
当确定错误原因信息不是Medium Error时,说明不能够通过数据恢复的方式对本次磁盘读对象EIO异常进行修复,对磁盘进行剔除操作。
S219:生成故障告警信息,并对故障告警信息进行上报操作。
在对磁盘进行剔除操作之后,生成故障告警信息,并对故障告警信息进行上报操作,如可以通过短信告警方式进行故障告警信息的上报,从而通知运维人员及时更换故障磁盘。
本实施例区别于独立权利要求1所要求保护的技术方案对应的实施例一,还增加了从属权利要求2至7对应要求保护的技术方案,当然,根据实际情况和要求的不同,可将各从属权利要求对应要求保护的技术方案在不影响方案完整性的基础上进行灵活组合,以更加符合不同使用场景的要求,本实施例只是给出了其中一种包含方案最多、效果最优的方案,因为情况复杂,无法对所有可能存在的方案一一列举,本领域技术人员应能意识到根据本申请提供的基本方法原理结合实际情况可以存在很多的例子,在不付出足够的创造性劳动下,应均在本申请的保护范围内。
相应于上面的方法实施例,本发明还提供了一种磁盘故障探测装置,下文描述的磁盘故障探测装置与上文描述的磁盘故障探测方法可相互对应参照。
参见图3,图3为本发明实施例中一种磁盘故障探测装置的结构框图,该装置可以包括:
异常解析模块31,用于对检测到的磁盘读对象EIO异常进行解析,得到执行本次IO操作的目标sd驱动;
驱动查找模块32,用于查找目标sd驱动对应的目标sg驱动;其中,预先维护有磁盘中各sg驱动与各sd驱动之间的对应关系;
区域读取模块33,用于调用目标sg驱动的ioctl接口对磁盘的off\len区域进行读取操作;
读取结果判断模块34,用于判断是否对磁盘的off\len区域读取成功;
重读模块35,用于当确定对磁盘的off\len区域读取成功时,调用目标sd驱动对出现磁盘读对象EIO异常的目标磁盘读对象进行重读操作;
错误原因获取模块36,用于当确定对磁盘的off\len区域读取失败时,利用目标sg驱动获取磁盘读对象EIO异常对应的错误原因信息,并将错误原因信息透传至用户态。
由上述技术方案可知,预先维护磁盘中各sg驱动与各sd驱动之间的对应关系,当检测到磁盘读对象EIO异常时,调用目标sg驱动的ioctl接口对磁盘的off\len区域进行读取操作,通过判断是否对磁盘的off\len区域读取成功,确定是对出现磁盘读对象EIO异常的目标磁盘读对象进行重读操作,还是利用目标sg驱动获取磁盘读对象EIO异常对应的错误原因信息,从而实现了在用户态获取磁盘故障原因,能够根据具体磁盘故障原因确定是否进行换盘处理,避免了不必要的换盘,降低了对上层业务的影响,提升了存储系统的可用性。
在本发明的一种具体实施方式中,错误原因获取模块36包括:
数据格式判断子模块,用于判断错误原因信息的数据格式是否为sense info格式;
格式转化子模块,用于当确定错误原因信息的数据格式不是sense info格式时,对错误原因信息进行格式转化,得到sense info格式的错误原因信息;
错误原因透传子模块,用于将sense info格式的错误原因信息透传至用户态。
在本发明的一种具体实施方式中,该装置还可以包括:
错误类型判断模块,用于在利用目标sg驱动获取磁盘读对象EIO异常对应的错误原因信息之后,判断错误原因信息是否为Medium Error;
数据恢复模块,用于当确定错误原因信息为Medium Error时,对目标磁盘读对象进行数据恢复操作;
磁盘剔除模块,用于当确定错误原因信息不是Medium Error时,对磁盘进行剔除操作。
在本发明的一种具体实施方式中,该装置还可以包括:
告警模块,用于在对磁盘进行剔除操作之后,生成故障告警信息,并对故障告警信息进行上报操作。
在本发明的一种具体实施方式中,区域读取模块33包括:
读缓存区确定子模块,用于确定目标sg驱动对应的目标读缓存区;
偏移量计算子模块,用于计算目标读缓存区相对于裸盘的目标偏移量;
区域读取子模块,用于调用目标sg驱动的ioctl接口根据目标偏移量对磁盘的off\len区域进行读取操作。
在本发明的一种具体实施方式中,该装置还可以包括:
重读结果判断模块,用于判断对目标磁盘读对象是否重读成功;
暂态故障确定模块,用于当对目标磁盘读对象重读成功时,确定磁盘读对象EIO异常为暂态故障;
重复执行模块,用于当对目标磁盘读对象重读失败时,重复执行调用目标sd驱动对出现磁盘读对象EIO异常的目标磁盘读对象进行重读操作的步骤,当重读次数达到预设值且均为重读失败时,则执行利用目标sg驱动获取磁盘读对象EIO异常对应的错误原因信息的步骤。
在本发明的一种具体实施方式中,该装置还可以包括:
协议判断模块,用于在查找目标sd驱动对应的目标sg驱动之前,判断磁盘是否为scsi协议的磁盘;
驱动查找模块32具体为当确定磁盘为scsi协议的磁盘时,查找目标sd驱动对应的目标sg驱动的模块。
相应于上面的方法实施例,参见图4,图4为本发明所提供的磁盘故障探测设备的示意图,该设备可以包括:
存储器332,用于存储计算机程序;
处理器322,用于执行计算机程序时实现上述方法实施例的磁盘故障探测方法的步骤。
具体的,请参考图5,图5为本实施例提供的一种磁盘故障探测设备的具体结构示意图,该磁盘故障探测设备可因配置或性能不同而产生比较大的差异,可以包括处理器(central processing units,CPU)322(例如,一个或一个以上处理器)和存储器332,存储器332存储有一个或一个以上的计算机应用程序342或数据344。其中,存储器332可以是短暂存储或持久存储。存储在存储器332的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对数据处理设备中的一系列指令操作。更进一步地,处理器322可以设置为与存储器332通信,在磁盘故障探测设备301上执行存储器332中的一系列指令操作。
磁盘故障探测设备301还可以包括一个或一个以上电源326,一个或一个以上有线或无线网络接口350,一个或一个以上输入输出接口358,和/或,一个或一个以上操作系统341。
上文所描述的磁盘故障探测方法中的步骤可以由磁盘故障探测设备的结构实现。
相应于上面的方法实施例,本发明还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时可实现如下步骤:
由上述技术方案可知,预先维护磁盘中各sg驱动与各sd驱动之间的对应关系,当检测到磁盘读对象EIO异常时,调用目标sg驱动的ioctl接口对磁盘的off\len区域进行读取操作,通过判断是否对磁盘的off\len区域读取成功,确定是对出现磁盘读对象EIO异常的目标磁盘读对象进行重读操作,还是利用目标sg驱动获取磁盘读对象EIO异常对应的错误原因信息,从而实现了在用户态获取磁盘故障原因,能够根据具体磁盘故障原因确定是否进行换盘处理,避免了不必要的换盘,降低了对上层业务的影响,提升了存储系统的可用性。
该计算机可读存储介质可以包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
对于本发明提供的计算机可读存储介质的介绍请参照上述方法实施例,本发明在此不做赘述。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置、设备及计算机可读存储介质而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的技术方案及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

Claims (10)

1.一种磁盘故障探测方法,其特征在于,包括:
对检测到的磁盘读对象EIO异常进行解析,得到执行本次IO操作的目标sd驱动;
查找所述目标sd驱动对应的目标sg驱动;其中,预先维护有磁盘中各sg驱动与各sd驱动之间的对应关系;
调用所述目标sg驱动的ioctl接口对所述磁盘的off\len区域进行读取操作;
判断是否对所述磁盘的off\len区域读取成功;
若是,则调用所述目标sd驱动对出现所述磁盘读对象EIO异常的目标磁盘读对象进行重读操作;
若否,则利用所述目标sg驱动获取所述磁盘读对象EIO异常对应的错误原因信息,并将所述错误原因信息透传至用户态。
2.根据权利要求1所述的磁盘故障探测方法,其特征在于,将所述错误原因信息透传至用户态,包括:
判断所述错误原因信息的数据格式是否为senseinfo格式;
若否,则对所述错误原因信息进行格式转化,得到sense info格式的错误原因信息;
将senseinfo格式的错误原因信息透传至用户态。
3.根据权利要求1或2所述的磁盘故障探测方法,其特征在于,在利用所述目标sg驱动获取所述磁盘读对象EIO异常对应的错误原因信息之后,还包括:
判断所述错误原因信息是否为Medium Error;
若是,则对所述目标磁盘读对象进行数据恢复操作;
若否,则对所述磁盘进行剔除操作。
4.根据权利要求3所述的磁盘故障探测方法,其特征在于,在对所述磁盘进行剔除操作之后,还包括:
生成故障告警信息,并对所述故障告警信息进行上报操作。
5.根据权利要求1所述的磁盘故障探测方法,其特征在于,调用所述目标sg驱动的ioctl接口对所述磁盘的off\len区域进行读取操作,包括:
确定所述目标sg驱动对应的目标读缓存区;
计算所述目标读缓存区相对于裸盘的目标偏移量;
调用所述目标sg驱动的ioctl接口根据所述目标偏移量对所述磁盘的off\len区域进行读取操作。
6.根据权利要求1所述的磁盘故障探测方法,其特征在于,在调用所述目标sd驱动对出现所述磁盘读对象EIO异常的目标磁盘读对象进行重读操作之后,还包括:
判断对所述目标磁盘读对象是否重读成功;
若是,则确定所述磁盘读对象EIO异常为暂态故障;
若否,则重复执行所述调用所述目标sd驱动对出现所述磁盘读对象EIO异常的目标磁盘读对象进行重读操作的步骤,当重读次数达到预设值且均为重读失败时,则执行所述利用所述目标sg驱动获取所述磁盘读对象EIO异常对应的错误原因信息的步骤。
7.根据权利要求1所述的磁盘故障探测方法,其特征在于,在查找所述目标sd驱动对应的目标sg驱动之前,还包括:
判断所述磁盘是否为scsi协议的磁盘;
若是,则执行所述查找所述目标sd驱动对应的目标sg驱动的步骤。
8.一种磁盘故障探测装置,其特征在于,包括:
异常解析模块,用于对检测到的磁盘读对象EIO异常进行解析,得到执行本次IO操作的目标sd驱动;
驱动查找模块,用于查找所述目标sd驱动对应的目标sg驱动;其中,预先维护有磁盘中各sg驱动与各sd驱动之间的对应关系;
区域读取模块,用于调用所述目标sg驱动的ioctl接口对所述磁盘的off\len区域进行读取操作;
判断模块,用于判断是否对所述磁盘的off\len区域读取成功;
重读模块,用于当确定对所述磁盘的off\len区域读取成功时,调用所述目标sd驱动对出现所述磁盘读对象EIO异常的目标磁盘读对象进行重读操作;
错误原因获取模块,用于当确定对所述磁盘的off\len区域读取失败时,利用所述目标sg驱动获取所述磁盘读对象EIO异常对应的错误原因信息,并将所述错误原因信息透传至用户态。
9.一种磁盘故障探测设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至7任一项所述磁盘故障探测方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述磁盘故障探测方法的步骤。
CN202110948411.3A 2021-08-18 2021-08-18 一种磁盘故障探测方法、装置、设备及可读存储介质 Active CN113672422B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110948411.3A CN113672422B (zh) 2021-08-18 2021-08-18 一种磁盘故障探测方法、装置、设备及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110948411.3A CN113672422B (zh) 2021-08-18 2021-08-18 一种磁盘故障探测方法、装置、设备及可读存储介质

Publications (2)

Publication Number Publication Date
CN113672422A true CN113672422A (zh) 2021-11-19
CN113672422B CN113672422B (zh) 2024-02-13

Family

ID=78543671

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110948411.3A Active CN113672422B (zh) 2021-08-18 2021-08-18 一种磁盘故障探测方法、装置、设备及可读存储介质

Country Status (1)

Country Link
CN (1) CN113672422B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040228021A1 (en) * 2003-05-15 2004-11-18 Fujitsu Limited Magnetic disk apparatus, read gate optimization method and program
WO2014114135A1 (en) * 2013-01-22 2014-07-31 Tencent Technology (Shenzhen) Company Limited Disk fault tolerance method, device and system
CN106843411A (zh) * 2016-12-23 2017-06-13 郑州云海信息技术有限公司 一种支持硬盘热维护的1u高密度存储服务器
CN109189627A (zh) * 2018-10-08 2019-01-11 郑州云海信息技术有限公司 一种硬盘故障监控检测方法、装置、终端及存储介质
CN112002370A (zh) * 2020-07-23 2020-11-27 烽火通信科技股份有限公司 一种识别磁盘异常的方法、装置及分布式存储系统
CN113227959A (zh) * 2021-03-30 2021-08-06 长江存储科技有限责任公司 具有读取错误处理的存储器控制器

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040228021A1 (en) * 2003-05-15 2004-11-18 Fujitsu Limited Magnetic disk apparatus, read gate optimization method and program
WO2014114135A1 (en) * 2013-01-22 2014-07-31 Tencent Technology (Shenzhen) Company Limited Disk fault tolerance method, device and system
CN106843411A (zh) * 2016-12-23 2017-06-13 郑州云海信息技术有限公司 一种支持硬盘热维护的1u高密度存储服务器
CN109189627A (zh) * 2018-10-08 2019-01-11 郑州云海信息技术有限公司 一种硬盘故障监控检测方法、装置、终端及存储介质
CN112002370A (zh) * 2020-07-23 2020-11-27 烽火通信科技股份有限公司 一种识别磁盘异常的方法、装置及分布式存储系统
CN113227959A (zh) * 2021-03-30 2021-08-06 长江存储科技有限责任公司 具有读取错误处理的存储器控制器

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
刘榴;李小勇;: "分布式存储系统中磁盘故障检测机制", 信息技术, no. 05 *
雷鸿: "基于嵌入式的数字网络硬盘开发", 中国优秀硕士学位论文全文数据库 *

Also Published As

Publication number Publication date
CN113672422B (zh) 2024-02-13

Similar Documents

Publication Publication Date Title
CN108683562B (zh) 异常检测定位方法、装置、计算机设备及存储介质
US10698605B2 (en) Multipath storage device based on multi-dimensional health diagnosis
CN110650036A (zh) 告警处理方法、装置及电子设备
EP3591485B1 (en) Method and device for monitoring for equipment failure
US10977108B2 (en) Influence range specifying method, influence range specifying apparatus, and storage medium
US9996447B2 (en) Automated identification of redundant method calls
CN111274130A (zh) 一种自动化测试方法、装置、设备及存储介质
CN116627358B (zh) 一种基于大数据的计算机外接设备检测系统及方法
CN111654405B (zh) 通信链路的故障节点方法、装置、设备及存储介质
CN113590405A (zh) 硬盘错误的检测方法、装置、存储介质和电子装置
CN113672422A (zh) 一种磁盘故障探测方法、装置、设备及可读存储介质
JP7057168B2 (ja) 故障検出装置および故障解析方法
JP2016076071A (ja) ログ管理装置,ログ管理プログラム,及びログ管理方法
CN116415851A (zh) 一种基于深度学习的设施运维性态指标智能识别评价方法
US7415560B2 (en) Method of automatically monitoring computer system debugging routine
CN111737158B (zh) 一种异常断言的处理方法、装置、电子设备及存储介质
CN114171107A (zh) 固态硬盘vpd信息的检测方法、装置、设备及存储介质
CN113934595A (zh) 数据分析方法及系统、存储介质及电子终端
CN112631929A (zh) 测试用例生成方法、装置、存储介质及电子设备
CN115145623A (zh) 软件业务系统的白盒监控方法、装置、设备和存储介质
CN110289977B (zh) 物流仓库系统的故障检测方法及系统、设备和存储介质
CN111831511A (zh) 一种云服务的业务主机的检测处理方法、装置及介质
CN112463594A (zh) 一种sas链路调试方法、装置、设备及计算机存储介质
JP2016042339A (ja) メッセージ表示方法、メッセージ表示装置、およびメッセージ表示プログラム
JP7302223B2 (ja) スクリプト検出装置、方法及びプログラム

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant