CN115794153A - 一种固件升级方法及相关设备 - Google Patents
一种固件升级方法及相关设备 Download PDFInfo
- Publication number
- CN115794153A CN115794153A CN202211383635.5A CN202211383635A CN115794153A CN 115794153 A CN115794153 A CN 115794153A CN 202211383635 A CN202211383635 A CN 202211383635A CN 115794153 A CN115794153 A CN 115794153A
- Authority
- CN
- China
- Prior art keywords
- upgraded
- firmware
- equipment
- threshold
- file
- 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.)
- Pending
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本申请实施例公开一种固件升级方法及相关设备,应用于待升级设备,该待升级设备包括存储介质,该方法包括:接收计算设备发送的固件升级命令和待升级固件文件,该固件升级命令用于指示对该待升级设备进行固件升级;响应于该固件升级命令,将该待升级固件文件写入该存储介质;在该待升级设备的输入输出IO小于第一阈值的情况下,执行复位操作,该复位操作用于触发该待升级设备运行该待升级固件文件。本申请实施例,待升级设备可以监测自身的IO,然后在IO小于第一阈值时,执行复位操作,从而可以降低固件升级对业务的影响。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种固件升级方法及相关设备。
背景技术
随着计算机技术的进步,服务器的外围设备的功能和性能不断提升和完善,外围设备的架构也越来越复杂。与此同时,服务器的外围设备基于功能升级或问题解决的固件升级也越来越频繁,例如,固态硬盘、RAID卡等存储设备的固件升级。
其中,在存储设备固件升级的过程中,存储设备需要将新的固件文件写入自身的存储介质中,之后,为了激活新的固件(即使新的固件生效),相关管理人员可以重启服务器。但是,在重启服务器的过程中,存储设备的输入输出(input/output,IO)也会中断处理,这样会对服务器上运行的相关业务进程造成较大影响。
发明内容
本申请实施例公开了一种固件升级方法及相关设备,可以降低固件升级对业务的影响。
第一方面公开一种固件升级方法,该固件升级方法可以应用于待升级设备,也可以应用于待升级设备中的模块(例如,芯片),还可以应用于能实现全部或部分待升级设备功能的逻辑模块或软件。该待升级设备包括存储介质,下面以应用于待升级设备为例进行描述。该固件升级方法可以包括:接收计算设备发送的固件升级命令和待升级固件文件,该固件升级命令用于指示对该待升级设备进行固件升级;响应于该固件升级命令,将该待升级固件文件写入该存储介质;在该待升级设备的输入输出IO小于第一阈值的情况下,执行复位操作,该复位操作用于触发该待升级设备运行该待升级固件文件。
本申请实施例中,当待升级设备成功将待升级固件写入自身的存储介质之后,待升级设备可以实时监测自身的IO情况,之后,在监测到自身的IO小于第一阈值的情况下,待升级设备可以执行复位操作,激活待升级固件。这样,可以保证待升级设备在业务较为空闲的时候执行复位操作,从而可以降低固件升级对业务的影响,并且,这种方式不需要人工操作,可以提高服务器的运维效率。
作为一种可能的实施方式,该第一阈值根据该待升级设备在线复位所需时间、该待升级设备的性能、该待升级固件文件对应的固件升级类型中的一项或多项确定。
本申请实施例中,第一阈值可以根据待升级设备在线复位所需时间、待升级设备的性能、待升级固件文件对应的固件升级类型中的一项或多项确定,这样,可以得到一个合适的第一阈值,从而可以保证固件升级的效率,并且可以降低固件升级对业务的影响。
作为一种可能的实施方式,该待升级设备的IO小于第一阈值包括:该待升级设备在第一时刻的IO小于第一阈值;或者,该待升级设备在第一时间段内的平均IO小于该第一阈值。
本申请实施例中,待升级设备可以在第一时刻的IO小于第一阈值时,执行复位操作,也可以在第一时间段内的平均IO小于该第一阈值时,执行复位操作,而由于一段时间内的平均IO可以更好地表明后续一段时间的IO情况,因此,基于第一时间段内的平均IO执行复位操作能够更准确地降低固件升级对业务的影响。
作为一种可能的实施方式,该方法还包括:在轮询时间阈值内,监测该待升级设备的IO;该在该待升级设备的IO小于第一阈值的情况下,执行复位操作,包括:在监测到该待升级设备的IO小于第一阈值的情况下,执行复位操作。
本申请实施例中,由于待升级设备的IO在很长一段时间内均大于或等于第一阈值,因此,待升级设备需要一直持续监测自身的IO情况,这样,会一直消耗待升级设备的处理资源,因此可以为待升级设备设定轮询时间阈值,如果在轮询时间阈值内未监测自身IO小于第一阈值,待升级设备可以暂停监测自身的IO情况,并提示管理人员可以自行选择服务器上下电重启生效,这样,可以节约待升级设备的处理资源。
作为一种可能的实施方式,在该待升级固件文件对应的固件升级类型为第一类型的情况下,该轮询时间阈值为第一轮询时间阈值;在该待升级固件文件对应的固件升级类型为第二类型的情况下,该轮询时间阈值为第二轮询时间阈值,该第一轮询时间阈值大于该第二轮询时间阈值。
本申请实施例中,针对不同的固件升级类型,轮询时间阈值可以不同,其中,针对于第一类型的固件升级,其紧急程度较低,而针对第二类型的固件升级,其紧急程度较高,因此,这两种情况下可以分别设置第一轮询时间阈值和第二轮询时间阈值,这样,可以针对不同的情况设置合适的轮询时间阈值。
作为一种可能的实施方式,该方法还包括:校验该待升级固件文件;该将该待升级固件文件写入该存储介质包括:在该待升级固件文件校验成功的情况下,将该待升级固件文件写入该存储介质。
本申请实施例中,在待升级固件文件校验成功的情况下,才将其写入存储介质中,这样,可以避免不必要的写入,从而可以节约相关资源。
作为一种可能的实施方式,该方法还包括:在执行该复位操作的过程中,将IO请求缓存在IO队列中;在该待升级设备运行该待升级固件文件之后,处理该IO队列中的IO请求。
本申请实施例中,在待升级设备执行复位操作的过程中,待升级设备可以将IO请求缓存在IO队列中,当复位结束之后继续处理。这样,可以避免IO请求丢失。
作为一种可能的实施方式,该执行复位操作包括:该待升级设备向固件升级设备发送第一指示信息,该第一指示信息用于指示该固件升级设备进行该待升级设备的在线复位。
本申请实施例中,在线复位的方式对待升级设备的影响较小,需要的时间较短,因此,可以极大地减轻对业务的影响,提高固件激活的效率。
作为一种可能的实施方式,该固件升级设备为处理器或带外控制器,和/或,该待升级设备为独立磁盘冗余阵列RAID卡。
第二方面公开一种独立磁盘冗余阵列(redundant arrays of independentdisks,RAID)卡,该RAID卡包括:固件升级模块、输入输出IO监测模块、复位模块、固件加载模块和存储介质;其中:该固件升级模块,用于将该RAID卡的待升级固件文件写入该存储介质,以及用于触发该IO监测模块进行相应的处理;该IO监测模块,用于监测该RAID卡的IO,以及用于在监测到该RAID卡的IO小于第一阈值的情况下,该复位模块进行相应的处理;该复位模块,用于触发该RAID卡的复位;该固件加载模块,用于在该RAID卡的复位结束后,加载和运行该待升级固件文件。
第三方面公开一种服务器,该服务器上安装有至少一个上述第二方面公开的RAID卡。
第四方面公开一种待升级设备,该待升级设备包括处理器、存储器和通信接口,该通信接口用于接收来自该待升级设备之外的其它电子设备的信息,以及向该待升级设备之外的其它电子设备输出信息,该处理器调用该存储器中存储的计算机程序实现如上述第一方面以及第一方面中任一可能的实现方式中所提供的固件升级方法。
第五方面公开一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序或计算机指令,当该计算机程序或计算机指令运行时,实现如上述各方面公开的固件升级方法。
第六方面公开一种芯片,包括处理器,用于执行存储器中存储的程序,当程序被执行时,使得芯片执行上述各方面公开的固件升级方法。
作为一种可能的实施方式,存储器位于芯片之外。
第七方面公开一种计算机程序产品,该计算机程序产品包括计算机程序代码,当该计算机程序代码被运行时,使得上述各方面公开的固件升级方法被执行。
可以理解地,上述第二方面提供的RAID卡、第三方面提供的服务器、第四方面提供的待升级设备、第五方面提供的计算机可读存储介质、第六方面提供的芯片和第七方面提供的计算机程序产品均可用于执行本申请第一方面以及第一方面中任一可能的实现方式中所提供的固件升级方法。因此,其所能达到的有益效果可参考对应方法中的有益效果,此处不再赘述。
附图说明
附图为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。
图1是本申请实施例公开的一种待升级设备进行固件升级的流程示意图;
图2是本申请实施例公开的一种系统架构示意图;
图3是本申请实施例公开的另一种系统架构示意图;
图4是本申请实施例公开的另一种系统架构示意图;
图5是本申请实施例公开的一种固件升级方法的流程示意图;
图6是本申请实施例公开的一种电子设备的结构示意图;
图7是本申请实施例公开的一种固件升级系统的结构示意图。
具体实施方式
本申请实施例公开了一种固件升级方法及相关设备,可以降低固件升级对业务的影响。下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
为了更好地理解本申请实施例,下面先对本申请实施例的相关技术进行描述。
固件(firmware,FW)是指运行于电子设备(如服务器的外围设备)芯片上的代码或程序,用于控制电子设备的正常工作,实现电子设备的功能。例如,网卡的固件用于实现网卡的网络连接、报文收发等功能,独立磁盘冗余阵列(redundant arrays of independentdisks,RAID)卡的固件用于实现RAID卡的数据读取、数据存储、数据冗余备份等功能。
随着计算机技术的进步,服务器的外围设备的功能和性能不断提升和完善,外围设备的架构也越来越复杂。与此同时,服务器的外围设备基于功能升级或问题解决的固件升级也越来越频繁,例如,RAID卡、网卡或各类功能性板卡等的固件升级。
请参阅图1,图1是本申请实施例公开的一种待升级设备进行固件升级的流程示意图,该待升级设备可以包括但不限于RAID卡、网卡或各类功能性板卡等,在本实施例中,以RAID卡作为举例进行说明。如图1所示,待升级设备进行固件升级包括如下步骤:
101.服务器接收固件升级请求。
具体地,服务器与至少一个待升级设备连接,如服务器上可以安装至少一个RAID卡,为了对RAID卡的固件进行升级,服务器接收由用户终端或其他服务器等外接设备发送的固件升级请求,或者,服务器接收由用户输入的固件升级请求等,该固件升级请求用于请求对RAID卡进行固件升级。例如,用户可以通过管理工具(即固件升级工具)或命令行在服务器的显示界面上输入固件升级请求。
102.基于该固件升级请求,服务器向待升级设备发送固件升级命令和待升级固件文件。
相应地,待升级设备可以接收到来自服务器的固件升级命令和待升级固件文件。举例地,固件升级请求中可以包含设备标识,设备标识用于标识RAID卡的地址、ID或编号等,服务器接收到该固件升级请求后,根据该设备标识向对应的RAID卡下发固件升级命令,该固件升级命令用于指示RAID卡进行固件升级。例如,待升级固件文件为RAID卡的待升级固件文件,该待升级固件文件的版本一般高于或者低于RAID卡当前运行的固件文件的版本。可选地,固件升级请求中可以包含待升级固件文件,或者,该待升级固件文件存储在服务器中,服务器在接收到固件升级请求后,根据设备标识将对应的待升级固件文件发送至待升级的RAID卡。
103.待升级设备将待升级固件文件写入自身的存储介质中。
具体地,待升级设备接收到来自服务器的固件升级命令以及待升级固件文件之后,可以将待升级固件文件写入自身的存储介质中。当待升级设备成功将待升级固件文件写入自身的存储介质之后,可以向服务器发送固件升级完成消息,即执行步骤104。
104.待升级设备向服务器发送固件升级完成消息,固件升级完成消息用于指示待升级设备成功将待升级固件文件写入存储介质中。
相应地,服务器可以接收到来自待升级设备的固件升级完成消息,之后可以提示用户待升级固件需要服务器重启进行激活,即执行步骤105。
105.服务器提示用户待升级固件需要服务器重启进行激活。
具体地,当服务器接收到来自待升级设备的固件升级完成消息之后,此时,为了激活待升级固件,服务器可以提示用户待升级固件需要服务器重启进行激活。例如,服务器可以通过服务器的显示模块(如显示屏)输出指示信息,该指示信息用于指示待升级固件需要服务器重启进行激活。之后,为了激活待升级固件,用户可以选择一个时间重启服务器,即进行服务器上下电重启。
应理解,服务器重启过程中,服务器会中断自身业务的处理以及待升级设备的业务侧输入输出(input/output,IO)(即主机侧IO),会对业务造成一定的影响。甚至对于待升级设备(如硬盘)比较多的服务器,一次完整的服务器上下电重启可能会使得业务中断半小时以上。因此,为了尽可能减轻待升级设备固件升级对业务的影响,通常需要人工蹲点,即需要服务器管理人员选择业务压力较小时进行服务器的重启,一般在凌晨以后(如凌晨2点左右)。当服务器管理人员进行服务器重启之后,可以激活待升级固件,使待升级设备的芯片上运行的固件由旧固件切换为新固件(即上述待升级固件)。
可见,上述待升级设备进行固件升级时,为了激活待升级固件(即使待升级固件生效),通常需要进行人工蹲点,通过人工实时监测业务压力(即待升级设备业务侧IO压力),选择合适的时间进行服务器的重启。此外,服务器重启会使待升级设备的业务侧IO中断时间较长,对业务造成的影响较大。
为了解决上述问题,本申请实施例中,当待升级设备成功将待升级固件写入自身的存储介质之后,待升级设备可以实时监测(即监控)自身的IO情况,之后,在监测到自身的IO小于IO阈值的情况下,待升级设备可以进行在线复位,激活待升级固件。可见,上述过程中,待升级设备可以根据IO阈值智能化的选择合适的时间进行在线复位,这样可以提高服务器的运维效率。并且,相比于服务器重启,在线复位的方式对服务器的影响更小,需要的时间更短,因此,可以极大地减轻对业务的影响,提高固件激活的效率。
为了更好地理解本申请实施例,下面先对本申请实施例使用的系统架构进行描述。
请参阅图2,图2是本申请实施例公开的一种系统架构示意图。如图2所示,该系统架构可以包括计算设备200和待升级设备300,其中,计算设备200可以包括主机(host)201、带外控制器202,待升级设备300可以包括存储介质301。其中,主机201、带外控制器202和待升级设备300任意两者之间可以进行通信。计算设备200可以是具有数据处理能力、数据收发能力和数据存储能力的电子设备,例如刀片式服务器、高密度服务器、机架式服务器、机柜式服务器等服务器。
具体地,主机201为计算设备200的主要机体部分,可以包括中央处理器(centralprocessing unit,CPU)、内存等硬件设备,也可以包括操作系统(operating system,OS)等软件。其中,OS上可以运行相关业务进程,以支持各种业务,对外提供相应的服务。应理解,操作系统可以包括Linux操作系统、Windows操作系统、Unix操作系统等中的一个或多个。
带外控制器202可以是独立于CPU之外的带外处理器。带外控制器可以包括计算设备200外部的监测管理单元、处理器外的管理芯片中的管理系统、基板管理控制器(baseboard management controller,BMC)、系统管理模块(system management mode,SMM)等。
带外控制器202主要用于对计算设备200进行监测、管理等,并且支持通过管理网口进行远程管理(如服务器复位、服务器上下电、固件升级等)。例如,带外控制器可以监测服务器中各个硬件设备的状态(如温度、电压等)。再例如,通过带外控制器可以进行系统配置、固件升级、故障诊断等。
待升级设备300可以为RAID卡、网卡或各类功能性板卡等,其可以为计算设备200的外接设备。应理解,待升级设备300可以为固态硬盘(solid state disk,SSD),也可以为机械硬盘(hard disk drive,HDD),还可以为RAID卡等,在此不作限定。还应理解,计算设备200可以包括一个或多个待升级设备(如一个或多个RAID卡)。需要说明的是,在一些实施例中,待升级设备300也可以为计算设备200的一部分。
待升级设备300可以包括存储介质301。存储介质301中可以存储有待升级设备300的固件文件,该固件文件可以运行于待升级设备300的芯片上,用于实现待升级设备300的各种功能。待升级设备300的存储介质可以为闪存(flash memory),或者非易失性随机访问存储器(non-volatile random access memory,NVRAM),或者电可擦编程只读存储器(electrically erasable programmable read-only memory,EEPROM),在此不作限定。
在图2所示的系统架构中,主机201和带外控制器202可以对待升级设备300的固件进行升级(即更新固件代码)和激活。本申请实施例中,主机201或带外控制器202可以向待升级设备300发送固件升级命令以及待升级固件文件,并且可以设置IO阈值。当待升级设备300接收到固件升级命令以及待升级固件文件之后,可以将待升级固件文件写入存储介质301中。之后,为了激活待升级固件以及减轻对业务的影响,待升级设备300可以持续监测自身的IO情况,在自身的IO小于IO阈值的情况下,待升级设备300可以进行在线复位,激活待升级固件。
下面以待升级设备300为RAID卡为例对本申请实施例的相关场景进行说明,请参阅图3,图3是本申请实施例公开的另一种系统架构示意图。如图3所示,RAID卡FW升级场景下,主机201侧(通常是OS)保存有RAID卡FW文件(即待升级固件文件),主机201可以通过RAID卡驱动将RAID卡FW文件下发至RAID卡。相应地,RAID卡可以根据主机201下发的命令进行解析处理,当RAID卡FW识别当前命令为RAID卡FW升级命令时,可以将新的FW文件拷贝至存储介质(即NorFlash)里。之后,RAID卡在下一次重启时,可以从NorFlash里读出新的FW文件,从而让新的FW版本生效。RAID卡的下一次重启,可以由计算设备重启或者RAID卡复位来触发。
需要说明的是,图2和图3所示的系统架构只是示例性说明,并不对其构成限定。在本申请另一些实施例中,图2所示的系统架构可以包括比图示更多或更少的设备或模块,不限于仅包括图2中所示的主机201、带外控制器202和待升级设备300。并且,本申请实施例提供的固件升级方法也不局限于应用于计算设备200,也可以应用于数据中心、笔记本电脑、台式电脑、智能汽车、超级移动个人计算机(ultra-mobile personal computer,UMPC)等等,在此不作限定。
请参阅图4,图4是本申请实施例公开的另一种系统架构示意图。如图4所示,该系统架构包括固件升级设备400和待升级设备300。其中,固件升级设备400可以为计算设备,也可以为计算设备的主机,还可以为计算设备的带外控制器,或者还可以为其它能够对待升级设备300的固件进行升级的设备,在此不作限定。
待升级设备300可以包括命令识别模块302、固件升级模块303、IO监测模块304、复位模块305和固件加载模块306等软件模块,这些软件模块可以为待升级设备300的固件包括的软件模块。待升级设备300通过命令识别模块302、固件升级模块303、IO监测模块304、复位模块305和固件加载模块306等软件模块可以实现智能化的固件升级和激活,可以减轻对业务的影响。
具体地,命令识别模块302主要用于识别待升级设备300接收到的命令类别,然后根据命令类别通知不同的模块进行处理。例如,本申请实施例中,如果命令识别模块302判断出待升级设备300接收到的来自固件升级设备400的命令对应的命令类别为固件升级命令,那么需要通知固件升级模块303进行相应的处理。同理,如果为其它命令类别,也需要通知对应的处理模块进行处理,如为读取数据的命令,则需要通知数据读取模块进行相应的处理。
固件升级模块303主要用于将来自固件升级设备400的待升级固件文件写入存储介质301中。并且,在将待升级固件文件成功写入存储介质301之后,可以触发IO监测模块进行相应的处理。
IO监测模块304主要用于监测待升级设备300的IO情况,在监测到自身的IO小于IO阈值的情况下,触发复位模块进行相应的处理。
复位模块305主要用于进行待升级设备300的在线复位。在待升级设备300进行在线复位时,暂停前台IO和后台IO的处理,将IO请求存储在IO队列中,在待升级设备300在线复位结束后,恢复前台IO和后台IO。并且,在待升级设备300在线复位结束后,可以触发固件加载模块306进行相应的处理。
应理解,上述前台IO可以理解为来自主机侧的IO或业务侧的IO,后台IO可以理解为来自待升级设备300自身的IO,如进行一致性检查产生的IO。
需要说明的是,OS内核层面有一个SCSI中间层,其主要负责SCSI子系统的故障处理。在SCSI中间层的故障处理中,最后会进入复位(RESET)阶段,对各个SCSI层级执行RESET操作,从低往高依次有设备复位(DEVICE RESET)、状态复位(TARGET RESET)、总线复位(BUSRESET)和主机复位(HOST RESET)。待升级设备300的在线复位是指在OS层面执行主机复位(HOST RESET),即配合待升级设备300的驱动在OS层面执行待升级设备300的主机复位,并且,在线复位时待升级设备300无法响应前台IO和后台IO。在执行主机复位后,可以使待升级设备300重新加载自身的固件文件,这样,可以使得待升级设备300的芯片上运行的固件由旧固件(即之前使用的老固件)切换为新固件(即待升级固件)。
固件加载模块306主要用于待升级固件文件的加载。应理解,待升级设备300在线复位结束后,固件加载模块306可以从存储介质301中读取待升级固件文件,并完成待升级固件文件的加载和运行,使得待升级设备300可以使用待升级固件文件,从而完成固件文件的升级。
需要说明的是,图4所示的待升级设备的软件结构只是示例性说明,并不对其构成限定。在本申请另一些实施例中,图4所示的待升级设备的软件结构可以包括比图示更多或更少的软件模块。
基于上述系统架构,请参阅图5,图5是本申请实施例公开的一种固件升级方法的流程示意图。如图5所示,该固件升级方法可以包括但不限于如下步骤:
501.计算设备接收固件升级请求。
具体地,计算设备与至少一个待升级设备连接,如计算设备上可以安装至少一个RAID卡,为了对RAID卡的固件进行升级,计算设备可以接收由用户终端或其他计算设备等外接设备发送的固件升级请求,或者,计算设备可以接收由用户输入的固件升级请求等,该固件升级请求用于请求对待升级设备进行固件升级。例如,用户可以通过管理工具(即固件升级工具)或命令行在计算设备的显示界面上输入固件升级请求。
502.基于该固件升级请求,计算设备向待升级设备发送固件升级命令和待升级固件文件。
相应地,待升级设备可以接收到来自计算设备的固件升级命令和待升级固件文件。举例地,固件升级请求中可以包含设备标识,设备标识用于标识待升级设备(如RAID卡)的地址、ID或编号等。计算设备接收到该固件升级请求后,可以根据固件升级请求中的设备标识向对应的待升级设备下发固件升级命令,该固件升级命令用于指示待升级设备进行固件升级。例如,待升级固件文件为RAID卡的待升级固件文件,该待升级固件文件的版本一般高于或者低于RAID卡当前运行的固件文件的版本。
可选地,固件升级请求中可以包括待升级固件文件,或者,该待升级固件文件存储在计算设备中,当计算设备在接收到固件升级请求后,计算设备可以根据固件升级请求中携带的设备标识将对应的待升级固件文件发送至待升级设备。相应地,待升级设备可以接收到来自计算设备的待升级固件文件。
在一些实施例中,固件升级命令可以携带待升级固件文件的存储地址(如存储目录或存储路径),以便待升级设备进行固件升级。在一种可能的实现方式中,待升级设备(即待升级设备的命令识别模块)接收到来自计算设备的固件升级命令之后,可以根据固件升级命令确定有待升级固件可以升级,之后可以向计算设备发送固件请求命令。固件请求命令可以用于请求待升级固件文件。相应地,计算设备可以接收到来自待升级设备的固件请求命令,之后,可以根据固件请求命令向待升级设备发送待升级固件文件。相应地,待升级设备可以接收到来自计算设备的待升级固件文件。
在一些实施例中,待升级设备可以根据固件升级命令中携带的待升级固件文件的存储地址向计算设备发送固件请求命令,例如,可以在固件请求命令中携带该存储地址。
503.待升级设备将待升级固件文件写入存储介质。
当待升级设备接收到来自计算设备的待升级固件文件之后,待升级设备可以将待升级固件文件写入自身的存储介质中(如flash中),以便之后使用。应理解,待升级设备将待升级固件文件写入自身的存储介质中,即固件升级模块将待升级固件文件写入待升级设备的存储介质中。
应理解,待升级设备将待升级固件文件写入自身的存储介质中之后,此时,待升级设备的芯片上运行的固件依然是旧版本的固件文件。之后,通过步骤505激活待升级固件之后,才能使待升级设备的芯片上运行的固件由旧版本的固件切换到新版本的固件(即待升级固件)。因此,在待升级设备进行在线复位之前,待升级设备可以继续使用旧版本的固件,并继续运行当前的相关业务进程。
在一些实施例中,待升级设备接收到待升级固件文件之后,可以对待升级固件文件进行校验。在待升级固件文件校验成功的情况下,表明待升级固件文件没有错误,待升级设备可以将待升级固件文件写入自身的存储介质中,即可以执行步骤503。在待升级固件文件校验失败的情况下,表明待升级固件文件存在错误,待升级设备将待升级固件文件写入自身的存储介质中没有意义,可以向计算设备重新请求待升级固件文件。
在一种可能的实现方式中,待升级设备可以根据循环冗余校验(cyclicredundancy check,CRC)对待升级固件文件进行校验,此时,待升级固件文件可以包括待升级固件文件的CRC码。应理解,待升级设备也可以根据奇偶校验、纵向冗余校验(longitudinal redundancy check,LRC)等校验方式对待升级固件文件进行校验,相应地,待升级固件文件可以包括这些校验方式对应的校验码。
504.待升级设备监测自身IO,判断自身IO是否小于第一阈值,在小于第一阈值的情况下,执行步骤505。
待升级设备将待升级固件文件写入自身的存储介质中之后,需要激活待升级固件才能使待升级设备的芯片上运行的固件由旧版本的固件切换到新版本的固件。此时,为了减轻对业务的影响,待升级设备可以实时监测自身的IO情况,在IO压力较小时,进行在线复位,激活待升级固件。
具体地,待升级设备将待升级固件文件写入自身的存储介质中之后,可以监测自身的IO情况,判断自身IO是否小于第一阈值,在小于第一阈值的情况下,执行步骤505,在大于或等于第一阈值的情况下,继续监测自身的IO,不作处理。应理解,待升级设备监测的IO情况可以是IO请求数量,也可以是IO吞吐量(即带宽)等。相应地,上述判断IO是否小于第一阈值可以为IO请求数量是否小于第一阈值(如IO请求数量小于50个/s),也可以为IO吞吐量是否小于第一阈值(如IO吞吐量小于100MB/s)。
需要说明的是,待升级设备监测自身的IO可以仅监测前台IO(即业务侧IO),也可以仅监测后台IO,还可以同时监测前台IO和后台IO。相应地,上述判断IO是否小于第一阈值可以为前台IO是否小于第一阈值,也可以为后台IO是否小于第一阈值,还可以为前台IO和后台IO的总IO是否小于第一阈值。
还需要说明的是,待升级设备判断自身IO是否小于第一阈值可以是判断在当前时刻(即第一时刻)自身IO是否小于第一阈值,也可以是判断当前时刻的前一段时间内(即第一时间段内,如前5秒、1分钟等)的平均IO是否小于第一阈值。而由于一段时间内的平均IO可以更好地表明后续一段时间的IO情况,并且待升级设备进行在线复位需要中断IO处理的时间可能较长,因此,待升级设备可以优先判断自身在一段时间的平均IO是否小于第一阈值(如在前5秒的平均IO吞吐量是否小于1G),在小于第一阈值的情况下,可以执行步骤505。
还需要说明的是,第一阈值可以是管理人员预先设置的,也可以是管理人员在固件升级时设置的,例如,在向待升级设备发送固件升级命令时设置的。在一些实施例中,第一阈值可以携带在固件升级命令中。
在一些实施例中,第一阈值的大小可以根据实际情况设置或确定,例如可以根据待升级设备在线复位所需时间进行设置或确定,如果待升级设备在线复位所需时间较长(如大于第二阈值),第一阈值可以较小,如果待升级设备在线复位所需时间较短(如小于或等于第二阈值),第一阈值可以较大。再例如,第一阈值可以根据待升级设备的性能(包括最大数据吞吐量、每秒的输入输出量(input/output per second,IOPS)等)进行设置或确定,性能越好,第一阈值可以越大。
由于固件升级主要包括两种类型,一种类型为基于功能升级的固件升级(即新增一些功能),一种类型为基于问题解决的固件升级(即解决当前固件存在的一些问题)。其中,针对功能升级的固件升级,一般紧急程度较低,而针对问题解决的固件升级,其一般紧急程度较高。因此,在一种可能的实现方式中,在第一类型(即基于功能升级的固件升级)的固件升级的情况下,第一阈值可以较小,因为这种情况下紧急程度较低,将第一阈值设置的较小可以尽量减轻对业务的影响。而在第二类型(即基于问题解决的固件升级)的固件升级的情况下,第一阈值可以较大,因为这种情况下紧急程度较高,将第一阈值设置的较大可以越容易满足待升级设备的IO小于第一阈值,这样可以尽快进行固件激活,以解决当前固件存在的问题。可见,针对于待升级固件文件对应的不同固件升级类型,第一阈值可以不同。
应理解,上述说明了第一阈值的大小可以根据待升级设备在线复位所需时间、待升级设备的性能、固件升级的类型等中的任一个进行确定或设置。但应理解,在一些实施例中,第一阈值也可以根据待升级设备在线复位所需时间、待升级设备的性能、固件升级的类型等中的多个进行确定。
在一种可能的实现方式中,第一阈值G可以通过以下公式确定:
其中,d为固件升级的紧急程度等级,取值可以为1-8,若为第一类型的固件升级,d为1,若为第二类型的固件升级,d与当前固件所存在问题的严重程度相关,问题越严重,则d越大。c为待升级设备的最大数据吞吐量,单位可以为兆字节每秒(MB/s)。t为待升级设备在线复位所需时间,单位可以为分钟。应理解,上述第一阈值G的单位可以为兆字节每秒(MB/s)。
例如,在d为4、c为800以及t为20的情况下,可以计算得到第一阈值G为160MB/s。而在d为8、c为800以及t为20的情况下,可以计算得到第一阈值G为320MB/s。可见,在紧急程度等级越高的情况下,越容易满足待升级设备的IO小于第一阈值,这样,可以及时进行固件激活。
需要说明的是,上述第一阈值G的确定公式只是示例性说明,还可以采用其他可以实现同等功能的公式(如该公式的各种变形),在此不作限定。
在一些实施例中,待升级设备将待升级固件文件写入自身的存储介质中之后,可能待升级设备的IO在很长一段时间内均大于或等于第一阈值,因此,待升级设备需要一直持续监测自身的IO情况,这样,会一直消耗待升级设备的处理资源。因此,为了节约待升级设备的处理资源,可以设置一个轮询时间阈值(如12小时、24小时等),当待升级设备将待升级固件文件写入自身的存储介质中之后,待升级设备可以在轮询时间阈值内监测自身的IO情况,如果在轮询时间阈值内监测到自身IO小于第一阈值,可以执行步骤505,如果在轮询时间阈值内未监测自身IO小于第一阈值,可以暂停监测自身的IO情况,可以提示管理人员待升级固件未能在轮询时间阈值内生效,建议自行选择服务器上下电重启生效,或者可以重新设置轮询时间阈值和第一阈值。例如,可以设置更大的轮询时间阈值或更大的第一阈值。
由于针对于解决问题而进行固件升级的情况一般较为重要,因此,在一种可能的实现方式中,如果当前为第一类型的固件升级,且待升级设备在轮询时间阈值内未监测自身IO小于第一阈值,那么待升级设备可以在轮询时间结束后直接进行在线复位。
轮询时间阈值可以是管理人员预先设置的,也可以是管理人员在固件升级时设置的,例如,在向待升级设备发送固件升级命令时设置的。在一些实施例中,轮询时间阈值可以携带在固件升级命令中。轮询时间阈值的大小可以根据实际情况设置或确定,例如,在第一类型的固件升级的情况下,轮询时间阈值可以为第一轮询时间阈值,其可以较大(如72小时),因为这种情况下紧急程度较低。而在第二类型的固件升级的情况下,轮询时间阈值可以为第二轮询时间阈值,其可以较小(如12小时),因为这种情况下紧急程度较高,如果待升级设备在轮询时间阈值内未监测自身IO小于第一阈值,可以尽快通知管理人员激活或直接进行在线复位,以解决当前固件存在的问题。其中,第一轮询时间阈值大于第二轮询时间阈值。
在一种可能的实现方式中中,轮询时间阈值可以根据固件升级的紧急程度等级确定,固件升级的紧急程度越高,轮询时间阈值越小。例如,轮询时间阈值可以为(48÷d)。其中,M可以为6、8等。此时,假设M为6,当固件升级的紧急程度等级为8时,轮询时间阈值可以为6小时;当固件升级的紧急程度等级为4时,轮询时间阈值可以为12小时;当固件升级的紧急程度等级为2时,轮询时间阈值可以为24小时;当固件升级的紧急程度等级为1时,轮询时间阈值可以为48小时。
应理解,上述步骤504可以为待升级设备中的IO监测模块执行的。
505.待升级设备执行复位操作。
待升级设备在监测到自身IO小于第一阈值时,可以进行在线复位,激活待升级固件。具体地,在待升级设备在监测到自身IO小于第一阈值时,待升级设备可以向计算设备发送第一指示信息,第一指示信息用于指示计算设备进行待升级设备的在线复位。相应地,计算设备可以接收到来自待升级设备的第一指示信息,之后,响应于第一指示信息,计算设备可以配合待升级设备的驱动在OS层面执行待升级设备的主机复位,在主机复位结束后,待升级设备可以重新从自身的存储介质中读取待升级固件文件,并完成待升级固件文件的加载和运行(即激活待升级固件),使得待升级固件文件生效。
需要说明的是,在待升级设备进行在线复位时,可以暂停前台IO和后台IO的处理,将IO请求(即新的IO请求和未处理完的IO请求)存储在IO队列中。当待升级设备在线复位结束后,待升级设备可以恢复前台IO和后台IO,处理IO队列中的IO请求。
应理解,上述步骤505可以为待升级设备中的复位模块和固件加载模块执行的。
需要说明的是,在一些实施例中,待升级设备也可以采用除主机复位之外的其它激活方式激活待升级固件,如服务器上下电、设备复位、状态复位、总线复位等,在此不作限定。
应理解,上述计算设备执行的操作可以为固件升级设备(如计算设备的主机或带外控制器)执行的操作。
上述方法流程中,待升级设备将待升级固件写入自身的存储介质中之后,可以根据第一阈值选择合适的时间进行在线复位,激活待升级固件。相较于人工蹲点的方式,这种方式效率更高,更加智能化。并且,相较于服务器上下电重启的激活方式,在线复位的方式中断IO处理的时间更短,对业务的影响更小。
可以理解的是,针对于计算设备的其它外接设备,如网卡,也可以采用上述固件升级方法进行固件升级。例如,在网卡固件升级的过程中,网卡将待升级固件写入自身的存储介质中之后,可以监测自身的报文流量(即网口IO),在监测到报文流量小于某一个阈值时,可以进行在线复位,激活待升级固件。
需要说明的是,上述不同实施例中的相关信息(即相同信息或相似信息)和相关描述可以相互参考。
应理解,上述图5中以待升级设备和计算设备作为交互示意的执行主体为例来示意上述处理流程,但本申请并不限制该交互示意的执行主体。例如,图5中的待升级设备也可以是支持该待升级设备实现该方法的芯片、芯片系统、或处理器,还可以是能实现全部或部分待升级设备功能的逻辑模块或软件。
基于上述系统架构,请参阅图6,图6是本申请实施例公开的一种电子设备的结构示意图。其中,该电子设备600可以包括:处理器601、通信接口602和存储器603。处理器601、通信接口602以及存储器603可以相互连接或者通过总线604相互连接。
示例性的,存储器603用于存储电子设备600的计算机程序和数据,存储器603可以包括但不限于是随机存储记忆体(random access memory,RAM)、只读存储器(read-onlymemory,ROM)、可擦除可编程只读存储器(erasable programmable read only memory,EPROM)或便携式只读存储器(compact disc read-only memory,CD-ROM)等。通信接口602用于支持电子设备600进行通信,例如接收或发送数据。
示例性的,处理器601可以是CPU、复杂可编程逻辑器件、通用处理器、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,数字信号处理器和微处理器的组合等等。
在一个实施例中,电子设备600可以为计算设备或固件升级设备,处理器601可以用于读取上述存储器603中存储的程序,执行上述图5所示的方法实施例中计算设备执行的操作,可以参考上述相关描述,在此不再详细赘述。
在一个实施例中,电子设备600可以为待升级设备,处理器601可以用于读取上述存储器603中存储的程序,执行上述图5所示的方法实施例中待升级设备执行的操作,可以参考上述相关描述,在此不再详细赘述。
需要说明的是,图6所示的电子设备600仅仅是本申请实施例的一种实现方式,实际应用中,电子设备600还可以包括更多或更少的部件,这里不作限制。
基于上述系统架构,请参阅图7,图7是本申请实施例公开的一种固件升级系统的结构示意图。如图7所示,该固件升级系统可以包括计算设备701和待升级设备702。计算设备701可以为主机、带外控制器等。有关上述计算设备701和待升级设备702更详细的描述可以直接参考上述图5所示的方法实施例中计算设备和待升级设备的相关描述直接得到,这里不加赘述。
本申请实施例还公开一种计算机可读存储介质,其上存储有指令,该指令被执行时执行上述方法实施例中的方法。
本申请实施例还公开一种包括指令的计算机程序产品,该指令被执行时执行上述方法实施例中的方法。
显然,上述所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或者特性可以包含在本实施例申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是相同的实施例,也不是与其它实施例互斥的独立的或是备选的实施例。本领域技术人员可以显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。本申请的说明书和权利要求书及所述附图中术语“第一”、“第二”、“第三”等是区别于不同的对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。例如,包含了一系列步骤或单元,或者可选地,还包括没有列出的步骤或单元,或者可选地还包括这些过程、方法、产品或设备固有的其它步骤或单元。可以理解的是,上述条件判断的等号可以取大于一端也可以取小于一端,例如,上述对于一个阈值大于、小于或等于的条件判断,也可以改为对该阈值大于或等于、小于的条件判断,在此不作限定。应理解,上述通信方式可以为间接通信和直接通信,直接通信可以理解为两个设备之间不通过其它设备进行通信,间接通信可以理解为两个设备之间需要通过其它设备进行通信。
可以理解的是,附图中仅示出了与本申请相关的部分而非全部内容。应当理解的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作(或步骤)描述成顺序的处理,但是其中的许多操作可以并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
在本说明书中使用的术语“部件”、“模块”、“系统”、“单元”等用于表示计算机相关的实体、硬件、固件、硬件和软件的组合、软件或执行中的软件。例如,单元可以是但不限于在处理器上运行的进程、处理器、对象、可执行文件、执行线程、程序和/或分布在两个或多个计算机之间。此外,这些单元可从在上面存储有各种数据结构的各种计算机可读介质执行。单元可例如根据具有一个或多个数据分组(例如来自与本地系统、分布式系统和/或网络间的另一单元交互的第二单元数据。例如,通过信号与其它系统交互的互联网)的信号通过本地和/或远程进程来通信。
以上所述的具体实施方式,对本申请的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本申请的具体实施方式而已,并不用于限定本申请的保护范围,凡在本申请的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本申请的保护范围之内。
Claims (11)
1.一种固件升级方法,其特征在于,应用于待升级设备,所述待升级设备包括存储介质,所述方法包括:
接收计算设备发送的固件升级命令和待升级固件文件,所述固件升级命令用于指示对所述待升级设备进行固件升级;
响应于所述固件升级命令,将所述待升级固件文件写入所述存储介质;
在所述待升级设备的输入输出IO小于第一阈值的情况下,执行复位操作,所述复位操作用于触发所述待升级设备运行所述待升级固件文件。
2.根据权利要求1所述的方法,其特征在于,所述第一阈值根据所述待升级设备在线复位所需时间、所述待升级设备的性能、所述待升级固件文件对应的固件升级类型中的一项或多项确定。
3.根据权利要求1或2所述的方法,其特征在于,所述待升级设备的IO小于第一阈值包括:
所述待升级设备在第一时刻的IO小于第一阈值;或者,所述待升级设备在第一时间段内的平均IO小于所述第一阈值。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述方法还包括:
在轮询时间阈值内,监测所述待升级设备的IO;
所述在所述待升级设备的IO小于第一阈值的情况下,执行复位操作,包括:
在监测到所述待升级设备的IO小于第一阈值的情况下,执行复位操作。
5.根据权利要求4所述的方法,其特征在于,在所述待升级固件文件对应的固件升级类型为第一类型的情况下,所述轮询时间阈值为第一轮询时间阈值;
在所述待升级固件文件对应的固件升级类型为第二类型的情况下,所述轮询时间阈值为第二轮询时间阈值,所述第一轮询时间阈值大于所述第二轮询时间阈值。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述方法还包括:
校验所述待升级固件文件;
所述将所述待升级固件文件写入所述存储介质包括:
在所述待升级固件文件校验成功的情况下,将所述待升级固件文件写入所述存储介质。
7.根据权利要求1-6任一项所述的方法,其特征在于,所述方法还包括:
在执行所述复位操作的过程中,将IO请求缓存在IO队列中;
在所述待升级设备运行所述待升级固件文件之后,处理所述IO队列中的IO请求。
8.根据权利要求1-7任一项所述的方法,其特征在于,所述执行复位操作包括:
所述待升级设备向固件升级设备发送第一指示信息,所述第一指示信息用于指示所述固件升级设备进行所述待升级设备的在线复位。
9.根据权利要求8所述的方法,其特征在于,所述固件升级设备为处理器或带外控制器,和/或,所述待升级设备为独立磁盘冗余阵列RAID卡。
10.一种独立磁盘冗余阵列RAID卡,其特征在于,包括:固件升级模块、输入输出IO监测模块、复位模块、固件加载模块和存储介质;其中:
所述固件升级模块,用于将所述RAID卡的待升级固件文件写入所述存储介质,以及用于触发所述IO监测模块进行相应的处理;
所述IO监测模块,用于监测所述RAID卡的IO,以及用于在监测到所述RAID卡的IO小于第一阈值的情况下,触发所述复位模块进行相应的处理;
所述复位模块,用于执行所述RAID卡的复位操作;
所述固件加载模块,用于在所述RAID卡的复位结束后,加载和运行所述待升级固件文件。
11.一种服务器,其特征在于,所述服务器上安装有至少一个如权利要求10所述的RAID卡。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211383635.5A CN115794153A (zh) | 2022-11-07 | 2022-11-07 | 一种固件升级方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211383635.5A CN115794153A (zh) | 2022-11-07 | 2022-11-07 | 一种固件升级方法及相关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115794153A true CN115794153A (zh) | 2023-03-14 |
Family
ID=85435838
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211383635.5A Pending CN115794153A (zh) | 2022-11-07 | 2022-11-07 | 一种固件升级方法及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115794153A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115981698A (zh) * | 2023-03-21 | 2023-04-18 | 苏州浪潮智能科技有限公司 | 一种固件升级的方法及装置 |
-
2022
- 2022-11-07 CN CN202211383635.5A patent/CN115794153A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115981698A (zh) * | 2023-03-21 | 2023-04-18 | 苏州浪潮智能科技有限公司 | 一种固件升级的方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9158628B2 (en) | Bios failover update with service processor having direct serial peripheral interface (SPI) access | |
US9542195B1 (en) | Motherboards and methods for BIOS failover using a first BIOS chip and a second BIOS chip | |
US7877639B2 (en) | Systems and methods to provide failover support for booting embedded hypervisor from an internal non-volatile memory card | |
TWI306193B (en) | Self-monitoring and updating of firmware over a network | |
US9448889B2 (en) | BIOS failover update with service processor | |
US11314866B2 (en) | System and method for runtime firmware verification, recovery, and repair in an information handling system | |
US7657720B2 (en) | Storage apparatus and method of managing data using the storage apparatus | |
US7360045B2 (en) | System and method for backing up data from a quiesced storage device | |
US11132314B2 (en) | System and method to reduce host interrupts for non-critical errors | |
US10579300B2 (en) | Information handling system firmware persistent memory runtime reclaim | |
WO2001040946A1 (en) | Automated recovery of computer appliances | |
CN104823160A (zh) | 虚拟机-保留主机更新 | |
US10896087B2 (en) | System for configurable error handling | |
US20220269565A1 (en) | Methods and systems for preventing hangup in a post routine from faulty bios settings | |
US7340593B2 (en) | Hard drive reset cache | |
US7861112B2 (en) | Storage apparatus and method for controlling the same | |
CN115794153A (zh) | 一种固件升级方法及相关设备 | |
CN111090546B (zh) | 一种操作系统重启方法、装置、设备及可读存储介质 | |
US8069309B1 (en) | Servicing memory in response to system failure | |
US11726879B2 (en) | Multiple block error correction in an information handling system | |
JP6599725B2 (ja) | 情報処理装置およびログ管理方法、並びにコンピュータ・プログラム | |
CN113849235A (zh) | 控制方法、装置及电子设备 | |
EP2691853B1 (en) | Supervisor system resuming control | |
KR101469059B1 (ko) | 내고장성 향상 시스템 및 그 구동 방법 | |
JP6967639B1 (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 |