双控系统中实现启动及故障切换控制的方法和装置的制作方法

文档序号:6333485阅读:383来源:国知局
专利名称:双控系统中实现启动及故障切换控制的方法和装置的制作方法
技术领域
本发明涉及双控系统技术领域,尤其涉及一种双控系统中实现启动及故障切换控 制的方法和装置。
背景技术
现在很多机器设备的控制系统都采用双控的形式,即在系统中同时设置两个控制 器,系统启动时可单独启动一个控制器进行系统控制,当该控制器发生故障时,另一个控制 器可以接替工作;也可以同时启动两个控制器,当其中一个控制器发生故障时,另一个控制 器仍然能够正常工作,保证了系统的不间断运行和工作。双控系统一方面能同时响应多个用户需求;另一方面,由于在一个控制器发生故 障不能正常启动时,另一个控制器能够接管工作,因此增强了系统的可靠性。双控系统中, 在另一控制器接管工作的过程中,完成故障切换从而使系统从双控状态转向单控状态的方 法是一项关键技术。现有技术中,在实现故障切换和系统启动方式转换时,多依赖于硬件存储器,使得 其可扩展性较差。比如,申请号为CN200910016770. 4的发明公开了一种iSCSI协议中目标端(iSCSI Target)存储服务器在双控制器存储系统中故障切换的方法。其中,双控存储系统在发生单 个控制器故障时,将iSCSI Target服务器切换到另一控制器上,该双控存储系统的结构是 两个控制器都连接到相同的磁盘组,同时访问所有磁盘。该发明公开的方法中,当一个控制 器发生故障时,需要通过电子开关切断控制器电源以彻底隔离其对存储资源的访问。再如,申请号为CN200810157866. 8的发明公开了一种通过检测心跳对SAS与串行 传输接口(SATA)信号进行双控存储切换控制方法。其中,在双控存储中设置SAS控制器 1、SAS控制器2和复杂可编程芯片(CPLD)芯片,CPLD芯片用于检测两个控制器的心跳,具 体实现属于本领域技术人员惯用技术手段,这里不再赘述。两个SAS控制器之间通过心跳 检测来互相判断对方的工作状态。该发明公开的方法中,CPLD芯片连接控制16个以上的 SATA硬盘并通过控制信号检测两个控制器的心跳,当检测发现一方工作异常时,CPLD发送 控制信号,关掉一个控制器的与其相连接的硬盘复用器芯片,并打开另一个可能告知其的 与其相连接硬盘的复用器芯片,完成接管工作。以上两个发明公开的方法都是基于特定的硬件环境,依赖于硬件实现,在不同的 硬件环境下需要采取不同的系统启动和故障切换方法,系统的可扩展性较差,扩展成本高。

