一种释放数据块的方法及装置制造方法

文档序号:6636657阅读:161来源:国知局
一种释放数据块的方法及装置制造方法
【专利摘要】本发明公开了一种释放数据块的方法及装置,用于解决现有技术中缺乏空间回收率与效率均较高的文件克隆方式的技术问题。该方法包括:在第一文件释放第一数据块时,根据所述第一文件的第一元数据确定出第一文件集合,所述第一文件集合包括所述第一文件的父文件及子文件中引用过所述第一数据块的文件;在所述第一数据块的共享位图中将与所述第一文件、所述第一文件集合中的文件对应的数据位的数据设置为1;在所述第一数据块的释放位图中将与所述第一文件对应的数据位的数据设置为1;在所述共享位图与所述释放位图相等且不等于0时,删除所述第一数据块,控制所述第一数据块占用的存储空间处于可用状态。
【专利说明】一种释放数据块的方法及装置

【技术领域】
[0001]本发明涉及计算机领域,特别涉及一种释放数据块的方法及装置。

【背景技术】
[0002]虚拟机克隆能够极大减少存储空间的占用,而且速度很快,已经成为虚拟机中不可或缺的基本功能。
[0003]文件克隆是虚拟机克隆的基本技术,文件克隆指的是快速将一个文件拷贝到另一个文件,在拷贝过程中使克隆文件与其父文件(即,克隆文件的来源文件)共享存储空间,因此,文件克隆技术具有占用空间小,拷贝时间短的特点。
[0004]文件克隆技术的核心是如何确定共享文件被哪些文件所引用,当某个共享文件未被任何文件引用时,就可以将其释放,收回对应的存储空间。
[0005]目前,文件克隆包括如下两种实现方式:
[0006]方式一,链接克隆。采用链接克隆技术时,在创建克隆文件时,先生成父文件的文件快照,克隆文件中只记录克隆文件创建之后新写入的数据,如果要读取克隆文件生成时的数据,则可以从文件快照中读取。
[0007]方式二、数据块克隆。采用数据块克隆时,在创建克隆文件时,在克隆文件的元数据中保存父文件的所有数据块的信息。而对于每一个共享数据块而言,保存有一个共享位图,共享位图中保存有该数据块被哪些文件所引用的信息。因此,在该数据块被某一个克隆文件引用以及释放时,均要对它的共享位图进行更新。
[0008]其中,链接克隆技术的算法简单,性能较高,但是,只有在所有克隆文件(包括文件快照)全部删除时,才能将共享文件占用的空间收回,空间回收率很低。而采用数据块克隆技术时,只要某个数据块没有被任何文件所引用,即可将该数据块所占用的空间收回,空间回收率很高,但是需要在创建和删除克隆文件时遍历克隆文件引用的所有数据块,然后将每个数据块的位图进行更新,算法复杂,效率较低。
[0009]综上所述,现有技术中缺乏空间回收率与效率均较高的文件克隆方式。


【发明内容】

