CN105589812B - 磁盘碎片整理方法、装置及主机 - Google Patents

磁盘碎片整理方法、装置及主机 Download PDF

Info

Publication number
CN105589812B
CN105589812B CN201510940407.7A CN201510940407A CN105589812B CN 105589812 B CN105589812 B CN 105589812B CN 201510940407 A CN201510940407 A CN 201510940407A CN 105589812 B CN105589812 B CN 105589812B
Authority
CN
China
Prior art keywords
disk
space
subregion
defragmentation
continuous
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.)
Active
Application number
CN201510940407.7A
Other languages
English (en)
Other versions
CN105589812A (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.)
Chengdu Huawei Technology Co Ltd
Original Assignee
Chengdu Huawei Technology 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 Chengdu Huawei Technology Co Ltd filed Critical Chengdu Huawei Technology Co Ltd
Priority to CN201510940407.7A priority Critical patent/CN105589812B/zh
Publication of CN105589812A publication Critical patent/CN105589812A/zh
Application granted granted Critical
Publication of CN105589812B publication Critical patent/CN105589812B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Abstract

本发明实施例提供一种磁盘碎片整理方法、装置及主机,该方法,包括:根据第一空间管理对象判断第一磁盘区域的碎片化程度;若确定所述第一磁盘区域的碎片化程度达到预设碎片化程度,则根据所述第一空间管理对象将碎片整理子区域对应的每个对象的数据块均写入连续磁盘空间中,并将每个所述对象的数据块写入连续磁盘空间时所产生的元数据写入所述连续空间中;其中,所述碎片整理子区域小于等于所述第一磁盘区域;释放所述碎片整理子区域;可见,根据空间管理信息对所述碎片整理子区域进行磁盘碎片整理后可得到所述第一磁盘区域中的一段连续空闲空间,提高了磁盘碎片整理效率。

Description

磁盘碎片整理方法、装置及主机
技术领域
本发明实施例涉及计算机技术,尤其涉及一种磁盘碎片整理方法、装置及主机。
背景技术
随着磁盘容量越来越大,文件***使用的时间越来越长,磁盘上的碎片空间越来越多。对于机械磁盘而言,顺序读写才能充分发挥其性能,但越来越多的磁盘碎片带来越来越多的离散IO,使磁头来回跳跃,导致读写性能急剧下降。
图1A为现有磁盘碎片整理方法示意图,图1B为磁盘碎片整理之前对象的物理视图,图1C为现有磁盘碎片整理之后对象的物理视图。现有技术中,通过如下方式进行磁盘碎片整理:1)判断某个源文件(即对象)包括的连续数据块个数是否达到预设阈值;2)若达到所述预设阈值,则如图1A所示为所述源文件创建临时文件,并为所述临时文件分配一段空闲的连续磁盘空间;3)将所述源文件离散的数据块读取出来并写入到所述连续磁盘空间中;4)释放所述源文件所占用的磁盘空间,并将所述临时文件命名为所述源文件名。
现有技术中,在磁盘空间分配过程中,所述源文件离散的数据块之间可能存在其他文件的数据块,如图1B所示,blk1、blk7、blk9、blk11和blk13为其它文件的数据块;按照现有磁盘碎片整理方法(对单个文件的数据块进行磁盘碎片整理)得到图1C所示,可见,磁盘上的磁盘碎片仍然很多。
发明内容
本发明实施例提供一种磁盘碎片整理方法、装置及主机,提高了磁盘碎片整理效率。
第一方面,本发明实施例提供一种磁盘碎片整理方法,包括:
根据第一空间管理对象判断第一磁盘区域的碎片化程度;其中,所述第一空间管理对象用于记录为每个对象分配所述第一磁盘区域的磁盘子单元时对应的空间管理信息;所述第一磁盘区域为磁盘空间中预设大小对应的磁盘区域;每个所述空间管理信息包括:对象名、层数、块数、偏移值及空间大小值;
若确定所述第一磁盘区域的碎片化程度达到预设碎片化程度,则根据所述第一空间管理对象将碎片整理子区域对应的每个对象的数据块均写入连续磁盘空间中,并将每个所述对象的数据块写入连续磁盘空间时所产生的元数据写入所述连续空间中;其中,所述碎片整理子区域小于等于所述第一磁盘区域;
释放所述碎片整理子区域。
结合第一方面,在第一方面的第一种可能的实现方式中,所述根据第一空间管理对象判断第一磁盘区域的碎片化程度,包括:
根据所述第一空间管理对象中的每个所述空间管理信息确定所述第一磁盘区域的总碎片个数;
根据所述总碎片个数和所述第一磁盘区域的总块数判断所述第一磁盘区域的碎片化程度;其中,所述第一磁盘区域的总块数为所述第一磁盘区域所包括的磁盘子单元的总数。
结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述根据所述第一空间管理对象中的每个所述空间管理信息确定所述第一磁盘区域的总碎片个数,包括:
将所述第一空间管理对象中的每个所述空间管理信息按照偏移值的递增顺序进行排序;
根据排序后的空间管理信息中每相邻的两个空间管理信息,确定所述第一磁盘区域的总碎片个数。
结合第一方面、第一方面的第一种或第二种任一种可能的实现方式,在第一方面的第三种可能的实现方式中,所述根据所述第一空间管理对象将碎片整理子区域对应的每个对象的数据块均写入连续磁盘空间中之前,还包括:
根据所述第一空间管理对象确定所述碎片整理子区域;所述碎片整理子区域为:所述第一磁盘区域中的至少一个磁盘子区域。
结合第一方面的第三种可能的实现方式,在第一方面的第四种可能的实现方式中,所述根据所述第一空间管理对象确定所述碎片整理子区域,包括:
根据预设区域值将所述第一磁盘区域划分为至少两个磁盘子区域,并确定每个所述磁盘子区域的碎片个数;
根据每个所述磁盘子区域的碎片个数和所述第一磁盘区域的总碎片个数确定所述碎片整理子区域。
结合第一方面、第一方面的第一种至第四种任一种可能的实现方式,在第一方面的第五种可能的实现方式中,所述根据所述第一空间管理对象将碎片整理子区域对应的每个对象的数据块均写入连续磁盘空间中,并将每个所述对象的数据块写入连续磁盘空间时所产生的元数据写入所述连续空间中,包括:
根据所述第一空间管理对象依次将每个所述对象的数据块写入所述连续磁盘空间中,并依次将每个所述对象的数据块写入所述连续磁盘空间时所产生的元数据写入所述连续磁盘空间中。
结合第一方面的第五种可能的实现方式,在第一方面的第六种可能的实现方式中,所述根据所述第一空间管理对象依次将每个对象的数据块写入所述连续磁盘空间中,包括:
将所述第一空间管理对象中属于所述碎片整理子区域的每个所述空间管理信息依次按照对象名、层数及块数的递增顺序进行排序;
按照排序后的空间管理信息依次读取所述碎片整理子区域中数据块,并依次写入所述连续磁盘空间中。
结合第一方面、第一方面的第一种至第六种任一种可能的实现方式,在第一方面的第七种可能的实现方式中,所述根据所述第一空间管理对象将碎片整理子区域对应的每个对象的数据块均写入连续磁盘空间中之前,还包括:
根据所述碎片整理子区域所占的磁盘空间大小,确定碎片整理所需的连续磁盘空间大小,并根据所述连续磁盘空间大小为所述碎片整理子区域分配所述连续磁盘空间;所述连续磁盘空间用于存放所述碎片整理子区域中的数据块及元数据块。
结合第一方面的第七种可能的实现方式,在第一方面的第八种可能的实现方式中,所述根据所述碎片整理子区域所占的磁盘空间大小,确定碎片整理所需的连续磁盘空间大小之前,还包括:
根据属于所述碎片整理子区域的各个空间管理信息所包括的空间大小值的总和,确定所述碎片整理子区域所占的磁盘空间大小。
结合第一方面的第七种或第八种可能的实现方式,在第一方面的第九种可能的实现方式中,所述根据所述连续磁盘空间大小为所述碎片整理子区域分配所述连续磁盘空间,包括:
根据所述连续磁盘空间大小以及预设元数据块比例为所述碎片整理子区域分配所述连续磁盘空间。
结合第一方面、第一方面的第一种至第九种任一种可能的实现方式,在第一方面的第十种可能的实现方式中,所述根据第一空间管理对象判断第一磁盘区域的碎片化程度之前,还包括:
获取所述空间管理信息。
第二方面,本发明实施例提供一种磁盘碎片整理装置,包括:
判断模块,用于根据第一空间管理对象判断第一磁盘区域的碎片化程度;其中,所述第一空间管理对象用于记录为每个对象分配所述第一磁盘区域的磁盘子单元时对应的空间管理信息;所述第一磁盘区域为磁盘空间中预设大小对应的磁盘区域;每个所述空间管理信息包括:对象名、层数、块数、偏移值及空间大小值;
整理模块,用于若根据所述判断模块确定所述第一磁盘区域的碎片化程度达到预设碎片化程度,则根据所述第一空间管理对象将碎片整理子区域对应的每个对象的数据块均写入连续磁盘空间中,并将每个所述对象的数据块写入连续磁盘空间时所产生的元数据写入所述连续空间中;其中,所述碎片整理子区域小于等于所述第一磁盘区域;
释放模块,用于释放所述碎片整理子区域。
结合第二方面,在第二方面的第一种可能的实现方式中,所述判断模块,包括:
第一确定单元,用于根据所述第一空间管理对象中的每个所述空间管理信息确定所述第一磁盘区域的总碎片个数;
判断单元,用于根据所述总碎片个数和所述第一磁盘区域的总块数判断所述第一磁盘区域的碎片化程度;其中,所述第一磁盘区域的总块数为所述第一磁盘区域所包括的磁盘子单元的总数。
结合第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述第一确定单元具体用于:
将所述第一空间管理对象中的每个所述空间管理信息按照偏移值的递增顺序进行排序;
根据排序后的空间管理信息中每相邻的两个空间管理信息,确定所述第一磁盘区域的总碎片个数。
结合第二方面、第二方面的第一种或第二种任一种可能的实现方式,在第二方面的第三种可能的实现方式中,所述装置,还包括:
确定模块,用于根据所述第一空间管理对象确定所述碎片整理子区域;所述碎片整理子区域为:所述第一磁盘区域中的至少一个磁盘子区域。
结合第二方面的第三种可能的实现方式,在第二方面的第四种可能的实现方式中,所述确定模块,包括:
第二确定单元,用于根据预设区域值将所述第一磁盘区域划分为至少两个磁盘子区域,并确定每个所述磁盘子区域的碎片个数;
第三确定单元,用于根据每个所述磁盘子区域的碎片个数和所述第一磁盘区域的总碎片个数确定所述碎片整理子区域。
结合第二方面、第二方面的第一种至第四种任一种可能的实现方式,在第二方面的第五种可能的实现方式中,所述整理模块具体用于:
根据所述第一空间管理对象依次将每个所述对象的数据块写入所述连续磁盘空间中,并依次将每个所述对象的数据块写入所述连续磁盘空间时所产生的元数据写入所述连续磁盘空间中。
结合第二方面的第五种可能的实现方式,在第二方面的第六种可能的实现方式中,所述整理模块,包括:
排序单元,用于将所述第一空间管理对象中属于所述碎片整理子区域的每个所述空间管理信息依次按照对象名、层数及块数的递增顺序进行排序;
整理单元,用于按照排序后的空间管理信息依次读取所述碎片整理子区域中数据块,并依次写入所述连续磁盘空间中。
结合第二方面、第二方面的第一种至第六种任一种可能的实现方式,在第二方面的第七种可能的实现方式中,所述装置,还包括:
分配模块,用于根据所述碎片整理子区域所占的磁盘空间大小,确定碎片整理所需的连续磁盘空间大小,并根据所述连续磁盘空间大小为所述碎片整理子区域分配所述连续磁盘空间;所述连续磁盘空间用于存放所述碎片整理子区域中的数据块及元数据块。
结合第二方面的第七种可能的实现方式,在第二方面的第八种可能的实现方式中,所述分配模块还用于:
根据属于所述碎片整理子区域的各个空间管理信息所包括的空间大小值的总和,确定所述碎片整理子区域所占的磁盘空间大小。
结合第二方面的第七种或第八种可能的实现方式,在第二方面的第九种可能的实现方式中,所述分配模块还用于:
根据所述连续磁盘空间大小以及预设元数据块比例为所述碎片整理子区域分配所述连续磁盘空间。
结合第二方面、第二方面的第一种至第九种任一种可能的实现方式,在第二方面的第十种可能的实现方式中,所述装置,还包括:
获取模块,用于获取所述空间管理信息。
第三方面,本发明实施例提供一种主机,包括:处理器和存储器,所述存储器存储执行指令,所述处理器用于执行所述存储器中的执行指令使得所述主机执行如上述第一方面中任一实现方式所述的方法。
本发明中,通过根据第一空间管理对象判断第一磁盘区域的碎片化程度;进一步地,若确定所述第一磁盘区域的碎片化程度达到预设碎片化程度,则根据所述第一空间管理对象将碎片整理子区域对应的每个对象的数据块均写入连续磁盘空间中,并将每个所述对象的数据块写入连续磁盘空间时所产生的元数据写入所述连续空间中;其中,所述碎片整理子区域小于等于所述第一磁盘区域;进一步地,释放所述碎片整理子区域;可见,根据空间管理信息对所述碎片整理子区域进行磁盘碎片整理后可得到所述第一磁盘区域中的一段连续空闲空间,提高了磁盘碎片整理效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1A为现有磁盘碎片整理方法示意图;
图1B为磁盘碎片整理之前对象的物理视图;
图1C为现有磁盘碎片整理之后对象的物理视图;
图2A为obj的逻辑视图;
图2B为obj的物理视图;
图2C为对象逻辑视图和空间管理信息的对应关系示意图;
图2D为空间管理对象中空间管理信息组织结构;
图3A为本发明磁盘碎片整理方法实施例一的流程示意图;
图3B为本发明中碎片整理子区域的示意图一;
图3C为本发明中碎片整理子区域的示意图二;
图4为本发明磁盘碎片整理方法实施例二的流程示意图;
图5为本发明磁盘碎片整理方法实施例三的流程示意图;
图6为本发明磁盘碎片整理装置实施例一的结构示意图;
图7为本发明磁盘碎片整理装置实施例二的结构示意图;
图8为本发明磁盘碎片整理装置实施例三的结构示意图;
图9为本发明磁盘碎片整理装置实施例四的结构示意图;
图10为本发明磁盘碎片整理装置实施例五的结构示意图;
图11为本发明主机实施例的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
通常情况下,对象是指文件或者***里面用于提供存放数据的容器,管理对象(object,简称obj)的数据块需要增加一些元数据管理信息,例如管理对象的数据块需要增加至少一个间接块和至少一个对象管理结构块(二者统称为元数据块)。图2A为obj的逻辑视图,图2B为obj的物理视图。如图2A和图2B所示,一个对象在逻辑上是一块连续的可以访问的空间(图2A中b0-b3代表逻辑块号),但是物理上对象的元数据块(用来管理数据块)和数据块可能分配到离散的位置(图2B中blk0-blk6代表物理块号);现有技术中访问对象的过程如下:先从磁盘上读取blk6得到对象管理结构,解析出对象间接块的地址blk5,读取blk5并解析出数据块的地址分别为blk0、blk2、blk3和blk4。
随着磁盘容量越来越大,文件***使用的时间越来越长,磁盘上的碎片空间越来越多。对于机械磁盘而言,越来越多的磁盘碎片带来越来越多的离散IO,使磁头来回跳跃,导致读写性能急剧下降。现有磁盘碎片整理方法中,由于源文件离散的数据块之间可能存在其他文件的数据块,仅仅对单个文件或对象的数据块进行搬迁并不能解决当前区域的碎片化程度。
本发明实施例中,依据空间管理信息(包括:对象名、层数、块数、偏移值及空间大小值)判断磁盘区域的碎片化程度,当磁盘区域的碎片化程度达到预设碎片化程度,则可根据所述空间管理信息依次将所述磁盘区域的数据块搬迁到连续磁盘空间中,从而解决了现有技术中仅对单个文件的数据块进行搬迁而导致磁盘上的磁盘碎片仍然很多的技术问题。进一步地,本发明实施例中,当磁盘区域的碎片化程度达到预设碎片化程度时,还可识别出所述磁盘区域中碎片化严重的碎片整理子区域,并针对所述碎片整理子区域进行磁盘碎片整理,提高磁盘碎片整理效率。
图2C为对象逻辑视图和空间管理信息的对应关系示意图。如图2C所示,本发明实施例中,一个对象可以划分为多个层次,最底层为0(该层对应对象的数据块);次底层为1(该层对应对象的间接块);最上层为2(该层对应对象的对象管理结构块)。其中,若对象包括很多数据块时,一个间接块无法保存全部所述数据块的地址指针,因此,该对象需要多个间接块,对应地,该对象的层数也增加了;如图2C所示,同一层的块按照从左至右编号,例如最底层的数据块的块数依次编号为0、1、2和3。
为了便于反向查找块所属的对象,本发明实施例中,如图2C和图2D(图2D为空间管理对象中空间管理信息组织结构)所示,提出当为每个对象每次分配空间时,都通过空间管理对象记录对应的空间管理信息(包括:对象名、层数、块数、偏移值及空间大小值);其中,对象名(objid)用于指示该次分配空间的分配对象;层数(levelid)用于指示块在对象中的层数;块数(blkid)用于指示块在同一层从左往右的序号;偏移值(offset)用于指示块在磁盘上的起始偏移;空间大小值(size)用于指示块的大小。如图2D所示,例如将硬盘空间切分为n个4GB大小的磁盘区域(该区域叫做块),其中,n为正整数,每个该磁盘区域通过一个空间管理对象记录该区域的空间管理信息,实际保存的空间管理信息就是(objid,levelid,blkid,offset,size)的集合;其中,当每个对象要在这个块中分配空间,必须在所述磁盘区域的空间管理对象中记录空间管理信息,如图2D中的m个空间管理信息,每个空间管理信息的记录形式为(objid,levelid,blkid,offset,size),其中,m为正整数。
本发明实施例中,当确定一个对象的objid、levelid和blkid,则可计算出对应这个块的地址;依据levelid和blkid又可计算出对应这个块的上一层块的地址;因此,当确定一个块属于哪个对象(objid)、对象的哪一层(levelid)和这一层的第几块(blkid)就可以搬迁这个块,并且在上一层块中记录搬迁后新块的块地址。
图3A为本发明磁盘碎片整理方法实施例一的流程示意图。本实施例的执行主体可以为配置在主机中的磁盘碎片整理装置,该装置可以通过软件和/或硬件实现。本实施例的方案可根据空间管理信息对所述碎片整理子区域进行磁盘碎片整理后,可得到所述第一磁盘区域中的一段连续空闲空间,提高了磁盘碎片整理效率。如图3A所示,本实施例的方法可以包括:
S301、根据第一空间管理对象判断第一磁盘区域的碎片化程度。
其中,所述第一空间管理对象用于记录为每个对象分配所述第一磁盘区域的磁盘子单元时对应的空间管理信息;所述第一磁盘区域为磁盘空间中预设大小对应的磁盘区域;每个所述空间管理信息包括:对象名、层数、块数、偏移值及空间大小值。
为了便于反向查找块所属的对象,本发明实施例中,提出当为每个对象每次分配空间时,都通过空间管理对象记录对应的空间管理信息,例如所述第一空间管理对象用于记录为每个对象分配所述第一磁盘区域的磁盘子单元时对应的空间管理信息,其中,所述第一磁盘区域为磁盘空间中预设大小(如4GB)对应的磁盘区域,如图2D所示。本发明实施例中,根据所述第一空间管理对象(包括多条空间管理信息)判断所述第一磁盘区域的碎片化程度,以确定是否需要对所述第一磁盘区域进行磁盘碎片处理。
可选地,步骤301包括:根据所述第一空间管理对象中的每个所述空间管理信息确定所述第一磁盘区域的总碎片个数;
根据所述总碎片个数和所述第一磁盘区域的总块数判断所述第一磁盘区域的碎片化程度;其中,所述第一磁盘区域的总块数为所述第一磁盘区域所包括的磁盘子单元的总数。
本发明实施例中,可选地,先将所述第一空间管理对象中的每个所述空间管理信息按照偏移值的递增顺序进行排序,并根据排序后的空间管理信息中每相邻的两个空间管理信息(如根据相邻的两个空间管理信息的连续性),确定所述第一磁盘区域的总碎片个数;例如该第一空间管理对象中包括空间管理信息A(100,1,1,4096,4096)、空间管理信息B(120,0,1,1048576,4096)和空间管理信息C(120,1,1,8192,4096)三个空间管理信息,1)将该三个空间管理信息按照偏移值的递增顺序进行排序得到如下顺序:空间管理信息A(100,1,1,4096,4096)、空间管理信息C(120,1,1,8192,4096)、空间管理信息B(120,0,1,1048576,4096);2)根据排序后的空间管理信息中每相邻的两个空间管理信息的连续性确定所述第一磁盘区域的总碎片个数,如通过根据空间管理信息A的offset+size的值是否等于相邻的空间管理信息C的offset的方式判断相邻的两个空间管理信息的连续性,若等于则代表空间管理信息A与空间管理信息C是连续的;若不等于则代表空间管理信息A与空间管理信息C不是连续的,则确定该第一磁盘区域中所述空间管理信息A对应的磁盘空间与空间管理信息C对应的磁盘空间之间有一个磁盘碎片,如本实施例中空间管理信息C与空间管理信息B不是连续的,则确定该第一磁盘区域中所述空间管理信息C对应的磁盘空间与空间管理信息B对应的磁盘空间之间有一个磁盘碎片;以此类推,若第一空间管理对象中包括多个空间管理信息,则按照类此方式确定该第一磁盘区域的总碎片个数;或者,通过根据空间管理信息A的offset+size的值与相邻的空间管理信息C的offset的值之间的差值是否小于等于预设差值(如1k)的方式判断相邻的两个空间管理信息的连续性,若差值小于等于所述预设差值则代表空间管理信息A与空间管理信息C是连续的;若差值大于所述预设差值则代表空间管理信息A与空间管理信息C不是连续的,则确定该第一磁盘区域中所述空间管理信息A对应的磁盘空间与空间管理信息C对应的磁盘空间之间有一个磁盘碎片,以此类推,若第一空间管理对象中包括多个空间管理信息,则按照类此方式确定该第一磁盘区域的总碎片个数。当然,本发明实施例中,还可采用其他方式确定所述第一磁盘区域的总碎片个数,本发明实施例中对此并不作限制。
进一步地,根据所述总碎片个数和所述第一磁盘区域的总块数判断所述第一磁盘区域的碎片化程度;可选地,通过第一磁盘区域大小/所述第一空间管理对象中记录的分配块大小的平均值,得到所述第一磁盘区域的总块数;其中,所述第一空间管理对象中记录的分配块大小的平均值通过如下方式得到:将所述第一空间管理对象中记录的每个空间管理信息中的size求和,并除以所述第一空间管理对象中空间管理信息的个数。例如若所述总碎片个数与所述总块数的比值大于第一预设比值(如0.5)时,则确定所述第一磁盘区域的碎片化程度达到预设碎片化程度,需要进行磁盘碎片处理;若所述比值小于等于所述第一预设比值,则确定所述第一磁盘区域的碎片化程度还未达到预设碎片化程度,不需要进行磁盘碎片处理。当然,本发明实施例中,还可采用其他方式确定第一磁盘区域的碎片化程度,本发明实施例中对此并不作限制。
可选地,步骤S301之前还包括:获取所述空间管理信息。可选地,从磁盘上读取所述第一空间管理对象中记录的所述空间管理信息;其中,每个所述空间管理信息用于:记录所述第一磁盘区域的任意磁盘子单元的空间分配信息。
S302、若确定所述第一磁盘区域的碎片化程度达到预设碎片化程度,则根据所述第一空间管理对象将碎片整理子区域对应的每个对象的数据块均写入连续磁盘空间中,并将每个所述对象的数据块写入连续磁盘空间时所产生的元数据写入所述连续空间中。
图3B为本发明中碎片整理子区域的示意图一,图3C为本发明中碎片整理子区域的示意图二。本发明实施例中,若确定所述第一磁盘区域的碎片化程度达到预设碎片化程度,则根据所述第一空间管理对象将碎片整理子区域对应的每个对象的数据块均写入连续磁盘空间中,并将每个所述对象的数据块写入连续磁盘空间时所产生的元数据写入所述连续空间中;其中,所述碎片整理子区域为所述第一磁盘区域中需要进行磁盘碎片处理的区域,可选地,所述碎片整理子区域小于等于所述第一磁盘区域(若所述碎片整理子区域等于所述第一磁盘区域时,则对应图3B所示;若所述碎片整理子区域小于所述第一磁盘区域,则对应图3C所示);可见,相对于现有技术中由于源文件离散的数据块之间可能存在其他文件的数据块,若仅仅对单个文件或对象的数据块进行搬迁仍不能解决当前区域的碎片化程度,本发明实施例中通过将所述碎片整理子区域对应的每个对象的数据块均写入连续磁盘空间中,并将每个所述对象的数据块写入连续磁盘空间时所产生的元数据写入所述连续空间中,从而提高了磁盘碎片整理效率。
可选地,步骤S302包括:根据所述第一空间管理对象依次将每个所述对象的数据块写入所述连续磁盘空间中,并依次将每个所述对象的数据块写入所述连续磁盘空间时所产生的元数据写入所述连续磁盘空间中。
本发明实施例中,为了减少磁头来回跳跃,提高读写性能,可根据所述第一空间管理对象依次将每个所述对象的数据块写入所述连续磁盘空间中(即将每个对象的数据块按照读写顺序依次写入所述连续磁盘空间中,使同一个对象的数据块会集中在一段连续的磁盘空间上),并依次将每个所述对象的数据块写入所述连续磁盘空间时所产生的元数据写入所述连续磁盘空间中(即不仅仅每个对象的数据块会集中在一起,对应的元数据块也会非常靠近数据块)。
可选地,本发明实施例中,通过将所述第一空间管理对象中属于所述碎片整理子区域的每个所述空间管理信息依次按照对象名、层数及块数的递增顺序进行排序(如先按照对象名将所有空间管理信息中属于同一对象名的空间管理信息排列在一起,进一步地,将属于同一对象名的空间管理信息依次按照层数和块数的递增顺序进行排序);按照排序后的空间管理信息依次读取所述碎片整理子区域中数据块,并依次写入所述连续磁盘空间中(即将每个对象的数据块按照读写顺序依次写入所述连续磁盘空间中,使同一个对象的数据块会集中在一段连续的磁盘空间上);进一步地,并依次将每个所述对象的数据块写入所述连续磁盘空间时所产生的元数据写入所述连续磁盘空间中。
S303、释放所述碎片整理子区域。
本发明实施例中,在根据所述第一空间管理对象将碎片整理子区域对应的每个对象的数据块均写入连续磁盘空间中,并将每个所述对象的数据块写入连续磁盘空间时所产生的元数据写入所述连续空间中之后,释放所述碎片整理子区域中的每个所述对象的数据块和元数据块(如图3B和图3C所示),可选地,将释放记录增加到所述第一空间管理对象中;进一步地,所述第一磁盘区域中释放后得到的连续空闲空间可为下一次磁盘碎片整理作准备。
本发明实施例中,通过根据第一空间管理对象判断第一磁盘区域的碎片化程度;其中,所述第一空间管理对象用于记录为每个对象分配所述第一磁盘区域的磁盘子单元时对应的空间管理信息;所述第一磁盘区域为磁盘空间中预设大小对应的磁盘区域;每个所述空间管理信息包括:对象名、层数、块数、偏移值及空间大小值;进一步地,若确定所述第一磁盘区域的碎片化程度达到预设碎片化程度,则根据所述第一空间管理对象将碎片整理子区域对应的每个对象的数据块均写入连续磁盘空间中,并将每个所述对象的数据块写入连续磁盘空间时所产生的元数据写入所述连续空间中;其中,所述碎片整理子区域小于等于所述第一磁盘区域;进一步地,释放所述碎片整理子区域;可见,根据空间管理信息对所述碎片整理子区域进行磁盘碎片整理后可得到所述第一磁盘区域中的一段连续空闲空间,提高了磁盘碎片整理效率。
图4为本发明磁盘碎片整理方法实施例二的流程示意图。在上述图3A所示实施例的基础上,如图4所示,步骤S302之前,还包括:
S302A、根据所述第一空间管理对象确定所述碎片整理子区域。
本发明实施例中,在确定所述第一磁盘区域的碎片化程度达到预设碎片化程度后,为了减少磁盘碎片整理的工作量,可先精确识别出所述第一磁盘区域中碎片化严重的碎片整理子区域(若所述第一磁盘区域的碎片可能均匀分布,如图3B所示,则识别出的所述碎片整理子区域即为所述第一磁盘区域;若所述第一磁盘区域的碎片可能并不是均匀分布,如图3C所示集中在一定的区域内,则识别出的所述碎片整理子区域即小于所述第一磁盘区域,所述碎片整理子区域为:所述第一磁盘区域中的至少一个磁盘子区域),其次,针对所述碎片整理子区域进行磁盘碎片整理,以提高磁盘碎片整理效率。
可选地,根据预设区域值(如4*64MB,其中,64MB为磁盘的数据阈值)将所述第一磁盘区域划分为至少两个磁盘子区域,并确定每个所述磁盘子区域的碎片个数(可选地,确定每个所述磁盘子区域的碎片个数的方式可参见本发明上述实施例中关于“确定所述第一磁盘区域的总碎片个数”的方式,此处不再赘述);进一步地,根据每个所述磁盘子区域的碎片个数和所述第一磁盘区域的总碎片个数确定所述碎片整理子区域;例如根据所述预设区域值/所述第一磁盘区域大小*所述第一磁盘区域的总碎片个数得到每个所述磁盘子区域的平均碎片个数,依次将每个所述磁盘子区域的碎片个数与所述平均碎片个数进行比较,若某个所述磁盘子区域的碎片个数与所述平均碎片个数的比值大于第二预设比值(如1)时,则确定所述磁盘子区域的碎片化程度达到预设碎片化程度,需要进行磁盘碎片处理;若所述比值小于等于所述第二预设比值,则确定所述磁盘子区域的碎片化程度还未达到预设碎片化程度,不需要进行磁盘碎片处理;以此类推,便可确定所述碎片整理子区域(包括至少一个所述碎片化程度达到预设碎片化程度的磁盘子区域)。当然,本发明实施例中,还可采用其他方式确定所述碎片整理子区域,本发明实施例中对此并不作限制。
可见,本发明实施例中,通过在根据所述第一空间管理对象将碎片整理子区域对应的每个对象的数据块均写入连续磁盘空间中之前,先根据所述第一空间管理对象确定所述碎片整理子区域,从而针对所述碎片整理子区域进行磁盘碎片整理,进一步地提高了磁盘碎片整理效率。
图5为本发明磁盘碎片整理方法实施例三的流程示意图。在上述图3A或图4所示实施例的基础上,如图5所示,步骤S302之前,还包括:
S302B、根据属于所述碎片整理子区域的各个空间管理信息所包括的空间大小值的总和,确定所述碎片整理子区域所占的磁盘空间大小。
本发明实施例中,在确定所述第一磁盘区域的碎片化程度达到预设碎片化程度后,可根据属于所述碎片整理子区域的各个空间管理信息所包括的空间大小值的总和,确定所述碎片整理子区域所占的磁盘空间大小,即将所述各个空间管理信息所包括的空间大小值相加,便得到所述碎片整理子区域所占的磁盘空间大小。
S302C、根据所述碎片整理子区域所占的磁盘空间大小,确定碎片整理所需的连续磁盘空间大小,并根据所述连续磁盘空间大小为所述碎片整理子区域分配所述连续磁盘空间。
本发明实施例中,根据所述碎片整理子区域所占的磁盘空间大小,确定碎片整理所需的连续磁盘空间大小;由于搬迁数据会引起元数据的修改,因此,所述连续磁盘空间除了存储数据块之外,还需预留一定的用于存储元数据的磁盘空间(可选地,所述连续磁盘空间用于存放所述碎片整理子区域中的数据块及元数据块),可选地,根据所述连续磁盘空间大小以及预设元数据块比例(如5%)为所述碎片整理子区域分配所述连续磁盘空间,例如根据所述连续磁盘空间大小*(1+5%)计算得到的值为所述碎片整理子区域分配所述连续磁盘空间,以便将所述碎片整理子区域中的数据块和元数据块搬迁到所述连续磁盘空间,并释放所述碎片整理子区域;可见,根据空间管理信息对所述碎片整理子区域进行磁盘碎片整理后可得到所述第一磁盘区域中的一段连续空闲空间,提高了磁盘碎片整理效率,同时保证了磁盘上一直保持有连续空闲空间,以便下次磁盘碎片整理作准备。
可选地,本发明实施例中,并不是只有新写机制会产生碎片,只要有删除和/或释放对象的情况存在,也一样会产生碎片;可选地,本发明磁盘碎片整理方法可适用于单磁盘,也可适用于多磁盘之间;可选地,本发明磁盘碎片整理方法不限制仅适用于硬盘内部,也适用于共享存储(如云盘或分布式NAS***)中。
图6为本发明磁盘碎片整理装置实施例一的结构示意图。如图6所示,本实施例提供的磁盘碎片整理装置60包括:
判断模块601,用于根据第一空间管理对象判断第一磁盘区域的碎片化程度;其中,所述第一空间管理对象用于记录为每个对象分配所述第一磁盘区域的磁盘子单元时对应的空间管理信息;所述第一磁盘区域为磁盘空间中预设大小对应的磁盘区域;每个所述空间管理信息包括:对象名、层数、块数、偏移值及空间大小值;
整理模块602,用于若根据所述判断模块确定所述第一磁盘区域的碎片化程度达到预设碎片化程度,则根据所述第一空间管理对象将碎片整理子区域对应的每个对象的数据块均写入连续磁盘空间中,并将每个所述对象的数据块写入连续磁盘空间时所产生的元数据写入所述连续空间中;其中,所述碎片整理子区域小于等于所述第一磁盘区域;
释放模块603,用于释放所述碎片整理子区域。
本发明实施例中,通过判断模块根据第一空间管理对象判断第一磁盘区域的碎片化程度;进一步地,若确定所述第一磁盘区域的碎片化程度达到预设碎片化程度,则整理模块根据所述第一空间管理对象将碎片整理子区域对应的每个对象的数据块均写入连续磁盘空间中,并将每个所述对象的数据块写入连续磁盘空间时所产生的元数据写入所述连续空间中;其中,所述碎片整理子区域小于等于所述第一磁盘区域;进一步地,释放模块释放所述碎片整理子区域;可见,根据空间管理信息对所述碎片整理子区域进行磁盘碎片整理后可得到所述第一磁盘区域中的一段连续空闲空间,提高了磁盘碎片整理效率。
在上述图6所示的实施例的基础上,图7为本发明磁盘碎片整理装置实施例二的结构示意图,参照图7,上述判断模块601,包括:
第一确定单元6011,用于根据所述第一空间管理对象中的每个所述空间管理信息确定所述第一磁盘区域的总碎片个数;
判断单元6012,用于根据所述总碎片个数和所述第一磁盘区域的总块数判断所述第一磁盘区域的碎片化程度;其中,所述第一磁盘区域的总块数为所述第一磁盘区域所包括的磁盘子单元的总数。
可选地,所述第一确定单元6011具体用于:
将所述第一空间管理对象中的每个所述空间管理信息按照偏移值的递增顺序进行排序;
根据排序后的空间管理信息中每相邻的两个空间管理信息,确定所述第一磁盘区域的总碎片个数。
在上述图6或图7所示的实施例的基础上,图8为本发明磁盘碎片整理装置实施例三的结构示意图,参照图8,所述装置,还包括:
确定模块604,用于根据所述第一空间管理对象确定所述碎片整理子区域;所述碎片整理子区域为:所述第一磁盘区域中的至少一个磁盘子区域。
可选地,所述确定模块604,包括:
第二确定单元6041,用于根据预设区域值将所述第一磁盘区域划分为至少两个磁盘子区域,并确定每个所述磁盘子区域的碎片个数;
第三确定单元6042,用于根据每个所述磁盘子区域的碎片个数和所述第一磁盘区域的总碎片个数确定所述碎片整理子区域。
在上述图6至图8所示的实施例的基础上,图9为本发明磁盘碎片整理装置实施例四的结构示意图,参照图9,上述整理模块602具体用于:
根据所述第一空间管理对象依次将每个所述对象的数据块写入所述连续磁盘空间中,并依次将每个所述对象的数据块写入所述连续磁盘空间时所产生的元数据写入所述连续磁盘空间中。
可选地,所述整理模块602,包括:
排序单元6021,用于将所述第一空间管理对象中属于所述碎片整理子区域的每个所述空间管理信息依次按照对象名、层数及块数的递增顺序进行排序;
整理单元6022,用于按照排序后的空间管理信息依次读取所述碎片整理子区域中数据块,并依次写入所述连续磁盘空间中。
在上述图6至图9所示的实施例的基础上,图10为本发明磁盘碎片整理装置实施例五的结构示意图,参照图10,所述装置,还包括:
分配模块605,用于根据所述碎片整理子区域所占的磁盘空间大小,确定碎片整理所需的连续磁盘空间大小,并根据所述连续磁盘空间大小为所述碎片整理子区域分配所述连续磁盘空间;所述连续磁盘空间用于存放所述碎片整理子区域中的数据块及元数据块。
可选地,所述分配模块605还用于:
根据属于所述碎片整理子区域的各个空间管理信息所包括的空间大小值的总和,确定所述碎片整理子区域所占的磁盘空间大小。
可选地,所述分配模块605还用于:
根据所述连续磁盘空间大小以及预设元数据块比例为所述碎片整理子区域分配所述连续磁盘空间。
可选地,所述装置,还包括:
获取模块,用于获取所述空间管理信息。
上述任一个实施例提供的磁盘碎片整理装置可以用于执行本发明上述磁盘碎片整理装置方法任意实施例中的技术方案,其实现原理和技术效果类似,此处不再赘述。
图11为本发明主机实施例的结构示意图。如图11所示,本实施例提供的主机110可以包括处理器1101和存储器1102。其中,存储器1102用于存储执行指令,处理器1101用于执行存储器1102中的执行指令使得所述主机执行以下操作:
根据第一空间管理对象判断第一磁盘区域的碎片化程度;其中,所述第一空间管理对象用于记录为每个对象分配所述第一磁盘区域的磁盘子单元时对应的空间管理信息;所述第一磁盘区域为磁盘空间中预设大小对应的磁盘区域;每个所述空间管理信息包括:对象名、层数、块数、偏移值及空间大小值;
若确定所述第一磁盘区域的碎片化程度达到预设碎片化程度,则根据所述第一空间管理对象将碎片整理子区域对应的每个对象的数据块均写入连续磁盘空间中,并将每个所述对象的数据块写入连续磁盘空间时所产生的元数据写入所述连续空间中;其中,所述碎片整理子区域小于等于所述第一磁盘区域;
释放所述碎片整理子区域。
可选地,所述根据第一空间管理对象判断第一磁盘区域的碎片化程度,包括:
根据所述第一空间管理对象中的每个所述空间管理信息确定所述第一磁盘区域的总碎片个数;
根据所述总碎片个数和所述第一磁盘区域的总块数判断所述第一磁盘区域的碎片化程度;其中,所述第一磁盘区域的总块数为所述第一磁盘区域所包括的磁盘子单元的总数。
可选地,所述根据所述第一空间管理对象中的每个所述空间管理信息确定所述第一磁盘区域的总碎片个数,包括:
将所述第一空间管理对象中的每个所述空间管理信息按照偏移值的递增顺序进行排序;
根据排序后的空间管理信息中每相邻的两个空间管理信息,确定所述第一磁盘区域的总碎片个数。
可选地,所述根据所述第一空间管理对象将碎片整理子区域对应的每个对象的数据块均写入连续磁盘空间中之前,还包括:
根据所述第一空间管理对象确定所述碎片整理子区域;所述碎片整理子区域为:所述第一磁盘区域中的至少一个磁盘子区域。
可选地,所述根据所述第一空间管理对象确定所述碎片整理子区域,包括:
根据预设区域值将所述第一磁盘区域划分为至少两个磁盘子区域,并确定每个所述磁盘子区域的碎片个数;
根据每个所述磁盘子区域的碎片个数和所述第一磁盘区域的总碎片个数确定所述碎片整理子区域。
可选地,所述根据所述第一空间管理对象将碎片整理子区域对应的每个对象的数据块均写入连续磁盘空间中,并将每个所述对象的数据块写入连续磁盘空间时所产生的元数据写入所述连续空间中,包括:
根据所述第一空间管理对象依次将每个所述对象的数据块写入所述连续磁盘空间中,并依次将每个所述对象的数据块写入所述连续磁盘空间时所产生的元数据写入所述连续磁盘空间中。
可选地,所述根据所述第一空间管理对象依次将每个对象的数据块写入所述连续磁盘空间中,包括:
将所述第一空间管理对象中属于所述碎片整理子区域的每个所述空间管理信息依次按照对象名、层数及块数的递增顺序进行排序;
按照排序后的空间管理信息依次读取所述碎片整理子区域中数据块,并依次写入所述连续磁盘空间中。
可选地,所述根据所述第一空间管理对象将碎片整理子区域对应的每个对象的数据块均写入连续磁盘空间中之前,还包括:
根据所述碎片整理子区域所占的磁盘空间大小,确定碎片整理所需的连续磁盘空间大小,并根据所述连续磁盘空间大小为所述碎片整理子区域分配所述连续磁盘空间;所述连续磁盘空间用于存放所述碎片整理子区域中的数据块及元数据块。
可选地,所述根据所述碎片整理子区域所占的磁盘空间大小,确定碎片整理所需的连续磁盘空间大小之前,还包括:
根据属于所述碎片整理子区域的各个空间管理信息所包括的空间大小值的总和,确定所述碎片整理子区域所占的磁盘空间大小。
可选地,所述根据所述连续磁盘空间大小为所述碎片整理子区域分配所述连续磁盘空间,包括:
根据所述连续磁盘空间大小以及预设元数据块比例为所述碎片整理子区域分配所述连续磁盘空间。
可选地,所述根据第一空间管理对象判断第一磁盘区域的碎片化程度之前,还包括:
获取所述空间管理信息。
本实施例的主机可以用于执行本发明上述磁盘碎片整理方法任意实施例中的技术方案,其实现原理和技术效果类似,此处不再赘述。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (23)

