CN102981964A - 数据存储空间的管理方法及系统 - Google Patents

数据存储空间的管理方法及系统 Download PDF

Info

Publication number
CN102981964A
CN102981964A CN2012104306816A CN201210430681A CN102981964A CN 102981964 A CN102981964 A CN 102981964A CN 2012104306816 A CN2012104306816 A CN 2012104306816A CN 201210430681 A CN201210430681 A CN 201210430681A CN 102981964 A CN102981964 A CN 102981964A
Authority
CN
China
Prior art keywords
free block
bucket
data
block
free
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
CN2012104306816A
Other languages
English (en)
Other versions
CN102981964B (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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201210430681.6A priority Critical patent/CN102981964B/zh
Publication of CN102981964A publication Critical patent/CN102981964A/zh
Application granted granted Critical
Publication of CN102981964B publication Critical patent/CN102981964B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

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

Description

数据存储空间的管理方法及系统
技术领域
本发明涉及分布式存储领域,尤其涉及分布式存储领域中数据存储空间的管理方法及系统。
背景技术
当前,在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在所述定位的分片内查找所述第一空闲块,直到找到一个或多个所述第一空闲块时,具体执行如下步骤:
根据所述定位的分片的位图信息查找所述分片中未被数据占用且大小与所述第一空闲块的大小相等的空闲块,所述位图信息指示了所述分片中的空闲块是否被数据占用。
在一些可行的实施方式中,所述空闲块的大小为基本块的大小的整数倍,所述基本块为所述硬盘的存储空间的存储单元;
所述位图信息中的每一位用于指示一个基本块是否被数据占用,则所述位图信息通过至少一个位指示所述分片中的空闲块是否被数据占用,所述位图信息存储在硬盘中。
在一些可行的实施方式中,所述位图信息的每一位取值为第一数值或第二数值,所述第一数值指示基本块未被数据占用,所述第二数值指示基本块被数据占用。
综上所述,在本发明的一些可行的实施方式中,当有第一数据需要存储时,根据各空闲块桶与空闲块大小的对应关系,判断是否存在第一空闲块桶,所述各空闲块桶中分别记录了不同的空闲块的大小、位置及数量,所述第一空闲块桶中记录了第一空闲块的大小、位置及数量,所述第一空闲块的大小大于或等于所述第一数据的大小;所述各空闲块桶与空闲块大小的对应关系为各空闲块桶中记录的空闲块的大小;当存在所述第一空闲块桶时,选择一个所述第一空闲块桶,根据所述选择的所述第一空闲块桶中记录的所述第一空闲块的位置及数量,查找所述第一空闲块,并将所述第一数据存入任一个查找到的所述第一空闲块中,以及将用于存储所述第一数据的所述第一空闲块的记录在所述第一空闲块桶中删除;当不存在所述第一空闲块桶时,将所述第一数据存储在硬盘文件的末尾。由此可见,本发明的实施例通过建立空闲块桶与空闲块大小的对应关系,使得在进行数据存储时,不需要遍历空闲块桶,而直接到对应的空闲块桶获取空闲块的位置,以及不需要改变空闲块桶中的元素的位置(各空闲块桶不需要前移或者后移),由此提高了存储空间的管理效率,并且,在查找空闲块时,本发明实施例可提供大小大于或等于数据的大小的空闲块给数据,只有当系统中没有可用于存储数据的空闲块时,才将数据存储在硬盘文件的末尾,由此可充分利用磁盘的空闲空间,减少了磁盘碎片的产生。另外,本发明实施例,在回收空闲块时,可判断所述被记录的空闲块之前和/或之后是否有空闲块,当所述被记录的空闲块之前和/或之后有空闲块,则将所述记录的空闲块和所述记录的空闲块之前和/或之后的空闲块进行逻辑合并,并将合并后的空闲块记录到记录的空闲块的大小与所述合并后的空闲块大小相等的空闲块桶中,由此可使存储较大数据时,能充分利用已有存储空间,避免存储空间的浪费,进一步减少磁盘碎片的产生。另外,本发明实施例可通过位图信息来指示基本块是否被数据占用,且所述位图信息可直接存在硬盘中,不会存在因为异常情况导致空闲块数据丢失的情况。并且采用位图信息代替空闲块数组指示空闲块是否被数据占用能节省大量的内存空间。
以上所列举的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。

Claims (30)

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

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210430681.6A CN102981964B (zh) 2012-11-01 2012-11-01 数据存储空间的管理方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210430681.6A CN102981964B (zh) 2012-11-01 2012-11-01 数据存储空间的管理方法及系统

Publications (2)

Publication Number Publication Date
CN102981964A true CN102981964A (zh) 2013-03-20
CN102981964B CN102981964B (zh) 2016-08-03

Family

ID=47856016

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210430681.6A Expired - Fee Related CN102981964B (zh) 2012-11-01 2012-11-01 数据存储空间的管理方法及系统

Country Status (1)

Country Link
CN (1) CN102981964B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104933051A (zh) * 2014-03-17 2015-09-23 腾讯科技(深圳)有限公司 文件存储空间回收方法和装置
CN105335394A (zh) * 2014-07-14 2016-02-17 阿里巴巴集团控股有限公司 一种基于数据库的数据控制方法及系统
CN108064377A (zh) * 2017-08-08 2018-05-22 深圳前海达闼云端智能科技有限公司 一种多系统共享内存的管理方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101140531A (zh) * 2007-10-10 2008-03-12 中兴通讯股份有限公司 快速申请内存的方法
CN101221536A (zh) * 2008-01-25 2008-07-16 中兴通讯股份有限公司 嵌入式系统的内存管理方法及装置
CN102063385A (zh) * 2010-12-23 2011-05-18 深圳市金宏威实业发展有限公司 一种内存管理方法和系统
US20110145538A1 (en) * 2008-08-17 2011-06-16 S. Grants Co., Ltd. Storage region management method, storage region allocation method and program

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101140531A (zh) * 2007-10-10 2008-03-12 中兴通讯股份有限公司 快速申请内存的方法
CN101221536A (zh) * 2008-01-25 2008-07-16 中兴通讯股份有限公司 嵌入式系统的内存管理方法及装置
US20110145538A1 (en) * 2008-08-17 2011-06-16 S. Grants Co., Ltd. Storage region management method, storage region allocation method and program
CN102063385A (zh) * 2010-12-23 2011-05-18 深圳市金宏威实业发展有限公司 一种内存管理方法和系统

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104933051A (zh) * 2014-03-17 2015-09-23 腾讯科技(深圳)有限公司 文件存储空间回收方法和装置
CN104933051B (zh) * 2014-03-17 2019-02-26 腾讯科技(深圳)有限公司 文件存储空间回收方法和装置
CN105335394A (zh) * 2014-07-14 2016-02-17 阿里巴巴集团控股有限公司 一种基于数据库的数据控制方法及系统
CN105335394B (zh) * 2014-07-14 2019-08-13 阿里巴巴集团控股有限公司 一种基于数据库的数据控制方法及系统
CN108064377A (zh) * 2017-08-08 2018-05-22 深圳前海达闼云端智能科技有限公司 一种多系统共享内存的管理方法及装置
WO2019028682A1 (zh) * 2017-08-08 2019-02-14 深圳前海达闼云端智能科技有限公司 一种多系统共享内存的管理方法及装置
US11281388B2 (en) 2017-08-08 2022-03-22 Cloudminds (Shenzhen) Robotics Systems Co., Ltd. Method for managing a multi-system shared memory, electronic device and non-volatile computer-readable storage medium
CN108064377B (zh) * 2017-08-08 2023-01-24 深圳前海达闼云端智能科技有限公司 一种多系统共享内存的管理方法及装置

Also Published As

Publication number Publication date
CN102981964B (zh) 2016-08-03

Similar Documents

Publication Publication Date Title
CN110825748B (zh) 利用差异化索引机制的高性能和易扩展的键值存储方法
JP6014925B2 (ja) メモリ回収方法および装置
CN112395212B (zh) 减少键值分离存储系统的垃圾回收和写放大的方法及系统
CN102591789B (zh) 存储空间回收方法及装置
CN110399310A (zh) 一种存储空间的回收方法及装置
CN102495777B (zh) 硬盘故障处理方法及处理装置
CN112131140B (zh) 基于ssd的支持高效存储空间管理的键值分离存储方法
CN103164490A (zh) 一种不固定长度数据的高效存储实现方法和装置
CN106502587A (zh) 磁盘数据管理方法和磁盘控制装置
CN102314485A (zh) 哈希表添加、查找和删除方法及装置
CN110888837B (zh) 对象存储小文件归并方法及装置
CN103984641A (zh) 一种基于精简配置技术的存储空间回收方法及其装置
CN103995855A (zh) 存储数据的方法和装置
CN104238962A (zh) 向缓存中写入数据的方法及装置
CN113626431A (zh) 一种基于lsm树的延迟垃圾回收的键值分离存储方法及系统
CN103914483A (zh) 文件存储方法、装置及文件读取方法、装置
CN103970669A (zh) 用于加速在固态设备中的回收操作的物理到逻辑地址映射
CN109407985B (zh) 一种数据管理的方法以及相关装置
CN104933051A (zh) 文件存储空间回收方法和装置
CN102981964A (zh) 数据存储空间的管理方法及系统
CN113253932B (zh) 一种分布式存储系统的读写控制方法和系统
CN104424222A (zh) 数据库索引方法及装置
CN110688065A (zh) 一种存储空间管理方法、系统、电子设备及存储介质
CN106294189B (zh) 内存碎片整理方法及装置
CN103530067A (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
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20160803

Termination date: 20181101

CF01 Termination of patent right due to non-payment of annual fee