一种面向申威容器平台的可视化块存储方法和系统与流程

文档序号:28217354发布日期:2021-12-28 22:39阅读:153来源:国知局
一种面向申威容器平台的可视化块存储方法和系统与流程

1.本发明涉及容器平台数据存储领域,具体涉及一种面向申威容器平台的可视化块存储方法和系统。


背景技术:

2.国产容器平台是基于国产服务器之上的“轻量级”虚拟化技术。它的目的和虚拟机一样,都是为了创造“隔离环境”。但又和虚拟机有很大的不同,虚拟机是操作系统级别的资源隔离,而虚拟化容器平台本质上是进程级的资源隔离,不仅实现对cpu、存储的额外开销小,还可以实现基于应用服务的秒级启动和关闭,为开发者和企业提供了一个快速构建、集成、部署、运行容器化应用的平台,实现对现有部分应用纳入到应用迭代体系,将大部分应用开发和核心应用全部基于轻量化容器平台运行,实现标准的devops体系,从而提高应用开发的迭代效率,简化运维和服务发布流程。
3.传统的容器平台都是使用本地存储资源作为容器应用的存储卷,但在面向容器云、人工智能领域常常会采用分布式存储资源池作为集中存储环境,传统容器存储技术不利于存储资源的灾备和资源统一管理,在扩展性方面不能适应容器应用动态扩展和对存储资源统一运维管理需求,导致容器应用不满足分布式部署及数据基于分布式存储系统的自动均衡分布,当存储需求逐渐增加时,不满足存储规模的在线扩容及存储的线性扩展。
4.容器存储方式分为内部存储方式、容器宿主机存储方式和容器远程卷存储三种,容器内部存储的数据在容器销毁时数据自动销毁,就像内存数据一样临时存在;容器宿主机本地存储使用本地存储卷映射,但本地卷不能创建快照和不能在节点间实现容器存储资源漂移,如果节点宕机或硬盘损坏,会造成容器应用存储的数据丢失,不利于容器应用对存储资源的使用。


技术实现要素:

