一种基于USB存储设备的服务器固件更新装置及方法与流程

文档序号:26003517发布日期:2021-07-23 21:21阅读:93来源:国知局
一种基于USB存储设备的服务器固件更新装置及方法与流程

本发明涉及服务器固件更新领域,尤其是涉及一种基于usb存储设备的服务器固件更新装置及方法。



背景技术:

伴随云计算应用的发展,信息化逐渐覆盖到社会的各个领域。云计算时代需要更多数量的服务器参与运算、存储工作,目前我国已有千万台服务器在数据中心运行。如此庞大的服务器数量在线运行,要求服务器在具备更好的计算性能、良好的运行稳定性的同时,也需要支持便捷的维修保养方式。进行服务器维保时,需要尽量减少运维时间、成本开支、降低操作风险,尽快恢复服务器的上线运行。

在服务器维保中,更新bmc(baseboardmanagementcontroller,基板管理控制器)固件或bios(basicinputoutputsystem,基本输入输出系统)固件是较为常见的操作,也是风险较高的操作。更新固件时,一旦发生异常断电或选用错误的固件,大概率会损坏当前flash(闪存)中的固件,导致服务器无法启动。此时,只有将服务器下架并返厂,拆焊flash芯片并离线烧录新的固件,才能恢复服务器工作。这种使用拆焊flash芯片和烧录的方法,具有操作不够便捷、风险较高、人力/物力及时间成本较高等缺点,因此急切需要一种快捷简便的离线更新固件方式,解决这个难题。

通常现有服务器固件更新方式有两种,烧录器离线烧录固件flash芯片和带内/带外在线更新。烧录器烧录固件flash芯片,需要将flash芯片从板卡上拆焊取下,放入专用flash烧录器进行烧录。带内/带外在线更新方式,本质是通过bmc芯片将固件写入flash芯片,如图1所示,bmc可烧写bmc固件flash;bmc芯片通过命令控制fpga(fieldprogrammablegatearray,现场可编程逻辑门阵列)切换spi(serialperipheralinterface,串行外设接口)switch芯片(切换芯片)通道之后,也可以烧写bios固件flash。

有些特殊的场景,比如固件更新时异常掉电、固件flash中更新了错误信息等情况,会导致固件损坏或错误,此时无法进行在线更新,只能通过烧录器烧录固件flash芯片。由于烧录器烧录固件的方式,必须需要返厂拆焊flash芯片,操作不够便捷、成本高、对维护人员技能要求高、并且费时较长等缺点,运输和拆焊时也会引入较高的装置损坏风险,不利于服务器芯片离线更新的效率。



技术实现要素:

本发明为了解决现有技术中存在的问题,创新提出了一种基于usb存储设备的服务器固件更新装置及方法,有效解决由于烧录器烧录固件的方式,必须需要返厂拆焊flash芯片,操作不够便捷、成本高、对维护人员技能要求高、并且费时较长的问题,降低了运输和拆焊时较高的装置损坏风险,提高服务器芯片离线更新的效率以及安全性,降低烧录成本。

本发明第一方面提供了一种基于usb存储设备的服务器固件更新装置,包括:多个待更新的服务器芯片、所述芯片的固件存储器、可编程逻辑器件、usb存储设备;

所述芯片通过可编程逻辑器件与对应的所述固件存储器通信连接,所述usb存储设备与可编程逻辑器件通信连接,用于提供所述芯片更新时的固件版本,所述固件版本与所述芯片的信息相对应;

所述可编程逻辑器件用于在所述芯片更新时,切断所述芯片与对应的所述固件存储器通信连接,获取并校验usb存储设备中对应的所述固件版本,并根据校验成功的所述固件版本对所述芯片进行更新。

可选地,多个待更新的服务器芯片包括bmc、pch芯片,pch芯片中存储有待更新的bios,用于通过pch芯片更新bios。

可选地,根据校验成功的所述固件版本对所述芯片进行更新具体是:可编程逻辑器件校验成功的所述固件版本后,将所述固件版本写入对应的所述固件存储器;控制对应的所述固件存储器与所述芯片重新进行通信连接;控制所述芯片复位,加载对应的所述固件存储器中的更新后的所述固件版本。

可选地,还包括uid灯以及uid按键,所述uid灯与可编程逻辑器件通信连接,用于指示所述芯片更新情况;所述uid按键用于在服务器关机状态下,满足预设条件时进行所述芯片更新。

