CN109358982B - 硬盘自愈装置、方法以及硬盘 - Google Patents
硬盘自愈装置、方法以及硬盘 Download PDFInfo
- Publication number
- CN109358982B CN109358982B CN201810932198.5A CN201810932198A CN109358982B CN 109358982 B CN109358982 B CN 109358982B CN 201810932198 A CN201810932198 A CN 201810932198A CN 109358982 B CN109358982 B CN 109358982B
- Authority
- CN
- China
- Prior art keywords
- firmware
- state
- hard disk
- reset
- switched
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1441—Resetting or repowering
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Hardware Redundancy (AREA)
Abstract
本申请提供一种硬盘自愈装置、方法以及硬盘。该硬盘自愈装置,包括第一固件FW和第二固件FW,相对于现有技术只有单个FW,本申请实施例通过设置第一FW和第二FW,并在第一FW故障重启的情况下,第二FW能够快速接管响应对外IO控制以及数据除处理,从而避免第一FW在复位时间段内IO无法响应,有助于减少业务受到的影响或者避免业务受到影响。
Description
技术领域
本申请涉及计算机硬件设备领域,并且更具体的,涉及硬盘自愈装置、方法以及硬盘。
背景技术
硬盘内部的固件(firmware,FW)作为硬盘内部的驱动程序,用于对硬盘进行输入输出(input and output,IO)访问控制、数据交互控制以及硬盘硬件控制。当FW出现运行程序异常,例如程序软件突然宕机进入异常状态(OOPS),现有的硬盘FW最直接的处理策略为对FW程序重新启动(FW reset),即初始化FW程序的运行。一般情况下,由于FW启动时需要做控制自检、硬件自检、IO恢复等流程,FW reset时间在30s/40s到1分钟不等,非常耗时。并且,在FW reset过程中还可能伴随着由于自检不通过而导致的无法启动(FW hang),即一直停留在某一状态不再运行,以及FW反复复位等严重问题。当硬盘无法响应时,会导致硬盘侧和阵列侧无法进行IO传递,阵列侧下发到硬盘侧的IO无法响应(即上层IO超时),最终使得阵列上的业务受到严重影响。
发明内容
本申请提供一种硬盘自愈装置、方法以及硬盘,在第一FW故障重启的情况下,第二FW能够快速接管响应对外IO控制以及数据除处理,从而避免第一FW在复位时间段内IO无法响应。
第一方面,提供了一种硬盘自愈装置,包括第一固件FW和第二固件FW,
所述第一固件FW,在正常运行时用于响应第一设备的输入输出IO访问并进行数据处理,并且所述第一固件FW在无法正常运行时进行故障复位;
所述第二固件FW,用于在所述第一固件FW进行故障复位之后,从等待切换状态切换为运行状态,其中,所述第二FW在所述第一FW正常运行时处于等待切换状态,所述等待切换状态表示所述第二FW能够随时切换为运行状态,所述运行状态表示所述第二FW代替所述第一FW响应所述第一设备的IO访问并代替所述第一FW进行数据处理,其中,所述第一FW和所述第二FW共享数据区。
相对于现有技术只有单个FW,本申请实施例通过设置第一FW和第二FW,并在第一FW故障重启的情况下,第二FW能够快速接管响应对外IO控制以及数据除处理,从而避免第一FW在复位时间段内IO无法响应,有助于减少业务受到的影响或者避免业务受到影响。
可选的,第一FW用于实现硬盘的完整功能,包括对执行后台任务(例如介质坏道扫描)、状态灯控制以及配置控制等操作。第二FW可以仅处理安全IO逃生,实现最小安全功能,即第二FW仅提供响应第一设备的IO访问以及数据处理功能,并不提供后台任务、状态等控制或配置控制等操作。
本申请实施例中,第一FW和第二FW共享数据区,以便于第二FW可以代替第一FW实现数据处理的功能。
结合第一方面,在第一方面的某些实现方式中,所述第一固件FW设置于第一芯片上,所述第二固件FW设置于第二芯片上,其中,所述第一芯片上包括第一心跳模块,所述第二芯片上包括第二心跳模块,
如果所述第二心跳模块没有检测到所述第一心跳模块发送的心跳消息,则确定所述第一FW正在进行故障复位。
结合第一方面,在第一方面的某些实现方式中,所述第一固件FW和所述第二固件FW均设置于第三芯片上,其中,所述装置还包括检测单元,
如果所述检测单元检测到所述第一FW运行超过设定响应门限,则确定所述第一FW进行故障复位。
可选的,检测单元可以为看门狗(watchdog)。
结合第一方面,在第一方面的某些实现方式中,还包括:
所述第二FW从等待切换状态切换为运行状态之后,所述第二FW在处理空闲周期中执行硬中断触发所述第一FW启动复位;
在所述第一FW复位完成并正常运行之后,所述第二FW切换至所述等待切换状态。
结合第一方面,在第一方面的某些实现方式中,在所述第二FW从等待切换状态切换为运行状态之后,所述第二FW还用于向所述第一设备发送第一消息,所述第一消息用于通知所述第一设备进行限流操作,或硬盘预考贝隔离流程。
具体的,在所述第二FW101a从等待切换状态切换为运行状态之后,第二FW向第一设备返回错误码或上报异步事件,该错误码或异步事件用于指示当前第一FW和第二FW处于安全运行错误状态,安全运行错误状态即表示第一FW进行故障重启,第二FW代替第一FW对第一设备进行IO响应以及数据处理。第一设备在确定第一FW和第二FW处于安全运行错误状态之后,可以对硬盘进行限流操作,或其他处理,这样能够让硬盘有空闲,或者减少IO的运行状态,有助于第一FW复位。
或者,该错误码或异步事件用于指示当前第一FW和第二FW处于持久切换状态。第一设备在确定第一FW和第二FW处于持久切换状态之后,进行硬盘预考贝隔离流程,即将硬盘数据安全拷贝到安全区,然后停止硬盘工作。
结合第一方面,在第一方面的某些实现方式中,所述第一FW还用于接收第一设备发送的切换命令,所述切换命令用于指示第一FW进行故障恢复或进行升级,并且第二FW由所述等待切换状态切换至所述运行状态。
具体的,该切换命令可以为扩展的SCSI协议命令,或者扩展的NVMe协议命令。这样,本申请实施例可以通过硬盘与第一设备交互的方式实现第一FW和第二FW的切换。
第二方面,提供了一种硬盘自愈的方法,该硬盘自愈的方法包括:
确定第一固件FW进行故障复位,其中,所述第一FW在无法正常运行时进行故障复位,所述第一FW在正常运行时能够响应第一设备的输入输出IO访问并进行数据处理;
在所述确定第一固件FW进行故障复位之后,第二FW从等待切换状态切换为运行状态,其中,所述第二FW在所述第一FW正常运行时处于等待切换状态,所述等待切换状态表示所述第二FW能够随时切换为运行状态,所述运行状态表示所述第二FW代替所述第一FW响应所述第一设备的IO访问并代替所述第一FW进行数据处理,其中,所述第一FW和所述第二FW共享数据区。
具体的,第一FW和第二FW可以参见硬盘自愈装置中的第一FW以及第二FW的描述。
因此,相对于现有技术只有单个FW,本申请实施例通过设置第一FW和第二FW,并在第一FW故障重启的情况下,第二FW能够快速接管响应对外IO控制以及数据除处理,从而避免第一FW在复位时间段内IO无法响应,有助于减少业务受到的影响或者避免业务受到影响。
第三方面,提供了一种硬盘,该硬盘包括第一方面以及第一方面的任一种可能的实现方式中的硬盘自愈装置。
附图说明
图1示出了本申请实施例提供的一种硬盘的示意性框图。
图2示出了本申请实施例提供的一种硬盘自愈的系统的示意图。
图3示出了本申请实施例提供的另一种硬盘自愈的系统的示意图。
图4示出了本申请实施例提供的另一种硬盘自愈的系统的示意图。
图5示出了本申请实施例提供的一种硬盘自愈的方法的示意性流程图。
具体实施方式
下面将结合附图,对本申请中的技术方案进行描述。
图1示出了本申请实施例提供的一种硬盘100的示意性框图。如图1所示,该硬盘100包括第一固件FW101和第二固件FW102,其中,第一FW101和第二FW102共用一个共享数据区。
第一FW101用于实现硬盘的完整功能,其在正常运行时能够响应外部设备的IO访问并进行数据处理。下文将以外部设备为第一设备为例对本申请的技术方案进行描述。另外,第一FW101也能够用于对执行后台任务(例如介质坏道扫描)、状态灯控制以及配置控制等操作。这里,第一FW101还可以称为主FW。
并且,在第一FW101正常运行时第二FW102处于等待切换状态,等待切换状态表示该第二FW102能够随时切换为运行状态。这里,第二FW102处于运行状态即表示该第二FW102代替第一FW101响应第一设备的IO访问并代替所述第一FW101进行数据处理。可选的,第二FW102可以仅处理安全IO逃生,实现最小安全功能,即第二FW102仅提供响应第一设备的IO访问以及数据处理功能,并不提供后台任务、状态等控制或配置控制等操作。这里,第二FW102还可以称为备FW。
本申请实施例中,第一FW101和第二FW102共享数据区,以便于第二FW102可以代替第一FW101实现数据处理的功能。
本申请实施例中,第一FW101在无法正常运行时进行故障复位。具体的,当硬盘出现软件异常,例如FW Hang挂死,或者FW OOPS状态执行错误,或者状态错误FW主动复位,硬件会对FW直接重启服务,此时第一FW101重新走初始化流程,处于无法响应第一设备的IO访问的状态。这里,故障复位也可以称为故障重启,或者其他,本申请实施例对此不作限定。
可选的,本申请实施例中,硬盘100还可以包括确定单元,确定单元可以用于确定第一FW101是否进行故障复位。需要说明的是,本申请实施例中,确定单元用于确定第一FW101进行故障复位,可以具体为确定单元用于确定第一FW101正在进行故障复位,或者即将进行故障复位。作为一例,当确定单元设置于第一FW101中时,确定单元可以根据第一FW101的运行情况,确定第一FW101是否正在进行故障复位,或者是否即将进行故障复位。
本申请实施例中,在第一FW101进行故障复位之后,第二FW从等待切换状态切换为运行状态,即第二FW可以在第一FW无法对外响应IO访问以及进行数据处理的情况下,代替第一FW对外响应IO访问,并进行数据处理。
因此,相对于现有技术只有单个FW,本申请实施例通过设置第一FW和第二FW,并在第一FW故障重启的情况下,第二FW能够快速接管响应对外IO控制以及数据除处理,从而避免第一FW在复位时间段内IO无法响应,有助于减少业务受到的影响或者避免业务受到影响。
图2示出了本申请实施例提供的一种硬盘自愈的系统的示意图。图2中的硬盘100a为图1中硬盘100的具体示例,对应的,图2中的第一FW101a为图1中的第一FW101的具体示例,图2中的第二FW102a为图1中第二FW102的具体示例。
如图2所示,该系统包括阵列11和硬盘100a,其中,阵列11与硬盘100a通过小型计算机系统接口(small computer system interface,SCSI)接口连接,SCSI接口的两端分别为IO启动器(initiator,INI)111和IO目标器(target,TGT)121,IO INI 111位于阵列11侧,为SCSI发起IO请求的下发端,IO TGT 121位于硬盘100a侧,为SCSI接收IO请求的处理端。另外,阵列11位于第一设备中,第一设备通过阵列11中的IO INI 111向硬盘100a中的IO TGT121发送IO访问请求(例如,读请求,或写请求)。这里第一设备例如为计算机或服务器,本申请实施例对此不作限定。
需要说明的是,这里仅以阵列11与硬盘100a之间的接口为SCSI接口为例进行描述,但本申请实施例并不限于此,例如该接口还可以为非易失性存储串行协议(non-volatile memory express,NVME)接口。
可选的,本申请实施例中,第一FW101a设置于第一芯片上,第二FW102a设置于第二芯片上。
本申请实施例中,第一FW101a中包括IO控制21、数据处理22、后台任务23、状态灯控制24、配置控制25、FW监控控制26和心跳27。第二FW102a中包括数据处理28、IO控制29和心跳30。其中,第一FW101a中的数据处理22与第二FW102a中的数据处理29共享数据区124。其中,可选的,相比于现有技术中的FW,本申请实施例中的第一FW101a增加了FW监控控制26和心跳27,以及增加了第二FW102a。
这里,芯片具体为控制器芯片。也就是说,此时硬盘100a为具有双控制器芯片的硬盘。具体的,每个控制器芯片独立运行一个FW。在系统启动后,第一FW101a和第二FW102a同时运行,但是仅第一FW101a能够响应第一设备的IO访问并进行数据处理,第二FW102a处于等待切换状态,即第二FW处于等待切换状态,不会响应第一设备的IO访问,也不会进行数据处理。
可选的,本申请实施例中,确定单元具体可以包括图2中的心跳27和心跳30。具体的,如果没有检测到所述第一芯片发送的心跳消息,则确定所述第一FW进行故障复位。
具体而言,两个控制器之间存在心跳检测功能模块,分别为第一FW101a中的心跳27和第二FW102a中的心跳30。如图2中的步骤1所示,心跳30对心跳27的心跳信息进行突发监控。具体的,当第一FW 101a在正常运行时,心跳27会周期性的发出心跳消息。当第二FW102a在运行中,心跳30能够检测到第一FW101a所在的控制器(即心跳27)发送的心跳消息时,第二FW不执行任何操作。当心跳30检测不到第一FW101a所在的控制器(即心跳27)发送的心跳消息时,确定第一FW101a正在进行故障复位。
本申请实施例中,当确定第一FW101a正在进行故障复位时,第二FW102a快速从等待切换状态切换至运行状态,接管第一FW101a进行IO响应。
可选的,如图2中的步骤3所示,在所述第二FW101a从等待切换状态切换为运行状态之后,第二FW102a向第一设备返回错误码或上报异步事件,该错误码或异步事件用于指示当前第一FW101a和第二FW102a处于安全运行错误状态,安全运行错误状态即表示第一FW101a进行故障重启,第二FW102a代替第一FW101a对第一设备进行IO响应以及数据处理。具体的,可以通过SCSI协议中的IO小区携带返回错误码,或者通过NVME协议上报异步事件,本申请实施例对此不作限定。第一设备在确定第一FW101a和第二FW102a处于安全运行错误状态之后,可以对硬盘进行限流操作,或其他处理,这样能够让硬盘有空闲,或者减少IO的运行状态,有助于第一FW复位。
当第二FW102a在运行状态时,一旦心跳30检测到第一FW101a所在的控制器(即心跳27)发送的心跳消息,则表示第一FW101a已经完成了故障恢复,并且能够对外响应第一设备的IO访问,数据处理,以及其他控制操作,此时可以将第二FW102由运行状态切换至等待切换状态。
可选的,第一FW101a中的FW监控控制26可以对第一FW101a是否多次出现故障复位进行检测。具体而言,如图2中步骤2所示,FW监控控制26对第二FW102a中的心跳进行主动监控。可选的,FW监控控制26还可以对第一FW101a中的心跳进行主动监控,以确定第一FW101a是否多次出现故障复位。
具体的,当第一FW101a出现故障复位次数大于或等于第一阈值时,可以认为是由于后台任务或IO任务的固有BUG反复出现引起的多次故障复位,即当前第一FW运行不稳定。可选的,这时,第一FW101a可以主动设置持久切换状态,持久切换状态即表示第二FW102a可以持久地切换至运行状态。此时第一FW101a可以通知第二FW102a进行持久切换接管。在所述第二FW101a从等待切换状态切换为运行状态之后,如图2中的步骤3所示,可以向第一设备返回错误码或上报异步事件,该错误码或异步事件用于指示当前第一FW101a和第二FW102a处于持久切换状态。具体的,错误码或上报异步事件可以参见上文中的描述,为避免重复,这里不再赘述。第一设备在确定第一FW101a和第二FW102a处于持久切换状态之后,进行硬盘预考贝隔离流程,即将硬盘数据安全拷贝到安全区,然后停止硬盘工作。
因此,相对于现有技术只有单个FW,本申请实施例通过设置第一FW和第二FW,并在第一FW故障重启的情况下,第二FW能够快速接管响应对外IO控制以及数据除处理,从而避免第一FW在复位时间段内IO无法响应,有助于减少业务受到的影响或者避免业务受到影响。
图3示出了本申请实施例提供的另一种硬盘自愈的系统的示意图。图3中的硬盘100b为图1中硬盘100的具体示例,对应的,图3中的第一FW101b为图1中的第一FW101的具体示例,图3中的第二FW102b为图1中第二FW102的具体示例。
如图3所示,该系统包括阵列11和硬盘100b,其中,阵列11与硬盘100b的连接方式可以参考阵列11与硬盘100a的连接方式,为了简洁,这里不再赘述。
可选的,本申请实施例中,第一FW101b和第二FW102b均设置于第三芯片上。
本申请实施例中,第一FW101b中包括IO控制41、数据处理42、后台任务43、状态灯控制44、配置控制45和FW监控控制46。第二FW102b中包括数据处理47、IO控制48和主FW启动控制切换管理49。其中,数据处理42和数据处理47共享数据区124。可选的,相比于现有技术中的FW,本申请实施例中的第一FW101b增加了FW监控控制46,以及增加了第二FW102b。
这里,芯片具体为控制器芯片。也就是说,此时第一FW101b和第二FW102b同时在第三芯片上运行,第一FW101b与第二FW102b的程序段和内存地址独立,相互间不影响。系统启动后,同时将第一FW101b和第二FW102b加载为就位状态,并且第一FW101b上的程序在运行(即响应第一设备的IO访问并进行数据处理),第二FW102b上的程序不能够被运行,使得第二FW102b中的程序处于等待切换状态,即第二FW处于待运行状态,不会响应第一设备的IO访问,也不会进行数据处理。
本申请实施例中,如果检测到所述第一FW运行超过设定响应门限,则确定所述第一FW进行故障复位。可选的,本申请实施例中,确定单元具体可以包括图3中的看门狗(watchdog)125,看门狗可以监测定时器是否超过门限,当超过门限时,则第一FW直接进行故障复位。此时,如图3中的步骤1所示,watchdog125可以对第一FW101b进行突发监控,检测第一FW运行是否超过设定响应门限。
本申请实施例中,如图3中步骤3所示,当确定第一FW101b进行故障复位时,可以通过硬件中断将程序从第一FW101b切换到第二FW102b,使得第二FW102a快速从等待切换状态切换至运行状态,接管第一FW101b进行IO响应。
可选的,如图3中的步骤4所示,在所述第二FW101b从等待切换状态切换为运行状态之后,第二FW102b向第一设备返回错误码或上报异步事件,该错误码或异步事件用于指示当前第一FW101b和第二FW102b处于安全运行错误状态,安全运行错误状态即表示第一FW101b进行故障重启,第二FW102b代替第一FW101b对第一设备进行IO响应以及数据处理。上报过程可以参见图2中步骤3的描述,为避免重复,这里不再赘述。
可选的,当第二FW102b在运行状态时,第二FW102b在处理空闲周期中执行硬中断触发所述第一FW启动复位,在所述第一FW复位完成并正常运行之后,所述第二FW切换至所述等待切换状态。
具体的,如图3中步骤5所示,第二FW102中的主FW启动控制切换管理49在第二FW102b运行的空闲阶段,可以触发主FW启动,即主FW启动控制切换管理49可以把CPU中的资源让出一部分来用于第一FW101a的复位操作。
可选的,第一FW101b中的FW监控控制46可以对第一FW101b是否多次出现故障复位进行检测。具体而言,如图3中步骤2所示,FW监控控制46对watchdog125进行主动监控,以确定第一FW101b是否多次出现故障复位。
具体的,当第一FW101b出现故障复位次数大于或等于第一阈值时,可以认为是由于后台任务或IO任务的固有BUG反复出现引起的多次故障复位,即当前第一FW101b运行不稳定。这时,第一FW101b可以主动触发硬中断,且设置持久切换状态,持久切换状态即表示第二FW102b可以持久地切换至运行状态。
可选的,如图3中的步骤4所示,在所述第二FW101b从等待切换状态切换为运行状态之后,可以向第一设备返回错误码或上报异步事件,该错误码或异步事件用于指示当前第一FW101b和第二FW102b处于持久切换状态。具体的,这里步骤4可以参见上文中的描述,为避免重复,这里不再赘述。而第一设备在确定第一FW101b和第二FW102b处于持久切换状态之后,如图3中步骤6所示,阵列配合拉起切换,具体的,第一设备中阵列11可以进行硬盘预考贝隔离流程,即将硬盘数据安全拷贝到安全区,然后停止硬盘工作。
因此,相对于现有技术只有单个FW,本申请实施例通过设置第一FW和第二FW,并在第一FW故障重启的情况下,第二FW能够快速接管响应对外IO控制以及数据除处理,从而避免第一FW在复位时间段内IO无法响应,有助于减少业务受到的影响或者避免业务受到影响。
可选的,本申请实施例中,在所述第一FW出现故障复位次数大于或等于第一阈值时,所述第一FW还可以接收第一设备发送的切换命令,所述切换命令用于指示所述第二FW切换至运行状态。
具体的,该切换命令可以为扩展的SCSI协议命令,或者扩展的NVMe协议命令。也就是说,本申请实施例可以通过硬盘与第一设备交互的方式实现第一FW和第二FW的切换。
作为示例,表1示出了SCSI协议的一种扩展方式。
表1:
具体的,在表1中,Master表示第一FW,Slave表示第二FW。
附加类型在功能上可以设定为周期性切换或切回、强制切换等类型。其中,周期性切换或切回指到达周期后自动执行切换或切回。作为一个例子,切换指的是由第一FW切换到第二FW,切回指的是再由第二FW切换到第一FW。强制切换指在没有任何错误的情况下,强行进行切换。
附加数据例如周期切回的携带周期时间,即周期到时切换的时间。
作为示例,表2示出了NVMe协议的一种扩展方式。
表2:
具体的,表2中参数的描述可以参考表1,为避免重复,这里不再赘述。
图4示出了本申请实施例提供的另一种硬盘自愈的系统的示意图。图4中的硬盘100c为图1中硬盘100的具体示例,对应的,图4中的第一FW101c为图1中的第一FW101的具体示例,图4中的第二FW102c为图1中第二FW102的具体示例。
如图4所示,该系统包括阵列11和硬盘100c,其中,阵列11与硬盘100c的连接方式可以参考阵列11与硬盘100a的连接方式,为了简洁,这里不再赘述。
本申请实施例中,阵列中还包括硬盘监控控制112,第一FW101c中包括IO控制61、数据处理62、后台任务63、状态灯控制64、配置控制65和FW监控控制66。第二FW102b中包括数据处理67和IO控制68。其中,数据处理62和数据处理67共享数据区124。可选的,相比于现有技术中的FW,本申请实施例中的阵列中增加了硬盘监控控制112,第一FW101c增加了FW监控控制66,以及增加了第二FW102b。
可选的,本申请实施例中,第一FW101c和第二FW102c可以设置在一个芯片上,或者可以分别设置在两个芯片上,本申请实施例对此不作限定。这里,芯片具体为控制器芯片。具体而言,当第一FW和第二FW设置在同一个芯片上时,第二FW中可以包括主FW启动控制切换管理,或者可选的,当第一FW和第二FW分别设置在两个芯片上时,第一FW和第二FW中可以增加分别心跳功能。
本申请实施例中,阵列11侧可以监控硬盘的运行状态,这里硬盘的运行状态例如包括IO超时,慢盘,FW闪断、无响应、IO异常、IO数据一致性完整性等。当硬盘监控控制112发现周期内硬盘运行状态存在异常达到门限时,认为第一FW运行状态为非稳定状态,此时如图4中步骤1所示,硬盘监控控制112可以向硬盘侧下发切换命令,指示第一FW进行故障复位,所述第二FW切换至运行状态。或者,当阵列11侧决定进行FW升级流程时,可以执行FW切换。此时,如图4中步骤1所示,硬盘监控控制112可以向硬盘侧下发切换命令,指示所述第二FW由等待切换状态切换至运行状态。然后,如图4中步骤2所示,第一FW101c与第二FW102c进行切换接管,第一FW进行故障复位,或者FW升级,第二FW由等待切换状态切换至运行状态。然后,如图4中步骤3所示,第二FW102c向硬盘侧返初错误码,或者上报异步事件。具体的,图4中步骤3可以参见图2中步骤3的描述,或者图3中步骤4的描述,这里不再赘述。
因此,相对于现有技术只有单个FW,本申请实施例通过设置第一FW和第二FW,并在第一FW故障重启的情况下,第二FW能够快速接管响应对外IO控制以及数据除处理,从而避免第一FW在复位时间段内IO无法响应,有助于减少业务受到的影响或者避免业务受到影响。
需要说明的是,本申请实施例提供的硬盘自愈装置可以应用于服务器、存储、HDD、SSD、存储卡、USB、单片机等运行FW硬件的领域,本申请实施例仅以硬盘作为示例进行描述,但是本申请实施例并不限于此。
图5示出了本申请实施例提供的硬盘自愈的方法的示意性流程图。具体的,该方法可以由上文中所述的硬盘执行。该方法包括510和520。
510,确定第一固件FW进行故障复位,其中,所述第一FW在无法正常运行时进行故障复位,所述第一FW在正常运行时能够响应第一设备的输入输出IO访问并进行数据处理;
520,在所述确定第一固件FW进行故障复位之后,第二FW从等待切换状态切换为运行状态,其中,所述第二FW在所述第一FW正常运行时处于等待切换状态,所述等待切换状态表示所述第二FW能够随时切换为运行状态,所述运行状态表示所述第二FW代替所述第一FW响应所述第一设备的IO访问并代替所述第一FW进行数据处理,其中,所述第一FW和所述第二FW共享数据区。
可选的,所述第一FW设置于第一芯片上,所述第二FW设置于第二芯片上,其中,所述确定第一固件FW进行故障复位,包括:
如果没有检测到所述第一芯片发送的心跳消息,则确定所述第一FW正在进行故障复位。
可选的,所述第一FW和所述第二FW均设置于第三芯片上,其中,所述确定第一固件FW进行故障复位,包括:
如果检测到所述第一FW运行超过设定响应门限,则确定所述第一FW进行故障复位。
可选的,所述第二FW从等待切换状态切换为运行状态之后,还包括:
所述第二FW在处理空闲周期中执行硬中断触发所述第一FW启动复位;
在所述第一FW复位完成并正常运行之后,所述第二FW切换至所述等待切换状态。
可选的,在所述第二FW从等待切换状态切换为运行状态之后,还包括:
所述第二FW向所述第一设备发送第一消息,所述第一消息用于通知所述第一设备进行限流操作,或硬盘预考贝隔离流程。
可选的,所述确定第一固件FW进行故障复位之前,还包括:
所述第一FW接收第一设备发送的切换命令,所述切换命令用于指示第一FW进行故障恢复或进行升级,并且第二FW由所述等待切换状态切换至所述运行状态。
具体的,第一FW、第二FW可以参见上文中图1至图4中的描述,为避免重复,这里不再赘述。
因此,相对于现有技术只有单个FW,本申请实施例通过设置第一FW和第二FW,并在第一FW故障重启的情况下,第二FW能够快速接管响应对外IO控制以及数据除处理,从而避免第一FW在复位时间段内IO无法响应,有助于减少业务受到的影响或者避免业务受到影响。
本申请实施例还提供了一种硬盘自愈装置,包括上文中所述的第一FW和第二FW。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种硬盘自愈装置,其特征在于,包括第一固件FW和第二固件FW,
所述第一固件FW还用于接收第一设备发送的切换命令,所述切换命令用于指示所述第一固件FW进行故障恢复或进行升级,并且所述第二固件FW由等待切换状态切换至运行状态;
所述第一固件FW,在正常运行时用于响应所述第一设备的输入输出IO访问并进行数据处理,并且所述第一固件FW在无法正常运行时进行故障复位;
所述第二固件FW,用于在所述第一固件FW进行故障复位之后,从所述等待切换状态切换为所述运行状态,其中,所述第二固件FW在所述第一固件FW正常运行时处于所述等待切换状态,所述等待切换状态表示所述第二固件FW能够随时切换为运行状态,所述运行状态表示所述第二固件FW代替所述第一固件FW响应所述第一设备的IO访问并代替所述第一固件FW进行数据处理,其中,所述第一固件FW和所述第二固件FW共享数据区。
2.根据权利要求1所述的装置,其特征在于,所述第一固件FW设置于第一芯片上,所述第二固件FW设置于第二芯片上,其中,所述第一芯片上包括第一心跳模块,所述第二芯片上包括第二心跳模块,
如果所述第二心跳模块没有检测到所述第一心跳模块发送的心跳消息,则确定所述第一固件FW正在进行故障复位。
3.根据权利要求1所述的装置,其特征在于,所述第一固件FW和所述第二固件FW均设置于第三芯片上,其中,所述装置还包括检测单元,
如果所述检测单元检测到所述第一固件FW运行超过设定响应门限,则确定所述第一固件FW进行故障复位。
4.根据权利要求3所述的装置,其特征在于,还包括:
所述第二固件FW从等待切换状态切换为运行状态之后,所述第二固件FW在处理空闲周期中执行硬中断触发所述第一固件FW启动复位;
在所述第一固件FW复位完成并正常运行之后,所述第二固件FW切换至所述等待切换状态。
5.根据权利要求1-4任一项所述的装置,其特征在于,在所述第二固件FW从等待切换状态切换为运行状态之后,所述第二固件FW还用于向所述第一设备发送第一消息,所述第一消息用于通知所述第一设备进行限流操作,或硬盘预考贝隔离流程。
6.一种硬盘自愈的方法,其特征在于,包括:
第一固件FW接收第一设备发送的切换命令,所述切换命令用于指示所述第一固件FW进行故障恢复或进行升级,并且第二固件FW由等待切换状态切换至运行状态;
确定所述第一固件FW进行故障复位,其中,所述第一固件FW在无法正常运行时进行故障复位,所述第一固件FW在正常运行时能够响应所述第一设备的输入输出IO访问并进行数据处理;
在所述确定第一固件FW进行故障复位之后,所述第二固件FW从所述等待切换状态切换为所述运行状态,其中,所述第二固件FW在所述第一固件FW正常运行时处于所述等待切换状态,所述等待切换状态表示所述第二固件FW能够随时切换为运行状态,所述运行状态表示所述第二固件FW代替所述第一固件FW响应所述第一设备的IO访问并代替所述第一固件FW进行数据处理,其中,所述第一固件FW和所述第二固件FW共享数据区。
7.根据权利要求6所述的方法,其特征在于,所述第一固件FW设置于第一芯片上,所述第二固件FW设置于第二芯片上,其中,所述确定第一固件FW进行故障复位,包括:
如果没有检测到所述第一芯片发送的心跳消息,则确定所述第一固件FW正在进行故障复位。
8.根据权利要求6所述的方法,其特征在于,所述第一固件FW和所述第二固件FW均设置于第三芯片上,其中,所述确定第一固件FW进行故障复位,包括:
如果检测到所述第一固件FW运行超过设定响应门限,则确定所述第一固件FW进行故障复位。
9.根据权利要求8所述的方法,其特征在于,所述第二固件FW从等待切换状态切换为运行状态之后,还包括:
所述第二固件FW在处理空闲周期中执行硬中断触发所述第一固件FW启动复位;
在所述第一固件FW复位完成并正常运行之后,所述第二固件FW切换至所述等待切换状态。
10.根据权利要求6-9任一项所述的方法,其特征在于,在所述第二固件FW从等待切换状态切换为运行状态之后,还包括:
所述第二固件FW向所述第一设备发送第一消息,所述第一消息用于通知所述第一设备进行限流操作,或硬盘预考贝隔离流程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810932198.5A CN109358982B (zh) | 2018-08-16 | 2018-08-16 | 硬盘自愈装置、方法以及硬盘 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810932198.5A CN109358982B (zh) | 2018-08-16 | 2018-08-16 | 硬盘自愈装置、方法以及硬盘 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109358982A CN109358982A (zh) | 2019-02-19 |
CN109358982B true CN109358982B (zh) | 2021-08-13 |
Family
ID=65350044
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810932198.5A Active CN109358982B (zh) | 2018-08-16 | 2018-08-16 | 硬盘自愈装置、方法以及硬盘 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109358982B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110688263B (zh) * | 2019-09-30 | 2023-04-11 | 中国工程物理研究院计算机应用研究所 | 基于fpga的硬盘自动切换装置的应用方法 |
CN111666184B (zh) * | 2020-06-29 | 2024-07-09 | 腾讯科技(深圳)有限公司 | 固态驱动器ssd硬盘测试方法、装置及电子设备 |
CN112948315B (zh) * | 2021-01-29 | 2024-07-23 | Oppo广东移动通信有限公司 | 存储区域共享方法、存储介质及电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101571807A (zh) * | 2008-04-28 | 2009-11-04 | 鸿富锦精密工业(深圳)有限公司 | 具有固件的系统及其启动方法 |
CN102857358A (zh) * | 2011-06-29 | 2013-01-02 | 环旭电子股份有限公司 | 可修复固件的客户端设备及其固件修复方法 |
CN106648632A (zh) * | 2016-12-02 | 2017-05-10 | 英业达科技有限公司 | 计算机系统 |
-
2018
- 2018-08-16 CN CN201810932198.5A patent/CN109358982B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101571807A (zh) * | 2008-04-28 | 2009-11-04 | 鸿富锦精密工业(深圳)有限公司 | 具有固件的系统及其启动方法 |
CN102857358A (zh) * | 2011-06-29 | 2013-01-02 | 环旭电子股份有限公司 | 可修复固件的客户端设备及其固件修复方法 |
CN106648632A (zh) * | 2016-12-02 | 2017-05-10 | 英业达科技有限公司 | 计算机系统 |
Also Published As
Publication number | Publication date |
---|---|
CN109358982A (zh) | 2019-02-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8423816B2 (en) | Method and computer system for failover | |
CN107209671B (zh) | 计算机中启动操作的动态自动监测和控制 | |
JP3844621B2 (ja) | アプリケーション実現方法及びアプリケーション実現装置 | |
US7565567B2 (en) | Highly available computing platform | |
CN109358982B (zh) | 硬盘自愈装置、方法以及硬盘 | |
JP6064237B2 (ja) | メモリデータを移行するための方法、コンピュータ、および装置 | |
WO2018095107A1 (zh) | 一种bios程序的异常处理方法及装置 | |
TWI529624B (zh) | Method and system of fault tolerance for multiple servers | |
CN101216793A (zh) | 一种多处理器系统故障恢复的方法及装置 | |
US7089413B2 (en) | Dynamic computer system reset architecture | |
CN108108255A (zh) | 虚拟机故障的检测和恢复方法及装置 | |
CN104079454A (zh) | 一种设备异常检测方法和设备 | |
CN114064132A (zh) | 一种系统宕机恢复方法、装置、设备和系统 | |
CN112199240A (zh) | 一种节点故障时进行节点切换的方法及相关设备 | |
JP2002259130A (ja) | 情報処理システムおよびその起動制御方法 | |
CN111538613A (zh) | 一种集群系统异常恢复处理方法及装置 | |
JP2008217265A (ja) | プールi/oデバイス動作確認方法、及び計算機システム | |
CN111147615B (zh) | Ip地址的接管方法、系统、计算机可读存储介质及服务器 | |
JP2006285384A (ja) | プロセッサ障害処理方式、管理プロセッサ及びプロセッサ障害処理方法 | |
CN116991637B (zh) | 嵌入式系统的运行控制方法及装置、电子设备及存储介质 | |
JP4633553B2 (ja) | デバッグシステム、デバッグ方法およびプログラム | |
JPH10133963A (ja) | 計算機の故障検出・回復方式 | |
JP6424134B2 (ja) | 計算機システム及び計算機システムの制御方法 | |
JP2015106226A (ja) | 二重化システム | |
JP7351129B2 (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 |