一种服务器无状态固件版本管理的方法与流程

文档序号:11285798阅读:874来源:国知局
一种服务器无状态固件版本管理的方法与流程

本发明涉及服务器监控管理领域,尤其涉及一种服务器在无需响应的状态下对于固件版本管理的方法。



背景技术:

随着用户对服务器性能需求的提高,用户对服务器计算节点的需求数量也越来越多。整机柜服务器在对节点的集成和管理上,与传统服务器相比具有很大的优势,并且在实际应用上也越来越广泛。

在整机柜服务器中,smc(systemmanagementcontroller)需要管理交换机、节点等多种设备,针对不同的设备或组件而言,每一种设备或组件一般都有各自的firmware(固件),在使用过程中,随着设备或组件的升级,又或是服务器的优化等情况,就会导致当前使用的固件版本与设备不匹配,导致整个服务器稳定性不足,这时候,就需要对不同设备的固件版本进行更新,从而保证该服务器的稳定运行。

目前,绝大多数的固件版本更新,都是从服务器外部获取最新的版本信息,在这种更新机制下,需要smc比对服务器外部版本库与服务器内部设备或组件当前运行的固件版本,并向服务器外部版本库发送固件下载请求,然后向设备和组件发送固件更新的命令并实现固件版本更新,这样一来,在版本更新过程中,smc、外界版本库、内部设备或组件这三者之间进行数据交互,smc从设备中实时查找固件版本文件并下载新的固件版本到设备中,由于smc与设备之间不断响应,服务器内部大量资源被占用,影响服务器进程。



技术实现要素:

为了解决上述问题,本发明提供了一种服务器无状态固件版本管理的方法,通过将服务器内部各种设备的固件版本进行预先存储,避免了服务器内部smc和设备之间在固件版本更新时的响应,解决了资源占用的情况。

本发明采用以下技术方案:

一种服务器无状态固件版本管理的方法,所述的方法包括以下步骤:

步骤1:在服务器结构内增加文件存储介质;

步骤2:定义文件路径及文件名称;

步骤3:获取所有的固件文件信息并分别存储到共享内存和文件存储介质;

步骤4:建立固件管理模块。

进一步的,在完成步骤4以后,该方法还包括步骤5:设置smc控制下的固件版本更新机制。

进一步的,步骤5中的固件版本更新机制包括以下步骤:

smc检测设备的固件版本过低时,向用户发送更新提示,当用户确认后,smc利用固件管理模块,通过网络、i2c或spi等方式给对应设备进行升级。

进一步的,步骤1中的文件存储介质设置在存储模块中,且该存储介质仅受控于smc,与其他设备没有任何连接关系;smc可以对该存储介质进行读取和写入操作。

进一步的,步骤2中,文件路径的定义标准为:工作路径+文件名称;

文件名称的定义标准为:固件类型+版本号,其中,版本号是各个固件厂商生产固件的时候提供的。

进一步的,所述步骤3的具体实现过程为:

1)smc底层增加获取固件列表的接口函数dir;

2)通过dir函数遍历所有文件夹下的所有文件;

3)读取的文件名放入共享内存,存放标准为:相同名称的固件存放在一起,并按照版本号从小到大的顺序存放;

4)利用文件路径将读取的文件存放在文件存储介质。

进一步的,所述的固件管理模块为smc控制下的web页面并具有查看功能、上传功能、导出功能、删除功能。

本发明的有益效果是:

1、利用共享内存存储固件文件名称,并设立文件路径,通过设置文件存储介质存储固件本本文件,smc可以直接通过共享内存中的文件名称判断该设备固件版本需不需要更新,并在需要更新时,同步更新文件存储介质和设备内的固件文件,这样一来,在文件更新之前的所有阶段,smc不需要与设备之间发生访问和响应,更新时直接替换设备内的固件文件即可,大大缩短了对于设备资源占有的时间,提升了服务器的性能。

2、通过设置固件管理模块,利用web页面直观且操作简易的特性,实现查看功能、上传功能、导出功能、删除功能,大大提升了对于固件文件的总能和管理能力。

