元数据备份方法、装置及设备、存储介质与流程

文档序号:22129200发布日期:2020-09-08 12:38阅读:187来源:国知局
元数据备份方法、装置及设备、存储介质与流程

本发明涉及大数据技术领域,尤其涉及的是一种元数据备份方法、装置及设备、存储介质。



背景技术:

分布式存储系统中,比如云存储系统中,包含多个存储节点和至少一个管理节点,其中,业务数据通常存储在多个存储节点中,业务数据的元数据会存储在管理节点中。分布式存储系统在执行业务过程中,可以根据管理节点中的元数据找到存储节点中相关的业务数据。

通常来说,在管理节点发生故障时,可能会导致元数据丢失,在此情况下,需要根据存储节点中的业务数据重新生成元数据,实现元数据的恢复。然而,存储节点中通常会存储大量的业务数据,所以上述方式中,根据业务数据重新生成元数据时,需要重新生成大量的元数据,恢复时间过长。

如果可以将管理节点中的元数据进行备份,则不需要根据业务数据重新生成元数据,可以缩短元数据的恢复时间,然而目前并没有对分布式存储系统中的元数据进行备份的相关技术。



技术实现要素:

有鉴于此,本发明提供一种元数据备份方法、装置及设备、存储介质,可实现元数据备份,从而缩短元数据恢复所需的时间。

本发明第一方面提供一种元数据备份方法,该方法应用于分布式存储系统中的管理节点,所述分布式存储系统还包括存储节点,该方法包括:

控制所述分布式存储系统中的各存储节点预留对应的用于备份元数据的存储空间;

依据各存储节点预留的存储空间确定虚拟空间池;

将所述分布式存储系统中至少一个管理节点存储的元数据备份至所述虚拟空间池。

根据本发明的一个实施例,所述控制所述分布式存储系统中的各存储节点预留对应的用于备份元数据的存储空间包括:

向所述分布式存储系统中的各存储节点下发预留指令,所述预留指令用于指示预留出用于备份元数据的存储空间,所述预留指令携带预留存储空间信息,以控制所述分布式存储系统中的各存储节点根据所述预留存储空间信息预留出对应的用于备份元数据的存储空间。

根据本发明的一个实施例,所述预留存储空间信息通过以下步骤获取:

接收外部输入的空间划分指令,所述空间划分指令携带所述预留存储空间信息。

根据本发明的一个实施例,所述将所述分布式存储系统中至少一个管理节点存储的元数据备份至所述虚拟空间池包括:

从所述分布式存储系统中的各管理节点存储的元数据中确定需备份的目标元数据;

从所述虚拟空间池中选择用于备份所述目标元数据的目标存储空间;

将所述目标元数据存储至所述目标存储空间。

根据本发明的一个实施例,从所述虚拟空间池中选择用于备份所述目标元数据的目标存储空间包括:

将所述目标元数据封装成指定格式的目标数据文件;

根据所述目标数据文件的大小从所述虚拟空间池中找出至少一个目标存储空间;所有目标存储空间中未被占用的剩余空间大小之和大于或等于所述目标数据文件的大小。

根据本发明的一个实施例,根据所述目标数据文件的大小从所述虚拟空间池中找出至少一个目标存储空间,包括:

检查所述虚拟空间池中所有存储空间的剩余空间大小之和是否小于所述目标数据文件的大小,如果是,从所述虚拟空间池中的各存储空间中查找到存储时间最早的文件并删除,并返回检查所述虚拟空间池中所有存储空间的剩余空间大小之和是否小于所述目标数据文件的大小的步骤;

如果否,根据所述目标数据文件的大小从所述虚拟空间池中找出至少一个目标存储空间。

根据本发明的一个实施例,所述将所述目标元数据存储至所述目标存储空间包括:

当目标存储空间的数量等于1时,将所述目标数据文件存储至所述目标存储空间;

当目标存储空间的数量大于1时,依据各目标存储空间中未被占用的剩余空间大小将所述目标数据文件分成多个文件块,每一目标存储空间中未被占用的剩余空间大小对应一个文件块,对应的文件块大小等于未被占用的剩余空间大小;将各个文件块分别存储至对应的目标存储空间中。

根据本发明的一个实施例,存储至所述目标存储空间的目标数据文件或者文件块的文件名包含所述目标数据文件的生成时间;

该方法进一步包括:

在管理节点存在元数据恢复需求时,从所述虚拟空间池的各存储空间中查找到与所述元数据恢复需求对应、且文件名满足条件的文件,所述条件是指文件名中的生成时间与当前时间之间的时间差最小;

从查找到的满足条件的文件中解析出元数据,并将解析出的元数据存储至存在所述元数据恢复需求的管理节点中。

本发明第二方面提供一种元数据备份装置,该装置应用于分布式存储系统中的管理节点,所述分布式存储系统还包括存储节点,该装置包括:

存储空间预留模块,用于控制所述分布式存储系统中的各存储节点预留对应的用于备份元数据的存储空间;

虚拟空间池确定模块,用于依据各存储节点预留的存储空间确定虚拟空间池;

元数据备份模块,用于将所述分布式存储系统中至少一个管理节点存储的元数据备份至所述虚拟空间池。

根据本发明的一个实施例,所述存储空间预留模块控制所述分布式存储系统中的各存储节点预留对应的用于备份元数据的存储空间时,具体用于:

向所述分布式存储系统中的各存储节点下发预留指令,所述预留指令用于指示预留出用于备份元数据的存储空间,所述预留指令携带预留存储空间信息,以控制所述分布式存储系统中的各存储节点根据所述预留存储空间信息预留出对应的用于备份元数据的存储空间。

根据本发明的一个实施例,所述预留存储空间信息通过以下模块获取:

外部指令输入模块,用于接收外部输入的空间划分指令,所述空间划分指令携带所述预留存储空间信息。

根据本发明的一个实施例,所述元数据备份模块将所述分布式存储系统中至少一个管理节点存储的元数据备份至所述虚拟空间池时,具体用于:

从所述分布式存储系统中的各管理节点存储的元数据中确定需备份的目标元数据;

从所述虚拟空间池中选择用于备份所述目标元数据的目标存储空间;

将所述目标元数据存储至所述目标存储空间。

根据本发明的一个实施例,所述元数据备份模块从所述虚拟空间池中选择用于备份所述目标元数据的目标存储空间时,具体用于:

将所述目标元数据封装成指定格式的目标数据文件;

根据所述目标数据文件的大小从所述虚拟空间池中找出至少一个目标存储空间;所有目标存储空间中未被占用的剩余空间大小之和大于或等于所述目标数据文件的大小。

根据本发明的一个实施例,根据所述目标数据文件的大小从所述虚拟空间池中找出至少一个目标存储空间,包括:

检查所述虚拟空间池中所有存储空间的剩余空间大小之和是否小于所述目标数据文件的大小,如果是,从所述虚拟空间池中的各存储空间中查找到存储时间最早的文件并删除,并返回检查所述虚拟空间池中所有存储空间的剩余空间大小之和是否小于所述目标数据文件的大小的步骤;

如果否,根据所述目标数据文件的大小从所述虚拟空间池中找出至少一个目标存储空间。

根据本发明的一个实施例,所述元数据备份模块将所述目标元数据存储至所述目标存储空间时,具体用于:

当目标存储空间的数量等于1时,将所述目标数据文件存储至所述目标存储空间;

当目标存储空间的数量大于1时,依据各目标存储空间中未被占用的剩余空间大小将所述目标数据文件分成多个文件块,每一目标存储空间中未被占用的剩余空间大小对应一个文件块,对应的文件块大小等于未被占用的剩余空间大小;将各个文件块分别存储至对应的目标存储空间中。

根据本发明的一个实施例,存储至所述目标存储空间的目标数据文件或者文件块的文件名包含所述目标数据文件的生成时间;

该装置进一步包括:

文件查找模块,用于在管理节点存在元数据恢复需求时,从所述虚拟空间池的各存储空间中查找到与所述元数据恢复需求对应、且文件名满足条件的文件,所述条件是指文件名中的生成时间与当前时间之间的时间差最小;

元数据恢复模块,用于从查找到的满足条件的文件中解析出元数据,并将解析出的元数据存储至存在所述元数据恢复需求的管理节点中。

本发明第三方面提供一种电子设备,包括处理器及存储器;所述存储器存储有可被处理器调用的程序;其中,所述处理器执行所述程序时,实现如前述实施例所述的元数据备份方法。

本发明第四方面提供一种机器可读存储介质,其上存储有程序,该程序被处理器执行时,实现如前述实施例所述的元数据备份方法。

本发明实施例具有以下有益效果:

