数据存储空间的管理方法及系统.pdf

上传人:00****42 文档编号:1494413 上传时间:2018-06-18 格式:PDF 页数:29 大小:2.37MB
返回 下载 相关 举报
摘要
申请专利号:

CN201210430681.6

申请日:

2012.11.01

公开号:

CN102981964A

公开日:

2013.03.20

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 12/02申请日:20121101|||公开

IPC分类号:

G06F12/02

主分类号:

G06F12/02

申请人:

华为技术有限公司

发明人:

张雷; 熊四兵

地址:

518129 广东省深圳市龙岗区坂田华为总部办公楼

优先权:

专利代理机构:

广州三环专利代理有限公司 44202

代理人:

郝传鑫;熊永强

PDF下载: PDF下载
内容摘要

本发明实施例公开了数据存储空间的管理方法及系统,其中所述方法可包括:当有第一数据需要存储时,根据各空闲块桶与空闲块大小的对应关系,判断是否存在第一空闲块桶;当存在所述第一空闲块桶时,选择一个所述第一空闲块桶,根据所述选择的所述第一空闲块桶中记录的所述第一空闲块的位置及数量,查找所述第一空闲块,并将所述第一数据存入任一个查找到的所述第一空闲块中,以及将用于存储所述第一数据的所述第一空闲块的记录在所述第一空闲块桶中删除;当不存在所述第一空闲块桶时,将所述第一数据存储在硬盘文件的末尾。实施本发明实施例,可提高存储空间管理的效率,并避免系统产生大量的磁盘碎片。

权利要求书

权利要求书一种数据存储空间的管理方法,其特征在于,包括:
当有第一数据需要存储时,根据各空闲块桶与空闲块大小的对应关系,判断是否存在第一空闲块桶,所述各空闲块桶中分别记录了不同的空闲块的大小、位置及数量,所述第一空闲块桶中记录了第一空闲块的大小、位置及数量,所述第一空闲块的大小大于或等于所述第一数据的大小;所述各空闲块桶与空闲块大小的对应关系为各空闲块桶中记录的空闲块的大小;
当存在所述第一空闲块桶时,选择一个所述第一空闲块桶,根据所述选择的所述第一空闲块桶中记录的所述第一空闲块的位置及数量,查找所述第一空闲块,并将所述第一数据存入任一个查找到的所述第一空闲块中,以及将用于存储所述第一数据的所述第一空闲块的记录在所述第一空闲块桶中删除;
当不存在所述第一空闲块桶时,将所述第一数据存储在硬盘文件的末尾。
如权利要求1所述的数据存储空间的管理方法,其特征在于,所述根据各空闲块桶与空闲块大小的对应关系,判断所述空闲块桶中是否存在第一空闲块桶,包括:
根据各空闲块桶与空闲块大小的对应关系,判断是否存在记录的空闲块的大小与所述第一数据的大小相等的空闲块桶,如果存在,则将记录的空闲块的大小与所述第一数据大小相等的空闲块桶作为所述第一空闲块桶;
如果不存在记录的空闲块的大小与所述第一数据大小相等的空闲块桶,判断是否存在记录的空闲块的大小大于所述第一数据大小的空闲块桶,如果存在,则将所述记录的空闲块的大小大于所述第一数据大小的空闲块桶作为所述第一空闲块桶。
如权利要求2所述的数据存储空间的管理方法,其特征在于,当将所述记录的空闲块的大小大于所述第一空闲块的大小的空闲块桶作为所述第一空闲块桶,则将所述第一数据存入任一个查找到的所述第一空闲块中之后,以及将用于存储所述第一数据的所述第一空闲块的记录在所述第一空闲块桶中删除之前,还包括:
将用于存储所述第一数据的所述第一空闲块中剩余的空闲部分作为新的空闲块,记录所述新的空闲块大小对应的空闲块桶中。
如权利要求1‑3中任一项所述的数据存储空间的管理方法,其特征在于,还包括:
当有第二数据被删除时,将用于存储所述第二数据的存储空间作为空闲块记录到记录的空闲块的大小与该存储空间大小相等的空闲块桶中。
如权利要求4所述的数据存储空间的管理方法,其特征在于,在将用于存储所述第二数据的存储空间作为空闲块记录到记录的空闲块的大小与该存储空间大小相等的空闲块桶中之后,还包括:
判断所述被记录的空闲块之前和/或之后是否有空闲块,当所述被记录的空闲块之前和/或之后有空闲块,则将所述记录的空闲块和所述记录的空闲块之前和/或之后的空闲块进行逻辑合并,并将合并后的空闲块记录到记录的空闲块的大小与所述合并后的空闲块大小相等的空闲块桶中。
如权利要求4所述的数据存储空间的管理方法,其特征在于,
当不存在记录的空闲块的大小与所述存储空间的大小相等的空闲块桶时,生成一空闲块桶用于记录所述存储空间对应的空闲块的大小、位置及数量,并建立所述生成的空闲块桶与所述存储空间对应的空闲块的对应关系。
如权利要求1‑6中任一项所述的数据存储空间的管理方法,其特征在于,所述位置为包括所述第一空闲块的分片在硬盘文件中的位置,所述数量为所述第一空闲块分别在包括所述第一空闲块的分片中的数量;
则所述根据所述选择的所述第一空闲块桶中记录的所述第一空闲块的位置及数量,找到一个所述第一空闲块,包括:
根据所述选择的所述第一空闲块桶中记录的所述第一空闲块的位置及数量,定位一个包含所述第一空闲块的分片;
在所述定位的分片内查找所述第一空闲块,直到找到一个或多个所述第一空闲块。
如权利要求7所述的数据存储空间的管理方法,其特征在于,所述在所述定位的分片内查找所述第一空闲块,直到找到一个或多个所述第一空闲块,包括:
根据所述定位的分片的位图信息查找所述分片中未被数据占用且大小与所述第一空闲块的大小相等的空闲块,所述位图信息指示了所述分片中的空闲块是否被数据占用。
如权利要求8所述的数据存储空间的管理方法,其特征在于,所述空闲块的大小为基本块的大小的整数倍,所述基本块为所述硬盘的存储空间的存储单元;
所述位图信息中的每一位用于指示一个基本块是否被数据占用,则所述位图信息通过至少一个位指示所述分片中的空闲块是否被数据占用,所述位图信息存储在硬盘中。
如权利要求9所述的数据存储空间的管理方法,其特征在于,所述位图信息的每一位取值为第一数值或第二数值,所述第一数值指示基本块未被数据占用,所述第二数值指示基本块被数据占用。
一种数据存储空间的管理系统,其特征在于,包括:
第一判断模块,用于当有第一数据需要存储时,根据各空闲块桶与空闲块大小的对应关系,判断是否存在第一空闲块桶,所述各空闲块桶中记录了不同的空闲块的大小、位置及数量,所述第一空闲块桶中记录了第一空闲块的大小、位置及数量,所述第一空闲块的大小大于或等于所述第一数据的大小;所述各空闲块桶与空闲块大小的对应关系为各空闲块桶中记录的空闲块的大小;
第一存储处理模块,用于当经所述第一判断模块的判断确定存在所述第一空闲块桶时,选择一个所述第一空闲块桶,根据所述选择的所述第一空闲块桶中记录的所述第一空闲块的位置及数量,查找所述第一空闲块,并将所述第一数据存入任一个查找到的所述第一空闲块中,以及将用于存储所述第一数据的所述第一空闲块的记录在所述第一空闲块桶中删除;
第二存储处理模块,用于当经所述第一判断模块的判断确定不存在所述第一空闲块桶时,将所述第一数据存储在硬盘文件的末尾。
如权利要求11所述的数据存储空间的管理系统,其特征在于,所述第一判断模块进一步包括:
第二判断模块,用于根据各空闲块与空闲块大小的对应关系,判断是否存在记录的空闲块的大小与所述第一数据的大小相等的空闲块桶,如果存在,则将记录的空闲块的大小与所述第一数据的大小相等的空闲块桶作为所述第一空闲块桶;
第三判断模块,用于当经所述第二判断模块的判断确定不存在记录的空闲块的大小与所述第一数据的大小相等的空闲块桶,判断是否存在记录的空闲块的大小大于所述第一数据的大小的空闲块桶,如果存在,则将所述记录的空闲块的大小大于所述第一数据的大小的空闲块桶作为所述第一空闲块桶。
如权利要求12所述的数据存储空间的管理系统,其特征在于,当所述记录的空闲块的大小大于所述第一空闲块的大小的空闲块桶作为所述第一空闲块桶,该管理系统还包括:
第三存储处理模块,用于当所述第一存储处理模块将所述第一数据存入任一个查找到的所述第一空闲块中之后,以及当所述第一存储处理模块将用于存储所述第一数据的所述第一空闲块的记录在所述第一空闲块桶中删除之前,将用于存储所述第一数据的所述第一空闲块中剩余的空闲部分作为新的空闲块,记录所述新的空闲块大小对应的空闲块桶中。
如权利要求11‑13中任一项所述的数据存储空间的管理系统,其特征在于,还包括:
第一删除处理模块,用于当有第二数据被删除时,将用于存储所述第二数据的存储空间作为空闲块记录到记录的空闲块的大小与该存储空间大小相等的空闲块桶中。
如权利要求14所述的数据存储空间的管理系统,其特征在于,还包括:
第四判断模块,用于当所述第一删除处理模块在将用于存储所述第二数据的存储空间作为空闲块记录到记录的空闲块的大小与该存储空间大小相等的空闲块桶中之后,判断所述被记录的空闲块之前和/或之后是否有空闲块;
第二删除处理模块,用于当经所述第四判断模块的判断确定所述被记录的空闲块之前和/或之后有空闲块,则将所述记录的空闲块和所述记录的空闲块之前和/或之后的空闲块进行逻辑合并,并将合并后的空闲块记录到记录的空闲块的大小与所述合并后的空闲块大小相等的空闲块桶中。
如权利要求14所述的数据存储空间的管理系统,其特征在于,所述第一删除处理模块还用于当不存在记录的空闲块的大小与所述存储空间的大小相等的空闲块桶时,生成一空闲块桶用于记录所述存储空间对应的空闲块的大小、位置及数量,并建立所述生成的空闲块桶与所述存储空间对应的空闲块的对应关系。
如权利要求11‑16中任一项所述的数据存储空间的管理系统,其特征在于,所述位置为包括所述第一空闲块的分片在硬盘文件中的位置,所述数量为所述第一空闲块分别在包括所述第一空闲块的分片中的数量;
则所述第一存储处理模块包括:
选择模块,用于选择一个所述第一空闲块桶;
分片定位模块,用于根据所述选择模块选择的所述第一空闲块桶中记录的所述第一空闲块的位置及数量,定位一个包含所述第一空闲块的分片;
空闲块查找模块,用于在所述分片定位模块定位的分片内查找所述第一空闲块,直到找到一个或多个所述第一空闲块;
存储模块,用于将所述第一数据存入任一个查找到的所述第一空闲块中;
删除模块,用于将用于存储所述第一数据的所述第一空闲块的记录在所述第一空闲块桶中删除。
如权利要求17所述的数据存储空间的管理系统,其特征在于,所述空闲块查找模块具体用于根据所述定位的分片的位图信息查找所述分片中未被数据占用且大小与所述第一空闲块的大小相等的空闲块,所述位图信息指示了所述分片中的空闲块是否被数据占用。
如权利要求18所述的数据存储空间的管理系统,其特征在于,所述空闲块的大小为基本块的大小的整数倍,所述基本块为所述硬盘的存储空间的存储单元;
所述位图信息中的每一位用于指示一个基本块是否被数据占用,则所述位图信息通过至少一个位指示所述分片中的空闲块是否被数据占用,所述位图信息存储在硬盘中。
如权利要求19所述的数据存储空间的管理系统,其特征在于,所述位图信息的每一位取值为第一数值或第二数值,所述第一数值指示基本块未被数据占用,所述第二数值指示基本块被数据占用。
一种数据存储空间的管理系统,其特征在于,包括存储器和处理器,所述处理器执行如下步骤:
当有第一数据需要存储时,根据各空闲块桶与空闲块大小的对应关系,判断是否存在第一空闲块桶,所述各空闲块桶中分别记录了不同的空闲块的大小、位置及数量,所述第一空闲块桶中记录了第一空闲块的大小、位置及数量,所述第一空闲块的大小大于或等于所述第一数据的大小;所述各空闲块桶与空闲块大小的对应关系为各空闲块桶中记录的空闲块的大小;
当存在所述第一空闲块桶时,选择一个所述第一空闲块桶,根据所述选择的所述第一空闲块桶中记录的所述第一空闲块的位置及数量,查找所述第一空闲块,并将所述第一数据存入任一个查找到的所述第一空闲块中,以及将用于存储所述第一数据的所述第一空闲块的记录在所述第一空闲块桶中删除;
当不存在所述第一空闲块桶时,将所述第一数据存储在硬盘文件的末尾。
如权利要求21所述的数据存储空间的管理系统,其特征在于,所述处理器执行所述根据各空闲块桶与空闲块大小的对应关系,判断所述空闲块桶中是否存在第一空闲块桶的步骤时,具体执行如下步骤:
根据各空闲块桶与空闲块大小的对应关系,判断是否存在记录的空闲块的大小与所述第一数据的大小相等的空闲块桶,如果存在,则将记录的空闲块的大小与所述第一数据大小相等的空闲块桶作为所述第一空闲块桶;
如果不存在记录的空闲块的大小与所述第一数据大小相等的空闲块桶,判断是否存在记录的空闲块的大小大于所述第一数据大小的空闲块桶,如果存在,则将所述记录的空闲块的大小大于所述第一数据大小的空闲块桶作为所述第一空闲块桶。
如权利要求22所述的数据存储空间的管理系统,其特征在于,当将所述记录的空闲块的大小大于所述第一空闲块的大小的空闲块桶作为所述第一空闲块桶,则所述处理器在将所述第一数据存入任一个查找到的所述第一空闲块中之后,以及将用于存储所述第一数据的所述第一空闲块的记录在所述第一空闲块桶中删除之前,还执行如下步骤:
将用于存储诉讼第一数据的所述第一空闲块中剩余的空闲部分作为新的空闲块,记录所述新的空闲块大小对应的空闲块桶中。
如权利要求21所述的数据存储空间的管理系统,其特征在于,所述处理器还执行如下步骤:
当有第二数据被删除时,将用于存储所述第二数据的存储空间作为空闲块记录到记录的空闲块的大小与该存储空间大小相等的空闲块桶中。
如权利要求24所述的数据存储空间的管理系统,其特征在于,所述处理器在将用于存储所述第二数据的存储空间作为空闲块记录到记录的空闲块的大小与该存储空间大小相等的空闲块桶中之后,还执行如下步骤:
判断所述被记录的空闲块之前和/或之后是否有空闲块,当所述被记录的空闲块之前和/或之后有空闲块,则将所述记录的空闲块和所述记录的空闲块之前和/或之后的空闲块进行逻辑合并,并将合并后的空闲块记录到记录的空闲块的大小与所述合并后的空闲块大小相等的空闲块桶中。
如权利要求24所述的数据存储空间的管理系统,其特征在于,
当不存在记录的空闲块的大小与所述存储空间的大小相等的空闲块桶时,所述处理器还执行如下步骤:
生成一空闲块桶用于记录所述存储空间对应的空闲块的大小、位置及数量,并建立所述生成的空闲块桶与所述存储空间对应的空闲块的对应关系。
如权利要求21‑26中任一项所述的数据存储空间的管理系统,其特征在于,所述位置为所述第一空闲块分别在硬盘文件的各分片中的位置,所述数量为所述第一空闲块分别在硬盘文件的各分片中的数量;
则所述处理器执行根据所述选择的所述第一空闲块桶中记录的所述第一空闲块的位置及数量,找到一个所述第一空闲块时,具体执行如下步骤:
根据所述选择的所述第一空闲块桶中记录的所述第一空闲块的位置及数量,定位一个包含所述第一空闲块的分片;
在所述定位的分片内查找所述第一空闲块,直到找到一个或多个所述第一空闲块。
如权利要求27所述的数据存储空间的管理系统,其特征在于,所述处理器在所述定位的分片内查找所述第一空闲块,直到找到一个或多个所述第一空闲块时,具体执行如下步骤:
根据所述定位的分片的位图信息查找所述分片中未被数据占用且大小与所述第一空闲块的大小相等的空闲块,所述位图信息指示了所述分片中的空闲块是否被数据占用。
如权利要求28所述的数据存储空间的管理系统,其特征在于,所述空闲块的大小为基本块的大小的整数倍,所述基本块为所述硬盘的存储空间的存储单元;
所述位图信息中的每一位用于指示一个基本块是否被数据占用,则所述位图信息通过至少一个位指示所述分片中的空闲块是否被数据占用,所述位图信息存储在硬盘中。
如权利要求29所述的数据存储空间的管理系统,其特征在于,所述位图信息的每一位取值为第一数值或第二数值,所述第一数值指示基本块未被数据占用,所述第二数值指示基本块被数据占用。

