一种固件刷新方法及一种服务器与流程

文档序号:12463394阅读:726来源:国知局
一种固件刷新方法及一种服务器与流程

本发明涉及计算机技术领域,特别涉及一种固件刷新方法及一种服务器。



背景技术:

对于服务器产品来说,其固件可以不断升级更新,以便于满足新增功能需求,或修正当前存在的问题等。故在服务器产品的日常测试及维护过程中,可以对其固件进行升级刷新。

目前,在服务器产品启动后,工作人员可以人为手动的刷新每一种固件。

但是,手动刷新固件的刷新过程较为繁琐,尤其当服务器产品数量较多时,现有实现方式的固件刷新效率较低。



技术实现要素:

本发明提供了一种固件刷新方法及一种服务器,能够提高固件刷新的效率。

为了达到上述目的,本发明是通过如下技术方案实现的:

一方面,本发明提供了一种固件刷新方法,应用于服务器,确定开机刷新程序,其中,对于所述服务器中的至少一种固件,所述开机刷新程序中包括有每一种所述固件对应的需求版本标识,还包括:

S1:检测所述服务器是否完全开机,若是,执行S2;

S2:通过执行所述开机刷新程序,依次针对所述至少一种固件中的每一种目标固件均执行:确定所述服务器中的所述目标固件的第一当前版本标识;

S3:判断所述第一当前版本标识与所述目标固件对应的需求版本标识是否匹配,若否,对所述目标固件执行刷新处理。

进一步地,所述确定开机刷新程序,包括:在所述服务器中安装Linux操作系统,并将预先编写好的开机刷新程序存储至所述Linux操作系统内的~/.bashrc文件中。

进一步地,所述S1,包括:在检测到完成执行所述服务器的服务器启动配置程序时,向外部的服务器控制端发送触发信号;基于所述触发信号的发送时间,判断在达到预先设定的时间间隔对应的时间之前,是否接收到所述服务器控制端发来的所述触发信号对应的反馈信号,若是,执行S2,否则,点亮所述服务器的ID灯。

进一步地,所述至少一种固件包括:BIOS(Basic Input Output System,基本输入输出系统),和/或,BMC(Baseboard Management Controller,基板管理控制器)固件;

该方法还包括:存储每一种所述固件对应的刷新工具和需求版本,其中,所述BIOS对应的刷新工具为./afulnx_64刷新工具,所述BMC固件对应的刷新工具为socflash刷新工具;

所述对所述目标固件执行刷新处理,包括:利用所述目标固件对应的刷新工具,并基于所述目标固件对应的需求版本,对所述目标固件执行刷新处理。

进一步地,该方法还包括:存储每一种所述固件对应的抓取工具,其中,所述BIOS对应的抓取工具为dmidecode抓取工具,所述BMC固件对应的抓取工具为ipmitool抓取工具;

在所述对所述目标固件执行刷新处理之后,还包括:利用所述目标固件对应的抓取工具,抓取所述服务器中所述目标固件的第二当前版本标识;判断所述第二当前版本标识与所述目标固件对应的需求版本标识是否匹配,若否,点亮所述服务器的ID灯。

另一方面,本发明提供了一种服务器,包括:

确定单元,用于确定开机刷新程序,其中,对于所述服务器中的至少一种固件,所述开机刷新程序中包括有每一种所述固件对应的需求版本标识;

检测单元,用于检测所述服务器是否完全开机,若是,触发处理单元;

所述处理单元,用于通过执行所述开机刷新程序,依次针对所述至少一种固件中的每一种目标固件均执行:确定所述服务器中的所述目标固件的第一当前版本标识;判断所述第一当前版本标识与所述目标固件对应的需求版本标识是否匹配,若否,对所述目标固件执行刷新处理。

进一步地,所述确定单元,具体用于在所述服务器中安装Linux操作系统,并将预先编写好的开机刷新程序存储至所述Linux操作系统内的~/.bashrc文件中。

进一步地,所述检测单元,具体用于在检测到完成执行所述服务器的服务器启动配置程序时,向外部的服务器控制端发送触发信号;基于所述触发信号的发送时间,判断在达到预先设定的时间间隔对应的时间之前,是否接收到所述服务器控制端发来的所述触发信号对应的反馈信号,若是,触发处理单元,否则,点亮所述服务器的ID灯。

进一步地,所述至少一种固件包括:BIOS,和/或,BMC固件;

该服务器还包括:存储单元,用于存储每一种所述固件对应的刷新工具和需求版本,其中,所述BIOS对应的刷新工具为./afulnx_64刷新工具,所述BMC固件对应的刷新工具为socflash刷新工具;

所述处理单元,具体用于利用所述目标固件对应的刷新工具,并基于所述目标固件对应的需求版本,对所述目标固件执行刷新处理。

进一步地,所述存储单元,还用于存储每一种所述固件对应的抓取工具,其中,所述BIOS对应的抓取工具为dmidecode抓取工具,所述BMC固件对应的抓取工具为ipmitool抓取工具;

所述处理单元,还用于在对所述目标固件执行刷新处理之后,利用所述目标固件对应的抓取工具,抓取所述服务器中所述目标固件的第二当前版本标识;判断所述第二当前版本标识与所述目标固件对应的需求版本标识是否匹配,若否,点亮所述服务器的ID灯。

本发明提供了一种固件刷新方法及一种服务器,对于服务器中的至少一种固件,服务器确定包括有各固件对应的需求版本标识的开机刷新程序;在检测到服务器已完全开机时,通过执行开机刷新程序,依次针对每一种固件均执行:确定服务器中该固件的当前版本标识,并在判断出该当前版本标识与该固件对应的需求版本标识不匹配时,对该固件执行刷新处理。基于预先编写好的开机刷新程序,服务器可以针对自身内部的各固件,自动执行固件刷新处理操作。因此,本发明能够提高固件刷新的效率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明一实施例提供的一种固件刷新方法的流程图;

图2是本发明一实施例提供的另一种固件刷新方法的流程图;

图3是本发明一实施例提供的一种服务器的示意图;

图4是本发明一实施例提供的另一种服务器的示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

如图1所示,本发明实施例提供了一种固件刷新方法,应用于服务器,可以包括以下步骤:

步骤101:确定开机刷新程序,其中,对于所述服务器中的至少一种固件,所述开机刷新程序中包括有每一种所述固件对应的需求版本标识。

步骤102:检测所述服务器是否完全开机,若是,执行步骤103,否则,执行异常处理并结束当前流程。

步骤103:通过执行所述开机刷新程序,依次针对所述至少一种固件中的每一种目标固件均执行:确定所述服务器中的所述目标固件的第一当前版本标识。

步骤104:判断所述第一当前版本标识与所述目标固件对应的需求版本标识是否匹配,若是,结束当前流程,否则,对所述目标固件执行刷新处理。

本发明实施例提供了一种固件刷新方法,对于服务器中的至少一种固件,服务器确定包括有各固件对应的需求版本标识的开机刷新程序;在检测到服务器已完全开机时,通过执行开机刷新程序,依次针对每一种固件均执行:确定服务器中该固件的当前版本标识,并在判断出该当前版本标识与该固件对应的需求版本标识不匹配时,对该固件执行刷新处理。基于预先编写好的开机刷新程序,服务器可以针对自身内部的各固件,自动执行固件刷新处理操作。因此,本发明实施例能够提高固件刷新的效率。

在本发明的一个实施例中,为了说明一种确定开机刷新程序的可能实现方式,所以,所述确定开机刷新程序,包括:在所述服务器中安装Linux操作系统,并将预先编写好的开机刷新程序存储至所述Linux操作系统内的~/.bashrc文件中。

详细地,开机刷新程序可以为工作人员预先编写好的一段代码脚本程序。其中,该开机刷新程序可以由工作人员人为写入到服务器启动配置程序内,或者由服务器控制器自动写入到服务器启动配置程序内。

例如,本发明实施例中,可以将开机刷新程序写入服务器的Linux操作系统内的~/.bashrc文件中。服务器开机上电后,可以自动开始执行服务器启动配置程序。服务器系统启动后,shell执行~/.bashrc文件中的开机刷新程序。

详细地,开机刷新程序可以包括有各待刷新固件的需求版本标识,其中,该版本标识可以为固件的版本号。默认地,不同版本的固件,其版本号不同。根据开机刷新程序中的固件版本号,可以将服务器中的该固件由当前原有版本刷新为该固件版本号对应的需求版本。