本发明第二方面提供了一种基于usb存储设备的服务器固件更新方法,基于本发明第一方面所述的基于usb存储设备的服务器固件更新装置的基础上实现的,包括:

可编程逻辑器件根据服务器芯片更新预设条件判断是否进行服务器芯片更新;

如果进行更新,可编程逻辑控制器切断与所述芯片之间的通信连接,独占usb存储设备接口;

获取并校验usb存储设备中对应的所述芯片更新时的固件版本,并根据校验成功的所述固件版本对所述芯片进行更新。

可选地,服务器芯片更新预设条件具体是:

在服务器关机状态下,uid按键次数满足预设要求,进行服务器芯片更新;或,

在服务器开机时,预设时间内未检测到有效的服务器芯片启动完成信号,进行服务器芯片更新。

可选地,根据校验成功的所述固件版本对所述芯片进行更新具体包括:

可编程逻辑器件校验成功的所述固件版本后,将所述固件版本写入对应的所述固件存储器;

控制对应的所述固件存储器与所述芯片重新通信连接;

控制所述芯片复位,加载对应的所述固件存储器中的更新后的所述固件版本。

进一步地,可编程逻辑器件校验成功的所述固件版本具体是:可编程逻辑器件从usb存储设备中获取到对应的所述芯片更新时的固件版本,进行md5值计算后,得出第一校验码与usb存储设备中存储的第二校验码比对,比对一致,则校验成功,如果不一致,则校验失败。

可选地,多个待更新的服务器芯片包括bmc、pch芯片,pch芯片中存储有待更新的bios,用于通过pch芯片更新bios。

可选地,还包括:

通过uid灯对服务器芯片更新情况进行指示。

本发明采用的技术方案包括以下技术效果:

1、本发明有效解决由于烧录器烧录固件的方式,必须需要返厂拆焊flash芯片,操作不够便捷、成本高、对维护人员技能要求高、并且费时较长的问题,降低了运输和拆焊时较高的装置损坏风险,提高服务器芯片离线更新的效率以及安全性,降低烧录成本。

2、本发明技术方案仅需一个usb存储设备即可实现芯片更新,操作灵活便捷。

3、本发明技术方案中usb存储设备中存储的固件版本与服务器芯片信息相对应,保证准确找到usb存储设备中的目标固件版本,避免无法更新或者更新错误;获取目标固件版本后,需要进行校验,进一步提高了目标固件版本的完整性,避免无法更新芯片。

4、本发明技术方案中还包括uid灯以及uid按键,可以指示服务器芯片更新情况,操作简单且直观;uid按键用于在服务器关机状态下,满足预设条件时进行服务器芯片更新,避免了服务器关机状态下无法进行芯片更新的问题,提高了服务器芯片更新的可靠性。

应当理解的是以上的一般描述以及后文的细节描述仅是示例性和解释性的,并不能限制本发明。

附图说明

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

图1为现有技术中服务器芯片固件更新装置的结构示意图;

图2为本发明方案中实施例一装置的结构示意图;

图3为本发明方案中实施例二方法的一流程示意图;

图4为本发明方案中实施例二方法中步骤s4的流程示意图;

图5为本发明方案中实施例二方法的另一流程示意图。

具体实施方式

为能清楚说明本方案的技术特点,下面通过具体实施方式,并结合其附图,对本发明进行详细阐述。下文的公开提供了许多不同的实施例或例子用来实现本发明的不同结构。为了简化本发明的公开,下文中对特定例子的部件和设置进行描述。此外,本发明可以在不同例子中重复参考数字和/或字母。这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施例和/或设置之间的关系。应当注意,在附图中所图示的部件不一定按比例绘制。本发明省略了对公知组件和处理技术及工艺的描述以避免不必要地限制本发明。

实施例一

如图2所示,本发明提供了一种基于usb存储设备的服务器固件更新装置,包括:多个待更新的服务器芯片1、芯片的固件存储器2、可编程逻辑器件3、usb存储设备4;

每个待更新的服务器芯片1通过可编程逻辑器件3与对应的固件存储器2通信连接,usb存储设备4与可编程逻辑器件3通信连接,用于提供服务器芯片1更新时的固件版本,固件版本与服务器芯片1信息相对应;可编程逻辑器件3用于在服务器芯片1更新时,切断服务器芯片1通过可编程逻辑器件3与对应的固件存储器2通信连接,获取并校验usb存储设备4中对应的服务器芯片1更新的固件版本,并根据校验成功的服务器芯片1更新的固件版本对服务器芯片1进行更新。

具体地,多个待更新的服务器芯片1包括bmc11、pch芯片12,pch芯片12中存储有待更新的bios,用于通过pch(platformcontrollerhub,集成南桥)芯片12更新bios。对应的存储待更新bmc芯片固件的存储器2为bmc固件flash21,对应的存储待更新pch芯片中bios固件的存储器2为bios固件flash22。

进一步地,根据校验成功的服务器芯片1更新的固件版本对服务器芯片1进行更新具体是:可编程逻辑器3件校验成功的服务器芯片1更新的固件版本后,将服务器芯片1更新的固件版本写入对应的固件存储器2;控制对应的固件存储器2与服务器芯片1重新进行通信连接;控制服务器芯片1复位,加载对应的固件存储器2中的更新后的固件版本。

具体地,bmc芯片11、bmc固件flash21、pch芯片12和bios固件flash22各自独立连接到可编程逻辑器件3。由可编程逻辑器件3内部逻辑控制bmc/pch芯片与其固件flash是否连通。

通过usb接口将usb存储设备4连接到可编程逻辑器件3,可编程逻辑器件3的另一路usb接口与pch芯片12连接。usb接口默认由可编程逻辑器件3直接管理,当服务器正常启动时,可编程逻辑器件3内部逻辑会连通usb接口到pch芯片,作为服务器的常规usb设备接口。

在更新固件时,为了保证准确找到usb存储设备4中的目标固件版本(服务器芯片1更新的固件版本),固件版本需要尽量避免无法更新或者更新错误。优选的采用在usb存储设备4中的特定路径下放置特定名称的固件版本和md5校验码,详细如下:在usb存储设备4中有两个(与待更新服务器芯片数量相对应)特定路径的文件夹,分别用于存放bmc固件版本和bios固件版本,固件版本的名字可以依据服务器的机型来命名。可编程逻辑器件3只会在固定的路径下找到对应服务器机型名字的固件版本,其他固件版本均会判为无效固件版本。固件版本进行md5计算后的第一校验码与usb存储设备4存放的第二校验码不同时,也会判为无效的固件;只有当第一校验码与第二校验码比对一致时,校验成功(通过)。

具体地,可以使用特殊的固件存放路径、固件名称和固件完整性校验码:在usb存储设备根目录下,建立2个(与待更新服务器芯片数量相同)特定名称的文件夹,分别存放bmc固件版本、bmc固件版本的第二校验码,bios固件版本、bios固件版本的第二校验码。服务器芯片信息可以包括但不限于服务器芯片厂商名称、机型信息等。进一步地,“厂商名称_bmc_fw”文件夹下存放“厂商名称_机型编码_bmc_fw_版本.bin”及对应第二校验码“xxx.txt”;“厂商名称_bios_fw”文件夹下存放“厂商名称_机型编码_bios_fw_版本.bin”及对应第二校验码“xxx.txt”。

可编程逻辑器件3会在固定的路径下找到对应服务器机型名字的固件版本,其他固件版本均会判为无效固件版本。在名称字段中,可编程逻辑器件3只会判断“厂商名称_机型编码_bios_fw_”字段,会忽略名称中的“版本”字段。这样在固件名称中可以保留对应的版本信息,方便用户进行版本管理。

服务器芯片更新触发方式有两种,一种是服务器关机状态下,通过多次(uid按键次数满足预设要求)按下服务器面板上的uid按键;另一种是在服务器开机时,可编程逻辑器件3没有检测到有效的启动完成信号boot_ok。认为bmc芯片或pch芯片对应的flash中的固件已经损坏,需要进行更新。

当进入芯片更新流程之后,可编程逻辑器件3通过内部逻辑切换,独占控制usb接口和固件存储器2。可编程逻辑器件3从usb存储设备4内固定路径下找到对应的烧录固件,并进行完成性校验(如md5)。校验成功之后,会将待更新的固件版本写入固件存储器2。然后可编程逻辑器件3切换内部逻辑,使固件存储器2连通到对应的服务器芯片1。最后可编程逻辑器件3发送reset(复位)信号复位服务器芯片1,此时服务器芯片1(bmc/pch芯片)会重新启动,加载固件存储器2(bmc固件flash21bios固件flash22)中的更新后的固件版本。

