掌桥专利:专业的专利平台
掌桥专利
首页

电源固件的刷新方法、装置、服务器及计算机存储介质

文献发布时间:2023-06-19 19:18:24


电源固件的刷新方法、装置、服务器及计算机存储介质

技术领域

本发明涉及固件刷新领域,特别是涉及一种电源固件的刷新方法、装置、服务器及计算机存储介质。

背景技术

一个用户拥有的多个服务器通常会放置在同一个机房内,而用户为了节约成本,通常会将服务器机房设置在偏远地区中,也即并未设置在用户本人附近,对于服务器在正常运行期间中的维护而言,为了用户能够及时更新服务器中的固件,要求服务器具备在线远程刷新固件的功能。但是,对于服务器的电源的固件而言,若需要实现电源固件的在线远程刷新,则需使用电源厂商专门定制的软件程序来刷新,但用户通常没有这种软件程序,导致电源固件难以刷新。在现有技术中,通常是采用第三方软件程序来对电源固件进行在线远程刷新,或者是直接将服务器关机后再刷新电源固件。但是采用第三方软件的方法可能会因为软件与固件不兼容而导致刷新失败;采用服务器关机后再刷新电源固件的方法可能会导致电源也随之关机或者离线,从而也导致刷新失败,而且服务器关机后用户无法使用服务器上的业务,影响用户体验。

发明内容

本发明的目的是提供一种电源固件的刷新方法、装置、服务器及计算机存储介质,实现了电源的不关机且在线的固件刷新,不需要使用专门的软件程序进行刷新,避免了因为软件兼容性带来的刷新失败率高的问题,还避免了服务器关机而影响用户体验的情况。

为解决上述技术问题,本发明提供了一种电源固件的刷新方法,应用于服务器中的BMC,所述服务器还包括电源,所述BMC与所述电源连接,所述电源固件的刷新方法包括:

当接收到BMC固件刷新文件时,对所述BMC自身进行固件刷新,所述BMC固件刷新文件中包含所述BMC固件刷新文件本体以及电源固件刷新文件;

在所述BMC自身的固件刷新的同时,将所述BMC固件刷新文件中的所述电源固件刷新文件发送给所述电源,对所述电源进行固件刷新。

优选的,在将所述BMC固件刷新文件中的所述电源固件刷新文件发送给所述电源之前,还包括:

判断所述BMC自身与所述电源之间的通信连接是否正常;

若正常,则进入将所述BMC固件刷新文件中的所述电源固件刷新文件发送给所述电源的步骤;

若不正常,则重新建立所述BMC自身与所述电源之间的通信连接,并返回判断所述BMC自身与所述电源之间的通信连接是否正常的步骤。

优选的,在重新建立所述BMC自身与所述电源之间的通信连接之后,还包括:

将重连次数加一;

判断所述重连次数是否大于预设次数;

若否,则进入返回判断所述BMC与所述电源之间的通信连接是否正常的步骤;

否是,则判定所述BMC与所述电源之间的通信连接断开。

优选的,在对所述BMC自身进行固件刷新之前,还包括:

获取所述电源固件刷新文件中的第一标识符;

在对所述电源进行固件刷新之后,还包括:

获取所述电源中的第二标识符;

判断所述第一标识符与所述第二标识符是否一致;

若一致,则判定所述电源的固件刷新成功;

若不一致,则判定所述电源的固件刷新失败。

优选的,在将所述BMC固件刷新文件中的所述电源固件刷新文件发送给所述电源之前,还包括:

将所述BMC中的预设地址作为所述电源固件刷新文件的收录地址;

将所述电源固件刷新文件发送至所述收录地址中;

将所述BMC固件刷新文件中的所述电源固件刷新文件发送给所述电源,包括:

将所述收录地址中的所述电源固件刷新文件发送给所述电源。

优选的,将所述BMC固件刷新文件中的所述电源固件刷新文件发送给所述电源,包括:

当接收到用户指令时,根据所述用户指令查询所述BMC中存储的所述电源固件刷新文件;

将查询得到的所述电源固件刷新文件发送给所述电源。

优选的,在对所述电源进行固件刷新的同时,还包括:

判断所述电源对所述BMC自身供电的电源域是否发生变化;

若是,则判定所述电源的固件刷新失败。

本申请还提供一种电源固件的刷新装置,包括:

存储器,用于存储计算机程序;

BMC,用于执行所述计算机程序时实现如上述的电源固件的刷新方法的步骤。

本申请还提供一种服务器,包括服务器本体和电源,还包括如上述的电源固件的刷新装置;

所述电源分别与所述服务器本体和所述电源固件的刷新装置连接;