本发明实施例中,通过在分布式存储系统中的各存储节点预留存储空间,可以将该系统中的管理节点存储的元数据备份在预留的存储空间中,如此,在需要进行元数据恢复时,可以从分布式存储系统的存储节点中获取备份的元数据,无需根据存储节点中存储的业务数据重新生成元数据,可以大大缩短元数据的恢复时间,可以避免存储节点的处理资源因进行元数据恢复而被持续占用、导致影响存储业务的问题,而且,管理节点存储的元数据备份在同一分布式存储系统的存储节点中,就无需引入额外的存储环境,可增强业务数据的健壮性。

附图说明

图1是本发明一实施例的元数据备份方法的流程示意图;

图2是本发明一实施例的应用场景的示意图;

图3是本发明一实施例的元数据备份装置的结构框图;

图4是本发明一实施例的电子设备的结构框图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。

在本发明使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本发明可能采用术语第一、第二、第三等来描述各种器件,但这些信息不应限于这些术语。这些术语仅用来将同一类型的器件彼此区分开。例如,在不脱离本发明范围的情况下,第一器件也可以被称为第二器件,类似地,第二器件也可以被称为第一器件。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

为了使得本发明的描述更清楚简洁,下面对本发明中的一些技术术语进行解释:

元数据(metadata),又称中介数据、中继数据,用于描述数据的数据(dataaboutdata),主要是描述数据属性(property)的信息,用来支持如指示数据的存储位置、数据大小等功能。

本发明实施例中,通过在分布式存储系统中的各存储节点预留存储空间,可以将该系统中的管理节点存储的元数据备份在预留的存储空间中,如此,在需要进行元数据恢复时,可以从分布式存储系统的存储节点中获取备份的元数据,无需根据存储节点中存储的业务数据重新生成元数据,可以大大缩短元数据的恢复时间,可以避免存储节点的处理资源因进行元数据恢复而被持续占用、导致影响存储业务的问题,而且,管理节点存储的元数据备份在同一分布式存储系统的存储节点中,就无需引入额外的存储环境,可增强业务数据的健壮性

本发明实施例中,分布式存储系统可以为云存储系统,当然,具体不限于此,其他包含管理节点和存储节点的分布式存储系统同样适用。

下面对本发明实施例的元数据备份方法进行更具体的描述,但不应以此为限。

在一个实施例中,参看图1,示出了本发明实施例的一种元数据备份方法,该方法应用于分布式存储系统中的管理节点,所述分布式存储系统还包括存储节点,该方法可以包括以下步骤:

s100:控制所述分布式存储系统中的各存储节点预留对应的用于备份元数据的存储空间;

s200:依据各存储节点预留的存储空间确定虚拟空间池;

s300:将所述分布式存储系统中至少一个管理节点存储的元数据备份至所述虚拟空间池。

本发明实施例中,元数据备份方法的执行主体为分布式存储系统中的管理节点。分布式存储系统中可以包含一个管理节点;或者可以包含多个管理节点,这些管理节点可以构成管理集群。

在分布式存储系统包括多个管理节点时,可以由任一管理节点来执行上述的元数据备份方法;或者,为了避免各管理节点之间因产生不必要的竞争而导致资源浪费,可以从所有管理节点中选举出一个主管理节点,通过主管理节点执行上述的元数据备份方法,具体选举方式不限。

可选的,可以轮流将不同的管理节点选举为主管理节点,每个管理节点担任主管理节点这一角色一段时间。

比如,参看图2,分布式存储系统可以包括:管理节点m1-m3、以及存储节点s1-s3。当然图中仅是示意,实际可以有更多的管理节点和/或存储节点。其中,管理节点m1-m3构成管理集群,管理节点m2被选举为主管理节点,因而可以由管理节点m2来执行上述步骤s100-s300以实现上述的元数据备份方法。

步骤s100中,控制所述分布式存储系统中的各存储节点预留对应的用于备份元数据的存储空间。

一般来说,存储节点中的所有空间都是用于存储业务数据的。但是,本实施例中,控制各存储节点预留对应的存储空间,这部分预留的存储空间可以用于存储需备份的元数据。换言之,本实施例中,分布式存储系统中的存储节点不仅可以用于存储业务数据,还可以用于存储被备份的元数据。

每个存储节点上一般有多个磁盘,当然,也并不排除存储节点仅包含一个磁盘的情况,具体不做限定。控制各存储节点预留对应的存储空间时,可以控制存储节点从每个磁盘中划分出一部分作为一个存储空间。

