本发明专利技术实施例公开了数据存储空间的管理方法及系统,其中所述方法可包括:当有第一数据需要存储时,根据各空闲块桶与空闲块大小的对应关系,判断是否存在第一空闲块桶;当存在所述第一空闲块桶时,选择一个所述第一空闲块桶,根据所述选择的所述第一空闲块桶中记录的所述第一空闲块的位置及数量,查找所述第一空闲块,并将所述第一数据存入任一个查找到的所述第一空闲块中,以及将用于存储所述第一数据的所述第一空闲块的记录在所述第一空闲块桶中删除;当不存在所述第一空闲块桶时,将所述第一数据存储在硬盘文件的末尾。实施本发明专利技术实施例,可提高存储空间管理的效率,并避免系统产生大量的磁盘碎片。
【技术实现步骤摘要】
本专利技术涉及分布式存储领域,尤其涉及分布式存储领域中数据存储空间的管理方法及系统。
技术介绍
当前,在key-value系统中,其数据库(DB, Data Base)的空间管理方案一般采用一个空闲块数组的方式进行。其具体方案如下将整个存储空间按照一定的大小(如4K)划分基本块,所有存储数据的大小都是该基本块的整数倍。同时初始化一个空闲块数组用来记录硬盘上的空闲块(硬盘上未被数据占用的空间),该空闲块数组是一个排序数组,按照其管理的空闲块的大小进行排序,如空闲块数组中记录了 4K,8K,24K大小的空闲块,则4K 的放在数组的第一个元素,24K的空闲块放在数组的第三个元素。当有数据删除时,DB释放该数据的存储空间,并将该存储空间需记录在空闲块数组中,同时空闲块数组会根据其内部的空闲块的大小顺序重新进行排序(如图Ia所示)。当有新的数据要存储时,系统首先遍历空闲块数组,查找可用的空闲块,如果找到,则将数据存储在该空闲块中,同时在空闲块数组中删除该空闲块记录。该空闲块后续的数组元素都前移一个位置(如图Ib所示)。 如果在空闲块数组中没有找到合适的空闲块(即没有的大小与数据相等的空闲块时),则在DB文件末尾进行追加。上述空闲块数组虽然可管理硬盘上的空闲块,但是其存在如下缺陷由于空闲块以大小以排序的数组形式存放,因此,在分配空闲块(Ib)和回收空闲块(Ia)时都需要使用移动操作来完成数组元素的移动;此操作在性能较差,并且在分配空闲块时,需要首先遍历空闲块数组效率低下;申请较大空间找不到合适的空闲块时,而不能利用已有的多个空闲块而是通过在 DB文件末尾追加,这样造成空闲块空间的浪费,并且容易使硬盘产生碎片。
技术实现思路
本专利技术实施例提供数据存储空间的管理方法及系统,可提高存储空间管理的效率,并避免系统产生大量的磁盘碎片。本专利技术第一方面提供一种数据存储空间的管理方法,其可包括当有第一数据需要存储时,根据各空闲块桶与空闲块大小的对应关系,判断是否存在第一空闲块桶,所述各空闲块桶中分别记录了不同的空闲块的大小、位置及数量,所述第一空闲块桶中记录了第一空闲块的大小、位置及数量,所述第一空闲块的大小大于或等于所述第一数据的大小;所述各空闲块桶与空闲块大小的对应关系为各空闲块桶中记录的空闲块的大小;当存在所述第一空闲块桶时,选择一个所述第一空闲块桶,根据所述选择的所述第一空闲块桶中记录的所述第一空闲块的位置及数量,查找所述第一空闲块,并将所述第一数据存入任一个查找到的所述第一空闲块中,以及将用于存储所述第一数据的所述第一空闲块的记录在所述第一空闲块桶中删除;当不存在所述第一空闲块桶时,将所述第一数据存储在硬盘文件的末尾。在第一种可能的实现方式中,所述根据各空闲块桶与空闲块大小的对应关系,判断所述空闲块桶中是否存在第一空闲块桶,可包括根据各空闲块桶与空闲块大小的对应关系,判断是否存在记录的空闲块的大小与所述第一数据的大小相等的空闲块桶,如果存在,则将记录的空闲块的大小与所述第一数据大小相等的空闲块桶作为所述第一空闲块桶;如果不存在记录的空闲块的大小与所述第一数据大小相等的空闲块桶,判断是否存在记录的空闲块的大小大于所述第一数据大小的空闲块桶,如果存在,则将所述记录的空闲块的大小大于所述第一数据大小的空闲块桶作为所述第一空闲块桶。结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,当将所述记录的空闲块的大小大于所述第一空闲块的大小的空闲块桶作为所述第一空闲块桶,则将所述第一数据存入任一个查找到的所述第一空闲块中之后,以及将用于存储所述第一数据的所述第一空闲块的记录在所述第一空闲块桶中删除之前,还可包括将用于存储所述第一数据的所述第一空闲块中剩余的空闲部分作为新的空闲块, 记录所述新的空闲块大小对应的空闲块桶中。结合第一方面,或第一方面的第一种可能的实现方式,或第一方面的第二种可能的实现方式,在第三种可能的实现方式中,本专利技术的数据存储空间的管理方法还可包括当有第二数据被删除时,将用于存储所述第二数据的存储空间作为空闲块记录到记录的空闲块的大小与该存储空间大小相等的空闲块桶中。结合第一方面的第三种可能的实现方式,在第四种可能的实现方式中,在将用于存储所述第二数据的存储空间作为空闲块记录到记录的空闲块的大小与该存储空间大小相等的空闲块桶中之后,还包括判断所述被记录的空闲块之前和/或之后是否有空闲块,当所述被记录的空闲块之前和/或之后有空闲块,则将所述记录的空闲块和所述记录的空闲块之前和/或之后的空闲块进行逻辑合并,并将合并后的空闲块记录到记录的空闲块的大小与所述合并后的空闲块大小相等的空闲块桶中。结合第一方面的第三种可能的实现方式,在第五种可能的实现方式中,当不存在记录的空闲块的大小与所述存储空间的大小相等的空闲块桶时,生成一空闲块桶用于记录所述存储空间对应的空闲块的大小、位置及数量,并建立所述生成的空闲块桶与所述存储空间对应的空闲块的对应关系。结合第一方面,或第一方面的第一种可能的实现方式,或第一方面的第二种可能的实现方式,或第一方面的第三种可能的实现方式,或第一方面的第四种可能的实现方式, 或第一方面的第五种可能的实现方式,在第六种可能的实现方式中,所述位置为包括所述第一空闲块的分片在硬盘文件中的位置,所述数量为所述第一空闲块分别在包括所述第一空闲块的分片中的数量;则所述根据所述选择的所述第一空闲块桶中记录的所述第一空闲块的位置及数量,找到一个所述第一空闲块,包括根据所述选择的所述第一空闲块桶中记录的所述第一空闲块的位置及数量,定位一个包含所述第一空闲块的分片;在所述定位的分片内查找所述第一空闲块,直到找到一个或多个所述第一空闲块。结合第一方面的第六种可能的实现方式,在第七种可能的实现方式中,所述在所述定位的分片内查找所述第一空闲块,直到找到一个或多个所述第一空闲块,包括根据所述定位的分片的位图信息查找所述分片中未被数据占用且大小与所述第一空闲块的大小相等的空闲块,所述位图信息指示了所述分片中的空闲块是否被数据占用。结合第一方面的第七种可能的实现方式,在第八种可能的实现方式中,所述空闲块的大小为基本块的大小的整数倍,所述基本块为所述硬盘的存储空间的存储单元;所述位图信息中的每一位用于指示一个基本块是否被数据占用,则所述位图信息通过至少一个位指示所述分片中的空闲块是否被数据占用,所述位图信息存储在硬盘中。结合第一方面的第八种可能的实现方式,在第九种可能的实现方式中,所述位图信息的每一位取值为第一数值或第二数值,所述第一数值指示基本块未被数据占用,所述第二数值指示基本块被数据占用。本专利技术第二方面提供一种数据存储空间的管理系统,其可包括第一判断模块,用于当有第一数据需要存储时,根据各空闲块桶与空闲块大小的对应关系,判断是否存在第一空闲块桶,所述各空闲块桶中记录了不同的空闲块的大小、位置及数量,所述第一空闲块桶中记录了第一空闲块的大小、位置及数量,所述第一空闲块的大小大于或等于所述第一数据的大小;所述各空闲块桶与空闲块大小的对应关系为各空闲块桶中记录的空闲块的大小;第一存储处理模块,用于当经所述第一判断模块的判断确定存在所述第一空闲块桶时,选择一个所述第一空闲块桶,根据所述选择的所述第一空闲块桶中记录的所述第一空闲块本文档来自技高网...
【技术保护点】
一种数据存储空间的管理方法,其特征在于,包括:当有第一数据需要存储时,根据各空闲块桶与空闲块大小的对应关系,判断是否存在第一空闲块桶,所述各空闲块桶中分别记录了不同的空闲块的大小、位置及数量,所述第一空闲块桶中记录了第一空闲块的大小、位置及数量,所述第一空闲块的大小大于或等于所述第一数据的大小;所述各空闲块桶与空闲块大小的对应关系为各空闲块桶中记录的空闲块的大小;当存在所述第一空闲块桶时,选择一个所述第一空闲块桶,根据所述选择的所述第一空闲块桶中记录的所述第一空闲块的位置及数量,查找所述第一空闲块,并将所述第一数据存入任一个查找到的所述第一空闲块中,以及将用于存储所述第一数据的所述第一空闲块的记录在所述第一空闲块桶中删除;当不存在所述第一空闲块桶时,将所述第一数据存储在硬盘文件的末尾。
【技术特征摘要】
【专利技术属性】
技术研发人员:张雷,熊四兵,
申请(专利权)人:华为技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。