一种数据存储方法、装置、设备及可读存储介质制造方法及图纸

技术编号:35607635 阅读:19 留言:0更新日期:2022-11-16 15:30
本申请公开了一种数据存储方法、装置、设备及可读存储介质,方法应用于bitmap分配器,包括:对位图层中一未被占用且未被加锁的children加锁;判断加锁的children对应的磁盘空间中是否存在待存储数据对应的连续可用空间;若是,将待存储数据存储到连续可用空间中;若否,释放锁,对其他任一未被占用且未被加锁的children进行加锁,直至对位图层中最后一未被占用且未被加锁的children进行加锁和相应处理为止。本申请公开的上述技术方案,通过对未被占用且未被加锁的children进行加锁实现数据并发存储,提高数据存储效率,并优先将数据存储到磁盘的连续可用空间中,增强数据存储的连续性。的连续性。的连续性。

【技术实现步骤摘要】
一种数据存储方法、装置、设备及可读存储介质


[0001]本申请涉及存储
,更具体地说,涉及一种数据存储方法、装置、设备及可读存储介质。

技术介绍

[0002]BlueStore是分布式存储系统ceph的存储引擎。目前,BlueStore中默认的磁盘空间分配器是新版的bitmap分配器,其中,bitmap分配器是基于位图实现的,整体分为L0、L1、L2这三个位图层,每一个位图层都包含了完整的磁盘空间映射。其中,L2层中的一个children是L1层中多个children的集合,L1层中的一个children是L0层中多个children的集合,L0层中的一个children是磁盘中多个块的集合,children是slot的分配单元,slot是位操作基本单元。
[0003]目前,bitmap分配器在对数据进行数据存储时,是根据L2层中的children、L1层中的children、L0层中的children、磁盘中块之间的关系从L2层中的第一个children开始往L1层、L0层、磁盘中的块进行查询,以确定磁盘中未被占用的块,然后,将数据存储在未被占用的块中。并且,每一份数据均是从L2层中第一个children开始确定未被占用的块,并进行数据存储,且是待上一份数据完成存储之后,再对下一份数据进行相同操作而进行数据存储,以避免发生数据冲突。但是,由于bitmap分配器是采用位图的管理方式,因此,容易造成磁盘碎片化,无法保证数据存储的连续性,而且上述方式会导致数据存储的效率比较低。
[0004]综上所述,如何增强数据存储的连续性,并提高数据存储效率,是目前本领域技术人员亟待解决的技术问题。

技术实现思路

