CN107544758A - 集群的磁盘心跳检测方法和装置 - Google Patents
集群的磁盘心跳检测方法和装置 Download PDFInfo
- Publication number
- CN107544758A CN107544758A CN201710755502.9A CN201710755502A CN107544758A CN 107544758 A CN107544758 A CN 107544758A CN 201710755502 A CN201710755502 A CN 201710755502A CN 107544758 A CN107544758 A CN 107544758A
- Authority
- CN
- China
- Prior art keywords
- node
- byplot
- bitmap
- point
- heartbeat
- 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.)
- Granted
Links
Landscapes
- Debugging And Monitoring (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种集群的磁盘心跳检测方法和装置。所述集群的共享磁盘中设置有位图,所述位图用于指示所述集群的每个节点的在线状态,该方法包括:在集群的每个心跳周期内,每个节点读取位图获取集群的全部节点在上一心跳周期的在线状态,以及更新各自心跳扇区的序列标号,并通过读取旁节点的心跳扇区的序列标号确定旁节点在当前心跳周期的在线状态;每个节点判断旁节点的在线状态是否发生变化;每个节点在确定其旁节点的在线状态发生变化时,确定其他节点在当前心跳周期的在线状态,根据旁节点及其他节点在当前心跳周期的在线状态写所述位图,更新位图中所述旁节点和其他节点的在线状态。本申请能够显著降低系统的IO负载量。
Description
技术领域
本申请涉及网络通信技术领域,特别涉及一种集群的磁盘心跳检测方法、和装置。
背景技术
共享文件系统是指由多个节点组成的集群,多个节点可访问同一块存储空间,在任一节点上读写文件,在其他节点上仍可以访问该文件,节点之间通过分布式锁协商读写权限。
OCFS2是由Oracle公司开发的基于共享磁盘的集群文件系统,OCFS2共享文件系统的节点采用读写心跳机制来判定其他节点是否在线,即每个节点在共享磁盘的固定基地址进行读写,每个节点按自身的节点号写各自的心跳扇区,并读所有心跳扇区来判断其他节点是否在线。
如图1所示,图1中的共享文件系统为由9个节点组成的集群,系统运行时,9个节点按节点号在各自心跳扇区更新序列标号sequence,并读取其他全部节点的sequence,以sequence数值是否增加此来判断其他节点是否存活。若每个节点的心跳周期为2秒一次,每个节点一个心跳周期内需要写IO一次,读IO 9次,共需要10次IO操作,那么该集群一个心跳周期内需要90次IO操作。
随着集群的节点数量的增加,系统的负载成倍增加,在系统存储繁忙时,可能产生心跳IO不响应的问题,导致系统误判节点存活情况。
发明内容
基于本申请的一个目的,本申请提供一种集群的磁盘心跳检测方法和装置,以解决共享文件系统的磁盘心跳的IO负载高的技术问题。
为达到上述目的,本申请的技术方案是这样实现的:
一方面,本申请提供了一种集群的磁盘心跳检测方法,所述集群的共享磁盘中设置有位图,所述位图用于指示所述集群的每个节点的在线状态;所述方法包括:
在集群的每个心跳周期内,每个节点读取所述位图获取所述集群的全部节点在上一心跳周期的在线状态,以及更新各自心跳扇区的序列标号,并通过读取旁节点的心跳扇区的序列标号确定旁节点在当前心跳周期的在线状态;
每个节点根据其旁节点在当前心跳周期的在线状态与其在上一心跳周期的在线状态是否相同,判断旁节点的在线状态是否发生变化;
每个节点在确定其旁节点的在线状态发生变化时,通过读取除本节点及其旁节点以外的其他节点的心跳扇区的序列标号,确定其他节点在当前心跳周期的在线状态,根据所述旁节点及其他节点在当前心跳周期的在线状态写所述位图,更新所述位图中所述旁节点和其他节点的在线状态。
另一方面,本申请提供了一种集群的磁盘心跳检测装置,所述集群的共享磁盘中设置有位图,所述位图用于指示所述集群的每个节点的在线状态;所述装置包括:
心跳检测单元,用于在集群的每个心跳周期内,读取所述位图获取所述集群的全部节点在上一心跳周期的在线状态,以及更新每个节点各自心跳扇区的序列标号,并通过读取旁节点的心跳扇区的序列标号确定旁节点在当前心跳周期的在线状态;
状态判断单元,用于根据每个节点的旁节点在当前心跳周期的在线状态与其在上一心跳周期的在线状态是否相同,判断旁节点的在线状态是否发生变化;
位图更新单元,用于在确定每个节点的旁节点的在线状态发生变化时,通过读取除本节点及其旁节点以外的其他节点的心跳扇区的序列标号,确定其他节点在当前心跳周期的在线状态,根据所述旁节点及其他节点在当前心跳周期的在线状态写所述位图,更新所述位图中所述旁节点和其他节点的在线状态。
另一方面,本申请提供了一种集群的磁盘心跳检测装置,包括处理器和机器可读存储介质,该机器可读存储介质存储有能够被处理器执行的机器可执行指令,该处理器被机器可执行指令促使:执行上述的集群的磁盘心跳检测方法。
另一方面,本申请提供了一种机器可读存储介质,存储有机器可执行指令,在被处理器调用和执行时,该机器可执行指令促使处理器:执行上述的集群的磁盘心跳检测方法。
本申请的有益效果是:本申请在集群的共享磁盘中设置bitmap,利用bitmap指示集群中每个节点的在线状态,通过磁盘心跳检测确定在线状态发生变化的旁节点,并根据在线状态发生变化的旁节点更新bitmap,使得集群中每个节点可以通过读取bitmap及时获知其他节点的在线状态。
本申请能够显著的降低系统的IO负载量,在进行磁盘心跳检测时,每个在线的节点只执行两次读IO操作和一次写IO操作;在更新bitmap时,由成功写入bitmap的节点执行少于集群节点数量的读IO操作和写IO操作。
附图说明
图1为本申请示出的共享文件系统的集群结构示意图;
图2为本申请实施例提供的集群的磁盘心跳检测方法流程图;
图3为本申请实施例提供的集群的磁盘心跳检测装置结构框图;
图4为本申请实施例示出的一种集群的磁盘心跳检测装置的硬件结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
图2为本申请实施例提供的集群的磁盘心跳检测方法流程图,本实施例的集群包括多个节点,每个节点均可访问共享磁盘,任一节点在共享磁盘上读写文件,其他节点可通过访问该共享磁盘访问该文件。该集群可以进行磁盘心跳,以OCFS2为例,每个共享文件系统集群中的节点,采用读写心跳机制来判断其他节点是否在线。
需要说明的是,本实施例的集群的共享磁盘中设置有位图bitmap,该bitmap用于指示集群的每个节点的在线状态,即bitmap的每个bit位指示一个节点的在线状态。示例性地,若bitmap的一个bit位的数值value为0,表示该bit位对应的节点在线,若该bit位的value为1,表示该bit位对应的节点离线。为便于说明,本实施例中bitmap的所有bit位初始为零。
其中,本实施例的bitmap的存储区域位于所述共享磁盘的公共扇区,该公共扇区为共享磁盘中用于磁盘心跳的扇区中未被节点使用的扇区。如在分配集群中每个节点的心跳扇区时,将共享磁盘中用于磁盘心跳的磁盘区域的首扇区作为公共扇区,根据集群的节点数目创建bitmap。
下面,结合图2详细说明集群的磁盘心跳的检测流程。
S210,在集群的每个心跳周期内,每个节点读取bitmap获取该集群全部节点在上一心跳周期的在线状态,以及更新各自心跳扇区的sequence,并通过读取旁节点的心跳扇区的sequence确定旁节点在当前心跳周期的在线状态。
由于本实施例的bitmap用于指示集群中每个节点的在线状态,因此在每个心跳周期内,每个节点可以通过读bitmap获知全部节点在上一心跳周期的在线状态。由于在线的每个节点在每个心跳周期内均会向各自的心跳扇区写入sequence,因此可以根据心跳扇区的sequence的值是否增加判断使用该扇区的节点是否在线;如在第一个心跳周期内,节点1向其心跳扇区写入sequence=1,在第二个心跳周期内,节点1向其心跳扇区写入sequence=2,依此当节点1在线时,依据心跳周期更新其心跳扇区的sequence。
在本实施例中,每个节点在读取旁节点的心跳扇区的序列标号之前,可以通过下述方法获得每个节点的旁节点。
每个节点获取各自的节点号,每个节点上预先存储有节点号映射关系,所述节点号映射关系表示每个节点与其旁节点的节点号映射关系;每个节点根据其节点号和所述节点号映射关系,确定每个节点的旁节点。
示例性的,若集群的所有节点按照阿拉伯数字从1开始顺次编号,以图1所示的集群为例,假设节点1的节点号为1,节点2的节点号为2,…节点9的节点号为9,则上述节点号映射关系为:每个节点将各自节点号加1后的和值除以集群的节点数目,将除得的余数作为每个节点的旁节点号。
S220,每个节点根据其旁节点在当前心跳周期的在线状态与其在上一心跳周期的在线状态是否相同,判断旁节点的在线状态是否发生变化。
由于在步骤S210中每个节点通过读bitmap可以获知集群全部节点的在线状态,因此可以获知每个节点的旁节点在上一心跳周期的在线状态,比较旁节点在上一心跳周期的在线状态与其在当前心跳周期的在线状态是否相同,当旁节点在当前心跳周期的在线状态与其在上一心跳周期的在线状态相同时,判断旁节点的在线状态未发生变化,当旁节点在当前心跳周期的在线状态与其在上一心跳周期的在线状态不相同时,判断旁节点的在线状态发生变化。
S230,每个节点在确定其旁节点的在线状态发生变化时,通过读取除本节点及其旁节点以外的其他节点的心跳扇区的序列标号,确定其他节点在当前心跳周期的在线状态,根据旁节点及其他节点在当前心跳周期的在线状态写bitmap,更新bitmap中旁节点和其他节点的在线状态。
实际应用中,可以通过比较写指令(compare and write指令)写bitmap中,由于compare and write指令是通过携带写地址请求写bitmap的相应bit位,在请求写连续地址的bit位时,可以通过一条compare and write指令更新bitmap,在请求写不连续地址的bit位时,可以通过两条compare and write指令更新bitmap。例如,在请求不写连续地址的bit位时,某个节点在确定其旁节点的在线状态发生变化时,先通过compare and write指令写bitmap中旁节点的在线庄状态,在写bitmap中旁节点的在线状态成功后,再通过其他节点在当前心跳周期的在线状态写bitmap中其他节点的在线状态;在请求写连续地址的bit位时,某个节点在确定其旁节点的在线状态发生变化时,读取除本节点及其旁节点以外的其他节点的心跳扇区的序列标号,确定其他节点在当前心跳周期的在线状态,通过compareand write指令写bitmap中旁节点和其他节点的在线庄状态。
本实施例在集群的共享磁盘中设置bitmap,利用bitmap指示集群中每个节点的在线状态,通过磁盘心跳检测确定在线状态发生变化的旁节点,并根据在线状态发生变化的旁节点更新bitmap,使得集群中每个节点可以通过读取bitmap及时获知其他节点的在线状态。
本实施例的方法能够显著降低系统的IO负载量,在进行磁盘心跳检测时,每个在线的节点只执行两次读IO操作和一次写IO操作;在更新bitmap时,由成功写入bitmap的节点执行少于集群节点数量的读IO操作和写IO操作。
在实际应用中,可能存在有多个旁节点的在线状态同时发生变化的情况,此时多个节点之间需要通过分布式锁协商对bitmap的写权限,由获得写权限的节点写bitmap。即在有多个旁节点的在线状态同时发生变化时,由获得写权限的节点写bitmap中其旁节点的bit位来更新bitmap中该旁节点的在线状态;在bitmap中旁节点的在线状态更新完成后,由获得写权限的节点读取除自身及其旁节点以外的其他节点的心跳扇区的sequence确定其他节点在当前心跳周期的在线状态,通过写bitmap更新bitmap中其他节点的在线状态。
在本申请的一个实施例中,利用比较写指令的原子操作性协商对bitmap的写权限,此时要求共享磁盘支持compare and write指令;在有多个旁节点的在线状态同时发生变化时,会有多条compare and write指令同时请求写bitmap,这多条compare and write指令之间通过竞争的方式请求写bitmap,只有一条compare and write指令能够成功写bitmap,本实施例由竞争成功的compare and write指令对应的节点获得写权限。
具体的,多个节点在确定其旁节点的在线状态同时发生变化时,每个节点通过compare and write指令请求写bitmap,所述compare and write指令用于写bitmap中旁节点的在线状态;根据所述compare and write指令对应的原子操作将bitmap中在线状态改写成功的旁节点对应的节点获得对bitmap的写权限,由获得写权限的节点写bitmap其他节点的在线状态。如多个(如两个以上的)旁节点的在线状态同时由在线变换为离线,或多个旁节点的在线状态同时由离线变换为在线时,同时发送多条compare and write指令请求写bitmap,由写bitmap成功的compare and write指令对应的节点获得上述写权限。
本实施例中的compare and write指令用于请求写bitmap的bit位。示例性的,若bitmap的一个bit位的value为0,表示该bit位对应的节点在线,一个bit位的value为1,表示该bit位对应的节点离线;那么,每个节点在判断其旁节点的在线状态变换为离线时,采用比较写指令将bitmap中该旁节点对应的bit位的value置1;每个节点在判断其旁节点的在线状态变换为在线时,采用比较写指令将bitmap中该旁节点对应的bit位的value清零。需要说明的是,本实施例也可以以bit位的value为1表示该bit位对应的节点在线,以bit位的value为0表示该bit位对应的节点离线,bit位的value的取值仅用于标识对应节点的在线状态。
为详细说明本实施例的方法能够显著降低系统IO负载量,下面以图1所示的集群为例说明本申请的磁盘心跳检测方法的有益效果。
图1中的共享文件系统为由9个节点组成的集群,节点1的节点号为1、对应心跳扇区1,节点2的节点号为2、对应心跳扇区2,…节点9的节点号为9、对应心跳扇区9;集群的共享磁盘支持比较写指令compare and write指令,bitmap的存储区域位于共享磁盘的公共扇区,假设公共扇区为共享磁盘中用于磁盘心跳的磁盘区域的首扇区0,此时bitmap包含9个bit位,假设bit1-bit9依次表示节点1~节点9的在线状态。
在进行磁盘心跳检测前,计算每个节点的旁节点,如每个节点将各自节点号加1后的和值除以集群的节点数目,将除得的余数作为每个节点的旁节点号;则节点1的旁节点为节点2,节点2的旁节点为节点3,…节点9的旁节点为节点1。其中,集群中的每个节点都可以读写公共扇区。
本实施例在集群的上一心跳周期内,集群的9个节点均能正常访问共享磁盘,即此时bitmap中,bit1=0、bit2=0、bit3=0、bit4=0、bit5=0、bit6=0、bit7=0、bit8=0、bit9=0,由于某种原因,在集群的当前心跳周期内,节点3、4、6同时不能访问共享磁盘。
由于节点3、4、6不能访问共享磁盘,那么系统运行时,节点3不会更新心跳扇区3的sequence,节点4不会更新心跳扇区4的sequence,节点6不会更新心跳扇区6的sequence;而集群中除节点3、4、6外的其他节点在各自的心跳周期内会更新各自的心跳磁盘的sequence:
节点2在当前心跳周期内读bitmap,获知集群全部节点在上一心跳周期的在线状态,并在更新其心跳磁盘2的sequence时,还读取其旁节点的心跳扇区,即读取节点3的心跳扇区3的sequence,由于节点3的心跳扇区3的sequence没有变化,判定节点3离线,通过比较节点3在上一心跳周期的在线状态和当前心跳周期的在线状态确定节点3的在线状态发生变化,此时节点2试图采用compare and write指令向bitmap的bit3写入bit3=1;
节点5在当前心跳周期内读bitmap,获知集群全部节点在上一心跳周期的在线状态,并在更新其心跳磁盘5的sequence时,还读取其旁节点,即读取节点6的心跳扇区6的sequence,由于节点6的心跳扇区6的sequence没有变化,判定节点6离线,通过比较节点6在上一心跳周期的在线状态和在当前心跳周期的在线状态确定节点6的在线状态发生变化,此时节点5试图采用compare and write指令向bitmap的bit6写入bit6=1;
若节点2和节点5同时向bitmap发送compare and write指令,由于compare andwrite指令为原子操作,只会有一个指令成功写入bitmap。假设此时节点2发送的compareand write指令成功写入bitmap,由节点2获得写bitmap的写权限,此时由节点2读集群中除心跳扇区2和心跳扇区3外的其他心跳扇区,根据其他心跳扇区的sequence判断其他心跳扇区对应的节点的在线状态,并更新bitmap,更新后的bitmap的bit1=0、bit2=0、bit3=1、bit4=1、bit5=0、bit6=1、bit7=0、bit8=0、bit9=0,标记了节点3、4、6处于离线状态。
在节点3和节点6离线后,若节点3和节点6同时能访问共享磁盘,此时,节点3和节点6分别更新各自的心跳扇区3的sequence,节点2在读取心跳扇区3的sequence时,发现心跳扇区3的sequence发生变化,判断节点3在线,节点2试图采用compare and write指令向bitmap的bit3写入bit3=0;而节点5在读取心跳扇区6的sequence时,发现心跳扇区6的sequence发生变化,判断节点6在线,节点5试图采用compare and write指令向bitmap的bit6写入bit6=0。
同样的,节点2和节点5同时向bitmap发送compare and write指令,此时,只会有一个指令成功写入bitmap,假设此时节点2发送的compare and write指令成功写入bitmap,由节点2读集群中除心跳扇区2和心跳扇区3外的其他心跳扇区,根据其他心跳扇区的sequence判断其他心跳扇区对应的节点的在线状态,并更新bitmap,更新后的bitmap的bit1=0、bit2=0、bit3=0、bit4=1、bit5=0、bit6=0、bit7=0、bit8=0、bit9=0,标记了节点3、6处于在线状态,仅节点4处于离线状态。
本实施例中,在正常情况下,即对于能够正常访问共享磁盘的节点,且旁节点也能正常访问共享磁盘,如节点1、7、8、9,一个心跳周期内每个节点只需要对公共扇区、自身的心跳扇区和旁节点的心跳扇区各执行一次读IO,对自身的心跳扇区执行一次写IO,共执行4次IO操作;而对于自身能够正常访问共享磁盘的节点,但其旁节点不能正常访问共享磁盘,如节点2和节点5,一个心跳周期内每个节点需要对公共扇区、自身的心跳扇区、其旁节点的心跳扇区以及其他节点的心跳扇区各执行一次读IO,对自身的心跳扇区和公共扇区各执行一次写IO,共执行10+2次IO操作;对于自身能够正常访问共享磁盘的节点,其旁节点由不能访问共享磁盘变为能够正常访问共享磁盘时,一个心跳周期内每个节点需要对公共扇区、自身的心跳扇区、其旁节点的心跳扇区以及其他节点的心跳扇区各执行一次读IO,对自身的心跳扇区和公共扇区各执行一次写IO,共执行10+2次IO操作。
本实施例,在最好的情况下,系统的9个节点均能正常访问共享磁盘,此时每个节点只需执行3次IO操作;在最恶劣情况下,9个节点环境中,8个节点同时不能正常访问共享磁盘,也只会读10个扇区,写2个扇区,仍然小于90次IO读写操作;本实施例能够显著的降低系统的IO负载量。
与上述集群的磁盘心跳检测方法相对应的,本申请该提供了集群的磁盘心跳检测装置。
图3为本申请实施例提供的集群的磁盘心跳检测装置结构框图,本实施例的集群的共享磁盘中设置有bitmap,bitmap用于指示所述集群的每个节点的在线状态;该bitmap的存储区域设置共享磁盘的公共扇区,所述公共扇区为共享磁盘中用于磁盘心跳的扇区中未被节点使用的扇区。
如图3所示,装置30包括:心跳检测单元31、状态判断单元32和位图更新单元33;
心跳检测单元31,用于在集群的每个心跳周期内,读取bitmap获取集群的全部节点在上一心跳周期的在线状态,以及更新每个节点各自心跳扇区的sequence,并通过读取旁节点的心跳扇区的sequence确定旁节点在当前心跳周期的在线状态;
状态判断单元32,用于根据每个节点的旁节点在当前心跳周期的在线状态与其在上一心跳周期的在线状态是否相同,判断旁节点的在线状态是否发生变化;
位图更新单元33,用于在确定每个节点的旁节点的在线状态发生变化时,通过读取除本节点及其旁节点以外的其他节点的心跳扇区的sequence,确定其他节点在当前心跳周期的在线状态,根据旁节点及其他节点在当前心跳周期的在线状态写bitmap,更新bitmap中所述旁节点和其他节点的在线状态。
本实施例的bitmap的每个bit位指示一个节点的在线状态,位图更新单元33具体用于根据其他节点在当前心跳周期的在线状态写bitmap中所述其他节点的比特bit位,以此更新bitmap中其他节点的在线状态;或者,通过比较其他节点在当前心跳周期的在线状态与其在上一心跳周期的在线状态是否相同,来判断其他节点中在线状态发生变化的节点,对bitmap中在线状态发生变化的节点的bit位执行写操作,以此更新bitmap中其他节点的在线状态。
在本申请的一个实施例中,每个节点上预先存储有节点号映射关系,所述节点号映射关系表示每个节点与其旁节点的节点号映射关系;此时,心跳检测单元31,用于在读取旁节点的心跳扇区的序列标号之前,根据节点号和所述节点号映射关系确定每个节点的旁节点。
在本申请的另一个实施例中,图3中的装置30还包括协商竞争单元;
该协商竞争单元,用于在有多个旁节点的在线状态同时发生变化时,通过分布式锁协商多个节点对bitmap的写权限,由获得写权限的节点写上述bitmap。
在本实施例的共享磁盘支持比较写指令,且compare and write指令对应原子操作时,协商竞争单元具体用于在多个节点确定其旁节点的在线状态同时发生变化时,每个节点通过compare and write指令请求写bitmap中旁节点的在线状态;根据所述compareand write指令对应的原子操作将所述bitmap中在线状态改写成功的旁节点对应的节点获得对bitmap的写权限,由获得写权限的节点写bitmap中其他节点的在线状态。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本申请提供的集群的磁盘心跳检测装置可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,参照图4所示,本申请提供的集群的磁盘心跳检测装置30可包括处理器401、存储有机器可执行指令的机器可读存储介质402。处理器401与机器可读存储介质402可经由系统总线403通信。并且,通过读取并执行机器可读存储介质402中与集群的磁盘心跳检测逻辑对应的机器可执行指令,处理器401可执行上文描述的集群的磁盘心跳检测方法。
本申请中提到的机器可读存储介质502可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是易失存储器和/或非易失性存储器,易失存储器可以是RAM(Radom Access Memory,随机存取存储器),非易失性存储器可以是闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、DVD等)等,或者类似的存储介质,或者它们的组合。
根据本申请公开的示例,本申请还提供了一种包括机器可执行指令的机器可读存储介质,例如图4中的机器可读存储介质402,所述机器可执行指令可由集群的磁盘心跳检测装置30中的处理器401执行以实现以上描述的集群的磁盘心跳检测方法。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本申请的保护范围内。
Claims (12)
1.一种集群的磁盘心跳检测方法,其特征在于,所述集群的共享磁盘中设置有位图,所述位图用于指示所述集群的每个节点的在线状态;所述方法包括:
在集群的每个心跳周期内,每个节点读取所述位图获取所述集群的全部节点在上一心跳周期的在线状态,以及更新各自心跳扇区的序列标号,并通过读取旁节点的心跳扇区的序列标号确定旁节点在当前心跳周期的在线状态;
每个节点根据其旁节点在当前心跳周期的在线状态与其在上一心跳周期的在线状态是否相同,判断旁节点的在线状态是否发生变化;
每个节点在确定其旁节点的在线状态发生变化时,通过读取除本节点及其旁节点以外的其他节点的心跳扇区的序列标号,确定其他节点在当前心跳周期的在线状态,根据所述旁节点及其他节点在当前心跳周期的在线状态写所述位图,更新所述位图中所述旁节点和其他节点的在线状态。
2.根据权利要求1所述的方法,其特征在于,在读取旁节点的心跳扇区的序列标号之前,所述方法还包括:
每个节点获取各自的节点号,每个节点上预先存储有节点号映射关系,所述节点号映射关系表示每个节点与其旁节点的节点号映射关系;
每个节点根据各自的节点号和所述节点号映射关系确定每个节点的旁节点。
3.根据权利要求1所述的方法,其特征在于,在有多个旁节点的在线状态同时发生变化时,所述方法还包括:
多个节点之间通过分布式锁协商对所述位图的写权限,由获得写权限的节点写所述位图。
4.根据权利要求3所述的方法,其特征在于,所述共享磁盘支持比较写指令,所述比较写指令对应原子操作,所述多个节点之间通过分布式锁协商对所述位图的写权限,由获得写权限的节点写所述位图,包括:
多个节点在确定其旁节点的在线状态同时发生变化时,每个节点通过比较写指令请求写所述位图,所述比较写指令用于写所述位图中旁节点的在线状态;
根据所述比较写指令对应的原子操作将所述位图中在线状态改写成功的旁节点对应的节点获得对所述位图的写权限,由获得写权限的节点写所述位图其他节点的在线状态。
5.根据权利要求1所述的方法,其特征在于,所述位图的存储区域位于所述共享磁盘的公共扇区,该公共扇区为共享磁盘中用于磁盘心跳的扇区中未被节点使用的扇区。
6.一种集群的磁盘心跳检测装置,其特征在于,所述集群的共享磁盘中设置有位图,所述位图用于指示所述集群的每个节点的在线状态;所述装置包括:
心跳检测单元,用于在集群的每个心跳周期内,读取所述位图获取所述集群的全部节点在上一心跳周期的在线状态,以及更新每个节点各自心跳扇区的序列标号,并通过读取旁节点的心跳扇区的序列标号确定旁节点在当前心跳周期的在线状态;
状态判断单元,用于根据每个节点的旁节点在当前心跳周期的在线状态与其在上一心跳周期的在线状态是否相同,判断旁节点的在线状态是否发生变化;
位图更新单元,用于在确定每个节点的旁节点的在线状态发生变化时,通过读取除本节点及其旁节点以外的其他节点的心跳扇区的序列标号,确定其他节点在当前心跳周期的在线状态,根据所述旁节点及其他节点在当前心跳周期的在线状态写所述位图,更新所述位图中所述旁节点和其他节点的在线状态。
7.根据权利要求6所述的装置,其特征在于,每个节点上预先存储有节点号映射关系,所述节点号映射关系表示每个节点与其旁节点的节点号映射关系;
所述心跳检测单元,用于在读取旁节点的心跳扇区的序列标号之前,根据节点号和所述节点号映射关系确定每个节点的旁节点。
8.根据权利要求6所述的装置,其特征在于,所述装置还包括协商竞争单元;
所述协商竞争单元,用于在有多个旁节点的在线状态同时发生变化时,通过分布式锁协商多个节点对所述位图的写权限,由获得写权限的节点写所述位图。
9.根据权利要求8所述的装置,其特征在于,所述共享磁盘支持比较写指令,所述比较写指令对应原子操作;
所述协商竞争单元,具体用于在多个节点确定其旁节点的在线状态同时发生变化时,每个节点通过比较写指令请求写所述位图中旁节点的在线状态;根据所述比较写指令对应的原子操作将所述位图中在线状态改写成功的旁节点对应的节点获得对所述位图的写权限,由获得写权限的节点写所述位图其他节点的在线状态。
10.根据权利要求6所述的装置,其特征在于,所述位图的存储区域位于所述共享磁盘的公共扇区,该公共扇区为共享磁盘中用于磁盘心跳的扇区中未被节点使用的扇区。
11.一种集群的磁盘心跳检测装置,包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,所述处理器被所述机器可执行指令促使:执行如权利要求1~5任一所述的集群的磁盘心跳检测方法。
12.一种机器可读存储介质,存储有机器可执行指令,在被处理器调用和执行时,所述机器可执行指令促使所述处理器:执行如权利要求1~5任一所述的集群的磁盘心跳检测方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710755502.9A CN107544758B (zh) | 2017-08-29 | 2017-08-29 | 集群的磁盘心跳检测方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710755502.9A CN107544758B (zh) | 2017-08-29 | 2017-08-29 | 集群的磁盘心跳检测方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107544758A true CN107544758A (zh) | 2018-01-05 |
CN107544758B CN107544758B (zh) | 2020-07-10 |
Family
ID=60958229
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710755502.9A Active CN107544758B (zh) | 2017-08-29 | 2017-08-29 | 集群的磁盘心跳检测方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107544758B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109144415A (zh) * | 2018-08-01 | 2019-01-04 | 新华三云计算技术有限公司 | 节点检测方法及共享存储装置 |
CN109376135A (zh) * | 2018-10-19 | 2019-02-22 | 郑州云海信息技术有限公司 | 一种集群文件系统管理方法和系统 |
CN111813348A (zh) * | 2020-09-08 | 2020-10-23 | 苏州浪潮智能科技有限公司 | 统一存储设备中的节点事件处理装置、方法、设备及介质 |
CN112822078A (zh) * | 2021-02-26 | 2021-05-18 | 浪潮云信息技术股份公司 | 一种不同网域中各节点raft心跳上报的实现方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20130038517A (ko) * | 2011-10-10 | 2013-04-18 | 엔에이치엔비즈니스플랫폼 주식회사 | 분산된 컨테이너들을 사용하여 데이터를 관리하는 시스템 및 방법 |
CN105335101A (zh) * | 2015-09-29 | 2016-02-17 | 浪潮(北京)电子信息产业有限公司 | 一种数据处理方法和系统 |
CN106874103A (zh) * | 2016-12-01 | 2017-06-20 | 新华三技术有限公司 | 心跳实现方法及装置 |
CN107077492A (zh) * | 2014-09-10 | 2017-08-18 | 亚马逊科技公司 | 可扩展的基于日志的事务管理 |
-
2017
- 2017-08-29 CN CN201710755502.9A patent/CN107544758B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20130038517A (ko) * | 2011-10-10 | 2013-04-18 | 엔에이치엔비즈니스플랫폼 주식회사 | 분산된 컨테이너들을 사용하여 데이터를 관리하는 시스템 및 방법 |
CN107077492A (zh) * | 2014-09-10 | 2017-08-18 | 亚马逊科技公司 | 可扩展的基于日志的事务管理 |
CN105335101A (zh) * | 2015-09-29 | 2016-02-17 | 浪潮(北京)电子信息产业有限公司 | 一种数据处理方法和系统 |
CN106874103A (zh) * | 2016-12-01 | 2017-06-20 | 新华三技术有限公司 | 心跳实现方法及装置 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109144415A (zh) * | 2018-08-01 | 2019-01-04 | 新华三云计算技术有限公司 | 节点检测方法及共享存储装置 |
CN109144415B (zh) * | 2018-08-01 | 2022-05-06 | 新华三云计算技术有限公司 | 节点检测方法及共享存储装置 |
CN109376135A (zh) * | 2018-10-19 | 2019-02-22 | 郑州云海信息技术有限公司 | 一种集群文件系统管理方法和系统 |
CN111813348A (zh) * | 2020-09-08 | 2020-10-23 | 苏州浪潮智能科技有限公司 | 统一存储设备中的节点事件处理装置、方法、设备及介质 |
CN112822078A (zh) * | 2021-02-26 | 2021-05-18 | 浪潮云信息技术股份公司 | 一种不同网域中各节点raft心跳上报的实现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107544758B (zh) | 2020-07-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1760875B (zh) | 基于文件存取特性在各种类型的存储卷之间透明迁移文件 | |
CN107544758A (zh) | 集群的磁盘心跳检测方法和装置 | |
US5584018A (en) | Information memory apparatus having a plurality of disk drives and calculating and re-allocating data according to access frequency | |
US5764880A (en) | Method and system for rebuilding log-structured arrays | |
US5321824A (en) | Accessing last recorded data in a continuation chain | |
US5864655A (en) | Managing removable media in raid and rail environments | |
US5572661A (en) | Methods and system for detecting data loss in a hierarchic data storage system | |
US7730358B2 (en) | Stress testing method of file system | |
CN106612619B (zh) | 分级存储系统、利用分级存储装置的计算机及校正对文件的访问计数的计算机 | |
CN107122368A (zh) | 一种数据校验方法、装置及电子设备 | |
JP2009193599A (ja) | アレイ・コントローラ及び記憶サブシステムを備えたコンピュータ・システム | |
GB2339487A (en) | Error detection in data transfer by comparing expected and actual identifiers | |
US5978808A (en) | Virtual small block file manager for flash memory array | |
CN110021326A (zh) | 基于闪存的固态驱动器中的保持感知块映射 | |
CN105830039A (zh) | 写入信息存储设备、方法和记录介质 | |
JPH05241931A (ja) | 計算機システムのアクセス管理方法 | |
US20080162591A1 (en) | Method of Logging Transactions and a Method of Reversing a Transaction | |
CN114924923A (zh) | 一种硬盘写入点正确性验证方法、系统、设备及介质 | |
CN108121501A (zh) | 分级存储系统、存储控制器以及分级控制方法 | |
CN107203479A (zh) | 层级化存储系统、存储控制器及层级化控制方法 | |
KR20130136341A (ko) | 반도체 장치 및 그 동작 방법 | |
US11803469B2 (en) | Storing data in a log-structured format in a two-tier storage system | |
CN102546305A (zh) | 一种双向链表访问检错的方法及装置 | |
JP4900203B2 (ja) | 記憶情報配置システム、記憶情報配置方法、および記憶情報配置プログラム | |
CN114489481A (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 |