一种文件存储方法和装置的制作方法

文档序号:6371291阅读:158来源:国知局
专利名称:一种文件存储方法和装置的制作方法
技术领域
本发明涉及计算机技术领域,尤其涉及一种数据存储方法和装置,特别涉及一种文件存储方法和装置。
背景技术
在计算机中,磁盘上的每个磁道被分为若干个弧段,一个弧段就是磁盘的一个扇区。操作系统会将用户的磁盘空间分为若干个磁盘分卷来进行管理,例如,常见的C盘就是一个磁盘分卷。每个磁盘分卷上的空间进一步被划分为若干个簇。物理簇号(LogicalCluster Number, LCN)是磁盘分卷上的簇按照其在磁盘分卷上的物理位置顺序得到的编号,用于表示其是该磁盘分卷上第几个簇。簇是磁盘文件存储和管理的最小单位,每一簇所包含的扇区可能会因为文件系统的不同而不同。在实际应用中,随着计算机使用的时间变长,磁盘上会产生许多文件碎片,即文件的不同部分存储在磁盘分卷上LCN不连续的多个簇上,例如图I所示。图I是磁盘上的文件存储示意图。图I模拟了磁盘中的文件存储情况,其中每一单元格代表一个簇,由图I可见,A、B、C三个文件中,只有文件C是连续存储的,文件A和文件B均包括文件碎片,即存储文件A的簇的LCN不连续,存储文件B的簇的LCN也不连续。磁盘上不连续的文件碎片无形中增加了磁盘的寻道时间,降低了磁盘的IO性能。现有技术中,通过磁盘碎片整理将这些零散的文件碎片重新排布到一起,使得同一个文件的所有内容在物理磁盘上的存储位置连续,从而优化磁盘的IO性能。进一步地,在将零散的文件碎片重新排布到一起时,还可以对重新排布的文件进行压缩,实现紧凑排布。可见,目前的磁盘碎片整理方案,仅仅是将同一个文件的文件碎片进行整合,使其连续存储在磁盘上。然而,随着时间的推移,很多已经整理过的文件,还会随着内容的增加而再次产生文件碎片,导致需要反复进行磁盘碎片整理。

发明内容
有鉴于此,本发明提供了一种文件存储方法和装置,能够在一定程度上防止文件碎片的产生。本发明的技术方案具体是这样实现的一种文件存储方法,该方法包括识别出可编辑格式的文件;对可编辑格式的文件进行连续存储,并为该可编辑格式的文件预留存储空间。一种文件存储装置,该装置包括识别模块和整理模块;所述识别模块,用于识别出可编辑格式的文件;所述整理模块,用于对可编辑格式的文件进行连续存储,并为该可编辑格式的文件预留存储空间。由上述技术方案可见,本发明通过识别出可编辑格式的文件,不仅对可编辑格式的文件进行连续存储,而且,还为可编辑格式的文件预留存储空间,这样,可编辑格式的文件新增加的内容可以存储在该预留的存储空间中,因此能够一定程度上避免由于内容的增加而产生文件碎片。总之,本发明通过识别出可编辑格式的文件,对可编辑格式的文件进行特殊处理,即在存储时为该可编辑格式的文件预留存储空间,因此能够一定程度上防止文件碎片的产生。