所述电源固件的刷新装置与所述服务器本体连接。

本申请还提供一种计算机存储介质,所述计算机存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述的电源固件的刷新方法的步骤。

本申请提供了一种电源固件的刷新方法、装置、服务器及计算机存储介质,涉及固件刷新领域,通过BMC与电源连接,当接收到BMC固件刷新文件时,对BMC自身进行固件刷新,BMC固件刷新文件中包含BMC固件刷新文件本体以及电源固件刷新文件,在BMC自身的固件刷新的同时,将其中的电源固件刷新文件发送给电源,对电源进行固件刷新。利用BMC与电源直接连接以及BMC支持在线刷新的特性,通过刷新BMC的固件来触发BMC自带的刷新机制,从而使得BMC将电源的固件刷新文件发送给电源,以对电源的固件进行刷新,实现了电源的不关机且在线的固件刷新,不需要使用专门的软件程序进行刷新,避免了因为软件兼容性带来的刷新失败率高的问题,还避免了服务器关机而影响用户体验的情况。

附图说明

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

图1为本申请提供的一种电源固件的刷新方法的流程图;

图2为本申请提供的一种电源固件的刷新系统的结构示意图;

图3为本申请提供的一种电源固件的刷新装置的结构示意图;

图4为本申请提供的一种服务器的结构示意图。

具体实施方式

本发明的核心是提供一种电源固件的刷新方法、装置、服务器及计算机存储介质,实现了电源的不关机且在线的固件刷新,不需要使用专门的软件程序进行刷新,避免了因为软件兼容性带来的刷新失败率高的问题,还避免了服务器关机而影响用户体验的情况。

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

在目前的大数据通信和存储环境中,越来越多的用户选择将数据存储到服务器中,并将多个服务器集中放置在一个服务器机房中,而为了节约经济成本,这些服务器机房通常摆放在偏远地区,也即通常摆放在远离用户的地点,可见,为了用户能够正常对服务器中的各种硬件进行固件刷新(也就是更新或升级),服务器必须具备远程固件刷新的功能。

对于服务器而言,可以将服务器分为三部分,分别是硬件、软件和固件者三部分,在服务器的日常使用期间的维护过程中,对于硬件而言,硬件参数通常可以通过服务器上的软件来采集,基于参数来确定各个硬件的状态;对于软件而言,用户可以自由的下载和获取各种软件的安装包来安装或更新软件;对于固件而言,服务器中的各种硬件通常都可以进行远程固件刷新,但是,对于服务器中的电源而言,由于刷新电源固件的软件程序通常是电源厂商自己专门定制的软件程序,用户方没有这种软件程序,若用户采用其他软件程序对电源固件进行远程刷新的方式,则可能会因为软件与固件不兼容而导致固件刷新失败;因此,在现有技术中,在刷新服务器电源的固件时,需要服务器机房中的工作人员线下刷新或者关机刷新,但线下刷新的方法不仅需要有工作人员在服务器机房现场,还需要先将服务器离线才能刷新,这会导致用户在这段时间无法使用服务器上的业务;而关机刷新的方法会因为服务器下线导致用户无法得知刷新情况,还同样会导致用户在这段时间无法使用服务器上的业务,并且服务器关机后还可能使电源随之停止工作,使得固件刷新失败。

为了解决上述技术问题,本申请提出了一种能够在线且不影响服务器运行状态的前提下对电源的固件进行刷新的方法,请参照图1,图1为本申请提供的一种电源固件的刷新方法的流程图,应用于服务器中的BMC,服务器还包括电源,BMC与电源连接,电源固件的刷新方法包括:

S1:当接收到BMC固件刷新文件时,对BMC自身进行固件刷新,BMC固件刷新文件中包含BMC固件刷新文件本体以及电源固件刷新文件;

考虑到虽然单独对电源的固件进行刷新的方式只能采用线下刷新或者采用失败率较高的方式来刷新,但是对于服务器上的BMC(Baseboard Management Controller,基本管理控制器)或者bios(Basic Input Output System,基本输入输出系统)而言,这些硬件的固件可以简单且有效地通过带内/带外的方式进行远程刷新,进一步的,由于BMC直接与电源连接,通过BMC可以将一些文件不受兼容性影响地直接发送给电源,因此,可以通过刷新BMC固件的方式来实现刷新电源固件的目的。具体是当用户需要远程在线刷新电源固件时,用户通过远程操控服务器中的处理器,处理器将固件刷新文件发送给BMC,以便BMC执行固件刷新流程。

