分布式块存储底层读写系统及方法技术方案

技术编号:34480619 阅读:26 留言:0更新日期:2022-08-10 08:56
本发明专利技术公开了分布式块存储底层读写系统及方法,属于分布式存储技术领域,要解决的技术问题为如何满足分布式块存储的轻量级、低开销和简易运维技术特性。包括:数据卷,配置于虚拟机/容器,存储有数据块;卷引擎,用于接收客户端发送的写IO请求以及读IO请求,并转发所述写IO请求以及读IO请求;数据文件,配置于磁盘系统,用于存储数据日志格式的数据块,并用于通过索引日志记录卷副本中所有数据块的索引信息;卷副本,用于将写IO请求中数据块转换为数据日志格式,以追加写的方式将数据日志格式的数据库写入数据文件,并更新索引日志;用于基于读IO请求从索引日志中查找对应数据块的索引信息,基于索引信息从数据文件中读取数据块。块。块。

【技术实现步骤摘要】
分布式块存储底层读写系统及方法


[0001]本专利技术涉及分布式存储
,具体地说是分布式块存储底层读写系统及方法。

技术介绍

[0002]分布式云将云计算能力进一步拓展到边缘,边缘云逐渐成为云计算的发展趋势。受限于边缘站点环境,边缘云的规模通常较小,部署的服务器数量较少,可提供的硬件资源有限,因此边缘云平台一般不会像中心云平台那样“面面俱到”,往往更加轻量化,占用更小的资源开销,微服务化架构平台,提供满足各类边缘业务场景需求的计算、网络和存储服务。在分布式存储领域,以Ceph为代表传统分布式存储系统,提供块、对象和文件存储能力,它以高扩展性、高性能和高可靠性等特点,云计算领域应用最为广泛的分布式存储系统。
[0003]然而Ceph本身的业务架构设计较为复杂,导致存储读写IO流程较长,如图1所示,同时涉及到的数据结构也比较复杂,并伴随着大量并发线程频繁切换等,会造成消耗较大内存和CPU。其次,对于块存储基本存储单元存储卷,根据IO流程,其存储数据通过不同PG分散至所有节点,这样导致像Ceph RBD这类分布式块存储系统很难实现基于存储卷级别的在线滚动升级。
[0004]尽管以Ceph RBD为代表的分布式块存储系统在技术上已经非常成熟,可作为云计算行业通用的云存储后端,但是在边缘计算领域中,尤其是针对大存储、低算力为核心需求的边缘视频业务场景下,这类通用存储系统并不具备轻量级、低开销和简易运维等符合这类边缘计算需求的技术特性。
[0005]如何满足分布式块存储的轻量级、低开销和简易运维技术特性,是需要解决的技术问题。

技术实现思路

[0006]本专利技术的技术任务是针对以上不足,提供分布式块存储底层读写系统及方法,来解决如何满足分布式块存储的轻量级、低开销和简易运维技术特性的技术问题。
[0007]第一方面,本专利技术的一种分布式块存储底层读写系统,包括:
[0008]数据卷,所述数据卷配置于虚拟机/容器,数据卷中存储有数据块;
[0009]卷引擎,所述卷引擎与数据卷一一对应,用于管理对应的数据卷并作为数据卷的读写IO通道和入口,用于接收客户端发送的写IO请求以及读IO请求,并转发所述写IO请求以及读IO请求;
[0010]数据文件,所述数据文件配置于磁盘系统,用于存储数据日志格式的数据块,并用于通过索引日志记录卷副本中所有数据块的索引信息;
[0011]卷副本,所述卷副本与所述卷引擎一一对应并交互,且每个卷副本对应有至少一个数据文件,用于将写IO请求中数据块转换为数据日志格式,以追加写的方式将数据日志格式的数据库写入数据文件、向卷引擎返回写IO响应,并更新索引日志;用于基于读IO请求
从索引日志中查找对应数据块的索引信息,基于索引信息从数据文件中读取数据块,并向卷引擎返回读IO响应。
[0012]作为优选,所述数据日志的数据结构包括:
[0013]日志头,所述日志头用于存储写IO请求中数据块的索引信息,所述索引信息包括操作请求、数据块在数据卷中的地址信息、数据块大小、数据块在数据文件中的地址信息,所述操作请求包括写入或删除;
[0014]日志数据,所述日志数据用于存储写IO请求中数据块实际信息,当请求操作为删除时,日志数据为空;
[0015]对于索引日志,每个索引条目对应一个数据块的索引信息,所述索引信息包括索引键值、数据块在数据卷中的偏移量和索引值、数据块大小、以及数据块在数据文件中的地址信息。
[0016]作为优选,所述日志索引底层由有序键值B+树引擎实现持久化存储。
[0017]作为优选,所述卷副本用于通过如下步骤更新索引日志:
[0018]根据写IO请求中数据块在数据卷中偏移量和数据块大小,从索引日志中查找满足包含不大于数据块偏移量的最大索引键值与小于数据块偏移量+数据块大小的最大索引键值之间的所有索引条目;
[0019]如果不存在满足条件的索引条目,对于数据块写入操作,构建新的索引条目,其中,索引键值为数据块偏移量,索引值为数据块大小和数据块在数据文件中的地址信息,并将索引键值和索引值插入索引日志中;对于数据块删除操作,则不存在最新数据块,直接忽略;
[0020]如果存在一条满足条件的索引条目,对于数据块写入操作,判断请求数据块是否与索引条目对应的数据块重叠,如果重叠,则截断覆盖部分,截断后前段数据块大小为0,则删除索引条目,否则更新索引条目中数据块大小为截断后前段数据块大小,截断后后段数据块大小不为0,则构建新的索引条目,其中键值为截断后后段数据块偏移量,索引值为截断后后段数据块大小和数据文件地址信息,再将构建的新的索引条目插入索引日志中,最后构建新的索引条目,其中键值为索引键值为请求数据块偏移量,索引值为数据块大小和数据块在数据文件中的地址信息,插入日志索引中;对于数据块删除操作,并无数据块写入,与上述数据块写入操作的唯一区别是最后无需插入新数据块索引条目到索引日志中;
[0021]如果存在多条满足条件的索引条目,对于数据块写入操作,判断请求数据块是否与第一条索引对应的数据块重叠,如果重叠,则截断覆盖部分,截断后数据块大小为0,则删除第一条索引,否则更新第一条索引中的数据块大小为截断后数据块大小,判断请求数据块是否与最后一条索引对应的数据块重叠,如果重叠,则截断覆盖部分,先删除最后一条索引,截断后数据块大小为0,再构建新的索引条目,其中键值为截断后的数据块偏移量,索引值为截断后数据块大小和数据文件索引地址,将所述新的索引条目插入到索引日志中,然后删除所有中间其他的索引条目,最后构建新的索引条目,其中键值为索引键值为请求数据块偏移量,索引值为数据块大小和数据块在数据文件中的地址信息,将构建的新的索引条目插入索引日志中;对于数据块删除操作,并无数据块写入,与上述数据块写入操作的唯一区别是最后无需插入新数据块索引条目到索引日志中。
[0022]作为优选,所述卷副本用于通过如下步骤基于读IO请求从索引日志中查找对应数
据块的索引信息,基于索引信息从数据文件中读取数据块:
[0023]根据读IO请求中数据块在数据卷中的偏移量和数据块大小,从索引日志中查找满足包含不大于数据块偏移量的最大索引键值与小于数据块偏移量+数据块大小的最大索引键值之间的所有索引条目;
[0024]如果存在一条满足条件的索引条目,根据索引条目中数据文件地址信息,从数据文件中读取请求长度的数据块,并向卷引擎返回读IO响应;
[0025]若存在多条满足条件的索引条目,根据第一条索引条目数据文件地址信息,读取命中部分数据块作为第一部分数据块,根据中间索引条目中的数据文件地址信息,读取所有中间索引条目对应的数据块作为第二部分数据块,根据最后一条索引目录的数据文件地址信息,读取命中部分数据块作为第三分部数据块,然后将所述第一部分数据块、第二部分数据块以及第三部分数据块拼接成一个数据块,并向卷引擎返回读IO响应。
[0026]第二方面,本专利技术的一种分布式块存储底层读写方法,应用于本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种分布式块存储底层读写系统,其特征在于包括:数据卷,所述数据卷配置于虚拟机/容器,数据卷中存储有数据块;卷引擎,所述卷引擎与数据卷一一对应,用于管理对应的数据卷并作为数据卷的读写IO通道和入口,用于接收客户端发送的写IO请求以及读IO请求,并转发所述写IO请求以及读IO请求;数据文件,所述数据文件配置于磁盘系统,用于存储数据日志格式的数据块,并用于通过索引日志记录卷副本中所有数据块的索引信息;卷副本,所述卷副本与所述卷引擎一一对应并交互,且每个卷副本对应有至少一个数据文件,用于将写IO请求中数据块转换为数据日志格式,以追加写的方式将数据日志格式的数据库写入数据文件、向卷引擎返回写IO响应,并更新索引日志;用于基于读IO请求从索引日志中查找对应数据块的索引信息,基于索引信息从数据文件中读取数据块,并向卷引擎返回读IO响应。2.根据权利要求1所述的一种分布式块存储底层读写系统,其特征在于所述数据日志的数据结构包括:日志头,所述日志头用于存储写IO请求中数据块的索引信息,所述索引信息包括操作请求、数据块在数据卷中的地址信息、数据块大小、数据块在数据文件中的地址信息,所述操作请求包括写入或删除;日志数据,所述日志数据用于存储写IO请求中数据块实际信息,当请求操作为删除时,日志数据为空;对于索引日志,每个索引条目对应一个数据块的索引信息,所述索引信息包括索引键值、数据块在数据卷中的偏移量和索引值、数据块大小、以及数据块在数据文件中的地址信息。3.根据权利要求2所述的一种分布式块存储底层读写系统,其特征在于所述日志索引底层由有序键值B+树引擎实现持久化存储。4.根据权利要求2或3所述的一种分布式块存储底层读写系统,其特征在于所述卷副本用于通过如下步骤更新索引日志:根据写IO请求中数据块在数据卷中偏移量和数据块大小,从索引日志中查找满足包含不大于数据块偏移量的最大索引键值与小于数据块偏移量+数据块大小的最大索引键值之间的所有索引条目;如果不存在满足条件的索引条目,对于数据块写入操作,构建新的索引条目,其中,索引键值为数据块偏移量,索引值为数据块大小和数据块在数据文件中的地址信息,并将索引键值和索引值插入索引日志中;对于数据块删除操作,则不存在最新数据块,直接忽略;如果存在一条满足条件的索引条目,对于数据块写入操作,判断请求数据块是否与索引条目对应的数据块重叠,如果重叠,则截断覆盖部分,截断后前段数据块大小为0,则删除索引条目,否则更新索引条目中数据块大小为截断后前段数据块大小,截断后后段数据块大小不为0,则构建新的索引条目,其中键值为截断后后段数据块偏移量,索引值为截断后后段数据块大小和数据文件地址信息,再将构建的新的索引条目插入索引日志中,最后构建新的索引条目,其中键值为索引键值为请求数据块偏移量,索引值为数据块大小和数据块在数据文件中的地址信息,插入日志索引中;对于数据块删除操作,并无数据块写入,与
上述数据块写入操作的唯一区别是最后无需插入新数据块索引条目到索引日志中;如果存在多条满足条件的索引条目,对于数据块写入操作,判断请求数据块是否与第一条索引对应的数据块重叠,如果重叠,则截断覆盖部分,截断后数据块大小为0,则删除第一条索引,否则更新第一条索引中的数据块大小为截断后数据块大小,判断请求数据块是否与最后一条索引对应的数据块重叠,如果重叠,则截断覆盖部分,先删除最后一条索引,截断后数据块大小为0,再构建新的索引条目,其中键值为截断后的数据块偏移量,索引值为截断后数据块大小和数据文件索引地址,将所述新的索引条目插入到索引日志中,然后删除所有中间其他的索引条目,最后构建新的索引条目,其中键值为索引键值为请求数据块偏移量,索引值为数据块大小和数据块在数据文件中的地址信息,将构建的新的索引条目插入索引日志中;对于数据块删除操作,并无数据块写入,与上述数据块写入操作的唯一区别是最后无需插入新数据块索引条目到索引日志中。5.根据权利要求2或3所述的一种分布式块存储底层读写系统,其特征在于所述卷副本用于通过如下步骤基于读IO请求从索引日志中查找对应数据块的索引信息,基于索引信息从数据文件中读取数据块:根据读IO请求中数据块在数据卷中的偏移量和数据块大小,从索引日志中查找满足包含不大于数据块偏移量的最大索引键值与小于数据块偏移量+数据块大小的最大索引键值之间的所有索引条目;如果存在一条满足条件的索引条目,根据索引条目中数据文件地址信息,从数据文件中读取请求长度的数据块,并向卷引擎返回读IO响应;若存在多条满足条件的索引条目,根据第一条索引条目数据文件地址信息,读取命中部分数据块作为第一部分数据块,根据中间索引条目中的数据文件地址信息,读取所有中间索引条目对应的数据块作为第二部分数据块,根据最后一条索引目录的数据文件地址信息,读取命中部分数据块作为第三分部数据块,然后将所述第一部分数据块、第...

【专利技术属性】
技术研发人员:金伟毅王一知李明
申请(专利权)人:苏州思萃工业互联网技术研究所有限公司
类型:发明
国别省市:

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

1