掌桥专利:专业的专利平台
掌桥专利
首页

磁盘整理方法、装置和存储介质

文献发布时间:2024-04-18 20:01:55


磁盘整理方法、装置和存储介质

技术领域

本公开涉及计算机技术领域,尤其涉及一种磁盘整理方法、装置和存储介质。

背景技术

随着科技不断发展,智能手机等用户终端逐渐成为生活中必不可少的一部分。在手机频繁使用的过程中,不可避免地遇到手机越来越卡顿的问题。手机产生卡顿的原因之一是手机长期使用产生了大量磁盘碎片,磁盘读写效率下降,系统流畅性降低。

目前,针对手机磁盘碎片增多造成的卡顿问题,用户采用的解决方式主要包括:

(1)使用手机清理类软件或卸载不常用的应用,这种方式只是删除文件,释放空间,并不能解决碎片化问题;

(2)格式化手机,将手机恢复出厂设置,这种方式需要用户备份资料,重新安装应用,操作非常繁琐。

发明内容

本公开实施例提供一种磁盘整理方法、装置和存储介质。

根据本公开实施例的第一方面,提供了一种磁盘整理方法,所述方法包括:

确定磁盘中连续空闲块数量最多的目标存储空间;

当所述目标存储空间的容量小于预设容量阈值时,将所述目标存储空间相邻的数据块的数据内容迁移到所述目标存储空间外的空闲块中。

在一些实施例中,所述方法还包括:

当所述目标存储空间的容量大于或等于所述预设容量阈值时,从所述目标存储空间的起始地址开始,将目标文件迁移到所述目标存储空间内连续分布的多个空闲块,其中,在迁移到所述目标存储空间之前,所述目标文件存储在多个不连续分布的多个数据块上。

在一些实施例中,所述方法还包括:

根据所述磁盘的碎片化程度和/或热数据文件的碎片化程度,确定是否需要执行所述磁盘整理;其中,所述热数据文件为:所述磁盘中访问频率高于预设频率的数据文件;

所述确定磁盘中连续空闲块数量最多的目标存储空间,包括:

在需要执行所述磁盘整理的情况下,确定磁盘中连续空闲块数量最多的目标存储空间。

在一些实施例中,所述方法还包括:

根据所述磁盘的无效块的占比,确定所述磁盘的碎片化程度。

在一些实施例中,所述方法还包括:

根据所述磁盘的热数据文件中碎片化存储的热数据文件的占比,确定所述热数据文件的碎片化程度;其中,所述碎片化存储的热数据文件:存储在不连续的多个数据块的热数据文件。

在一些实施例中,所述在需要执行所述磁盘整理的情况下,确定磁盘中连续空闲块数量最多的目标存储空间,包括:

在需要执行所述磁盘整理的情况下,检测磁盘整理的触发事件;

当检测到所述触发事件时,确定磁盘中连续空闲块数量最多的目标存储空间。

在一些实施例中,所述触发事件包括:

接收到针对磁盘整理提示信息的确认指令;其中,所述磁盘整理提示信息,为在需要执行所述磁盘整理的情况下输出的提示信息;

或者,

当前时刻处于所述磁盘所属电子设备的空闲时间段。

根据本公开实施例的第二方面,提供了一种磁盘整理装置,所述装置包括:

第一确定模块,用于确定磁盘中连续空闲块数量最多的目标存储空间;

迁移模块,用于当所述目标存储空间的容量小于预设容量阈值时,将所述目标存储空间相邻的数据块的数据内容迁移到所述目标存储空间外的空闲块中。

在一些实施例中,所述迁移模块,还用于当所述目标存储空间的容量大于或等于所述预设容量阈值时,从所述目标存储空间的起始地址开始,将目标文件迁移到所述目标存储空间内连续分布的多个空闲块,其中,在迁移到所述目标存储空间之前,所述目标文件存储在多个不连续分布的多个数据块上。

在一些实施例中,所述装置还包括:

第二确定模块,用于根据所述磁盘的碎片化程度和/或热数据文件的碎片化程度,确定是否需要执行所述磁盘整理;其中,所述热数据文件为:所述磁盘中访问频率高于预设频率的数据文件;

所述第一确定模块具体用于:

在需要执行所述磁盘整理的情况下,确定磁盘中连续空闲块数量最多的目标存储空间。

在一些实施例中,所述第二确定模块,还用于根据所述磁盘的无效块的占比,确定所述磁盘的碎片化程度。

在一些实施例中,所述第二确定模块,还用于根据所述磁盘的热数据文件中碎片化存储的热数据文件的占比,确定所述热数据文件的碎片化程度;其中,所述碎片化存储的热数据文件:存储在不连续的多个数据块的热数据文件。

在一些实施例中,所述第一确定模块具体用于:

在需要执行所述磁盘整理的情况下,检测磁盘整理的触发事件;

当检测到所述触发事件时,确定磁盘中连续空闲块数量最多的目标存储空间。

在一些实施例中,所述触发事件包括:

