一种BMC间的文件传输方法、装置、设备及存储介质与流程

文档序号:16328205发布日期:2018-12-19 06:02阅读:922来源:国知局
一种BMC间的文件传输方法、装置、设备及存储介质与流程

本发明涉及bmc技术领域,特别是涉及一种bmc间的文件传输方法、装置、设备及存储介质。

背景技术

bmc(boardmanagercontroller,基板管理控制器)负责服务器的资产信息显示、硬件监控、散热调控、系统配置、远程监控、日志收集、故障诊断、系统维护等重要功能。由于服务器功能的复杂性日益增强,采用一个bmc已经无法适应当前的需求。因此,现有技术中,会根据服务器的功能大小适当增加bmc的数量,例如,可以增加一个bmc,当然也可以增加多个。当服务器中存在至少两个bmc时,其中的一个为主bmc,其余的为从bmc。主bmc用于基本的服务器监控管理功能,从bmc只是监控某些设备,它只具备主bmc的一部分功能,这样设计的优点是可以降低硬件设计难度和成本,而且便于更好地复用其他产品的硬件。从bmc的所有信息展示以及用户对它的操作都是通过主bmc实现的,因为其不具有主bmc包含的供用户访问的网络接口。当前主bmc和从bmc之间的通信采用i2c总线(inter-integratedcircuit)实现。

由于主bmc和从bmc之间采用i2c总线通信,对于普通的通信数据来说是适用的,但是当二者之间需要进行文件传输时,例如需要升级从bmc的固件时,需要将相应地镜像文件由主bmc传输至从bmc,而当前的i2c总线通信无法实现文件的传输,最终导致从bmc无法进行固件升级。

由此可见,如何实现主bmc向从bmc发送文件是本领域技术人员亟待解决的问题。



技术实现要素:

本发明的目的是提供一种bmc间的文件传输方法、装置、设备及存储介质,用于实现主bmc向从bmc发送文件。

为解决上述技术问题,本发明提供一种bmc间的文件传输方法,应用于主bmc,包括:

获取传输至从bmc的文件;

通过i2c总线创建与所述从bmc的通信连接;

将所述文件划分成多个子部分以满足ipmi的传输要求;

读取各所述子部分,并将各所述子部分发送至所述从bmc以便所述从bmc对各所述子部分进行组合得到所述文件。

优选地,所述获取传输至从bmc的文件具体为:从内存buffer中获取传输至从bmc的文件。

优选地,所述通过i2c总线创建与所述从bmc的通信连接具体包括:

通过所述i2c总线创建与所述从bmc的通信会话;

向所述从bmc发送关于ipmi的测试命令以确定与所述从bmc的通信连接建立成功。

优选地,所述将所述文件划分成多个子部分具体为:将所述文件按照每128个字节进行划分得到多个所述子部分。

优选地,所述读取各所述子部分,并将各所述子部分发送至所述从bmc具体为:

读取第一个子部分,并将所述第一个子部分发送至所述从bmc;

判断是否接收到所述从bmc的返回值;

如果接收到所述返回值,则判断是否有剩余子部分;

如果有剩余子部分,则读取下一个子部分,将下一个子部分发送至所述从bmc,并返回所述判断是否接收到所述从bmc的返回值的步骤;

如果没有剩余子部分,则结束。

为解决上述技术问题,本发明还提供一种bmc间的文件传输装置,应用于主bmc,包括:

获取单元,用于获取传输至从bmc的文件;

创建单元,用于通过i2c总线创建与所述从bmc的通信连接;

划分单元,用于将所述文件划分成多个子部分以满足ipmi的传输要求;

发送单元,用于读取各所述子部分,并将各所述子部分发送至所述从bmc以便所述从bmc对各所述子部分进行组合得到所述文件。

为解决上述技术问题,本发明还提供一种bmc间的文件传输设备,包括存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现如上述所述的bmc间的文件传输方法的步骤。

为解决上述技术问题,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述所述的bmc间的文件传输方法的步骤。

为解决上述技术问题,本发明还提供一种bmc间的文件传输方法,应用于从bmc,包括:

响应由主bmc通过i2c总线发送的创建通信连接的请求;

通过ipmi接收所述主bmc发送的多个子部分,其中所述多个子部分具体为传输至所述从bmc的文件划分得到;

将得到的多个所述子部分组合得到所述文件。

为解决上述技术问题,本发明还提供一种bmc间的文件传输装置,应用于从bmc,包括:

响应单元,用于响应由主bmc通过i2c总线发送的创建通信连接的请求;

接收单元,用于通过ipmi接收所述主bmc发送的多个子部分,其中所述多个子部分具体为传输至所述从bmc的文件划分得到;

