一种适用于块设备的leveldb存储方法及存储系统技术方案

技术编号:37333856 阅读:32 留言:0更新日期:2023-04-21 23:12
本发明专利技术涉及一种适用于块设备的leveldb存储方法及存储系统,所述方法包括以下步骤:将块设备划分为若干个存储单元,每个存储单元分为元数据部分和数据部分,并基于元数据部分维护有一列表;接收创建文件指令,从列表中分配一个元数据结构体,配置该元数据结构体的元数据信息,同时移至元数据map中;接收文件读写指令,从元数据map中查找待读写文件对应的元数据结构体,执行相应读写动作,更新对应元数据结构体的元数据信息;接收文件删除指令,从元数据map中查找待删除文件对应的元数据结构体,更新该元数据结构体的元数据信息,并将该元数据结构体回收。与现有技术相比,本发明专利技术具有可以使leveldb在块设备上高效稳定运行等优点。点。点。

【技术实现步骤摘要】
一种适用于块设备的leveldb存储方法及存储系统


[0001]本专利技术涉及存储
,尤其是涉及一种适用于块设备的leveldb存储方法及存储系统。

技术介绍

[0002]随着信息化技术的发展,海量数据的存储及保护需求日益增大,大规模的数据量对传统的数据库带来了前所未有的挑战,业务需求迫切需要使用具备更高读写性能的数据库支持,其中一种高性能的健值数据库leveldb被很多厂商广泛使用。
[0003]leveldb是一种以LSM

Tree为模型的key/value数据库,写入性能十分出色,是人们研究和改进key/value数据库性能的参考对象。现有技术中缺乏能够支持leveldb对接的接口使之能够在块设备上运行的方案,块设备的海量数据处理还存在效率不高的问题。

技术实现思路

