一种磁盘空间分配法及装置的制造方法

文档序号:9524135阅读:266来源:国知局
一种磁盘空间分配法及装置的制造方法
【技术领域】
[0001]本发明涉及电子技术领域,尤其涉及一种磁盘空间分配法及装置。
【背景技术】
[0002]现有磁盘空间管理机制中,常见的分配策略是首先将磁盘空间划分为定长的大块空间(extent),再由分配器将extent切分为变长的小块空间(grain)提供给使用者。
[0003]在长时间使用之后,磁盘空闲空间会逐渐碎片化,此时的空间分配机制,存在性能和管理效率无法兼顾的问题。
[0004]如优先使用碎片空间,可以有效降低分配器需要管理的碎片空间数量,但会导致分配空间不连续,从而出现写盘不连续而影响读写性能;
[0005]如优先使用连续空间,可以确保分配空间连续,读写性能较好。但会导致碎片化情况严重,碎片空间的持久化及访问成为性能瓶颈。特别的,如果即将凑成完整extent的空间被使用,会导致一直碎片空间无法合并为完整空间。
[0006]空闲磁盘空间的管理机制和分配策略,直接影响到对磁盘空间的高效访问,进而影响到整系统的性能。
[0007]在图1所示的情况,现有技术中如果优先使用该extent的碎片空间,会导致分配出的空间离散,对磁盘读写性能有较大影响;但如不使用这些空间,又会导致管理这些碎片的开销变得极大甚至难以接受。
[0008]如图1的P2所示的extent,该extent的碎片已经较小了,如果此时将该extent的空间分配出去,是可以获得较好的空间连续性,但是如果进行分配,则会导致原本有较大概率能合并为完整extent归还给extent管理模块的空间,将没有机会合并成完整extent。从而使得空间一直无法释放,造成大量的碎片空间在分配器内部长期堆积。

【发明内容】

[0009]本发明实施例提供一种磁盘空间分配法及装置,用以解决现有空闲磁盘空间的管理机制和分配策略直接影响到对磁盘空间的高效访问,进而影响到整系统性能的问题。
[0010]第一方面,提供一种磁盘空间分配方法,该方法包括:
[0011]当接收到从磁盘中分配小块空间grain的请求时,确定磁盘的空闲空间中没有存储数据的完整大块空间extent的数量;
[0012]若所述完整大块空间extent的数量不小于设定阈值,则从所述完整的大块空间extent中分配grain给所述请求;否则,从所述空闲空间中的碎片化空间中分配grain给所述请求。
[0013]结合第一方面,在第一种可能的实现方式中,从所述空闲空间中的碎片化空间中分配grain给所述请求,包括:
[0014]确定每个extent的内部离散值;其中,该内部离散值用于表示每个extent内部空闲空间的碎片化程度;
[0015]根据所述每个extent的内部离散值确定目标extent,从该目标extent的碎片化空间中分配grain给所述请求。
[0016]结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,根据所述每个extent的内部离散值确定目标extent,包括:
[0017]检测所述每个extent中是否有第一 extent的内部离散值在设定的阈值区间范围内,如果有,则确定所述第一 extent为所述目标extent ;
[0018]否则,检测所述每个extent中是否有第二 extent的内部离散值大于所述阈值区间的最大值,如果有,则确定所述第二 extent为所述目标extent ;
[0019]如果没有第一 extent和第二 extent,则检测所述每个extent中是否有第三extent的内部离散值大于所述阈值区间的最小值,如果有,则确定所述第三extent为所述目标 extent。
[0020]结合第一方面的第一种或第二种可能的实现方式,在第三种可能的实现方式中,每个extent的内部离散值为:
[0021]每个extent内空闲grain总空间大小与extent内部空闲grain个数的比值;或者
[0022]每个extent内部空闲grain的数量绝对值。
[0023]第二方面,提供一种磁盘空间分配装置,该装置包括:
[0024]统计模块,用于当接收到从磁盘中分配小块空间grain的请求时,确定磁盘的空闲空间中没有存储数据的完整大块空间extent的数量;
[0025]分配模块,用于若所述完整大块空间extent的数量不小于设定阈值,则从所述完整的大块空间extent中分配grain给所述请求;否则,从所述空闲空间中的碎片化空间中分配grain给所述请求。
[0026]结合第二方面,在第一种可能的实现方式中,分配模块具体用于确定每个extent的内部离散值;其中,该内部离散值用于表示每个extent内部空闲空间的碎片化程度;根据所述每个extent的内部离散值确定目标extent,从该目标extent的碎片化空间中分配grain给所述请求。
[0027]结合第二方面的第一种可能的实现方式,在第二种可能的实现方式中,分配模块具体用于检测所述每个extent中是否有第一 extent的内部离散值在设定的阈值区间范围内,如果有,则确定所述第一 extent为所述目标extent ;否则,检测所述每个extent中是否有第二 extent的内部离散值大于所述阈值区间的最大值,如果有,则确定所述第二extent为所述目标extent ;如果没有第一 extent和第二 extent,则检测所述每个extent中是否有第三extent的内部离散值大于所述阈值区间的最小值,如果有,则确定所述第三extent为所述目标extent。
[0028]结合第二方面的第一种或第二种可能的实现方式,在第三种可能的实现方式中,分配模块具体用于根据每个extent内空闲grain总空间大小与extent内部空闲grain个数的比值;或者每个extent内部空闲grain的数量绝对值确定所述每个extent的内部离散值。
[0029]第三方面,提供一种存储设备,该存储设备包括:
[0030]磁盘;
[0031]处理器,用于在接收到从所述磁盘中分配小块空间grain的请求时,确定所述磁盘的空闲空间中没有存储数据的完整大块空间extent的数量;若所述完整大块空间extent的数量不小于设定阈值,则从所述完整的大块空间extent中分配grain给所述请求;否则,从所述空闲空间中的碎片化空间中分配grain给所述请求。
[0032]结合第三方面,在第一种可能的实现方式中,所述处理器具体用于确定每个extent的内部离散值;其中,该内部离散值用于表示每个extent内部空闲空间的碎片化程度;根据所述每个extent的内部离散值确定目标extent,从该目标extent的碎片化空间中分配grain给所述请求。
[0033]上述技术方案中的一个或两个,至少具有如下技术效果:
[0034]本发明实施例所提供的方案,根据磁盘空间中完整extent的数量决定为空间分配请求分配完整的extent还是碎片化的空间,在空闲空间多时(即完整extent的数量足够分配时),分配完整的extent可以确保分配空间连续,读写性能较好;如果磁盘空间在使用一段时间后,碎片化的空间比较多(即完整extent的数量不足够分配时),则可以选择使用碎片空间,从而能够有效降低分配器需要管理的碎片空间数量。所以利用该实施例所提供的方法能够达到在空闲空间较多时,优先使用连续空间,空闲空间少时,则使用碎片化的空间,则在确保读写性能的同时,兼顾到磁盘的读写均衡。
【附图说明】
[0035]图1为现有技术中具体场景中extent的使用情况示意图;
[0036]图2为本发明实施例提供的一种磁盘空间分配方法的流程示意图;
[0037]图3为本发明实施例中根据extent内部的碎片化程度进行磁盘空间分配的流程示意图;
[0038]图4为具体场景中extent的使用情况示意图;
[0039]图5为本发明实施例提供的一种磁盘空间分配装置的结构示意图;
[0040]图6为本发明实施例提供的另外一种存储设备的结构示意图。
【具体实施方式】
[0041]为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0042]下面结合附图对本申请实施例技术方案的主要实现原理、【具体实施方式】及其对应能够达到的有益效果进行详
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1