组合单元,用于将得到的多个所述子部分组合得到所述文件。

本发明所提供的bmc间的文件传输方法,用于实现主bmc向从bmc发送文件,首先获取传输至从bmc的文件,然后通过i2c总线创建与从bmc的通信连接,在通信连接创建好之后将文件划分成多个子部分以满足ipmi的传输要求;最后,读取各子部分,并将各子部分发送至从bmc以便从bmc对各子部分进行组合得到文件。由于将文件进行了划分,使得每个子部分都满足ipmi的传输要求,因此,在不具有网络接口的情况下能够实现文件的传输。此外,由于i2c总线以及ipmi都是现有的,因此,无需对硬件进行改进,大大节约了成本。

此外,本发明提供的bmc间的文件传输装置、设备及存储介质同样具有上述有益效果。

附图说明

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

图1为本发明实施例提供的一种应用于主bmc的文件传输方法的流程图;

图2为本发明实施例提供的一种主bmc将各子部分发送至从bmc的流程图;

图3为本发明实施例提供的一种应用于主bmc的文件传输装置的结构图;

图4为本发明实施例提供的一种应用于从bmc的文件传输方法的流程图;

图5为本发明实施例提供的一种应用于从bmc的文件传输装置的结构图。

具体实施方式

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

本发明的核心是提供一种bmc间的文件传输方法、装置、设备及存储介质,用于实现主bmc向从bmc发送文件。

为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。

图1为本发明实施例提供的一种应用于主bmc的文件传输方法的流程图。如图1所示,该方法包括:

s10:获取传输至从bmc的文件。

需要说明的是,本实施例中的文件种类不作限定,可以为镜像文件,镜像文件主要是用于从bmc完成固件升级,对于从bmc在得到镜像文件后如何升级为本领域技术人员熟知的技术,本实施例不再赘述。

由于主bmc具有供用户访问的网络接口,因此,当对从bmc进行文件传输时,例如从bmc需要固件升级时,则用户需要将从bmc所用的镜像文件上传至主bmc上,具体是主bmc的某一个目录(如/var/rom.ima),使用fread文件读函数将镜像文件读取到主bmc的内存buffer中。

s11:通过i2c总线创建与从bmc的通信连接。

当前主bmc和从bmc是通过i2c总线连接的,在具体实施中,当主bmc需要与从bmc进行通信时,才建立连接。

作为优选地实施方式,步骤s11具体为:

通过i2c总线创建与从bmc的通信会话;

向从bmc发送关于ipmi的测试命令以确定与从bmc的通信连接建立成功。

ipmi(intelligentplatformmanagementinterface,智能平台管理接口)。ipmi是一种开放标准的硬件管理接口规格,定义了嵌入式管理子系统进行通信的特定方法,具有两个主要优点:首先,此配置允许进行带外服务器管理;其次,操作系统不必负担传输系统状态数据的任务。这里的测试命令是通过ipmi发送的,测试命令主要是确定主bmc与从bmc的通信连接是否成功。

s12:将文件划分成多个子部分以满足ipmi的传输要求。

因为ipmi的传输要求是一次传输的数据的字节不能超过128,也就是说,每传输一次最多只能传输128个字节,而对于一个文件来说,通常是远远多余128个字节的,因此,需要将文件划分成多个子部分,每个子部分的字节数不能超128。可以理解的是,每个子部分包含的字节数可以是相同的,也可以是不同的,例如如果有1000个字节,可以分成8个子部分,前7个子部分都是128个字节,最后一个子部分是104个字节。

需要说明的是,对于一个文件来说,划分成多个子部分后,还需要从bmc对对个子部分进行组合,因此,每个子部分是有先后的,作为优选地实施方式是依据每个子部分在文件中的顺序依次传输。

s13:读取各子部分,并将各子部分发送至从bmc以便从bmc对各子部分进行组合得到文件。

在具体实施中,才bmc在得到每个子部分后,把每个子部分依次存储在其内存buffer中,在得到全部子部分后,使用fwrite文件写函数将内存buffer的所有子部分写到其系统的某一个目录中(如/var/rom.ima),从而得到文件。

本发明实施例提供的bmc间的文件传输方法,用于实现主bmc向从bmc发送文件,首先获取传输至从bmc的文件,然后通过i2c总线创建与从bmc的通信连接,在通信连接创建好之后将文件划分成多个子部分以满足ipmi的传输要求;最后,读取各子部分,并将各子部分发送至从bmc以便从bmc对各子部分进行组合得到文件。由于将文件进行了划分,使得每个子部分都满足ipmi的传输要求,因此,在不具有网络接口的情况下能够实现文件的传输。此外,由于i2c总线以及ipmi都是现有的,因此,无需对硬件进行改进,大大节约了成本。

