碎片整理的方法、终端设备及计算机可读存储介质与流程

文档序号:11230372
本发明涉及碎片的整理技术,尤其涉及一种碎片整理的方法、终端设备及计算机可读存储介质。
背景技术
:当前主流Android手机上,data分区以及内置sdcard分区已经合并,在底层依然采用的是ext4日志文件系统。ext4文件系统在设计之初就考虑了碎片问题,并采用了对应的应对策略,比如multi-blockallocator、delayedallocation、blockgroups等。但当文件持续增加,或者存储空间开始满了(%85),碎片仍有可能发生。特别是在Android系统中,随着app的使用,app数据不断膨胀,存储空间越来越紧张,文件系统碎片不可避免。进而导致系统IO性能下降,严重时甚至会影响到系统流畅性以及用户体验。技术实现要素:本发明的主要目的在于提出一种碎片整理的方法、终端设备及计算机可读存储介质,实现了结合文件的被访问频率及被修改频率对文件的碎片化程度进行评估,以确定是否进行碎片清理,从而避免了坏区数目的增加,延长了存储寿命。根据本发明的一个方面,提供了一种碎片整理的方法,所述方法包括:获取第一文件参数和第二文件参数;所述第一文件参数用于描述文件的碎片化程度,所述第二文件参数用于描述所述文件的被操作频率;根据所述第一文件参数和所述第二文件参数确定所述文件的整理评估参数;在所述整理评估参数大于预设阈值的情况下,对所述文件进行磁盘整理操作。可选的,所述第二文件参数的获取,具体包括:获取所述文件的第一参数,所述第一参数包括:上次修改时间、创建时间、上次访问时间及上次碎片整理时间;根据所述第一参数满足以下条件的情况,给所述第二文件参数赋值;所述条件包括:所述文件的上次修改时间是否早于上次碎片整理时间;或者,所述文件的上次访问时间与现在时间的间隔是否大于第一预设值;或者,所述文件的上次修改时间与创建时间的差值是否大于第二预设值。可选的,所述上次碎片整理时间的获取,包括:创建一个配置文件以记录所有所述文件的上次碎片整理时间;或者,为每个所述文件分别创建对应的影子文件,所有所述影子文件均为空文件;当任一所述文件发生碎片整理时,修改相应的所述影子文件的上次修改时间,以记录所述文件的上次碎片整理时间。可选的,所述第一文件参数的获取,包括:根据物理磁盘的区段的数目ExtentNum以及所述文件占用的块数目blocknum,确定所述第一文件参数为:可选的,所述磁盘整理操作包括:将连续块数小于预设阈值的至少两个碎片区段中的内容搬移到一段连续的块中形成整合区段。可选的,所述整合区段与被搬移的所述至少两个碎片区段属于同一个块组。可选的,所述将连续块数小于预设阈值的至少两个碎片区段中的内容搬移到一段连续的块中形成整合区段包括:获取所述文件中连续块数小于预设阈值的碎片区段;合并同一块组中的逻辑上相邻的所述碎片区段以形成合并区段;统计用于存储所述文件的块组链表中每个块组的最大连续块数目;遍历所述合并区段中的所有碎片区段:若所述碎片区段满足第一条件,对所述碎片区段进行组内搬移;或者,若所述碎片区段不满足第一条件,且满足第二条件,对所述碎片区段进行组间搬移;或者,若所述碎片区段同时不满足第一条件及第二条件,则放弃对所述碎片区段的搬移。可选的,所述第一条件为:所述碎片区段的块大小小于块组内最大连续块数目;所述第二条件为:在用于存储所述文件的块组链表中存在足以容纳所述区段的块组。可选的,在所述遍历所述合并区段中的所有碎片区段之后,所述方法还包括:根据区段的搬移结果调整所述区段对应的结构树;记录所述上次碎片整理时间。根据本发明的第二个方面,提供了一种终端设备,所述终端包括存储器、处理器及通信总线;所述通信总线用于所述存储器与所述处理器之间的连接通信;所述处理器用于执行所述存储器中存储的碎片整理的程序,以实现所述的碎片整理的方法的步骤。所述方法包括:获取第一文件参数和第二文件参数;所述第一文件参数用于描述文件的碎片化程度,所述第二文件参数用于描述所述文件的被操作频率;根据所述第一文件参数和所述第二文件参数确定所述文件的整理评估参数;在所述整理评估参数大于预设阈值的情况下,对所述文件进行磁盘整理操作。可选的,所述第二文件参数的获取,具体包括:获取所述文件的第一参数,所述第一参数包括:上次修改时间、创建时间、上次访问时间及上次碎片整理时间;根据所述第一参数满足以下条件的情况,给所述第二文件参数赋值;所述条件包括:所述文件的上次修改时间是否早于上次碎片整理时间;或者,所述文件的上次访问时间与现在时间的间隔是否大于第一预设值;或者,所述文件的上次修改时间与创建时间的差值是否大于第二预设值。可选的,所述上次碎片整理时间的获取,包括:创建一个配置文件以记录所有所述文件的上次碎片整理时间;或者,为每个所述文件分别创建对应的影子文件,所有所述影子文件均为空文件;当任一所述文件发生碎片整理时,修改相应的所述影子文件的上次修改时间,以记录所述文件的上次碎片整理时间。可选的,所述第一文件参数的获取,包括:根据物理磁盘的区段的数目ExtentNum以及所述文件占用的块数目blocknum,确定所述第一文件参数为:可选的,所述磁盘整理操作包括:将连续块数小于预设阈值的至少两个碎片区段中的内容搬移到一段连续的块中形成整合区段。可选的,所述整合区段与被搬移的所述至少两个碎片区段属于同一个块组。可选的,所述将连续块数小于预设阈值的至少两个碎片区段中的内容搬移到一段连续的块中形成整合区段包括:获取所述文件中连续块数小于预设阈值的碎片区段;合并同一块组中的逻辑上相邻的所述碎片区段以形成合并区段;统计用于存储所述文件的块组链表中每个块组的最大连续块数目;遍历所述合并区段中的所有碎片区段:若所述碎片区段满足第一条件,对所述碎片区段进行组内搬移;或者,若所述碎片区段不满足第一条件,且满足第二条件,对所述碎片区段进行组间搬移;或者,若所述碎片区段同时不满足第一条件及第二条件,则放弃对所述碎片区段的搬移。可选的,所述第一条件为:所述碎片区段的块大小小于块组内最大连续块数目;所述第二条件为:在用于存储所述文件的块组链表中存在足以容纳所述区段的块组。可选的,在所述遍历所述合并区段中的所有碎片区段之后,所述方法还包括:根据区段的搬移结果调整所述区段对应的结构树;记录所述上次碎片整理时间。根据本发明的第三个方面,提供了一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有一个或者多个预设程序,所述预设程序被处理器执行时实现所述的碎片整理的方法的步骤。所述方法包括:获取第一文件参数和第二文件参数;所述第一文件参数用于描述文件的碎片化程度,所述第二文件参数用于描述所述文件的被操作频率;根据所述第一文件参数和所述第二文件参数确定所述文件的整理评估参数;在所述整理评估参数大于预设阈值的情况下,对所述文件进行磁盘整理操作。可选的,所述第二文件参数的获取,具体包括:获取所述文件的第一参数,所述第一参数包括:上次修改时间、创建时间、上次访问时间及上次碎片整理时间;根据所述第一参数满足以下条件的情况,给所述第二文件参数赋值;所述条件包括:所述文件的上次修改时间是否早于上次碎片整理时间;或者,所述文件的上次访问时间与现在时间的间隔是否大于第一预设值;或者,所述文件的上次修改时间与创建时间的差值是否大于第二预设值。可选的,所述上次碎片整理时间的获取,包括:创建一个配置文件以记录所有所述文件的上次碎片整理时间;或者,为每个所述文件分别创建对应的影子文件,所有所述影子文件均为空文件;当任一所述文件发生碎片整理时,修改相应的所述影子文件的上次修改时间,以记录所述文件的上次碎片整理时间。可选的,所述第一文件参数的获取,包括:根据物理磁盘的区段的数目ExtentNum以及所述文件占用的块数目blocknum,确定所述第一文件参数为:可选的,所述磁盘整理操作包括:将连续块数小于预设阈值的至少两个碎片区段中的内容搬移到一段连续的块中形成整合区段。可选的,所述整合区段与被搬移的所述至少两个碎片区段属于同一个块组。可选的,所述将连续块数小于预设阈值的至少两个碎片区段中的内容搬移到一段连续的块中形成整合区段包括:获取所述文件中连续块数小于预设阈值的碎片区段;合并同一块组中的逻辑上相邻的所述碎片区段以形成合并区段;统计用于存储所述文件的块组链表中每个块组的最大连续块数目;遍历所述合并区段中的所有碎片区段:若所述碎片区段满足第一条件,对所述碎片区段进行组内搬移;或者,若所述碎片区段不满足第一条件,且满足第二条件,对所述碎片区段进行组间搬移;或者,若所述碎片区段同时不满足第一条件及第二条件,则放弃对所述碎片区段的搬移。可选的,所述第一条件为:所述碎片区段的块大小小于块组内最大连续块数目;所述第二条件为:在用于存储所述文件的块组链表中存在足以容纳所述区段的块组。可选的,在所述遍历所述合并区段中的所有碎片区段之后,所述方法还包括:根据区段的搬移结果调整所述区段对应的结构树;记录所述上次碎片整理时间。本发明有益效果如下:本发明实施例所提供的一种碎片整理的方法、终端设备及计算机可读存储介质,实现了结合文件的被访问频率及被修改频率对文件的碎片化程度进行评估,以确定是否进行碎片清理,此外,通过该整盘整理,以尽量减少搬迁的“体量”,从而减少受影响的cell数目。即该磁盘整理不是针对整个文件的搬移,而是整合那些零散的碎片区段,“化零为整”,以将这些零散的碎片区段搬移一个足够大区段中,而不对规整的区段进行搬移。当然,尽可能搬移到同一个块组中的另一片连续的块上去,从而避免了坏区数目的增加,延长了存储寿命。附图说明图1为本发明第一实施例的流程框图(一);图2为本发明第一实施例的流程图;图3为本发明第一实施例的流程框图(二)。本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。具体实施方式应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本发明的说明,其本身没有特定的意义。因此,“模块”、“部件”或“单元”可以混合地使用。终端可以以各种形式来实施。例如,本发明中描述的终端可以包括诸如手机、平板电脑、笔记本电脑、掌上电脑、个人数字助理(PersonalDigitalAssistant,PDA)、便捷式媒体播放器(PortableMediaPlayer,PMP)、导航装置、可穿戴设备、智能手环、计步器等移动终端,以及诸如数字TV、台式计算机等固定终端。后续描述中将以移动终端为例进行说明,本领域技术人员将理解的是,除了特别用于移动目的的元件之外,根据本发明的实施方式的构造也能够应用于固定类型的终端。首先,应用的数据库文件、私有文件会存放在/data/data目录(后文记作datadirectory)下。也有应用会把数据文件放到内置sdcard中,内置sdcard在ext4之上运行fuse文件系统。在本实施例中,以应用的数据库文件、私有文件存放在/data/data目录(后文记作datadirectory)下为例,进行说明以详尽本发明所载的技术方案。为了便于理解本发明实施例,对本发明第一实施例提供的一种碎片整理的方法。第一实施例:根据图1所示,本发明第一实施例提供了一种碎片整理的方法,所述方法包括:S1:获取第一文件参数和第二文件参数;所述第一文件参数用于描述文件的碎片化程度,所述第二文件参数用于描述所述文件的被操作频率;针对所述第一文件参数,在本实施例中,包括:根据物理磁盘的区段的数目ExtentNum以及所述文件占用的块数目blocknum,确定所述第一文件参数为:而所述第二文件参数的获取,具体包括:获取所述文件的第一参数,所述第一参数包括:上次修改时间、创建时间、上次访问时间及上次碎片整理时间;根据所述第一参数满足以下条件的情况,给所述第二文件参数赋值;所述条件包括:所述文件的上次修改时间是否早于上次碎片整理时间;或者,所述文件的上次访问时间与现在时间的间隔是否大于第一预设值;或者,所述文件的上次修改时间与创建时间的差值是否大于第二预设值。在本本实施例中,第一预设值由系统设置,故无论第一预设值的取值为多少均符合本发明的保护范围。在本本实施例中,第二预设值由系统设置,故无论第二预设值的取值为多少均符合本发明的保护范围。此外,第一文件参数为表示文件的碎片化程度,故第一文件参数的取值范围很小,在1/1000的数量级。因此,在实际使用中,将第一文件参数扩大10000倍,以得到等效的碎片化程度,碎片化程度的范围在[1,100]。根据第一文件参数的值,挑选前10名碎片程度最严重的文件作为碎片化整理的备选文件。备选文件构成的集合记作flist。具体的,初始状态时,每个备选文件的热度为0。若满足所述文件的上次修改时间早于上次碎片整理时间,即经上次整理之后,该文件并没有被修改,故从集合flist中删除该文件。若满足所述文件的上次访问时间与现在时间的间隔是否大于第一预设值;即该文件用户很少访问到(上次访问时间离现在已经很远了,对于那些不常用的app),整理的价值就不大了;故将上次访问时间排序,离现在最远的文件热度加1分,离现在最近的文件热度加10分。若满足所述文件的上次修改时间与创建时间的差值是否大于第二预设值;即该文件被修改的机会很少(上次修改时间离现在已经很远了),整理的价值也不大。故将上次访问时间排序,离现在最远的文件热度加1分,离现在最近的文件热度加10分。就此,就可以得到第二文件参数的数值。根据备选文件,也可得出第一文件参数。其中,所述上次碎片整理时间的获取,包括:创建一个配置文件以记录所有所述文件的上次碎片整理时间;或者,为每个所述文件分别创建对应的影子文件,所有所述影子文件均为空文件;当任一所述文件发生碎片整理时,修改相应的所述影子文件的上次修改时间,以记录所述文件的上次碎片整理时间。具体的,针对创建一个配置文件统一记录所有所述文件的上次碎片整理时间;在本实施例中,可以示范性的设置为:创建一个xml文件来以记录所有文件的上次碎片整理时间。针对为每个所述文件分别创建对应的影子文件,所有所述影子文件均是空文件,当任一所述文件发生碎片整理时,修改相应的所述影子文件的上次修改时间,以记录所述文件的上次碎片整理时间。在本实施例中,为每个文件均创建一个对应的影子文件,当然,所有的影子文件都是空文件,当其中一个文件发生碎片整理时,就示范性的用touch命令修改该影子文件的上次修改时间,从而就可以以该文件的上次修改时间来记录该文件的上次碎片整理时间。S2:根据所述第一文件参数和所述第二文件参数确定所述文件的整理评估参数;在执行S1后,在本实施例例中,依据第一文件参数及第二文件参数构建整理评估参数,从而实现确定所述文件的整理评估参数。在本实施例中,赋予第一文件参数为f,赋予第二参数为k,整理评估参数为s,即确定就构建评估函数s=F(f,k)。在本实施例中,整理评估函数s=F(f,k)示范性的设为线性函数,而且,在本实施例中,并不对整理评估函数s=F(f,k)的种类进行限定,故无论整理评估函数s=F(f,k)为何种函数,均符合本发明的保护范围。故在本实施例中,示范性的设置整理评估函数s=f+k,由S1已得出第一文件参数及第二文件参数,故可以得出整理评估函数。S3:在所述整理评估参数大于预设阈值的情况下,对所述文件进行磁盘整理操作。在本实施例中,由S2中可以得出整理评估函数s,故通过比较s与预设阈值的大小,若所述整理评估参数s大于预设阈值的情况下,对所述文件进行磁盘整理操作。在本本实施例中,预设阈值由系统设置,故无论预设阈值的取值为多少均符合本发明的保护范围。就此,就可以利用S1至S3以实现了结合文件的被访问频率及被修改频率对文件的碎片化程度进行评估,以确定是否进行碎片清理,就此避免了坏区数目的增加,延长了存储寿命。此外,上述的所述磁盘整理操作包括:将连续块数小于预设阈值的至少两个碎片区段中的内容搬移到一段连续的块中形成整合区段。进一步优化的,所述整合区段与被搬移的所述至少两个碎片区段属于同一个块组。因为常规磁盘整理的思路就是将文件拷贝到新的位置,再把原文件删掉。拷贝时,日志型文件系统会把它们作为新的文件,计算文件的大小,并将它们整齐地放置到磁盘中而不产生碎片。但是每个cell有写入次数的寿命限制。如果整个文件搬移,就会增加坏区数目,减少存储寿命。故通过该整盘整理,以尽量减少搬迁的“体量”,从而减少受影响的cell数目。即该磁盘整理不是针对整个文件的搬移,而是整合那些零散的区段,“化零为整”,以将这些零散的区段搬移一个足够大区段中,而不对规整的区段进行搬移。当然,尽可能搬移到同一个块组中的另一片连续的块上去,从而避免了坏区数目的增加,延长了存储寿命。其中,所述将连续块数小于预设阈值的至少两个碎片区段中的内容搬移到一段连续的块中形成整合区段包括:S11:获取所述文件中连续块数小于预设阈值的碎片区段;其中,在本实施例中,示范性的设置预设阈值为1024,即获取碎片整理对象,在本实施例中,即为获取连续的块数目小于1024的区段。S12:合并同一块组中的逻辑上相邻的所述碎片区段以形成合并区段;即合并同一块组中的逻辑上相邻的所述碎片区段。S13:统计用于存储所述文件的块组链表中每个块组的最大连续块数目;统计用于存储所述文件的块组链表中每个块组中的最大的连续块数目。S14:遍历所述合并区段中的所有碎片区段;从其所述合并区段依次取出区段。S15:若所述碎片区段满足第一条件,对所述碎片区段进行组内搬移;或者,若所述碎片区段不满足第一条件,且满足第二条件,对所述碎片区段进行组间搬移;或者,若所述碎片区段同时不满足第一条件及第二条件,则放弃对所述碎片区段的搬移。其中,所述第一条件为:所述碎片区段的块大小小于块组内最大连续块数目;所述第二条件为:在用于存储所述文件的块组链表中存在足以容纳所述区段的块组。其中,所述碎片区段的块大小为经合并同一个块组中的在逻辑块概念上相邻的区段后的区段上的块的数目;块组内最大连续块数目为一个块组中最大连续的块数目。若取出的区段的所述碎片区段的块大小满足第一条件,则对取出的区段进行组内搬移;若取出的区段的所述碎片区段的块大小不满足第一条件,却满足第二条件,则对取出的区段进行组件搬移;或者,若取出的区段的所述碎片区段的块大小既不满足第一条件,也不满足第二条件,则放弃对取出的区段的搬移。此外,在所述遍历所述合并区段中的所有碎片区段之后,所述方法还包括:根据区段的搬移结果调整所述区段对应的结构树;记录所述上次碎片整理时间。即当其在逻辑块概念上相邻的区段在合并后的同一块组中无法获取碎片区段时,调整结构树;记录所述上次碎片整理时间。故通过该整盘整理,以尽量减少搬迁的“体量”,从而减少受影响的cell数目。即该磁盘整理不是针对整个文件的搬移,而是整合那些零散的碎片区段,“化零为整”,以将这些零散的碎片区段搬移一个足够大区段中,而不对规整的区段进行搬移。当然,尽可能搬移到同一个块组中的另一片连续的块上去,从而避免了坏区数目的增加,延长了存储寿命。以上S11至S15可以由以下步骤进行详细阐述:S21:获取所述文件中连续块数小于预设阈值的碎片区段;S22:合并同一块组中的逻辑上相邻的所述碎片区段以形成合并区段;S23:统计用于存储所述文件的块组链表中每个块组的最大连续块数目;S24:从S22的合并区段中依次获取一个碎片区段,直至获取所有的碎片区段;S25:所述碎片区段的块大小小于块组内最大连续块数目;S26:若是,则对所述碎片区段进行组内搬移;S27:返回S24;S26:当从S22中无法获取碎片区段时,根据区段的搬移结果调整所述区段对应的结构树;S27:记录所述上次碎片整理时间。可选的,S24及S25之间还包括:S241:否则,则在用于存储所述文件的块组链表中存在足以容纳所述区段的块组;S242:若是,则执行S27,否则,放弃对所述碎片区段的搬迁;S243:执行S27。通过S21至S27及S241至S243,可以尽量减少搬迁的“体量”,从而减少受影响的cell数目。即该磁盘整理不是针对整个文件的搬移,而是整合那些零散的碎片区段,“化零为整”,以将这些零散的碎片区段搬移一个足够大合并区段中,而不对规整的碎片区段进行搬移。当然,尽可能搬移到同一个块组中的另一片连续的块上去,从而避免了坏区数目的增加,延长了存储寿命。针对获取所述文件中连续块数小于预设阈值的碎片区段,碎片区段为连续块数目小于1024的区段,是碎片整理的对象。为了便于理解本发明实施例,对本发明第二实施例提供的一种终端设备。第二实施例:本发明第二实施例提供了一种终端设备,所述终端包括存储器、处理器及通信总线;所述通信总线用于所述存储器与所述处理器之间的连接通信;所述处理器用于执行所述存储器中存储的碎片整理的程序,以实现所述的碎片整理的方法的步骤。所述方法包括:获取第一文件参数和第二文件参数;所述第一文件参数用于描述文件的碎片化程度,所述第二文件参数用于描述所述文件的被操作频率;根据所述第一文件参数和所述第二文件参数确定所述文件的整理评估参数;在所述整理评估参数大于预设阈值的情况下,对所述文件进行磁盘整理操作。可选的,所述第二文件参数的获取,具体包括:获取所述文件的第一参数,所述第一参数包括:上次修改时间、创建时间、上次访问时间及上次碎片整理时间;根据所述第一参数满足以下条件的情况,给所述第二文件参数赋值;所述条件包括:所述文件的上次修改时间是否早于上次碎片整理时间;或者,所述文件的上次访问时间与现在时间的间隔是否大于第一预设值;或者,所述文件的上次修改时间与创建时间的差值是否大于第二预设值。可选的,所述上次碎片整理时间的获取,包括:创建一个配置文件以记录所有所述文件的上次碎片整理时间;或者,为每个所述文件分别创建对应的影子文件,所有所述影子文件均为空文件;当任一所述文件发生碎片整理时,修改相应的所述影子文件的上次修改时间,以记录所述文件的上次碎片整理时间。可选的,所述第一文件参数的获取,包括:根据物理磁盘的区段的数目ExtentNum以及所述文件占用的块数目blocknum,确定所述第一文件参数为:可选的,所述磁盘整理操作包括:将连续块数小于预设阈值的至少两个碎片区段中的内容搬移到一段连续的块中形成整合区段。可选的,所述整合区段与被搬移的所述至少两个碎片区段属于同一个块组。可选的,所述将连续块数小于预设阈值的至少两个碎片区段中的内容搬移到一段连续的块中形成整合区段包括:获取所述文件中连续块数小于预设阈值的碎片区段;合并同一块组中的逻辑上相邻的所述碎片区段以形成合并区段;统计用于存储所述文件的块组链表中每个块组的最大连续块数目;遍历所述合并区段中的所有碎片区段:若所述碎片区段满足第一条件,对所述碎片区段进行组内搬移;或者,若所述碎片区段不满足第一条件,且满足第二条件,对所述碎片区段进行组间搬移;或者,若所述碎片区段同时不满足第一条件及第二条件,则放弃对所述碎片区段的搬移。可选的,所述第一条件为:所述碎片区段的块大小小于块组内最大连续块数目;所述第二条件为:在用于存储所述文件的块组链表中存在足以容纳所述区段的块组。可选的,在所述遍历所述合并区段中的所有碎片区段之后,所述方法还包括:根据区段的搬移结果调整所述区段对应的结构树;记录所述上次碎片整理时间。通过本发明第二实施例提供了一种计算机可读存储介质实现了结合文件的被访问频率及被修改频率对文件的碎片化程度进行评估,以确定是否进行碎片清理,此外,通过该整盘整理,以尽量减少搬迁的“体量”,从而减少受影响的cell数目。即该磁盘整理不是针对整个文件的搬移,而是整合那些零散的碎片区段,“化零为整”,以将这些零散的碎片区段搬移一个足够大区段中,而不对规整的区段进行搬移。当然,尽可能搬移到同一个块组中的另一片连续的块上去,从而避免了坏区数目的增加,延长了存储寿命。为了便于理解本发明实施例,对本发明第三实施例提供的一种计算机可读存储介质。第三实施例:本发明第三实施例提供了一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有一个或者多个预设程序,所述预设程序被处理器执行时实现所述的碎片整理的方法的步骤。所述方法包括:获取第一文件参数和第二文件参数;所述第一文件参数用于描述文件的碎片化程度,所述第二文件参数用于描述所述文件的被操作频率;根据所述第一文件参数和所述第二文件参数确定所述文件的整理评估参数;在所述整理评估参数大于预设阈值的情况下,对所述文件进行磁盘整理操作。可选的,所述第二文件参数的获取,具体包括:获取所述文件的第一参数,所述第一参数包括:上次修改时间、创建时间、上次访问时间及上次碎片整理时间;根据所述第一参数满足以下条件的情况,给所述第二文件参数赋值;所述条件包括:所述文件的上次修改时间是否早于上次碎片整理时间;或者,所述文件的上次访问时间与现在时间的间隔是否大于第一预设值;或者,所述文件的上次修改时间与创建时间的差值是否大于第二预设值。可选的,所述上次碎片整理时间的获取,包括:创建一个配置文件以记录所有所述文件的上次碎片整理时间;或者,为每个所述文件分别创建对应的影子文件,所有所述影子文件均为空文件;当任一所述文件发生碎片整理时,修改相应的所述影子文件的上次修改时间,以记录所述文件的上次碎片整理时间。可选的,所述第一文件参数的获取,包括:根据物理磁盘的区段的数目ExtentNum以及所述文件占用的块数目blocknum,确定所述第一文件参数为:可选的,所述磁盘整理操作包括:将连续块数小于预设阈值的至少两个碎片区段中的内容搬移到一段连续的块中形成整合区段。可选的,所述整合区段与被搬移的所述至少两个碎片区段属于同一个块组。可选的,所述将连续块数小于预设阈值的至少两个碎片区段中的内容搬移到一段连续的块中形成整合区段包括:获取所述文件中连续块数小于预设阈值的碎片区段;合并同一块组中的逻辑上相邻的所述碎片区段以形成合并区段;统计用于存储所述文件的块组链表中每个块组的最大连续块数目;遍历所述合并区段中的所有碎片区段:若所述碎片区段满足第一条件,对所述碎片区段进行组内搬移;或者,若所述碎片区段不满足第一条件,且满足第二条件,对所述碎片区段进行组间搬移;或者,若所述碎片区段同时不满足第一条件及第二条件,则放弃对所述碎片区段的搬移。可选的,所述第一条件为:所述碎片区段的块大小小于块组内最大连续块数目;所述第二条件为:在用于存储所述文件的块组链表中存在足以容纳所述区段的块组。可选的,在所述遍历所述合并区段中的所有碎片区段之后,所述方法还包括:根据区段的搬移结果调整所述区段对应的结构树;记录所述上次碎片整理时间。通过本发明第三实施例提供了一种计算机可读存储介质实现了结合文件的被访问频率及被修改频率对文件的碎片化程度进行评估,以确定是否进行碎片清理,此外,通过该整盘整理,以尽量减少搬迁的“体量”,从而减少受影响的cell数目。即该磁盘整理不是针对整个文件的搬移,而是整合那些零散的碎片区段,“化零为整”,以将这些零散的碎片区段搬移一个足够大区段中,而不对规整的区段进行搬移。当然,尽可能搬移到同一个块组中的另一片连续的块上去,从而避免了坏区数目的增加,延长了存储寿命。需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。当前第1页1 2 3 
再多了解一些
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1