优选来说,可以在每个磁盘的头部或尾部划分出一部分空间作为存储空间。具体来说,如果在磁盘的中间划分出存储空间,需要确定存储空间的起始地址和结束地址,定位相对复杂;而在头部或尾部划分出存储空间,只需要确定存储空间的结束地址、或起始地址即可,定位相对简单。

比如,可以在每个磁盘的尾部划分出空间大小占磁盘总空间大小为0.1%的空间作为对应的存储空间。继续参看图2,存储节点s1上有六个磁盘s11-s16,在每个磁盘的尾部划分出0.1%的空间作为存储空间;存储节点s2上有六个磁盘s21-s26,在每个磁盘的尾部划分出0.1%的空间作为存储空间;存储节点s3上有六个磁盘s31-s36,在每个磁盘的尾部划分出0.1%的空间作为存储空间。

当然,上述划分方式并不作为限制,可以根据需要从存储节点中确定出所需的存储空间,只要保证划分出的存储空间能够满足备份元数据的需求即可。

步骤s200中,依据各存储节点预留的存储空间确定虚拟空间池。

可以将各存储节点预留的存储空间组成为虚拟空间池。虚拟空间池中可以包含多个存储空间,这些存储空间分布于分布式存储系统的各个存储节点中。

可以在管理节点中记录虚拟空间池中每一存储空间的空间信息。空间信息可以包含存储空间的空间标识id、剩余空间大小、存储空间所在存储节点的节点标识等。这些空间信息可以记录在管理节点设置的空间信息表中,后续在备份元数据时可以参考空间信息表中的空间信来实现。

步骤s300中,将所述分布式存储系统中至少一个管理节点存储的元数据备份至所述虚拟空间池。

在分布式存储系统包含多个管理节点的情况下,所有管理节点可以共同维护一个数据库,元数据可以存储在该数据库中,该数据库被分成多个分库,不同管理节点上设置不同分库,所有管理节点中的分库组成该数据库,在此情况下,可以从所有管理节点的分库中获取元数据备份至虚拟空间池。

或者,在分布式存储系统包含多个管理节点的情况下,各个管理节点也可以各自设置有数据库,各个管理节点的数据库中的数据是一致的,每一个管理节点的数据库存储了全量的元数据(所有存储节点存储的业务数据的元数据),在此情况下,可以从任一管理节点的数据库中获取元数据备份至虚拟空间池。

可以利用备份工具从至少一个管理节点中导出需备份的元数据,备份工具不限,具有数据导出功能即可。当然,获取需备份的元数据的方式不限。

可以将全量的元数据进行备份;或者,由于数据库中元数据的数据量很大,可以对数据库中的元数据以表为单位进行细化备份,将一个表中的所有元数据进行备份。当然,具体需要备份的元数据不限于此,可以根据需要而定。

在将所述分布式存储系统中至少一个管理节点存储的元数据备份至所述虚拟空间池时,管理节点可以调用本节点的写文件接口api将元数据写入到虚拟空间池中,以实现元数据的备份。

本实施例中,从分布式存储系统的存储节点中预留出一些存储空间并将其组成为虚拟存储池,可以将同一分布式存储系统的管理节点中的元数据备份到该虚拟空间池中,在需要进行元数据恢复时,可以从虚拟空间池中恢复元数据,无需根据存储节点中的业务数据重新生成元数据,可以大大缩短元数据的恢复时间,而且,将元数据备份在管理节点所在的分布式存储系统的存储节点中,无需引入额外的分布式存储环境。

此外,由于元数据被备份在存储节点预留的存储空间中,所以可以借助存储节点的存储特性,所有存储及读取的业务逻辑可以完全复用存储节点的业务逻辑,实现方式更简单,且成本低。

在一个实施例中,步骤s100中,所述控制所述分布式存储系统中的各存储节点预留对应的用于备份元数据的存储空间,可以包括以下步骤:

s101:向所述分布式存储系统中的各存储节点下发预留指令,所述预留指令用于指示预留出用于备份元数据的存储空间,所述预留指令携带预留存储空间信息,以控制所述分布式存储系统中的各存储节点根据所述预留存储空间信息预留出对应的用于备份元数据的存储空间。

