CN115543937A - 文件碎片整理方法及电子设备 - Google Patents

文件碎片整理方法及电子设备 Download PDF

Info

Publication number
CN115543937A
CN115543937A CN202210281820.7A CN202210281820A CN115543937A CN 115543937 A CN115543937 A CN 115543937A CN 202210281820 A CN202210281820 A CN 202210281820A CN 115543937 A CN115543937 A CN 115543937A
Authority
CN
China
Prior art keywords
request
target
fragment
file
information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202210281820.7A
Other languages
English (en)
Other versions
CN115543937B (zh
Inventor
李鹏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Honor Device Co Ltd
Original Assignee
Honor Device Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Honor Device Co Ltd filed Critical Honor Device Co Ltd
Priority to CN202210281820.7A priority Critical patent/CN115543937B/zh
Publication of CN115543937A publication Critical patent/CN115543937A/zh
Application granted granted Critical
Publication of CN115543937B publication Critical patent/CN115543937B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/1724Details of de-fragmentation performed by the file system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/1727Details of free space management performed by the file system
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请提供了一种文件碎片整理方法及电子设备,该方法包括:对指定时间段内多个文件碎片的碎片化访问的信息进行统计,得到待筛选信息;其中,碎片化访问指的是读写一个数据块时IO请求被分割为多个IO请求的访问,或者是因文件碎片使多个IO请求无法合并为一个IO请求的访问;基于待筛选信息从多个文件碎片中筛选出至少一个目标碎片;若至少一个目标碎片的数量超出数量阈值,则对至少一个目标碎片进行整理。本申请通过对影响系统性能的目标文件碎片进行识别,不仅可以改善文件读写性能,而且能够提高碎片整理的效率。

Description

文件碎片整理方法及电子设备
技术领域
本申请实施例涉及存储技术领域,尤其涉及一种文件碎片整理方法及电子设备。
背景技术
文件系统是一种存储和组织用户数据的数据结构,为用户提供了简单方便的数据访问。通常情况下,文件系统运行一段时间之后,文件系统中的文件在存储介质上被反复地添加、删除以及更新等,从而导致存储介质上空闲的存储区域不再连续。如果再在该存储介质上存储文件,则该文件可能会分散在多个不连续的存储区域上,进而形成文件碎片。
其中,文件碎片是指同一文件的各个部分分别存储在存储器中的不同位置,导致该文件所占据的存储空间不连续。文件碎片化程度较严重时会导致文件读写访问效率下降。因此,需要对该文件系统进行碎片整理从而改善文件读写性能。
发明内容
为了解决上述技术问题,本申请提供一种文件碎片整理方法及电子设备。在该方法中,电子设可以对影响系统性能的目标文件碎片进行识别,并针对性的对目标碎片进行整理,如此不仅可以改善文件读写性能,而且能够提高碎片整理的效率。
第一方面,本申请实施例提供一种文件碎片整理方法。该方法包括:对指定时间段内多个文件碎片的碎片化访问的信息进行统计,得到待筛选信息;其中,碎片化访问指的是读写一个数据块时IO请求被分割为多个IO请求的访问,或者是因文件碎片使多个IO请求无法合并为一个IO请求的访问;基于待筛选信息从多个文件碎片中筛选出至少一个目标碎片;若至少一个目标碎片的数量超出数量阈值,则对至少一个目标碎片进行整理。这样,不仅可以改善文件读写性能,而且能够提高碎片整理的效率。
示例性的,数量阈值可以为1。
根据第一方面,对指定时间段内多个文件碎片的碎片化访问的信息进行统计,得到待筛选信息,包括:确定目标IO请求,并针对目标IO请求执行碎片信息统计操作,碎片信息统计操作用于对目标IO请求对应的每个文件碎片的碎片信息进行统计;获取下一个IO请求,并将下一个IO请求作为目标IO请求,再次对目标IO请求执行碎片信息统计操作,直至完成对指定时间段内所有IO请求的统计,得到待筛选信息。这样,电子设备可以获取到更加准确的目标碎片,进而可以提高碎片整理的效率。
根据第一方面,或者以上第一方面的任意一种实现方式,针对目标IO请求执行碎片信息统计操作,包括:获取目标IO请求对应的数据分布情况;基于数据分布情况确定目标IO请求对应的数据是否分布在多个不连续的存储区域;若目标IO请求对应的数据分布在多个不连续的存储区域,则记录每个存储区域上文件碎片的碎片信息。这样,能够降低文件碎片整理带来的不必要功耗。
根据第一方面,或者以上第一方面的任意一种实现方式,获取目标IO请求对应的数据分布情况,包括:确定目标IO请求访问的目标文件,并获取目标文件的元数据,目标IO请求包括IO请求信息;基于目标文件的元数据和IO请求信息得到目标IO请求对应的数据分布情况。这样,通过结合目标文件的元数据能够快速有效的获取到目标IO请求对应的数据分布情况。
根据第一方面,或者以上第一方面的任意一种实现方式,IO请求信息包括目标IO请求的起始地址和目标IO请求的数据块大小,元数据包括目标文件存储区域的物理地址;基于目标文件的元数据和IO请求信息得到目标IO请求对应的数据分布情况,包括:根据存储区域的物理地址确定目标文件中各数据块的分布情况;基于目标文件中各数据块的分布情况、目标IO请求的起始地址和目标IO请求的数据块大小,得到目标IO请求对应的数据分布情况。这样,能够使最终获取的数据分布情况更加准确有效。
根据第一方面,或者以上第一方面的任意一种实现方式,若目标IO请求对应的数据未分布在多个不连续的存储区域,则获取目标IO请求的起始地址;如果目标IO请求的起始地址是一个文件碎片的起始地址,则确定目标IO请求是否为顺序访问的IO请求,其中,顺序访问的IO请求指的是目标IO请求对应的偏移地址与前一个目标IO请求对应的偏移地址连续;如果目标IO请求是顺序访问的IO请求,则记录目标IO请求对应的文件碎片的碎片信息。这样,电子设备可以更加灵活有效的获取到文件碎片的碎片信息,进而可以提高文件碎片整理的效率。
根据第一方面,或者以上第一方面的任意一种实现方式,如果目标IO请求的起始地址不是一个文件碎片的起始地址,或者目标IO请求不是顺序访问的IO请求,则不记录目标IO请求对应的文件碎片的碎片信息。这样,能够降低文件碎片整理为电子设备带来的不必要功耗,进而可以延长电子设备的使用寿命。
根据第一方面,或者以上第一方面的任意一种实现方式,若目标IO请求对应的数据分布在多个不连续的存储区域,则记录每个存储区域上文件碎片的碎片信息,包括:若目标IO请求对应的数据分布在多个不连续的存储区域,则获取原始子IO请求和其他子IO请求,原始子IO请求和其他子IO请求是将目标IO请求进行分割获取的;获取原始子IO请求对应的起始地址;若原始子IO请求对应的起始地址为一个文件碎片的起始地址,且原始子IO请求为顺序访问的IO请求,则记录每个存储区域上文件碎片的碎片信息,其中,文件碎片包括原始子IO请求对应的文件碎片,以及其他子IO请求对应的文件碎片。这样,能够使最终获取的碎片信息更加准确有效。
根据第一方面,或者以上第一方面的任意一种实现方式,若原始子IO请求对应的起始地址不是一个文件碎片的起始地址,或者原始子IO请求不是顺序访问的IO请求,则不对原始子IO请求对应的文件碎片的碎片信息进行记录,仅对其他子IO请求对应的文件碎片的碎片信息进行记录。这样,能够简单有效的实现对碎片信息的获取。
根据第一方面,或者以上第一方面的任意一种实现方式,记录每个存储区域上文件碎片的碎片信息,包括:获取每个文件碎片对应的历史碎片信息,历史碎片信息包括每个文件碎片的碎片化访问次数;对每个文件碎片的碎片化访问次数进行更新,以实现对每个存储区域上文件碎片的碎片信息的记录。
根据第一方面,或者以上第一方面的任意一种实现方式,对每个文件碎片的碎片化访问次数进行更新,包括:将每个文件碎片的碎片化访问次数加1。
根据第一方面,或者以上第一方面的任意一种实现方式,待筛选信息包括碎片化访问次数,基于待筛选信息从多个文件碎片中筛选出至少一个目标碎片,包括:获取每个文件碎片对应的碎片化访问次数,并将碎片化访问次数大于预设次数的文件碎片作为目标碎片。
示例性的,预设次数可以为2次。
根据第一方面,或者以上第一方面的任意一种实现方式,方法应用于电子设备,对指定时间段内多个文件碎片的碎片化访问的信息进行统计,包括:检测电子设备是否从关机状态切换为开机状态;若电子设备从关机状态切换为开机状态,则对指定时间段内多个文件碎片的碎片化访问的信息进行统计。这样,能够更加准确的触发对文件碎片的识别和整理,且可以避免频繁的进行碎片整理而影响用户的使用体验。
根据第一方面,或者以上第一方面的任意一种实现方式,对至少一个目标碎片进行整理之后,包括:针对待筛选信息执行信息清除操作。这样,能够方便下一次的碎片整理,进而可以提高碎片整理的准确性。
第二方面,本申请实施例提供一种电子设备。该电子设备包括:一个或多个处理器;存储器;以及一个或多个计算机程序,其中一个或多个计算机程序存储在存储器上,当计算机程序被一个或多个处理器执行时,使得电子设备执行以下步骤:对指定时间段内多个文件碎片的碎片化访问的信息进行统计,得到待筛选信息;其中,碎片化访问指的是读写一个数据块时IO请求被分割为多个IO请求的访问,或者是因文件碎片使多个IO请求无法合并为一个IO请求的访问;基于待筛选信息从多个文件碎片中筛选出至少一个目标碎片;若至少一个目标碎片的数量超出数量阈值,则对至少一个目标碎片进行整理。
根据第二方面,当计算机程序被一个或多个处理器执行时,使得电子设备执行以下步骤:确定目标IO请求,并针对目标IO请求执行碎片信息统计操作,碎片信息统计操作用于对目标IO请求对应的每个文件碎片的碎片信息进行统计;获取下一个IO请求,并将下一个IO请求作为目标IO请求,再次对目标IO请求执行碎片信息统计操作,直至完成对指定时间段内所有IO请求的统计,得到待筛选信息。
根据第二方面,或者以上第二方面的任意一种实现方式,当计算机程序被一个或多个处理器执行时,使得电子设备执行以下步骤:获取目标IO请求对应的数据分布情况;基于数据分布情况确定目标IO请求对应的数据是否分布在多个不连续的存储区域;若目标IO请求对应的数据分布在多个不连续的存储区域,则记录每个存储区域上文件碎片的碎片信息。
根据第二方面,或者以上第二方面的任意一种实现方式,当计算机程序被一个或多个处理器执行时,使得电子设备执行以下步骤:确定目标IO请求访问的目标文件,并获取目标文件的元数据,目标IO请求包括IO请求信息;基于目标文件的元数据和IO请求信息得到目标IO请求对应的数据分布情况。
根据第二方面,或者以上第二方面的任意一种实现方式,IO请求信息包括目标IO请求的起始地址和目标IO请求的数据块大小,元数据包括目标文件存储区域的物理地址;当计算机程序被一个或多个处理器执行时,使得电子设备执行以下步骤:根据存储区域的物理地址确定目标文件中各数据块的分布情况;基于目标文件中各数据块的分布情况、目标IO请求的起始地址和目标IO请求的数据块大小,得到目标IO请求对应的数据分布情况。
根据第二方面,或者以上第二方面的任意一种实现方式,当计算机程序被一个或多个处理器执行时,使得电子设备执行以下步骤:若目标IO请求对应的数据未分布在多个不连续的存储区域,则获取目标IO请求的起始地址;如果目标IO请求的起始地址是一个文件碎片的起始地址,则确定目标IO请求是否为顺序访问的IO请求,其中,顺序访问的IO请求指的是目标IO请求对应的偏移地址与前一个目标IO请求对应的偏移地址连续;如果目标IO请求是顺序访问的IO请求,则记录目标IO请求对应的文件碎片的碎片信息。
根据第二方面,或者以上第二方面的任意一种实现方式,当计算机程序被一个或多个处理器执行时,使得电子设备执行以下步骤:如果目标IO请求的起始地址不是一个文件碎片的起始地址,或者目标IO请求不是顺序访问的IO请求,则不记录目标IO请求对应的文件碎片的碎片信息。
根据第二方面,或者以上第二方面的任意一种实现方式,当计算机程序被一个或多个处理器执行时,使得电子设备执行以下步骤:若目标IO请求对应的数据分布在多个不连续的存储区域,则获取原始子IO请求和其他子IO请求,原始子IO请求和其他子IO请求是将目标IO请求进行分割获取的;获取原始子IO请求对应的起始地址;若原始子IO请求对应的起始地址为一个文件碎片的起始地址,且原始子IO请求为顺序访问的IO请求,则记录每个存储区域上文件碎片的碎片信息,其中,文件碎片包括原始子IO请求对应的文件碎片,以及其他子IO请求对应的文件碎片。
根据第二方面,或者以上第二方面的任意一种实现方式,当计算机程序被一个或多个处理器执行时,使得电子设备执行以下步骤:若原始子IO请求对应的起始地址不是一个文件碎片的起始地址,或者原始子IO请求不是顺序访问的IO请求,则不对原始子IO请求对应的文件碎片的碎片信息进行记录,仅对其他子IO请求对应的文件碎片的碎片信息进行记录。
根据第二方面,或者以上第二方面的任意一种实现方式,当计算机程序被一个或多个处理器执行时,使得电子设备执行以下步骤:获取每个文件碎片对应的历史碎片信息,历史碎片信息包括每个文件碎片的碎片化访问次数;对每个文件碎片的碎片化访问次数进行更新,以实现对每个存储区域上文件碎片的碎片信息的记录。
根据第二方面,或者以上第二方面的任意一种实现方式,当计算机程序被一个或多个处理器执行时,使得电子设备执行以下步骤:将每个文件碎片的碎片化访问次数加1。
根据第二方面,或者以上第二方面的任意一种实现方式,待筛选信息包括碎片化访问次数,当计算机程序被一个或多个处理器执行时,使得电子设备执行以下步骤:获取每个文件碎片对应的碎片化访问次数,并将碎片化访问次数大于预设次数的文件碎片作为目标碎片。
根据第二方面,或者以上第二方面的任意一种实现方式,当计算机程序被一个或多个处理器执行时,使得电子设备执行以下步骤:检测电子设备是否从关机状态切换为开机状态;若电子设备从关机状态切换为开机状态,则对指定时间段内多个文件碎片的碎片化访问的信息进行统计。
根据第二方面,或者以上第二方面的任意一种实现方式,当计算机程序被一个或多个处理器执行时,使得电子设备执行以下步骤:针对待筛选信息执行信息清除操作。
第三方面,本申请实施例提供一种芯片。该芯片包括一个或多个接口电路和一个或多个处理器;接口电路用于从电子设备的存储器接收信号,并向处理器发送信号,信号包括存储器中存储的计算机指令;当处理器执行计算机指令时,使得电子设备执行权利第一方面以及第一方面中任意一项的文件碎片整理方法。
第三方面以及第三方面的任意一种实现方式分别与第一方面以及第一方面的任意一种实现方式相对应。第三方面以及第三方面的任意一种实现方式所对应的技术效果可参见上述第一方面以及第一方面的任意一种实现方式所对应的技术效果,此处不再赘述。
第四方面,本申请实施例提供一种计算机可读存储介质。该计算机可读存储介质包括计算机程序,其特征在于,当计算机程序在电子设备上运行时,使得电子设备执行第一方面以及第一方面中任意一项文件碎片整理方法。
第四方面以及第四方面的任意一种实现方式分别与第一方面以及第一方面的任意一种实现方式相对应。第四方面以及第四方面的任意一种实现方式所对应的技术效果可参见上述第一方面以及第一方面的任意一种实现方式所对应的技术效果,此处不再赘述。
附图说明
图1为本申请实施例示出的文件数据存放在连续的存储区域的示例图;
图2为本申请实施例示出的文件数据被分别存放在多个不连续的存储区域的示例图;
图3为本申请实施例示出的可以合并的IO请求和无法合并的IO请求的示例图;
图4为本申请实施例示出的电子设备的结构示意图;
图5为本申请实施例示出的电子设备的软件结构示意图;
图6为本申请实施例提供的一种文件碎片整理方法的流程示意图;
图7为本申请实施例提供的一种文件碎片整理方法中不作为碎片化访问的示例图;
图8为本申请实施例提供的一种文件碎片整理方法中碎片统计的流程示意图;
图9为本申请实施例提供的一种文件碎片整理方法中目标IO请求的数据分布示例图;
图10为本申请实施例提供的一种文件碎片整理方法中碎片统计模块对碎片信息进行统计的示例图;
图11为本申请实施例提供的一种文件碎片整理方法中碎片统计模块对碎片信息进行统计的另一示例图;
图12为本申请实施例提供的一种文件碎片整理方法中一个IO请求队列的示意图;
图13为本申请实施例提供的一种文件碎片整理方法中另一个IO请求队列的示意图;
图14为本申请实施例提供的一种文件碎片整理方法中碎片统计模块对碎片信息进行统计的又一示例图;
图15为本申请实施例提供的一种文件碎片整理方法中又一个IO请求队列的示意图;
图16为本申请实施例提供的一种文件碎片整理方法中对目标碎片进行整理前后对比示例图;
图17为本申请另一实施例提供的一种文件碎片整理方法的流程示意图;
图18为本申请又一实施例提供的一种文件碎片整理方法的流程示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
应当理解,当在本申请说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在本申请实施例中,“一个或多个”是指一个、两个或两个以上;“和/或”,描述关联对象的关联关系,表示可以存在三种关系;例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A、B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。
本申请实施例的说明书和权利要求书中的术语“第一”和“第二”等是用于区别不同的对象,而不是用于描述对象的特定顺序。例如,第一目标对象和第二目标对象等是用于区别不同的目标对象,而不是用于描述目标对象的特定顺序。
在本申请说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
在本申请实施例的描述中,除非另有说明,“多个”的含义是指两个或两个以上。例如,多个处理单元是指两个或两个以上的处理单元;多个系统是指两个或两个以上的系统。
本申请实施例提供的文件碎片整理方法可以应用于电子设备。该电子设备例如可以为手机、平板电脑、台式机(桌面型电脑)、手持计算机、笔记本电脑(膝上型电脑)、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本、个人数字助理(personal digital assistant,PDA)、增强现实(augmented reality,AR)\虚拟现实(virtual reality,VR)设备等,本申请实施例对电子设备的具体形态不作特殊限制。
为了便于描述,以电子设备为手机为例,结合以下附图对本申请实施例中提供的文件碎片整理方法进行详细介绍。
现有手机运行时访问的文件数量非常多,而文件的读写访问效率(IO,InputOutput)。通常是影响手机运行性能的主要因素之一。频繁地对文件系统中的文件进行创建、更新和删除等操作,会使文件数据被分别存放在多个不连续的区域中,进而会形成多个文件碎片,此时读写数据需要从多个区域分别访问,导致IO效率下降。
电子设备在使用初期,磁盘的存储空间较大,同一个文件的数据页面通常会被连续存放在磁盘上,一次IO请求可以读取多个连续的数据页面。如图1所示,文件1的数据页面被连续存放在一个区域中,每个数据页面的大小为4K,当读取32K数据时,一次IO请求(IO_Request1)即可完成。
通过上述介绍知道,对文件进行不断的创建、更新和删除等操作后,会使文件数据被分别存放在多个不连续的区域中。如图2所示,文件1中的数据经过多次更新后,数据页面在存储区域上不再连续存放,此时单次32K的IO请求会被分割为5次IO请求,这5次IO请求分别是IO_Request1、IO_Request2、IO_Request3、IO_Request4、IO_Request5,与图1相比图2的IO效率明显下降。
另外,在访问一个文件时,如果有多个顺序访问的IO请求,且这些IO请求在文件中的偏移地址连续,则可以将相邻的IO请求进行合并处理,以提高IO效率。然而,随着文件碎片的增多,会导致多数IO请求无法合并,进而影响IO效率。
为了更好的理解合并与无法合并,本申请实施例给出了如图3所示示例图,图3为3个IO请求顺序访问同一个文件的情况。其中,IO请求1(IO_Request1)和IO请求2(IO_Request2)的数据在磁盘中是连续存放,且IO请求1和IO请求2在文件中的偏移地址连续,故IO请求1和IO请求2可以合并为一个IO请求(IO_Request)。
另外,IO请求3(IO_Request3)对应数据的存储区域存与前面IO请求的数据的存储区域不连续,故其无法与前面的IO请求进行合并。因此,只能单独下发IO请求3,如此会影响IO效率。
可见,文件碎片的存在对IO效率的影响较大,为了消除文件碎片的影响,就需要对文件碎片进行整理。目前对文件碎片进行整理时,需要对文件系统中所有文件碎片进行整理,即对文件系统中每个文件对应的不连续的块进行重新读取,并写入到连续的存储区域中。然而,此过程不仅会消耗较长的时间,而且会增加大量的读写操作,同时会影响到存储设备的使用寿命。
为了解决上述问题,本申请实施例提供了一种文件碎片整理方法。该文件碎片整理方法通过对文件碎片进行筛选,以获取到目标碎片,最后对目标碎片进行整理。本申请通过对目标碎片进行整理不仅会提高IO效率,而且会加快碎片整理的速率,在一定程度上可以降低存储设备寿命的损耗。
图4示出了本申请实施例中的电子设备100的结构示意图。应该理解的是,图4所示电子设备100仅是电子设备的一个范例,并且电子设备100可以具有比图中所示的更多的或者更少的部件,可以组合两个或多个的部件,或者可以具有不同的部件配置。图4中所示出的各种部件可以在包括一个或多个信号处理和/或专用集成电路在内的硬件、软件、或硬件和软件的组合中实现。
电子设备100可以包括:处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriber identification module,SIM)卡接口195等。其中传感器模块180可以包括压力传感器,陀螺仪传感器,气压传感器,磁传感器,加速度传感器,距离传感器,接近光传感器,指纹传感器,温度传感器,触摸传感器,环境光传感器,骨传导传感器等。
可以理解的是,本申请实施例示意的结构并不构成对电子设备100的具体限定。在本申请另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。例如,处理器110用于执行本申请实施例中的文件碎片整理方法。
其中,控制器可以是电子设备100的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。USB接口130是符合USB标准规范的接口,具体可以是Mini USB接口,Micro USB接口,USB Type C接口等。USB接口130可以用于连接充电器为电子设备100充电,也可以用于电子设备100与外围设备之间传输数据。也可以用于连接耳机,通过耳机播放音频。该接口还可以用于连接其他电子设备,例如AR设备等。
充电管理模块140用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。在一些有线充电的实施例中,充电管理模块140可以通过USB接口130接收有线充电器的充电输入。在一些无线充电的实施例中,充电管理模块140可以通过电子设备100的无线充电线圈接收无线充电输入。充电管理模块140为电池142充电的同时,还可以通过电源管理模块141为电子设备供电。
电源管理模块141用于连接电池142,充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,内部存储器121,外部存储器,显示屏194,摄像头193,和无线通信模块160等供电。
天线1和天线2用于发射和接收电磁波信号。电子设备100中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
移动通信模块150可以提供应用在电子设备100上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,LNA)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。
无线通信模块160可以提供应用在电子设备100上的包括无线局域网(wirelesslocal area networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequency modulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。
在一些实施例中,电子设备100的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得电子设备100可以通过无线通信技术与网络以及其他设备通信。
电子设备100通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏194用于显示图像,视频等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light-emittingdiode,OLED)等。在一些实施例中,电子设备100可以包括1个或N个显示屏194,N为大于1的正整数。
电子设备100可以通过ISP,摄像头193,视频编解码器,GPU,显示屏194以及应用处理器等实现拍摄功能。
摄像头193用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,CCD)或互补金属氧化物半导体(complementary metal-oxide-semiconductor,CMOS)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给ISP转换成数字图像信号。ISP将数字图像信号输出到DSP加工处理。DSP将数字图像信号转换成标准的RGB,YUV等格式的图像信号。在一些实施例中,电子设备100可以包括1个或N个摄像头193,N为大于1的正整数。
外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展电子设备100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。处理器110通过运行存储在内部存储器121的指令,从而执行电子设备100的各种功能应用以及执行内部存储器121的指令,使得电子设备执行本申请中的文件碎片整理方法。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储电子设备100使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。
在本申请的实施例中,内部存储器121中还可以存储实现本申请实施例的文件碎片整理方法对应的可执行程序代码,处理器通过运行文件碎片整理方法对应的可执行程序代码可以实现文件碎片整理。
电子设备100可以通过音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,以及应用处理器等实现音频功能。例如音乐播放,录音等。
音频模块170用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块170还可以用于对音频信号编码和解码。在一些实施例中,音频模块170可以设置于处理器110中,或将音频模块170的部分功能模块设置于处理器110中。
按键190包括开机键,音量键等。按键190可以是机械按键。也可以是触摸式按键。电子设备100可以接收按键输入,产生与电子设备100的用户设置以及功能控制有关的键信号输入。
马达191可以产生振动提示。马达191可以用于来电振动提示,也可以用于触摸振动反馈。例如,作用于不同应用(例如拍照,音频播放等)的触摸操作,可以对应不同的振动反馈效果。
指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。
本申请实施例并未特别限定一种文件碎片整理方法的执行主体的具体结构,只要可以通过运行记录有本申请实施例的一种文件碎片整理方法的代码,以根据本申请实施例提供的一种文件碎片整理方法进行处理即可。例如,本申请实施例提供的一种文件碎片整理方法的执行主体可以是电子设备中能够调用程序并执行程序的功能模块,或者为应用于电子设备中的处理装置,例如,芯片。
本申请实施例中的电子设备上可以安装运行多个应用程序,例如:短视频应用、浏览器应用、会议类应用、游戏和新闻应用等。
电子设备100的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本申请实施例以分层架构的操作系统为例,示例性说明电子设备100的软件结构。
图5是本申请实施例的电子设备100的软件结构框图。
分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将Android系统分为四层,从上至下分别为应用程序层,应用程序框架层,安卓运行时(Android runtime)和系统库,以及内核层。
应用程序层可以包括一系列应用程序包。
如图5所示,应用程序包可以包括相机,图库,日历,通话,地图,导航,WLAN,蓝牙,音乐,视频,短信息等应用程序。
应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。
如图5所示,应用程序框架层可包括窗口管理器,内容提供器,视图系统,电话管理器,通知管理器以及碎片管理模块等。
其中,碎片管理模块用于控制碎片统计的开始和结束,以及在确定目标碎片的数量大于数量阈值时指示碎片整理模块对目标碎片进行整理。
内核层是硬件和软件之间的层。内核层至少包含碎片统计模块、碎片筛选模块、碎片整理模块、文件系统以及显示驱动等。
其中,碎片统计模块用于统计文件系统中所有IO碎片化访问信息。碎片筛选模块用于对碎片统计模块获取的碎片信息进行筛选,以得到需要整理的目标碎片。碎片整理模块用于对筛选模块获取的目标碎片进行整理。文件系统中存储有IO碎片化访问信息。
可以理解的是,图5示出的软件结构中的层以及各层中包含的部件,并不构成对电子设备100的具体限定。在本申请另一些实施例中,电子设备100可以包括比图示更多或更少的层,以及每个层中可以包括更多或更少的部件,本申请不做限定。
在本申请实施例中,电子设备对文件系统中所有IO碎片化访问信息进行统计,然后对统计结果进行筛选,以得到目标碎片,最后对目标碎片进行整理,如此不仅可以提高IO效率,同时可以加快文件碎片的整理。
如图6所示,本申请实施例提供的一种文件碎片整理方法,其可以应用于电子设备,该文件碎片整理方法可以包括下述的步骤S101至步骤S113。
步骤S101:碎片管理模块发送统计开始的指示信息至碎片统计模块。
作为一种方式,碎片管理模块可以检测是否接收到电源键传输的开机提示信息,如果碎片管理模块接收到电源键传输的开机提示信息,则其可以向碎片统计模块发送统计开始的指示信息。
换句话说,碎片管理模块可以检测电子设备是否从关机状态切换为开机状态,如果检测到电子设备从关机状态切换为开机状态,则碎片管理模块可以向碎片统计模块发送统计开始的指示信息。
其中,统计开始的指示信息用于指示碎片统计模块开始对文件系统中的所有IO碎片化访问信息进行统计。其中,IO碎片化访问信息可以是针对IO请求产生的碎片化访问信息,而碎片化访问信息则可以是与文件碎片相关的碎片信息。
作为另一种方式,碎片管理模块也可以获取电子设备的剩余存储空间,并确定剩余存储空间是否小于预设空间。如果碎片管理模块确定电子设备的剩余存储空间小于预设空间,则可以向碎片统计模块发送统计开始的指示信息。
作为另一种方式,碎片管理模块也可以对电子设备的系统性能进行监测,并在确定电子设备的系统性能降低时,可以向碎片统计模块发送统计开始的指示信息。
作为另一种方式,碎片管理模块也可以每隔指定时长,向碎片统计模块发送一次统计开始的指示信息。
需要说明的是,碎片管理模块也可以基于上述一种或者多种方式来确定是否向碎片统计模块发送统计开始的指示信息。具体是如何结合或者是结合几种方式,这里不进行明确限制,可根据实际情况进行选择。
步骤S102:碎片统计模块统计文件系统中所有IO碎片化访问信息。
有一些IO请求由于访问的数据块分布在一个文件碎片内,没有分布在多个文件碎片上,则不会产生将单个IO请求分割为多个IO请求的问题,也没有对这部分文件碎片有顺序访问的需求,即不会有多个IO请求需要合并的问题。如果对此类文件碎片进行整理,则对IO性能的影响不大,且整理这些文件碎片会提高电子设备的功耗。
如图7所示,IO请求1(IO_Request1)和IO请求2(IO_Request2)为4K的小块IO请求,由于IO请求1和IO请求2不会被分割,也没有合并的需求,故不需要将这两个请求对应的文件碎片进行整理。换句话说,对IO请求1和IO请求2对应的文件碎片进行整理,不会对IO性能有明显的影响,故没有必要对这类文件碎片进行整理。
为了提高文件碎片的整理效率,降低IO搬移量,本申请实施例可以仅对IO访问性能造成影响的文件碎片进行整理即可。其中,影响IO访问性能的文件碎片主要可以分为两类。
第一类文件碎片是造成IO请求被分割的文件碎片,这些文件碎片会使单次IO请求的数据分布在不连续的存储空间中。换句话说,第一类文件碎片会导致单次IO请求被分割为多个IO请求,进而会降低IO性能,如图2所示。
第二类文件碎片是造成IO请求无法合并的文件碎片,对于文件中依次顺序访问的小块IO请求,如果无文件碎片,多个小块IO请求可以合并为一个大块IO请求。如图3所示的IO请求1(IO_Request1)和IO请求2(IO_Request2)在文件中的偏移地址连续,且二者对应的数据块之间不存在碎片,故此时的IO请求1和IO请求2可以合并。
另外,如果顺序访问的多个IO请求的数据分布在不同的文件碎片上,则会导致多个小块IO请求无法合并。如图3所示的IO请求3(IO_Request3),虽然其与IO请求2在文件中的偏移地址连续,然而由于二者对应的数据分布在不同的文件碎片上,即IO请求2和IO请求3在存储区域上不连续。故无法将IO请求3与前面的IO请求2进行合并,此类文件碎片可以作为第二类文件碎片。
本申请实施例可以对上述两种类型的文件碎片进行统计,得到碎片化访问信息,以提高碎片整理的效率。其中,碎片化访问信息也可以称作是文件碎片的碎片信息,其可以包括碎片所属文件、碎片在文件内偏移地址以及碎片化访问次数等。具体的统计流程如图8所示。
步骤S01:碎片统计模块获取目标IO请求。
作为一种方式,电子设备在运行的过程中通常会产生多个IO请求,这些IO请求可以由同一个应用程序触发,也可以由多个不同的应用程序触发。另外,每个IO请求对应读取的文件数据可能属于同一文件,也可能属于不同的文件。为了更好的说明碎片的统计过程,本申请实施例以目标IO请求为例来进行说明。
可选的,目标IO请求可以用于读取文件系统中目标文件中的数据。其中,目标文件可以有多个数据块组成,这些数据块在目标文件中的偏移地址可以是连续的。例如,目标文件可以由8个数据块组成,这8个数据块分别是数据块1、数据块2、数据块3、数据块4、数据块5、数据块6、数据块7以及数据块8。这8个数据块可以顺序组成目标文件。可见,IO请求读取文件中数据时主要是按块进行访问的。
在一些实施方式中,目标IO请求可以用于读取目标文件中的部分数据块,也可以用于读取目标文件中的全部数据块。例如,目标IO请求可以读取目标文件中的数据块2、数据块3以及数据块4。
本申请实施例中,目标IO请求可以是碎片统计模块在接收到碎片管理模块传输的统计开始的指示信息后获取的IO请求。换句话说,目标IO请求可以是电子设备在指定时间段内产生的任一一个IO请求。其中,指定时间段可以是开始执行统计操作到结束执行统计操作之间的时间。
另外,目标IO请求的格式可以为:文件x(IO起始地址,IO块大小)。其中,文件x可以是文件的名称,IO起始地址可以是起始数据块的地址,IO块大小可以是目标IO请求读取数据块的数量。
作为一个示例,目标IO请求为:文件a(2,5),其中,文件a可以是目标IO请求读取的文件的名称;2可以是目标IO请求从文件a的地址2处开始读取数据,即该IO请求对应的起始地址为2;5指的是一次读取5个数据块,即从起始地址2开始读取5个数据块。
步骤S02:碎片统计模块根据目标IO请求所属文件的元数据获取目标IO请求的数据分布情况。
作为一种方式,碎片统计模块在获取到目标IO请求时可以确定该目标IO请求所属的文件,该文件可以称作是目标文件。在此基础上,获取目标文件的元数据,并基于目标文件的元数据获取目标IO请求的数据分布情况。
本申请实施例中,目标IO请求所属目标文件的元数据可以包括文件大小、存储区域的物理地址信息、文件名称、修改时间以及文件类型等。通过元数据可以获取该目标文件在存储介质上分散在几个存储区域上。
换句话说,通过读取目标文件的元数据可以获取到目标文件的文件大小信息、存储区域数量信息以及文件名称等。
在一些实施方式中,碎片统计模块获取到目标IO请求所属目标文件的元数据后,便可以基于该元数据获取到目标IO请求对应的数据分布情况。其中,数据分布情况用于确定目标IO请求读取的文件数据是否分布在多个不连续存储区域。
通过上述介绍知道,元数据可以包括目标文件存储区域的物理地址,且通过该存储区域的物理地址可以知道目标文件的各数据块的分布情况。另外,目标IO请求可以包括IO起始地址和IO数据块大小。因此,本申请实施例可以结合目标IO请求包括的信息和目标文件的元数据综合获取到目标IO请求的数据分布情况。
为了更好的理解目标IO请求的数据分布情况,本申请实施例给出如图9所示的示例图。通过图9知道文件1可以由9个数据块组成,这9个数据块分别是数据块0、数据块1、数据块2、数据块3、数据块4、数据块5、数据块6、数据块7以及数据块8。
图9中的文件1刚开始被创建时其对应的数据块0、数据块1、数据块2、数据块3、数据块4、数据块5、数据块6、数据块7以及数据块8是分布在连续的存储区域上的。然而,随着不断的对文件1进行更新和删除等,文件1对应的数据块0、数据块1、数据块2、数据块3、数据块4、数据块5、数据块6、数据块7以及数据块8开始分布在多个不连续的存储区域上。
作为一个示例,图9中目标IO请求1为(0,3),该目标IO请求1的起始地址为0,读取的数据块个数为3个,即从起始地址0开始连续读取3个数据块。结合目标IO请求1和文件1的元数据即可获取到目标IO请求1的数据分布情况。
作为另一个示例,图9中目标IO请求2为(3,4),该目标IO请求2的起始地址为3,读取的数据块个数为4个,即从起始地址3开始连续读取4个数据块。结合目标IO请求2和文件1的元数据即可获取到目标IO请求2的数据分布情况。
本申请实施例中,目标IO请求的数据分布情况可以包括连续或者不连续,其中,连续指的是目标IO请求对应的多个数据块连续存放在存储区域上,它们之间不存在文件碎片。另外,不连续指的是目标IO请求对应的多个数据块存放在多个不连续的存储区域上,它们之间存在文件碎片。
步骤S03:碎片统计模块基于该分布情况确定目标IO请求对应的数据是否分布在多个不连续的存储区域。
作为一种方式,碎片统计模块在获取到目标IO请求的数据分布情况后,可基于该分布情况确定目标IO请求对应的数据是否分布在多个不连续的存储区域。换句话说,碎片统计模块可以基于分布情况确定目标IO请求对应的数据块是连续的还是不连续的。
作为一个示例,通过图9知道目标IO请求1对应的数据分布是连续的,即数据块0、数据块1和数据块2连续存储在存储设备上。换句话说,目标IO请求1对应的数据分布在连续的存储区域。
作为另一个示例,通过图9知道目标IO请求2对应的数据分布是不连续的,即数据块3、数据块4、数据块5以及数据块6不是连续存储在存储设备上。换句话说,数据块3、数据块4、数据块5以及数据块6分布在多个不连续的存储区域。
在一些实施方式中,如果确定目标IO请求对应的数据分布在多个不连续的存储区域,则碎片统计模块可以记录每个存储区域上文件碎片的碎片信息,即进入步骤S04。另外,如果确定目标IO请求对应的数据未分布在多个不连续的存储区域,则碎片统计模块可以确定目标IO请求的地址是否为一个文件碎片的起始地址,即进入步骤S05。
步骤S04:碎片统计模块记录每个存储区域上文件碎片的碎片信息。
本申请实施例中,文件碎片的碎片信息可以包括碎片所属文件、碎片在文件内的偏移地址以及碎片化访问次数。每个文件碎片对应的碎片信息可以是不相同的,且碎片化访问次数可以随着IO请求的访问不断发生改变。
在一些实施方式中,文件碎片的碎片信息的格式可以为(文件x,文件内偏移地址,碎片化访问次数)。其中,文件x指的是文件碎片所属文件的名称;文件内偏移地址可以是文件碎片在文件x中的地址,其可以是文件碎片的起始地址;碎片化访问次数可以是文件碎片在指定时间段内被碎片化访问时的读取次数。
本申请实施例中,如果读写一个数据块时IO请求被分割为多个IO请求访问,或者因文件碎片使多个IO请求合并无法为一个IO请求访问,称为碎片化访问。
作为一个示例,文件碎片1的碎片信息为(文件a,3,10),可见,文件碎片1属于文件a,其在文件a中的偏移地址/起始地址为3。另外,10指的是文件碎片1在指定时间段内被访问了10次。
在一些实施方式中,碎片统计模块如果确定目标IO请求对应的数据分布在多个不连续的存储区域上,则可以记录每个存储区域上文件碎片的碎片信息。碎片统计模块在记录每个存储区域上文件碎片的碎片信息时,可以先获取每个文件碎片当前的碎片信息,然后根据目标IO请求对文件碎片的碎片信息进行更新,以实现对碎片信息的统计。
另外,本申请实施例根据目标IO请求对文件碎片的碎片信息进行更新时,可以是对文件碎片的碎片化访问次数进行更新。具体的,在确定目标IO请求对应的数据分布在多个不连续的存储区域时,每个存储区域上对应的文件碎片的碎片化访问次数可以加1。
请参阅图10,在预设时间段内针对文件1触发了三个IO请求,这三个IO请求分别是目标IO请求1、目标IO请求2以及目标IO请求3。其中,目标IO请求1为文件1(2,5),目标IO请求2为文件1(5,3),目标IO请求3为文件1(8,1)。
通过图10知道目标IO请求1对应的数据分布在多个不连续的存储区域上。此时,碎片统计模块可以记录每个存储区域上文件碎片的碎片信息,即对目标IO请求1对应的文件碎片的碎片信息进行更新。
具体的,目标IO请求1的起始地址为2,其读取的数据块数量为5块,这5个数据块分别是数据块2、数据块3、数据块4、数据块5以及数据块6。由于目标IO请求1对应的5个数据块的存储区域是不连续的,故目标IO请求1会被分割为4个IO请求,这4个IO请求分别是IO11、IO12、IO13以及IO14。
其中,IO11也可以称作是原始IO请求,而IO12、IO13和IO14则是分割出的IO请求。其中,IO12、IO13和IO14可以对应有三个文件碎片,这三个文件碎片分别是第一文件碎片、第二文件碎片以及第三文件碎片。另外,这三个文件碎片可以属于同一文件1,不过其在文件1中的偏移地址不同。
第一个文件碎片对应的数据块的偏移地址为3,即数据块3;第二个文件碎片对应的数据块的偏移地址为4,由于数据块4和数据块5位于连续的存储区域,故二者属于同一个文件碎片;第三个文件碎片对应的数据块的偏移地址为6,即数据块6。
因此,目标IO请求1对应的文件碎片有3个,碎片统计模块在记录这三个文件碎片的碎片信息时,可以对这三个文件碎片的碎片化访问次数进行更新。具体的,碎片统计模块可以将这三个文件碎片的碎片化访问次数分别加1。
例如,第一文件碎片对应的历史碎片信息为(文件1,3,0),对第一文件碎片的碎片信息进行记录后,第一文件碎片的碎片信息变成(文件1,3,1)。
又如,第二文件碎片对应的历史碎片信息为(文件1,4,0),对第二文件碎片的碎片信息进行记录后,第二文件碎片的碎片信息变成(文件1,4,1)。
又如,第三文件碎片对应的历史碎片信息为(文件1,6,0),对第三文件碎片的碎片信息进行记录后,第三文件碎片的碎片信息变成(文件1,6,1)。
通过图10知道目标IO请求2对应的数据分布在多个不连续的存储区域上。此时,碎片统计模块可以记录每个存储区域上文件碎片的碎片信息,即对目标IO请求2对应的文件碎片的碎片信息进行更新。
目标IO请求2的起始地址为5,其读取的数据块数量为3块,这3个数据块分别是数据块5、数据块6以及数据块7。由于目标IO请求2对应的3个数据块的存储区域是不连续的,故目标IO请求1会被分割为3个IO请求。这3个IO请求分别是IO21、IO22以及IO23。
其中,IO21也可以称作是原始IO请求,而IO22和IO23则是分割出的IO请求。其中,IO22和IO23可以对应有两个文件碎片,这两个文件碎片分别可以是第三文件碎片和第四文件碎片。
第三个文件碎片对应的数据块的偏移地址为6,即数据块6;第四个文件碎片对应的数据块的偏移地址为7,即为数据块7。因此,目标IO请求2对应的文件碎片有2个,碎片统计模块在记录这两个文件碎片的碎片信息时,可以分别对这两个文件碎片的碎片化访问次数进行更新。具体的,碎片统计模块可以将这两个文件碎片的碎片化访问次数分别加1。
例如,第三文件碎片对应的历史碎片信息为(文件1,6,1),对第三文件碎片的碎片信息进行记录后,第三文件碎片的碎片信息变成(文件1,6,2)。
又如,第四文件碎片对应的历史碎片信息为(文件1,7,0),对第四文件碎片的碎片信息进行记录后,第四文件碎片的碎片信息变成(文件1,7,1)。
本申请实施例中,统计模块记录每个存储区域上文件碎片的碎片信息时,主要是对分割出的IO请求对应的文件碎片的碎片信息进行记录,而是否对原始IO请求对应的数据块进行碎片信息记录,则需要进行进一步的判断。
步骤S05:碎片统计模块确定该目标IO请求的起始地址是否是一个文件碎片的起始地址。
在一些实施方式中,如果确定目标IO请求对应的数据不是分布在多个不连续的存储区域,则碎片统计模块可以确定该目标IO请求的起始地址是否为一个文件碎片的起始地址。
本申请实施例中,目标IO请求的起始地址可以是目标IO请求对应读取的数据的起始地址。换句话说,在确定目标IO请求对应的数据未分布在多个不连续的存储区域时,碎片统计模块可以获取该目标IO请求对应数据块的起始地址。
在此基础上,确定该起始地址是不是一个文件碎片的起始地址。如果确定目标IO请求的起始地址是一个文件碎片的起始地址,则碎片统计模块可以继续确定该目标IO请求是否为顺序访问的IO请求,即进入步骤S06。
作为一个示例,碎片统计模块获取到的IO请求为如图10所示的目标IO请求3,该目标IO请求3的信息为文件1(8,1)。通过图10知道目标IO请求3对应的数据未分布在多个不连续的存储区域上。此时,碎片统计模块可以获取该目标IO请求3的起始地址,然后确定该起始地址是否为一个文件碎片的起始地址。
图10中,数据块8与前面的数据块是不连续的,故数据块8为一个文件碎片,目标IO请求3的起始地址为8,其是一个文件碎片的起始地址。此时,碎片统计模块可以继续确定该目标IO请求是否为顺序访问的IO请求。
另外,如果目标IO请求的起始地址不是一个文件碎片的起始地址,则不执行碎片信息记录操作。如图11所示,目标IO请求1“文件1(2,2)”对应的数据分布在多个不连续的存储区域,故分割出的IO请求对应的第一文件碎片的碎片化访问次数可以加1。
与目标IO请求1不同,图11中的目标IO请求2“文件1(5,1)”对应的数据未分布在多个不连续的存储区域。此时,碎片统计模块可以确定目标IO请求2的起始地址是不是一个文件碎片的起始地址。通过图11知道目标IO请求2的起始地址为5,而5对应的文件碎片的起始地址则为4。可见,目标IO请求2的起始地址并不是一个文件碎片的起始地址。换句话说,目标IO请求2不是碎片化访问,不执行碎片信息记录操作。
步骤S06:碎片统计模块确定该目标IO请求是否为顺序访问的IO请求。
作为一种方式,碎片统计模块在确定目标IO请求的起始地址是一个文件碎片的起始地址后,其可以继续确定该目标IO请求是否为顺序访问的IO请求。如果目标IO请求为顺序访问的IO请求,则碎片统计模块可以记录该目标IO请求对应的文件碎片的碎片信息,即进入步骤S07。
本申请实施例中,碎片统计模块在确定目标IO请求的起始地址是否为顺序访问的IO请求时,可以先获取IO请求队列,然后确定该IO请求队列中是否包括与目标IO请求关联的IO请求。如果IO请求队列中存在与目标IO请求关联的IO请求,则确定目标IO请求为顺序访问的IO请求。
在一些实施方式中,确定IO请求队列中是否包括与目标IO请求关联的IO请求可以包括:获取IO请求队列中当前文件的各IO请求在文件中的偏移地址,然后确定IO请求队列中是否存在与目标偏移地址连续的偏移地址。如果IO请求队列中存在与目标偏移地址连续的偏移地址,则确定IO请求队列中包括与目标IO请求关联的IO请求。其中,目标偏移地址可以是目标IO请求在目标文件中的偏移地址。另外,一个IO请求根据访问的IO块大小可以对应有一个偏移地址,也可以对应有多个偏移地址。
为了更好的理解IO请求队列,本申请实施例给出了如图12所示的示例图。图12是碎片统计模块在获取到如图10所示的目标IO请求3时,IO请求队列中IO请求的分布情况。
通过上述介绍知道,图10中目标IO请求3的起始地址是一个文件碎片的起始地址,此时碎片统计模块可以继续确定该目标IO请求3是否为顺序访问的IO请求。具体的,碎片统计模块可以确定IO请求队列中是否存在与目标IO请求3的偏移地址连续的IO请求。通过图10知道,目标IO请求3对应的偏移地址为8,需要确定图12所示的IO请求队列中是否存在偏移地址为7的IO请求。
通过图12可以看出,IO请求队列中的IO请求2对应的偏移地址有5、6和7。可见,此时的IO请求队列中存在与目标IO请求3的偏移地址连续的IO请求,即目标IO请求3为顺序访问的IO请求。在此基础上,碎片统计模块可以记录该目标IO请求3对应的文件碎片的碎片信息,即进入步骤S07。
另外,如果碎片统计模块确定目标IO请求不是顺序访问的IO请求,则可以不执行碎片信息记录操作,即进入步骤S08。
作为一个示例,碎片统计模块当前时刻获取到的IO请求是图11中的目标IO请求3。通过确定知道,图11中的目标IO请求3的起始地址是一个文件碎片的起始地址。在此基础上,碎片统计模块可以继续确定该目标IO请求3是否为顺序访问的IO请求。具体的,碎片统计模块可以通过获取当前时刻的IO请求队列来进行确认目标IO请求3是否为顺序访问的IO请求,此时的IO请求队列可以如图13所示。
图13是碎片统计模块在获取到如图11所示的目标IO请求3时,IO请求队列中IO请求的分布情况。碎片统计模块在确定目标IO请求3是否为顺序访问的IO请求时,可以确定IO请求队列中是否存在与目标IO请求3的偏移地址连续的IO请求。通过图11知道,目标IO请求3对应的偏移地址为8,需要确定图13所示的IO请求队列中是否存在偏移地址为7的IO请求。
通过图13可以看出,IO请求队列中的IO请求2对应的偏移地址有5。可见,此时的IO请求队列中不存在与目标IO请求3的偏移地址连续的IO请求,即目标IO请求3不是顺序访问的IO请求。此时,则不执行碎片化信息记录操作,即目标IO请求3对应的文件碎片的碎片化访问次数可以是保持不变的。
步骤S07:碎片统计模块记录该目标IO请求对应的文件碎片的碎片信息。
本申请实施例中,记录目标IO请求对应的文件碎片的碎片信息和记录每个存储区域上文件碎片的碎片信息的流程类似,这里就不再进行赘述。
作为一个示例,图10中目标IO请求3对应的文件碎片可以称作是第五文件碎片,该第五文件碎片对应的偏移地址为8,即数据块8。碎片统计模块在记录第五文件碎片的碎片信息时,可以对第五个文件碎片的碎片化访问次数进行更新。具体的,碎片统计模块可以将第五文件碎片的碎片化访问次数加1。
例如,第五文件碎片对应的历史碎片信息为(文件1,8,0),对第五文件碎片的碎片信息进行记录后,第五文件碎片的碎片信息变成(文件1,8,1)。
步骤S08:碎片统计模块不执行碎片信息记录操作。
为了更准确的对碎片信息进行统计,本申请实施例在对每个存储区域上文件碎片的碎片信息进行统计后,可以确定目标IO请求中的原始IO请求的起始地址是否是一个文件碎片的起始地址,如果目标IO请求中的原始IO请求的起始地址不是一个文件碎片的起始地址,则不执行碎片信息记录操作。
例如,图10所示的目标IO请求1中的原始IO请求IO11的起始地址为2,可以看出其并不是一个文件碎片的起始地址,因此对IO11对应的数据块不执行碎片信息记录操作。
又如,图10所示的目标IO请求2中的原始IO请求IO21的起始地址为5,可以看出其并不是一个文件碎片的起始地址,因此对IO21对应的数据块不执行碎片信息记录操作。
另外,如果原始IO请求的起始地址是一个文件碎片的起始地址,则可以确定该原始IO请求是否为顺序访问的IO请求。如果是顺序访问的IO请求,则可以记录该原始IO请求对应的文件碎片的碎片信息。
例如,图14所示碎片统计模块在获取到目标IO请求2后,通过结合文件1的元数据知道该目标IO请求2对应的数据时分布在多个不连续的存储区域上,故目标IO请求2可以被分割为4个IO请求,这4个IO请求分别是IO21、IO22、IO23以及IO24。
图14中,IO21可以称作是原始IO请求,而IO22、IO23和IO24则是分割出的IO请求,且IO12、IO13和IO14可以对应有三个文件碎片,碎片统计模块可以对这三个文件碎片的碎片信息进行更新,即为每个文件碎片的碎片化访问次数加1。
针对原始IO请求IO21,本申请实施例可以先确定该原始IO请求IO21的起始地址是否是一个文件碎片的起始地址,通过图14知道原始IO请求IO21的起始地址是文件碎片的起始地址。在此基础上,碎片统计模块可以继续确定该原始IO请求IO21是否为顺序访问的IO请求。
通过图14知道,原始IO请求IO21对应的偏移地址为4,需要确定图15所示的IO请求队列中是否存在偏移地址为3的IO请求。通过图15可以看出,IO请求队列中的IO请求1对应的偏移地址有2和3。
可见,此时的IO请求队列中存在与原始IO请求IO21的偏移地址连续的IO请求,即原始IO请求IO21为顺序访问的IO请求。此时,则可以记录该原始IO请求对应的文件碎片的碎片信息,即对原始IO请求对应的文件碎片的碎片化访问次数进行更新。
需要说明的是,本申请实施例仅以一个目标IO请求为例来说明,碎片统计模块是如何对文件系统中各文件碎片的碎片信息进行统计。碎片统计模块实际在对各文件的碎片信息进行统计时,可以对多个目标IO请求对应的碎片信息进行统计。换句话说,碎片统计模块可以是对预设时间段内所有IO请求对应的文件碎片的碎片信息进行统计。
步骤S103:碎片统计模块发送碎片筛选指令至碎片筛选模块。
作为一种方式,碎片统计模块在对文件系统中的所有IO碎片化访问信息进行统计后,可以向碎片筛选模块发送碎片筛选指令。其中,碎片筛选指令可以包括筛选指示和碎片统计模块通过统计获取的文件碎片的碎片信息。
作为一个示例,碎片筛选指令可以包括五个文件碎片的碎片信息,这五个文件碎片的碎片信息分别是(文件1,3,1),(文件1,4,1),(文件1,6,2),(文件1,7,1),(文件1,8,1)。
作为一种方式,碎片统计模块可以周期性的将其统计的碎片化访问信息发送至碎片筛选模块。例如,碎片统计模块可以每隔1小时将其统计的文件碎片的碎片信息发送至碎片筛选模块。换句话说,碎片统计模块可以每隔一段时间,向碎片筛选模块发送一次IO碎片化访问信息。
作为另一种方式,碎片统计模块也可以在碎片信息的大小超出预设阈值时,向碎片筛选模块发送碎片筛选指令。另外,碎片统计模块也可以获取统计的IO请求数量,并在该IO请求数量超出预设数量时,向碎片筛选模块发送碎片筛选指令。
作为另一种方式,碎片统计模块也可以在接收到统计开始的指示信息后,周期性的执行碎片统计操作,并在每次获取到碎片统计结果后,将碎片统计结果通过碎片筛选指令发送至碎片筛选模块。
作为一个示例,碎片统计模块在接收到开始指示信息时,执行第一次碎片统计操作,得到第一碎片统计结果,而后将第一碎片统计结果通过碎片筛选指令发送至碎片筛选模块。在间隔T时间段后,碎片统计模块可以执行第二次碎片统计操作,得到第二碎片统计结果,而后将第二碎片统计结果通过碎片筛选指令发送至碎片筛选模块。以此类推直至碎片统计模块接收到统计结束的指示信息时,则碎片统计模块结束碎片统计操作。
步骤S104:碎片筛选模块筛选出需要整理的目标碎片。
在一些实施方式中,如果碎片筛选模块接收到碎片统计模块传输的碎片筛选指令,则可以对文件碎片的碎片信息进行筛选,以获取到需要整理的目标碎片。具体的,碎片筛选模块可以获取每个文件碎片对应的碎片化访问次数,然后确定碎片化访问次数是否大于或等于预设次数。如果碎片化访问次数大于或等于预设次数,则碎片筛选模块可以将该碎片化访问次数对应的文件碎片作为目标碎片。其中,预设次数可以是预先设置的。例如,预设次数可以为2次。
作为一个示例,碎片筛选模块获取的碎片信息有第一文件碎片(文件1,3,1)、第二文件碎片(文件1,4,1)、第三文件碎片(文件1,6,2),第四文件碎片(文件1,7,1)以及第五文件碎片(文件1,8,1)。此时,碎片筛选模块可以获取每个文件碎片对应的碎片化访问次数。
上述示例中,第一文件碎片的碎片化访问次数为1,第二文件碎片的碎片化访问次数为1,第三文件碎片的碎片化访问次数为2,第四文件碎片的碎片化访问次数为1,第五文件碎片的碎片化访问次数为1。通过筛选知道,第三文件碎片的碎片化访问次数2等于预设次数2次,故可以将第三文件碎片作为目标碎片。
另外,本申请实施例也可以将碎片化访问次数大于预设次数的文件碎片作为目标碎片。例如,预设次数可以为1次。
步骤S105:碎片筛选模块发送目标碎片至碎片管理模块。
在一些实施方式中,碎片筛选模块在对文件系统中所有的文件碎片进行筛选,得到目标碎片后,可以将目标碎片发送至碎片管理模块。
作为一种方式,碎片筛选模块可以在每次接收到碎片筛选指令后,对碎片筛选指令中所有的文件碎片进行筛选,并在对所有文件碎片进行筛选完成后,将其筛选的所有目标碎片一起发送至碎片管理模块。
作为另一种方式,碎片筛选模块可以在每次接收到碎片筛选指令后,对碎片筛选指令中所有的文件碎片进行筛选,并在筛选出目标碎片后,将其发送至碎片管理模块。换句话说,碎片筛选模块每筛选出一个目标碎片便可以将其发送至碎片管理模块。
步骤S106:碎片管理模块获取目标碎片的数量。
在一些实施方式中,碎片管理模块在获取到碎片筛选模块传输的目标碎片后,可以对目标碎片的数量进行确认,即获取目标碎片的数量。作为一种方式,碎片管理模块可以在每接收到一个目标碎片时执行一次目标碎片数量获取操作。
作为另一种方式,如果碎片管理模块在预设时长内连续接收到多个目标碎片,则碎片管理模块可以仅执行一次目标碎片数量获取操作,如此可以避免多次获取操作为电子设备带来不必要的功耗。
上述示例中,碎片管理模块接收到目标碎片仅有第三文件碎片,此时目标碎片的数量则为1个。
步骤S107:碎片管理模块确定目标碎片的数量是否大于或等于数量阈值。
本申请实施例中,碎片管理模块在获取到目标碎片的数量时,可以确定该目标碎片的数量是否满足统计结束的条件。具体的,碎片管理模块可以确定目标碎片的数量是否大于或等于数量阈值。
作为一种方式,如果目标碎片的数量大于或等于数量阈值,则碎片管理模块可以向碎片统计模块发送统计结束的指示信息,即进入步骤S109。另外,如果碎片管理模块确定目标碎片的数量小于数量阈值,则碎片管理模块可以重新获取目标碎片的数量。
通过上述介绍知道,碎片统计模块可以周期性的向碎片筛选模块发送碎片筛选指令,故碎片筛选模块筛选出的目标碎片也在不断增加。碎片管理模块在确定其获取的目标碎片的数量小于数量阈值时,可持续对目标碎片的数量进行监测,直至确定目标碎片的数量大于或等于数量阈值,则结束本轮碎片信息的统计。
作为一种方式,数量阈值可以是根据先验预先设置的,如数量阈值可以为1。另外。数量阈值也可以根据电子设备的使用情况进行调整。作为一个示例,数量阈值可以随着电子设备剩余存储空间的变化进行调整,即电子设备的剩余存储空间越大,则对应的数量阈值可以调大。另外,电子设备的剩余空间越小,则对应的数量阈值可以调小。
作为一个示例,数量阈值可以随着电子设备的使用寿命进行调整,即电子设备的使用寿命越长,则对应的数量阈值可以调大。另外,电子设备的使用寿命越小,则对应的数量阈值可以调小。数量阈值具体如何调整这里不进行明确限制,可根据实际情况进行选择。
上述示例中,碎片管理模块获取到的目标碎片的数量为1,而数量阈值也为1。可见,此时目标碎片的数量满足统计结束的条件,即目标碎片的数量1等于数量阈值1。此时,碎片管理模块可以向碎片统计模块发送统计结束的指示信息。
另外,本申请实施例也可以确定目标碎片的数量是否大于数量阈值。例如,数量阈值可以为0,目标碎片的数量大于0,则可以向碎片统计模块发送统计结束的指示信息。
步骤S108:碎片管理模块发送统计结束的指示信息至碎片统计模块。
在一些实施方式中,碎片管理模块在确定目标碎片的数量大于或等于数量阈值时,可以向碎片统计模块发送统计结束的指示信息。其中,统计结束的指示信息用于指示碎片统计模块结束碎片统计操作。
步骤S109:碎片统计模块结束碎片统计操作。
作为一种方式,碎片统计模块在接收到碎片管理模块传输的碎片结束的指示信息后,便可以停止执行碎片统计操作。换句话说,碎片统计模块在接收到统计结束的指示信息后,便不会再对文件碎片的碎片信息进行更新,即文件碎片的碎片信息在碎片统计模块接收到碎片管理模块传输的统计结束的指示信息后将不会再发生改变。
步骤S110:碎片管理模块发送碎片整理指示信息至碎片整理模块。
在一些实施方式中,碎片管理模块在确定目标碎片的数量大于或等于数量阈值后,可以向碎片统计模块发送碎片结束的指示信息,以指示碎片统计模块结束碎片统计操作。另外,其也可以向碎片整理模块发送碎片整理指示信息至碎片整理模块。
作为一种方式,碎片管理模块可以先向碎片统计模块发送统计结束的指示信息,然后再向碎片整理模块发送碎片整理指示信息。其中,碎片整理信息中可以包括待整理目标碎片的相关信息。
作为另一种方式,碎片管理模块也可以先向碎片整理模块发送碎片整理指示信息,再向碎片统计模块发送统计结束的指示信息。
作为另一种方式,碎片管理模块也可以在向碎片统计模块发送统计结束的指示信息的同时,向碎片整理模块发送碎片整理指示信息。具体先发送哪个指示信息,后发送哪个指示信息,这里不进行明确限制可根据实际情况进行选择。
在另一些实施方式中,碎片统计模块在结束碎片统计操作后,其也可以直接向碎片整理模块发送碎片整理指示信息。此时碎片统计模块接收的统计结束的指示信息中可以包括有结束信息和待整理目标碎片的相关信息。碎片统计模块在结束碎片统计操作后,可以将待整理目标碎片的相关信息通过碎片整理指示信息发送至碎片整理模块。
步骤S111:碎片整理模块对目标碎片进行整理。
作为一种方式,碎片整理模块在接收到碎片整理指示信息时,其可以对目标碎片进行整理。具体的,碎片整理模块可以先确定待整理的目标碎片是否为多个,如果待整理的目标碎片为多个,则碎片整理模块可以按照目标碎片的顺序进行整理。
另外,在对目标碎片进行整理时,碎片整理模块可以获取与目标碎片相邻的前一个文件碎片,并将目标碎片和前一个文件碎片写入一个新的存储区域中,以消除目标碎片,即实现对目标碎片的整理。
为了更好的理解目标碎片的整理过程,本申请实施例给出了如图16所示的示例图。图16给出了碎片整理前文件碎片的存储情况和碎片整理后文件碎片的存储情况。上述示例通过筛选最后获取到的目标碎片为(文件1,6,2),通过图16知道,目标碎片为(文件1,6,2)的前一个文件碎片是偏移地址4和5对应的文件碎片。此时可以将目标碎片和前一个文件碎片写入新的区域,通过整理消除了文件1地址为6的文件碎片。
本申请实施例通过对目标碎片进行整理不仅可以提高IO效率,而且可以加快整理的速率,在一定程度上能够降低碎片整理带来的不必要的功耗。
步骤S112:碎片整理模块发送整理结束指示信息至碎片统计模块。
作为一种方式,为了更准确的实现对文件碎片的整理,本申请实施例在执行完碎片整理后,可以对碎片统计模块统计的信息进行清除,以方便后续的文件碎片整理,即保证碎片整理的准确性和实时性。
因此,碎片整理模块在对目标碎片进行整理完成后,碎片整理模块可以向碎片统计模块发送整理结束指示信息,以通过该指示信息告知碎片统计模块其已结束文件碎片的整理。
步骤S113:碎片统计模块清除历史统计信息。
在一些实施方式中,碎片统计模块在接收到碎片整理模块传输的整理结束指示信息后,可以执行信息清除操作,即清除历史统计信息。
本申请实施例中,信息清除操作也可以称作是碎片访问信息初始化操作,其可以用于清除碎片统计模块之前记录的碎片访问信息。例如,碎片统计模块在接收到清除历史统计信息时,可以将各文件碎片的碎片化访问次数重置为0。
如图17所示,本申请另一实施例提供的一种文件碎片整理方法,该文件碎片整理方法可以包括下述的步骤S201至步骤S212。
步骤S201:碎片管理模块发送统计开始的指示信息至碎片统计模块。
步骤S202:碎片统计模块清除历史统计信息。
在一些实施方式中,为了使碎片统计模块能够统计到更加准确有效的碎片信息,碎片统计模块在接收到碎片管理模块传输的统计开始的指示信息时,其可以先对历史统计信息进行清除,如此既可以保证碎片信息的实时性和准确性,同时也可以避免在接收到统计开始的指示信息之前对碎片信息的保留。
换句话说,在前一次对目标碎片进行整理后,本申请实施例可以不对碎片统计模块统计的碎片信息进行清除,而是在碎片统计模块接收到统计开始的指示信息时,执行碎片清除操作。如此可以避免在上一次整理结束后到下一次统计开始之前碎片信息的保留,在这段时间如果需要用到碎片信息,则可以直接从碎片统计模块处读取即可。如果清除了这些信息,则需要重新进行统计,不仅耗时而且在一定程度上会增大电子设备的不必要功耗。
步骤S203:碎片统计模块统计文件系统中所有IO碎片化访问信息。
本申请实施例中,碎片统计模块可以对预设时间段内的所有IO碎片化访问信息进行统计。其中,IO碎片化访问信息可以是针对IO请求产生的碎片化访问信息,而碎片化访问信息则可以是与文件碎片相关的碎片信息。
通过上述介绍知道,影响IO访问性能的文件碎片主要有两类,第一类是造成IO请求被分割的文件碎片;第二类是造成IO请求无法合并的文件碎片。为了提高碎片整理的效率,本申请实施例可以对这两类文件碎片进行识别,并在这两类文件碎片的数量达到数量阈值时,执行文件碎片的整理。具体如何对这两类文件碎片进行识别,以及如何对文件碎片整理上述实施例已进行了详细描述,这里就不再进行赘述。
步骤S204:碎片统计模块发送碎片筛选指令至碎片筛选模块。
步骤S205:碎片筛选模块筛选出需要整理的目标碎片。
步骤S206:碎片筛选模块发送目标碎片至碎片管理模块。
步骤S207:碎片管理模块获取目标碎片的数量。
步骤S208:碎片管理模块确定目标碎片的数量是否大于或等于数量阈值。
步骤S209:碎片管理模块发送统计结束的指示信息至碎片统计模块。
步骤S210:碎片统计模块结束碎片统计操作。
步骤S211:碎片管理模块发送碎片整理指示信息至碎片整理模块。
步骤S212:碎片整理模块对目标碎片进行整理。
本申请实施例中的步骤S204至步骤S212上述实施例已进行了详细介绍,这里就不再进行赘述。
如图18所示,本申请又一实施例提供的一种文件碎片整理方法,该文件碎片整理方法可以包括下述的步骤S301至步骤S312。
步骤S301:碎片管理模块发送统计开始的指示信息至碎片统计模块。
步骤S302:碎片统计模块统计文件系统中所有IO碎片化访问信息。
步骤S303:碎片统计模块发送碎片筛选指令至碎片筛选模块。
步骤S304:碎片筛选模块筛选出需要整理的目标碎片。
本申请实施例中,碎片筛选模块在接收到碎片筛选指令时,可对目标碎片进行筛选。其中,碎片筛选指令可以包括文件碎片的碎片信息。具体的,碎片筛选模块可以获取每个文件碎片的碎片化访问次数,然后将碎片化访问次数大于或等于预设次数的文件碎片作为目标碎片。
步骤S305:碎片筛选模块获取目标碎片的数量。
为了降低信息传输带来的不必要功耗,碎片筛选模块在获取到目标碎片后,可以不将目标碎片发送至碎片管理模块,而是直接获取目标碎片的数量。另外,碎片筛选模块可以在每获取到一个目标碎片时,获取一次目标碎片的数量,也可以是每隔一定周期获取一次目标碎片的数量,具体何时获取目标碎片的数量这里不进行明确限制,可根据实际情况进行选择。
步骤S306:碎片筛选模块确定目标碎片的数量是否大于或等于数量阈值。
作为一种方式,碎片筛选模块在获取到目标碎片的数量后,可以将其与数量阈值进行比较,即确定目标碎片的数量是否大于或等于数量阈值。如果碎片筛选模块确定目标碎片的数量大于数量阈值,则可以向碎片统计模块发送统计结束的指示信息,即进入步骤S307。同时,碎片筛选模块也可以向碎片管理模块发送碎片整理指示信息至碎片整理模块,即进入步骤S309。
另外,如果碎片筛选模块确定目标碎片的数量小于数量阈值,则其可以重新获取目标碎片的数量,即进入步骤S305。需要说明的是,重新获取目标碎片的数量的操作可以是碎片筛选模块在获取到新的目标碎片时执行。
步骤S307:碎片筛选模块发送统计结束的指示信息至碎片统计模块。
步骤S308:碎片统计模块结束碎片统计操作。
步骤S309:碎片筛选模块发送碎片整理指示信息至碎片整理模块。
步骤S310:碎片整理模块对目标碎片进行整理。
步骤S311:碎片整理模块发送整理结束指示信息至碎片统计模块。
步骤S312:碎片统计模块清除历史统计信息。
本申请实施例中步骤S307至步骤S312上述实施例已进行了详细描述,这里就不再进行赘述。
可以理解的是,电子设备为了实现上述功能,其包含了执行各个功能相应的硬件和/或软件模块。结合本文中所公开的实施例描述的各示例的算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以结合实施例对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本实施例还提供一种计算机存储介质,该计算机存储介质中存储有计算机指令,当该计算机指令在电子设备上运行时,使得电子设备执行上述相关方法步骤实现上述实施例中的文件碎片整理方法。
本实施例还提供了一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述相关步骤,以实现上述实施例中的文件碎片整理方法。
另外,本申请的实施例还提供一种装置,这个装置具体可以是芯片,组件或模块,该装置可包括相连的处理器和存储器;其中,存储器用于存储计算机执行指令,当装置运行时,处理器可执行存储器存储的计算机执行指令,以使芯片执行上述各方法实施例中的文件碎片整理方法。
其中,本实施例提供的电子设备、计算机存储介质、计算机程序产品或芯片均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
通过以上实施方式的描述,所属领域的技术人员可以了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
本申请各个实施例的任意内容,以及同一实施例的任意内容,均可以自由组合。对上述内容的任意组合均在本申请的范围之内。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请。

Claims (29)

1.一种文件碎片整理方法,其特征在于,所述方法包括:
对指定时间段内多个文件碎片的碎片化访问的信息进行统计,得到待筛选信息;其中,碎片化访问指的是读写一个数据块时IO请求被分割为多个IO请求的访问,或者是因文件碎片使多个IO请求无法合并为一个IO请求的访问;
基于所述待筛选信息从多个所述文件碎片中筛选出至少一个目标碎片;
若所述至少一个目标碎片的数量超出数量阈值,则对所述至少一个目标碎片进行整理。
2.根据权利要求1所述的方法,其特征在于,所述对指定时间段内多个文件碎片的碎片化访问的信息进行统计,得到待筛选信息,包括:
确定目标IO请求,并针对所述目标IO请求执行碎片信息统计操作,所述碎片信息统计操作用于对所述目标IO请求对应的每个所述文件碎片的碎片信息进行统计;
获取下一个IO请求,并将所述下一个IO请求作为所述目标IO请求,再次对所述目标IO请求执行所述碎片信息统计操作,直至完成对所述指定时间段内所有IO请求的统计,得到所述待筛选信息。
3.根据权利要求2所述的方法,其特征在于,所述针对所述目标IO请求执行碎片信息统计操作,包括:
获取所述目标IO请求对应的数据分布情况;
基于所述数据分布情况确定所述目标IO请求对应的数据是否分布在多个不连续的存储区域;
若所述目标IO请求对应的数据分布在多个不连续的存储区域,则记录每个所述存储区域上所述文件碎片的碎片信息。
4.根据权利要求3所述的方法,其特征在于,所述获取所述目标IO请求对应的数据分布情况,包括:
确定所述目标IO请求访问的目标文件,并获取所述目标文件的元数据,所述目标IO请求包括IO请求信息;
基于所述目标文件的元数据和所述IO请求信息得到所述目标IO请求对应的数据分布情况。
5.根据权利要求4所述的方法,其特征在于,所述IO请求信息包括所述目标IO请求的起始地址和所述目标IO请求的数据块大小,所述元数据包括所述目标文件存储区域的物理地址;
所述基于所述目标文件的元数据和所述IO请求信息得到所述目标IO请求对应的数据分布情况,包括:
根据所述存储区域的物理地址确定所述目标文件中各数据块的分布情况;
基于所述目标文件中各数据块的分布情况、所述目标IO请求的起始地址和所述目标IO请求的数据块大小,得到所述目标IO请求对应的所述数据分布情况。
6.根据权利要求3所述的方法,其特征在于,所述方法还包括:
若所述目标IO请求对应的数据未分布在多个不连续的存储区域,则获取所述目标IO请求的起始地址;
如果所述目标IO请求的起始地址是一个文件碎片的起始地址,则确定所述目标IO请求是否为顺序访问的IO请求,其中,所述顺序访问的IO请求指的是所述目标IO请求对应的偏移地址与前一个目标IO请求对应的偏移地址连续;
如果所述目标IO请求是顺序访问的IO请求,则记录所述目标IO请求对应的文件碎片的碎片信息。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
如果所述目标IO请求的起始地址不是一个文件碎片的起始地址,或者所述目标IO请求不是顺序访问的IO请求,则不记录所述目标IO请求对应的文件碎片的碎片信息。
8.根据权利要求3所述的方法,其特征在于,所述若所述目标IO请求对应的数据分布在多个不连续的存储区域,则记录每个存储区域上文件碎片的碎片信息,包括:
若所述目标IO请求对应的数据分布在多个不连续的存储区域,则获取原始子IO请求和其他子IO请求,所述原始子IO请求和所述其他子IO请求是将所述目标IO请求进行分割获取的;
获取所述原始子IO请求对应的起始地址;
若所述原始子IO请求对应的起始地址为一个文件碎片的起始地址,且所述原始子IO请求为顺序访问的IO请求,则记录每个所述存储区域上所述文件碎片的碎片信息,其中,所述文件碎片包括所述原始子IO请求对应的文件碎片,以及所述其他子IO请求对应的文件碎片。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
若所述原始子IO请求对应的起始地址不是一个文件碎片的起始地址,或者所述原始子IO请求不是顺序访问的IO请求,则不对所述原始子IO请求对应的文件碎片的碎片信息进行记录,仅对所述其他子IO请求对应的文件碎片的碎片信息进行记录。
10.根据权利要求3至9任一所述的方法,其特征在于,所述记录每个存储区域上文件碎片的碎片信息,包括:
获取每个所述文件碎片对应的历史碎片信息,所述历史碎片信息包括每个所述文件碎片的碎片化访问次数;
对每个所述文件碎片的所述碎片化访问次数进行更新,以实现对每个所述存储区域上文件碎片的碎片信息的记录。
11.根据权利要求10所述的方法,其特征在于,所述对每个文件碎片的所述碎片化访问次数进行更新,包括:
将每个所述文件碎片的所述碎片化访问次数加1。
12.根据权利要求1至9任一所述的方法,其特征在于,所述待筛选信息包括碎片化访问次数,所述基于所述待筛选信息从所述多个文件碎片中筛选出至少一个目标碎片,包括:
获取每个所述文件碎片对应的所述碎片化访问次数,并将所述碎片化访问次数大于预设次数的所述文件碎片作为所述目标碎片。
13.根据权利要求1至9任一所述的方法,其特征在于,所述方法应用于电子设备,所述对指定时间段内多个文件碎片的碎片化访问的信息进行统计,包括:
检测所述电子设备是否从关机状态切换为开机状态;
若所述电子设备从关机状态切换为开机状态,则对指定时间段内多个所述文件碎片的碎片化访问的信息进行统计。
14.根据权利要求1至9任一所述的方法,其特征在于,所述对所述至少一个目标碎片进行整理之后,包括:
针对所述待筛选信息执行信息清除操作。
15.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储器;
以及一个或多个计算机程序,其中所述一个或多个计算机程序存储在所述存储器上,当所述计算机程序被所述一个或多个处理器执行时,使得所述电子设备执行以下步骤:
对指定时间段内多个文件碎片的碎片化访问的信息进行统计,得到待筛选信息;其中,碎片化访问指的是读写一个数据块时IO请求被分割为多个IO请求的访问,或者是因文件碎片使多个IO请求无法合并为一个IO请求的访问;
基于所述待筛选信息从多个所述文件碎片中筛选出至少一个目标碎片;
若所述至少一个目标碎片的数量超出数量阈值,则对所述至少一个目标碎片进行整理。
16.根据权利要求15所述的设备,其特征在于,当所述计算机程序被所述一个或多个处理器执行时,使得所述电子设备执行以下步骤:
确定目标IO请求,并针对所述目标IO请求执行碎片信息统计操作,所述碎片信息统计操作用于对所述目标IO请求对应的每个所述文件碎片的碎片信息进行统计;
获取下一个IO请求,并将所述下一个IO请求作为所述目标IO请求,再次对所述目标IO请求执行所述碎片信息统计操作,直至完成对所述指定时间段内所有IO请求的统计,得到所述待筛选信息。
17.根据权利要求16所述的设备,其特征在于,当所述计算机程序被所述一个或多个处理器执行时,使得所述电子设备执行以下步骤:
获取所述目标IO请求对应的数据分布情况;
基于所述数据分布情况确定所述目标IO请求对应的数据是否分布在多个不连续的存储区域;
若所述目标IO请求对应的数据分布在多个不连续的存储区域,则记录每个所述存储区域上所述文件碎片的碎片信息。
18.根据权利要求17所述的设备,其特征在于,当所述计算机程序被所述一个或多个处理器执行时,使得所述电子设备执行以下步骤:
确定所述目标IO请求访问的目标文件,并获取所述目标文件的元数据,所述目标IO请求包括IO请求信息;
基于所述目标文件的元数据和所述IO请求信息得到所述目标IO请求对应的数据分布情况。
19.根据权利要求18所述的设备,其特征在于,所述IO请求信息包括所述目标IO请求的起始地址和所述目标IO请求的数据块大小,所述元数据包括所述目标文件存储区域的物理地址;当所述计算机程序被所述一个或多个处理器执行时,使得所述电子设备执行以下步骤:
根据所述存储区域的物理地址确定所述目标文件中各数据块的分布情况;
基于所述目标文件中各数据块的分布情况、所述目标IO请求的起始地址和所述目标IO请求的数据块大小,得到所述目标IO请求对应的所述数据分布情况。
20.根据权利要求17所述的设备,其特征在于,当所述计算机程序被所述一个或多个处理器执行时,使得所述电子设备执行以下步骤:
若所述目标IO请求对应的数据未分布在多个不连续的存储区域,则获取所述目标IO请求的起始地址;
如果所述目标IO请求的起始地址是一个文件碎片的起始地址,则确定所述目标IO请求是否为顺序访问的IO请求,其中,所述顺序访问的IO请求指的是所述目标IO请求对应的偏移地址与前一个目标IO请求对应的偏移地址连续;
如果所述目标IO请求是顺序访问的IO请求,则记录所述目标IO请求对应的文件碎片的碎片信息。
21.根据权利要求20所述的设备,其特征在于,当所述计算机程序被所述一个或多个处理器执行时,使得所述电子设备执行以下步骤:
如果所述目标IO请求的起始地址不是一个文件碎片的起始地址,或者所述目标IO请求不是顺序访问的IO请求,则不记录所述目标IO请求对应的文件碎片的碎片信息。
22.根据权利要求17所述的设备,其特征在于,当所述计算机程序被所述一个或多个处理器执行时,使得所述电子设备执行以下步骤:
若所述目标IO请求对应的数据分布在多个不连续的存储区域,则获取原始子IO请求和其他子IO请求,所述原始子IO请求和所述其他子IO请求是将所述目标IO请求进行分割获取的;
获取所述原始子IO请求对应的起始地址;
若所述原始子IO请求对应的起始地址为一个文件碎片的起始地址,且所述原始子IO请求为顺序访问的IO请求,则记录每个所述存储区域上所述文件碎片的碎片信息,其中,所述文件碎片包括所述原始子IO请求对应的文件碎片,以及所述其他子IO请求对应的文件碎片。
23.根据权利要求22所述的设备,其特征在于,当所述计算机程序被所述一个或多个处理器执行时,使得所述电子设备执行以下步骤:
若所述原始子IO请求对应的起始地址不是一个文件碎片的起始地址,或者所述原始子IO请求不是顺序访问的IO请求,则不对所述原始子IO请求对应的文件碎片的碎片信息进行记录,仅对所述其他子IO请求对应的文件碎片的碎片信息进行记录。
24.根据权利要求17至23任一所述的设备,其特征在于,当所述计算机程序被所述一个或多个处理器执行时,使得所述电子设备执行以下步骤:
获取每个所述文件碎片对应的历史碎片信息,所述历史碎片信息包括每个所述文件碎片的碎片化访问次数;
对每个所述文件碎片的所述碎片化访问次数进行更新,以实现对每个所述存储区域上文件碎片的碎片信息的记录。
25.根据权利要求24所述的设备,其特征在于,当所述计算机程序被所述一个或多个处理器执行时,使得所述电子设备执行以下步骤:
将每个所述文件碎片的所述碎片化访问次数加1。
26.根据权利要求15至23任一所述的设备,其特征在于,所述待筛选信息包括碎片化访问次数,当所述计算机程序被所述一个或多个处理器执行时,使得所述电子设备执行以下步骤:
获取每个所述文件碎片对应的所述碎片化访问次数,并将所述碎片化访问次数大于预设次数的所述文件碎片作为所述目标碎片。
27.根据权利要求15至23任一所述的设备,其特征在于,当所述计算机程序被所述一个或多个处理器执行时,使得所述电子设备执行以下步骤:
检测所述电子设备是否从关机状态切换为开机状态;
若所述电子设备从关机状态切换为开机状态,则对指定时间段内多个所述文件碎片的碎片化访问的信息进行统计。
28.根据权利要求15至23任一所述的设备,其特征在于,当所述计算机程序被所述一个或多个处理器执行时,使得所述电子设备执行以下步骤:
针对所述待筛选信息执行信息清除操作。
29.一种计算机可读存储介质,包括计算机程序,其特征在于,当所述计算机程序在电子设备上运行时,使得所述电子设备执行如权利要求1-14中任意一项所述的文件碎片整理方法。
CN202210281820.7A 2022-03-22 2022-03-22 文件碎片整理方法及电子设备 Active CN115543937B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210281820.7A CN115543937B (zh) 2022-03-22 2022-03-22 文件碎片整理方法及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210281820.7A CN115543937B (zh) 2022-03-22 2022-03-22 文件碎片整理方法及电子设备

Publications (2)

Publication Number Publication Date
CN115543937A true CN115543937A (zh) 2022-12-30
CN115543937B CN115543937B (zh) 2023-07-11

Family

ID=84724714

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210281820.7A Active CN115543937B (zh) 2022-03-22 2022-03-22 文件碎片整理方法及电子设备

Country Status (1)

Country Link
CN (1) CN115543937B (zh)

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6496913B1 (en) * 2000-02-22 2002-12-17 Hewlett-Packard Company System and method for detecting and correcting fragmentation on optical storage media
US20090327370A1 (en) * 2006-07-22 2009-12-31 Warp Disk Software V/Carsten Schmidt Defragmentation of digital storage media
JP2012185771A (ja) * 2011-03-08 2012-09-27 Nec Corp 情報処理装置、デフラグメンテーション方法、およびデフラグメンテーションプログラム
CN104933169A (zh) * 2015-06-29 2015-09-23 南开大学 基于热点文件优先的文件系统碎片整理方法
CN106919341A (zh) * 2015-12-28 2017-07-04 成都华为技术有限公司 一种下发i/o的方法及装置
CN107145452A (zh) * 2017-05-25 2017-09-08 努比亚技术有限公司 碎片整理的方法、终端设备及计算机可读存储介质
CN107239412A (zh) * 2017-06-19 2017-10-10 杭州宏杉科技股份有限公司 基于Thin‑LUN的存储空间配置方法、数据写入方法及存储设备
CN107704507A (zh) * 2017-08-31 2018-02-16 三星电子(中国)研发中心 数据库处理方法和设备
CN107729558A (zh) * 2017-11-08 2018-02-23 郑州云海信息技术有限公司 文件系统碎片整理的方法、系统、装置及计算机存储介质
CN108182151A (zh) * 2018-01-24 2018-06-19 北京百度网讯科技有限公司 顺序流缓存与检测的方法、装置、存储介质及终端设备
CN111125033A (zh) * 2018-10-31 2020-05-08 深信服科技股份有限公司 一种基于全闪存阵列的空间回收方法及系统

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6496913B1 (en) * 2000-02-22 2002-12-17 Hewlett-Packard Company System and method for detecting and correcting fragmentation on optical storage media
US20090327370A1 (en) * 2006-07-22 2009-12-31 Warp Disk Software V/Carsten Schmidt Defragmentation of digital storage media
JP2012185771A (ja) * 2011-03-08 2012-09-27 Nec Corp 情報処理装置、デフラグメンテーション方法、およびデフラグメンテーションプログラム
CN104933169A (zh) * 2015-06-29 2015-09-23 南开大学 基于热点文件优先的文件系统碎片整理方法
CN106919341A (zh) * 2015-12-28 2017-07-04 成都华为技术有限公司 一种下发i/o的方法及装置
CN107145452A (zh) * 2017-05-25 2017-09-08 努比亚技术有限公司 碎片整理的方法、终端设备及计算机可读存储介质
CN107239412A (zh) * 2017-06-19 2017-10-10 杭州宏杉科技股份有限公司 基于Thin‑LUN的存储空间配置方法、数据写入方法及存储设备
CN107704507A (zh) * 2017-08-31 2018-02-16 三星电子(中国)研发中心 数据库处理方法和设备
CN107729558A (zh) * 2017-11-08 2018-02-23 郑州云海信息技术有限公司 文件系统碎片整理的方法、系统、装置及计算机存储介质
CN108182151A (zh) * 2018-01-24 2018-06-19 北京百度网讯科技有限公司 顺序流缓存与检测的方法、装置、存储介质及终端设备
CN111125033A (zh) * 2018-10-31 2020-05-08 深信服科技股份有限公司 一种基于全闪存阵列的空间回收方法及系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
B. LIN 等: "Rededup: Data Reallocation for Reading Performance Optimization in Deduplication System" *
赵跃龙 等: "一种性能优化的小文件存储访问策略的研究" *