若处理器只将电源的固件文件发送给BMC,由BMC转交给电源,由于BMC本身的固件没有进行刷新,所以BMC不会触发刷新动作,从而导致电源无法正常接收到固件文件,所以需要一并对BMC进行刷新。

首先,为了对BMC以及电源的固件进行刷新,服务器上需要先存储这两者的固件刷新文件,这些固件刷新文件可以是用户实时通过无线通信发送过来的文件;也可以是用户曾经存储在服务器上的文件,处理器在接收到用户的刷新指令时从服务器中取出该文件以便发送给BMC执行;由于同一硬件的固件有多个版本,所以具体使用的文件则根据用户想要刷新的版本来决定。

为了触发BMC的刷新动作,并且将电源的固件刷新文件发送给BMC,可以将电源的固件刷新文件放进BMC的固件刷新文件中,将打包后的BMC固件刷新文件发送给BMC。具体的,可以预先在BMC的固件刷新文件的文件包中选择某一块rom(Read-Only Memory,只读存储器)专门指定为存储电源的固件刷新文件的区域,在进行打包时,建立电源的固件刷新文件的镜像文件,然后将该镜像文件存储到这一块rom中,将整个BMC的固件文件的文件包进行烧录得到最终的BMC的固件刷新文件。在得到最终的BMC的固件刷新文件后,将其发送给BMC以便执行本申请的流程。

S2:在BMC自身的固件刷新的同时,将BMC固件刷新文件中的电源固件刷新文件发送给电源,对电源进行固件刷新。

由于BMC拥有自动刷新的机制,因此,只要将BMC的固件刷新文件发送给BMC,BMC在检测到接收到的文件是固件刷新文件之后,就会自动地进行固件刷新;此外,为了避免自动刷新失败,还可以采用socflash的方式来为BMC刷新固件。具体的,可以预先在BMC的某个寄存器或者某个存储地址上写入固件相关的标识符,如版本号或固件名称等标识符,并且在BMC固件刷新文件中也写入相同的标识符,当BMC检测到文件中包含后该标识符时就能够知道这个文件是BMC固件刷新文件。在BMC固件刷新时,由于本次BMC使用的固件刷新文件里带有电源的固件刷新文件,BMC会将电源的固件刷新文件存放到BMC系统里的某个寄存器或者某个地址中,对于电源的固件刷新文件具体存放的位置,可以预先对BMC进行设定,一一定义BMC中每种类型的文件应该存放在什么位置;也可以是让BMC自身随机给电源的固件刷新文件分配一个位置进行存放。

由于电源的固件刷新的原理是将电源的固件文件发送到电源中的某个位置即可,对于现有技术而言,若用户想要在不关机且在线的前提下升级电源的固件,需要通过处理器来访问电源,但是当使用处理器访问电源需要依靠上述的电源厂商定制的软件,这种软件用户通常是没有的,所以用户只能通过第三方软件来使用处理器访问电源,这带来了兼容性差以及刷新失败率高的问题。

而在本申请中,考虑到BMC与电源直接连接,BMC通常都支持直接与电源进行通信,因此可以利用BMC来间接实现在线刷新电源固件。首先,BMC在刷新BMC固件的同时,用户可以在个人终端上调出命令界面,输入一个特定指令发送给BMC,让BMC从自身存储的各种数据中找出电源固件刷新文件,并将其发送到电源中的指定位置;此外,如果实际选用的BMC是支持对电源固件刷新的BMC,当BMC检测到BMC自己的固件刷新文件中包含有电源的固件刷新文件时,自动将电源的固件刷新文件发送到电源中,使BMC与电源同时进行固件刷新,当BMC将电源的固件刷新文件正常且完整地发送给电源之后,就相当于完成了对电源地固件刷新,而因为BMC是在线进行刷新的,因此也实现了对电源的在线刷新。

需要说明的是,本申请提到的电源并非是类似与电池的供电电源,而是设置在市电与服务器本体之间的给服务器中各个器件进行供电的一种供电模块,其通常由各种电容、电阻、风扇和控制器等元件组成,因此,BMC是将电源的固件刷新文件发送到电源中,具体上是发送给的是电源中的控制器,请参照图2,图2为本申请提供的一种电源固件的刷新系统的结构示意图,BMC与电源中的控制器连接,电源的供电部分可以看作是单独一个模块,其分别给BMC、电源控制器、服务器中的处理器和服务器中的其他器件供电。

