一种文件系统磁盘空间管理方法、装置、设备及介质与流程

摘要: 本发明实施例涉及计算机存储,尤其涉及一种文件系统磁盘空间管理方法、装置、设备及介质。背景技术:1、在计算机存储技术领域,文件系统的磁盘空间管理效率直接影响系统整...
一种文件系统磁盘空间管理方法、装置、设备及介质与流程

本发明实施例涉及计算机存储,尤其涉及一种文件系统磁盘空间管理方法、装置、设备及介质。

背景技术:

1、在计算机存储技术领域,文件系统的磁盘空间管理效率直接影响系统整体性能,尤其在嵌入式实时系统、高频交易等对响应时间敏感的场景中,空间管理操作的时延波动会严重影响服务质量。

2、目前,主流文件系统(如ext4、xfs等)通常采用全局空闲空间管理结构(即位图或b+树)管理所有未分配磁盘块。当文件被删除时,需将该文件占用的所有磁盘块逐一回收到全局空间管理结构中,每次回收涉及b+树的查找、插入及可能的节点分裂合并等操作。当用户查询磁盘剩余空间时,需遍历已删除文件索引节点链表,逐一累加各已删除文件占用的磁盘块数,再结合全局空间管理结构计算总剩余空间。

3、然而,上述方式存在以下缺陷:一方面,删除大文件时需将数万甚至数十万个数据块逐一归还b+树,时间复杂度高达o(n×log m)(n为文件块数),删除操作耗时数秒甚至数十秒,严重影响系统实时性;另一方面,采用延迟回收策略时,统计空闲空间需遍历整个已删除索引节点链表,时间复杂度为o(k)(k为链表长度),每次统计需大量磁盘i/o,严重影响系统性能。

技术实现思路

1、本发明实施例提供一种文件系统磁盘空间管理方法、装置、设备及介质,降低了大文件删除的时间复杂度和空闲空间统计的时间复杂度,且新节点插入时无需重复遍历,从而提升了高频删除和大文件操作场景下的系统性能与响应速度。

2、第一方面,本发明实施例提供了一种文件系统磁盘空间管理方法,包括:

3、当文件被删除时,判断所述文件占用的b+树层级是否大于0,若是则将所述文件的索引节点整体加入已删除索引节点链表,并保留所述索引节点的块索引结构完整;若否则将所述文件占用的所有磁盘块立即回收到全局空间管理结构中;

4、在所述索引节点加入所述已删除索引节点链表后,计算并记录所述索引节点占用的磁盘块总数作为自身块数;从所述已删除索引节点链表的头节点开始遍历已有节点,累加各已有节点占用的磁盘块数,将最终累加结果记录为所述索引节点的后续块数总和;

5、当需要获取所述已删除索引节点链表占用的总空间量时,读取所述已删除索引节点链表的头节点的自身块数与后续块数总和并求和,将求和结果确定为所述已删除索引节点链表当前占用的总空间量。

6、可选地,所述方法还包括:从所述已删除索引节点链表的头节点开始遍历,若当前已遍历节点的自身块数和后续块数总和均已被记录且均大于0,则以所述当前已遍历节点的自身块数与后续块数总和之和进行累加并终止遍历;否则以所述当前已遍历节点的自身块数或实时计算得到的块数进行累加并继续遍历下一节点。

7、可选地,所述方法还包括:当需要分配磁盘块时,优先从所述已删除索引节点链表的当前头节点的块索引结构中分配磁盘块;若所述当前头节点的块索引结构中块已耗尽,则回收所述当前头节点并将所述当前头节点的后续块数总和传递至所述当前头节点的后继节点,从所述后继节点继续分配;若所述已删除索引节点链表为空,则从全局空间管理结构中分配磁盘块。

8、可选地,所述方法还包括:当开始从所述当前头节点分配磁盘块时,将所述当前头节点的自身块数清零,并将所述当前头节点的前驱节点的后续块数总和清零。

9、可选地,所述方法还包括:将所述后继节点的后续块数总和更新为所述当前头节点的后续块数总和减去所述后继节点的自身块数;将所述当前头节点从所述已删除索引节点链表中移除,并释放所述当前头节点的索引节点块。

10、可选地,所述方法还包括:若所述索引节点插入位置存在前驱节点,则将所述前驱节点的后续块数总和更新为所述索引节点的自身块数与后续块数总和之和。

11、第二方面,本发明实施例还提供了一种文件系统磁盘空间管理装置,该装置包括:

12、删除处理模块,用于当文件被删除时,判断所述文件占用的b+树层级是否大于0,若是则将所述文件的索引节点整体加入已删除索引节点链表,并保留所述索引节点的块索引结构完整;若否则将所述文件占用的所有磁盘块立即回收到全局空间管理结构中;

13、链表管理模块,用于在所述索引节点加入所述已删除索引节点链表后,计算并记录所述索引节点占用的磁盘块总数作为自身块数;从所述已删除索引节点链表的头节点开始遍历已有节点,累加各已有节点占用的磁盘块数,将最终累加结果记录为所述索引节点的后续块数总和;

14、空间统计模块,用于当需要获取所述已删除索引节点链表占用的总空间量时,读取所述已删除索引节点链表的头节点的自身块数与后续块数总和并求和,将求和结果确定为所述已删除索引节点链表当前占用的总空间量。

15、第三方面,本发明实施例还提供了一种电子设备,所述电子设备包括:

16、一个或多个处理器;

17、存储器,用于存储一个或多个程序;

18、当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本发明任意实施例所提供的文件系统磁盘空间管理方法。

19、第四方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明任意实施例所提供的文件系统磁盘空间管理方法。

20、第五方面,本发明实施例提供了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现如本发明任意实施例所提供的文件系统磁盘空间管理方法。

21、本发明实施例的技术方案,当文件被删除时,判断所述文件占用的b+树层级是否大于0,若是则将所述文件的索引节点整体加入已删除索引节点链表,并保留所述索引节点的块索引结构完整;若否则将所述文件占用的所有磁盘块立即回收到全局空间管理结构中;通过b+树层级判断实现大文件与小文件的差异化处理,仅对大文件执行延迟回收,将大文件删除的时间复杂度由o(n×log m)降低至o(log m),避免了逐一回收数据块的高昂开销,显著提升了删除操作的响应速度;在所述索引节点加入所述已删除索引节点链表后,计算并记录所述索引节点占用的磁盘块总数作为自身块数;从所述已删除索引节点链表的头节点开始遍历已有节点,累加各已有节点占用的磁盘块数,将最终累加结果记录为所述索引节点的后续块数总和;通过在链表节点中记录自身块数和后续块数总和两个统计字段,将每个节点之后所有节点的空间占用信息固化在节点中,为o(1)复杂度的空间统计提供了数据基础;当需要获取所述已删除索引节点链表占用的总空间量时,读取所述已删除索引节点链表的头节点的自身块数与后续块数总和并求和,将求和结果确定为所述已删除索引节点链表当前占用的总空间量;通过读取头节点两个字段即可在o(1)时间内完成统计,将空闲空间统计的时间复杂度由o(k)降低至o(1),有效解决了高频删除场景下空间统计效率低下的问题。

22、应当理解,本部分所描述的内容并非旨在标识本发明的实施例的关键或重要特征,也不用于限制本发明的范围。本发明的其它特征将通过以下的说明书而变得容易理解。