在上述实施例的基础上,作为优选地实施方式,步骤s12中将文件划分成多个子部分具体为:将文件按照每128个字节进行划分得到多个子部分。

关于文件划分的说明可参见上文,当然上文中所述的划分方式只是其中的一种。具体计算过程为:

i=sizeof(buffer)/128(文件对应的全部字节数对128整除)计算需要循环读取的次数i,j=sizeof(buffer)%128(文件对应的全部字节数对128取余数)计算出最后不足128字节的那一组数据的字节数j。

由于预先计算出i和j,因此,主bmc就可以根据i和j来判断是否将全部子部分发送至从bmc。

图2为本发明实施例提供的一种主bmc将各子部分发送至从bmc的流程图。在上述实施例的基础上,作为优选地实施方式,读取各子部分,并将各子部分发送至从bmc具体为:

s20:读取第一个子部分,并将第一个子部分发送至从bmc。

s21:判断是否接收到从bmc的返回值,如果是,则进入s22。

s22:判断是否有剩余子部分,如果是,则进入s23,如果否,则结束。

s23:读取下一个子部分,将下一个子部分发送至从bmc,并返回s21。

文件是以大量的字节构成的,按照原始的字节的排列方式进行划分得到多个子部分,步骤s20中的第一个子部分是指原始排列在队首的一部分字节,例如,如果以128个字节划分为一个子部分(最后的一个子部分的字节数可能小于128)的话,则将文件划分后,排在队首的前128个字节就是第一个子部分,接下来的128个字节是第二个子部分,依次类推,直到最后一个子部分。

在具体实施中,若发送文件的过程中主bmc出现故障或从bmc出现故障,导致主bmc无法接收到从bmc发送的返回值,即s21的判断结果为否时,则还可以包括:输出异常提示信息。通过增加这一步骤,可以缩短主bmc的等待时间,防止出现宕机等现象。另外,当主bmc发送完全部子部分后,可以向从bmc发送一条结束指令,或者在最后一个子部分上添加接收标志位,使得从bmc确定接收到全部子部分,具体实施方式本发明不作限定。

图3为本发明实施例提供的一种应用于主bmc的文件传输装置的结构图。如图3所示,上述实施例中对于应用于主bmc的文件传输方法的实施例进行了详细描述,本发明还提供一种与该方法对应的装置,该装置同样也是应用于主bmc,包括:

获取单元10,用于获取传输至从bmc的文件。

创建单元11,用于通过i2c总线创建与从bmc的通信连接。

划分单元12,用于将文件划分成多个子部分以满足ipmi的传输要求。

发送单元13,用于读取各子部分,并将各子部分发送至从bmc以便从bmc对各子部分进行组合得到文件。

由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。

本发明实施例提供的bmc间的文件传输装置,用于实现主bmc向从bmc发送文件,首先获取传输至从bmc的文件,然后通过i2c总线创建与从bmc的通信连接,在通信连接创建好之后将文件划分成多个子部分以满足ipmi的传输要求;最后,读取各子部分,并将各子部分发送至从bmc以便从bmc对各子部分进行组合得到文件。由于将文件进行了划分,使得每个子部分都满足ipmi的传输要求,因此,在不具有网络接口的情况下能够实现文件的传输。此外,由于i2c总线以及ipmi都是现有的,因此,无需对硬件进行改进,大大节约了成本。

上文从模块化功能实体的角度分别对本发明实施例中的bmc间的文件传输方法进行了描述,下面从硬件处理的角度对本发明实施例中的bmc间的文件传输设备进行详细描述。本发明还提供一种硬件设备。具体是一种bmc间的文件传输设备,包括存储器,用于存储计算机程序;

处理器,用于执行计算机程序时实现上述实施例所述的bmc间的文件传输方法的步骤。

可以理解的是,设备部分的实施例与方法部分的实施例相互对应,因此设备部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。

本发明实施例提供的bmc间的文件传输设备,用于实现主bmc向从bmc发送文件,首先获取传输至从bmc的文件,然后通过i2c总线创建与从bmc的通信连接,在通信连接创建好之后将文件划分成多个子部分以满足ipmi的传输要求;最后,读取各子部分,并将各子部分发送至从bmc以便从bmc对各子部分进行组合得到文件。由于将文件进行了划分,使得每个子部分都满足ipmi的传输要求,因此,在不具有网络接口的情况下能够实现文件的传输。此外,由于i2c总线以及ipmi都是现有的,因此,无需对硬件进行改进,大大节约了成本。

