CN115811461B - San共享存储集群脑裂预防处理方法、装置及电子设备 - Google Patents
San共享存储集群脑裂预防处理方法、装置及电子设备 Download PDFInfo
- Publication number
- CN115811461B CN115811461B CN202310079386.9A CN202310079386A CN115811461B CN 115811461 B CN115811461 B CN 115811461B CN 202310079386 A CN202310079386 A CN 202310079386A CN 115811461 B CN115811461 B CN 115811461B
- Authority
- CN
- China
- Prior art keywords
- heartbeat
- disk
- server node
- shared storage
- san shared
- 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
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Hardware Redundancy (AREA)
Abstract
本发明公开一种SAN共享存储集群脑裂预防处理方法、装置及电子设备,该方法步骤包括:在SAN共享存储设备中划分一块心跳存储区,以用于存储主、备服务器节点定期写入的磁盘心跳信息;监测磁盘心跳信息的状态以及主、备服务器节点之间网络心跳的状态;根据磁盘心跳信息以及网络心跳的状态进行处理,其中当判断到发生脑裂时进行仲裁处理以裁定继续提供服务的服务器节点;当监测到网络心跳异常时,对SAN共享存储设备设置磁盘锁以保持启用一个服务器节点,如果网络心跳正常则对SAN共享存储设备的磁盘锁进行解锁。本发明能够有效预防脑裂的发生,同时能够在脑裂出现时及时进行处理,显著提高SAN共享存储集群的可靠性和可用性。
Description
技术领域
本发明涉及SAN(Storage Area Network,存储区域网络)共享存储技术领域,尤其涉及一种SAN共享存储集群脑裂预防处理方法、装置及电子设备。
背景技术
SAN共享存储集群是由多台SAN(存储区域网络)存储设备聚合成的一个存储池,能够以统一的方式访问和使用所有存储设备,对外提供业务访问。为了满足SAN共享存储集群的高可用,一般设置双机主备冗余,如图1所示,由主服务器提供业务,多个客户端访问SAN共享存储设备进行数据读写。当主服务器发生故障(例如:操作系统宕机、服务器意外掉电、网络故障等),自动将业务切换至备服务器,由备服务器接管共享存储设备的访问权,继续对外提供业务,以保障业务不间断运行。主备服务器之间则使用以太网络进行心跳通信,以了解双方的状态,但是当网络出现故障无法保障集群心跳通信就会出现脑裂,即主备服务器节点之间无法进行心跳通信,导致主备服务器节点双方都认为对方异常,从而两者都成为活跃节点对外提供服务。而当集群处于脑裂时,由于主备两个服务器会同时启用业务、竞争抢占存储设备,如果客户端此时进行数据写入,则会出现主备两个服务器同时写存储设备,导致数据损坏而造成严重影响。因此,防止脑裂保障SAN共享存储集群的高可用是亟待解决的问题。
针对于脑裂预防以及处理问题,现有技术中要么是关注于脑裂的预防,要么则是关注于脑裂发生以后的处理,无法同时实现脑裂的有效预防与脑裂发生后的及时处理。为防止脑裂的发生,现有技术中通常是使用多种心跳方式实现,例如在常用的网络心跳方式基础上,增加串口心跳等其他心跳方式,但是各类型心跳方式均会存在一定的限制,以串口心跳为例,串口心跳是使用串口线进行连接,但受限于串口线长度,主备两个服务器的距离必须比较近。且使用多种心跳方式虽然能够极大程度的避免脑裂,但是如果软件运行出现故障,即会导致多种心跳同时失效,这样仍然可能会出现脑裂而损坏存储数据。针对于脑裂的处理,现有技术中则通常都是通过设置第三方仲裁(如仲裁盘、仲裁节点)实现,但是第三方仲裁方式需要使用额外资源,会导致实现成本高、资源耗费大,且还会存在单点故障问题,如果第三方仲裁出现故障,即会导致无法及时处理脑裂。
发明内容
本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种实现方法简单、成本低、资源消耗小且可靠性高的SAN共享存储集群脑裂预防处理方法、装置及电子设备,不仅能够有效预防脑裂的发生,还能够在脑裂出现时及时进行处理,从而能够显著提高SAN共享存储集群的可靠性和可用性。
为解决上述技术问题,本发明提出的技术方案为:
一种SAN共享存储集群脑裂预防处理方法,步骤包括:
在SAN共享存储设备中划分一块心跳存储区,以用于存储主、备服务器节点定期写入的磁盘心跳信息;
监测所述心跳存储区中写入的磁盘心跳信息的状态以及主、备服务器节点之间网络心跳的状态;
根据所述磁盘心跳信息以及网络心跳的状态进行处理,其中当判断到发生脑裂时进行仲裁处理以裁定继续提供服务的服务器节点;当监测到网络心跳异常时,对SAN共享存储设备设置磁盘锁以保持启用一个服务器节点,如果网络心跳正常则对SAN共享存储设备的磁盘锁进行解锁。
进一步的,当心跳存储区写入磁盘心跳信息时,还包括记录写入的时间戳、服务器节点的信息,所述服务器节点的信息包括节点当前状态以及节点历史状态变化信息。
进一步的,所述心跳存储区中,不同服务器节点的心跳信息写入不同的位置,同一服务器节点每次写入心跳信息时覆盖上一次写入的心跳信息。
进一步的,当监测到所述磁盘心跳信息存在异常时,关闭对应服务器节点的指定服务或关闭对应服务器节点。
进一步的,所述当判断发生脑裂时进行仲裁处理包括:根据服务器节点的当前状态以及历史状态变化信息确定出需要启用的服务器节点,并关闭另一服务器节点的指定服务或关闭另一服务器节点。
进一步的,所述当监测到网络心跳异常时包括:若当前SAN共享存储设备未上锁,则对SAN共享存储设备设置磁盘锁,若当前SAN共享存储设备已上锁,则判断所述心跳存储区中当前服务器节点的磁盘心跳信息是否正常,如果正常则当前服务器节点继续持有锁,如果存在异常则关闭当前服务器节点的指定服务或者关闭当前服务器节点。
进一步的,所述根据所述磁盘心跳信息以及网络心跳的状态进行处理的具体步骤包括:
判断当前SAN共享存储设备是否存在磁盘锁,如果存在则获取网络心跳状态,如果网络心跳状态正常,进行磁盘解锁后等待SAN共享存储设备重新写入磁盘心跳信息;如果网络心跳状态异常,则获取磁盘心跳状态,对磁盘心跳异常的服务器节点进行异常处理,所述异常处理包括关闭服务器节点的指定服务或者关闭服务器节点;
当SAN共享存储设备写入磁盘心跳信息时,判断磁盘心跳是否正常,如果正常则获取网络心跳状态,如果网络心跳异常则对SAN共享存储设备设置磁盘锁后返回重新执行所述判断当前SAN共享存储设备是否存在磁盘锁,如果网络心跳正常则返回等待重新写入磁盘心跳信息,如果磁盘心跳异常则进行所述异常处理后返回等待SAN共享存储设备重新写入磁盘心跳信息。
进一步的,基于SCSI PR对所述SAN共享存储设备设置磁盘锁,步骤包括:由当前服务器节点对SAN共享存储设备进行预留秘钥注册,注册成功后进行永久预留,以实现对预留资源加锁。
一种SAN共享存储集群脑裂预防处理装置,包括:
心跳存储区,设置在SAN共享存储设备中,以用于存储主、备服务器节点定期写入的磁盘心跳信息;
监测模块,用于监测所述心跳存储区中写入的磁盘心跳信息的状态以及主、备服务器节点之间网络心跳的状态;
仲裁模块,用于当判断到发生脑裂时进行仲裁处理,以裁定继续提供服务的服务器节点;
磁盘锁模块,用于当监测到网络心跳异常时,对SAN共享存储设备设置磁盘锁以保持启用一个服务器节点,如果网络心跳正常则对SAN共享存储设备的磁盘锁进行解锁。
一种电子设备,包括处理器以及存储器,所述存储器用于存储计算机程序,所述处理器用于执行所述计算机程序以执行如上述方法。
与现有技术相比,本发明的优点在于:本发明通过结合网络心跳、磁盘心跳以及磁盘锁的方式实现SAN共享存储集群脑裂预防处理,在将SAN共享存储设备中划分一个心跳存储区,以进行主、备服务器节点之间磁盘心跳信息传递,读取两个服务器节点写入的心跳信息即可以获取主备服务器的状态信息,当判断出脑裂时进行仲裁处理,只由裁定的服务器继续提供服务;同时通过监测服务器节点之间的网络心跳状态,当检测到网络心跳异常时,对SAN共享存储进行加锁,使得在网络心跳异常的状态下只允许加锁的服务器提供业务,能够有效进行存储数据的保护,避免网络心跳异常带来的影响,不仅能够有效预防脑裂的发生,还能够在脑裂出现时及时进行处理,从而极大程度地增强SAN共享存储集群的可靠性和可用性。
附图说明
图1是SAN共享存储集群的架构原理示意图。
图2是本实施例SAN共享存储集群脑裂预防处理方法的实现流程示意图。
图3是本发明在具体应用实施例中心跳存储区划分的原理示意图。
图4是本发明具体应用实施例中实现磁盘心跳信息写入的实现流程示意图。
图5是本发明具体应用实施例中磁盘锁子进程的具体执行流程示意图。
图6是本发明具体应用实施例中仲裁子进行的具体执行流程示意图。
图7是本实施例SAN共享存储集群脑裂预防处理的结构原理示意图。
具体实施方式
以下结合说明书附图和具体优选的实施例对本发明作进一步描述,但并不因此而限制本发明的保护范围。
考虑到SAN共享存储集群对存储数据可用性要求较高,一旦出现脑裂即可能导致数据损坏而影响存储的可用性,因此,为了充分有效的保护存储数据,一方面要能够有效防止脑裂发生,另一方面还需要能够即便发生脑裂时仍然能及时快速地进行处理,以减小脑裂带来的影响。本发明通过结合磁盘心跳、磁盘锁实现SAN共享存储集群脑裂预防处理,不仅能够预防SAN共享存储集群脑裂的发生,还能够在脑裂出现时及时进行处理,充分保障SAN共享存储集群存储的可用性。
如图2所示,本实施例SAN共享存储集群脑裂预防处理方法的步骤包括:
S01.在SAN共享存储设备中划分一块心跳存储区,以用于存储主、备服务器节点定期写入的磁盘心跳信息;
S02.监测心跳存储区中写入的磁盘心跳信息的状态以及主、备服务器节点之间网络心跳的状态;
S03.根据磁盘心跳信息以及网络心跳的状态进行处理,其中当判断到发生脑裂时进行仲裁处理以裁定继续提供服务的服务器节点;当监测到网络心跳异常时,对SAN共享存储设备设置磁盘锁以保持启用一个服务器节点,如果网络心跳正常则对SAN共享存储设备的磁盘锁进行解锁。
本实施例通过引入磁盘心跳,在将SAN共享存储设备中划分一个心跳存储区,以进行主、备服务器节点之间磁盘心跳信息传递,定期检测两个服务器节点写入的心跳信息,以获取主备服务器的状态信息,判断出脑裂后进行仲裁处理,只由裁定的服务器继续提供服务;同时引入磁盘锁,通过监测服务器节点之间的网络心跳状态,当检测到网络心跳异常时,对SAN共享存储进行加锁,使得在网络心跳异常的状态下只允许加锁的服务器提供业务,从而使得SAN共享存储设备依然能够被服务器节点独占使用,继续正常向客户端提供服务,能够有效进行存储数据的保护,避免网络心跳异常带来的影响。通过上述结合网络心跳、磁盘心跳以及磁盘锁的方式,不仅能够有效预防脑裂的发生,还能够在脑裂出现时及时进行处理,从而极大程度地增强SAN共享存储集群的可靠性和可用性。
以如图1所示的双机(即两个服务器节点,每个节点对应一个操作系统环境)主备集群为例,其中主备两台服务器分别部署配置基础的高可用软件,如Keepalived,主备服务器均连接SAN共享存储。先在SAN共享存储设备中划分心跳存储区,主、备服务器定期向该心跳存储区写入磁盘心跳信息,定期读取该磁盘心跳信息以判断脑裂,当判断到脑裂时进行仲裁处理;同时监测主备两台服务器之间的网络心跳,当网络心跳异常时对SAN共享存储设备加锁,当网络心跳正常时再对SAN共享存储设备进行解锁。
本实施例中,步骤S01中当心跳存储区写入磁盘心跳信息时,还包括记录写入的时间戳、服务器节点的信息,服务器节点的信息包括节点当前状态以及节点历史状态变化信息,其中节点当前状态、节点历史状态变化信息可以用于仲裁处理阶段以进行仲裁判定,节点当前状态还可以用于进行硬件锁设置。
在具体应用实施例中,在SAN共享存储设备中划分心跳存储区以用于存储磁盘心跳信息以及所需的辅助信息。当服务器节点与SAN共享存储设备建立连接,且可以访问存储时,服务器节点定期(具体可配置小于0.5s)将磁盘心跳信息尝试写入心跳存储区中对应的存储心跳位置,同时记录信息包含时间戳(毫秒级)、节点当前状态(用于锁和仲裁判定)、节点历史状态变化信息(用于仲裁判定)等信息。心跳存储区具体可在共享存储上划分特定区域,包括但不限于将共享存储进行磁盘分区时,划分小分区作为心跳存储区,其他区域作为存储数据区;或者磁盘分区时保留部分扇区作为心跳存储区,将共享存储只分区为存储数据区。多块磁盘的心跳存储区具体可以使用lvm工具构建形成镜像卷,当某块或者某几块磁盘掉线/损坏时,磁盘心跳仍可以正常运行,以提供一定的冗余保障。心跳存储区中不同服务器节点的磁盘心跳信息写入不同的位置及区域,同一服务器节点每次写入心跳信息时覆盖上一次写入的心跳信息,即同一节点每次心跳信息采用覆盖写入的方式。如图3所示,具体配置MDS1和MDS2区域即为心跳存储区,其中MDS1和MDS2区域分别对应用于存储两个服务器节点的磁盘心跳信息。GPT对应是在磁盘开始的部分及最后的部分设置特殊的gpt扇区,能够支持2TB以上的大磁盘;MBR对应是在磁盘开始的部分设置特殊的主引导扇区,最多支持2TB。
在具体应用实施例中,通过配置磁盘心跳子进程实现磁盘心跳信息的写入,如图4所示,磁盘心跳子进程执行时,循环判断心跳存储区是否存在以及是否可以进行读写访问,如果存在且可以进行读写,则将磁盘心跳信息写入心跳存储区。
本实施例通过在SAN共享存储设备中划分心跳存储区存储磁盘心跳信息,无需使用额外的共享磁盘,可以进一步减少资源消耗,还可以避免共享磁盘单点故障。
本实施例步骤S03中,具体当检测到磁盘心跳信息存在异常时,关闭对应服务器节点的指定服务(如高可用服务或某些关键服务)或直接关闭对应的服务器节点,以在监测到磁盘心跳异常时及时执行异常处理。
本实施例步骤S03中,当判断发生脑裂时进行仲裁处理的具体步骤包括:根据服务器节点的当前状态以及历史状态变化信息确定出需要启用的服务器节点,并关闭另一服务器节点的指定服务(如高可用服务或某些关键服务)或直接关闭另一服务器节点,使得当发生脑裂时能够及时进行处理。
本实施例步骤S03中如果监测到网络心跳异常的具体步骤包括:若当前SAN共享存储设备未上锁,则对SAN共享存储设备设置磁盘锁,若当前SAN共享存储设备已上锁,则判断心跳存储区中当前服务器节点的磁盘心跳信息是否正常,如果正常则当前服务器节点继续持有锁,如果存在异常则关闭当前服务器节点的指定服务(如高可用服务或某些关键服务)或者直接关闭当前服务器节点。
本实施例步骤S03中根据磁盘心跳信息以及网络心跳的状态进行处理的具体步骤包括:
判断当前SAN共享存储设备是否存在磁盘锁,如果存在则获取网络心跳状态,如果网络心跳状态正常,进行磁盘解锁后等待SAN共享存储设备重新写入磁盘心跳信息;如果网络心跳状态异常,则获取磁盘心跳状态,对磁盘心跳异常的服务器节点进行异常处理,异常处理包括关闭服务器节点的指定服务(如高可用服务或某些关键服务)或者关闭服务器节点;
当SAN共享存储设备写入磁盘心跳信息时,判断磁盘心跳是否正常,如果正常则获取网络心跳状态,如果网络心跳异常则对SAN共享存储设备设置磁盘锁后返回重新执行所述判断当前SAN共享存储设备是否存在磁盘锁,如果网络心跳正常则返回等待重新写入磁盘心跳信息,如果磁盘心跳异常则进行异常处理后返回等待SAN共享存储设备重新写入磁盘心跳信息。
通过上述步骤,即可依据磁盘心跳信号以及网络心跳的状态进行相应的处理,如果磁盘心跳异常进行异常处理,如果网络心跳异常则对SAN共享存储设备加磁盘锁,使得一方面能够预防SAN共享存储集群脑裂的发生,另一方面还能够在脑裂出现时及时进行处理,充分保障SAN共享存储集群存储的可用性。由于本实施例仅在网络心跳断连时进行加锁处理,与SAN共享存储使用时加锁相比,还能够减少正常状态下的加锁,从而能有效避免加锁状态下服务器无法解锁导致的锁竞争
在具体应用实施例中,可以通过配置磁盘锁子进程以实现上述处理步骤,首先守护进程解析配置文件,获取配置参数,主要包含磁盘列表及磁盘心跳间隔时间;然后由磁盘锁子进程循环检测磁盘是否上锁,如果没有上锁进入下个循环,如果有上锁则监听网络心跳状态,网络心跳异常则获取磁盘心跳状态,磁盘心跳正常继续持有锁,磁盘心跳异常则进行关闭关键服务等的异常处理;网络心跳正常进行磁盘解锁,等待一段时间(磁盘心跳间隔时间)后进入磁盘心跳检测步骤;循环进行磁盘心跳检测步骤中,磁盘心跳异常进行异常处理(如关闭关键服务),正常则获取网络心跳,如果网络心跳正常,则等待一段时间(磁盘心跳间隔时间)进入下一循环,网络心跳异常则对磁盘进行加锁,再返回执行上述磁盘锁判断流程。
本实施例中,步骤S03具体基于SCSI PR对SAN共享存储设备设置磁盘锁,步骤包括:由当前服务器节点对SAN共享存储设备进行预留秘钥注册,注册成功后进行永久预留,以实现对预留资源加锁。锁具体可使用SCSI-3 PR,以实现对磁盘进行预留资源管理。SCSI-3 PR(PersistentReservation,永久预留)可以被认为是一组SCSI命令集,用于协调多个系统访问共享存储。本实施例具体使用linux操作系统中sg3_utils工具中sg_persist命令支持PR相关操作,在访问存储磁盘前,节点先使用sg_persist命令进行存储磁盘预留秘钥注册,注册成功后进行永久预留,以实现对预留资源进行加锁,基于不同的预留类型可以获得存储磁盘的不同操作权限。
如图5所示,上述根据磁盘心跳以及主、备服务器节点之间网络心跳的状态进行处理的详细步骤为:
S301.判断当前SAN共享存储设备是否存在磁盘锁,如果存在则转入步骤S302,否则转入步骤S305;
S302.获取网络心跳状态并判断网络心跳是否正常,如果网络心跳状态正常转入步骤S303,否则获取磁盘心跳状态,对磁盘心跳异常的服务器节点进行异常处理,异常处理具体包括关闭服务器节点的指定服务或者关闭服务器节点,返回步骤S301;
S303.对SAN共享存储设备进行磁盘解锁;
S304.等待SAN共享存储设备重新写入磁盘心跳信息;
S305.判断磁盘心跳是否正常,如果是则获取网络心跳状态,转入步骤S306,否则关闭对应服务器节点的指定服务或关闭当前服务器节点,返回步骤S304;
S306.判断网络心跳是否正常,如果网络心跳状态异常,转入步骤S307,如果网络心跳正常,返回步骤S304;
S307.基于SCSI PR进行磁盘加锁,返回步骤S301。
在具体应用实施例中,通过配置仲裁子进程实现仲裁处理,如图6所示,首先守护进程解析配置文件,获取配置参数,主要包含磁盘列表及等待间隔时间;由仲裁子进程循环读取磁盘心跳信息以获取获取主备服务器的状态信息,判定是否发生脑裂,如果没有发生脑裂则等待一段时间(等待间隔时间)进入下一循环;如果发生脑裂,则基于仲裁算法确定哪一个节点作为Master节点,由Master节点继续提供服务,而另一个节点调用脚本关闭指定的关键服务或者关机处理。
在具体应用实施例中,读取磁盘心跳信息及其他节点状态等的辅助信息进行仲裁处理,其中如果只设置单个磁盘的磁盘心跳,且状态为双主(发生脑裂),根据节点状态历史变化尝试关闭某节点的高可用服务,如果有多个,基于投票机制进行仲裁判定关闭哪一个节点;节点恢复状态为非双主时,检查并尝试拉起高可用服务。当脑裂发生时考虑基于仲裁算法确定主节点并强制改变另一节点状态。
本实施例SAN共享存储集群脑裂预防处理装置包括:
心跳存储区,设置在SAN共享存储设备中,以用于存储主、备服务器节点定期写入的磁盘心跳信息;
监测模块,用于监测心跳存储区中写入的磁盘心跳信息的状态以及主、备服务器节点之间网络心跳的状态;
仲裁模块,用于当判断到发生脑裂时进行仲裁处理,以裁定继续提供服务的服务器节点;
磁盘锁模块,用于当监测到网络心跳异常时,对SAN共享存储设备设置磁盘锁以保持启用一个服务器节点,如果网络心跳正常则对SAN共享存储设备的磁盘锁进行解锁。
本实施例具体通过一个磁盘心跳模块维护磁盘心跳信息,向共享存储划分的心跳存储区定期写入信息。在具体应用实施例中,分别为仲裁模块、磁盘心跳模块以及磁盘锁模块设置对应的子进程,如图7所示,首先设置守护进程以负责解析配置文件,并监控管理各子进程模块(磁盘心跳模块、磁盘锁模块、仲裁模块),当子进程异常关闭时及时启动子进程。工作时通过监测模块读取磁盘心跳模块维护的心跳信息,基于磁盘心跳确定节点状态是否正常;如果由于磁盘锁而无法读取磁盘心跳,则尝试关闭该节点的指定关键服务或者关闭该节点;当发生脑裂,通过仲裁模块进行仲裁处理;当两节点磁盘心跳正常,且主、两节点网络心跳异常,则通过磁盘锁模块对磁盘进行加锁处理,当网络心跳恢复正常时,通过磁盘锁模块对磁盘进行解锁。
本实施例SAN共享存储集群脑裂预防处理装置与上述SAN共享存储集群脑裂预防处理方法一一对应,在此不再一一赘述。
本实施例还包括电子设备,该电子设备包括处理器以及存储器,存储器用于存储计算机程序,处理器用于执行计算机程序以执行如上述方法。
上述只是本发明的较佳实施例,并非对本发明作任何形式上的限制。虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明。因此,凡是未脱离本发明技术方案的内容,依据本发明技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均应落在本发明技术方案保护的范围内。
Claims (10)
1.一种SAN共享存储集群脑裂预防处理方法,其特征在于,步骤包括:
在SAN共享存储设备中划分一块心跳存储区,以用于存储主、备服务器节点定期写入的磁盘心跳信息;
监测所述心跳存储区中写入的磁盘心跳信息的状态以及主、备服务器节点之间网络心跳的状态;
根据所述磁盘心跳信息以及网络心跳的状态进行处理,其中当判断到发生脑裂时进行仲裁处理以裁定继续提供服务的服务器节点;当监测到网络心跳异常时,对SAN共享存储设备设置磁盘锁以保持启用一个服务器节点,如果网络心跳正常则对SAN共享存储设备的磁盘锁进行解锁。
2.根据权利要求1所述的SAN共享存储集群脑裂预防处理方法,其特征在于,当心跳存储区写入磁盘心跳信息时,还包括记录写入的时间戳、服务器节点的信息,所述服务器节点的信息包括节点当前状态以及节点历史状态变化信息。
3.根据权利要求1所述的SAN共享存储集群脑裂预防处理方法,其特征在于,所述心跳存储区中,不同服务器节点的心跳信息写入不同的位置,同一服务器节点每次写入心跳信息时覆盖上一次写入的心跳信息。
4.根据权利要求1所述的SAN共享存储集群脑裂预防处理方法,其特征在于,当监测到所述磁盘心跳信息存在异常时,关闭对应服务器节点的指定服务或关闭对应服务器节点。
5.根据权利要求1所述的SAN共享存储集群脑裂预防处理方法,其特征在于,当判断发生脑裂时进行仲裁处理包括:根据服务器节点的当前状态以及历史状态变化信息确定出需要启用的服务器节点,并关闭另一服务器节点的指定服务或关闭另一服务器节点。
6.根据权利要求1~5中任意一项所述的SAN共享存储集群脑裂预防处理方法,其特征在于,所述当监测到网络心跳异常时包括:若当前SAN共享存储设备未上锁,则对SAN共享存储设备设置磁盘锁,若当前SAN共享存储设备已上锁,则判断所述心跳存储区中当前服务器节点的磁盘心跳信息是否正常,如果正常则当前服务器节点继续持有锁,如果存在异常则关闭当前服务器节点的指定服务或者关闭当前服务器节点。
7.根据权利要求1~5中任意一项所述的SAN共享存储集群脑裂预防处理方法,其特征在于,所述根据所述磁盘心跳信息以及网络心跳的状态进行处理的具体步骤包括:
判断当前SAN共享存储设备是否存在磁盘锁,如果存在则获取网络心跳状态,如果网络心跳状态正常,进行磁盘解锁后等待SAN共享存储设备重新写入磁盘心跳信息;如果网络心跳状态异常,则获取磁盘心跳状态,对磁盘心跳异常的服务器节点进行异常处理,所述异常处理包括关闭服务器节点的指定服务或者关闭服务器节点;
当SAN共享存储设备写入磁盘心跳信息时,判断磁盘心跳是否正常,如果正常则获取网络心跳状态,如果网络心跳异常则对SAN共享存储设备设置磁盘锁后返回重新执行所述判断当前SAN共享存储设备是否存在磁盘锁,如果网络心跳正常则返回等待重新写入磁盘心跳信息,如果磁盘心跳异常则进行所述异常处理后返回等待SAN共享存储设备重新写入磁盘心跳信息。
8.根据权利要求1~5中任意一项所述的SAN共享存储集群脑裂预防处理方法,其特征在于,基于SCSI PR对所述SAN共享存储设备设置磁盘锁,步骤包括:由当前服务器节点对SAN共享存储设备进行预留秘钥注册,注册成功后进行永久预留,以实现对预留资源加锁。
9.一种SAN共享存储集群脑裂预防处理装置,其特征在于,包括:
心跳存储区,设置在SAN共享存储设备中,以用于存储主、备服务器节点定期写入的磁盘心跳信息;
监测模块,用于监测所述心跳存储区中写入的磁盘心跳信息的状态以及主、备服务器节点之间网络心跳的状态;
仲裁模块,用于当判断到发生脑裂时进行仲裁处理,以裁定继续提供服务的服务器节点;
磁盘锁模块,用于当监测到网络心跳异常时,对SAN共享存储设备设置磁盘锁以保持启用一个服务器节点,如果网络心跳正常则对SAN共享存储设备的磁盘锁进行解锁。
10.一种电子设备,包括处理器以及存储器,所述存储器用于存储计算机程序,其特征在于,所述处理器用于执行所述计算机程序以执行如权利要求1~8中任意一项所述方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310079386.9A CN115811461B (zh) | 2023-02-08 | 2023-02-08 | San共享存储集群脑裂预防处理方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310079386.9A CN115811461B (zh) | 2023-02-08 | 2023-02-08 | San共享存储集群脑裂预防处理方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115811461A CN115811461A (zh) | 2023-03-17 |
CN115811461B true CN115811461B (zh) | 2023-04-28 |
Family
ID=85487700
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310079386.9A Active CN115811461B (zh) | 2023-02-08 | 2023-02-08 | San共享存储集群脑裂预防处理方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115811461B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116743550B (zh) * | 2023-08-11 | 2023-12-29 | 之江实验室 | 一种分布式存储集群的故障存储节点的处理方法 |
CN117992501A (zh) * | 2024-04-03 | 2024-05-07 | 本原数据(北京)信息技术有限公司 | 数据库集群脑裂预防方法、装置、电子设备及存储介质 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103209095A (zh) * | 2013-03-13 | 2013-07-17 | 广东新支点技术服务有限公司 | 一种基于磁盘服务锁的裂脑预防的方法和装置 |
US8560747B1 (en) * | 2007-02-16 | 2013-10-15 | Vmware, Inc. | Associating heartbeat data with access to shared resources of a computer system |
CN103684941A (zh) * | 2013-11-23 | 2014-03-26 | 广东新支点技术服务有限公司 | 基于仲裁服务器的集群裂脑预防方法和装置 |
CN105045533A (zh) * | 2015-07-09 | 2015-11-11 | 上海爱数软件有限公司 | 适用于双控高可用存储系统的磁盘心跳收发方法 |
CN107147528A (zh) * | 2017-05-23 | 2017-09-08 | 郑州云海信息技术有限公司 | 一种存储网关智能防脑裂系统及方法 |
CN109495312A (zh) * | 2018-12-05 | 2019-03-19 | 广州鼎甲计算机科技有限公司 | 基于仲裁盘和双链路的高可用集群的实现方法和系统 |
CN109634716A (zh) * | 2018-12-04 | 2019-04-16 | 武汉烽火信息集成技术有限公司 | 防脑裂的OpenStack虚拟机高可用管理端装置及管理方法 |
CN109672559A (zh) * | 2018-12-04 | 2019-04-23 | 武汉烽火信息集成技术有限公司 | 一种集群系统中集群成员的仲裁方法及系统 |
WO2020113669A1 (zh) * | 2018-12-04 | 2020-06-11 | 武汉烽火信息集成技术有限公司 | 防脑裂的OpenStack虚拟机高可用计算节点装置及管理方法 |
CN111651291A (zh) * | 2020-04-23 | 2020-09-11 | 国网河南省电力公司电力科学研究院 | 一种共享存储集群防脑裂的方法、系统、计算机存储介质 |
CN111737063A (zh) * | 2020-05-20 | 2020-10-02 | 山东鲸鲨信息技术有限公司 | 双控脑裂的磁盘锁仲裁方法、装置、设备及介质 |
CN114844809A (zh) * | 2022-04-18 | 2022-08-02 | 北京凝思软件股份有限公司 | 基于网络心跳和内核磁盘心跳的多因子仲裁方法、装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8543781B2 (en) * | 2004-02-06 | 2013-09-24 | Vmware, Inc. | Hybrid locking using network and on-disk based schemes |
US8417899B2 (en) * | 2010-01-21 | 2013-04-09 | Oracle America, Inc. | System and method for controlling access to shared storage device |
-
2023
- 2023-02-08 CN CN202310079386.9A patent/CN115811461B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8560747B1 (en) * | 2007-02-16 | 2013-10-15 | Vmware, Inc. | Associating heartbeat data with access to shared resources of a computer system |
CN103209095A (zh) * | 2013-03-13 | 2013-07-17 | 广东新支点技术服务有限公司 | 一种基于磁盘服务锁的裂脑预防的方法和装置 |
CN103684941A (zh) * | 2013-11-23 | 2014-03-26 | 广东新支点技术服务有限公司 | 基于仲裁服务器的集群裂脑预防方法和装置 |
CN105045533A (zh) * | 2015-07-09 | 2015-11-11 | 上海爱数软件有限公司 | 适用于双控高可用存储系统的磁盘心跳收发方法 |
CN107147528A (zh) * | 2017-05-23 | 2017-09-08 | 郑州云海信息技术有限公司 | 一种存储网关智能防脑裂系统及方法 |
CN109634716A (zh) * | 2018-12-04 | 2019-04-16 | 武汉烽火信息集成技术有限公司 | 防脑裂的OpenStack虚拟机高可用管理端装置及管理方法 |
CN109672559A (zh) * | 2018-12-04 | 2019-04-23 | 武汉烽火信息集成技术有限公司 | 一种集群系统中集群成员的仲裁方法及系统 |
WO2020113669A1 (zh) * | 2018-12-04 | 2020-06-11 | 武汉烽火信息集成技术有限公司 | 防脑裂的OpenStack虚拟机高可用计算节点装置及管理方法 |
CN109495312A (zh) * | 2018-12-05 | 2019-03-19 | 广州鼎甲计算机科技有限公司 | 基于仲裁盘和双链路的高可用集群的实现方法和系统 |
CN111651291A (zh) * | 2020-04-23 | 2020-09-11 | 国网河南省电力公司电力科学研究院 | 一种共享存储集群防脑裂的方法、系统、计算机存储介质 |
CN111737063A (zh) * | 2020-05-20 | 2020-10-02 | 山东鲸鲨信息技术有限公司 | 双控脑裂的磁盘锁仲裁方法、装置、设备及介质 |
CN114844809A (zh) * | 2022-04-18 | 2022-08-02 | 北京凝思软件股份有限公司 | 基于网络心跳和内核磁盘心跳的多因子仲裁方法、装置 |
Non-Patent Citations (1)
Title |
---|
田富强 ; 佘文魁 ; 胡波 ; .基于FCSAN心跳的电力云平台虚拟机HA实现.科技创新导报.2020,(第19期),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN115811461A (zh) | 2023-03-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115811461B (zh) | San共享存储集群脑裂预防处理方法、装置及电子设备 | |
US7117393B2 (en) | Failover method in a redundant computer system with storage devices | |
US6732289B1 (en) | Fault tolerant data storage system | |
US7464378B1 (en) | System and method for allowing multiple sub-clusters to survive a cluster partition | |
US6708175B2 (en) | Program support for disk fencing in a shared disk parallel file system across storage area network | |
US8417899B2 (en) | System and method for controlling access to shared storage device | |
US20050283641A1 (en) | Apparatus, system, and method for verified fencing of a rogue node within a cluster | |
US6654902B1 (en) | Persistent reservation IO barriers | |
CN105095125B (zh) | 基于仲裁磁盘的高可用双控存储系统及其运行方法 | |
US7953890B1 (en) | System and method for switching to a new coordinator resource | |
US20050283673A1 (en) | Information processing apparatus, information processing method, and program | |
US9235484B2 (en) | Cluster system | |
CN107947976B (zh) | 故障节点隔离方法及集群系统 | |
US20060236030A1 (en) | Disk array device and control method therefor | |
JP2004038290A (ja) | 情報処理システムおよび同システムで用いられるディスク制御方法 | |
CN109710456B (zh) | 一种数据恢复方法及装置 | |
JP2000181887A (ja) | 情報処理装置における障害処理方法及び記憶制御装置 | |
JPH07200191A (ja) | ディスクアレイ装置 | |
US20040205388A1 (en) | Method for managing computer, apparatus for managing computer, and computer readable medium storing program for managing computer | |
US6480953B1 (en) | Method and apparatus for ensuring system configuration data structure coherency across multiple controllers in a data storage system | |
US8397307B2 (en) | Computer-implemented multi-resource shared lock | |
US20010044883A1 (en) | Disk control device and storage device using it | |
US9244868B2 (en) | Leased lock in active-active high availability DAS systems | |
CN111240903A (zh) | 数据恢复方法及相关设备 | |
JP2001101032A (ja) | 異種os間制御によるos監視方式 |
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 |