一种成对冗余结构中器件的升级方法及设备的制作方法

文档序号:6578396阅读:179来源:国知局
专利名称:一种成对冗余结构中器件的升级方法及设备的制作方法
技术领域
本发明涉及电子技术领域,具体地涉及一种成对冗余结构中器件的升级方 法及设备。
背景技术
在通信或存储等对系统可用性、可靠性要求很高的领域,由很多工作节点 组成的系统内一般包含互为冗余的成对节点。系统内的工作节点数一般为偶数, 节点之间有支撑用户业务的通信通道。有的系统中在成冗余对的两个节点之间 有高可用性的低数据速率通道,这种底层数据通道结构简单,实现复杂度低,
比如常见的RS-232串口, JTAG调试口等。
系统运行期内,可能会在硬件上升级工作节点,比如使用更高性能的单板 替换现有工作单板,这种升级被称为硬升级。另一种则是节点的软升级,即工 作节点投入使用后在其工作期内,会需要代码的升级,升级的代码可能是系统 运行的程序代码,也可能是各类可编程器件的逻辑代码。本文涉及的是节点的 软升级。
对如前所述的由多个冗余对组成的系统,如果需要全部升级系统,则系统 内成对的节点是不能同时升级的,而是有先后,这是因为在通信或者存储等领 域内,这种冗余对承担的用户业务是不能随便中断或者根本不能中断的。如果 冗余对中第一节点升级失败,那么第二节点就不能再"冒险"进行升级了。
冗余对中的每一工作节点为一个微控制器系统, 一般包含但不限于如下部 分用于处理数据的CPU、存放系统运行代码的各种存储器、收发数据的通信 接口、基本输入输出系统BIOS (Basic Input Output System)、与用户终端交互 的管理接口 、各类用于收集板卡信息及处理底层复位中断信号等的可编程逻辑 器件(PLD, Programmable Logic Device)等。对冗余对中的节点,现有的升级方法为用户通过管理接口将升级所用的代 码传送给CPU,并下达升级命令。CPU解析用户命令,将代码按照可被具体器件 接受的格式,通过相应的编程接口写入至存储或逻辑器件中。
从此过程中可以看出,节点的升级都是由节点自身的CPU完成的。
在上述节点升级方法中,如果由于存储器、可编程器件等目标器件的某种问
题,使得CPU确认了代码已经写入完毕而实际上写入的代码并不完整或者含有错 误,这将导致在一次CPU认为是升级完毕后的正常重启之后此单板挂死。而且由 于此类目标器件在系统中扮演着很重要的角色,如PLD器件一般要担当控制整个 单板的上电、复位等的关键功能,因此这类目标器件的升级失败将导致整个单 板无法再次响应用户命令。
此节点升级失败导致冗余对的另一节点不能再"冒险"升级,否则将有可 能导致整个冗余对挂死而中断用户业务。
为了解决上上面的问题,现有的另一种技术为单板增加了一个错误恢复控 制器。该技术的节点升级方法和前面的技术一样,但是如果遇到了节点重启后 挂死的问题时,错误恢复控制器就会转入系统修复模式,用默认值刷新目标器 件,再次重启单板,系统恢复正常。该现有技术虽然解决了单板升级遇到底层 故障无法自修复的问题,但是其引入了新的控制器模块,增加了系统的成本, 也相应增加了系统的复杂度。

发明内容
本发明提供一种成对冗余结构中器件的升级方法及设备,以减少现有技术 中存在的无法软修复和降低升级成本高的问题。
为了实现上述目的,本发明实施例提供一种成对冗余结构中器件的升级方
法,该方法包括
利用该冗余对结构中的第二冗余单元向互为冗余对的第一冗余单元的目标 器件中写入升级代码,并通知所述第一冗余单元重启;
检査所述第一冗余单元的所述目标器件是否升级成功;
5如果升级不成功,将所述目标器件升级前的版本代码重新写入该目标器件, 进行目标器件的恢复。
本发明还提供一种目标器件的升级设备,所述目标器件和升级设备分别位 于成冗余对的第一冗余单元和第二冗余单元中,该升级设备包括
代码写入单元,用于向所述目标器件中写入升级代码,并通知所述第一冗 余单元重启;
检查单元,用于检查所述目标器件是否升级成功;
恢复单元,用于在所述目标器件升级不成功时,将所述目标器件升级前的 版本代码重新写入该目标器件,进行目标器件的恢复。
本发明实施例通过成冗余对结构的另一冗余单元来升级本冗余单元中的目 标器件,既提高了器件升级的可靠性,又降低了额外的升级成本。