本发明还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述实施例所述的bmc间的文件传输方法的步骤。

由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。

在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,用于在执行存储的程序时实现上述方法。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

本发明实施例提供的计算机存储介质存储有bmc间的文件传输方法的应用程序,用于实现主bmc向从bmc发送文件。该方法首先获取传输至从bmc的文件,然后通过i2c总线创建与从bmc的通信连接,在通信连接创建好之后将文件划分成多个子部分以满足ipmi的传输要求;最后,读取各子部分,并将各子部分发送至从bmc以便从bmc对各子部分进行组合得到文件。由于将文件进行了划分,使得每个子部分都满足ipmi的传输要求,因此,在不具有网络接口的情况下能够实现文件的传输。此外,由于i2c总线以及ipmi都是现有的,因此,无需对硬件进行改进,大大节约了成本。

图4为本发明实施例提供的一种应用于从bmc的文件传输方法的流程图。上述多个实施例均是站在主bmc的角度描述bmc间的文件传输,本发明还提供一种bmc间的文件传输方法,应用于从bmc。如图4所示,该方法包括:

s30:响应由主bmc通过i2c总线发送的创建通信连接的请求。

s31:通过ipmi接收主bmc发送的多个子部分,其中多个子部分具体为传输至从bmc的文件划分得到。

s32:将得到的多个子部分组合得到文件。

需要说明的是,对于从bmc来说,其主要是配合主bmc的执行操作,而对于主bmc的各步骤参见上文的描述。

s31中,从bmc是依次得到多个子部分,每个子部分都需要满足ipmi的传输要求,对于ipmi来说,在传输数据时,不能超过128个字节,否则无法完成传输。因此,对于任意一个子部分来说,其字节数都是不超过128的。可以理解的是,每个子部分的字节数可以是相同的,也开始是不同的,例如将一个文件分成i个均包含128个字节的子部分和一个包含j个字节的子部分,那么对于从bmc来说,其接收到的子部分都是与主bmc划分得到的子部分是对应的。将多个子部分按照先后顺序组合就可以得到一个完整的文件。

需要说明的是,如果主bmc是按照文件中原始的字节排列发送的各子部分,那么对于从bmc来说,需要记录其得到的每个子部分的顺序,或者按照接收到的顺序将得到的各子部分按照顺序排列,否则在进行组合时,各子部分顺序一旦混乱,得到的文件就是错误的,无法完成特定的功能,例如无法完成固件升级。

考虑到读取速度的问题,从bmc可以将得到的各子部分均存储在内存buffer中。

由于从bmc中的方法与主bmc中的方法是对应的,因此,对于从bmc的方法不再过多赘述,请参见上文。

本发明实施例提供的应用于从bmc的bmc间的文件传输方法,首先响应由主bmc通过i2c总线发送的创建通信连接的请求,然后通过ipmi接收主bmc发送的多个子部分,多个子部分是将文件划分之后得到的,当接收到全部子部分后将全部子部分组合得到一个完整的文件。由于将文件进行了划分,使得每个子部分都满足ipmi的传输要求,因此,在不具有网络接口的情况下能够实现文件的传输。此外,由于i2c总线以及ipmi都是现有的,因此,无需对硬件进行改进,大大节约了成本。

最后,本发明实施例还提供一种应用于从bmc的bmc间的文件传输装置。图5为本发明实施例提供的一种应用于从bmc的文件传输装置的结构图。包括:

响应单元20,用于响应由主bmc通过i2c总线发送的创建通信连接的请求;

接收单元21,用于通过ipmi接收主bmc发送的多个子部分,其中多个子部分具体为传输至从bmc的文件划分得到;

组合单元22,用于将得到的多个子部分组合得到文件。

本发明实施例提供的应用于从bmc的bmc间的文件传输装置,首先响应由主bmc通过i2c总线发送的创建通信连接的请求,然后通过ipmi接收主bmc发送的多个子部分,多个子部分是将文件划分之后得到的,当接收到全部子部分后将全部子部分组合得到一个完整的文件。由于将文件进行了划分,使得每个子部分都满足ipmi的传输要求,因此,在不具有网络接口的情况下能够实现文件的传输。此外,由于i2c总线以及ipmi都是现有的,因此,无需对硬件进行改进,大大节约了成本。

需要说明的是,上述应用于从bmc的bmc间的文件传输方法对应的应用程序同样可以以计算机存储介质的形式存储,具体说明不再赘述。

以上对本发明所提供的bmc间的文件传输方法、装置、设备及存储介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

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

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