进一步地,一种基于usb存储设备的服务器固件更新装置,还包括uid灯5以及uid按键6,uid灯5与可编程逻辑器件3通信连接,用于指示服务器芯片1更新情况;uid按键6用于在服务器关机状态下,满足预设条件时进行服务器芯片1更新。

需要说明的是,本发明技术方案中usb存储设备可以是u盘,可编程逻辑器件优选为fpga,也可以是其他设备或器件,本发明在此不做限制。

本发明有效解决由于烧录器烧录固件的方式,必须需要返厂拆焊flash芯片,操作不够便捷、成本高、对维护人员技能要求高、并且费时较长的问题,降低了运输和拆焊时较高的装置损坏风险,提高服务器芯片离线更新的效率以及安全性,降低烧录成本。

本发明技术方案仅需一个usb存储设备即可实现芯片更新,操作灵活便捷。

本发明技术方案中usb(universalserialbus,通用的串行通信总线)存储设备中存储的固件版本与服务器芯片信息相对应,保证准确找到usb存储设备中的目标固件版本,避免无法更新或者更新错误;获取目标固件版本后,需要进行校验,进一步提高了目标固件版本的完整性,避免无法更新芯片。

本发明技术方案中还包括uid(unitidentificationlight,单元识别灯,服务器产品中用于指示产品的物理位置)识别灯以及uid按键,可以指示服务器芯片更新情况,操作简单且直观;uid按键用于在服务器关机状态下,满足预设条件时进行服务器芯片更新,避免了服务器关机状态(shutdown,关机状态)下无法进行芯片更新的问题,提高了服务器芯片更新的可靠性。

实施例二

如图3所示,本发明技术方案还提供了一种基于usb存储设备的服务器固件更新方法,基于实施例一的基础上实现的,包括:

s1,可编程逻辑器件根据服务器芯片固件更新预设条件判断是否进行服务器芯片更新;如果判断结果为是,则执行步骤s2;如果判断结果为否,则执行步骤s3;

s2,进行服务器芯片更新,可编程逻辑控制器切断与服务器芯片之间的通信连接,独占usb存储设备接口;

s3,不进行服务器芯片固件更新;

s4,获取并校验usb存储设备中对应的服务器芯片更新的固件版本,并根据校验成功的固件版本对服务器芯片进行更新。

其中,在步骤s1中,服务器芯片固件更新预设条件具体是:

在服务器关机状态下,uid按键次数满足预设要求(例如,在30秒内连续按下uid按键10次及以上),进行服务器芯片更新;或,

在服务器开机时,预设时间(30s内)内未检测到有效的服务器芯片启动完成信号(bmc/biosboot_ok信号),认为服务器芯片中固件损坏,进行服务器芯片更新。满足任一条件,进行服务器芯片更新。

在步骤s2中,可编程逻辑器件断开与pch芯片间的usb接口的通信连接,并将usb接口独占。然后重新进行usb设备枚举,识别出usb存储设备(即u盘)。可编程逻辑器件(即fpga)独占控制bmc固件flash(或bios固件flash)。通过内部逻辑断开bmc固件flash与bmc芯片之间的spi通道(或bios固件flash与pch芯片之间的spi通道)。

在步骤s4中,如图4所示,具体包括:

s41,可编程逻辑器件获取并校验usb存储设备中对应的服务器芯片更新的固件版本;

s42,服务器芯片更新的固件版本校验成功后,将固件版本写入对应的固件存储器;

s43,控制对应的固件存储器与服务器芯片重新通信连接;

s44,控制服务器芯片复位,加载对应的固件存储器中的更新后的固件版本。

在步骤s41-s42中,通过usb接口将usb存储设备4连接到可编程逻辑器件3,可编程逻辑器件3的另一路usb接口与pch芯片12连接。usb接口默认由可编程逻辑器件3直接管理,当服务器正常启动时,可编程逻辑器件3内部逻辑会连通usb接口到pch芯片,作为服务器的常规usb设备接口。

