一种服务器部件升级方法及相关装置与流程

文档序号:18331047发布日期:2019-08-03 12:13阅读:185来源:国知局
一种服务器部件升级方法及相关装置与流程

本申请涉及计算机技术领域,特别涉及一种服务器部件升级方法、bmc装置、服务器以及计算机可读存储介质。



背景技术:

随着信息技术不断发展,信息技术的周边硬件设计能力也在不断变化。尤其是服务器的设计能力随着数据处理的需求不断变化,其硬件结构也在不断变化。

目前,现有技术中在服务器通常采用bmc(baseboardmanagementcontroller基板管理控制器)对服务器中的各个部件进行管理,或进行升级操作。通常bmc对各个部件进行的升级操作是将升级所需要的代码等信息写在bmc的固件中。也就是将所执行的升级程序写在bmc中,当需要对一个连接的部件进行升级时,bmc通过在其固件信息中查找到对应的升级程序,采用该升级程序和对应的固件代码对该部件进行升级操作。由于不同的部件对应的升级程序并不相同,在对新的部件进行升级的过程中,bmc中可能不存在该部件的升级程序。此时则需要对bmc重新开发写入新的代码,以便兼容新的部件。很显然,当服务器数量较多时,则需要维护的bmc的数量同样很多,对bmc进行重新开发的工作量极高,拖延服务器对新部件的支持效率,降低升级速度。

因此,如何提高采用bmc对部件的升级速度是本领域技术人员关注的重点问题。



技术实现要素:

本申请的目的是提供一种服务器部件升级方法、bmc装置、服务器以及计算机可读存储介质,通过从升级数据文件中获取到升级程序,而不是在bmc固件中保存升级程序,避免对bmc进行刷新操作,提高部件升级操作的效率。

为解决上述技术问题,本申请提供一种服务器部件升级方法,包括:

bmc通过预设接口获取到升级数据文件;

根据待升级部件的部件信息从所述升级数据文件提取出对应的升级程序;

采用所述升级程序根据所述升级数据文件中的固件代码对所述待升级部件执行升级操作。

可选的,根据待升级部件的部件信息从所述升级数据文件提取出对应的升级程序,包括:

根据所述待升级部件的部件信息判断所述升级数据文件中是否存在对应的部件信息;

若是,则从所述升级数据文件中提取出所述升级程序;

若否,则获取新的升级数据文件。

可选的,还包括:

当通过所述预设接口获取到所述升级数据文件时,根据所述升级数据文件的校验信息对所述升级数据文件进行完整性校验;

当所述完整性校验通过时,执行根据待升级部件的部件信息从所述升级数据文件提取出对应的升级程序的步骤。

可选的,采用所述升级程序根据所述升级数据文件中的固件代码对所述待升级部件执行升级操作,包括:

确定所述待升级部件的升级路径;

从所述升级数据文件中提取出对应的固件代码;

采用所述升级程序根据所述固件代码按照所述升级路径对所述待升级部件执行升级操作。

本申请还提供一种bmc装置,包括:

升级数据获取模块,用于通过预设接口获取到升级数据文件;

升级程序获取模块,用于根据待升级部件的部件信息从所述升级数据文件提取出对应的升级程序;

升级操作执行模块,用于采用所述升级程序根据所述升级数据文件中的固件代码对所述待升级部件执行升级操作。

可选的,所述升级程序获取模块,包括:

部件信息判断单元,用于根据所述待升级部件的部件信息判断所述升级数据文件中是否存在对应的部件信息;

升级程序提取单元,用于当所述升级数据文件中存在对应的部件信息时,从所述升级数据文件中提取出所述升级程序;

升级数据重获取单元,用于当所述升级数据文件中不存在对应的部件信息时,获取新的升级数据文件。

可选的,还包括:

完整性校验模块,用于当通过所述预设接口获取到所述升级数据文件时,根据所述升级数据文件的校验信息对所述升级数据文件进行完整性校验;

校验通过执行模块,用于当所述完整性校验通过时,执行根据待升级部件的部件信息从所述升级数据文件提取出对应的升级程序的步骤。

可选的,所述升级操作执行模块,包括:

升级路径单元,用于确定所述待升级部件的升级路径;

固件代码提取单元,用于从所述升级数据文件中提取出对应的固件代码;

升级程序执行单元,用于采用所述升级程序根据所述固件代码按照所述升级路径对所述待升级部件执行升级操作。

本申请还提供一种服务器,包括:

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

处理器,用于执行所述计算机程序时实现如上所述的服务器部件升级方法的步骤。

本申请还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的服务器部件升级方法的步骤。

本申请所提供的一种服务器部件升级方法,包括:bmc通过预设接口获取到升级数据文件;根据待升级部件的部件信息从所述升级数据文件提取出对应的升级程序;采用所述升级程序根据所述升级数据文件中的固件代码对所述待升级部件执行升级操作。

可见,本申请首先通过将预设接口获取到包含有升级程序和固件代码的升级数据文件,也就是说在对部件进行升级的过程中采用的升级程序并非是内置在bmc内部的升级程序,而是从升级数据文件中获取的升级程序,提高替换升级程序的方便性。最后,从升级数据文件中提取出升级程序对升级数据文件中的固件代码执行升级操作,实现对部件进行升级操作。可见,其中bmc的作用仅是对部件执行升级程序,而升级程序并非是bmc的代码中自带的,而是来自升级数据文件。很显然,当部件发生变化,需要采用新的升级程序时只需要对升级数据文件中的升级程序进行更改即可,而不需要对bmc进行刷新操作。降低出现新部件时进行维护升级难度,提升维护升级的效率。

本申请还提供一种bmc装置、服务器以及计算机可读存储介质,具有以上有益效果,在此不做赘述。

附图说明

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

图1为本申请实施例所提供的一种服务器部件升级方法的流程图;

图2为本申请实施例所提供的另一种服务器部件升级方法的流程图;

图3为本申请实施例所提供的又一种服务器部件升级方法的流程图;

图4为本申请实施例所提供的一种bmc装置的结构示意图;

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

具体实施方式

本申请的核心是提供一种服务器部件升级方法、bmc装置、服务器以及计算机可读存储介质,通过从升级数据文件中获取到升级程序,而不是在bmc固件中保存升级程序,避免对bmc进行刷新操作,提高部件升级操作的效率。

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

现有技术中在服务器通常采用bmc对服务器中的各个部件进行管理,或进行升级操作。通常bmc对各个部件进行的升级操作是将升级所需要的代码等信息写在bmc的固件中。也就是将所执行的升级程序写在bmc中,当需要对一个连接的部件进行升级时,bmc通过在其固件信息中查找到对应的升级程序,采用该升级程序和对应的固件代码对该部件进行升级操作。由于不同的部件对应的升级程序并不相同,在对新的部件进行升级的过程中,bmc中可能不存在该部件的升级程序。此时则需要对bmc重新开发写入新的代码,以便兼容新的部件。很显然,当服务器数量较多时,则需要维护的bmc的数量同样很多,对bmc进行重新开发的工作量极高,拖延服务器对新部件的支持效率,降低升级速度。

因此,本申请提供一种服务器部件升级方法,首先通过将预设接口获取到包含有升级程序和固件代码的升级数据文件,也就是说在对部件进行升级的过程中采用的升级程序并非是内置在bmc内部的升级程序,而是从升级数据文件中获取的升级程序,提高替换升级程序的方便性。最后,同升级数据文件中提取出升级程序对升级数据文件中的固件代码执行升级操作,实现对部件进行升级操作。可见,其中bmc的作用仅是对部件执行升级程序,而升级程序并非是bmc的代码中自带的,而是来自升级数据文件。很显然,当部件发生变化,需要采用新的升级程序时只需要对升级数据文件中的升级程序进行更改即可,而不需要对bmc进行刷新操作。降低出现新部件时的维护升级难度,提升维护升级的效率。

请参考图1,图1为本申请实施例所提供的一种服务器部件升级方法的流程图。

本实施例中,该方法可以包括:

s101,bmc通过预设接口获取到升级数据文件;

本步骤旨在bmc获取到升级数据文件。具体的,本步骤可以从不同的接口中获取到升级数据文件。也就是说具有多个不同的预设接口,可以是resful(接口名称)接口,还可以是redfish(接口名称)接口,也可以根据获取的配置参数选择对应的接口。可见,本步骤中的预设接口并不唯一,可以根据合适应用场景选择预设接口,在此不做具体限定。

需要说明的是,本步骤中的升级数据文件是用于对部件进行升级的数据文件。在本实施例中该升级数据文件包括升级程序和固件代码。其中,升级程序是每个部件对应的,用于对每个部件进行升级的程序,且每个部件的升级程序可能并不兼容,因此每个部件需要对应升级程序。固件代码是指每个部件需要更新的固件内容。

而在一般的升级方法中,向bmc传入的主要是固件代码,而升级程序是固化在bmc的代码中。当需要对新的部件进行操作,或者部件的升级程序进行了改变,都需要对bmc的代码进行刷新才可以对部件的升级程序进行更新。可见,在一般的升级方法中更换或增加升级程序的难度较大,会降低部件升级效率。

很显然,本实施例中需要更换升级程序时,只需要替换升级数据中的升级程序即可,降低更换或增加升级程序的难度,提高升级效率。

s102,根据待升级部件的部件信息从升级数据文件提取出对应的升级程序;

在s101的基础上,本步骤旨在从升级数据文件中提取出对应的升级程序。由于升级数据文件中可能存在多个升级程序,因此,当对其中一个部件进行升级操作时,则需要提取出对应的升级程序,从而可以对该部件进行准确的升级操作。

其中,执行提取的方式主要是通过待升级部件的部件信息执行。也就是说,在升级数据文件中不同的升级程序之间也是通过每个升级程序对应的部件信息进行区分。因此,本步骤中根据待升级部件的部件信息提取出对应的升级程序。

进一步的,由于是从升级数据文件中提取出对应的升级程序,可以采用现有技术提供的任意一种数据提取方法;还可以根据升级数据文件的文件格式选择对应的数据提取方法,例如,本实施例中的升级数据文件可以是镜像文件的形式,那么从升级数据文件提取升级程序的方式就是以解压缩的方式提取。

s103,采用升级程序根据升级数据文件中的固件代码对待升级部件执行升级操作。

在s102的基础上,本步骤旨在根据提取的升级程序对部件执行升级操作,实现对部件进行升级。也就是bmc执行升级程序,升级程序根据固件代码对待升级部件进行升级。

其中,升级程序根据固件代码进行升级操作的方式可以采用现有技术提供的任意一种升级方式,还可以采用以下实施例提供的升级方式,可见,本实施例中进行升级的方式并不唯一,在此不做具体限定。

可选的,本实施例还可以包括:

步骤一,当通过所述预设接口获取到所述升级数据文件时,根据所述升级数据文件的校验信息对所述升级数据文件进行完整性校验;

步骤二,当所述完整性校验通过时,执行根据待升级部件的部件信息从所述升级数据文件提取出对应的升级程序的步骤。

可见,本可选方案中还可以根据升级数据文件中的校验信息对其进行完整性校验,以便判断接收到的升级数据是否完整。当完整时,直接执行后续的步骤,当不完整时,重新获取升级数据文件。

可以想到的是,本实施例中的升级数据文件中还包括校验信息、部件信息等信息,以便提高部件升级的可靠性。

假设升级数据文件以镜像文件的形式进行保存,那么该镜像文件可以包括如下内容:

镜像头部信息:部件类型、部件型号等部件信息,用于bmc对镜像文件进行防生错匹配;

部件固件代码该部件的固件代码;

部件升级代码lib库文件,即升级程序,lib库文件必须按照约定规则进行设计;将每个部件的升级代码打包在镜像文件中,引入新部件后,只需要将该部件的升级代码封装成lib库文件放置于镜像文件中,无需进行bmc代码开发、升级。

数字签名,用于镜像整体完整性校验。

其中,约定规则是指定义的升级接口函数,该接口函数的输入参数,以及镜像路径,访问部件的物理通道参数,包括通道类型,总线地址等。

