一种基于元数据分类的贪婪预取型数据恢复系统及恢复方法与流程

文档序号:12124107阅读:212来源:国知局
一种基于元数据分类的贪婪预取型数据恢复系统及恢复方法与流程

本发明涉及去重备份系统中数据恢复相关的技术领域,具体涉及一种基于元数据分类的贪婪预取型数据恢复系统及恢复方法。



背景技术:

随着大数据时代的来临,数据量的迅猛增长给数据中心的有限存储空间带来了巨大挑战。重复数据删除技术大大降低了存储数据所需的磁盘开销和网络传输所需带宽,渐渐成为当今备份系统的一项关键数据缩减技术。去重备份系统存储数据的目的是为了以后能够及时的恢复,企业在磁盘出现故障或数据库相关文件损坏等灾难发生时如果其不能及时地恢复数据,所承受的损失将不可估量,数据备份也变得意义不大。由于逻辑连续的数据被物理分散在不同的磁盘位置,传统的去重方法产生的碎片严重影响了系统的恢复性能。之前存在的一些优化方法都是尝试在备份时利用重写算法来改进后期的恢复性能,然而重写算法自身存在的弊端就是必须以牺牲去重率的代价来获得更好的数据恢复性能,最终导致浪费磁盘空间的结果。并且传统的方法在备份完成后只会生成一份备份元数据以便后期恢复,导致系统在恢复过程中频繁地低效率访问磁盘上的元数据,影响了系统的恢复性能。



技术实现要素:

本发明的第一个目的是为了解决现有技术中的上述缺陷,提供一种基于元数据分类的贪婪预取型数据恢复系统,该系统在不牺牲去重率和充分利用硬件资源的前提下实现高效率数据恢复,同时在对备份数据去重时不需要对数据块进行重写操作,从而可以保证数据的去重率。

本发明的另一个目的是为了解决现有技术中的上述缺陷,提供一种基于元数据分类的贪婪预取型数据恢复方法。

本发明的第一个目的可以通过采取如下技术方案达到:

一种基于元数据分类的贪婪预取型数据恢复系统,所述数据恢复系统包括依次顺序连接的读元数据模块、块数据查找模块和恢复数据模块,

其中,所述读元数据模块用于并行地读取备份元数据信息,其中所述备份元数据信息存放在两个文件中,一个文件记录了备份中文件的逻辑信息,称作文件元数据,另一个文件则记录了块的相关信息,称作块元数据;

所述块数据查找模块用于提供基于内存中的LRU缓存的块的寻找功能,并负责管理涉及恢复备份的热数据;

所述恢复数据模块用于在本地磁盘重建所需数据;

当所述数据恢复系统收到恢复某一备份数据的请求,首先由所述读元数据模块从磁盘中打开该备份相应的备份元数据信息文件,通过文件元数据的内容,可以得知恢复该备份数据所需的块元数据,获取块的指纹和其所在的位置信息后,由所述块数据查找模块基于内存中的LRU缓存提供的块的寻找功能,根据每个块的指纹诱发一个块数据的读请求,通过块所在的容器序号,在所述数据恢复系统维持的LRU缓存中查找包含该块的容器,如果缓存命中,则填充内存中维持的队列中块数据,然后进入所述恢复数据模块,若缓存未命中,所述数据恢复系统将从容器池中找到相应的块数据,并且预取包含该块的容器到缓存,之后再进入所述恢复数据模块。

进一步地,所述文件元数据包括:备份的序号、备份所包含的文件个数、备份后数据存放的路径和路径名的长度以及备份中各个文件的名字、名字的长度、所包含的块的个数、文件的大小和文件ID号,所述块元数据包括:每个块的指纹、块所在的容器序号、块的大小。

进一步地,所述恢复数据模块中运行多个线程同时对同一个目录下建立多个不同的文件。

进一步地,所述文件ID号由备份序号、块元数据中的偏移和文件拆分后的块个数通过位移操作形成,所述块元数据中的偏移指的是每个诱发的读块元数据操作在块元数据文件中开始读操作的偏移。

进一步地,所述读元数据模块在读取备份元数据信息开始后首先把文件元数据全部预读到内存的LRU缓存中,然后根据其内的信息对块元数据进行贪婪读取。

进一步地,预读到内存的LRU缓存中的文件元数据被分成多个片段,每个片段中包含若干个文件的备份元数据信息,并且每个片段会诱发一个读块元数据的操作。

进一步地,通过所述文件ID号诱发并行的读块元数据操作。

进一步地,所述块数据查找模块在内存中开辟一个全局的LRU缓存,所述数据恢复系统内部共享一个缓存的机制,同时,当外部操作单元对LRU缓存写入共享缓存时,LRU缓存被加锁,其它模块不能对LRU缓存进行修改操作,必须等待缓存解锁后才能进行相关操作。

进一步地,所述读元数据模块、所述块数据查找模块和所述恢复数据模块为并行工作。