5.本发明提供一种面向申威容器平台的可视化块存储方法和系统,通过web界面方式对分布式存储系统的块存储进行持久化操作,再为容器实例创建存储卷,通过ui界面方式自动挂载存储卷到容器应用中,满足容器应用的持久化存储需求。传统容器存储技术需要专业运维人员通过后端命令进行大量配置,不能对接多种类型的存储系统,当存储需求逐渐增加时,不满足存储规模的在线扩容及存储的线性扩展,如果节点宕机或硬盘损坏,容易造成容器应用数据丢失的风险。为解决上述技术问题,本发明提供一种面向申威容器平台的可视化块存储方法,包括如下步骤:
6.(1)块存储资源创建及初始化;
7.(2)容器应用对块存储资源申请;
8.(3)容器块存储的持久化及共享;
9.(4)块存储资源高可用及资源监控。
10.进一步的,所述块存储资源创建及初始化具体包括如下步骤:
11.1)块存储类型的判断及接口配置;
12.2)块存储池创建;
13.3)块存储资源创建和配置。
14.进一步的,所述块存储类型的判断方法为:
15.添加块存储池之前,根据智能块存储管理系统的存储类型选择对应的模板,所述模板规定了对应字段关系;
16.如果模板中有块存储对应的存储类型,则选择对应的模板;如果模板中没有块存储对应的存储类型,则采用vue图形化组件设计器创建模板。
17.进一步的,所述块存储池创建是通过java http请求调用shell或python脚本到对应的存储节点执行命令或者直接调用存储系统对应的restful api进行块存储池的创建。
18.进一步的,所述容器应用对块存储资源申请包括如下步骤:
19.根据存储资源申请,寻找符合要求的块存储资源,待资源申请成功后更新块存储资源状态和启动应用容器;再指定存储服务器类型,配置存储空间及对资源的访问模式。
20.进一步的,所述容器块存储卷持久化包括如下步骤:资源供应,资源绑定,资源使用,资源释放和资源回收。
21.进一步的,所述块存储的共享包括如下步骤:针对每个容器设置共享持久化卷的访问能力,设置单主机读写、多主机只读或多主机读写访问模式,通过跨节点挂载存储的方式实现任务跨节点重建之后快速访问原有数据。
22.进一步的,所述块存储资源高可用的具体实现步骤为:
23.通过容器管理界面创建容器副本,容器副本和容器共用相同的两份块存储资源;所述的两份块存储资源通过分布式存储系统实现三副本备份;分布式存储系统同时为块存储资源实现定时快照功能,保障整个容器对块存储的高可用性和安全性。
24.进一步的,所述块存储的资源监控实现的具体步骤为:块存储资源监控通过集群管理界面实现,通过内置python脚本、smartctl shell命令接口实时监测挂载的块存储容量再通过echarts工具显示在界面中,通过监控可以查看容器已经使用的块存储资源、剩余块存储资源、磁盘寿命预测和磁盘健康状态的监控。
25.本发明还提供一种面向申威容器平台的可视化块存储系统,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现上述的面向申威容器平台的可视化块存储方法。
26.本发明的有益效果是:本发明不仅通过扩展存储插件模板支持页面的可视化定制及与多种分布式存储系统的对接和管理,同时提出一种改善的容器与存储之间的衔接技术,通过容器对块存储资源的申请并根据动态资源分配和静态资源分配对块存储资源进行管理和使用,再通过容器集群的高可用管理与分布式存储的高可用管理相结合,保障数据的安全性和高效性,为国产申威平台容器与块存储资源的使用提出新的创新解决思路。本发明采用可视化模板的方式对接多种块存储系统,通过参数配置及json格式传输获得块存储资源池与各个系统的对接,扩展了存储接口,支持多种存储系统;本发明涉及的存储系统和容器集群均基于国产申威服务器平台,为其他平台容器应用和存储系统对接提供示范参考;本发明提出容器存储与块存储资源动态存储资源分配和静态存储资源分配的绑定方法,根据容器的需求按照最小容量匹配对应的块存储资源;本发明采用高可用和实时资源
监控技术对容器中使用的块资源进行高可用数据管理及数据资源监控,方便管理员及时扩容和对块存储资源进行精细化管理。
附图说明
27.图1为可视化块存储实现总体流程图;
28.图2为块存储资源创建及初始化流程图;
29.图3为容器对块存储的使用流程图;
30.图4为容器对块存储共享流程图;
31.图5为块存储资源高可用流程图。
具体实施方式
32.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
33.实施例1
34.本实施例提供一种面向申威容器平台的可视化块存储方法,如图1所示,包括如下步骤:
35.s100、块存储资源创建及初始化;
36.s200、容器应用对块存储资源申请;
37.s300、容器块存储的持久化及共享;
38.s400、块存储资源高可用及资源监控。
39.通过这四个步骤可以完成容器应用共享持久化数据存储服务能力,支持数千个pod共享读写访问,不但可降低容器存储容量规划管理的复杂度,还能提高存储空间利用率,同时在node、pod出现访问热点、故障时可以快速切换恢复,保障业务连续性。
40.块存储资源创建和初始化包括各种块存储类型的判断及接口配置、块存储池创建、块存储资源创建和块存储资源配置处理环节构成。实现方式基于j2ee平台mvc架构,对外提供restful接口,内部通过平台层屏蔽各种块存储基础系统的差异性,视图层view采用流行的vue、layui、echarts、bootstrap技术,控制层controller通过java语言调用shell脚本、python接口将命令推送到服务器上执行并返回相应的结果,通过mariadb数据库实现数据的持久化控制,兼容kubernetes容器云微服务治理框架,支持微服务静态资源和动态资源分离、支持应用和数据库分开部署,具备分布式运维及动态扩展特性,如图2所示,所述s100中的块存储资源创建及初始化具体包括如下步骤:
41.s101、块存储类型的判断及接口配置;
42.s102、块存储池创建;
43.s103、块存储资源创建和配置。
44.作为一种优选的实施方式,所述块存储类型的判断方法为:
45.添加块存储池之前,根据智能块存储管理系统的存储类型选择对应的模板,所述模板规定了对应字段关系;
46.如果模板中有块存储对应的存储类型,则选择对应的模板;如果模板中没有块存储对应的存储类型,则采用vue图形化组件设计器创建模板。
47.作为一种更为具体的实施方式,在添加块存储池之前,需要根据智能块存储管理系统的存储类型选择对应的模板,模板中规定了key

value的对应字段关系,通过界面可以选择ceph块、clusterfs块、openstack cinder块、sheepdog块、moosefs块、longhorn块、阿里云盘已经存在的模板,如果块存储插件模板中没有对应的存储类型,也支持通过自定义键值对的方式实现存储类型的关键信息采集。创建模板采用vue图形化组件设计器,分为输入型组件、选择型组件、布局型组件,选择组件后需要填写组件属性和表单属性,程序action处理组件时使用标准vue格式文件,通过收集vue文件实现模板的创建。对指定的vue组件分配一个随机id,并将这个vue文件的代码结构转换为json,以map的形式存储于map.js文件中。在运行时,将map.js文件加载进内存。当拖动某个被lc

mark标记的元素时,我们可获得这个元素相应的id,再通过这个id到map中查找,于是获得了对应的原始代码结构。
48.a)可视化vue组件
49.可视化组件生成机制包括通过图形化界面template模板的生成、script脚本的生成以及使用页面style样式的生成:
50.[0051][0052]
b)代码生成存储类型模板静态页面
[0053]
当生成完对应的块存储模板后,通过代码生成按钮把对应的vue片段代码生成静态页面添加到存储类型列表,代码生成静态页面接口函数如下:
[0054]
@postmapping("/importvuedata")
[0055]
@responsebody
[0056]
public ajaxresult importvuedata(multipartfile file,boolean updatesupport)throws exception
[0057]
{
[0058]
excelutil<sysuser>util=new excelutil<sysuser>(sysuser.class);
[0059]
list<sysuser>userlist=util.importexcel(file.getinputstream());
[0060]
string opername=shiroutils.getsysuser().getloginname();
[0061]
string message=userservice.importuser(userlist,updatesupport,opername);
[0062]
return ajaxresult.success(message);
[0063]
}
[0064]
作为一种优选的实施方式,所述块存储池创建是通过javahttp请求调用shell或python脚本到对应的存储系统执行命令或者直接存储系统对应的restful api进行块存储池创建的。即通过选择存储类型模板,系统自动识别存储类型及对应的配置参数,使用人员
通过界面进行存储地址、存储池名称、存储副本数、文件系统类型、镜像格式、镜像功能、回收策略、挂载选项等参数进行存储池的创建操作,创建过程中通过java http请求调用shell或python脚本到对应的存储节点执行命令或者直接使用存储系统对应的restful api进行块存储池的创建。
[0065]
a)java通过http requst请求python接口处理页面块存储参数
[0066]
[0067][0068]
b)python调用对应的存储系统restful接口创建存储池
[0069]
public handlepoolresult createcephrbd(cluster cluster,vgstordepot depot,vgstordepotruleset ruleset,vgstorfaultdomain domain)throws exception{
[0070]
string baseurl=this.getbaseurl(cluster.getadminip(),cluster.getagentport());
[0071]
string domaintype=domain.gettype()==0?"rack":(domain.gettype()==1)?"osd":"host";
[0072]
map<string,object>params=parammap.create().with("name",depot.getname()).with("config",ruleset.getconfig()).with("pgnum",depot.getpgnum()).with("type",ruleset.gettype()).with("diskgroup",ruleset.getdiskgroup()).with("domainname",domain.getname()).with("domaintype",domaintype).get();
[0073]
return(handlepoolresult)jsonhttpclient.request(baseurl,"/trans/depot","post",(object)params,handlepoolresult.class);
[0074]
}
[0075]
(3)块存储创建
[0076]
存储池创建后,通过界面创建块存储设备,包括iscsi块存储设备、target、lun存储资源,创建块设备时需要输入块存储设备名称、所属存储池,块存储大小,条带深度和宽度,如果是target设备,需要输入target名称、tid、wwn号、lun数量、网关地址,如果是lun块资源需要输入lun名称、target名称、块设备名称,通过调用http requst调用python创建块存储设备。
[0077]
public handlepoolresult createrbd(cluster cluster,vgstordepot depot,vgstordepotruleset ruleset,vgstorfaultdomain domain)throws exception{
[0078]
string baseurl=this.getbaseurl(cluster.getadminip(),cluster.getagentport());
[0079]
string domaintype=domain.gettype()==0?"rack":(domain.gettype()==1)?"osd":"host";
[0080]
map<string,object>params=parammap.create().with("name",depot.getname()).with("config",ruleset.getconfig()).with("pgnum",depot.getpgnum()).with("type",ruleset.gettype()).with("diskgroup",ruleset.getdiskgroup()).with("domainname",domain.getname()).with("domaintype",domaintype).get();
[0081]
return(handlepoolresult)jsonhttpclient.request(baseurl,"/trans/depot","post",(object)params,handlepoolresult.class);
[0082]
}
[0083]
作为一种优选的实施方式,所述容器应用对块存储资源申请包括如下步骤:
[0084]
根据存储资源申请,寻找符合要求的块存储资源,待资源申请成功后更新块存储资源状态和启动应用容器。再指定存储服务器类型,配置存储空间及对资源的访问模式。
[0085]
容器应用对块存储资源的申请包括静态块存储资源、动态块存储资源和混合资源申请三种形式,静态资源申请需要先指定块存储容量大小,动态资源申请根据容器使用块存储卷时自动创建持久化存储卷并自动挂载到容器中,容器应用对块存储资源的访问通过界面选择块存储资源类型、填写块存储容量大小、默认工作空间、访问模式等信息,系统自动通过api接口获取与各类型存储系统的关系,如果状态时pending测需要回到步骤1进行重新配置存储类型参数,如果是active(动态存储)或available(静态存储)说明已经与各类存储系统配置连接成功,接下来就可以通过资源申请页面对静态资源和动态资源进行按需申请。包括块资源类型创建和块资源申请。
[0086]
块资源类型包括全静态pv、动态+静态pv、全动态pv,根据存储资源申请,pvc去寻找符合要求的块存储资源,待资源申请成功后更新块存储资源状态和启动应用容器。
[0087]
动态资源申请接口:apiversion:storage.k8s.io/v1kind:storageclassmetadata:name:block

