一种基于ObjectStore的LogStructure存储系统及其数据写入方法

文档序号:9810631阅读:654来源:国知局
一种基于ObjectStore的LogStructure存储系统及其数据写入方法
【专利说明】一种基于ObjectStore的LogStructure存储系统及其数据写入方法
技术领域
[0001 ] 本发明涉及计算机存储技术领域,更具体地说,涉及一种基于Ob jectstore的LogStructure存储系统及其数据写入方法。
【背景技术】
[0002]Ceph是一套开源统一分布式存储系统,具有优异的性能、可靠性、可扩展性,在各个领域都有广泛的使用,并获得了大量的开源组织的支持,主要由0SD、M0N和MDS三部分构成,其中,OSD作为基础的数据存储单元,如图1所示,为OSD的整体架构,如图所示,在底层的存储中当前主要有Fi IeStore、KeyValueStore和NewStore,该底层的不同存储均实现了面向对象数据库系统Ob jectStore的相关接口。
[0003]然而,当前的面向对象数据库系统ObjectStore存在如下问题:
[0004](I)在F i I e Stor e中,数据写入先存储到j ourna I上,有利于提升小1的性能,但存在数据双倍写放大的问题,在为顺序写入时该数据双倍写放大问题尤其严重,从而使得整个Ceph系统的顺序写入的速度并不高,并且在数据修复时,其内部大部分为顺序读写,使得系统存在1阻塞,影响系统的正常使用。同时,当前的SSD加速全部体现的写加速上,对读并没有提尚;
[0005](2)KeyValueSt0re将全部数据全部存入到数据库中,但由于一般的数据库都不是针对存储大对象而设计的,因此存在写入性能不高的问题,在对于顺序读写时尤其严重;
[0006](3 )NewStore又称KeyFi IeStore,其通过使用数据库存储元数据以及文件系统存储实际数据,解决了 Fi IeStore和KeyValueStore中的上述问题,但是在数据写入时,缓存直接使用数据库进行存储,同样会存在数据库不适合存储大数据块的问题,使得在实际使用时顺序读写的性能有所提升,但随机读写的性能的提升并不明显。

【发明内容】

