CN110413449B - 一种基于文件存储系统的元数据备份与恢复方法 - Google Patents
一种基于文件存储系统的元数据备份与恢复方法 Download PDFInfo
- Publication number
- CN110413449B CN110413449B CN201910580987.1A CN201910580987A CN110413449B CN 110413449 B CN110413449 B CN 110413449B CN 201910580987 A CN201910580987 A CN 201910580987A CN 110413449 B CN110413449 B CN 110413449B
- Authority
- CN
- China
- Prior art keywords
- metadata
- omap
- designing
- file
- value
- 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
- 238000000034 method Methods 0.000 title claims abstract description 22
- 238000011084 recovery Methods 0.000 title claims abstract description 20
- 230000008676 import Effects 0.000 claims abstract description 18
- 230000000737 periodic effect Effects 0.000 claims description 3
- 229910002056 binary alloy Inorganic materials 0.000 claims description 2
- 230000008439 repair process Effects 0.000 description 4
- 238000006467 substitution reaction Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000003631 expected effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1435—Saving, restoring, recovering or retrying at system level using file system or storage system metadata
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1469—Backup restoration techniques
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Library & Information Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种基于文件存储系统的元数据备份与恢复方法,包括如下步骤;设计omap对象的导入、导出接口;设计元数据备份脚本调用存储系统命令或linux命令,每间隔设定时间备份文件系统中的元数据对象;设计元数据恢复脚本,元数据损坏时,恢复单个元数据对象或备份的全部元数据对象。通过设计omap对象的导入、导出接口,同时使用脚本调用存储系统命令或linux命令,定期备份文件系统中的元数据对象,元数据损坏时,可恢复单个元数据对象或备份的全部元数据对象。不仅提高恢复速度,而且减少数据丢失。
Description
技术领域
本发明涉及文件存储系统技术领域,具体涉及一种基于文件存储系统的元数据备份与恢复方法。
背景技术
文件系统的目录是树形状的,根据根"/"的元数据,可以找到子目录元数据存储的位置。逐层遍历,最后形成整个文件系统树的关联关系。此外,根据目录的inode可索引到元数据池中的元数据对象。
如果文件系统中的元数据出现异常会出现以下问题:(1)MDS进程无法启动,系统不可用并提示damaged;(2)MDS进程虽然可用,但是会出现数据丢失。
目前文件系统中已有的一些元数据检测与修复工具,包括icfsfs-data-scan、icfsfs-table-tool、icfsfs-journal-tool等,可以对元数据损坏等故障场景进行检测和修复,但是目前还存在一些功能和性能问题,不能够达到预期效果。例如:(1)当文件系统存储量较大时,比如某个目录元数据损坏,可能需要较长的修复时间;(2)当游离目录损坏时,mds无法启动,目前还没有较好的修复效果。
发明内容
针对当文件系统存储量较大时,比如某个目录元数据损坏,可能需要较长的修复时间;当游离目录损坏时,mds无法启动,目前还没有较好的修复效果的问题。本发明提供一种基于文件存储系统的元数据备份与恢复方法。
本发明的技术方案是:
本发明技术方案提供一种基于文件存储系统的元数据备份与恢复方法,包括如下步骤;
设计omap对象的导入、导出接口;
设计元数据备份脚本调用存储系统命令或linux命令,每间隔设定时间备份文件系统中的元数据对象;
设计元数据恢复脚本,元数据损坏时,恢复单个元数据对象或备份的全部元数据对象。
元数据对象:元数据池中成员,非omap对象:元数据池中的成员,stat <obj-name>可以查看,通常对象size大于0;通过listomapvals <obj-name>和getomapheader <obj-name>查看对象不具有(key,value)和header。
omap对象:元数据池中的成员,对象的长度size等于0,可通过listomapvals <obj-name>和getomapvals <obj-name>查看对象的(key,value)或header。
进一步的,所述的设计omap对象的导出接口中,导出omap对象命令,用于导出omap对象key、value、header的二进制到文件中。
进一步的,所述的设计omap对象的导入、导出接口的步骤中,设计omap对象的导出接口的具体步骤包括:
步骤111:读取header的长度headerlen存在本地文件中,读取header存在本地文件中;
步骤112:读取key的长度keylen存在本地文件中,读取key存在本地文件中;
步骤113:读取value的长度valuelen存在本地文件中,读取value存在本地文件中;
步骤114:重复步骤112、步骤113直到结束。
进一步的,所述的设计omap对象的导入接口中,导入omap对象命令,用于解析本地文件中的内容。
进一步的,所述的设计omap对象的导入、导出接口的步骤中,设计omap对象的导入接口的具体步骤包括:
步骤101:读取四个字节的长度得到headerlen,读取headerlen个字节的长度得到header;
步骤102:读取四个字节的长度得到keylen,读取keylen个字节的长度得到key;
步骤103:读取四个字节的长度得到valuelen,读取valuelen个字节的长度得到value;设置元数据对象的单个header、key和value;
步骤104:重复步骤102、步骤103直到结束,其中,headerlen、keylen和valuelen各占用四个字节长度,分别用来表示header、key和value的长度。
进一步的,元数据备份脚本实现包括如下步骤:
步骤201:在crontab服务中,添加周期备份功能;
步骤202:遍历集群所有节点,flush journal 强制元数据刷新成对象;
步骤203:脚本调用rados命令,导出omap对象和非map对象到本地文件中;其中,包括遍历元数据池中所有对象进行备份、遍历文件系统根目录下前几层目录进行备份;
步骤204:将本地备份文件进行压缩,设置保留设置时间段内的元数据备份。
进一步的,所述的步骤203中,首先备份目录元数据对象之外的对象,然后备份目录元数据对象,当目录元数据对象占用空间达到设置的阈值时,结束备份。
进一步的,元数据恢复脚本实现包括如下步骤:
步骤301:判断当前元数据对象的损坏状态;
步骤302:恢复单个元数据对象或所有元数据对象到元数据池中。
从以上技术方案可以看出,本发明具有以下优点:本发明提出了一种文件存储系统元数据备份与恢复的方法,通过设计omap对象的导入、导出接口,同时使用脚本调用存储系统命令或linux命令,定期备份文件系统中的元数据对象,元数据损坏时,可恢复单个元数据对象或备份的全部元数据对象。不仅提高恢复速度,而且减少数据丢失。
此外,本发明设计原理可靠,结构简单,具有非常广泛的应用前景。
由此可见,本发明与现有技术相比,具有突出的实质性特点和显著地进步,其实施的有益效果也是显而易见的。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的基于文件存储系统的元数据备份与恢复方法的示意性流程图。
图2是本发明实施例提供的设计omap对象的导出接口方法的示意性流程图。
图3是本发明实施例提供的设计omap对象的导入接口方法的示意性流程图。
图4是本发明实施例提供的元数据备份脚本实现示意性流程图。
具体实施方式
为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
实施例一
如图1-4所示,本发明实施例提供一种基于文件存储系统的元数据备份与恢复方法,包括如下步骤:
步骤1:设计omap对象的导入、导出接口;本步骤中,元数据对象:元数据池中成员,非omap对象:元数据池中的成员,stat <obj-name> 可以查看,通常对象size大于0;通过listomapvals <obj-name>和getomapheader <obj-name>查看对象不具有(key,value)和header。
omap对象:元数据池中的成员,对象的长度size等于0,可通过listomapvals <obj-name>和getomapvals <obj-name>查看对象的(key,value)或header。
导出omap对象命令,用于导出omap对象key、value、header的二进制到文件中。
导出到文件中的元数据信息存储格式如下:
headerlen | header | keylen | key | valuelen | value | keylen | key | valuelen | value | … |
headerlen、keylen和valuelen各占用四个字节长度,分别用来表示header、key和value的长度,取值范围0-2的31次方。headerlen, keylen,valuelen以二进制形式写入文件;header,和value以二进制形式写入文件,可以节省存储空间;key以流的形式写入文件,在目录中key表示为目录项的名称,方便后续使用。
设计omap对象的导出接口的具体步骤:
步骤111:读取header的长度headerlen存在本地文件中,读取header存在本地文件中;
步骤112:读取key的长度keylen存在本地文件中,读取key存在本地文件中;
步骤113:读取value的长度valuelen存在本地文件中,读取value存在本地文件中;
步骤114:重复步骤112、步骤113直到结束。
导入omap对象命令,解析本地文件中的内容;首先读取四个字节的长度得到headerlen,接着读取headerlen个字节的长度得到header,设置header,omap元数据只有一个hander。然后读取四个字节的长度得到keylen,读取keylen个字节的长度得到key;读取四个字节的长度得到valuelen,读取valuelen个字节的长度得到value;设置元数据对象的单个header、key和value。重复读取header、key和value,直到文件的内容读取完毕,单个omap对象元数据恢复完成。
设计omap对象导入接口具体步骤:
步骤101:读取四个字节的长度得到headerlen,读取headerlen个字节的长度得到header;
步骤102:读取四个字节的长度得到keylen,读取keylen个字节的长度得到key;
步骤103:读取四个字节的长度得到valuelen,读取valuelen个字节的长度得到value;设置元数据对象的单个header、key和value;
步骤104:重复步骤102、步骤103直到结束。
步骤2:设计元数据备份脚本调用存储系统命令或linux命令,每间隔设定时间备份文件系统中的元数据对象;rados命令:存储系统中的命令,该命令可操作数据池或元数据池。元数据导出:使用rados命令,把元数据对象的信息存储在本地文件中。元数据导入:使用rados命令,把元数据对象恢复到导出时的状态。元数据备份:元数据导出。元数据恢复:元数据导入。obj-name:元数据对象。Crontab:linux下的一个定时执行工具。
header:rados –p mpool getomapheader <obj-name>显示系统元数据池指定对象的header。key、value:rados –p mpool listomapvals <obj-name>显示元数据池指定对象内容。
元数据备份脚本实现包括如下步骤:
步骤201:在crontab服务中,添加周期备份功能;
步骤202:遍历集群所有节点,flush journal 强制元数据刷新成对象;
步骤203:脚本调用rados命令,导出omap对象和非map对象到本地文件中;其中,包括遍历元数据池中所有对象进行备份、遍历文件系统根目录下前几层目录进行备份;首先备份目录元数据对象之外的对象,然后备份目录元数据对象,当目录元数据对象占用空间达到设置的阈值时,结束备份;
步骤204:将本地备份文件进行压缩,设置保留设置时间段内的元数据备份,本实施例中,设置保留最近七天内的元数据备份。
步骤3;设计元数据恢复脚本,元数据损坏时,恢复单个元数据对象或备份的全部元数据对象;元数据恢复脚本实现包括如下步骤:
步骤301:判断当前元数据对象的损坏状态;
步骤302:恢复单个元数据对象或所有元数据对象到元数据池中。
本发明适用于所有的文件存储系统,相对于icfsfs-journal-tool、icfsfs-data-scan等修复工具,可以恢复修复工具不能够修复的元数据对象(mds0_sessionmap、mds0_inotable等),实现方式简单,效率较高,理论上可以恢复备份的所有元数据对象,减少数据丢失。
实施例二
本发明实施例提供一种基于文件存储系统的元数据备份与恢复方法,包括如下步骤:
步骤1:设计omap对象的导入、导出接口;本实施例中,设计的omap对象导入、导出接口时,采取直接把omap对象的header、key、value以16进制的形式导出在本地文件,header、key、value各占一行,不需要headerlen、keylen和valuelen,导入时按行读取,也可恢复omap对象。
步骤2:设计元数据备份脚本调用存储系统命令或linux命令,每间隔设定时间备份文件系统中的元数据对象;
步骤3:设计元数据恢复脚本,元数据损坏时,恢复单个元数据对象或备份的全部元数据对象。
尽管通过参考附图并结合优选实施例的方式对本发明进行了详细描述,但本发明并不限于此。在不脱离本发明的精神和实质的前提下,本领域普通技术人员可以对本发明的实施例进行各种等效的修改或替换,而这些修改或替换都应在本发明的涵盖范围内/任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (4)
1.一种基于文件存储系统的元数据备份与恢复方法,其特征在于包括如下步骤;
设计omap对象的导入、导出接口;
omap对象:元数据池中的成员;
设计元数据备份脚本调用存储系统命令或linux命令,每间隔设定时间,通过omap对象的导出接口备份文件系统中的元数据对象;
设计元数据恢复脚本,元数据损坏时,通过omap对象的导入接口恢复单个元数据对象或备份的全部元数据对象;
所述的设计omap对象的导出接口中,导出omap对象命令,用于导出omap对象key、value、header的二进制到文件中;
所述的设计omap对象的导入、导出接口的步骤中,设计omap对象的导出接口的具体步骤包括:
步骤111:读取header的长度headerlen存在本地文件中,读取header存在本地文件中;
步骤112:读取key的长度keylen存在本地文件中,读取key存在本地文件中;
步骤113:读取value的长度valuelen存在本地文件中,读取value存在本地文件中;
步骤114:重复步骤112、步骤113直到结束;
所述的设计omap对象的导入接口中,导入omap对象命令,用于解析本地文件中的内容;
所述的设计omap对象的导入、导出接口的步骤中,设计omap对象的导入接口的具体步骤包括:
步骤101:读取四个字节的长度得到headerlen,读取headerlen个字节的长度得到header;
步骤102:读取四个字节的长度得到keylen,读取keylen个字节的长度得到key;
步骤103:读取四个字节的长度得到valuelen,读取valuelen个字节的长度得到value;
设置元数据对象的单个header、key和value;
步骤104:重复步骤102、步骤103直到结束,其中,headerlen、keylen和valuelen各占用四个字节长度,分别用来表示header、key和value的长度。
2.根据权利要求1所述的一种基于文件存储系统的元数据备份与恢复方法,其特征在于,元数据备份脚本实现包括如下步骤:
步骤201:在crontab服务中,添加周期备份功能;
步骤202:遍历集群所有节点,flush journal 强制元数据刷新成对象;
步骤203:调用rados命令,导出omap对象和非map对象到本地文件中;其中,包括遍历元数据池中所有对象进行备份、遍历文件系统根目录下前几层目录进行备份;
步骤204:将本地备份文件进行压缩,设置保留设置时间段内的元数据备份。
3.根据权利要求2所述的一种基于文件存储系统的元数据备份与恢复方法,其特征在于,所述的步骤203中,首先备份目录元数据对象之外的对象,然后备份目录元数据对象,当目录元数据对象占用空间达到设置的阈值时,结束备份。
4.根据权利要求3所述的一种基于文件存储系统的元数据备份与恢复方法,其特征在于,元数据恢复脚本实现包括如下步骤:
步骤301:判断当前元数据对象的损坏状态;
步骤302:恢复单个元数据对象或所有元数据对象到元数据池中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910580987.1A CN110413449B (zh) | 2019-06-29 | 2019-06-29 | 一种基于文件存储系统的元数据备份与恢复方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910580987.1A CN110413449B (zh) | 2019-06-29 | 2019-06-29 | 一种基于文件存储系统的元数据备份与恢复方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110413449A CN110413449A (zh) | 2019-11-05 |
CN110413449B true CN110413449B (zh) | 2022-02-18 |
Family
ID=68358864
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910580987.1A Active CN110413449B (zh) | 2019-06-29 | 2019-06-29 | 一种基于文件存储系统的元数据备份与恢复方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110413449B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103595797A (zh) * | 2013-11-18 | 2014-02-19 | 上海爱数软件有限公司 | 一种分布式存储系统中的缓存方法 |
CN104765652A (zh) * | 2014-01-08 | 2015-07-08 | 中国移动通信集团浙江有限公司 | 一种数据备份和数据恢复方法及装置 |
CN107832455A (zh) * | 2017-11-24 | 2018-03-23 | 郑州云海信息技术有限公司 | 一种存储对象的数据获取方法、系统、设备及存储介质 |
CN107844386A (zh) * | 2016-09-19 | 2018-03-27 | 北京金山云网络技术有限公司 | 一种数据备份、恢复方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10592162B2 (en) * | 2018-08-22 | 2020-03-17 | Intel Corporation | Distributed storage location hinting for non-volatile memories |
-
2019
- 2019-06-29 CN CN201910580987.1A patent/CN110413449B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103595797A (zh) * | 2013-11-18 | 2014-02-19 | 上海爱数软件有限公司 | 一种分布式存储系统中的缓存方法 |
CN104765652A (zh) * | 2014-01-08 | 2015-07-08 | 中国移动通信集团浙江有限公司 | 一种数据备份和数据恢复方法及装置 |
CN107844386A (zh) * | 2016-09-19 | 2018-03-27 | 北京金山云网络技术有限公司 | 一种数据备份、恢复方法及装置 |
CN107832455A (zh) * | 2017-11-24 | 2018-03-23 | 郑州云海信息技术有限公司 | 一种存储对象的数据获取方法、系统、设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
ceph存储 object的attr和omap操作;skdkjzz;《http://blog.csdn.net/skdkjzz/article/details/51579520》;20160603;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN110413449A (zh) | 2019-11-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101719165B (zh) | 一种实现数据库高效快速备份的方法 | |
CN100547555C (zh) | 一种基于指纹的数据备份系统 | |
CN109542330B (zh) | 数据存储方法、数据查询方法及装置 | |
CN110647514B (zh) | 一种元数据更新方法、装置及元数据服务器 | |
CN110109778A (zh) | 一种大量小数据文件备份方法及恢复方法 | |
CN113064760B (zh) | 数据库合成备份方法、装置、计算机设备和存储介质 | |
CN112612576B (zh) | 虚拟机备份方法、装置、电子设备及存储介质 | |
CN105447168A (zh) | Mp4格式的碎片文件恢复与重组的方法 | |
CN112380067A (zh) | 一种Hadoop环境下基于元数据的大数据备份系统及方法 | |
CN104965835A (zh) | 一种分布式文件系统的文件读写方法及装置 | |
CN112052121A (zh) | 一种硬盘数据的恢复方法及系统 | |
CN110413449B (zh) | 一种基于文件存储系统的元数据备份与恢复方法 | |
CN111611110A (zh) | 基于FusionCompute平台的差异恢复方法及差异恢复装置 | |
CN111404737A (zh) | 一种容灾处理方法以及相关装置 | |
CN113535482B (zh) | 云备份链数据备份方法及装置、设备、可读介质 | |
CN105159790A (zh) | 一种数据抢救方法及文件服务器 | |
CN115373609A (zh) | 任务处理方法及相关设备 | |
CN110457163B (zh) | 一种分布式块存储的数据恢复方法、装置及存储介质 | |
CN111190765B (zh) | 一种数据备份方法及系统 | |
CN107315806A (zh) | 一种基于文件系统的嵌入式存储方法和装置 | |
CN103197992B (zh) | GlusterFS脑裂的自动化恢复方法 | |
CN111400103B (zh) | 一种针对infortrend存储的数据恢复方法 | |
CN111949440A (zh) | 数据恢复方法及装置 | |
CN114924910B (zh) | 一种基于分布式存储系统的超融合数据管理的处理方法 | |
CN112612648B (zh) | 一种SQL Server数据库恢复方法、终端设备及存储介质 |
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 |