一种集群文件系统脑裂处理方法和装置制造方法

文档序号:7813289阅读:308来源:国知局
一种集群文件系统脑裂处理方法和装置制造方法
【专利摘要】本发明公开了一种集群文件系统脑裂处理方法和装置,所述的方法包括以下步骤:监测各个节点,当发现有无响应节点时,记录所述无响应节点;当某一文件收到编辑请求时,检查该文件的两个副本之一是否存储在所述无响应节点上;若该文件的两个副本均不存储在所述无响应节点上,则不做操作;若该文件的一个副本存储在所述无响应节点上,则对其另一个副本添加修复标识;当所述无响应节点恢复响应后,以带有修复标识的所述另一个副本作为源副本,将所述一个副本修复至与所述源副本相同,并清除所述修复标识。本发明的方法和装置,给出了一种在现有的仅有两个副本的情况下也能进行脑裂处理的方案,能够兼顾实际空间利用率和IO性能。
【专利说明】一种集群文件系统脑裂处理方法和装置

【技术领域】
[0001]本发明涉及集群文件系统领域,特别是指一种集群文件系统脑裂处理方法和装置。

【背景技术】
[0002]脑裂是因为计算机集群分裂导致的,计算机集群中的节点因为处理器忙或者其他原因暂时停止响应时,其他节点可能误认为该节点“已死”,从而夺取共享磁盘(即资源)的访问权,此时极有可能假死节点重新对共享文件系统产生读写操作,从而导致共享磁盘文件系统损坏。对于分布式文件系统,每一个文件均对应于两个副本,用户编辑该文件时,会定向到任一副本,并实时地将两个副本同步更新至相同。当存储某一副本的节点因为断网、宕机等情况而停止响应时,用户的编辑会造成两个副本的内容不同,使相同无法得知以哪个副本进行同步更新,即发生分布式文件系统中文件的脑裂。
[0003]目前,处理文件脑裂的方法主要有:增加心跳线降低发生脑裂的概率,增加文件副本数(n> = 3)等。现有方案增加心跳线虽能降低概率但成本较高,若发生脑裂问题,需专业工程师的介入无疑也增加了成本,降低了效率,耗时较长。增加文件副本数(n> = 3)也能有效避免脑裂,但用户的实际存储空间利用率降低(小于等于磁盘总数的三分之一),而且副本的增加会严重降低1性能,这也是许多用户不能接受的。


【发明内容】

[0004]有鉴于此,本发明的目的在于提出一种简单高效的预防和解决集群文件系统脑裂的方法和装置。
[0005]基于上述目的本发明提供的一种集群文件系统脑裂处理方法,包括以下步骤:
[0006]监测各个节点,当发现有无响应节点时,记录所述无响应节点;
[0007]当某一文件收到编辑请求时,检查该文件的两个副本之一是否存储在所述无响应节点上;若该文件的两个副本均不存储在所述无响应节点上,则不做操作;若该文件的一个副本存储在所述无响应节点上,则对其另一个副本添加修复标识;
[0008]当所述无响应节点恢复响应后,以带有修复标识的所述另一个副本作为源副本,将所述一个副本修复至与所述源副本相同,并清除所述修复标识。
[0009]优选的,在修复文件的两个副本的步骤中,将用户对该文件的访问请求定向到带有修复标识的副本,使该文件处于可访问状态。
[0010]优选的,所述的方法进一步包括对脑裂文件的处理方法,包括以下步骤:
[0011]将脑裂文件设置为临时访问状态,使用户能够分别访问其两个副本;
[0012]获取用户指令,为一个副本添加修复标识,并清除所述脑裂文件的临时访问状态;
[0013]以带有修复标识的所述副本作为源副本,将另一个副本修复至与所述源副本相同,并清除所述修复标识。
[0014]优选的,在临时访问状态下,通过API接口或标准Linux命令getfattr获取所述脑裂文件副本的基本信息;通过API接口或标准Linux命令setfattr来访问文件副本。
[0015]本发明还提供了一种集群文件系统脑裂处理装置,包括:
[0016]监测模块,用于监测各个节点,当发现有无响应节点时,记录所述无响应节点;
[0017]第一执行模块,用于当某一文件收到编辑请求时,检查该文件的两个副本之一是否存储在所述无响应节点上;若该文件的两个副本均不存储在所述无响应节点上,则不做操作;若该文件的一个副本存储在所述无响应节点上,则对其另一个副本添加修复标识;
[0018]第一修复模块,用于当所述无响应节点恢复响应后,以带有修复标识的所述另一个副本作为源副本,将所述一个副本修复至与所述源副本相同,并清除所述修复标识。
[0019]优选的,所述第一修复模块还用于在修复文件的两个副本的过程中,将用户对该文件的访问请求定向到带有修复标识的副本,使该文件处于可访问状态。
[0020]优选的,所述的装置还包括:
[0021]临时访问模块,用于将脑裂文件设置为临时访问状态,使用户能够分别访问其两个副本;
[0022]第二执行模块,用于获取用户指令,为一个副本添加修复标识,并清除所述脑裂文件的临时访问状态;
[0023]第二修复模块,用于以带有修复标识的所述副本作为源副本,将另一个副本修复至与所述源副本相同,并清除所述修复标识。
[0024]优选的,所述临时访问模块通过API接口或标准Linux命令getfattr获取所述脑裂文件副本的信息;通过API接口或标准Linux命令setfattr来访问文件副本。
[0025]从上面所述可以看出,本发明提供的集群文件系统脑裂处理方法和装置,给出了一种在现有的仅有两个副本的情况下也能进行脑裂处理的方案,能够兼顾实际空间利用率和1性能。在处理脑裂和修复的过程中,不需要停止当前的集群服务即可进行处理,即处理发生脑裂的文件时,不影响其它非脑裂文件的读写访问,同时,数据修复过程中不影响用户的访问。

