一种应用在聚合文件上的碎片整理方法与流程

文档序号:11155608阅读:290来源:国知局
一种应用在聚合文件上的碎片整理方法与制造工艺

本发明涉及碎片整理技术领域,特别是涉及一种应用在聚合文件上的碎片整理方法。



背景技术:

分布式文件系统中,有大量的文件碎片,为了防止碎片过多,通常会将多个文件碎片合并后写入一个大文件,称为聚合文件,实现碎片整理。碎片整理分为两大部分,一部分是前期将文件碎片存入聚合文件,另一部分是后期对聚合文件剩余的文件碎片重新整理。本发明所要解决的问题是后者。在使用聚合文件存储文件时,每次聚合文件的IO都可以写入或读取多个文件碎片,以获取更好的性能。但是随着系统的运行,聚合文件中的部分文件碎片可能会被删除,当聚合文件中的文件碎片被删除后,这个聚合文件的空间就没有这个文件碎片,但是其它文件也不能被存入,这样导致聚合文件的存储效率降低,读取性能降低等问题。

为了解决这个问题,传统的做法是将聚合文件全部扫描一遍,从而获取聚合文件中剩余的文件碎片,然后再将这些文件碎片再重新存入一个新的聚合文件。

由此可见,在进行聚合文件的扫描过程中,需要对聚合文件的每个空间都要查看一遍,导致在碎片整理过程中,扫描查看效率较低,浪费时间。另外,这样的碎片整理方法也不容易得知当前聚合文件的存储情况。如何克服上述文件是本领域技术人员亟待解决的问题。



技术实现要素:

本发明的目的是提供一种应用在聚合文件上的碎片整理方法,用于在碎片整理过程中,提高扫描查看的效率,节约时间。

为解决上述技术问题,本发明提供一种应用在聚合文件上的碎片整理方法,包括:

预先获取聚合文件并将所述聚合文件分为多个数据块,将各所述数据块分为两个部分,第一部分用于添加各文件碎片在所述数据块中的位图索引信息,第二部分用于存储各文件碎片;

当有文件碎片存入所述数据块或从所述数据块中删除时,在所述数据块中记录所述数据块的位图索引信息;

通过所述位图索引信息确定所述聚合文件的当前使用率;

当所述聚合文件的当前使用率达到预定使用率时,启动碎片整理。

优选地,还包括:当有文件碎片存入所述数据块时,在所述第一部分中添加所述文件碎片的文件号。

优选地,还包括:当有文件碎片从所述数据块删除时,删除对应的文件号。

优选地,当接收到查看请求时,通过所述文件号查找所述查看请求对应的目标文件碎片。

优选地,所述将各所述数据块分为两个部分,第一部分用于添加各文件碎片在所述数据块中的位图索引信息,第二部分用于存储各文件碎片具体为:

将所述数据块分为数据头部和数据体,所述数据头部作为所述第一部分,用于添加各文件碎片在所述数据块中的位图索引信息,所述数据体作为所述第二部分,用于存储各文件碎片。

优选地,所述数据头部的存储空间为12KB,其中前8KB用于存储所述文件号,后4KB用于存储所述位图索引信息。

优选地,所述位图索引信息具体采用0和1表示,其中,0表示当前位置的文件碎片已删除或未占用,1表示当前位置的文件碎片仍保留。

优选地,所述通过所述位图索引信息确定所述聚合文件的当前使用率具体包括:

通过扫描全部所述位图索引信息计算所述聚合文件的已使用空间;

通过计算所述已使用空间与所述聚合文件的总空间的比值得到所述当前使用率。

优选地,所述通过所述位图索引信息确定所述聚合文件的当前使用率具体为通过所述位图索引信息周期性地确定所述聚合文件的当前使用率。

优选地,所述启动碎片整理具体为通过各所述数据块的中的位图索引信息查找到所述聚合文件中仍保留的文件碎片,并将所述文件碎片转移至新的聚合文件。

本发明所提供的应用在聚合文件上的碎片整理方法,包括预先获取聚合文件并将聚合文件分为多个数据块,将各数据块分为两个部分,第一部分用于添加各文件碎片在数据块中的位图索引信息,第二部分用于存储各文件碎片;当有文件碎片存入数据块或从数据块中删除时,在数据块中记录数据块的位图索引信息;通过位图索引信息确定聚合文件的当前使用率;当聚合文件的当前使用率达到预定使用率时,启动碎片整理。由此可见,通过本方法可以通过每个数据块的位图索引信息可以快速确定数据块的存储情况,进而确定聚合文件的存储情况,不需要对每个数据块中的存储空间全部扫描,这样不仅提高了扫描查看的效率,而且节约时间。

附图说明

为了更清楚地说明本发明实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明提供的一种应用在聚合文件上的碎片整理方法的流程图;

图2为本发明是实施例提供的一种聚合文件的内部数据结构示意图。

具体实施方式

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

本发明的核心是提供一种应用在聚合文件上的碎片整理方法,用于在碎片整理过程中,提高扫描查看的效率,节约时间。

为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。

图1为本发明提供的一种应用在聚合文件上的碎片整理方法的流程图。如图1所示,应用在聚合文件上的碎片整理方法,包括:

S10:预先获取聚合文件并将聚合文件分为多个数据块,将各数据块分为两个部分,第一部分用于添加各文件碎片在数据块中的位图索引信息,第二部分用于存储各文件碎片;

S11:当有文件碎片存入数据块或从数据块中删除时,在数据块中记录数据块的位图索引信息;

S12:通过位图索引信息确定聚合文件的当前使用率;

S13:当聚合文件的当前使用率达到预定使用率时,启动碎片整理。

在具体实施中,对于一个同一个聚合文件来说,步骤S10只需要执行一次即可,而步骤S11-S13需要根据实际需求而定,例如步骤S11每存入文件碎片或删除碎片文件都需要执行。可以根据聚合文件的大小确定数据块的个数。需要说明的是,一个数据块在聚合文件中是连续的,不能拆分,但是数据块的存储空间可以全部相同,也可以不同。本文以相同为例说明,例如将聚合文件分为16个数据块,每个数据块的存储空间都是4MB。对于一个数据块的结构进行说明,其它数据块类似。数据块分为两部分,一部分用于添加这个数据块中存储的各文件碎片的委托索引信息,另一部分存放文件碎片本身,即数据。在具体实施中,可以将数据块的存储空间分为更小的存储单位,将文件碎片以存储单位存储,如果一个存储单位不够存储,则可以用多个,例如一个文件碎片可以占用10个存储单位。更具体的,一个存储单位可以为4KB,通过一个位图索引信息bit表示,则每一个bit标识4KB数据。如果位图索引信息采用0和1表示,其中,0表示当前位置的文件碎片已删除或未占用,1表示当前位置的文件碎片仍保留。通过位图索引信息就可以确定当前位置的4KB数据是否存在,进而能够确定文件碎片是否存在。

在查看聚合文件时,现有技术需要对聚合文件中的每个存储空间都要扫描,而本实施例中,可以通过位图索引信息就可以确定聚合文件的存储情况。为了提高聚合文件的使用率,需要在聚合文件的使用率达到预定使用率时,启动碎片整理,很显然,通过上述存储结构,可以快速的确定聚合文件的当前使用率,如果当前使用率达到预定使用率,则启动碎片整理。另外,预定使用率可以灵活设置,例如70%,可以理解的是,这里只是一种具体的实现方式,并不代表只有这一种方式。

本实施例提供的应用在聚合文件上的碎片整理方法,包括预先获取聚合文件并将聚合文件分为多个数据块,将各数据块分为两个部分,第一部分用于添加各文件碎片在数据块中的位图索引信息,第二部分用于存储各文件碎片;当有文件碎片存入数据块或从数据块中删除时,在数据块中记录数据块的位图索引信息;通过位图索引信息确定聚合文件的当前使用率;当聚合文件的当前使用率达到预定使用率时,启动碎片整理。由此可见,通过本方法可以通过每个数据块的位图索引信息可以快速确定数据块的存储情况,进而确定聚合文件的存储情况,不需要对每个数据块中的存储空间全部扫描,这样不仅提高了扫描查看的效率,而且节约时间。

作为优选地实施方式,在上述实施例的基础上,还包括:当有文件碎片存入数据块时,在第一部分中添加文件碎片的文件号。

本实施例中在第一部分中增加了文件号,与位图索引信息关联,这样可以清楚的知道每个数据块中存储的文件碎片的名称,存储了几个文件碎片。例如一个文件碎片的文件号1,其占用了5个存储单元,则该文件碎片在位图索引信息中就是11111XXXXX…XXX。其中,X表示还没有其他文件碎片存入,如果这个文件碎片被全部删除,则这个数据块的位图信息就变成00000XXXXX…XXX。如果这个文件碎片删除了部分,例如这个数据块的位图信息就变成11000XXXXX…XXX。可以理解的是,上述数据块的位图信息只是举例说明。

图2为本发明是实施例提供的一种聚合文件的内部数据结构示意图。作为优选地实施方式,如图2所示,聚合文件10中包含有多个数据块,每个数据块的存储空间为4MB。图例中有三个不同的表示方式,分别对应文件号、位图索引信息和数据。每个数据块的4MB空间中,8KB用做添加各文件碎片的文件号,4KB用来添加位图索引信息,如图2所示,通常情况下,位图索引信息只需要占用128Byet即可。数据块剩余的空间按照4KB为一个存储单位,用来存储文件碎片本身的数据。

作为优选地实施方式,如图2所示,将数据块分为数据头部和数据体,数据头部作为第一部分,用于添加各文件碎片在数据块中的位图索引信息,数据体作为第二部分,用于存储各文件碎片。

可以理解的是,数据头部就是用来存储文件号和位图索引信息用的,而数据体是用来存储各文件碎片本身的数据。将文件号和位图索引信息存储在数据头部,可以方便查看,不影响文件碎片的连续存储。在一定程度上,文件号可以反映数据块中存储的内容,而位图索引信息可以反映数据块中存储的量。

作为优选地实施方式,还包括:当有文件碎片从数据块删除时,删除对应的文件号。

可以理解的是,如果文件碎片被删除了,则相应的删除这个文件号,从而可以方便后续的查看。

作为优选地实施方式,当接收到查看请求时,通过文件号查找查看请求对应的目标文件碎片。

如果是现有技术,在接收到查看请求时,需遍历整个聚合文件,直到找到目标文件碎片,而采用本发明提供的方法的话,只需要遍历每个数据块的数据头部先找到文件号,再锁定目标文件碎片。

作为优选地实施方式,数据头部的存储空间为12KB,其中前8KB用于存储文件号,后4KB用于存储位图索引信息。

作为优选地实施方式,通过位图索引信息确定聚合文件的当前使用率具体包括:

通过扫描全部位图索引信息计算聚合文件的已使用空间;

通过计算已使用空间与聚合文件的总空间的比值得到当前使用率。

通过上述实施例的描述,通过位图索引信息上的数据都可以快速知道相应的数据块的已使用空间,则将每个数据块的已使用空间相加,就可以计算出聚合文件的已使用空间,再与聚合文件的总空间作比值,就得到了当前使用率。

在具体实施中,可以实时确定聚合文件的当前使用率,但是这样的方式过于繁琐,因此,作为优选地实施方式,可以周期性地确定聚合文件的当前使用率,这里的周期不做限定,可以为1分钟。

作为优选地实施方式,启动碎片整理具体为通过各数据块的中的位图索引信息查找到聚合文件中仍保留的文件碎片,并将文件碎片转移至新的聚合文件。

现有技术中,在进行碎片整理时,需要扫描全部的存储空间,才能确定哪个存储空间是空的,哪个存储空间是占用的,然后再将存储空间剩余的文件碎片转移到新的聚合文件,而通过本发明提供的方法,直接扫描每个数据块的位图索引信息就可以锁定哪个存储空间是占用的,从而将存储空间剩余的文件碎片转移到新的聚合文件。很显然,这样的整理方法非常快捷,节约时间。

以上对本发明所提供的应用在聚合文件上的碎片整理方法进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

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