接收到针对磁盘整理提示信息的确认指令;其中,所述磁盘整理提示信息,为在需要执行所述磁盘整理的情况下输出的提示信息;

或者,

当前时刻处于所述磁盘所属电子设备的空闲时间段。

根据本公开实施例的第三方面,提供了一种电子设备,包括:

处理器和用于存储能够在所述处理器上运行的可执行指令的存储器,其中:

处理器用于运行所述可执行指令时,所述可执行指令执行所述第一方面任一项所述磁盘整理方法中的步骤。

根据本公开实施例的第四方面,提供了一种非临时性计算机可读存储介质,所述计算机可读存储介质中存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现所述第一方面任一项所述磁盘整理方法中的步骤。

本公开提供的一种磁盘碎片整理方法、装置和存储介质,通过确定磁盘中连续空闲块数量最多的目标存储空间,并当所述目标存储空间的容量小于预设容量阈值时,将所述目标存储空间相邻的数据块的数据内容迁移到所述目标存储空间外的空闲块中,这样能够对磁盘中具有数量最多的连续空闲块的目标存储空间进一步增加其连续空闲块的数量,即通过扩大目标存储空间,快速地提供足够大的空闲存储空间来写入数据文件,如此不但能够减少磁盘整理中的搬迁次数,高效地进行磁盘整理,提高了存储介质的使用寿命,而且也无需借助第三方存储设备,解决了磁盘碎片增多造成的卡顿问题。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。

图1是根据一示例性实施例示出的存储器文件分布的示意图;

图2是根据一示例性实施例示出的一种磁盘整理方法的流程图;

图3是根据一示例性实施例示出的另一种磁盘整理方法的流程图;

图4是根据一示例性实施例示出的又一种磁盘整理方法的流程图;

图5是根据一示例性实施例示出的再一种磁盘整理方法的流程图;

图6a是根据一示例性实施例示出的手机操作界面的示意图;

图6b是根据一示例性实施例示出的磁盘整理方法的具体流程图;

图6c是根据一示例性实施例示出的存储空间内segment与block的抽象关系示意图;

图6d是根据一示例性实施例示出的热数据文件存储的示意图;

图6e是根据一示例性实施例示出的碎片整理流程示意图;

图7是根据一示例性实施例示出的一种磁盘整理装置的结构框图;

图8是根据一示例性实施例示出的一种电子设备的结构框图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开实施例的一些方面相一致的装置和方法的例子。

在本公开实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本公开实施例。在本公开实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本公开实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

以手机为例,在手机频繁使用的过程中,不可避免地遇到手机越来越卡顿的问题。手机越用越慢的原因之一是手机长期使用产生了大量磁盘碎片,磁盘读写效率下降,系统流畅性降低。

手机产生磁盘碎片的原因主要包括:

(1)文件分区表不连续地存放文件;

(2)下载大文件,当找不到连续空间时,大文件被分割成若干碎片,存储在磁盘上;

(3)手机应用频繁且大量地产生、删除临时性文件,产生许多不连续的区块;

(4)当手机物理内存不足时,系统会在硬盘中产生临时交换文件,该文件占用的磁盘空间虚拟成内存,虚拟内存管理程序会对硬盘频繁读写,产生大量碎片。

如图1所示的存储器文件分布,在手机使用初期文件呈集中分布,随着使用时间的增加,文件呈碎片化分布。

目前,Android手机大多采用NAND Flash架构的闪存卡存储内容,为了延长驱动器寿命,NAND Flash的读写操作以页为单位进行,擦除操作以块(1块=128页)为单位进行,参照如下读写规则进行读写:

(1)删除数据时,芯片将标记待删除页为闲置状态,但并不会马上执行擦除操作;

(2)写入数据时,如果目前磁盘剩余空间充足,则由芯片指定块后直接按照页为单位写入;如果目前磁盘剩余空间不足,为了获取足够空间,磁盘先将块内容读至缓存,然后再在该块上执行擦除操作,最后将新内容与原先的内容一起写入该块;

当磁盘空间不足时,Android系统读写机制有“写入放大”的特点,即若写入一页大小的文件时,可能导致整个块重新写入。磁盘碎片越多,磁盘读写耗费的时间越多,读写性能降低,从而造成手机卡顿问题。

针对手机磁盘碎片增多造成的卡顿问题,用户采用的解决方式主要包括:

(1)使用手机清理类软件或卸载不常用的应用,这种方式只是删除文件,释放空间,并不能解决碎片化问题;

(2)格式化手机,将手机恢复出厂设置,这种方式需要用户备份资料,重新安装应用,操作非常繁琐。

针对手机磁盘整理方法,可以采用以下方案:

方案一:直接取磁盘中的待整理区域,待整理区域包括使用区域和与使用区域相邻的空闲区域,把使用区域中的数据搬移到与使用区域相邻的空闲区域,不断循环,以扩大待整理区域的连续可用存储空间。由于闪存存储器擦写次数有限,这种方法频繁地搬移数据,过度处理磁盘碎片,会影响到闪存卡使用寿命;

方案二:将存储介质中的文件系统整理成镜像,拷贝到其他存储器,对待整理区域进行格式化,将拷贝到其它存储器的数据镜像重新写回格式化后的整理区域,这种方法需要第三方存储设备。

图2是根据一示例性实施例示出的一种磁盘整理方法的流程图。参照图2,所述方法可以包括以下步骤:

S110:确定磁盘中连续空闲块数量最多的目标存储空间;

S120:当所述目标存储空间的容量小于预设容量阈值时,将所述目标存储空间相邻的数据块的数据内容迁移到所述目标存储空间外的空闲块中。

本公开实施例提供的磁盘整理方法可以应用于电子设备中,所述电子设备可以包括但不限于:手机、平板电脑(Tablet Personal Computer)、膝上型电脑(LaptopComputer)、个人数字助理(personal digital assistant,PDA)、移动上网装置(MobileInternet Device,MID)或可穿戴式设备(Wearable Device)等移动终端以及诸如数字电视、台式计算机等固定终端。

初始状态时,磁盘中所有的数据块(block)中均没有存储数据,所有的数据块均为空闲块,此时不存在碎片化,读写速度比较稳定,不会出现降速的情况。当磁盘经过一段时间的写入后,磁盘中各数据块则会包括有效块、空闲块及无效块。有效块为存储有有效数据的数据块;无效块存储有无效数据的数据块;空闲块为:未存储有数据的数据块或曾经存储有数据,一段时间后该数据块被标记为无效块并被执行擦除操作后,会重新成为空闲块。对于NAND存储来说,只有空闲块才能直接执行写入操作。其中,磁盘中所有的数据块可以通过文件分配表(File Allocation Table,FAT)进行管理。

目标存储空间是由磁盘中数量最多的连续空闲块所形成的存储空间。这里,连续空闲块是指存储空间地址连续的多个空闲块。

在步骤S110中,可以按照磁盘存储空间地址的前后顺序,搜索出当前具有连续空闲块的存储空间,并将由数量最多的连续空闲块所形成的存储空间确定为目标存储空间。

所述目标存储空间的容量可根据其具有的连续空闲块的数量以及磁盘的块大小(Block Size)确定。可以理解的是,在磁盘的块大小一定(例如一个block是4K)的情况下,可以使用目标存储空间具有的连续空闲块的数量来表征目标存储空间的容量。相应地,预设容量阈值可以使用块数量阈值来表征。

这里,预设容量阈值可以根据实际应用需要进行设定,例如预设容量阈值设定为512M或1024M或其他适宜的数值,此处不作具体限定。

在步骤S120中,可以对所述目标存储空间的容量与所述预设容量阈值进行比较,当所述目标存储空间的容量小于所述预设容量阈值时,将所述目标存储空间相邻的数据块的数据内容迁移到所述目标存储空间外的空闲块中,以扩大目标存储空间。

当将目标存储空间相邻的数据块的数据内容迁移到所述目标存储空间外的空闲块中之后,数据内容被迁移的数据块即成为空闲块,由于成为空闲块的数据块与目标存储空间相邻,且目标存储空间是由数量最多的连接空闲块所形成的,因此能够形成数量更多的连续空闲块,即扩大了目标存储空间。

这里,目标存储空间相邻的数据块可以包括:第一连续有效块和/或第二连续有效块;其中,第一连续有效块为:存储空间地址位于目标存储空间之前且与所述目标存储空间相邻的连续有效块;第二连续有效块为:存储空间地址位于目标存储空间之后且与所述目标存储空间相邻的连续有效块。

在一个示例中,上述步骤S120中,当所述目标存储空间的容量小于所述预设容量阈值时,可以根据所述预设容量阈值与所述目标存储空间的容量之间的容量差值,确定迁移到目标存储空间外的空闲块中的数据内容。

具体地,当所述容量差值小于或等于预设差值时,将第一连续有效块的数据内容或者第二连续有效块的数据内容迁移到目标存储空间外的空闲块中;当所述容量差值大于预设差值时,将第一连续有效块的数据内容以及第二连续有效块的数据内容均迁移到目标存储空间外的空闲块中。这里的预设差值可以根据实际应用需要进行设定。

在一个示例中,将所述目标存储空间相邻的数据块的数据内容迁移到所述目标存储空间外的空闲块中,可以包括:

将所述目标存储空间相邻的连续数据块的数据内容迁移到所述目标存储空间外的目标空闲块中,其中,所述目标空闲块与所述目标存储空间相邻的连续数据块不相邻。

为了便于描述,将第一连续有效块相邻的前一个空闲存储空间记为第一空闲存储空间,其中,第一空闲存储空间由一个空闲块或连续空闲块形成。可以理解的是,第一连续有效块位于第一空闲存储空间与目标存储空间之间。

将第二连续有效块相邻的后一个空闲存储空间记为第二空闲存储空间,其中,第二空闲存储空间由一个空闲块或连续空闲块形成。可以理解的是,第二连续有效块位于目标存储空间与第二空闲存储空间之间。

本实施例中,将第一连续有效块的数据内容迁移到目标存储空间外的目标空闲块之后,第一连续有效块即成为连续空闲块,由于这些连续空闲块与第一空闲存储空间以及目标存储空间分别相邻,由此能够形成数量更多的连续空闲块,即扩大了目标存储空间。

进一步地,将第二连续有效块的数据内容迁移到目标存储空间外的目标空闲块之后,第二连续有效块变为连续空闲块,由于这些连续空闲块与第二空闲存储空间以及目标存储空间分别相邻,因此能够进一步形成数量更多的连续空闲块,即进一步扩大了目标存储空间。

可以理解的是,通过迁移第一连接有效块的数据内容、第二连续有效块的数据内容来扩大目标存储空间,则扩大后的目标存储空间的连续空闲块的数量为:第一连续有效块的数量、第一空闲存储空间的空闲块数量、目标存储空间原有的空闲块数量、第二连续有效块的数量与第二空闲存储空间的空闲块数量之和。

示例性地,假设第一连续有效块的数量为6,第一空闲存储空间具有的空闲块的数量为5,目标存储空间的连续空闲块的数量为30,第二连续有效块的数量为8,第二空闲存储空间的连续空闲块的数量为7,那么通过迁移第一连续有效块的数据内容,得到扩大后的目标存储空间的连续空闲块的数量为41。在此基础上,通过迁移第二连续有效块的数据内容,得到进一步扩大后的目标存储空间的连续空闲块的数量为56。

在一些实施例中,为提升磁盘存储数据的可靠性,所述方法还可以包括:

根据迁移后的所述数据内容在目标存储空间中的存储位置,更新磁盘的文件分配表。

在一些实施例中,上述步骤S120之后,方法还可以包括:

若扩大后的目标存储空间的容量仍小于所述预设容量阈值,则重复执行步骤S120,直至目标存储空间的容量大于或等于所述预设容量阈值。如此,能够进一步扩大目标存储空间,更快速地提供足够大的空闲存储空间来写入数据文件。

本公开实施例提供了一种磁盘碎片整理方法、装置和存储介质,通过确定磁盘中连续空闲块数量最多的目标存储空间,并当所述目标存储空间的容量小于预设容量阈值时,将所述目标存储空间相邻的数据块的数据内容迁移到所述目标存储空间外的空闲块中,这样能够对磁盘中具有数量最多的连续空闲块的目标存储空间进一步增加其连续空闲块的数量,即通过扩大目标存储空间,快速地提供足够大的空闲存储空间来写入数据文件,如此不但能够减少磁盘整理中的搬迁次数,高效地进行磁盘整理,提高了存储介质的使用寿命,而且也无需借助第三方存储设备,解决了磁盘碎片增多造成的卡顿问题。

在一些实施例中,如图3所示,基于图2,所述方法还可以包括:

S130:当所述目标存储空间的容量大于或等于所述预设容量阈值时,从所述目标存储空间的起始地址开始,将目标文件迁移到所述目标存储空间内连续分布的多个空闲块,其中,在迁移到所述目标存储空间之前,所述目标文件存储在多个不连续分布的多个数据块上。

这里,所述目标文件为具有碎片的文件,也就是说,在迁移到所述目标存储空间之前,目标文件所占用的数据块的编号是分散的。例如,某一文件所占用的数据块的编号可以是80、81、82、244、245、760、850,从而使得该文件具有4个碎片。其中,这4个碎片占用的存储空间依次为数据块80~82、数据块244~245、数据块760、数据块850。

具体地,当所述目标存储空间的容量大于或等于所述预设容量阈值时,从所述目标存储空间的起始地址开始,按照预设移动规则,将目标文件的碎片依次迁移到所述目标存储空间内连续分布的多个空闲块。

其中,移动后的同一个目标文件的数据内容在所述目标存储空间内的存储位置连续。

在一个示例中,所述预设移动规则可以为按照紧凑原则的移动规则。其中,紧凑原则是指:将目标文件的所有碎片按照碎片的存储空间地址前后顺序依次移动到所述目标存储空间内连续分布的多个空闲块。

在一个示例中,为最大程度地减少文件的碎片数量,上述步骤S130中,从所述目标存储空间的起始地址开始,针对多个目标文件,可以按照目标文件的碎片化程度由高到低的顺序,将各个目标文件依次迁移到目标存储空间内。

其中,目标文件的碎片化程度可以依据目标文件的碎片数量、各碎片的大小、各碎片的存储空间地址中的至少之一确定。

例如,当某一文件的碎片数量越多、各碎片的大小越小、各碎片的存储空间地址间隔较远,则该文件的碎片化程度越高。

本实施例中,通过当所述目标存储空间的容量大于或等于所述预设容量阈值时,从所述目标存储空间的起始地址开始,将目标文件迁移到所述目标存储空间内连续分布的多个空闲块,使得目标文件存储的地址更集中,极大地减少了碎片数量,有效地提高碎片整理的效率。

在一些实施例中,为提升磁盘存储数据的可靠性,所述方法还包括:

根据迁移后的所述目标文件的数据内容在目标存储空间中的存储位置,更新所述磁盘的文件分配表。

在一些实施例中,上述步骤S130之后,方法还可以包括:

当所述目标存储空间内的空闲块被占用完的情况下,循环执行步骤S110步骤S130,直至完成磁盘整理。

本实施例中,通过循环执行步骤S110步骤S130,直至完成磁盘整理,使得整理后的数据文件相对集中,空闲区域也相对集中,在有效减少磁盘整理中的搬迁次数的同时,实现了高效地提高整理碎片,并且整理出的空闲区域能够极大地提高磁盘的存储性能,极大地方便后续的数据文件的写入。

在一些实施例中,如图4所示,基于图2,所述方法还可以包括:

S100:根据所述磁盘的碎片化程度和/或热数据文件的碎片化程度,确定是否需要执行所述磁盘整理;其中,所述热数据文件为:所述磁盘中访问频率高于预设频率的数据文件。

其中,磁盘的碎片化程度可以指示磁盘碎片数量或者磁盘碎片的占比,热数据文件的碎片化程度可以指示具有碎片的热数据文件的数量或者具有碎片的热数据文件的占比。

所述热数据文件是在预设时间段(例如最近一个月)内,磁盘中访问频率高于预设频率的数据文件。以手机为例,热数据文件例如文档、照片、手机应用的日志等文件。

在一个示例中,可以是在检测到预设事件时,获取所述磁盘的碎片化程度和/或热数据文件的碎片化程度。其中该预设事件可以是:检测到磁盘整理功能的启动指令。例如,通过检测用户操作界面是否接收到用户输入的磁盘整理功能的启动指令,若是,则获取磁盘的碎片化程度和/或热数据文件的碎片化程度。

在另一示例中,可以按照预设周期,获取磁盘的碎片化程度和/或热数据文件的碎片化程度,该预设周期可以是用户手动设置的磁盘整理周期,也可以是系统默认的磁盘整理周期,该预设周期例如可以是按天或周为单位的周期,例如一天或一周等等。

具体地,上述步骤S100中,可以根据所述磁盘的碎片化程度,确定是否需要执行所述磁盘整理;例如,当所述磁盘的碎片化程度大于或等于第一程度阈值时,确定需要执行磁盘整理;当所述磁盘的碎片化程度小于第一程度阈值时,确定不需要执行磁盘整理。

另外,也可以根据所述热数据文件的碎片化程度,确定是否需要执行磁盘整理;例如,当热数据文件的碎片化程度大于或等于第二程度阈值时,确定需要执行磁盘整理;当热数据文件的碎片化程度小于所述第二程度阈值时,确定不需要执行磁盘整理。

此外,也可以结合所述磁盘的碎片化程度与热数据文件的碎片化程度,共同确定是否需要执行磁盘整理。例如,将磁盘的碎片化程度与热数据文件的碎片化程度进行加权求和,得到碎片化程度综合值;当所述碎片化程度综合值大于或等于第三程度阈值时,确定需要执行磁盘整理;当所述碎片化程度综合值小于第三程度阈值时,确定不需要执行磁盘整理。

其中,第一程度阈值、第二程度阈值、第三程度阈值均可根据实际应用需要进行设定,例如,第一程度阈值、第二程度阈值、第三程度阈值均设置为70%。

上述步骤S110中,所述确定磁盘中连续空闲块数量最多的目标存储空间,可以包括:

S111,在需要执行所述磁盘整理的情况下,确定磁盘中连续空闲块数量最多的目标存储空间。

本实施例中,通过根据所述磁盘的碎片化程度和/或热数据文件的碎片化程度,确定需要执行所述磁盘整理的情况下,确定磁盘中连续空闲块数量最多的目标存储空间,如此为执行磁盘整理提供了数据支撑,能够减少不必要的磁盘整理。

在一些实施例中,所述方法还可以包括:

根据所述磁盘的无效块的占比,确定所述磁盘的碎片化程度。

具体地,可以将磁盘的无效块的占比确定为所述磁盘的碎片化程度。

在一个示例中,可以将所述磁盘的无效块的数量与全部数据块的数量之间的比值,确定为所述磁盘的无效块的占比。

在另一个示例中,可以将所述磁盘的具有无效块的数据段的数量与全部数据段的数量之间的比值,确定为所述磁盘的无效块的占比。

以f2fs文件系统为例,在该文件系统中,512个数据块(block)构成一个数据段(segment),存储空间由许多segment组成,有的segment中block数据全部有效,有的block全部空闲;当删除数据时,有效的block被标记为无效,因此有的segment中可能部分block有效,部分block无效,部分block空闲,可以将所述磁盘的具有无效块的数据段与全部数据段之间的比值,作为磁盘的无效块的占比来确定所述磁盘的碎片化程度。

可以理解的是,所述磁盘的碎片化程度还可以采用例如空闲页的占比、有效块的碎片化值等参数进行表示。

本实施例中,通过根据所述磁盘的无效块的占比,确定所述磁盘的碎片化程度,使得磁盘的碎片化程度能够以量化形式进行体现,为是否需要进行磁盘整理提供了数据支撑。

在一些实施例中,所述方法还可以包括:

根据所述磁盘的热数据文件中碎片化存储的热数据文件的占比,确定所述热数据文件的碎片化程度;其中,所述碎片化存储的热数据文件:存储在不连续的多个数据块的热数据文件。

具体地,可以将所述磁盘的热数据文件中碎片化存储的热数据文件的占比,确定为所述热数据文件的碎片化程度。

在一个示例中,可以从所述磁盘的全部热数据文件中随机确定预设数量的目标热数据文件,将碎片化存储的目标热数据文件的数量与所述预设数量之间的比值,确定为所述磁盘的热数据文件中碎片化存储的热数据文件的占比。

其中,所述预设数量可以根据实际应用需要进行设定,例如所述预设数量可以设为3、5或其他适宜的数值。

在另一个示例中,可以将所述磁盘中碎片化存储的热数据文件与全部热数据文件之间的比值,确定为所述磁盘的热数据文件中碎片化存储的热数据文件的占比。

可以将所述磁盘中具有碎片数据的目标热数据文件的数量与全部热数据文件的数量之间的比值,确定为所述磁盘的热数据文件中碎片化存储的热数据文件的占比。

本实施例中,通过根据磁盘的热数据文件中碎片化存储的热数据文件的占比,确定所述热数据文件的碎片化程度,使得热数据文件的碎片化程度能够以量化形式进行体现,为是否需要进行磁盘整理提供了数据支撑。

在一些实施例中,如图5所示,上述步骤S111中,所述在需要执行所述磁盘整理的情况下,确定磁盘中连续空闲块数量最多的目标存储空间,可以包括:

S1111,在需要执行所述磁盘整理的情况下,检测磁盘整理的触发事件;

S1112,当检测到所述触发事件时,确定磁盘中连续空闲块数量最多的目标存储空间。

在一些实施例中,所述触发事件包括:

接收到针对磁盘整理提示信息的确认指令;其中,所述磁盘整理提示信息,为在需要执行所述磁盘整理的情况下输出的提示信息;

或者,当前时刻处于所述磁盘所属电子设备的空闲时间段。

具体地,在需要执行磁盘整理的情况下,可以确定是否接收到针对磁盘整理提示信息的确认指令;若接收到确认指令,则确定磁盘中连续空闲块数量最多的目标存储空间。

其中,该磁盘整理提示信息可以是通过文字和/或语音形式输出的提示信息。该磁盘整理提示信息可以指示所述磁盘的碎片化程度和/或热数据文件的碎片化程度。

本实施例中,通过输出磁盘整理提示信息,可以使得用户能够清楚了解磁盘和/或热文件的碎片化程度,以便用户可以根据自身实际需求是否进行磁盘整理的确认操作。

另外,在需要执行磁盘整理的情况下,也可以检测当前时刻是否处于所述磁盘所属电子设备的空闲时间段,若当前时刻处于所述磁盘所属电子设备的空闲时间段,则确定磁盘中连续空闲块数量最多的目标存储空间。

其中,电子设备的空闲时间段可以是用户手动设置的时间段,也可以是系统基于电子设备的历史使用时间确定的时间段。例如,统计用户对电子设备的历史使用情况确定出非使用时间段,将该非使用时间段作为所述空闲时间段。所述空闲时间段例如可以是在晚上12点至次日凌晨5点的时间段。

接下来,以手机为例,结合具体实施例对本公开提供的磁盘整理方法进行说明。

手机使用一年及以上,流畅度降低,甚至明显感觉到卡顿时,用户可以启动磁盘碎片整理功能,在不使用第三方存储设备的情况下,完成碎片整理,其中,磁盘碎片整理功能可通过点击手机操作界面提供的“磁盘碎片整理”,参照图6a所示。

本公开实施例提供一种磁盘整理方法,如图6b所示,该方法包括以下步骤:

S1:进入碎片整理模式;其中,启动磁盘碎片整理功能,即进入碎片整理模式;

S2:分析手机存储器碎片化程度;

S3:结合分析结果由用户判断是否执行碎片整理,若是,则执行步骤S4,否则退出;

S4:碎片整理;

S5:碎片整理完毕后退出程序。

其中,上述步骤S2中,分析手机存储器碎片化程度可以包括:

(1)统计碎片存储空间占整个存储空间的比值。

f2fs文件系统中,以block为单位存储数据,512个block构成一个segment,存储空间由许多segment组成,有的segment中block数据全部有效,有的block全部空闲;当删除数据时,有效的block被标记为无效,因此有的segment中部分block有效,部分无效,部分空闲,带有无效block的segment越多,存储器碎片化越严重,其中,存储空间内segment与block的抽象关系参照图6c所示;

统计存储空间内带有无效block的segment数量,与该空间中的总segment数目作比,该比值用于表示手机磁盘碎片化程度。

(2)统计分段存储的热数据文件数目占热数据文件样本数的比值。

文档、照片、手机应用的日志等文件是系统经常访问的热数据,若文件能连续存储则磁盘读写速度快,但在碎片化严重的手机中,大量的热数据文件被分成多段存储。

随机读取一定数目的热数据文件,判断每个文件的存储范围是否连续,并统计分段存储的文件数目,计算分段存储的文件数目与读取文件总数的比值,该比值用于表示手机存储器碎片化程度,其中热数据文件存储示意图参照图6d所示。

碎片存储空间占整个存储空间的比值与分段存储的热数据文件数目占热数据文件数目的比值共同评估手机存储器碎片化程度。

其中,上述步骤S4中,碎片整理流程可以包括:

在确定执行碎片整理的情况下,执行循环过程直至完成磁盘整理。

其中,所述循环过程可以包括:

在磁盘中确定出数量最多的连续空闲块形成的目标存储空间;

当所述目标存储空间的容量小于所述预设容量阈值时,以增加所述目标存储空间中连续空闲块数量的方式,对所述目标存储空间相邻的存储空间中的文件进行移动,直至目标存储空间的连续空闲块数量满足所述预设容量阈值所需要的空闲块数量。

当所述目标存储空间的容量大于等于预设容量阈值时,将所述磁盘中的碎片化存储的目标文件移动至所述目标存储空间中;其中,移动后的同一个所述目标文件的数据在所述目标存储空间的存储位置连续。

如图6e所示,上述步骤S4中,碎片整理流程具体可以包括以下步骤:

S41:在待整理存储器中搜索最大的连续空闲块;

S42:判断连续空闲块大小是否符合条件(即,连续空闲块的空间容量是否大于等于预设容量阈值);若是,则执行步骤S44,若否,则执行步骤S43;

S43:整理该连续空闲块周围的存储空间,增大其连续空闲空间;

S44:从存储器中读取碎片分布的文件,将文件按紧凑原则顺序写入连续空闲块中;

S45:把新的文件存储信息添加到存储器的文件信息管理表中;

S46:无效化该文件原本的存储块及存储信息;

S47:确定是否完成整理,若否,则返回执行步骤S41步骤S46,若是,则结束。

具体地,当该连续空闲块的空间被占用完后,继续搜索最大的连续空闲块,将碎片化的文件紧凑地整理到其中,循环进行直到整理完毕。当整理完毕后,整理后的存储器数据文件集中在一起,空闲区域也集中在一起。

本公开实施例提供的磁盘整理方法,至少具有以下有益效果:

(1)提供了一种手机端自动化磁盘整理工具,用户操作简单;

(2)提供了手机碎片化程度定量分析;

(3)磁盘整理完全在待整理存储器及内存中进行,不借助外部存储设备,方便用户手机端操作;

(4)在整理磁盘碎片过程中,先搜索最大的空闲连续块,最大限度地减少了数据搬移次数,减轻对闪存卡寿命的影响。

图7是根据一示例性实施例示出的一种磁盘整理装置的结构图。参照图7,所述装置包括:

第一确定模块701,用于确定磁盘中连续空闲块数量最多的目标存储空间;

迁移模块702,用于当所述目标存储空间的容量小于预设容量阈值时,将所述目标存储空间相邻的数据块的数据内容迁移到所述目标存储空间外的空闲块中。

在一些实施例中,所述迁移模块702还用于:

当所述目标存储空间的容量大于或等于所述预设容量阈值时,从所述目标存储空间的起始地址开始,将目标文件迁移到所述目标存储空间内连续分布的多个空闲块,其中,在迁移到所述目标存储空间之前,所述目标文件存储在多个不连续分布的多个数据块上。

在一些实施例中,所述装置还包括:

第二确定模块,用于根据所述磁盘的碎片化程度和/或热数据文件的碎片化程度,确定是否需要执行所述磁盘整理;其中,所述热数据文件为:所述磁盘中访问频率高于预设频率的数据文件;

所述第一确定模块701具体用于:

在需要执行所述磁盘整理的情况下,确定磁盘中连续空闲块数量最多的目标存储空间。

在一些实施例中,所述第二确定模块,还用于根据所述磁盘的无效块的占比,确定所述磁盘的碎片化程度。

在一些实施例中,所述第二确定模块,还用于根据所述磁盘的热数据文件中碎片化存储的热数据文件的占比,确定所述热数据文件的碎片化程度;其中,所述碎片化存储的热数据文件:存储在不连续的多个数据块的热数据文件。

在一些实施例中,所述第一确定模块701具体用于:

在需要执行所述磁盘整理的情况下,检测磁盘整理的触发事件;

当检测到所述触发事件时,确定磁盘中连续空闲块数量最多的目标存储空间。

在一些实施例中,所述触发事件包括:

接收到针对磁盘整理提示信息的确认指令;其中,所述磁盘整理提示信息,为在需要执行所述磁盘整理的情况下输出的提示信息;

或者,

当前时刻处于所述磁盘所属电子设备的空闲时间段。

