CN115756726A - 一种应用于云平台的容器本地存储智能调度与分配方法 - Google Patents
一种应用于云平台的容器本地存储智能调度与分配方法 Download PDFInfo
- Publication number
- CN115756726A CN115756726A CN202211260655.3A CN202211260655A CN115756726A CN 115756726 A CN115756726 A CN 115756726A CN 202211260655 A CN202211260655 A CN 202211260655A CN 115756726 A CN115756726 A CN 115756726A
- Authority
- CN
- China
- Prior art keywords
- container
- storage
- disk
- scheduling
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明公开了一种应用于云平台的容器本地存储智能调度与分配方法,涉及计算机云计算领域,主要用于轻量级云平台,具体包含由存储调度插件、磁盘设备管理器、分布式数据库三个组件完成的磁盘信息采集上报、容器调度与存储分配、容器销毁与存储回收三个流程;该方法通过引入存储调度插件,使得存储资源同其它资源一样,可以参与容器调度,存储分配算法采用最优匹配算法,一方面支持多样化的本地存储使用方式,另一方面可以减轻磁盘碎片化,提高磁盘利用率,引入了部署在每个节点上的磁盘设备管理器进行磁盘的上报、分配、IO带宽限制和回收。
Description
技术领域
本发明涉及计算机云计算领域,尤其涉及一种应用于云平台的容器本地存储智能调度与分配方法。
背景技术
在容器云平台中,容器调度所依赖的资源主要包括CPU、内存、GPU及存储,其中CPU、内存、GPU为无状态资源,这些资源的内部差异对容器是不感知的,仅使用这些资源的容器可以在集群内符合条件的节点间漂移。存储资源是有状态资源,在云计算领域,依据存储与容器的相对位置,可以将其分为网络存储和本地存储,网络存储适用于容器漂移的场景,由于高度依赖网络这一并不可靠的基础设施,且现有的网络存储解决方案性能均低于本地存储,有性能和高可靠存储需求的容器只能使用节点本地存储。使用本地存储资源的容器会将数据保存在容器所运行节点的磁盘中,为了防止数据丢失,这种容器需要控制漂移。
目前容器对本地存储资源的使用,主要包括两种方式:
主机路径模式:将宿主机上指定目录直接挂载至容器中,在容器中对挂载目录进行写操作会将数据保存在宿主机目录下。这种方式的优点是实现简单、读写效率高。其缺点包括以下三点:一是无法进行容器隔离,如果将同一目录挂载至不同的容器中,则它们拥有相同的存储视图,在一个容器中的操作结果会被另一个容器感知,存在数据安全隐患;二是无法防止容器漂移(漂移即意味着数据丢失);三是无法限制存储配额和IO带宽,无法对对挂载目录进行限容,可能导致磁盘空间被单个容器耗尽。
(2)本地存储模式:在主机路径模式的基础上,将存储抽象成虚拟资源并添加适配层,由适配层完成存储调度。这种方式解决了主机路径模式的存储隔离以及容器漂移的问题,但是也引入了其他的问题:一是仍然无法限制配额和IO带宽,容器会无限制地写磁盘,直到空间被耗尽,无法保证按容器优先级分配IO带宽;二是将存储抽象成了虚拟资源,在进行存储调度与分配时,需要创建虚拟资源,这种方案增加了容器调度和启动的复杂性,导致存储分配速度慢,数据同步困难;三是该模式的大部分实现将物理卷(PV,PhysicalVolume)合并为一个或者多个卷组(VG,Volume Group)然后按照容器需求划分为逻辑卷(LV,Logical Volume)。LVM将多块盘合并后屏蔽了不同磁盘的差异,一方面导致无法就某一块盘进行IO带宽限制,另一方面限制了磁盘的多样化使用方式,无法支持按照裸盘独占和裸盘共享的形式分配,而对于更高性能需求的容器,需要使用裸盘。另外,制作LVM会初始化磁盘导致原始数据丢失,无法进行容器本地存储的原地升级。
综上,目前两种主流本地存储调度、分配方案均存在明显缺陷,这些缺陷限制了轻量级云平台对存储的管控能力和存储利用率,无法满足高性能容器对存储的读写性能需求。亟须一种可以支持多样化的容器本地存储使用方式,且具有存储限额、存储隔离、带宽限制功能的容器本地存储调度与分配方案。
发明内容
本发明所要解决当前轻量级云平台存在的问题,提出了一种适用于轻量级云平台的本地存储调度、分配方法,其支持了容器本地存储的多种分配形式、实现了本地存储资源的高效调度、防止了容器重启时漂移、保证了容器之间的存储隔离性、实现了容器存储配额限制和IO带宽限制。
本发明为解决上述技术问题采用以下技术方案:
一种应用于云平台的容器本地存储智能调度与分配方法,具体包含由存储调度插件、磁盘设备管理器、分布式数据库三个组件完成的磁盘信息采集上报、容器调度与存储分配、容器销毁与存储回收三个流程;
其中,存储调度插件作为容器云引擎调度中心的扩展插件,用于依据容器存储请求、容器间的拓扑结构、各节点存储资源和已调度容器存储绑定情况完成容器的智能调度;
运行在每个节点上的磁盘设备管理器,用于负责存储挂载信息收集、卷准备、卷挂载和卷回收、容器读写的每秒字节量和每秒IO次数限制;
分布式数据库,用于集群的存储状态信息,包含每个节点存储总量、容器与存储绑定信息、容器的亲和性和反亲和性需求存储在分布式数据库中,为存储分配调度提供决策;
磁盘信息采集上报流程:运行在每个节点上的磁盘设备管理器收集磁盘信息并上报到容器云引擎,引擎将上报的节点磁盘信息存储在分布式数据库中;
容器的调度与存储分配流程:
容器创建命令下发后处于待调度容器队列中,队列中的容器根据优先级排序,调度器从队列中取出待调度容器进行调度,依据各节点CPU、内存、端口、标签等资源信息进行节点的初步筛选,筛选后的节点列表被传递给存储调度插件;
存储调度插件首先检查当前容器是否已经调度,若有与正在调度的容器匹配的存储调度绑定信息,则采用该调度绑定信息完成调度,该行为可以保持容器存储状态,保证容器多次重启而存储不丢失;
若没有匹配的调度绑定信息,则根据从分布式数据库中动态获取集群各节点存储信息、已经运行容器的存储信息和亲和性、反亲和性需求,结合正在调度容器的磁盘请求、亲和性与反亲和性需求,综合计算后获得各节点磁盘的分配方式、使用量、剩余量以及具有存储请求的容器间的拓扑关系等用于存储调度插件工作的信息;
容器销毁与存储回收流程:
通过对正在调度的容器与已调度且未删除容器的亲和性与反亲和性的分析进行节点的过滤与排序;
其中,对于有反亲和性需求的容器,存储调度插件过滤掉具有反亲和性冲突的容器所运行的节点;
对于有亲和性需求的容器,调度器根据亲和性评分策略对节点打分并排序。
作为本发明一种应用于云平台的容器本地存储智能调度与分配方法的进一步优选方案,在容器销毁与存储回收流程中,采用最优匹配算法进行存储分配,具体如下:
最优匹配算法的输入为容器本地存储请求、节点列表、每个节点上的磁盘信息;
输出为容器待绑定节点名称、磁盘列表。
作为本发明一种应用于云平台的容器本地存储智能调度与分配方法的进一步优选方案,最优匹配算法输入中的存储请求按照是否为裸盘分配划分为裸盘和配额两大类,二者的磁盘筛选条件均包含磁盘类型、磁盘数量、容量、带宽等条件;
裸盘分配又细分为裸盘共享和裸盘独占,裸盘共享指的是多个容器共同使用某个磁盘的容量,而这些容器间的存储是相互隔离的;
每个磁盘可配置共享容器个数的上限;
裸盘独占具有排他性,已经以独占形式划分给某个容器的磁盘不可另作他用,具有裸盘请求的容器可以附件的筛选条件包括磁盘个数、最小磁盘大小;具有配额请求的容器需要附加请求的配额大小;
若正在调度容器本地存储请求为裸盘独占,则按序从节点列表中取出节点磁盘信息,判断是否满足容器的磁盘类型、磁盘个数、最小磁盘大小请求,若满足则返回节点以及磁盘编号;
若请求为裸盘共享,则将节点列表按照满足容器要求的已共享但未达到共享上限的磁盘个数由大到小重新排序,将每个节点上的磁盘按照共享次数排序;
按序检查节点和磁盘是否满足容器请求,如果满足,则返回节点名称与磁盘列表;若请求为配额分配,则对每个节点排除整盘分配后的磁盘列表按照剩余量由小到大排序;
首先按序检查节点,分析节点上是否有已经按照配额分配且满足正在调度容器请求的磁盘,如果有则返回节点名称与磁盘编号;如果检查完所有节点仍然无法获取满足的节点与磁盘,则在第二次检查节点时,获取满足请求且未使用为裸盘分配的磁盘;
分配流程的逻辑为:
对于裸盘共享优先选择已经共享过的磁盘;
对于配额分配,优先选择已划分配额且具有最小余量的磁盘;
其中,最优匹配算法的输出结果为节点名称、磁盘列表,该结果结合正在调度容器的基本信息及磁盘请求形成绑定信息提交到分布式数据库中;
绑定信息仅在容器被完全删除时才会被清除;
在容器重启时,按照分布式数据库中记录的绑定信息完成容器的调度和存储的分配以保持容器的存储状态。
作为本发明一种应用于云平台的容器本地存储智能调度与分配方法的进一步优选方案,运行在每个节点上的磁盘设备管理器作为存储管理的实施者,承担磁盘收集与上报、分配和回收、挂载与卸载、容器IO带宽限制的职责;具体如下:
节点被纳管入容器云平台时,磁盘设备管理器收集节点磁盘的类型、容量、剩余量并上报到容器云引擎,后者将其记录在分布式数据库中;
当具有本地存储请求的容器完成调度并将存储绑定信息写入分布式数据库时,该绑定消息会推送给磁盘设备管理器;
磁盘设备管理器首先按照绑定信息中的磁盘编号获取到对应磁盘,依据容器的本地存储使用方式进行挂载卷的准备,若为裸盘则进行挂载目录的创建,若为配额则使用quota技术隔离出对应大小的存储;
将存储卷挂载到容器;
基于Cgroup blkio子系统完成IO带宽配置;
回收为分配的逆过程,磁盘设备管理器监听到存储解绑事件时回收存储并解除挂载;完成回收时,磁盘设备管理器通知容器云引擎归还资源,容器云引擎从分布式数据库中删除容器的绑定信息。
作为本发明一种应用于云平台的容器本地存储智能调度与分配方法的进一步优选方案,存储调度插件的实施,具体包含如下步骤:
步骤1,接收与处理来自容器云引擎调度器的调度请求:
存储调度插件收到的请求包括可用节点列表与容器信息,存储调度插件首先从分布式数据库中获取集群当前存储拓扑信息、节点存储信息和已运行容器的存储绑定信息;然后,查询当前容器是否有调度记录,若找到则返回绑定信息,若未找到则根据最优匹配算法完成磁盘分配并将绑定信息写入分布式数据库;最后,将调度结果返回给容器引擎的调度器;
步骤2,实现调度流程:
进行正在调度容器与已调度未删除容器间的拓扑计算,获取到按照优先级排序后的节点列表,接着按照图3所示流程进行最优匹配算法的开发;
步骤3,分布式数据库读写:
完成调度后将调度信息写入分布式数据库进行存储预留,此时存储并未完全分配完成,预留可防止资源竞争,若后续分配失败,需要进行资源归还;若容器进入了删除流程,则需要清除数据库内容完成资源归还。
作为本发明一种应用于云平台的容器本地存储智能调度与分配方法的进一步优选方案,磁盘设备管理器StorageAgent的实施,具体包含如下步骤:
步骤1,上报存储信息:
磁盘设备管理器StorageAgent在启动时需要将节点的磁盘信息推送给容器云引擎,该信息被存储在分布式数据库用于容器调度时供存储调度插件使用;
步骤2,监听容器与存储绑定事件:
在监听到存储绑定事件时,需要实现挂载卷的创建、容器目录与宿主机目录的挂载、容器IO带宽的限制,并将分配和挂载的结果上报给容器云引擎;
步骤3,监听容器与存储解绑事件:
在监听到解绑事件时,需要实现挂载卷的回收、容器目录与宿主机目录的解除挂载,并将回收与解除挂载的结果上报。
本发明采用以上技术方案与现有技术相比,具有以下技术效果:
1、本发明在存储调度插件中通过最优匹配算法,支持多样化的磁盘分配请求。可以按照配额、裸盘独占、裸盘共享进行磁盘调度与分配,在上述使用方式基础上可以附加多个筛选方式,满足更加精细的需求;
2、本发明在存储调度插件中通过最优匹配算法,简化了调度流程、加快了调度速度,可有效减轻节点存储资源碎片化;
3、本发明存储状态信息存储在分布式数据库中,在进行存储分配时根据集群整体存储状况动态计算,防止资源不同步的现象,使得该方案适用于大规模集群;
4、本发明通过存储配额限制技术,为容器分配固定大小的存储空间,防止容器对磁盘空间的过度使用;
5、本发明通过Cgroup blkio技术,根据容器的优先级,为容器分配IO带宽,防止低优先级容器占用过高带宽,影响高优先级容器的运行;
6、本发明支持了容器本地存储的多种分配形式、实现了本地存储资源的高效调度、防止了容器重启时漂移、保证了容器之间的存储隔离性、实现了容器存储配额限制和IO带宽限制。
附图说明
图1是本发明具有本地存储请求的容器的调度与存储分配示意;
图2是本发明存储调度流程示意图;
图3是本发明最优匹配算法示意图。
具体实施方式
下面结合附图对本发明的技术方案做进一步的详细说明:
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
一种适用于轻量级云平台的本地存储调度、分配方法,该方法通过引入存储调度插件,使得存储资源同其它资源(CPU、内存、GPU)一样,可以参与容器调度。存储分配算法采用最优匹配算法,一方面支持多样化的本地存储使用方式,另一方面可以减轻磁盘碎片化,提高磁盘利用率;引入了部署在每个节点上的磁盘设备管理器(StorageAgent)进行磁盘的上报、分配、IO带宽限制和回收。
如图1所示,主要包括三个流程,分别是磁盘信息采集上报、容器调度与存储分配、容器销毁与存储回收。上述三个流程由存储调度插件、磁盘设备管理器StorageAgent、分布式数据库三个组件完成。
其中,存储调度插件作为容器云引擎调度中心的扩展插件,依据容器存储请求、容器间的拓扑结构、各节点存储资源和已调度容器存储绑定情况完成容器的智能调度。
运行在每个节点上的磁盘设备管理器StorageAgent负责存储挂载信息收集、卷准备、卷挂载和卷回收、容器读写的每秒字节量(byte per second,bps)和每秒IO次数(ioper second,iops)限制。
分布式数据库集群的存储状态信息,如每个节点存储总量、容器与存储绑定信息、容器的亲和性和反亲和性需求存储在分布式数据库中,为存储分配调度提供决策。
在上报流程中,运行在每个节点上的磁盘设备管理器StorageAgent收集磁盘信息并上报到容器云引擎,引擎将上报的节点磁盘信息存储在分布式数据库中。
这种磁盘上报方式是动态的,系统运行时,各节点可按需进行磁盘的扩容与缩容,磁盘设备管理器StorageAgent会动态感知存储变化信息并正确上报。
具有本地存储请求的容器的调度与存储分配流程如图1所示。
容器创建命令下发后处于待调度容器队列中,队列中的容器根据优先级排序,调度器从队列中取出待调度容器进行调度,依据各节点CPU、内存、端口、标签等资源信息进行节点的初步筛选,筛选后的节点列表被传递给存储调度插件。
存储调度插件首先检查当前容器是否已经调度,若有与正在调度的容器匹配的存储调度绑定信息,则采用该调度绑定信息完成调度,该行为可以保持容器存储状态,保证容器多次重启而存储不丢失。
若没有匹配的调度绑定信息,则根据从分布式数据库中动态获取集群各节点存储信息、已经运行容器的存储信息和亲和性、反亲和性需求,结合正在调度容器的磁盘请求、亲和性与反亲和性需求,综合计算后获得各节点磁盘的分配方式、使用量、剩余量以及具有存储请求的容器间的拓扑关系等用于存储调度插件工作的信息。
考虑到容器间拓扑的复杂性、存储使用方式的多样化、存储资源分配可能导致的资源浪费,采用下述流程及算法完成有本地存储请求的容器调度。
在容器拓扑结构分析中,主要通过对正在调度的容器与已调度且未删除容器的亲和性与反亲和性的分析进行节点的过滤与排序。
对于有反亲和性需求的容器,存储调度插件过滤掉具有反亲和性冲突的容器所运行的节点;对于有亲和性需求的容器,调度器根据亲和性评分策略对节点打分并排序。
为了支持容器多样化的本地存储使用方式,解决本地存储请求的容器的频繁创建和删除导致的磁盘利用率不高的问题,需要采用图3所示的最优匹配算法进行存储分配。
补充一张部署部署架构图(描述容器调度,重启,删除流程)。
文章中描述了亲和性算法,图片中没有体现亲和性、反亲和性。
拓扑感知的存储分配,拓扑域,根据拓扑亲和性,机架,网络,机房,区域。
最优匹配算法的输入为容器本地存储请求、节点列表、每个节点上的磁盘信息。
输出为容器待绑定节点名称、磁盘列表。算法输入中的存储请求可以按照是否为裸盘分配划分为裸盘和配额两大类,二者的磁盘筛选条件均包含磁盘类型(如SATA、SAS和SSD等)、磁盘数量、容量、带宽等条件(支持模糊匹配,支持指定范围的最佳匹配,全盘匹配算法)。
裸盘分配又细分为裸盘共享和裸盘独占,裸盘共享指的是多个容器共同使用某个磁盘的容量,而这些容器间的存储是相互隔离的。
每个磁盘可以配置共享容器个数的上限。裸盘独占具有排他性,已经以独占形式划分给某个容器的磁盘不可另作他用。
具有裸盘请求的容器可以附件的筛选条件包括磁盘个数、最小磁盘大小等。具有配额请求的容器需要附加请求的配额大小。
若正在调度容器本地存储请求为裸盘独占,则按序从节点列表中取出节点磁盘信息,判断是否满足容器的磁盘类型、磁盘个数、最小磁盘大小请求,若满足则返回节点以及磁盘编号。若请求为裸盘共享,则将节点列表按照满足容器要求的已共享但未达到共享上限的磁盘个数由大到小重新排序,将每个节点上的磁盘按照共享次数排序。按序检查节点和磁盘是否满足容器请求,如果满足,则返回节点名称与磁盘列表。
若请求为配额分配,则对每个节点排除整盘分配后的磁盘列表按照剩余量由小到大排序。
首先按序检查节点,分析节点上是否有已经按照配额分配且满足正在调度容器请求的磁盘,如果有则返回节点名称与磁盘编号;如果检查完所有节点仍然无法获取满足的节点与磁盘,则在第二次检查节点时,获取满足请求且未使用为裸盘分配的磁盘。
上述分配流程的逻辑为:
对于裸盘共享优先选择已经共享过的磁盘。
对于配额分配,优先选择已划分配额且具有最小余量的磁盘。
该最优匹配算法可以用较小的计算代价获取最优的分配结果,可以在一定程度上可以减少磁盘的碎片化,增加磁盘资源池的利用率,使得该算法适用于大规模集群。相较于其他开源方案中对磁盘进行资源虚拟化计算的方式,该算法具有更快的调度速度。
上述算法的输出结果为节点名称、磁盘列表,该结果结合正在调度容器的基本信息及磁盘请求形成绑定信息提交到分布式数据库中。
绑定信息仅在容器被完全删除时才会被清除。在容器重启时,按照分布式数据库中记录的绑定信息完成容器的调度和存储的分配以保持容器的存储状态。
运行在每个节点上的分布式数据库StorageAgent作为存储管理的实施者,承担磁盘收集与上报、分配和回收、挂载与卸载、容器IO带宽限制的职责。
节点被纳管入容器云平台时,分布式数据库StorageAgent收集节点磁盘的类型、容量、剩余量并上报到容器云引擎,后者将其记录在分布式数据库中。
当具有本地存储请求的容器完成调度并将存储绑定信息写入分布式数据库时,该绑定消息会推送给分布式数据库StorageAgent。
分布式数据库StorageAgent首先按照绑定信息中的磁盘编号获取到对应磁盘,依据容器的本地存储使用方式进行挂载卷的准备,若为裸盘则进行挂载目录的创建,若为配额则使用quota技术隔离出对应大小的存储。然后将存储卷挂载到容器。
最后基于Cgroup blkio子系统完成IO带宽配置。相较于网络存储,本方案基于配额和裸盘的容器存储分配方案具有更快的磁盘读写速度,在相同的物理环境及相同的容器中,裸盘挂载的读写速度较网络存储快20%,基于配额隔离的读写速度较网络存储快15%。
回收为分配的逆过程,分布式数据库StorageAgent监听到存储解绑事件时回收存储并解除挂载。完成回收时,分布式数据库StorageAgent通知容器云引擎归还资源,容器云引擎从分布式数据库中删除容器的绑定信息。
实施流程包括存储调度插件的实施和节点分布式数据库StorageAgent的实施。
存储调度插件的实施有3个步骤:
步骤1.接收与处理来自容器云引擎调度器的调度请求:
存储调度插件收到的请求包括可用节点列表与容器信息,存储调度插件首先从分布式数据库中获取集群当前存储拓扑信息、节点存储信息和已运行容器的存储绑定信息。然后,查询当前容器是否有调度记录,若找到则返回绑定信息,若未找到则根据最优匹配算法完成磁盘分配并将绑定信息写入分布式数据库。最后,将调度结果返回给容器引擎的调度器。
步骤2.实现图2所示的调度流程:
首先进行正在调度容器与已调度未删除容器间的拓扑计算,获取到按照优先级排序后的节点列表,接着按照图3所示流程进行最优匹配算法的开发。
步骤3.分布式数据库读写:
完成调度后将调度信息写入分布式数据库进行存储预留,此时存储并未完全分配完成,预留可防止资源竞争,若后续分配失败,需要进行资源归还。若容器进入了删除流程,则需要清除数据库内容完成资源归还。
StorageAgent的实施有3个步骤:
步骤1,上报存储信息:
StorageAgent在启动时需要将节点的磁盘信息推送给容器云引擎,该信息被存储在分布式数据库用于容器调度时供存储调度插件使用。
步骤2,监听容器与存储绑定事件:
在监听到存储绑定事件时,需要实现挂载卷的创建、容器目录与宿主机目录的挂载、容器IO带宽的限制,并将分配和挂载的结果上报给容器云引擎。
步骤3,监听容器与存储解绑事件:
在监听到解绑事件时,需要实现挂载卷的回收、容器目录与宿主机目录的解除挂载。并将回收与解除挂载的结果上报。
本发明在存储调度插件中通过最优匹配算法,支持多样化的磁盘分配请求。可以按照配额、裸盘独占、裸盘共享进行磁盘调度与分配,在上述使用方式基础上可以附加多个筛选方式,满足更加精细的需求;在存储调度插件中通过最优匹配算法,简化了调度流程、加快了调度速度,可有效减轻节点存储资源碎片化;存储状态信息存储在分布式数据库中,在进行存储分配时根据集群整体存储状况动态计算,防止资源不同步的现象,使得该方案适用于大规模集群;通过存储配额限制技术,为容器分配固定大小的存储空间,防止容器对磁盘空间的过度使用;通过Cgroup blkio技术,根据容器的优先级,为容器分配IO带宽,防止低优先级容器占用过高带宽,影响高优先级容器的运行;支持了容器本地存储的多种分配形式、实现了本地存储资源的高效调度、防止了容器重启时漂移、保证了容器之间的存储隔离性、实现了容器存储配额限制和IO带宽限制。
本技术领域技术人员可以理解的是,除非另外定义,这里使用的所有术语(包括技术术语和科学术语)具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样定义,不会用理想化或过于正式的含义来解释。
以上实施例仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明保护范围之内。上面对本发明的实施方式作了详细说明,但是本发明并不限于上述实施方式,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下做出各种变化。
Claims (6)
1.一种应用于云平台的容器本地存储智能调度与分配方法,其特征在于:具体包含由存储调度插件、磁盘设备管理器、分布式数据库三个组件完成的磁盘信息采集上报、容器调度与存储分配、容器销毁与存储回收三个流程;
其中,存储调度插件作为容器云引擎调度中心的扩展插件,用于依据容器存储请求、容器间的拓扑结构、各节点存储资源和已调度容器存储绑定情况完成容器的智能调度;
运行在每个节点上的磁盘设备管理器,用于负责存储挂载信息收集、卷准备、卷挂载和卷回收、容器读写的每秒字节量和每秒IO次数限制;
分布式数据库,用于集群的存储状态信息,包含每个节点存储总量、容器与存储绑定信息、容器的亲和性和反亲和性需求存储在分布式数据库中,为存储分配调度提供决策;
磁盘信息采集上报流程:运行在每个节点上的磁盘设备管理器收集磁盘信息并上报到容器云引擎,引擎将上报的节点磁盘信息存储在分布式数据库中;
容器的调度与存储分配流程:
容器创建命令下发后处于待调度容器队列中,队列中的容器根据优先级排序,调度器从队列中取出待调度容器进行调度,依据各节点CPU、内存、端口、标签等资源信息进行节点的初步筛选,筛选后的节点列表被传递给存储调度插件;
存储调度插件首先检查当前容器是否已经调度,若有与正在调度的容器匹配的存储调度绑定信息,则采用该调度绑定信息完成调度,该行为可以保持容器存储状态,保证容器多次重启而存储不丢失;
若没有匹配的调度绑定信息,则根据从分布式数据库中动态获取集群各节点存储信息、已经运行容器的存储信息和亲和性、反亲和性需求,结合正在调度容器的磁盘请求、亲和性与反亲和性需求,综合计算后获得各节点磁盘的分配方式、使用量、剩余量以及具有存储请求的容器间的拓扑关系等用于存储调度插件工作的信息;
容器销毁与存储回收流程:
通过对正在调度的容器与已调度且未删除容器的亲和性与反亲和性的分析进行节点的过滤与排序;
其中,对于有反亲和性需求的容器,存储调度插件过滤掉具有反亲和性冲突的容器所运行的节点;
对于有亲和性需求的容器,调度器根据亲和性评分策略对节点打分并排序。
2.根据权利要求1所述的一种应用于云平台的容器本地存储智能调度与分配方法,其特征在于:在容器销毁与存储回收流程中,采用最优匹配算法进行存储分配,具体如下:
最优匹配算法的输入为容器本地存储请求、节点列表、每个节点上的磁盘信息;
输出为容器待绑定节点名称、磁盘列表。
3.根据权利要求2所述的一种应用于云平台的容器本地存储智能调度与分配方法,其特征在于:最优匹配算法输入中的存储请求按照是否为裸盘分配划分为裸盘和配额两大类,二者的磁盘筛选条件均包含磁盘类型、磁盘数量、容量、带宽等条件;
裸盘分配又细分为裸盘共享和裸盘独占,裸盘共享指的是多个容器共同使用某个磁盘的容量,而这些容器间的存储是相互隔离的;
每个磁盘可配置共享容器个数的上限;
裸盘独占具有排他性,已经以独占形式划分给某个容器的磁盘不可另作他用,具有裸盘请求的容器可以附件的筛选条件包括磁盘个数、最小磁盘大小;具有配额请求的容器需要附加请求的配额大小;
若正在调度容器本地存储请求为裸盘独占,则按序从节点列表中取出节点磁盘信息,判断是否满足容器的磁盘类型、磁盘个数、最小磁盘大小请求,若满足则返回节点以及磁盘编号;
若请求为裸盘共享,则将节点列表按照满足容器要求的已共享但未达到共享上限的磁盘个数由大到小重新排序,将每个节点上的磁盘按照共享次数排序;
按序检查节点和磁盘是否满足容器请求,如果满足,则返回节点名称与磁盘列表;若请求为配额分配,则对每个节点排除整盘分配后的磁盘列表按照剩余量由小到大排序;
首先按序检查节点,分析节点上是否有已经按照配额分配且满足正在调度容器请求的磁盘,如果有则返回节点名称与磁盘编号;如果检查完所有节点仍然无法获取满足的节点与磁盘,则在第二次检查节点时,获取满足请求且未使用为裸盘分配的磁盘;
分配流程的逻辑为:
对于裸盘共享优先选择已经共享过的磁盘;
对于配额分配,优先选择已划分配额且具有最小余量的磁盘;
其中,最优匹配算法的输出结果为节点名称、磁盘列表,该结果结合正在调度容器的基本信息及磁盘请求形成绑定信息提交到分布式数据库中;
绑定信息仅在容器被完全删除时才会被清除;
在容器重启时,按照分布式数据库中记录的绑定信息完成容器的调度和存储的分配以保持容器的存储状态。
4.根据权利要求1所述的一种应用于云平台的容器本地存储智能调度与分配方法,其特征在于:运行在每个节点上的磁盘设备管理器作为存储管理的实施者,承担磁盘收集与上报、分配和回收、挂载与卸载、容器IO带宽限制的职责;具体如下:
节点被纳管入容器云平台时,磁盘设备管理器收集节点磁盘的类型、容量、剩余量并上报到容器云引擎,后者将其记录在分布式数据库中;
当具有本地存储请求的容器完成调度并将存储绑定信息写入分布式数据库时,该绑定消息会推送给磁盘设备管理器;
磁盘设备管理器首先按照绑定信息中的磁盘编号获取到对应磁盘,依据容器的本地存储使用方式进行挂载卷的准备,若为裸盘则进行挂载目录的创建,若为配额则使用quota技术隔离出对应大小的存储;
将存储卷挂载到容器;
基于Cgroup blkio子系统完成IO带宽配置;
回收为分配的逆过程,磁盘设备管理器监听到存储解绑事件时回收存储并解除挂载;完成回收时,磁盘设备管理器通知容器云引擎归还资源,容器云引擎从分布式数据库中删除容器的绑定信息。
5.根据权利要求1所述的一种应用于云平台的容器本地存储智能调度与分配方法,其特征在于:存储调度插件的实施,具体包含如下步骤:
步骤1,接收与处理来自容器云引擎调度器的调度请求:
存储调度插件收到的请求包括可用节点列表与容器信息,存储调度插件首先从分布式数据库中获取集群当前存储拓扑信息、节点存储信息和已运行容器的存储绑定信息;然后,查询当前容器是否有调度记录,若找到则返回绑定信息,若未找到则根据最优匹配算法完成磁盘分配并将绑定信息写入分布式数据库;最后,将调度结果返回给容器引擎的调度器;
步骤2,实现调度流程:
进行正在调度容器与已调度未删除容器间的拓扑计算,获取到按照优先级排序后的节点列表,接着按照图3所示流程进行最优匹配算法的开发;
步骤3,分布式数据库读写:
完成调度后将调度信息写入分布式数据库进行存储预留,此时存储并未完全分配完成,预留可防止资源竞争,若后续分配失败,需要进行资源归还;若容器进入了删除流程,则需要清除数据库内容完成资源归还。
6.根据权利要求1所述的一种应用于云平台的容器本地存储智能调度与分配方法,其特征在于:磁盘设备管理器StorageAgent的实施,具体包含如下步骤:
步骤1,上报存储信息:
磁盘设备管理器StorageAgent在启动时需要将节点的磁盘信息推送给容器云引擎,该信息被存储在分布式数据库用于容器调度时供存储调度插件使用;
步骤2,监听容器与存储绑定事件:
在监听到存储绑定事件时,需要实现挂载卷的创建、容器目录与宿主机目录的挂载、容器IO带宽的限制,并将分配和挂载的结果上报给容器云引擎;
步骤3,监听容器与存储解绑事件:
在监听到解绑事件时,需要实现挂载卷的回收、容器目录与宿主机目录的解除挂载,并将回收与解除挂载的结果上报。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211260655.3A CN115756726A (zh) | 2022-10-14 | 2022-10-14 | 一种应用于云平台的容器本地存储智能调度与分配方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211260655.3A CN115756726A (zh) | 2022-10-14 | 2022-10-14 | 一种应用于云平台的容器本地存储智能调度与分配方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115756726A true CN115756726A (zh) | 2023-03-07 |
Family
ID=85351492
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211260655.3A Pending CN115756726A (zh) | 2022-10-14 | 2022-10-14 | 一种应用于云平台的容器本地存储智能调度与分配方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115756726A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117076093A (zh) * | 2023-10-16 | 2023-11-17 | 北京乐讯科技有限公司 | 一种基于机器学习的存储资源调度方法、装置及存储介质 |
-
2022
- 2022-10-14 CN CN202211260655.3A patent/CN115756726A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117076093A (zh) * | 2023-10-16 | 2023-11-17 | 北京乐讯科技有限公司 | 一种基于机器学习的存储资源调度方法、装置及存储介质 |
CN117076093B (zh) * | 2023-10-16 | 2024-01-05 | 北京乐讯科技有限公司 | 一种基于机器学习的存储资源调度方法、装置及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7587427B2 (en) | Hierarchical storage system, and control method and program therefor | |
US8074041B2 (en) | Apparatus, system, and method for managing storage space allocation | |
US8521985B2 (en) | Storage subsystem | |
CN102971724B (zh) | 与数据中心环境内的基于单元式虚拟资源的管理有关的方法和装置 | |
US8627024B2 (en) | Snapshot based replication | |
CN110226157A (zh) | 用于减少行缓冲冲突的动态存储器重新映射 | |
CN109947363B (zh) | 一种分布式存储系统的数据缓存方法 | |
US10609174B2 (en) | Parallel prefetching log/meta stream sub-portions to recreate partition states in a distributed computing system | |
US7478179B2 (en) | Input/output priority inheritance wherein first I/O request is executed based on higher priority | |
CN105892943A (zh) | 一种分布式存储系统中块存储数据的访问方法及系统 | |
US9135262B2 (en) | Systems and methods for parallel batch processing of write transactions | |
WO2019001020A1 (zh) | 基于分布式系统的存储空间整理方法、装置及系统 | |
CN103873559A (zh) | 一种高速存储的数据库一体机 | |
CN108920153A (zh) | 一种基于负载预测的Docker容器动态调度方法 | |
CN108932150B (zh) | 基于ssd和磁盘混合存储的缓存方法、装置及介质 | |
WO2004055675A1 (ja) | ファイル管理装置、ファイル管理プログラム、ファイル管理方法およびファイルシステム | |
US11914894B2 (en) | Using scheduling tags in host compute commands to manage host compute task execution by a storage device in a storage system | |
CN106095957A (zh) | 分布式文件系统的跨域多副本文件同步方法及装置 | |
CN115756726A (zh) | 一种应用于云平台的容器本地存储智能调度与分配方法 | |
US20170031605A1 (en) | Control device and control method | |
CN108073352A (zh) | 虚拟磁盘处理方法及装置 | |
CN114089926B (zh) | 分布式存储空间的管理方法、计算设备及存储介质 | |
US7509461B1 (en) | Method and apparatus for intelligent buffer cache pre-emption | |
US5678024A (en) | Method and system for dynamic performance resource management within a computer based system | |
US20100107161A1 (en) | Method of Improving or Managing Performance of Storage System, System, Apparatus, and Program |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |