一种对象回收方法及装置制造方法及图纸

技术编号:27935106 阅读:26 留言:0更新日期:2021-04-02 14:15
本申请提供了一种对象回收方法及装置,该方法包括:在对数据库当前层所产生的元数据执行合并compact操作过程中,判断当前读取到的元数据是否为垃圾数据;若为垃圾数据,则确定所述元数据对应的写时重定向ROW对象,并将确定出的ROW对象的位图中与所述元数据相对应的位置进行垃圾标记处理;并基于所述元数据的大小更新所述确定出的ROW对象的垃圾量;获取各个ROW对象的垃圾量,并从各个ROW对象中筛选出垃圾量满足回收条件的目标ROW对象;针对筛选出的目标ROW对象,获取所述目标ROW对象的位图;判断所述目标ROW对象的位图中是否存在未被标记的位;当不存在未被标记的位时,则释放所述目标ROW对象。由此实现了ROW对象的快速回收。

【技术实现步骤摘要】
一种对象回收方法及装置
本申请涉及存储
,尤其涉及一种对象回收方法及装置。
技术介绍
目前,高性能存储介质固态硬盘(SolidStateDisk,SSD)已大规模商用。在分布式存储领域,基于全SSD的全闪存分布式存储系统也陆续推出。在分布式全闪系统中,采用写时重定向(Redirect-on-write,ROW)的方式写入数据会更能发挥SSD盘的性能优势,同时能更好的支持重删、压缩等特性。但ROW的写入方式是全新写的模式,必须配合垃圾回收(GarbageCollection,GC),由GC通过垃圾回收及时释放空间,这样才能持续的支持ROW写入数据,也就是说,提升GC的性能也会大幅提升ROW的数据写入性能。而要提升GC的性能,就要准确识别垃圾量最多的对象,使每次搬移的有效数据最少。现有技术在识别存放有垃圾的对象时,是在写入数据时把数据的元数据读取出来,找到其原来存放的对象,标记为垃圾,以使GC通过垃圾量决策是否回收对象。而根据元数据的存放方式进行对象回收时,主流采用RocksDB或类似的变种技术来存放元数据,但该技术下对元数据进行操作时,是元数据修改时仅追加写的模式,利用多级元数据存储聚合减少元数据的写放大。在此技术场景下,如果每次修改元数据之前还要把原来的元数据读起来,那读开销很大,极其影响对象回收性能。因此,如何能快速进行对象回收,进而提升分布式全闪存系统的整体性能是值得考虑的技术问题之一。
技术实现思路
有鉴于此,本申请提供一种对象回收方法及装置,用以快速进行对象回收,进而提升分布式全闪存系统的整体性能。具体地,本申请是通过如下技术方案实现的:根据本申请的第一方面,提供一种对象回收方法,包括:在对数据库当前层所产生的元数据执行合并compact操作过程中,判断当前读取到的元数据是否为垃圾数据;若为垃圾数据,则确定所述元数据对应的写时重定向ROW对象,并将确定出的ROW对象的位图中与所述元数据相对应的位置进行垃圾标记处理;并基于所述元数据的大小更新所述确定出的ROW对象的垃圾量;获取各个ROW对象的垃圾量,并从各个ROW对象中筛选出垃圾量满足回收条件的目标ROW对象;针对筛选出的目标ROW对象,获取所述目标ROW对象的位图;判断所述目标ROW对象的位图中是否存在未被标记的位;当不存在未被标记的位时,则释放所述目标ROW对象。根据本申请的第二方面,提供一种对象回收装置,包括:第一判断模块,用于在对数据库当前层所产生的元数据执行合并compact操作过程中,判断当前读取到的元数据是否为垃圾数据;确定模块,用于若所述第一判断模块的判断结果为垃圾数据,则确定所述元数据对应的写时重定向ROW对象,并将确定出的ROW对象的位图中与所述元数据相对应的位置进行垃圾标记处理;统计模块,用于基于所述元数据的大小更新所述确定出的ROW对象的垃圾量;第一获取模块,用于获取各个ROW对象的垃圾量,并从各个ROW对象中筛选出垃圾量满足回收条件的目标ROW对象;第二获取模块,用于针对筛选出的目标ROW对象,获取所述目标ROW对象的位图;第二判断模块,用于判断所述目标ROW对象的位图中是否存在未被标记的位;释放模块,用于当所述第二判断模块的判断结果为不存在未被标记的位时,则释放所述目标ROW对象。根据本申请的第三方面,提供一种电子设备,包括处理器和机器可读存储介质,机器可读存储介质存储有能够被处理器执行的计算机程序,处理器被计算机程序促使执行本申请实施例第一方面所提供的方法。根据本申请的第四方面,提供一种机器可读存储介质,机器可读存储介质存储有计算机程序,在被处理器调用和执行时,计算机程序促使处理器执行本申请实施例第一方面所提供的方法。本申请实施例的有益效果:由于本申请提出了为每个ROW对象维护一个位图并统计各个ROW对象的垃圾量,然后基于垃圾量和位图进行对象的回收,由于垃圾量和位图的获得是在compact操作过程中产生的,compact操作本身就需要读取元数据,从而避免了现有技术中在写入数据时再次读取元数据并判断元数据是否为垃圾数据的方案,减少了一次元数据的读取,从而节省了一次读取元数据的读取时间,进而实现了ROW对象的快速回收。附图说明图1是本申请实施例提供的一种对象回收方法的流程示意图;图2是本申请实施例提供的一种对象回收方法的流程图;图3是本申请实施例提供的RocksDB的compact操作和位图的处理逻辑示意图;图4是本申请实施例提供的一种对象回收装置的框图;图5是本申请实施例提供的实施对象回收方法的电子设备的框图。具体实施方式这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如本申请的一些方面相一致的装置和方法的例子。在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相对应的列出项目的任何或所有可能组合。应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。下面对本申请提供的对象回收方法进行详细地说明。参见图1和图2所示,图1和图2均是本申请提供的一种对象回收方法的流程图,需要说明的是,图1的步骤和图2的步骤是两个相互依赖的流程,本实施例对图1和图2的执行顺序不进行限定。在实际应用中,可以由设备中不同的进程来执行图1和图2的流程,如两个进行分别并行执行图1和图2的流程等等,因此本申请对图1和图2的执行顺序没有明确的限制,具体可以根据实际情况而定。接下来先对垃圾数据识别及标记的处理过程进行介绍,请参考图1所示的方法,该方法可包括如下所示步骤:S101、在对数据库当前层所产生的元数据执行合并compact操作过程中,判断当前读取到的元数据是否为垃圾数据;若为垃圾数据,则执行步骤S102;若不为垃圾数据则执行步骤S103。本步骤中,数据库可以但不限于为RocksDB,该RocksDB本身是基于多层的SST(seesectiontext)文件存放数据的,当每一层的存储容量达到一定阈值的时候就会触发合并(compact)操作,即,将当前层新产生的元数据与下一层的旧的元数据进行合并去重处理,然后再重新写入到下一层。由于在compac本文档来自技高网...

【技术保护点】
1.一种对象回收方法,其特征在于,包括:/n在对数据库当前层所产生的元数据执行合并compact操作过程中,判断当前读取到的元数据是否为垃圾数据;/n若为垃圾数据,则确定所述元数据对应的写时重定向ROW对象,并将确定出的ROW对象的位图中与所述元数据相对应的位置进行垃圾标记处理;并基于所述元数据的大小更新所述确定出的ROW对象的垃圾量;/n获取各个ROW对象的垃圾量,并从各个ROW对象中筛选出垃圾量满足回收条件的目标ROW对象;/n针对筛选出的目标ROW对象,获取所述目标ROW对象的位图;/n判断所述目标ROW对象的位图中是否存在未被标记的位;/n当不存在未被标记的位时,则释放所述目标ROW对象。/n

【技术特征摘要】
1.一种对象回收方法,其特征在于,包括:
在对数据库当前层所产生的元数据执行合并compact操作过程中,判断当前读取到的元数据是否为垃圾数据;
若为垃圾数据,则确定所述元数据对应的写时重定向ROW对象,并将确定出的ROW对象的位图中与所述元数据相对应的位置进行垃圾标记处理;并基于所述元数据的大小更新所述确定出的ROW对象的垃圾量;
获取各个ROW对象的垃圾量,并从各个ROW对象中筛选出垃圾量满足回收条件的目标ROW对象;
针对筛选出的目标ROW对象,获取所述目标ROW对象的位图;
判断所述目标ROW对象的位图中是否存在未被标记的位;
当不存在未被标记的位时,则释放所述目标ROW对象。


2.根据权利要求1所述的方法,其特征在于,还包括:
当存在未被标记的位时,判断所述目标ROW对象的位图中未被标记的位对应的元数据是否为垃圾数据;
若不为垃圾数据,则将所述未被标记的位对应的元数据搬移至其他ROW对象并将所述未被标记的位对应的元数据写入数据库中与所述其他ROW对象相对应的位置处;
释放所述目标ROW对象。


3.根据权利要求1或2所述的方法,其特征在于,按照下述方法获取所述目标ROW对象的位图中未被标记的位对应的元数据:
基于所述未被标记的位在所述位图中的位置,确定所述未被标记的位对应的元数据在数据库中的地址;
从所述数据库中获取确定出的地址对应的元数据。


4.根据权利要求1或2所述的方法,其特征在于,按照下述方法判断元数据是否为垃圾数据:
确定所述元数据对应的用户对象;
判断确定出的用户对象是否被重定向到新的ROW对象;
若被重定向到新的ROW对象,则确认所述元数据为垃圾数据。


5.一种对象回收装置,其特征在于,包括:
第一判断模块,用于在对数据库当前层所产生的元数据执行合并compact操作过程中,判断当前读取到的元数据是否为垃圾数据;
确定模块,用于若所述第一判断模块的判断结果为垃圾数据,则确定所述元数据对应的写时重定向ROW对象,并将确定出的ROW对象的位图中与所述元数据相对应的位置...

【专利技术属性】
技术研发人员:何孝金
申请(专利权)人:新华三大数据技术有限公司
类型:发明
国别省市:河南;41

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1