说明书

说明书数据存储空间的管理方法及系统
技术领域
本发明涉及分布式存储领域,尤其涉及分布式存储领域中数据存储空间的管理方法及系统。
背景技术
当前,在key‑value系统中,其数据库(DB,Data Base)的空间管理方案一般采用一个空闲块数组的方式进行。其具体方案如下:将整个存储空间按照一定的大小(如4K)划分基本块,所有存储数据的大小都是该基本块的整数倍。同时初始化一个空闲块数组用来记录硬盘上的空闲块(硬盘上未被数据占用的空间),该空闲块数组是一个排序数组,按照其管理的空闲块的大小进行排序,如空闲块数组中记录了4K,8K,24K大小的空闲块,则4K的放在数组的第一个元素,24K的空闲块放在数组的第三个元素。当有数据删除时,DB释放该数据的存储空间,并将该存储空间需记录在空闲块数组中,同时空闲块数组会根据其内部的空闲块的大小顺序重新进行排序(如图1a所示)。当有新的数据要存储时,系统首先遍历空闲块数组,查找可用的空闲块,如果找到,则将数据存储在该空闲块中,同时在空闲块数组中删除该空闲块记录。该空闲块后续的数组元素都前移一个位置(如图1b所示)。如果在空闲块数组中没有找到合适的空闲块(即没有的大小与数据相等的空闲块时),则在DB文件末尾进行追加。
上述空闲块数组虽然可管理硬盘上的空闲块,但是其存在如下缺陷:
由于空闲块以大小以排序的数组形式存放,因此,在分配空闲块(1b)和回收空闲块(1a)时都需要使用移动操作来完成数组元素的移动;此操作在性能较差,并且在分配空闲块时,需要首先遍历空闲块数组效率低下;
申请较大空间找不到合适的空闲块时,而不能利用已有的多个空闲块而是通过在DB文件末尾追加,这样造成空闲块空间的浪费,并且容易使硬盘产生碎片。
发明内容
本发明实施例提供数据存储空间的管理方法及系统,可提高存储空间管理的效率,并避免系统产生大量的磁盘碎片。
本发明第一方面提供一种数据存储空间的管理方法,其可包括:
当有第一数据需要存储时,根据各空闲块桶与空闲块大小的对应关系,判断是否存在第一空闲块桶,所述各空闲块桶中分别记录了不同的空闲块的大小、位置及数量,所述第一空闲块桶中记录了第一空闲块的大小、位置及数量,所述第一空闲块的大小大于或等于所述第一数据的大小;所述各空闲块桶与空闲块大小的对应关系为各空闲块桶中记录的空闲块的大小;
当存在所述第一空闲块桶时,选择一个所述第一空闲块桶,根据所述选择的所述第一空闲块桶中记录的所述第一空闲块的位置及数量,查找所述第一空闲块,并将所述第一数据存入任一个查找到的所述第一空闲块中,以及将用于存储所述第一数据的所述第一空闲块的记录在所述第一空闲块桶中删除;
当不存在所述第一空闲块桶时,将所述第一数据存储在硬盘文件的末尾。
在第一种可能的实现方式中,所述根据各空闲块桶与空闲块大小的对应关系,判断所述空闲块桶中是否存在第一空闲块桶,可包括:
根据各空闲块桶与空闲块大小的对应关系,判断是否存在记录的空闲块的大小与所述第一数据的大小相等的空闲块桶,如果存在,则将记录的空闲块的大小与所述第一数据大小相等的空闲块桶作为所述第一空闲块桶;
如果不存在记录的空闲块的大小与所述第一数据大小相等的空闲块桶,判断是否存在记录的空闲块的大小大于所述第一数据大小的空闲块桶,如果存在,则将所述记录的空闲块的大小大于所述第一数据大小的空闲块桶作为所述第一空闲块桶。
结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,当将所述记录的空闲块的大小大于所述第一空闲块的大小的空闲块桶作为所述第一空闲块桶,则将所述第一数据存入任一个查找到的所述第一空闲块中之后,以及将用于存储所述第一数据的所述第一空闲块的记录在所述第一空闲块桶中删除之前,还可包括:
将用于存储所述第一数据的所述第一空闲块中剩余的空闲部分作为新的空闲块,记录所述新的空闲块大小对应的空闲块桶中。
结合第一方面,或第一方面的第一种可能的实现方式,或第一方面的第二种可能的实现方式,在第三种可能的实现方式中,本发明的数据存储空间的管理方法还可包括:
当有第二数据被删除时,将用于存储所述第二数据的存储空间作为空闲块记录到记录的空闲块的大小与该存储空间大小相等的空闲块桶中。
结合第一方面的第三种可能的实现方式,在第四种可能的实现方式中,在将用于存储所述第二数据的存储空间作为空闲块记录到记录的空闲块的大小与该存储空间大小相等的空闲块桶中之后,还包括:
判断所述被记录的空闲块之前和/或之后是否有空闲块,当所述被记录的空闲块之前和/或之后有空闲块,则将所述记录的空闲块和所述记录的空闲块之前和/或之后的空闲块进行逻辑合并,并将合并后的空闲块记录到记录的空闲块的大小与所述合并后的空闲块大小相等的空闲块桶中。
结合第一方面的第三种可能的实现方式,在第五种可能的实现方式中,当不存在记录的空闲块的大小与所述存储空间的大小相等的空闲块桶时,生成一空闲块桶用于记录所述存储空间对应的空闲块的大小、位置及数量,并建立所述生成的空闲块桶与所述存储空间对应的空闲块的对应关系。
结合第一方面,或第一方面的第一种可能的实现方式,或第一方面的第二种可能的实现方式,或第一方面的第三种可能的实现方式,或第一方面的第四种可能的实现方式,或第一方面的第五种可能的实现方式,在第六种可能的实现方式中,所述位置为包括所述第一空闲块的分片在硬盘文件中的位置,所述数量为所述第一空闲块分别在包括所述第一空闲块的分片中的数量;
则所述根据所述选择的所述第一空闲块桶中记录的所述第一空闲块的位置及数量,找到一个所述第一空闲块,包括:
根据所述选择的所述第一空闲块桶中记录的所述第一空闲块的位置及数量,定位一个包含所述第一空闲块的分片;
在所述定位的分片内查找所述第一空闲块,直到找到一个或多个所述第一空闲块。
结合第一方面的第六种可能的实现方式,在第七种可能的实现方式中,所述在所述定位的分片内查找所述第一空闲块,直到找到一个或多个所述第一空闲块,包括:
根据所述定位的分片的位图信息查找所述分片中未被数据占用且大小与所述第一空闲块的大小相等的空闲块,所述位图信息指示了所述分片中的空闲块是否被数据占用。
结合第一方面的第七种可能的实现方式,在第八种可能的实现方式中,所述空闲块的大小为基本块的大小的整数倍,所述基本块为所述硬盘的存储空间的存储单元;
所述位图信息中的每一位用于指示一个基本块是否被数据占用,则所述位图信息通过至少一个位指示所述分片中的空闲块是否被数据占用,所述位图信息存储在硬盘中。
结合第一方面的第八种可能的实现方式,在第九种可能的实现方式中,所述位图信息的每一位取值为第一数值或第二数值,所述第一数值指示基本块未被数据占用,所述第二数值指示基本块被数据占用。
本发明第二方面提供一种数据存储空间的管理系统,其可包括:
第一判断模块,用于当有第一数据需要存储时,根据各空闲块桶与空闲块大小的对应关系,判断是否存在第一空闲块桶,所述各空闲块桶中记录了不同的空闲块的大小、位置及数量,所述第一空闲块桶中记录了第一空闲块的大小、位置及数量,所述第一空闲块的大小大于或等于所述第一数据的大小;所述各空闲块桶与空闲块大小的对应关系为各空闲块桶中记录的空闲块的大小;
第一存储处理模块,用于当经所述第一判断模块的判断确定存在所述第一空闲块桶时,选择一个所述第一空闲块桶,根据所述选择的所述第一空闲块桶中记录的所述第一空闲块的位置及数量,查找所述第一空闲块,并将所述第一数据存入任一个查找到的所述第一空闲块中,以及将用于存储所述第一数据的所述第一空闲块的记录在所述第一空闲块桶中删除;
第二存储处理模块,用于当经所述第一判断模块的判断确定不存在所述第一空闲块桶时,将所述第一数据存储在硬盘文件的末尾。
在第一种可能的实现方式中,所述第一判断模块进一步包括:
第二判断模块,用于根据各空闲块与空闲块大小的对应关系,判断是否存在记录的空闲块的大小与所述第一数据的大小相等的空闲块桶,如果存在,则将记录的空闲块的大小与所述第一数据的大小相等的空闲块桶作为所述第一空闲块桶;
第三判断模块,用于当经所述第二判断模块的判断确定不存在记录的空闲块的大小与所述第一数据的大小相等的空闲块桶,判断是否存在记录的空闲块的大小大于所述第一数据的大小的空闲块桶,如果存在,则将所述记录的空闲块的大小大于所述第一数据的大小的空闲块桶作为所述第一空闲块桶。
结合第二方面的第一种可能的实现方式,在第二种可能的实现方式中,当所述记录的空闲块的大小大于所述第一空闲块的大小的空闲块桶作为所述第一空闲块桶,该管理系统还包括:
第三存储处理模块,用于当所述第一存储处理模块将所述第一数据存入任一个查找到的所述第一空闲块中之后,以及当所述第一存储处理模块将用于存储所述第一数据的所述第一空闲块的记录在所述第一空闲块桶中删除之前,将用于存储所述第一数据的所述第一空闲块中剩余的空闲部分作为新的空闲块,记录所述新的空闲块大小对应的空闲块桶中。
结合第二方面,或第二方面的第一种可能的实现方式,或第二方面的第二种可能的实现方式,在第三种可能的实现方式中,本发明的数据存储空间的管理系统还可包括:
第一删除处理模块,用于当有第二数据被删除时,将用于存储所述第二数据的存储空间作为空闲块记录到记录的空闲块的大小与该存储空间大小相等的空闲块桶中。
结合第二方面的第三种可能的实现方式,在第四种可能的实现方式中,本发明的数据存储空间的管理系统还包括:
第四判断模块,用于当所述第一删除处理模块在将用于存储所述第二数据的存储空间作为空闲块记录到记录的空闲块的大小与该存储空间大小相等的空闲块桶中之后,判断所述被记录的空闲块之前和/或之后是否有空闲块;
第二删除处理模块,用于当经所述第四判断模块的判断确定所述被记录的空闲块之前和/或之后有空闲块,则将所述记录的空闲块和所述记录的空闲块之前和/或之后的空闲块进行逻辑合并,并将合并后的空闲块记录到记录的空闲块的大小与所述合并后的空闲块大小相等的空闲块桶中。
结合第二方面的第三种可能的实现方式,在第五种可能的实现方式中,所述第一删除处理模块还用于当不存在记录的空闲块的大小与所述存储空间的大小相等的空闲块桶时,生成一空闲块桶用于记录所述存储空间对应的空闲块的大小、位置及数量,并建立所述生成的空闲块桶与所述存储空间对应的空闲块的对应关系。
结合第二方面,或第二方面的第一种可能的实现方式,或第二方面的第二种可能的实现方式,或第二方面的第三种可能的实现方式,或第二方面的第四种可能的实现方式,或第二方面的第五种可能的实现方式,在第六种可能的实现方式中,所述位置为包括所述第一空闲块的分片在硬盘文件中的位置,所述数量为所述第一空闲块分别在包括所述第一空闲块的分片中的数量;
则所述第一存储处理模块包括:
选择模块,用于选择一个所述第一空闲块桶;
分片定位模块,用于根据所述选择模块选择的所述第一空闲块桶中记录的所述第一空闲块的位置及数量,定位一个包含所述第一空闲块的分片;
空闲块查找模块,用于在所述分片定位模块定位的分片内查找所述第一空闲块,直到找到一个或多个所述第一空闲块;
存储模块,用于将所述第一数据存入任一个查找到的所述第一空闲块中;
删除模块,用于将用于存储所述第一数据的所述第一空闲块的记录在所述第一空闲块桶中删除。
结合第二方面的第六种可能的实现方式,在第七种可能的实现方式中,所述空闲块查找模块具体用于根据所述定位的分片的位图信息查找所述分片中未被数据占用且大小与所述第一空闲块的大小相等的空闲块,所述位图信息指示了所述分片中的空闲块是否被数据占用。
结合第二方面的第七种可能的实现方式,在第八种可能的实现方式中,所述空闲块的大小为基本块的大小的整数倍,所述基本块为所述硬盘的存储空间的存储单元;
所述位图信息中的每一位用于指示一个基本块是否被数据占用,则所述位图信息通过至少一个位指示所述分片中的空闲块是否被数据占用,所述位图信息存储在硬盘中。
结合第二方面的第八种可能的实现方式,在第九种可能的实现方式中,所述位图信息的每一位取值为第一数值或第二数值,所述第一数值指示基本块未被数据占用,所述第二数值指示基本块被数据占用。
本发明第三方面提供一种数据存储空间的管理系统,其包括存储器和处理器,所述处理器执行如下步骤:
当有第一数据需要存储时,根据各空闲块桶与空闲块大小的对应关系,判断是否存在第一空闲块桶,所述各空闲块桶中分别记录了不同的空闲块的大小、位置及数量,所述第一空闲块桶中记录了第一空闲块的大小、位置及数量,所述第一空闲块的大小大于或等于所述第一数据的大小;所述各空闲块桶与空闲块大小的对应关系为各空闲块桶中记录的空闲块的大小;
当存在所述第一空闲块桶时,选择一个所述第一空闲块桶,根据所述选择的所述第一空闲块桶中记录的所述第一空闲块的位置及数量,查找所述第一空闲块,并将所述第一数据存入任一个查找到的所述第一空闲块中,以及将用于存储所述第一数据的所述第一空闲块的记录在所述第一空闲块桶中删除;
当不存在所述第一空闲块桶时,将所述第一数据存储在硬盘文件的末尾。
在第一种可能的实现方式中,所述处理器执行所述根据各空闲块桶与空闲块大小的对应关系,判断所述空闲块桶中是否存在第一空闲块桶的步骤时,具体执行如下步骤:
根据各空闲块桶与空闲块大小的对应关系,判断是否存在记录的空闲块的大小与所述第一数据的大小相等的空闲块桶,如果存在,则将记录的空闲块的大小与所述第一数据大小相等的空闲块桶作为所述第一空闲块桶;
如果不存在记录的空闲块的大小与所述第一数据大小相等的空闲块桶,判断是否存在记录的空闲块的大小大于所述第一数据大小的空闲块桶,如果存在,则将所述记录的空闲块的大小大于所述第一数据大小的空闲块桶作为所述第一空闲块桶。
结合第三方面的第一种可能的实现方式,在第二种可能的实现方式中,当将所述记录的空闲块的大小大于所述第一空闲块的大小的空闲块桶作为所述第一空闲块桶,则所述处理器在将所述第一数据存入任一个查找到的所述第一空闲块中之后,以及将用于存储所述第一数据的所述第一空闲块的记录在所述第一空闲块桶中删除之前,还执行如下步骤:
将用于存储诉讼第一数据的所述第一空闲块中剩余的空闲部分作为新的空闲块,记录所述新的空闲块大小对应的空闲块桶中。
结合第三方面,或第三方面的第一种可能的实现方式,或第三方面的第二种可能的实现方式,在第三种可能的实现方式中,所述处理器还执行如下步骤:
当有第二数据被删除时,将用于存储所述第二数据的存储空间作为空闲块记录到记录的空闲块的大小与该存储空间大小相等的空闲块桶中。
结合第三方面的第三种可能的实现方式,在第四种可能的实现方式中,所述处理器在将用于存储所述第二数据的存储空间作为空闲块记录到记录的空闲块的大小与该存储空间大小相等的空闲块桶中之后,还执行如下步骤:
判断所述被记录的空闲块之前和/或之后是否有空闲块,当所述被记录的空闲块之前和/或之后有空闲块,则将所述记录的空闲块和所述记录的空闲块之前和/或之后的空闲块进行逻辑合并,并将合并后的空闲块记录到记录的空闲块的大小与所述合并后的空闲块大小相等的空闲块桶中。
结合第三方面的第三种可能的实现方式,在第五种可能的实现方式中,当不存在记录的空闲块的大小与所述存储空间的大小相等的空闲块桶时,所述处理器还执行如下步骤:
生成一空闲块桶用于记录所述存储空间对应的空闲块的大小、位置及数量,并建立所述生成的空闲块桶与所述存储空间对应的空闲块的对应关系。
结合第三方面,或第三方面的第一种可能的实现方式,或第三方面的第二种可能的实现方式,或第三方面的第三种可能的实现方式,或第三方面的第四种可能的实现方式,或第三方面的第五种可能的实现方式,在第六种可能的实现方式中,所述位置为所述第一空闲块分别在硬盘文件的各分片中的位置,所述数量为所述第一空闲块分别在硬盘文件的各分片中的数量;
则所述处理器执行根据所述选择的所述第一空闲块桶中记录的所述第一空闲块的位置及数量,找到一个所述第一空闲块时,具体执行如下步骤:
根据所述选择的所述第一空闲块桶中记录的所述第一空闲块的位置及数量,定位一个包含所述第一空闲块的分片;
在所述定位的分片内查找所述第一空闲块,直到找到一个或多个所述第一空闲块。
结合第三方面的第六种可能的实现方式,在第七种可能的实现方式中,所述处理器在所述定位的分片内查找所述第一空闲块,直到找到一个或多个所述第一空闲块时,具体执行如下步骤:
根据所述定位的分片的位图信息查找所述分片中未被数据占用且大小与所述第一空闲块的大小相等的空闲块,所述位图信息指示了所述分片中的空闲块是否被数据占用。
结合第三方面的第七种可能的实现方式,在第八种可能的实现方式中,所述空闲块的大小为基本块的大小的整数倍,所述基本块为所述硬盘的存储空间的存储单元;
所述位图信息中的每一位用于指示一个基本块是否被数据占用,则所述位图信息通过至少一个位指示所述分片中的空闲块是否被数据占用,所述位图信息存储在硬盘中。
结合第三方面的第八种可能的实现方式,在第九种可能的实现方式中,所述位图信息的每一位取值为第一数值或第二数值,所述第一数值指示基本块未被数据占用,所述第二数值指示基本块被数据占用。
在本发明的一些可行的实施方式中,当有第一数据需要存储时,根据各空闲块桶与空闲块大小的对应关系,判断是否存在第一空闲块桶,所述各空闲块桶中分别记录了不同的空闲块的大小、位置及数量,所述第一空闲块桶中记录了第一空闲块的大小、位置及数量,所述第一空闲块的大小大于或等于所述第一数据的大小;所述各空闲块桶与空闲块大小的对应关系为各空闲块桶中记录的空闲块的大小;当存在所述第一空闲块桶时,选择一个所述第一空闲块桶,根据所述选择的所述第一空闲块桶中记录的所述第一空闲块的位置及数量,查找所述第一空闲块,并将所述第一数据存入任一个查找到的所述第一空闲块中,以及将用于存储所述第一数据的所述第一空闲块的记录在所述第一空闲块桶中删除;当不存在所述第一空闲块桶时,将所述第一数据存储在硬盘文件的末尾。由此可见,本发明的实施例通过建立空闲块桶与空闲块大小的对应关系,使得在进行数据存储时,不需要遍历空闲块桶,而直接到对应的空闲块桶获取空闲块的位置,以及不需要改变空闲块桶中的元素的位置(各空闲块桶不需要前移或者后移),由此提高了存储空间的管理效率,并且,在查找空闲块时,本发明实施例可提供大小大于或等于数据的大小的空闲块给数据,只有当系统中没有可用于存储数据的空闲块时,才将数据存储在硬盘文件的末尾,由此可充分利用磁盘的空闲空间,减少了磁盘碎片的产生。另外,本发明实施例,在回收空闲块时,可判断所述被记录的空闲块之前和/或之后是否有空闲块,当所述被记录的空闲块之前和/或之后有空闲块,则将所述记录的空闲块和所述记录的空闲块之前和/或之后的空闲块进行逻辑合并,并将合并后的空闲块记录到记录的空闲块的大小与所述合并后的空闲块大小相等的空闲块桶中,由此可使存储较大数据时,能充分利用已有存储空间,避免存储空间的浪费,进一步减少磁盘碎片的产生。另外,本发明实施例可通过位图信息来指示基本块是否被数据占用,且所述位图信息可直接存在硬盘中,不会存在因为异常情况导致空闲块数据丢失的情况。并且采用位图信息代替空闲块数组指示空闲块是否被数据占用能节省大量的内存空间。
附图说明
图1为本发明的数据存储空间的管理方法的第一实施例的流程示意图;
图2为本发明的数据存储空间的管理方法的第二实施例的流程示意图;
图3为本发明的数据存储空间的管理系统的第一实施例的结构示意图;
图4为图3中的第一判断模块的一实施例的结构组成示意图;
图5为图3的第一存储处理模块32的一实施例的结构组成示意图;
图6为本发明的数据存储空间的管理系统的第二实施例的结构示意图;
图7为本发明的数据存储空间的管理系统的第三实施例的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述。
图1为本发明的数据存储空间的管理方法的第一实施例的流程示意图。如图1所示,其可包括:
步骤S110,当有第一数据需要存储时,根据各空闲块桶与空闲块大小的对应关系,判断是否存在第一空闲块桶,所述各空闲块桶中分别记录了不同的空闲块的大小、位置及数量,所述第一空闲块桶中记录了第一空闲块的大小、位置及数量,所述第一空闲块的大小大于或等于所述第一数据的大小;所述各空闲块桶与空闲块大小的对应关系为各空闲块桶中记录的空闲块的大小。
步骤S111,当存在所述第一空闲块桶时,选择一个所述第一空闲块桶,根据所述选择的所述第一空闲块桶中记录的所述第一空闲块的位置及数量,查找所述第一空闲块,并将所述第一数据存入任一个查找到的所述第一空闲块中,以及将用于存储所述第一数据的所述第一空闲块的记录在所述第一空闲块桶中删除;
步骤S112,当不存在所述第一空闲块桶时,将所述第一数据存储在硬盘文件的末尾。
具体实现中,本发明实施例通过空闲块桶来分别记录不同的空闲块的大小,位置及数量,并且建立空闲块桶与空闲块大小的对应关系,则当有第一数据需要存储时,只需根据空闲块桶与空闲块大小的对应关系就能直接判断出是否存在所述第一空闲块桶,而不需要遍历所有的空闲块桶,由此,提高了空闲块桶的查找效率。
在一些可行的实施方式中,本发明实施例选择第一空闲块时,可选择大小与所述第一数据的大小相等的空闲块作为所述第一空闲块。此时,在步骤S110,就可直接根据各空闲块桶与空闲块大小的对应关系判断是否有所述第一空闲块桶。
在一些可行的实施方式中,本发明实施例选择第一空闲块时,可选择大小大于所述第一数据的大小的空闲块作为所述第一空闲块。此时,在步骤S110,就可直接根据各空闲块桶与空闲块大小的对应关系判断是否有所述第一空闲块桶。
在一些可行的实施方式中,本发明实施例选择第一空闲块时,可同时选择大小等于或大于所述第一数据的大小的空闲块作为所述第一空闲块。此时,在步骤S110,判断是否有第一空闲块桶时可按如下步骤:
步骤A1:根据各空闲块桶与空闲块大小的对应关系,判断是否存在记录的空闲块的大小与所述第一数据的大小相等的空闲块桶,如果存在,则将记录的空闲块的大小与所述第一数据大小相等的空闲块桶作为所述第一空闲块桶;
步骤A2:如果不存在记录的空闲块的大小与所述第一数据大小相等的空闲块桶,判断是否存在记录的空闲块的大小大于所述第一数据大小的空闲块桶,如果存在,则将所述记录的空闲块的大小大于所述第一数据大小的空闲块桶作为所述第一空闲块桶。
由此可知,在本发明实施例中,用于存储第一数据的第一空闲块的大小可大于或者等于所述第一数据,这样就可避免现有技术中当找不到与数据大小相等的空闲块时,就直接将数据放置在硬盘文件的尾部,减少了硬盘空间的浪费和硬盘碎片的产生。
在一些可行的实施方式中,可设定一定的大小(比如,4k、8k、16k等)的存储空间为基本块,则,整个硬盘的存储空间按照该基本块大小逻辑上被划分为多个切片。在为数据分配存储空间时,均以该基本块的整数倍进行分配,此时,本发明实施例的空闲块的大小为基本块的整数倍。则各空闲块桶中可记录不同的空闲块的大小,比如,当基本块为4k时,按顺序可依次在第一个空闲块桶中记录大小为4k、8k、12k等的空闲块的大小、位置及数量,其中,所述的位置可为所述各空闲块在硬盘中的起始地址,或者各空闲块的起始地址相对于某一地址的偏移量,所述数量为硬盘中所述大小的空闲块的总数量。则,在步骤S111,当确定存在第一空闲块桶时,可根据第一空闲块桶记录的第一空闲块在硬盘中的起始地址或相对于某一地址的偏移量及数量查找第一空闲块。
或者,在一些可行的实施方式中,还可进一步将多个连续的基本块的设定为一个分片。同时,为每个分片维护一个位图信息,所述位图信息指示了所述分片中的空闲块是否被数据占用。所述位图信息的每一位取值为第一数值或第二数值,所述第一数值指示基本块未被数据占用(比如,取值为1),所述第二数值指示基本块被数据占用(比如,取值为0)。此时,本发明的空闲桶中记录的所述位置为包括所述第一空闲块的分片在硬盘文件中的位置,所述数量为所述第一空闲块分别在包括所述第一空闲块的分片中的数量;则,在步骤S111,当确定存在第一空闲块桶时,所述根据所述选择的所述第一空闲块桶中记录的所述第一空闲块的位置及数量,找到一个所述第一空闲块,具体可包括:
步骤B1:根据所述选择的所述第一空闲块桶中记录的所述第一空闲块的位置及数量,定位一个包含所述第一空闲块的分片;
步骤B2:在所述定位的分片内查找所述第一空闲块,直到找到一个或多个所述第一空闲块。其中,步骤B2具体为:根据所述定位的分片的位图信息查找所述分片中未被数据占用且大小与所述第一空闲块的大小相等的空闲块。比如,假设本发明的基本块大小为4k,所述第一空闲块的大小为8k(即两个基本块的大小),位图信息通过1表述基本块被占用,通过0表示基本块未被占用,包含第一空闲块的分片为分片2、分片3,则在步骤S111,首先可根据步骤A1定位到一个包含所述第一空闲块的分片2,然后在步骤A2,通过计算位图信息中连续的0的个数来查找所述第一空闲块,当有两个连续的0,而在该两个连续的0之前和之后的位图均为1,则证明找到一个第一空闲块。
在一些可行的实施方式中,本发明的位图信息可在初始化的时候即导入硬盘中,由此可避免本发明的空闲块的状态数据由于系统异常而丢失。
在一些可行的实施例中,当将所述记录的空闲块的大小大于所述第一空闲块的大小的空闲块桶作为所述第一空闲块桶时,本发明的数据存储空间的管理方法还可包括如下步骤:将用于存储所述第一数据的所述第一空闲块中剩余的空闲部分作为新的空闲块,记录所述新的空闲块大小对应的空闲块桶中。其好处在于,避免硬盘存储空间的浪费,减少硬盘碎片的产生。
图2为本发明的数据存储空间的管理方法的第二实施例的流程示意图。本实施例在图1的实施例的基本上,引入数据删除后的存储空间的管理流程。如图2所示,其可包括:
步骤S210,当有第一数据需要存储时,根据各空闲块桶与空闲块大小的对应关系,判断是否存在第一空闲块桶,所述各空闲块桶中分别记录了不同的空闲块的大小、位置及数量,所述第一空闲块桶中记录了第一空闲块的大小、位置及数量,所述第一空闲块的大小大于或等于所述第一数据的大小;所述各空闲块桶与空闲块大小的对应关系为各空闲块桶中记录的空闲块的大小。
步骤S211,当存在所述第一空闲块桶时,选择一个所述第一空闲块桶,根据所述选择的所述第一空闲块桶中记录的所述第一空闲块的位置及数量,查找所述第一空闲块,并将所述第一数据存入任一个查找到的所述第一空闲块中,以及将用于存储所述第一数据的所述第一空闲块的记录在所述第一空闲块桶中删除;
步骤S212,当不存在所述第一空闲块桶时,将所述第一数据存储在硬盘文件的末尾。
步骤S213,当有第二数据被删除时,将用于存储所述第二数据的存储空间作为空闲块记录到记录的空闲块的大小与该存储空间大小相等的空闲块桶中。
步骤S214,判断所述被记录的空闲块之前和/或之后是否有空闲块,当所述被记录的空闲块之前和/或之后有空闲块,则执行步骤S215;如果判断为否,不用做任何处理。
步骤S215,将所述记录的空闲块和所述记录的空闲块之前和/或之后的空闲块进行逻辑合并,并将合并后的空闲块记录到记录的空闲块的大小与所述合并后的空闲块大小相等的空闲块桶中。
具体实现中,步骤S213‑S215可独立于步骤S210‑S212单独执行。
具体实现中,本发明实施例通过空闲块桶来分别记录不同的空闲块的大小,位置及数量,并且建立空闲块桶与空闲块大小的对应关系,则当有第一数据需要存储时,只需根据空闲块桶与空闲块大小的对应关系就能直接判断出是否存在所述第一空闲块桶,而不需要遍历所有的空闲块桶,由此,提高了空闲块桶的查找效率。
在一些可行的实施方式中,本发明实施例选择第一空闲块时,可选择大小与所述第一数据的大小相等的空闲块作为所述第一空闲块。此时,在步骤S110,就可直接根据各空闲块桶与空闲块大小的对应关系判断是否有所述第一空闲块桶。
在一些可行的实施方式中,本发明实施例选择第一空闲块时,可选择大小大于所述第一数据的大小的空闲块作为所述第一空闲块。此时,在步骤S110,就可直接根据各空闲块桶与空闲块大小的对应关系判断是否有所述第一空闲块桶。
在一些可行的实施方式中,本发明实施例选择第一空闲块时,可同时选择大小等于或大于所述第一数据的大小的空闲块作为所述第一空闲块。此时,在步骤S210,判断是否有第一空闲块桶时可按如下步骤:
步骤A1:根据各空闲块桶与空闲块大小的对应关系,判断是否存在记录的空闲块的大小与所述第一数据的大小相等的空闲块桶,如果存在,则将记录的空闲块的大小与所述第一数据大小相等的空闲块桶作为所述第一空闲块桶;
步骤A2:如果不存在记录的空闲块的大小与所述第一数据大小相等的空闲块桶,判断是否存在记录的空闲块的大小大于所述第一数据大小的空闲块桶,如果存在,则将所述记录的空闲块的大小大于所述第一数据大小的空闲块桶作为所述第一空闲块桶。
由此可知,在本发明实施例中,用于存储第一数据的第一空闲块的大小可大于或者等于所述第一数据,这样就可避免现有技术中当找不到与数据大小相等的空闲块时,就直接将数据放置在硬盘文件的尾部,减少了硬盘空间的浪费和硬盘碎片的产生。
在一些可行的实施方式中,可设定一定的大小(比如,4k、8k、16k等)的存储空间为基本块,则,整个硬盘的存储空间按照该基本块大小逻辑上被划分为多个切片。在为数据分配存储空间时,均以该基本块的整数倍进行分配,此时,本发明实施例的空闲块的大小为基本块的整数倍。则各空闲块桶中可记录不同的空闲块的大小,比如,当基本块为4k时,按顺序可依次在第一个空闲块桶中记录大小为4k、8k、12k等的空闲块的大小、位置及数量,其中,所述的位置可为所述各空闲块在硬盘中的起始地址,或者各空闲块的起始地址相对于某一地址的偏移量,所述数量为硬盘中所述大小的空闲块的总数量。则,在步骤S211,当确定存在第一空闲块桶时,可根据第一空闲块桶记录的第一空闲块在硬盘中的起始地址或相对于某一地址的偏移量及数量查找第一空闲块。
或者,在一些可行的实施方式中,还可进一步将多个连续的基本块的设定为一个分片。同时,为每个分片维护一个位图信息,所述位图信息指示了所述分片中的空闲块是否被数据占用。所述位图信息的每一位取值为第一数值或第二数值,所述第一数值指示基本块未被数据占用(比如,取值为1),所述第二数值指示基本块被数据占用(比如,取值为0)。此时,本发明的空闲桶中记录的所述位置为包括所述第一空闲块的分片在硬盘文件中的位置,所述数量为所述第一空闲块分别在包括所述第一空闲块的分片中的数量;则,在步骤S111,当确定存在第一空闲块桶时,所述根据所述选择的所述第一空闲块桶中记录的所述第一空闲块的位置及数量,找到一个所述第一空闲块,具体可包括:
步骤B1:根据所述选择的所述第一空闲块桶中记录的所述第一空闲块的位置及数量,定位一个包含所述第一空闲块的分片;
步骤B2:在所述定位的分片内查找所述第一空闲块,直到找到一个或多个所述第一空闲块。其中,步骤B2具体为:根据所述定位的分片的位图信息查找所述分片中未被数据占用且大小与所述第一空闲块的大小相等的空闲块。比如,假设本发明的基本块大小为4k,所述第一空闲块的大小为8k(即两个基本块的大小),位图信息通过1表述基本块被占用,通过0表示基本块未被占用,包含第一空闲块的分片为分片2、分片3,则在步骤S111,首先可根据步骤A1定位到一个包含所述第一空闲块的分片2,然后在步骤A2,通过计算位图信息中连续的0的个数来查找所述第一空闲块,当有两个连续的0,而在该两个连续的0之前和之后的位图均为1,则证明找到一个第一空闲块。
在一些可行的实施方式中,本发明的位图信息可在初始化的时候即导入硬盘中,由此可避免本发明的空闲块的状态数据由于系统异常而丢失。
在一些可行的实施例中,当将所述记录的空闲块的大小大于所述第一空闲块的大小的空闲块桶作为所述第一空闲块桶时,本发明的数据存储空间的管理方法还可包括如下步骤:将用于存储所述第一数据的所述第一空闲块中剩余的空闲部分作为新的空闲块,记录所述新的空闲块大小对应的空闲块桶中。
其好处在于,避免硬盘存储空间的浪费,减少硬盘碎片的产生。
本发明实施例在步骤S214,在回收空闲块时,将空闲块进行逻辑合并,由此,减少了硬盘碎片的产生。
具体实现中,当有第二数据删除时,且不存在记录的空闲块的大小与所述存储空间的大小相等的空闲块桶时,本发明实施例的方法还可包括如下步骤:生成一空闲块桶用于记录所述存储空间对应的空闲块的大小、位置及数量,并建立所述生成的空闲块桶与所述存储空间对应的空闲块的对应关系。
综上所述,在本发明的一些可行的实施方式中,当有第一数据需要存储时,根据各空闲块桶与空闲块大小的对应关系,判断是否存在第一空闲块桶,所述各空闲块桶中分别记录了不同的空闲块的大小、位置及数量,所述第一空闲块桶中记录了第一空闲块的大小、位置及数量,所述第一空闲块的大小大于或等于所述第一数据的大小;所述各空闲块桶与空闲块大小的对应关系为各空闲块桶中记录的空闲块的大小;当存在所述第一空闲块桶时,选择一个所述第一空闲块桶,根据所述选择的所述第一空闲块桶中记录的所述第一空闲块的位置及数量,查找所述第一空闲块,并将所述第一数据存入任一个查找到的所述第一空闲块中,以及将用于存储所述第一数据的所述第一空闲块的记录在所述第一空闲块桶中删除;当不存在所述第一空闲块桶时,将所述第一数据存储在硬盘文件的末尾。由此可见,本发明的实施例通过建立空闲块桶与空闲块大小的对应关系,使得在进行数据存储时,不需要遍历空闲块桶,而直接到对应的空闲块桶获取空闲块的位置,以及不需要改变空闲块桶中的元素的位置(各空闲块桶不需要前移或者后移),由此提高了存储空间的管理效率,并且,在查找空闲块时,本发明实施例可提供大小大于或等于数据的大小的空闲块给数据,只有当系统中没有可用于存储数据的空闲块时,才将数据存储在硬盘文件的末尾,由此可充分利用磁盘的空闲空间,减少了磁盘碎片的产生。另外,本发明实施例,在回收空闲块时,可判断所述被记录的空闲块之前和/或之后是否有空闲块,当所述被记录的空闲块之前和/或之后有空闲块,则将所述记录的空闲块和所述记录的空闲块之前和/或之后的空闲块进行逻辑合并,并将合并后的空闲块记录到记录的空闲块的大小与所述合并后的空闲块大小相等的空闲块桶中,由此可使存储较大数据时,能充分利用已有存储空间,避免存储空间的浪费,进一步减少磁盘碎片的产生。另外,本发明实施例可通过位图信息来指示基本块是否被数据占用,且所述位图信息可直接存在硬盘中,不会存在因为异常情况导致空闲块数据丢失的情况。并且采用位图信息代替空闲块数组指示空闲块是否被数据占用能节省大量的内存空间。
相应的,本发明实施例还提供了用于实施本发明的方法实施例的装置实施例,下面结合附图对本发明的数据存储空间的管理系统的实施例进行举例说明。
图3为本发明的数据存储空间的管理系统的第一实施例的结构示意图。如图3所示,其可包括:
第一判断模块31,用于当有第一数据需要存储时,根据各空闲块桶与空闲块大小的对应关系,判断是否存在第一空闲块桶,所述各空闲块桶中记录了不同的空闲块的大小、位置及数量,所述第一空闲块桶中记录了第一空闲块的大小、位置及数量,所述第一空闲块的大小大于或等于所述第一数据的大小;所述各空闲块桶与空闲块大小的对应关系为各空闲块桶中记录的空闲块的大小;
第一存储处理模块32,用于当经所述第一判断模块31的判断确定存在所述第一空闲块桶时,选择一个所述第一空闲块桶,根据所述选择的所述第一空闲块桶中记录的所述第一空闲块的位置及数量,查找所述第一空闲块,并将所述第一数据存入任一个查找到的所述第一空闲块中,以及将用于存储所述第一数据的所述第一空闲块的记录在所述第一空闲块桶中删除;
第二存储处理模块33,用于当经所述第一判断模块31的判断确定不存在所述第一空闲块桶时,将所述第一数据存储在硬盘文件的末尾。
具体实现中,本发明实施例通过空闲块桶来分别记录不同的空闲块的大小,位置及数量,并且建立空闲块桶与空闲块大小的对应关系,则当有第一数据需要存储时,只需根据空闲块桶与空闲块大小的对应关系就能直接判断出是否存在所述第一空闲块桶,而不需要遍历所有的空闲块桶,由此,提高了空闲块桶的查找效率。
在一些可行的实施方式中,本发明实施例选择第一空闲块时,可选择大小与所述第一数据的大小相等的空闲块作为所述第一空闲块。此时,第一判断模块31就可直接根据各空闲块桶与空闲块大小的对应关系判断是否有所述第一空闲块桶。
在一些可行的实施方式中,本发明实施例选择第一空闲块时,可选择大小大于所述第一数据的大小的空闲块作为所述第一空闲块。此时,第一判断模块31就可直接根据各空闲块桶与空闲块大小的对应关系判断是否有所述第一空闲块桶。
在一些可行的实施方式中,本发明实施例选择第一空闲块时,可同时选择大小等于或大于所述第一数据的大小的空闲块作为所述第一空闲块。此时,如图4所示,第一判断模块31进一步包括:
第二判断模块311,用于根据各空闲块与空闲块大小的对应关系,判断是否存在记录的空闲块的大小与所述第一数据的大小相等的空闲块桶,如果存在,则将记录的空闲块的大小与所述第一数据的大小相等的空闲块桶作为所述第一空闲块桶;
第三判断模块312,用于当经所述第二判断模块311的判断确定不存在记录的空闲块的大小与所述第一数据的大小相等的空闲块桶,判断是否存在记录的空闲块的大小大于所述第一数据的大小的空闲块桶,如果存在,则将所述记录的空闲块的大小大于所述第一数据的大小的空闲块桶作为所述第一空闲块桶。
由此可知,在本发明实施例中,用于存储第一数据的第一空闲块的大小可大于或者等于所述第一数据,这样就可避免现有技术中当找不到与数据大小相等的空闲块时,就直接将数据放置在硬盘文件的尾部,减少了硬盘空间的浪费和硬盘碎片的产生。
在一些可行的实施方式中,可设定一定的大小(比如,4k、8k、16k等)的存储空间为基本块,则,整个硬盘的存储空间按照该基本块大小逻辑上被划分为多个切片。在为数据分配存储空间时,均以该基本块的整数倍进行分配,此时,本发明实施例的空闲块的大小为基本块的整数倍。则各空闲块桶中可记录不同的空闲块的大小,比如,当基本块为4k时,按顺序可依次在第一个空闲块桶中记录大小为4k、8k、12k等的空闲块的大小、位置及数量,其中,所述的位置可为所述各空闲块在硬盘中的起始地址,或者各空闲块的起始地址相对于某一地址的偏移量,所述数量为硬盘中所述大小的空闲块的总数量。则第一存储处理模块32可根据第一空闲块桶记录的第一空闲块在硬盘中的起始地址或相对于某一地址的偏移量及数量查找第一空闲块。
或者,在一些可行的实施方式中,还可进一步将多个连续的基本块的设定为一个分片。同时,为每个分片维护一个位图信息,所述位图信息指示了所述分片中的空闲块是否被数据占用。所述位图信息的每一位取值为第一数值或第二数值,所述第一数值指示基本块未被数据占用(比如,取值为1),所述第二数值指示基本块被数据占用(比如,取值为0)。此时,本发明的空闲桶中记录的所述位置为包括所述第一空闲块的分片在硬盘文件中的位置,所述数量为所述第一空闲块分别在包括所述第一空闲块的分片中的数量;则,如图5所示,所述第一存储处理模块32可进一步包括:
选择模块321,用于选择一个所述第一空闲块桶;
分片定位模块322,用于根据所述选择模块选择的所述第一空闲块桶中记录的所述第一空闲块的位置及数量,定位一个包含所述第一空闲块的分片;
空闲块查找模块323,用于在所述分片定位模块定位的分片内查找所述第一空闲块,直到找到一个或多个所述第一空闲块;在一些可行的实施方式中,所述空闲块查找模块323具体用于根据所述定位的分片的位图信息查找所述分片中未被数据占用且大小与所述第一空闲块的大小相等的空闲块,所述位图信息指示了所述分片中的空闲块是否被数据占用。
存储模块324,用于将所述第一数据存入任一个查找到的所述第一空闲块中;
删除模块325,用于将用于存储所述第一数据的所述第一空闲块的记录在所述第一空闲块桶中删除。
比如,假设本发明的基本块大小为4k,所述第一空闲块的大小为8k(即两个基本块的大小),位图信息通过1表述基本块被占用,通过0表示基本块未被占用,包含第一空闲块的分片为分片2、分片3,首先可根据分片定位模块322定位到一个包含所述第一空闲块的分片2,空闲块定位模块323通过计算位图信息中连续的0的个数来查找所述第一空闲块,当有两个连续的0,而在该两个连续的0之前和之后的位图均为1,则证明找到一个第一空闲块。
在一些可行的实施方式中,本发明的位图信息可在初始化的时候即导入硬盘中,由此可避免本发明的空闲块的状态数据由于系统异常而丢失。
在一些可行的实施方式中,当所述记录的空闲块的大小大于所述第一空闲块的大小的空闲块桶作为所述第一空闲块桶,该管理系统还可包括:
第三存储处理模块(未图示),用于当所述第一存储处理模块将所述第一数据存入任一个查找到的所述第一空闲块中之后,以及当所述第一存储处理模块将用于存储所述第一数据的所述第一空闲块的记录在所述第一空闲块桶中删除之前,将用于存储所述第一数据的所述第一空闲块中剩余的空闲部分作为新的空闲块,记录所述新的空闲块大小对应的空闲块桶中。其好处在于,避免硬盘存储空间的浪费,减少硬盘碎片的产生。
图6为本发明的数据存储空间的管理系统的第二实施例的结构示意图。本实施例在图3的实施例的基本上,引入数据删除后的存储空间的管理结构。如图6所示,其可包括:
第一判断模块31,用于当有第一数据需要存储时,根据各空闲块桶与空闲块大小的对应关系,判断是否存在第一空闲块桶,所述各空闲块桶中记录了不同的空闲块的大小、位置及数量,所述第一空闲块桶中记录了第一空闲块的大小、位置及数量,所述第一空闲块的大小大于或等于所述第一数据的大小;所述各空闲块桶与空闲块大小的对应关系为各空闲块桶中记录的空闲块的大小;
第一存储处理模块32,用于当经所述第一判断模块31的判断确定存在所述第一空闲块桶时,选择一个所述第一空闲块桶,根据所述选择的所述第一空闲块桶中记录的所述第一空闲块的位置及数量,查找所述第一空闲块,并将所述第一数据存入任一个查找到的所述第一空闲块中,以及将用于存储所述第一数据的所述第一空闲块的记录在所述第一空闲块桶中删除;
第二存储处理模块33,用于当经所述第一判断模块31的判断确定不存在所述第一空闲块桶时,将所述第一数据存储在硬盘文件的末尾。
第一删除处理模块34,用于当有第二数据被删除时,将用于存储所述第二数据的存储空间作为空闲块记录到记录的空闲块的大小与该存储空间大小相等的空闲块桶中。
第四判断模块35,用于当所述第一删除处理模块34在将用于存储所述第二数据的存储空间作为空闲块记录到记录的空闲块的大小与该存储空间大小相等的空闲块桶中之后,判断所述被记录的空闲块之前和/或之后是否有空闲块;
第二删除处理模块36,用于当经所述第四判断模块35的判断确定所述被记录的空闲块之前和/或之后有空闲块,则将所述记录的空闲块和所述记录的空闲块之前和/或之后的空闲块进行逻辑合并,并将合并后的空闲块记录到记录的空闲块的大小与所述合并后的空闲块大小相等的空闲块桶中。
具体实现中,本发明实施例通过空闲块桶来分别记录不同的空闲块的大小,位置及数量,并且建立空闲块桶与空闲块大小的对应关系,则当有第一数据需要存储时,只需根据空闲块桶与空闲块大小的对应关系就能直接判断出是否存在所述第一空闲块桶,而不需要遍历所有的空闲块桶,由此,提高了空闲块桶的查找效率。
在一些可行的实施方式中,本发明实施例选择第一空闲块时,可选择大小与所述第一数据的大小相等的空闲块作为所述第一空闲块。此时,第一判断模块31就可直接根据各空闲块桶与空闲块大小的对应关系判断是否有所述第一空闲块桶。
在一些可行的实施方式中,本发明实施例选择第一空闲块时,可选择大小大于所述第一数据的大小的空闲块作为所述第一空闲块。此时,第一判断模块31就可直接根据各空闲块桶与空闲块大小的对应关系判断是否有所述第一空闲块桶。
在一些可行的实施方式中,本发明实施例选择第一空闲块时,可同时选择大小等于或大于所述第一数据的大小的空闲块作为所述第一空闲块。此时,如图4所示,第一判断模块31进一步包括:
第二判断模块311,用于根据各空闲块与空闲块大小的对应关系,判断是否存在记录的空闲块的大小与所述第一数据的大小相等的空闲块桶,如果存在,则将记录的空闲块的大小与所述第一数据的大小相等的空闲块桶作为所述第一空闲块桶;
第三判断模块312,用于当经所述第二判断模块311的判断确定不存在记录的空闲块的大小与所述第一数据的大小相等的空闲块桶,判断是否存在记录的空闲块的大小大于所述第一数据的大小的空闲块桶,如果存在,则将所述记录的空闲块的大小大于所述第一数据的大小的空闲块桶作为所述第一空闲块桶。
由此可知,在本发明实施例中,用于存储第一数据的第一空闲块的大小可大于或者等于所述第一数据,这样就可避免现有技术中当找不到与数据大小相等的空闲块时,就直接将数据放置在硬盘文件的尾部,减少了硬盘空间的浪费和硬盘碎片的产生。
在一些可行的实施方式中,可设定一定的大小(比如,4k、8k、16k等)的存储空间为基本块,则,整个硬盘的存储空间按照该基本块大小逻辑上被划分为多个切片。在为数据分配存储空间时,均以该基本块的整数倍进行分配,此时,本发明实施例的空闲块的大小为基本块的整数倍。则各空闲块桶中可记录不同的空闲块的大小,比如,当基本块为4k时,按顺序可依次在第一个空闲块桶中记录大小为4k、8k、12k等的空闲块的大小、位置及数量,其中,所述的位置可为所述各空闲块在硬盘中的起始地址,或者各空闲块的起始地址相对于某一地址的偏移量,所述数量为硬盘中所述大小的空闲块的总数量。则第一存储处理模块32可根据第一空闲块桶记录的第一空闲块在硬盘中的起始地址或相对于某一地址的偏移量及数量查找第一空闲块。
或者,在一些可行的实施方式中,还可进一步将多个连续的基本块的设定为一个分片。同时,为每个分片维护一个位图信息,所述位图信息指示了所述分片中的空闲块是否被数据占用。所述位图信息的每一位取值为第一数值或第二数值,所述第一数值指示基本块未被数据占用(比如,取值为1),所述第二数值指示基本块被数据占用(比如,取值为0)。此时,本发明的空闲桶中记录的所述位置为包括所述第一空闲块的分片在硬盘文件中的位置,所述数量为所述第一空闲块分别在包括所述第一空闲块的分片中的数量;则,如图5所示,所述第一存储处理模块32可进一步包括:
选择模块321,用于选择一个所述第一空闲块桶;
分片定位模块322,用于根据所述选择模块选择的所述第一空闲块桶中记录的所述第一空闲块的位置及数量,定位一个包含所述第一空闲块的分片;
空闲块查找模块323,用于在所述分片定位模块定位的分片内查找所述第一空闲块,直到找到一个或多个所述第一空闲块;在一些可行的实施方式中,所述空闲块查找模块323具体用于根据所述定位的分片的位图信息查找所述分片中未被数据占用且大小与所述第一空闲块的大小相等的空闲块,所述位图信息指示了所述分片中的空闲块是否被数据占用。
存储模块324,用于将所述第一数据存入任一个查找到的所述第一空闲块中;
删除模块325,用于将用于存储所述第一数据的所述第一空闲块的记录在所述第一空闲块桶中删除。
比如,假设本发明的基本块大小为4k,所述第一空闲块的大小为8k(即两个基本块的大小),位图信息通过1表述基本块被占用,通过0表示基本块未被占用,包含第一空闲块的分片为分片2、分片3,首先可根据分片定位模块322定位到一个包含所述第一空闲块的分片2,空闲块定位模块323通过计算位图信息中连续的0的个数来查找所述第一空闲块,当有两个连续的0,而在该两个连续的0之前和之后的位图均为1,则证明找到一个第一空闲块。
在一些可行的实施方式中,本发明的位图信息可在初始化的时候即导入硬盘中,由此可避免本发明的空闲块的状态数据由于系统异常而丢失。
在一些可行的实施方式中,当所述记录的空闲块的大小大于所述第一空闲块的大小的空闲块桶作为所述第一空闲块桶,该管理系统还可包括:
第三存储处理模块(未图示),用于当所述第一存储处理模块将所述第一数据存入任一个查找到的所述第一空闲块中之后,以及当所述第一存储处理模块将用于存储所述第一数据的所述第一空闲块的记录在所述第一空闲块桶中删除之前,将用于存储所述第一数据的所述第一空闲块中剩余的空闲部分作为新的空闲块,记录所述新的空闲块大小对应的空闲块桶中。其好处在于,避免硬盘存储空间的浪费,减少硬盘碎片的产生。
在一些可行的实施方式中,所述第一删除处理模块62还用于当不存在记录的空闲块的大小与所述存储空间的大小相等的空闲块桶时,生成一空闲块桶用于记录所述存储空间对应的空闲块的大小、位置及数量,并建立所述生成的空闲块桶与所述存储空间对应的空闲块的对应关系。
图7为本发明的数据存储空间的管理系统的第三实施例的结构示意图。如图7所示,本发明的管理系统可包括一存储器71和处理器72,该存储器71用于存储一段计算机代码,该处理器72用于运行所述存储器71内存储的计算机代码,以执行如下步骤:
当有第一数据需要存储时,根据各空闲块桶与空闲块大小的对应关系,判断是否存在第一空闲块桶,所述各空闲块桶中分别记录了不同的空闲块的大小、位置及数量,所述第一空闲块桶中记录了第一空闲块的大小、位置及数量,所述第一空闲块的大小大于或等于所述第一数据的大小;所述各空闲块桶与空闲块大小的对应关系为各空闲块桶中记录的空闲块的大小;
当存在所述第一空闲块桶时,选择一个所述第一空闲块桶,根据所述选择的所述第一空闲块桶中记录的所述第一空闲块的位置及数量,查找所述第一空闲块,并将所述第一数据存入任一个查找到的所述第一空闲块中,以及将用于存储所述第一数据的所述第一空闲块的记录在所述第一空闲块桶中删除;
当不存在所述第一空闲块桶时,将所述第一数据存储在硬盘文件的末尾。
在一些可行的实施方式中所述处理器72执行所述根据各空闲块桶与空闲块大小的对应关系,判断所述空闲块桶中是否存在第一空闲块桶的步骤时,具体执行如下步骤:
根据各空闲块桶与空闲块大小的对应关系,判断是否存在记录的空闲块的大小与所述第一数据的大小相等的空闲块桶,如果存在,则将记录的空闲块的大小与所述第一数据大小相等的空闲块桶作为所述第一空闲块桶;
如果不存在记录的空闲块的大小与所述第一数据大小相等的空闲块桶,判断是否存在记录的空闲块的大小大于所述第一数据大小的空闲块桶,如果存在,则将所述记录的空闲块的大小大于所述第一数据大小的空闲块桶作为所述第一空闲块桶。
在一些可行的实施方式中,当将所述记录的空闲块的大小大于所述第一空闲块的大小的空闲块桶作为所述第一空闲块桶,则所述处理器72在将所述第一数据存入任一个查找到的所述第一空闲块中之后,以及将用于存储所述第一数据的所述第一空闲块的记录在所述第一空闲块桶中删除之前,还执行如下步骤:
将用于存储诉讼第一数据的所述第一空闲块中剩余的空闲部分作为新的空闲块,记录所述新的空闲块大小对应的空闲块桶中。
在一些可行的实施方式中,所述处理器72还执行如下步骤:
当有第二数据被删除时,将用于存储所述第二数据的存储空间作为空闲块记录到记录的空闲块的大小与该存储空间大小相等的空闲块桶中。
在一些可行的实施方式中,所述处理器72在将用于存储所述第二数据的存储空间作为空闲块记录到记录的空闲块的大小与该存储空间大小相等的空闲块桶中之后,还执行如下步骤:
判断所述被记录的空闲块之前和/或之后是否有空闲块,当所述被记录的空闲块之前和/或之后有空闲块,则将所述记录的空闲块和所述记录的空闲块之前和/或之后的空闲块进行逻辑合并,并将合并后的空闲块记录到记录的空闲块的大小与所述合并后的空闲块大小相等的空闲块桶中。
在一些可行的实施方式中,当不存在记录的空闲块的大小与所述存储空间的大小相等的空闲块桶时,所述处理器72还执行如下步骤:
生成一空闲块桶用于记录所述存储空间对应的空闲块的大小、位置及数量,并建立所述生成的空闲块桶与所述存储空间对应的空闲块的对应关系。
在一些可行的实施方式中,所述位置为所述第一空闲块分别在硬盘文件的各分片中的位置,所述数量为所述第一空闲块分别在硬盘文件的各分片中的数量;
则所述处理器72执行根据所述选择的所述第一空闲块桶中记录的所述第一空闲块的位置及数量,找到一个所述第一空闲块时,具体执行如下步骤:
根据所述选择的所述第一空闲块桶中记录的所述第一空闲块的位置及数量,定位一个包含所述第一空闲块的分片;
在所述定位的分片内查找所述第一空闲块,直到找到一个或多个所述第一空闲块。
在一些可行的实施方式中,所述处理器72在所述定位的分片内查找所述第一空闲块,直到找到一个或多个所述第一空闲块时,具体执行如下步骤:
根据所述定位的分片的位图信息查找所述分片中未被数据占用且大小与所述第一空闲块的大小相等的空闲块,所述位图信息指示了所述分片中的空闲块是否被数据占用。
在一些可行的实施方式中,所述空闲块的大小为基本块的大小的整数倍,所述基本块为所述硬盘的存储空间的存储单元;
所述位图信息中的每一位用于指示一个基本块是否被数据占用,则所述位图信息通过至少一个位指示所述分片中的空闲块是否被数据占用,所述位图信息存储在硬盘中。
在一些可行的实施方式中,所述位图信息的每一位取值为第一数值或第二数值,所述第一数值指示基本块未被数据占用,所述第二数值指示基本块被数据占用。
综上所述,在本发明的一些可行的实施方式中,当有第一数据需要存储时,根据各空闲块桶与空闲块大小的对应关系,判断是否存在第一空闲块桶,所述各空闲块桶中分别记录了不同的空闲块的大小、位置及数量,所述第一空闲块桶中记录了第一空闲块的大小、位置及数量,所述第一空闲块的大小大于或等于所述第一数据的大小;所述各空闲块桶与空闲块大小的对应关系为各空闲块桶中记录的空闲块的大小;当存在所述第一空闲块桶时,选择一个所述第一空闲块桶,根据所述选择的所述第一空闲块桶中记录的所述第一空闲块的位置及数量,查找所述第一空闲块,并将所述第一数据存入任一个查找到的所述第一空闲块中,以及将用于存储所述第一数据的所述第一空闲块的记录在所述第一空闲块桶中删除;当不存在所述第一空闲块桶时,将所述第一数据存储在硬盘文件的末尾。由此可见,本发明的实施例通过建立空闲块桶与空闲块大小的对应关系,使得在进行数据存储时,不需要遍历空闲块桶,而直接到对应的空闲块桶获取空闲块的位置,以及不需要改变空闲块桶中的元素的位置(各空闲块桶不需要前移或者后移),由此提高了存储空间的管理效率,并且,在查找空闲块时,本发明实施例可提供大小大于或等于数据的大小的空闲块给数据,只有当系统中没有可用于存储数据的空闲块时,才将数据存储在硬盘文件的末尾,由此可充分利用磁盘的空闲空间,减少了磁盘碎片的产生。另外,本发明实施例,在回收空闲块时,可判断所述被记录的空闲块之前和/或之后是否有空闲块,当所述被记录的空闲块之前和/或之后有空闲块,则将所述记录的空闲块和所述记录的空闲块之前和/或之后的空闲块进行逻辑合并,并将合并后的空闲块记录到记录的空闲块的大小与所述合并后的空闲块大小相等的空闲块桶中,由此可使存储较大数据时,能充分利用已有存储空间,避免存储空间的浪费,进一步减少磁盘碎片的产生。另外,本发明实施例可通过位图信息来指示基本块是否被数据占用,且所述位图信息可直接存在硬盘中,不会存在因为异常情况导致空闲块数据丢失的情况。并且采用位图信息代替空闲块数组指示空闲块是否被数据占用能节省大量的内存空间。
以上所列举的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。

数据存储空间的管理方法及系统.pdf_第1页
第1页 / 共29页
数据存储空间的管理方法及系统.pdf_第2页
第2页 / 共29页
数据存储空间的管理方法及系统.pdf_第3页
第3页 / 共29页
点击查看更多>>
资源描述

《数据存储空间的管理方法及系统.pdf》由会员分享,可在线阅读,更多相关《数据存储空间的管理方法及系统.pdf(29页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 CN 102981964 A(43)申请公布日 2013.03.20CN102981964A*CN102981964A*(21)申请号 201210430681.6(22)申请日 2012.11.01G06F 12/02(2006.01)(71)申请人华为技术有限公司地址 518129 广东省深圳市龙岗区坂田华为总部办公楼(72)发明人张雷 熊四兵(74)专利代理机构广州三环专利代理有限公司 44202代理人郝传鑫 熊永强(54) 发明名称数据存储空间的管理方法及系统(57) 摘要本发明实施例公开了数据存储空间的管理方法及系统,其中所述方法可包括:当有第一数据需要存储时,根。

2、据各空闲块桶与空闲块大小的对应关系,判断是否存在第一空闲块桶;当存在所述第一空闲块桶时,选择一个所述第一空闲块桶,根据所述选择的所述第一空闲块桶中记录的所述第一空闲块的位置及数量,查找所述第一空闲块,并将所述第一数据存入任一个查找到的所述第一空闲块中,以及将用于存储所述第一数据的所述第一空闲块的记录在所述第一空闲块桶中删除;当不存在所述第一空闲块桶时,将所述第一数据存储在硬盘文件的末尾。实施本发明实施例,可提高存储空间管理的效率,并避免系统产生大量的磁盘碎片。(51)Int.Cl.权利要求书5页 说明书18页 附图5页(19)中华人民共和国国家知识产权局(12)发明专利申请权利要求书 5 页 。

3、说明书 18 页 附图 5 页1/5页21.一种数据存储空间的管理方法,其特征在于,包括:当有第一数据需要存储时,根据各空闲块桶与空闲块大小的对应关系,判断是否存在第一空闲块桶,所述各空闲块桶中分别记录了不同的空闲块的大小、位置及数量,所述第一空闲块桶中记录了第一空闲块的大小、位置及数量,所述第一空闲块的大小大于或等于所述第一数据的大小;所述各空闲块桶与空闲块大小的对应关系为各空闲块桶中记录的空闲块的大小;当存在所述第一空闲块桶时,选择一个所述第一空闲块桶,根据所述选择的所述第一空闲块桶中记录的所述第一空闲块的位置及数量,查找所述第一空闲块,并将所述第一数据存入任一个查找到的所述第一空闲块中,。

4、以及将用于存储所述第一数据的所述第一空闲块的记录在所述第一空闲块桶中删除;当不存在所述第一空闲块桶时,将所述第一数据存储在硬盘文件的末尾。2.如权利要求1所述的数据存储空间的管理方法,其特征在于,所述根据各空闲块桶与空闲块大小的对应关系,判断所述空闲块桶中是否存在第一空闲块桶,包括:根据各空闲块桶与空闲块大小的对应关系,判断是否存在记录的空闲块的大小与所述第一数据的大小相等的空闲块桶,如果存在,则将记录的空闲块的大小与所述第一数据大小相等的空闲块桶作为所述第一空闲块桶;如果不存在记录的空闲块的大小与所述第一数据大小相等的空闲块桶,判断是否存在记录的空闲块的大小大于所述第一数据大小的空闲块桶,如。

5、果存在,则将所述记录的空闲块的大小大于所述第一数据大小的空闲块桶作为所述第一空闲块桶。3.如权利要求2所述的数据存储空间的管理方法,其特征在于,当将所述记录的空闲块的大小大于所述第一空闲块的大小的空闲块桶作为所述第一空闲块桶,则将所述第一数据存入任一个查找到的所述第一空闲块中之后,以及将用于存储所述第一数据的所述第一空闲块的记录在所述第一空闲块桶中删除之前,还包括:将用于存储所述第一数据的所述第一空闲块中剩余的空闲部分作为新的空闲块,记录所述新的空闲块大小对应的空闲块桶中。4.如权利要求1-3中任一项所述的数据存储空间的管理方法,其特征在于,还包括:当有第二数据被删除时,将用于存储所述第二数据。

6、的存储空间作为空闲块记录到记录的空闲块的大小与该存储空间大小相等的空闲块桶中。5.如权利要求4所述的数据存储空间的管理方法,其特征在于,在将用于存储所述第二数据的存储空间作为空闲块记录到记录的空闲块的大小与该存储空间大小相等的空闲块桶中之后,还包括:判断所述被记录的空闲块之前和/或之后是否有空闲块,当所述被记录的空闲块之前和/或之后有空闲块,则将所述记录的空闲块和所述记录的空闲块之前和/或之后的空闲块进行逻辑合并,并将合并后的空闲块记录到记录的空闲块的大小与所述合并后的空闲块大小相等的空闲块桶中。6.如权利要求4所述的数据存储空间的管理方法,其特征在于,当不存在记录的空闲块的大小与所述存储空间。

7、的大小相等的空闲块桶时,生成一空闲块桶用于记录所述存储空间对应的空闲块的大小、位置及数量,并建立所述生成的空闲块桶与所述存储空间对应的空闲块的对应关系。权 利 要 求 书CN 102981964 A2/5页37.如权利要求1-6中任一项所述的数据存储空间的管理方法,其特征在于,所述位置为包括所述第一空闲块的分片在硬盘文件中的位置,所述数量为所述第一空闲块分别在包括所述第一空闲块的分片中的数量;则所述根据所述选择的所述第一空闲块桶中记录的所述第一空闲块的位置及数量,找到一个所述第一空闲块,包括:根据所述选择的所述第一空闲块桶中记录的所述第一空闲块的位置及数量,定位一个包含所述第一空闲块的分片;在。

8、所述定位的分片内查找所述第一空闲块,直到找到一个或多个所述第一空闲块。8.如权利要求7所述的数据存储空间的管理方法,其特征在于,所述在所述定位的分片内查找所述第一空闲块,直到找到一个或多个所述第一空闲块,包括:根据所述定位的分片的位图信息查找所述分片中未被数据占用且大小与所述第一空闲块的大小相等的空闲块,所述位图信息指示了所述分片中的空闲块是否被数据占用。9.如权利要求8所述的数据存储空间的管理方法,其特征在于,所述空闲块的大小为基本块的大小的整数倍,所述基本块为所述硬盘的存储空间的存储单元;所述位图信息中的每一位用于指示一个基本块是否被数据占用,则所述位图信息通过至少一个位指示所述分片中的空。

9、闲块是否被数据占用,所述位图信息存储在硬盘中。10.如权利要求9所述的数据存储空间的管理方法,其特征在于,所述位图信息的每一位取值为第一数值或第二数值,所述第一数值指示基本块未被数据占用,所述第二数值指示基本块被数据占用。11.一种数据存储空间的管理系统,其特征在于,包括:第一判断模块,用于当有第一数据需要存储时,根据各空闲块桶与空闲块大小的对应关系,判断是否存在第一空闲块桶,所述各空闲块桶中记录了不同的空闲块的大小、位置及数量,所述第一空闲块桶中记录了第一空闲块的大小、位置及数量,所述第一空闲块的大小大于或等于所述第一数据的大小;所述各空闲块桶与空闲块大小的对应关系为各空闲块桶中记录的空闲块。

10、的大小;第一存储处理模块,用于当经所述第一判断模块的判断确定存在所述第一空闲块桶时,选择一个所述第一空闲块桶,根据所述选择的所述第一空闲块桶中记录的所述第一空闲块的位置及数量,查找所述第一空闲块,并将所述第一数据存入任一个查找到的所述第一空闲块中,以及将用于存储所述第一数据的所述第一空闲块的记录在所述第一空闲块桶中删除;第二存储处理模块,用于当经所述第一判断模块的判断确定不存在所述第一空闲块桶时,将所述第一数据存储在硬盘文件的末尾。12.如权利要求11所述的数据存储空间的管理系统,其特征在于,所述第一判断模块进一步包括:第二判断模块,用于根据各空闲块与空闲块大小的对应关系,判断是否存在记录的空。

11、闲块的大小与所述第一数据的大小相等的空闲块桶,如果存在,则将记录的空闲块的大小与所述第一数据的大小相等的空闲块桶作为所述第一空闲块桶;第三判断模块,用于当经所述第二判断模块的判断确定不存在记录的空闲块的大小与所述第一数据的大小相等的空闲块桶,判断是否存在记录的空闲块的大小大于所述第一数权 利 要 求 书CN 102981964 A3/5页4据的大小的空闲块桶,如果存在,则将所述记录的空闲块的大小大于所述第一数据的大小的空闲块桶作为所述第一空闲块桶。13.如权利要求12所述的数据存储空间的管理系统,其特征在于,当所述记录的空闲块的大小大于所述第一空闲块的大小的空闲块桶作为所述第一空闲块桶,该管理。

12、系统还包括:第三存储处理模块,用于当所述第一存储处理模块将所述第一数据存入任一个查找到的所述第一空闲块中之后,以及当所述第一存储处理模块将用于存储所述第一数据的所述第一空闲块的记录在所述第一空闲块桶中删除之前,将用于存储所述第一数据的所述第一空闲块中剩余的空闲部分作为新的空闲块,记录所述新的空闲块大小对应的空闲块桶中。14.如权利要求11-13中任一项所述的数据存储空间的管理系统,其特征在于,还包括:第一删除处理模块,用于当有第二数据被删除时,将用于存储所述第二数据的存储空间作为空闲块记录到记录的空闲块的大小与该存储空间大小相等的空闲块桶中。15.如权利要求14所述的数据存储空间的管理系统,其。

13、特征在于,还包括:第四判断模块,用于当所述第一删除处理模块在将用于存储所述第二数据的存储空间作为空闲块记录到记录的空闲块的大小与该存储空间大小相等的空闲块桶中之后,判断所述被记录的空闲块之前和/或之后是否有空闲块;第二删除处理模块,用于当经所述第四判断模块的判断确定所述被记录的空闲块之前和/或之后有空闲块,则将所述记录的空闲块和所述记录的空闲块之前和/或之后的空闲块进行逻辑合并,并将合并后的空闲块记录到记录的空闲块的大小与所述合并后的空闲块大小相等的空闲块桶中。16.如权利要求14所述的数据存储空间的管理系统,其特征在于,所述第一删除处理模块还用于当不存在记录的空闲块的大小与所述存储空间的大小。

14、相等的空闲块桶时,生成一空闲块桶用于记录所述存储空间对应的空闲块的大小、位置及数量,并建立所述生成的空闲块桶与所述存储空间对应的空闲块的对应关系。17.如权利要求11-16中任一项所述的数据存储空间的管理系统,其特征在于,所述位置为包括所述第一空闲块的分片在硬盘文件中的位置,所述数量为所述第一空闲块分别在包括所述第一空闲块的分片中的数量;则所述第一存储处理模块包括:选择模块,用于选择一个所述第一空闲块桶;分片定位模块,用于根据所述选择模块选择的所述第一空闲块桶中记录的所述第一空闲块的位置及数量,定位一个包含所述第一空闲块的分片;空闲块查找模块,用于在所述分片定位模块定位的分片内查找所述第一空闲。

15、块,直到找到一个或多个所述第一空闲块;存储模块,用于将所述第一数据存入任一个查找到的所述第一空闲块中;删除模块,用于将用于存储所述第一数据的所述第一空闲块的记录在所述第一空闲块桶中删除。18.如权利要求17所述的数据存储空间的管理系统,其特征在于,所述空闲块查找模块具体用于根据所述定位的分片的位图信息查找所述分片中未被数据占用且大小与所述权 利 要 求 书CN 102981964 A4/5页5第一空闲块的大小相等的空闲块,所述位图信息指示了所述分片中的空闲块是否被数据占用。19.如权利要求18所述的数据存储空间的管理系统,其特征在于,所述空闲块的大小为基本块的大小的整数倍,所述基本块为所述硬盘。

16、的存储空间的存储单元;所述位图信息中的每一位用于指示一个基本块是否被数据占用,则所述位图信息通过至少一个位指示所述分片中的空闲块是否被数据占用,所述位图信息存储在硬盘中。20.如权利要求19所述的数据存储空间的管理系统,其特征在于,所述位图信息的每一位取值为第一数值或第二数值,所述第一数值指示基本块未被数据占用,所述第二数值指示基本块被数据占用。21.一种数据存储空间的管理系统,其特征在于,包括存储器和处理器,所述处理器执行如下步骤:当有第一数据需要存储时,根据各空闲块桶与空闲块大小的对应关系,判断是否存在第一空闲块桶,所述各空闲块桶中分别记录了不同的空闲块的大小、位置及数量,所述第一空闲块桶。

17、中记录了第一空闲块的大小、位置及数量,所述第一空闲块的大小大于或等于所述第一数据的大小;所述各空闲块桶与空闲块大小的对应关系为各空闲块桶中记录的空闲块的大小;当存在所述第一空闲块桶时,选择一个所述第一空闲块桶,根据所述选择的所述第一空闲块桶中记录的所述第一空闲块的位置及数量,查找所述第一空闲块,并将所述第一数据存入任一个查找到的所述第一空闲块中,以及将用于存储所述第一数据的所述第一空闲块的记录在所述第一空闲块桶中删除;当不存在所述第一空闲块桶时,将所述第一数据存储在硬盘文件的末尾。22.如权利要求21所述的数据存储空间的管理系统,其特征在于,所述处理器执行所述根据各空闲块桶与空闲块大小的对应关。

18、系,判断所述空闲块桶中是否存在第一空闲块桶的步骤时,具体执行如下步骤:根据各空闲块桶与空闲块大小的对应关系,判断是否存在记录的空闲块的大小与所述第一数据的大小相等的空闲块桶,如果存在,则将记录的空闲块的大小与所述第一数据大小相等的空闲块桶作为所述第一空闲块桶;如果不存在记录的空闲块的大小与所述第一数据大小相等的空闲块桶,判断是否存在记录的空闲块的大小大于所述第一数据大小的空闲块桶,如果存在,则将所述记录的空闲块的大小大于所述第一数据大小的空闲块桶作为所述第一空闲块桶。23.如权利要求22所述的数据存储空间的管理系统,其特征在于,当将所述记录的空闲块的大小大于所述第一空闲块的大小的空闲块桶作为所。

19、述第一空闲块桶,则所述处理器在将所述第一数据存入任一个查找到的所述第一空闲块中之后,以及将用于存储所述第一数据的所述第一空闲块的记录在所述第一空闲块桶中删除之前,还执行如下步骤:将用于存储诉讼第一数据的所述第一空闲块中剩余的空闲部分作为新的空闲块,记录所述新的空闲块大小对应的空闲块桶中。24.如权利要求21所述的数据存储空间的管理系统,其特征在于,所述处理器还执行如下步骤:当有第二数据被删除时,将用于存储所述第二数据的存储空间作为空闲块记录到记录权 利 要 求 书CN 102981964 A5/5页6的空闲块的大小与该存储空间大小相等的空闲块桶中。25.如权利要求24所述的数据存储空间的管理系。

20、统,其特征在于,所述处理器在将用于存储所述第二数据的存储空间作为空闲块记录到记录的空闲块的大小与该存储空间大小相等的空闲块桶中之后,还执行如下步骤:判断所述被记录的空闲块之前和/或之后是否有空闲块,当所述被记录的空闲块之前和/或之后有空闲块,则将所述记录的空闲块和所述记录的空闲块之前和/或之后的空闲块进行逻辑合并,并将合并后的空闲块记录到记录的空闲块的大小与所述合并后的空闲块大小相等的空闲块桶中。26.如权利要求24所述的数据存储空间的管理系统,其特征在于,当不存在记录的空闲块的大小与所述存储空间的大小相等的空闲块桶时,所述处理器还执行如下步骤:生成一空闲块桶用于记录所述存储空间对应的空闲块的。

21、大小、位置及数量,并建立所述生成的空闲块桶与所述存储空间对应的空闲块的对应关系。27.如权利要求21-26中任一项所述的数据存储空间的管理系统,其特征在于,所述位置为所述第一空闲块分别在硬盘文件的各分片中的位置,所述数量为所述第一空闲块分别在硬盘文件的各分片中的数量;则所述处理器执行根据所述选择的所述第一空闲块桶中记录的所述第一空闲块的位置及数量,找到一个所述第一空闲块时,具体执行如下步骤:根据所述选择的所述第一空闲块桶中记录的所述第一空闲块的位置及数量,定位一个包含所述第一空闲块的分片;在所述定位的分片内查找所述第一空闲块,直到找到一个或多个所述第一空闲块。28.如权利要求27所述的数据存储。

22、空间的管理系统,其特征在于,所述处理器在所述定位的分片内查找所述第一空闲块,直到找到一个或多个所述第一空闲块时,具体执行如下步骤:根据所述定位的分片的位图信息查找所述分片中未被数据占用且大小与所述第一空闲块的大小相等的空闲块,所述位图信息指示了所述分片中的空闲块是否被数据占用。29.如权利要求28所述的数据存储空间的管理系统,其特征在于,所述空闲块的大小为基本块的大小的整数倍,所述基本块为所述硬盘的存储空间的存储单元;所述位图信息中的每一位用于指示一个基本块是否被数据占用,则所述位图信息通过至少一个位指示所述分片中的空闲块是否被数据占用,所述位图信息存储在硬盘中。30.如权利要求29所述的数据。

23、存储空间的管理系统,其特征在于,所述位图信息的每一位取值为第一数值或第二数值,所述第一数值指示基本块未被数据占用,所述第二数值指示基本块被数据占用。权 利 要 求 书CN 102981964 A1/18页7数据存储空间的管理方法及系统技术领域0001 本发明涉及分布式存储领域,尤其涉及分布式存储领域中数据存储空间的管理方法及系统。背景技术0002 当前,在key-value系统中,其数据库(DB,Data Base)的空间管理方案一般采用一个空闲块数组的方式进行。其具体方案如下:将整个存储空间按照一定的大小(如4K)划分基本块,所有存储数据的大小都是该基本块的整数倍。同时初始化一个空闲块数组用。

24、来记录硬盘上的空闲块(硬盘上未被数据占用的空间),该空闲块数组是一个排序数组,按照其管理的空闲块的大小进行排序,如空闲块数组中记录了4K,8K,24K大小的空闲块,则4K的放在数组的第一个元素,24K的空闲块放在数组的第三个元素。当有数据删除时,DB释放该数据的存储空间,并将该存储空间需记录在空闲块数组中,同时空闲块数组会根据其内部的空闲块的大小顺序重新进行排序(如图1a所示)。当有新的数据要存储时,系统首先遍历空闲块数组,查找可用的空闲块,如果找到,则将数据存储在该空闲块中,同时在空闲块数组中删除该空闲块记录。该空闲块后续的数组元素都前移一个位置(如图1b所示)。如果在空闲块数组中没有找到合。

25、适的空闲块(即没有的大小与数据相等的空闲块时),则在DB文件末尾进行追加。0003 上述空闲块数组虽然可管理硬盘上的空闲块,但是其存在如下缺陷:0004 由于空闲块以大小以排序的数组形式存放,因此,在分配空闲块(1b)和回收空闲块(1a)时都需要使用移动操作来完成数组元素的移动;此操作在性能较差,并且在分配空闲块时,需要首先遍历空闲块数组效率低下;0005 申请较大空间找不到合适的空闲块时,而不能利用已有的多个空闲块而是通过在DB文件末尾追加,这样造成空闲块空间的浪费,并且容易使硬盘产生碎片。发明内容0006 本发明实施例提供数据存储空间的管理方法及系统,可提高存储空间管理的效率,并避免系统产。

26、生大量的磁盘碎片。0007 本发明第一方面提供一种数据存储空间的管理方法,其可包括:0008 当有第一数据需要存储时,根据各空闲块桶与空闲块大小的对应关系,判断是否存在第一空闲块桶,所述各空闲块桶中分别记录了不同的空闲块的大小、位置及数量,所述第一空闲块桶中记录了第一空闲块的大小、位置及数量,所述第一空闲块的大小大于或等于所述第一数据的大小;所述各空闲块桶与空闲块大小的对应关系为各空闲块桶中记录的空闲块的大小;0009 当存在所述第一空闲块桶时,选择一个所述第一空闲块桶,根据所述选择的所述第一空闲块桶中记录的所述第一空闲块的位置及数量,查找所述第一空闲块,并将所述第一数据存入任一个查找到的所述。

27、第一空闲块中,以及将用于存储所述第一数据的所述第一说 明 书CN 102981964 A2/18页8空闲块的记录在所述第一空闲块桶中删除;0010 当不存在所述第一空闲块桶时,将所述第一数据存储在硬盘文件的末尾。0011 在第一种可能的实现方式中,所述根据各空闲块桶与空闲块大小的对应关系,判断所述空闲块桶中是否存在第一空闲块桶,可包括:0012 根据各空闲块桶与空闲块大小的对应关系,判断是否存在记录的空闲块的大小与所述第一数据的大小相等的空闲块桶,如果存在,则将记录的空闲块的大小与所述第一数据大小相等的空闲块桶作为所述第一空闲块桶;0013 如果不存在记录的空闲块的大小与所述第一数据大小相等的。

28、空闲块桶,判断是否存在记录的空闲块的大小大于所述第一数据大小的空闲块桶,如果存在,则将所述记录的空闲块的大小大于所述第一数据大小的空闲块桶作为所述第一空闲块桶。0014 结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,当将所述记录的空闲块的大小大于所述第一空闲块的大小的空闲块桶作为所述第一空闲块桶,则将所述第一数据存入任一个查找到的所述第一空闲块中之后,以及将用于存储所述第一数据的所述第一空闲块的记录在所述第一空闲块桶中删除之前,还可包括:0015 将用于存储所述第一数据的所述第一空闲块中剩余的空闲部分作为新的空闲块,记录所述新的空闲块大小对应的空闲块桶中。0016 结合第一方面。

29、,或第一方面的第一种可能的实现方式,或第一方面的第二种可能的实现方式,在第三种可能的实现方式中,本发明的数据存储空间的管理方法还可包括:0017 当有第二数据被删除时,将用于存储所述第二数据的存储空间作为空闲块记录到记录的空闲块的大小与该存储空间大小相等的空闲块桶中。0018 结合第一方面的第三种可能的实现方式,在第四种可能的实现方式中,在将用于存储所述第二数据的存储空间作为空闲块记录到记录的空闲块的大小与该存储空间大小相等的空闲块桶中之后,还包括:0019 判断所述被记录的空闲块之前和/或之后是否有空闲块,当所述被记录的空闲块之前和/或之后有空闲块,则将所述记录的空闲块和所述记录的空闲块之前。

30、和/或之后的空闲块进行逻辑合并,并将合并后的空闲块记录到记录的空闲块的大小与所述合并后的空闲块大小相等的空闲块桶中。0020 结合第一方面的第三种可能的实现方式,在第五种可能的实现方式中,当不存在记录的空闲块的大小与所述存储空间的大小相等的空闲块桶时,生成一空闲块桶用于记录所述存储空间对应的空闲块的大小、位置及数量,并建立所述生成的空闲块桶与所述存储空间对应的空闲块的对应关系。0021 结合第一方面,或第一方面的第一种可能的实现方式,或第一方面的第二种可能的实现方式,或第一方面的第三种可能的实现方式,或第一方面的第四种可能的实现方式,或第一方面的第五种可能的实现方式,在第六种可能的实现方式中,。

31、所述位置为包括所述第一空闲块的分片在硬盘文件中的位置,所述数量为所述第一空闲块分别在包括所述第一空闲块的分片中的数量;0022 则所述根据所述选择的所述第一空闲块桶中记录的所述第一空闲块的位置及数量,找到一个所述第一空闲块,包括:0023 根据所述选择的所述第一空闲块桶中记录的所述第一空闲块的位置及数量,定位说 明 书CN 102981964 A3/18页9一个包含所述第一空闲块的分片;0024 在所述定位的分片内查找所述第一空闲块,直到找到一个或多个所述第一空闲块。0025 结合第一方面的第六种可能的实现方式,在第七种可能的实现方式中,所述在所述定位的分片内查找所述第一空闲块,直到找到一个或。

32、多个所述第一空闲块,包括:0026 根据所述定位的分片的位图信息查找所述分片中未被数据占用且大小与所述第一空闲块的大小相等的空闲块,所述位图信息指示了所述分片中的空闲块是否被数据占用。0027 结合第一方面的第七种可能的实现方式,在第八种可能的实现方式中,所述空闲块的大小为基本块的大小的整数倍,所述基本块为所述硬盘的存储空间的存储单元;0028 所述位图信息中的每一位用于指示一个基本块是否被数据占用,则所述位图信息通过至少一个位指示所述分片中的空闲块是否被数据占用,所述位图信息存储在硬盘中。0029 结合第一方面的第八种可能的实现方式,在第九种可能的实现方式中,所述位图信息的每一位取值为第一数。

33、值或第二数值,所述第一数值指示基本块未被数据占用,所述第二数值指示基本块被数据占用。0030 本发明第二方面提供一种数据存储空间的管理系统,其可包括:0031 第一判断模块,用于当有第一数据需要存储时,根据各空闲块桶与空闲块大小的对应关系,判断是否存在第一空闲块桶,所述各空闲块桶中记录了不同的空闲块的大小、位置及数量,所述第一空闲块桶中记录了第一空闲块的大小、位置及数量,所述第一空闲块的大小大于或等于所述第一数据的大小;所述各空闲块桶与空闲块大小的对应关系为各空闲块桶中记录的空闲块的大小;0032 第一存储处理模块,用于当经所述第一判断模块的判断确定存在所述第一空闲块桶时,选择一个所述第一空闲。

34、块桶,根据所述选择的所述第一空闲块桶中记录的所述第一空闲块的位置及数量,查找所述第一空闲块,并将所述第一数据存入任一个查找到的所述第一空闲块中,以及将用于存储所述第一数据的所述第一空闲块的记录在所述第一空闲块桶中删除;0033 第二存储处理模块,用于当经所述第一判断模块的判断确定不存在所述第一空闲块桶时,将所述第一数据存储在硬盘文件的末尾。0034 在第一种可能的实现方式中,所述第一判断模块进一步包括:0035 第二判断模块,用于根据各空闲块与空闲块大小的对应关系,判断是否存在记录的空闲块的大小与所述第一数据的大小相等的空闲块桶,如果存在,则将记录的空闲块的大小与所述第一数据的大小相等的空闲块。

35、桶作为所述第一空闲块桶;0036 第三判断模块,用于当经所述第二判断模块的判断确定不存在记录的空闲块的大小与所述第一数据的大小相等的空闲块桶,判断是否存在记录的空闲块的大小大于所述第一数据的大小的空闲块桶,如果存在,则将所述记录的空闲块的大小大于所述第一数据的大小的空闲块桶作为所述第一空闲块桶。0037 结合第二方面的第一种可能的实现方式,在第二种可能的实现方式中,当所述记录的空闲块的大小大于所述第一空闲块的大小的空闲块桶作为所述第一空闲块桶,该管理系统还包括:说 明 书CN 102981964 A4/18页100038 第三存储处理模块,用于当所述第一存储处理模块将所述第一数据存入任一个查找。

36、到的所述第一空闲块中之后,以及当所述第一存储处理模块将用于存储所述第一数据的所述第一空闲块的记录在所述第一空闲块桶中删除之前,将用于存储所述第一数据的所述第一空闲块中剩余的空闲部分作为新的空闲块,记录所述新的空闲块大小对应的空闲块桶中。0039 结合第二方面,或第二方面的第一种可能的实现方式,或第二方面的第二种可能的实现方式,在第三种可能的实现方式中,本发明的数据存储空间的管理系统还可包括:0040 第一删除处理模块,用于当有第二数据被删除时,将用于存储所述第二数据的存储空间作为空闲块记录到记录的空闲块的大小与该存储空间大小相等的空闲块桶中。0041 结合第二方面的第三种可能的实现方式,在第四。

37、种可能的实现方式中,本发明的数据存储空间的管理系统还包括:0042 第四判断模块,用于当所述第一删除处理模块在将用于存储所述第二数据的存储空间作为空闲块记录到记录的空闲块的大小与该存储空间大小相等的空闲块桶中之后,判断所述被记录的空闲块之前和/或之后是否有空闲块;0043 第二删除处理模块,用于当经所述第四判断模块的判断确定所述被记录的空闲块之前和/或之后有空闲块,则将所述记录的空闲块和所述记录的空闲块之前和/或之后的空闲块进行逻辑合并,并将合并后的空闲块记录到记录的空闲块的大小与所述合并后的空闲块大小相等的空闲块桶中。0044 结合第二方面的第三种可能的实现方式,在第五种可能的实现方式中,所。

38、述第一删除处理模块还用于当不存在记录的空闲块的大小与所述存储空间的大小相等的空闲块桶时,生成一空闲块桶用于记录所述存储空间对应的空闲块的大小、位置及数量,并建立所述生成的空闲块桶与所述存储空间对应的空闲块的对应关系。0045 结合第二方面,或第二方面的第一种可能的实现方式,或第二方面的第二种可能的实现方式,或第二方面的第三种可能的实现方式,或第二方面的第四种可能的实现方式,或第二方面的第五种可能的实现方式,在第六种可能的实现方式中,所述位置为包括所述第一空闲块的分片在硬盘文件中的位置,所述数量为所述第一空闲块分别在包括所述第一空闲块的分片中的数量;0046 则所述第一存储处理模块包括:0047。

39、 选择模块,用于选择一个所述第一空闲块桶;0048 分片定位模块,用于根据所述选择模块选择的所述第一空闲块桶中记录的所述第一空闲块的位置及数量,定位一个包含所述第一空闲块的分片;0049 空闲块查找模块,用于在所述分片定位模块定位的分片内查找所述第一空闲块,直到找到一个或多个所述第一空闲块;0050 存储模块,用于将所述第一数据存入任一个查找到的所述第一空闲块中;0051 删除模块,用于将用于存储所述第一数据的所述第一空闲块的记录在所述第一空闲块桶中删除。0052 结合第二方面的第六种可能的实现方式,在第七种可能的实现方式中,所述空闲块查找模块具体用于根据所述定位的分片的位图信息查找所述分片中未被数据占用且大小与所述第一空闲块的大小相等的空闲块,所述位图信息指示了所述分片中的空闲块是否说 明 书CN 102981964 A10。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1