CN109947730B - 元数据恢复方法、装置、分布式文件系统及可读存储介质 - Google Patents
元数据恢复方法、装置、分布式文件系统及可读存储介质 Download PDFInfo
- Publication number
- CN109947730B CN109947730B CN201710611719.2A CN201710611719A CN109947730B CN 109947730 B CN109947730 B CN 109947730B CN 201710611719 A CN201710611719 A CN 201710611719A CN 109947730 B CN109947730 B CN 109947730B
- Authority
- CN
- China
- Prior art keywords
- metadata
- client
- information
- module
- recovery
- 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
- 238000011084 recovery Methods 0.000 title claims abstract description 82
- 238000000034 method Methods 0.000 title claims abstract description 43
- 238000001514 detection method Methods 0.000 claims abstract description 75
- 238000004590 computer program Methods 0.000 claims description 14
- 230000004044 response Effects 0.000 claims description 13
- 230000008859 change Effects 0.000 description 29
- 230000006870 function Effects 0.000 description 10
- 230000005540 biological transmission Effects 0.000 description 9
- 230000004048 modification Effects 0.000 description 8
- 238000012986 modification Methods 0.000 description 8
- 238000012545 processing Methods 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 5
- 238000012163 sequencing technique Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 230000011218 segmentation Effects 0.000 description 4
- 238000010276 construction Methods 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000005856 abnormality Effects 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 239000000047 product Substances 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
Abstract
本发明提供一种元数据恢复方法、元数据恢复装置、分布式文件系统及计算机可读存储介质。其中,所述方法应用于服务端,包括:检测客户端的元数据,获得检测结果;所述检测结果指示第一元数据和第二元数据键值相同且详细信息不一致,所述第一元数据为客户端的第一模块的元数据,所述第二元数据为客户端的第二模块的元数据;根据预设的规则、第一元数据和第二元数据,构造待恢复信息并发送至客户端,使得客户端收到待恢复信息后,能够依据待恢复信息恢复第一元数据。本发明能够提高相关的元数据之间的一致性,同时成本低、可用性高。
Description
技术领域
本发明涉及计算机领域,尤其涉及一种元数据恢复方法、装置、分布式文件系统及计算机可读存储介质。
背景技术
随着互联网向着更宽更广的方向发展,网络存储设备也向着大容量、高吞吐量和高可靠性的方向发展。分布式文件系统时一个通用存储软件平台,在通用硬件之上运行,为需要存储文件的产品提供存储平台支持,包括存储、查询检索和管理产品所产生的海量数据服务,如多媒体内容存储、业务数据存储等。分布式文件系统整体可达千亿文件数量级的海量存储能力,海量文件也会产生相应的元数据。
在分布式文件系统中,文件元数据和文件内容都是存储在多台服务器中,存储元数据的服务器为元数据服务器。多个元数据服务器构成元数据集群,且元数据之间存在相关性。为了保证元数据的正常使用,需要相关的元数据之间存在一致性。分布式文件系统在长期运行过程中,由于系统软件存在问题、内部网络异常、服务器异常宕机或者运维力量薄弱、管理不到位等主客观因素影响,元数据集群会产生或多或少不一致数据。当分布式文件系统中少量存在不一致元数据时,每个独立模块都会同时存在上述若干问题,那么检测和修复是比较麻烦的。在相关的元数据不一致的情况下,分布式文件系统继续运行,可能会导致更大的问题。而若令元数据实时保持一致,即采用强一致性的方案,则会导致成本高、可用性低。
发明内容
有鉴于此,本发明提供一种元数据恢复方法、装置、分布式文件系统及计算机可读存储介质,能够提高相关元数据之间的一致性,同时在保持性能的基础上,成本低、可用性高。
基于上述目的本发明提供的元数据恢复方法,应用于服务端,包括:
检测客户端的元数据是否一致,获得检测结果;所述检测结果指示第一元数据和第二元数据键值相同且详细信息不一致,所述第一元数据为客户端的第一模块的元数据,所述第二元数据为客户端的第二模块的元数据,所述第一元数据和第二元数据存在关联关系;
根据预设的规则、第一元数据和第二元数据,构造待恢复信息并发送至客户端,使得客户端收到待恢复信息后,能够依据待恢复信息恢复第一元数据。
可选的,所述根据预设的规则、第一元数据和第二元数据,构造待恢复信息并发送至客户端的步骤包括:
根据预设的规则中所述详细信息不一致的类型对应的恢复方式,构造待恢复信息;所述待恢复信息包括第三元数据、第一模块、恢复操作类型;
将待恢复信息发送到客户端,使得客户端按照所述恢复操作类型执行恢复操作,将第一模块上的第一元数据恢复为第三元数据;所述第三元数据为根据第二元数据对第一元数据执行恢复操作后的元数据。
可选的,所述检测客户端的元数据,获得检测结果的步骤具体包括:
向客户端发送元数据检测请求;
接收客户端响应所述元数据检测请求所返回的第一元数据的简要信息、以及第二元数据的简要信息;
对比所述第一元数据的简要信息和第二元数据的简要信息,确定第一元数据和第二元数据键值相同且详细信息不同,生成所述检测结果。
可选的,所述第一模块、第二模块为同一个客户端的两个具有主用和备用关系的模块;或者,所述客户端至少包括第一客户端、第二客户端,所述第一模块设置于所述第一客户端,所述第二模块设置于所述第二客户端,且第一模块和第二模块为具有同样功能的模块。
同时,本发明还提供一种元数据恢复装置,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序;所述计算机程序被处理器执行时实现下述步骤:
检测客户端的元数据是否一致,获得检测结果;所述检测结果指示第一元数据和第二元数据键值相同且详细信息不一致,所述第一元数据为客户端的第一模块的元数据,所述第二元数据为客户端的第二模块的元数据,所述第一元数据和第二元数据存在关联关系;
根据预设的规则、第一元数据和第二元数据,构造待恢复信息并发送至客户端,使得客户端收到待恢复信息后,能够依据待恢复信息恢复第一元数据。
可选的,所述所述计算机程序被处理器执行时还实现下述步骤:
根据预设的规则中所述详细信息不一致的类型对应的恢复方式,结合反馈消息,构造待恢复信息;所述待恢复信息包括第三元数据、目标模块、恢复操作类型;
将待恢复信息发送到客户端,使得客户端按照所述恢复操作类型执行恢复操作,将第一模块上的第一元数据恢复为第三元数据;所述第三元数据为根据第二元数据对第一元数据执行恢复操作后的元数据。
可选的,所述计算机程序被处理器执行时还实现下述步骤:
向客户端发送元数据检测请求;
接收客户端响应所述元数据检测请求所返回的第一元数据的简要信息、以及第二元数据的简要信息;
对比所述第一元数据的简要信息和第二元数据的简要信息,确定第一元数据和第二元数据键值相同且详细信息不同,生成所述检测结果。
进一步,本发明还提供一种分布式文件系统,包括服务端、第一客户端、第二客户端;其中,所述服务端包括本发明任意一项实施例所提供的应用于服务端的元数据恢复装置。
进一步,本发明还提供一种计算机存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如本发明任意一项实施例所述的元数据恢复方法中的步骤。
从上面可以看出,本发明提供的元数据恢复方法、装置、分布式文件系统及计算机可读存储介质,能够检测元数据的一致性,对不一致的元数据进行恢复,使得具有对应关系的元数据一致,从而在非强一致的环境中,应用上述实施例提供的方法,能够允许元数据在短时间内存在不一致的状况,但是又能够及时通过检测和恢复使得具有关联关系的元数据一致,从而保证非强一致的环境中具有关联关系的元数据的一致性,降低非强一致元数据集群的运维难度,提高元数据存储的可靠性。
附图说明
图1为本发明实施例所提供的应用于服务端的元数据恢复方法流程图;
图2为本发明实施例所提供的应用于客户端的元数据恢复方法流程图;
图3为本发明实施例所提供的应用于服务端的元数据恢复装置结构图;
图4为本发明实施例所提供的应用于客户端的元数据恢复装置结构图;
图5为本发明实施例所提供的分布式文件系统服务端结构示意图;
图6为本发明实施例提供的分布式文件系统客户端结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明首先提供一种元数据恢复方法,应用于服务端,如图1所示,包括:
步骤101:检测客户端的元数据是否一致,获得检测结果;所述检测结果指示第一元数据和第二元数据键值相同且详细信息不一致,所述第一元数据为客户端的第一模块的元数据,所述第二元数据为客户端的第二模块的元数据,所述第一元数据和第二元数据存在关联关系,第一元数据和第二元数据应当在元数据变更的过程中保持一致性,若二者发生不一致,则需要对其中一个或两个进行恢复。
在本发明实施例中,所述服务端为相对于客户端的一端,在服务端上主要执行元数据的一致性检测、元数据更改规则的构造等。
在本发明其他实施例中,所述第一模块和第二模块为同一个客户端上具有主用、备用关系的模块;或两个客户端上具有同样功能的模块。当两个以上的模块的相关的元数据之间存在不一致的问题时,仍采用本发明实施例中提供的方法进行处理。
所述键值相同的元数据,为相互间存在对应关系的元数据。上述键值,为元数据的Key(键)和Value(值)。
步骤102:根据预设的规则、第一元数据和第二元数据,构造待恢复信息并发送至客户端,使得客户端收到待恢复信息后,能够依据待恢复信息恢复第一元数据。
在本发明具体实施例中,预设的规则,为根据第一元数据和第二元数据不一致的具体状况,制定的恢复策略,可以预先设定,或者根据一些预先设定的关联关系生成。
从上面可以看出,本发明提供的元数据恢复方法,能够检测元数据的一致性,对不一致的元数据进行恢复,使得具有对应关系的元数据一致,从而在非强一致的环境中,应用上述实施例提供的方法,能够允许元数据在短时间内存在不一致的状况,但是又能够及时通过检测和恢复使得具有关联关系的元数据一致,从而保证非强一致的环境中具有关联关系的元数据的一致性,降低非强一致元数据集群的运维难度,提高元数据存储的可靠性。
在本发明一种具体实施例中,所述检测客户端的元数据,获得检测结果的步骤具体包括:
向客户端发送元数据检测请求;
接收客户端响应所述元数据检测请求所返回的第一元数据的简要信息、以及第二元数据的简要信息;
对比所述第一元数据的简要信息和第二元数据的简要信息,确定第一元数据和第二元数据键值相同且详细信息不同,生成所述检测结果。
上述第一元数据的简要信息,根据第一元数据的详细信息生成,反映第一元数据的详细信息,同时比第一元数据的详细信息简化,以简化数据传输过程,减少对比时在服务端占用的空间。
上述向客户端发送元数据检测请求的步骤,可以按照设定的时间间隔执行,那么,对客户端上的元数据的检测和恢复也是按照设定的时间间隔执行的。上述第一元数据的简要信息,反映第一元数据的键值以及详细信息。同样,第二元数据的简要信息,也反映第二元数据的键值以及详细信息。当第一元数据的简要信息与第二元数据的简要信息相同时,第一元数据与第二元数据一致,否则,第一元数据与第二元数据不一致。
在本发明另一种实施例中,所述接收客户端响应所述元数据检测请求所返回的第一元数据的简要信息、以及第二元数据的简要信息的步骤之后,还包括:
将第一元数据的简要信息、第二元数据的简要信息,连同客户端响应所述元数据检测请求所返回的其它元数据的简要信息一起,进行排序;
对所述排序后的元数据的简要信息依次进行对比,进入所述对比所述第一元数据的简要信息和第二元数据的简要信息的步骤。
在客户端接收到检测请求后,响应于该检测请求,进行元数据的检测,在客户端存储的元数据中,查找出存在修改的元数据,其中包括所述第一元数据、所述第二元数据。
在本发明具体实施例中,根据所述排序,依次对所述排序后的元数据的简要信息进行对比的过程中,按照顺序对比至第一元数据简要信息和第二元数据简要信息时,执行对比所述第一元数据的简要信息和第二元数据的简要信息,确定第一元数据和第二元数据键值相同且详细信息不同,生成所述检测结果的步骤。
在本发明另一种实施例中,所述根据预设的规则、第一元数据和第二元数据,构造待恢复信息并发送至客户端的步骤包括:
根据预设的规则中所述详细信息不一致的类型对应的恢复方式,结合反馈消息,构造待恢复信息;所述待恢复信息包括第二元数据、第一模块、恢复操作类型;
将待恢复信息发送到客户端,使得客户端按照所述恢复操作类型执行恢复操作,将第一模块上的第一元数据恢复为第二元数据。
在另一种实施例中,所述根据预设的规则中所述详细信息不一致的类型对应的恢复方式,结合反馈消息,构造待恢复信息的步骤之前,还包括:
向客户端请求第一元数据以及第二元数据;
接收客户端返回的的反馈消息,所述反馈消息包括所述第一元数据、第二元数据。
在上述实施例中,客户端上的元数据修改后,记录在客户端的元数据操作日志中。当客户端接收到第一元数据的请求时,通过元数据操作日志查找第一元数据,并将最新修改的第一元数据提取出,这种情况下,反馈消息为第一元数据。若是客户端接收到第一元数据的请求时,通过元数据操作日志查找第一元数据,没有查找到最新修改的第一元数据,则将能够查找到的第一元数据提取出;并将查找到的第一元数据生成时刻之后,元数据操作日志中关于第一元数据的修改记录提取出,连通查找到的第一元数据以及修改记录加入反馈消息中,此时,第一元数据并非最新修改的第一元数据。
在本发明具体实施例中,对元数据详细信息不一致的情况进行分类,针对每个分类,制定出相应的恢复规则。例如,在一般情况下,客户端上设置有DTS(Directory TreeService,目录树服务器)模块和FLR(Foreign mode location register,外部位置寄存器)模块,而DTS模块和FLR模块也分别具有各自的主用模块和备用模块,当分布式文件系统长时间运行后,在这器件可能会发生多种异常因素,例如,主用模块和备用模块之间因为宕机或者网络故障等原因经过多次异常,并且进行了多次的主用模块和备用模块之间的切换,从而可能会产生主用模块和备用模块上的元数据不一致的情况。结合分布式文件系统的元数据不一致的其它情况,可将不一致情况分为如下类型:
第一类型:主用模块上存在,而备用模块不存在。第二类型:主用模块不存在,而备用模块存在。第三类型:主用、备用模块对应数据不一致。第四类型:DTS模块和FLR模块之间数据不一致。第五类型:文件名相同,但是Inode(属性信息)等不同。根据这五种分类,制定相应的恢复规则,例如当不一致情况属于第一分类时,依据第二元数据对第一元数进行恢复,恢复方式为更新第一元数据;当不一致的情况属于第二分类时,恢复方式为删除第一元数据等等。所述待恢复信息,用于第一客户端恢复第一元数据。当根据恢复规则和不一致情况的类型,需要将第一元数据恢复为与第二元数据一致的元数据时,可将第二元数据作为上述第三元数据。当根据恢复规则和不一致情况的类型,需要将第一元数据删除时,第三元数据为空缺数据,用于指示删除第一元数据。对应于每一种不一致情况的分类,可指定一种元数据的恢复规则,而针对每一种恢复规则,又可细分为精确恢复和模糊恢复两种恢复方式。精确恢复指确定某个时间段元数据的键值、详细内容和更新时序,可以依靠每个模块上元数据日志信息就能够确定,这种情况下,客户端元数据清晰,能够通过较为严格的标准进行恢复,即精确恢复。模糊恢复指不能够确定不同模块间元数据正确性,如操作日志部分损坏,网络分区造成数据混乱,或者业务一致性要求降低,只需要尽可能恢复数据一致性,需要通过较为宽松的标准进行恢复,即模糊恢复适用于应用对元数据要求不高,例如媒体点播应用、消息转储等或者元数据日志缺失而无法精确恢复场景。在依据模糊恢复规则计算待恢复信息时,元数据分段中有些字段对应用而言不重要,或者依据元数据结构其他字段推导出来;例如元数据分段中的时间信息,可以获取最新值,将最新值作为第三元数据的时间信息。再如,元数据分段中的文件引用计数、块大小、块数目则可以通过现有文件和块位置信息分别推导出来,作为第三元数据的文件引用计数、块大小、块数目。再如,将不一致数据强制删除,保持文件系统内部正确性。在一种具体实施例中,恢复规则的格式为:Rule(编号,字段名,操作类型,恢复类型,数据1,数据2,处理函数)。其中,Rule表示规则,编号表示规则编号。字段名为元数据中字段变量的名称,例如访问时间戳名字name_atime、GID名字name_gid。操作类型为字段具体值增加、删除、更新等操作中的至少一种。恢复类型取值为依据第二元数据为基准数据或其他类型,当以第二元数据为基准数据时,参照第二元数据,将键值相同的第一元数据和第二元数据中第一元数据进行恢复。处理函数是以第二元数据为基准,构建第一元数据恢复所采用的第三元数据的计算函数。根据规则格式处理第一元数据、第二元数据后,得出并输出待恢复信息。
在客户端查找第一元数据、第二元数据,并计算对应的简要信息时,可将第一元数据、第二元数据进行分段,使得每个分段的数据均具有同样的特点,方便进行运算。例如,可结合元数据各个部分的更新频率和重要程度将元数据分成若干段。一种具体分段方式为,将关键字、集群模块号、副本数、属性、块大小等基本不变化数据,分为第一分段;将文件名、权限、UID(User ID,用户身份)、GID(Group ID,群体身份)、引用计数、Quota(磁盘限额)、Worm(一写多读)等变化很小数据,分为第二分段;将时间戳、文件大小、读写次数、副本校验值等,分为第三分段;将物理块位置、副本版本、文件物理块映射等信息,分为第四分段。第一元数据的简要信息、第二元数据的简要信息均可根据。
预设的规则制定方式具体例如:
元数据的第一分段中,集群模块号、副本数、属性字段数据,依据当前系统配置确定模块号、父目录副本数等决定第三元数据副本数、文件大小或者块号,即是否有物理副本等确定第三元数据的文件是目录还是文件等。
元数据的第二分段中文件名不一致时,读取文件内容前32字节,和文件名组合成第三元数据的文件名,并以后缀$prerecov标识文件;第三元数据的权限、UID、GID等属性,可以依据父目录属性值和当前目录下的其它已存在文件信息来构造;第三元数据的引用计数根据当前系统中文件实际引用计数计算值确定;第三元数据的Quota、Worm等属性依据系统配置和当前简要信息值综合确定。
元数据第三分段中若干时间戳,对比简要信息以记录中时间较新者,或者更新为当前最新时间,作为第三元数据第三分段中相应的时间戳。计算分片数目和分片大小,确定实际文件大小,并据此确定第三元数据的实际文件大小。重新计算副本校验值,根据重新计算的副本校验值确定第三元数据的副本校验值。
元数据第四分段主要涉及文件内容Chunk(块)位置及文件物理块映射,查找对应模块此Chunk所在物理块位置,获取文件的最新修改时间,和物理块实际校验值,对比元数据副本校验值,取最新更改时间的物理块位置或者物理块校验和元数据副本校验相接近物理块位置作为第三文件的文件内容Chunk位置,并根据文件内容Chunk位置获得文件物理块映射。
在客户端发送第一元数据简要信息、第二元数据简要信息之前,根据第一元数据、第二元数据本身分别计算第一元数据简要信息、第二元数据简要信息。
在具体实施例中,客户端将元数据返回到服务端后,在服务端进行排序,按照排序进行对比,并按照上述不一致情况的分类,形成上述五个分类的待恢复队列。在其他实施例中,元数据不一致情况的分类,可依照其他标准进行划分,分类数也可按照其他划分标准确定。
在本发明上述实施例中,目标模块用于指示第三元数据的存储模块。第一客户端设置有第一DTS模块、第一FLR模块;第二客户端设置有第二DTS模块、第二FLR模块。若第一元数据在第一客户单上原本存储的位置为第一DTS模块,那么,目标模块为第一DTS模块,将第一元数据恢复为第三元数据后,将恢复的第一元数据存入第一DTS模块。在第一客户端、第二客户端上,DTS模块和FLR模块均存在主用模块、备用模块机制;主用模块、备用模块之间的元数据通过元数据日志同步。
在本发明上述实施例中,恢复操作类型为新增、更新、删除等操作中的至少一种。
在本发明一些实施例中,所述第一模块、第二模块为同一个客户端的两个具有主用和备用关系的模块,即第一模块为主用模块、第二模块为备用模块,或第一模块为备用模块、第二模块为主用模块;或者,所述客户端至少包括第一客户端、第二客户端,所述第一模块设置于所述第一客户端,所述第二模块设置于所述第二客户端,且第一模块和第二模块为具有同样功能的模块。
在本发明具体实施例中,若所有待恢复的元数据中,一部分元数据来自于同一个客户端上具有主用和备用关系的模块,另一部分元数据来自于两个客户单上具有相同功能的模块,则在恢复时,首先恢复来自于同一个客户端上具有主用和备用关系的模块的元数据。
同时,本发明实施例还提供一种元数据恢复方法,应用于第一客户端,如图2所示,包括如下步骤:
步骤203:接收服务端发送的待恢复信息;其中,所述待恢复信息根据预设规则由第一元数据和第二元数据构造,所述第一元数据、第二元数据为存在关联的元数据,二者键值相同、详细信息不同。
在具体实施例中,第二客户端为需要与第一客户端进行元数据同步的另一客户端。所述待恢复信息用于指示根据第二元数据恢复第一元数据。
步骤204:根据待恢复信息恢复第一元数据,使得回复后的第一元数据与所述第二元数据一致。
从上面可以看出,本发明实施例提供的元数据恢复方法,能够在接收到元数据检测请求后,对元数据进行检测,提取出发生变更(即发生写操作)的第一元数据,并根据第一元数据生成发送消息返回至服务端,使得服务端能够将第一元数据和第二客户端的第二元数据进行比较,从而能够实现元数据的自动检测。同时,本发明实施例提供的元数据恢复方法,能够在第一客户端根据待恢复信息恢复第一元数据,使得第一元数据与第二元数据一致,能够实现元数据的自动恢复。
在本发明一种具体实施例中,仍然参照图2,步骤203之前,还包括:
步骤201:接收服务端发送的元数据检测请求。
步骤202:根据元数据操作日志对第一客户端存在变更的元数据进行检测,提取出第一元数据,生成发送消息并返回至服务端。
在本发明具体实施例中,第一客户端的元数据发生写操作时,将操作记录在元数据操作日志中,在检测时,根据元数据操作日志即可得出有哪些元数据发生了变更,从而能够提取出第一元数据。
在本发明具体实施例中,元数据操作日志中,以元数据的键或键值为索引,通过索引,能够找到每个发生过变更的元数据。
在本发明具体实施例中,可将元数据操作日志中,对每个元数据的最新更改的记录汇集起来,形成元数据变化的变更记录,这个变更记录为元数据操作日志的一部分,在接受到元数据检测请求之后,根据元数据变化的变更记录,提取第一元数据以及其他发生变更的元数据。
在本发明具体实施例中,当第一客户端接收到服务端发送的元数据检测请求之后,根据元数据操作日志对第一客户端存在变更的元数据进行检测,提取出发生变更(写操作)的元数据,其中,包括第一元数据。
在本发明一种具体实施例中,上述根据元数据操作日志对第一客户端存在变更的元数据进行检测,提取出第一元数据,生成发送消息并返回至服务端的步骤包括:
扫描元数据操作日志或元数据的变更记录;
根据元数据操作日志或元数据变更记录中,元数据的键,对元数据进行扫描;
将扫描到的元数据进行计算,生成元数据的简要信息,其中包括第一元数据的简要信息。
应当理解,服务端在向第一客户端发送元数据检测请求时,可同时或分先后向第二客户端发送元数据检测请求。第二元数据相应元数据检测请求,返回发生变更的元数据,其中包括第二元数据,在第二客户端发生的元数据检测操作方式,与第一客户端相同。
在本发明一些实施例中,所述提取出存在变更的元数据,生成发送消息并返回至服务端的步骤包括:
根据所述元数据操作日志,提取出存在变更的元数据;
将存在变更的元数据进行分段,并对每一分段计算校验值;
将存在变更的元数据所有分段的校验值、存在变更的元数据在存在变更的客户端上存储的模块信息、存在变更的元数据的键、存在变更的元数据最新更新类型组合为存在变更的元数据的简要信息;
将存在变更的元数据的简要信息,和本次检测出的其它存在变更的元数据的简要信息一起生成发送消息并返回至所述服务端。
上述将存在变更的元数据进行分段,并对每一分段计算校验值的步骤为:根据元数据特点和每一个字段使用方式,结合元数据各个部分的更新频率和重要程度将元数据分成若干段。分段方式具体例如,将关键字、集群模块号、副本数、属性、块大小等基本不变化数据,分为第一分段;将文件名、权限、UID(User ID,用户身份)、GID(Group ID,群体身份)、引用计数、Quota(磁盘限额)、Worm(一写多读)等变化很小数据,分为第二分段;将时间戳、文件大小、读写次数、副本校验值等,分为第三分段;将物理块位置、副本版本、文件物理块映射等信息,分为第四分段。
在本发明上述实施例中,校验值是一个经过运算后数值,长度为两字节或者四字节,将第一元数据转换为第一元数据的简要信息,可以减少数据量传输,提高检测和恢复效率。经过元数据分段后,可以方便检测和自动恢复。在其他实施例中,也可采用其他分段方式对第一元数据以及第一客户端的其它元数据进行分段。记元数据的第一分段的校验值为checksum1、第二分段的校验值为checksum2……将第一元数据的若干分段校验值、第一元数据在第一客户端上存储的模块信息、第一元数据的键、第一元数据最新更新类型以一定次序组合起来,形成元数据简要信息,例如,第一元数据的简要信息为:meta_info(模块号,key,最新更新类型,checksum1,checksum2,......)。
在本发明具体实施例中,第一客户端上查找到的其它发生变更的元数据,连同第一元数据一起,返回到服务端。那么其它发生变更的元数据,在返回到服务端上时,也是以元数据简要信息的形式进行返回。
在本发明一种实施例中,所述待恢复信息包括第三元数据、目标模块、恢复操作类型;根据待恢复信息恢复第一元数据,使得所述第一元数据与所述第二元数据一致的步骤包括:
对所述第一元数据执行所述恢复操作类型对应的操作,使得第一元数据与第三元数据相同;所述第三元数据为根据第二元数据对第一元数据执行恢复操作后的元数据。
所述接收服务端发送的元数据检测请求的步骤之前,还包括:
对第一元数据进行写操作;
将写操作的具体操作类型、第一元数据的键值、所述写操作的操作时间存储到元数据操作日志中,并根据第一元数据的键建立第一元数据的索引。
进一步,本发明实施例还提供一种元数据恢复装置,应用于服务端,结构如图3所示,包括:
检测模块301:用于检测第一客户端和第二客户端的元数据,获得检测结果,所述检测结果指示第一元数据和第二元数据键值相同且详细信息不一致,所述第一元数据为第一客户端的元数据,所述第二元数据为第二客户端的元数据;所述第一元数据和第二元数据存在关联关系。
恢复指示模块302:用于根据预设的规则、第一元数据和第二元数据,构造待恢复信息并发送至第一客户端,使得第一客户端收到待恢复信息后,能够依据待恢复信息恢复第一元数据。
在本发明一些实施例中,所述恢复信息构造模块包括:
构造单元:用于根据预设的规则中,所述详细信息不一致的类型对应的恢复方式、恢复时参考的数据、恢复所采用的函数等,构造待恢复信息;所述待恢复信息包括第二元数据、目标模块、恢复操作类型;
待恢复消息发送单元:用于将待恢复信息发送到第一客户端,使得第一客户端按照所述恢复操作类型执行恢复操作,将第一模块上的第一元数据恢复为第二元数据。
在本发明一些实施例中,所述检测模块具体包括:
请求发送单元:用于向第一客户端和第二客户端分别发送元数据检测请求;
简要信息接收单元:用于接收第一客户端响应所述元数据检测请求所返回的第一元数据的简要信息,以及第二客户端响应所述元数据检测请求所返回的第二元数据的简要信息;
检测结果生成单元:用于对比所述第一元数据的简要信息和第二元数据的简要信息,确定第一元数据和第二元数据键值相同且详细信息不同,生成所述检测结果。
在本发明一些实施例中,所述检测模块还包括:
排序单元:用于将第一元数据的简要信息、第二元数据的简要信息,连同第一客户端和第二客户端响应所述元数据检测请求所返回的其它元数据的简要信息一起,进行排序并加入元数据集群中;
比较单元:用于根据所述排序,依次对所述排序后的元数据的简要信息进行对比,进入所述对比所述第一元数据的简要信息和第二元数据的简要信息的步骤。
在本发明一些实施例中,所述第一模块、第二模块为同一个客户端的两个具有主用和备用关系的模块,即第一模块为主用模块、第二模块为备用模块,或第一模块为备用模块、第二模块为主用模块;或者,所述客户端至少包括第一客户端、第二客户端,所述第一模块设置于所述第一客户端,所述第二模块设置于所述第二客户端,且第一模块和第二模块为具有同样功能的模块。
进一步,本发明实施例还提供一种元数据恢复装置,应用于第一客户端,结构如图4所示,包括:
待恢复消息接收模块403:用于接收服务端发送的待恢复信息;其中,所述待恢复信息根据预设规则由第一元数据和第二元数据构造,所述第一元数据、第二元数据为存在关联的元数据,二者键值相同、详细信息不同;
恢复执行模块404:用于根据待恢复信息恢复第一元数据,使得恢复后的第一元数据与所述第二元数据一致。
在本发明一些实施例中,仍然参照图4,所述装置还包括:
检测请求接收模块401:用于接收服务端发送的元数据检测请求;
元数据发送模块402:用于根据元数据操作日志对第一客户端存在变更的元数据进行检测,提取出第一元数据,生成发送消息并返回至服务端。
应当理解,本发明实施例提供的元数据恢复装置,也能够应用于本发明实施例中所述的第二客户端,用于对第二元数据进行检测、提取等操作。应当理解,第二元客户端响应元数据检测请求进行元数据检测、并提取第二元数据发送到服务端,第二客户端应当至少具有与上述检测请求接收模块401、元数据发送模块402功能等同的模块,对第二元数据进行相应的操作。
在本发明一些实施例中,所述元数据发送模块包括:
元数据提取单元:用于根据所述元数据操作日志,提取出存在变更的元数据;
校验值计算单元:用于将所述存在变更的元数据进行分段,并对每一分段计算校验值;
简要信息组合单元:用于将所述存在变更的元数据所有分段的校验值、所述存在变更的元数据在第一客户端上存储的模块信息、所述存在变更的元数据的键、第一元数据最新更新类型组合为所述存在变更的元数据的简要信息;
元数据简要信息发送单元:用于将所述存在变更的元数据的简要信息,和本次检测出的其它存在变更的元数据的简要信息一起生成发送消息并返回至所述服务端。
在本发明实施例中,若上述装置应用于第二客户端时,第二客户端具有与上述元数据提取单元、校验值计算单元、简要信息组合单元、元数据简要信息发送单元功能等同的模块,对第二元数据执行相应的操作。
在本发明一些实施例中,所述待恢复信息包括第二元数据、目标模块、恢复操作类型;所述恢复执行模块具体用于:
对所述第一元数据执行所述恢复操作类型对应的操作,使得第一元数据与第二元数据相同。
在本发明一些实施例中,所述装置还包括:
写模块:用于对第一元数据进行写操作;
索引建立模块:用于将写操作的具体操作类型、第一元数据的键值、所述写操作的操作时间存储到元数据操作日志中,并根据第一元数据的键建立第一元数据的索引。
进一步,本发明还提供一种分布式文件系统,其特征在于,包括服务端、第一客户端、第二客户端;其中,所述服务端包括本发明任意一项实施例所提供的应用于服务端的元数据恢复装置;所述第一客户端包括本发明任意一项实施例所提供的应用于客户端的元数据恢复装置。
在本发明一种具体实施例中,分布式文件系统的客户端的物理结构如图5所示,包括文件存取通道(File Access Channel,文件访问通道)501、DTS模块集合502、FLR模块集合503、多个存储服务器504。每个DTS模块对应至少一个FLR模块,一个FLR模块对应一个DTS模块。一个服务端由一个DTS模块与该DTS模块对应的FLR模块构成。上述基本架构中DTS模块结合503和FLR模块集合504一起组成元数据集群505,并且每个模块均配置至少一个主用模块和至少一个备用模块;主用模块、备用模块模块之间的元数据通过元数据日志同步。元数据集群505可包括两个或两个以上的客户端。当业务应用程序通过FAC501写文件时,首先将文件全路径发送到DTS模块集合,获取全局唯一标识FILEID和FLR模块集合503中对应的具体FLR;其次,文件客户端将写文件请求发送到上述具体FLR,获取文件的数据块副本位置信息,然后向存储服务器写实际数据内容。存储服务器504用于存储元数据集群505中元数据对应的文件。
在分布式文件系统中,服务端与客户端进行信息交互,完成检测和恢复的功能。服务端,接收所有客户端的数据,完成对比校验,并根据可在线配置的预设的规则自动补齐修改数据生成第二元数据、根据第二元数据生成待恢复信息,分发给相应的客户端。集群中所有的操作系统共享一个全局时间,保持服务器时间一致,反映现实世界实际时间,通过使用绝对时间,来区分不同模块元数据更新序列。
进一步,本发明还提供一种元数据恢复装置,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序;所述计算机程序被处理器执行时实现下述步骤:
检测客户端的元数据是否一致,获得检测结果;所述检测结果指示第一元数据和第二元数据键值相同且详细信息不一致,所述第一元数据为客户端的第一模块的元数据,所述第二元数据为客户端的第二模块的元数据,所述第一元数据和第二元数据存在关联关系;
根据预设的规则、第一元数据和第二元数据,构造待恢复信息并发送至客户端,使得客户端收到待恢复信息后,能够依据待恢复信息恢复第一元数据。
可选的,所述所述计算机程序被处理器执行时还实现下述步骤:
根据预设的规则中所述详细信息不一致的类型对应的恢复方式,结合反馈消息,构造待恢复信息;所述待恢复信息包括第三元数据、目标模块、恢复操作类型;
将待恢复信息发送到客户端,使得客户端按照所述恢复操作类型执行恢复操作,将第一模块上的第一元数据恢复为第三元数据;所述第三元数据为根据第二元数据对第一元数据执行恢复操作后的元数据。
可选的,所述计算机程序被处理器执行时还实现下述步骤:
向客户端发送元数据检测请求;
接收客户端响应所述元数据检测请求所返回的第一元数据的简要信息、以及第二元数据的简要信息;
对比所述第一元数据的简要信息和第二元数据的简要信息,确定第一元数据和第二元数据键值相同且详细信息不同,生成所述检测结果。
在本发明一种具体实施例中,分布式文件系统的服务端的物理结构如图6所示,服务端600包括多个元数据服务器601,这些元数据服务器601分别与客户端一一对应,用于进行对应的客户端的元数据的待恢复信息的计算和其它处理操作。
进一步,本发明还提供一种计算机存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如本发明任意一项实施例所述的元数据恢复方法中的步骤。
从上面所述可以看出,本发明提供的元数据恢复方法、装置、分布式文件系统及计算机可读存储介质,能够实现不一致元数据的自动检测、恢复,避免在分布式文件系统中出现元数据不一致从而引起严重后果的问题,同时具有低成本、可用性高的优点。
应当理解,本说明书所描述的多个实施例仅用于说明和解释本发明,并不用于限定本发明。并且在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (6)
1.一种元数据恢复方法,应用于服务端,其特征在于,包括:
检测客户端的元数据是否一致,获得检测结果;所述检测结果指示第一元数据和第二元数据键值相同且详细信息不一致,所述第一元数据和第二元数据存在关联关系;
根据预设规则中所述详细信息不一致的类型对应的恢复规则,构造待恢复信息,所述待恢复信息包括第三元数据、所述第一元数据和恢复操作类型;所述第三元数据为根据第二元数据对第一元数据执行恢复操作后的元数据;所述恢复操作类型为新增、更新、删除操作中的至少一种;
将待恢复信息发送到客户端,使得客户端按照所述恢复操作类型对第一元数据执行恢复操作,将所述第一元数据恢复为所述第三元数据。
2.根据权利要求1所述的方法,其特征在于,所述检测客户端的元数据,获得检测结果的步骤具体包括:
向客户端发送元数据检测请求;
接收客户端响应所述元数据检测请求所返回的第一元数据的简要信息、以及第二元数据的简要信息;
对比所述第一元数据的简要信息和第二元数据的简要信息,确定第一元数据和第二元数据键值相同且详细信息不同,生成所述检测结果。
3.一种元数据恢复装置,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序;其特征在于,所述计算机程序被处理器执行时实现下述步骤:
检测客户端的元数据是否一致,获得检测结果;所述检测结果指示第一元数据和第二元数据键值相同且详细信息不一致,所述第一元数据为客户端的第一模块的元数据,所述第二元数据为客户端的第二模块的元数据,所述第一元数据和第二元数据存在关联关系;
根据预设规则中所述详细信息不一致的类型对应的恢复规则,构造待恢复信息,所述待恢复信息包括第三元数据、所述第一元数据和恢复操作类型;所述第三元数据为根据第二元数据对第一元数据执行恢复操作后的元数据;所述恢复操作类型为新增、更新、删除操作中的至少一种;
将待恢复信息发送到客户端,使得客户端按照所述恢复操作类型对第一元数据执行恢复操作,将所述第一元数据恢复为所述第三元数据。
4.根据权利要求3所述的装置,其特征在于,所述计算机程序被处理器执行时还实现下述步骤:
向客户端发送元数据检测请求;
接收客户端响应所述元数据检测请求所返回的第一元数据的简要信息、以及第二元数据的简要信息;
对比所述第一元数据的简要信息和第二元数据的简要信息,确定第一元数据和第二元数据键值相同且详细信息不同,生成所述检测结果。
5.一种分布式文件系统,其特征在于,包括服务端、第一客户端、第二客户端;其中,所述服务端包括如权利要求3-4中任意一项所述的元数据恢复装置。
6.一种计算机存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-2中任一项所述的元数据恢复方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710611719.2A CN109947730B (zh) | 2017-07-25 | 2017-07-25 | 元数据恢复方法、装置、分布式文件系统及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710611719.2A CN109947730B (zh) | 2017-07-25 | 2017-07-25 | 元数据恢复方法、装置、分布式文件系统及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109947730A CN109947730A (zh) | 2019-06-28 |
CN109947730B true CN109947730B (zh) | 2024-02-02 |
Family
ID=67003950
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710611719.2A Active CN109947730B (zh) | 2017-07-25 | 2017-07-25 | 元数据恢复方法、装置、分布式文件系统及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109947730B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110290012A (zh) * | 2019-07-03 | 2019-09-27 | 浪潮云信息技术有限公司 | RabbitMQ集群故障的检测恢复系统及方法 |
CN110535907A (zh) * | 2019-07-26 | 2019-12-03 | 济南浪潮数据技术有限公司 | 一种元数据同步方法和系统 |
CN112698976B (zh) * | 2020-12-24 | 2023-12-22 | 北京浪潮数据技术有限公司 | 一种元数据修复方法、装置、设备及介质 |
CN113342751B (zh) * | 2021-07-30 | 2021-11-09 | 联想凌拓科技有限公司 | 元数据处理方法、装置、设备和可读存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103136370A (zh) * | 2013-03-21 | 2013-06-05 | 曙光信息产业(北京)有限公司 | 元数据的恢复方法和装置 |
CN103729436A (zh) * | 2013-12-27 | 2014-04-16 | 中国科学院信息工程研究所 | 一种分布式元数据管理方法及系统 |
CN103761161A (zh) * | 2013-12-31 | 2014-04-30 | 华为技术有限公司 | 恢复数据的方法、服务器及系统 |
CN104202387A (zh) * | 2014-08-27 | 2014-12-10 | 华为技术有限公司 | 一种元数据恢复方法及相关装置 |
CN106789180A (zh) * | 2016-11-30 | 2017-05-31 | 郑州云海信息技术有限公司 | 一种元数据服务器的服务控制方法及装置 |
CN106874383A (zh) * | 2017-01-10 | 2017-06-20 | 清华大学 | 一种分布式文件系统元数据的解耦合分布方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101413298B1 (ko) * | 2010-11-04 | 2014-06-27 | 한국전자통신연구원 | 단편적 정보를 이용하여 메타 데이터를 복구하기 위한 장치, 시스템 및 그 방법 |
-
2017
- 2017-07-25 CN CN201710611719.2A patent/CN109947730B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103136370A (zh) * | 2013-03-21 | 2013-06-05 | 曙光信息产业(北京)有限公司 | 元数据的恢复方法和装置 |
CN103729436A (zh) * | 2013-12-27 | 2014-04-16 | 中国科学院信息工程研究所 | 一种分布式元数据管理方法及系统 |
CN103761161A (zh) * | 2013-12-31 | 2014-04-30 | 华为技术有限公司 | 恢复数据的方法、服务器及系统 |
CN104202387A (zh) * | 2014-08-27 | 2014-12-10 | 华为技术有限公司 | 一种元数据恢复方法及相关装置 |
CN106789180A (zh) * | 2016-11-30 | 2017-05-31 | 郑州云海信息技术有限公司 | 一种元数据服务器的服务控制方法及装置 |
CN106874383A (zh) * | 2017-01-10 | 2017-06-20 | 清华大学 | 一种分布式文件系统元数据的解耦合分布方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109947730A (zh) | 2019-06-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10157109B2 (en) | Method for restoring files from a continuous recovery system | |
US7478113B1 (en) | Boundaries | |
Pelkonen et al. | Gorilla: A fast, scalable, in-memory time series database | |
US8762353B2 (en) | Elimination of duplicate objects in storage clusters | |
US10452271B2 (en) | Reconstructing in-memory indices in a distributed data storage system | |
US10248356B2 (en) | Using scratch extents to facilitate copying operations in an append-only storage system | |
US9892005B2 (en) | System and method for object-based continuous data protection | |
US8250033B1 (en) | Replication of a data set using differential snapshots | |
CN109947730B (zh) | 元数据恢复方法、装置、分布式文件系统及可读存储介质 | |
US9235593B2 (en) | Transmitting filesystem changes over a network | |
CN108255647B (zh) | 一种samba服务器集群下的高速数据备份方法 | |
US9547706B2 (en) | Using colocation hints to facilitate accessing a distributed data storage system | |
CN109522290B (zh) | 一种HBase数据块恢复及数据记录提取方法 | |
US8396840B1 (en) | System and method for targeted consistency improvement in a distributed storage system | |
KR102187127B1 (ko) | 데이터 연관정보를 이용한 중복제거 방법 및 시스템 | |
US8768901B1 (en) | Method and apparatus for selectively storing blocks of data on a server | |
CN103460197A (zh) | 计算机系统、文件管理方法以及元数据服务器 | |
JP2005267600A (ja) | 長期データ保護システム及び方法 | |
US11567902B2 (en) | Systems and methods for document search and aggregation with reduced bandwidth and storage demand | |
CN109522283A (zh) | 一种重复数据删除方法及系统 | |
US20160092124A1 (en) | Append-only storage system supporting open and closed extents | |
CN104965835B (zh) | 一种分布式文件系统的文件读写方法及装置 | |
US9852031B2 (en) | Computer system and method of identifying a failure | |
JP3802977B2 (ja) | 蓄積交換型電子会議システムにおける情報矛盾判定、修正装置及び方法並びに情報矛盾判定、修正プログラムを記録したコンピュータ読取可能な記憶媒体 | |
JP2019095925A (ja) | 情報処理装置および情報処理プログラム |
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 |