CN113687795A - 一种实现有状态应用的存储卷隔离性分配的方法和*** - Google Patents

一种实现有状态应用的存储卷隔离性分配的方法和*** Download PDF

Info

Publication number
CN113687795A
CN113687795A CN202111237841.0A CN202111237841A CN113687795A CN 113687795 A CN113687795 A CN 113687795A CN 202111237841 A CN202111237841 A CN 202111237841A CN 113687795 A CN113687795 A CN 113687795A
Authority
CN
China
Prior art keywords
storage
requirement
volume
storage volume
hard disk
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
Application number
CN202111237841.0A
Other languages
English (en)
Inventor
鲍钟峻
姜志华
张正锋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Whale Cloud Technology Co Ltd
Original Assignee
Whale Cloud Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Whale Cloud Technology Co Ltd filed Critical Whale Cloud Technology Co Ltd
Priority to CN202111237841.0A priority Critical patent/CN113687795A/zh
Publication of CN113687795A publication Critical patent/CN113687795A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种实现有状态应用的存储卷隔离性分配的方法和***,该方法包括以下步骤:接收有状态应用对存储卷的申请需求;筛选出满足存储卷需求的存储节点列表;对存储节点列表进行再次过滤;根据需求中指定的存储选择策略,对再次过滤筛选出的存储节点列表进行打分;在选出的节点上创建满足需求的存储卷;将存储卷以存储服务的方式提供给有状态应用进行挂载使用。有益效果:本发明采用的存储资源筛选方法,能够有效的对存储层资源进行过滤,筛选掉无法满足隔离性和有状态应用对存储需求的存储节点资源,避免了在存储资源创建阶段因资源不足所引起的存储资源创建失败,保证了能够成功自动分配具备隔离性的存储资源。

Description

一种实现有状态应用的存储卷隔离性分配的方法和***
技术领域
本发明涉及Kubernetes存储领域,具体来说,涉及一种实现有状态应用的存储卷隔离性分配的方法和***。
背景技术
Kubernetes是基于容器的集群管理***,它构建于docker、container等容器运行环境之上,用于管理容器化的工作负载和服务,是一个可移植的、可扩展的开源平台,拥有一个庞大且快速增长的生态***,其服务、支持和工具广泛可用。
Pod是Kubernetes中创建和管理的、最小的可部署的计算单元,包含一个或多个容器,这些容器共享存储、网络、以及怎样运行这些容器的声明。Pod 所建模的是特定于应用的“逻辑主机”,其中包含一个或多个应用容器,这些容器是相对紧密的耦合在一起的。
PV(PersistentVolume,持久卷)是集群中的一块存储,可以由管理员事先供应,或者使用存储类(Storage Class)来动态供应。持久卷是集群资源,就像节点也是集群资源一样。PV持久卷和普通的Volume一样,也是使用卷插件来实现的,只是它们拥有独立于任何使用 PV的 Pod 的生命周期。
PVC(PersistentVolumeClaim,持久卷请求)表达的是用户对存储的请求。概念上与 Pod 类似。Pod会耗用节点资源,而PVC申领会耗用PV资源。Pod可以请求特定数量的资源(CPU和内存);同样PVC申领也可以请求特定的大小和访问模式。
StorageClass为管理员提供了描述存储“类”的方法。不同的类型可能会映射到不同的服务质量等级或备份策略,或是由集群管理员制定的任意策略。
有状态的应用(Stateful Application)是指应用会在会话中保存客户端的数据,并在客户端下一次的请求中来使用那些数据。以服务器端组件为例,判断它是有状态的还是无状态的,其依据是两个来自相同发起者的请求在服务器端是否具备上下文关系。
但是,现有的Kubernetes存储子***管理功能无法分配满足同一个有状态应用(比如数据库、大数据库等)对多个存储卷请求的自动化分配,只能通过人工方式来完成,同时,既使这样也无法满足除容量大小之外,诸如是否加速、不同磁盘介质、不同节点及IO性能指标等隔离性需求。
针对相关技术中的问题,目前尚未提出有效的解决方案。
发明内容
针对相关技术中的问题,本发明提出一种实现有状态应用的存储卷隔离性分配的方法和***,以克服现有相关技术所存在的上述技术问题。
为此,本发明采用的具体技术方案如下:
根据本发明的一个方面,提供了一种实现有状态应用的存储卷隔离性分配的方法,该方法包括以下步骤:
接收有状态应用对存储卷的申请需求;
根据需求中对存储的容量大小和存储读写性能指标的要求,对若干个存储节点进行过滤,筛选出满足存储卷需求的存储节点列表;
根据需求中对存储节点和硬盘组的隔离性的要求,对存储节点列表进行再次过滤;
根据需求中指定的存储选择策略,对再次过滤筛选出的存储节点列表进行打分,选出满足存储卷需求的节点和硬盘组;
在选出的节点上创建满足需求的存储卷;
将存储卷以存储服务的方式提供给有状态应用进行挂载使用。
进一步的,所述接收有状态应用对存储卷的申请需求包括对容量大小、存储读写性能、主机隔离、硬盘组隔离、是否需加速及存储选择策略的需求进行接收,并对这些申请需求进行预处理。
进一步的,所述根据需求中对存储的容量大小和存储读写性能指标的要求,对若干个存储节点进行过滤,筛选出满足存储卷需求的存储节点列表包括以下步骤:
对存储节点列表进行排查,并过滤掉不具备加速能力的存储;
调用存储节点接口,查询存储容量和存储读写性能的可用资源信息;
根据容量大小和存储读写性能指标,对存储节点列表再进行过滤,得到容量和性能均满足存储卷需求的存储节点列表。
进一步的,采用如下公式对存储节点列表进行过滤:
Figure 466552DEST_PATH_IMAGE001
其中,IO_Acceleration表示存储节点满足是否加速需求,Free_Size表示存储节点的空闲容量大小,Needed_Size表示所需存储大小,IO_Perf表示存储节点上目前可提供的性能指标能力,Needed_IO_Perf表示所需存储的存储读写性能。
进一步的,所述根据需求中指定的存储选择策略,对再次过滤筛选出的存储节点列表进行打分,选出满足存储卷需求的节点和硬盘组包括以下步骤:
根据需求的存储容量大小,对再次过滤筛选出的存储节点的所有硬盘组进行容量分值计算;
根据需求的存储性能指标,对再次过滤筛选出的存储节点的所有硬盘组进行性能分值计算;
根据需求中指定的存储选择策略,选出满足存储卷需求的节点和硬盘组。
进一步的,所述容量分值计算公式如下:
Figure 580001DEST_PATH_IMAGE002
其中,Dg_Space_Score表示硬盘组的容量最终得分,该值小于1,Dg_Free_Size表示硬盘组剩余可用容量大小,Needed_Size表示所需存储大小;
所述性能分值计算计算公式如下:
Figure 364286DEST_PATH_IMAGE003
其中,Dg_Perf_Score表示硬盘组的性能最终得分,该值小于1,Dg_Free_Perf表示硬盘组剩余可用性能指标大小,IO_Perf表示存储节点上目前可提供的性能指标能力,Needed_IO_Perf表示所需存储的存储读写性能;
所述满足存储卷需求的节点和硬盘组的筛选公式如下:
Figure 588594DEST_PATH_IMAGE004
其中,Fun_Best_Node_Select()为最佳存储节点选择函数,Array(Dg_Space_Score)为所有容量最终得分大于0的硬盘组的数组,Array(Dg_Perf_Score)为所有性能最终得分大于0的硬盘组的数组。
进一步的,所述在选出的节点上创建满足需求的存储卷包括以下步骤:
通过API接口访问利用打分选出的满足存储卷需求的节点,并传递存储卷创建的需求对象到该节点;
解析存储卷创建需求,在对应的硬盘组上分配所需的存储卷存储空间;
对存储卷是否需要加速进行判断,若存储卷需要加速,对上述步骤分配的存储卷存储空间进行存储读写加速设置,否则进入下一步骤;
根据该存储卷性能需求,对上述步骤分配的存储卷存储空间进行性能指标设置。
进一步的,所述将存储卷以存储服务的方式提供给有状态应用进行挂载使用包括以下步骤:
根据存储卷存储服务协议需求,将存储卷存储空间以存储服务的方式对外进行映射;
在有状态应用所在的Kubernetes宿主机上,通过上述步骤所采用的存储服务协议的客户端挂载方式,将该存储卷挂载到该宿主机;
将Kubernetes的宿主机上的该存储卷映射给有状态应用所在的Pod使用。
根据本发明的又一个方面,还提供了一种实现有状态应用的存储卷隔离性分配的***,该***包括存储资源需求解析模块、存储资源筛选模块、存储资源打分模块、存储端管理模块及存储资源访问模块;
其中,所述存储资源需求解析模块,用于接收有状态应用对存储卷的申请需求;
所述存储资源筛选模块,用于根据需求中对存储的容量大小和存储读写性能指标的要求,对若干个存储节点进行过滤,筛选出满足存储卷需求的存储节点列表;
所述存储资源筛选模块,用于根据需求中对存储节点和硬盘组的隔离性的要求,对存储节点列表进行再次过滤;
所述存储资源打分模块,用于根据需求中指定的存储选择策略,对再次过滤筛选出的存储节点列表进行打分,选出满足存储卷需求的节点和硬盘组;
所述存储资源访问模块,用于在选出的节点上创建满足需求的存储卷。
进一步的,所述存储资源打分模块所支持的存储选择策略包括哈希算法、随机算法、轮询调度算法及最少使用算法中的至少一种。
本发明的有益效果为:
(1)、本发明采用的存储资源筛选方法,能够有效的对存储层资源进行过滤,筛选掉无法满足隔离性和有状态应用对存储需求的存储节点资源,避免了在存储资源创建阶段因资源不足所引起的存储资源创建失败,保证了能够成功自动分配具备隔离性的存储资源。
(2)、本发明采用存储资源打分策略,在能够成功自动分配具备隔离性的存储资源的基础上,通过存储选择策略在若干存储节点之间实现容量和性能两个资源维度的均匀分布,避免因存储节点数量不足导致存储资源无法正常分配,保证了自动分配的具备隔离性的存储资源的均衡性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例的一种实现有状态应用的存储卷隔离性分配的方法的流程示意图;
图2是根据本发明实施例的一种实现有状态应用的存储卷隔离性分配的***的原理框图之一;
图3是根据本发明实施例的一种实现有状态应用的存储卷隔离性分配的方法的流程框图;
图4是根据本发明实施例的一种实现有状态应用的存储卷隔离性分配的***的原理框图之二;
图5是根据本发明实施例的一种实现有状态应用的存储卷隔离性分配的***中控制器服务单元的工作原理图。
图中:
1、存储资源需求解析模块;2、存储资源筛选模块;3、存储资源打分模块;4、存储端管理模块;5、存储资源访问模块。
具体实施方式
为进一步说明各实施例,本发明提供有附图,这些附图为本发明揭露内容的一部分,其主要用以说明实施例,并可配合说明书的相关描述来解释实施例的运作原理,配合参考这些内容,本领域普通技术人员应能理解其他可能的实施方式以及本发明的优点,图中的组件并未按比例绘制,而类似的组件符号通常用来表示类似的组件。
根据本发明的实施例,提供了一种实现有状态应用的存储卷隔离性分配的方法和***。
现结合附图和具体实施方式对本发明进一步说明,如图1,图3所示,根据本发明实施例的实现有状态应用的存储卷隔离性分配的方法,该方法包括以下步骤:
步骤S1、收有状态应用对存储卷(Volume)的申请需求;
在一个实施例中,所述接收有状态应用对存储卷的申请需求包括对容量大小、存储读写性能、主机隔离、硬盘组隔离、是否需加速及存储选择策略(若需要,则还包括加速比)的需求进行接收,并对这些申请需求进行预处理。
具体的,实时监听Kubernetes发起的有状态应用Pod的请求,一旦接受到请求,则对请求做合理性检查,保证请求的有效性,此步骤接受的接受到的储卷申请需求包含的关键参数信息如下表1所示:
表1 关键参数信息
Figure 712408DEST_PATH_IMAGE005
最后,根据Round-Robin策略得到一个最佳存储节点和硬盘组,表2所示打分结果,再按Round-Robin策略得到的最佳存储节点和硬盘组为<stor03,data01>。
步骤S2、根据需求中对存储的容量大小和存储读写性能(IO)指标的要求,对若干个存储节点进行过滤,筛选出满足存储卷需求的存储节点列表,首先按照按是否加速,对存储节点列表进行第一次筛选,过滤掉不具备加速能力的存储节点。然后再执行存储节点接口调用,查询存储容量和IO性能的可用资源信息,并按查询到的字样信息过滤掉不满足容量大小和IO性能指标要求的存储节点,从而得到满足申请需求的存储节点列表;
在一个实施例中,所述根据需求中对存储的容量大小和存储读写性能指标的要求,对若干个存储节点进行过滤,筛选出满足存储卷需求的存储节点列表包括以下步骤:
步骤S21、对存储节点列表进行排查,并过滤掉不具备加速能力的存储;
步骤S22、调用存储节点接口,查询存储容量和存储读写性能的可用资源信息;
步骤S23、根据容量大小和存储读写性能指标,对存储节点列表再进行过滤,得到容量和性能均满足存储卷需求的存储节点列表。
在一个实施例中,采用如下公式对存储节点列表进行过滤:
Figure 996759DEST_PATH_IMAGE001
其中,IO_Acceleration表示存储节点满足是否加速需求,Free_Size表示存储节点的空闲容量大小,Needed_Size表示所需存储大小,IO_Perf表示存储节点上目前可提供的性能指标能力,Needed_IO_Perf表示所需存储的存储读写性能。
步骤S3、根据需求中对存储节点和硬盘组的隔离性的要求,对存储节点列表进行再次过滤;
具体的,通过将需求的隔离性标签(label)与存储节点的标签作对比,两者比较结果为假的存储节点或硬盘组将被过滤掉,从而最终得到满足申请需求的存储节点列表。
步骤S4、根据需求中指定的存储选择策略,对再次过滤筛选出的存储节点列表进行打分,选出满足存储卷需求的节点和硬盘组;
在一个实施例中,所述根据需求中指定的存储选择策略,对再次过滤筛选出的存储节点列表进行打分,选出满足存储卷需求的节点和硬盘组包括以下步骤:
步骤S41、根据需求的存储容量大小,对再次过滤筛选出的存储节点的所有硬盘组进行容量分值计算;
步骤S42、根据需求的存储性能指标,对再次过滤筛选出的存储节点的所有硬盘组进行性能分值计算;
步骤S43、根据需求中指定的存储选择策略,选出满足存储卷需求的节点和硬盘组。
在一个实施例中,所述容量分值计算公式如下:
Figure 409286DEST_PATH_IMAGE002
其中,Dg_Space_Score表示硬盘组的容量最终得分,该值小于1,Dg_Free_Size表示硬盘组剩余可用容量大小,Needed_Size表示所需存储大小;
所述性能分值计算计算公式如下:
Figure 827498DEST_PATH_IMAGE003
其中,Dg_Perf_Score表示硬盘组的性能最终得分,该值小于1,Dg_Free_Perf表示硬盘组剩余可用性能指标大小,IO_Perf表示存储节点上目前可提供的性能指标能力,Needed_IO_Perf表示所需存储的存储读写性能;
所述满足存储卷需求的节点和硬盘组的筛选公式如下:
Figure 196031DEST_PATH_IMAGE004
其中,Fun_Best_Node_Select()为最佳存储节点选择函数,Array(Dg_Space_Score)为所有容量最终得分大于0的硬盘组的数组,Array(Dg_Perf_Score)为所有性能最终得分大于0的硬盘组的数组。
通过打分得到可用于分配所申请存储卷的<存储节点,硬盘组>的分值列表,如下表2所示,此处存储券需求的大小Needed_Size为204800MB,IO性能指标IO_Perf为12000IOPS:
表2 分值列表
Figure 385704DEST_PATH_IMAGE006
步骤S5、在选出的节点上创建满足需求的存储卷;
在一个实施例中,所述在选出的节点上创建满足需求的存储卷包括以下步骤:
步骤S51、通过API接口访问利用打分选出的满足存储卷需求的节点,并传递存储卷创建的需求对象到该节点;
步骤S52、解析存储卷创建需求,在对应的硬盘组上分配所需的存储卷存储空间;
步骤S53、对存储卷是否需要加速进行判断,若存储卷需要加速,对上述步骤分配的存储卷存储空间进行存储读写加速设置,否则进入下一步骤;
步骤S54、根据该存储卷性能需求,对上述步骤分配的存储卷存储空间进行性能指标设置。
步骤S6、将存储卷以存储服务的方式提供给有状态应用进行挂载使用。
在一个实施例中,所述将存储卷以存储服务的方式提供给有状态应用进行挂载使用包括以下步骤:
步骤S61、根据存储卷存储服务协议需求,将存储卷存储空间以存储服务的方式对外进行映射,此处存储服务协议主要是ISCSI 和NVMe Over Fabric;
步骤S62、在有状态应用所在的Kubernetes宿主机上,通过上述步骤所采用的存储服务协议的客户端挂载方式,将该存储卷挂载到该宿主机;
步骤S63、将Kubernetes的宿主机上的该存储卷映射给有状态应用所在的Pod使用。
如图2所示,根据本发明的又一个实施例,还提供了一种实现有状态应用的存储卷隔离性分配的***,该***包括存储资源需求解析模块1、存储资源筛选模块2、存储资源打分模块3、存储端管理模块4及存储资源访问模块5;
其中,所述存储资源需求解析模块1,用于接收有状态应用对存储卷的申请需求;
所述存储资源筛选模块2,用于根据需求中对存储的容量大小和存储读写性能指标的要求,对若干个存储节点进行过滤,筛选出满足存储卷需求的存储节点列表;
所述存储资源筛选模块2,还用于根据需求中对存储节点和硬盘组的隔离性的要求,对存储节点列表进行再次过滤;
所述存储资源打分模块3,用于根据需求中指定的存储选择策略,对再次过滤筛选出的存储节点列表进行打分,选出满足存储卷需求的节点和硬盘组;
具体的,如图4所示,按***的部署运行形态包括控制器服务单元、节点服务单元、存储管理服务单元。
(1)***的初始化
存储管理服务单元:
首先,需要对每个存储节点进行逻辑卷(VG)的配置,如果存在加速Cache硬盘,亦需要进行VG配置;接着需要部署ISE存储加速软件,用于存储卷(Volume)的加速;最后启动存储管理RPC服务,用于接收其他服务单元对本存储节点的存储资源管理API请求。
节点服务单元:
首先,需要打通Kubernetes宿主机与存储节点之间的存储网络,便于对存储节点的存储卷进行挂载和卸载等访问操作;其次,配置***服务模块,用于保证诸如ISCSI、NvmeOver Fabric等存储服务协议的正常运行;最后,是运行在每个需要自动分配存储资源的宿主机上运行包含节点服务的Pod,其类型为DaemonSet。
控制器服务单元:
首先,如图5所示,需要配置存储节点资源池的json格式的config文件,用于控制器服务单元向其发起Volume创建申请;其次,向Kubernetes注册用于对Volume进行创建、删除及其他管理操作的gRPC(由Google 发起的一种开源远程过程调用***,该***基于HTTP/2 协议传输)接口服务,用于有状态Pod调用这些gRPC接口服务发起Volume相关的操作;最后,需要在Kubernetes中运行包含控制器服务的Pod,其类型为StatefulSet(Kubernets用来管理有状态应用的工作负载的一种Pod类型),且在生产环境下,StatefulSet的Replicas(副本数量)需要至少2个,以保证控制器服务单元所提供gRPC接口服务的安全性。
(2)控制器服务单元:
存储资源需求解析模块,用于对有状态应用对Volume的申请需求进行合理性的判断,保证需求的合理合法;
存储资源筛选模块,通过并行的从存储管理服务单元中的存储节点实时查询各节点的容量、IO性能等信息,并根据需求中存储的容量、IO性能及资源隔离等要求,对存储管理服务单元中的存储节点资源进行精准过滤,选出满足Volume申请需求的存储节点列表;
存储资源打分模块,通过对上存储资源筛选模块选出的存储节点列表的硬盘组可用的容量和性能指标进行打分(按照步骤S4的打分公式规则),并按照存储选择策略对打分后的存储资源进行择优选择,选择出满足需求的最佳存储节点和硬盘组;
(3)节点服务单元:
存储资源访问模块,通过Volume指定的存储服务协议,挂载最佳存储节点的Volume,并将该Volume挂载到本宿主机的有状态应用Pod中,供其使用。
(4)存储管理服务单元:
存储端管理模块,通过gRPC接口服务,对其他单元提供存储端资源的创建、删除、修改、状态查询等能力,同时负责已创建Volume资源的本地持久化和动态更新。
在一个实施例中,所述存储资源打分模块4所支持的存储选择策略包括哈希算法(Hash)、随机算法(Random)、轮询调度算法(Round-Robin)及最少使用算法(Least-Used)中的至少一种。
所述存储资源访问模块5,用于在选出的节点上创建满足需求的存储卷。
本发明提供的一种实现有状态应用的存储卷隔离性分配的方法和***,主要涉及对有状态应用对Volume的申请需求的接受和解析、存储资源筛选的方法、存储资源打分策略、存储资源管理的方法、存储资源访问的方法等,旨在实现对同一个有状态应用(比如数据库、大数据库等)对多个存储卷请求的自动化分配,并实现其多个存储卷之间的隔离性。基于存储的容量大小、IO性能指标的要求、隔离性的要求等,通过存储选择策略,保证能够自动化的按需分配能够满足有状态应用的存储卷。以本发明作为关键技术开发实现的Kubernetes CSI插件(CSI,全称是Container Storage Interface,即容器存储接口,用于将任意块和文件存储***暴露给诸如Kubernetes之类的容器编排***(CO)上的容器化工作负载的标准,为容器编排引擎和存储***间建立了一套标准的存储调用接口,通过该接口能为容器编排引擎提供存储服务),不仅能够实现有状态应用Pod的存储动态分配,同时能够满足有状态应用Pod对存储的隔离性 (诸如是否加速、不同磁盘介质、不同节点及IO性能指标等) 要求,是目前Kubernetes存储插件在有状态应用存储场景下的首选之一。
综上所述,借助于本发明的上述技术方案,本发明采用的存储资源筛选方法,能够有效的对存储层资源进行过滤,筛选掉无法满足隔离性和有状态应用对存储需求的存储节点资源,避免了在存储资源创建阶段因资源不足所引起的存储资源创建失败,保证了能够成功自动分配具备隔离性的存储资源。
此外,本发明采用存储资源打分策略,在能够成功自动分配具备隔离性的存储资源的基础上,通过存储选择策略在若干存储节点之间实现容量和性能两个资源维度的均匀分布,避免因存储节点数量不足导致存储资源无法正常分配,保证了自动分配的具备隔离性的存储资源的均衡性。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种实现有状态应用的存储卷隔离性分配的方法,其特征在于,该方法包括以下步骤:
接收有状态应用对存储卷的申请需求;
根据需求中对存储的容量大小和存储读写性能指标的要求,对若干个存储节点进行过滤,筛选出满足存储卷需求的存储节点列表;
根据需求中对存储节点和硬盘组的隔离性的要求,对存储节点列表进行再次过滤;
根据需求中指定的存储选择策略,对再次过滤筛选出的存储节点列表进行打分,选出满足存储卷需求的节点和硬盘组;
在选出的节点上创建满足需求的存储卷;
将存储卷以存储服务的方式提供给有状态应用进行挂载使用。
2.根据权利要求1所述的一种实现有状态应用的存储卷隔离性分配的方法,其特征在于,所述接收有状态应用对存储卷的申请需求包括对容量大小、存储读写性能、主机隔离、硬盘组隔离、是否需加速及存储选择策略的需求进行接收,并对这些申请需求进行预处理。
3.根据权利要求1所述的一种实现有状态应用的存储卷隔离性分配的方法,其特征在于,所述根据需求中对存储的容量大小和存储读写性能指标的要求,对若干个存储节点进行过滤,筛选出满足存储卷需求的存储节点列表包括以下步骤:
对存储节点列表进行排查,并过滤掉不具备加速能力的存储;
调用存储节点接口,查询存储容量和存储读写性能的可用资源信息;
根据容量大小和存储读写性能指标,对存储节点列表再进行过滤,得到容量和性能均满足存储卷需求的存储节点列表。
4.根据权利要求3所述的一种实现有状态应用的存储卷隔离性分配的方法,其特征在于,采用如下公式对存储节点列表进行过滤:
Figure 545406DEST_PATH_IMAGE001
其中,IO_Acceleration表示存储节点满足是否加速需求,Free_Size表示存储节点的空闲容量大小,Needed_Size表示所需存储大小,IO_Perf表示存储节点上目前可提供的性能指标能力,Needed_IO_Perf表示所需存储的存储读写性能。
5.根据权利要求1所述的一种实现有状态应用的存储卷隔离性分配的方法,其特征在于,所述根据需求中指定的存储选择策略,对再次过滤筛选出的存储节点列表进行打分,选出满足存储卷需求的节点和硬盘组包括以下步骤:
根据需求的存储容量大小,对再次过滤筛选出的存储节点的所有硬盘组进行容量分值计算;
根据需求的存储性能指标,对再次过滤筛选出的存储节点的所有硬盘组进行性能分值计算;
根据需求中指定的存储选择策略,选出满足存储卷需求的节点和硬盘组。
6.根据权利要求5所述的一种实现有状态应用的存储卷隔离性分配的方法,其特征在于,所述容量分值计算公式如下:
Figure 940484DEST_PATH_IMAGE002
其中,Dg_Space_Score表示硬盘组的容量最终得分,该值小于1,Dg_Free_Size表示硬盘组剩余可用容量大小,Needed_Size表示所需存储大小;
所述性能分值计算计算公式如下:
Figure 378419DEST_PATH_IMAGE003
其中,Dg_Perf_Score表示硬盘组的性能最终得分,该值小于1,Dg_Free_Perf表示硬盘组剩余可用性能指标大小,IO_Perf表示存储节点上目前可提供的性能指标能力,Needed_IO_Perf表示所需存储的存储读写性能;
所述满足存储卷需求的节点和硬盘组的筛选公式如下:
Figure 799036DEST_PATH_IMAGE004
其中,Fun_Best_Node_Select()为最佳存储节点选择函数,Array(Dg_Space_Score)为所有容量最终得分大于0的硬盘组的数组,Array(Dg_Perf_Score)为所有性能最终得分大于0的硬盘组的数组。
7.根据权利要求1所述的一种实现有状态应用的存储卷隔离性分配的方法,其特征在于,所述在选出的节点上创建满足需求的存储卷包括以下步骤:
通过API接口访问利用打分选出的满足存储卷需求的节点,并传递存储卷创建的需求对象到该节点;
解析存储卷创建需求,在对应的硬盘组上分配所需的存储卷存储空间;
对存储卷是否需要加速进行判断,若存储卷需要加速,对上述步骤分配的存储卷存储空间进行存储读写加速设置,否则进入下一步骤;
根据该存储卷性能需求,对上述步骤分配的存储卷存储空间进行性能指标设置。
8.根据权利要求1所述的一种实现有状态应用的存储卷隔离性分配的方法,其特征在于,所述将存储卷以存储服务的方式提供给有状态应用进行挂载使用包括以下步骤:
根据存储卷存储服务协议需求,将存储卷存储空间以存储服务的方式对外进行映射;
在有状态应用所在的Kubernetes宿主机上,通过上述步骤所采用的存储服务协议的客户端挂载方式,将该存储卷挂载到该宿主机;
将Kubernetes的宿主机上的该存储卷映射给有状态应用所在的Pod使用。
9.一种实现有状态应用的存储卷隔离性分配的***,用于实现权利要求1-8中任一项所述的一种实现有状态应用的存储卷隔离性分配的方法的步骤,其特征在于,该***包括存储资源需求解析模块、存储资源筛选模块、存储资源打分模块、存储端管理模块及存储资源访问模块;
其中,所述存储资源需求解析模块,用于接收有状态应用对存储卷的申请需求;
所述存储资源筛选模块,用于根据需求中对存储的容量大小和存储读写性能指标的要求,对若干个存储节点进行过滤,筛选出满足存储卷需求的存储节点列表;
所述存储资源筛选模块,还用于根据需求中对存储节点和硬盘组的隔离性的要求,对存储节点列表进行再次过滤;
所述存储资源打分模块,用于根据需求中指定的存储选择策略,对再次过滤筛选出的存储节点列表进行打分,选出满足存储卷需求的节点和硬盘组;
所述存储资源访问模块,用于在选出的节点上创建满足需求的存储卷。
10.根据权利要求9所述的一种实现有状态应用的存储卷隔离性分配的***,其特征在于,所述存储资源打分模块所支持的存储选择策略包括哈希算法、随机算法、轮询调度算法及最少使用算法中的至少一种。
CN202111237841.0A 2021-10-25 2021-10-25 一种实现有状态应用的存储卷隔离性分配的方法和*** Pending CN113687795A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111237841.0A CN113687795A (zh) 2021-10-25 2021-10-25 一种实现有状态应用的存储卷隔离性分配的方法和***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111237841.0A CN113687795A (zh) 2021-10-25 2021-10-25 一种实现有状态应用的存储卷隔离性分配的方法和***

Publications (1)

Publication Number Publication Date
CN113687795A true CN113687795A (zh) 2021-11-23

Family

ID=78587788

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111237841.0A Pending CN113687795A (zh) 2021-10-25 2021-10-25 一种实现有状态应用的存储卷隔离性分配的方法和***

Country Status (1)

Country Link
CN (1) CN113687795A (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114691050A (zh) * 2022-05-26 2022-07-01 深圳前海环融联易信息科技服务有限公司 基于kubernetes的云原生存储方法、装置、设备及介质
CN114756170A (zh) * 2022-04-02 2022-07-15 苏州空天信息研究院 一种面向容器应用的存储隔离***及其方法
CN114816272A (zh) * 2022-06-23 2022-07-29 江苏博云科技股份有限公司 Kubernetes环境下的磁盘管理***
CN115145695A (zh) * 2022-08-30 2022-10-04 浙江大华技术股份有限公司 资源调度方法、装置、计算机设备和存储介质
WO2023165499A1 (zh) * 2022-03-02 2023-09-07 苏州浪潮智能科技有限公司 一种iSCSI服务负载均衡方法、装置、设备及介质
CN117150060A (zh) * 2023-10-31 2023-12-01 腾讯科技(深圳)有限公司 一种数据处理方法及相关装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103118073A (zh) * 2013-01-08 2013-05-22 华中科技大学 一种云环境下虚拟机数据持久化存储***和方法
CN107193504A (zh) * 2017-06-02 2017-09-22 郑州云海信息技术有限公司 一种基于Kubernetes的自动化分配和创建应用存储的方法和***
CN112217676A (zh) * 2020-10-13 2021-01-12 北京工业大学 一种基于混合元启发式算法的Kubernetes容器集群节点选取方法
CN112463349A (zh) * 2021-01-28 2021-03-09 北京睿企信息科技有限公司 一种高效调度gpu能力的负载均衡方法及***
CN113504954A (zh) * 2021-07-08 2021-10-15 华云数据控股集团有限公司 调用CSI LVM Plugin插件、动态持久卷供应的方法、***及介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103118073A (zh) * 2013-01-08 2013-05-22 华中科技大学 一种云环境下虚拟机数据持久化存储***和方法
CN107193504A (zh) * 2017-06-02 2017-09-22 郑州云海信息技术有限公司 一种基于Kubernetes的自动化分配和创建应用存储的方法和***
CN112217676A (zh) * 2020-10-13 2021-01-12 北京工业大学 一种基于混合元启发式算法的Kubernetes容器集群节点选取方法
CN112463349A (zh) * 2021-01-28 2021-03-09 北京睿企信息科技有限公司 一种高效调度gpu能力的负载均衡方法及***
CN113504954A (zh) * 2021-07-08 2021-10-15 华云数据控股集团有限公司 调用CSI LVM Plugin插件、动态持久卷供应的方法、***及介质

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023165499A1 (zh) * 2022-03-02 2023-09-07 苏州浪潮智能科技有限公司 一种iSCSI服务负载均衡方法、装置、设备及介质
CN114756170A (zh) * 2022-04-02 2022-07-15 苏州空天信息研究院 一种面向容器应用的存储隔离***及其方法
CN114691050A (zh) * 2022-05-26 2022-07-01 深圳前海环融联易信息科技服务有限公司 基于kubernetes的云原生存储方法、装置、设备及介质
CN114691050B (zh) * 2022-05-26 2022-09-06 深圳前海环融联易信息科技服务有限公司 基于kubernetes的云原生存储方法、装置、设备及介质
WO2023226197A1 (zh) * 2022-05-26 2023-11-30 深圳前海环融联易信息科技服务有限公司 基于kubernetes的云原生存储方法、装置、设备及介质
CN114816272A (zh) * 2022-06-23 2022-07-29 江苏博云科技股份有限公司 Kubernetes环境下的磁盘管理***
CN114816272B (zh) * 2022-06-23 2022-09-06 江苏博云科技股份有限公司 Kubernetes环境下的磁盘管理***
CN115145695A (zh) * 2022-08-30 2022-10-04 浙江大华技术股份有限公司 资源调度方法、装置、计算机设备和存储介质
CN117150060A (zh) * 2023-10-31 2023-12-01 腾讯科技(深圳)有限公司 一种数据处理方法及相关装置
CN117150060B (zh) * 2023-10-31 2024-02-09 腾讯科技(深圳)有限公司 一种数据处理方法及相关装置

Similar Documents

Publication Publication Date Title
CN113687795A (zh) 一种实现有状态应用的存储卷隔离性分配的方法和***
CN113641311B (zh) 一种基于本地盘的容器存储资源动态分配的方法和***
US12003571B2 (en) Client-directed placement of remotely-configured service instances
US10104010B2 (en) Method and apparatus for allocating resources
CN112532675B (zh) 一种网络边缘计算***的创建方法、装置及介质
US8087025B1 (en) Workload placement among resource-on-demand systems
US8104038B1 (en) Matching descriptions of resources with workload requirements
US20180144009A1 (en) Partitioning and Rebalancing Data Storage
US9411648B2 (en) Flexible resource configuration management for computing clusters
CN114788227A (zh) 使用动态标记和清单的灵活策略语义扩展
CN109976907B (zh) 任务分配方法和***、电子设备、计算机可读介质
US11784967B1 (en) Monitoring internet protocol address utilization to apply unified network policy
JP2005310120A (ja) 計算機システム及びタスク割当方法
CN111435341A (zh) 虚拟环境中的存储库可用性的增强管理
CN112035244A (zh) 在多租户环境中虚拟节点集群的部署
CN115017117B (zh) 一种基于本地盘的容器文件***在线扩容的方法和***
KR102064466B1 (ko) 가상화 시스템에서의 가상 데스크톱을 할당하는 방법 및 그 가상화 시스템
US20220383219A1 (en) Access processing method, device, storage medium and program product
CN109005071B (zh) 一种决策部署方法和调度设备
CN115618409A (zh) 数据库云服务生成方法、装置、设备及可读存储介质
US20220318042A1 (en) Distributed memory block device storage
CN114827123B (zh) 一种iSCSI服务的设置方法、装置、设备及介质
CN113377866A (zh) 一种虚拟化数据库代理服务的负载均衡方法及装置
US11909719B1 (en) Managing the allocations and assignments of internet protocol (IP) addresses for computing resource networks
US20230328137A1 (en) Containerized gateways and exports for distributed file systems

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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20211123