CN104239182B - 一种集群文件***脑裂处理方法和装置 - Google Patents
一种集群文件***脑裂处理方法和装置 Download PDFInfo
- Publication number
- CN104239182B CN104239182B CN201410445997.1A CN201410445997A CN104239182B CN 104239182 B CN104239182 B CN 104239182B CN 201410445997 A CN201410445997 A CN 201410445997A CN 104239182 B CN104239182 B CN 104239182B
- Authority
- CN
- China
- Prior art keywords
- copy
- document
- mark
- file
- fissure
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种集群文件***脑裂处理方法和装置,所述的方法包括以下步骤:监测各个节点,当发现有无响应节点时,记录所述无响应节点;当某一文件收到编辑请求时,检查该文件的两个副本之一是否存储在所述无响应节点上;若该文件的两个副本均不存储在所述无响应节点上,则不做操作;若该文件的一个副本存储在所述无响应节点上,则对其另一个副本添加修复标识;当所述无响应节点恢复响应后,以带有修复标识的所述另一个副本作为源副本,将所述一个副本修复至与所述源副本相同,并清除所述修复标识。本发明的方法和装置,给出了一种在现有的仅有两个副本的情况下也能进行脑裂处理的方案,能够兼顾实际空间利用率和IO性能。
Description
技术领域
本发明涉及集群文件***领域,特别是指一种集群文件***脑裂处理方法和装置。
背景技术
脑裂是因为计算机集群***导致的,计算机集群中的节点因为处理器忙或者其他原因暂时停止响应时,其他节点可能误认为该节点“已死”,从而夺取共享磁盘(即资源)的访问权,此时极有可能假死节点重新对共享文件***产生读写操作,从而导致共享磁盘文件***损坏。对于分布式文件***,每一个文件均对应于两个副本,用户编辑该文件时,会定向到任一副本,并实时地将两个副本同步更新至相同。当存储某一副本的节点因为断网、宕机等情况而停止响应时,用户的编辑会造成两个副本的内容不同,使相同无法得知以哪个副本进行同步更新,即发生分布式文件***中文件的脑裂。
目前,处理文件脑裂的方法主要有:增加心跳线降低发生脑裂的概率,增加文件副本数(n>=3)等。现有方案增加心跳线虽能降低概率但成本较高,若发生脑裂问题,需专业工程师的介入无疑也增加了成本,降低了效率,耗时较长。增加文件副本数(n>=3)也能有效避免脑裂,但用户的实际存储空间利用率降低(小于等于磁盘总数的三分之一),而且副本的增加会严重降低IO性能,这也是许多用户不能接受的。
发明内容
有鉴于此,本发明的目的在于提出一种简单高效的预防和解决集群文件***脑裂的方法和装置。
基于上述目的本发明提供的一种集群文件***脑裂处理方法,包括以下步骤:
监测各个节点,当发现有无响应节点时,记录所述无响应节点;
当某一文件收到编辑请求时,检查该文件的两个副本之一是否存储在所述无响应节点上;若该文件的两个副本均不存储在所述无响应节点上,则不做操作;若该文件的一个副本存储在所述无响应节点上,则对其另一个副本添加修复标识;
当所述无响应节点恢复响应后,以带有修复标识的所述另一个副本作为源副本,将所述一个副本修复至与所述源副本相同,并清除所述修复标识。
优选的,在修复文件的两个副本的步骤中,将用户对该文件的访问请求定向到带有修复标识的副本,使该文件处于可访问状态。
优选的,所述的方法进一步包括对脑裂文件的处理方法,包括以下步骤:
将脑裂文件设置为临时访问状态,使用户能够分别访问其两个副本;
获取用户指令,为一个副本添加修复标识,并清除所述脑裂文件的临时访问状态;
以带有修复标识的所述副本作为源副本,将另一个副本修复至与所述源副本相同,并清除所述修复标识。
优选的,在临时访问状态下,通过API接口或标准Linux命令getfattr获取所述脑裂文件副本的基本信息;通过API接口或标准Linux命令setfattr来访问文件副本。
本发明还提供了一种集群文件***脑裂处理装置,包括:
监测模块,用于监测各个节点,当发现有无响应节点时,记录所述无响应节点;
第一执行模块,用于当某一文件收到编辑请求时,检查该文件的两个副本之一是否存储在所述无响应节点上;若该文件的两个副本均不存储在所述无响应节点上,则不做操作;若该文件的一个副本存储在所述无响应节点上,则对其另一个副本添加修复标识;
第一修复模块,用于当所述无响应节点恢复响应后,以带有修复标识的所述另一个副本作为源副本,将所述一个副本修复至与所述源副本相同,并清除所述修复标识。
优选的,所述第一修复模块还用于在修复文件的两个副本的过程中,将用户对该文件的访问请求定向到带有修复标识的副本,使该文件处于可访问状态。
优选的,所述的装置还包括:
临时访问模块,用于将脑裂文件设置为临时访问状态,使用户能够分别访问其两个副本;
第二执行模块,用于获取用户指令,为一个副本添加修复标识,并清除所述脑裂文件的临时访问状态;
第二修复模块,用于以带有修复标识的所述副本作为源副本,将另一个副本修复至与所述源副本相同,并清除所述修复标识。
优选的,所述临时访问模块通过API接口或标准Linux命令getfattr获取所述脑裂文件副本的信息;通过API接口或标准Linux命令setfattr来访问文件副本。
从上面所述可以看出,本发明提供的集群文件***脑裂处理方法和装置,给出了一种在现有的仅有两个副本的情况下也能进行脑裂处理的方案,能够兼顾实际空间利用率和IO性能。在处理脑裂和修复的过程中,不需要停止当前的集群服务即可进行处理,即处理发生脑裂的文件时,不影响其它非脑裂文件的读写访问,同时,数据修复过程中不影响用户的访问。
附图说明
图1为本发明实施例的集群文件***脑裂处理方法流程图;
图2为本发明实施例的脑裂文件解决处理方法流程图;
图3为本发明实施例的集群文件***脑裂处理装置的示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
本发明实施例提供了一种集群文件***脑裂处理方法,对于运行在一个计算机集群中的分布式文件***,即集群文件***,通过本实施例的方法有效的预防文件发生脑裂,而造成文件损坏、用户无法访问的情况。
参考图1,为本发明实施例的集群文件***脑裂处理方法流程图。
步骤101:监测各个节点,当发现有无响应节点时,记录所述无响应节点。
在计算机集群中,由一个外部管理节点对计算机集群中的各个节点进行实时的监测,当其监测到有任一节点因为断网、宕机等因素而进入无响应状态时,管理节点将会把该无响应节点的名称报告给集群文件***,并由集群文件***记录该无响应节点。
步骤102:当某一文件收到编辑请求时,检查该文件的两个副本之一是否存储在所述无响应节点上;若该文件的两个副本均不存储在所述无响应节点上,则不做操作;若该文件的一个副本存储在所述无响应节点上,则对其另一个副本添加修复标识。
本步骤中,对于集群文件***中的任一文件接收的用户的编辑请求时,首先检查该被要求编辑的文件与步骤101中所述的被记录的无响应节点的相关性,即该文件的两个副本中,是否有一个存储在所述的无响应节点上。若该文件的两个副本均不存储在所述无响应节点上,则进入正常的文件编辑过程。若检查发现,该文件有一个副本存储在所述的无响应节点上,则对该文件的另一个副本,即存储在正常节点上的副本添加一个修复标识,然后用户进行正常的编辑过程,该带有修复标识的副本记录用户的编辑内容。
步骤103:当所述无响应节点恢复响应后,以带有修复标识的所述另一个副本作为源副本,将所述一个副本修复至与所述源副本相同,并清除所述修复标识。
所述的无响应节点排除故障恢复响应后,在一般的集群文件***中,由于此时被编辑过的文件的两个副本的内容不一致,***无法得知以哪个副本为源副本进行同步更新,即会发生文件的脑裂。在本实施例中,由于经过步骤102后,经过用户编辑的副本带有修复标识,则以该带有修复标识的副本作为源副本,将该文件存储在之前无响应节点上的副本更新至与所述的源副本相同。此时,该文件的两个副本均已经恢复正常,最后将副本上的修复标识清除。
在本步骤中所述的文件副本的修复过程中,在修复进行时如果收到对被修复的文件的访问请求,此时将用户的访问定向到带有修复标识的副本上,使得用户能够对该文件进行正常访问。
本实施例的集群文件***脑裂处理方法中,还进一步的包括对于已经发生脑裂的文件的解决处理方法。
通过上述的步骤101至步骤103的方法,能够比较有效的预防文件发生脑裂。但是由于集群文件***的***工作状态复杂,仍有一定的概率会有个别文件出现脑裂的情况。有鉴于此,本发明实施例为了能够最大程度的保证集群文件***中文件的正常工作,还提供了对于脑裂文件的解决处理方法,参考图2,为本发明实施例的脑裂文件解决处理方法流程图。
所述的脑裂文件解决处理方法包括以下步骤:
步骤201:将脑裂文件设置为临时访问状态,使用户能够分别访问其两个副本。
一般情况下,发生脑裂的文件时无法被用户正常访问的,即处于非访问状态。在本步骤中,首先将脑裂文件的访问状态设置为临时访问状态,所述的临时访问状态允许用户能够分别访问该脑裂文件的两个副本。
步骤202:获取用户指令,为一个副本添加修复标识,并清除所述脑裂文件的临时访问状态。
在脑裂文件处于临时访问状态后,用户能够获取脑裂文件的两个副本的基本信息。所述的基本信息包括副本的存储节点、大小、访问时间等等,可以根据这些基本信息进行判断哪个副本是经过用户最后编辑的正确副本。在某些情况下,通过基本信息无法判断哪个副本是正确的,那么用户可以通过直接访问每个副本,查看副本数据是否正确来判断。例如,比如脑裂的是虚拟机的img文件,img在副本imgA或者imgB时,是否能够正常启动,启动后内部数据是否正常等等,通过对比确定imgA或imgB为正确副本。在另外一些情况下,用户可能恰恰需要未经过编辑之前的文件,那么用户可以直接选取不包括最后编辑内容的副本为正确副本。通过上述几种方法选取好正确副本后,对其添加一个修复标识,同时清除脑裂文件的临时访问状态。
作为优选的,在本步骤中,通过API接口或标准Linux命令getfattr获取所述脑裂文件副本的基本信息;通过API接口或标准Linux命令setfattr来访问文件副本。
步骤203:以带有修复标识的所述副本作为源副本,将另一个副本修复至与所述源副本相同,并清除所述修复标识。
经过步骤202,被添加有修复标识的副本为正确副本,则以该带有修复标识的副本作为源副本,将该文件存储在之前无响应节点上的副本更新至与所述的源副本相同。此时,该文件的两个副本均已经恢复正常,最后将副本上的修复标识清除,以最后完成脑裂文件的解决和修复。在本步骤的修复过程中,同样的,在修复进行时如果收到对被修复的文件的访问请求,此时将用户的访问定向到带有修复标识的副本上,使得用户能够对该文件进行正常访问。
本发明实施例还提供了一种集群文件***脑裂处理装置,参考图3,为本发明实施例的集群文件***脑裂处理装置的示意图,所述的装置包括:
监测模块301,用于监测各个节点,当发现有无响应节点时,记录所述无响应节点;
第一执行模块302,用于当某一文件收到编辑请求时,检查该文件的两个副本之一是否存储在所述无响应节点上;若该文件的两个副本均不存储在所述无响应节点上,则不做操作;若该文件的一个副本存储在所述无响应节点上,则对其另一个副本添加修复标识;
第一修复模块303,用于当所述无响应节点恢复响应后,以带有修复标识的所述另一个副本作为源副本,将所述一个副本修复至与所述源副本相同,并清除所述修复标识。
作为优选的,本实施例中,第一修复模块303还用于在修复文件的两个副本的过程中,将用户对该文件的访问请求定向到带有修复标识的副本,使该文件处于可访问状态。
进一步的,本实施例的装置还包括:
临时访问模块304,用于将脑裂文件设置为临时访问状态,使用户能够分别访问其两个副本;
第二执行模块305,用于获取用户指令,为一个副本添加修复标识,并清除所述脑裂文件的临时访问状态;
第二修复模块306,用于以带有修复标识的所述副本作为源副本,将另一个副本修复至与所述源副本相同,并清除所述修复标识。
其中,临时访问模块304通过API接口或标准Linux命令getfattr获取所述脑裂文件副本的信息;通过API接口或标准Linux命令setfattr来访问文件副本。
通过上述实施例可以看出,本发明的集群文件***脑裂处理方法和装置具有如下有益效果:
1)即可预防文件脑裂又能对脑裂后的文件进行灾后处理,最大限度的提升用户数据的安全性。
2)提高实际空间利用率和IO性能。
3)无须专业工程师介入,用户即可完成对脑裂的预防和灾后处理,降低了成本,提高了效率。
4)根据业务需求,用户可根据自身需要对脑裂文件进行处理,具有很大的灵活性。
所属领域的普通技术人员应当理解:以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种集群文件***脑裂处理方法,其特征在于,包括以下步骤:
监测各个节点,当发现有无响应节点时,记录所述无响应节点;
当某一文件收到编辑请求时,检查该文件的两个副本之一是否存储在所述无响应节点上;若该文件的两个副本均不存储在所述无响应节点上,则不做操作;若该文件的一个副本存储在所述无响应节点上,则对其另一个副本添加修复标识;
当所述无响应节点恢复响应后,以带有修复标识的所述另一个副本作为源副本,将所述一个副本修复至与所述源副本相同,并清除所述修复标识;
所述方法还包括:
将脑裂文件设置为临时访问状态,使用户能够分别访问其两个副本;
获取用户指令,为一个副本添加修复标识,并清除所述脑裂文件的临时访问状态;
以带有修复标识的所述副本作为源副本,将另一个副本修复至与所述源副本相同,并清除所述修复标识。
2.根据权利要求1所述的方法,其特征在于,在修复文件的两个副本的步骤中,将用户对该文件的访问请求定向到带有修复标识的副本,使该文件处于可访问状态。
3.根据权利要求1所述的方法,其特征在于,在临时访问状态下,通过API接口或标准Linux命令getfattr获取所述脑裂文件副本的基本信息;通过API接口或标准Linux命令setfattr来访问文件副本。
4.一种集群文件***脑裂处理装置,其特征在于,包括:
监测模块,用于监测各个节点,当发现有无响应节点时,记录所述无响应节点;
第一执行模块,用于当某一文件收到编辑请求时,检查该文件的两个副本之一是否存储在所述无响应节点上;若该文件的两个副本均不存储在所述无响应节点上,则不做操作;若该文件的一个副本存储在所述无响应节点上,则对其另一个副本添加修复标识;
第一修复模块,用于当所述无响应节点恢复响应后,以带有修复标识的所述另一个副本作为源副本,将所述一个副本修复至与所述源副本相同,并清除所述修复标识;
临时访问模块,用于将脑裂文件设置为临时访问状态,使用户能够分别访问其两个副本;
第二执行模块,用于获取用户指令,为一个副本添加修复标识,并清除所述脑裂文件的临时访问状态;
第二修复模块,用于以带有修复标识的所述副本作为源副本,将另一个副本修复至与所述源副本相同,并清除所述修复标识。
5.根据权利要求4所述的装置,其特征在于,所述第一修复模块还用于在修复文件的两个副本的过程中,将用户对该文件的访问请求定向到带有修复标识的副本,使该文件处于可访问状态。
6.根据权利要求4所述的装置,其特征在于,所述临时访问模块通过API接口或标准Linux命令getfattr获取所述脑裂文件副本的信息;通过API接口或标准Linux命令setfattr来访问文件副本。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410445997.1A CN104239182B (zh) | 2014-09-03 | 2014-09-03 | 一种集群文件***脑裂处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410445997.1A CN104239182B (zh) | 2014-09-03 | 2014-09-03 | 一种集群文件***脑裂处理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104239182A CN104239182A (zh) | 2014-12-24 |
CN104239182B true CN104239182B (zh) | 2017-05-03 |
Family
ID=52227301
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410445997.1A Active CN104239182B (zh) | 2014-09-03 | 2014-09-03 | 一种集群文件***脑裂处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104239182B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106302625B (zh) * | 2015-06-26 | 2019-10-25 | 阿里巴巴集团控股有限公司 | 数据更新方法、装置及相关*** |
CN106599223A (zh) * | 2016-12-19 | 2017-04-26 | 北海市云盛科技有限公司 | 一种记录文件被访问记录的方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101692227A (zh) * | 2009-09-25 | 2010-04-07 | 中国人民解放军国防科学技术大学 | 大规模高可靠的归档存储***构建方法 |
CN102024016A (zh) * | 2010-11-04 | 2011-04-20 | 天津曙光计算机产业有限公司 | 一种分布式文件***快速数据恢复的方法 |
CN102368222A (zh) * | 2011-10-25 | 2012-03-07 | 曙光信息产业(北京)有限公司 | 一种多副本存储***在线修复的方法 |
CN102394914A (zh) * | 2011-09-22 | 2012-03-28 | 浪潮(北京)电子信息产业有限公司 | 集群脑裂处理方法和装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080052327A1 (en) * | 2006-08-28 | 2008-02-28 | International Business Machines Corporation | Secondary Backup Replication Technique for Clusters |
WO2014078997A1 (zh) * | 2012-11-21 | 2014-05-30 | 华为技术有限公司 | 一种修复数据的方法及装置 |
-
2014
- 2014-09-03 CN CN201410445997.1A patent/CN104239182B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101692227A (zh) * | 2009-09-25 | 2010-04-07 | 中国人民解放军国防科学技术大学 | 大规模高可靠的归档存储***构建方法 |
CN102024016A (zh) * | 2010-11-04 | 2011-04-20 | 天津曙光计算机产业有限公司 | 一种分布式文件***快速数据恢复的方法 |
CN102394914A (zh) * | 2011-09-22 | 2012-03-28 | 浪潮(北京)电子信息产业有限公司 | 集群脑裂处理方法和装置 |
CN102368222A (zh) * | 2011-10-25 | 2012-03-07 | 曙光信息产业(北京)有限公司 | 一种多副本存储***在线修复的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104239182A (zh) | 2014-12-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10725692B2 (en) | Data storage method and apparatus | |
CN104615504B (zh) | 一种实现数据保护的方法及装置 | |
CN106776130B (zh) | 一种日志恢复方法、存储装置和存储节点 | |
CN103761165B (zh) | 日志备份方法及装置 | |
CN104077380B (zh) | 一种重复数据删除方法、装置及*** | |
CN103516736A (zh) | 分布式缓存***的数据恢复方法及装置 | |
CN102236750A (zh) | 在云存储***中进行权限控制的方法和装置 | |
CN105573859A (zh) | 一种数据库的数据恢复方法和设备 | |
CN102170460A (zh) | 一种集群存储***及其数据存储方法 | |
WO2017028394A1 (zh) | 一种基于实例的分布式数据恢复方法和装置 | |
CN104735107A (zh) | 分布式存储***中数据副本恢复方法及装置 | |
CN108228678B (zh) | 一种多副本数据恢复方法及装置 | |
CN104750755A (zh) | 一种数据库主备切换后的数据回补方法及*** | |
CN104461773A (zh) | 一种虚拟机备份去重的方法 | |
WO2013127147A1 (zh) | 文件同步***及方法 | |
CN103092718A (zh) | 测试数据备份***及方法 | |
CN115826876A (zh) | 数据写入方法、***、存储硬盘、电子设备及存储介质 | |
CN102024021A (zh) | 一种逻辑文件***元数据的日志方法 | |
US8290992B2 (en) | File management method, file management device, and program | |
CN103092719B (zh) | 一种文件***的断电保护方法 | |
CN104239182B (zh) | 一种集群文件***脑裂处理方法和装置 | |
CN103176867A (zh) | 一种快速文件差异备份方法 | |
CN203260027U (zh) | 一种备份装置及数据备份*** | |
CN104391760B (zh) | 一种数据备份的方法、服务器和*** | |
CN106933707B (zh) | 基于raid技术的数据存储设备数据恢复方法及*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |