CN114138208B - 一种防止drbd裂脑的处理方法及相关组件 - Google Patents
一种防止drbd裂脑的处理方法及相关组件 Download PDFInfo
- Publication number
- CN114138208B CN114138208B CN202210115475.XA CN202210115475A CN114138208B CN 114138208 B CN114138208 B CN 114138208B CN 202210115475 A CN202210115475 A CN 202210115475A CN 114138208 B CN114138208 B CN 114138208B
- Authority
- CN
- China
- Prior art keywords
- value
- latest
- heartbeat
- time
- node
- 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
- 210000004556 brain Anatomy 0.000 title claims abstract description 27
- 238000003672 processing method Methods 0.000 title claims abstract description 22
- 238000005336 cracking Methods 0.000 title description 2
- 238000000034 method Methods 0.000 claims description 13
- 238000004590 computer program Methods 0.000 claims description 11
- 238000010586 diagram Methods 0.000 description 5
- 238000001514 detection method Methods 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
Abstract
本申请公开了一种防止DRBD裂脑的处理方法及相关组件,该方案中,在第一节点上电后获取开机时间;从心跳盘中的第一心跳数据区域中获取最新的第一GI值和最新的第一GI值的产生时间;在判定开机时间与最新的第一GI值的产生时间的时间差大于预设时间时,判断第二心跳数据区域中是否包含最新的第一GI值和基于最新的第一GI值产生的GI值;若是,则不开启DRBD服务。本方案在第一节点开启DRBD服务前,首先通过时间差大于预设时间且第二心跳数据区域中包含最新的第一GI值和基于最新的第一GI值产生的GI值来判定心跳盘中存储的第一节点的第一GI值为旧数据,此时停止开启DRBD服务,防止旧数据导致的DRBD裂脑。
Description
技术领域
本发明涉及防止DRBD裂脑的技术领域,特别是涉及一种防止DRBD裂脑的处理方法及相关组件。
背景技术
DRBD(Distributed Replicated Block Device,分布式块设备复制)是一个开源的纯软件设计的基于网络的块复制存储解决方案,用于在服务器之间,对块设备(硬盘,分区,逻辑卷等)进行镜像。当某一个应用程序完成写操作后,DRBD不仅会将写入的数据保存在一个节点(例如本地服务器)的块设备上,也会将该数据进行复制并通过网络传输到另一个节点(例如远端服务器)的块设备上,因此两个节点的块设备上的数据将会保存一致,也就是镜像功能。
DRBD在写入数据时会通过元数据中的GI(Generation Identifier,生成标识符)值来记录写入数据的信息,在节点掉电后其GI值不再更新。当一个节点先掉电较长时间后另一个节点也掉电,如果重启先掉电的节点,其GI值相较于后掉电的节点的GI值可能为旧数据,则此时开启DRBD服务就可能导致DRBD裂脑,使数据损坏。
发明内容
本申请的目的是提供一种防止DRBD裂脑的处理方法及相关组件,该方案在第一节点开启DRBD服务前,首先通过时间差大于预设时间且第二心跳数据区域中包含最新的第一GI值和基于最新的第一GI值产生的GI值来判定心跳盘中存储的第一节点的第一GI值为旧数据,此时停止开启DRBD服务,防止旧数据导致的DRBD裂脑。
为解决上述技术问题,本申请提供了一种防止DRBD裂脑的处理方法,应用于第一节点,包括:
在所述第一节点上电后获取开机时间;
从心跳盘中的第一心跳数据区域中获取最新的第一GI值和所述最新的第一GI值的产生时间,所述心跳盘的数据格式包括第一心跳数据区域和第二心跳数据区域,所述第一心跳数据区域中存储有所述第一节点的第一GI值和所述第一GI值的产生时间,所述第二心跳数据区域中存储有第二节点的第二GI值和所述第二GI值的产生时间;
在判定所述开机时间与所述最新的第一GI值的产生时间的时间差大于预设时间时,判断所述第二心跳数据区域中是否包含所述最新的第一GI值和基于所述最新的第一GI值产生的GI值;
若是,则不开启DRBD服务。
优选的,所述第一心跳数据区域包括第一头部区域和N个第一数据区域,N为正整数,所述第一数据区域用于存储所述第一数据区域的编号、一个所述第一节点的第一GI值和所述第一GI值的产生时间,所述第一数据区域与所述编号一一对应;所述第一头部区域用于存储最新的所述编号;
从心跳盘中的第一心跳数据区域中获取最新的第一GI值和所述最新的第一GI值的产生时间,包括:
从心跳盘中的第一心跳数据区域中的第一头部区域中获取最新的所述编号;
获取与最新的所述编号对应的第一数据区域中的第一GI值和所述第一GI值的产生时间。
优选的,所述第一头部区域还用于存储所述第一节点的标识,从心跳盘中的第一心跳数据区域中获取最新的第一GI值和所述最新的第一GI值的产生时间,包括:
根据所述第一节点的标识确定从心跳盘中的第一心跳数据区域中获取最新的第一GI值和所述最新的第一GI值的产生时间。
优选的,所述心跳盘的数据格式还包括元数据区域,用于存储所述心跳盘的magic、version和label。
优选的,从心跳盘中的第一心跳数据区域中获取最新的第一GI值和所述最新的第一GI值的产生时间之后,还包括:
在判定所述开机时间与所述最新的第一GI值的产生时间的时间差小于预设时间时,判断所述第二心跳数据区域中是否包含所述最新的第一GI值和基于所述最新的第一GI值产生的GI值;
若是,则开启DRBD服务;
若否,则从所述第二心跳数据区域中获取最新的第二GI值并在判定所述第一心跳数据区域中包含所述最新的第二GI值和基于所述最新的第二GI值产生的GI值时,开启DRBD服务。
优选的,判断所述第二心跳数据区域中是否包含所述最新的第一GI值和基于所述最新的第一GI值产生的GI值之后,还包括:
若否,则从所述第二心跳数据区域中获取最新的第二GI值并在判定所述第一心跳数据区域中包含所述最新的第二GI值和基于所述最新的第二GI值产生的GI值时,开启DRBD服务。
优选的,所述第一心跳数据区域包括第一头部区域和N个第一数据区域,N为正整数,所述第一数据区域用于存储所述第一数据区域的编号、一个所述第一节点的第一GI值和所述第一GI值的产生时间,所述第一数据区域与所述编号一一对应;所述第一头部区域用于存储最新的所述编号,还包括:
从存储区域中获取所述第一节点的实时的第一GI值和所述实时的第一GI值的产生时间;
获取所述心跳盘中的第一头部区域中最新的所述编号;
获取与最新的所述编号对应的第一数据区域中的已有的第一GI值和所述已有的第一GI值的产生时间;
若所述实时的第一GI值与所述已有的第一GI值相同,则将所述已有的第一GI值的产生时间更新为所述实时的第一GI值的产生时间;
若所述实时的第一GI值与所述已有的第一GI值不同,则将所述心跳盘中的第一头部区域中存储的最新的所述编号进行加一得到更新后的编号;
将所述更新后的编号、所述实时的第一GI值和所述实时的第一GI值的产生时间存储至一个空白的第一数据区域中。
优选的,从存储区域中获取所述第一节点的实时的第一GI值和所述实时的第一GI值的产生时间,包括:
每隔预设周期从存储区域中获取所述第一节点的实时的第一GI值和所述实时的第一GI值的产生时间。
为解决上述技术问题,本申请还提供了一种节点,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序以实现所述防止DRBD裂脑的处理方法的步骤。
为解决上述技术问题,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现所述防止DRBD裂脑的处理方法的步骤。
本申请提供了一种防止DRBD裂脑的处理方法及相关组件,该方案中,在第一节点上电后获取开机时间;从心跳盘中的第一心跳数据区域中获取最新的第一GI值和最新的第一GI值的产生时间;在判定开机时间与最新的第一GI值的产生时间的时间差大于预设时间时,判断第二心跳数据区域中是否包含最新的第一GI值和基于最新的第一GI值产生的GI值;若是,则不开启DRBD服务。本方案在第一节点开启DRBD服务前,首先通过时间差大于预设时间且第二心跳数据区域中包含最新的第一GI值和基于最新的第一GI值产生的GI值来判定心跳盘中存储的第一节点的第一GI值为旧数据,此时停止开启DRBD服务,防止旧数据导致的DRBD裂脑。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对现有技术和实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请提供的一种防止DRBD裂脑的处理方法的流程图;
图2为本申请提供的一种心跳盘的数据格式的示意图;
图3为本申请提供的一种第一心跳数据区域和第二心跳数据区域的示意图;
图4为本申请提供的一种更新心跳盘的流程图;
图5为本申请提供的一种节点的结构示意图。
具体实施方式
本申请的核心是提供一种防止DRBD裂脑的处理方法及相关组件,该方案在第一节点开启DRBD服务前,首先通过时间差大于预设时间且第二心跳数据区域中包含最新的第一GI值和基于最新的第一GI值产生的GI值来判定心跳盘中存储的第一节点的第一GI值为旧数据,此时停止开启DRBD服务,防止旧数据导致的DRBD裂脑。
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图1为本申请提供的一种防止DRBD裂脑的处理方法的流程图,应用于第一节点,包括:
S11:在第一节点上电后获取开机时间;
S12:从心跳盘中的第一心跳数据区域中获取最新的第一GI值和最新的第一GI值的产生时间,心跳盘的数据格式包括第一心跳数据区域和第二心跳数据区域,第一心跳数据区域中存储有第一节点的第一GI值和第一GI值的产生时间,第二心跳数据区域中存储有第二节点的第二GI值和第二GI值的产生时间;
S13:在判定开机时间与最新的第一GI值的产生时间的时间差大于预设时间时,判断第二心跳数据区域中是否包含最新的第一GI值和基于最新的第一GI值产生的GI值,若是,则进入S14;
S14:不开启DRBD服务。
DRBD 是一个开源的纯软件设计的基于网络的块复制存储解决方案,它主要用于节点(例如服务器)之间的块设备(例如磁盘或分区等)中数据的镜像。通过网络将一个节点的数据实时传送到另一个节点保证数据的一致性,类似RAID 1(Redundant Array ofInexpensive Disks,独立冗余磁盘阵列);DRBD一般采用强一致性的协议保证数据一致,即两个节点的数据写入完成才确定一个写操作完成。
DRBD在写入数据时会生成元数据,元数据主要包括DRBD的设备大小、GI值,Activity Log(活动日志)、bitmap(位图)等组成。而DRBD采用GI值来确认两个节点如何同步数据。GI值是由4个UUID(Universally Unique Identifier,通用唯一识别码)值组成,分别是Current UUID,Bitmap UUID,History(1)和History(2)组成。当数据达到同步状态会更新Current UUID ,或者有节点断开或连接时生成新的Current UUID,同时将上一次的Current UUID写到History(1),将History(1)写到History(2)。因此,两个节点反复的连接和断开会导致GI值仅保留最近的3次变化信息。
在节点掉电后其GI值不再更新,现有技术中,当一个节点先掉电较长时间后另一个节点也掉电,如果重启先掉电的节点,其GI值相较于后掉电的节点的GI值可能为旧数据,则此时开启DRBD服务就可能导致DRBD裂脑,使数据损坏。
本申请中,提出了一种心跳盘作为两个节点的共享存储,同时记录两个节点GI值和GI值的产生时间,通过存储的GI值和GI值的产生时间判定节点的数据为旧数据时,不开启DRBD服务,防止DRBD裂脑。
具体的,在第一节点掉电后再重启时,当其掉电时长超过预设时间并且是两个节点中先掉电的节点时,判定第一节点中的第一GI值为旧数据,不可容忍,此时不开启DRBD服务。其中,第一节点掉电前最后产生的第一GI值,即第一节点的最新的第一GI值,其产生时间即为第一节点的掉电时间,第一节点上电后的开机时间即为当前时间,掉电时间与当前时间的时间差即为第一节点到当前为止的掉电时长;在两个节点未掉电时,第一GI值与第二GI值是相同的(例如第一GI值和第二GI值均为a、b和c),当第一节点先掉电后,第二节点会生成一个新的第二GI值(例如d),新的第二GI值是基于第二节点中与第一GI值相同的最后一个第二GI值生成的(例如d是基于c生成的,此时第一GI值为a、b和c,第二GI值为a、b、c和d),新的第二GI值可以是与第一GI值相同的最后一个第二GI值中Current UUID进行更新后得到的,之后第二节点在掉电前,其可能还会接收大量的数据,在新的第二GI值后继续生成新的第二GI值(例如此时第一GI值为a、b和c,第二GI值为a、b、c、d、e、f和g)。因此当第二心跳数据区域中存储的第二GI值中包含最新的第一GI值和基于最新的第一GI值产生的GI值(例如第二GI值a、b、c、d、e、f和g中包含第一GI值a、b和c中最新的第一GI值c和基于c产生的d)时,第一节点为先掉电的节点。此外,可以将第二心跳数据区域中存储的第二GI值按照产生时间从新到旧依次与最新的第一GI值相比较,便于确定第二心跳数据区域中存储的第二GI值中是否包含最新的第一GI值和基于最新的第一GI值产生的GI值。
还需要说明的是,心跳盘中的第一心跳数据区域中存储有第一节点的第一GI值和第一GI值的产生时间,心跳盘中的第二心跳数据区域中存储有第二节点的第二GI值和第二GI值的产生时间,本申请需要从心跳盘中调取存储信息进行判断。以图2为例,心跳盘也就是图2中上面的Drbd(Sentinel disk),其数据格式可以分为3个区域分别为元数据区域,第一节点的第一心跳数据区域和第二节点的第二心跳数据区域。元数据区域在心跳盘的前4K,包括magic,version和label,用以记录心跳盘的基础数据,校验版本信息;第一心跳数据区域和第二心跳数据区域都是由一个header区域和32个data区域组成,每个区域都默认占用4K的大小;header区域用于记录节点的唯一标识HOST_UUID,支持最大的data的个数Total_num(默认最大32个),及当前已经记录的data的个数Current_num。data区域主要用于记录其编号Num,当前的GI值数据A _GI,及当前GI值的产生时间Time。
同时,心跳盘在使用时,为确保第一节点和第二节点都能对自身进行访问,在使用前使用DRBD心跳盘格式化工具按照上述格式格式化元数据区域,同时将第一心跳数据区域和第二心跳数据区域中的数据清零,避免心跳盘重复使用时的数据残留。
综上,通过获取共享的心跳盘中存储的信息来判定是否能够开启DRBD服务,避免了DRBD裂脑,提高DRBD的可靠性。
本申请提供了一种防止DRBD裂脑的处理方法,该方案中,在第一节点上电后获取开机时间;从心跳盘中的第一心跳数据区域中获取最新的第一GI值和最新的第一GI值的产生时间;在判定开机时间与最新的第一GI值的产生时间的时间差大于预设时间时,判断第二心跳数据区域中是否包含最新的第一GI值和基于最新的第一GI值产生的GI值;若是,则不开启DRBD服务。本方案在第一节点开启DRBD服务前,首先通过时间差大于预设时间且第二心跳数据区域中包含最新的第一GI值和基于最新的第一GI值产生的GI值来判定心跳盘中存储的第一节点的第一GI值为旧数据,此时停止开启DRBD服务,防止旧数据导致的DRBD裂脑。
在上述实施例的基础上:
作为一种优选的实施例,第一心跳数据区域包括第一头部区域和N个第一数据区域,N为正整数,第一数据区域用于存储第一数据区域的编号、一个第一节点的第一GI值和第一GI值的产生时间,第一数据区域与编号一一对应;第一头部区域用于存储最新的编号;
从心跳盘中的第一心跳数据区域中获取最新的第一GI值和最新的第一GI值的产生时间,包括:
从心跳盘中的第一心跳数据区域中的第一头部区域中获取最新的编号;
获取与最新的编号对应的第一数据区域中的第一GI值和第一GI值的产生时间。
图3为本申请提供的一种第一心跳数据区域和第二心跳数据区域的示意图,本实施例中,第一心跳数据区域包括第一头部区域Header和N个第一数据区域data,N可以设置为32,每个区域可以默认占用4K的大小。同时第二心跳数据区域也可以包含第二头部区域Header和N个第二数据区域data,具有与第一心跳数据区域相同的存储设置,来存储关于第二节点的相应信息。
具体的,获取最新的第一GI值时,可以是先在第一头部区域中获取存储的最新的编号,根据该编号去找对应的第一数据区域,其中存储的第一GI值即为最新的第一GI值。当然,获取最新的第二GI值时也可以采用上述方法。
还需要说明的是,第一头部区域还可以存储已存储有第一GI值的第一数据区域的个数来记录第一心跳数据区域的已使用容量,存储所有的第一数据区域的个数N来记录第一心跳数据区域的总体容量。当第一数据区域的编号是从1开始依次排列的,此时第一头部区域存储的最新的编号也就相当于第一心跳数据区域的已使用容量。
综上,通过第一数据区域的编号和第一头部区域存储的最新的编号可以快速获取第一心跳数据区域中的最新的第一GI值。
作为一种优选的实施例,第一头部区域还用于存储第一节点的标识,从心跳盘中的第一心跳数据区域中获取最新的第一GI值和最新的第一GI值的产生时间,包括:
根据第一节点的标识确定从心跳盘中的第一心跳数据区域中获取最新的第一GI值和最新的第一GI值的产生时间。
本实施例中,第一头部区域还用于存储第一节点的标识,具体的,该标识可以为第一节点的唯一标识HOST_UUID,第一节点可以根据第一节点的标识来确定从第一心跳数据区域中获取相关数据,避免了第一心跳数据区域和第二心跳数据区域的混淆,进而能够保证获取正确的数据。
作为一种优选的实施例,心跳盘的数据格式还包括元数据区域,用于存储心跳盘的magic、version和label。
本实施例中,心跳盘的数据格式还包括元数据区域,具体的,该元数据区域可以占据心跳盘的数据格式中的前4K的大小,可以存储心跳盘的基础信息,例如magic、version和label,来校验版本信息。
作为一种优选的实施例,从心跳盘中的第一心跳数据区域中获取最新的第一GI值和最新的第一GI值的产生时间之后,还包括:
在判定开机时间与最新的第一GI值的产生时间的时间差小于预设时间时,判断第二心跳数据区域中是否包含最新的第一GI值和基于最新的第一GI值产生的GI值;
若是,则开启DRBD服务;
若否,则从第二心跳数据区域中获取最新的第二GI值并在判定第一心跳数据区域中包含最新的第二GI值和基于最新的第二GI值产生的GI值时,开启DRBD服务。
在第一节点掉电后再重启时,当其掉电时长超过预设时间并且是两个节点中先掉电的节点时,判定第一节点中的第一GI值为旧数据,不可容忍,此时不开启DRBD服务。当第一节点掉电前最后产生的第一GI值,即第一节点的最新的第一GI值,其产生时间即为第一节点的掉电时间,第一节点上电后的开机时间即为当前时间,掉电时间与当前时间的时间差即为第一节点到当前为止的掉电时长。其中,本实施例考虑到掉电时长小于预设时间的情况,当判定第二心跳数据区域中包含最新的第一GI值和基于最新的第一GI值产生的GI值时,此时第一节点为先掉电的节点,但由于掉电时长较小,此时可以默认容忍小于预设时间的数据的丢失,即此时舍弃在第一节点掉电后第二节点获取的新的第二GI值,认为第一节点的第一GI值为可以容忍的旧数据,允许开启DRBD服务,其中,预设时间可以默认为15分钟。
在判定第二心跳数据区域中不包含最新的第一GI值和基于最新的第一GI值产生的GI值时,第一节点不是先掉电的节点;然后继续在判定第一心跳数据区域中包含最新的第二GI值和基于最新的第二GI值产生的GI值时,第二节点是先掉电的节点,也就是第一节点为后掉电的节点,此时第一节点的第一GI值为新数据,开启DRBD服务。
综上,当时间差小于预设时间时,无论第一节点是先掉电还是后掉电,此时均可以开启DRBD服务。
作为一种优选的实施例,判断第二心跳数据区域中是否包含最新的第一GI值和基于最新的第一GI值产生的GI值之后,还包括:
若否,则从第二心跳数据区域中获取最新的第二GI值并在判定第一心跳数据区域中包含最新的第二GI值和基于最新的第二GI值产生的GI值时,开启DRBD服务。
本实施例中,在时间差大于预设时间时,如果判定第二心跳数据区域中不包含最新的第一GI值和基于最新的第一GI值产生的GI值时,第一节点不是先掉电的节点,继续在判定第一心跳数据区域中包含最新的第二GI值和基于最新的第二GI值产生的GI值时,第二节点为先掉电的节点,也就是第一节点为后掉电的节点,此时第一节点的第一GI值也就为新数据,开启DRBD服务。
综上,当时间差大于预设时间时,第一节点为后掉电才可以开启DRBD服务。
作为一种优选的实施例,第一心跳数据区域包括第一头部区域和N个第一数据区域,N为正整数,第一数据区域用于存储第一数据区域的编号、一个第一节点的第一GI值和第一GI值的产生时间,第一数据区域与编号一一对应;第一头部区域用于存储最新的编号,还包括:
从存储区域中获取第一节点的实时的第一GI值和实时的第一GI值的产生时间;
获取心跳盘中的第一头部区域中最新的编号;
获取与最新的编号对应的第一数据区域中的已有的第一GI值和已有的第一GI值的产生时间;
若实时的第一GI值与已有的第一GI值相同,则将已有的第一GI值的产生时间更新为实时的第一GI值的产生时间;
若实时的第一GI值与已有的第一GI值不同,则将心跳盘中的第一头部区域中存储的最新的编号进行加一得到更新后的编号;
将更新后的编号、实时的第一GI值和实时的第一GI值的产生时间存储至一个空白的第一数据区域中。
本实施例中考虑到判定能否开启DRBD服务的相关信息是从心跳盘中获取的,所以心跳盘中的数据要进行不断的检测和更新,避免由于心跳盘中数据检测和更新不及时而造成不开启DRBD服务,实现DRBD服务的高可用。
例如图4,图4为本申请提供的一种更新心跳盘的流程图,第一节点的第一GI值等相关信息可以存储在第一节点的DRBD盘中,第一节点可以从第一节点的DRBD盘中定时读取第一GI值等相关信息,并将其存储至心跳盘中的第一心跳数据区域中,对第一心跳数据区域中的数据进行定时更新;第二节点也是如此,同时第一节点的DRBD盘通过网络与第二节点的DRBD盘进行DRBD服务。
具体的,从存储区域(例如第一节点的DRBD盘)中获取第一节点的实时的第一GI值和实时的第一GI值的产生时间,可以将实时的第一GI值记录为drbd_uuid;获取心跳盘中第一心跳数据区域中的第一头部区域中存储的最新的编号;获取与最新的编号对应的第一数据区域中的已有的第一GI值和已有的第一GI值的产生时间,可以将已有的第一GI值记录为sentinel_uuid;可以比较drbd_uuid和sentinel_uuid,若一致,则更新已有的第一GI值的产生时间;若不一致,则将心跳盘中的第一头部区域中存储的最新的编号进行加一得到更新后的编号,并将更新后的编号、实时的第一GI值和实时的第一GI值的产生时间存储至一个空白的第一数据区域中。其中,第二节点也可进行上述操作来更新第二心跳数据区域。
综上,通过保持心跳盘中数据的不断的检测和更新,避免了心跳盘中数据检测和更新不及时而造成不开启DRBD服务,实现DRBD服务的高可用。
作为一种优选的实施例,从存储区域中获取第一节点的实时的第一GI值和实时的第一GI值的产生时间,包括:
每隔预设周期从存储区域中获取第一节点的实时的第一GI值和实时的第一GI值的产生时间。
本实施例中对心跳盘进行检测和更新时,采用每隔预设周期,例如5秒,进行依次检测和更新,有效提高心跳盘的实时性,进而通过心跳盘中的数据能够更好地判断能否开启DRBD服务。
请参照图5,图5为本申请提供的一种节点的结构示意图,包括:
存储器21,用于存储计算机程序;
处理器22,用于执行计算机程序以实现防止DRBD裂脑的处理方法的步骤。
对于本申请提供的一种节点的介绍,请参照上述实施例,本申请此处不再赘述。
本申请提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现防止DRBD裂脑的处理方法的步骤。
对于本申请提供的一种计算机可读存储介质的介绍,请参照上述实施例,本申请此处不再赘述。
需要说明的是,在本说明书中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其他实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (9)
1.一种防止DRBD裂脑的处理方法,其特征在于,应用于第一节点,包括:
在所述第一节点上电后获取开机时间;
从心跳盘中的第一心跳数据区域中获取最新的第一GI值和所述最新的第一GI值的产生时间,所述心跳盘的数据格式包括第一心跳数据区域和第二心跳数据区域,所述第一心跳数据区域中存储有所述第一节点的第一GI值和所述第一GI值的产生时间,所述第二心跳数据区域中存储有第二节点的第二GI值和所述第二GI值的产生时间;
在判定所述开机时间与所述最新的第一GI值的产生时间的时间差大于预设时间时,判断所述第二心跳数据区域中是否包含所述最新的第一GI值和基于所述最新的第一GI值产生的GI值;
若是,则不开启DRBD服务;
从心跳盘中的第一心跳数据区域中获取最新的第一GI值和所述最新的第一GI值的产生时间之后,还包括:
在判定所述开机时间与所述最新的第一GI值的产生时间的时间差小于预设时间时,判断所述第二心跳数据区域中是否包含所述最新的第一GI值和基于所述最新的第一GI值产生的GI值;
若是,则开启DRBD服务;
若否,则从所述第二心跳数据区域中获取最新的第二GI值并在判定所述第一心跳数据区域中包含所述最新的第二GI值和基于所述最新的第二GI值产生的GI值时,开启DRBD服务。
2.如权利要求1所述的防止DRBD裂脑的处理方法,其特征在于,所述第一心跳数据区域包括第一头部区域和N个第一数据区域,N为正整数,所述第一数据区域用于存储所述第一数据区域的编号、一个所述第一节点的第一GI值和所述第一GI值的产生时间,所述第一数据区域与所述编号一一对应;所述第一头部区域用于存储最新的所述编号;
从心跳盘中的第一心跳数据区域中获取最新的第一GI值和所述最新的第一GI值的产生时间,包括:
从心跳盘中的第一心跳数据区域中的第一头部区域中获取最新的所述编号;
获取与最新的所述编号对应的第一数据区域中的第一GI值和所述第一GI值的产生时间。
3.如权利要求2所述的防止DRBD裂脑的处理方法,其特征在于,所述第一头部区域还用于存储所述第一节点的标识,从心跳盘中的第一心跳数据区域中获取最新的第一GI值和所述最新的第一GI值的产生时间,包括:
根据所述第一节点的标识确定从心跳盘中的第一心跳数据区域中获取最新的第一GI值和所述最新的第一GI值的产生时间。
4.如权利要求1所述的防止DRBD裂脑的处理方法,其特征在于,所述心跳盘的数据格式还包括元数据区域,用于存储所述心跳盘的magic、version和label。
5.如权利要求1所述的防止DRBD裂脑的处理方法,其特征在于,判断所述第二心跳数据区域中是否包含所述最新的第一GI值和基于所述最新的第一GI值产生的GI值之后,还包括:
若否,则从所述第二心跳数据区域中获取最新的第二GI值并在判定所述第一心跳数据区域中包含所述最新的第二GI值和基于所述最新的第二GI值产生的GI值时,开启DRBD服务。
6.如权利要求1至5任一项所述的防止DRBD裂脑的处理方法,其特征在于,所述第一心跳数据区域包括第一头部区域和N个第一数据区域,N为正整数,所述第一数据区域用于存储所述第一数据区域的编号、一个所述第一节点的第一GI值和所述第一GI值的产生时间,所述第一数据区域与所述编号一一对应;所述第一头部区域用于存储最新的所述编号,还包括:
从存储区域中获取所述第一节点的实时的第一GI值和所述实时的第一GI值的产生时间;
获取所述心跳盘中的第一头部区域中最新的所述编号;
获取与最新的所述编号对应的第一数据区域中的已有的第一GI值和所述已有的第一GI值的产生时间;
若所述实时的第一GI值与所述已有的第一GI值相同,则将所述已有的第一GI值的产生时间更新为所述实时的第一GI值的产生时间;
若所述实时的第一GI值与所述已有的第一GI值不同,则将所述心跳盘中的第一头部区域中存储的最新的所述编号进行加一得到更新后的编号;
将所述更新后的编号、所述实时的第一GI值和所述实时的第一GI值的产生时间存储至一个空白的第一数据区域中。
7.如权利要求6所述的防止DRBD裂脑的处理方法,其特征在于,从存储区域中获取所述第一节点的实时的第一GI值和所述实时的第一GI值的产生时间,包括:
每隔预设周期从存储区域中获取所述第一节点的实时的第一GI值和所述实时的第一GI值的产生时间。
8.一种服务器,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序以实现如权利要求1至7任一项所述防止DRBD裂脑的处理方法的步骤。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述防止DRBD裂脑的处理方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210115475.XA CN114138208B (zh) | 2022-02-07 | 2022-02-07 | 一种防止drbd裂脑的处理方法及相关组件 |
PCT/CN2022/135153 WO2023147737A1 (zh) | 2022-02-07 | 2022-11-29 | 一种防止drbd裂脑的处理方法及相关组件 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210115475.XA CN114138208B (zh) | 2022-02-07 | 2022-02-07 | 一种防止drbd裂脑的处理方法及相关组件 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114138208A CN114138208A (zh) | 2022-03-04 |
CN114138208B true CN114138208B (zh) | 2022-04-29 |
Family
ID=80381878
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210115475.XA Active CN114138208B (zh) | 2022-02-07 | 2022-02-07 | 一种防止drbd裂脑的处理方法及相关组件 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114138208B (zh) |
WO (1) | WO2023147737A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114138208B (zh) * | 2022-02-07 | 2022-04-29 | 苏州浪潮智能科技有限公司 | 一种防止drbd裂脑的处理方法及相关组件 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4599435B2 (ja) * | 2008-07-17 | 2010-12-15 | 株式会社東芝 | クラスタシステムを構成する計算機及びプログラム |
US8676753B2 (en) * | 2009-10-26 | 2014-03-18 | Amazon Technologies, Inc. | Monitoring of replicated data instances |
CN102457400B (zh) * | 2011-06-09 | 2014-11-05 | 中标软件有限公司 | 一种防止磁盘镜像资源发生脑裂的方法 |
CN103532748B (zh) * | 2013-10-08 | 2017-01-25 | 北京华胜天成科技股份有限公司 | 一种drbd脑裂的处理方法及装置 |
CN107147528A (zh) * | 2017-05-23 | 2017-09-08 | 郑州云海信息技术有限公司 | 一种存储网关智能防脑裂系统及方法 |
US10826812B2 (en) * | 2018-10-07 | 2020-11-03 | Hewlett Packard Enterprise Development Lp | Multiple quorum witness |
CN114138208B (zh) * | 2022-02-07 | 2022-04-29 | 苏州浪潮智能科技有限公司 | 一种防止drbd裂脑的处理方法及相关组件 |
-
2022
- 2022-02-07 CN CN202210115475.XA patent/CN114138208B/zh active Active
- 2022-11-29 WO PCT/CN2022/135153 patent/WO2023147737A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
CN114138208A (zh) | 2022-03-04 |
WO2023147737A1 (zh) | 2023-08-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9092379B2 (en) | Method and apparatus for backup and recovery using storage based journaling | |
US20100049754A1 (en) | Storage system and data management method | |
US7861049B2 (en) | Methods and apparatus for archiving digital data | |
US20050028026A1 (en) | Method and system for backing up and restoring data of a node in a distributed system | |
US9996421B2 (en) | Data storage method, data storage apparatus, and storage device | |
US20070168398A1 (en) | Permanent Storage Appliance | |
CN107315659B (zh) | 一种元数据的冗余备份方法及装置 | |
CN105589887B (zh) | 分布式文件系统的数据处理方法及分布式文件系统 | |
JP2014137711A (ja) | ストレージ装置、バックアッププログラム、およびバックアップ方法 | |
JP6133396B2 (ja) | 計算機システム、サーバ、及び、データ管理方法 | |
CN114138208B (zh) | 一种防止drbd裂脑的处理方法及相关组件 | |
US8145864B1 (en) | Discovering data storage for backup | |
WO2020133473A1 (zh) | 一种备份数据的方法、装置和系统 | |
CN108234465B (zh) | 一种分布式文件系统中应对异常的冗余方法和装置 | |
KR20110062327A (ko) | 스토리지 관리 서버 기반 스크립트 관리 방법 및 이를 실현시키기 위한 프로그램을 기록한 컴퓨터로 판독 가능한 기록 매체 | |
US7600151B2 (en) | RAID capacity expansion interruption recovery handling method and system | |
CN117290292A (zh) | 一种文件系统inode的扩容方法、系统及存储介质 | |
WO2021046693A1 (zh) | 存储系统中数据处理方法、装置以及存储系统 | |
US7587466B2 (en) | Method and computer system for information notification | |
CN110941508B (zh) | 虚拟化系统灾后恢复系统、方法、装置及可读存储介质 | |
JPH09218840A (ja) | 情報処理方法とその装置と情報処理システム | |
CN113391941B (zh) | 一种raid的读写超时处理方法、装置、设备及介质 | |
CN117742609A (zh) | 基于分布式存储的数据处理方法及装置 | |
CN112905538A (zh) | 资源配置方法、系统、电子设备及存储介质 | |
CN117666950A (zh) | 一种硬盘数据迁移方法、装置、介质及nas设备 |
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 |