CN118820008B - 一种监控控制器状态的方法、装置及电子设备 - Google Patents
一种监控控制器状态的方法、装置及电子设备 Download PDFInfo
- Publication number
- CN118820008B CN118820008B CN202410820887.2A CN202410820887A CN118820008B CN 118820008 B CN118820008 B CN 118820008B CN 202410820887 A CN202410820887 A CN 202410820887A CN 118820008 B CN118820008 B CN 118820008B
- Authority
- CN
- China
- Prior art keywords
- controller
- state
- resource agent
- abnormal
- disk information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3034—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a storage system, e.g. DASD based or network based
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3055—Monitoring arrangements for monitoring the status of the computing system or of the computing system component, e.g. monitoring if the computing system is on, off, available, not available
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Debugging And Monitoring (AREA)
- Hardware Redundancy (AREA)
Abstract
本发明公开了一种监控控制器状态的方法。所述方法包括:使控制器组中在线的控制器,获取存储系统的状态;根据存储系统的状态,判断对端控制器是否在线;如果对端控制器在线,则分别获取本端控制器中的磁盘信息和对端控制器中的磁盘信息;根据本端控制器中的磁盘信息和对端控制器中的磁盘信息,确定控制器组中的控制器状态是否正常;如果对端控制器不在线,则判断对端控制器是否发生脑裂;如果对端发生脑裂,则利用仲裁系统对对端控制器进行仲裁;根据仲裁结果,确定控制器组中的控制器状态是否正常;如果对端未发生脑裂,则确定控制器组中的控制器状态均正常。本发明还公开了用于实现所述方法的装置、电子设备及存储介质。
Description
技术领域
本发明涉及计算机存储技术领域,尤其涉及一种监控控制器状态的方法、装置及电子设备。
背景技术
存储系统,比如磁盘阵列通常包括多个硬盘,然后通过一个或多个控制器协同管理各硬盘,当其中某个控制器失效后,可以将其所负责的管理任务转移到其他控制器上进行处理,避免因控制器的失效而导致的无法对存储系统进行读/写操作的问题,从而提高存储系统的可靠性;而当该控制器恢复正常后,将之前被转移的管理任务再交还给该控制器,使得整个存储系统各控制器间协同工作,避免一个控制器长期负担多个控制器的任务,而影响存储系统的性能和控制器的使用寿命的问题。而为了实现当控制器失效时,该控制器所负责的管理任务能被及时接管,当失效的控制器恢复后,该控制器所负责的管理任务能被及时归还;就需要对控制器组中的各控制器的状态进行实时的监控。但是,发明人发现,现有的监控控制器状态的方法,通常是通过监控控制器的硬件状态来实现的,例如,监控控制器的中央处理器状态,如果控制器的中央处理器状态出现异常,则认为控制器失效。
发明内容
本发明实施例提供一种监控控制器状态的方法、装置及电子设备,用于实现以软件监控的方式,对控制器的状态进行高效监控,提高存储系统的稳定性和可靠性。
具体技术方案如下:
第一方面,本发明实施例提供了一种监控控制器状态的方法,应用于存储系统,所述存储系统中包括:一个控制器组和一个共享磁盘框;所述控制器组中包括:第一控制器和第二控制器;所述共享磁盘框至少包括一个磁盘;所述方法,包括:
使所述控制器组中在线的控制器,获取所述存储系统的状态;其中,所述存储系统的状态包括:在线控制器的数量和标识;所述在线的控制器为处于工作状态的控制器;
根据所述存储系统的状态,判断对端控制器是否在线;
如果对端控制器在线,则分别获取本端控制器中的磁盘信息和对端控制器中的磁盘信息;根据本端控制器中的磁盘信息和对端控制器中的磁盘信息,确定所述控制器组中的控制器状态是否正常;
如果对端控制器不在线,则判断所述对端控制器是否发生脑裂;如果所述对端发生脑裂,则利用仲裁系统对对端控制器进行仲裁;根据仲裁结果,确定所述控制器组中的控制器状态是否正常;如果所述对端未发生脑裂,则确定所述控制器组中的控制器状态均正常。
可选的,所述根据本端控制器中的磁盘信息和对端控制器中的磁盘信息,确定所述控制器组中的控制器状态是否正常的步骤,包括:
判断本端控制器中的磁盘信息和对端控制器中的磁盘信息是否一致;
如果是,则确定所述控制器组中的控制器状态均正常;
如果否,则确定本端控制器和对端控制器中不一致的磁盘信息,并发出磁盘异步告警信息;分别获取本端控制器和对端控制器中已使用的磁盘的磁盘信息;判断本端控制器中已使用磁盘的磁盘信息和所述对端控制器中已使用磁盘的磁盘信息是否一致;如果是,则确定所述控制器组中的控制器状态均正常;如果否,则根据磁盘的用途,分别判断本端控制器和所述对端控制器中,已使用的磁盘中有效磁盘的数量是否相等;如果相等且本端控制器为所述第一控制器,则确定所述控制器组中的控制器状态均正常;如果相等且本端控制器为所述第二控制器,则确定所述控制器组中的控制器状态异常;如果本端控制器中已使用的磁盘中有效磁盘的数量多于对端控制器,则确定所述控制器组中的控制器状态均正常;如果本端控制器中已使用的磁盘中有效磁盘的数量少于对端控制器,则确定所述控制器组中的控制器状态异常。
可选的,所述根据仲裁结果,确定所述控制器组中的控制器状态是否正常的步骤,包括:
如果仲裁成功,则确定所述控制器组中的控制器状态均正常;
如果仲裁失败,则确定所述控制器组中的控制器状态异常。
可选的,所述第一控制器和第二控制器,均包括以下状态:
starting状态;表示控制器上的资源代理程序正在启动;其中,所述starting状态为临时状态,若控制器处于该状态的时长超过预设的时长,则表明所述控制器状态异常,需要发出状态异常告警信息;
started状态;表示控制器上的资源代理程序启动成功;
stopping状态;表示控制器上的资源代理程序正在停止;其中,stopping状态为临时状态,若控制器处于该状态的时长超过预设的时长,则表明所述控制器状态异常,需要发出状态异常告警信息;
stopped状态;表示控制器上的资源代理程序停止成功,或控制器上的资源代理程序在所述第一控制器和所述第二控制器上均启动失败;
unmanaged状态;表示控制器上的资源代理程序进入异常状态,需要监控系统发出异常告警信息。
可选的,所述存储系统的状态由所述第一控制器和所述第二控制器的状态决定;其中,所述第一控制器对应的资源代理程序为第一资源代理程序,第二控制器对应的资源代理程序为第二资源代理程序;
当所述第一资源代理程序在所述第一控制器上为started状态,且所述第二资源代理程序在所述第二控制器上为started状态时,则确认所述存储系统的状态为正常状态;
当所述第一资源代理程序和所述第二资源代理程序均在所述第一控制器上为started状态时,则确认所述存储系统的状态为正常状态;其中,所述第二控制器异常,所述第一控制器已成功接管所述第二资源代理程序;
当所述第一资源代理程序和所述第二资源代理程序均在所述第二控制器上为started状态时,则确认所述存储系统的状态为正常状态;其中,所述第一控制器异常,所述第二控制器已成功接管所述第一资源代理程序;
当所述第一资源代理程序在所述第一控制器上为started状态,所述第二资源代理程序为stopped状态时,则确认所述存储系统的状态为异常状态;其中,所述第二控制器异常,且所述第一控制器接管所述第二资源代理程序失败;
当所述第二资源代理程序在所述第二控制器上为started状态,所述第一资源代理程序为stopped状态时,则确认所述存储系统的状态为异常状态;其中,所述第一控制器异常,且所述第二控制器接管所述第一资源代理程序失败;
当所述第一资源代理程序在所述第二控制器上为started状态,所述第二资源代理程序为stopped状态时,则确认所述存储系统的状态为异常状态;其中,所述第一控制器和所述第二控制器均处于异常状态,所述第二控制器已接管所述第一资源代理程序;
当所述第二资源代理程序在所述第一控制器上为started状态,所述第一资源代理程序为stopped状态时,则确认所述存储系统的状态为异常状态;其中,所述第一控制器和所述第二控制器均处于异常状态,所述第一控制器已接管所述第二资源代理程序;
当所述第一资源代理程序和所述第二资源代理程序均处于stopped状态时,则确认所述存储系统的状态为异常状态;
当所述第一资源代理程序和所述第二资源代理程序均在所述第一控制器和所述第二控制器上处于started状态时,则确认所述存储系统的状态为异常状态;其中,所述仲裁系统异常,所述存储系统发生脑裂。
可选的,所述控制器上的资源代理程序启动的过程为:
使所述控制器组中的控制器,获取本端控制器中的磁盘信息及本端控制器中已使用磁盘的磁盘信息;
如果获取成功,则获取本端控制器的标识信息;判断待启动的资源代理程序对应的控制器的标识信是否与本端控制器的标识信息相同;如果待启动的资源代理程序对应的控制器的标识信与本端控制器的标识信息相同,则获取本端控制器中已使用磁盘的磁盘信息;判断本端控制器中的磁盘信息是否完全包含本端控制器已使用磁盘的磁盘信息;如果完全包含,则确认所述待启动的资源代理程序启动成功;如果不完全包含,则确认所述待启动的资源代理程序启动失败;如果待启动的资源代理程序对应的控制器的标识信与本端控制器的标识信息不相同,则获取对端控制器中已使用磁盘的磁盘信息;判断本端控制器中的磁盘信息是否完全包含对端控制器已使用磁盘的磁盘信息;如果完全包含,则确认所述待启动的资源代理程序启动成功并发出接管通知;如果不完全包含,则确认所述待启动的资源代理程序启动失败;
如果获取失败,则确认所述待启动的资源代理程序启动失败。
可选的,所述控制器上的资源代理程序停止的方式为:
利用stop方法停止控制器上的资源代理程序;其中,所述stop方法为空操作方法。
第二方面,本发明实施例提供了一种监控控制器状态的装置,所述装置,包括:
获取模块,用于使所述控制器组中在线的控制器,获取所述存储系统的状态;其中,所述存储系统的状态包括:在线控制器的数量和标识;所述在线的控制器为处于工作状态的控制器;
判断模块,用于根据所述存储系统的状态,判断对端控制器是否在线;
第一确定模块,用于当对端控制器在线时,分别获取本端控制器中的磁盘信息和对端控制器中的磁盘信息;根据本端控制器中的磁盘信息和对端控制器中的磁盘信息,确定所述控制器组中的控制器状态是否正常;
第二确定模块,用于当对端控制器不在线,判断所述对端控制器是否发生脑裂;如果所述对端发生脑裂,则利用仲裁系统对对端控制器进行仲裁;根据仲裁结果,确定所述控制器组中的控制器状态是否正常;如果所述对端未发生脑裂,则确定所述控制器组中的控制器状态均正常。
可选的,所述第一确定模块,具体用于:
判断本端控制器中的磁盘信息和对端控制器中的磁盘信息是否一致;
如果是,则确定所述控制器组中的控制器状态均正常;
如果否,则确定本端控制器和对端控制器中不一致的磁盘信息,并发出磁盘异步告警信息;分别获取本端控制器和对端控制器中已使用的磁盘的磁盘信息;判断本端控制器中已使用磁盘的磁盘信息和所述对端控制器中已使用磁盘的磁盘信息是否一致;如果是,则确定所述控制器组中的控制器状态均正常;如果否,则根据磁盘的用途,分别判断本端控制器和所述对端控制器中,已使用的磁盘中有效磁盘的数量是否相等;如果相等且本端控制器为所述第一控制器,则确定所述控制器组中的控制器状态均正常;如果相等且本端控制器为所述第二控制器,则确定所述控制器组中的控制器状态异常;如果本端控制器中已使用的磁盘中有效磁盘的数量多于对端控制器,则确定所述控制器组中的控制器状态均正常;如果本端控制器中已使用的磁盘中有效磁盘的数量少于对端控制器,则确定所述控制器组中的控制器状态异常。
可选的,所述第二确定模块,具体用于:
当仲裁成功时,确定所述控制器组中的控制器状态均正常;
当仲裁失败时,确定所述控制器组中的控制器状态异常。
可选的,所述第一控制器和第二控制器,均包括以下状态:
starting状态;表示控制器上的资源代理程序正在启动;其中,所述starting状态为临时状态,若控制器处于该状态的时长超过预设的时长,则表明所述控制器状态异常,需要发出状态异常告警信息;
started状态;表示控制器上的资源代理程序启动成功;
stopping状态;表示控制器上的资源代理程序正在停止;其中,stopping状态为临时状态,若控制器处于该状态的时长超过预设的时长,则表明所述控制器状态异常,需要发出状态异常告警信息;
stopped状态;表示控制器上的资源代理程序停止成功,或控制器上的资源代理程序在所述第一控制器和所述第二控制器上均启动失败;
unmanaged状态;表示控制器上的资源代理程序进入异常状态,需要监控系统发出异常告警信息。
可选的,所述存储系统的状态由所述第一控制器和所述第二控制器的状态决定;其中,所述第一控制器对应的资源代理程序为第一资源代理程序,第二控制器对应的资源代理程序为第二资源代理程序;
当所述第一资源代理程序在所述第一控制器上为started状态,且所述第二资源代理程序在所述第二控制器上为started状态时,则确认所述存储系统的状态为正常状态;
当所述第一资源代理程序和所述第二资源代理程序均在所述第一控制器上为started状态时,则确认所述存储系统的状态为正常状态;其中,所述第二控制器异常,所述第一控制器已成功接管所述第二资源代理程序;
当所述第一资源代理程序和所述第二资源代理程序均在所述第二控制器上为started状态时,则确认所述存储系统的状态为正常状态;其中,所述第一控制器异常,所述第二控制器已成功接管所述第一资源代理程序;
当所述第一资源代理程序在所述第一控制器上为started状态,所述第二资源代理程序为stopped状态时,则确认所述存储系统的状态为异常状态;其中,所述第二控制器异常,且所述第一控制器接管所述第二资源代理程序失败;
当所述第二资源代理程序在所述第二控制器上为started状态,所述第一资源代理程序为stopped状态时,则确认所述存储系统的状态为异常状态;其中,所述第一控制器异常,且所述第二控制器接管所述第一资源代理程序失败;
当所述第一资源代理程序在所述第二控制器上为started状态,所述第二资源代理程序为stopped状态时,则确认所述存储系统的状态为异常状态;其中,所述第一控制器和所述第二控制器均处于异常状态,所述第二控制器已接管所述第一资源代理程序;
当所述第二资源代理程序在所述第一控制器上为started状态,所述第一资源代理程序为stopped状态时,则确认所述存储系统的状态为异常状态;其中,所述第一控制器和所述第二控制器均处于异常状态,所述第一控制器已接管所述第二资源代理程序;
当所述第一资源代理程序和所述第二资源代理程序均处于stopped状态时,则确认所述存储系统的状态为异常状态;
当所述第一资源代理程序和所述第二资源代理程序均在所述第一控制器和所述第二控制器上处于started状态时,则确认所述存储系统的状态为异常状态;其中,所述仲裁系统异常,所述存储系统发生脑裂。
可选的,该装置,还包括:程序启动模块,用于:
使所述控制器组中的控制器,获取本端控制器中的磁盘信息及本端控制器中已使用磁盘的磁盘信息;
如果获取成功,则获取本端控制器的标识信息;判断待启动的资源代理程序对应的控制器的标识信是否与本端控制器的标识信息相同;如果待启动的资源代理程序对应的控制器的标识信与本端控制器的标识信息相同,则获取本端控制器中已使用磁盘的磁盘信息;判断本端控制器中的磁盘信息是否完全包含本端控制器已使用磁盘的磁盘信息;如果完全包含,则确认所述待启动的资源代理程序启动成功;如果不完全包含,则确认所述待启动的资源代理程序启动失败;如果待启动的资源代理程序对应的控制器的标识信与本端控制器的标识信息不相同,则获取对端控制器中已使用磁盘的磁盘信息;判断本端控制器中的磁盘信息是否完全包含对端控制器已使用磁盘的磁盘信息;如果完全包含,则确认所述待启动的资源代理程序启动成功并发出接管通知;如果不完全包含,则确认所述待启动的资源代理程序启动失败;
如果获取失败,则确认所述待启动的资源代理程序启动失败。
可选的,该装置,还包括:程序停止模块,用于:
利用stop方法停止控制器上的资源代理程序;其中,所述stop方法为空操作方法。
第三方面,本发明实施例还提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,所述处理器,所述通信接口,所述存储器通过所述通信总线完成相互间的通信;
所述存储器,用于存放计算机程序;
所述处理器,用于执行所述存储器上所存放的程序时,实现上述第一方面所述的监控控制器状态的方法步骤。
第四方面,本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面所述的监控控制器状态的方法步骤。
由上述可知,本发明实施例所提供的方法,可以实现使所述控制器组中在线的控制器,获取所述存储系统的状态;根据所述存储系统的状态,判断对端控制器是否在线;如果对端控制器在线,则分别获取本端控制器中的磁盘信息和对端控制器中的磁盘信息;根据本端控制器中的磁盘信息和对端控制器中的磁盘信息,确定所述控制器组中的控制器状态是否正常;如果对端控制器不在线,则判断所述对端控制器是否发生脑裂;如果所述对端发生脑裂,则利用仲裁系统对对端控制器进行仲裁;根据仲裁结果,确定所述控制器组中的控制器状态是否正常;如果所述对端未发生脑裂,则确定所述控制器组中的控制器状态均正常。因此,实施本发明实施例所提供的方法,可以实现以软件监控的方式,对控制器的状态进行高效监控,进而提高存储系统的稳定性和可靠性。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
图1为本发明实施例提供的监控控制器状态的方法的一种流程示意图;
图2为本发明实施例提供的控制器上的资源代理程序启动过程的一种流程示意图;
图3为本发明实施例提供的监控控制器状态的方法的另一种流程示意图;
图4为本发明实施例提供的监控控制器状态的装置的一种结构示意图;
图5为本发明实施例提供的电子设备的一种内部结构示意图。
具体实施方式
以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
本发明在实现对双控存储系统中控制器的状态进行监控之前,先基于pacemaker和Corosync为该双控存储系统编写了一个HA资源代理,用来实现资源代理程序的start(启动),stop(停止),monitor(监控)方法。其中,HA是High Available缩写,在本发明中双控存储系统指的是包含两个控制器的存储系统;HA指的是红帽高可用性开源组件;资源代理(resource-agent)本质上是一个按照HA给定的接口标准设计的程序,该程序可作为HA的资源进行高可用性管理,比如,用来实现资源启动、停止、监控等等;资源指的是运行的资源代理程序。
pacemaker:原Heartbeat拆分出来的资源管理器,用来管理整个HA的控制中心,客户端通过pacemaker来配置管理监控整个存储系统。pacemaker不能提供底层心跳信息传递的功能,它要想与对方节点通信需要借助底层(新拆分的heartbeat或corosync)的心跳传递服务,将信息通告给对方。
Corosync是整合底层节点提供API个pacemaker的一个中间层;Corosync在传递信息的时候可以通过一个简单的配置文件来定义信息传递的方式和协议等。
在具体实施例例中,资源代理名称可以为RedStor2,使用方法为:将资源代理程序的文件名称命名为RedStor2,放入/usr/lib/ocf/resource.d/heartbeat/目录后,创建资源时通过ocf:heartbeat:RedStor2指定资源代理。
在本发明中的资源代理是按照HA资源代理的要求来实现的。本发明是依据以下思路实现对双控存储系统中控制器的状态进行监控的:
资源代理程序如果可以正常运行,则说明控制器具备运行程序的条件即控制器的状态正常。
控制器识别到的磁盘完全包含控制器已经使用的磁盘,则可视为资源代理程序启动成功。在本发明中是通过已使用磁盘作为判断资源代理程序是否启动成功的条件,这样与存储业务相关联控制资源代理程序启动的方式灵活性更高。
利用磁盘信息一致性作为监控控制器状态的条件。在双控存储系统中,两个控制器上的磁盘均可被识别,因而,磁盘信息的一致性可以被用来作为控制器状态的判定条件。由于同一块磁盘的WWN(world wide number,硬件的全球唯一标识)是固定不变的,因此可以通过/dev/disk/by-id/wwn-x...xx的磁盘链接文件作为一致性判断的依据。
在本发明中,start方法的核心是确保本端控制器识别到的磁盘完全包含已经使用的磁盘,使双控存储系统可以提供储存业务。要实现这一目的,就需要双控储存系统在使用磁盘时能够准确分别在两个控制器上都记录磁盘的使用信息。
在本发明中,stop方法是一个空操作方法,即不需要执行任何操作就返回操作成功。这样设计是由于以下原因:1、start方法中不涉及启动资源代理程序的操作,因而不存在逆向操作。2、直接返回操作成功会使得资源代理程序更加健壮,不会因为stop方法失败而导致资源进入异常状态,例如:资源停止失败,HA将会把资源设置为unmanaged状态等待管理员介入,不再管理该资源。3、符合使用资源代理程序的运行状态来代表控制器状态的最终目的,只要控制器具备运行程序的状态,资源代理程序要一直能运行。
Pacemaker的资源主要有两类,即LSB和OCF。其中,LSB即Linux标准服务,通常为/etc/init.d目录下的一些脚本。Pacemaker可以用这些脚本来启停资源代理服务;可以通过指令crm ra list lsb看到当前支持的资源。OCF实际上是对LSB服务的扩展,相较于LSB增加了一些高可用集群管理的功能(如故障监控等)和更多的元信息;可以通过指令crm ralist ocf看到当前支持的资源。要让pacemaker可以很好的对服务进行高可用保障就得实现一个OCF资源,因此,在本发明中,使用的就是OCF标准下的资源代理。
图1为本发明实施例提供的监控控制器状态的方法的一种流程示意图,该方法,应用于存储系统,该存储系统为双控存储系统,该存储系统中包括:一个控制器组和一个共享磁盘框;控制器组中包括:第一控制器和第二控制器;共享磁盘框至少包括一个磁盘;该方法,包括:
S101:使控制器组中在线的控制器,获取存储系统的状态;其中,存储系统的状态包括:在线控制器的数量和标识;在线的控制器为处于工作状态的控制器;
获取存储系统的状态,也就是获取HA的状态。
具体的,本发明实施例所提供的监控方法,可以通过一个脚本程序,即资源代理RedStor2来实现。
S102:根据存储系统的状态,判断对端控制器是否在线;如果对端控制器在线,则执行步骤S103;如果对端控制器不在线,则执行步骤S104;
对端控制器指的是相对于本端控制器的另外一个控制器。
可通过HA的状态中的节点数量和节点名称来判断,比如,节点数量为1则代表只有本端控制器在线,为2则代表连个控制器都在线,其中,节点指的就是控制器。
在具体实施例中,如果对端控制器在线,则直接跳过脑裂检查这一步,直接执行分别获取本端控制器中的磁盘信息和对端控制器中的磁盘信息的步骤;如果对端控制器离线,即对端控制器不在线,则需要借助脑裂系统判断对端控制器是否处于脑裂状态,若未脑裂说明对端控制器离线,返回资源正常,若发生脑裂,则需要通过仲裁系统的仲裁结果,让仲裁成功的节点返回资源正常,仲裁失败的节点返回资源异常。若HA本身已经配置仲裁系统(fence设备),则忽略该步骤,因为脑裂发生时HA已经将仲裁失败的节点爆头(stonith)。其中,脑裂指的是控制器之间的通路出现了问题,也就是说控制器其实是正常的,但是检测不到对方的存在,所以两个控制器都会尝试接管对方的存储资源,类似于精神分裂。
S103:分别获取本端控制器中的磁盘信息和对端控制器中的磁盘信息;根据本端控制器中的磁盘信息和对端控制器中的磁盘信息,确定控制器组中的控制器状态是否正常;
在具体实施例中,根据本端控制器中的磁盘信息和对端控制器中的磁盘信息,确定控制器组中的控制器状态是否正常的步骤,包括:
判断本端控制器中的磁盘信息和对端控制器中的磁盘信息是否一致;
如果是,则确定控制器组中的控制器状态均正常;
如果否,则确定本端控制器和对端控制器中不一致的磁盘信息,并发出磁盘异步告警信息;分别获取本端控制器和对端控制器中已使用的磁盘的磁盘信息;判断本端控制器中已使用磁盘的磁盘信息和对端控制器中已使用磁盘的磁盘信息是否一致;如果是,则确定控制器组中的控制器状态均正常;如果否,则根据磁盘的用途,分别判断本端控制器和对端控制器中,已使用的磁盘中有效磁盘的数量是否相等;如果相等且本端控制器为第一控制器,则确定控制器组中的控制器状态均正常;如果相等且本端控制器为第二控制器,则确定控制器组中的控制器状态异常;如果本端控制器中已使用的磁盘中有效磁盘的数量多于对端控制器,则确定控制器组中的控制器状态均正常;如果本端控制器中已使用的磁盘中有效磁盘的数量少于对端控制器,则确定控制器组中的控制器状态异常。
在实际应用中,磁盘的有效性需要根据磁盘的具体用途来做判断,如在RAID场景下,可以根据磁盘可运行的RAID数量、RAID的业务优先级等作为评判磁盘有效性的标准,用来判断磁盘的有效性。在本发明实施例中,如果本端控制器中有效磁盘的数量多,则返回资源代理程序状态正常;如果对端制器中有效磁盘的数量多,则返回资源代理程序状态异常;如果本端控制器和对端制器中有效磁盘的数量一样多,则只允许资源代理程序运行在第一控制器上。这是因为虽然本端控制器和对端制器中有效磁盘的数量一样多,但是本端控制器和对端制器中的磁盘信息已经不一致了,所以只能尽量让可运行的资源代理程序运行。
S104:判断对端控制器是否发生脑裂;如果对端发生脑裂,则利用仲裁系统对对端控制器进行仲裁;根据仲裁结果,确定控制器组中的控制器状态是否正常;如果对端未发生脑裂,则确定控制器组中的控制器状态均正常。
在具体实施例中,根据仲裁结果,确定控制器组中的控制器状态是否正常的步骤,可以包括:
如果仲裁成功,则确定控制器组中的控制器状态均正常;
如果仲裁失败,则确定控制器组中的控制器状态异常。
在一种具体的实施例中,本发明中双控存储系统中控制器组中的控制器,即第一控制器和第二控制器,可以均包括以下几种状态:
starting状态;表示控制器上的资源代理程序正在启动;其中,starting状态为临时状态,若控制器处于该状态的时长超过预设的时长,则表明控制器状态异常,需要发出状态异常告警信息;
started状态;表示控制器上的资源代理程序启动成功;
stopping状态;表示控制器上的资源代理程序正在停止;其中,stopping状态为临时状态,若控制器处于该状态的时长超过预设的时长,则表明控制器状态异常,需要发出状态异常告警信息;
stopped状态;表示控制器上的资源代理程序停止成功,或控制器上的资源代理程序在第一控制器和第二控制器上均启动失败;
unmanaged状态;表示控制器上的资源代理程序进入异常状态,需要监控系统发出异常告警信息。其中,异常告警信息用于当两个控制器中的磁盘信息不一致时发出异步告警,异步告警不过多占用监控时间。
在本发明中,存储系统的状态是由第一控制器和第二控制器的状态决定;其中,第一控制器对应的资源代理程序为第一资源代理程序,第二控制器对应的资源代理程序为第二资源代理程序;
当第一资源代理程序在第一控制器上为started状态,且第二资源代理程序在第二控制器上为started状态时,则确认存储系统的状态为正常状态;
当第一资源代理程序和第二资源代理程序均在第一控制器上为started状态时,则确认存储系统的状态为正常状态;其中,第二控制器异常,第一控制器已成功接管第二资源代理程序;
当第一资源代理程序和第二资源代理程序均在第二控制器上为started状态时,则确认存储系统的状态为正常状态;其中,第一控制器异常,第二控制器已成功接管第一资源代理程序;
当第一资源代理程序在第一控制器上为started状态,第二资源代理程序为stopped状态时,则确认存储系统的状态为异常状态;其中,第二控制器异常,且第一控制器接管第二资源代理程序失败;
当第二资源代理程序在第二控制器上为started状态,第一资源代理程序为stopped状态时,则确认存储系统的状态为异常状态;其中,第一控制器异常,且第二控制器接管第一资源代理程序失败;
当第一资源代理程序在第二控制器上为started状态,第二资源代理程序为stopped状态时,则确认存储系统的状态为异常状态;其中,第一控制器和第二控制器均处于异常状态,第二控制器已接管第一资源代理程序;
当第二资源代理程序在第一控制器上为started状态,第一资源代理程序为stopped状态时,则确认存储系统的状态为异常状态;其中,第一控制器和第二控制器均处于异常状态,第一控制器已接管第二资源代理程序;
当第一资源代理程序和第二资源代理程序均处于stopped状态时,则确认存储系统的状态为异常状态;
当第一资源代理程序和第二资源代理程序均在第一控制器和第二控制器上处于started状态时,则确认存储系统的状态为异常状态;其中,仲裁系统异常,存储系统发生脑裂。
由图1所示的实施例可知,本发明实施例所提供的方法,可以实现使控制器组中在线的控制器,获取存储系统的状态;根据存储系统的状态,判断对端控制器是否在线;如果对端控制器在线,则分别获取本端控制器中的磁盘信息和对端控制器中的磁盘信息;根据本端控制器中的磁盘信息和对端控制器中的磁盘信息,确定控制器组中的控制器状态是否正常;如果对端控制器不在线,则判断对端控制器是否发生脑裂;如果对端发生脑裂,则利用仲裁系统对对端控制器进行仲裁;根据仲裁结果,确定控制器组中的控制器状态是否正常;如果对端未发生脑裂,则确定控制器组中的控制器状态均正常。因此,实施本发明实施例所提供的方法,可以实现以软件监控的方式,对控制器的状态进行高效监控,进而提高存储系统的稳定性和可靠性。
下面将列举一个的例子,对本发明实施例所提供的方法,做进一步详细的说明。
在本实施例中,HA资源代理的名称为RedStor2,利用RedStor2分别为第一控制器和第二控制器创建资源代理程序,其中,分别将第一控制器对应的资源代理程序命名为c1,将第二控制器对应的资源代理程序命名为c2。在本实施例中,为了确保资源和归属控制器总是优先绑定,因而为资源代理程序设置了资源位置约束(Location Constraints),其中,资源代理程序在归属控制器上的位置约束分数为INFINITY(无穷),在对端控制器上的位置约束分数为0。位置约束一旦设定,c1将优先运行在第一控制器上,c2将优先运行在第二控制器上。归属控制器指的是于资源代理程序绑定的控制器。
资源代理程序的运行状态即为控制器状态,本实施例中,资源代理程序的运行状态包括starting、started、stoped、stopping及unmanaged状态,其中,
starting状态;表示控制器上的资源代理程序正在启动;其中,starting状态为临时状态,若控制器处于该状态的时长超过预设的时长,则表明控制器状态异常,需要发出状态异常告警信息;
started状态;表示控制器上的资源代理程序启动成功;
stopping状态;表示控制器上的资源代理程序正在停止;其中,stopping状态为临时状态,若控制器处于该状态的时长超过预设的时长,则表明控制器状态异常,需要发出状态异常告警信息;
stopped状态;表示控制器上的资源代理程序停止成功,或控制器上的资源代理程序在第一控制器和第二控制器上均启动失败;
unmanaged状态;表示控制器上的资源代理程序进入异常状态,需要监控系统发出异常告警信息。
在本实施例中,存储系统的状态如下:
当c1在第一控制器上为started状态,且c2在第二控制器上为started状态时,存储系统的状态为正常状态;
当c1和c2均在第一控制器上为started状态时,存储系统的状态为正常状态;其中,第二控制器异常,第一控制器已成功接管c2;
当c1和c2均在第二控制器上为started状态时,存储系统的状态为正常状态;其中,第一控制器异常,第二控制器已成功接管c1;
当c1在第一控制器上为started状态,c2为stopped状态时,存储系统的状态为异常状态;其中,第二控制器异常,且第一控制器接管c2失败;
当c2在第二控制器上为started状态,c1为stopped状态时,存储系统的状态为异常状态;其中,第一控制器异常,且第二控制器接管c1失败;
当c1在第二控制器上为started状态,c2为stopped状态时,存储系统的状态为异常状态;其中,第一控制器和第二控制器均处于异常状态,第二控制器已接管c1;
当c2在第一控制器上为started状态,c1为stopped状态时,存储系统的状态为异常状态;其中,第一控制器和第二控制器均处于异常状态,第一控制器已接管c2;
当c1和c2均处于stopped状态时,存储系统的状态为异常状态;导致这种情况的原因可能是:HA正在退出服务状态,或资源代理程序启动超时,或监控超时等原因导致连续错误,资源进入异常状态,这种异常需要管理人员介入判断具体的程序启动失败的原因。
当c1和c2均在第一控制器和第二控制器上处于started状态时,存储系统的状态为异常状态;其中,仲裁系统异常,存储系统发生脑裂。即,当c1在第一控制器和第二控制器上均处于started状态,且c2在第一控制器和第二控制器上也均处于started状态时,可以确认存储系统的状态为异常状态;而这种异常状态是由于存储系统发生脑裂,而仲裁系统又出现异常无法针对脑裂做出仲裁所引起的。
在本实施例中一旦监控除上述所罗列的c1、c2在第一控制器和第二控制器上的状态的场景外的其他状态的场景,本实施例所提供的监控控制器状态的方法会发出告警信息请求管理人员介入处理。
参见图2,在本实施例中控制器上的资源代理程序启动过程的流程如下;
S201:使控制器组中的控制器,获取本端控制器中的磁盘信息及本端控制器中已使用磁盘的磁盘信息;如果获取成功,则执行步骤S202,如果获取失败,则确认待启动的资源代理程序启动失败;
若控制器在本端未识别到磁盘,或识别到磁盘但磁盘未使用,则表明磁盘信息获取失败。
S202:获取本端控制器的标识信息;
获取本端控制器的标识信息,是为了为下一步判断资源代理程序是否属于本端控制器做准备。
S203:判断待启动的资源代理程序对应的控制器的标识信是否与本端控制器的标识信息相同;如果相同,则执行步骤S204;如果不同,则执行步骤S206;
这一步的目的是判断待启动资源代理程序是否属于本端控制器。如果属于本端控制器,则进一步判断本端控制器识别的磁盘是否完全包含已经使用的磁盘,如果不完全包含则程序启动失败,如果完全包含则程序启动成功。如果属于对端控制器,则进一步获取对端控制器已使用的磁盘信息。如果获取失败,则程序启动失败,如果获取成功,则判断本端控制器识别的磁盘是否完全包含对端控制器已经使用的磁盘信息,如果完全包含,则程序启动成功并发出接管对端资源代理程序的通知,如果不完全包含,则程序启动失败。
在具体实施例中,可以根据资源代理程序的标识比如名称和控制器的名称来判断资源代理程序是否属于该控制器,例如:第一控制器的资源代理程序的名称为xxx1,第二控制器的资源代理程序的名称为xxx2,如果待启动的资源代理程序的名称为xxx1,而控制器的名称为第一控制器,那么,可以由此可以判断待启动的资源代理程序属于该控制器。
S204:获取本端控制器中已使用磁盘的磁盘信息;
S205:判断本端控制器中的磁盘信息是否完全包含本端控制器已使用磁盘的磁盘信息;如果完全包含,则确认待启动的资源代理程序启动成功;如果不完全包含,则确认待启动的资源代理程序启动失败;
S206:获取对端控制器中已使用磁盘的磁盘信息;
S207:判断本端控制器中的磁盘信息是否完全包含对端控制器已使用磁盘的磁盘信息;如果完全包含,则确认待启动的资源代理程序启动成功并发出接管通知;如果不完全包含,则确认待启动的资源代理程序启动失败。
发出接管通知,告知系统对端控制器出现异常,本端控制器以成功接管了对端控制器的资源代理程序。
在本实施例中存储系统为双控存储系统,双控存储系统包括:一个控制器组和一个共享磁盘框;控制器组中包含两个控制器,分别为:第一控制器和第二控制器;共享磁盘框至少包括一个磁盘;如图3所示,在本实施例中监控控制器状态的方法的流程为:
S301:控制器组中在线的控制器,获取存储系统的状态;
其中,存储系统的状态包括:在线控制器的数量和标识;在线的控制器为处于工作状态的控制器。
S302:根据存储系统的状态,判断对端控制器是否在线;如果对端控制器在线,则执行步骤S303;如果对端控制器不在线,则执行步骤S309;
S303:分别获取本端控制器中的磁盘信息和对端控制器中的磁盘信息;
S304:判断本端控制器中的磁盘信息和对端控制器中的磁盘信息是否一致;如果是,则确定控制器组中的控制器状态均正常;如果否,则执行步骤S305;
S305:确定本端控制器和对端控制器中不一致的磁盘信息,并发出磁盘异步告警信息;
S306:分别获取本端控制器和对端控制器中已使用的磁盘的磁盘信息;
S307:判断本端控制器中已使用磁盘的磁盘信息和对端控制器中已使用磁盘的磁盘信息是否一致;如果是,则确定控制器组中的控制器状态均正常;如果否,则执行步骤S308;
S308:根据磁盘的用途,分别判断本端控制器和对端控制器中,已使用的磁盘中有效磁盘的数量是否相等;如果相等且本端控制器为第一控制器,则确定控制器组中的控制器状态均正常;如果相等且本端控制器为第二控制器,则确定控制器组中的控制器状态异常;如果本端控制器中已使用的磁盘中有效磁盘的数量多于对端控制器,则确定控制器组中的控制器状态均正常;如果本端控制器中已使用的磁盘中有效磁盘的数量少于对端控制器,则确定控制器组中的控制器状态异常;
S309:判断对端控制器是否发生脑裂;如果是,则执行步骤S310;如果否,则确定控制器组中的控制器状态均正常;
S310:利用仲裁系统对对端控制器进行仲裁;如果仲裁成功,则确定控制器组中的控制器状态均正常;如果仲裁失败,则确定控制器组中的控制器状态异常。
综上可知,实施本发明实施例所提供的方法,使用资源代理程序的状态代表控制器的状态,可以实现以软件监控的方式,对控制器的状态进行高效监控,进而提高存储系统的稳定性和可靠性。
与图1所示的实施例相对应,本发明实施例还提供了一种监控控制器状态的装置,该装置,包括:获取模块401,判断模块402,第一确定模块403,第二确定模块404,其中,
获取模块401,用于使控制器组中在线的控制器,获取存储系统的状态;其中,存储系统的状态包括:在线控制器的数量和标识;在线的控制器为处于工作状态的控制器;
判断模块402,用于根据存储系统的状态,判断对端控制器是否在线;
第一确定模块403,用于当对端控制器在线时,分别获取本端控制器中的磁盘信息和对端控制器中的磁盘信息;根据本端控制器中的磁盘信息和对端控制器中的磁盘信息,确定控制器组中的控制器状态是否正常;
第二确定模块404,用于当对端控制器不在线,判断对端控制器是否发生脑裂;如果对端发生脑裂,则利用仲裁系统对对端控制器进行仲裁;根据仲裁结果,确定控制器组中的控制器状态是否正常;如果对端未发生脑裂,则确定控制器组中的控制器状态均正常。
可选的,第一确定模块403,具体用于:
判断本端控制器中的磁盘信息和对端控制器中的磁盘信息是否一致;
如果是,则确定控制器组中的控制器状态均正常;
如果否,则确定本端控制器和对端控制器中不一致的磁盘信息,并发出磁盘异步告警信息;分别获取本端控制器和对端控制器中已使用的磁盘的磁盘信息;判断本端控制器中已使用磁盘的磁盘信息和对端控制器中已使用磁盘的磁盘信息是否一致;如果是,则确定控制器组中的控制器状态均正常;如果否,则根据磁盘的用途,分别判断本端控制器和对端控制器中,已使用的磁盘中有效磁盘的数量是否相等;如果相等且本端控制器为第一控制器,则确定控制器组中的控制器状态均正常;如果相等且本端控制器为第二控制器,则确定控制器组中的控制器状态异常;如果本端控制器中已使用的磁盘中有效磁盘的数量多于对端控制器,则确定控制器组中的控制器状态均正常;如果本端控制器中已使用的磁盘中有效磁盘的数量少于对端控制器,则确定控制器组中的控制器状态异常。
可选的,第二确定模块404,具体用于:
当仲裁成功时,确定控制器组中的控制器状态均正常;
当仲裁失败时,确定控制器组中的控制器状态异常。
可选的,第一控制器和第二控制器,均包括以下状态:
starting状态;表示控制器上的资源代理程序正在启动;其中,starting状态为临时状态,若控制器处于该状态的时长超过预设的时长,则表明控制器状态异常,需要发出状态异常告警信息;
started状态;表示控制器上的资源代理程序启动成功;
stopping状态;表示控制器上的资源代理程序正在停止;其中,stopping状态为临时状态,若控制器处于该状态的时长超过预设的时长,则表明控制器状态异常,需要发出状态异常告警信息;
stopped状态;表示控制器上的资源代理程序停止成功,或控制器上的资源代理程序在第一控制器和第二控制器上均启动失败;
unmanaged状态;表示控制器上的资源代理程序进入异常状态,需要监控系统发出异常告警信息。
可选的,存储系统的状态由第一控制器和第二控制器的状态决定;其中,第一控制器对应的资源代理程序为第一资源代理程序,第二控制器对应的资源代理程序为第二资源代理程序;
当第一资源代理程序在第一控制器上为started状态,且第二资源代理程序在第二控制器上为started状态时,则确认存储系统的状态为正常状态;
当第一资源代理程序和第二资源代理程序均在第一控制器上为started状态时,则确认存储系统的状态为正常状态;其中,第二控制器异常,第一控制器已成功接管第二资源代理程序;
当第一资源代理程序和第二资源代理程序均在第二控制器上为started状态时,则确认存储系统的状态为正常状态;其中,第一控制器异常,第二控制器已成功接管第一资源代理程序;
当第一资源代理程序在第一控制器上为started状态,第二资源代理程序为stopped状态时,则确认存储系统的状态为异常状态;其中,第二控制器异常,且第一控制器接管第二资源代理程序失败;
当第二资源代理程序在第二控制器上为started状态,第一资源代理程序为stopped状态时,则确认存储系统的状态为异常状态;其中,第一控制器异常,且第二控制器接管第一资源代理程序失败;
当第一资源代理程序在第二控制器上为started状态,第二资源代理程序为stopped状态时,则确认存储系统的状态为异常状态;其中,第一控制器和第二控制器均处于异常状态,第二控制器已接管第一资源代理程序;
当第二资源代理程序在第一控制器上为started状态,第一资源代理程序为stopped状态时,则确认存储系统的状态为异常状态;其中,第一控制器和第二控制器均处于异常状态,第一控制器已接管第二资源代理程序;
当第一资源代理程序和第二资源代理程序均处于stopped状态时,则确认存储系统的状态为异常状态;
当第一资源代理程序和第二资源代理程序均在第一控制器和第二控制器上处于started状态时,则确认存储系统的状态为异常状态;其中,仲裁系统异常,存储系统发生脑裂。
可选的,该装置,还包括:程序启动模块,用于:
使控制器组中的控制器,获取本端控制器中的磁盘信息及本端控制器中已使用磁盘的磁盘信息;
如果获取成功,则获取本端控制器的标识信息;判断待启动的资源代理程序对应的控制器的标识信是否与本端控制器的标识信息相同;如果待启动的资源代理程序对应的控制器的标识信与本端控制器的标识信息相同,则获取本端控制器中已使用磁盘的磁盘信息;判断本端控制器中的磁盘信息是否完全包含本端控制器已使用磁盘的磁盘信息;如果完全包含,则确认待启动的资源代理程序启动成功;如果不完全包含,则确认待启动的资源代理程序启动失败;如果待启动的资源代理程序对应的控制器的标识信与本端控制器的标识信息不相同,则获取对端控制器中已使用磁盘的磁盘信息;判断本端控制器中的磁盘信息是否完全包含对端控制器已使用磁盘的磁盘信息;如果完全包含,则确认待启动的资源代理程序启动成功并发出接管通知;如果不完全包含,则确认待启动的资源代理程序启动失败;
如果获取失败,则确认待启动的资源代理程序启动失败。
可选的,该装置,还包括:程序停止模块,用于:
利用stop方法停止控制器上的资源代理程序;其中,stop方法为空操作方法。
实施本发明实施例所提供的装置,使用资源代理程序的状态代表控制器的状态,可以实现以软件监控的方式,对控制器的状态进行高效监控,进而提高存储系统的稳定性和可靠性。
与图1所示的实施例相对应,本发明实施例还提供了一种电子设备,参见图5,包括处理器501、通信接口502、存储器503和通信总线504,其中,处理器501,通信接口502,存储器503通过通信总线504完成相互间的通信;
存储器503,用于存放计算机程序;
处理器501,用于执行存储器上所存放的程序时,实现上述实施例中所述的任一监控控制器状态的方法步骤。
实施本发明实施例所提供的电子设备,使用资源代理程序的状态代表控制器的状态,可以实现以软件监控的方式,对控制器的状态进行高效监控,进而提高存储系统的稳定性和可靠性。
与图1所示的实施例相对应,本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质内存储有计算机程序,计算机程序被处理器执行时实现上述实施例中所述的监控控制器状态的方法步骤。
实施本发明实施例所提供的存储介质,使用资源代理程序的状态代表控制器的状态,可以实现以软件监控的方式,对控制器的状态进行高效监控,进而提高存储系统的稳定性和可靠性。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (9)
1.一种监控控制器状态的方法,其特征在于,应用于存储系统,所述存储系统中包括:一个控制器组和一个共享磁盘框;所述控制器组中包括:第一控制器和第二控制器;所述共享磁盘框至少包括一个磁盘;所述方法,包括:
使所述控制器组中在线的控制器,获取所述存储系统的状态;其中,所述存储系统的状态包括:在线控制器的数量和标识;所述在线的控制器为处于工作状态的控制器;
根据所述存储系统的状态,判断对端控制器是否在线;
如果对端控制器在线,则分别获取本端控制器中的磁盘信息和对端控制器中的磁盘信息;根据本端控制器中的磁盘信息和对端控制器中的磁盘信息,确定所述控制器组中的控制器状态是否正常;
如果对端控制器不在线,则判断所述对端控制器是否发生脑裂;如果所述对端控制器发生脑裂,则利用仲裁系统对对端控制器进行仲裁;根据仲裁结果,确定所述控制器组中的控制器状态是否正常;如果所述对端控制器未发生脑裂,则确定所述控制器组中的控制器状态均正常;
所述根据本端控制器中的磁盘信息和对端控制器中的磁盘信息,确定所述控制器组中的控制器状态是否正常的步骤,包括:
判断本端控制器中的磁盘信息和对端控制器中的磁盘信息是否一致;
如果是,则确定所述控制器组中的控制器状态均正常;
如果否,则确定本端控制器和对端控制器中不一致的磁盘信息,并发出磁盘异步告警信息;分别获取本端控制器和对端控制器中已使用的磁盘的磁盘信息;判断本端控制器中已使用磁盘的磁盘信息和所述对端控制器中已使用磁盘的磁盘信息是否一致;如果是,则确定所述控制器组中的控制器状态均正常;如果否,则根据磁盘的用途,分别判断本端控制器和所述对端控制器中,已使用的磁盘中有效磁盘的数量是否相等;如果相等且本端控制器为所述第一控制器,则确定所述控制器组中的控制器状态均正常;如果相等且本端控制器为所述第二控制器,则确定所述控制器组中的控制器状态异常;如果本端控制器中已使用的磁盘中有效磁盘的数量多于对端控制器,则确定所述控制器组中的控制器状态均正常;如果本端控制器中已使用的磁盘中有效磁盘的数量少于对端控制器,则确定所述控制器组中的控制器状态异常。
2.根据权利要求1所述的方法,其特征在于,所述根据仲裁结果,确定所述控制器组中的控制器状态是否正常的步骤,包括:
如果仲裁成功,则确定所述控制器组中的控制器状态均正常;
如果仲裁失败,则确定所述控制器组中的控制器状态异常。
3.根据权利要求1所述的方法,其特征在于,所述第一控制器和第二控制器,均包括以下状态:
starting状态;表示控制器上的资源代理程序正在启动;其中,所述starting状态为临时状态,若控制器处于该状态的时长超过预设的时长,则表明所述控制器状态异常,需要发出状态异常告警信息;
started状态;表示控制器上的资源代理程序启动成功;
stopping状态;表示控制器上的资源代理程序正在停止;其中,stopping状态为临时状态,若控制器处于该状态的时长超过预设的时长,则表明所述控制器状态异常,需要发出状态异常告警信息;
stopped状态;表示控制器上的资源代理程序停止成功,或控制器上的资源代理程序在所述第一控制器和所述第二控制器上均启动失败;
unmanaged状态;表示控制器上的资源代理程序进入异常状态,需要监控系统发出异常告警信息。
4.根据权利要求3所述的方法,其特征在于,
所述存储系统的状态由所述第一控制器和所述第二控制器的状态决定;其中,所述第一控制器对应的资源代理程序为第一资源代理程序,第二控制器对应的资源代理程序为第二资源代理程序;
当所述第一资源代理程序在所述第一控制器上为started状态,且所述第二资源代理程序在所述第二控制器上为started状态时,则确认所述存储系统的状态为正常状态;
当所述第一资源代理程序和所述第二资源代理程序均在所述第一控制器上为started状态时,则确认所述存储系统的状态为正常状态;其中,所述第二控制器异常,所述第一控制器已成功接管所述第二资源代理程序;
当所述第一资源代理程序和所述第二资源代理程序均在所述第二控制器上为started状态时,则确认所述存储系统的状态为正常状态;其中,所述第一控制器异常,所述第二控制器已成功接管所述第一资源代理程序;
当所述第一资源代理程序在所述第一控制器上为started状态,所述第二资源代理程序为stopped状态时,则确认所述存储系统的状态为异常状态;其中,所述第二控制器异常,且所述第一控制器接管所述第二资源代理程序失败;
当所述第二资源代理程序在所述第二控制器上为started状态,所述第一资源代理程序为stopped状态时,则确认所述存储系统的状态为异常状态;其中,所述第一控制器异常,且所述第二控制器接管所述第一资源代理程序失败;
当所述第一资源代理程序在所述第二控制器上为started状态,所述第二资源代理程序为stopped状态时,则确认所述存储系统的状态为异常状态;其中,所述第一控制器和所述第二控制器均处于异常状态,所述第二控制器已接管所述第一资源代理程序;
当所述第二资源代理程序在所述第一控制器上为started状态,所述第一资源代理程序为stopped状态时,则确认所述存储系统的状态为异常状态;其中,所述第一控制器和所述第二控制器均处于异常状态,所述第一控制器已接管所述第二资源代理程序;
当所述第一资源代理程序和所述第二资源代理程序均处于stopped状态时,则确认所述存储系统的状态为异常状态;
当所述第一资源代理程序和所述第二资源代理程序均在所述第一控制器和所述第二控制器上处于started状态时,则确认所述存储系统的状态为异常状态;其中,所述仲裁系统异常,所述存储系统发生脑裂。
5.根据权利要求3所述的方法,其特征在于,所述控制器上的资源代理程序启动的过程为:
使所述控制器组中的控制器,获取本端控制器中的磁盘信息及本端控制器中已使用磁盘的磁盘信息;
如果获取成功,则获取本端控制器的标识信息;判断待启动的资源代理程序对应的控制器的标识信是否与本端控制器的标识信息相同;如果待启动的资源代理程序对应的控制器的标识信与本端控制器的标识信息相同,则获取本端控制器中已使用磁盘的磁盘信息;判断本端控制器中的磁盘信息是否完全包含本端控制器已使用磁盘的磁盘信息;如果完全包含,则确认所述待启动的资源代理程序启动成功;如果不完全包含,则确认所述待启动的资源代理程序启动失败;如果待启动的资源代理程序对应的控制器的标识信与本端控制器的标识信息不相同,则获取对端控制器中已使用磁盘的磁盘信息;判断本端控制器中的磁盘信息是否完全包含对端控制器已使用磁盘的磁盘信息;如果完全包含,则确认所述待启动的资源代理程序启动成功并发出接管通知;如果不完全包含,则确认所述待启动的资源代理程序启动失败;
如果获取失败,则确认所述待启动的资源代理程序启动失败。
6.根据权利要求3所述的方法,其特征在于,所述控制器上的资源代理程序停止的方式为:
利用stop方法停止控制器上的资源代理程序;其中,所述stop方法为空操作方法。
7.一种监控控制器状态的装置,其特征在于,所述装置,包括:
获取模块,用于使控制器组中在线的控制器,获取存储系统的状态;其中,所述存储系统的状态包括:在线控制器的数量和标识;所述在线的控制器为处于工作状态的控制器;
判断模块,用于根据所述存储系统的状态,判断对端控制器是否在线;
第一确定模块,用于当对端控制器在线时,分别获取本端控制器中的磁盘信息和对端控制器中的磁盘信息;根据本端控制器中的磁盘信息和对端控制器中的磁盘信息,确定所述控制器组中的控制器状态是否正常;
第二确定模块,用于当对端控制器不在线,判断所述对端控制器是否发生脑裂;如果所述对端控制器发生脑裂,则利用仲裁系统对对端控制器进行仲裁;根据仲裁结果,确定所述控制器组中的控制器状态是否正常;如果所述对端控制器未发生脑裂,则确定所述控制器组中的控制器状态均正常;
所述根据本端控制器中的磁盘信息和对端控制器中的磁盘信息,确定所述控制器组中的控制器状态是否正常的步骤,包括:
判断本端控制器中的磁盘信息和对端控制器中的磁盘信息是否一致;
如果是,则确定所述控制器组中的控制器状态均正常;
如果否,则确定本端控制器和对端控制器中不一致的磁盘信息,并发出磁盘异步告警信息;分别获取本端控制器和对端控制器中已使用的磁盘的磁盘信息;判断本端控制器中已使用磁盘的磁盘信息和所述对端控制器中已使用磁盘的磁盘信息是否一致;如果是,则确定所述控制器组中的控制器状态均正常;如果否,则根据磁盘的用途,分别判断本端控制器和所述对端控制器中,已使用的磁盘中有效磁盘的数量是否相等;如果相等且本端控制器为第一控制器,则确定所述控制器组中的控制器状态均正常;如果相等且本端控制器为第二控制器,则确定所述控制器组中的控制器状态异常;如果本端控制器中已使用的磁盘中有效磁盘的数量多于对端控制器,则确定所述控制器组中的控制器状态均正常;如果本端控制器中已使用的磁盘中有效磁盘的数量少于对端控制器,则确定所述控制器组中的控制器状态异常。
8.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,所述处理器,所述通信接口,所述存储器通过所述通信总线完成相互间的通信;
所述存储器,用于存放计算机程序;
所述处理器,用于执行所述存储器上所存放的程序时,实现权利要求1-6任一项所述的方法步骤。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-6任一项所述的方法步骤。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202410820887.2A CN118820008B (zh) | 2024-06-24 | 2024-06-24 | 一种监控控制器状态的方法、装置及电子设备 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202410820887.2A CN118820008B (zh) | 2024-06-24 | 2024-06-24 | 一种监控控制器状态的方法、装置及电子设备 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN118820008A CN118820008A (zh) | 2024-10-22 |
| CN118820008B true CN118820008B (zh) | 2025-03-04 |
Family
ID=93073750
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202410820887.2A Active CN118820008B (zh) | 2024-06-24 | 2024-06-24 | 一种监控控制器状态的方法、装置及电子设备 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN118820008B (zh) |
Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN105095125A (zh) * | 2015-07-08 | 2015-11-25 | 北京飞杰信息技术有限公司 | 基于仲裁磁盘的高可用双控存储系统及其运行方法 |
Family Cites Families (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20130024723A1 (en) * | 2011-07-19 | 2013-01-24 | Promise Technology, Inc. | Disk storage system with two disks per slot and method of operation thereof |
| CN105472022A (zh) * | 2015-12-24 | 2016-04-06 | 北京同有飞骥科技股份有限公司 | 一种解决双机集群脑裂的方法及装置 |
| CN116069583B (zh) * | 2021-11-04 | 2026-02-03 | 中移(上海)信息通信科技有限公司 | 一种数据库集群管理方法、装置及网络设备 |
| CN115509856A (zh) * | 2022-09-28 | 2022-12-23 | 苏州浪潮智能科技有限公司 | 存储集群仲裁状态监控方法、系统、终端及存储介质 |
-
2024
- 2024-06-24 CN CN202410820887.2A patent/CN118820008B/zh active Active
Patent Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN105095125A (zh) * | 2015-07-08 | 2015-11-25 | 北京飞杰信息技术有限公司 | 基于仲裁磁盘的高可用双控存储系统及其运行方法 |
Also Published As
| Publication number | Publication date |
|---|---|
| CN118820008A (zh) | 2024-10-22 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US6671704B1 (en) | Method and apparatus for handling failures of resource managers in a clustered environment | |
| US8055735B2 (en) | Method and system for forming a cluster of networked nodes | |
| US6952766B2 (en) | Automated node restart in clustered computer system | |
| CN111901422B (zh) | 一种集群中节点的管理方法、系统及装置 | |
| CN105933407B (zh) | 一种实现Redis集群高可用的方法及系统 | |
| CN105141400B (zh) | 一种高可用性集群管理方法及相关设备 | |
| EP1550036A2 (en) | Method of solving a split-brain condition | |
| JP2007503628A (ja) | クラスタ化されたコンピューティングシステムにおける高速なアプリケーション通知 | |
| CN103581225A (zh) | 分布式系统中的节点处理任务的方法 | |
| US9092396B2 (en) | Standby system device, a control method, and a program thereof | |
| CN115145782A (zh) | 一种服务器切换方法,MooseFS系统及存储介质 | |
| CN110830283A (zh) | 故障检测方法、装置、设备和系统 | |
| CN109144748B (zh) | 一种服务器、分布式服务器集群及其状态驱动方法 | |
| US7836351B2 (en) | System for providing an alternative communication path in a SAS cluster | |
| CN100426751C (zh) | 保证集群系统中配置信息一致的方法 | |
| CN106452836B (zh) | 主节点设置方法及装置 | |
| US7499987B2 (en) | Deterministically electing an active node | |
| CN114756299A (zh) | 车辆故障处理方法及装置、电子装置和存储介质 | |
| CN114328033B (zh) | 保持高可用设备组业务配置一致性的方法及装置 | |
| CN109474694A (zh) | 一种基于san存储阵列的nas集群的管控方法及装置 | |
| CN116069583B (zh) | 一种数据库集群管理方法、装置及网络设备 | |
| CN118820008B (zh) | 一种监控控制器状态的方法、装置及电子设备 | |
| JP6856574B2 (ja) | サービス継続システムおよびサービス継続方法 | |
| CN110620684A (zh) | 一种存储双控防脑裂方法、系统、终端及存储介质 | |
| CN120769303A (zh) | 通信方法及装置、电子设备 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PB01 | Publication | ||
| PB01 | Publication | ||
| SE01 | Entry into force of request for substantive examination | ||
| SE01 | Entry into force of request for substantive examination | ||
| GR01 | Patent grant | ||
| GR01 | Patent grant |