[OOO7 ]本发明要解决的技术问题在于,针对面向对象数据库系统Ob jectstore在应用于Ceph时存在上述问题,提供一种基于0b jectStore的LogStructure存储系统及其数据写入方法。
[0008]为实现上述目的及其他相关目的,本发明提供一种基于ObjectStore的LogStructure存储系统,所述LogStructure存储系统包括元数据管理器和数据管理器,其中,所述元数据管理器与所述数据管理器之间是解耦的;所述数据管理器为LogStructure引擎;所述LogStructure引擎包括多个内存索引表、多个日志文件与多个归档日志索引文件以及对象文件;所述多个内存索引表、所述多个日志文件与多个归档日志索引文件以及所述对象文件分别存储于内存、SSD以及HDD中,且所述内存中的所述多个内存索引表分别——对应于所述SSD的所述多个日志文件。
[0009]于本发明的一实施例中,所述内存索引表中的索引信息通过跳表结构来组织,且所述索引表的查询时间复杂度为O(1gN)。
[00?0] 于本发明的一实施例中,所述LogStructure存储系统还包括处理器,所述处理器用于当数据写入时将数据按文件尾部追加的方式写入到日志文件中,同时在内存中建立该日志文件中的相关位置的索引信息。
[0011]于本发明的一实施例中,所述所述处理器还用于当一个日志文件中的数据条目在达到预设阈值时,将该日志文件对应的内存索引表进行冻结,并生成出一个新的日志文件继续接替写入的操作。
[0012]于本发明的一实施例中,所述处理器还用于当日志文件在SSD的空间达到预设阈值时,将SSD中的日志文件的数据迀移到HDD中。
[0013]本发明还提供了一种数据写入方法,应用于如上述的基于Objectstore的LogStructure存储系统中,所述LogStructure存储系统包括元数据管理器和数据管理器,其中,所述元数据管理器与所述数据管理器之间是解耦的;所述数据管理器为LogStructure引擎;所述LogStructure引擎包括多个内存索引表、多个日志文件与多个归档日志索引文件以及对象文件;所述多个内存索引表、所述多个日志文件与多个归档日志索引文件以及所述对象文件分别存储于内存、SSD以及HDD中,且所述内存中的所述多个内存索引表分别一一对应于所述SSD的所述多个日志文件;所述方法包括以下步骤:S1、创建所述对象文件并将数据写入到创建的所述对象文件中;S2、在判断能对所述数据进行尾部添加时,将所述数据写入到底层的所述对象文件中;S3、在判断所述数据的长度超过所述SSD的写入缓存区的限制阈值时,将所述数据写入到所述HDD的所述对象文件中,并将所述写入缓存区中存在的部分数据设置为删除状态;S4、将写入到写入缓存区的所述数据分页以分成多个页对齐的小对象,并将所述多个小对象写入到所述内存索引表的记录中。
[0014]于本发明的一实施例中,所述内存索引表中的索引信息通过跳表结构来组织,且所述索引表的查询时间复杂度为O(1gN)。
[0015]于本发明的一实施例中,所述LogStructure存储系统还包括处理器,所述处理器用于当数据写入时将数据按文件尾部追加的方式写入到日志文件中,同时在内存中建立该日志文件中的相关位置的索引信息。
[0016]于本发明的一实施例中,所述处理器还用于当一个日志文件中的数据条目在达到预设阈值时将该日志文件对应的内存索引表进行冻结,并生成出一个新的日志文件继续接替写入的操作。
[0017]于本发明的一实施例中,所述处理器还用于当日志文件在SSD的空间达到预设阈值时,将SSD中的日志文件的数据迀移到HDD中。
[0018]如上所述,本发明的基于Ob jectstore的LogStructure存储系统及其数据写入方法,具有以下有益效果= LogStructure引擎存储于内存、SSD以及HDD,充分考虑了不同存储介质的特性,使得该LogStructure存储系统进行数据存储发挥了数据的存储性能。在SSD中使用LogStructure结构来进行数据存储,很好地将随机写转化为顺序写,提高了系统的写入性能,从而提升Ceph的整体读写性能。同时,HDD中使用对象文件进行存储,权衡了数据的读写要求,使得该LogStructure存储系统可适用于不同应用场景中。另外,LogStructure存储系统解决了原有的Ob jectstore的写放大问题,提高设备的有效利用率。该LogStructure存储系统实现分层存储,将热数据缓存到SSD中,并实现可读的写缓存。对于顺序数据的写入,直接写入到磁盘中,不经过SSD,避免数据修复或迀移时制作的大量顺序1以引起系统的性能抖动出现“Slow 10”现象。
【附图说明】
[0019]图1显示为当前Ceph的OSD的基本架构图。
[°02°]图2显示为本发明实施例的基于Ob jectstore的LogStructure存储系统的结构图。[0021 ] 图3显示为图2中的LogStructure引擎的结构图。
[0022]图4显示为图3中的内存索引表的结构图。
[0023]图5显示为图3中的日志文件的结构图。
[0024]图6显示为日志追加写入的示意图
[0025]图7显示为本发明的基于Objectstore的LogStructure存储系统的基本1数据流图。
[0026]图8显示为本发明实施例的基于ObjectStore的LogStructure存储系统的数据写入方法的流程图。
【具体实施方式】
[0027]以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的【具体实施方式】加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
[0028]需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
[0029]请参阅2至图8。图2所示,是本发明实施例的基于Ob jectStore的LogStructure存储系统的结构图。参考图2,该LogStructure存储系统包括元数据管理器和数据管理器,其中,该元数据管理器与该数据管理器之间是解耦的,该元数据管理器为一个Κ/V数据库(K/VDatabase),该数据管理器为LogStructure引擎(LogStructure Engine)。
[0030]该Κ/V数据库包括Omap和0bjectMeta,0map用于匹配对应的Ceph 0bjectSore的相关接口,并存储对象的相关属性信息,ObjectMeta用于数据管理,并映射到LogStructure引擎的对象管理中。该LogStructure引擎中包含WAL、ReadCache和0b jectFiIeStore,WAL和ReadCache作为读写的加速器,ObjectFi IeStore使用独立的分块文件存储具体的数据对象。
[0031 ] 如图3所示,LogStructure引擎包括多个内存索引表(MemIndexTable)、多个日志文件(Log File)与多个归档日志索引(ArchiveLogIndex)文件以及多个对象文件(ObjectFile),其中,多个内存索引表存储于内存中,多个日志文件和多个归档日志索引文件存储于SSD(Solid State Drive,固态硬盘)中,以及多个对象文件存储于HDD(Mechanical harddisk,机械硬盘)中,且内存的内存索引表对应于SSD的日志文件,实现了LogStructure引擎存储于SSD与HDD的混合环境中。进一步地,对象文件的大小为IM?16M。
[0032]其中,通过跳表数据结构来组织内存索引表中的索引信息,内存索引表的查询时间复杂度为O(1gN),如图4所示,索引信息的基本结构为:key、日志ID(1gno)、日志偏移(offset)和seq,其中,日志ID与日志偏移用于定位出具体的数据记录;seq表示数据存储的方式,这样不需要修改数据内容,只采用追加的方式,因此该LogStructure存储系统是可以实现系统并行性为“写互斥读共享且写
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1