【专利附图】

【附图说明】
[0026]图1为本发明实施例的集群文件系统脑裂处理方法流程图;
[0027]图2为本发明实施例的脑裂文件解决处理方法流程图;
[0028]图3为本发明实施例的集群文件系统脑裂处理装置的示意图。

【具体实施方式】
[0029]为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
[0030]本发明实施例提供了一种集群文件系统脑裂处理方法,对于运行在一个计算机集群中的分布式文件系统,即集群文件系统,通过本实施例的方法有效的预防文件发生脑裂,而造成文件损坏、用户无法访问的情况。
[0031]参考图1,为本发明实施例的集群文件系统脑裂处理方法流程图。
[0032]步骤101:监测各个节点,当发现有无响应节点时,记录所述无响应节点。
[0033]在计算机集群中,由一个外部管理节点对计算机集群中的各个节点进行实时的监测,当其监测到有任一节点因为断网、宕机等因素而进入无响应状态时,管理节点将会把该无响应节点的名称报告给集群文件系统,并由集群文件系统记录该无响应节点。
[0034]步骤102:当某一文件收到编辑请求时,检查该文件的两个副本之一是否存储在所述无响应节点上;若该文件的两个副本均不存储在所述无响应节点上,则不做操作;若该文件的一个副本存储在所述无响应节点上,则对其另一个副本添加修复标识。
[0035]本步骤中,对于集群文件系统中的任一文件接收的用户的编辑请求时,首先检查该被要求编辑的文件与步骤101中所述的被记录的无响应节点的相关性,即该文件的两个副本中,是否有一个存储在所述的无响应节点上。若该文件的两个副本均不存储在所述无响应节点上,则进入正常的文件编辑过程。若检查发现,该文件有一个副本存储在所述的无响应节点上,则对该文件的另一个副本,即存储在正常节点上的副本添加一个修复标识,然后用户进行正常的编辑过程,该带有修复标识的副本记录用户的编辑内容。
[0036]步骤103:当所述无响应节点恢复响应后,以带有修复标识的所述另一个副本作为源副本,将所述一个副本修复至与所述源副本相同,并清除所述修复标识。
[0037]所述的无响应节点排除故障恢复响应后,在一般的集群文件系统中,由于此时被编辑过的文件的两个副本的内容不一致,系统无法得知以哪个副本为源副本进行同步更新,即会发生文件的脑裂。在本实施例中,由于经过步骤102后,经过用户编辑的副本带有修复标识,则以该带有修复标识的副本作为源副本,将该文件存储在之前无响应节点上的副本更新至与所述的源副本相同。此时,该文件的两个副本均已经恢复正常,最后将副本上的修复标识清除。
[0038]在本步骤中所述的文件副本的修复过程中,在修复进行时如果收到对被修复的文件的访问请求,此时将用户的访问定向到带有修复标识的副本上,使得用户能够对该文件进行正常访问。
[0039]本实施例的集群文件系统脑裂处理方法中,还进一步的包括对于已经发生脑裂的文件的解决处理方法。
[0040]通过上述的步骤101至步骤103的方法,能够比较有效的预防文件发生脑裂。但是由于集群文件系统的系统工作状态复杂,仍有一定的概率会有个别文件出现脑裂的情况。有鉴于此,本发明实施例为了能够最大程度的保证集群文件系统中文件的正常工作,还提供了对于脑裂文件的解决处理方法,参考图2,为本发明实施例的脑裂文件解决处理方法流程图。
[0041]所述的脑裂文件解决处理方法包括以下步骤:
[0042]步骤201:将脑裂文件设置为临时访问状态,使用户能够分别访问其两个副本。
[0043]一般情况下,发生脑裂的文件时无法被用户正常访问的,即处于非访问状态。在本步骤中,首先将脑裂文件的访问状态设置为临时访问状态,所述的临时访问状态允许用户能够分别访问该脑裂文件的两个副本。
[0044]步骤202:获取用户指令,为一个副本添加修复标识,并清除所述脑裂文件的临时访问状态。
[0045]在脑裂文件处于临时访问状态后,用户能够获取脑裂文件的两个副本的基本信息。所述的基本信息包括副本的存储节点、大小、访问时间等等,可以根据这些基本信息进行判断哪个副本是经过用户最后编辑的正确副本。在某些情况下,通过基本信息无法判断哪个副本是正确的,那么用户可以通过直接访问每个副本,查看副本数据是否正确来判断。例如,比如脑裂的是虚拟机的img文件,img在副本imgA或者imgB时,是否能够正常启动,启动后内部数据是否正常等等,通过对比确定imgA或imgB为正确副本。在另外一些情况下,用户可能恰恰需要未经过编辑之前的文件,那么用户可以直接选取不包括最后编辑内容的副本为正确副本。通过上述几种方法选取好正确副本后,对其添加一个修复标识,同时清除脑裂文件的临时访问状态。
[0046]作为优选的,在本步骤中,通过API接口或标准Linux命令getfattr获取所述脑裂文件副本的基本信息;通过API接口或标准Linux命令setfattr来访问文件副本。
[0047]步骤203:以带有修复标识的所述副本作为源副本,将另一个副本修复至与所述源副本相同,并清除所述修复标识。
[0048]经过步骤202,被添加有修复标识的副本为正确副本,则以该带有修复标识的副本作为源副本,将该文件存储在之前无响应节点上的副本更新至与所述的源副本相同。此时,该文件的两个副本均已经恢复正常,最后将副本上的修复标识清除,以最后完成脑裂文件的解决和修复。在本步骤的修复过程中,同样的,在修复进行时如果收到对被修复的文件的访问请求,此时将用户的访问定向到带有修复标识的副本上,使得用户能够对该文件进行正常访问。
[0049]本发明实施例还提供了一种集群文件系统脑裂处理装置,参考图3,为本发明实施例的集群文件系统脑裂处理装置的示意图,所述的装置包括:
[0050]监测模块301,用于监测各个节点,当发现有无响应节点时,记录所述无响应节占.
[0051]第一执行模块302,用于当某一文件收到编辑请求时,检查该文件的两个副本之一是否存储在所述无响应节点上;若该文件的两个副本均不存储在所述无响应节点上,则不做操作;若该文件的一个副本存储在所述无响应节点上,则对其另一个副本添加修复标识;
[0052]第一修复模块303,用于当所述无响应节点恢复响应后,以带有修复标识的所述另一个副本作为源副本,将所述一个副本修复至与所述源副本相同,并清除所述修复标识。
[0053]作为优选的,本实施例中,第一修复模块303还用于在修复文件的两个副本的过程中,将用户对该文件的访问请求定向到带有修复标识的副本,使该文件处于可访问状态。
[0054]进一步的,本实施例的装置还包括:
[0055]临时访问模块304,用于将脑裂文件设置为临时访问状态,使用户能够分别访问其两个副本;
[0056]第二执行模块305,用于获取用户指令,为一个副本添加修复标识,并清除所述脑裂文件的临时访问状态;
[0057]第二修复模块306,用于以带有修复标识的所述副本作为源副本,将另一个副本修复至与所述源副本相同,并清除所述修复标识。
[0058]其中,临时访问模块304通过API接口或标准Linux命令getfattr获取所述脑裂文件副本的信息;通过API接口或标准Linux命令setfattr来访问文件副本。
[0059]通过上述实施例可以看出,本发明的集群文件系统脑裂处理方法和装置具有如下有益效果:
[0060]I)即可预防文件脑裂又能对脑裂后的文件进行灾后处理,最大限度的提升用户数据的安全性。
[0061]2)提高实际空间利用率和1性能。
[0062]3)无须专业工程师介入,用户即可完成对脑裂的预防和灾后处理,降低了成本,提高了效率。
[0063]4)根据业务需求,用户可根据自身需要对脑裂文件进行处理,具有很大的灵活性。
[0064]所属领域的普通技术人员应当理解:以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种集群文件系统脑裂处理方法,其特征在于,包括以下步骤: 监测各个节点,当发现有无响应节点时,记录所述无响应节点; 当某一文件收到编辑请求时,检查该文件的两个副本之一是否存储在所述无响应节点上;若该文件的两个副本均不存储在所述无响应节点上,则不做操作;若该文件的一个副本存储在所述无响应节点上,则对其另一个副本添加修复标识; 当所述无响应节点恢复响应后,以带有修复标识的所述另一个副本作为源副本,将所述一个副本修复至与所述源副本相同,并清除所述修复标识。
2.根据权利要求1所述的方法,其特征在于,在修复文件的两个副本的步骤中,将用户对该文件的访问请求定向到带有修复标识的副本,使该文件处于可访问状态。
3.根据权利要求1所述的方法,其特征在于,进一步包括对脑裂文件的处理方法,包括以下步骤: 将脑裂文件设置为临时访问状态,使用户能够分别访问其两个副本; 获取用户指令,为一个副本添加修复标识,并清除所述脑裂文件的临时访问状态; 以带有修复标识的所述副本作为源副本,将另一个副本修复至与所述源副本相同,并清除所述修复标识。
4.根据权利要求3所述的方法,其特征在于,在临时访问状态下,通过API接口或标准Linux命令getfattr获取所述脑裂文件副本的基本信息;通过API接口或标准Linux命令setfattr来访问文件副本。
5.一种集群文件系统脑裂处理装置,其特征在于,包括: 监测模块,用于监测各个节点,当发现有无响应节点时,记录所述无响应节点; 第一执行模块,用于当某一文件收到编辑请求时,检查该文件的两个副本之一是否存储在所述无响应节点上;若该文件的两个副本均不存储在所述无响应节点上,则不做操作;若该文件的一个副本存储在所述无响应节点上,则对其另一个副本添加修复标识; 第一修复模块,用于当所述无响应节点恢复响应后,以带有修复标识的所述另一个副本作为源副本,将所述一个副本修复至与所述源副本相同,并清除所述修复标识。
6.根据权利要求5所述的装置,其特征在于,所述第一修复模块还用于在修复文件的两个副本的过程中,将用户对该文件的访问请求定向到带有修复标识的副本,使该文件处于可访问状态。
7.根据权利要求5所述的装置,其特征在于,还包括: 临时访问模块,用于将脑裂文件设置为临时访问状态,使用户能够分别访问其两个副本; 第二执行模块,用于获取用户指令,为一个副本添加修复标识,并清除所述脑裂文件的临时访问状态; 第二修复模块,用于以带有修复标识的所述副本作为源副本,将另一个副本修复至与所述源副本相同,并清除所述修复标识。
8.根据权利要求7所述的装置,其特征在于,所述临时访问模块通过API接口或标准Linux命令getfattr获取所述脑裂文件副本的信息;通过API接口或标准Linux命令setfattr来访问文件副本。
【文档编号】H04L29/08GK104239182SQ201410445997
【公开日】2014年12月24日 申请日期:2014年9月3日 优先权日:2014年9月3日
【发明者】王晓强, 贾德明 申请人:北京鲸鲨软件科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1