此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分, 并不构成对本发明的限定。在附图中
图l为本发明实施例l中对器件升级的流程图2为本发明实施例的成冗余对的本板和对板之间的交互示意图; 图3为本发明实施例2中对器件升级的流程图; 图4为本发明一实施例中目标器件的升级设备的结构框图; 图5为本发明另一实施例中目标器件的升级设备的结构框图6为图5中检査单元的结构框图。
具体实施例方式
为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明的 具体实施例进行详细说明。在此,本发明的示意性实施例及其说明用于解释本 发明,但并不作为对本发明的限定。
实施例一本发明实施例提供一种成对冗余结构中器件的升级方法。如图1所示,该 方法包括如下步骤
步骤IIO,由该冗余对结构中的第二冗余单元向互为冗余对的第一冗余单元 的目标器件中写入升级代码,并通知所述第一冗余单元重启。
本发明实施例中,第一冗余单元和第二冗余单元为冗余对,并且该第一冗 余单元和第二冗余单元既可以是构成工作节点的单板,也可以是一个单板或节 点中的互为冗余的模块。
第二冗余单元将全部升级代码写入第一冗余单元的目标器件后,通知所述 第一冗余单元重启以使升级生效。
本实施例中,所述目标器件可以是BIOS等系统模块,也可以是可编程逻辑 器件(PLD),该可编程逻辑器件包括复杂的可编程逻辑器件(CPLD)。
步骤l 2G ,检査所述第一冗余单元的所述目标器件是否升级成功。
正常情况下,第一冗余单元重启后以新版本代码运行。但如果此时存在现 有技术中提到的写入的代码不完整或含有错误等问题,将导致第二冗余单元认 为升级成功了而实际上目标器件并未升级成功,即当第一冗余单元重启后即挂 死。因此,在通知第一冗余单元重启后,要在设定时间内检查所述第一冗余单 元的所述目标器件是否升级成功,该设定的时间可以是系统正常重启的最大时 间,但本发明并不限于此。
步骤13Q,如果升级不成功,利用所述第二冗余单元将所述目标器件升级前 的版本代码重新写入第一冗余单元的该目标器件,进行目标器件的恢复。
通过如上的对目标器件的升级方法,分割了成对冗余结构中器件的业务功
能归属和维护功能归属。在现有技术中,冗余单元中器件的业务功能和维护功
能一般都归属到本冗余单元的控制器,而本发明实施例中每一冗余单元中器件
的业务功能归属在本冗余单元的控制器,而对该器件的维护功能却归属到成冗
余对的另一冗余单元上,具体例如该另一冗余单元的控制器上。这样位于第二 冗余单元的器件只为本冗余单元的业务服务,若由于这些器件的软故障导致系统出现异常,那第二冗余单元就可以对第一冗余单元的器件开展维护功能。这 样既提高了系统升级的可靠性,又降低了实现复杂度,且不增加额外的成本。
实施例二
本实施例另提出一种成对冗余结构中器件的升级方法。本实施例中,成对 冗余结构为一对单板,分别称为节点A和节点B,待升级的单板称为本板,即节
点A,另一单板称为对板,即节点B。
图2为本实施例的冗余对中对板升级本板的结构示意图。图2中各节点内部 以及节点间的有向箭头代表单板升级时的数据流向,单板正常工作时的数据流 并未在图中标示。由图2中可以看出,位于节点A上的BIOS、 PLD等器件,其编程 通道实际上是由节点B提供并控制的,但正常状态下BIOS、 PLD等器件都为节点A 服务。因此从业务功能来看,节点A上的PLD等器件是归属于节点A的,而从软升 级功能,即维护功能来看,这些器件是归属于节点B的。
如图3所示,本实施例的对节点A中目标器件的软升级流程包括如下步骤
步骤310,节点B远程接收对节点A的目标器件升级所用的代码数据包,该代 码数据包中可包含有目标器件当前版本的代码和新版本的代码,即升级代码。
当节点B上未存储有节点A的待升级目标器件的代码数据时,执行该步骤。 此时,用户可通过节点B的管理接口实现远程接入,通过FTP方式或其他方式将 升级目标器件的代码数据包上传至节点B中。
如果节点B上预先存储有节点A的待升级目标器件的代码数据,该步骤省略。
步骤320,可选地,在要为节点A的目标器件进行升级时,用户可远程接入 节点A,为节点A下达关闭业务的通知。
本实施例中,所述目标器件可以是BIOS等系统模块,也可以是可编程逻辑 器件(PLD),该可编程逻辑器件包括复杂的可编程逻辑器件(CPLD)。
步骤33Q,节点B通过与节点A之间的通信接口向节点A发送升级目标器件的 消息,以通知节点A将要升级节点A上的目标器件,如PLD器件(包括CPLD器件)。
8在对节点A的目标器件进行升级时,用户可通过管理接口给节点B下达升级A
的目标器件的命令,该命令由节点B与节点A的通信接口向节点A发送,通知节点 A将要升级节点A上的目标器件。
步骤340,节点A响应来自节点B的消息,关闭正在运行的业务,所有业务关 闭完成后发送应答(ACK)消息给节点B。
节点A发送ACK消息给节点B,表示升级前的准备就绪。
步骤350,节点B收到节点A的己准备就绪的ACK消息后,将升级代码写入节 点A的目标器件,并通知节点A重启。
节点B可通过与节点A的编程通道,按照目标器件接受的数据格式将升级代 码写入目标器件。例如节点B通过JTAG编程通道按照JTAG规定的数据格式将升 级代码数据写入到节点A的CPLD器件中。
节点B在确认升级代码完全写入节点A的目标器件后,通知节点A重启以使升 级生效。例如,节点B可通过编程通道,如JTAG编程通道,校验升级的代码是否 写入完毕,确认写入完毕后通过通信接口命令节点A重启以使升级生效。
步骤360,检查节点A是否升级成功。
正常情况下,节点A重启后以新版本代码运行。但如果遇到写入的升级代码 不完整或含有错误等问题,则会存在节点B认为节点A升级成功了而实际上节点A 并未升级成功,即当节点A重启后即挂死。因此,在通知节点A重启后的设定时 间内,节点B要检查节点A是否升级成功。
在设定时间内检查节点A升级是否成功的步骤具体可为节点B采用一个超 时定时策略,即启动一个对板升级超时定时器,例如定时5分钟,并每隔若干秒 向节点A发送一次查询命令,以查询节点A的状态。如果节点A在运行,则节点A 在收到节点B的查询命令后会向节点B返回应答(ACK)消息。正常情况下,节点 A会在超时定时器设定的时间到达之前发送ACK应答消息给节点B,这就证明升级 成功。如果在超时定时器设定的时间内节点A没有应答,那么可以证明节点A重 启之后挂死了。因此本步骤中节点B通过如下方式来检査节点A是否升级成功如果在超时 定时器设定的时间(如5分钟)之内接收到节点A返回的应答消息,那么证明节
点A己经升级成功。如果在这段时间之内节点A未响应,那证明对节点A上目标器 件的升级并未成功。超时定时器设定的时间可以为系统正常关闭、重启至正常 工作状态的最大时间。
步骤380,如果节点A上目标器件的升级不成功,节点B将所述目标器件升级 前的版本重新写入节点A的该目标器件,进行目标器件的恢复。
例如,如果节点B确认节点A上目标器件的升级不成功,则直接进入强制恢 复目标器件程序,将升级前的旧代码重新写入目标器件,然后强制重启节点A。
步骤390,可选地,在重启节点A后可采用超时定时策略,即启动超时定时 器,检査目标器件是否恢复成功。
步骤400,如果恢复不成功,可再次执行步骤380,进行目标器件的恢复。 如果恢复若干次(如2次)后节点A仍然未响应,则执行步骤410。
步骤410,节点B可通过管理接口向用户告警。
在前述步骤390中,如果检查目标器件恢复成功,则节点B可再次执行歩骤3 50,重新进行节点A中所述目标器件的升级。此时步骤380之前还包括步骤370, 以限定升级的次数。
步骤370,判断升级次数是否大于设定值,如2。如果大于2,表示升级2次 还不成功,则说明系统可能有不能软修复的故障,此时节点B可通过管理接口发 送告警信息至用户,以通知技术人员前往维护。
如果节点A升级成功,可以按照与上述相同的步骤升级节点B,只不过此时 本版是节点B,对板则是节点A。在此不作赘述。
本发明实施例的如上冗余对中对板升级本板的方法,分割了冗余对中器件 的业务功能归属和维护功能归属,把平常都归属到一个控制器(如节点A的CPU) 的两个功能现在分别归属到成冗余对的本板和对板的两个独立的控制器(如分 别归属到节点A的CPU和节点B的控制器)上,位于本板的器件只为本板业务服务,
10若由于这些器件的软故障导致本板系统出现异常,那另一个正常工作的对板上 的控制器就可以对本板的器件开展维护功能。这样可大幅提高冗余对升级的可 靠性,又降低了实现复杂度且不增加额外的成本。
并且,本发明实施例的对器件的升级方法,不仅限于成冗余对的单板和单 板之间,还同样适用于一个单板上成冗余对的模块与模块之间的互操作,这将 很大程度地提高模块与模块的健壮性。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤可 以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读取存储
介质中,比如R0M/RAM、磁碟、光盘等。 实施例3
本实施例提供一种目标器件的升级设备,所述目标器件和升级设备分别位 于成冗余对的第一冗余单元和第二冗余单元中,如图4所示,该升级设备400包