需要说明的是:上述实施例提供的磁盘整理装置在执行磁盘整理方法时,仅以上述各程序模块的划分进行举例说明,实际应用中,可以根据需要而将上述处理分配由不同的程序模块完成,即将装置的内部结构划分成不同的程序模块,以完成以上描述的全部或者部分处理。另外,上述实施例提供的磁盘整理装置与磁盘整理方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

图8是根据本公开实施例示出的一种电子设备的结构框图,参照图8,本公开实施例提供一种电子设备。电子设备800可以包括以下一个或多个组件:处理组件802,存储器804,电源组件806,多媒体组件808,多媒体数据组件810,输入/输出(I/O)的接口812,传感器组件814,以及通信组件816。处理组件802通常控制电子设备800的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件802可以包括一个或多个处理器820来执行指令,以完成上述的磁盘整理方法的全部或部分步骤。此外,处理组件802可以包括一个或多个模块,便于处理组件802和其他组件之间的交互。例如,处理组件802可以包括多媒体模块,以方便多媒体组件808和处理组件802之间的交互。

存储器804被配置为存储各种类型的数据以支持在设备800的操作。这些数据的示例包括用于在电子设备800上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器804可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。

电源组件806为电子设备800的各种组件提供电力。电力组件806可以包括电源管理系统,一个或多个电源,及其他与为电子设备800生成、管理和分配电力相关联的组件。

多媒体组件808包括在电子设备800和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件808包括一个前置摄像头和/或后置摄像头。当设备800处于操作状态,如拍摄状态或视频状态时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。

多媒体数据组件810被配置为输出和/或输入多媒体数据信号。例如,多媒体数据组件810包括一个麦克风(MIC),当电子设备800处于操作状态,如呼叫状态、记录状态和语音识别状态时,麦克风被配置为接收外部多媒体数据信号。所接收的多媒体数据信号可以被进一步存储在存储器804或经由通信组件816发送。

在一些实施例中,多媒体数据组件810还包括一个扬声器,用于输出多媒体数据信号。

I/O接口812为处理组件802和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,操作钮等。这些操作钮可包括但不限于:主页操作钮、音量操作钮、启动操作钮和锁定操作钮。

传感器组件814包括一个或多个传感器,用于为电子设备800提供各个方面的状态评估。例如,传感器组件814可以检测到设备800的打开/关闭状态,组件的相对定位,例如组件为电子设备800的显示器和小键盘,传感器组件814还可以检测电子设备800或电子设备800一个组件的位置改变,用户与电子设备800接触的存在或不存在,电子设备800方位或加速/减速和电子设备800的温度变化。传感器组件814可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件814还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件814还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。

通信组件816被配置为便于电子设备800和其他设备之间有线或无线方式的通信。电子设备800可以接入基于通信标准的无线网络,如Wi-Fi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件816经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,通信组件816还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。

在示例性实施例中,装置800可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述磁盘整理方法。

本公开实施例还提供一种计算机可读存储介质,存储介质上存储有计算机程序,计算机程序被处理器执行时,实现本公开实施例任一所述磁盘整理方法中的步骤。

需要说明的是,本公开实施例的存储介质可以由任何类型的易失性或非易失性存储设备、或者它们的组合来实现。其中,非易失性存储器可以是只读存储器(ROM,Read OnlyMemory)、可编程只读存储器(PROM,Programmable Read-Only Memory)、可擦除可编程只读存储器(EPROM,Erasable Programmable Read-Only Memory)、电可擦除可编程只读存储器(EEPROM,Electrically Erasable Programmable Read-Only Memory)、磁性随机存取存储器(FRAM,Ferromagnetic Random Access Memory)、快闪存储器(Flash Memory)、磁表面存储器、光盘、或只读光盘(CD-ROM,Compact Disc Read-Only Memory);磁表面存储器可以是磁盘存储器或磁带存储器。易失性存储器可以是随机存取存储器(RAM,Random AccessMemory),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(SRAM,Static Random Access Memory)、同步静态随机存取存储器(SSRAM,Synchronous Static Random Access Memory)、动态随机存取存储器(DRAM,Dynamic Random Access Memory)、同步动态随机存取存储器(SDRAM,SynchronousDynamic Random Access Memory)、双倍数据速率同步动态随机存取存储器(DDRSDRAM,Double Data Rate Synchronous Dynamic Random Access Memory)、增强型同步动态随机存取存储器(ESDRAM,Enhanced Synchronous Dynamic Random Access Memory)、同步连接动态随机存取存储器(SLDRAM,SyncLink Dynamic Random Access Memory)、直接内存总线随机存取存储器(DRRAM,Direct Rambus Random Access Memory)。本公开实施例描述的存储介质旨在包括但不限于这些和任意其它适合类型的存储器。

在本公开所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。

上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。

另外,在本公开各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

或者,本公开上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本公开实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本公开各个实施例方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。

本公开所提供的几个方法实施例中所揭露的方法,在不冲突的情况下可以任意组合,得到新的方法实施例。

本公开所提供的几个产品实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的产品实施例。

本公开所提供的几个方法或设备实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的方法实施例或设备实施例。

以上,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以权利要求的保护范围为准。

技术分类

06120116571326