1.一种磁盘碎片整理方法,其特征在于,包括:
根据第一空间管理对象判断第一磁盘区域的碎片化程度;其中,所述第一空间管理对象用于记录为每个对象分配所述第一磁盘区域的磁盘子单元时对应的空间管理信息;所述第一磁盘区域为磁盘空间中预设大小对应的磁盘区域;每个所述空间管理信息包括:对象名、层数、块数、偏移值及空间大小值;
若确定所述第一磁盘区域的碎片化程度达到预设碎片化程度,则根据所述第一空间管理对象将碎片整理子区域对应的每个对象的数据块均写入连续磁盘空间中,并将每个所述对象的数据块写入连续磁盘空间时所产生的元数据写入所述连续空间中;其中,所述碎片整理子区域小于等于所述第一磁盘区域;
释放所述碎片整理子区域。
2.根据权利要求1所述的方法,其特征在于,所述根据第一空间管理对象判断第一磁盘区域的碎片化程度,包括:
根据所述第一空间管理对象中的每个所述空间管理信息确定所述第一磁盘区域的总碎片个数;
根据所述总碎片个数和所述第一磁盘区域的总块数判断所述第一磁盘区域的碎片化程度;其中,所述第一磁盘区域的总块数为所述第一磁盘区域所包括的磁盘子单元的总数。
3.根据权利要求2所述的方法,其特征在于,所述根据所述第一空间管理对象中的每个所述空间管理信息确定所述第一磁盘区域的总碎片个数,包括:
将所述第一空间管理对象中的每个所述空间管理信息按照偏移值的递增顺序进行排序;
根据排序后的空间管理信息中每相邻的两个空间管理信息,确定所述第一磁盘区域的总碎片个数。
4.根据权利要求1-3中任一项所述的方法,其特征在于,所述根据所述第一空间管理对象将碎片整理子区域对应的每个对象的数据块均写入连续磁盘空间中之前,还包括:
根据所述第一空间管理对象确定所述碎片整理子区域;所述碎片整理子区域为:所述第一磁盘区域中的至少一个磁盘子区域。
5.根据权利要求4所述的方法,其特征在于,所述根据所述第一空间管理对象确定所述碎片整理子区域,包括:
根据预设区域值将所述第一磁盘区域划分为至少两个磁盘子区域,并确定每个所述磁盘子区域的碎片个数;
根据每个所述磁盘子区域的碎片个数和所述第一磁盘区域的总碎片个数确定所述碎片整理子区域。
6.根据权利要求1-3中任一项所述的方法,其特征在于,所述根据所述第一空间管理对象将碎片整理子区域对应的每个对象的数据块均写入连续磁盘空间中,并将每个所述对象的数据块写入连续磁盘空间时所产生的元数据写入所述连续空间中,包括:
根据所述第一空间管理对象依次将所述碎片整理子区域对应的每个对象的数据块写入所述连续磁盘空间中,并依次将每个所述对象的数据块写入所述连续磁盘空间时所产生的元数据写入所述连续磁盘空间中。
7.根据权利要求6所述的方法,其特征在于,所述根据所述第一空间管理对象依次将每个对象的数据块写入所述连续磁盘空间中,包括:
将所述第一空间管理对象中属于所述碎片整理子区域的每个所述空间管理信息依次按照对象名、层数及块数的递增顺序进行排序;
按照排序后的空间管理信息依次读取所述碎片整理子区域中数据块,并依次写入所述连续磁盘空间中。
8.根据权利要求1-3中任一项所述的方法,其特征在于,所述根据所述第一空间管理对象将碎片整理子区域对应的每个对象的数据块均写入连续磁盘空间中之前,还包括:
根据所述碎片整理子区域所占的磁盘空间大小,确定碎片整理所需的连续磁盘空间大小,并根据所述连续磁盘空间大小为所述碎片整理子区域分配所述连续磁盘空间;所述连续磁盘空间用于存放所述碎片整理子区域中的数据块及元数据。
9.根据权利要求8所述的方法,其特征在于,所述根据所述碎片整理子区域所占的磁盘空间大小,确定碎片整理所需的连续磁盘空间大小之前,还包括:
根据属于所述碎片整理子区域的各个空间管理信息所包括的空间大小值的总和,确定所述碎片整理子区域所占的磁盘空间大小。
10.根据权利要求8所述的方法,其特征在于,所述根据所述连续磁盘空间大小为所述碎片整理子区域分配所述连续磁盘空间,包括:
根据所述连续磁盘空间大小以及预设元数据块比例为所述碎片整理子区域分配所述连续磁盘空间。
11.根据权利要求1-3中任一项所述的方法,其特征在于,所述根据第一空间管理对象判断第一磁盘区域的碎片化程度之前,还包括:
获取所述空间管理信息。
12.一种磁盘碎片整理装置,其特征在于,包括:
判断模块,用于根据第一空间管理对象判断第一磁盘区域的碎片化程度;其中,所述第一空间管理对象用于记录为每个对象分配所述第一磁盘区域的磁盘子单元时对应的空间管理信息;所述第一磁盘区域为磁盘空间中预设大小对应的磁盘区域;每个所述空间管理信息包括:对象名、层数、块数、偏移值及空间大小值;
整理模块,用于若根据所述判断模块确定所述第一磁盘区域的碎片化程度达到预设碎片化程度,则根据所述第一空间管理对象将碎片整理子区域对应的每个对象的数据块均写入连续磁盘空间中,并将每个所述对象的数据块写入连续磁盘空间时所产生的元数据写入所述连续空间中;其中,所述碎片整理子区域小于等于所述第一磁盘区域;
释放模块,用于释放所述碎片整理子区域。
13.根据权利要求12所述的装置,其特征在于,所述判断模块,包括:
第一确定单元,用于根据所述第一空间管理对象中的每个所述空间管理信息确定所述第一磁盘区域的总碎片个数;
判断单元,用于根据所述总碎片个数和所述第一磁盘区域的总块数判断所述第一磁盘区域的碎片化程度;其中,所述第一磁盘区域的总块数为所述第一磁盘区域所包括的磁盘子单元的总数。
14.根据权利要求13所述的装置,其特征在于,所述第一确定单元具体用于:
将所述第一空间管理对象中的每个所述空间管理信息按照偏移值的递增顺序进行排序;
根据排序后的空间管理信息中每相邻的两个空间管理信息,确定所述第一磁盘区域的总碎片个数。
15.根据权利要求12-14中任一项所述的装置,其特征在于,所述装置,还包括:
确定模块,用于根据所述第一空间管理对象确定所述碎片整理子区域;所述碎片整理子区域为:所述第一磁盘区域中的至少一个磁盘子区域。
16.根据权利要求15所述的装置,其特征在于,所述确定模块,包括:
第二确定单元,用于根据预设区域值将所述第一磁盘区域划分为至少两个磁盘子区域,并确定每个所述磁盘子区域的碎片个数;
第三确定单元,用于根据每个所述磁盘子区域的碎片个数和所述第一磁盘区域的总碎片个数确定所述碎片整理子区域。
17.根据权利要求12-14中任一项所述的装置,其特征在于,所述整理模块具体用于:
根据所述第一空间管理对象依次将所述碎片整理子区域对应的每个对象的数据块写入所述连续磁盘空间中,并依次将每个所述对象的数据块写入所述连续磁盘空间时所产生的元数据写入所述连续磁盘空间中。
18.根据权利要求17所述的装置,其特征在于,所述整理模块,包括:
排序单元,用于将所述第一空间管理对象中属于所述碎片整理子区域的每个所述空间管理信息依次按照对象名、层数及块数的递增顺序进行排序;
整理单元,用于按照排序后的空间管理信息依次读取所述碎片整理子区域中数据块,并依次写入所述连续磁盘空间中。
19.根据权利要求12-14中任一项所述的装置,其特征在于,所述装置,还包括:
分配模块,用于根据所述碎片整理子区域所占的磁盘空间大小,确定碎片整理所需的连续磁盘空间大小,并根据所述连续磁盘空间大小为所述碎片整理子区域分配所述连续磁盘空间;所述连续磁盘空间用于存放所述碎片整理子区域中的数据块及元数据。
20.根据权利要求19所述的装置,其特征在于,所述分配模块还用于:
根据属于所述碎片整理子区域的各个空间管理信息所包括的空间大小值的总和,确定所述碎片整理子区域所占的磁盘空间大小。
21.根据权利要求19所述的装置,其特征在于,所述分配模块还用于:
根据所述连续磁盘空间大小以及预设元数据块比例为所述碎片整理子区域分配所述连续磁盘空间。
22.根据权利要求12-14中任一项所述的装置,其特征在于,所述装置,还包括:
获取模块,用于获取所述空间管理信息。
23.一种主机,其特征在于,包括:处理器和存储器,所述存储器存储执行指令,所述处理器用于执行所述存储器中的执行指令使得所述主机执行如权利要求1-11中任一项所述的方法。
CN201510940407.7A 2015-12-16 2015-12-16 磁盘碎片整理方法、装置及主机 Active CN105589812B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510940407.7A CN105589812B (zh) 2015-12-16 2015-12-16 磁盘碎片整理方法、装置及主机

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510940407.7A CN105589812B (zh) 2015-12-16 2015-12-16 磁盘碎片整理方法、装置及主机

