掌桥专利:专业的专利平台
掌桥专利
首页

一种磁盘空间管理方法、装置、设备及存储介质

文献发布时间:2023-06-19 13:45:04


一种磁盘空间管理方法、装置、设备及存储介质

技术领域

本发明涉及数据存储技术领域,特别涉及一种磁盘空间管理方法、装置、设备及存储介质。

背景技术

随着存储技术的发展,特别是对于分布式存储系统,本地对象存储采用BlueStore逐渐成为主流趋势,分布式存储性能也因此获得极大的提高。相较于原来的FileStore,BlueStore摒弃了传统的本地文件系统,而直接使用裸磁盘作为存储介质,需要自行管理磁盘空间的分配与回收。磁盘空间管理方法决定了存储系统中磁盘空间的分配效率,进而影响分布式存储的性能高低。然而,现有的磁盘空间管理方法过于单一化,并不能对分布式存储系统的裸磁盘进行行之有效的管理,分配效率较低,性能并不理想,极大的影响了分布式存储的稳定性,成为分布式存储的性能瓶颈。

因此,如何提供一种高分配性能的磁盘空间管理方法是本领域技术人员亟待解决的技术问题。

发明内容

有鉴于此,本发明的目的在于提供一种磁盘空间管理方法、装置、设备及存储介质,能够极大提高磁盘空间分配性能及存储系统稳定性。其具体方案如下:

本申请的第一方面提供了一种磁盘空间管理方法,包括:

获取为目标数据分配磁盘空间的分配指令;

根据所述分配指令从对大块磁盘空间进行管理的第一存储结构中确定出与所述目标数据的数据量大小相匹配的目标磁盘空间,如果所述第一存储结构中不存在相匹配的所述目标磁盘空间,则从对小块磁盘进行管理的第二存储结构中确定出所述目标磁盘空间;

将所述目标数据落盘至所述目标磁盘空间中,并对所述第一存储结构和所述第二存储结构中的磁盘空间进行更新。

可选的,所述根据所述分配指令从对大块磁盘空间进行管理的第一存储结构中确定出与所述目标数据的数据量大小相匹配的目标磁盘空间,包括:

根据所述分配指令遍历对大块磁盘空间进行管理的平衡二叉树,以从所述平衡二叉树中确定出与所述目标数据的数据量大小相匹配的目标节点;

将与所述目标节点对应的磁盘空间确定为所述目标磁盘空间。

可选的,所述平衡二叉树的每一个节点代表一块连续磁盘空间,各个节点根据对应的磁盘空间大小进行降序排列。

可选的,所述如果所述第一存储结构中不存在相匹配的所述目标磁盘空间,则从对小块磁盘进行管理的第二存储结构中确定出所述目标磁盘空间,包括:

如果所述平衡二叉树中不存在相匹配的所述目标磁盘空间,则从对小块磁盘进行管理的位图结构中确定出所述目标磁盘空间。

可选的,所述根据所述分配指令遍历对大块磁盘空间进行管理的平衡二叉树,以从所述平衡二叉树中确定出与所述目标数据的数据量大小相匹配的目标节点之后,还包括:

当所述平衡二叉树中的节点数超过预设阈值,则从所述平衡二叉树的根据对应的磁盘空间大小进行降序排列的节点中清除位于尾部节点的磁盘空间,并利用所述位图结构对清除的磁盘空间进行管理。

可选的,所述磁盘空间管理方法,还包括:

创建与所述第一存储结构和所述第二存储结构之间具有映射关系的空闲空间管理表和已分配空间管理表;

根据所述空闲空间管理表和所述已分配空间管理表确定与所述目标数据的数据量大小相匹配的所述目标磁盘空间。

可选的,所述对所述第一存储结构和所述第二存储结构中的磁盘空间进行更新,包括:

通过更新所述空闲空间管理表和所述已分配空间管理表的方式,以对所述第一存储结构和所述第二存储结构中的磁盘空间进行更新。

本申请的第二方面提供了一种磁盘空间管理装置,包括:

获取模块,用于获取为目标数据分配磁盘空间的分配指令;

匹配模块,用于根据所述分配指令从对大块磁盘空间进行管理的第一存储结构中确定出与所述目标数据的数据量大小相匹配的目标磁盘空间,如果所述第一存储结构中不存在相匹配的所述目标磁盘空间,则从对小块磁盘进行管理的第二存储结构中确定出所述目标磁盘空间;

更新模块,用于将所述目标数据落盘至所述目标磁盘空间中,并对所述第一存储结构和所述第二存储结构中的磁盘空间进行更新。

本申请的第三方面提供了一种电子设备,所述电子设备包括处理器和存储器;其中所述存储器用于存储计算机程序,所述计算机程序由所述处理器加载并执行以实现前述磁盘空间管理方法。

本申请的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现前述磁盘空间管理方法。

本申请中,先获取为目标数据分配磁盘空间的分配指令;然后根据所述分配指令从对大块磁盘空间进行管理的第一存储结构中确定出与所述目标数据的数据量大小相匹配的目标磁盘空间,如果所述第一存储结构中不存在相匹配的所述目标磁盘空间,则从对小块磁盘进行管理的第二存储结构中确定出所述目标磁盘空间;最后将所述目标数据落盘至所述目标磁盘空间中,并对所述第一存储结构和所述第二存储结构中的磁盘空间进行更新。可见,本申请通过利用对大块磁盘空间进行管理的第一存储结构和对小块磁盘进行管理的第二存储结构对磁盘空间进行管理,当获取到分配指令,先从第一存储结构中确定与目标数据相匹配的磁盘空间,如果匹配不到再从第二存储结构中进行匹配,极大提高磁盘空间分配性能及存储系统稳定性。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本申请提供的一种磁盘空间管理方法流程图;

图2为本申请提供的一种磁盘空间管理装置结构示意图;

图3为本申请提供的一种磁盘空间管理电子设备结构图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

随着存储技术的发展,特别是对于分布式存储系统,本地对象存储采用BlueStore逐渐成为主流趋势,分布式存储性能也因此获得极大的提高。相较于原来的FileStore,BlueStore摒弃了传统的本地文件系统,而直接使用裸磁盘作为存储介质,需要自行管理磁盘空间的分配与回收。磁盘空间管理方法决定了存储系统中磁盘空间的分配效率,进而影响分布式存储的性能高低。然而,现有的磁盘空间管理方法过于单一化,并不能对分布式存储系统的裸磁盘进行行之有效的管理,分配效率较低,性能并不理想,极大的影响了分布式存储的稳定性,成为分布式存储的性能瓶颈。针对上述技术缺陷,本申请提供一种磁盘空间管理方案,通过利用对大块磁盘空间进行管理的第一存储结构和对小块磁盘进行管理的第二存储结构对磁盘空间进行管理,当获取到分配指令,先从第一存储结构中确定与目标数据相匹配的磁盘空间,如果匹配不到再从第二存储结构中进行匹配,极大提高磁盘空间分配性能及存储系统稳定性。

图1为本申请实施例提供的一种磁盘空间管理方法流程图。参见图1所示,该磁盘空间管理方法包括:

S11:获取为目标数据分配磁盘空间的分配指令。

本实施例中,获取为目标数据分配磁盘空间的分配指令,所述目标数据即为待落盘数据。在此之前,可以创建与第一存储结构和第二存储结构之间具有映射关系的空闲空间管理表和已分配空间管理表,后续根据所述空闲空间管理表和所述已分配空间管理表确定与所述目标数据的数据量大小相匹配的目标磁盘空间。也即在磁盘初始化时,分别创建一张磁盘空闲空间管理表以及一张磁盘已分配空间管理表,磁盘空闲空间管理表记录磁盘的连续空闲空间,磁盘已分配空间管理表记录维护磁盘的已分配空间。存储系统数据落盘,需要分配相应磁盘空间时,通过磁盘空闲空间管理表以及磁盘已分配空间管理表进行查找匹配以及维护更新。

S12:根据所述分配指令从对大块磁盘空间进行管理的第一存储结构中确定出与所述目标数据的数据量大小相匹配的目标磁盘空间,如果所述第一存储结构中不存在相匹配的所述目标磁盘空间,则从对小块磁盘进行管理的第二存储结构中确定出所述目标磁盘空间。

本实施例中,根据所述分配指令从对大块磁盘空间进行管理的第一存储结构中确定出与所述目标数据的数据量大小相匹配的目标磁盘空间,如果所述第一存储结构中不存在相匹配的所述目标磁盘空间,则从对小块磁盘进行管理的第二存储结构中确定出所述目标磁盘空间。一个设计良好的磁盘空间管理方法,需要兼顾空间和时间效率,本实施例中,所述第一存储结构为平衡二叉树(AVL树,Balanced Binary Tree),所述第二存储结构为位图结构(Bitmap),融合AVL树和位图Bitmap进行磁盘空间管理。步骤S12具体为:根据所述分配指令遍历对大块磁盘空间进行管理的平衡二叉树,以从所述平衡二叉树中确定出与所述目标数据的数据量大小相匹配的目标节点,并将与所述目标节点对应的磁盘空间确定为所述目标磁盘空间。如果所述平衡二叉树中不存在相匹配的所述目标磁盘空间,则从对小块磁盘进行管理的位图结构中确定出所述目标磁盘空间。其中,首先充分运用AVL树对大块磁盘空间管理的性能优势管理磁盘空间,提高空间分配效率。对于大量的小块空间,如果仍利用AVL树进行管理,一方面需要大量的树节点来记录磁盘空间的分配情况,内存占用自然变高,另一方面由于AVL树具有大量节点,分配大块磁盘空间需要多次查找匹配,分配效率变低。此时,融合在小块磁盘空间分配上有着较好的性能优势及稳定性的位图Bitmap来管理碎片化程度较高的磁盘空间。两种不同策略组合管理磁盘空间,在各种场景下均能快速查找匹配存储系统所需磁盘空间,提供高效的磁盘空间分配性能,进而提高分布式存储的稳定性和性能。

可以理解,所述平衡二叉树的每一个节点代表一块连续磁盘空间,同时将各个节点根据对应的磁盘空间大小进行降序排列,便于匹配。同时限制所述平衡二叉树的节点数,当所述平衡二叉树中的节点数超过预设阈值,则从所述平衡二叉树的根据对应的磁盘空间大小进行降序排列的节点中清除位于尾部节点的磁盘空间,并利用所述位图结构对清除的磁盘空间进行管理。也即当所述平衡二叉树的节点数达到限制时,按磁盘空间大小进行末位淘汰,使所述平衡二叉树上的节点始终是存储系统磁盘空间中最大的一批。

S13:将所述目标数据落盘至所述目标磁盘空间中,并对所述第一存储结构和所述第二存储结构中的磁盘空间进行更新。

本实施例中,将所述目标数据落盘至所述目标磁盘空间中,并对所述第一存储结构和所述第二存储结构中的磁盘空间进行更新。基于前述步骤,磁盘初始化时创建的磁盘空闲空间管理表以及磁盘已分配空间管理表,通过更新所述空闲空间管理表和所述已分配空间管理表的方式,以对所述第一存储结构和所述第二存储结构中的磁盘空间进行更新。存储系统数据落盘,需要分配相应磁盘空间时,从磁盘空闲空间管理表中查找合适的连续磁盘空间,分配给待落盘数据。从磁盘空闲空间管理表中查找时,先从AVL树上查找匹配所需磁盘空间,如果AVL树上有匹配项,则直接将该空闲磁盘空间返回给上层,完成数据落盘。如果AVL树上无匹配项,则从位图Bitmap管理的磁盘空间中查找匹配,进行数据落盘操作。当相应空闲磁盘空间完成分配,数据落盘后,维护更新磁盘空闲空间管理表和磁盘已分配空间管理表。

可见,本申请实施例先获取为目标数据分配磁盘空间的分配指令;然后根据所述分配指令从对大块磁盘空间进行管理的第一存储结构中确定出与所述目标数据的数据量大小相匹配的目标磁盘空间,如果所述第一存储结构中不存在相匹配的所述目标磁盘空间,则从对小块磁盘进行管理的第二存储结构中确定出所述目标磁盘空间;最后将所述目标数据落盘至所述目标磁盘空间中,并对所述第一存储结构和所述第二存储结构中的磁盘空间进行更新。本申请实施例通过利用对大块磁盘空间进行管理的第一存储结构和对小块磁盘进行管理的第二存储结构对磁盘空间进行管理,当获取到分配指令,先从第一存储结构中确定与目标数据相匹配的磁盘空间,如果匹配不到再从第二存储结构中进行匹配,极大提高磁盘空间分配性能及存储系统稳定性。

参见图2所示,本申请实施例还相应公开了一种磁盘空间管理装置,包括:

获取模块11,用于获取为目标数据分配磁盘空间的分配指令;