本发明的另一个目的可以通过采取如下技术方案达到:

一种基于元数据分类的贪婪预取型数据恢复方法,所述数据恢复方法包括:

S1、当数据恢复系统收到恢复某一备份数据的请求,读元数据模块从磁盘中打开该备份元数据信息文件,把备份元数据信息文件中文件元数据全部预读到内存的LRU缓存中,通过元数据文件中文件元数据的内容,得知恢复该备份所需的块元数据,获取块的指纹、块所在的容器序号、块的大小;

S2、对块元数据进行贪婪读取,预读到内存中的文件元数据被分成多个片段,每个片段中包含了多个文件的备份元数据信息,并且每个片段会诱发一个读块元数据的操作;

S3、通过块数据查找模块中基于内存中的LRU缓存提供的块的寻找功能,根据每个块的指纹诱发一个块数据的读请求,通过块所在的容器序号,在系统维持的缓存中查找包含该块的容器,如果缓存命中,则填充内存中维持的块数据队列,然后进入恢复数据模块;如果缓存未命中,从容器池中找到相应的块数据,并且预取包含该块的容器到缓存,之后再进入恢复数据模块;

S4、恢复数据模块指定一个恢复路径,所有的写数据单元在指定的恢复路径下建立各自的目录和文件进行重建所需数据。

本发明相对于现有技术具有如下的优点及效果:

(1)、本发明将备份元数据组织成文件元数据和块元数据,将文件元数据完全预取到内存后分段,然后对块元数据进行贪婪式预取,提高了数据恢复方法的恢复性能。

(2)、本发明相对于经典的重写算法而言,避免了牺牲去重率的现象发生,从而节约了磁盘存储开销。

(3)、本发明相对于传统的数据恢复方法而言,采用了并行的机制来减少系统的恢复时间。

附图说明

图1是本发明中公开的基于元数据分类的贪婪预取型数据恢复系统的结构示意图;

图2是本发明中备份元数据信息分类的组织结构图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例一

本实施例公开一种基于元数据分类的贪婪预取型数据恢复系统。

数据备份的目的就是为了恢复。由于逻辑连续的数据被物理分散在不同的磁盘位置,传统的去重方法产生的碎片严重影响了系统的恢复性能。之前存在的一些优化方法都是尝试在备份时利用重写算法来改进后期的恢复性能,然而重写算法自身存在的弊端就是必须以牺牲去重率的代价来获得更好的数据恢复性能,最终导致浪费磁盘空间的结果。并且传统的方法在备份完成后只会生成一份备份元数据以便后期恢复,导致系统在恢复过程中频繁地低效率访问磁盘上的元数据。

如图1所示,本实施例公开一种基于元数据分类的贪婪预取型数据恢复系统包括:读元数据模块、块数据查找模块、恢复数据模块。读元数据模块为数据恢复做好前期的准备工作,如并行地读取备份元数据信息。块数据查找模块基于内存中的LRU缓存提供了块的寻找功能,其负责管理部分涉及恢复备份的热数据。恢复数据模块负责在本地磁盘重建所需数据。

这三个模块在恢复过程中相互之间是并行地完成各自的工作。各模块各自独立完成需要完成地任务,并且模块之间也存在信息交互。

当系统收到恢复某一备份数据的请求,首先进入读元数据模块,其立即从磁盘中打开该备份相应的元数据文件,通过元数据文件的内容,可以得知恢复该备份具体需要哪些已存储的块信息,获取块的指纹和其所在的位置等信息后,紧接进入块数据查找模块,每个指纹诱发一个块数据的读请求,通过块的指纹,在系统维持的缓存中查找包含该块的容器,如果缓存命中,则填充内存中维持的队列中块数据,然后进入恢复数据模块。若缓存未命中,系统将从容器池中找到相应的块数据,并且预取包含该块的容器到缓存,之后再进入恢复数据模块。

其中,恢复数据模块中运行多个线程同时对同一个目录下建立多个不同的文件,每个线程都是独立地完成各自的任务,这样的恢复操作就不需要等各个数据恢复后再重新拼接数据,避免增加额外的计算和时间开销。

系统把备份元数据信息存放在文件中,并且把备份元数据信息一分为二,分布在两个文件中,一个文件记录了备份中文件的逻辑信息,即文件元数据,另一个文件则记录了块的相关信息,称作块元数据。文件元数据存放了备份的序号,该备份所包含的文件个数,备份后数据存放的路径和路径名的长度。由于一次备份中包含了多个文件,每个文件都被划分成块,所以文件元数据也依次存放了备份中各个文件的名字、名字的长度、所包含的块的个数、文件的大小和文件ID号。块元数据记录了每个块的指纹、块所在的容器序号、块的大小。

文件元数据和块元数据的关系是紧密相连的,在恢复过程中扮演了向导的角色,一旦其内的顺序错乱,尤其是块元数据中记录顺序错乱,备份数据将无法恢复。

文件元数据的大小小于块元数据的大小,因为备份中文件的个数是远远小于各个文件分块个数的总和。

如图2所示,本发明提出的分类元数据组织结构,在恢复开始时,把文件元数据全部预读到内存中,然后根据其内的信息对块元数据进行贪婪读取。完全预取文件元数据可以减少系统对磁盘的访问次数。为了加大贪婪读取数据的力度,预读到内存中的文件元数据被分成多个片段,一个片段中包含了多个文件的元数据信息,并且每个片段会诱发一个读块元数据的操作。为了让诱发的读块元数据操作并行,引进了文件ID号这个索引值。通过分析这个索引值,每个诱发的读块元数据操作就知道从块元数据文件的相应位置开始读取块的相关元数据信息。文件ID号是由备份序号、块元数据中的偏移和文件中包含的块个数通过位移操作形成,块元数据中的偏移指的是每个诱发的读块元数据操作在块元数据文件中开始读操作的偏移。图中可以看到,文件元数据显示了File1、Filem、Filen三个ID号,通过分析各个ID号,可以得知恢复文件File1需要读k1个块元数据信息、Filem需要读k2个、Filen需要读k3个,假设三者分别是S1、Sm、Sn三个不同的片段起始文件ID号,由于S1、Sm、Sn各自诱发的读块元数据操作分别对应于不同的文件描述符和文件结构体,读元数据操作之间互不干扰,加上ID号中偏移的信息,就可以在块元数据文件中的不同位置找到所需的块元数据信息。对块元数据的贪婪预取是以文件ID号为前提实现,如果没有这个索引值,每个读块元数据操作读取的信息将是杂乱无章的。

块元数据的贪婪预取,在恢复开始时,把文件元数据全部预读到内存的LRU缓存中,然后根据其内的信息对块元数据进行贪婪读取,为了加大贪婪读取数据的力度,预读到内存中的文件元数据被分成多个片段,一个片段中包含了多个文件的元数据信息,并且每个片段会诱发一个读块元数据的操作。

该数据恢复系统实现缓存共享,块数据查找模块通过在内存中开辟一个全局的LRU缓存,系统中所有操作模块共享一个缓存的机制,这样一来就可以充分地利用数据之间的局部性。

当外部操作单元对LRU缓存写入共享缓存时,LRU缓存被加锁,其它模块将不能对LRU缓存进行修改操作,必须等待缓存解锁后才能进行相关操作。

该数据恢复系统并行恢复,恢复过程中,读块的元数据、块数据查找、恢复数据之间是并行的,对于同一文件的恢复,它们的操作顺序是不能颠倒的。本系统把一个并行当做一个流水线。恢复过程开始时,系统将文件元数据完全预取到内存中,把文件元数据分成多个片段后,每个片段交给一个流水线处理,意为一个流水线可以完成多个文件的恢复。这样一来,系统就拥有多个流水线对应相应的片段进行恢复,流水线内部操作之间是并行的,而且流水线与流水线之间的操作也是并行的。

实施例二

本实施例公开了一种基于元数据分类的贪婪预取型数据恢复方法,该数据恢复方法具体包括以下步骤:

S1、当数据恢复系统收到恢复某一备份数据的请求,读元数据模块从磁盘中打开该备份元数据信息文件,把备份元数据信息文件中文件元数据全部预读到内存的LRU缓存中,通过元数据文件中文件元数据的内容,可以得知恢复该备份所需的块元数据,获取块的指纹、块所在的容器序号、块的大小。

S2、对块元数据进行贪婪读取,预读到内存中的文件元数据被分成多个片段,每个片段中包含了多个文件的备份元数据信息,并且每个片段会诱发一个读块元数据的操作;

S3、通过块数据查找模块中基于内存中的LRU缓存提供的块的寻找功能,根据每个块的指纹诱发一个块数据的读请求,通过块所在的容器序号,在系统维持的缓存中查找包含该块的容器,如果缓存命中,则填充内存中维持的块数据队列,然后进入恢复数据模块;如果缓存未命中,从容器池中找到相应的块数据,并且预取包含该块的容器到缓存,之后再进入恢复数据模块;

S4、恢复数据模块指定一个恢复路径,所有的写数据单元在指定的恢复路径下建立各自的目录和文件进行重建所需数据。

在块数据查找模块中开辟了一个全局的LRU缓存,所有操作单元共享一个缓存的机制,系统可以充分地利用数据之间的局部性,如当前单元为缓存添加的容器可以为另一单元提供相应块的数据。

综上所述,本实施例提出了一种基于元数据分类的贪婪预取型数据恢复方法,一方面将备份元数据分类组织成文件元数据和块元数据,合理的安排数据的存放;另一方面在不牺牲系统去重率和充分利用硬件资源的前提下,通过对元数据更加激进式的预取来有效提高恢复性能和吞吐量,基于贪婪预取的数据恢复方法能够有效地优化所需文件的恢复时间,符合现代化对数据存储的要求。

上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。

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