Publications (2)

Publication Number Publication Date
CN105589812A CN105589812A (zh) 2016-05-18
CN105589812B true CN105589812B (zh) 2018-10-30

Family

ID=55929408

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510940407.7A Active CN105589812B (zh) 2015-12-16 2015-12-16 磁盘碎片整理方法、装置及主机

Country Status (1)

Country Link
CN (1) CN105589812B (zh)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106469120A (zh) * 2016-08-30 2017-03-01 华为技术有限公司 碎片整理方法、装置及设备
CN108304139B (zh) * 2017-01-11 2023-02-21 中兴通讯股份有限公司 一种在固态盘阵列中实现空间释放的方法及装置
CN107870739B (zh) * 2017-03-15 2021-03-19 珠海市杰理科技股份有限公司 磁盘文件存储方法和***
CN107145452A (zh) * 2017-05-25 2017-09-08 努比亚技术有限公司 碎片整理的方法、终端设备及计算机可读存储介质
CN107239412B (zh) * 2017-06-19 2020-07-07 杭州宏杉科技股份有限公司 基于Thin-LUN的存储空间配置方法、数据写入方法及存储设备
CN107368260A (zh) * 2017-06-30 2017-11-21 北京奇虎科技有限公司 基于分布式***的存储空间整理方法、装置及***
CN107506237A (zh) * 2017-07-07 2017-12-22 杭州联吉技术有限公司 一种网络摄像机及其内存整理方法和装置
CN107315840A (zh) * 2017-07-20 2017-11-03 郑州云海信息技术有限公司 数据库中存储空间的管理方法和装置
CN107665098B (zh) * 2017-09-05 2020-12-18 联想(北京)有限公司 信息处理方法、存储设备及计算机存储介质
CN107506496B (zh) * 2017-09-28 2021-10-22 北京小米移动软件有限公司 碎片整理方法、装置及计算机可读存储介质
CN109101191B (zh) * 2018-06-21 2021-07-16 东软集团股份有限公司 数据存储方法、装置和存储介质以及电子设备
CN108959500A (zh) * 2018-06-26 2018-12-07 郑州云海信息技术有限公司 一种对象存储方法、装置、设备及计算机可读存储介质
CN109977035A (zh) * 2019-03-18 2019-07-05 新华三技术有限公司成都分公司 磁盘空间分配方法、装置、存储设备及存储介质
CN110221781B (zh) * 2019-06-04 2022-08-23 Oppo广东移动通信有限公司 一种磁盘碎片的制造方法、装置、存储介质及智能终端
CN111930739A (zh) * 2020-06-22 2020-11-13 中国建设银行股份有限公司 表空间碎片化的自动处理方法、***、设备和存储介质
CN112463058B (zh) * 2020-11-27 2023-04-07 杭州海康威视***技术有限公司 一种碎片数据整理方法、装置及存储节点
CN113568868B (zh) * 2021-07-28 2024-02-06 重庆紫光华山智安科技有限公司 文件***管理方法、***、电子设备及介质
CN116049021B (zh) * 2022-08-29 2023-10-20 荣耀终端有限公司 存储空间管理方法、电子设备及计算机可读存储介质
CN116701298B (zh) * 2022-11-22 2024-06-07 荣耀终端有限公司 一种文件***管理方法及电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103123645A (zh) * 2012-11-28 2013-05-29 无锡港湾网络科技有限公司 一种降低磁盘碎片的方法
CN103793210A (zh) * 2012-10-29 2014-05-14 腾讯科技(深圳)有限公司 磁盘整理方法、装置及***
CN104156173A (zh) * 2014-07-29 2014-11-19 浪潮(北京)电子信息产业有限公司 一种实现磁盘碎片整理的方法及装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7644239B2 (en) * 2004-05-03 2010-01-05 Microsoft Corporation Non-volatile memory cache performance improvement
US9251154B2 (en) * 2013-11-15 2016-02-02 International Business Machines Corporation Priority based reliability mechanism for archived data

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103793210A (zh) * 2012-10-29 2014-05-14 腾讯科技(深圳)有限公司 磁盘整理方法、装置及***
CN103123645A (zh) * 2012-11-28 2013-05-29 无锡港湾网络科技有限公司 一种降低磁盘碎片的方法
CN104156173A (zh) * 2014-07-29 2014-11-19 浪潮(北京)电子信息产业有限公司 一种实现磁盘碎片整理的方法及装置

