一种用于追加对象的存储方法及存储系统技术方案

技术编号:35900221 阅读:18 留言:0更新日期:2022-12-10 10:36
本发明专利技术公开了一种用于追加对象的存储方法及存储系统,包括将硬盘空间拆分为多个存储子块,并为任一存储子块配置用于描述该存储子块基本信息的第一控制头;以及为追加对象配置用于描述其基本信息的第二控制头,所述第二控制头配置的基本信息包括对象标识、对象大小以及对象当前所写的长度;在向硬盘空间写入追加对象的情况下,基于所述第二控制头确定追加对象的写入状态,所述写入状态包括其使用的存储子块的数量以及当前的写入长度。利用本申请的方法实现了对元数据异步修改,保证IO写入基本只有写入数据开销,极大降低元数据的管理开销。销。销。

【技术实现步骤摘要】
一种用于追加对象的存储方法及存储系统


[0001]本专利技术涉及数据存储
,尤其涉及一种用于追加对象的存储方法及存储系统。

技术介绍

[0002]传统存储技术,在管理本地硬盘,多采用复杂的管理机制。比如采用rocksdb数据库,来记录空间是否被分配还是释放。也有使用btree来记录,空间的分配和释放。这些方式,在每一次分配或者释放时,都涉及多次IO交互,无法将本地元数据管理的性能发挥到极致。
[0003]传统本地硬盘管理,都是基于覆盖写进行设计,需要考虑碎片整理,所以逻辑相对复杂。另外,考虑到覆盖写,下一次IO写入的硬盘空间是不确定的。
[0004]传统分布式存储,在故障恢复时,考虑到数据的覆盖写入,需要复杂的元数据信息描述,以及复杂的恢复流程,才能够保证数据恢复的一致性。

技术实现思路

[0005]本专利技术实施例提供一种用于追加对象的存储方法及存储系统,实现对元数据异步修改,保证IO写入基本只有写入数据开销,极大降低元数据管理的开销。
[0006]本专利技术实施例提供一种用于追加对象的存储方法,包括:
[0007]将硬盘空间拆分为多个存储子块,并为任一存储子块配置用于描述该存储子块基本信息的第一控制头;以及
[0008]为追加对象配置用于描述其基本信息的第二控制头,所述第二控制头配置的基本信息包括对象标识、对象大小以及对象当前所写的长度;
[0009]在向硬盘空间写入追加对象的情况下,基于所述第二控制头确定追加对象的写入状态,所述写入状态包括其使用的存储子块的数量以及当前的写入长度。
[0010]可选的,还包括在存储系统启动后,扫描所有存储子块的第一控制头,并建立追加对象的对象信息与所述第一控制头之间的映射表,所述存储系统包括数块硬盘。
[0011]可选的,对于处于闲置状态的存储子块,通过链表进行连接;
[0012]在追加对象将当前存储子块写满的情况下,从所述链表获取对应的第一控制头,并配置第一控制头的状态信息,并将对象信息插入到所述映射表中,以完成存储子块的分配。
[0013]可选的,还包括:
[0014]利用数据打散算法确定在追加对象写入后需要执行冗余备份的硬盘;
[0015]在硬盘状态异常的情况下,对于不允许写映射关系发生变化的追加对象,通过副本写入,且所有副本写入完成后,返回成功。
[0016]可选的,在执行数据恢复的情况下,以各副本中最短长度为准,协商追加对象的数据长度。
[0017]可选的,在执行数据恢复的情况下,还包括:
[0018]比较待恢复硬盘上追加写对象长度与正常盘上数据长度,以确定需要恢复的数据量。
[0019]本申请实施例还提出一种存储系统,包括:存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被处理器执行时实现前述的用于追加对象的存储方法的步骤。
[0020]本申请实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现前述的用于追加对象的存储方法的步骤。
[0021]本专利技术实施例通过拆分磁盘空间,并为任一存储子块配置用于描述该存储子块基本信息的第一控制头,并且为追加对象配置用于描述其基本信息的第二控制头,且第二控制头只维护对象数据写入长度信息,大块写入长度信息,由此实现了对元数据异步修改,保证IO写入基本只有写入数据开销,极大降低元数据的管理开销。
[0022]上述说明仅是本专利技术技术方案的概述,为了能够更清楚了解本专利技术的技术手段,而可依照说明书的内容予以实施,并且为了让本专利技术的上述和其它目的、特征和优点能够更明显易懂,以下特举本专利技术的具体实施方式。
附图说明
[0023]通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本专利技术的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
[0024]图1为本申请实施例追加对象的存储方法的基本流程图;
[0025]图2为本申请实施例控制头配置示例;
[0026]图3为本申请实施例追加对象恢复流程示意图;
[0027]图4为本申请实施例追加对象恢复示例。
具体实施方式
[0028]下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
[0029]本专利技术实施例提供一种用于追加对象的存储方法,如图1所示,包括:
[0030]在步骤S101中,将硬盘空间拆分为多个存储子块,并为任一存储子块配置用于描述该存储子块基本信息的第一控制头。具体的拆分的各存储子块的大小可以是相同的,例如图2中硬盘空间拆分多个4M的存储子块,第一控制头用于描述子块的基本信息。在一些具体的示例中,如果子块未被分配,Olog id为

1,Olog idx也为

1。如果子块被分配,Olog id表示使用此子块的追加对象id,Olog idx表示此块在追加对象内第几个子块。
[0031]在步骤S102中,为追加对象配置用于描述其基本信息的第二控制头,所述第二控制头配置的基本信息包括对象标识、对象大小以及对象当前所写的长度。本示例中,每个追加对象配置有一个对应的第二控制头,用于描述追加对象的基本信息,具体包括对象id,对
象大小,以及对象当前所写的长度。
[0032]在步骤S103中,在向硬盘空间写入追加对象的情况下,基于所述第二控制头确定追加对象的写入状态,所述写入状态包括其使用的存储子块的数量以及当前的写入长度。在数据写入的情况下,修改追加对象的当前写入长度,由此可以通过追加对象的当前写入长度,计算出当前使用了几个子块,以及子块内追加对象当前的写入长度。在一些实施例中,追加对象控制头中不记录自身所使用哪些子块的信息,避免解决追加对象控制头和数据块控制头信息一致性问题。
[0033]在一些实施例中,还包括在存储系统启动后,扫描所有存储子块的第一控制头,并建立追加对象的对象信息与所述第一控制头之间的映射表,所述存储系统包括数块硬盘。具体的在存储系统启动后,通过扫描所有的存储子块的第一控制头,在内存中建立Ologid+idx到第一控制头的映射表。基于当前大块设计,4TB盘,块数量也有1M个,在一些示例中可以采用hash表记录此映射关系,从而加速查找效率。
[0034]在一些实施例中,对于处于闲置状态的存储子块,通过链表进行连接;
[0035]在追加对象将当前存储子块写满的情况下,从所述链表获取对应的第一控制头,并配置第一控制头的状态信息,并将对象信息插入到所述映射表中,以完成存储子块的分配。具体的,追加对象当前所写子块写满后,例如本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种用于追加对象的存储方法,其特征在于,包括:将硬盘空间拆分为多个存储子块,并为任一存储子块配置用于描述该存储子块基本信息的第一控制头;以及为追加对象配置用于描述其基本信息的第二控制头,所述第二控制头配置的基本信息包括对象标识、对象大小以及对象当前所写的长度;在向硬盘空间写入追加对象的情况下,基于所述第二控制头确定追加对象的写入状态,所述写入状态包括其使用的存储子块的数量以及当前的写入长度。2.如权利要求1所述的用于追加对象的存储方法,其特征在于,还包括在存储系统启动后,扫描所有存储子块的第一控制头,并建立追加对象的对象信息与所述第一控制头之间的映射表,所述存储系统包括数块硬盘。3.如权利要求2所述的用于追加对象的存储方法,其特征在于,对于处于闲置状态的存储子块,通过链表进行连接;在追加对象将当前存储子块写满的情况下,从所述链表获取对应的第一控制头,并配置第一控制头的状态信息,并将对象信息插入到所述映射表中,以完成存储子块的分配。4.如权利要求2所述的...

【专利技术属性】
技术研发人员:余攀舒坦马宁
申请(专利权)人:中电云数智科技有限公司
类型:发明
国别省市:

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

1