[0004]本专利技术的目的就是为了克服上述现有技术存在的缺陷而提供一种适用于块设备的leveldb存储方法及存储系统,可以使leveldb在块设备上高效稳定运行。
[0005]本专利技术的目的可以通过以下技术方案来实现:
[0006]一种适用于块设备的leveldb存储方法,包括以下步骤:
[0007]将块设备划分为若干个存储单元,每个存储单元分为元数据部分和数据部分,并基于元数据部分维护有一列表,该列表用于存储元数据结构体;
[0008]接收创建文件指令,在所述列表不为空时,从所述列表中分配一个元数据结构体,配置该元数据结构体的元数据信息,同时将该元数据结构体移至预先创建的元数据map中;
[0009]接收文件读写指令,从所述元数据map中查找待读写文件对应的元数据结构体,基于该元数据结构体的元数据信息,获取待读写文件在数据部分的数据块起始位置,执行相应读写动作,更新对应元数据结构体的元数据信息;
[0010]接收文件删除指令,从所述元数据map中查找待删除文件对应的元数据结构体,更新该元数据结构体的元数据信息,并将该元数据结构体回收至所述列表中。
[0011]进一步地,在接收创建文件指令时,若所述列表为空,则通过格式化重新创建多个元数据结构体存入所述列表中。
[0012]进一步地,所述元数据信息包括文件大小、文件编号、属性和文件名。
[0013]进一步地,所述属性包括已创建和已删除。
[0014]进一步地,接收创建文件指令时,对所述元数据信息的配置具体为:
[0015]将所述文件名配置为创建文件名,将所述属性标志为已创建,将所述文件大小配置为0,顺序分配一个编号至所述文件编号。
[0016]进一步地,所述文件读写指令包括追加写指令、按照偏移写指令或按照偏移读指令。
[0017]进一步地,接收追加写指令时,对所述元数据信息的更新具体为:将所述文件大小
更新为原本的文件大小加追加写入数据长度。
[0018]进一步地,接收按照偏移写指令时,对所述元数据信息的更新具体为:
[0019]判断写入的数据长度是否大于所述文件大小的当前值,若是,则更新文件大小为偏移量加写入的数据长度。
[0020]进一步地,接收文件删除指令时,对所述元数据信息的更新具体为:将所述属性标志为已删除。
[0021]本专利技术还提供一种适用于块设备的leveldb存储系统,所述块设备划分为若干个存储单元,每个存储单元分为元数据部分和数据部分,所述leveldb存储系统包括:
[0022]列表维护模块,基于元数据部分维护有一列表,该列表用于存储元数据结构体;
[0023]map维护模块,用于创建并维护一元数据map;
[0024]操作指令处理模块,根据接收到操作指令进行相应处理,具体地:
[0025]接收创建文件指令,在所述列表不为空时,从所述列表中分配一个元数据结构体,配置该元数据结构体的元数据信息,同时将该元数据结构体移至预先创建的元数据map中;
[0026]接收文件读写指令,从所述元数据map中查找待读写文件对应的元数据结构体,基于该元数据结构体的元数据信息,获取待读写文件在数据部分的数据块起始位置,执行相应读写动作,更新对应元数据结构体的元数据信息;
[0027]接收文件删除指令,从所述元数据map中查找待删除文件对应的元数据结构体,更新该元数据结构体的元数据信息,并将该元数据结构体回收至所述列表中。
[0028]与现有技术相比,本专利技术具有以下有益效果:
[0029]1、本专利技术将块设备划分为若干个存储单元,维护有一用于存储待分配的元数据结构体的列表和用于实现文件快速寻找的元数据map,实现了一种leveldb对接存储引擎,为leveldb提供文件系统对外提供的基本功能,使leveldb能够在块设备存储中稳定高效运行。
[0030]2、本专利技术能够对leveldb提供文件系统对外提供的基本功能,包含文件创建、文件打开、读写文件、删除文件等,可靠性高。
[0031]3、本专利技术使用简单,只需要在创建时注册存储引擎即可,填补了在一些特殊场景无法使用leveldb的空白。
附图说明
[0032]图1为本专利技术单个存储单元的示意图;
[0033]图2为本专利技术原理示意图。
具体实施方式
[0034]下面结合附图和具体实施例对本专利技术进行详细说明。本实施例以本专利技术技术方案为前提进行实施,给出了详细的实施方式和具体的操作过程,但本专利技术的保护范围不限于下述的实施例。
[0035]实施例1
[0036]本实施例提供一种适用于块设备的leveldb存储方法,包括以下步骤:
[0037]将块设备划分为若干个存储单元,每个存储单元分为元数据部分和数据部分,并
基于元数据部分维护有一列表,该列表用于存储元数据结构体;
[0038]接收创建文件指令,在所述列表不为空时,从所述列表中分配一个元数据结构体,配置该元数据结构体的元数据信息,同时将该元数据结构体移至预先创建的元数据map中;
[0039]接收文件读写指令,从所述元数据map中查找待读写文件对应的元数据结构体,基于该元数据结构体的元数据信息,获取待读写文件在数据部分的数据块起始位置,执行相应读写动作,更新对应元数据结构体的元数据信息;
[0040]接收文件删除指令,从所述元数据map中查找待删除文件对应的元数据结构体,更新该元数据结构体的元数据信息,并将该元数据结构体回收至所述列表中。
[0041]本实施例划分的每个存储单元如图1所示,数据部分中单个数据块大小限制为4MB,元数据部分限制大小为4MB,4MB元数据总共能容纳65535个文件元数据,一个存储单元可以容纳256GB数据。元数据部分内容构成:元数据包含超级块级所有文件元数据,单个元数据按照64字节对齐,单个元数据里主要写入了对应元数据信息,包含:文件大小,文件编号,文件编号用于计算文件起始位置,属性,文件名,所述属性包括已创建和已删除。数据部分为leveldb写入的实际本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种适用于块设备的leveldb存储方法,其特征在于,包括以下步骤:将块设备划分为若干个存储单元,每个存储单元分为元数据部分和数据部分,并基于元数据部分维护有一列表,该列表用于存储元数据结构体;接收创建文件指令,在所述列表不为空时,从所述列表中分配一个元数据结构体,配置该元数据结构体的元数据信息,同时将该元数据结构体移至预先创建的元数据map中;接收文件读写指令,从所述元数据map中查找待读写文件对应的元数据结构体,基于该元数据结构体的元数据信息,获取待读写文件在数据部分的数据块起始位置,执行相应读写动作,更新对应元数据结构体的元数据信息;接收文件删除指令,从所述元数据map中查找待删除文件对应的元数据结构体,更新该元数据结构体的元数据信息,并将该元数据结构体回收至所述列表中。2.根据权利要求1所述的适用于块设备的leveldb存储方法,其特征在于,在接收创建文件指令时,若所述列表为空,则通过格式化重新创建多个元数据结构体存入所述列表中。3.根据权利要求1所述的适用于块设备的leveldb存储方法,其特征在于,所述元数据信息包括文件大小、文件编号、属性和文件名。4.根据权利要求3所述的适用于块设备的leveldb存储方法,其特征在于,所述属性包括已创建和已删除。5.根据权利要求3所述的适用于块设备的leveldb存储方法,其特征在于,接收创建文件指令时,对所述元数据信息的配置具体为:将所述文件名配置为创建文件名,将所述属性标志为已创建,将所述文件大小配置为0,顺序分配一个编号至所述文件编号。6.根据权利要求3所述的适用于块设备的leveldb存储方法,其特征在于,所述文件读写指令包括追加写指令、按照...

【专利技术属性】
技术研发人员:董倩王瀚杨洋
申请(专利权)人:上海爱数信息技术股份有限公司
类型:发明
国别省市:

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

1