Also Published As

Publication number Publication date
CN115543937B (zh) 2023-07-11

Similar Documents

Publication Publication Date Title
CN110083573B (zh) 一种文件管理方法和移动终端
CN109992523B (zh) 内存处理方法和装置、电子设备、计算机可读存储介质
CN116244067B (zh) 虚拟内存管理方法和电子设备
CN107562539B (zh) 应用程序处理方法和装置、计算机设备、存储介质
CN110018900B (zh) 内存处理方法和装置、电子设备、计算机可读存储介质
CN105430478B (zh) 一种网络视频缓冲播放方法、装置及电视机
CN110018902B (zh) 内存处理方法和装置、电子设备、计算机可读存储介质
CN109992402B (zh) 内存处理方法和装置、电子设备、计算机可读存储介质
CN112445725A (zh) 预读取文件页的方法、装置和终端设备
KR102014083B1 (ko) 단말기의 메모리 관리방법 및 장치
US20140082270A1 (en) Methods, apparatuses, and computer program products for enhancing memory erase functionality
CN110837343B (zh) 处理快照的方法、装置及终端
CN112445766A (zh) 一种终端碎片整理方法、装置以及终端
CN112954244A (zh) 监控录像的存储实现方法、装置、设备及存储介质
US20140108710A1 (en) Method for adjusting storage space of partition of embedded multimedia card and terminal
CN111274160A (zh) 数据存储方法、电子设备及介质
JP2022511583A (ja) サンプルを取得する方法、装置、機器、記憶媒体、及びプログラム
CN116243850B (zh) 一种存储器管理方法及电子设备
CN104426926A (zh) 定时发布数据的处理方法及装置
CN111444143B (zh) 图片集中的图片展示方法、装置及移动终端
CN115543937B (zh) 文件碎片整理方法及电子设备
CN113138857A (zh) 内存清理方法、移动终端及存储介质
CN109508300B (zh) 一种磁盘碎片整理方法、设备及计算机可读存储介质
CN115981573B (zh) 数据管理方法、电子设备及计算机可读写存储介质
CN113448768A (zh) Db文件的备份方法、装置和电子设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant