首页 / 专利库 / 电脑零配件 / 固件 / 一种Expander的带外更新方法和系统

一种Expander的带外更新方法和系统

阅读:447发布:2020-05-08

专利汇可以提供一种Expander的带外更新方法和系统专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种Expander的带外更新方法,应用于通过通信总线与Expander连接的 控制器 中,包括:接收用户发送的 固件 更新数据;将固件更新数据进行分片;仅在确定Expander处于闲时状态时进行分片后的数据发送,直至每一片数据均发送至Expander以使得接收完固件更新数据的Expander通过重启完成更新。由于本发明所提供的技术方案,有利于提高数据传输速度,保障业务的正常运行,避免出现影响状态监控、日志丢失的情况。本发明还提供了一种Expander的带外更新系统,具有相应技术效果。,下面是一种Expander的带外更新方法和系统专利的具体信息内容。

1.一种Expander的带外更新方法,其特征在于,应用于通过通信总线与Expander连接的控制器中,包括:
接收用户发送的固件更新数据;
将所述固件更新数据进行分片;
仅在确定所述Expander处于闲时状态时进行分片后的数据发送,直至每一片数据均发送至所述Expander以使得接收完所述固件更新数据的所述Expander通过重启完成更新。
2.根据权利要求1所述的Expander的带外更新方法,其特征在于,所述仅在所述Expander处于闲时状态时进行分片后的数据发送,包括:
在所述Expander的CPU连续利用率低于第一阈值时确定所述Expander处于闲时状态,并仅在确定所述Expander处于闲时状态时进行分片后的数据发送。
3.根据权利要求1所述的Expander的带外更新方法,其特征在于,所述仅在所述Expander处于闲时状态时进行分片后的数据发送,包括:
在所述通信总线的总线利用率低于第二阈值时确定所述Expander处于闲时状态,并仅在确定所述Expander处于闲时状态时进行分片后的数据发送。
4.根据权利要求1所述的Expander的带外更新方法,其特征在于,所述通信总线为I2C总线,SPI总线以及I3C总线中的任意一种。
5.根据权利要求1所述的Expander的带外更新方法,其特征在于,所述将所述固件更新数据进行分片,包括:
获取总线平均间隔时长,并按照预设的对应关系确定出与所述总线平均间隔时长对应的分片大小;
将所述固件更新数据进行分片,且每片数据的大小均等于确定出的所述分片大小;
其中,所述对应关系中的分片大小与总线平均间隔时长呈正相关。
6.根据权利要求1所述的Expander的带外更新方法,其特征在于,所述将所述固件更新数据进行分片,包括:
获取总线平均间隔时长,并按照预设的对应关系确定出与当前获取的所述总线平均间隔时长对应的分片大小;
按照预设的第一时长间隔,对所述总线平均间隔时长以及相对应的分片大小进行更新;
按照预设的第二时长间隔,将所述固件更新数据进行分片,且每次进行分片时,该片数据的大小等于当前确定出的所述分片大小;
其中,所述对应关系中的分片大小与总线平均间隔时长呈正相关。
7.根据权利要求1所述的Expander的带外更新方法,其特征在于,在所述接收用户发送的固件更新数据之后,还包括:
获取升级模式;
当获取的升级模式为闲时升级模式时,执行将所述固件更新数据进行分片的操作;
当获取的升级模式为连续升级模式时,执行基于持续发送固件更新数据的升级流程。
8.根据权利要求1所述的Expander的带外更新方法,其特征在于,在所述接收用户发送的固件更新数据之后,还包括:
对接收的所述固件更新数据进行压缩;
相应的,所述将所述固件更新数据进行分片,包括:
将压缩后的固件更新数据进行分片。
9.根据权利要求8所述的Expander的带外更新方法,其特征在于,还包括:
为分片后的每一片数据添加校验值,以使所述Expander接收到任意一片数据之后,在针对该片数据校验失败时向所述控制器反馈以进行该片数据的重新发送。
10.根据权利要求1至9任一项所述的Expander的带外更新方法,其特征在于,所述固件更新数据中还携带有完整性校验信息;
相应的,在所述接收用户发送的固件更新数据之后,还包括:
通过所述完整性校验信息对接收的所述固件更新数据进行校验,并在校验不通过时终止升级进程
11.根据权利要求10所述的Expander的带外更新方法,其特征在于,所述固件更新数据中还携带有合法性校验信息和版本适用范围信息;
相应的,在所述接收用户发送的固件更新数据之后,还包括:
获取所述Expander的属性参数信息和版本信息;
当获取的所述Expander的属性参数信息不符合所述合法性校验信息时,或者获取的所述Expander的版本信息不符合所述版本适用范围信息时,终止升级进程。
12.根据权利要求1所述的Expander的带外更新方法,其特征在于,所述仅在确定所述Expander处于闲时状态时进行分片后的数据发送,直至每一片数据均发送至所述Expander以使得接收完所述固件更新数据的所述Expander通过重启完成更新,包括:
仅在确定所述Expander处于闲时状态时进行分片后的数据发送,直至每一片数据均发送至所述Expander以使得接收完所述固件更新数据的所述Expander在接收到重启命令之后,通过重启完成更新。
13.根据权利要求1所述的Expander的带外更新方法,其特征在于,在所述将所述固件更新数据进行分片之后,还包括:
按照预设算法为每片数据生成相对应的唯一校验值;
获取上一次Expander进行带外更新时存储下的各个唯一校验值;
针对本次生成的各个唯一校验值,当该唯一校验值与存储下的任意一个唯一校验值相同时,取消该唯一校验值对应的数据片的发送并将该事件信息发送至Expander。
14.根据权利要求1所述的Expander的带外更新方法,其特征在于,所述控制器与多个Expander均连接,以在接收到所述固件更新数据之后,按照逐个更新的方式或者广播更新的方式实现对连接的各个Expander的批量更新。
15.一种Expander的带外更新系统,其特征在于,应用于通过通信总线与Expander连接的控制器中,包括:
固件更新数据接收模,用于接收用户发送的固件更新数据;
数据分片模块,用于将所述固件更新数据进行分片;
分片传输模块,用于仅在确定所述Expander处于闲时状态时进行分片后的数据发送,直至每一片数据均发送至所述Expander以使得接收完所述固件更新数据的所述Expander通过重启完成更新。