综上,本实施例首先通过将预设接口获取到包含有升级程序和固件代码的升级数据文件,也就是说在对部件进行升级的过程中采用的升级程序并非是内置在bmc内部的升级程序,而是从升级数据文件中获取的升级程序,提高替换升级程序的方便性。最后,同升级数据文件中提取出升级程序对升级数据文件中的固件代码执行升级操作,实现对部件进行升级操作。可见,其中bmc的作用仅是对部件执行升级程序,而升级程序并非是bmc的代码中自带的,而是来自升级数据文件。很显然,当部件发生变化,需要采用新的升级程序时只需要对升级数据文件中的升级程序进行更改即可,而不需要对bmc进行刷新操作。降低出现新部件时的维护升级难度,提升维护升级的效率。

以下通过一个实施例,对如何从升级数据文件中提取出升级程序做说明。

请参考图2,图2为本申请实施例所提供的另一种服务器部件升级方法的流程图。

本实施例中,该方法可以包括:

s201,bmc通过预设接口获取到升级数据文件;

s202,根据待升级部件的部件信息判断升级数据文件中是否存在对应的部件信息;若是,则执行s203;若否,则执行s204;

本步骤旨在根据待升级部件的部件信息判断升级数据文件中是否存在对应的升级程序。也就是说,在生成升级数据文件的过程中将每个升级程序对应的待升级部件的部件信息均写到升级数据文件中,以便可以通过部件信息进行判断,进而确定是否从升级数据文件中提取出升级程序。

s203,从升级数据文件中提取出升级程序;

在s202的基础上,本步骤旨在从升级数据文件中提取出升级程序。具体的,本步骤中可以采用现有技术提供的任意一种升级程序提取方法,在此不做具体限定。

s204,获取新的升级数据文件,执行s201;

在s202的基础上,本步骤旨在重新获取到新的升级数据文件,也就是说本实施例中操作的升级数据文件可能存在问题,与当前的升级任务不匹配,则需要重新获取到升级数据文件。此时,另一端的服务器可以根据对应的获取指令重新生成升级数据文件,最后再通过预设接口发送至bmc。具体的,可以根据该待升级部件的部件信息生成升级数据文件。

s205,采用升级程序根据升级数据文件中的固件代码对待升级部件执行升级操作。

关于上述步骤s201和s205的具体实施过程可参照前述实施例的内容,在此不再进行赘述。

以下通过一个实施例,对如何采用升级程序对待升级部件执行升级操作做进行说明。

请参考图3,图3为本申请实施例所提供的又一种服务器部件升级方法的流程图。

本实施例中,该方法可以包括:

s301,bmc通过预设接口获取到升级数据文件;

s302,根据待升级部件的部件信息从升级数据文件提取出对应的升级程序;

s303,确定待升级部件的升级路径;

本步骤旨在确定对待升级部件执行升级操作的升级路径。

主要是因为在服务器内部,bmc连接了不同的服务器部件,每种部件与bmc连接的方式,也就是连接的路径并不相同。需要确定待升级部件的升级路径,避免对升级路径试错,提高对待升级部件进行升级操作的效率。

例如,bmc通过i2c、spi、pcie等总线与psu、网卡、raid等部件进行连接。当psu进行升级时,确定psu与bmc的连接方式,假设bmc通过i2c与psu进行连接,则确定后的升级路径即为i2c。在后续步骤中均采用i2c对psu进行升级操作。

s304,从升级数据文件中提取出对应的固件代码;

在s303的基础上,本步骤旨在从升级数据文件提取出对应的固件代码。其中,固件代码就是包括在升级数据文件中,用于对部件进行升级操作的代码数据。

s305,采用升级程序根据固件代码按照升级路径对待升级部件执行升级操作。

在s304的基础上,本步骤旨在采用升级程序根据固件代码按照升级路径对待升级部件执行升级操作。

关于上述步骤s301和s302的具体实施过程可参照前述实施例的内容,在此不再进行赘述。

下面对本申请实施例提供的一种bmc装置进行介绍,下文描述的一种bmc装置与上文描述的一种服务器部件升级方法可相互对应参照。

请参考图4,图4为本申请实施例所提供的一种bmc装置的结构示意图。

本实施例中,该装置可以包括:

升级数据获取模块100,用于通过预设接口获取到升级数据文件;

升级程序获取模块200,用于根据待升级部件的部件信息从升级数据文件提取出对应的升级程序;

升级操作执行模块300,用于采用升级程序根据升级数据文件中的固件代码对待升级部件执行升级操作。

可选的,该升级程序获取模块100,可以包括:

部件信息判断单元,用于根据待升级部件的部件信息判断升级数据文件中是否存在对应的部件信息;

升级程序提取单元,用于当升级数据文件中存在对应的部件信息时,从升级数据文件中提取出升级程序;

升级数据重获取单元,用于当升级数据文件中不存在对应的部件信息时,获取新的升级数据文件。

可选的,该装置还可以包括:

完整性校验模块,用于当通过预设接口获取到升级数据文件时,根据升级数据文件的校验信息对升级数据文件进行完整性校验;

校验通过执行模块,用于当完整性校验通过时,执行根据待升级部件的部件信息从升级数据文件提取出对应的升级程序的步骤。

可选的,该升级操作执行模块300,可以包括:

升级路径单元,用于确定待升级部件的升级路径;

固件代码提取单元,用于从升级数据文件中提取出对应的固件代码;

升级程序执行单元,用于采用升级程序根据固件代码按照升级路径对待升级部件执行升级操作。

下面对本申请实施例提供的一种服务器进行介绍,下文描述的一种服务器与上文描述的服务器部件升级方法可相互对应参照。

请参考图5,图5为本申请所提供的一种服务器的结构示意图,该服务器可以包括:

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

处理器12,用于执行上述存储器11存储的计算机程序时可实现如下步骤:

通过预设接口获取到升级数据文件;根据待升级部件的部件信息从升级数据文件提取出对应的升级程序;采用升级程序根据升级数据文件中的固件代码对待升级部件执行升级操作。

本实施例中,处理器12执行存储器11中保存的计算机子程序时,可以具体实现以下步骤:根据待升级部件的部件信息判断升级数据文件中是否存在对应的部件信息;若是,则从升级数据文件中提取出升级程序;若否,则获取新的升级数据文件。

本实施例中,处理器12执行存储器11中保存的计算机子程序时,可以具体实现以下步骤:当通过预设接口获取到升级数据文件时,根据升级数据文件的校验信息对升级数据文件进行完整性校验;当完整性校验通过时,执行根据待升级部件的部件信息从升级数据文件提取出对应的升级程序的步骤。

本实施例中,处理器12执行存储器11中保存的计算机子程序时,可以具体实现以下步骤:确定待升级部件的升级路径;从升级数据文件中提取出对应的固件代码;采用升级程序根据固件代码按照升级路径对待升级部件执行升级操作。

对于本申请提供的设备的介绍请参照上述方法实施例,本申请在此不做赘述。

进一步的,本申请实施例还提供了一种计算机可读存储介质,用于存储计算机程序,其中,计算机程序被处理器执行时可实现如下步骤:

通过预设接口获取到升级数据文件;根据待升级部件的部件信息从升级数据文件提取出对应的升级程序;采用升级程序根据升级数据文件中的固件代码对待升级部件执行升级操作。

在一些具体的实施例中,计算机可读存储介质中保存的计算机子程序被处理器执行时,可以具体实现以下步骤:根据待升级部件的部件信息判断升级数据文件中是否存在对应的部件信息;若是,则从升级数据文件中提取出升级程序;若否,则获取新的升级数据文件。

在一些具体的实施例中,计算机可读存储介质中保存的计算机子程序被处理器执行时,可以具体实现以下步骤:当通过预设接口获取到升级数据文件时,根据升级数据文件的校验信息对升级数据文件进行完整性校验;当完整性校验通过时,执行根据待升级部件的部件信息从升级数据文件提取出对应的升级程序的步骤。

在一些具体的实施例中,计算机可读存储介质中保存的计算机子程序被处理器执行时,可以具体实现以下步骤:确定待升级部件的升级路径;从升级数据文件中提取出对应的固件代码;采用升级程序根据固件代码按照升级路径对待升级部件执行升级操作。

该计算机可读存储介质可以包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

对于本申请提供的计算机可读存储介质的具体介绍请参照上述方法实施例,本申请在此不做赘述。

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

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

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

以上对本申请所提供的一种服务器部件升级方法、bmc装置、服务器以及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。

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