代码写入单元410,用于向所述目标器件中写入升级代码,并通知所述第一 冗余单元重启。
检査单元420,用于在所述第一冗余单元重启后设定时间内检查所述目标器 件是否升级成功。
恢复单元43G,用于在所述目标器件升级不成功时,将所述目标器件升级前 的版本代码重新写入该目标器件,进行目标器件的恢复。
本发明另一实施例中,如图5所示,该升级设备400还包括
获取单元440,用于在代码写入单元向所述目标器件中写入升级代码前获取 所述目标器件的升级前的版本代码和所述升级代码。
发送单元450,用于在代码写入单元向所述目标器件中写入升级代码前向所 述第一冗余单元发送升级目标器件的命令。
本发明另一实施例中,所述升级设备还包括-调用单元460,用于在所述目标器件的恢复不成功时,调用所述恢复单元进
行目标器件的恢复,直至恢复成功或恢复达到设定的次数;
报警单元470,用于在恢复达到设定的次数后还未成功时,发出告警信息。 本发明实施例中,所述报警单元也可以连接第一检查单元,用于在对第一
冗余单元的目标器件进行若干次升级都不成功时,发出报警信息。 本发明另一实施例中,如图6所示,所述检査单元420包括 查询单元610,用于在所述第一冗余单元重启后,定期向第一冗余单元发送
查询消息;
确认单元620,如果在设定的时间内接收到第一冗余单元的应答消息,则确 认升级成功,否则确认升级失败。
本发明实施例的对目标器件的升级设备分割了成对冗余结构中器件的业务 功能归属和维护功能归属。在现有技术中,冗余单元中器件的业务功能和维护 功能一般都归属到本冗余单元的控制器,而本发明实施例中每一冗余单元中器 件的业务功能归属在本冗余单元的控制器,而对该器件的维护功能却归属到成 冗余对的另一冗余单元上,具体例如该另一冗余单元的控制器上。这样位于第 一冗余单元的器件只为本冗余单元的业务服务,若由于这些器件的软故障导致 系统出现异常,那第二冗余单元就可以对第一冗余单元的器件开展维护功能。 这样可降低实现复杂度,大幅提高冗余对升级的可靠性却不增加额外的成本。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进 一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不 用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、 等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1、一种成对冗余结构中器件的升级方法,其特征在于,包括利用该成对冗余结构中的第二冗余单元向互为冗余对的第一冗余单元的目标器件中写入升级代码,并通知所述第一冗余单元重启;检查所述第一冗余单元的所述目标器件是否升级成功;如果升级不成功,利用所述第二冗余单元将所述目标器件升级前的版本代码重新写入该目标器件,进行目标器件的恢复。
2、 根据权利要求l所述的方法,其特征在于,利用该冗余对结构中的第二 冗余单元向互为冗余对的第一冗余单元的目标器件中写入升级代码之前包括向所述第一冗余单元发送升级其目标器件的命令。
3、 根据权利要求l所述的方法,其特征在于,利用该冗余对结构中的第二 冗余单元向互为冗余对的第一冗余单元的目标器件中写入升级代码之前包括第二冗余单元获取所述目标器件的升级前的版本代码和所述升级代码。
4、 根据权利要求l所述的方法,其特征在于,还包括 检査所述目标器件的恢复是否成功;如果不成功,重复进行目标器件的恢复,直至恢复成功或恢复达到设定的 次数;如果恢复达到设定的次数后还未成功,由该第二冗余单元发出告警信息。
5、 根据权利要求l所述的方法,其特征在于,检査所述第一冗余单元的所 述目标器件是否升级成功是指在所述第一冗余单元重启后,定期向第一冗余单元发送查询消息,如果在 设定的时间内接收到第一冗余单元的应答消息,则确认升级成功;否则确认升 级失败。
6、 一种目标器件的升级设备,其特征在于,所述目标器件和升级设备分别 位于成冗余对的第一冗余单元和第二冗余单元中,该升级设备包括代码写入单元,用于向所述目标器件中写入升级代码,并通知所述第一冗余单元重启;检査单元,用于检査所述目标器件是否升级成功;恢复单元,用于在所述目标器件升级不成功时,将所述目标器件升级前的 版本代码重新写入该目标器件,进行目标器件的恢复。
7、 根据权利要求6所述的设备,其特征在于,还包括发送单元,用于在代码写入单元向所述目标器件中写入升级代码前向所述 第一冗余单元发送升级目标器件的命令。
8、 根据权利要求6所述的设备,其特征在于,还包括获取单元,用于在代码写入单元向所述目标器件中写入升级代码前获取所 述目标器件的升级前的版本代码和所述升级代码。
9、 根据权利要求8所述的设备,其特征在于,还包括-调用单元,用于在所述目标器件的恢复不成功时,调用所述恢复单元进行 目标器件的恢复,直至恢复成功或恢复达到设定的次数;报警单元,用于在恢复达到设定的次数后还未成功时,发出告警信息。
10、 根据权利要求8所述的设备,其特征在于,所述检查单元包括 查询单元,用于在所述第一冗余单元重启后,定期向第一冗余单元发送查询消息;确认单元,如果在设定的时间内接收到第一冗余单元的应答消息,则确认 升级成功,否则确认升级失败。
全文摘要
本发明实施例提供一种成对冗余结构中器件的升级方法及设备,该方法包括利用该冗余对结构中的第二冗余单元向互为冗余对的第一冗余单元的目标器件中写入升级代码,并通知所述第一冗余单元重启;检查所述第一冗余单元的所述目标器件是否升级成功;如果升级不成功,将所述目标器件升级前的版本代码重新写入该目标器件,进行目标器件的恢复。本发明实施例分割了成对冗余结构中器件的业务功能归属和维护功能归属,既提高了器件升级的可靠性,又不增加额外的成本。
文档编号G06F11/07GK101556542SQ200910141658
公开日2009年10月14日 申请日期2009年5月25日 优先权日2009年5月25日
发明者李晓初 申请人:成都市华为赛门铁克科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1