图I是磁盘上的文件存储示意图; 图2是本发明提供的文件存储方法第一流程图;图3是本发明提供的文件存储方法第二流程图;图4是本发明提供的对文件进行磁盘碎片整理的详细流程图。图5是本发明提供的可编辑格式文件的识别流程图;图6是B文件和A文件的初始分布模拟示意图;图7是为B文件和A文件预留了存储空间、且将B文件和A文件存储在高物理簇号的存储位置时的分布模拟示意图;图8是本发明提供的文件存储装置第一结构图;图9是本发明提供的文件存储装置第二结构图。
具体实施例方式图2是本发明提供的文件存储方法第一流程图。如图2所示,该流程包括步骤201,识别出可编辑格式的文件。步骤202,对可编辑格式的文件进行连续存储,并为该可编辑格式的文件预留存储空间。可见,图2所示方法通过识别出可编辑格式的文件,对可编辑格式的文件进行特殊处理,即在存储时为该可编辑格式的文件预留存储空间,因此能够一定程度上防止文件碎片的产生图3是本发明提供的文件存储方法第二流程图。如图3所示,该方法包括步骤301,识别出可编辑格式的文件;步骤302,计算该文件占用的存储空间的变化率;步骤303,根据该变化率确定需要为该文件预留的存储空间大小;步骤304,对该文件进行连续存储,并根据所述需要为该文件预留的存储空间大小,在该文件的尾部预留存储空间。可见,图3所示方法在图2所示方法基础上,一方面,通过获取可编辑格式文件的存储空间变化率、根据该变化率确定需要为可编辑格式文件预留的存储空间大小,使得可编辑格式文件预留的存储空间大小能够适应可编辑格式文件占用的存储空间变化情况,并提高了存储空间的利用率;另一方面,通过在可编辑格式文件的尾部预留存储空间,使得可编辑格式文件新增加的内容可以直接存储在尾部预留的存储空间中,从而完全避免了文件碎片的产生。其中,本发明所述可编辑格式,是指能够被用户或者程序修改内容的文件格式,例如,以“ log”、“.d0CX”、“. wps”或“ db”为后缀名的文件就是可编辑格式的文件。相对于可编辑格式,不可编辑格式是指一般不能被用户或者程序修改内容的文件格式,例如以“.dll”为后缀名的二进制可执行文件、以“.roF”为后缀名的文件等都是不可编辑格式的文件。
图I和图2提供的文件存储方法,典型地,可以应用在磁盘碎片整理流程中。其中,对于不可编辑格式的文件的碎片整理方式可以不做限定,例如,可以对其进行连续存储以及紧凑排布。下面以对不可编辑格式的文件进行紧凑排布式的碎片整理为例,示例性介绍对文件进行磁盘碎片整理的详细流程,具体请参见图4。图4是本发明提供的对文件进行磁盘碎片整理的详细流程图。如图4所示,该流程包括步骤401,判断文件是否为可编辑格式,如果是,执行步骤402,否则,执行步骤405。步骤402,获取该文件占用的存储空间的变化率。步骤403,根据该变化率确定需要为该文件预留的存储空间大小。步骤404,对该文件进行连续存储,并根据所述需要为该文件预留的存储空间大小,在该文件的尾部预留存储空间,结束本流程。步骤405,对该文件进行紧凑排布,结束本流程。在图2-图4中,均涉及如何识别文件是否为可编辑格式,在实际应用中,可以根据文件的后缀名和/或文件内容确定文件是否是可编辑格式,例如可以根据文件的后缀名判断该文件是否是可编辑格式;或者,可以识别文件的起始字符串,根据文件的起始字符串判断该文件是否是可编辑格式;或者,可以识别出文件内容中的可打印字符,确定可打印字符在文件内容中的出现频率,在所述出现频率高于预定阈值时,确定该文件是可编辑格式,反之该文件不是可编辑格式。其中,所述可打印字符,是指能够通过键盘等输入设备输入到电脑中并进行显示的字符,与可打印字符相反的,无法通过键盘等输入设备输入到电脑中的字符是不可打印字符,例如,有时电脑中显示的乱码字符,就是不可打印字符。上述用于识别文件是否是可编辑格式的各种方法可以单独使用,也可以组合使用,例如,可以先根据文件的后缀名判断文件是否是可编辑格式,如果文件没有后缀名,则可以进一步根据文件的起始字符串或者文件内容中的可打印字符的出现频率判断文件是否是可编辑格式。下面结合图5对可编辑格式文件的识别流程进行示例性介绍,具体请参见图5。图5是本发明提供的可编辑格式文件的识别流程图。如图5所示,该流程包括步骤501,判断文件是否具有可识别的后缀名,如果是,执行步骤502,否则,执行步骤503。本步骤中,可以先判断文件是否具有后缀名,如果具有不具有后缀名,则直接执行步骤503,如果具有后缀名,但是根据该后缀名无法判断该文件的格式是否是可编辑格式,则执行步骤503,如果根据该后缀名能够判断该文件的格式是否是可编辑格式,即该文件具有可识别的后缀名,则执行步骤502。步骤502,根据文件的后缀名判断该文件是否是可编辑格式,并执行步骤507。步骤503,识别出文件内容中的起始字符串。步骤504,根据该起始字符串判断该文件是否是可编辑格式,如果能够判断出文件是否是可编辑格式,则执行步骤507,如果不能判断出文件是否是可编辑格式,执行步骤505。本步骤中,可以先根据文件起始字符串的内容,判断是否能够识别文件的具体格 式,如果能够识别出文件的具体格式,再根据该具体格式判断该文件的具体格式是否是可编辑格式,如果不能识别文件的具体格式、或者根据文件的具体格式不能判断文件是否是可编辑格式,则执行步骤505。其中,所述起始字符串的内容一般包括文件头的内容。其中,由于可执行文件、图像文件等某些具体的文件格式,其起始字符串的内容和/或结构都是固定的,因此可以根据文件的起始字符串识别文件的具体格式。步骤505,识别出文件内容中的可打印字符,确定可打印字符在文件内容中的出现频率。步骤506,根据可打印字符在文件内容中的出现频率确定文件是否是可编辑格式。一般地,文件内容中可打印字符的出现频率越高,说明该文件是可编辑格式的文件的可能性越大,因此,可以根据可打印字符在文件内容中的出现频率确定文件是否是可编辑格式。例如,在所述出现频率高于预定阈值时,确定该文件是可编辑格式,反之该文件不是可编辑格式。其中,所述预定阈值可以是预设的固定数值,也可以是根据预设的特定规则而确定的数值。步骤507,输出文件是否是可编辑格式的判断结果。本发明中,在获取文件占用的存储空间的变化率时,可以依据以往对该文件的记录信息获取所述变化率,例如根据文件变动日期、文件变动大小、文件源大小、文件变动后的大小等信息获取所述变化率。所述变化率仅仅用于反映文件大小的变化速度,并不限定于特定的获取方法。例如,假设第二时间点Btime是第一时间点Atime之后的时间点,可以根据在第二时间点Bt ime时该文件占用的存储空间大小Bsize,和在第一时间点Atime时该文件占用的存储空间大小Asize,确定该文件占用的存储空间的变化率。因为所述变化率能够反映文件大小的变化速度,因此可以根据该变化率的取值为文件预留合适的存储空间,例如,为文件大小增长较快的文件分配较多的预留空间,为文件大小增长较慢的文件分配较小的预留空间,对于文件大小不增长甚至负增长(即文件大小变小了、呈减小趋势)的文件,则可以不分配预留空间。例如,在文件占用的存储空间的变化率为负数或0时,不为该文件预留存储空间,在该变化率为正时,为该文件预留的存储空间不小于为变化率小于该文件的变化率的其他文件预留的存储空间,比如,在变化率为正时,可以是文件的变化率越大,则为文件预留的存储空间越大,也可以将变化率划分为多个区间,当不同的文件的变化率处于同一个区间时,可以为该不同的文件分配相同大小的存储空间,当不同的文件的变化率处于不同区间时,为变化率较大的文件预留较大的存储空间。其中,对于不需要预留存储空间的可编辑格式的文件,可以与不可编辑格式的文件采用相同的碎片整理方法,例如,可以采用紧凑排布方式进行碎片整理。本发明中,为该文件预留存储空间的方法具体可以包括通过编程接口,将文件的大小设置为该文件的当前实际大小和需要为该文件预留的存储空间大小之和,根据为该文件设置的文件大小存储该文件。比如,实际大小为IK的文件,如果要为此文件预留IK的空间,则可以通过编程接口将该文件的大小设置为2K,并按照该文件的大小为2K来存储该文件。其中,虽然为该文件增加了 IK的存储空间,但是该IK的存储空间当前并未占用,而仅仅是为未来可能要添加的内容预留了存储空间。而预留的该IK的存储空间,由于已经被设置为属于该文件,因此,文件系统也无法将预留的该IK的存储空间分配给其他文件。另外,本申请人还通过对可编辑格式文件的存储位置的研究,提供了避免将预留 存储空间分配给其他文件的优选方法。具体地,本申请人注意到,文件系统一般都是由低物理簇号向高物理簇号分配存储空间,若可编辑格式文件存储位置的物理簇号较低,那么,如果可编辑格式文件后面预留有空闲的存储空间,但是该空闲的存储空间并没有设置为属于该文件,即没有根据该文件的实际大小和预留存储空间的大小之和存储该文件,则这部分空闲的存储空间很可能会被文件系统分配给其它文件。为了防止此种情况发生,本发明提出,预先从LCN高于预定阈值的磁盘空间划分出专门的存储区域,用于存储可编辑格式的文件,则对可编辑格式文件进行连续存储时,将可编辑格式文件存储在该专门的存储区域内。其中,LCN高于的所述预定阈值,可以是预设的固定数值,也可以是根据预设的特定规则确定出的、能够依据特定情况的变化而变化的数值。当将可编辑格式文件存储在该专门的存储区域内时,由于文件系统由低物理簇号向高物理簇号分配空间,所以除非低物理簇号分配的空间全部被使用,否则文件系统不会将用于存储可编辑格式文件的存储区域的空间分配用于他用。因此,当将该文件存储在预先从物理簇号LCN高于预定阈值的磁盘空间划分出的存储区域中时,即使在该文件的尾部预留了存储空间,但是没有将该预留的存储空间设置为属于该文件,则该预留的存储空间也不会被文件系统分配给其他文件。此时,为该文件预留存储空间的方法可以包括将该文件的下一可编辑格式文件的起始存储地址,确定为该文件的结束存储地址与为该文件预留的存储空间大小之和。例如,文件I的结束存储地址为Al,下一文件(记为文件2)的起始存储地址为A2,则Al与A2之间预留有为文件I预留的存储空间。当然,本发明提供的通过编程接口将文件大小设置为该文件的实际大小与预留空间大小之和的方法、以及将可编辑格式的文件存储在LCN高于预定阈值的磁盘空间的方法也可以同时使用。下面结合例子,对本发明中为可编辑格式文件预留存储空间以及可编辑格式文件的存储位置进行示例性介绍,具体请参见图6-图7。图6是B文件和A文件的初始分布模拟示意图。
图6中,每个格子代表IK的存储空间,B文件和A文件的初始存储位置如图6所
/Jn o图7是为B文件和A文件预留了存储空间、且将B文件和A文件存储在高物理簇号的存储位置时的分布模拟示意图。图7中,B文件和A文件都是可编辑格式文件,B文件需要预留IK的存储空间,A文件需要预留2K的存储空间,由图7可见,B文件和A文件都被移到了高物理簇号的存储位置上,且A文件后面预留了 2K的未分配存储空间,B文件后面预留了 IK的未分配存储空间。根据本发明提供的上述方法,本发明还提供了相应的装置,具体请参见图8。 图8是本发明提供的文件存储装置第一结构图。如图8所示,该装置包括识别模块801和整理模块802 ;识别模块801,用于识别出可编辑格式的文件。整理模块802,用于对可编辑格式的文件进行连续存储,并为该可编辑格式的文件预留存储空间。整理模块802,可以用于在该可编辑格式的文件的尾部预留存储空间。整理模块802,具体可以用于通过编程接口,将可编辑格式的文件的大小设置为该可编辑格式的文件的当前实际大小和需要为该可编辑格式的文件预留的存储空间大小之和,根据为该可编辑格式的文件设置的文件大小存储该可编辑格式的文件。和/或,整理模块802,具体可以用于将可编辑格式的文件存储在预先从物理簇号LCN高于预定阈值的磁盘空间划分出的存储区域中。其中,识别模块801,可以用于根据文件的后缀名判断该文件是否是可编辑格式;和/或,识别文件的起始字符串,根据文件的起始字符串判断该文件是否是可编辑格式;和/或,识别出文件内容中的可打印字符,确定可打印字符在文件内容中的出现频率,在所述出现频率高于预定阈值时,确定该文件是可编辑格式,反之该文件不是可编辑格式。图9是本发明提供的文件存储装置第二结构图。如图9所示,该装置包括识别模块901、计算模块902、确定模块903和整理模块904。其中的识别模块901与图8中的识别模块801相同,整理模块904与图8中的整理模块802相同。计算模块902,用于计算可编辑格式的文件占用的存储空间的变化率。确定模块903,用于根据该变化率确定需要为该可编辑格式的文件预留的存储空间大小。整理模块904,还可以用于根据所述需要为该可编辑格式的文件预留的存储空间大小,在该可编辑格式的文件的尾部预留存储空间。其中,确定模块903,可以用于在该变化率为负数或0时,不为该文件预留存储空间,在该变化率为正数时,为该文件预留的存储空间不小于为变化率小于该文件的变化率的其他文件预留的存储空间。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
权利要求
1.一种文件存储方法,其特征在于,该方法包括识别出可编辑格式的文件;对可编辑格式的文件进行连续存储,并为该可编辑格式的文件预留存储空间。
2.根据权利要求I所述的方法,其特征在于,所述预留存储空间包括在该可编辑格式的文件的尾部预留存储空间。
3.根据权利要求I或2所述的方法,其特征在于,所述预留存储空间包括通过编程接口,将可编辑格式的文件的大小设置为该可编辑格式的文件的当前实际大小和需要为该可编辑格式的文件预留的存储空间大小之和,根据为该可编辑格式的文件设置的文件大小存储该可编辑格式的文件。
4.根据权利要求I或2所述的方法,其特征在于,所述对可编辑格式的文件进行连续存储包括将可编辑格式的文件存储在预先从物理簇号LCN高于预定阈值的磁盘空间划分出的存储区域中。
5.根据权利要求I或2所述的方法,其特征在于,该方法还包括计算可编辑格式的文件占用的存储空间的变化率,根据该变化率确定需要为该可编辑格式的文件预留的存储空间大小;所述预留存储空间包括根据所述需要为该可编辑格式的文件预留的存储空间大小, 为该可编辑格式的文件预留存储空间。
6.根据权利要求5所述的方法,其特征在于,所述根据该变化率确定需要为该可编辑格式的文件预留的存储空间大小包括在该变化率为负数或O时,不为该文件预留存储空间,在该变化率为正数时,为该文件预留的存储空间不小于为变化率小于该文件的变化率的其他文件预留的存储空间。
7.根据权利要求I所述的方法,其特征在于,所述识别出可编辑格式的文件包括根据文件的后缀名判断该文件是否是可编辑格式;和/或,识别文件的起始字符串,根据文件的起始字符串判断该文件是否是可编辑格式;和/或,识别出文件内容中的可打印字符,确定可打印字符在文件内容中的出现频率, 在所述出现频率高于预定阈值时,确定该文件是可编辑格式,反之该文件不是可编辑格式。
8.一种文件存储装置,其特征在于,该装置包括识别模块和整理模块;所述识别模块,用于识别出可编辑格式的文件;所述整理模块,用于对可编辑格式的文件进行连续存储,并为该可编辑格式的文件预留存储空间。
9.根据权利要求8所述的装置,其特征在于,所述整理模块,用于在该可编辑格式的文件的尾部预留存储空间。
10.根据权利要求8或9所述的装置,其特征在于,所述整理模块,用于通过编程接口,将可编辑格式的文件的大小设置为该可编辑格式的文件的当前实际大小和需要为该可编辑格式的文件预留的存储空间大小之和,根据为该可编辑格式的文件设置的文件大小存储该可编辑格式的文件。
11.根据权利要求8或9所述的装置,其特征在于,所述整理模块,用于将可编辑格式的文件存储在预先从物理簇号LCN高于预定阈值的磁盘空间划分出的存储区域中。
12.根据权利要求8或9所述的装置,其特征在于,该装置还包括计算模块和确定模块;所述计算模块,用于计算可编辑格式的文件占用的存储空间的变化率;所述确定模块,用于根据该变化率确定需要为该可编辑格式的文件预留的存储空间大小;所述整理模块,用于根据所述需要为该可编辑格式的文件预留的存储空间大小,为该可编辑格式的文件预留存储空间。
13.根据权利要求12所述的装置,其特征在于,所述确定模块,用于在该变化率为负数或O时,不为该文件预留存储空间,在该变化率为正数时,为该文件预留的存储空间不小于为变化率小于该文件的变化率的其他文件预留的存储空间。
14.根据权利要求8所述的装置,其特征在于,所述识别模块,用于根据文件的后缀名判断该文件是否是可编辑格式;和/或,识别文件的起始字符串,根据文件的起始字符串判断该文件是否是可编辑格式;和/或,识别出文件内容中的可打印字符,确定可打印字符在文件内容中的出现频率,在所述出现频率高于预定阈值时,确定该文件是可编辑格式,反之该文件不是可编辑格式。
全文摘要
本发明实施例公开了一种文件存储方法和装置。该方法包括识别出可编辑格式的文件,对可编辑格式的文件进行连续存储,并为该可编辑格式的文件预留存储空间。应用本发明能够在一定程度上防止文件碎片的产生。
文档编号G06F17/30GK102693325SQ201210192669
公开日2012年9月26日 申请日期2012年6月12日 优先权日2012年6月12日
发明者林道正 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1