一种集中固件更新方法

文档序号:9489302阅读:446来源:国知局
一种集中固件更新方法
【技术领域】
[0001]本发明涉及服务器管理技术领域,尤其涉及一种集中固件更新方法。
【背景技术】
[0002]刀片服务器和整机柜服务器由于具有刀片密度高、部署灵活快速的优点,在互联网领域得到了广泛的应用。
[0003]服务器的每个刀片上往往都有一颗BMC (基板管理控制器Baseboard ManagementController )用于对服务器进行管理,这些BMC又被管理载板上的SMC集中管理并对外提供管理访问控制接口,如SMC的Web管理界面。传统的逐个单独更新BMC固件的方式在具有多个刀片的服务器的操作中已经显得繁琐低效,不再适用。为了解决这一问题,已有多个方案被提出,但这些方案多需要第三方工具软件的支持,如TFTP服务器、DHCP服务器和SSH客户端等。
[0004]SMC是系统管理控制器(System Management Controller)的简称,指的是对一个刀片服务器或者机柜服务器的整机进行集中的系统的管理的管理控制器,BMC和SMC本质上是一样的,都是提供管理功能的管理控制器,但BMC的管理范围如其名称所示局限于其所在的板卡,SMC则负责整个服务器系统的管理,相对来说SMC的处理能力更强,功能也更多,它既要收集各个BMC所收集的健康信息并对BMC进行控制,又要监控机箱电源和风扇,还要对外提供访问接口,可以认为SMC是管理的管理,SMC的称呼在国内做服务器管理的开发人员中是一种比较通用的约定俗成的叫法,意义也比较明确,SMC类似于天蝎项目整机柜服务器解决方案技术规范中的RMC (机柜管理控制器,Rack Management Controller),但管理的BMC的规模相对RMC可以较小。
[0005]现有技术下的具有多个刀片的服务器,有一个管理载板和若干个计算单元,及机箱电源、风扇等必备组件。管理载板上放置一颗SMC,每个计算单元上各放置一颗BMC。
[0006]在目前的更新方案中,无论SMC还是BMC都基于Web进行固件更新,固件文件的上传通过Web服务器提供的文件上传功能实现,如附图1所示。Web的Prepare Flash Area、Upload Flash File、Verify Firmware Image、Start Image Flash和Get Flash Progress操作通过Web接口调用底层固件刷新库,进而通过本机进程间通信引起固件刷新进程的相应操作,最终完成SMC或者BMC的固件更新。这种固件更新方案是逐个SMC或者BMC进行的。
[0007]如何简单高效的对服务器中多个刀片上的BMC进行固件更新是一个需要解决的技术问题。
[0008]

【发明内容】

[0009]为了解决现有技术的问题,本发明提供了一种集中固件更新方法,在不使用任何第三方工具软件的情况下,通过操作SMC的Web管理界面,借助SMC的固件中继作用,实现对多个BMC固件的同时集中更新,避免单独对某一个BMC进行分散式的固件更新的繁琐和低效,同时不存在现有批量更新固件的技术方案中对第三方工具软件的依赖,以提高固件更新效率。
[0010]本发明所采用的技术方案如下:
2、一种集中固件更新方法,包括以下步骤:
P、选择需要更新固件的BMC ;
Q、SMC发送准备命令给BMC,BMC及SMC分别执行所述的准备命令;
R、使用SMC的Web服务器上传固件文件到SMC,同时SMC向BMC发送接收命令;
S、BMC接收所述的固件文件,并反馈可以接收的信息给SMC ;
T、SMC判断是否存在可以接收固件文件的BMC,如果存在,则读取固件尺寸比数据块并向收到接收命令回复的BMC分别发送;
U、发送完固件尺寸比数据块后,经过延时,等待BMC接收并写入此固件尺寸比数据块后,再读取新的固件尺寸比数据块并分别发送,直到发送完毕;
V、BMC接收固件文件的固件尺寸比数据块,解析固件尺寸比数据块结尾的标志位;
W、BMC完成固件接收并关闭固件文件后,向SMC回复已接收完毕;
X、如果BMC接收固件文件完毕,则SMC向BMC发送校验命令;
Y、BMC执行校验命令,如果校验成功,则向SMC回复可以进行固件刷新;
Z、SMC获取BMC执行校验命令的状态;
AA、如果BMC校验成功,则SMC向BMC发送开始命令;
BB、BMC执行开始命令进入真正的固件刷新阶段,如果刷新完毕,则向SMC回复固件已刷新完毕并自动重启;
CC、SMC向BMC定时发送获取命令以获取BMC执行开始命令后BMC的固件刷新进度; DD、如果所有的BMC已完成固件刷新,则SMC自动重启。
[0011]方法具体包括:
(1)服务器上电,待整个管理系统完成启动后登录SMC的Web管理界面;
(2)在BMC固件更新页面选择要更新固件的BMC,进入集中固件更新阶段;
(3)SMC发送准备命令到被选中的BMC ;
(4)BMC执行所述准备命令为接收和刷新固件做准备,执行完毕后BMC向SMC回复已完成准备;
(5)SMC获取BMC执行所述准备命令的状态;
(6)在BMC完成准备操作后,SMC也执行所述的准备命令,以释放一部分RAM空间;
(7)在SMC完成所述准备命令操作后,选择BMC固件,使用SMC的Web服务器提供的文件上传功能上传BMC固件到SMC ;
(8)SMC端使用Web服务器的文件上传功能上传固件完毕后,SMC向BMC发送接收命令;
(9)BMC接收到所述的接收命令后,如果已成功执行所述的准备命令,则向SMC回复可以接收固件文件;
(10)SMC获取BMC是否可以接收固件文件的信息,若存在可以接收固件文件的BMC^lJSMC读取固件尺寸比数据块并向收到接收命令回复的BMC分别发送:
发送完固件尺寸比数据块后,经过延时,等待BMC接收并写入此固件尺寸比数据块后,再读取新的固件尺寸比数据块并分别发送,直到发送完毕;
(11)BMC接收固件文件的固件尺寸比数据块,解析固件尺寸比数据块结尾的标志位; BMC完成固件接收并关闭固件文件后,向SMC回复已接收完毕;
(12)SMC获取BMC执行接收命令的状态;
(13)如果BMC接收固件文件完毕,则SMC向BMC发送校验命令;
(14)BMC执行校验命令,如果校验成功,则向SMC回复可以进行固件刷新;
(15)SMC获取BMC执行校验命令的状态;
(16)如果BMC校验成功,则SMC向BMC发送开始命令;
(17)BMC执行开始命令进入真正的固件刷新阶段,如果刷新完毕,则向SMC回复固件已刷新完毕并自动重启;
(18)SMC向BMC定时发送获取命令以获取BMC执行开始命令后BMC的固件刷新进度;
(19)如果所有的BMC已完成固件刷新,则SMC自动重启。
[0012]步骤(7)中:
在SMC完成准备命令操作后,选择固件后使用SMC的Web服务器提供的文件上传功能上传BMC固件到SMC,存储到/dev/shm挂载的/mnt目录下,文件名为rom.1ma,SMC端不进行固件的校验。
[0013]步骤(10)中所述的固件尺寸比数据块的获取方法是:SMC读取/mnt/rom.1ma的一个尺寸为整个固件尺寸的整数分之一生成所述的固件尺寸比数据块。
[0014]当未读到文件末尾时,发送内容为这个固件尺寸比数据块及固件尺寸比数据块结尾的未发送完毕标志位;
当已读到文件末尾时,由于设置的读取数据块尺寸为整个固件尺寸的整数分之一,因此readO函数返回的实际读取字节为0,为了 BMC接收端处理数据的一致性,使发送内容为相同尺寸的未经赋值的数据块及数据块结尾的已发送完毕标志位。
[0015]步骤(11)中:
若标志位指示未发送完毕,则将去除标志位的数据块写入BMC端的固件文件;
若标志位指示已发送完毕,则不再向BMC端的固件文件中写入任何数据,并关闭文件;BMC端的固件文件存储在与SMC端类似的位置,即将接收到的数据块存储为BMC端/dev/shm挂载的/mnt目录下的rom.1ma文件。
[0016]与现有技术相比,本发明的方案有如下特点:
(1)整个固件更新过程由单一的管理控制器执行所有操作的方式改为“SMC集中管理,BMC具体执行”的方式;
(2)SMC端保留Web对外管理界面,通过修改Web接口、固件刷新库和固件刷新进程为BMC端的操作提供管理和支持:
Web的文件上传功能和扩展固件刷新库中的文件发送功能模块相结合起到了 SMC对BMC固件的中继作用,文件发送功能模块的主要作用是高效可靠地分发BMC固件;
(3)BMC端无需对外管理界面的支持,因此不需要Web服务器,通过修改固件刷新进程进行具体的固件更新操作:
(4)沟通SMC和BMC的桥梁是不同主机进程间通彳目,米用Socket实现。
[0017]综上所述,本发明提供的技术方案带来的有益效果是: 在不借助第三方工具软件的情况下,只通过SMC的Web操作将SMC端经Web上传的BMC固件高效可靠地分发到各个BMC并完成固件刷新操作。
【附图说明】
[0018]为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0019]图1为现有技术下的固件更新方案的流程框图;
图2为本发明的一种集中固件更新方法的流程框图。
【具体实施方式】
[0020]为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
[0021]实施例一
如附图2所示,一种集中固件更新方法,包括以下步骤:
(1)服务器上电,待整个管理系统完成启动后登录SMC的Web管理界面;
(2)在BMC固件更新页面选择要更新固件的BMC,点击更新BMC固件按钮进入集中固件更新阶段;
(3)SMC发送Prepare Flash Area命令到被选中的BMC ;
(4)BMC执行PrepareFlash Area命令为接收和刷新固件做准备,主要的操作包括:kill固件更新无关的进程,rmmod所有的模块,unmount固件更新无关的文件系统,挂载/dev/shm设备到/mnt目录并格式化为tmpfs文件系统等;执行完毕后BMC向SMC回复已完成准备;
(5)SMC获取BMC执行Pr印are Flash Area命令的状态;
(6)在BMC 完成 Prepare Flash Area 操作后,SMC 也执彳丁 Prepare Flash Area,与 BMC执行此操作不同的是,BMC是为了最终执行固件更新操作,而SMC只是为了接收Web上传的BMC固件而释放一部分RAM空间;
(7)在SMC完成PrepareFlash Area操作后,弹出选择BMC固件的对话框,选择固件后使用SMC的Web服务器提供的文件上传功能上传BMC固
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1