在更新固件时,为了保证准确找到usb存储设备4中的目标固件版本,需要避免无法更新或者更新错误的固件。优选的采用在usb存储设备4中的特定路径下放置特定名称的固件版本和md5校验码,详细如下:在usb存储设备4中有两个(与待更新服务器芯片数量相对应)特定路径的文件夹,分别用于存放bmc固件版本和bios固件版本,固件版本的名字可以依据服务器的机型来命名。可编程逻辑器件3只会在固定的路径下找到对应服务器机型名字的固件版本,其他固件版本均会判为无效固件版本。固件版本进行md5计算后的第一校验码与usb存储设备4存放的第二校验码不同时,也会判为无效的固件;只有当第一校验码与第二校验码比对一致时,校验成功(通过)。

具体地,可以使用特殊的固件存放路径、固件名称和固件完整性校验码:在usb存储设备根目录下,建立2个(与待更新服务器芯片数量相同)特定名称的文件夹,分别存放bmc固件版本、bmc固件版本的第二校验码,bios固件版本、bios固件版本的第二校验码。服务器芯片信息可以包括但不限于服务器芯片厂商名称、机型信息等。进一步地,“厂商名称_bmc_fw”文件夹下存放“厂商名称_机型编码_bmc_fw_版本.bin”及对应第二校验码“xxx.txt”;“厂商名称_bios_fw”文件夹下存放“厂商名称_机型编码_bios_fw_版本.bin”及对应第二校验码“xxx.txt”。

可编程逻辑器件3会在固定的路径下找到对应服务器机型名字的固件版本,其他固件版本均会判为无效固件版本。在名称字段中,可编程逻辑器件3只会判断“厂商名称_机型编码_bios_fw_”字段,会忽略名称中的“版本”字段。这样在固件名称中可以保留对应的版本信息,方便用户进行版本管理。

可编程逻辑器件校验成功的服务器芯片更新的固件版本具体是:可编程逻辑器件从usb存储设备中获取到对应的服务器芯片更新的固件版本,进行md5值(message-digestalgorith,信息摘要算法,一种被广泛使用的密码散列函数)计算后,得出第一校验码与usb存储设备中存储的第二校验码比对,比对一致,则校验成功,如果不一致,则校验失败。

在步骤s42-s43中,可编程逻辑器件将校验成功的服务器芯片更新的固件版本通过spi接口写入对应的固件存储器(bmc固件flash或bios固件flash);然后可编程逻辑器件恢复服务器芯片(bmc或pch)与对应的固件存储器(bmc固件flash或bios固件flash)之间的连接。待校验成功的固件版本完整写入对应的固件存储器之后,可编程逻辑器件切换spi通道,使对应的固件存储器(bmc固件flash或bios固件flash)连通到服务器芯片(bmc或pch)。

在步骤s1-s4中,多个待更新的服务器芯片包括bmc、pch芯片,pch芯片中存储有待更新的bios,用于通过pch芯片更新bios。

需要说明的是,多个待更新的服务器芯片更新顺序可以是按照顺序依次更新(通过一个进程实现),也可以是同时进行更新(通过多个同时进行的进程实现),本发明在此不做限制。

进一步地,如图5所示,本发明技术方案还提供一种基于usb存储设备的服务器固件更新方法,步骤s1-s4的基础上,还包括:

s5,通过uid灯对服务器芯片更新情况进行指示。

具体地,当在usb存储设备中没有找到对应的服务器芯片更新的固件版本或者校验失败时,可编程逻辑器件退出芯片更新流程,同时控制服务器uid灯快速闪烁10s,作为告警指示;服务器芯片更新完成后,可编程逻辑器件控制服务器uid灯快速闪烁5s,作为更新完成指示。

本发明有效解决由于烧录器烧录固件的方式,必须需要返厂拆焊flash芯片,操作不够便捷、成本高、对维护人员技能要求高、并且费时较长的问题,降低了运输和拆焊时较高的装置损坏风险,提高服务器芯片离线更新的效率以及安全性,降低烧录成本。

本发明技术方案仅需一个usb存储设备即可实现芯片更新,操作灵活便捷。

本发明技术方案中usb存储设备中存储的固件版本与服务器芯片信息相对应,保证准确找到usb存储设备中的目标固件版本,避免无法更新或者更新错误;获取目标固件版本后,需要进行校验,进一步提高了目标固件版本的完整性,避免无法更新芯片。

本发明技术方案中还包括uid灯以及uid按键,可以指示服务器芯片更新情况,操作简单且直观;uid按键用于在服务器关机状态下,满足预设条件时进行服务器芯片更新,避免了服务器关机状态下无法进行芯片更新的问题,提高了服务器芯片更新的可靠性。

上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。

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