[0005]有鉴于此,本申请的目的是提供一种数据存储方法、装置、设备及可读存储介质,用于增强数据存储的连续性,并提高数据存储效率。
[0006]为了实现上述目的,本申请提供如下技术方案:
[0007]一种数据存储方法,应用于BlueStore中的bitmap分配器,包括:
[0008]当获取到待存储数据时,对位图层中任一未被占用且未被加锁的children加锁;
[0009]从加锁的children向下查询,判断磁盘中与所述加锁的children对应的磁盘空间中,是否存在与所述待存储数据的大小对应的连续可用空间;
[0010]若是,则将所述待存储数据存储到所述连续可用空间中;
[0011]若否,则释放所述加锁的children的锁,对所述位图层中其他任一未被占用且未被加锁的children进行加锁,执行所述从加锁的children向下查询的步骤,直至对所述位图层中最后一未被占用且未被加锁的children进行加锁和相应处理为止。
[0012]优选的,对位图层中任一未被占用且未被加锁的children加锁,包括:
[0013]根据所述bitmap分配器包含的第一位图层中一个children对应的磁盘空间大小、第二位图层中一个children对应的磁盘空间大小及所述待存储数据的大小,从所述第一位
图层、所述第二位图层中确定待加锁位图层;所述第一位图层中的一个children对应第二位图层中的多个children;
[0014]对所述待加锁位图层中任一未被占用且未被加锁的children进行加锁。
[0015]优选的,对位图层中任一未被占用且未被加锁的children加锁,包括:
[0016]对所述bitmap分配器包含的第一位图层中任一未被占用且未被加锁的children进行加锁。
[0017]优选的,还包括:
[0018]获取所述磁盘回收无用数据得到的可用空间;
[0019]判断磁盘中与所述加锁的children对应的磁盘空间中,是否存在与所述待存储数据的大小对应的连续可用空间,包括:
[0020]判断所述磁盘中除回收无用数据得到的可用空间之外且与所述加锁的children对应的磁盘空间中,是否存在与所述待存储数据的大小对应的连续可用空间;
[0021]在对所述位图层中其他任一未被占用且未被加锁的children进行加锁时,还包括:
[0022]若对所述位图层中最后一个未被占用且未被加锁的children进行加锁,并确定所述磁盘中除回收无用数据得到的可用空间之外且与最后一个加锁的children对应的磁盘空间中,不存在与所述待存储数据的大小对应的连续可用空间,则从所述位图层中第一个未被占用且未被加锁的children开始进行加锁,并从加锁的children开始查询,判断所述磁盘中回收无用数据得到且与所述加锁的children对应的可用空间中是否存在与所述待存储数据的大小对应的连续可用空间。
[0023]优选的,还包括:
[0024]当获取到新待存储数据时,对所述bitmap分配器包含的位图层中其他任一未被占用且未被加锁的children进行加锁,以根据与所述新待存储数据对应的加锁的children确定相应的连续可用空间,并将所述新待存储数据存储到相应的连续可用空间中。
[0025]优选的,若确定所述位图层中最后一未被占用且加锁的children对应的磁盘空间中不存在与所述待存储数据的大小对应的连续可用空间,则还包括:
[0026]将所述待存储数据按照所述磁盘的最小分配单元进行划分,并将划分得到的数据块存储在所述磁盘中空闲的最小分配单元中。
[0027]优选的,在将所述待存储数据存储到所述连续可用空间中之后,还包括:
[0028]输出所述待存储数据的存储信息。
[0029]一种数据存储装置,应用于BlueStore中的bitmap分配器,包括:
[0030]第一加锁模块,用于当获取到待存储数据时,对位图层中任一未被占用且未被加锁的children加锁;
[0031]查询模块,用于从加锁的children向下查询,判断磁盘中与所述加锁的children对应的磁盘空间中,是否存在与所述待存储数据的大小对应的连续可用空间;
[0032]存储模块,用于若所述磁盘中与所述加锁的children对应的磁盘空间中,存在与所述待存储数据的大小对应的连续可用空间,则将所述待存储数据存储到所述连续可用空间中;
[0033]执行模块,用于若所述磁盘中与所述加锁的children对应的磁盘空间中,不存在
与所述待存储数据的大小对应的连续可用空间,则释放所述加锁的children的锁,对所述位图层中其他任一未被占用且未被加锁的children进行加锁,执行所述从加锁的children向下查询的步骤,直至对所述位图层中最后一未被占用且未被加锁的children进行加锁和相应处理为止。
[0034]一种数据存储设备,包括:
[0035]存储器,用于存储计算机程序;
[0036]处理器,用于执行所述计算机程序时实现如上述任一项所述的数据存储方法的步骤。
[0037]一种可读存储介质,所述本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据存储方法,其特征在于,应用于BlueStore中的bitmap分配器,包括:当获取到待存储数据时,对位图层中任一未被占用且未被加锁的children加锁;从加锁的children向下查询,判断磁盘中与所述加锁的children对应的磁盘空间中,是否存在与所述待存储数据的大小对应的连续可用空间;若是,则将所述待存储数据存储到所述连续可用空间中;若否,则释放所述加锁的children的锁,对所述位图层中其他任一未被占用且未被加锁的children进行加锁,执行所述从加锁的children向下查询的步骤,直至对所述位图层中最后一未被占用且未被加锁的children进行加锁和相应处理为止。2.根据权利要求1所述的数据存储方法,其特征在于,对位图层中任一未被占用且未被加锁的children加锁,包括:根据所述bitmap分配器包含的第一位图层中一个children对应的磁盘空间大小、第二位图层中一个children对应的磁盘空间大小及所述待存储数据的大小,从所述第一位图层、所述第二位图层中确定待加锁位图层;所述第一位图层中的一个children对应第二位图层中的多个children;对所述待加锁位图层中任一未被占用且未被加锁的children进行加锁。3.根据权利要求1所述的数据存储方法,其特征在于,对位图层中任一未被占用且未被加锁的children加锁,包括:对所述bitmap分配器包含的第一位图层中任一未被占用且未被加锁的children进行加锁。4.根据权利要求1所述的数据存储方法,其特征在于,还包括:获取所述磁盘回收无用数据得到的可用空间;判断磁盘中与所述加锁的children对应的磁盘空间中,是否存在与所述待存储数据的大小对应的连续可用空间,包括:判断所述磁盘中除回收无用数据得到的可用空间之外且与所述加锁的children对应的磁盘空间中,是否存在与所述待存储数据的大小对应的连续可用空间;在对所述位图层中其他任一未被占用且未被加锁的children进行加锁时,还包括:若对所述位图层中最后一个未被占用且未被加锁的children进行加锁,并确定所述磁盘中除回收无用数据得到的可用空间之外且与最后一个加锁的children对应的磁盘空间中,不存在与所述待存储数据的大小对应的连续可用空间,则从所述位图层中第一个未被占用且未被加锁的children开始进行加锁,并从加锁的children开始查询,判...

【专利技术属性】
技术研发人员:刘亚宇李文鹏乔继辉
申请(专利权)人:济南浪潮数据技术有限公司
类型:发明
国别省市:

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

1