说明书全文

一种Expander的带外更新方法和系统

技术领域

[0001] 本发明涉及存储技术领域,特别是涉及一种Expander的带外更新方法和系统。

背景技术

[0002] 随着计算中心、云存储以及大数据的高速发展,用户对服务器的存储性能要求以及管理便利性要求越来越高。随着池化技术的进步,通过SAS Expander进行扩展,将众多的硬盘集成在一起集中管理的方式也应用地越来越广泛。
[0003] 在对Expander进行固件升级时,有带外升级和带内升级两种方式。通过SAS总线进行带内升级具有速度快,不影响用户业务的优势。但是,由于带内升级需要基于用户的操作系统来实现,随着云计算、云存储中的存储资源越来越多,不同的硬盘可能分配给不同的客户,用户对数据安全也越来越重视,因此越来越多的客户不允许使用带内升级。
[0004] 带外升级安全性较高。目前,通常是基于Expander的Debug串口进行升级,除了需要拆机箱导致运维不便之外,一方面,由于串口的低速率,导致数据传输速度慢,升级时间长,另一方面,还会在一定程度上阻塞总线,因此会导致在进行固件升级时对业务造成较为严重的影响。并且在升级时由于占用了串口,在部分场合中,会影响串口的状态监控,导致日志丢失。
[0005] 综上所述,如何有效地提高数据传输速度,降低对总线的阻塞以保证业务的正常运行,避免影响状态监控出现日志丢失的情况,是目前本领域技术人员急需解决的技术问题。

发明内容

