CN112256650A - 存储空间管理方法、装置、设备及存储介质 - Google Patents
存储空间管理方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN112256650A CN112256650A CN202011125813.5A CN202011125813A CN112256650A CN 112256650 A CN112256650 A CN 112256650A CN 202011125813 A CN202011125813 A CN 202011125813A CN 112256650 A CN112256650 A CN 112256650A
- Authority
- CN
- China
- Prior art keywords
- space
- item
- file
- spatial
- size
- 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
Links
- 238000003860 storage Methods 0.000 title claims abstract description 85
- 238000007726 management method Methods 0.000 title abstract description 45
- 238000000034 method Methods 0.000 claims abstract description 33
- 238000012217 deletion Methods 0.000 claims abstract description 25
- 230000037430 deletion Effects 0.000 claims abstract description 25
- 230000001960 triggered effect Effects 0.000 claims abstract description 19
- 230000008859 change Effects 0.000 claims description 19
- 230000001174 ascending effect Effects 0.000 claims description 9
- 238000004590 computer program Methods 0.000 claims description 9
- 238000003780 insertion Methods 0.000 claims description 4
- 230000037431 insertion Effects 0.000 claims description 4
- 238000010276 construction Methods 0.000 claims description 2
- 230000010365 information processing Effects 0.000 claims description 2
- 230000008901 benefit Effects 0.000 description 10
- 238000011084 recovery Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 230000006399 behavior Effects 0.000 description 6
- 239000012634 fragment Substances 0.000 description 5
- 238000005192 partition Methods 0.000 description 5
- 230000011218 segmentation Effects 0.000 description 4
- 230000002776 aggregation Effects 0.000 description 3
- 238000004220 aggregation Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000004064 recycling Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000014759 maintenance of location Effects 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007429 general method Methods 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
- G06F16/162—Delete operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/1737—Details of further file system functions for reducing power consumption or coping with limited storage space, e.g. in mobile devices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了存储空间管理方法、装置、设备及存储介质。其中,该方法包括:检测到第一文件的删除事件被触发时,获取第一文件对应的空间占用信息,空间占用信息包含占用位置和占用大小,占用位置包括所对应的空间块编号和在所属空间块中的偏移位置;根据空间占用信息构建对应的第一空间项,第一空间项的项目位置与占用位置一致,第一空间项的空间大小与占用大小一致;在第一预设搜索索引中***第一空间项,第一预设搜索索引中包含处于空闲状态的空间项。本发明实施例提供的技术方案,在删除空间块中的一个小文件时,将其占用的空间进行回收,形成新的空间项***到第一预设搜索索引中,能够更加合理地记录和管理存储空间。
Description
技术领域
本发明实施例涉及计算机技术领域,尤其涉及存储空间管理方法、装置、设备及存储介质。
背景技术
随着存储技术以及信息化的快速发展,越来越多的信息需要存储到存储介质中,而内存或硬盘等存储介质的容量也不断提升,因此,能够存储的文件也越来越多。
对于一些应用场景来说,所需要的存储的文件通常都是体积较小的小文件,但是需要存储的文件数量比较庞大。举例而言,互联网的高速发展,带动了社交媒体的兴起,用户已经成为内容创造者,产生的视频、语音、图片、邮件、消息以及日志文件等数据量暴增,而这些数据大部分就都是小文件。为了存储这些数据各种分布式存储应运而生,分布式存储中需要解决单机存储小文件数量过大对文件***性能产生影响的问题。通用的做法是合并小文件,一般是顺序合并小文件到大文件的末尾并记录索引,但合并后不支持小文件的独立删除操作,只能等所有小文件都不需要继续存储时,将整个大文件删除。由此可见,现有的存储空间管理方案中,存储资源无法得到合理有效的利用,需要改进。
发明内容
本发明实施例提供了存储空间管理方法、装置、设备及存储介质,可以优化现有的存储空间管理。
第一方面,本发明实施例提供了一种存储空间管理方法,该方法包括:
检测到第一文件的删除事件被触发时,获取所述第一文件对应的空间占用信息,其中,所述第一文件包括存储于第一空间块中的文件,所述空间占用信息中包含占用位置和占用大小,所述占用位置包括所对应的空间块编号和在所属空间块中的偏移位置;
根据所述空间占用信息构建对应的第一空间项,其中,所述第一空间项的项目位置与所述占用位置一致,所述第一空间项的空间大小与所述占用大小一致;
在第一预设搜索索引中***所述第一空间项,其中,所述第一预设搜索索引中包含处于空闲状态的空间项。
第二方面,本发明实施例提供了一种存储空间管理装置,该装置包括:
空间占用信息获取模块,用于在检测到第一文件的删除事件被触发时,获取所述第一文件对应的空间占用信息,其中,所述第一文件包括存储于第一空间块中的文件,所述空间占用信息中包含占用位置和占用大小,所述占用位置包括所对应的空间块编号和在所属空间块中的偏移位置;
空间项构建模块,用于根据所述空间占用信息构建对应的第一空间项,其中,所述第一空间项的项目位置与所述占用位置一致,所述第一空间项的空间大小与所述占用大小一致;
空间项***模块,用于在第一预设搜索索引中***所述第一空间项,其中,所述第一预设搜索索引中包含处于空闲状态的空间项。
第三方面,本发明实施例提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如本发明实施例提供的存储空间管理方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明实施例提供的存储空间管理方法。
本发明实施例中提供的存储空间管理方案,检测到第一文件的删除事件被触发时,获取第一文件对应的空间占用信息,其中,第一文件包括存储于第一空间块中的文件,空间占用信息中包含占用位置和占用大小,占用位置包括所对应的空间块编号和在所属空间块中的偏移位置,根据空间占用信息构建对应的第一空间项,其中,第一空间项的项目位置与占用位置一致,第一空间项的空间大小与占用大小一致,在第一预设搜索索引中***第一空间项,其中,第一预设搜索索引中包含处于空闲状态的空间项。通过采用上述技术方案,在一个空间块中可以存储多个文件,也即相当于一个大文件中合并存储多个小文件,采用偏移位置表示文件在空间块中的相对位置,允许对空间块中的文件进行独立删除,采用第一预设搜索索引记录可用于存储文件的处于空闲状态的空间项,当检测到需要删除第一文件时,将第一文件所占用的空间进行回收,形成新的空间项***到第一预设搜索索引中,能够更加合理地记录和管理存储空间。
附图说明
图1为本发明实施例提供的一种存储空间管理方法的流程示意图;
图2为本发明实施例提供的一种第一预设搜索索引的数据结构示意图;
图3为本发明实施例提供的一种第二预设搜索索引的数据结构示意图;
图4为本发明实施例提供的又一种存储空间管理方法的流程示意图;
图5为本发明实施例提供的一种文件写入操作对应的存储空间管理方法的流程示意图;
图6为本发明实施例提供的一种文件删除操作对应的存储空间管理方法的流程示意图;
图7为本发明实施例提供的一种存储空间管理装置的结构框图;
图8为本发明实施例提供的一种计算机设备的结构框图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。此外,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
图1为本发明实施例提供的一种存储空间管理方法的流程示意图,该方法可以由存储空间管理装置执行,其中该装置可由软件和/或硬件实现,一般可集成在计算机设备中。其中,计算机设备可以是手机、笔记本电脑、台式机及服务器等设备,具体不做限定。
如图1所示,该方法包括:
步骤101、检测到第一文件的删除事件被触发时,获取所述第一文件对应的空间占用信息,其中,所述第一文件包括存储于第一空间块中的文件,所述空间占用信息中包含占用位置和占用大小,所述占用位置包括所对应的空间块编号和在所属空间块中的偏移位置。
本发明实施例中,存储空间可以是计算机设备中的任意类型的存储介质中的用于存储的空间,存储介质例如可以是内存、硬盘以及存储卡等,对于一些应用场景来说,大量的文件一般存储于硬盘中,下文以硬盘为例进行说明。可以在硬盘中创建空间块(又称Block),将空间块作为合并小文件的载体,在文件***中对应一个大文件。一个空间块的大小(也即空间大小)可根据实际需求设置,例如64MB,不同空间块的大小可以相同,也可以不同,为了便于管理,可以设置为相同。小文件可以是文件大小小于或等于预设文件大小阈值的文件,预设文件大小阈值小于空间块的大小,具体数值不做限定。可以按照一定的规则对空间块进行编号,以空间块编号对空间块进行标识,也可称为空间块身份标识(Identification,ID),具体表现形式不做限定,可以是数字、字母、或数字和字母组合等。另外,对于计算机设备来说,硬盘可能被划分为多个磁盘(可以理解为分区),每个磁盘又可划分为多个存储路径或目录,因此,可进一步采用磁盘号(Disk ID)、目录序号(Path ID)以及空间块身份标识(Block ID)的组合来唯一标识一个空间块,也即,当进行上述划分时,本步骤中的空间块编号可以包括磁盘号、目录序号以及空间块身份标识。
举例而言,对于短视频应用程序来说,用户上传的短视频一般存储于短视频应用程序对应的服务器中,存储于服务器中的短视频文件一般为小文件,服务器中一般采用分布式存储来对海量用户上传的短视频文件进行保存,为了解决单机存储小文件数量过大对文件***性能产生影响的问题,通常将小文件进行合并存储,如按照小文件的生成时间的先后顺序合并到大文件的末尾,但在一些情况下,如用户主动删除上传的短视频或用户注销后需要删除其上传的短视频等,所需删除的小文件一般不是连续的,可能同时存在于多个大文件中,现有的存储空间管理方案需要等一个大文件中的所有小文件都需要删除时,才对整个大文件进行删除,使得服务器中的储存空间无法得到合理的利用。
而本发明实施例中,允许对存储于空间块中的文件进行独立删除。示例性的,在将文件存储至空间块中时,可以记录该文件所存入的空间块的空间块编号以及在该空间块中的偏移位置,得到该文件对应的占用位置,也即该文件具体占用了哪部分存储空间,同时,还可以记录该文件所占用的存储空间的大小,也即占用大小,由占用位置和占用大小共同构成该文件对应的空间占用信息,存储完毕后,可向上层应用反馈空间占用信息。当需要对第一文件进行删除时,也即上层应用需要删除第一文件时,可以由上层将第一文件对应的空间占用信息作为参数传入,则***会检测到第一文件的删除事件被触发,从传入参数中获取到第一文件对应的空间占用信息。
步骤102、根据所述空间占用信息构建对应的第一空间项,其中,所述第一空间项的项目位置与所述占用位置一致,所述第一空间项的空间大小与所述占用大小一致。
本发明实施例中,空间项可理解为用于表示空间块中被切分出来的一段存储空间的项目,可以用Slot表示,Slot中记录的信息可称为空间元数据信息。不同的空间项对应的空间大小可以相同,也可以不同。一个空间项中记录的信息可包括项目位置和空间大小。示例性的,项目位置可以包括空间项对应的空间块编号以及在所属空间块中的偏移位置。其中,如上文所述,空间块编号可以具体包括磁盘号、目录序号以及空间块身份标识;偏移位置可以表示空间项对应的存储空间的起始位置在所属空间块中的相对位置,具体单位不做限定,例如可以是字节。空间大小可以指空间项对应的存储空间的大小,具体单位不做限定,例如可以是字节。
在需要将第一文件删除时,说明第一文件所占用的存储空间可以被释放,根据第一文件对应的占用位置和占用大小可以构建一个空间项,也即第一空间项的项目位置与第一文件的占用位置相同,第一空间项的空间大小与占用大小相同。需要说明的是,第一文件对应的占用大小并不一定等于第一文件的文件大小,一般占用大小大于或等于文件大小。
步骤103、在第一预设搜索索引中***所述第一空间项,其中,所述第一预设搜索索引中包含处于空闲状态的空间项。
本发明实施例中,利用第一预设搜索索引来记录处于空闲状态的空间项,当第一空间项创建完毕后,及时将该新的空闲空间项记录到第一预设搜索索引中,可及时更新空闲空间项的记录。第一预设搜索索引可以是任意类型的搜索索引结构,例如二叉树搜索树、平衡二叉树搜索树或其他具有排序功能的树结构等,还可以是树结构以外的搜索索引结构,具体不做限定。
本发明实施例中提供的存储空间管理方案,检测到第一文件的删除事件被触发时,获取第一文件对应的空间占用信息,其中,第一文件包括存储于第一空间块中的文件,空间占用信息中包含占用位置和占用大小,占用位置包括所对应的空间块编号和在所属空间块中的偏移位置,根据空间占用信息构建对应的第一空间项,其中,第一空间项的项目位置与占用位置一致,第一空间项的空间大小与占用大小一致,在第一预设搜索索引中***第一空间项,其中,第一预设搜索索引中包含处于空闲状态的空间项。通过采用上述技术方案,在一个空间块中可以存储多个文件,也即相当于一个大文件中合并存储多个小文件,采用偏移位置表示文件在空间块中的相对位置,允许对空间块中的文件进行独立删除,采用第一预设搜索索引记录可用于存储文件的处于空闲状态的空间项,当检测到需要删除第一文件时,将第一文件所占用的空间进行回收,形成新的空间项***到第一预设搜索索引中,能够更加合理地记录和管理存储空间。
在一些实施例中,还可包括:检测到第二文件的写入事件被触发时,获取所述第二文件的文件大小;在所述第一预设搜索索引中查找到目标空间项,其中,所述目标空间项的空间大小大于或等于所述文件大小;从所述第一预设搜索索引中删除所述目标空间项,并将所述第二文件写入所述目标空间项对应的空间中。这样设置的好处在于,在单独将小文件从大文件中删除后,不需要等待删除量占大文件一定占比后,离线将剩余小文件拷贝到其他位置,再删除整个大文件,而是直接将需要写入的小文件写入到满足要求的目标空间项中,从而对空闲的空间项进行更加合理有效的利用。其中,因为需要将第二文件写入到目标空间项对应的空间中,则目标空间项对应的空间应足够容纳第二文件,所以目标空间项的空间大小大于或等于第二文件的文件大小,在硬盘中可能存在多个满足要求的空间项,目标空间项可以是任意一个满足要求的空间项,也可以是硬盘中位置最靠前的满足要求的空间项。
在一些实施例中,所述第一预设搜索索引包括以空间大小为键以及以第一空间项列表为值的搜索结构,其中,所述第一空间项列表中的空间项按照所对应的空间块编号进行升序排序。所述在所述第一预设搜索索引中查找到目标空间项,包括:在所述第一预设搜索索引中查找空间大小大于或等于所述文件大小的第一目标键;将所述第一目标键对应的空间项列表中的第一个空间项确定为目标空间项。这样设置的好处在于,可以快速准确地搜索到合适的目标空间项。其中,在一个第一空间项列表中,各空间项对应的空间块编号可能相同,也可能不同,当存在至少两个空间项对应的空间块编号相同时,可以随机确定该至少两个空间项的排序,也可进一步根据该至少两个空间项对应的偏移位置进行排序(升序排序或降序排序)。将空间项按照所对应的空间块编号进行升序排序的好处在于,可以快速找到硬盘中位置靠前的满足要求的空间项,若将对应空间块编号相同的至少两个空间项按照对应的偏移位置进行升序排序,则可以快速找到硬盘中位置最靠前的满足要求的空间项。
图2为本发明实施例提供的一种第一预设搜索索引的数据结构示意图,如图2所示,以空间大小(Size)为键(Key),相同Size的Slot按Block ID升序排序组成一个第一空间项列表(List)作为值(Value)。当第一预设搜索索引为搜索树结构时,也可称为Size搜索树,可记为Slot.Size。需要说明的是,这里的Block ID仅作为示意性说明,若划分方式涉及磁盘号以目录序号等,这里也可包含Disk ID和/或Path ID。
以Size搜索树为例,可以定义Size搜索树搜索节点的行为如下。查找行为:查找一个Size大于等于目标值的节点,得到节点后,从列表中选择第一个空间项Slot返回;如果查找不到,则返回为空。***行为:通过Slot.Size查找到树节点,如果不存在,则新建树节点,***Slot;若存在,则把Slot***到节点的List中。删除行为:通过Slot.Size查找树节点,把Slot从List中删除;如果删除后List为空,则把树节点删除。
在一些实施例中,还可包括:判断所述目标空间项的空间大小与所述文件大小的差值是否大于第一预设阈值;若是,则根据所述目标空间项中除用于存储所述第二文件之外的剩余空间构建对应的第二空间项;在所述第一预设搜索索引中***所述第二空间项。上述步骤可以在从第一预设搜索索引中删除目标空间项之前或之后执行,具体不做限定。这样设置的好处在于,当目标空间项的空间足够容纳第二文件且会富裕出多余的空间时,可以根据多余的空间构建新的空闲的空间项并加入到第一预设搜索索引中,避免空间浪费。其中,第一预设阈值可以根据实际需求设置,例如可以是256个字节。
在一些实施例中,所述根据所述目标空间项中除用于存储所述第二文件之外的剩余空间构建对应的第二空间项,包括:将所述目标空间项拆分成第二空间项和第三空间项;其中,所述第三空间项的空间大小与所述文件大小相等,且对应的偏移位置与所述目标空间项对应的偏移位置一致;所述第二空间项的空间大小等于所述目标空间项的空间大小与所述文件大小的差值,且对应的偏移位置为所述目标空间项对应的偏移位置与所述文件大小的和。相应的,所述将所述第二文件写入所述目标空间项对应的空间中,包括:将所述第二文件写入所述第三空间项对应的空间中。这样设置的好处在于,能够保证第二文件被存入目标空间项对应的空间中的最靠前位置,尽量保证顺序写入,另外,最大限度的利用剩余空间,得到新的空闲空间项。
在一些实施例中,在根据所述空间占用信息构建对应的第一空间项之后,还包括:判断所述第一空间项所属的空间块中是否存在与所述第一空间项的项目位置相邻接的第四空间项;若存在,则将所述第一空间项和所述第四空间项进行合并,得到第五空间项;所述在第一预设搜索索引中***所述第一空间项,包括:在第一预设搜索索引中删除所述第四空间项,并***所述第五空间项。这样设置的好处在于,回收空间时进行左边和/或右边相邻接的空闲空间合并,减少碎片空间,保证连续空间可用,也可减少第一预设搜索索引中的空间项数量,从而有效控制第一预设搜索索引的体积,避免对存储空间的过多占用。
在一些实施例中,所述判断所述第一空间项所属的空间块中是否存在与所述第一空间项的项目位置相邻接的第四空间项,包括:在第二预设搜索索引中查找所述第一空间项对应的目标空间块编号,其中,所述第二预设搜索索引包括以空间块编号为键以及以第二空间项列表为值的搜索结构,其中,所述第二空间项列表中的空间项按照偏移位置进行排序;在所述目标空间块编号对应的空间项列表中查找是否存在第四空间项,其中,所述第四空间项对应的偏移位置与对应的空间大小的和等于所述第一空间项对应的偏移位置,或,所述第四空间项对应的偏移位置等于所述第一空间项对应的偏移位置与所述第一空间项对应的空间大小的和。相应的,所述在第一预设搜索索引中删除所述第四空间项,并***所述第五空间项,包括:在第一预设搜索索引中删除所述第四空间项,并***所述第五空间项;以及,在所述第二预设搜索索引中删除所述第四空间项,并***所述第五空间项。这样设置的好处在于,能够快速准确地查找并判断是否存在需要合并的空间项。
示例性的,第二预设搜索索引同样可以记录处于空闲状态的空间项,记录方式与第一预设搜索索引不同。第二预设搜索索引也可以是任意类型的搜索索引结构,例如二叉树搜索树、平衡二叉树搜索树或其他具有排序功能的树结构等,还可以是树结构以外的搜索索引结构,具体不做限定。其中,在一个第二空间项列表中,可以按照偏移位置进行升序排序或降序排序。在查找第一空间项对应的偏移位置时,查找方式不做限定,例如可以是二分查找或顺序查找。
示例性的,第四空间项可以理解为第二预设搜索索引中记录的可以与第一空间项进行合并的空闲的空间项。当一个空间项对应的偏移位置与对应的空间大小的和等于第一空间项对应的偏移位置时,可以说明该空间项是与第一空间项左边相邻接的空闲的空间项,可以进行合并,也即可以成为第四空间项。当一个空间项对应的偏移位置等于第一空间项对应的偏移位置与第一空间项对应的空间大小的和时,可以说明该空间项是与第一空间项右边相邻接的空闲的空间项,可以进行合并,也即可以成为第四空间项。
示例性的,当第一空间项创建完毕后,在第二预设搜索索引中***第一空间项,及时更新第二预设搜索索引,若存在合并情况,则同理,在第二预设搜索索引中删除上述第四空间项,并***上述第五空间项。
图3为本发明实施例提供的一种第二预设搜索索引的数据结构示意图,如图3所示,以Block ID为键Key,相同Block ID的Slot按偏移位置升序排序组成一个第二空间项列表(List)作为Value。当第二预设搜索索引为搜索树结构时,也可称为ID搜索树,可记为Slot.BlockID。需要说明的是,这里的Block ID仅作为示意性说明,若划分方式涉及磁盘号以目录序号等,这里也可包含Disk ID和/或Path ID。
以ID搜索树为例,可以定义ID搜索树搜索节点的行为如下。查找行为:查找BlockID等于目标值的节点,返回Slot List;***行为:通过Slot.BlockID查找到树节点,如果不存在,则新建节点,***Slot;若存在,把Slot按Slot.Offset***排序位置;删除行为:通过Slot.BlockID查找树节点,把Slot从List中删除;如果删除后List为空,则把树节点删除。
在一些实施例中,所述***所述第五空间项,包括:若确定所述第五空间项的空间大小小于所属的空间块的空间大小,则***所述第五空间项。这样设置的好处在于,先判断经过空间项合并后,第五空间项是否已经成为整个空间块,若未成为,则在对应的空间块中***第五空间项。进一步的,若第五空间项的空间大小等于所属的空间块的空间大小,则可删除所属的空间块对应的相关数据或文件,例如,删除该空间块在第二预设搜索索引中对应的第二空间项列表等,实现整个空间块的回收,释放相应的磁盘空间。
图4为本发明实施例提供的又一种存储空间管理方法的流程示意图,本发明实施例基于第一预设搜索索引和第二预设搜索索引实现。其中,第一预设搜索索引包括以空间大小为键以及以第一空间项列表为值的搜索结构,第一空间项列表中的空间项按照所对应的空间块编号进行升序排序;第二预设搜索索引包括以空间块编号为键以及以第二空间项列表为值的搜索结构,第二空间项列表中的空间项按照偏移位置进行排序。
如图4所示,该方法可包括:
步骤401、监听文件操作事件。
步骤402、在检测到文件操作事件被触发时,识别文件操作事件的类型,若为删除事件,则执行步骤403;若为写入事件,则执行步骤412。
步骤403、获取删除事件对应的第一文件对应的空间占用信息。
需要说明的是,第一文件的删除操作的执行时机不做限定,可以在步骤403之前或之后。
步骤404、根据空间占用信息构建对应的第一空间项。
步骤405、在第二预设搜索索引中查找第一空间项对应的目标空间块编号。
步骤406、在目标空间块编号对应的空间项列表中查找是否存在第四空间项,若是,则执行步骤407;否则,执行步骤411。
其中,第四空间项对应的偏移位置与对应的空间大小的和等于所述第一空间项对应的偏移位置,或,所述第四空间项对应的偏移位置等于所述第一空间项对应的偏移位置与所述第一空间项对应的空间大小的和。
步骤407、将第一空间项和第四空间项进行合并,得到第五空间项。
步骤408、判断第五空间项的空间大小是否小于所属的空间块的空间大小,若是,则执行步骤409;否则,执行步骤410。
步骤409、在第一预设搜索索引和第二预设搜索索引中删除第四空间项并***第五空间项,返回执行步骤401。
步骤410、在第一预设搜索索引和第二预设搜索索引中删除第五空间项所属的空间块对应的相关数据。
步骤411、在第一预设搜索索引和第二预设搜索索引中***第一空间项,返回执行步骤401。
步骤412、获取待写入的第二文件的文件大小。
步骤413、在第一预设搜索索引中查找空间大小大于或等于文件大小的第一目标键,将第一目标键对应的空间项列表中的第一个空间项确定为目标空间项。
步骤414、从第一预设搜索索引和第二预设搜索索引中删除目标空间项。
步骤415、判断目标空间项的空间大小与文件大小的差值是否大于第一预设阈值,若是,则执行步骤416;否则,执行步骤418。
步骤416、将目标空间项拆分成第二空间项和第三空间项。
其中,第三空间项的空间大小与所文件大小相等,且对应的偏移位置与所述目标空间项对应的偏移位置一致;所述第二空间项的空间大小等于所述目标空间项的空间大小与所述文件大小的差值,且对应的偏移位置为所述目标空间项对应的偏移位置与所述文件大小的和。
步骤417、将第二文件写入第三空间项对应的空间中,在第一预设搜索索引和第二预设搜索索引中***第二空间项。
步骤418、将第二文件写入目标空间项对应的空间中,返回执行步骤401。
本发明实施例提供的存储空间管理方法,预先构建了第一预设搜索索引和第二预设搜索索引,以不同的方式对空闲的空闲项进行记录,在进行存储空间管理的过程中,监听上层应用的文件操作事件,在检测到文件操作事件被触发时,先识别文件操作事件的类型,再根据类型来执行相应的操作。在删除事件被触发时,获取删除事件对应的第一文件对应的空间占用信息,并构建对应的第一空间项,在第二预设搜索索引中可以快速准确地查找到是否存在可以与其合并的空闲的空间项,进而进行空间合并,减少碎片空间,保证连续空间可用。在写入事件被触发时,获取待写入的第二文件的文件大小,查找到合适的目标空间项,并对目标空间项进行必要的切分,避免空间浪费。在空间项发生变化时,同时更新到第一预设搜索索引和第二预设搜索索引中,保证空间管理的准确性和可靠性。
在上述各可选实施例基础上,在一些实施例中,预设搜索索引基于日志文件构建,在发生空间项的变更操作时,将所述变更操作对应的相关信息记录到相应的日志文件中,其中,所述变更操作包括增加空间项和删除空间项,所述相关信息包括变更时间、变更操作类型、空间项对应的项目位置和空间项对应的空间大小。这里的预设搜索索引可以包括第一预设搜索索引和/或第二预设搜索索引。通过采用日志文件对空间项的变更操作对应的相关信息进行记录,可以进一步保证空间管理的准确性和可靠性。
示例性的,日志文件的具体类型不做限定,例如可以是Binlog文件。可以定义Binlog日志格式如下:
<Timestamp><Operate Type><Disk ID><Path ID><Block ID><Offset><Size>
其中,Timestamp表示时间戳,可以使用Unix Time;Operate Type表示操作类型,可以有A和D两种类型,A表示增加空间项,D表示删除空间项。Disk ID表示Block所在的磁盘号,从0号开始;Path ID表示ock所在的目录序号,从0开始,支持最大256个目录;Bock ID表示lock的序号,从0开始,isk ID+Path ID+Block ID就能在磁盘上找到Block文件。Offset表示空间项在当前Block的偏移位置,单位字节;Size空间项空间的大小,单位字节。
例如,Binlog(1557975073 A 0 10 155 1024 2048)表示:时间1557975073,0号磁盘,10号目录,155号块,偏移1024字节,大小2048字节空闲空间回收,也即增加空间项。如果操作类型是D,表示分配空间,也即将空闲空间项分配出去用于写入文件。
在一些实施例中,所述日志文件包括在线日志文件和离线日志文件,所述在线日志文件存储于内存中,所述离线日志文件存储于硬盘中,所述预设搜索索引基于在线日志文件构建。这样设置的好处在于,减少内存中空间项数量,提高搜索性能,同时避免日志文件占用过多的内存空间,影响设备性能。进一步的,对于离线日志文件,可以存在多个,每个离线日志文件对应多个空间块,可以根据空间块编号哈希选择需要写入的离线日志文件,从而保证空闲空间磁盘的聚集和连续性。
在一些实施例中,还可包括:在检测到存储服务退出事件被触发时,将当前的预设搜索索引对应的内存快照进行转存,得到快照文件,并删除在线日志文件和预设搜索索引;在检测到所述存储服务启动时,读取所述快照文件,根据所述快照文件生成在线日志文件,并根据在线日志文件构建相应的预设搜索索引。这里的预设搜索索引可以包括第一预设搜索索引和/或第二预设搜索索引。存储服务可以理解为本发明实施例中存储空间管理方法所对应的服务,具体可以是空间管理程序,当计算机设备基于某些原因需要重启时,可能需要退出存储服务,还可能有其他的情况需要退出存储服务,此时,为了便于在存储服务再次启动时,依据最新的空间项状态来继续进行存储空间的管理,可以在退出前对预设搜索索引对应的内存快照进行保存,得到快照文件,并删除在线日志文件和预设搜索索引,随后退出程序。由于在线日志文件详细记录了空间项的变化信息,涉及删除和增加等,因此文件比较大,若保存在线日志文件,再次重启时加载在线日志文件来构建预设搜索索引比较费时,而快照文件包含了空间项的最新状态,也即退出前的最终状态,文件体积明显小于在线日志文件,因此对快照文件进行保存,并在启动时,读取快照文件,可以快速准确地构建预设搜索索引。可选的,快照文件可以是dat快照文件。可选的,快照文件的格式可以与在线日志文件一致,变更时间可以是存储服务退出时间或为空,变更操作类型均为增加空间项,空间项对应的项目位置和空间项对应的空间大小可以从预设搜索索引中得到。可选的,快照文件的格式相比于在线日志文件来说,也可省略变更时间和变更操作类型,而是在加载时,自动添加变更时间和增加空间项的变更操作类型,这样可以进一步减小快照文件的体积。
示例性的,根据所述快照文件生成在线日志文件,可以包括逐行读取快照文件,得到对应的在线日志条目。此时,变更时间可以是存储服务启动的时间。根据在线日志文件构建相应的预设搜索索引,具体可以是根据在线日志文件构建空间项,并将构建的空间项***预设搜索索引中,加载完成后,空间管理程序进入运行状态。若存储服务启动时需要加载离线日志文件,则可以参考上文中空间项合并的相关步骤,执行空间项合并检查处理。
在一些实施例中,所述离线日志文件的数量为多个,所述方法还包括:计算内存中的空间项的空间总和;当所述空间总和小于第二预设阈值时,获取目标离线日志文件,其中,所述目标离线日志文件中记录有在线日志文件中的最后一个空间块的下一个空间块中的空间项;根据所述目标离线日志文件对在线日志文件和预设搜索索引进行更新。这样设置的好处在于,可以在内存中的空间项总空间不足时,及时通过加载离线日志文件进行补充。上述步骤可以在程序运行期间进行。示例性的,可以周期性检查Slot空间,检查到内存中Slot空间的总和低于第二预设阈值时,锁定第Seq+1个(Seq表示顺序,首次执行时Seq为0,也即锁定第一个)离线Binlog文件,逐行读取Binlog,构建Slot,和回收空间步骤一样执行Slot合并检查处理,在Size搜索树和ID搜索树***合并后的Slot,当前Binlog文件读取完成后,继续检查Slot空间,若Slot空间的总和仍低于第二预设阈值,则可以继续锁定下一个离线Binlog文件进行合并。其中,如果锁定某个离线Binlog文件期间,产生了新的增加空间项的离线Binlog,则可不需要写入该离线Binlog文件,直接构建Slot进行回收操作。
下面针对文件写入时的空间分配流程结合日志文件进行示意性介绍。图5为本发明实施例提供的一种文件写入操作对应的存储空间管理方法的流程示意图,如图5所示,该方法包括如下步骤:
步骤501、获取要写入小文件的长度Length
示例性的,假设要写入长度为Length的小文件,一般的,小文件可以指文件大小<8MB的文件。
步骤502、使用Size搜索树查找Size>=Length的Slot。
步骤503、判断是否存在,若存在,则执行步骤508;否则,执行步骤504。
步骤504、当前的BlockID计数器+1,预先创建Block,得到NewSlot。
示例性的,若不存在,则说明内存中的Size搜索树未记录有能够用于存储当前需要写入的小文件的空间项,可以将其存入新的空间块中。当前的BlockID可以是Size搜索树存在的最后一个Block的ID。需要存入哪个磁盘哪个目录可以由上层传入的参数决定,或者随机确定。可以在文件***中预先创建一个大文件,用于接收小文件合并,也可以临时创建新的Block。可以按顺序分配磁盘块,尽量减少跨磁盘的文件操作,减少磁盘的寻道时间。
步骤505、Size搜索树和ID搜索树***NewSlot。
步骤506、根据NewSlot构建A类型Binlog(Timestamp A DiskID PathID BlockID0 67108864),写入Binlog文件。
可以理解的是,由于是一个新的Block,所以NewSlot的空间大小与该Block的空间大小一致。
步骤507、TSlot(Target Slot)=NewSlot。
将新创建的Slot返回至步骤508。其中,TSlot是Target Slot的简写。
步骤508、得到一个Size>=Length的TSlot。
步骤509、Size搜索树和ID搜索树删除TSlot。
步骤510、根据TSlot构建D类型Binlog(Timestamp D TSlot.DiskIDTSlot.PathID TSlot.BlockID TSlot.Offset TSlot.Size)写入Binlog文件。
本步骤表明这个空闲空间已被使用。
步骤511、判断是否TSlot.Size–Length>256,若是,则执行步骤512;否则,执行步骤516。
本步骤中,判断切分后剩余空间是否大于256字节,如果大于256字节则进行空间切分,避免管理过多小碎片。
步骤512、把TSlot拆分成两个新Slot:Alloc Slot(Offset=TSlot.Offset Size=Length)和Remain Slot(Offset=TSlot.Offset+Length Size=TSlot.Size-Length)。
其中,Alloc Slot后文表示为ASlot,Remain Slot后文表示为RSlot;
步骤513、Size搜索树和ID搜索树***RSlot(Remain Slot)。
步骤514、根据Remain Slot构建A类型Binlog(Timestamp A RSlot.DiskIDRSlot.PathID RSlot.BlockID RSlot.Offset RSlot.Size),写入Binlog文件。
步骤515、根据Alloc Slot构建D类型Binlog(Timestamp D ASlot.DiskIDASlot.PathID ASlot.BlockID ASlot.Offset ASlot.Size),写入Binlog文件。
步骤516、不拆分,ASlot=TSlot。
如果TSlot.Size–Length<=256,将TSlot直接分配出去,即ASlot=TSlot。
步骤517、上层应用通过ASlot信息把小文件写入指定Block指定的位置。
本发明实施例中,Block的空间分配尽可能按顺序分配,一个Block空间使用完才分配下一个,这样做的目的是为了保证顺序写和减少搜索树所占的内存空间。
下面针对文件删除时的空间回收流程结合日志文件进行示意性介绍。图6为本发明实施例提供的一种文件删除操作对应的存储空间管理方法的流程示意图,如图6所示,该方法包括如下步骤:
步骤601、删除小文件,获取小文件空间分配项信息。
上层应用需要删除小文件时,小文件空间分配信息由上层作为参数传入。
步骤602、构建一个用于回收的TSlot(Targe Slot)。
步骤603、判断使用ID搜索树是否能够搜索到BlockID=TSlot.BlockID的Slot列表List,若是,则执行步骤608;否则执行步骤604。
步骤604、List为空,根据TSlot构建A类型Binlog。
如果List为空,则说明内存的搜索树没有对应的Block,需要把Slot信息写到离线Binlog文件。
步骤605、使用TSlot.BlockID哈希N,得到一个序号Seq Binlog文件。
步骤606、在对应的Binlog文件追加Binlog。
步骤607、离线Binlog空间回收完成。
步骤608、使用二分查找List TSlot.Offset值的位置i。
步骤609、构建一个New Slot NSlot=TSlot。
步骤610、检查左边的Slot是否可以合并,即List[i-1].Offset+List[i-1].Size==TSlot.Offset?。
步骤611、如果左Slot可以合并,修改NSlot.Offset=List[i-1].Offset,NSlot.Size=NSlot.Size+List[i-1].Size。
步骤612、根据List[i-1]构建D类型Binlog,写入在线Binlog文件。
步骤613、Size搜索树和ID搜索树删除List[i-1]。
步骤614、检查右边的Slot是否可以合并,即NSlot.Offset+NSlot.Size==List[i+1].Offset?。
步骤615、如果右Slot可以合并,修改NSlot.Offset=NSlot.Offset,NSlot.Size=NSlot.Size+List[i+1].Size。
步骤616、根据List[i+1]构建D类型Binlog,写入在线Binlog文件。
步骤617、Size搜索树和ID搜索树删除List[i+1]。
步骤618、合并完成后检查NSlot是否是一个完整的Block。即NSlot.Offset==0&&NSlot.Size==67108864。
步骤619、判断是否成立,若是,则执行步骤620;否则,执行步骤621。
步骤620、回收完整的Block,直接删除Block文件释放磁盘空间,执行步骤623。
步骤621、根据NSlot构建A类型Binlog,写入在线Binlog文件。
本步骤中在在线Binlog文件中记录合并后的Slot。
步骤622、Size搜索树和ID搜索树***NSlot。
步骤623、空间回收完成。
回收空间时进行左右空闲空间合并,减少碎片空间保证连续空间可用,也减少搜索树的空间项内存占用。如果连续空间达到完整的Block,则释放磁盘空间。空间回收分为在线回收和离线回收,减少内存中空间项数量,提高搜索性能和减少内存占用。离线的切分空间回收按BlockID回收到不同Binlog文件,保证加载空闲空间的磁盘聚集性。
本发明实施例提供的存储空间管理方法,可以在线对删除文件的空间重复利用或者回收磁盘空间。具体可以通过三个部分实现:在空间分配部分使用预分配Block磁盘空间,顺序切分和分配Block空间,尽可能保证顺序写磁盘,提高写性能;在空间回收部分,采用了左右合并空闲空间策略,尽可能减少空闲空间碎片和保证连续空闲空间,分为在线回收和离线回收,减少内存空间项数量,减少内存的占用,提高搜索树查询速度;在Binlog部分,离线的Binlog按BlockID哈希保存,保证了磁盘空闲空间的聚集性,按需加载离线Binlog文件,控制了空间项的内存占用大小。
图7为本发明实施例提供的一种存储空间管理装置的结构框图,该装置可由软件和/或硬件实现,一般可集成在计算机设备中,可通过执行存储空间管理方法来进行存储空间管理。如图7所示,该装置包括:
空间占用信息获取模块701,用于在检测到第一文件的删除事件被触发时,获取所述第一文件对应的空间占用信息,其中,所述第一文件包括存储于第一空间块中的文件,所述空间占用信息中包含占用位置和占用大小,所述占用位置包括所对应的空间块编号和在所属空间块中的偏移位置;
空间项构建模块702,用于根据所述空间占用信息构建对应的第一空间项,其中,所述第一空间项的项目位置与所述占用位置一致,所述第一空间项的空间大小与所述占用大小一致;
空间项***模块703,用于在第一预设搜索索引中***所述第一空间项,其中,所述第一预设搜索索引中包含处于空闲状态的空间项。
本发明实施例提供的存储空间管理装置,检测到第一文件的删除事件被触发时,获取第一文件对应的空间占用信息,其中,第一文件包括存储于第一空间块中的文件,空间占用信息中包含占用位置和占用大小,占用位置包括所对应的空间块编号和在所属空间块中的偏移位置,根据空间占用信息构建对应的第一空间项,其中,第一空间项的项目位置与占用位置一致,第一空间项的空间大小与占用大小一致,在第一预设搜索索引中***第一空间项,其中,第一预设搜索索引中包含处于空闲状态的空间项。通过采用上述技术方案,在一个空间块中可以存储多个文件,也即相当于一个大文件中合并存储多个小文件,采用偏移位置表示文件在空间块中的相对位置,允许对空间块中的文件进行独立删除,采用第一预设搜索索引记录可用于存储文件的处于空闲状态的空间项,当检测到需要删除第一文件时,将第一文件所占用的空间进行回收,形成新的空间项***到第一预设搜索索引中,能够更加合理地记录和管理存储空间。
本发明实施例提供了一种计算机设备,该计算机设备中可集成本发明实施例提供的存储空间管理装置。图8为本发明实施例提供的一种计算机设备的结构框图。计算机设备800包括存储器801、处理器802及存储在存储器801上并可在处理器802上运行的计算机程序,所述处理器802执行所述计算机程序时实现本发明实施例提供的存储空间管理方法。
本发明实施例还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行本发明实施例提供的存储空间管理方法。
上述实施例中提供的存储空间管理装置、设备以及存储介质可执行本发明任意实施例所提供的存储空间管理方法,具备执行该方法相应的功能模块和有益效果。未在上述实施例中详尽描述的技术细节,可参见本发明任意实施例所提供的存储空间管理方法。
注意,上述仅为本发明的较佳实施例。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由权利要求范围决定。
Claims (15)
1.一种存储空间管理方法,其特征在于,包括:
检测到第一文件的删除事件被触发时,获取所述第一文件对应的空间占用信息,其中,所述第一文件包括存储于第一空间块中的文件,所述空间占用信息中包含占用位置和占用大小,所述占用位置包括所对应的空间块编号和在所属空间块中的偏移位置;
根据所述空间占用信息构建对应的第一空间项,其中,所述第一空间项的项目位置与所述占用位置一致,所述第一空间项的空间大小与所述占用大小一致;
在第一预设搜索索引中***所述第一空间项,其中,所述第一预设搜索索引中包含处于空闲状态的空间项。
2.根据权利要求1所述的方法,其特征在于,还包括:
检测到第二文件的写入事件被触发时,获取所述第二文件的文件大小;
在所述第一预设搜索索引中查找到目标空间项,其中,所述目标空间项的空间大小大于或等于所述文件大小;
从所述第一预设搜索索引中删除所述目标空间项,并将所述第二文件写入所述目标空间项对应的空间中。
3.根据权利要求2所述的方法,其特征在于,所述第一预设搜索索引包括以空间大小为键以及以第一空间项列表为值的搜索结构,其中,所述第一空间项列表中的空间项按照所对应的空间块编号进行升序排序;
所述在所述第一预设搜索索引中查找到目标空间项,包括:
在所述第一预设搜索索引中查找空间大小大于或等于所述文件大小的第一目标键;
将所述第一目标键对应的空间项列表中的第一个空间项确定为目标空间项。
4.根据权利要求2所述的方法,其特征在于,还包括:
判断所述目标空间项的空间大小与所述文件大小的差值是否大于第一预设阈值;
若是,则根据所述目标空间项中除用于存储所述第二文件之外的剩余空间构建对应的第二空间项;
在所述第一预设搜索索引中***所述第二空间项。
5.根据权利要求4所述的方法,其特征在于,所述根据所述目标空间项中除用于存储所述第二文件之外的剩余空间构建对应的第二空间项,包括:
将所述目标空间项拆分成第二空间项和第三空间项;其中,所述第三空间项的空间大小与所述文件大小相等,且对应的偏移位置与所述目标空间项对应的偏移位置一致;所述第二空间项的空间大小等于所述目标空间项的空间大小与所述文件大小的差值,且对应的偏移位置为所述目标空间项对应的偏移位置与所述文件大小的和;
相应的,所述将所述第二文件写入所述目标空间项对应的空间中,包括:
将所述第二文件写入所述第三空间项对应的空间中。
6.根据权利要求1所述的方法,其特征在于,在根据所述空间占用信息构建对应的第一空间项之后,还包括:
判断所述第一空间项所属的空间块中是否存在与所述第一空间项的项目位置相邻接的第四空间项;
若存在,则将所述第一空间项和所述第四空间项进行合并,得到第五空间项;
所述在第一预设搜索索引中***所述第一空间项,包括:
在第一预设搜索索引中删除所述第四空间项,并***所述第五空间项。
7.根据权利要求6所述的方法,其特征在于,所述判断所述第一空间项所属的空间块中是否存在与所述第一空间项的项目位置相邻接的第四空间项,包括:
在第二预设搜索索引中查找所述第一空间项对应的目标空间块编号,其中,所述第二预设搜索索引包括以空间块编号为键以及以第二空间项列表为值的搜索结构,其中,所述第二空间项列表中的空间项按照偏移位置进行排序;
在所述目标空间块编号对应的空间项列表中查找是否存在第四空间项,其中,所述第四空间项对应的偏移位置与对应的空间大小的和等于所述第一空间项对应的偏移位置,或,所述第四空间项对应的偏移位置等于所述第一空间项对应的偏移位置与所述第一空间项对应的空间大小的和;
相应的,所述在第一预设搜索索引中删除所述第四空间项,并***所述第五空间项,包括:
在第一预设搜索索引中删除所述第四空间项,并***所述第五空间项;以及,在所述第二预设搜索索引中删除所述第四空间项,并***所述第五空间项。
8.根据权利要求6所述的方法,其特征在于,所述***所述第五空间项,包括:
若确定所述第五空间项的空间大小小于所属的空间块的空间大小,则***所述第五空间项。
9.根据权利要求1-8任一所述的方法,其特征在于,预设搜索索引基于日志文件构建,在发生空间项的变更操作时,将所述变更操作对应的相关信息记录到相应的日志文件中,其中,所述变更操作包括增加空间项和删除空间项,所述相关信息包括变更时间、变更操作类型、空间项对应的项目位置和空间项对应的空间大小。
10.根据权利要求9所述的方法,其特征在于,所述日志文件包括在线日志文件和离线日志文件,所述在线日志文件存储于内存中,所述离线日志文件存储于硬盘中,所述预设搜索索引基于在线日志文件构建。
11.根据权利要求10所述的方法,其特征在于,还包括:
在检测到存储服务退出事件被触发时,将当前的预设搜索索引对应的内存快照进行转存,得到快照文件,并删除在线日志文件和预设搜索索引;
在检测到所述存储服务启动时,读取所述快照文件,根据所述快照文件生成在线日志文件,并根据在线日志文件构建相应的预设搜索索引。
12.根据权利要求11所述的方法,其特征在于,所述离线日志文件的数量为多个,所述方法还包括:
计算内存中的空间项的空间总和;
当所述空间总和小于第二预设阈值时,获取目标离线日志文件,其中,所述目标离线日志文件中记录有在线日志文件中的最后一个空间块的下一个空间块中的空间项;
根据所述目标离线日志文件对在线日志文件和预设搜索索引进行更新。
13.一种存储空间管理装置,其特征在于,包括:
空间占用信息获取模块,用于在检测到第一文件的删除事件被触发时,获取所述第一文件对应的空间占用信息,其中,所述第一文件包括存储于第一空间块中的文件,所述空间占用信息中包含占用位置和占用大小,所述占用位置包括所对应的空间块编号和在所属空间块中的偏移位置;
空间项构建模块,用于根据所述空间占用信息构建对应的第一空间项,其中,所述第一空间项的项目位置与所述占用位置一致,所述第一空间项的空间大小与所述占用大小一致;
空间项***模块,用于在第一预设搜索索引中***所述第一空间项,其中,所述第一预设搜索索引中包含处于空闲状态的空间项。
14.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1-12任一项所述的方法。
15.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-12中任一所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011125813.5A CN112256650B (zh) | 2020-10-20 | 2020-10-20 | 存储空间管理方法、装置、设备及存储介质 |
PCT/CN2021/115227 WO2022083287A1 (zh) | 2020-10-20 | 2021-08-30 | 存储空间管理方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011125813.5A CN112256650B (zh) | 2020-10-20 | 2020-10-20 | 存储空间管理方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112256650A true CN112256650A (zh) | 2021-01-22 |
CN112256650B CN112256650B (zh) | 2024-05-31 |
Family
ID=74245025
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011125813.5A Active CN112256650B (zh) | 2020-10-20 | 2020-10-20 | 存储空间管理方法、装置、设备及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN112256650B (zh) |
WO (1) | WO2022083287A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114357030A (zh) * | 2022-01-04 | 2022-04-15 | 深圳市智百威科技发展有限公司 | 一种大数据存储***及方法 |
WO2022083287A1 (zh) * | 2020-10-20 | 2022-04-28 | 百果园技术(新加坡)有限公司 | 存储空间管理方法、装置、设备及存储介质 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116225339B (zh) * | 2023-03-14 | 2023-12-12 | 北京兴汉网际股份有限公司 | 一种基于物联网的计算机信息存储分析***及方法 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1395246A (zh) * | 2002-06-14 | 2003-02-05 | 清华大学 | 虚拟镜像光盘盘片的实现方法及其***硬件结构 |
US20070124279A1 (en) * | 2003-12-31 | 2007-05-31 | Zte Corporation | Method for quickly retrieving a record in a data page of a database |
US20110145188A1 (en) * | 2008-08-07 | 2011-06-16 | Thomas Vachuska | Providing data structures for determining whether keys of an index are present in a storage system |
US20110276781A1 (en) * | 2010-05-05 | 2011-11-10 | Microsoft Corporation | Fast and Low-RAM-Footprint Indexing for Data Deduplication |
CN103678638A (zh) * | 2013-12-20 | 2014-03-26 | 厦门雅迅网络股份有限公司 | 一种基于磁盘的对象缓存方法 |
CN106708427A (zh) * | 2016-11-17 | 2017-05-24 | 华中科技大学 | 一种适用于键值对数据的存储方法 |
US20180373727A1 (en) * | 2017-06-26 | 2018-12-27 | Vmware, Inc. | Management of b-tree leaf nodes with variable size values |
US20190026302A1 (en) * | 2017-07-19 | 2019-01-24 | Sap Se | Persistent Directory For Variable-Size Entry Container Free-Space Handling |
CN111143285A (zh) * | 2018-11-06 | 2020-05-12 | 深圳市茁壮网络股份有限公司 | 一种小文件存储文件***以及小文件处理方法 |
CN111656325A (zh) * | 2018-02-23 | 2020-09-11 | 国际商业机器公司 | 在按时间排序的日志结构化键-值存储***中从故障快速恢复 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107045422B (zh) * | 2016-02-06 | 2020-12-01 | 华为技术有限公司 | 分布式存储方法和设备 |
CN106886375B (zh) * | 2017-03-27 | 2019-11-05 | 百度在线网络技术(北京)有限公司 | 存储数据的方法和装置 |
CN110597762A (zh) * | 2018-05-25 | 2019-12-20 | 杭州海康威视***技术有限公司 | 文件处理方法、装置、设备及存储介质 |
CN110147203B (zh) * | 2019-05-16 | 2022-11-04 | 北京金山云网络技术有限公司 | 一种文件管理方法、装置、电子设备及存储介质 |
CN112256650B (zh) * | 2020-10-20 | 2024-05-31 | 广州市百果园网络科技有限公司 | 存储空间管理方法、装置、设备及存储介质 |
-
2020
- 2020-10-20 CN CN202011125813.5A patent/CN112256650B/zh active Active
-
2021
- 2021-08-30 WO PCT/CN2021/115227 patent/WO2022083287A1/zh active Application Filing
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1395246A (zh) * | 2002-06-14 | 2003-02-05 | 清华大学 | 虚拟镜像光盘盘片的实现方法及其***硬件结构 |
US20070124279A1 (en) * | 2003-12-31 | 2007-05-31 | Zte Corporation | Method for quickly retrieving a record in a data page of a database |
US20110145188A1 (en) * | 2008-08-07 | 2011-06-16 | Thomas Vachuska | Providing data structures for determining whether keys of an index are present in a storage system |
US20110276781A1 (en) * | 2010-05-05 | 2011-11-10 | Microsoft Corporation | Fast and Low-RAM-Footprint Indexing for Data Deduplication |
CN103678638A (zh) * | 2013-12-20 | 2014-03-26 | 厦门雅迅网络股份有限公司 | 一种基于磁盘的对象缓存方法 |
CN106708427A (zh) * | 2016-11-17 | 2017-05-24 | 华中科技大学 | 一种适用于键值对数据的存储方法 |
US20180373727A1 (en) * | 2017-06-26 | 2018-12-27 | Vmware, Inc. | Management of b-tree leaf nodes with variable size values |
US20190026302A1 (en) * | 2017-07-19 | 2019-01-24 | Sap Se | Persistent Directory For Variable-Size Entry Container Free-Space Handling |
CN111656325A (zh) * | 2018-02-23 | 2020-09-11 | 国际商业机器公司 | 在按时间排序的日志结构化键-值存储***中从故障快速恢复 |
CN111143285A (zh) * | 2018-11-06 | 2020-05-12 | 深圳市茁壮网络股份有限公司 | 一种小文件存储文件***以及小文件处理方法 |
Non-Patent Citations (1)
Title |
---|
王建伟;: "空间数据库磁盘管理器的研究与设计", 现代电子技术, no. 24, pages 58 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022083287A1 (zh) * | 2020-10-20 | 2022-04-28 | 百果园技术(新加坡)有限公司 | 存储空间管理方法、装置、设备及存储介质 |
CN114357030A (zh) * | 2022-01-04 | 2022-04-15 | 深圳市智百威科技发展有限公司 | 一种大数据存储***及方法 |
CN114357030B (zh) * | 2022-01-04 | 2022-09-30 | 深圳市智百威科技发展有限公司 | 一种大数据存储***及方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2022083287A1 (zh) | 2022-04-28 |
CN112256650B (zh) | 2024-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112256650B (zh) | 存储空间管理方法、装置、设备及存储介质 | |
US9043334B2 (en) | Method and system for accessing files on a storage system | |
CN112114753B (zh) | 一种数据写入方法、装置及设备 | |
CN103460197A (zh) | 计算机***、文件管理方法以及元数据服务器 | |
CN113568582B (zh) | 数据管理方法、装置和存储设备 | |
CN109189759B (zh) | Kv存储***中的数据读取方法、数据查询方法、装置及设备 | |
CN113377292B (zh) | 一种单机存储引擎 | |
CN107506466B (zh) | 一种小文件存储方法及*** | |
CN114625696A (zh) | 文件恢复方法、装置、电子设备及存储介质 | |
CN112306957A (zh) | 获取索引节点号的方法、装置、计算设备和存储介质 | |
CN114610680A (zh) | 分布式文件***元数据管理方法、装置、设备及存储介质 | |
CN111552438B (zh) | 一种对象写入的方法、装置、服务器和存储介质 | |
CN113239012A (zh) | 一种数据库迁移方法、装置、电子设备和存储介质 | |
CN111400273A (zh) | 数据库扩容方法、装置、电子设备及机器可读存储介质 | |
CN115599295A (zh) | 一种存储***的节点扩容方法和装置 | |
CN113821476B (zh) | 数据处理方法及装置 | |
CN108021562B (zh) | 应用于分布式文件***的存盘方法、装置及分布式文件*** | |
CN114416676A (zh) | 数据处理方法、装置、设备和存储介质 | |
CN114647658A (zh) | 一种数据检索方法、装置、设备及机器可读存储介质 | |
CN111399753B (zh) | 写入图片的方法和装置 | |
CN109241011B (zh) | 一种虚拟机文件处理方法及装置 | |
CN114722261A (zh) | 一种资源的处理方法、装置、电子设备及存储介质 | |
CN111984598A (zh) | 一种高性能元数据日志文件管理方法、***、介质及终端 | |
CN117539409B (zh) | 基于数据缓存的查询加速方法、装置、介质及电子设备 | |
CN117632953B (zh) | 数据循环存储方法、装置、服务器及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |