文件系统的数据回收方法及装置制造方法

文档序号:6541364阅读:120来源:国知局
文件系统的数据回收方法及装置制造方法
【专利摘要】本发明涉及一种文件系统的数据回收方法及装置,所述方法包括:在生成新数据块时,记录所述新数据块的引用信息,所述引用信息用于记录所述新数据块所直接引用的原有数据块的信息;所述新数据块是从该直接引用的原有数据块复制而来;扫描所述新数据块,对所述新数据块的引用计数进行加操作;根据所述新数据块的引用信息,将所述新数据块所直接引用的原有数据块的引用计数进行减操作;进行减操作后的引用计数满足要求时,对所述原有数据块进行回收。本发明实施例提供的文件系统的数据回收方法及装置,可以有效地缩短引用计数的更新时间,加快数据回收的速度,减轻文件系统的压力。
【专利说明】文件系统的数据回收方法及装置
【技术领域】
[0001]本发明涉及计算机【技术领域】,尤其涉及一种文件系统的数据回收方法及装置。
【背景技术】
[0002]在文件系统中,由于元数据以及文件数据本身会占用空间,尤其是写时复制(Copyon Write, COW)或重定向写(Redirect on Write, ROW)文件系统等支持快照的文件系统。为了保持一致性,存储时在该些文件系统中生成checkpoint或者快照,其中,checkpoint是文件系统自动生成的检查点,而快照是由用户主动创建的检查点。为了达到节省空间的目的,在生成新的数据块之后,需要进行数据回收,即进行checkpoint删除或者快照删除操作,以释放旧的没有被新的checkpoint或快照引用的数据占用的空间。
[0003]现有的一种数据回收方法是采用树结构逐级遍历的方法,在生成新的数据块时,将新生成的数据块的引用计数置1,并将新生成的数据块直接引用的数据块的引用计数加
I。当文件系统决定删除checkpoint或者快照时,需要从checkpoint根部向下遍历每个数据块,将数据块的引用计数减1,如果数据块的引用计数减为0,继续向下层遍历,当下层引用计数减一后仍然>0,则说明被其他引用需要被保留,并停止向下层遍历。
[0004]然而,如果采用上述方法在进行实时更新引用计数,需要依次读取树结构每个数据块的引用计数,判断是否>0,然后执行减引用操作,引用计数的更新时间长,在生成大量修改数据时,很可能在一个checkpoint生成时间里完成不了引用计数的实时更新,造成文件系统压力大的情况。

【发明内容】

[0005]本发明提供一种文件系统的数据回收方法及装置,可以有效地缩短引用计数的更新时间,加快数据回收的速度,减轻文件系统的压力。
[0006]本发明第一方面提供了一种文件系统的数据回收方法,所述方法包括:
[0007]在生成新数据块时,记录所述新数据块的引用信息,所述引用信息用于记录所述新数据块所直接引用的原有数据块的信息;所述新数据块是从该直接引用的原有数据块复制而来;
[0008]扫描所述新数据块,对所述新数据块的引用计数进行加操作;
[0009]根据所述新数据块的引用信息,将所述新数据块所直接引用的原有数据块的引用计数进行减操作;
[0010]进行减操作后的引用计数满足要求时,对所述原有数据块进行回收。
[0011]结合第一方面,在第一方面的第一种可能的实施方式中,所述引用信息具体为所述新数据块所直接引用的原有数据块的数据块编号。
[0012]结合第一方面的第一种可能的实施方式,在第一方面的第二种可能的实施方式中,根据所述新数据块的引用信息,将所述新数据块所直接引用的原有数据块的引用计数进行减操作,具体包括:[0013]根据所述新数据块所直接引用的原有数据块的数据块编号,找出所述新数据块所直接引用的原有数据块,将找出的所述原有数据块的引用计数减一。
[0014]结合第一方面,在第一方面的第三种可能的实施方式中,所述方法还包括:
[0015]在生成所述新数据块时,所述新数据块形成新检查点;
[0016]所述扫描所述新数据块,对所述新数据块的引用计数进行加操作,具体包括:
[0017]遍历所述新检查点中的所有数据块,将每个所述数据块的引用计数加一。
[0018]结合第一方面,在第一方面的第四种可能的实施方式中,所述方法还包括:
[0019]在生成所述新数据块时,所述新数据块形成快照;
[0020]所述扫描所述新数据块,对所述新数据块的引用计数进行加操作,具体包括:
[0021]遍历所述快照中的所有数据块,将每个所述数据块的引用计数加一。
[0022]结合第一方面,在第一方面的第五种可能的实施方式中,所述进行减操作后的引用计数满足要求,具体包括:所述进行减操作后的引用计数为零。
[0023]第二方面,本发明还提供了一种文件系统的数据回收装置,所述装置包括:
[0024]第一处理单元,用于在生成新数据块时,记录所述新数据块的引用信息,所述引用信息用于记录所述新数据块所直接引用的原有数据块的信息;所述新数据块是从该直接引用的原有数据块复制而来;
[0025]第二处理单元,用于扫描所述新数据块,对所述新数据块的引用计数进行加操作;
[0026]第三处理单元,用于根据所述第一处理单元记录的所述新数据块的引用信息,将所述新数据块所直接引用的原有数据块的引用计数进行减操作;
[0027]回收单元,用于经过所述第三处理单元进行减操作后的引用计数满足要求时,对所述原有数据块进行回收。
[0028]结合第二方面,在第二方面的第一种可能的实施方式中,所述第一处理单元记录的所述引用信息具体为所述新数据块所直接引用的原有数据块的数据块编号。
[0029]结合第二方面的第一种可能的实施方式,在第二方面的第二种可能的实施方式中,所述第三处理单元具体用于根据所述第一处理单元记录的所述新数据块所直接引用的原有数据块的数据块编号,找出所述新数据块所直接引用的原有数据块,将找出的所述原有数据块的引用计数减一。
[0030]结合第二方面,在第二方面的第三种可能的实施方式中,所述第一处理单元还用于在生成所述新数据块时,将所述新数据块形成新检查点;
[0031 ] 所述第二处理单元具体用于遍历所述新检查点中的所有数据块,将每个所述数据块的引用计数加一。
[0032]结合第二方面,在第二方面的第四种可能的实施方式中,所述第一处理单元还用于在生成所述新数据块时,将所述新数据块形成快照;
[0033]所述第二处理单元具体用于遍历所述快照中的所有数据块,将每个所述数据块的引用计数加一。
[0034]结合第二方面,在第二方面的第五种可能的实施方式中,所述进行减操作后的引用计数满足要求,具体包括:所述进行减操作后的引用计数为零。
[0035]本发明提供的文件系统的数据回收方法及装置,通过记录的引用信息(新数据块所直接引用的原有数据块的数据块编号)进行引用计数更新,一次性遍历完成引用计数更新,不需要进行逐级遍历(不需要查询一次向下遍历一次),可以有效地缩短引用计数的更新时间,加快数据回收的速度,减轻文件系统的压力。
【专利附图】

【附图说明】
[0036]为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0037]图1为本发明实施例提供的文件系统的数据回收方法流程图;
[0038]图2a为本发明实施例提供的一种文件系统的树结构示意图;
[0039]图2b为图2a在生成新的检查点之后的树结构示意图;
[0040]图2c为遍历了图2b中每个数据块之后的树结构示意图;
[0041]图2d为对图2c中新生成的数据块直接引用的数据块的引用计数进行减操作之后的树结构示意图;
[0042]图3为本发明实施例提供的文件系统的数据回收装置示意图。
【具体实施方式】
[0043]为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述,显然,所描述的实施例仅仅是本发明一部分实施例,而非全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0044]本发明实施例提供的文件系统的数据回收方法及装置,适用于文件系统的存储和资源回收,尤其适用于COW或ROW等支持快照的文件系统。在本发明实施例中,原有数据块或新数据块可以采用树形结构、链表结构、数组结构等数据结构进行存储,在本发明实施例中以树形结构为例进行说明,并不以此作为限制。
[0045]图1是本发明实施例提供的文件系统的数据回收方法流程图,如图1所示,本发明实施例的文件系统的数据回收方法包括:
[0046]S101、在生成新数据块时,记录所述新数据块的引用信息。
[0047]所述引用信息用于记录所述新数据块所直接引用的原有数据块的信息,所述新数据块是从该直接引用的原有数据块复制而来,可以具体为所述新数据块所直接引用的原有数据块的数据块编号。
[0048]对于COW文件系统来说,在生成的新数据块中,每个数据块(chunk)有个字段(COWid字段)用于记录所述引用信息,以表示这个数据块是由哪个数据块COW过来的。对于前后生成的两个checkpoint,可以通过该字段在两个checkpoint之间形成对应关系。
[0049]具体地,以检查点ckpl和ckp2为例,如下表I所示,每个数据块可以包括检查点号(ckpl或ckp2)、本身的数据块编号ckid、引用的数据块编号cowid和数据data,其中,数据块编号ckid中还可以包括引用计数refcount,存储于数据块信息中。当然,数据块编号ckid和对应的引用计数refcount的对应关系也可以与数据块信息分开存储,存储到其他位置,只要能够根据数据块编号Ckid找到对应的引用计数refcount即可。
[0050]表 1
[0051」
【权利要求】
1.一种文件系统的数据回收方法,其特征在于,所述方法包括: 在生成新数据块时,记录所述新数据块的引用信息,所述引用信息用于记录所述新数据块所直接引用的原有数据块的信息;所述新数据块是从该直接引用的原有数据块复制而来; 扫描所述新数据块,对所述新数据块的引用计数进行加操作; 根据所述新数据块的引用信息,将所述新数据块所直接引用的原有数据块的引用计数进行减操作; 进行减操作后的引用计数满足要求时,对所述原有数据块进行回收。
2.根据权利要求1所述的方法,其特征在于,所述引用信息具体为所述新数据块所直接引用的原有数据块的数据块编号。
3.根据权利要求2所述的方法,其特征在于,根据所述新数据块的引用信息,将所述新数据块所直接引用的原有数据块的引用计数进行减操作,具体包括: 根据所述新数据块所直接引用的原有数据块的数据块编号,找出所述新数据块所直接引用的原有数据块,将找出的所述原有数据块的引用计数减一。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括: 在生成所述新数据块时,所述新数据块形成新检查点; 所述扫描所述新数据块,对所述新数据块的引用计数进行加操作,具体包括: 遍历所述新检查点中的所有数据块,将每个所述数据块的引用计数加一。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括: 在生成所述新数据块时,所述新数据块形成快照; 所述扫描所述新数据块,对所述新数据块的引用计数进行加操作,具体包括: 遍历所述快照中的所有数据块,将每个所述数据块的引用计数加一。
6.根据权利要求1所述的方法,其特征在于,所述进行减操作后的引用计数满足要求,具体包括:所述进行减操作后的引用计数为零。
7.一种文件系统的数据回收装置,其特征在于,所述装置包括: 第一处理单元,用于在生成新数据块时,记录所述新数据块的引用信息,所述引用信息用于记录所述新数据块所直接引用的原有数据块的信息;所述新数据块是从该直接引用的原有数据块复制而来; 第二处理单元,用于扫描所述新数据块,对所述新数据块的引用计数进行加操作;第三处理单元,用于根据所述第一处理单元记录的所述新数据块的引用信息,将所述新数据块所直接引用的原有数据块的引用计数进行减操作; 回收单元,用于经过所述第三处理单元进行减操作后的引用计数满足要求时,对所述原有数据块进行回收。
8.根据权利要求7所述的装置,其特征在于,所述第一处理单元记录的所述引用信息具体为所述新数据块所直接引用的原有数据块的数据块编号。
9.根据权利要求8所述的装置,其特征在于,所述第三处理单元具体用于根据所述第一处理单元记录的所述新数据块所直接引用的原有数据块的数据块编号,找出所述新数据块所直接引用的原有数据块,将找出的所述原有数据块的引用计数减一。
10.根据权利要求7所 述的装置,其特征在于,所述第一处理单元还用于在生成所述新数据块时,将所述新数据块形成新检查点; 所述第二处理单元具体用于遍历所述新检查点中的所有数据块,将每个所述数据块的引用计数加一。
11.根据权利要求7所述的装置,其特征在于,所述第一处理单元还用于在生成所述新数据块时,将所述新数据块形成快照; 所述第二处理单元具体用于遍历所述快照中的所有数据块,将每个所述数据块的引用计数加一。
12.根据权利要求7所述的装置,其特征在于,所述进行减操作后的引用计数满足要求,具体包括:所述进行减操作 后的引用计数为零。
【文档编号】G06F17/30GK103886070SQ201410108824
【公开日】2014年6月25日 申请日期:2014年3月21日 优先权日:2014年3月21日
【发明者】谢勇, 李育国, 付旭东, 钟延辉 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1