磁盘碎片整理方法、装置及主机的制作方法

文档序号:9826210阅读:438来源:国知局
磁盘碎片整理方法、装置及主机的制作方法
【技术领域】
[0001]本发明实施例涉及计算机技术,尤其涉及一种磁盘碎片整理方法、装置及主机。
【背景技术】
[0002]随着磁盘容量越来越大,文件系统使用的时间越来越长,磁盘上的碎片空间越来越多。对于机械磁盘而言,顺序读写才能充分发挥其性能,但越来越多的磁盘碎片带来越来越多的离散10,使磁头来回跳跃,导致读写性能急剧下降。
[0003]图1A为现有磁盘碎片整理方法示意图,图1B为磁盘碎片整理之前对象的物理视图,图1C为现有磁盘碎片整理之后对象的物理视图。现有技术中,通过如下方式进行磁盘碎片整理:I)判断某个源文件(即对象)包括的连续数据块个数是否达到预设阈值;2)若达到所述预设阈值,则如图1A所示为所述源文件创建临时文件,并为所述临时文件分配一段空闲的连续磁盘空间;3)将所述源文件离散的数据块读取出来并写入到所述连续磁盘空间中;4)释放所述源文件所占用的磁盘空间,并将所述临时文件命名为所述源文件名。
[0004]现有技术中,在磁盘空间分配过程中,所述源文件离散的数据块之间可能存在其他文件的数据块,如图18所示,1311^1、1311^7、1311^9、1311^1和1311^13为其它文件的数据块;按照现有磁盘碎片整理方法(对单个文件的数据块进行磁盘碎片整理)得到图1C所示,可见,磁盘上的磁盘碎片仍然很多。

【发明内容】

[0005]本发明实施例提供一种磁盘碎片整理方法、装置及主机,提高了磁盘碎片整理效率。
[0006]第一方面,本发明实施例提供一种磁盘碎片整理方法,包括:
[0007]根据第一空间管理对象判断第一磁盘区域的碎片化程度;其中,所述第一空间管理对象用于记录为每个对象分配所述第一磁盘区域的磁盘子单元时对应的空间管理信息;所述第一磁盘区域为磁盘空间中预设大小对应的磁盘区域;每个所述空间管理信息包括:对象名、层数、块数、偏移值及空间大小值;
[0008]若确定所述第一磁盘区域的碎片化程度达到预设碎片化程度,则根据所述第一空间管理对象将碎片整理子区域对应的每个对象的数据块均写入连续磁盘空间中,并将每个所述对象的数据块写入连续磁盘空间时所产生的元数据写入所述连续空间中;其中,所述碎片整理子区域小于等于所述第一磁盘区域;
[0009]释放所述碎片整理子区域。
[0010]结合第一方面,在第一方面的第一种可能的实现方式中,所述根据第一空间管理对象判断第一磁盘区域的碎片化程度,包括:
[0011]根据所述第一空间管理对象中的每个所述空间管理信息确定所述第一磁盘区域的总碎片个数;
[0012]根据所述总碎片个数和所述第一磁盘区域的总块数判断所述第一磁盘区域的碎片化程度;其中,所述第一磁盘区域的总块数为所述第一磁盘区域所包括的磁盘子单元的总数。
[0013]结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述根据所述第一空间管理对象中的每个所述空间管理信息确定所述第一磁盘区域的总碎片个数,包括:
[0014]将所述第一空间管理对象中的每个所述空间管理信息按照偏移值的递增顺序进tx排序;
[0015]根据排序后的空间管理信息中每相邻的两个空间管理信息,确定所述第一磁盘区域的总碎片个数。
[0016]结合第一方面、第一方面的第一种或第二种任一种可能的实现方式,在第一方面的第三种可能的实现方式中,所述根据所述第一空间管理对象将碎片整理子区域对应的每个对象的数据块均写入连续磁盘空间中之前,还包括:
[0017]根据所述第一空间管理对象确定所述碎片整理子区域;所述碎片整理子区域为:所述第一磁盘区域中的至少一个磁盘子区域。
[0018]结合第一方面的第三种可能的实现方式,在第一方面的第四种可能的实现方式中,所述根据所述第一空间管理对象确定所述碎片整理子区域,包括:
[0019]根据预设区域值将所述第一磁盘区域划分为至少两个磁盘子区域,并确定每个所述磁盘子区域的碎片个数;
[0020]根据每个所述磁盘子区域的碎片个数和所述第一磁盘区域的总碎片个数确定所述碎片整理子区域。
[0021]结合第一方面、第一方面的第一种至第四种任一种可能的实现方式,在第一方面的第五种可能的实现方式中,所述根据所述第一空间管理对象将碎片整理子区域对应的每个对象的数据块均写入连续磁盘空间中,并将每个所述对象的数据块写入连续磁盘空间时所产生的元数据写入所述连续空间中,包括:
[0022]根据所述第一空间管理对象依次将每个所述对象的数据块写入所述连续磁盘空间中,并依次将每个所述对象的数据块写入所述连续磁盘空间时所产生的元数据写入所述连续磁盘空间中。
[0023]结合第一方面的第五种可能的实现方式,在第一方面的第六种可能的实现方式中,所述根据所述第一空间管理对象依次将每个对象的数据块写入所述连续磁盘空间中,包括:
[0024]将所述第一空间管理对象中属于所述碎片整理子区域的每个所述空间管理信息依次按照对象名、层数及块数的递增顺序进行排序;
[0025]按照排序后的空间管理信息依次读取所述碎片整理子区域中数据块,并依次写入所述连续磁盘空间中。
[0026]结合第一方面、第一方面的第一种至第六种任一种可能的实现方式,在第一方面的第七种可能的实现方式中,所述根据所述第一空间管理对象将碎片整理子区域对应的每个对象的数据块均写入连续磁盘空间中之前,还包括:
[0027]根据所述碎片整理子区域所占的磁盘空间大小,确定碎片整理所需的连续磁盘空间大小,并根据所述连续磁盘空间大小为所述碎片整理子区域分配所述连续磁盘空间;所述连续磁盘空间用于存放所述碎片整理子区域中的数据块及元数据块。
[0028]结合第一方面的第七种可能的实现方式,在第一方面的第八种可能的实现方式中,所述根据所述碎片整理子区域所占的磁盘空间大小,确定碎片整理所需的连续磁盘空间大小之前,还包括:
[0029]根据属于所述碎片整理子区域的各个空间管理信息所包括的空间大小值的总和,确定所述碎片整理子区域所占的磁盘空间大小。
[0030]结合第一方面的第七种或第八种可能的实现方式,在第一方面的第九种可能的实现方式中,所述根据所述连续磁盘空间大小为所述碎片整理子区域分配所述连续磁盘空间,包括:
[0031]根据所述连续磁盘空间大小以及预设元数据块比例为所述碎片整理子区域分配所述连续磁盘空间。
[0032]结合第一方面、第一方面的第一种至第九种任一种可能的实现方式,在第一方面的第十种可能的实现方式中,所述根据第一空间管理对象判断第一磁盘区域的碎片化程度之前,还包括:
[0033]获取所述空间管理信息。
[0034]第二方面,本发明实施例提供一种磁盘碎片整理装置,包括:
[0035]判断模块,用于根据第一空间管理对象判断第一磁盘区域的碎片化程度;其中,所述第一空间管理对象用于记录为每个对象分配所述第一磁盘区域的磁盘子单元时对应的空间管理信息;所述第一磁盘区域为磁盘空间中预设大小对应的磁盘区域;每个所述空间管理信息包括:对象名、层数、块数、偏移值及空间大小值;
[0036]整理模块,用于若根据所述判断模块确定所述第一磁盘区域的碎片化程度达到预设碎片化程度,则根据所述第一空间管理对象将碎片整理子区域对应的每个对象的数据块均写入连续磁盘空间中,并将每个所述对象的数据块写入连续磁盘空间时所产生的元数据写入所述连续空间中;其中,所述碎片整理子区域小于等于所述第一磁盘区域;
[0037]释放模块,用于释放所述碎片整理子区域。
[0038]结合第二方面,在第二方面的第一种可能的实现方式中,所述判断模块,包括:
[0039]第一确定单元,用于根据所述第一空间管理对象中的每个所述空间管理信息确定所述第一磁盘区域的总碎片个数;
[0040]判断单元,用于根据所述总碎片个数和所述第一磁盘区域的总块数判断所述第一磁盘区域的碎片化程度;其中,所述第一磁盘区域的总块数为所述第一磁盘区域所包括的磁盘子单元的总数。
[0041 ]结合第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述第一确定单元具体用于:
[0042]将所述第一空间管理对象中的每个所述空间管理信息按照偏移值的递增顺序进tx排序;
[0043]根据排序后的空间管理信息中每相邻的两个空间管理信息,确定所述第一磁盘区域的总碎片个数。
[0044]结合第二方面、第二方面的第一种或第二种任一种可能的实现方式,在第二方面的第三种可能的实现方式中,所述装置,还包括:
[0045]确定模块,用于根据所述第一空间管理对象确定所述碎片整理子区域;所述碎片整理子区域为:所述第一磁盘区域中的至少一个磁盘子区域。
[0046]结合第二方面的第三种可能的实现方式,在第二方面的第四种可能的实现方式中,所述确定模块,包括:
[0047]第二确定单元,用于根据预设区域值将所述第一磁盘区域划分为至少两个磁盘子区域,并确定每个所述磁盘子区域的碎片个数;
[0048]第三确定单元,用于根据每个所述磁盘子区域的碎片个数和所述第一磁盘区域的总碎片个数确定所述碎片整理子区域。
[0049]结合第二方面、第二方面的第一种至第四种任一种可能的实现方式,在第二方面的第五种可能的实现方式中,所述整理模块具体用于:
[0050]根据所述第一空间管理对象依次将每个所述对象的数据块写入所述连续磁盘空间中,并依次将每个所述对象的数据块写入所述连续磁盘空间时所产生的元数据写入所述连续磁盘空间中。
[0051]结合第二方面的第五种可能的实现方式,在第二方面的第六种可能的实现方式中,所述整理模块,包括:
[0052]排序单元,用于将所述第一空间管理对象中属于所述碎片整理子区域的每个所述空间管理信息依次按照对象名、层数及块数的递增顺序进行排序;
[0053]整理单元,用于按照排序后的空间管理信息依次读取所述碎片整理子区域中数据块,并依次写入所述连续磁盘空间中。
[0054]结合第二方面、第二方面的第一种至第六种任一种可能的实现方式,在第二方面的第七种可能的实现方式中,所述装置,还包括:
[0055]分配模块,用于根据所述碎片整理子区域所占的磁盘空间大小,确定碎片整理所需的连续磁盘空间大小,并根据所述连续磁盘空间大小为所述碎片整理子区域分配所述连续磁盘空间;所述连续磁盘空间用于存放所述碎片整理子区域中的数据块及元数据块。
[0056]结合第二方面的第七种可能的实现方式,在第二方面的第八种可能的实现方式中,所述分配模块还用于:
[0057]根据属于所述碎片整理子区域的各个空间管理信息所包括的空间大小
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1