发明内容
有鉴于此,本发明的主要目的在于提供一种双控系统中实现启动及故障切换控制 的方法和装置,能够不依赖于硬件环境,通用软件控制实现单控或双控启动的选择和故障 切换,从而摆脱硬件环境的束缚,使系统结构简单易于实现,提高系统的可复用性和可扩展 性。
为达到上述目的,本发明的技术方案是这样实现的一种双控系统中实现启动及故障切换控制的方法,包括监测控制器状态,并根据 获得的控制器状态产生系统启动事件;按照产生的系统启动事件,实现单控启动,或双控启 动,或单双控间的转换。所述方法中监测控制器状态,并根据获得的控制器状态产生系统启动事件包括 系统启动时,检测对端控制器是否在位,如果不在位,产生单控启动事件;否则,产生双控启 动事件。所述双控事件包括双控同时启动事件;或者,所述单控启动事件正常启动单控 后,监测到另一控制器,产生的单控转双控中的启动另一未启动控制器事件。所述双控启动事件正常启动双控后,监测到其中一控制器发生故障,该方法还包 括产生双控转单控事件,关闭发生故障的控制器。所述实现单控启动包括初始化所述本端控制器状态,启动完成,此时系统在单控 制器下正常工作。所述实现双控启动包括初始化控制器状态,本端产生双控启动事件向对端发送; 对端产生双控启动事件,并初始化对端自身控制器状态。所述实现双控启动具体包括所述本端控制器启动时检测到对端在位,初始化本 端控制器状态,本端产生双控启动事件向对端发送;产生双控启动事件,建立双控通信通 道,两端各自转换自身控制器状态;两端控制器进行同步数据配置,完成双控启动事件并向 对端发送启动完成事件。所述实现单控转双控包括后启动一端控制器检测到对端在位,产生双控启动事 件,并向所述本端控制器发送双控启动事件;所述本端控制器检测到对端心跳,发起通道建立事件;通道建立,双控启动事件处 理完成,两端控制器同时正常工作,进入双控正常工作状态。所述双控启动事件处理完成,两端控制器同时正常工作,进入双控正常工作状态 具体包括两端控制器进行双控状态同步;所述对端控制器向本端控制器发送同步配置请求事件;本端控制器禁止用户配 置,并向对端控制器发送允许同步配置事件;所述对端控制器进行数据同步配置,并向本端控制器发送启动完成事件;所述本端控制器进行双控状态同步动作,允许用户配置,并向对端控制器发送启 动完成事件。所述实现双控转单控包括当所述本端控制器检测到对端控制器发生故障,产生 双控转单控事件,完成双转单动作,事件处理完成,系统转入单控运行状态。所述实现双控转单控具体包括在双控正常工作状态下,一端控制器发生故障,产 生所述双控转单控事件;关闭故障控制器并设置双控转单控标志位;系统双控状态修改为 单控状态。一种双控系统中实现启动及故障切换控制的装置,包括用于为两个控制器之间提 供高速互连通信接口的双控通信模块、双控状态监控模块、事件收集处理模块,以及系统启 动控制模块;其中,双控状态监控模块,用于监控系统控制器的运行状态;
5
事件收集处理模块,用于收集和处理系统中产生的事件,将处理结果通知系统启 动控制模块;系统启动控制模块,用于接收来自事件收集处理模块做出的处理结果,依据处理 结果完成单控启动、或双控启动、或单双控的转换。所述的装置中,所述系统启动控制模块,具体用于实现单控启动,初始化所述本端 控制器状态,启动完成,此时系统在单控制器下正常工作。所述的装置中,所述系统启动控制模块,具体用于实现双控启动,初始化控制器状 态,本端产生双控启动事件向对端发送;对端产生双控启动事件,并初始化对端自身控制器 状态。所述的装置中,所述系统启动控制模块,具体用于实现单控转双控,后启动一端控 制器检测到对端在位,产生双控启动事件,并向所述本端控制器发送双控启动事件;所述本 端控制器检测到对端心跳,发起通道建立事件;通道建立,双控启动事件处理完成,两端控 制器同时正常工作,进入双控正常工作状态。所述的装置中,所述系统启动控制模块,具体用于实现双控转单控,当所述本端控 制器检测到对端控制器发生故障,产生双控转单控事件,完成双转单动作,事件处理完成, 系统转入单控运行状态。通过本发明方案可见,本发明包括监测控制器状态,并根据获得的控制器状态产 生系统启动事件,按照产生的系统启动事件,实现单控启动,或双控启动,或单双控间的转 换。本发明方法通过软件控制,实现了单控或双控启动的选择和故障切换,不依赖于硬件环 境,从而摆脱了硬件环境的束缚,使系统结构简单易于实现,提高了系统的可复用性和可扩 展性。