预留存储空间信息可以指示需预留的存储空间的空间大小,比如可以为需预留的存储空间的空间大小在一个磁盘的总空间大小中的占比,具体不限于此。

管理节点确定存储空间信息后,可以将预留存储空间信息携带在预留指令中下发给所述分布式存储系统中的各存储节点。

各存储节点收到预留指令后,可以立即依据预留指令中的预留存储空间信息对本地存储空间进行划分;或者,可以先保存预留指令中的预留存储空间信息,后续在需要进行格式化时,再依据预留指令中的预留存储空间信息对本地磁盘进行划分,具体不做限定。

存储节点对本地磁盘进行划分时,可以将至少一个磁盘的空间划分为用户空间和存储空间,该存储空间即预留的用于备份元数据的存储空间。之后,可以为存储空间和用户空间设置对应的空间id,并对存储空间和用户空间进行格式化。

空间id可以唯一地表征对应的空间。为了区分用户空间和存储空间,可以在存储空间对应的空间id中设置表征存储空间的关键词,比如存储空间对应的空间id可以包含“backup”(备份)这一关键词,当然,此处只是举例,具体不限于此,只要能够区分用户空间和存储空间即可。

各存储节点可以将本存储节点中各磁盘的存储空间和用户空间对应的空间id上传给管理节点。当然,除了空间id,还可以上传其他的空间信息,比如还可以包括:剩余空间大小等。

管理节点接收到任一空间id时,可以检查该空间id中是否存在表征存储空间的关键字,如果是,确定该空间id对应的空间为存储空间,并将空间id以及其他信息(比如存储空间的剩余空间大小、存储空间所在的设备标识等)进行记录,比如记录在管理节点设置的空间信息表中;否则,确定该空间id对应的空间为用户空间,可以将用户空间的空间信息展示在客户端,供用户根据业务情况使用,或者可以进行其他的处理。

在一个实施例中,所述预留存储空间信息通过以下步骤获取:

s102:接收外部输入的空间划分指令,所述空间划分指令携带所述预留存储空间信息。

在管理集群被部署完成后,存储节点可以上线。用户可以通过客户端将空间划分指令发送给管理节点,空间划分指令携带所述预留存储空间信息。

本实施例中,预留存储空间信息由用户确定,可以保证划分出的存储空间满足元数据备份的需求。当然,上述方式并不作为限制,预留存储空间信息也可以通过其他方式确定。

在一个实施例中,步骤s300中,所述将所述分布式存储系统中至少一个管理节点存储的元数据备份至所述虚拟空间池,可以包括以下步骤:

s301:从所述分布式存储系统中的各管理节点存储的元数据中确定需备份的目标元数据;

s302:从所述虚拟空间池中选择用于备份所述目标元数据的目标存储空间;

s303:将所述目标元数据存储至所述目标存储空间。

本实施例中,需备份的目标元数据可以是各管理节点存储的所有元数据,或者,可以是其中一个或几个管理节点存储的所有元数据,或者可以根据需要从各管理节点存储的元数据中选择出部分的元数据。当然,目标元数据具体不限于此,可以根据需要确定,比如可以由用户选择或根据元数据的生成时间来确定等。

虚拟空间池中包含多个存储空间,可以从中选择出用于备份目标元数据的目标存储空间,选择方式不限,比如可以随机选择一个或几个存储空间作为目标存储空间,只要能够容纳所有目标元数据即可。

确定出目标元数据和目标存储空间后,将目标元数据存储到目标存储空间。比如,可以将目标元数据和目标存储空间对应的空间id发送给目标存储空间所在的存储节点,以由存储节点将收到的目标元数据存储到收到的空间id对应的目标存储空间。

在一个实施例中,步骤s302中,从所述虚拟空间池中选择用于备份所述目标元数据的目标存储空间,可以包括以下步骤:

s3021:将所述目标元数据封装成指定格式的目标数据文件;

s3022:根据所述目标数据文件的大小从所述虚拟空间池中找出至少一个目标存储空间;所有目标存储空间中未被占用的剩余空间大小之和大于或等于所述目标数据文件的大小。

一般来说,元数据的格式是多样的,所以不同的目标元数据可能有不同的格式,这种情况下,不便于对目标元数据直接进行传输。

因此,步骤s3021中,在传输之前,可以将目标元数据封装成指定格式的目标数据文件,比如采用打包方式将零碎的目标元数据进行统一封装,更方便传输。

具体来说,可以采用tar命令(一种打包命令)实现目标元数据的打包,得到二进制的tar格式的目标数据文件。当然,具体封装方式不限,只要可以将目标元数据封装成指定格式的目标数据文件即可。

在得到目标数据文件后,可以计算目标数据文件的大小。此外,还可以根据目标数据文件的大小和目标数据文件的生成时间重新命名目标数据文件。比如,目标数据文件的文件名可以包含目标数据文件的生成时间。如此,在后续需要确定目标数据文件的大小、或者生成时间时,可以直接从文件名中获取,获取方式更便捷。当然,目标数据文件的大小、生成时间等与目标数据文件相关的信息,也可以通过其他方式携带在目标数据文件中,比如,携带在目标数据文件的指定字段中,具体不限于此。

接着,在步骤s3022中,根据所述目标数据文件的大小从所述虚拟空间池中找出至少一个目标存储空间,保证所有目标存储空间中未被占用的剩余空间大小之和大于或等于所述目标数据文件的大小,从而使得所有目标存储空间可以容纳所有目标元数据。

在一个实施例中,步骤s3022中,根据所述目标数据文件的大小从所述虚拟空间池中找出至少一个目标存储空间,可以包括以下步骤:

s30221:检查所述虚拟空间池中所有存储空间的剩余空间大小之和是否小于所述目标数据文件的大小,如果是,从所述虚拟空间池中的各存储空间中查找到存储时间最早的文件并删除,并返回检查所述虚拟空间池中所有存储空间的剩余空间大小之和是否小于所述目标数据文件的大小的步骤;

s30222:如果否,根据所述目标数据文件的大小从所述虚拟空间池中找出至少一个目标存储空间。

目标数据文件的大小可以是在确定目标存储空间时计算出的,也可以是在重命名目标数据文件的文件名时计算出的。当然,目标数据文件的大小也可以通过其他方式得到,具体方式不限。

步骤s30221中,可以统计所述虚拟空间池中所有存储空间的剩余空间大小之和,具体可以统计管理节点设置的空间信息表中记录的各存储空间的剩余空间大小,得到剩余空间大小之和。如果剩余空间大小之和小于目标数据文件的大小,说明当前的虚拟空间池容不下目标数据文件,此时可以从虚拟空间池中删除存储时间最早的文件(比如可以是文件名中的生成时间最早的文件),删除之后再返回执行所述检查所述虚拟空间池中所有存储空间的剩余空间大小之和是否小于所述目标数据文件的大小的步骤。

步骤s30222中,如果剩余空间大小之和大于或等于目标数据文件的大小,说明当前的虚拟空间池容得下目标数据文件,从虚拟空间池中选择至少一个目标存储空间,所有目标存储空间的剩余空间大小之和大于或等于所述目标数据文件的大小。

具体来说,步骤s30222中,根据所述目标数据文件的大小从所述虚拟空间池中找出至少一个目标存储空间时,可以包括:

对空间信息表中的空间信息按照存储空间的剩余空间大小从大到小进行排序;

遍历排序后的空间信息,将遍历到的空间信息中的空间id对应的存储空间确定为目标存储空间;

计算将遍历到的空间信息中的剩余空间大小与累加大小(遍历前设置累加大小为0)进行累加,得到当前的累加大小,如果当前的累加大小大于或等于目标数据文件的大小,则结束遍历,否则,继续遍历下一个空间信息。

通过上述遍历的方式,可以选择出所有剩余空间大小之和大于或等于所述目标数据文件的大小的目标存储空间。

当然,具体选择方式不限于此,只要保证所有目标存储空间的剩余空间大小之和大于或等于所述目标数据文件的大小即可。

在一个实施例中,步骤s303中,所述将所述目标元数据存储至所述目标存储空间包括:

s3031:当目标存储空间的数量等于1时,将所述目标数据文件存储至所述目标存储空间;

s3032:当目标存储空间的数量大于1时,依据各目标存储空间中未被占用的剩余空间大小将所述目标数据文件分成多个文件块,每一目标存储空间中未被占用的剩余空间大小对应一个文件块,对应的文件块大小等于未被占用的剩余空间大小;将各个文件块分别存储至对应的目标存储空间中。

管理节点中元数据的数据量是会发生动态变化的,并且,虚拟空间池中各存储空间的剩余空间大小也是会发生动态变化的,所以,根据所述目标数据文件的大小从虚拟空间池中找出的目标存储空间,有可能是一个,也有可能是多个。