[0010]本申请实施例提供一种释放数据块的方法及装置,用于解决现有技术中缺乏空间回收率与效率均较高的文件克隆方式的技术问题。
[0011]第一方面,本申请实施例提供了一种释放数据块的方法,包括:在第一文件释放第一数据块时,根据所述第一文件的第一元数据确定出第一文件集合,所述第一文件集合包括所述第一文件的父文件及子文件中引用过所述第一数据块的文件;在所述第一数据块的共享位图中将与所述第一文件、所述第一文件集合中的文件对应的数据位的数据设置为1,其中,所述共享位图用于记录引用过所述第一数据块的文件的信息,所述共享位图的初始值为O ;在所述第一数据块的释放位图中将与所述第一文件对应的数据位的数据设置为1,其中,所述释放位图用于记录释放了所述第一数据块的文件的信息,所述释放位图的初始值为O ;在所述共享位图与所述释放位图相等且不等于O时,删除所述第一数据块,控制所述第一数据块占用的存储空间处于可用状态。
[0012]结合第一方面,在第一方面的第一种可能的实现方式中,在第一文件释放第一数据块时,根据所述第一文件的第一元数据确定出第一文件集合,包括:在所述第一文件释放所述第一数据块时,根据所述第一元数据确定所述第一文件集合包括所述第一文件的子文件中创建时间晚于所述第一数据块的第一创建时间的子文件。
[0013]结合第一方面,在第一方面的第二种可能的实现方式中,在第一文件释放第一数据块时,根据所述第一文件的第一元数据确定出第一文件集合,包括:在所述第一元数据表明所述第一创建时间早于所述第一文件的第二创建时间时,确定所述第一文件集合包括所述第一文件的父文件。
[0014]结合第一方面的第一种可能的实现方式,在第一方面的第三种可能的实现方式中,在所述在所述第一文件释放所述第一数据块时,根据所述第一元数据确定所述第一文件集合包括所述第一文件的子文件中创建时间晚于所述第一数据块的第一创建时间的子文件之前,所述方法还包括:在根据所述第一文件创建所述第一文件的子文件时,在所述第一元数据中保存所述第一文件的子文件的创建时间以及所述第一文件的子文件的标识信肩、O
[0015]结合第一方面的第二种可能的实现方式,在第一方面的第四种可能的实现方式中,在所述在所述第一元数据表明所述第一创建时间早于所述第一文件的第二创建时间时,确定所述第一文件集合包括所述第一文件的父文件之前,所述方法还包括:在根据所述第一文件的父文件创建所述第一文件时,在所述第一元数据中保存所述第一创建时间以及所述第一文件的父文件的标识信息。
[0016]结合第一方面的第一种可能的实现方式至第一方面的第四种可能的实现方式中的任意一种,在所述在第一文件释放第一数据块时,根据所述第一文件的第一元数据确定出第一文件集合之前,所述方法还包括:在创建所述第一数据块时,在所述第一数据块的第二元数据中保存所述第一创建时间。
[0017]第二方面,本申请实施例提供了一种装置,包括:确定模块,用于在第一文件释放第一数据块时,根据所述第一文件的第一元数据确定出第一文件集合,所述第一文件集合包括所述第一文件的父文件及子文件中引用过所述第一数据块的文件;共享位图更新模块,用于在所述第一数据块的共享位图中将与所述第一文件、所述第一文件集合中的文件对应的数据位的数据设置为1,其中,所述共享位图用于记录引用过所述第一数据块的文件的信息,所述共享位图的初始值为O ;释放位图更新模块,用于在所述第一数据块的释放位图中将与所述第一文件对应的数据位的数据设置为1,其中,所述释放位图用于记录释放了所述第一数据块的文件的信息,所述释放位图的初始值为O ;空间回收模块,用于在所述共享位图与所述释放位图相等且不等于O时,删除所述第一数据块,控制所述第一数据块占用的存储空间处于可用状态。
[0018]结合第二方面,在第二方面的第一种可能的实现方式中,所述确定模块具体用于:在所述第一文件释放所述第一数据块时,根据所述第一元数据确定所述第一文件集合包括所述第一文件的子文件中创建时间晚于所述第一数据块的第一创建时间的子文件。
[0019]结合第二方面,在第二方面的第二种可能的实现方式中,所述确定模块具体用于:在所述第一元数据表明所述第一创建时间早于所述第一文件的第二创建时间时,确定所述第一文件集合包括所述第一文件的父文件。
[0020]结合第二方面的第一种可能的实现方式,在第二方面的第三种可能的实现方式中,所述装置还包括:第一保持存模块,用于在根据所述第一文件创建所述第一文件的子文件时,在所述第一元数据中保存所述第一文件的子文件的创建时间以及所述第一文件的子文件的标识信息。
[0021]结合第二方面的第二种可能的实现方式,在第二方面的第四种可能的实现方式中,所述装置还包括:第二保存模块,用于在根据所述第一文件的父文件创建所述第一文件时,在所述第一元数据中保存所述第一创建时间以及所述第一文件的父文件的标识信息。
[0022]结合第二方面的第一种可能的实现方式至第二方面的第四种可能的实现方式中的任意一种,所述装置还包括:第三保存模块,用于在创建所述第一数据块时,在所述第一数据块的第二元数据中保存所述第一创建时间。
[0023]本申请实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:
[0024]本申请实施例中,针对每一个共享数据块保存有一个共享位图,用于记录引用过该数据块的文件的信息,还保存有一个释放位图,用于记录释放了该数据块的信息。在有克隆文件释放了该数据块时,对共享位图和释放位图进行更新,具体更新该克隆文件与该数据块的引用关系和释放关系,以及更新克隆文件的父文件和子文件中引用过该数据块的文件与该数据块的引用关系。当共享位图与释放位图相等且不等于零时,可以确定引用了该数据块的文件均已经释放了该数据块,可以删除该数据块,回收其所占空间,控制其占用的存储空间处于可用状态。采用上述技术方案能够在数据块没有被任何文件所引用时收回其所占用的空间,空间回收率很高,而且只是在克隆文件释放数据块时需要对该数据块的位图进行更新,加之每次更新只针对克隆文件自身以及其父文件和子文件中引用过该数据块的文件,数据量很小,运算压力小,运行性能很高。综上,采用本申请实施例中的技术方案能够同时达到闻的空间回收率和闻的运行效率。

