一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种用于容器场景下分布式存储性能提升的方法及系统与流程

2022-09-03 16:28:48 来源:中国专利 TAG:


1.本发明涉及分布式存储及性能优化技术领域,特别涉及一种用于容器场景下分布式存储性能提升的方法及系统。


背景技术:

2.在现有的容器云分布式存储性能优化及相关技术方案中,主要利用nvme,ssd等硬件高速读写特性,为容器云的存储做一层热缓存,对高命中的数据进行热缓存,后端屏蔽热缓存中低命中数据迁移到低速设备(hdd)的过程,对于用户来说数据迁移是透明的,在用户的感知里,利用nvme,ssd等高速设备做热缓存的分布式存储系统会比单纯使用hdd低速设备的分布式存储系统快很多。采用定制化的文件系统直接绕过操作系统的默认文件系统,直接管理磁盘的裸设备,从而避免日志双写给分布式存储系统带来的写放大问题(系统日志写是非常频繁的操作,双倍的写操作会加重系统负荷,影响系统性能),从而减少系统日志写次数,提升分布式存储性能。
3.现有已知的分布式存储在容器场景下主要通过热缓存和定制文件系统的方式,提升系统性能,主要存在以下问题:
4.1、容器场景下分布式存储系统的存储节点无法识别bcache内核模块对硬盘的分区,所以无法采用bcache内核模块创建的分区做缓存提升性能。
5.2、现有分布式存储系统的热缓存机制在容器场景下有一定的性能损耗,对于io密集型业务,对读写性能要求比较高的业务场景,比如数据库读写,虚拟机硬盘,如果不采用全闪存等高昂的硬件配置很难满足业务需求。
6.3、现有分布式存储系统采用异步io读写的操作模型,数据写入队列和落盘操作由不同的线程和队列完成,在io业务繁忙且采用低速设备部署的场景下,尤其写操作密集的场景下,容易造成队列堆积,影响分布式存储系统的读写性能。
7.4、现有的分布式存储系统在延迟写(覆盖写rmw)场景下,会先进行日志修改操作即先进行元数据写,再进行数据写,相比较新写(没有日志修改)会多出一次元数据读和元数据修改操作,在元数据写和数据写的过程中都会进行数据提交和数据落盘操作,由于采用异步io读写模型,在io操作密集尤其写操作密集的场景下,很容易造成提交队列和落盘队列堆积的情况,从而影响系统写性能尤其是小文件写性能。
8.5、在容器云场景下,分布式存储的写性能尤其是小文件写,往往会成为整个平台的瓶颈所在,为了提升分布式存储系统的性能和稳定性,需要对现有的分布式存储的文件管理系统进行改造,修改文件管理系统有限自动状态机模型,增加工作者线程池,控制异步io数据落盘频率,控制延迟写场景下数据落盘次数,从而满足容器云存储平台建设成本和性能提升之间的平衡。


技术实现要素:

9.本发明的目的在于提供一种用于容器场景下分布式存储性能提升的方法及系统,
采用定制化分布式存储系统副本节点的方法,优化副本存储节点的文件系统有限自动状态机算法模型。
10.为解决上述技术问题,本发明提供一种用于容器场景下分布式存储性能提升的方法,包括以下步骤:
11.步骤1、存储节点接收到io写请求,判断io写请求是否达到系统限流瓶颈;
12.如果io写请求未达到限流瓶颈,执行步骤2;
13.如果io写请求达到限流瓶颈,执行步骤3;
14.步骤2、第一工作者线程池中的线程处理io写请求,通过第一线程池中的线程将io写请求封装成事务发送到文件系统状态机中,并以该第一工作者线程池中的线程作为提交线程,执行步骤4;
15.步骤3、第一工作者线程池中的线程处理io写请求,通过第一线程池中的线程将io写请求封装成事务发送到文件系统状态机中,通过信号量唤醒第二工作者线程池中的线程,并以第二工作者线程池中的线程作为提交线程;执行步骤4;
16.步骤4、提交线程将文件系统状态机中的事务插入到第一io提交队列中,判断第一io提交队列是否队列堆积;
17.如果队列未堆积,事务进行单独落盘;
18.如果队列堆积,事务进行批量落盘。
19.优选地,判断第一io提交队列是否队列堆积,具体包括以下步骤:
20.对第一io提交队列进行监测,将第一io提交队列中的事务进行计数,作为队列长度,判断队列长度是否超过门限;如果队列长度超过门限,则队列堆积;否则,队列未堆积。
21.优选地,事务进行单独落盘,具体包括以下步骤:
22.通过信号量唤醒第一落盘线程,第一落盘线程将第一io提交队列中的事务迁移到第二io落盘队列,第一落盘线程将第二io落盘队列中的事务进行单独落盘。
23.优选地,事务进行批量落盘,具体包括以下步骤:
24.通过信号量唤醒第二落盘线程,第二落盘线程将第一io提交队列中的事务迁移到第三io批落盘队列中,进行批量落盘。
25.优选地,单独落盘和批量落盘具体包括以下步骤:
26.落盘线程根据事务的io写类型对事务进行处理;判断事务的io写类型;io写类型分为两种,即新写和延迟写;
27.如果io写类型是新写,落盘线程将文件系统状态机中的事务所对应的元数据和数据发送至磁盘的裸设备,存储在新存储单元中;
28.如果io写类型是延迟写,落盘线程将文件系统状态机中的事务所对应的元数据和数据发送至磁盘的裸设备,复用旧有的存储单元。
29.优选地,判断事务的io写类型的具体判断方法为:
30.根据事务的大小与磁盘的裸设备的存储单元判断事务的io写类型;如果事务的大小是磁盘的裸设备的存储单元的整倍数,则事务的io写类型为新写;否则,事务的io写类型为延迟写。
31.优选地,落盘过程具体包括以下步骤:
32.存储节点为osd副本存储节点。
33.本发明还提供一种实现上述用于容器场景下分布式存储性能提升的方法的系统,包括:
34.定制化文件系统模块,用于实现磁盘的裸设备的管理,空间分配,空间回收,数据存储,查看,删除,更改;
35.数据封装传输模块,用于将io写请求封装成事务发送到文件系统状态机中;
36.元数据缓存模块,用于保存及变更元数据信息;
37.对象网关,用于对访问请求进行解析;
38.节点监控模块,用于监控存储节点的状态;
39.通知下发模块,用于保持集群节点状态一致。
40.与现有技术相比,本发明的有益效果为:
41.1、本发明深度定制化分布式系统存储节点的文件系统,改进了文件系统有限自动状态机的算法模型,增强了分布式存储系统存储节点的并发性,io吞吐,提升了分布式系统在容器云平台环境下的写速度;
42.2、本发明弥补了容器场景下无法使用bcache技术的不足,减少了分布式存储系统对于昂贵硬件nvme硬盘,rdma网卡依赖,减少了操作系统内核依赖,更加具有通用性;
43.3、本发明主要通过容器云部署场景下,对分布式存储定制化文件系统进行优化,修改文件系统的有限状态机模型,增加文件系统数据落盘的工作者线程池,控制数据落盘频率,控制定制化文件系统延迟写落盘次数,从而优化分布式存储在容器场景下的写操作,提升分布式操作系统的写性能,保障了分布式存储在容器场景下的稳定性和可用性。
附图说明
44.下面结合附图对本发明的具体实施方式作进一步详细说明。
45.图1是本发明一种用于容器场景下分布式存储性能提升的方法的流程示意图;
46.图2是本发明一种用于容器场景下分布式存储性能提升的方法的平台架构示意图;
47.图3是本发明一种用于容器场景下分布式存储性能提升的系统的功能架构示意图;
48.图4是本发明一种用于容器场景下分布式存储性能提升的系统的部署架构示意图。
具体实施方式
49.在下面的描述中阐述了很多具体细节以便于充分理解本发明。但是本发明能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广,因此本发明不受下面公开的具体实施的限制。
50.在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
51.应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
52.本发明提出的一种用于容器场景下分布式存储性能提升的方法,具体包括以下步骤:
53.(1)存储节点接收到io写请求,判断io写请求是否达到系统限流瓶颈;
54.如果io写请求未达到限流瓶颈,执行步骤2;
55.如果io写请求达到限流瓶颈,执行步骤3;
56.在本实施例中:如果io请求3秒携带了5t的数据量,系统限流瓶颈为容纳1秒1gb数据流量,3秒5t数据超过3gb流量,达到系统限流瓶颈了。
57.(2)io写请求未达到限流瓶颈,第一工作者线程池中的线程处理io写请求,通过第一线程池中的线程将io写请求封装成一个或多个事务进入文件系统状态机中,并以该第一工作者线程池中的线程作为提交线程,执行步骤4;
58.在本实施例中,io写请求封装成一个或多个事务,具体包括以下步骤:如果io写请求的数据量小于等于4m,则只需要作为一个数据块封装成一个事务;如果io写请求的数据量大于4m,则需要将io写请求分割成若干4m大小的数据块,作为若干事务;
59.存储节点为osd副本存储节点;
60.(3)io写请求达到限流瓶颈,增加第二工作者线程池,第一工作者线程池中的线程处理io写请求,通过第一线程池中的线程将io写请求封装成一个或多个事务进入文件系统状态机中,通过信号量唤醒第二工作者线程池中的线程,并以第二工作者线程池中的线程作为提交线程;执行步骤4;
61.在该步骤中,将处理io请求的线程和处理io提交的线程分离,增加文件系统状态机并发处理能力,工作者线程池按照简单轮询算法进行负荷分担;
62.io请求处理线程和io队列提交线程分离,即原先处理io请求的工作者线程只处理io请求分割,封装,响应这些工作,系统达到限流瓶颈不再处理io队列提交的工作。io队列提交工作由专门的新的工作者线程池(第二工作者线程池)处理。
63.(4)提交线程(第一工作者线程池中的线程或者第二工作者线程池中的线程)将文件系统状态机中的事务插入到第一io提交队列中,判断第一io提交队列是否队列堆积;
64.具体的队列堆积判断方法为:对第一io提交队列进行监测,将第一io提交队列中的事务进行计数,作为队列长度,判断队列长度是否超过门限;
65.如果队列长度未超过门限,执行步骤5;
66.如果队列长度超过门限,执行步骤6;
67.(5)通过信号量唤醒第一落盘线程,第一落盘线程将第一io提交队列中的事务迁移到第二io落盘队列,第一落盘线程将第二io落盘队列中的事务进行单独落盘;
68.落盘线程根据事务的io写类型对事务进行处理;判断事务的io写类型;io写类型分为两种,即新写(简单写)和延迟写(覆盖写);
69.如果io写类型是新写,第一落盘线程将文件系统状态机中的事务所对应的元数据
和数据发送至磁盘的裸设备,存储在新存储单元中;
70.如果io写类型是延迟写,第一落盘线程将文件系统状态机中的事务所对应的元数据和数据发送至磁盘的裸设备;事务所对应的元数据发生修改,存储在已经储存元数据的存储单元中;数据存储在复用的存储单元;
71.(6)增加文件系统状态机io队列堆积状态;在第一io提交队列堆积状态下,增加第二落盘线程和第三io批落盘队列,第二落盘线程将第一io提交队列中的事务迁移到第三io批落盘队列中,进行批量落盘,批量落盘能减少io落盘次数,加快io处理速度;
72.如果io写类型是新写,第二落盘线程将文件系统状态机中的事务所对应的元数据和数据发送至磁盘的裸设备,存储在新存储单元中。
73.如果io写类型是延迟写,第二落盘线程将文件系统状态机中的事务所对应的元数据和数据发送至磁盘的裸设备;事务所对应的元数据发生修改,存储在已经储存元数据的存储单元中;数据存储在复用的存储单元;
74.第一落盘线程和第二落盘线程分别用于单独落盘和批量落盘。
75.在步骤5和步骤6中,判断事务的io写类型的具体判断方法为:
76.根据事务的大小与磁盘的裸设备的存储单元判断事务的io写类型;如果事务的大小是磁盘的裸设备的存储单元的整倍数,则事务的io写类型为新写;否则,事务的io写类型为延迟写;
77.在本发明的一个具体实例中:
78.磁盘的裸设备最小的存储单元大小是4k(实际情况更复杂,hdd是512字节,nvme是4k,这里统一4k),io写请求被分割成4m大小的数据块,这个数据块对应内存一块区域,文件系统对这块内存区域进行管理,划分成大小为4k的数据链表。
79.假如事务的文件大小是8k,文件系统状态机只要从数据链表分配2个新的存储单元就可以了,然后将这2个内存单元对应到磁盘的裸设备2个存储单元,就是新写;
80.假如事务的文件大小是1k,文件系统状态机会查找空间空闲链表,有没有内存单元可以复用(对应已经储存过部分资料的存储单元);
81.比如有个内存单元用了2k,文件系统状态机将这个内存单元比如标记编号10001,偏移量899,大小2k,这个10001的内存单元分配给这个1k大小的文件,文件系统状态机根据偏移量和大小计算一下这个1k大小文件和10001内存单元有没重叠的数据部分,合并后用0补齐不满足4k的部分,然后对应到磁盘的裸设备的存储单元,这个就是延迟写(覆盖写)。
82.覆盖合并旧有数据为:1k大小的文件,空间空闲列表freelist为这个事务分配了一个已经使用了2k大小内存空间的内存单元,如果这个内存单元与文件存在0.5k的重复内容,则已经使用的内容空间变成2.5k,这就是覆盖合并旧有数据。
83.在本发明的实施例中,元数据包括空间空闲列表freelist、内存数据区域onode和写前日志wal等;修改元数据就是空间空闲列表freelist从内存数据区域onode所包含的区域分配若干内存单元给文件,空间空闲列表freelist本身发生了变化,内存数据区域onode包含的数据区域的内容,大小,偏移量,生产时间都发生了变化,写前日志wal是记录这些变化的日志,所以也在变化,这些变化就是修改元数据。
84.本发明通过优化分布式存储文件系统的有限自动状态机算法,增加文件系统工作者线程池,控制异步io数据落盘频率,控制延迟写场景下数据落盘次数,从而提升分布式存
储读写性能。
85.在分布式存储系统的文件管理层,增加有限状态机算法状态,在io操作达到系统限流瓶颈值,将io提交操作从分布式存储的存储节点处理io请求消息的工作者线程池分离,增加专有的io提交工作者线程池,分担io提交操作。
86.增加异步io队列的监测机制,当发现系统第一io提交队列有io操作堆积,迁移堆积的队列io事务到批量落盘队列,增加专有的io落盘工作者线程,批量完成io落盘操作。
87.在分布式存储系统延迟写场景下,当系统达到限流瓶颈或者监测到第一io提交队列有io操作堆积,将元数据写和数据写操作的io落盘操作,从重耗时io路径迁移到负荷较轻的工作者线程,批量完成延迟写io落盘,减少io落盘操作次数,减轻系统整体负荷,从而提升分布式存储系统在容器场景下系统性能,以及减少对特定内核模块诸如bcache内核模块技术依赖,以及减少采用昂贵高速硬件设备诸如nvme硬盘,rdma标准网卡的依赖。
88.本发明通过在分布式存储系统存储节点定制化文件系统,直接管理磁盘的裸设备,通过修改文件系统有限自动状态机算法,增加系统限流状态,第一io提交队列监测机制,以及通过控制io落盘频率,控制延迟写io落盘次数,提升分布式存储在容器环境下的写性能。
89.本发明增加了工作者线程池,分担了存储节点在业务繁忙场景下io写的系统负荷,改进了文件系统异步io的读写模型,增强了分布式存储系统io写吞吐;
90.从实际的生产和压力测试结果来看,分布式存储系统的io写操作,往往成为云平台的瓶颈所在,本发明深度定制化存储节点的文件系统,提升的是整个平台的性能和稳定性。
91.本发明还提供一种用于容器场景下分布式存储性能提升的,包括:
92.定制化文件系统模块,用于实现磁盘的裸设备的管理,空间分配,空间回收,数据存储,查看,删除,更改;磁盘为分布式存储系统硬盘;即用于事务进行单独落盘和批量落盘;
93.副本对象存储模块,用于进行数据副本数据冗余,故障隔离,数据恢复和同步;
94.数据封装传输模块,用于将数据块封装成事务发送到文件系统状态机进行处理;
95.元数据缓存模块,用于保存及变更元数据信息;
96.对象网关,用于对访问请求进行解析;
97.节点监控模块,用于监控存储节点的状态;用于监控存储节点的状态;用于判断io写请求是否达到系统限流瓶颈;用于判断第一io提交队列是否队列堆积。
98.通知下发模块,用于保持集群节点状态一致。
99.分布式存储系统核心节点为mon监控节点和osd副本存储节点,部署一套mon监控节点监控osd副本存储节点,主要完成分布式共识系统、客户请求鉴权、存储节点地图监控等功能。
100.部署osd副本存储节点,主要完成定制化文件系统进行磁盘的裸设备管理,置归组管理,副本数据控制,数据同步,副本节点心跳检测等功能。
101.在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块、模组或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元、
模组或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。
102.所述单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
103.另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
104.特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分从网络上被下载和安装,和/或从可拆卸介质被安装。在该计算机程序被中央处理单元(cpu)执行时,执行本发明的方法中限定的上述功能。需要说明的是,本发明上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线段、或半导体的系统、装置或器件,或者任意以上的组合。
105.附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
106.以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何在本发明揭露的技术范围内的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献