在找出的目标存储空间的数量等于1时,说明该目标存储空间可以完整地容纳目标数据文件,因而将所述目标数据文件存储至该目标存储空间中。具体来说,可以通过写文件接口将目标数据文件、及目标存储空间的空间id发送给该目标存储空间所在的存储节点,以使该存储节点根据空间id定位目标存储空间,并将目标数据文件存储至目标存储空间中。

管理节点将目标数据文件发送给存储节点后,可以删除本地的目标数据文件,并更新空间信息表中目标存储空间的剩余空间大小,具体更新为目标存储空间在存储目标数据文件之前的剩余空间大小与目标数据文件的大小之差。

在找出的目标存储空间的数量大于1时,说明目标数据文件相对于一个目标存储空间来说太大,一个目标存储空间存储不下,此时,可以根据各个目标存储空间的剩余空间大小将目标数据文件分成多个文件块,文件块的数量可以与目标存储空间的数量相同,一个文件块对应于一个目标存储空间,不同文件块与不同目标存储空间对应、且每一文件块的大小小于或等于对应目标存储空间的剩余空间大小,将各个文件块分别存储至对应的目标存储空间中。

比如,管理节点找出了两个目标存储空间a1和a2,则将目标数据文件分成两个文件块b1和b2,文件块b1与目标存储空间a1对应、且文件块b1的大小小于或等于目标存储空间a1,文件块b2与目标存储空间a2对应、且文件块b2的大小小于或等于目标存储空间a2;管理节点将文件块b1、及目标存储空间a1的空间id发送给该目标存储空间a1所在的存储节点,以使该存储节点根据空间id定位目标存储空间a1,并将文件块b1存储至目标存储空间a1中;管理节点将文件块b2、及目标存储空间a2的空间id发送给该目标存储空间a2所在的存储节点,以使该存储节点根据空间id定位目标存储空间a2,并将文件块b2存储至目标存储空间a2中。

其中,文件块的文件名可以包含目标数据文件的文件名、及文件块的序号等。当然,具体不限于此,比如文件块的文件名还可以包含文件块的大小。

管理节点将文件块发送给存储节点后,可以删除本地的文件块,并更新空间信息表中目标存储空间的剩余空间大小,具体更新为目标存储空间在存储对应的文件块之前的剩余空间大小与文件块的大小之差。

在一个实施例中,存储至所述目标存储空间的目标数据文件或者文件块的文件名包含所述目标数据文件的生成时间;

该方法进一步包括以下步骤:

s400:在管理节点存在元数据恢复需求时,从所述虚拟空间池的各存储空间中查找到与所述元数据恢复需求对应、且文件名满足条件的文件,所述条件是指文件名中的生成时间与当前时间之间的时间差最小;

s500:从查找到的满足条件的文件中解析出元数据,并将解析出的元数据存储至存在所述元数据恢复需求的管理节点中。

目标数据文件被完整存储在同一存储空间时,目标数据文件的文件名包含目标数据文件的生成时间。目标数据文件被分成多个文件块存储在不同存储空间时,各个文件块的文件名均可包含该目标数据文件的生成时间,换言之,这些文件块的文件名中的生成时间相同。

在管理节点存在元数据恢复需求时,这管理节点可以是执行元数据备份方法的管理节点,也可以是其他管理节点,或者分布式存储系统中所有管理节点,具体不限。

在此情况下,可以从虚拟空间池的各存储空间中查找到与所述元数据恢复需求对应、且文件名满足条件的文件。找出的文件的数量可以等于1或者大于1,如果数量等于1,则说明该文件就是一个完整的数据文件;如果数量大于1,则说明这些文件是由同一数据文件分成的多个文件块,这些文件的文件名包含该数据文件的生成时间。

找出的文件的文件名中的生成时间与当前时间之间的时间差最小,也就是说,找出的文件是存储时间最晚的数据文件或文件块,也就是包含了最新备份的元数据,是能够满足元数据恢复需求的元数据。

因此,从查找到的满足条件的文件中解析出元数据,并将解析出的元数据存储至存在所述元数据恢复需求的管理节点中,从而满足管理节点的元数据恢复需求。

本发明还提供一种元数据备份装置,该装置应用于分布式存储系统中的管理节点,所述分布式存储系统还包括存储节点。

在一个实施例中,参看图3,该装置100包括:

存储空间预留模块101,用于控制所述分布式存储系统中的各存储节点预留对应的用于备份元数据的存储空间;

虚拟空间池确定模块102,用于依据各存储节点预留的存储空间确定虚拟空间池;

元数据备份模块103,用于将所述分布式存储系统中至少一个管理节点存储的元数据备份至所述虚拟空间池。

在一个实施例中,所述存储空间预留模块控制所述分布式存储系统中的各存储节点预留对应的用于备份元数据的存储空间时,具体用于:

向所述分布式存储系统中的各存储节点下发预留指令,所述预留指令用于指示预留出用于备份元数据的存储空间,所述预留指令携带预留存储空间信息,以控制所述分布式存储系统中的各存储节点根据所述预留存储空间信息预留出对应的用于备份元数据的存储空间。

在一个实施例中,所述预留存储空间信息通过以下模块获取:

外部指令输入模块,用于接收外部输入的空间划分指令,所述空间划分指令携带所述预留存储空间信息。

在一个实施例中,所述元数据备份模块将所述分布式存储系统中至少一个管理节点存储的元数据备份至所述虚拟空间池时,具体用于:

从所述分布式存储系统中的各管理节点存储的元数据中确定需备份的目标元数据;

从所述虚拟空间池中选择用于备份所述目标元数据的目标存储空间;

将所述目标元数据存储至所述目标存储空间。

在一个实施例中,所述元数据备份模块从所述虚拟空间池中选择用于备份所述目标元数据的目标存储空间时,具体用于:

将所述目标元数据封装成指定格式的目标数据文件;

根据所述目标数据文件的大小从所述虚拟空间池中找出至少一个目标存储空间;所有目标存储空间中未被占用的剩余空间大小之和大于或等于所述目标数据文件的大小。

在一个实施例中,根据所述目标数据文件的大小从所述虚拟空间池中找出至少一个目标存储空间,包括:

检查所述虚拟空间池中所有存储空间的剩余空间大小之和是否小于所述目标数据文件的大小,如果是,从所述虚拟空间池中的各存储空间中查找到存储时间最早的文件并删除,并返回检查所述虚拟空间池中所有存储空间的剩余空间大小之和是否小于所述目标数据文件的大小的步骤;

如果否,根据所述目标数据文件的大小从所述虚拟空间池中找出至少一个目标存储空间。

在一个实施例中,所述元数据备份模块将所述目标元数据存储至所述目标存储空间时,具体用于:

当目标存储空间的数量等于1时,将所述目标数据文件存储至所述目标存储空间;

当目标存储空间的数量大于1时,依据各目标存储空间中未被占用的剩余空间大小将所述目标数据文件分成多个文件块,每一目标存储空间中未被占用的剩余空间大小对应一个文件块,对应的文件块大小等于未被占用的剩余空间大小;将各个文件块分别存储至对应的目标存储空间中。

在一个实施例中,存储至所述目标存储空间的目标数据文件或者文件块的文件名包含所述目标数据文件的生成时间;

该装置进一步包括:

文件查找模块,用于在管理节点存在元数据恢复需求时,从所述虚拟空间池的各存储空间中查找到与所述元数据恢复需求对应、且文件名满足条件的文件,所述条件是指文件名中的生成时间与当前时间之间的时间差最小;

元数据恢复模块,用于从查找到的满足条件的文件中解析出元数据,并将解析出的元数据存储至存在所述元数据恢复需求的管理节点中。

上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元。

本发明还提供一种电子设备,包括处理器及存储器;所述存储器存储有可被处理器调用的程序;其中,所述处理器执行所述程序时,实现如前述实施例中所述的元数据备份方法。

本发明元数据备份装置的实施例可以应用在电子设备上。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在电子设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图4所示,图4是本发明根据一示例性实施例示出的元数据备份装置100所在电子设备的一种硬件结构图,除了图4所示的处理器510、内存530、接口520、以及非易失性存储器540之外,实施例中装置100所在的电子设备通常根据该电子设备的实际功能,还可以包括其他硬件,对此不再赘述。

本发明还提供一种机器可读存储介质,其上存储有程序,该程序被处理器执行时,实现如前述实施例中任意一项所述的元数据备份方法。

本发明可采用在一个或多个其中包含有程序代码的存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。机器可读存储介质包括永久性和非永久性、可移动和非可移动媒体,可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。机器可读存储介质的例子包括但不限于:相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1