综上,由于BMC与电源连接,当接收到BMC固件刷新文件时,对BMC自身进行固件刷新,BMC固件刷新文件中包含BMC固件刷新文件本体以及电源固件刷新文件,在BMC自身的固件刷新的同时,将其中的电源固件刷新文件发送给电源,对电源进行固件刷新。利用BMC与电源直接连接以及BMC支持在线刷新的特性,通过刷新BMC的固件来触发BMC自带的刷新机制,从而使得BMC将电源的固件刷新文件发送给电源,以对电源的固件进行刷新,实现了电源的不关机且在线的固件刷新,不需要使用专门的软件程序进行刷新,避免了因为软件兼容性带来的刷新失败率高的问题,还避免了服务器关机而影响用户体验的情况。

在上述实施例的基础上:

作为一种优选的实施例,在将BMC固件刷新文件中的电源固件刷新文件发送给电源之前,还包括:

判断BMC自身与电源之间的通信连接是否正常;

若正常,则进入将BMC固件刷新文件中的电源固件刷新文件发送给电源的步骤;

若不正常,则重新建立BMC自身与电源之间的通信连接,并返回判断BMC自身与电源之间的通信连接是否正常的步骤。

为了提高电源固件刷新的成功率,本申请中,考虑到BMC虽然与电源直接连接,但是当BMC与电源之间的连接不畅、堵塞甚至断开时,BMC则无法将电源的固件刷新文件完好地发送给电源,从而导致电源的固件刷新失败。基于此,在BMC发送电源的固件刷新文件给电源之前,BMC还需要检测BMC自身与电源之间的通信是否正常畅通,具体可以是BMC发送测试信号给电源来判断是否接收到电源反馈回来的信号,也可以是BMC主动获取电源中的工作参数或标识符等数据来判断是否获取到正确的数据。若BMC自身与电源之间的通信正常,则正常进入后续的发送电源固件刷新文件给电源的步骤,否则需要BMC重新建立与电源之间的通信连接,然后再次判断两者之间的通信是否正常,只有当通信正常时才会进入后续的发送电源刷新固件文件的步骤。基于此,可以提高电源固件刷新的成功率。

作为一种优选的实施例,在重新建立BMC自身与电源之间的通信连接之后,还包括:

将重连次数加一;

判断重连次数是否大于预设次数;

若否,则进入返回判断BMC与电源之间的通信连接是否正常的步骤;

否是,则判定BMC与电源之间的通信连接断开。

为了节省计算资源,本申请中,考虑到当BMC检测到BMC自身与电源之间的通信异常时,BMC会尝试重新建立与电源之间的通信连接,而重新建立通信连接的过程需要耗费BMC的计算资源。当BMC与电源之间的连接完全断开时,例如发生通信线路物理性断开或者通信堵塞等情况时,BMC则无法与电源之间建立通信连接,但BMC仍会尝试重新连接,从而造成计算资源的浪费;基于此,每当BMC尝试一次重新连接时,都会计一次重连次数,并判断现在的重连次数是否大于预设次数,若不大于,则会尝试重新连接,并回到判断BM和电源之间的通信连接是否正常的步骤,此时BMC会再次检测到通信连接不正常,这时又需要重新建立连接,于是会再计一次重连次数,以此类推直到重连次数大于预设次数为止,BMC检测到重连次数大于预设次数时则可以确定完全无法建立BMC自身与电源之间的通信连接,此时则放弃继续重连,并判定BMC与电源之间的通信连接断开,以提示用户或工作人员进行修复。基于此,可以节省计算资源。

作为一种优选的实施例,在对BMC自身进行固件刷新之前,还包括:

获取电源固件刷新文件中的第一标识符;

在对电源进行固件刷新之后,还包括:

获取电源中的第二标识符;

判断第一标识符与第二标识符是否一致;

若一致,则判定电源的固件刷新成功;

若不一致,则判定电源的固件刷新失败。

为了简单地判断电源固件是否刷新成功,本申请中,考虑到电源的固件具有多种版本,不同版本的固件所对应的标识符不同,例如版本号、刷新日期或修后修改日期等不同,因此,可以根据标识符来判断电源的固件是否刷新成功。具体的,在获取到包含电源固件刷新文件的BMC固件刷新文件的时候,先记录下该电源固件刷新文件所带有的标识符,也即第一标识符;在后续BMC刷新完电源的固件之后,BMC查询电源中的与第一标识符相同定义的标识符,也即获取第二标识符,若第一标识符与第二标识符一致,则说明刷新成功,否则说明刷新失败。例如,当标识符是版本号时,若BMC从刷新完的电源中获取到的的固件版本号和先前在固件刷新文件中获取到的固件版本号不一致,则说明电源没有刷新成功。基于此,可以简单地判断电源固件是否刷新成功。

作为一种优选的实施例,在将BMC固件刷新文件中的电源固件刷新文件发送给电源之前,还包括:

将BMC中的预设地址作为电源固件刷新文件的收录地址;

将电源固件刷新文件发送至收录地址中;

将BMC固件刷新文件中的电源固件刷新文件发送给电源,包括:

将收录地址中的电源固件刷新文件发送给电源。

为了准确地将电源固件刷新文件发送给电源,本申请中,考虑到BMC中存储有各种不同的数据文件,为了区别出BMC中的其他数据文件以及电源固件刷新文件,可以在BMC中指定某个地址作为专门存储电源固件刷新文件的地址,这个地址中不会存放任何除了电源固件刷新文件以外的数据文件,该地址可以是某个寄存器的地址,也可以是某个内存地址或者某个rom地址等,本申请对电源固件刷新文件存储的地址不做限定。在发送电源固件刷新文件给电源时,只需要将该地址中的所有数据发送给电源即可。基于此,可以准确地将电源固件刷新文件发送给电源。

作为一种优选的实施例,将BMC固件刷新文件中的电源固件刷新文件发送给电源,包括:

当接收到用户指令时,根据用户指令查询BMC中存储的电源固件刷新文件;

将查询得到的电源固件刷新文件发送给电源。

为了准确地将电源固件刷新文件发送给电源,本申请中,可以通过指令先找到BMC中存储的电源固件刷新文件,再将找到的电源固件刷新文件发送给电源,具体的,电源固件刷新文件相当于一个数据帧,其数据地址是连续的,通常包含有数据帧头、帧尾、校验位和具体数据信息等内容,而由于电源固件刷新文件中除了电源的固件本体之外,还包含由固件的版本号、标识符、固件名称以及修改日期等固件参数信息,这些信息属于电源固件刷新文件的唯一标识信息,因此可以利用这些参数信息来从BMC中找出整个的电源固件刷新文件。具体的,用户可以通过个人终端上调出命令界面,并输入固件刷新指令给BMC,以便BMC找出自身存储的电源固件刷新文件并发送给电源。例如,输入工具命令“./socflash_x64if=[ImageFile]cs=0/1”,其中的ImageFile为电源固件刷新文件的名称,将该工具命令发送给BMC后,BMC就会在自身内部找到名称为ImageFile的文件,并将其作为电源固件刷新文件并发送给电源。基于此,可以准确地将电源固件刷新文件发送给电源。

作为一种优选的实施例,在对电源进行固件刷新的同时,还包括:

判断电源对BMC自身供电的电源域是否发生变化;

若是,则判定电源的固件刷新失败。

为了准确地确定电源固件刷新是否成功,本申请中,考虑到电源需要给服务器中的各种器件进行供电,而电源具体的供电原理是电源中的每一块电源域分别给不同的器件进行供电,如果电源在给某个器件供电过程中,电源突然切换成另一块电源域给该器件供电,则会导致该器件短暂失电,而对于电源而言,在切换电源域时电源本身也需要短暂失电,以便其调整内部的电源域供电目标。基于此,由于电源的固件刷新的过程是BMC将固件刷新文件发送给电源,因此必须保证电源本身处在正常工作状态,若电源在固件刷新的过程中突然短暂失电,则会导致BMC的发送被中断,或丢失掉失电这段时间内的数据,从而使得电源接收到的固件刷新文件不完整。因此,BMC在对电源进行固件刷新的同时,还需要实时检测电源给BMC自己供电的电源域是否发生变化,发生变化则说明电源出现了短暂失电的情况,此时可以判定电源的固件刷新失败。此外,若BMC有其他的供电模块供电,还可以通过检测电源的电压来判断。基于此,可以准确地确定电源固件刷新是否成功。

请参照图3,图3为本申请提供的一种电源固件的刷新装置的结构示意图,包括:

存储器21,用于存储计算机程序;

BMC22,用于执行计算机程序时实现如上述的电源固件的刷新方法的步骤。

对于本申请提供的一种电源固件的刷新装置的详细介绍,请参照上述电源固件的刷新方法的实施例,本申请在此不再赘述。

请参照图4,图4为本申请提供的一种服务器的结构示意图,包括服务器本体31和电源32,还包括如上述的电源固件的刷新装置33;

电源32分别与服务器本体31和电源固件的刷新装置33连接;

电源固件的刷新装置33与服务器本体31连接。

对于本申请提供的一种服务器的详细介绍,请参照上述电源固件的刷新方法的实施例,本申请在此不再赘述。

本申请还提供一种计算机存储介质,计算机存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述的电源固件的刷新方法的步骤。

对于本申请提供的一种计算机存储介质的详细介绍,请参照上述电源固件的刷新方法的实施例,本申请在此不再赘述。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

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

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

技术分类

06120115867907