附图说明

图1是本发明方法流程图;

图2是本发明文件名称定义示例图。

具体实施方式

如图1所示,一种服务器无状态固件版本管理的方法,所述的方法包括以下步骤:

步骤1:在服务器结构内增加文件存储介质,文件存储介质包括但不限于sd卡、硬盘等这个安装在服务器结构下的存储模块中,该存储介质仅受控于smc(systemmanagementcontroller),与其他设备没有任何连接关系,并且smc可以对该存储介质进行读取和写入操作。

步骤2:定义文件路径及文件名称,文件路径的定义标准为:工作路径+文件名称;文件名称的定义标准为:固件类型+版本号,其中,版本号是各个固件厂商生产固件的时候提供的。

文件名称定义的示例如图2所示,fw_version是总的文件夹的名称,下面显示了4种固件的名称,分别是switch、bios、bmc、raid,但是固件名称并不限于这四种,每一个固件名称下面均有若干固件文件名称,例如switch下面有switch_version_1/switch_version_2/switch_version_3等文件夹。

步骤3:获取所有的固件文件信息并分别存储到共享内存和文件存储介质,具体步骤为:

1)smc底层增加获取固件列表的接口函数dir;

2)通过dir函数遍历所有文件夹下的所有文件;

3)读取的文件名放入共享内存,由于仅仅存放文件名,因此共享内存是足够大的,并不需要进行存储方面的特别限制,不同名称的固件可以随意存储,仅仅需要将相同名称的固件存放在一起,并按照版本号从小到大的顺序存放;

4)利用文件路径将读取的文件存放在文件存储介质。

步骤4:建立固件管理模块,该固件管理模块为smc控制下的web页面并具有查看功能、上传功能、导出功能、删除功能。其中,查看功能可以通过发送ipmi命令从底层的共享内存获取版本号并分类显示。上传功能可以通过网络发送pc端固件到底层,并指定文件夹存储,然后更新共享内存;上传完成后,原有数据若被修改,就是修改以后的数据,没有被修改就不变。导出功能可以通过window.open直接导出选择的固件并在pc端本地存储。删除功能通过发送命令给底层,底层执行system函数实现文件删除,删除完成后,已经删除的原数据被完全删除,无法还原,以后想要使用的话,只能再次上传。

步骤5:设置smc控制下的固件版本更新机制,固件版本更新机制包括以下步骤:当smc检测到bmc、交换机等设备的固件版本过低时,能够提示用户并实现一键升级,即当用户确认后,将版本库中的固件通过网络、i2c或spi等方式给对应设备进行升级。

对于如何检测固件版本,本发明提供了一种思路:根据命名规则中版本号中的数字来检测。比如switch_version_1和switch_version_2中会去对比后面的数字1和2。raid的46.1.1.11和46.1.1.12这类的,会从前往后对比。就会先比较最前面的46,一样的话再对比46后面的1,又一样再对比后面的1,还一样再对比11和12。我们根据这样的对比原理,在用户上传了最新的版本之后,会去对比当前固件是不是最新的,不是的话就提醒用户更新。

对于版本库而言,版本库获取的新版本是用户自己手动上传的,上传新版本以后,版本库里既有新版本又有旧版本。每次用户上传完新版本,smc都会去通过版本号检测当前固件的版本是不是最新的,不是的话提示用户更新。同时,会有一个web页面显示所有的固件版本,用户可以在版本库一目了然的看到每个固件的版本名称,方便以后的管理。

应当指出,以上所述具体实施方式可以使本领域的技术人员更全面地理解本发明的具体结构,但不以任何方式限制本发明创造。因此,尽管说明书及附图和实施例对本发明创造已进行了详细的说明,但是,本领域技术人员应当理解,仍然可以对本发明创造进行修改或者等同替换;而一切不脱离本发明创造的精神和范围的技术方案及其改进,其均涵盖在本发明创造专利的保护范围当中。

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