在本发明的一个实施例中,为了说明一种检测服务器是否完全开机的可能实现方式,所以,所述步骤102,包括:在检测到完成执行所述服务器的服务器启动配置程序时,向外部的服务器控制端发送触发信号;基于所述触发信号的发送时间,判断在达到预先设定的时间间隔对应的时间之前,是否接收到所述服务器控制端发来的所述触发信号对应的反馈信号,若是,执行步骤103,否则,点亮所述服务器的ID灯。

详细地,执行开机刷新程序以刷新固件之前,服务器应该保证自身已处于完全开机状态。如此,服务器在系统启动后,可以与外部的服务器控制器进行通讯。若在约定时间内可以正常通讯,则可以说明服务器已完全开机,否则,可以说明服务器并未完全开机,故此时可以点亮服务器的ID灯,以报警提醒工作人员进行相应异常处理。

在本发明一个实施例中,服务器可以为单一服务器,或服务器集群中的任一服务器。例如,常见地,服务器可以为Rack(机架式)服务器中的任一节点服务器,且各节点服务器均与同一服务器控制器相连。详细地,服务器控制器可以为一个主服务器。

如此,当待刷新的服务器产品数量较多时,如Rack服务器中的所有节点服务器均需刷新固件时,由于各节点服务器均可以基于上述固件刷新方法以同时、自动的刷新内部固件,故可以使得固件刷新效率整体大大提高。

在本发明的一个实施例中,为了说明一种对固件执行刷新处理的可能实现方式,所以,所述至少一种固件包括:BIOS,和/或,BMC固件;

该方法还包括:存储每一种所述固件对应的刷新工具和需求版本,其中,所述BIOS对应的刷新工具为./afulnx_64刷新工具,所述BMC固件对应的刷新工具为socflash刷新工具;

所述对所述目标固件执行刷新处理,包括:利用所述目标固件对应的刷新工具,并基于所述目标固件对应的需求版本,对所述目标固件执行刷新处理。

详细地,不同固件的刷新工具通常不同,故需要预先确定各固件对应的刷新工具。当然,还要确定固件刷新所需的需求版本。如此,在执行固件刷新操作时,可以利用刷新工具,将待刷新的固件由当前的原有版本刷新为已确定的需求版本。

在本发明的一个实施例中,为了能够对固件刷新处理操作的完成情况进行验证,所以,该方法还包括:存储每一种所述固件对应的抓取工具,其中,所述BIOS对应的抓取工具为dmidecode抓取工具,所述BMC固件对应的抓取工具为ipmitool抓取工具;

在所述对所述目标固件执行刷新处理之后,进一步包括:利用所述目标固件对应的抓取工具,抓取所述服务器中所述目标固件的第二当前版本标识;判断所述第二当前版本标识与所述目标固件对应的需求版本标识是否匹配,若否,点亮所述服务器的ID灯。

详细地,不同固件的抓取工具通常不同。固件的当前版本标识,可以通过该固件对应的抓取工具进行抓取而确定。

如上述步骤104所述,对于任一固件,当确定出的当前版本标识与开机刷新程序中记录的需求版本标识不匹配时,说明该固件的当前版本不是所需版本,需要对该固件进行刷新处理。

同理,在完成这一固件刷新处理之后,同样可以再次利用抓取工具,再次确定此时的当前版本标识。通常情况下,若固件刷新处理正常执行,此时的当前版本标识应该与开机刷新程序中记录的需求版本标识相匹配,否则,说明固件刷新处理未成功,故可以点亮服务器的ID灯,以报警提醒工作人员进行相应异常处理。

当然,在本发明另一个实施例中,若检测到固件刷新处理未成功,同样可以暂时先不点亮服务器的ID灯,而是再次执行固件刷新处理,并在第二次固件刷新处理之后,对固件刷新处理操作的完成情况进行再次验证。当再次验证的结果仍为固件刷新处理未成功时,此时可以点亮服务器的ID灯。

如图2所示,本发明一个实施例提供了另一种固件刷新方法,该方法以刷新服务器的BIOS和BMC固件为例,应用于服务器,具体包括以下步骤:

步骤201:在服务器中安装Linux操作系统,并将包括有BIOS对应的需求版本标识1和BMC固件对应的需求版本标识2的开机刷新程序,存储至Linux操作系统内的~/.bashrc文件中。

详细地,开机刷新程序可以为工作人员预先编写好的一端代码脚本程序。

由于开机刷新程序中包括有需求版本标识1和需求版本标识2,故需要将服务器中BIOS更新为需求版本标识1对应的版本,以及将服务器中BMC固件更新为需求版本标识2对应的版本。

步骤202:存储BIOS对应的./afulnx_64刷新工具、需求版本1和dmidecode抓取工具,以及存储BMC固件对应的socflash刷新工具、需求版本2和ipmitool抓取工具。

在本发明实施例中,BIOS对应的需求版本1的版本标识可以为上述需求版本标识1,同理,BMC固件对应的需求版本2的版本标识可以为上述需求版本标识2。

详细地,利用刷新工具可以对固件进行刷新处理,利用抓取工具可以抓取服务器中固件的当前版本标识。

详细地,版本标识可以为固件的版本号。

步骤203:检测服务器是否完全开机,若是,执行步骤204,否则,点亮服务器的ID灯并结束当前流程。

详细地,检测服务器是否完全开机的具体实现方式可以为:在检测到完成执行服务器的服务器启动配置程序时,向外部的服务器控制端发送触发信号;基于触发信号的发送时间,判断在达到预先设定的时间间隔对应的时间之前,是否接收到服务器控制端发来的触发信号对应的反馈信号。

例如,可以以检测到完成执行服务器的服务器启动配置程序时的时间为起始时间,若预先设定的时间间隔为10s,则可以在起始时间时刻发送触发信号,同时需要在起始时间之后的10s内接收到反馈信号,如此,可以说明服务器已完全开机。

步骤204:通过执行开机刷新程序,利用dmidecode抓取工具抓取服务器中BIOS的当前版本标识X1

当检测到服务器已完全开机时,可以自动执行预先存储的开机刷新程序。

本发明实施例中,通过执行开机刷新程序,可以依次对BIOS和BMC固件进行后续的固件刷新处理操作。当然,基于不同的实际应用需要,同样可以依次对BMC固件和BIOS进行后续的固件刷新处理操作。

步骤205:判断当前版本标识X1与BIOS对应的需求版本标识1是否匹配,若是,执行步骤208,否则,利用./afulnx_64刷新工具基于BIOS对应的需求版本1,对BIOS执行刷新处理。

详细地,基于当前版本标识和需求版本标识的匹配性判断,可以确定相应固件是否需要执行固件刷新处理。详细地,两者相匹配可以为两者相同。

通常情况下,利用./afulnx_64刷新工具基于BIOS对应的需求版本1,对BIOS执行刷新处理,可以将BIOS的当前版本刷新为该需求版本1。

步骤206:利用dmidecode抓取工具抓取服务器中BIOS的当前版本标识X1′。

基于上述刷新处理操作,通常情况下,抓取到的当前版本标识X1′可以为上述需求版本1对应的需求版本标识1。

步骤207:判断当前版本标识X1′与BIOS对应的需求版本标识1是否匹配,若是,执行步骤208,否则,点亮服务器的ID灯并结束当前流程。

详细地,若判断结果为两者相匹配,即两者相同,则可以说明BIOS刷新成功,故可以继续对BMC固件进行相应固件刷新处理。

当然,若BIOS刷新失败,可以通过点亮服务器的ID灯以报警提醒,以使工作人员尽早执行相应异常处理。

步骤208:利用ipmitool抓取工具抓取服务器中BMC固件的当前版本标识X2

步骤209:判断当前版本标识X2与BMC固件对应的需求版本标识2是否匹配,若是,结束当前流程,否则,利用socflash刷新工具基于BMC固件对应的需求版本2,对BMC固件执行刷新处理。

步骤210:利用ipmitool抓取工具抓取服务器中BMC固件的当前版本标识X2′。

步骤211:判断当前版本标识X2′与BMC固件对应的需求版本标识2是否匹配,若是,结束当前流程,否则,点亮服务器的ID灯并结束当前流程。

详细地,若判断结果为两者相匹配,即两者相同,则可以说明BMC固件刷新成功,故可以结束,否则,可以通过点亮服务器的ID灯以报警提醒。

详细地,上述步骤208至步骤211用于执行对BMC固件的相关刷新处理,上述步骤204至步骤207用于执行对BIOS的相关刷新处理,两者所对应的固件对象不同,但所基于的基本实现原理保持一致。

本发明实施例中,提供了一种针对服务器的BIOS和BMC固件的固件刷新方法,这一实现方式可以自动执行,故可以提高固件刷新的自动化程度,降低人工成本。当待处理的服务器产品数量较多时,这一实现方式不仅能够大大提高固件刷新效率,同时能够避免人为刷新易带来的错刷、漏刷以及刷新不及时等问题,提高刷新操作的时效性和正确性,故可以保证固件刷新的正确、高效执行。

