CN111444040B - 一种元数据备份方法及装置 - Google Patents
一种元数据备份方法及装置 Download PDFInfo
- Publication number
- CN111444040B CN111444040B CN202010063484.XA CN202010063484A CN111444040B CN 111444040 B CN111444040 B CN 111444040B CN 202010063484 A CN202010063484 A CN 202010063484A CN 111444040 B CN111444040 B CN 111444040B
- Authority
- CN
- China
- Prior art keywords
- metadata
- osd
- backup
- stored
- backed
- 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
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/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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及数据存储技术领域,特别涉及一种元数据备份方法及装置。该方法包括:在确定目标对象存储至本地的数据分区时,将目标对象标记为元数据待备份状态;基于预设的第一周期,获取被标记为元数据待备份状态的对象的第一备份元数据,并获取用于备份自身存储的对象的元数据的第二OSD;将被标记为元数据待备份状态的对象的第一备份元数据发送至第二OSD,以使第二OSD将被标记为元数据待备份状态的对象的第一备份元数据存储至本地的备份元数据分区;在接收到第二OSD返回的备份完成指令时,将被标记为元数据待备份状态的对象标记为元数据备份完成状态。
Description
技术领域
本申请涉及数据存储技术领域,特别涉及一种元数据备份方法及装置。
背景技术
Ceph是一个开源的分布式存储项目,提供块存储、对象存储和文件存储三种存储方案,是可靠的、可扩展的、统一的、分布式的存储***。在早期的Ceph存储***中,Ceph对象存储设备(Object Storage Device,OSD)使用文件***,为了解决性能问题,引入了Bluestore存储引擎。BlueStore是基于RocksDB和BlockDevice实现的Ceph的对象存储,其所有的元数据都保存在RocksDB这个KV存储***中,包括collection,对象,omap,磁盘空间分配记录等都保存RocksDB里,其对象的数据直接保存在BlockDevice。RocksDB在写数据的时候是通过预写式日志(Write Ahead Log,WAL)的方式写入KV数据库,在节点异常掉电时,WAL和KV数据库都可能损坏,最终导致OSD故障无法启动。
目前,可以采用以下方式恢复元数据,解决OSD故障问题:
全量恢复方式,即将故障OSD踢出集群,然后重新加入,进行全盘数据恢复;然而,将故障OSD踢出集群,会引发一次数据均衡,重新加入后,会再次引发数据均衡,两次数据均衡产生大量的内部数据复制、迁移,在用户业务运行中,大量的数据均衡影响***性能及用户IO业务。
为了解决全量恢复方式带来的对******能用户IO业务的影响,还可以采用增量恢复方式,即丢弃掉节点掉电前的一个事务的数据,即对应于RocksDB的WAL中的一个WriteBatch数据,然后重启故障OSD的线程,让其从别的副本通过Peering同步丢弃的数据;然而,如果这个事务写的元数据是OSD自己独有的元数据信息,如Bluestore的超级块信息,既无法从别的OSD上同步过来,也可能OSD根据无法正常启动,导致增量恢复失败。
发明内容
本申请提供一种元数据备份方法及装置,用以解决现有技术中存在的由于丢失的元数据是OSD自己独有的元数据信息,而导致无法通过增量恢复方式恢复损坏的元数据的问题。
第一方面,本申请提供一种元数据备份方法,应用于分布式存储***的第一对象存储设备OSD,每一个OSD至少包括数据分区和备份元数据分区,所述方法包括:
在确定目标对象存储至本地的数据分区时,将所述目标对象标记为元数据待备份状态;
基于预设的第一周期,获取被标记为元数据待备份状态的对象的第一备份元数据,并获取用于备份自身存储的对象的元数据的第二OSD;
将所述被标记为元数据待备份状态的对象的第一备份元数据发送至所述第二OSD,以使所述第二OSD将所述被标记为元数据待备份状态的对象的第一备份元数据存储至本地的备份元数据分区;
在接收到所述第二OSD返回的备份完成指令时,将所述被标记为元数据待备份状态的对象标记为元数据备份完成状态。
可选地,所述获取被标记为元数据待备份状态的对象的第一备份元数据的步骤包括:
确定本地被标记为元数据待备份状态的各对象;
针对所述各对象中每一对象分别执行以下操作:
获取一个对象的OID,存储位置信息,版本号和所属poll信息,并根据该一个对象的OID,存储位置信息,版本号和所属poll信息计算该一个对象的校验码;将获取到的该一个对象的OID,存储位置信息,对象版本号,对象所述poll信息和校验码作为该一个对象的第一备份元数据。
可选地,所述方法还包括:
基于预设的配置规则配置所述分布式存储***中各OSD与用于备份该OSD上存储的对象的元数据的OSD,并将配置的对应关系存储至监视器。
可选地,所述获取用于备份自身存储的对象的元数据的第二OSD的步骤包括:
基于所述配置的对应关系从所述监视器获取用于备份自身存储的对象的元数据的第二OSD。
可选地,所述分布式存储***包括m个OSD;
所述基于预设的配置规则配置所述分布式存储***中各OSD与用于备份该OSD上存储的对象的元数据的OSD的步骤包括:
将OSD n的数据分区上存储的对象的元数据存储在OSD n+1的备份元数据分区,其中,0≤n<m;
将OSD m的数据分区上存储的对象的元数据存储在OSD 0的备份元数据分区。
可选地,所述方法还包括:
基于预设的第二周期,将已存储至本地的对象标记为元数据待备份状态;
针对所述已存储至本地的对象中的每一对象分别执行以下操作:
获取一个对象的OID,存储位置信息,版本号和所属poll信息,并根据该一个对象的OID,存储位置信息,版本号和所属poll信息计算该一个对象的校验码;将获取到的该一个对象的OID,存储位置信息,对象版本号,对象所述poll信息和校验码作为该一个对象的第二备份元数据;
将所述已存储至本地的对象的第二备份元数据发送至所述第二OSD,以使所述第二OSD将所述已存储至本地的对象的第二备份元数据存储至本地的备份元数据分区。
可选地,所述第二OSD将所述被标记为元数据待备份状态的对象的第一备份元数据存储至本地的备份元数据分区的第一文件中;
所述第二OSD将所述已存储至本地的对象的第二备份元数据存储至本地的备份元数据分区的第二文件中。
第二方面,本申请提供一种元数据备份装置,应用于分布式存储***的第一对象存储设备OSD,每一个OSD至少包括数据分区和备份元数据分区,所述装置包括标记单元,获取单元和发送单元:
在确定目标对象存储至本地的数据分区时,所述标记单元将所述目标对象标记为元数据待备份状态;
所述获取单元,用于基于预设的第一周期,获取被标记为元数据待备份状态的对象的第一备份元数据,并获取用于备份自身存储的对象的元数据的第二OSD;
所述发送单元,将所述被标记为元数据待备份状态的对象的第一备份元数据发送至所述第二OSD,以使所述第二OSD将所述被标记为元数据待备份状态的对象的第一备份元数据存储至本地的备份元数据分区;
在接收到所述第二OSD返回的备份完成指令时,所述标记单元将所述被标记为元数据待备份状态的对象标记为元数据备份完成状态。
可选地,在获取被标记为元数据待备份状态的对象的第一备份元数据时,所述获取单元具体用于:
确定本地被标记为元数据待备份状态的各对象;
针对所述各对象中每一对象分别执行以下操作:
获取一个对象的OID,存储位置信息,版本号和所属poll信息,并根据该一个对象的OID,存储位置信息,版本号和所属poll信息计算该一个对象的校验码;将获取到的该一个对象的OID,存储位置信息,对象版本号,对象所述poll信息和校验码作为该一个对象的第一备份元数据。
可选地,所述装置还包括:
配置单元,用于基于预设的配置规则配置所述分布式存储***中各OSD与用于备份该OSD上存储的对象的元数据的OSD,并将配置的对应关系存储至监视器。
可选地,在获取用于备份自身存储的对象的元数据的第二OSD时,所述获取单元具体用于:
基于所述配置的对应关系从所述监视器获取用于备份自身存储的对象的元数据的第二OSD。
可选地,所述分布式存储***包括m个OSD;
在基于预设的配置规则配置所述分布式存储***中各OSD与用于备份该OSD上存储的对象的元数据的OSD时,所述配置单元具体用于:
将OSD n的数据分区上存储的对象的元数据存储在OSD n+1的备份元数据分区,其中,0≤n<m;
将OSD m的数据分区上存储的对象的元数据存储在OSD 0的备份元数据分区。
可选地,所述标记单元还用于,基于预设的第二周期,将已存储至本地的对象标记为元数据待备份状态;
针对所述已存储至本地的对象中的每一对象分别执行以下操作:
所述获取单元还用于,获取一个对象的OID,存储位置信息,版本号和所属poll信息,并根据该一个对象的OID,存储位置信息,版本号和所属poll信息计算该一个对象的校验码;将获取到的该一个对象的OID,存储位置信息,对象版本号,对象所述poll信息和校验码作为该一个对象的第二备份元数据;
所述发送单元还用于,将所述已存储至本地的对象的第二备份元数据发送至所述第二OSD,以使所述第二OSD将所述已存储至本地的对象的第二备份元数据存储至本地的备份元数据分区。
可选地,所述第二OSD将所述被标记为元数据待备份状态的对象的第一备份元数据存储至本地的备份元数据分区的第一文件中;
所述第二OSD将所述已存储至本地的对象的第二备份元数据存储至本地的备份元数据分区的第二文件中。
第三方面,本申请实施例提供一种元数据备份装置,该元数据备份装置包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序指令执行如上述第一方面中任一项所述的方法的步骤。
第四方面,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使所述计算机执行如上述第一方面中任一项所述方法的步骤。
综上可知,本申请实施例中,在确定目标对象存储至本地的数据分区时,将所述目标对象标记为元数据待备份状态;基于预设的第一周期,获取被标记为元数据待备份状态的对象的第一备份元数据,并获取用于备份自身存储的对象的元数据的第二OSD;将所述被标记为元数据待备份状态的对象的第一备份元数据发送至所述第二OSD,以使所述第二OSD将所述被标记为元数据待备份状态的对象的第一备份元数据存储至本地的备份元数据分区;在接收到所述第二OSD返回的备份完成指令时,将所述被标记为元数据待备份状态的对象标记为元数据备份完成状态。
采用本申请实施例提供的元数据备份方法,各OSD将自身存储的对象的元数据存储在本地的同时,将备份元数据备份至其它OSD,这样,即便OSD发生异常掉线而导致本地存储的对象的元数据完全损坏,仍可以根据被分在其它OSD上的备份元数据进行恢复,提高了元数据的可靠性。
附图说明
为了更加清楚地说明本申请实施例或者现有技术中的技术方案,下面将对本申请实施例或者现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据本申请实施例的这些附图获得其他的附图。
图1为本申请实施例提供的OSD的逻辑分区示意图;
图2为本申请实施例提供的一种元数据备份方法的流程图;
图3为本申请实施例提供的另一种元数据备份方法的流程图;
图4为本申请实施例提供的一种元数据备份装置的结构示意图;
图5为本申请实施例提供的又一种元数据备份装置的结构示意图。
具体实施方式
在本申请实施例使用的术语仅仅是出于描述特定实施例的目的,而非限制本申请。本申请和权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。还应当理解,本文中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
实际应用中,分布式存储***(如,Ceph)包括多个存储节点(如,主机),每一存储节点包括多块硬盘,一般情况下,每块硬盘承载一个OSD。目前相关技术中,每一个OSD被划分为2个逻辑分区,其中,一个为用于存储对象的分区,一个为用于存储本地存储的对象的元数据的分区。其中,一个对象的元数据至少包括该对象的对象标识符(ObjectIdentifier,OID),该对象的存储位置信息,该对象的版本号,该对象所属pool信息,该对象的修改时间,快照等。
由上可知,一个OSD上存储的对象以及该对象的元数据存储在一个硬盘上,若该OSD异常掉电使得存储在本地的元数据损坏,有可能导致元数据损坏而无法恢复,甚至于导致OSD无法正常启动。
示例性的,参阅图1所示,本申请实施例提供的OSD的逻辑分区示意图。本申请实施例中,分布式存储***中每一个OSD至少包括用于存储对象的数据分区,用于存储本地存储的对象的元数据的元数据分区和用于备份存储其它OSD上存储的元数据的备份元数据分区。当然,一个OSD中各逻辑分区的容量大小/比例分配可根据具体应用场景和/或管理人员经验值确定,本申请实施例中,在此不做具体限定。
示例性的,参阅图2所示,本申请实施例提供的一种元数据备份方法的详细流程图,该方法应用于分布式存储***的第一OSD,该分布式存储***中每一个OSD至少包括数据分区和备份元数据分区,该第一OSD可以为该分布式存储***中任一OSD,该方法包括以下步骤:
步骤200:在确定目标对象存储至本地的数据分区时,将上述目标对象标记为元数据待备份状态。
实际应用中,该第一OSD可以包括数据分区,元数据分区和备份元数据分区,客户端在将数据写入分布式存储***时,可以采用cache加速的方式来写入,即先将对象写入缓存模块,再将对象从缓存模块写入磁盘中(即写入磁盘对应的OSD的数据分区中)。较佳地,在将目标对象写入第一OSD对应的数据分区的同时,会将目标对象的元数据存储至第一OSD的元数据分区中。
进一步地,本申请实施例中,在确定目标对象从缓存模块写入本地的数据分区时,即可修改该目标对象的状态标记,将该目标对象标记为元数据待备份状态。
示例性的,本申请实施例中,可以预先定义对象的状态标记,如,0表示为初始值,对象元数据未进行过备份;1表示对象元数据待备份;2表示对象元数据已完成备份。
步骤210:基于预设的第一周期,获取被标记为元数据待备份状态的对象的第一备份元数据,并获取用于备份自身存储的对象的元数据的第二OSD。
本申请实施例中,可以周期性的对写入本地,且被标记为元数据待备份状态的的对象的元数据进行备份处理。
也就是说,在确定当前周期结束时,获取当前周期内存储至本地的对象(被标记为元数据待备份状态的对象),并获取该对象的第一备份元数据,较佳地,可以直接从该对象的元数据中获取该对象的第一备份元数据。
本申请实施例中,一种较佳实施方式为,获取被标记为元数据待备份状态的对象的第一备份元数据的步骤包括:
确定本地被标记为元数据待备份状态的各对象;
针对上述各对象中每一对象分别执行以下操作:
获取一个对象的OID,存储位置信息,版本号和所属poll信息,并根据该一个对象的OID,存储位置信息,版本号和所属poll信息计算该一个对象的校验码;将获取到的该一个对象的OID,存储位置信息,对象版本号,对象上述poll信息和校验码作为该一个对象的第一备份元数据。
当然,一个对象的第一备份元数据可以是该一个对象的全部元数据的备份,也可以是部分必须元数据的备份,如,本申请实施例中,一种较佳实施方式为,一个对象的第一备份元数据可以仅包括该一个对象的OID,存储位置信息,版本号和所属poll信息,可选地,还可以包括通过对象的OID,存储位置信息,版本号和所属poll信息计算得到的校验码。也即,该第一备份元数据可以称之为精简元数据。
进一步地,本申请实施例中,第一OSD在获取到被标记为元数据待备份状态的对象的第一备份元数据之后,还需获取用于备份自身存储的对象的元数据的第二OSD。
那么,本申请实施例中,可以基于预设的配置规则配置上述分布式存储***中各OSD与用于备份该OSD上存储的对象的元数据的OSD,并将配置的对应关系存储至监视器(Monitor)。
相应的,获取用于备份自身存储的对象的元数据的第二OSD的步骤包括:基于上述配置的对应关系从上述监视器获取用于备份自身存储的对象的元数据的第二OSD。当然,各OSD可以在第一次获取到对应的第二OSD时,即可将对应的第二OSD信息存储在本地,无需每次备份时均需要从监视器获取,以减少***资源使用。
较佳地,本申请实施例中,可以采用环形链的方式配置各OSD与用于备份自身存储的对象的元数据的第二OSD。
具体地,假设分布式存储***包括m个OSD,m≥2,那么,在基于预设的配置规则配置上述分布式存储***中各OSD与用于备份该OSD上存储的对象的元数据的OSD时,一种较佳实施方式为,将OSD n的数据分区上存储的对象的元数据存储在OSD n+1的备份元数据分区,其中,0≤n<m;并将OSD m的数据分区上存储的对象的元数据存储在OSD 0的备份元数据分区。
例如,假设分布式存储***包括21个OSD,如,OSD 0,OSD 1,OSD 2,……,OSD 20,那么,即可将OSD 0上存储的对象的元数据存储至OSD 1上,将OSD 1上存储的对象的元数据存储至OSD 2上,将OSD 2上存储的对象的元数据存储至OSD 3上,……,将OSD 19上存储的对象的元数据存储至OSD 20上,将OSD 20上存储的对象的元数据存储至OSD 0上。
当然,本申请实施例中,一种可选地实施方式为,将各OSD的备份元数据存放至一个独立的服务器上。
本申请实施例中,一种可选地实施方式为,将该元数据备份方法应用于分布式存储***中的每一分布式存储节点(主机)上,如,假设主机1包括5个OSD(OSD 11,OSD 22,OSD33,OSD 44,OSD 55),那么,即可将OSD 11上存储的对象的元数据存储至OSD 22上,将OSD22上存储的对象的元数据存储至OSD 33上,将OSD 33上存储的对象的元数据存储至OSD 44上,将OSD 44上存储的对象的元数据存储至OSD 55上,将OSD 55上存储的对象的元数据存储至OSD 11上。
步骤220:将上述被标记为元数据待备份状态的对象的第一备份元数据发送至上述第二OSD,以使上述第二OSD将上述被标记为元数据待备份状态的对象的第一备份元数据存储至本地的备份元数据分区。
本申请实施例中,第一OSD将被标记为元数据待备份状态的对象的第一备份元数据发送至第二OSD的方式,包括但不限于以下两种方式:
第一种方式为,第一OSD在获取到一个对象的第一备份元数据后,将该一个对象的第一备份元数据直接发送至第二OSD;
第二种方式为,第一OSD在获取到所有对象的第一备份元数据后,将该第一备份元数据发送至第二OSD。
步骤230:在接收到上述第二OSD返回的备份完成指令时,将上述被标记为元数据待备份状态的对象标记为元数据备份完成状态。
本申请实施例中,第二OSD在接收到第一OSD发送的第一备份元数据时,会将接收到的第一备份元数据存储至本地的备份元数据分区,并在确定存储完成后,向第一OSD发送备份完成指令,以告知第一OSD已备份完成。相应的,第一OSD在接收到第二OSD发送的备份完成指令时,即可将对应的对象标记为元数据备份完成状态(如,将状态标识从1修改为2)。
本申请实施例中,另一种可选地实施方式为,在确定目标对象存储至本地的数据分区时,将上述目标对象标记为元数据待备份状态;获取上述目标对象的第一备份元数据,并获取用于备份自身存储的对象的元数据的第二OSD;将上述目标对象的第一备份元数据发送至上述第二OSD,以使上述第二OSD将上述目标对象的第一备份元数据存储至本地的备份元数据分区;在接收到上述第二OSD返回的备份完成指令时,将上述目标对象标记为元数据备份完成状态。
也就是说,监测是否存在对象存储至OSD本地,可以作为触发元数据备份的条件。
例如,假设用于备份存储OSD a存储的对象的元数据的第二OSD为OSD b,OSD a上已存储有对象a,且对象a的精简元数据已备份至OSD b的备份元数据分区中,此时,若OSD a确定对象b存储至本地,那么,就会获取对象b的精简元数据,并将对象b的精简元数据发送至OSD b,OSD b将接收到的对象b的精简元数据存储至本地的备份元数据分区中,那么,OSDb的备份元数据分区中就备份有对象a的精简元数据和对象b的精简元数据。后续的,若OSDa监测到对象c存储至本地,仍会重复执行上述操作,OSD b将对象c的精简元数据备份至备份元数据分区后,OSD b的备份元数据分区中就备份有对象a的精简元数据,对象b的精简元数据和对象c的精简元数据。
当然,在业务运行过程中,任一已完成元数据备份的对象被修改后,仍可以对该对象的元数据进行再次备份。具体备份方式如上所述,在此不再赘述。
进一步地,本申请实施例中,第一OSD还可以基于预设的第二周期,将已存储至本地的对象标记为元数据待备份状态;并针对上述已存储至本地的对象中的每一对象分别执行以下操作:获取一个对象的OID,存储位置信息,版本号和所属poll信息,并根据该一个对象的OID,存储位置信息,版本号和所属poll信息计算该一个对象的校验码;将获取到的该一个对象的OID,存储位置信息,对象版本号,对象上述poll信息和校验码作为该一个对象的第二备份元数据;将上述已存储至本地的对象的第二备份元数据发送至上述第二OSD,以使上述第二OSD将上述已存储至本地的对象的第二备份元数据存储至本地的备份元数据分区。
也就是说,OSD会定期对已存储至本地的所有对象的元数据进行备份。
其中,第二周期可以远大于第一周期,例如,第一周期可以设置为1秒,3秒,5秒,10秒等;而第二周期可以设置为半天,1天,1个星期,半个月,1个月等。
本申请实施例中一种较佳实施方式为,将各OSD的备份元数据分区划分为第一目录文件和第二目录文件,第一目录文件用于存储第一备份元数据,第二目录文件用于存储第二备份元数据。那么,第二OSD在备份存储第一备份元数据和第二备份元数据时,即可将接收到的被标记为元数据待备份状态的对象的第一备份元数据存储至本地的备份元数据分区的第一目录文件中;将接收到的已存储至第一OSD本地的对象的第二备份元数据存储至本地的备份元数据分区的第二目录文件中。
更进一步地,若第一OSD元数据异常,则可以启动恢复流程,具体地,第一OSD获取用于备份自身存储的对象的元数据的第二OSD,并从第二OSD获取第一备份元数据,以及根据该第一备份元数据进行元数据的恢复。若第一备份元数据被损坏,第一OSD无法从第二OSD获取第一备份元数据,则可以从第二OSD获取第二备份元数据,并根据第二备份元数据进行元数据恢复。
下面,结合具体应用场景对本申请提供的元数据备份方法进行详细说明。示例性的,参阅图3所示,本申请实施例中,另一种元数据备份方法的详细流程如下:
步骤300:针对各OSD进行逻辑分区,分别将各OSD划分为元数据分区,数据分区和备份元数据分区。
具体地,主机上硬盘初始化,并将硬盘划分为元数据分区,数据分区和备份元数据分区。接着,在元数据分区和数据分区初始化Ceph,并将备份元数据分区格式化为ext4文件***,以及建立两个目录(如,backup 1,backup2),backup 1用于存放第一备份元数据,backup 2用于存放第二备份元数据。
步骤310:配置各OSD与用于备份该OSD自身存储的对象的元数据的OSD,并将配置结果存储至Monitor。
具体地,预先配置各OSD之间的映射关系,该映射关系用于表征一个OSD与用于备份该一个OSD上存储的对象的元数据的OSD之间的关系。并将配置好的映射关系保存至分布式存储***中的Monitor。
例如,OSD 1与OSD 2相对应,可以理解为,OSD 1上存储的对象的元数据备份至OSD2。OSD 2与OSD 3相对应,可以理解为,OSD 2上存储的对象的元数据备份至OSD 3。
也就是说,一个OSD上存储的对象的元数据可以备份存储至其它OSD上,该一个OSD可以用于备份存储其它OSD上存储的对象的元数据。
步骤320:OSD 1在监测到对象1写入本地时,将对象1标记为元数据待备份状态,并获取对象1的精简元数据。
具体地,一个OSD在监测到一个对象写入本地的数据分区时,将该一个对象标记为元数据待备份状态,并从该一个对象本身,或者该一个对象对应的元数据中获取该一个对象的精简元数据。可选地,该精简元数据至少包括:该一个对象的OID,存储位置信息,版本号,所属poolid,以及根据上述元素计算得到的校验码。
步骤330:OSD 1从Monitor获取用于备份自身存储的对象的元数据的OSD 2。
具体地,若目标OSD本地未存储用于备份自身存储的对象的元数据的OSD(如,OSD2),则可以从Monitor获取该信息。当然,目标OSD在第一次获取到该信息之后,可将该信息缓存在本地。那么,若目标OSD本地存储有用于备份自身存储的对象的元数据的OSD,则只需从本地获取即可。
步骤340:OSD 1将获取到的对象1的精简元数据发送至OSD 2。
步骤350:OSD 2将接收到的对象1的精简元数据存储至本地,并向OSD 1反馈备份完成指令。
步骤360:OSD 1在接收到OSD 2反馈的备份完成指令时,将对象1标记为元数据备份完成状态。
示例性的,参阅图4所示,本申请提供的一种元数据备份装置的结构示意图,该元数据备份装置应用于分布式存储***的第一OSD,分布式存储***中每一个OSD至少包括数据分区和备份元数据分区,所述元数据备份装置至少包括标记单元40,获取单元41和发送单元42:
在确定目标对象存储至本地的数据分区时,标记单元40将所述目标对象标记为元数据待备份状态;
获取单元41,用于基于预设的第一周期,获取被标记为元数据待备份状态的对象的第一备份元数据,并获取用于备份自身存储的对象的元数据的第二OSD;
发送单元42,将所述被标记为元数据待备份状态的对象的第一备份元数据发送至所述第二OSD,以使所述第二OSD将所述被标记为元数据待备份状态的对象的第一备份元数据存储至本地的备份元数据分区;
在接收到所述第二OSD返回的备份完成指令时,标记单元40将所述被标记为元数据待备份状态的对象标记为元数据备份完成状态。
可选地,在获取被标记为元数据待备份状态的对象的第一备份元数据时,获取单元41具体用于:
确定本地被标记为元数据待备份状态的各对象;
针对所述各对象中每一对象分别执行以下操作:
获取一个对象的OID,存储位置信息,版本号和所属poll信息,并根据该一个对象的OID,存储位置信息,版本号和所属poll信息计算该一个对象的校验码;将获取到的该一个对象的OID,存储位置信息,对象版本号,对象所述poll信息和校验码作为该一个对象的第一备份元数据。
可选地,所述装置还包括:
配置单元,用于基于预设的配置规则配置所述分布式存储***中各OSD与用于备份该OSD上存储的对象的元数据的OSD,并将配置的对应关系存储至监视器。
可选地,在获取用于备份自身存储的对象的元数据的第二OSD时,获取单元41具体用于:
基于所述配置的对应关系从所述监视器获取用于备份自身存储的对象的元数据的第二OSD。
可选地,所述分布式存储***包括m个OSD;
在基于预设的配置规则配置所述分布式存储***中各OSD与用于备份该OSD上存储的对象的元数据的OSD时,所述配置单元具体用于:
将OSD n的数据分区上存储的对象的元数据存储在OSD n+1的备份元数据分区,其中,0≤n<m;
将OSD m的数据分区上存储的对象的元数据存储在OSD 0的备份元数据分区。
可选地,
标记单元40还用于,基于预设的第二周期,将已存储至本地的对象标记为元数据待备份状态;
针对所述已存储至本地的对象中的每一对象分别执行以下操作:
获取单元41还用于,获取一个对象的OID,存储位置信息,版本号和所属poll信息,并根据该一个对象的OID,存储位置信息,版本号和所属poll信息计算该一个对象的校验码;将获取到的该一个对象的OID,存储位置信息,对象版本号,对象所述poll信息和校验码作为该一个对象的第二备份元数据;
发送单元42还用于,将所述已存储至本地的对象的第二备份元数据发送至所述第二OSD,以使所述第二OSD将所述已存储至本地的对象的第二备份元数据存储至本地的备份元数据分区。
可选地,所述第二OSD将所述被标记为元数据待备份状态的对象的第一备份元数据存储至本地的备份元数据分区的第一文件中;
所述第二OSD将所述已存储至本地的对象的第二备份元数据存储至本地的备份元数据分区的第二文件中。
以上这些单元可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(Application Specific Integrated Circuit,简称ASIC),或,一个或多个微处理器(digital singnal processor,简称DSP),或,一个或者多个现场可编程门阵列(Field Programmable Gate Array,简称FPGA)等。再如,当以上某个单元通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(CentralProcessing Unit,简称CPU)或其它可以调用程序代码的处理器。再如,这些单元可以集成在一起,以片上***(system-on-a-chip,简称SOC)的形式实现。
综上可知,本申请实施例中,在确定目标对象存储至本地的数据分区时,将所述目标对象标记为元数据待备份状态;基于预设的第一周期,获取被标记为元数据待备份状态的对象的第一备份元数据,并获取用于备份自身存储的对象的元数据的第二OSD;将所述被标记为元数据待备份状态的对象的第一备份元数据发送至所述第二OSD,以使所述第二OSD将所述被标记为元数据待备份状态的对象的第一备份元数据存储至本地的备份元数据分区;在接收到所述第二OSD返回的备份完成指令时,将所述被标记为元数据待备份状态的对象标记为元数据备份完成状态。
采用本申请实施例提供的元数据备份方法,各OSD将自身存储的对象的元数据存储在本地的同时,将备份元数据备份至其它OSD,这样,即便OSD发生异常掉线而导致本地存储的对象的元数据完全损坏,仍可以根据被分在其它OSD上的备份元数据进行恢复,提高了元数据的可靠性。
进一步地,本申请实施例提供的元数据备份装置,从硬件层面而言,所述元数据备份装置的硬件架构示意图可以参见图5所示,所述元数据备份装置可以包括:存储器50和处理器51,
存储器50用于存储程序指令;处理器51调用存储器50中存储的程序指令,按照获得的程序指令执行上述方法实施例。具体实现方式和技术效果类似,这里不再赘述。
可选地,本申请还提供一种元数据备份装置,包括用于执行上述方法实施例的至少一个处理元件(或芯片)。
可选地,本申请还提供一种程序产品,例如计算机可读存储介质,该计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令用于使该计算机执行上述方法实施例。
这里,机器可读存储介质可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:RAM(RadomAccess Memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。
上述实施例阐明的***、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本申请的实施例可提供为方法、***、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可以由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其它可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其它可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
而且,这些计算机程序指令也可以存储在能引导计算机或其它可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或者多个流程和/或方框图一个方框或者多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其它可编程数据处理设备上,使得在计算机或者其它可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其它可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
Claims (14)
1.一种元数据备份方法,其特征在于,应用于分布式存储***的第一对象存储设备OSD,每一个OSD至少包括数据分区和备份元数据分区,所述方法包括:
在确定目标对象存储至本地的数据分区时,将所述目标对象标记为元数据待备份状态;
基于预设的第一周期,获取被标记为元数据待备份状态的对象的第一备份元数据,并获取用于备份自身存储的对象的元数据的第二OSD;
将所述被标记为元数据待备份状态的对象的第一备份元数据发送至所述第二OSD,以使所述第二OSD将所述被标记为元数据待备份状态的对象的第一备份元数据存储至本地的备份元数据分区;
在接收到所述第二OSD返回的备份完成指令时,将所述被标记为元数据待备份状态的对象标记为元数据备份完成状态。
2.如权利要求1所述的方法,其特征在于,所述获取被标记为元数据待备份状态的对象的第一备份元数据的步骤包括:
确定本地被标记为元数据待备份状态的各对象;
针对所述各对象中每一对象分别执行以下操作:
获取一个对象的OID,存储位置信息,版本号和所属poll信息,并根据该一个对象的OID,存储位置信息,版本号和所属poll信息计算该一个对象的校验码;将获取到的该一个对象的OID,存储位置信息,对象版本号,对象所述poll信息和校验码作为该一个对象的第一备份元数据。
3.如权利要求1所述的方法,其特征在于,所述方法还包括:
基于预设的配置规则配置所述分布式存储***中各OSD与用于备份该OSD上存储的对象的元数据的OSD,并将配置的对应关系存储至监视器。
4.如权利要求3所述的方法,其特征在于,所述获取用于备份自身存储的对象的元数据的第二OSD的步骤包括:
基于所述配置的对应关系从所述监视器获取用于备份自身存储的对象的元数据的第二OSD。
5.如权利要求3所述的方法,其特征在于,所述分布式存储***包括m个OSD;
所述基于预设的配置规则配置所述分布式存储***中各OSD与用于备份该OSD上存储的对象的元数据的OSD的步骤包括:
将OSD n的数据分区上存储的对象的元数据存储在OSD n+1的备份元数据分区,其中,0≤n<m;
将OSD m的数据分区上存储的对象的元数据存储在OSD 0的备份元数据分区。
6.如权利要求1-5任一项所述的方法,其特征在于,所述方法还包括:
基于预设的第二周期,将已存储至本地的对象标记为元数据待备份状态;
针对所述已存储至本地的对象中的每一对象分别执行以下操作:
获取一个对象的OID,存储位置信息,版本号和所属poll信息,并根据该一个对象的OID,存储位置信息,版本号和所属poll信息计算该一个对象的校验码;将获取到的该一个对象的OID,存储位置信息,对象版本号,对象所述poll信息和校验码作为该一个对象的第二备份元数据;
将所述已存储至本地的对象的第二备份元数据发送至所述第二OSD,以使所述第二OSD将所述已存储至本地的对象的第二备份元数据存储至本地的备份元数据分区。
7.如权利要求6所述的方法,其特征在于,所述第二OSD将所述被标记为元数据待备份状态的对象的第一备份元数据存储至本地的备份元数据分区的第一目录文件中;
所述第二OSD将所述已存储至本地的对象的第二备份元数据存储至本地的备份元数据分区的第二目录文件中。
8.一种元数据备份装置,其特征在于,应用于分布式存储***的第一对象存储设备OSD,每一个OSD至少包括数据分区和备份元数据分区,所述装置包括标记单元,获取单元和发送单元:
在确定目标对象存储至本地的数据分区时,所述标记单元将所述目标对象标记为元数据待备份状态;
所述获取单元,用于基于预设的第一周期,获取被标记为元数据待备份状态的对象的第一备份元数据,并获取用于备份自身存储的对象的元数据的第二OSD;
所述发送单元,将所述被标记为元数据待备份状态的对象的第一备份元数据发送至所述第二OSD,以使所述第二OSD将所述被标记为元数据待备份状态的对象的第一备份元数据存储至本地的备份元数据分区;
在接收到所述第二OSD返回的备份完成指令时,所述标记单元将所述被标记为元数据待备份状态的对象标记为元数据备份完成状态。
9.如权利要求8所述的装置,其特征在于,在获取被标记为元数据待备份状态的对象的第一备份元数据时,所述获取单元具体用于:
确定本地被标记为元数据待备份状态的各对象;
针对所述各对象中每一对象分别执行以下操作:
获取一个对象的OID,存储位置信息,版本号和所属poll信息,并根据该一个对象的OID,存储位置信息,版本号和所属poll信息计算该一个对象的校验码;将获取到的该一个对象的OID,存储位置信息,对象版本号,对象所述poll信息和校验码作为该一个对象的第一备份元数据。
10.如权利要求8所述的装置,其特征在于,所述装置还包括:
配置单元,用于基于预设的配置规则配置所述分布式存储***中各OSD与用于备份该OSD上存储的对象的元数据的OSD,并将配置的对应关系存储至监视器。
11.如权利要求10所述的装置,其特征在于,在获取用于备份自身存储的对象的元数据的第二OSD时,所述获取单元具体用于:
基于所述配置的对应关系从所述监视器获取用于备份自身存储的对象的元数据的第二OSD。
12.如权利要求10所述的装置,其特征在于,所述分布式存储***包括m个OSD;
在基于预设的配置规则配置所述分布式存储***中各OSD与用于备份该OSD上存储的对象的元数据的OSD时,所述配置单元具体用于:
将OSD n的数据分区上存储的对象的元数据存储在OSD n+1的备份元数据分区,其中,0≤n<m;
将OSD m的数据分区上存储的对象的元数据存储在OSD 0的备份元数据分区。
13.如权利要求8-12任一项所述的装置,其特征在于,所述标记单元还用于,基于预设的第二周期,将已存储至本地的对象标记为元数据待备份状态;
针对所述已存储至本地的对象中的每一对象分别执行以下操作:
所述获取单元还用于,获取一个对象的OID,存储位置信息,版本号和所属poll信息,并根据该一个对象的OID,存储位置信息,版本号和所属poll信息计算该一个对象的校验码;将获取到的该一个对象的OID,存储位置信息,对象版本号,对象所述poll信息和校验码作为该一个对象的第二备份元数据;
所述发送单元还用于,将所述已存储至本地的对象的第二备份元数据发送至所述第二OSD,以使所述第二OSD将所述已存储至本地的对象的第二备份元数据存储至本地的备份元数据分区。
14.如权利要求13所述的装置,其特征在于,所述第二OSD将所述被标记为元数据待备份状态的对象的第一备份元数据存储至本地的备份元数据分区的第一目录文件中;
所述第二OSD将所述已存储至本地的对象的第二备份元数据存储至本地的备份元数据分区的第二目录文件中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010063484.XA CN111444040B (zh) | 2020-01-20 | 2020-01-20 | 一种元数据备份方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010063484.XA CN111444040B (zh) | 2020-01-20 | 2020-01-20 | 一种元数据备份方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111444040A CN111444040A (zh) | 2020-07-24 |
CN111444040B true CN111444040B (zh) | 2022-05-27 |
Family
ID=71652516
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010063484.XA Active CN111444040B (zh) | 2020-01-20 | 2020-01-20 | 一种元数据备份方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111444040B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101013387A (zh) * | 2007-02-09 | 2007-08-08 | 华中科技大学 | 基于对象存储设备的负载平衡方法 |
CN101706805A (zh) * | 2009-10-30 | 2010-05-12 | 中国科学院计算技术研究所 | 对象存储方法及其*** |
CN103544081A (zh) * | 2013-10-23 | 2014-01-29 | 曙光信息产业(北京)有限公司 | 双元数据服务器的管理方法和装置 |
CN109753379A (zh) * | 2017-11-08 | 2019-05-14 | 阿里巴巴集团控股有限公司 | 快照数据备份、删除方法、装置及*** |
CN110287059A (zh) * | 2019-05-21 | 2019-09-27 | 广东九联科技股份有限公司 | 一种spi flash的多备份方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10503587B2 (en) * | 2017-06-30 | 2019-12-10 | Intel Corporation | Scrubbing disaggregated storage |
-
2020
- 2020-01-20 CN CN202010063484.XA patent/CN111444040B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101013387A (zh) * | 2007-02-09 | 2007-08-08 | 华中科技大学 | 基于对象存储设备的负载平衡方法 |
CN101706805A (zh) * | 2009-10-30 | 2010-05-12 | 中国科学院计算技术研究所 | 对象存储方法及其*** |
CN103544081A (zh) * | 2013-10-23 | 2014-01-29 | 曙光信息产业(北京)有限公司 | 双元数据服务器的管理方法和装置 |
CN109753379A (zh) * | 2017-11-08 | 2019-05-14 | 阿里巴巴集团控股有限公司 | 快照数据备份、删除方法、装置及*** |
CN110287059A (zh) * | 2019-05-21 | 2019-09-27 | 广东九联科技股份有限公司 | 一种spi flash的多备份方法 |
Non-Patent Citations (2)
Title |
---|
"The Integration of Shared Storages with the CephFS and Rados Gateway for Big Data Accessing";Jia-Yow Weng等;《2018 IEEE 42nd Annual Computer Software and Applications Conference (COMPSAC)》;20180622;第93-98页 * |
"基于Ceph文件***的元数据缓存备份";詹玲等;《计算机工程》;20170415;第43卷(第04期);第67-83页 * |
Also Published As
Publication number | Publication date |
---|---|
CN111444040A (zh) | 2020-07-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11030052B2 (en) | Data protection using checkpoint restart for cluster shared resources | |
US11397648B2 (en) | Virtual machine recovery method and virtual machine management device | |
US9367598B2 (en) | Merging an out of synchronization indicator and a change recording indicator in response to a failure in consistency group formation | |
US9098439B2 (en) | Providing a fault tolerant system in a loosely-coupled cluster environment using application checkpoints and logs | |
US8132043B2 (en) | Multistage system recovery framework | |
US20140215265A1 (en) | Data backup and recovery | |
CN105824846B (zh) | 数据迁移方法及装置 | |
CN110825562B (zh) | 数据备份方法、装置、***和存储介质 | |
US11748215B2 (en) | Log management method, server, and database system | |
US10990312B2 (en) | Method, apparatus, device and storage medium for processing data location of storage device | |
US9880776B1 (en) | Content-driven data protection method for multiple storage devices | |
CN110825758B (zh) | 一种交易处理的方法及装置 | |
CN111444040B (zh) | 一种元数据备份方法及装置 | |
CN113986450A (zh) | 一种虚拟机备份方法及装置 | |
CN111226200B (zh) | 为分布式应用创建一致性快照的方法、装置和分布式*** | |
CN110658989B (zh) | 用于备份存储垃圾收集的***和方法 | |
CN116578446B (zh) | 虚拟机备份方法、装置、***、电子设备及存储介质 | |
CN112988460B (zh) | 一种虚拟机的数据备份方法及装置 | |
CN117453454A (zh) | 数据备份方法、装置、计算机设备、介质及产品 | |
CN115686943A (zh) | 一种基于区块链的数据备份方法及装置 | |
CN115756521A (zh) | 云应用处理方法、装置、计算机设备、存储介质 | |
CN114968641A (zh) | 一种日志管理方法、装置、设备及机器可读存储介质 | |
CN115756953A (zh) | 一种基于区块链的数据备份方法及装置 | |
CN117608919A (zh) | 容灾方法、装置、计算机设备和存储介质 | |
CN117271206A (zh) | 基于时间点的数据库恢复方法、装置及分布式数据库*** |
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 |