适用于双控高可用存储系统的磁盘心跳收发方法

文档序号:9326621阅读:440来源:国知局
适用于双控高可用存储系统的磁盘心跳收发方法
【技术领域】
[0001]本发明涉及计算机存储技术领域,尤其是涉及一种适用于双控高可用存储系统的磁盘心跳收发方法。
【背景技术】
[0002]随着数据访问业务对连续性要求的日益提高,高可用成为存储系统的必备特性之一。中小型的高可用集群一般采用双控节点向用户提供数据访问业务。当其中一个节点失效时,另一个节点接管失效节点的资源和业务,保证业务连续性。
[0003]节点间的状态感知是高可用存储系统的核心模块之一。通过网络发送心跳包是系统常用的状态监测感知的方法。网络心跳具有部署灵活,状态信息丰富等特点。然而以高可用的标准评判,交换机掉电,网络接口故障,网线松动断开等风险使得网络心跳的可靠性堪忧。出现网络隔离时,节点无法判断是网络故障,还是对端节点离线。此外,由于承载心跳包的管理网络与数据链路是分离的,网络隔离状态下节点更无法得知对端节点的数据链路是否正常。
[0004]综上可知,网络隔离将使得系统将面临两难境地:导出数据资源造成业务中断,或者双控节点同时导入资源而造成数据不一致。因此,高可用系统有必要在网络心跳存在的基础上,配备另一种心跳方案一一通过共享磁盘发送和接收心跳。

【发明内容】

[0005]本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种适用于双控高可用存储系统的磁盘心跳收发方法,提高了双控高可用存储系统感知节点状态和资源状态的能力;在节点网络隔离状态下,能保持数据服务高可用,降低数据不一致的风险。
[0006]本发明的目的可以通过以下技术方案来实现:
[0007]—种适用于双控高可用存储系统的磁盘心跳收发方法,其特征在于,包括以下步骤:
[0008]I)将共享存储池作为双控节点的存储资源,自动选择存储池的一块磁盘作为心跳盘;
[0009]2)发送端在心跳盘的心跳区域写入心跳标记,接收端读取心跳标记后将其清除;
[0010]3)当存储池的磁盘发生变动时,自动更新心跳盘以保证磁盘心跳连续收发。
[0011]所述的存储池有且仅有一块心跳盘。
[0012]所述的心跳区域为磁盘非数据区域,收发心跳的方式为直接读写磁盘非数据区域;主节点作为发送端写入心跳标记,备节点作为接收端清除心跳标记。
[0013]所述的心跳标记为主备节点约定的特定字符串。
[0014]所述的发送端发送心跳具体为:
[0015]1.1)主节点检查存储池状态,若可用,转步骤1.2 ;否则转步骤1.4 ;
[0016]1.2)读取心跳区域,若存在心跳标记,转步骤1.4 ;否则转步骤1.3 ;
[0017]1.3)向心跳区域写入心跳标记,本次心跳发送成功,并转步骤1.4 ;
[0018]1.4)等待111秒,转步骤1.1。
[0019]所述的主节点以异步方式感知存储池状态。
[0020]线程定时查询存储池状态并实时更新状态标记,主节点在发送磁盘心跳前只需读取状态标记来判断存储池是否可用。
[0021]所述的接收端接收心跳具体如下:
[0022]2.1)读取心跳区域,心跳标记若存在,转步骤2.2 ;否则转步骤2.3 ;
[0023]2.2)清除心跳标记,本次心跳接收成功,转步骤2.4 ;
[0024]2.3)心跳连续发送失败次数若超过上限,转步骤2.5 ;否则转步骤2.4。
[0025]2.4)等待m秒,转步骤2.1 ;
[0026]2.5)结束磁盘心跳的接收。
[0027]节点导入存储池之前,对存储池进行脑裂预防检测。
[0028]所述的脑裂预防检测具体如下:
[0029]3.1)判断是否存在心跳标记,若为是,执行步骤3.2,若没有心跳标记残留,允许导入存储池;
[0030]3.2)若有心跳标记残留,等待η秒后再次检查心跳标记是否存在,若存在,不允许导入存储池,否则允许导入存储池。
[0031]与现有技术相比,本发明具有以下优点:
[0032]I)磁盘心跳使得双控高可用存储系统的节点拥有独立于网络心跳的另一条心跳链路,提高了节点之间相互感知彼此状态的可靠性。
[0033]2)网络隔离状态下,磁盘心跳能够维持存储池的主备节点相互的状态感知,保证数据服务的高可用,避免资源发生不必要的切换。
[0034]3)在节点导入资源前检测磁盘心跳,当网络隔离状态下系统掉电重启时,能起到区分存储池的主备节点的作用,防止发生脑裂。
[0035]4)心跳盘随存储池磁盘的变动而动态更新,全过程自动完成,对用户透明,省去繁琐的手动配置和维护过程。
【附图说明】
[0036]图1为本发明双控高可用存储系统磁盘心跳架构图;
[0037]图2为本发明磁盘心跳发送流程图;
[0038]图3为本发明磁盘心跳接收流程图;
[0039]图4为本发明脑裂预防检测流程图。
【具体实施方式】
[0040]下面结合附图和具体实施例对本发明进行详细说明。
[0041]实施例
[0042]本发明针对共享式的高可用存储系统,提出一种读写共享磁盘的心跳收发方法。该方法使用共享存储池作为存储资源,自动选择存储池的一块磁盘作为心跳盘。发送端在心跳盘的心跳区域写入心跳标记,接收端读取心跳标记后清除。当存储池的磁盘发生变动时,自动更新心跳盘以保证磁盘心跳连续收发。双控高可用系统的磁盘心跳如图1所示。
[0043]本发明包括以下要点:
[0044]1.自动选择心跳盘
[0045]存储心跳标记的磁盘称为心跳盘。本发明选择存储池的第一块磁盘作为心跳盘。当存储池的磁盘出现添加、替换、移除等变动时,心跳盘将自动更新。全过程自动完成,省去繁琐的手动配置和维护管理,对用户透明。
[0046]2.约定心跳区域
[0047]心跳区域是主备节点在初始化时约定的一段用来存放心跳标记的非数据区域。心跳标记是主备节点约定的一个特殊字符串。心跳区域默认不存放任何信息,因而写入心跳标记不破坏存储系统原本的数据或元数据。
[0048]3.收发磁盘心跳
[0049]导入存储池的节点被称为这个存储池的主节点,另一节点称为备节点。主备节点分别作为磁盘心跳的发送端和接收端,每隔m秒(2〈m〈5)读写一次心跳区域。发送端读取心跳区域后写入心跳标记。接收端读取心跳区域后写入空白数据,即清除心跳标记。这样。每隔m秒,心跳标记在心跳区域写入一次,然后被清除一次。发送端从心跳区域读取的数据若为空白,表明接收端心跳接收正常。接收端从心跳区域读取的数据若为心跳标记,表明发送端心跳发送正常。其余状态
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1