如图3所示,本发明一个实施例提供了一种服务器,包括:

确定单元301,用于确定开机刷新程序,其中,对于所述服务器中的至少一种固件,所述开机刷新程序中包括有每一种所述固件对应的需求版本标识;

检测单元302,用于检测所述服务器是否完全开机,若是,触发处理单元303;

所述处理单元303,用于通过执行所述开机刷新程序,依次针对所述至少一种固件中的每一种目标固件均执行:确定所述服务器中的所述目标固件的第一当前版本标识;判断所述第一当前版本标识与所述目标固件对应的需求版本标识是否匹配,若否,对所述目标固件执行刷新处理。

在本发明一个实施例中,所述确定单元301,具体用于在所述服务器中安装Linux操作系统,并将预先编写好的开机刷新程序存储至所述Linux操作系统内的~/.bashrc文件中。

在本发明一个实施例中,所述检测单元302,具体用于在检测到完成执行所述服务器的服务器启动配置程序时,向外部的服务器控制端发送触发信号;基于所述触发信号的发送时间,判断在达到预先设定的时间间隔对应的时间之前,是否接收到所述服务器控制端发来的所述触发信号对应的反馈信号,若是,触发处理单元303,否则,点亮所述服务器的ID灯。

详细地,本发明任一实施例所述的服务器,可以为单一服务器,或服务器集群中的任一服务器。例如,常见地,服务器可以为Rack服务器中的任一节点服务器,且各节点服务器均与同一服务器控制器相连。详细地,服务器控制器可以为一个主服务器。

如此,当待刷新的服务器产品数量较多时,如Rack服务器中的所有节点服务器均需刷新固件时,由于各节点服务器均可以基于上述固件刷新方法以同时、自动的刷新内部固件,故可以使得固件刷新效率整体大大提高。

在本发明一个实施例中,请参考图4,该服务器还可以包括:存储单元401;

所述至少一种固件包括:BIOS,和/或,BMC固件;

所述存储单元401,用于存储每一种所述固件对应的刷新工具和需求版本,其中,所述BIOS对应的刷新工具为./afulnx_64刷新工具,所述BMC固件对应的刷新工具为socflash刷新工具;

所述处理单元303,具体用于利用所述目标固件对应的刷新工具,并基于所述目标固件对应的需求版本,对所述目标固件执行刷新处理。

在本发明一个实施例中,基于不同的实际应用需求,服务器包括的存储单元可以为服务器内部的存储磁盘,或者可以为插接在服务器上的优盘。

在本发明一个实施例中,所述存储单元401,还用于存储每一种所述固件对应的抓取工具,其中,所述BIOS对应的抓取工具为dmidecode抓取工具,所述BMC固件对应的抓取工具为ipmitool抓取工具;

所述处理单元303,还用于在对所述目标固件执行刷新处理之后,利用所述目标固件对应的抓取工具,抓取所述服务器中所述目标固件的第二当前版本标识;判断所述第二当前版本标识与所述目标固件对应的需求版本标识是否匹配,若否,点亮所述服务器的ID灯。

上述装置内的各单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。

综上所述,本发明的各个实施例至少具有如下有益效果:

1、本发明实施例中,对于服务器中的至少一种固件,服务器确定包括有各固件对应的需求版本标识的开机刷新程序;在检测到服务器已完全开机时,通过执行开机刷新程序,依次针对每一种固件均执行:确定服务器中该固件的当前版本标识,并在判断出该当前版本标识与该固件对应的需求版本标识不匹配时,对该固件执行刷新处理。基于预先编写好的开机刷新程序,服务器可以针对自身内部的各固件,自动执行固件刷新处理操作。因此,本发明实施例能够提高固件刷新的效率。

2、本发明实施例中,提供了一种针对服务器的BIOS和BMC固件的固件刷新方法,这一实现方式可以自动执行,故可以提高固件刷新的自动化程度,降低人工成本。当待处理的服务器产品数量较多时,这一实现方式不仅能够大大提高固件刷新效率,同时能够避免人为刷新易带来的错刷、漏刷以及刷新不及时等问题,提高刷新操作的时效性和正确性,故可以保证固件刷新的正确、高效执行。

需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个······”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同因素。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储在计算机可读取的存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质中。

最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1