【专利附图】

【附图说明】
[0025]为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0026]图1为本申请实施例提供的释放数据块的方法的流程示意图;
[0027]图2为释放数据块的方法的进一步细化流程的示意图;
[0028]图3为本申请实施例提供的装置的结构示意框图;
[0029]图4为本申请实施例提供的装置的细化结构的示意框图;
[0030]图5为本申请实施例提供的电子设备的结构示意框图。

【具体实施方式】
[0031 ] 针对现有技术中缺乏空间回收率与效率均较高的文件克隆方式的技术问题,本申请实施例提供一种克隆文件的方法,包括:在第一文件释放第一数据块时,根据所述第一文件的第一元数据确定出所述第一文件的父文件及子文件中引用过所述第一数据块的至少一个文件;在所述第一数据块的共享位图中将与所述第一文件及所述至少一个文件对应的数据位的数据设置为1,其中,所述共享位图用于记录引用过所述第一数据块的文件的信息,所述共享位图的初始值为O ;在所述第一数据块的释放位图中将与所述第一文件对应的数据位的数据设置为1,其中,所述释放位图用于记录释放了所述第一数据块的文件的信息,所述释放位图的初始值为O ;在所述共享位图与所述释放位图相等且不等于O时,删除所述第一数据块,控制所述第一数据块占用的存储空间处于可用状态。
[0032]本申请实施例上述技术方案中,针对每一个共享数据块保存有一个共享位图,用于记录引用过该数据块的文件的信息,还保存有一个释放位图,用于记录释放了该数据块的信息。在有克隆文件释放了该数据块时,对共享位图和释放位图进行更新,具体更新该克隆文件与该数据块的引用关系和释放关系,以及更新克隆文件的父文件和子文件中引用过该数据块的文件与该数据块的引用关系。当共享位图与释放位图相等且不等于零时,可以确定引用了该数据块的文件均已经释放了该数据块,可以删除该数据块,回收其所占空间,控制其占用的存储空间处于可用状态。采用上述技术方案能够在数据块没有被任何文件所引用时收回其所占用的空间,空间回收率很高,而且只是在克隆文件释放数据块时需要对该数据块的位图进行更新,加之每次更新只针对克隆文件自身以及其父文件和子文件中引用过该数据块的文件,数据量很小,运算压力小,运行性能很高。综上,采用本申请实施例中的技术方案能够同时达到闻的空间回收率和闻的运行效率。
[0033]下面通过附图以及具体实施例对本申请技术方案做详细的说明,应当理解本申请实施例以及实施例中的具体特征是对本申请技术方案的详细的说明,而不是对本申请技术方案的限定,在不冲突的情况下,本申请实施例以及实施例中的技术特征可以相互组合。
[0034]参见图1,为本申请实施例提供的一种克隆文件的方法的流程示意图,该流程包括如下步骤:
[0035]步骤101:在第一文件释放第一数据块时,根据第一文件的第一元数据确定出第一文件集合,第一文件集合包括第一文件的父文件及子文件中引用过第一数据块的文件。
[0036]具体的,第一文件的父文件指的是创建第一文件时的源文件,同理,第一文件的子文件指的是以第一文件为源文件创建的文件。在第一文件的元数据(本申请实施例以下内容简称为第一元数据)中保存有第一文件的父文件与子文件的信息。在第一文件释放第一数据块时,通过第一元数据可以确定出第一文件的父文件及子文件中引用过第一数据块的文件,本申请实施例中,将确定出的文件的集合称为第一文件集合。实际情况中,根据第一元数据可能确定出第一文件的父文件及子文件都没有引用过第一数据块,这种情况下第一文件集合为空集合,不包含文件。
[0037]步骤102:在第一数据块的共享位图中将与第一文件、第一文件集合中的文件对应的数据位的数据设置为1,其中,共享位图用于记录引用过第一数据块的文件的信息,共享位图的初始值为O。
[0038]具体的,第一数据块的共享位图为记录引用过第一数据块的文件的信息的位图,具体实施时,第一数据块的共享位图可以由O和I组成的数字序列组成,每一个数据位对应一个文件与第一数据块的引用关系,其中,该数值I代表该数据位对应的文件引用过第一数据块,数值O代表尚未确定出该数据位对应的文件引用过第一数据块。由于本申请实施例中,在文件释放第一数据块时对第一数据块的位图进行更新,因此,在释放之前,尚不能确定文件是否引用过第一数据块。
[0039]另外,共享位图中数据位与克隆文件的对应关系可以保存在第一数据块的元数据(本申请实施例以下内容简称为第二元数据),通过第二元数据即可获知克隆文件与共享位图中数据位的对应关系,或者,共享位图中数据位与克隆文件的对应关系为约定规则,通过约定规则可以确定出共享位图中数据位与克隆文件的对应关系。
[0040]步骤102中,由于第一文件释放了第一数据块,所以可以毫无疑义地确定出第一文件引用过第一数据块,对共享位图中与第一文件对应的数据位的数值进行更新,将数值设置为I。另外,针对步骤101中确定出的第一文件集合中的文件,同样将其对应的数据位的数值设置为I,完成对共享位图的更新。
[0041]步骤103:在第一数据块的释放位图中将与第一文件对应的数据位的数据设置为1,其中,释放位图用于记录释放了第一数据块的文件的信息,释放位图的初始值为O ;
[0042]具体的,第一文件的释放位图为记录释放了第一数据块的文件的信息的位图,具体实施时,第一数据块的释放位图可以由O和I组成的数字序列组成,每一个数据位对应一个文件与第一数据块的释放关系,其中,该数值I代表该数据位对应的文件释放了第一数据块,数值O代表该数据位对应的文件没有释放过第一数据块。本申请实施例中,释放位图中数据位与克隆文件的对应关系与共享位图中数据位与克隆文件的对应关系一致。
[0043]步骤103中,在第一文件释放第一数据块时,对第一数据块的释放位图进行更新,将第一数据块的释放位图中与第一文件对应的数据位的数值设置为1,完成对释放位图的更新。
[0044]步骤104:在共享位图与释放位图相等且不等于O时,删除第一数据块,控制第一数据块占用的存储空间处于可用状态。
[0045]具体的,在文件A弓I用第一数据块时,根据文件A克隆文件B和文件C,而又在文件B释放第一数据块之前根据文件B克隆文件D和文件E,因此,引用过第一数据块的所有文件组成一个拓扑关系网,任意两个文件都能通过多层的父子关系联系到一起。
[0046]因此,在引用过第一数据块的文件个数为2个或以上时,在有一个文件释放了第一数据块时,通过步骤101均能确定出至少一个引用过第一数据块的其它文件,在步骤102?步骤103对共享位图和释放位图进行更新时,共享位图中更新的数据位要多于释放位图中更新的数据位,只有在所有文件均释放了第一数据块时,释放位图才能与共享位图相等,因此,可以在共享位图与释放位图相等且不等于O时,确定所有引用过第一数据块的文件均已经释放了第一数据块,可以删除第一数据块,收回其占用的空间,控制其所占用的空间处于可用状态。
[0047]而在引用过第一数据块的文件只有一个文件时,步骤101中确定出第一文件集合为空集合,执行步骤102?103之后,共享位图与释放位图均只包含一个数据1,且该数据I的数据位相同,共享位图与释放位图相等,可以确定引用过第一数据块的所有文件均释放了第一数据块,同样可以删除第一数据块,收回其占用的空间,控制器所占用的空间处于可用状态。
[0048]本申请实施例中,步骤102与步骤103可以同时执行,或者步骤102早于步骤103执行,或者步骤103早于步骤102执行。
[0049]本申请实施例上述技术方案中,针对每一个共享数据块保存有一个共享位图,用于记录引用过该数据块的文件的信息,还保存有一个释放位图,用于记录释放了该数据块的信息。在有克隆文件释放了该数据块时,对共享位图和释放位图进行更新,具体更新该克隆文件与该数据块的引用关系和释放关系,以及更新克隆文件的父文件和子文件中引用过该数据块的文件与该数据块的引用关系。当共享位图与释放位图相等且不等于零时,可以确定引用了该数据块的文件均已经释放了该数据块,可以删除该数据块,回收其所占空间,控制其占用的存储空间处于可用状态。采用上述技术方案能够在数据块没有被任何文件所引用时收回其所占用的空间,空间回收率很高,而且只是在克隆文件释放数据块时需要对该数据块的位图进行更新,加之每次更新只针对克隆文件自身以及其父文件和子文件中引用过该数据块的文件,数据量很小,运算压力小,运行性能很高。综上,采用本申请实施例中的技术方案能够同时达到闻的空间回收率和闻的运行效率。
[0050]可选的,参见图2,本申请实施例中,步骤101:在第一文件释放第一数据块时,根据第一文件的第一元数据确定出第一文件集合,具体包括:
[0051]步骤105:在第一文件释放第一数据块时,根据第一元数据确定第一文件集合包括第一文件的子文件中创建时间晚于第一数据块的第一创建时间的子文件。
[0052]具体的,可以通过比较第一文件的子文件的创建时间和第一数据块的创建时间(本申请实施例以下内容简称为第一创建时间)的先后关系确定出第一文件的子文件中引用过第一数据块的文件,如果第一文件的子文件的创建时间早于第一创建时间,表明创建该子文件时,第一文件尚未引用第一数据块,因此,该子文件没有引用过第一数据块,而如果改子文件的创建时间晚于第一创建时间,则表明在根据第一文件创建该子文件时,第一文件已经引用且尚在引用(因为当前才释放第一数据块)第一数据块,因此可以确定该子文件被创建时引用了第一数据块,确定其属于第一文件集合。
[0053]上述技术方案中,通过比较第一文件的子文件的创建时间和第一创建时间的先后顺序,能够快速、准确地确定出第一文件的子文件中引用过第一数据块的文件,运算量小,效率很高。
[0054]可选的,继续参见图2,本申请实施例中,步骤101:在第一文件释放第一数据块时,根据第一文件的第一元数据确定出第一文件集合,还包括:
[0055]步骤106:在第一元数据表明第一创建时间早于第一文件的第二创建时间时,确定第一文件集合包括第一文件的父文件。
[0056]具体的,可以通过比较第一文件的创建时间(本申请实施例以下内容简称为第二创建时间)和第一创建时间的先后关系确定第一文件的父文件是否引用过第一数据块,具体的,如果第一创建时间晚于第二创建时间时,可以确定根据第一文件的父文件克隆第一文件时,第一数据块尚未创建,第一文件的父文件没有引用第一数据块,而如果第一创建时间早于第二创建时间时,可以确定在第一文件创建时,第一文件已经引用了第一数据块,因此,可以确定第一文件的父文件引用过第一数据块,属于第一文件集合。
[0057]上述技术方案中,通过比较第一文件的第二创建时间和第一数据块的第一创建时间的先后顺序,能够快速、准确地确定第一文件的父文件是否引用过第一数据块,运算量小,效率很高。
[0058]可选的,在步骤105:在第一文件释放第一数据块时,根据第一元数据确定第一文件集合包括第一文件的子文件中创建时间晚于第一数据块的第一创建时间的子文件之前,还可以包括:
[0059]步骤107:在根据第一文件创建第一文件的子文件时,在第一元数据中保存第一文件的子文件的创建时间以及第一文件的子文件的标识信息。
[0060]通过在创建第一文件的子文件时记录该子文件的创建时间和标识信息,便于根据记录的的创建时间和标识信息确定出第一文件的子文件中引用过第一数据块的文件。
[0061]可选的,在步骤106:在第一元数据表明第一创建时间早于第一文件的第二创建时间时,确定第一文件集合包括第一文件的父文件之前,方法还包括:
[0062]步骤108:在根据第一文件的父文件创建第一文件时,在第一元数据中保存第一创建时间以及第一文件的父文件的标识信息。
[0063]通过在创建第一文件时记录第一文件的第二创建时间以及第一文件的父文件的标识信息,便于根据记录的的第二创建时间确定第一文件的父文件是否引用过第一数据块,以及在确定出第一文件的父文件引用过第一数据块时,能够获知父文件的标识信息,便于在共享位图中将该父文件对应的数据位处的数据设置为I。
[0064]在上述技术方案中,文件管理系统不用维护克隆文件拓扑关系网的全部分支图,只需要每个克隆文件记录自己的父文件信息和子文件信息,不仅元数据信息量小,而且维护方便、管理灵活,效率很高。
[0065]可选的,本申请实施例在在第一文件释放第一数据块时,根据第一文件的第一元数据确定出第一文件集合之前,还包括:
[0066]步骤109:在创建第一数据块时,在第一数据块的第二元数据中保存第一创建时间。
[0067]通过在创建第一数据块时记录第一数据块的创建时间,便于在有克隆文件释放第一数据块时确定出该克隆文件的父文件及子文件中引用过第一数据块的文件,进而对第一数据块的共享位图进行更新。
[0068]为了更清楚的理解本发明,下面以具体应用实例对本申请实施例提供的上述克隆文件的流程进行详细描述。
[0069]在根据文件A创建了克隆文件B时,在文件B的元数据中保存文件B的创建时间Tb,以及父文件的标识信息标识A。在文件A的元数据中增加子文件B的创建时间Tb和标识B。
[0070]在Tb之后的时刻T。,又根据文件B创建了克隆文件C,在文件B的元数据中记录中添加其子文件C的标识信息标识C以及创建时间T。。
[0071]在T。之后的时刻Td,对文件B中数据进行了蟹盖,增加了数据块D,在数据块D的元数据中添加数据块D的创建时间Td,并针对数据块D生成共享位图和释放位图,共享位图和释放位图的初始值均为O。
[0072]然后,在Td之后的时刻?;,又根据文件B创建了克隆文件E,在文件B的元数据中添加子文件T6的创建时间T6以及标识E,在文件E的元数据中添加文件E的创建时间以及父文件的标识B。
[0073]然后,在Te之后的时刻Tl,文件B释放了数据块D,从文件B的元数据中保存的信息确定出文件B的父文件和子文件中引用过数据块D的文件。
[0074]具体的,比较文件B的创建时间Tb和数据块D的创建时间Td的先后顺序,确定Tb早于Td,因此确定文件块B的父文件没有引用过数据块D。分别比较文件B的两个子文件的创建时间与Td的先后顺序,确定T。早于TB,Te晚于Td,因此确定文件E引用过数据块D,文件C没有引用过数据块D。因此,确定文件B的父文件和子文件中只有子文件E引用过数据块D。
[0075]然后,更新数据块D的共享位图,将文件B和文件E对应的数据位的数据设置为I,例如,更新后的共享位图为“ 01001”,其中,第I位数据对应文件B的引用关系,第2位数据对应文件E的引用关系。
[0076]在更新共享位图之后,可以更新数据块D的释放位图,将释放位图中与文件B对应的数据位的数据设置为1,例如,更新后的共享位图为“01000”。
[0077]在Tl时刻之后的时刻T2,文件E释放数据块D,由于文件E没有子文件,所以从文件E的元数据中获取文件E的创建时间!;,与数据块的创建时间Td比较可知,Te晚于Td,确定文件E的父文件B引用过数据块D。
[0078]然后,更新数据块D的共享位图和释放位图,更新后的共享位图还是为“01001”,更新后的释放位图为从“01000”变成“01001”,此时共享位图与释放位图相同且不等于0,可以确定引用过数据块D的所有文件均释放了数据块D,此时,可以删除数据块D,收回其所占用的空间,使所占空间转变为可用空间。
[0079]基于相同的技术构思,本发明实施例还提供了一种装置,参见图3,为该装置的结构示意框图,装置包括确定模块201、共享位图更新模块202、释放位图更新模块203以及空间回收模块204。
[0080]其中,确定模块201用于:在第一文件释放第一数据块时,根据第一文件的第一元数据确定出第一文件集合,第一文件集合包括第一文件的父文件及子文件中引用过第一数据块的文件;
[0081]共享位图更新模块202用于:在第一数据块的共享位图中将与第一文件、第一文件集合中的文件对应的数据位的数据设置为1,其中,共享位图用于记录引用过第一数据块的文件的信息,共享位图的初始值为O ;
[0082]释放位图更新模块203用于:在第一数据块的释放位图中将与第一文件对应的数据位的数据设置为1,其中,释放位图用于记录释放了第一数据块的文件的信息,释放位图的初始值为O;
[0083]空间回收模块204用于:在共享位图与释放位图相等且不等于O时,删除第一数据块,控制第一数据块占用的存储空间处于可用状态。
[0084]可选的,确定模块201具体用于:在第一文件释放第一数据块时,根据第一元数据确定第一文件集合包括第一文件的子文件中创建时间晚于第一数据块的第一创建时间的子文件。
[0085]可选的,确定模块201具体用于:在第一元数据表明第一创建时间早于第一文件的第二创建时间时,确定第一文件集合包括第一文件的父文件。
[0086]可选的,参见图4,装置还包括:
[0087]第一保持存模块205,用于在根据第一文件创建第一文件的子文件时,在第一元数据中保存第一文件的子文件的创建时间以及第一文件的子文件的标识信息。
[0088]可选的,参见图4,装置还包括:
[0089]第二保存模块206,用于在根据第一文件的父文件创建第一文件时,在第一兀数据中保存第一创建时间以及第一文件的父文件的标识信息。
[0090]可选的,参见图4,装置还包括:
[0091]第三保存模块207,用于在创建第一数据块时,在第一数据块的第二元数据中保存第一创建时间。
[0092]本实施例中的装置与前述释放数据块的方法是基于同一发明构思下的两个方面,在前面已经对方法的实施过程作了详细的描述,所以本领域技术人员可根据前述描述清楚地了解本实施例中的装置的结构及实施过程,为了说明书的简洁,在此就不再赘述了。
[0093]基于相同的技术构思,本发明实施例还提供了一种电子设备,参见图5,为电子设备的结构示意图,包括:总线300,以及连接到总线300的处理器301、存储单元302。其中,存储单元302用于存储指令,处理器301用于执行存储单元302中的指令,在第一文件释放第一数据块时,根据第一文件的第一元数据确定出第一文件集合,第一文件集合包括第一文件的父文件及子文件中引用过第一数据块的文件;在第一数据块的共享位图中将与第一文件、第一文件集合中的文件对应的数据位的数据设置为1,其中,共享位图用于记录引用过第一数据块的文件的信息,共享位图的初始值为O ;在第一数据块的释放位图中将与第一文件对应的数据位的数据设置为1,其中,释放位图用于记录释放了第一数据块的文件的信息,释放位图的初始值为O ;在共享位图与释放位图相等且不等于O时,删除第一数据块,控制第一数据块占用的存储空间处于可用状态。
[0094]可选的,处理器301用于在第一文件释放第一数据块时,根据第一文件的第一元数据确定出第一文件集合,具体为:在第一文件释放第一数据块时,根据第一元数据确定第一文件集合包括第一文件的子文件中创建时间晚于第一数据块的第一创建时间的子文件。
[0095]可选的,处理器301用于在第一文件释放第一数据块时,根据第一文件的第一元数据确定出第一文件集合,具体为:在第一元数据表明第一创建时间早于第一文件的第二创建时间时,确定第一文件集合包括第一文件的父文件。
[0096]可选的,处理器301在执行指令时,还用于:在根据第一文件创建第一文件的子文件时,在第一元数据中保存第一文件的子文件的创建时间以及第一文件的子文件的标识信肩、O
[0097]可选的,处理器301在执行指令时,还用于:在根据第一文件的父文件创建第一文件时,在第一元数据中保存第一创建时间以及第一文件的父文件的标识信息。
[0098]可选的,处理器301在执行指令时,还用于:在创建第一数据块时,在第一数据块的第二元数据中保存第一创建时间。
[0099]可选的,电子设备还包括:接口,用于从计算机集群系统中的节点处获取该节点上的第一文件释放第一数据块的消息。
[0100]本实施例中的电子设备与前述释放数据块的方法是基于同一发明构思下的两个方面,在前面已经对方法的实施过程作了详细的描述,所以本领域技术人员可根据前述描述清楚地了解本实施例中的电子设备的结构及实施过程,为了说明书的简洁,在此就不再赘述了。
[0101]本申请实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:
[0102]本申请实施例中,针对每一个共享数据块保存有一个共享位图,用于记录引用过该数据块的文件的信息,还保存有一个释放位图,用于记录释放了该数据块的信息。在有克隆文件释放了该数据块时,对共享位图和释放位图进行更新,具体更新该克隆文件与该数据块的引用关系和释放关系,以及更新克隆文件的父文件和子文件中引用过该数据块的文件与该数据块的引用关系。当共享位图与释放位图相等且不等于零时,可以确定引用了该数据块的文件均已经释放了该数据块,可以删除该数据块,回收其所占空间,控制其占用的存储空间处于可用状态。采用上述技术方案能够在数据块没有被任何文件所引用时收回其所占用的空间,空间回收率很高,而且只是在克隆文件释放数据块时需要对该数据块的位图进行更新,加之每次更新只针对克隆文件自身以及其父文件和子文件中引用过该数据块的文件,数据量很小,运算压力小,运行性能很高。综上,采用本申请实施例中的技术方案能够同时达到闻的空间回收率和闻的运行效率。
[0103]本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
[0104]本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0105]这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0106]尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
[0107]显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
【权利要求】
1.一种释放数据块的方法,其特征在于,包括: 在第一文件释放第一数据块时,根据所述第一文件的第一元数据确定出第一文件集合,所述第一文件集合包括所述第一文件的父文件及子文件中引用过所述第一数据块的文件; 在所述第一数据块的共享位图中将与所述第一文件、所述第一文件集合中的文件对应的数据位的数据设置为1,其中,所述共享位图用于记录引用过所述第一数据块的文件的信息,所述共享位图的初始值为O ; 在所述第一数据块的释放位图中将与所述第一文件对应的数据位的数据设置为1,其中,所述释放位图用于记录释放了所述第一数据块的文件的信息,所述释放位图的初始值为O ; 在所述共享位图与所述释放位图相等且不等于O时,删除所述第一数据块,控制所述第一数据块占用的存储空间处于可用状态。
2.如权利要求1所述的方法,其特征在于,在第一文件释放第一数据块时,根据所述第一文件的第一元数据确定出第一文件集合,包括: 在所述第一文件释放所述第一数据块时,根据所述第一元数据确定所述第一文件集合包括所述第一文件的子文件中创建时间晚于所述第一数据块的第一创建时间的子文件。
3.如权利要求1所述的方法,其特征在于,在第一文件释放第一数据块时,根据所述第一文件的第一元数据确定出第一文件集合,包括: 在所述第一元数据表明所述第一创建时间早于所述第一文件的第二创建时间时,确定所述第一文件集合包括所述第一文件的父文件。
4.如权利要求2所述的方法,其特征在于,在所述在所述第一文件释放所述第一数据块时,根据所述第一元数据确定所述第一文件集合包括所述第一文件的子文件中创建时间晚于所述第一数据块的第一创建时间的子文件之前,所述方法还包括: 在根据所述第一文件创建所述第一文件的子文件时,在所述第一元数据中保存所述第一文件的子文件的创建时间以及所述第一文件的子文件的标识信息。
5.如权利要求3所述的方法,其特征在于,在所述在所述第一元数据表明所述第一创建时间早于所述第一文件的第二创建时间时,确定所述第一文件集合包括所述第一文件的父文件之前,所述方法还包括: 在根据所述第一文件的父文件创建所述第一文件时,在所述第一元数据中保存所述第一创建时间以及所述第一文件的父文件的标识信息。
6.如权利要求2-5中任一权利要求所述的方法,其特征在于,在所述在第一文件释放第一数据块时,根据所述第一文件的第一元数据确定出第一文件集合之前,所述方法还包括: 在创建所述第一数据块时,在所述第一数据块的第二元数据中保存所述第一创建时间。
7.一种装置,其特征在于,包括: 确定模块,用于在第一文件释放第一数据块时,根据所述第一文件的第一元数据确定出第一文件集合,所述第一文件集合包括所述第一文件的父文件及子文件中引用过所述第一数据块的文件; 共享位图更新模块,用于在所述第一数据块的共享位图中将与所述第一文件、所述第一文件集合中的文件对应的数据位的数据设置为1,其中,所述共享位图用于记录引用过所述第一数据块的文件的信息,所述共享位图的初始值为O ; 释放位图更新模块,用于在所述第一数据块的释放位图中将与所述第一文件对应的数据位的数据设置为1,其中,所述释放位图用于记录释放了所述第一数据块的文件的信息,所述释放位图的初始值为O ; 空间回收模块,用于在所述共享位图与所述释放位图相等且不等于O时,删除所述第一数据块,控制所述第一数据块占用的存储空间处于可用状态。
8.如权利要求7所述的装置,其特征在于,所述确定模块具体用于:在所述第一文件释放所述第一数据块时,根据所述第一元数据确定所述第一文件集合包括所述第一文件的子文件中创建时间晚于所述第一数据块的第一创建时间的子文件。
9.如权利要求7所述的装置,其特征在于,所述确定模块具体用于:在所述第一元数据表明所述第一创建时间早于所述第一文件的第二创建时间时,确定所述第一文件集合包括所述第一文件的父文件。
10.如权利要求8所述的装置,其特征在于,还包括: 第一保持存模块,用于在根据所述第一文件创建所述第一文件的子文件时,在所述第一元数据中保存所述第一文件的子文件的创建时间以及所述第一文件的子文件的标识信肩、O
11.如权利要求9所述的装置,其特征在于,还包括: 第二保存模块,用于在根据所述第一文件的父文件创建所述第一文件时,在所述第一元数据中保存所述第一创建时间以及所述第一文件的父文件的标识信息。
12.如权利要求8-11中任一权利要求所述的装置,其特征在于,还包括: 第三保存模块,用于在创建所述第一数据块时,在所述第一数据块的第二元数据中保存所述第一创建时间。
【文档编号】G06F11/14GK104461780SQ201410713393
【公开日】2015年3月25日 申请日期:2014年11月28日 优先权日:2014年11月28日
【发明者】杨小锋 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1