图1为本发明双控系统中实现启动及故障切换控制的装置的组成结构示意图;图2为本发明双控系统中实现启动及故障切换控制的方法的流程图;图3为图2中步骤201的具体实现流程示意图;图4为本发明双控系统中实现启动的实施例的流程图;图5为本发明双控系统中实现单控启动的实施例的流程图;图6为本发明双控系统中实现单控转双控的实施例的流程图;图7为本发明双控系统中实现双控启动的实施例的流程图;图8为本发明双控系统中实现双控转单控的实施例的流程图。
具体实施例方式本文中,系统启动状态分为双控状态和单控状态。其中,双控状态包括系统直接启 动两个控制器,以及从单控状态转换为双控状态,后者称为单控转双控(failback)。相应 地,单控状态包括系统一次只启动一个控制器,以及从双控状态转换为单控状态,后者称为 双控转单控(failover)。其中,双控转单控实际上是一个故障切换过程,当两个同时工作的 控制器其中一个发生故障时,则产生failover事件。图1为本发明双控系统中实现启动及故障切换控制的装置的组成结构示意图,本文中,双控系统中实现启动及故障切换控制的装置也称为系统控制子系统(SCS,System Control Subsystem)。如图1所示,SCS包括双控通信模块、双控状态监控模块、事件收集 处理模块和系统启动控制模块,其中,双控通信模块是SCS最基础的模块,用于为两个控制器之间提供高速互连通信接 口,同时,对双控状态的监控,以及系统运行过程中产生的事件处理都需要通过双控通信模 块提供的通道进行交互。双控状态监控模块,用于监控系统的运行状态,包括监控双控通信模块是否正常 工作,定时检测控制器的工作状态,提供控制器状态查询接口。当双控状态监控模块监控到 系统运行中有异常事件发生时,双控状态监控模块经由双控通信模块通知事件处理模块进 行处理。事件收集处理模块,用于负责收集事件并按照事件类型进行处理,包括本端和对 端控制器产生的事件,将处理结果通知系统启动控制模块。系统启动控制模块,用于接收来自事件收集处理模块做出的处理结果,依据处理 结果完成单控启动、或双控启动、或单双控的转换。所述系统启动控制模块,具体用于实现单控启动,初始化所述本端控制器状态,启 动完成,此时系统在单控制器下正常工作。所述系统启动控制模块,具体用于实现双控启动,初始化控制器状态,向对端发送 双控启动事件;对端产生双控启动事件,并初始化对端自身控制器状态。所述系统启动控制模块,具体用于实现单控转双控,后启动一端控制器检测到对 端在位,产生双控启动事件,并向所述本端控制器发送双控启动事件;所述本端控制器检测到对端心跳,发起通道建立事件;通道建立,双控启动事件处 理完成,两端控制器同时正常工作,进入双控正常工作状态。所述系统启动控制模块,具体用于实现双控转单控,当所述本端控制器检测到对 端控制器发生故障,产生双控转单控事件,完成双转单动作,事件处理完成,系统转入单控 运行状态。图2为本发明双控系统中实现启动及故障切换控制的方法的流程图,如图2所 示,包括步骤200 监测控制器状态,根据获得的控制器状态产生系统启动事件。SCS启动时,检测对端控制器是否在位,如果不在位产生单控启动事件;否则,启 动双控启动事件。其中,双控启动事件包括两种情况,一种是双控同时启动事件,另一种是 单控转双控中的启动另一未启动控制器事件。另外还包括当双控启动后,其中一控制器发 生故障,产生双控转单控事件,关闭发生故障的控制器。本步骤中,监测控制器是否在位,属于本领域技术人员惯用技术手段,其具体实现 不用于限定本发明的保护范围,这里不再赘述。步骤201 按照产生的系统启动事件,实现单控启动,或双控启动,或单双控间的 转换。本步骤中,单控启动包括初始化本端控制器状态,启动完成,此时系统在单控制 器下正常工作;双控启动包括本端启动时监测到对端在位,初始化本端控制器状态,向对端发送双控启动事件;产生双控启动事件,并初始化自身控制器状态。单控转双控包括对端控制器向本端控制器发送双控启动事件,本端控制器检测 到对端心跳,发起通道建立事件;通道建立,双控启动事件处理完成,此时两端控制器同时 正常工作,进入双控正常工作状态;双控转单控包括当本端控制器检测到对端控制器发生故障,则产生双控转单控 即failover事件,完成双转单动作,事件处理完成,系统转入单控运行状态。图3为图2中步骤201的具体实现流程示意图,如图3所示,包括步骤300 系统启动时,双控状态监控模块监测到对端控制器不在位,或者检测到 对端控制器在位但未上电,初始化本端控制器状态为SO,准备选择单控启动。步骤301 双控状态监控模块经由双控通信模块,向事件收集处理模块发送单控 启动事件。步骤302 事件处理模块完成单控启动事件的处理,本端控制器状态由SO转为Sl。 需要说明的是单控启动的具体实现属于本领域技术人员公知技术,其具体实现不再本发明 保护范围内,也不用于限定本发明的保护范围,这里不再赘述。本发明强调的是通过SCS对 控制其的监测并产生相应的事件,并按照事件对控制器进行控制。步骤303 此时,系统在单控制器下正常工作。步骤304a 对端控制器上电,检测本端控制器在位并上电,对端控制器检测到本 端控制器心跳,初始化自身控制器状态为DO。步骤305a 对端控制器向本端控制器发送双控启动事件。步骤306a 双控启动事件处理完成,对端控制器状态由DO转为D3。步骤304b 本端控制器检测到对端心跳,发起通道建立事件。步骤305b 通道建立,双控启动事件处理完成,本端控制器状态由Sl转为D3。需要说明的是,步骤304a 步骤306a,与步骤304b 步骤305b的执行部分先后 顺序。步骤307 此时两端控制器同时正常工作,进入双控正常工作状态。步骤308 假设本端控制器检测到对端控制器发生故障,产生双控转单控事件即 failover事件,准备进行双转单动作。步骤309 完成双转单动作,事件处理完成,系统转入单控运行状态,本端控制器 状态由D3转为Si。下面结合实施例对本发明方法进行详细介绍。图4为本发明双控系统中实现启动的实施例的流程图,如图4所示,包括以下步 骤步骤400 在系统启动控制模块中,调用系统启动函数。步骤401 控制器检测对端是否在位。本步骤如果控制器检测到对端在位,则进入步骤412 初始化控制器状态机为D0, 然后进入步骤413 发送双控启动事件。如果步骤检测到对端不在位,则进入步骤422 初始化控制器状态机为S0,然后进 入步骤423 发送单控启动事件。步骤404 产生双控或单控启动事件后,启动函数结束。
图5为本发明双控系统中实现单控启动的实施例的流程图,如图5所示,包括以下 步骤步骤500 产生单控启动事件,单控事件处理函数开始。步骤501 单控事件处理函数调用各子系统初始化接口。步骤502 进行系统初始化后,控制器状态由SO变为Si,此时启动完成。步骤503 单控启动事件处理结束。图6为本发明双控系统中实现单控转双控(failback)的实施例的流程图,图6所 示failback流程既是一种启动方式,也是一个控制器故障切换的方式。开始时,假设控制 器A单独正常运行,控制器状态处于Si,控制器B未上电,如图6所示,包括以下步骤步骤601 控制器B上电后,首先检测对端(控制器A)是否在位。步骤602 控制器B检测到对端控制器A在位,则启动发送/接收心跳信号,为与 对端建立联系进行准备。步骤603 控制器B向对端发送心跳信号后,其状态初始化为DO。步骤604 控制器B完成状态初始化动作,发起双控启动事件。步骤605 控制器B启动定时器,等待建立双控通信通道。本步骤中,双控状态监控模块会定时向对端发送心跳信号,表明自身的工作状态, 并等待接收对端心跳信号,如果在定时器设定时间内收到对端心跳信号,则产生双控通道 建立事件;如果在定时时间内未收到对端心跳信号,则表明对端控制器故障或双控通道故 障,可以通过蜂鸣器报告启动故障,终止双控启动过程。步骤606 控制器A收到对端控制器B的心跳信号,发起双控通道建立事件。步骤607 控制器B收到对端控制器A的心跳信号,发起双控通道建立事件,两端 控制器的双控通道建立。步骤608:控制器A状态由Sl转换为D2,控制器B状态由DO转换为Dl。两端控 制器进行双控状态同步、版本比较等。步骤609 控制器B向对端控制器A发送同步配置请求事件。步骤610 控制器A收到控制器B发来的同步配置请求后,首先禁止用户与控制器 进行数据配置。步骤611 控制器A禁止用户配置后,向对端控制器B发送允许同步配置事件。步骤612:控制器B收到对端控制器A发来的允许同步配置事件,进行数据同步配置。步骤613 控制器B端除SCS子系统外的各子系统恢复与控制器的配置,完成启动。步骤614 控制器B向对端控制器A发送启动完成事件。步骤615:控制器A收到控制器B发来的启动完成事件,调用各子系统failback接□。步骤616 控制器A进行双控状态同步动作,将控制器状态由D2转为D3。步骤617 控制器A允许用户配置。步骤618 控制器A向对端控制器B发送启动完成事件,控制器A的流程结束。步骤619 控制器B收到对端控制器A发来的启动完成事件。
步骤620 控制器A进行双控状态同步动作,将控制器状态由Dl转为D3。步骤621 控制器B允许用户配置,双控启动过程结束。图7为本发明双控系统中实现双控启动的实施例的流程图,如图7所示,包括以下 步骤步骤700 控制器A和控制器B相互检测对端是否在位。步骤701 控制器A和控制器B分别检测到对端在位,则启动发送/接收心跳机制。步骤702 控制器A和控制器B各自将状态初始化为DO,准备建立双控启动。步骤703 控制器A和控制器B分别向对端发起双控启动事件。步骤704 控制器A和控制器B分别启动定时器,等待建立双控通信通道。步骤705 控制器A和控制器B分别发起双控通道建立事件,双控通道建立。步骤706 控制器A状态由DO转为D4,控制器B状态由DO转为D5。步骤707 控制器A和控制器B分别进行双控状态同步、版本比较等。步骤708 控制器B进行数据同步配置。步骤709 控制器B端除SCS子系统外的各子系统恢复配置,完成启动。步骤710 控制器B向对端控制器A发送启动完成事件。步骤711 控制器A收到控制器B发来的启动完成事件,除SCS子系统外的各子系
统恢复配置。步骤712 控制器A进行双控状态同步动作,将控制器状态由D4转为D3。步骤713 控制器A允许用户配置。步骤714 控制器A向对端控制器B发送启动完成事件,控制器A的流程结束。步骤715 控制器B收到对端控制器A发来的启动完成事件。步骤716 控制器A进行双控状态同步动作,将控制器A状态由D5转为D3。步骤717 控制器B允许用户配置,双控启动过程结束。图8为本发明双控系统中实现双控转单控(failover)的实施例的流程图,如图8 所示,包括以下步骤步骤800 激射两端控制器正常工作,一端控制器接收到failover事件,发现对端 控制器无法正常运行。本步骤中,双控状态监控模块持续监控对端状态,当在定时时间内未检测到对端 心跳时,则产生failover事件。步骤801 事件收集处理模块关闭对端控制器。步骤802 将对端控制器关闭后设置failover标志位。步骤803 修改系统启动状态,将双控状态转为单控状态。步骤804 通知除SCS子系统外的各子系统failover事件,流程结束。双控转单 控的过程实际上是一种故障切换过程。以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围,凡在 本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护 范围之内。
权利要求
一种双控系统中实现启动及故障切换控制的方法,其特征在于,包括监测控制器状态,并根据获得的控制器状态产生系统启动事件;按照产生的系统启动事件,实现单控启动,或双控启动,或单双控间的转换。
2.根据权利要求1所述的方法,其特征在于,所述监测控制器状态,并根据获得的控制 器状态产生系统启动事件包括系统启动时,检测对端控制器是否在位,如果不在位,产生单控启动事件;否则,产生双 控启动事件。
3.根据权利要求2所述的方法,其特征在于,所述双控事件包括双控同时启动事件; 或者,所述单控启动事件正常启动单控后,监测到另一控制器,产生的单控转双控中的启动 另一未启动控制器事件。
4.根据权利要求2或3所述的方法,其特征在于,所述双控启动事件正常启动双控后, 监测到其中一控制器发生故障,该方法还包括产生双控转单控事件,关闭发生故障的控制ο
5.根据权利要求1所述的方法,其特征在于,所述实现单控启动包括初始化所述本端 控制器状态,启动完成,此时系统在单控制器下正常工作。
6.根据权利要求1所述的方法,其特征在于,所述实现双控启动包括初始化控制器状 态,本端产生双控启动事件向对端发送;对端产生双控启动事件,并初始化对端自身控制器状态。
7.根据权利要求6所述的方法,其特征在于,所述实现双控启动具体包括所述本端控制器启动时检测到对端在位,初始化本端控制器状态,本端产生双控启动 事件向对端发送;产生双控启动事件,建立双控通信通道,两端各自转换自身控制器状态;两端控制器进行同步数据配置,完成双控启动事件并向对端发送启动完成事件。
8.根据权利要求1或5所述的方法,其特征在于,所述实现单控转双控包括后启动一 端控制器检测到对端在位,产生双控启动事件,并向所述本端控制器发送双控启动事件;所述本端控制器检测到对端心跳,发起通道建立事件;通道建立,双控启动事件处理完 成,两端控制器同时正常工作,进入双控正常工作状态。
9.根据权利要求8所述的方法,其特征在于,所述双控启动事件处理完成,两端控制器 同时正常工作,进入双控正常工作状态具体包括两端控制器进行双控状态同步;所述对端控制器向本端控制器发送同步配置请求事件;本端控制器禁止用户配置,并 向对端控制器发送允许同步配置事件;所述对端控制器进行数据同步配置,并向本端控制器发送启动完成事件;所述本端控制器进行双控状态同步动作,允许用户配置,并向对端控制器发送启动完 成事件。
10.根据权利要求1或6所述的方法,其特征在于,所述实现双控转单控包括当所述 本端控制器检测到对端控制器发生故障,产生双控转单控事件,完成双转单动作,事件处理 完成,系统转入单控运行状态。
11.根据权利要求10所述的方法,其特征在于,所述实现双控转单控具体包括在双控正常工作状态下,一端控制器发生故障,产生所述双控转单控事件;关闭故障控制器并设置双控转单控标志位;系统双控状态修改为单控状态。
12.一种双控系统中实现启动及故障切换控制的装置,其特征在于,包括用于为两个控 制器之间提供高速互连通信接口的双控通信模块、双控状态监控模块、事件收集处理模块, 以及系统启动控制模块;其中,双控状态监控模块,用于监控系统控制器的运行状态;事件收集处理模块,用于收集和处理系统中产生的事件,将处理结果通知系统启动控 制模块;系统启动控制模块,用于接收来自事件收集处理模块做出的处理结果,依据处理结果 完成单控启动、或双控启动、或单双控的转换。
13.根据权利要求12所述的装置,其特征在于,所述系统启动控制模块,具体用于实现 单控启动,初始化所述本端控制器状态,启动完成,此时系统在单控制器下正常工作。
14.根据权利要求12所述的装置,其特征在于,所述系统启动控制模块,具体用于实现 双控启动,初始化控制器状态,本端产生双控启动事件向对端发送;对端产生双控启动事件,并初始化对端自身控制器状态。
15.根据权利要求12所述的装置,其特征在于,所述系统启动控制模块,具体用于实现 单控转双控,后启动一端控制器检测到对端在位,产生双控启动事件,并向所述本端控制器 发送双控启动事件;所述本端控制器检测到对端心跳,发起通道建立事件;通道建立,双控启动事件处理完 成,两端控制器同时正常工作,进入双控正常工作状态。
16.根据权利要求12所述的装置,其特征在于,所述系统启动控制模块,具体用于实现 双控转单控,当所述本端控制器检测到对端控制器发生故障,产生双控转单控事件,完成双 转单动作,事件处理完成,系统转入单控运行状态。
全文摘要
本发明公开了一种双控系统中实现启动及故障切换控制的方法和装置,本发明包括监测控制器状态,并根据获得的控制器状态产生系统启动事件,按照产生的系统启动事件,实现单控启动,或双控启动,或单双控间的转换。本发明方法通过软件控制,实现了单控或双控启动的选择和故障切换,不依赖于硬件环境,从而摆脱了硬件环境的束缚,使系统结构简单易于实现,提高了系统的可复用性和可扩展性。
文档编号G06F11/16GK101957786SQ20101050358
公开日2011年1月26日 申请日期2010年9月30日 优先权日2010年9月30日
发明者杨曦, 陶林君 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1