serviceprovisioner:kubernetes.io/gce

pdparameters:type:pd

ssd;
[0088]
静态资源申请接口:apiversion:v1kind:persistentvolumeclaimmetadata:name:claim1spec:accessmodes:

readwriteonce storageclassname:block

service resources:requests:storage:30gi
[0089]
接下来需要对块资源进行申请使用,应用pod从集群请求存储资源的对象,可以理解为应用pod可以访问和使用多少存储空间的凭证。通过块资源申请,可以指定存储服务器
类型(sc),可以指定需要多大的存储空间,可以配置卷的访问模式(单主机读写、多主机只读、多主机读写)。设置容器应用的持久化存储时,会挂载一个持久性卷声明(pvc),该声明与其他kubernetes卷的挂载方式相同。当创建pvc时,kubernetes master将其视为存储请求,并将其绑定到与pvc的最低资源要求匹配的pv,并非所有pvc都能保证绑定到pv,为了动态地提供新的存储,挂载在容器中的pvc必须与存储类相对应,存储类让您可以动态创建pv,而不必先在基础设施中创建持久化存储。通过http post方法把请求发送到后端进行处理,传输函数及发送json格式如下:
[0090]
request url:https://管理ip/v3/projects/c

ffw7g:p

p7cg2/persistentvolumeclaim,传输的json及参数为
[0091]
{
[0092]
type:"persistentvolumeclaim",
[0093]
accessmodes:["readwriteonce"]
[0094]
name:"testpvc6"
[0095]
namespaceid:"default"
[0096]
resources:{requests:{storage:"4gi"}}
[0097]
requests:{storage:"4gi"}
[0098]
storage:"4gi"
[0099]
storageclassid:"storageclass1"
[0100]
type:"persistentvolumeclaim"
[0101]
volumeid:null
[0102]
}
[0103]
作为一种优选的实施方式,所述容器块存储卷持久化包括如下步骤:资源供应,资源绑定,资源使用,资源释放和资源回收。
[0104]
容器块存储持久化过程也是容器应用对块存储资源的使用过程,通过s100和s200可以为容器创建块存储资源,容器如何挂载这些块存储资源,如果解决多个容器共享一个块存储资源关系着容器与块存储资源的文件读写效率。本发明采用一种分布式文件系统的方式来提供容器存储,分布式文件存储系统具备良好的横向扩展能力,存储规模可扩展至数百pb级,且存储聚合性能随存储规模线性增长。分布式文件存储兼容posix标准,可无缝对接现有多种深度学习框架的读写接口。同时,分布式存储具有多重数据冗余能力,可保证数据的安全可靠,能提供高吞吐量的数据读写操作,满足任务对数据的高速读写要求。
[0105]
如图3所示,容器对块存储资源的使用流程包括资源供应、资源绑定、资源使用、资源释放和资源回收5个过程。资源供应提供动态创建storageclass、静态创建pv的过程;创建完成后通过对持久化存储的申请设置块存储资源属性并进行资源绑定,对于pv,管理员可以设定回收策略(reclaimpolicy)用于设置与之绑定的pvc释放资源之后,对于遗留数据如何处理。只有pv的存储空间完成回收,才能供新的pvc绑定和使用。系统将根据pvc对存储资源的请求(存储空间和访问模式)在已存在的pv中选择一个满足pvc要求的pv;容器使用块存储卷的定义,将pvc挂载到容器内的某个路径进行使用。卷的类型为pvc,在容器应用挂载了一个pvc后,就能被持续独占使用;当用户对存储资源使用哪个完毕后,用户可以删除pvc,与该pvc绑定的pv将会被标记为已释放,但还不能立刻与其他pvc进行绑定。通过之前
pvc写入的数据可能还留在存储设备上,只有在清除数据之后该pv才能继续使用。
[0106]
作为一种优选的实施方式,如图4所示,所述块存储的共享包括如下步骤:针对每个容器设置共享持久化卷的访问能力,设置单主机读写、多主机只读或多主机读写访问模式,通过跨节点挂载存储的方式实现任务跨节点重建之后快速访问原有数据。
[0107]
本实施例中,在实际生产中,经常会出现同一容器内的多个容器共享pod级别的块存储卷volume情况,块存储卷volume可以被定义为各种类型,多个容器各自进行挂载操作,将一个volume挂载为容器内部需要的目录即可。针对每个容器可以设置共享持久化卷的访问能力,可以设置单主机读写、多主机只读和多主机读写访问模式,容器平台使用外部统一存储系统之后,可以通过跨节点挂载存储的方式实现任务跨节点重建之后快速访问原有数据。跨节点挂载存储可以让集群中的pod共享外部分布式存储,即多个pod共同挂载一份存储,实现存储共享。这种存储挂载可以通过两种方式:一种是通过pod直接挂载;一种是通过pv和pvc挂载。这两种方式均可以通过容器云平台提供的平滑迁移功能,实现快速访问原有数据。
[0108]
作为一种优选的实施方式,如图5所示,所述块存储资源高可用的具体实现步骤为:
[0109]
1)通过容器管理界面创建容器副本,容器副本和容器共用相同的两份块存储资源;
[0110]
2)所述的两份块存储资源通过分布式存储系统实现三副本备份;
[0111]
3)分布式存储系统同时为块存储资源实现定时快照功能,保障整个容器对块存储的高可用性和安全性。本实施例中,通过容器管理界面可以创建容器副本,容器副本和容器共用同样两个块设备pv或storageclass块存储资源/dev/share1和/dev/share1bak,两个块存储资源通过块资源同步容器实现数据库文件及非结构化文件的实时同步,数据库应用采用keepalive与数据库master

slave主从机制实现库表的实时复制,非结构化文件系统通过inotify+rsync,inotify对同步数据目录信息的监控,rsync完成对数据信息的实时同步。
[0112]
块存储资源1/dev/share1和块存储资源2/dev/share1bak通过分布式存储系统与容器存储实现对接,在分布式存储系统创建pool存储池的时候选择副本策略为3,支持ssd、内存对数据进行缓存加速,ssd提供读写缓存、内存提供读缓存,通过i/o智能预测引擎缓存热点数据,块存储资源定时任务界面创建块存储定时快照功能,每隔一天创建一份快照到存储资源池,快照保留策略设置一个月。采用分布式存储的好处是防止节点或硬盘损失导致数据无法恢复,选择创建快照目的是可以快速的从定时任务列表中恢复容器对应的块存储资源,保障整个容器对块存储的高可用性和安全性。
[0113]
作为一种优选的实施方式,所述块存储的资源监控实现的具体步骤为:块存储资源监控通过集群管理界面实现,实时监测挂载的块存储容量再通过报表显示在界面中,通过监控可以查看容器已经使用的块存储资源、剩余块存储资源、磁盘寿命预测和磁盘健康状态的监控。
[0114]
本实施例中,块存储资源监控包括容器对块存储空间的监控和分布式存储系统对块存储资源的总体监控管理。块存储资源监控通过集群管理界面实现,通过内置python脚本和shell命令实时监测挂载的块存储资源及剩余块存储资源、磁盘寿命预测、磁盘健康状
态监控等情况,再通过echarts报表直观展示当前所有存储池资源,支持存储池的向下钻取,通过每个存储池可以看到块存储池下对应的镜像大小和已使用的容量、块存储资源hdd或ssd类型,读写速度,快照的大小和已使用的容量,支持块设备的扩容,当使用的资源池达到设置预警数值时可以通过管理员对存储池的扩容实现块存储资源的在线扩展,同时在性能事件列表中可以查询到块存储资源预警的提示信息,方便管理员及时对存储池进行扩展和维护。
[0115]
实施例2
[0116]
本实施例提供一种面向申威容器平台的可视化块存储系统,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现实施例1中的面向申威容器平台的可视化块存储方法。
[0117]
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1