[0006] 本发明的目的是提供一种Expander的带外更新方法和系统,以有效地提高数据传输速度,降低对总线的阻塞以保证业务的正常运行,避免影响状态监控出现日志丢失的情况。
[0007] 为解决上述技术问题,本发明提供如下技术方案:
[0008] 一种Expander的带外更新方法,应用于通过通信总线与Expander连接的控制器中,包括:
[0009] 接收用户发送的固件更新数据;
[0010] 将所述固件更新数据进行分片;
[0011] 仅在确定所述Expander处于闲时状态时进行分片后的数据发送,直至每一片数据均发送至所述Expander以使得接收完所述固件更新数据的所述Expander通过重启完成更新。
[0012] 优选的,所述仅在所述Expander处于闲时状态时进行分片后的数据发送,包括:
[0013] 在所述Expander的CPU连续利用率低于第一阈值时确定所述Expander处于闲时状态,并仅在确定所述Expander处于闲时状态时进行分片后的数据发送。
[0014] 优选的,所述仅在所述Expander处于闲时状态时进行分片后的数据发送,包括:
[0015] 在所述通信总线的总线利用率低于第二阈值时确定所述Expander处于闲时状态,并仅在确定所述Expander处于闲时状态时进行分片后的数据发送。
[0016] 优选的,所述通信总线为I2C总线,SPI总线以及I3C总线中的任意一种。
[0017] 优选的,所述将所述固件更新数据进行分片,包括:
[0018] 获取总线平均间隔时长,并按照预设的对应关系确定出与所述总线平均间隔时长对应的分片大小;
[0019] 将所述固件更新数据进行分片,且每片数据的大小均等于确定出的所述分片大小;
[0020] 其中,所述对应关系中的分片大小与总线平均间隔时长呈正相关。
[0021] 优选的,所述将所述固件更新数据进行分片,包括:
[0022] 获取总线平均间隔时长,并按照预设的对应关系确定出与当前获取的所述总线平均间隔时长对应的分片大小;
[0023] 按照预设的第一时长间隔,对所述总线平均间隔时长以及相对应的分片大小进行更新;
[0024] 按照预设的第二时长间隔,将所述固件更新数据进行分片,且每次进行分片时,该片数据的大小等于当前确定出的所述分片大小;
[0025] 其中,所述对应关系中的分片大小与总线平均间隔时长呈正相关。
[0026] 优选的,在所述接收用户发送的固件更新数据之后,还包括:
[0027] 获取升级模式;
[0028] 当获取的升级模式为闲时升级模式时,执行将所述固件更新数据进行分片的操作;
[0029] 当获取的升级模式为连续升级模式时,执行基于持续发送固件更新数据的升级流程。
[0030] 优选的,在所述接收用户发送的固件更新数据之后,还包括:
[0031] 对接收的所述固件更新数据进行压缩;
[0032] 相应的,所述将所述固件更新数据进行分片,包括:
[0033] 将压缩后的固件更新数据进行分片。
[0034] 优选的,还包括:
[0035] 为分片后的每一片数据添加校验值,以使所述Expander接收到任意一片数据之后,在针对该片数据校验失败时向所述控制器反馈以进行该片数据的重新发送。
[0036] 优选的,所述固件更新数据中还携带有完整性校验信息;
[0037] 相应的,在所述接收用户发送的固件更新数据之后,还包括:
[0038] 通过所述完整性校验信息对接收的所述固件更新数据进行校验,并在校验不通过时终止升级进程
[0039] 优选的,所述固件更新数据中还携带有合法性校验信息和版本适用范围信息;
[0040] 相应的,在所述接收用户发送的固件更新数据之后,还包括:
[0041] 获取所述Expander的属性参数信息和版本信息;
[0042] 当获取的所述Expander的属性参数信息不符合所述合法性校验信息时,或者获取的所述Expander的版本信息不符合所述版本适用范围信息时,终止升级进程。
[0043] 优选的,所述仅在确定所述Expander处于闲时状态时进行分片后的数据发送,直至每一片数据均发送至所述Expander以使得接收完所述固件更新数据的所述Expander通过重启完成更新,包括:
[0044] 仅在确定所述Expander处于闲时状态时进行分片后的数据发送,直至每一片数据均发送至所述Expander以使得接收完所述固件更新数据的所述Expander在接收到重启命令之后,通过重启完成更新。
[0045] 优选的,在所述将所述固件更新数据进行分片之后,还包括:
[0046] 按照预设算法为每片数据生成相对应的唯一校验值;
[0047] 获取上一次Expander进行带外更新时存储下的各个唯一校验值;
[0048] 针对本次生成的各个唯一校验值,当该唯一校验值与存储下的任意一个唯一校验值相同时,取消该唯一校验值对应的数据片的发送并将该事件信息发送至Expander。
[0049] 优选的,所述控制器与多个Expander均连接,以在接收到所述固件更新数据之后,按照逐个更新的方式或者广播更新的方式实现对连接的各个Expander的批量更新。
[0050] 一种Expander的带外更新系统,应用于通过通信总线与Expander连接的控制器中,包括:
[0051] 固件更新数据接收模,用于接收用户发送的固件更新数据;
[0052] 数据分片模块,用于将所述固件更新数据进行分片;
[0053] 分片传输模块,用于仅在确定所述Expander处于闲时状态时进行分片后的数据发送,直至每一片数据均发送至所述Expander以使得接收完所述固件更新数据的所述Expander通过重启完成更新。
[0054] 应用本发明实施例所提供的技术方案,应用在通过通信总线与Expander连接的控制器中,通过该控制器实现Expander的带外更新,无需使用串口实现更新。并且由于通信总线的数据传输速度高于串口,因此也有利于提高更新的速度,降低数据传输耗时。进一步的,将固件更新数据进行分片,仅在确定Expander处于闲时状态时进行分片后的数据发送,使得在Expander接收完固件更新数据的整个过程中,都不会出现影响Expander的原业务的情况。并且由于是仅在确定Expander处于闲时状态时进行分片后的数据发送,因此无论是否由串口实现状态监控、日志的传输,本申请的方案均不会影响到Expander的状态监控,不会出现日志丢失的情况。综上可知,本申请的方案有利于提高数据传输速度,保障业务的正常运行,避免出现影响状态监控、日志丢失的情况。附图说明
[0055] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0056] 图1为本发明中一种Expander的带外更新方法的实施流程图
[0057] 图2为本发明中一种Expander与控制器的连接结构示意图;
[0058] 图3为本发明中一种Expander的带外更新系统的结构示意图。

具体实施方式

[0059] 本发明的核心是提供一种Expander的带外更新方法,有利于提高数据传输速度,保障业务的正常运行,避免出现影响状态监控、日志丢失的情况。
[0060] 为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0061] 请参考图1,图1为本发明中一种Expander的带外更新方法的实施流程图,并且可参阅图2,该Expander的带外更新方法可以应用于通过通信总线与Expander连接的控制器中,Expander的带外更新方法可以包括以下步骤:
[0062] 步骤S101:接收用户发送的固件更新数据。
[0063] 图2的实施方式中,控制器可以接收用户通过远程控制端发送的固件更新数据,且控制器是基于LAN(Local Area Network,局域网)的通信方式进行固件更新数据的接收。通过LAN,用户可以将固件更新数据远程发送至控制器,即用户远程操作便可以实现Expander的带外更新,提高了固件更新的便捷性。
[0064] 当然,在其他实施方式中,可以基于其他类型的无线通信方式,也可以采用有线通信的方式,例如RS232,I2C接口等方式,只要能够使得控制器接收到固件更新数据即可,并不影响本发明的实施。
[0065] 控制器的类型可以根据实际需要进行设定和选取,例如可以选取为ARM控制器,PSOC控制器等。在本发明的一种具体实施方式中,考虑到部分场合中设置有BMC与Expander连接,因此,可以直接采用BMC作为本申请的控制器,相较于额外设置控制器,采用BMC作为本申请的控制器有利于降低成本。
[0066] 在实际应用中,通常会设置有BMC与Expander进行通信,主要进行命令、状态、数据、故障告警信息、LOG日志等信息的传输。BMC还可以将接收的客户下发的控制、查询命令发送至Expander,并从Expander获取相关反馈数据以返回给客户;BMC还可以定期对Expander进行资产信息、系统状态、硬盘状态等信息的查询和数据记录,定期收集Expander的Log日志,故障告警等信息进行存储和上报。此外,Expander还可以通过SAS总线与Host服务器进行数据交互。
[0067] 也就是说,Expander与HOST服务器以及BMC之间存在着不断的数据通信,这些通信不能被耽误太久。因此,无论是额外设置控制器,还是选取BMC作为本申请的控制器,控制器在利用与Expander连接的通信总线实现本申请的固件升级的目的时,都不应对Expander的原业务造成太大影响。
[0068] 控制器与Expander之间具体的通信总线的类型可以根据实际情况进行设定和选取,但可以理解的是,通常选取的是通信速率较高的通信总线,从而有利于降低升级耗时。例如,通信总线可以选取为I2C总线,SPI总线以及I3C总线中的任意一种,这些通信总线具有较高的通信速率。在实际应用中,由于通常选取BMC作为本申请的控制器,Expander通常也均会设置有I2C接口,因此实际应用中,控制器与Expander之间的通信总线通常会选取为I2C总线,I2C总线的速率通常可以达到400Kbps,远高于Expander的Debug串口的速率。
[0069] 步骤S102:将固件更新数据进行分片。
[0070] 可以理解的是,在少部分场合中,考虑到Expander上并没有业务运行,或者用户并不在意固件升级对业务运行造成的影响,便可以采用连续升级模式。
[0071] 具体的,在本发明的一种具体实施方式中,在步骤S101之后,还可以包括以下步骤:
[0072] 获取升级模式;
[0073] 当获取的升级模式为闲时升级模式时,执行步骤S102的操作;
[0074] 当获取的升级模式为连续升级模式时,执行基于持续发送固件更新数据的升级流程。
[0075] 连续升级模式与传统方案类似,即控制器在接收到用户发送的固件更新数据之后,如果确定是连续升级模式,便可以不考虑固件升级对业务的影响,将固件更新数据连续地发送给Expander,Expander全部接收之后立即重启,便完成了升级。
[0076] 本申请的方案可以同时支持两种模式,在实际应用中,用户可以根据需要选用连续升级模式或者是选用闲时升级模式,具体的,可以通过相关命令实现模式的切换,通常可以默认为闲时升级模式。当然,在部分场合中,也可以设置为只有一种模式,即只有闲时升级模式,这样便无需进行模式判断,在接收用户发送的固件更新数据之后,便直接执行步骤S102的操作。
[0077] 在确定升级模式为闲时升级模式之后,说明要求固件升级不能影响到Expander原业务的运行,因此本申请可以将固件更新数据进行分片,即,将固件更新数据进行分割,从而得到多份数据。
[0078] 通常,将固件更新数据进行分片时,会为每一片数据添加唯一对应的编号,使得将分片后的数据传输至Expander时,支持乱序传输,Expander可以根据编号确定接收的每片数据属于原固件更新数据中的哪一部分。
[0079] 而在进行固件更新数据的分片时,通常可以分割成预设大小,例如根据实际经验,将每片均分为256Byte。进一步的,在部分实施方式中,为了更加充分地对总线进行利用,步骤S102的操作可以具体包括以下两个步骤:
[0080] 步骤一:获取总线平均间隔时长,并按照预设的对应关系确定出与总线平均间隔时长对应的分片大小;
[0081] 步骤二:将固件更新数据进行分片,且每片数据的大小均等于确定出的分片大小;
[0082] 其中,对应关系中的分片大小与总线平均间隔时长呈正相关。
[0083] 该种实施方式中,预设了总线平均间隔时长与分片大小之间的对应关系,并且二者呈正相关,可以理解的是,总线平均间隔时长越短,说明总线上的数据传输越频繁,即总线越繁忙。反之,总线平均间隔时长越长,说明总线越空闲。总线平均间隔时长越长时,便可以选取越大的分片大小,这样相较于较为简单地预设固定大小的分片大小,该种实施方式中,基于获取到的总线平均间隔时长确定出对应的分片大小,有利于可以更加充分地对总线进行利用,也就有利于降低Expander的带外更新的总耗时。
[0084] 进一步的,在本发明的一种具体实施方式中,步骤S102可以具体包括以下三个步骤:
[0085] 第一个步骤:获取总线平均间隔时长,并按照预设的对应关系确定出与当前获取的总线平均间隔时长对应的分片大小;
[0086] 第二个步骤:按照预设的第一时长间隔,对总线平均间隔时长以及相对应的分片大小进行更新;
[0087] 第三个步骤:按照预设的第二时长间隔,将固件更新数据进行分片,且每次进行分片时,该片数据的大小等于当前确定出的分片大小;
[0088] 其中,对应关系中的分片大小与总线平均间隔时长呈正相关。
[0089] 该种实施方式,不仅基于总线平均间隔时长确定对应的分片大小,还会周期性地进行总线平均间隔时长以及相对应的分片大小的更新,这是考虑到在将固件更新数据进行分片是一个持续的过程,由于Expander的业务可能会不断发生变化,因此,为了使得确定出的分片大小更加符合当前的实际情况,从而更加充分地对总线进行利用,该种实施方式中,会按照预设的第一时长间隔,对总线平均间隔时长以及相对应的分片大小进行更新,例如在第一时刻,确定出的总线平均间隔时长为100ms,根据预设的对应关系,确定出分片大小为256Byte,经过第一时长间隔之后,由于Expander的业务变化,此时确定出的总线平均间隔时长变为了300ms,则根据预设的对应关系,例如确定出的分片大小变为了512Byte。
[0090] 该种实施方式中,会按照预设的第二时长间隔将固件更新数据进行分片,每次触发分片操作时,该片数据的大小等于当前确定出的分片大小。例如,当前确定出的分片大小为256Byte,则从固件更新数据中划分出256Byte的数据,作为一片数据,例如称为第1片数据,第二时长间隔之后,确定出的分片大小例如仍为256Byte,未进行更新,则再从固件更新数据中划分出256Byte的数据作为一片数据,例如称为第2片数据。又经过了第二时长间隔之后,例如此时确定出的分片大小变为了512Byte,则从固件更新数据中划分出512Byte的数据作为一片数据,例如称为第3片数据。可以看出,由于周期性地进行总线平均间隔时长以及相对应的分片大小的更新,有利于确定出的分片大小更加符合当前的实际情况,从而更加充分地对总线进行利用。
[0091] 第一时长间隔和第二时长间隔的具体取值也均可以根据实际需要进行设定和调整。
[0092] 步骤S103:仅在确定Expander处于闲时状态时进行分片后的数据发送,直至每一片数据均发送至Expander以使得接收完固件更新数据的Expander通过重启完成更新。
[0093] 具体的,例如一共有20片数据,当在A时刻确定出Expander处于闲时状态时,开始进行数据发送,例如将第1片数据,第2片数据发送完毕之后,Expander转换成了非闲时状态,则可以暂停发送的流程,待下一次确定出Expander处于闲时状态时,进行第3片数据的发送,直至20片数据均成功发送至Expander。
[0094] 当然,如果在发送某一片数据的过程中,Expander从闲时状态转换成了非闲时状态,则不会停止该片数据的发送。因此,将固件更新数据进行分片时,每一片的数据大小可以根据实际情况进行设定和调整,但通常不应设置地过大,以尽量避免该种特殊情况。例如每片数据的大小为256Byte,使得一片数据的传输时间不到1ms。又如,每片数据的大小为1Kbyte等。
[0095] 进一步地,在本发明的一种具体实施方式中,在步骤S102之后,还可以包括以下步骤:
[0096] 按照预设算法为每片数据生成相对应的唯一校验值;
[0097] 获取上一次Expander进行带外更新时存储下的各个唯一校验值;
[0098] 针对本次生成的各个唯一校验值,当该唯一校验值与存储下的任意一个唯一校验值相同时,取消该唯一校验值对应的数据片的发送并将该事件信息发送至Expander。
[0099] 该种实施方式有利于降低需要传输的数据数量,从而有利于降低数据传输耗时,可以进一步地降低固件更新对Expander的业务影响。
[0100] 具体的,例如将固件更新数据进行分片后,得到了20片数据,需要按照预设算法为每片数据生成相对应的唯一校验值,例如可以生成哈希值。当然,其他实施方式中可以采用其他形式的唯一校验值。
[0101] 之后获取上一次Expander进行带外更新时存储下的各个唯一校验值,例如将这20片数据各自对应的唯一检验值依次表示为00A,00B,00C,00D…00R,00S,00T。例如针对唯一校验值00A,如果获取到的上一次Expander进行带外更新时存储下的各个唯一校验值为00A,11B,01C,00U,00V,00W,说明本次进行固件更新时,对应于00A的这一数据片,与上次进行固件更新时的一片数据片是相同的,因为二者有着相同的唯一校验值00A。因此便可以取消唯一校验值00A所对应的这一片数据的发送,并将该事件信息发送至Expander,使得Expander利用上一次更新后存储下的数据片取代本次取消发送的这一数据片。即通过事件信息的发送,告知Expander使用原来的数据。
[0102] 可以理解的是,该种实施方式中,每次在进行完Expander的固件更新时,需要将生成的各个唯一校验值进行存储,并且当首次执行时,由于此前没有存储有唯一校验值,因此首次进行时不会出现某片数据片取消发送的情况。
[0103] 用于判断Expander是否处于闲时状态的条件可以根据实际需要进行设定和调整,但可以理解的是,该条件的设置需要使得当该条件成立时,Expander处于较为空闲的状态,使得此时控制器利用通信总线进行与固件升级相关的数据的发送不会影响Expander的原业务。
[0104] 在本发明的一种具体实施方式中,考虑到通常采用BMC作为控制器,并且便于描述假定BMC与Expander通过I2C总线连接。当I2C总线的总线利用率较高时,通常可以说明Expander业务较为繁忙,相应的,如果I2C总线的总线利用率较低,通常可以说明Expander业务较少,即Expander处于较为空闲的状态。因此,在本发明的一种具体实施方式中,步骤S103中描述的仅在确定Expander处于闲时状态时进行分片后的数据发送,可以具体为:在通信总线的总线利用率低于第二阈值时确定Expander处于闲时状态,并仅在确定Expander处于闲时状态时进行分片后的数据发送。
[0105] 第二阈值的具体取值可以根据需要进行设定和调整,例如设定为60%,当通信总线的总线利用率低于40%时,说明通信总线上还存在着大量的空闲间隔时间,此时进行与固件升级相关的数据的传输,可以避免独占总线,Expander此时通常处于空闲状态。
[0106] 需要说明的是,前述例子中利用通信总线的总线利用率进行Expander是否处于闲时状态的判断,虽然实施时较为简单,并且也能够保证固件升级不会影响BMC与Expander的通信,但是,这样的方案通常应用在控制器为BMC的场合中,并且在少部分情况下,也仍然有可能影响到Expander的业务,即少部分情况下,可能出现Expander与BMC之间通信不频繁,但Expander与Host服务器之间频繁通信,导致Expander较为繁忙的情况。
[0107] 因此,在本发明的一种具体实施方式中,为了更加准确地保障Expander处于较为空闲的状态,步骤S103中描述的仅在Expander处于闲时状态时进行分片后的数据发送,具体为:在Expander的CPU连续利用率低于第一阈值时确定Expander处于闲时状态,并仅在确定Expander处于闲时状态时进行分片后的数据发送。
[0108] 该种实施方式中,考虑到无论是Expander与BMC的通信还是Expander与Host服务器的通信,均会在一定程度反映在CPU的连续利用率上,因此在Expander的CPU连续利用率低于第一阈值时确定Expander处于闲时状态。该种实施方式,有利于更加准确地确定出Expander处于闲时状态。第一阈值的取值可以根据需要进行设定和调整,例如设置为50%。
[0109] 当然,在实际应用中,还可以同时对Expander的CPU连续利用率以及控制器与Expander之间的通信总线的总线利用率进行判断。例如,在一种具体场合中,只有在Expander的CPU连续利用率低于第一阈值,且通信总线的总线利用率低于第二阈值时,才确定Expander处于闲时状态,有利于进一步地加强对Expander的业务运行的保障。
[0110] 应用本发明实施例所提供的技术方案,应用在通过通信总线与Expander连接的控制器中,通过该控制器实现Expander的带外更新,无需使用串口实现更新。并且由于通信总线的数据传输速度高于串口,因此也有利于提高更新的速度,降低数据传输耗时。进一步的,将固件更新数据进行分片,仅在确定Expander处于闲时状态时进行分片后的数据发送,使得在Expander接收完固件更新数据的整个过程中,都不会出现影响Expander的原业务的情况。并且由于是仅在确定Expander处于闲时状态时进行分片后的数据发送,因此无论是否由串口实现状态监控、日志的传输,本申请的方案均不会影响到Expander的状态监控,不会出现日志丢失的情况。综上可知,本申请的方案有利于提高数据传输速度,保障业务的正常运行,避免出现影响状态监控、日志丢失的情况。
[0111] 在本发明的一种具体实施方式中,在步骤S101之后,还可以包括:
[0112] 对接收的固件更新数据进行压缩;
[0113] 相应的,步骤S102中描述的将固件更新数据进行分片,包括:
[0114] 将压缩后的固件更新数据进行分片。
[0115] 申请人在分析固件更新数据之后,发现其中有大量的重复数据和填充0的数据,压缩率较高,因此,对接收的固件更新数据进行压缩,从而有利于进一步地降低升级的耗时。
[0116] 可以理解的是,由于该种实施方式中对固件更新数据进行了压缩,因此步骤S102中进行数据的分片,便是对压缩后的固件更新数据进行分片。
[0117] 具体的压缩算法可以根据实际情况进行选取,例如QuickLZ压缩算法是一个开源的、轻量级、纯C实现的、简单、高效快速的压缩算法。经过实验验证,固件更新数据可以压缩到原有体积的20%。
[0118] Expander接收到每一片压缩数据之后,便可以进行解压还原,之后可以写入Flash中,待重启之后便完成了固件更新。
[0119] 进一步的,在本发明的一种具体实施方式中,还可以包括:
[0120] 为分片后的每一片数据添加校验值,以使Expander接收到任意一片数据之后,在针对该片数据校验失败时向控制器反馈以进行该片数据的重新发送
[0121] 校验值的形式可以根据实际需要进行设定和调整,例如可以采用较为简单,广泛应用的CRC校验值。针对任意一片数据,Expander收到之后,可以先对数据进行CRC校验,如果校验通过则存入对应的区域,相应的,如果校验失败,可以发出反馈信号要求控制器重发,例如,反馈信号中可以携带有该校验失败的这一片数据的编号从而要求控制器重发。
[0122] 在本发明的一种具体实施方式中,固件更新数据中还携带有完整性校验信息;
[0123] 相应的,在步骤S101之后,还可以包括:
[0124] 通过完整性校验信息对接收的固件更新数据进行校验,并在校验不通过时终止升级进程。
[0125] 在前述实施例中,为每片数据添加校验值,从而有利于保障Expander收到正确的固件更新数据,该种实施方式中,考虑到用户将固件更新数据发送至控制器的过程也可能发生数据错误的情况,因此控制器接收固件更新数据之后,会通过固件更新数据中携带的完整性校验信息,对接收的固件更新数据进行校验。如果校验不通过,可以终止升级进程,避免基于错误的数据进行升级。当然,还可以向用户发送相应的反馈信息,例如通过LAN向远程控制端发送提示信息以显示接收的固件更新数据出现了完整性问题,从而触发数据的重发等对应措施。
[0126] 完整性校验信息的具体形式也可以根据需要进行设定和选取,例如MD5码、CRC、哈希值等。
[0127] 在本发明的一种具体实施方式中,固件更新数据中还携带有合法性校验信息和版本适用范围信息;
[0128] 相应的,在步骤S101之后,还可以包括:
[0129] 获取Expander的属性参数信息和版本信息;
[0130] 当获取的Expander的属性参数信息不符合合法性校验信息时,或者获取的Expander的版本信息不符合版本适用范围信息时,终止升级进程。
[0131] Expander的属性参数信息可以进行合法性验证,具体的,属性参数信息可以包括Expander的型号等信息,当Expander的属性参数信息符合合法性校验信息,说明当前的Expander与固件更新数据适配,否则说明不适配,可以终止升级进程。当然,还可以输出相关提示信息,例如向远程控制端发送提示信息以显示适配性出现了问题。
[0132] 相应的,Expander的版本信息不符合版本适用范围信息,说明不符合升级条件,则可以终止升级进程并输出对应的提示信息。例如版本适用范围信息中携带的内容为:固件更新数据适用于V1.3版本以上升级,如果Expander的版本信息低于V1.3,说明Expander的版本信息不符合版本适用范围信息。
[0133] 在本发明的一种具体实施方式中,步骤S103可以具体包括:
[0134] 仅在确定Expander处于闲时状态时进行分片后的数据发送,直至每一片数据均发送至Expander以使得接收完固件更新数据的Expander在接收到重启命令之后,通过重启完成更新。
[0135] 该种实施方式中,Expander接收完固件更新数据之后,只有在接收到重启命令之后,通过重启完成更新。重启命令通常可以由用户进行发送,即用户可以确定什么时候进行重启,有利于满足实际中的用户需求,可以实现离线更新。
[0136] 在本发明的一种具体实施方式中,控制器与多个Expander均连接,以在接收到固件更新数据之后,按照逐个更新的方式或者广播更新的方式实现对连接的各个Expander的批量更新。具体的,控制器接收到固件更新数据,可以对其管辖范围内的,即其连接的各个Expander进行批量更新。当然,针对每一个Expander,也均可以如前述实施方式中,进行属性参数信息是否符合合法性校验信息的判断,进行版本信息是否符合版本适用范围信息的判断。该种实施方式中采用批量升级的方式,有利于降低用户的工作量。在进行批量更新时,可以按照逐个更新的方式或者广播更新的方式,有利于提高方案的适用范围。
[0137] 相应于上面的方法实施例,本发明实施例还提供了一种Expander的带外更新系统,应用于通过通信总线与Expander连接的控制器中,可与上文相互对应参照。
[0138] 参见图3所示,为本发明中一种Expander的带外更新系统的结构示意图,可以包括以下模块:
[0139] 固件更新数据接收模块301,用于接收用户发送的固件更新数据;
[0140] 数据分片模块302,用于将固件更新数据进行分片;
[0141] 分片传输模块303,用于仅在确定Expander处于闲时状态时进行分片后的数据发送,直至每一片数据均发送至Expander以使得接收完固件更新数据的Expander通过重启完成更新。
[0142] 在本发明的一种具体实施方式中,分片传输模块303,具体用于:
[0143] 在Expander的CPU连续利用率低于第一阈值时确定Expander处于闲时状态,并仅在确定Expander处于闲时状态时进行分片后的数据发送,直至每一片数据均发送至Expander以使得接收完固件更新数据的Expander通过重启完成更新。
[0144] 在本发明的一种具体实施方式中,分片传输模块303,具体用于:
[0145] 在通信总线的总线利用率低于第二阈值时确定Expander处于闲时状态,并仅在确定Expander处于闲时状态时进行分片后的数据发送,直至每一片数据均发送至Expander以使得接收完固件更新数据的Expander通过重启完成更新。
[0146] 在本发明的一种具体实施方式中,通信总线为I2C总线,SPI总线以及I3C总线中的任意一种。
[0147] 在本发明的一种具体实施方式中,数据分片模块302,具体用于:
[0148] 获取总线平均间隔时长,并按照预设的对应关系确定出与所述总线平均间隔时长对应的分片大小;
[0149] 将所述固件更新数据进行分片,且每片数据的大小均等于确定出的所述分片大小;
[0150] 其中,所述对应关系中的分片大小与总线平均间隔时长呈正相关。
[0151] 在本发明的一种具体实施方式中,数据分片模块302,具体用于:
[0152] 获取总线平均间隔时长,并按照预设的对应关系确定出与当前获取的所述总线平均间隔时长对应的分片大小;
[0153] 按照预设的第一时长间隔,对所述总线平均间隔时长以及相对应的分片大小进行更新;
[0154] 按照预设的第二时长间隔,将所述固件更新数据进行分片,且每次进行分片时,该片数据的大小等于当前确定出的所述分片大小;
[0155] 其中,所述对应关系中的分片大小与总线平均间隔时长呈正相关。
[0156] 在本发明的一种具体实施方式中,还包括:
[0157] 升级模块选择模块,用于获取升级模式,并且当获取的升级模式为闲时升级模式时,触发数据分片模块302;当获取的升级模式为连续升级模式时,执行基于持续发送固件更新数据的升级流程。
[0158] 在本发明的一种具体实施方式中,还包括:
[0159] 压缩模块,用于对接收的固件更新数据进行压缩;
[0160] 相应的,数据分片模块302,具体用于:
[0161] 在确定升级模式为闲时升级模式之后,将压缩后的固件更新数据进行分片。
[0162] 在本发明的一种具体实施方式中,还包括:
[0163] 分片数据校验模块,用于为分片后的每一片数据添加校验值,以使Expander接收到任意一片数据之后,在针对该片数据校验失败时向控制器反馈以进行该片数据的重新发送。
[0164] 在本发明的一种具体实施方式中,固件更新数据中还携带有完整性校验信息;
[0165] 相应的,还包括:
[0166] 第一校验模块,用于通过完整性校验信息对接收的固件更新数据进行校验,并在校验不通过时终止升级进程。
[0167] 在本发明的一种具体实施方式中,固件更新数据中还携带有合法性校验信息和版本适用范围信息;
[0168] 相应的,还包括:
[0169] 第二校验模块,用于获取Expander的属性参数信息和版本信息;当获取的Expander的属性参数信息不符合合法性校验信息时,或者获取的Expander的版本信息不符合版本适用范围信息时,终止升级进程。
[0170] 在本发明的一种具体实施方式中,分片传输模块303,具体用于:
[0171] 仅在确定Expander处于闲时状态时进行分片后的数据发送,直至每一片数据均发送至Expander以使得接收完固件更新数据的Expander在接收到重启命令之后,通过重启完成更新。
[0172] 在本发明的一种具体实施方式中,还包括增量更新模块,用于:
[0173] 按照预设算法为每片数据生成相对应的唯一校验值;
[0174] 获取上一次Expander进行带外更新时存储下的各个唯一校验值;
[0175] 针对本次生成的各个唯一校验值,当该唯一校验值与存储下的任意一个唯一校验值相同时,取消该唯一校验值对应的数据片的发送并将该事件信息发送至Expander。
[0176] 在本发明的一种具体实施方式中,控制器与多个Expander均连接,以在接收到固件更新数据之后,按照逐个更新的方式或者广播更新的方式实现对连接的各个Expander的批量更新。
[0177] 还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0178] 专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的技术方案及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