匹配模块12,用于根据所述分配指令从对大块磁盘空间进行管理的第一存储结构中确定出与所述目标数据的数据量大小相匹配的目标磁盘空间,如果所述第一存储结构中不存在相匹配的所述目标磁盘空间,则从对小块磁盘进行管理的第二存储结构中确定出所述目标磁盘空间;

更新模块13,用于将所述目标数据落盘至所述目标磁盘空间中,并对所述第一存储结构和所述第二存储结构中的磁盘空间进行更新。

可见,本申请实施例先获取为目标数据分配磁盘空间的分配指令;然后根据所述分配指令从对大块磁盘空间进行管理的第一存储结构中确定出与所述目标数据的数据量大小相匹配的目标磁盘空间,如果所述第一存储结构中不存在相匹配的所述目标磁盘空间,则从对小块磁盘进行管理的第二存储结构中确定出所述目标磁盘空间;最后将所述目标数据落盘至所述目标磁盘空间中,并对所述第一存储结构和所述第二存储结构中的磁盘空间进行更新。本申请实施例通过利用对大块磁盘空间进行管理的第一存储结构和对小块磁盘进行管理的第二存储结构对磁盘空间进行管理,当获取到分配指令,先从第一存储结构中确定与目标数据相匹配的磁盘空间,如果匹配不到再从第二存储结构中进行匹配,极大提高磁盘空间分配性能及存储系统稳定性。

在一些具体实施例中,所述匹配模块11,具体包括:

第一匹配单元,用于根据所述分配指令遍历对大块磁盘空间进行管理的平衡二叉树,以从所述平衡二叉树中确定出与所述目标数据的数据量大小相匹配的目标节点,并将与所述目标节点对应的磁盘空间确定为所述目标磁盘空间;

第二匹配单元,用于如果所述平衡二叉树中不存在相匹配的所述目标磁盘空间,则从对小块磁盘进行管理的位图结构中确定出所述目标磁盘空间。

在一些具体实施例中,所述磁盘空间管理装置还包括:

清除模块,用于当所述平衡二叉树中的节点数超过预设阈值,则从所述平衡二叉树的根据对应的磁盘空间大小进行降序排列的节点中清除位于尾部节点的磁盘空间,并利用所述位图结构对清除的磁盘空间进行管理;

创建模块,用于创建与所述第一存储结构和所述第二存储结构之间具有映射关系的空闲空间管理表和已分配空间管理表;

管理模块,用于根据所述空闲空间管理表和所述已分配空间管理表确定与所述目标数据的数据量大小相匹配的所述目标磁盘空间;

相应的,所述更新模块13,具体用于通过更新所述空闲空间管理表和所述已分配空间管理表的方式,以对所述第一存储结构和所述第二存储结构中的磁盘空间进行更新。

进一步的,本申请实施例还提供了一种电子设备。图3是根据一示例性实施例示出的电子设备20结构图,图中的内容不能认为是对本申请的使用范围的任何限制。

图3为本申请实施例提供的一种电子设备20的结构示意图。该电子设备20,具体可以包括:至少一个处理器21、至少一个存储器22、电源23、通信接口24、输入输出接口25和通信总线26。其中,所述存储器22用于存储计算机程序,所述计算机程序由所述处理器21加载并执行,以实现前述任一实施例公开的磁盘空间管理方法中的相关步骤。

本实施例中,电源23用于为电子设备20上的各硬件设备提供工作电压;通信接口24能够为电子设备20创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适用于本申请技术方案的任意通信协议,在此不对其进行具体限定;输入输出接口25,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。

另外,存储器22作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,其上所存储的资源可以包括操作系统221、计算机程序222及数据223等,存储方式可以是短暂存储或者永久存储。

其中,操作系统221用于管理与控制电子设备20上的各硬件设备以及计算机程序222,以实现处理器21对存储器22中海量数据223的运算与处理,其可以是Windows Server、Netware、Unix、Linux等。计算机程序222除了包括能够用于完成前述任一实施例公开的由电子设备20执行的磁盘空间管理方法的计算机程序之外,还可以进一步包括能够用于完成其他特定工作的计算机程序。数据223可以包括电子设备20收集到的分配指令。

进一步的,本申请实施例还公开了一种存储介质,所述存储介质中存储有计算机程序,所述计算机程序被处理器加载并执行时,实现前述任一实施例公开的磁盘空间管理方法步骤。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个…”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上对本发明所提供的磁盘空间管理方法、装置、设备及存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

技术分类

06120113793339