Also Published As

Publication number Publication date
CN105589812A (zh) 2016-05-18

Similar Documents

Publication Publication Date Title
CN105589812B (zh) 磁盘碎片整理方法、装置及主机
CN103761053B (zh) 一种数据处理方法和装置
CN104461390B (zh) 将数据写入叠瓦状磁记录smr硬盘的方法及装置
CN103064639B (zh) 数据存储方法及装置
EP3617867B1 (en) Fragment management method and fragment management apparatus
US10133666B2 (en) File storage method and apparatus
CN102156738A (zh) 数据块处理方法、数据块存储设备及***
JP2017091545A (ja) 多重モード格納管理装置、多重モード格納装置、及びその選別潜在露出(sue)マッピング動作方法
US20110145528A1 (en) Storage apparatus and its control method
CN107003809A (zh) 一种存储设备存储数据的方法及存储设备
US20120131303A1 (en) Thin Provisioned Space Allocation
CN103384877A (zh) 包括闪存的存储***和存储控制方法
CN107209714A (zh) 分布式存储***及分布式存储***的控制方法
CN108021513A (zh) 一种数据存储方法及装置
US10365845B1 (en) Mapped raid restripe for improved drive utilization
JP2006195960A5 (zh)
US20170212697A1 (en) Sliding-window multi-class striping
KR101543825B1 (ko) 볼륨 내 성능 핫 스팟의 식별 및 포함
KR20110093035A (ko) 플래시 주소 변환 장치 및 그 방법
CN107908571A (zh) 一种数据写入方法、闪存装置及存储设备
CN103955433A (zh) 盖瓦磁记录硬盘、盖瓦磁记录硬盘写数据的方法及装置
US20210326207A1 (en) Stripe reassembling method in storage system and stripe server
CN107203330A (zh) 一种面向读写数据流的闪存数据分布方法
CN111782135A (zh) 数据存储方法、***、数据节点和计算机可读存储介质
CN106959907A (zh) 一种云平台碎片化数据备份还原***

Legal Events

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