CN108920175B - 基板管理控制器bmc代码逻辑的实现方法及系统 - Google Patents
基板管理控制器bmc代码逻辑的实现方法及系统 Download PDFInfo
- Publication number
- CN108920175B CN108920175B CN201810674460.0A CN201810674460A CN108920175B CN 108920175 B CN108920175 B CN 108920175B CN 201810674460 A CN201810674460 A CN 201810674460A CN 108920175 B CN108920175 B CN 108920175B
- Authority
- CN
- China
- Prior art keywords
- target server
- configuration file
- bmc
- servers
- server
- 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
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本公开提供了一种基板管理控制器BMC代码逻辑的实现方法,包括:获取可被多个服务器共用的BMC基本代码逻辑;获取目标服务器的配置文件,其中,配置文件中包含有目标服务器的硬件配置参数;以及基于配置文件中包含的硬件配置参数,对BMC基本代码逻辑中的相应变量进行赋值,以实现目标服务器的目标BMC的代码逻辑。本公开实施例还公开了一种基板管理控制器BMC代码逻辑的实现系统。
Description
技术领域
本公开涉及一种基板管理控制器BMC代码逻辑的实现方法及系统。
背景技术
基板管理控制器(Baseboard Management Controller,简称为BMC)可以在机器未开机的状态下,对机器进行固件升级、查看机器设备等。
目前,BMC会因为平台不同而需要维护很多版本,现有的解决方案是为每台服务器即每个平台设置一个ID,并根据智能平台管理接口命令(Intelligent PlatformManagement Interface command,简称为IPMI command)进行平台鉴别,进而通过ID值对BMC逻辑进行选择性运行。
然而,在实现本公开构思的过程中,发明人发现相关技术中至少存在以下缺陷:现有的解决方案对平台的扩展性不足,无法做到一个镜像适用于多个不同的平台,导致一个功能往往需要在不同的平台上进行多次开发维护,从而加大了工程师的工作量。
发明内容
本公开的一个方面提供了一种基板管理控制器BMC代码逻辑的实现方法,包括:获取可被多个服务器共用的BMC基本代码逻辑;获取目标服务器的配置文件,其中,上述配置文件中包含有上述目标服务器的硬件配置参数;以及基于上述配置文件中包含的上述硬件配置参数,对上述BMC基本代码逻辑中的相应变量进行赋值,以实现上述目标服务器的目标BMC的代码逻辑。
可选地,上述多个服务器包括具有不同的硬件配置的多个服务器。
可选地,上述方法还包括:针对不同于上述目标服务器的其他服务器,确定上述其他服务器区别于上述目标服务器的硬件配置;基于上述其他服务器区别于上述目标服务器的硬件配置,修改上述配置文件中的相关硬件配置参数,以得到上述其他服务器的配置文件;以及将修改得到的配置文件存储到指定位置。
可选地,获取目标服务器的配置文件包括:从上述目标BMC的内部存储器中读取上述目标服务器的配置文件;或者从上述目标服务器的不同于上述内部存储器的其他内部存储器中读取上述目标服务器的配置文件;或者从外部存储器中读取上述目标服务器的配置文件。
可选地,获取目标服务器的配置文件包括:确定上述目标服务器的标识信息;基于上述标识信息,从上述多个服务器对应多个配置文件找出与上述目标服务器具有关联关系的配置文件;以及读取与上述目标服务器具有关联关系的配置文件。
本公开的另一个方面提供了一种基板管理控制器BMC代码逻辑的实现系统,包括:第一获取模块,用于获取可被多个服务器共用的BMC基本代码逻辑;第二获取模块,用于获取目标服务器的配置文件,其中,上述配置文件中包含有上述目标服务器的硬件配置参数;以及赋值模块,用于基于上述配置文件中包含的上述硬件配置参数,对上述BMC基本代码逻辑中的相应变量进行赋值,以实现上述目标服务器的目标BMC的代码逻辑。
可选地,上述多个服务器包括具有不同的硬件配置的多个服务器。
可选地,上述系统还包括:确定模块,用于针对不同于上述目标服务器的其他服务器,确定上述其他服务器区别于上述目标服务器的硬件配置;修改模块,用于基于上述其他服务器区别于上述目标服务器的硬件配置,修改上述配置文件中的相关硬件配置参数,以得到上述其他服务器的配置文件;以及存储模块,用于将修改得到的配置文件存储到指定位置。
可选地,上述第二获取模块还用于:从上述目标BMC的内部存储器中读取上述目标服务器的配置文件;或者从上述目标服务器的不同于上述内部存储器的其他内部存储器中读取上述目标服务器的配置文件;或者从外部存储器中读取上述目标服务器的配置文件。
可选地,上述第二获取模块包括:确定单元,用于确定上述目标服务器的标识信息;查找单元,用于基于上述标识信息,从上述多个服务器对应多个配置文件找出与上述目标服务器具有关联关系的配置文件;以及读取单元,用于读取与上述目标服务器具有关联关系的配置文件。
本公开的另一方面提供了一种非易失性存储介质,存储有计算机可执行指令,所述指令在被执行时用于实现如上所述的方法。
本公开的另一方面提供了一种计算机设备,包括一个或多个处理器;存储器,用于存储一个或多个程序,其中,当上述一个或多个程序被上述一个或多个处理器执行时,使得上述一个或多个处理器实现如上所述的方法。
本公开的另一方面提供了一种计算机程序,所述计算机程序包括计算机可执行指令,所述指令在被执行时用于实现如上所述的方法。
附图说明
为了更完整地理解本公开及其优势,现在将参考结合附图的以下描述,其中:
图1示意性示出了根据本公开实施例的BMC代码逻辑的实现方法的应用场景;
图2示意性示出了根据本公开实施例的BMC代码逻辑的实现方法的流程图;
图3示意性示出了根据本公开实施例的实现BMC代码逻辑的示意图;
图4示意性示出了根据本公开另一实施例的BMC代码逻辑的实现的流程图;
图5示意性示出了根据本公开实施例的获取目标服务器的配置文件的流程图;
图6示意性示出了根据本公开实施例的获取目标服务器的配置文件的示意图;
图7示意性示出了根据本公开实施例的BMC代码逻辑的实现系统的框图;
图8示意性示出了根据本公开另一实施例的BMC代码逻辑的实现系统的框图;
图9示意性示出了根据本公开实施例的第二获取模块的框图;以及
图10示意性示出了根据本公开实施例的适于实现BMC代码逻辑的实现方法的计算机设备的方框图。
具体实施方式
以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
在使用类似于“A、B和C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。在使用类似于“A、B或C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B或C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。本领域技术人员还应理解,实质上任意表示两个或更多可选项目的转折连词和/或短语,无论是在说明书、权利要求书还是附图中,都应被理解为给出了包括这些项目之一、这些项目任一方、或两个项目的可能性。例如,短语“A或B”应当被理解为包括“A”或“B”、或“A和B”的可能性。
附图中示出了一些方框图和/或流程图。应理解,方框图和/或流程图中的一些方框或其组合可以由计算机程序指令来实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,从而这些指令在由该处理器执行时可以创建用于实现这些方框图和/或流程图中所说明的功能/操作的装置。
因此,本公开的技术可以硬件和/或软件(包括固件、微代码等)的形式来实现。另外,本公开的技术可以采取存储有指令的计算机可读介质上的计算机程序产品的形式,该计算机程序产品可供指令执行系统使用或者结合指令执行系统使用。在本公开的上下文中,计算机可读介质可以是能够包含、存储、传送、传播或传输指令的任意介质。例如,计算机可读介质可以包括但不限于电、磁、光、电磁、红外或半导体系统、装置、器件或传播介质。计算机可读介质的具体示例包括:磁存储装置,如磁带或硬盘(HDD);光存储装置,如光盘(CD-ROM);存储器,如随机存取存储器(RAM)或闪存;和/或有线/无线通信链路。
本公开的实施例提供了一种BMC代码逻辑的实现方法。该方法包括:获取可被多个服务器共用的BMC基本代码逻辑;获取目标服务器的配置文件,其中,上述配置文件中包含有上述目标服务器的硬件配置参数;以及基于上述配置文件中包含的上述硬件配置参数,对上述BMC基本代码逻辑中的相应变量进行赋值,以实现上述目标服务器的目标BMC的代码逻辑。
图1示意性示出了根据本公开实施例的BMC代码逻辑的实现方法的应用场景。需要注意的是,图1所示仅为可以应用本公开实施例的场景的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、系统、环境或场景。
BMC可以在机器未开机的状态下,对机器进行固件升级、查看机器设备等。目前,如图1所示,BMC会因为平台不同(如平台1,平台2,平台3,……,平台N)而需要维护很多版本,现有的解决方案是为每台服务器即每个平台设置一个ID,并根据IPMI command进行平台鉴别,进而通过ID值对BMC逻辑进行选择性运行。
例如,假设公司1的平台ID=200,公司2的平台ID=201,由于IPMI command是server公开制定的一套发送和接收命令协议,该协议制定了发送和接收的方法和通道,因此通过该协议制定的规则将平台ID存储到一块存储空间里,BMC运行时读取对应的ID值,并通过该ID值运行对应的代码逻辑。
由于现有模式中ID值越大,编码逻辑电就越复杂,芯片运行code时消耗的性能也就越多,比如让一个每秒运行100万次的CPU去运行需要每秒执行1000万次的code一样,这就限制了平台的扩展。
为了克服相关技术中存在的上述缺陷,本公开提供了经过改进的BMC代码逻辑的实现方法及系统。
图2示意性示出了根据本公开实施例的基板管理控制器BMC代码逻辑的实现方法的流程图。如图2所示,该方法包括如下操作:
在操作S201,获取可被多个服务器共用的BMC基本代码逻辑。
在本公开实施例中,主要通过两部分来实现一个完整的BMC逻辑,这两部分包括:基本代码逻辑和配置文件。其中,一套基本代码逻辑可以供多个不同的服务器即多个不同的平台使用,不同的配置文件可以用于区别不同的服务器。
通常情况下,每个服务器基本上都是不同的,比如电路图不一样,所使用的芯片不一样,风扇、CPU、内存的个数也都不一样,这些就是区别服务器的关键因素,可以写入配置文件中。
在操作S202,获取目标服务器的配置文件,其中,该配置文件中包含有该目标服务器的硬件配置参数。
在本公开实施例中,可以将各服务器的配置文件存储在固定的存储路径下,BMC可以使用机器语言打开该路径下的配置文件并读取其中包含的内容,比如去/etc/config/sys_config这个路径下读取一配置文件。
需要说明的是,服务器的ID值文件和配置文件可以存放在一个存储芯片下。其中,ID值文件和配置文件就像电脑中的两个文件,每台服务器都有一个唯一固定的ID值用来识别使用哪个配置文件。通常情况下ID值文件和配置文件的大小加在一起不会超过20K,存储芯片有4G和8G的大小可选(根据平台不同而定),理论上大概可以存储52428-209712个配置文件,基本涵盖一个公司所有的项目。配置文件的命名以ID+config-file,如:01_config-file的形式,代表ID值为1的服务器对应的config-file,如图3所示。当BMC读取到的ID=1的时候就会去读取01_config-file这个配置文件的内容。
具体地,服务器的硬件配置参数可以包括但不限于所使用的芯片的规格和型号,风扇、CPU、内存的个数等。
在操作S203,基于该配置文件中包含的该硬件配置参数,对该BMC基本代码逻辑中的相应变量进行赋值,以实现该目标服务器的目标BMC的代码逻辑。
例如,对于ID=01的服务器而言,BMC去/etc/config/sys_config路径下读取对应的配置文件01_config-file,并判断读取到的文件内容,如:fan_num=4(4个风扇),那么在运行的逻辑中变量fan_num就会被赋值为4,等等。
总体上,在本公开实施例中,BMC把区别平台的关键因素写入config文件中,BMC做统一API从固定的config文件或存储rom中读取这些配置,进而针对这些不同的平台运行不同的BMC逻辑。
通过本公开实施例,由于不同服务器的BMC具有相同的基本代码逻辑,因而对于不同的BMC而言,其编码复杂度并不受服务器ID值的影响,从而克服了相关技术中ID值严重影响平台的扩展性的缺陷,能够做到一个镜像适用于多个不同的平台,达到一个功能在不同的平台上仅开发一次,从而缩减了工程师的工作量的目的。
作为一种可选的实施例,该多个服务器包括具有不同的硬件配置的多个服务器。
例如,这些服务器可以使用不同的芯片规格和型号,不同个数的风扇、CPU、内存,等等。
通过本公开实施例,通过基本代码逻辑和配置文件两部分实现一个完整的BMC逻辑,使得一套BMC基本代码逻辑可以供多个不同的服务器即多个不同的平台使用,且不同的服务器能够通过各自的配置文件进行区分。
在本公开实施例中,至少可以通过两种方式为不同的服务器配置对应的BMC配置文件。方式1,对于任意一个服务器而言,都可以分别统计其硬件组成,如所使用芯片的规格和型号,风扇、内存和CPU的个数等,进而根据硬件组成确定硬件配置参数,并基于硬件配置参数生成对应的配置文件;方式2,可以先按照方式1生成一个配置文件(如文件1),其他配置文件则可以在该文件1的基础上进行修改得到。相比于方式1,方式2可以减少工作量,能够提高文件生成效率。
具体地,对于方式2,如图4所示,该方法除了包括如图2所示的操作之外还可以包括如下操作:
在操作S401,针对不同于该目标服务器的其他服务器,确定该其他服务器区别于该目标服务器的硬件配置;
在操作S402,基于该其他服务器区别于该目标服务器的硬件配置,修改该配置文件中的相关硬件配置参数,以得到该其他服务器的配置文件;以及
在操作S403,将修改得到的配置文件存储到指定位置。
例如,假设一服务器与该目标服务器相比,其硬件配置的差别仅仅在于风扇、内存的个数上,则可以在该目标服务器的配置文件的基础上修改fan_num和mem_num这两个参数就可以了。
在本公开实施例中,根据平台不同修改config文件,将决定平台的关键因素转化到需要设置的config文件中,BMC做好该config文件的解析(比如可以重启BMC系统(或IPMIMain应用),对config-files进行加载解析),并将参数应用到code逻辑中,这样就能做到一个image(即镜像)应用于N多平台上。这样只需维护config文件和一套BMC代码即可,大大减轻了BMC工程师的工作量,对平台扩展也能够做到快速实现。
作为一种可选的实施例,获取目标服务器的配置文件可以包括:从该目标BMC的内部存储器中读取该目标服务器的配置文件;或者从该目标服务器的不同于该内部存储器的其他内部存储器中读取该目标服务器的配置文件;或者从外部存储器中读取该目标服务器的配置文件。
在本公开实施例中,可以通过多种方式存储配置文件,比如,存储在BMC的内部存储器中,或者服务器的其他内部存储器中,或者外部存储器中。具体地,这些config文件可以通过IPMI command发给BMC系统(或存储rom内)进行存储,也可以使用外部烧录等方法进行存储。
作为一种可选的实施例,如图5所示,获取目标服务器的配置文件可以包括如下操作:
在操作S501,确定该目标服务器的标识信息;
在操作S502,基于该标识信息,从该多个服务器对应多个配置文件找出与该目标服务器具有关联关系的配置文件;以及
在操作S503,读取与该目标服务器具有关联关系的配置文件。
需要说明的是,服务器的标识信息可以包括服务器ID。服务器的ID值文件和配置文件可以存放在一个存储芯片下。其中,ID值文件和配置文件就像电脑中的两个文件,每台服务器都有一个唯一固定的ID值用来识别使用哪个配置文件,如图6和表1所示。通常情况下ID值文件和配置文件的大小加在一起不会超过20K,存储芯片有4G和8G的大小可选(根据平台不同而定),理论上大概可以存储52428-209712个配置文件,基本涵盖一个公司所有的项目。配置文件的命名以ID+config-file,如:01_config-file的形式,代表ID值为1的服务器对应的config-file,如图3所示。当BMC读取到的ID=1的时候就会去读取01_config-file这个配置文件的内容。
表1
服务器 | ID值 | 配置文件 |
服务器1 | 01 | 01_config-file |
服务器2 | 02 | 02_config-file |
服务器3 | 03 | 03_config-file |
服务器4 | 04 | 04_config-file |
…… | …… | …… |
服务器N | 0N | 0N_config-file |
例如,对于ID=01的服务器而言,BMC去/etc/config/sys_config路径下读取对应的配置文件01_config-file,并判断读取到的文件内容,如:fan_num=4(4个风扇),那么在运行的逻辑中变量fan_num就会被赋值为4,等等。
通过本公开实施例,由于每台服务器都具有一个能够区别于其他服务器的唯一标识ID,在这种情况下,将服务器ID与该服务器的BMC配置文件进行关联,可以根据ID与ID和配置文件的关联关系准确地获取每台服务器的BMC配置文件。
图7示意性示出了根据本公开实施例的BMC代码逻辑的实现系统的框图。如图7所示,该系统700可以包括:第一获取模块701,第二获取模块702和赋值模块703。
第一获取模块701用于获取可被多个服务器共用的BMC基本代码逻辑。
第二获取模块702用于获取目标服务器的配置文件,其中,该配置文件中包含有该目标服务器的硬件配置参数。
赋值模块703用于基于该配置文件中包含的该硬件配置参数,对该BMC基本代码逻辑中的相应变量进行赋值,以实现该目标服务器的目标BMC的代码逻辑。
通过本公开实施例,由于不同服务器的BMC具有相同的基本代码逻辑,因而对于不同的BMC而言,其编码复杂度并不受服务器ID值的影响,从而克服了相关技术中ID值严重影响平台的扩展性的缺陷,能够做到一个镜像适用于多个不同的平台,达到一个功能在不同的平台上仅开发一次,从而缩减了工程师的工作量的目的。
作为一种可选的实施例,该多个服务器包括具有不同的硬件配置的多个服务器。
通过本公开实施例,通过基本代码逻辑和配置文件两部分实现一个完整的BMC逻辑,使得一套BMC基本代码逻辑可以供多个不同的服务器即多个不同的平台使用,且不同的服务器能够通过各自的配置文件进行区分。
在本公开实施例中,至少可以通过两种方式为不同的服务器配置对应的BMC配置文件。方式1,对于任意一个服务器而言,都可以分别统计其硬件组成,如所使用芯片的规格和型号,风扇、内存和CPU的个数等,进而根据硬件组成确定硬件配置参数,并基于硬件配置参数生成对应的配置文件;方式2,可以先按照方式1生成一个配置文件(如文件1),其他配置文件则可以在该文件1的基础上进行修改得到。相比于方式1,方式2可以减少工作量,能够提高文件生成效率。
具体地,对于方式2,具体地,如图8所示,该系统还可以包括:确定模块801,用于针对不同于该目标服务器的其他服务器,确定该其他服务器区别于该目标服务器的硬件配置;修改模块802,用于基于该其他服务器区别于该目标服务器的硬件配置,修改该配置文件中的相关硬件配置参数,以得到该其他服务器的配置文件;以及存储模块803,用于将修改得到的配置文件存储到指定位置。
作为一种可选的实施例,该第二获取模块还用于:从该目标BMC的内部存储器中读取该目标服务器的配置文件;或者从该目标服务器的不同于该内部存储器的其他内部存储器中读取该目标服务器的配置文件;或者从外部存储器中读取该目标服务器的配置文件。
作为一种可选的实施例,如图9所示,该第二获取模块702可以包括:确定单元901,用于确定该目标服务器的标识信息;查找单元902,用于基于该标识信息,从该多个服务器对应多个配置文件找出与该目标服务器具有关联关系的配置文件;以及读取单元903,用于读取与该目标服务器具有关联关系的配置文件。
通过本公开实施例,由于每台服务器都具有一个能够区别于其他服务器的唯一标识ID,在这种情况下,将服务器ID与该服务器的BMC配置文件进行关联,可以根据ID与ID和配置文件的关联关系准确地获取每台服务器的BMC配置文件。
根据本公开的实施例的模块中的任意多个、或其中任意多个的至少部分功能可以在一个模块/单元中实现。根据本公开实施例的模块/单元中的任意一个或多个可以被拆分成多个模块/单元来实现。根据本公开实施例的模块/单元中的任意一个或多个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式的硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,根据本公开实施例的模块中的一个或多个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
例如,第一获取模块701,第二获取模块702和赋值模块703中的任意多个可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本公开的实施例,第一获取模块701,第二获取模块702和赋值模块703中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,第一获取模块701,第二获取模块702和赋值模块703中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
图10示意性示出了根据本公开实施例的适于实现BMC代码逻辑的实现方法的计算机设备的方框图。图10示出的计算机设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图10所示,计算机设备1000包括处理器1010、计算机可读存储介质1020。该计算机设备1000可以执行根据本公开实施例的方法。
具体地,处理器1010例如可以包括通用微处理器、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC)),等等。处理器1010还可以包括用于缓存用途的板载存储器。处理器1010可以是用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
计算机可读存储介质1020,例如可以是能够包含、存储、传送、传播或传输指令的任意介质。例如,可读存储介质可以包括但不限于电、磁、光、电磁、红外或半导体系统、装置、器件或传播介质。可读存储介质的具体示例包括:磁存储装置,如磁带或硬盘(HDD);光存储装置,如光盘(CD-ROM);存储器,如随机存取存储器(RAM)或闪存;和/或有线/无线通信链路。
计算机可读存储介质1020可以包括计算机程序1021,该计算机程序1021可以包括代码/计算机可执行指令,其在由处理器1010执行时使得处理器1010执行根据本公开实施例的方法或其任何变形。
计算机程序1021可被配置为具有例如包括计算机程序模块的计算机程序代码。例如,在示例实施例中,计算机程序1021中的代码可以包括一个或多个程序模块,例如包括1021A、模块1021B、……。应当注意,模块的划分方式和个数并不是固定的,本领域技术人员可以根据实际情况使用合适的程序模块或程序模块组合,当这些程序模块组合被处理器1010执行时,使得处理器1010可以执行根据本公开实施例的方法或其任何变形。
根据本公开的实施例,处理器1010可以执行根据本公开实施例的方法或其任何变形。
根据本发明的实施例,第一获取模块701,第二获取模块702和赋值模块703中的至少一个可以实现为参考图10描述的计算机程序模块,其在被处理器1010执行时,可以实现上面描述的相应操作。
本公开还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现如上所述的方法。
根据本公开的实施例,计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、有线、光缆、射频信号等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合或/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。
尽管已经参照本公开的特定示例性实施例示出并描述了本公开,但是本领域技术人员应该理解,在不背离所附权利要求及其等同物限定的本公开的精神和范围的情况下,可以对本公开进行形式和细节上的多种改变。因此,本公开的范围不应该限于上述实施例,而是应该不仅由所附权利要求来进行确定,还由所附权利要求的等同物来进行限定。
Claims (10)
1.一种基板管理控制器BMC代码逻辑的实现方法,包括:
获取可被多个服务器共用的BMC基本代码逻辑;
获取目标服务器的配置文件,其中,所述配置文件中包含有所述目标服务器的硬件配置参数;
基于所述配置文件中包含的所述硬件配置参数,对所述BMC基本代码逻辑中的相应变量进行赋值,以实现所述目标服务器的目标BMC的代码逻辑;
针对不同于所述目标服务器的其他服务器,确定所述其他服务器区别于所述目标服务器的硬件配置;
基于所述其他服务器区别于所述目标服务器的硬件配置,修改所述配置文件中的相关硬件配置参数,以得到所述其他服务器的配置文件。
2.根据权利要求1所述的方法,其中,所述多个服务器包括具有不同的硬件配置的多个服务器。
3.根据权利要求1所述的方法,其中,所述方法还包括:
将所述其他服务器的配置文件存储到指定位置。
4.根据权利要求1所述的方法,其中,获取目标服务器的配置文件包括:
从所述目标BMC的内部存储器中读取所述目标服务器的配置文件;或者
从所述目标服务器的不同于所述内部存储器的其他内部存储器中读取所述目标服务器的配置文件;或者
从外部存储器中读取所述目标服务器的配置文件。
5.根据权利要求1~4中任一项所述的方法,其中,获取目标服务器的配置文件包括:
确定所述目标服务器的标识信息;
基于所述标识信息,从所述多个服务器对应多个配置文件找出与所述目标服务器具有关联关系的配置文件;以及
读取与所述目标服务器具有关联关系的配置文件。
6.一种基板管理控制器BMC代码逻辑的实现系统,包括:
第一获取模块,用于获取可被多个服务器共用的BMC基本代码逻辑;
第二获取模块,用于获取目标服务器的配置文件,其中,所述配置文件中包含有所述目标服务器的硬件配置参数;
赋值模块,用于基于所述配置文件中包含的所述硬件配置参数,对所述BMC基本代码逻辑中的相应变量进行赋值,以实现所述目标服务器的目标BMC的代码逻辑;
确定模块,用于针对不同于所述目标服务器的其他服务器,确定所述其他服务器区别于所述目标服务器的硬件配置;
修改模块,用于基于所述其他服务器区别于所述目标服务器的硬件配置,修改所述配置文件中的相关硬件配置参数,以得到所述其他服务器的配置文件。
7.根据权利要求6所述的系统,其中,所述多个服务器包括具有不同的硬件配置的多个服务器。
8.根据权利要求6所述的系统,其中,所述系统还包括:
存储模块,用于将所述其他服务器的配置文件存储到指定位置。
9.根据权利要求6所述的系统,其中,所述第二获取模块还用于:
从所述目标BMC的内部存储器中读取所述目标服务器的配置文件;或者
从所述目标服务器的不同于所述内部存储器的其他内部存储器中读取所述目标服务器的配置文件;或者
从外部存储器中读取所述目标服务器的配置文件。
10.根据权利要求6~9中任一项所述的系统,其中,所述第二获取模块包括:
确定单元,用于确定所述目标服务器的标识信息;
查找单元,用于基于所述标识信息,从所述多个服务器对应多个配置文件找出与所述目标服务器具有关联关系的配置文件;以及
读取单元,用于读取与所述目标服务器具有关联关系的配置文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810674460.0A CN108920175B (zh) | 2018-06-26 | 2018-06-26 | 基板管理控制器bmc代码逻辑的实现方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810674460.0A CN108920175B (zh) | 2018-06-26 | 2018-06-26 | 基板管理控制器bmc代码逻辑的实现方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108920175A CN108920175A (zh) | 2018-11-30 |
CN108920175B true CN108920175B (zh) | 2021-04-13 |
Family
ID=64422768
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810674460.0A Active CN108920175B (zh) | 2018-06-26 | 2018-06-26 | 基板管理控制器bmc代码逻辑的实现方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108920175B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111176638B (zh) * | 2019-12-27 | 2022-11-15 | 苏州浪潮智能科技有限公司 | 一种bios代码变量转化方法、系统、设备以及介质 |
CN113094031B (zh) * | 2021-03-16 | 2024-02-20 | 上海晓途网络科技有限公司 | 因子生成方法、装置、计算机设备和存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1327341C (zh) * | 2004-01-13 | 2007-07-18 | 英业达股份有限公司 | 基板管理控制器的固件自动配置系统及方法 |
TWI595364B (zh) * | 2015-08-18 | 2017-08-11 | 神雲科技股份有限公司 | 自動修復映像檔的方法及伺服器系統 |
CN107835089B (zh) * | 2017-09-28 | 2020-06-02 | 华为技术有限公司 | 管理资源的方法和装置 |
-
2018
- 2018-06-26 CN CN201810674460.0A patent/CN108920175B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN108920175A (zh) | 2018-11-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110334075B (zh) | 基于消息中间件的数据迁移方法及相关设备 | |
US9582334B2 (en) | Resource management in MapReduce architecture and architectural system | |
US9274782B2 (en) | Automated computer application update analysis | |
US20070038987A1 (en) | Preprocessor to improve the performance of message-passing-based parallel programs on virtualized multi-core processors | |
KR102519580B1 (ko) | 다수 코어 처리를 위한 고속 동기화 장벽 기술 | |
US8495629B2 (en) | Virtual machine relocation system and associated methods | |
CN108920175B (zh) | 基板管理控制器bmc代码逻辑的实现方法及系统 | |
US9477485B2 (en) | Optimizing computer hardware usage in a computing system that includes a plurality of populated central processing unit (‘CPU’) sockets | |
US9176778B2 (en) | Background collective operation management in a parallel computer | |
US9055078B2 (en) | Token-based flow control of messages in a parallel computer | |
US9710575B2 (en) | Hybrid platform-dependent simulation interface | |
US20160378163A1 (en) | Clustering execution in a processing system to increase power savings | |
CN111177089B (zh) | 日志处理代码的生成方法和装置、计算机系统和存储介质 | |
CN106933646B (zh) | 一种创建虚拟机的方法及装置 | |
US11687356B2 (en) | Techniques for concurrently supporting virtual NUMA and CPU/memory hot-add in a virtual machine | |
CN110580240B (zh) | 用于电子设备的外围设备管理方法、装置、电子设备和介质 | |
US20200349304A1 (en) | Method, apparatus, device, and medium for implementing simulator | |
US10360137B2 (en) | Adaptive testing using dynamically determined system resources of a computer system | |
CN110704320A (zh) | 控件操作方法及装置 | |
US9785539B2 (en) | Application development via a multi-unit device | |
CN108959131B (zh) | 用于电子设备与外接设备连接的方法以及电子设备 | |
CN111163187B (zh) | 虚拟机网络端口的mac地址生成方法和装置 | |
CN111488584B (zh) | 生产环境的测试方法、装置、计算设备以及介质 | |
US20230350354A1 (en) | Method of optimizing execution of a function on a control system and apparatus for the same | |
US8914498B2 (en) | Calculating a checksum with inactive networking components in a computing system |
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 |