一种将文件导出到磁带的方法和装置制造方法

文档序号:6516691阅读:394来源:国知局
一种将文件导出到磁带的方法和装置制造方法
【专利摘要】本发明公开了一种将文件导出到磁带的方法和装置,所述方法用于将以重删数据的形式保存的至少两个原始文件导出至磁带,所述重删数据包括存根文件集、单一实例库、以及指纹库。所述方法包括:从所述存根文件集中选出至少一个要导出至磁带的存根文件组成存根文件子集;将所述存根文件子集以及所述子单一实例库导出至一个磁带;以及在所述存根文件集包括尚未导出至磁带的存根文件的情况下,重复执行前述两个步骤。根据本发明实施例的方法能够仍然以重删数据的形式保存原始文件,也就是说维持了数据重删的价值,节约了磁带的存储空间,并且通过保证重删域在同一个磁带里,可以保证快速恢复并读取原始文件。
【专利说明】一种将文件导出到磁带的方法和装置
【技术领域】
[0001 ] 本发明涉及数据存储领域,尤其涉及一种将文件导出到磁带的方法和装置。
【背景技术】
[0002]重复数据删除技术是指,把文件分成一个个的数据块,对每个数据块计算一个指纹,并和已经存在的指纹进行对比;如果这个指纹已经存在,则说明这个数据块已经存在了,就不需要再保存了,只需要将该数据块的引用计数加一,以说明该数据块又被多引用了一次;如果这个指纹不存在,则说明这个数据块是唯一的,这时就需要把这个指纹和对应的数据块保存起来。
[0003]在进行重复数据删除以后,存储系统里通常会形成包括以下三个部分的重删数据。第一个部分是用于存放数据块的单一实例库(Single Instance Repository,缩写:SIR)。第二个部分是指纹库,用于存放所有的指纹以及指纹对应的数据块的计数信息。第三个部分是存根文件,用于保存每个文件划分出的数据块的指纹以及该指纹对应的数据块的位置信息。
[0004]重复数据删除可以极大地节省用以保存文件的资源和空间。但为了进行长期归档,通常还需要将文件保存在磁带介质里。在现有技术中,将以重删数据形式保存的文件导出至磁带的一种方法是,把存根文件复原为原始文件再备份到磁带里去,也即在将重删数据导出到磁带时进行数据还原。很显然,这种方法失去了重删数据的特性,需要占用大量数据空间和维护资源。
[0005]现有技术中将以重删数据形式保存的文件导出至磁带的另一种方法是,直接将重删数据导出到磁带中。这种方法虽然保持了重删数据的特性,但由于未考虑磁带的物理特性,将导致从磁带恢复原始文件非常耗时低效。具体而言,磁带的顺序操作模式决定了要想获得高性能,就需要尽可能顺序读写所有数据,以尽量避免倒带操作。并且,磁带库通常只有一定数量的驱动器,一般无法做到所有磁带同时在线。在从磁带或磁带库恢复原始文件时,除了要从磁带中读出存根文件,还要读出文件所引用的数据块。而这些数据块可能存放于多个磁带,使得恢复一个原始文件要涉及多个磁带的加载、移出、读数据和倒带操作,所消耗的时间及资源浪费将是令人无法接受的。

【发明内容】

[0006]抟术问是页
[0007]有鉴于此,本发明要解决的技术问题是,如何以重复数据删除的形态将存储服务器中备份的文件导出到磁带系统,并能够保证从磁带系统中可以快速恢复文件。
[0008]解决方案
[0009]为了解决上述技术问题,根据本发明的一实施例,提供了一种将文件导出到磁带的方法,用于将以重删数据的形式保存的至少两个原始文件导出至磁带,所述重删数据包括存根文件集、单一实例库、以及指纹库,所述单一实例库包括从各所述原始文件划分出的所有单一的数据块,所述存根文件集包括分别与各所述原始文件对应的至少两个存根文件,各所述存根文件包括至少一个指纹数据,所述指纹数据包括指纹和位置信息,所述指纹用于标识从与所述存根文件对应的原始文件划分出的数据块,所述位置信息表示与所述指纹数据对应的数据块在所述单一实例库中的位置,所述指纹库包括各所述指纹及其引用计数,所述指纹的引用计数表示引用所述指纹标识的数据块的存根文件的个数。
[0010]所述将文件导出到磁带的方法包括:从所述存根文件集中选出至少一个要导出至磁带的存根文件组成存根文件子集,其中,所述存根文件子集以及与所述存根文件子集对应的子单一实例库的总数据量不大于一个磁带的容量,所述子单一实例库包括被所述存根文件子集中的存根文件引用的所有单一的数据块;将所述存根文件子集以及所述子单一实例库导出至一个磁带;以及在所述存根文件集包括尚未导出至磁带的存根文件的情况下,重复执行前述两个步骤,直至所述存根文件集中的存根文件均被导出至磁带为止。
[0011]对于上述将文件导出到磁带的方法,在一种可能的实现方式中,将所述存根文件子集以及所述子单一实例库导出至一个磁带,包括:对所述存根文件子集中的存根文件内的指纹数据进行修改,以使得修改后的指纹数据中的位置信息表示与所述指纹数据对应的数据块在所述子单一实例库中的位置;将进行了所述修改的所述存根文件子集导出至所述磁带;以及将所述子单一实例库导出至所述磁带。
[0012]对于上述将文件导出到磁带的方法,在一种可能的实现方式中,在对所述存根文件子集中的存根文件内的指纹数据进行修改之前,还包括:确定所述子单一实例库中的第一数据块,其中,所述第一数据块为被一个所述存根文件引用的数据块;将所述存根文件子集中的存根文件内与所述第一数据块对应的指纹数据替换为所述第一数据块;以及将所述第一数据块从所述子单一实例库移除。
[0013]对于上述将文件导出到磁带的方法,在一种可能的实现方式中,从所述存根文件集中选出至少一个要导出至磁带的存根文件组成存根文件子集,包括:从所述存根文件集中选出预定数量的要导出至磁带的存根文件组成候选子集;计算步骤,计算所述候选子集以及与所述候选子集对应的候选子单一实例库的总数据量,其中,所述候选子单一实例库包括被所述候选子集中的存根文件引用的所有单一的数据块;以及在所计算出的总数据量不大于一个磁带的容量的情况下,将所述候选子集确定为所述存根文件子集,否则从所述候选子集移除一个存根文件并重复所述计算步骤。
[0014]对于上述将文件导出到磁带的方法,在一种可能的实现方式中,从所述存根文件集中选出预定数量的要导出至磁带的存根文件组成候选子集,包括:根据所述存根文件集中要导出至磁带的存根文件的保存顺序,依次选出预定数量的存根文件组成所述候选子集;或者根据所述存根文件集中要导出至磁带的存根文件之间的数据块共享关系,选出预定数量的共享数据块最多的存根文件组成所述候选子集。
[0015]对于上述将文件导出到磁带的方法,在一种可能的实现方式中,在从所述存根文件集中选出至少一个要导出至磁带的存根文件组成存根文件子集之前,还包括:确定所述单一实例库中的第二数据块,其中,所述第二数据块为被一个所述存根文件引用的数据块;将所述存根文件集中的存根文件内与所述第二数据块对应的指纹数据替换为所述第二数据块;以及将所述第二数据块从所述单一实例库移除。
[0016]为了解决上述技术问题,根据本发明的一实施例,提供了一种将文件导出到磁带的装置,用于将以重删数据的形式保存的至少两个原始文件导出至磁带,所述重删数据包括存根文件集、单一实例库、以及指纹库,所述单一实例库包括从各所述原始文件划分出的所有单一的数据块,所述存根文件集包括分别与各所述原始文件对应的至少两个存根文件,各所述存根文件包括至少一个指纹数据,所述指纹数据包括指纹和位置信息,所述指纹用于标识从与所述存根文件对应的原始文件划分出的数据块,所述位置信息表示与所述指纹数据对应的数据块在所述单一实例库中的位置,所述指纹库包括各所述指纹及其引用计数,所述指纹的引用计数表示引用所述指纹标识的数据块的存根文件的个数。
[0017]所述将文件导出到磁带的装置包括:选择模块,用于从所述存根文件集中选出至少一个要导出至磁带的存根文件组成存根文件子集,其中,所述存根文件子集以及与所述存根文件子集对应的子单一实例库的总数据量不大于一个磁带的容量,所述子单一实例库包括被所述存根文件子集中的存根文件引用的所有单一的数据块;执行模块,与所述选择模块连接,用于将所述存根文件子集以及所述子单一实例库导出至一个磁带;以及判断模块,与所述执行模块和所述选择模块连接,用于判断所述存根文件集是否包括尚未导出至磁带的存根文件。
[0018]对于上述将文件导出到磁带的装置,在一种可能的实现方式中,所述执行模块包括:修改单元,与所述选择模块连接,用于对所述存根文件子集中的存根文件内的指纹数据进行修改,以使得修改后的指纹数据中的位置信息表示与所述指纹数据对应的数据块在所述子单一实例库中的位置;导出单元,与所述修改单元连接,用于将进行了所述修改的所述存根文件子集导出至所述磁带以及将所述子单一实例库导出至所述磁带。
[0019]对于上述将文件导出到磁带的装置,在一种可能的实现方式中,还包括复原模块,所述复原模块与所述执行模块连接,并且所述复原模块被配置为:确定所述子单一实例库中的第一数据块,其中,所述第一数据块为被一个所述存根文件引用的数据块;将所述存根文件子集中的存根文件内与所述第一数据块对应的指纹数据替换为所述第一数据块,将所述第一数据块从所述子单一实例库移除,并将替换后的所述存根文件子集输出至所述修改单元。
[0020]对于上述将文件导出到磁带的装置,在一种可能的实现方式中,所述选择模块包括:候选子集选择单元,用于从所述存根文件集中选出预定数量的要导出至磁带的存根文件组成候选子集;计算单元,与所述候选子集选择单元连接,用于计算所述候选子集以及与所述候选子集对应的候选子单一实例库的总数据量,其中,所述候选子单一实例库包括被所述候选子集中的存根文件引用的所有单一的数据块;以及确定单元,与所述计算单元连接,用于在所述计算单元所计算出的总数据量不大于一个磁带的容量的情况下,将所述候选子集确定为所述存根文件子集,否则从所述候选子集移除一个存根文件。
[0021]对于上述将文件导出到磁带的装置,在一种可能的实现方式中,所述候选子集选择单元被配置为:根据所述存根文件集中要导出至磁带的存根文件的保存顺序,依次选出预定数量的存根文件组成所述候选子集;或者根据所述存根文件集中要导出至磁带的存根文件之间的数据块共享关系,选出预定数量的共享数据块最多的存根文件组成所述候选子集。
[0022]对于上述将文件导出到磁带的装置,在一种可能的实现方式中,所述复原模块还与所述选择模块连接,并且还被配置为:确定所述单一实例库中的第二数据块,其中,所述第二数据块为被一个所述存根文件引用的数据块;以及将所述存根文件集中的存根文件内与所述第二数据块对应的指纹数据替换为所述第二数据块,将所述第二数据块从所述单一实例库移除,并将替换后的所述存根文件集输出至所述选择模块。
[0023]有益效果
[0024]通过将以重删数据的形式保存的原始文件对应的存根文件、以及该存根文件的指纹数据对应的数据块导出至一个磁带,根据本发明实施例的将文件导出到磁带的方法能够仍然以重删数据特性的形式保存原始文件,也就是说维持了数据重删的价值,节约了磁带的存储空间,并且通过保证重删域在同一个磁带里,可以保证快速恢复并读取原始文件。
[0025]根据下面参考附图对示例性实施例的详细说明,本发明的其它特征及方面将变得清楚。
【专利附图】

【附图说明】
[0026]包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本发明的示例性实施例、特征和方面,并且用于解释本发明的原理。
[0027]图1示出带有重删功能的备份存储服务器的示意图;
[0028]图2示出根据本发明一实施例的将文件导出到磁带的方法流程图;
[0029]图3示出根据本发明另一实施例的将文件导出到磁带的方法流程图;
[0030]图4示出根据本发明另一实施例的将文件导出到磁带的方法流程图;
[0031]图5示出根据本发明一实施例的将文件导出到磁带的方法中确定候选存根文件子集的具体操作步骤流程图;
[0032]图6示出根据本发明又一实施例的将文件导出到磁带的方法流程图;
[0033]图7示出根据本发明一实施例的将文件导出到磁带的装置的结构框图;
[0034]图8示出根据本发明另一实施例的将文件导出到磁带的装置的结构框图;
[0035]图9示出根据本发明一实施例的将文件导出到磁带的装置的执行模块的结构框图;
[0036]图10示出根据本发明一实施例的将文件导出到磁带的装置的选择模块的结构框图;
[0037]图11示出根据本发明又一实施例的将文件导出到磁带的装置的结构框图。
【具体实施方式】
[0038]以下将参考附图详细说明本发明的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
[0039]在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
[0040]另外,为了更好的说明本发明,在下文的【具体实施方式】中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本发明同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本发明的主旨。
[0041]实施例1[0042]根据本发明实施例的将文件导出到磁带的方法,用于将以重删数据的形式保存的至少两个原始文件导出至磁带,所述重删数据包括存根文件集、单一实例库、以及指纹库。以重删数据的形式保存的原始文件可以存储在如图1所示的存储服务器中,如图1所示,所述单一实例库包括从各所述原始文件划分出的所有单一的数据块,例如数据块DB11、数据块DB12等。所述存根文件集包括分别与各所述原始文件对应的至少两个存根文件,各所述存根文件包括至少一个指纹数据,所述指纹数据包括指纹和位置信息,所述指纹用于标识从与所述存根文件对应的原始文件划分出的数据块,所述位置信息表示与所述指纹数据对应的数据块在所述单一实例库中的位置,例如,所述存根文件集包括存根文件SFl和存根文件SF2,存根文件SFl包括与从其原始文件划分出的数据块DBll对应的指纹Fpll、数据块DB12对应的指纹Fpl2等,存根文件SF2包括与从其原始文件划分出的数据块DB21对应的指纹Fp21、数据块DB22对应的指纹Fp22等。所述指纹库包括各所述指纹及其引用计数,所述指纹的引用计数表示引用所述指纹标识的数据块的存根文件的个数。
[0043]图2示出根据本发明一实施例的将文件导出到磁带的方法的流程图。如图2所示,该方法主要包括:
[0044]步骤S210,从所述存根文件集中选出至少一个要导出至磁带的存根文件组成存根文件子集,其中,所述存根文件子集以及与所述存根文件子集对应的子单一实例库的总数据量不大于一个磁带的容量,所述子单一实例库包括被所述存根文件子集中的存根文件引用的所有单一的数据块。
[0045]具体地,可以根据所述存根文件集中要导出至磁带的存根文件之间的数据块共享关系确定所述存根文件子集,也可以按所述存根文件集中要导出至磁带的存根文件的保存顺序确定存根文件子集,只要最终确定的存根文件子集以及与所述存根文件子集对应的子单一实例库的总数据量不大于一个磁带的容量。这样可以保证一个磁带是一个重删域,也就是说可以保证原始文件的存根文件和单一实例库在同一个磁带,在从磁带中读取原始文件的时候,只需加载一个磁带就可以完成。
[0046]步骤S220,将所述存根文件子集以及所述子单一实例库导出至一个磁带。
[0047]步骤S230,判断所述存根文件集是否包括尚未导出至磁带的存根文件。如果包括,重复执行步骤S210和步骤S220,直至所述存根文件集中的存根文件均被导出至磁带为止,如果不包括,本发明实施例的文件导出到磁带的流程结束。
[0048]这样,通过将以重删数据的形式保存的原始文件对应的存根文件、以及该存根文件的指纹数据对应的数据块导出至一个磁带,根据本实施例的将文件导出到磁带的方法能够仍然以重删数据特性的形式保存原始文件,也就是说维持了数据重删的价值,节约了磁带的存储空间,并且通过保证重删域在同一个磁带里,可以保证快速恢复并读取原始文件。
[0049]实施例2
[0050]图3示出根据本发明另一实施例的将文件导出到磁带的方法流程图,图3中标号与图2相同的组件具有相同的功能,为简明起见,省略对这些组件的详细说明。
[0051]如图3所示,图3所示的将文件导出到磁带的方法与图2所示的将文件导出到磁带的方法主要区别在于,在一种可能的实现方式中,实施例1中步骤S220的具体操作步骤可以包括:
[0052]步骤S321、对所述存根文件子集中的存根文件内的指纹数据进行修改,以使得修改后的指纹数据中的位置信息表示与所述指纹数据对应的数据块在所述子单一实例库中的位置。
[0053]步骤S322、将进行了所述修改的所述存根文件子集导出至所述磁带。
[0054]步骤S323、将所述子单一实例库导出至所述磁带。
[0055]由于磁带的顺序操作模式,先将进行了所述修改的所述存根文件子集导出,再将所述子单一实例库导出至所述磁带,可以使得在用户读取原始文件的时候无需倒带操作,从而可以实现原始文件的快速恢复。
[0056]实施例3
[0057]图4示出根据本发明另一实施例的将文件导出到磁带的方法流程图,图4中标号与图3相同的组件具有相同的功能,为简明起见,省略对这些组件的详细说明。
[0058]如图4所示,图4所示的将文件导出到磁带的方法与图3所示的将文件导出到磁带的方法主要区别在于,在一种可能的实现方式中,步骤S321之前,还可以包括:
[0059]步骤S410、确定所述子单一实例库中的第一数据块,其中,所述第一数据块为被一个所述存根文件引用的数据块。
[0060]步骤S420、将所述存根文件子集中的存根文件内与所述第一数据块对应的指纹数据替换为所述第一数据块。
[0061]步骤S430、将所述第一数据块从所述子单一实例库移除。
[0062]磁带的物理特性决定了在磁带中进行原始文件的复原操作是极其耗时低效的,本实施例的将文件导出到磁带的方法先将所述存根文件子集中的存根文件之间互不共享的数据块复原至所述存根文件子集中,然后将该数据块从所述子单一实例库移除,再执行步骤S220,在减少用户读取原始文件时的原始文件复原操作以实现原始文件的快速读取的同时,并没有增加额外的存储量。
[0063]实施例4
[0064]图5示出根据本发明实施例1的将文件导出到磁带的方法中步骤S210的具体操作步骤,如图5所示,在一种可能的实现方式中,该步骤可以包括:
[0065]步骤S510、从所述存根文件集中选出预定数量的要导出至磁带的存根文件组成候选子集。
[0066]步骤S520、计算步骤,计算所述候选子集以及与所述候选子集对应的候选子单一实例库的总数据量,其中,所述候选子单一实例库包括被所述候选子集中的存根文件引用的所有单一的数据块。
[0067]步骤S530、判断所计算出的总数据量是否大于一个磁带的容量。如果所计算出的总数据量不大于一个磁带的容量,则执行步骤S540、将所述候选子集确定为所述存根文件子集,否则执行步骤S550、从所述候选子集移除一个存根文件并重复所述计算步骤S520。
[0068]具体地,可以根据所述存根文件集中要导出至磁带的存根文件之间的数据块共享关系,选出预定数量的共享数据块最多的存根文件组成所述候选子集。这样可以保证磁带的存储利用率尽可能大,也就是说相同的磁带存储空间可以保存最多的存储数据。
[0069]此外,也可以根据所述存根文件集中要导出至磁带的存根文件的保存顺序,依次选出预定数量的存根文件组成所述候选子集。这样虽然不能保证磁带的存储利用率为最大,但可以避免因为计算存根文件集的各子集中数据块被共享的个数而带来的计算量。本领域技术人员应能理解,用户可以完全根据个人喜好和/或实际应用场景灵活设定选择所述候选子集的方法。
[0070]通过首先确定由至少一个要导出至磁带的存根文件组成存根文件子集,并保证该存根文件子集以及与该存根文件子集对应的子单一实例库的总数据量不大于一个磁带的容量。可以保证一个磁带是一个重删域,在从磁带中读取原始文件的时候,只需加载一个磁带就可以完成,可以保证快速恢复并读取原始文件。
[0071]实施例5
[0072]图6示出根据本发明又一实施例的将文件导出到磁带的方法流程图,图6中标号与图2相同的组件具有相同的功能,为简明起见,省略对这些组件的详细说明。
[0073]如图6所示,图6所示的将文件导出到磁带的方法与图2所示的将文件导出到磁带的方法主要区别在于,在一种可能的实现方式中,实施例1中步骤S210之前,还可以包括:
[0074]步骤S610、确定所述单一实例库中的第二数据块,其中,所述第二数据块为被一个所述存根文件引用的数据块。
[0075]步骤S620、将所述存根文件集中的存根文件内与所述第二数据块对应的指纹数据替换为所述第二数据块。
[0076]步骤S630、将所述第二数据块从所述单一实例库移除。
[0077]需要说明的是,本实施例的将文件导出到磁带的方法可以包括实施例3所述的步骤S410、步骤S420、步骤S430,执行步骤S610、步骤S620、步骤S630同样是考虑到磁带的物理特性,在磁带中进行原始文件的复原操作是及其耗时低效的,因此,本实施例的将文件导出到磁带的方法先将所述存根文件集中的存根文件之间互不共享的数据块复原至所述存根文件集中,然后将该数据块从所述单一实例库移除,再执行步骤S220,在减少用户读取原始文件时的原始文件复原操作以实现原始文件的快速读取的同时,并没有增加额外的存储量。
[0078]实施例6
[0079]根据本发明实施例的将文件导出到磁带的装置,用于将以重删数据的形式保存的至少两个原始文件导出至磁带,所述重删数据包括存根文件集、单一实例库、以及指纹库。以重删数据的形式保存的原始文件可以存储在如图1所示的存储服务器中,具体可以参考前述方法实施例的相关描述,在此不再赘述。
[0080]图7示出根据本发明一实施例的将文件导出到磁带的装置700的结构框图,如图7所示,装置700主要包括:选择模块710、执行模块720以及判断模块730,其中,选择模块710用于从所述存根文件集中选出至少一个要导出至磁带的存根文件组成存根文件子集,所述存根文件子集以及与所述存根文件子集对应的子单一实例库的总数据量不大于一个磁带的容量,所述子单一实例库包括被所述存根文件子集中的存根文件引用的所有单一的数据块;执行模块720与选择模块710连接,用于将所述存根文件子集以及所述子单一实例库导出至一个磁带;判断模块730与执行模块720连接,用于判断所述存根文件集是否包括尚未导出至磁带的存根文件。
[0081]在一种可能的实现方式中,选择模块710可以根据所述存根文件集中要导出至磁带的存根文件之间的数据块共享关系确定所述存根文件子集,也可以按所述存根文件集中要导出至磁带的存根文件的保存顺序确定存根文件子集,只要最终确定的存根文件子集以及与所述存根文件子集对应的子单一实例库的总数据量不大于一个磁带的容量。这样可以保证一个磁带是一个重删域,也就是说可以保证原始文件的存根文件和单一实例库在同一个磁带,在从磁带中读取原始文件的时候,只需加载一个磁带就可以完成。
[0082]这样,通过执行模块720将以重删数据的形式保存的原始文件对应的存根文件、以及该存根文件的指纹数据对应的数据块导出至一个磁带,根据本实施例的将文件导出到磁带的装置能够仍然以重删数据特性的形式保存原始文件,也就是说维持了数据重删的价值,节约了磁带的存储空间,并且通过保证重删域在同一个磁带里,可以保证快速恢复并读取原始文件。
[0083]实施例7
[0084]图8示出根据本发明另一实施例的将文件导出到磁带的装置的结构框图,图8中标号与图7相同的组件具有相同的功能,为简明起见,省略对这些组件的详细说明。
[0085]图8所示的将文件导出到磁带的装置与图7所示的将文件导出到磁带的装置的主要区别在于,在一种可能的实现方式中,装置700还包括复原模块740。复原模块740与执行模块720连接,用于确定所述子单一实例库中的第一数据块,其中,所述第一数据块为被一个所述存根文件引用的数据块;以及将所述存根文件子集中的存根文件内与所述第一数据块对应的指纹数据替换为所述第一数据块,将所述第一数据块从所述子单一实例库移除,并将替换后的所述存根文件子集输出至执行模块720。
[0086]在一种可能的实现方式中,复原装置740还可以与选择模块710连接。具体地,复原模块740被配置为确定所述单一实例库中的第二数据块,其中,所述第二数据块为被一个所述存根文件引用的数据块;以及将所述存根文件集中的存根文件内与所述第二数据块对应的指纹数据替换为所述第二数据块,将所述第二数据块从所述单一实例库移除,并将替换后的所述存根文件集输出至选择模块710。
[0087]磁带的物理特性决定了在磁带中进行原始文件的复原操作是极其耗时低效的,本实施例的将文件导出到磁带的装置先通过复原装置740将所述存根文件集和/或所述存根文件子集中的存根文件之间互不共享的数据块复原,然后再通过执行单元720将所述存根文件子集以及所述子单一实例库导出至一个磁带,在减少用户读取原始文件时的原始文件复原操作以实现原始文件的快速读取的同时,并没有增加额外的存储量。
[0088]在一种可能的实现方式中,如图9所示,执行模块720可以包括修改单元721和导出单元722。具体地,修改单元721与选择模块710连接,用于对所述存根文件子集中的存根文件内的指纹数据进行修改,以使得修改后的指纹数据中的位置信息表示与所述指纹数据对应的数据块在所述子单一实例库中的位置;导出单元722与修改单元721连接,用于将进行了所述修改的所述存根文件子集导出至所述磁带;以及将所述子单一实例库导出至所述磁带。
[0089]由于磁带的顺序操作模式,通过导出单元722先将进行了所述修改的所述存根文件子集导出,再将所述子单一实例库导出至所述磁带,可以使得在用户读取原始文件的时候无需倒带操作,从而可以实现原始文件的快速恢复。
[0090]在一种可能的实现方式中,如图10所示,选择模块710可以包括候选子集选择单元711、计算单元712和确定单元713。[0091]具体地,候选子集选择单元711用于从所述存根文件集中选出预定数量的要导出至磁带的存根文件组成候选子集;计算单元712与候选子集选择单元711连接,用于计算所述候选子集以及与所述候选子集对应的候选子单一实例库的总数据量,其中,所述候选子单一实例库包括被所述候选子集中的存根文件引用的所有单一的数据块;确定单元713与计算单元712连接,用于在所述计算单元所计算出的总数据量不大于一个磁带的容量的情况下,将所述候选子集确定为所述存根文件子集,否则从所述候选子集移除一个存根文件。
[0092]在一种可能的实现方式中,候选子集选择单元711可以被配置为:根据所述存根文件集中要导出至磁带的存根文件的保存顺序,依次选出预定数量的存根文件组成所述候选子集;或者根据所述存根文件集中要导出至磁带的存根文件之间的数据块共享关系,选出预定数量的共享数据块最多的存根文件组成所述候选子集。本领域技术人员应能理解,用户可以完全根据个人喜好和/或实际应用场景灵活设定候选子集选择单元711选择所述候选子集的方法。
[0093]通过首先确定由至少一个要导出至磁带的存根文件组成存根文件子集,并保证该存根文件子集以及与该存根文件子集对应的子单一实例库的总数据量不大于一个磁带的容量。可以保证一个磁带是一个重删域,在从磁带中读取原始文件的时候,只需加载一个磁带就可以完成,可以保证快速恢复并读取原始文件。
[0094]实施例8
[0095]图11为本发明的又一实施例的将文件导出到磁带的装置的结构框图。所述将文件导出到磁带的装置1100可以是具备计算能力的主机服务器、个人计算机PC、或者可携带的便携式计算机或终端等。本发明具体实施例并不对计算节点的具体实现做限定。
[0096]所述将文件导出到磁带的装置1100包括处理器(processor) 1110、通信接口(Communications Interface) 1120、存储器(memory) 1130 和总线 1140。其中,处理器 1110、通信接口 1120、以及存储器1130通过总线1140完成相互间的通信。
[0097]通信接口 1120用于与网元通信,其中网元包括例如虚拟机管理中心、共享存储
坐寸ο
[0098]处理器1110用于执行程序。处理器1110可能是一个中央处理器CPU,或者是专用集成电路ASIC (Application Specific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。
[0099]存储器1130用于存储文件。存储器1130可能包含高速RAM容器,也可能还包括非易失性容器(non-volatile memory),例如至少一个磁盘容器。存储器1130也可以是容器阵列。存储器1130还可能被分块,并且所述块可按一定的规则组合成虚拟卷。
[0100]在一种可能的实施方式中,上述程序可为包括计算机操作指令的程序代码。该程序具体可用于:从所述存根文件集中选出至少一个要导出至磁带的存根文件组成存根文件子集,其中,所述存根文件子集以及与所述存根文件子集对应的子单一实例库的总数据量不大于一个磁带的容量,所述子单一实例库包括被所述存根文件子集中的存根文件引用的所有单一的数据块;将所述存根文件子集以及所述子单一实例库导出至一个磁带;以及在所述存根文件集包括尚未导出至磁带的存根文件的情况下,重复执行前述两个步骤,直至所述存根文件集中的存根文件均被导出至磁带为止。
[0101]在一种可能的实施方式中,该程序具体可用于:对所述存根文件子集中的存根文件内的指纹数据进行修改,以使得修改后的指纹数据中的位置信息表示与所述指纹数据对应的数据块在所述子单一实例库中的位置;将进行了所述修改的所述存根文件子集导出至所述磁带;以及将所述子单一实例库导出至所述磁带。
[0102]在一种可能的实施方式中,该程序具体可用于:确定所述子单一实例库中的第一数据块,其中,所述第一数据块为被一个所述存根文件引用的数据块;将所述存根文件子集中的存根文件内与所述第一数据块对应的指纹数据替换为所述第一数据块;以及将所述第一数据块从所述子单一实例库移除。
[0103]在一种可能的实施方式中,该程序具体可用于:从所述存根文件集中选出预定数量的要导出至磁带的存根文件组成候选子集;计算步骤,计算所述候选子集以及与所述候选子集对应的候选子单一实例库的总数据量,其中,所述候选子单一实例库包括被所述候选子集中的存根文件引用的所有单一的数据块;以及在所计算出的总数据量不大于一个磁带的容量的情况下,将所述候选子集确定为所述存根文件子集,否则从所述候选子集移除一个存根文件并重复所述计算步骤。
[0104]在一种可能的实施方式中,该程序具体可用于:根据所述存根文件集中要导出至磁带的存根文件的保存顺序,依次选出预定数量的存根文件组成所述候选子集;或者根据所述存根文件集中要导出至磁带的存根文件之间的数据块共享关系,选出预定数量的共享数据块最多的存根文件组成所述候选子集。
[0105]在一种可能的实施方式中,该程序具体可用于:确定所述单一实例库中的第二数据块,其中,所述第二数据块为被一个所述存根文件引用的数据块;将所述存根文件集中的存根文件内与所述第二数据块对应的指纹数据替换为所述第二数据块;以及将所述第二数据块从所述单一实例库移除。
[0106]根据本实施例的将文件导出到磁带的装置,与实施例6至8所述的将文件导出到磁带的装置所解释的类似,本领域人员应能理解,前述的可能的实现方式均可应用于本实施例并能获得相同的有益效果,这里不再赘述。
[0107]以上所述,仅为本发明的【具体实施方式】,但本发明的保护范围并不局限于此,任何熟悉本【技术领域】的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
【权利要求】
1.一种将文件导出到磁带的方法,用于将以重删数据的形式保存的至少两个原始文件导出至磁带,所述重删数据包括存根文件集、单一实例库、以及指纹库,所述单一实例库包括从各所述原始文件划分出的所有单一的数据块,所述存根文件集包括分别与各所述原始文件对应的至少两个存根文件,各所述存根文件包括至少一个指纹数据,所述指纹数据包括指纹和位置信息,所述指纹用于标识从与所述存根文件对应的原始文件划分出的数据块,所述位置信息表示与所述指纹数据对应的数据块在所述单一实例库中的位置,所述指纹库包括各所述指纹及其引用计数,所述指纹的引用计数表示引用所述指纹标识的数据块的存根文件的个数,其特征在于,该方法包括: 从所述存根文件集中选出至少一个要导出至磁带的存根文件组成存根文件子集,其中,所述存根文件子集以及与所述存根文件子集对应的子单一实例库的总数据量不大于一个磁带的容量,所述子单一实例库包括被所述存根文件子集中的存根文件引用的所有单一的数据块; 将所述存根文件子集以及所述子单一实例库导出至一个磁带;以及 在所述存根文件集包括尚未导出至磁带的存根文件的情况下,重复执行前述两个步骤,直至所述存根文件集中的存根文件均被导出至磁带为止。
2.根据权利要求1所述的方法,其特征在于,将所述存根文件子集以及所述子单一实例库导出至一个磁带,包括: 对所述存根文件子集中的存根文件内的指纹数据进行修改,以使得修改后的指纹数据中的位置信息表示与所述指纹数据对应的数据块在所述子单一实例库中的位置; 将进行了所述修改的所述存根文件子集导出至所述磁带;以及 将所述子单一实例库导出至所述磁带。
3.根据权利要求2所述的方法,其特征在于,在对所述存根文件子集中的存根文件内的指纹数据进行修改之前,还包括: 确定所述子单一实例库中的第一数据块,其中,所述第一数据块为被一个所述存根文件引用的数据块; 将所述存根文件子集中的存根文件内与所述第一数据块对应的指纹数据替换为所述第一数据块;以及 将所述第一数据块从所述子单一实例库移除。
4.根据权利要求1至3中任一项所述的方法,其特征在于,从所述存根文件集中选出至少一个要导出至磁带的存根文件组成存根文件子集,包括: 从所述存根文件集中选出预定数量的要导出至磁带的存根文件组成候选子集; 计算步骤,计算所述候选子集以及与所述候选子集对应的候选子单一实例库的总数据量,其中,所述候选子单一实例库包括被所述候选子集中的存根文件引用的所有单一的数据块;以及 在所计算出的总数据量不大于一个磁带的容量的情况下,将所述候选子集确定为所述存根文件子集,否则从所述候选子集移除一个存根文件并重复所述计算步骤。
5.根据权利要求4所述的方法,其特征在于,从所述存根文件集中选出预定数量的要导出至磁带的存根文件组成候选子集,包括: 根据所述存根文件集中要导出至磁带的存根文件的保存顺序,依次选出预定数量的存根文件组成所述候选子集;或者 根据所述存根文件集中要导出至磁带的存根文件之间的数据块共享关系,选出预定数量的共享数据块最多的存根文件组成所述候选子集。
6.根据权利要求1至5中任一项所述的方法,其特征在于,在从所述存根文件集中选出至少一个要导出至磁带的存根文件组成存根文件子集之前,还包括: 确定所述单一实例库中的第二数据块,其中,所述第二数据块为被一个所述存根文件引用的数据块; 将所述存根文件集中的存根文件内与所述第二数据块对应的指纹数据替换为所述第二数据块;以及 将所述第二数据块从所述单一实例库移除。
7.一种将文件导出到磁带的装置,用于将以重删数据的形式保存的至少两个原始文件导出至磁带,所述重删数据包括存根文件集、单一实例库、以及指纹库,所述单一实例库包括从各所述原始文件划分出的所有单一的数据块,所述存根文件集包括分别与各所述原始文件对应的至少两个存根文件,各所述存根文件包括至少一个指纹数据,所述指纹数据包括指纹和位置信息,所述指纹用于标识从与所述存根文件对应的原始文件划分出的数据块,所述位置信息表示与所述指纹数据对应的数据块在所述单一实例库中的位置,所述指纹库包括各所述指纹及其引用计数,所述指纹的引用计数表示引用所述指纹标识的数据块的存根文件的个数,其特征在于,该装置包括: 选择模块,用于从所述存根文件集中选出至少一个要导出至磁带的存根文件组成存根文件子集,其中,所述存根文件子集以及与所述存根文件子集对应的子单一实例库的总数据量不大于一个磁带的容量,所述子单一实例库包括被所述存根文件子集中的存根文件引用的所有单一的数据块; 执行模块,与所述选择模块连接,用于将所述存根文件子集以及所述子单一实例库导出至一个磁带;以及 判断模块,与所述执行模块和所述选择模块连接,用于判断所述存根文件集是否包括尚未导出至磁带的存根文件。
8.根据权利要求7所述的装置,其特征在于,所述执行模块包括: 修改单元,与所述选择模块连接,用于对所述存根文件子集中的存根文件内的指纹数据进行修改,以使得修改后的指纹数据中的位置信息表示与所述指纹数据对应的数据块在所述子单一实例库中的位置; 导出单元,与所述修改单元连接,用于将进行了所述修改的所述存根文件子集导出至所述磁带以及将所述子单一实例库导出至所述磁带。
9.根据权利要求8所述的装置,其特征在于,还包括复原模块,所述复原模块与所述执行模块连接,并且所述复原模块被配置为: 确定所述子单一实例库中的第一数据块,其中,所述第一数据块为被一个所述存根文件引用的数据块; 将所述存根文件子集中的存根文件内与所述第一数据块对应的指纹数据替换为所述第一数据块,将所述第一数据块从所述子单一实例库移除,并将替换后的所述存根文件子集输出至所述修改单元。
10.根据权利要求7至9中任一项所述的装置,其特征在于,所述选择模块包括: 候选子集选择单元,用于从所述存根文件集中选出预定数量的要导出至磁带的存根文件组成候选子集; 计算单元,与所述候选子集选择单元连接,用于计算所述候选子集以及与所述候选子集对应的候选子单一实例库的总数据量,其中,所述候选子单一实例库包括被所述候选子集中的存根文件引用的所有单一的数据块;以及 确定单元,与所述计算单元连接,用于在所述计算单元所计算出的总数据量不大于一个磁带的容量的情况下,将所述候选子集确定为所述存根文件子集,否则从所述候选子集移除一个存根文件。
11.根据权利要求10所述的装置,其特征在于,所述候选子集选择单元被配置为: 根据所述存根文件集中要导出至磁带的存根文件的保存顺序,依次选出预定数量的存根文件组成所述候选子集;或者 根据所述存根文件集中要导出至磁带的存根文件之间的数据块共享关系,选出预定数量的共享数据块最多的存根文件组成所述候选子集。
12.根据权利要求7至11中任一项所述的装置,其特征在于,所述复原模块还与所述选择模块连接,并且还被配置为: 确定所述单一实例库中的第二数据块,其中,所述第二数据块为被一个所述存根文件引用的数据块;以及 将所述存根文件集中的存根文件内与所述第二数据块对应的指纹数据替换为所述第二数据块,将所述第二数据块从所述单一实例库移除,并将替换后的所述存根文件集输出至所述选择模块。
【文档编号】G06F17/30GK103577565SQ201310513281
【公开日】2014年2月12日 申请日期:2013年10月25日 优先权日:2013年10月25日
【发明者】李育国 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1