掌桥专利:专业的专利平台
掌桥专利
首页

分布式存储系统、虚拟机创建和数据卷扩容方法

文献发布时间:2023-06-19 09:24:30


分布式存储系统、虚拟机创建和数据卷扩容方法

技术领域

本发明涉及云技术领域,尤其涉及一种分布式存储系统、虚拟机创建和数据卷扩容方法。

背景技术

随着分布式存储系统的广泛应用和数据量的飞速增长如果进行友好扩容成为了云技术领域亟待解决的问题。

目前分布式存储系统的扩容方式主要包括两种,一种是物理扩容,即直接将物理设备加入到存储集群的pool中,另一种是增加存储集群中的pool。

其中,物理扩容会带来大量数据迁移,扩容过程中不可避免地会对客户端的IO性能造成影响,且大量的读写操作会影响物理设备的读写寿命;增加pool的方式会对正在提供服务的存储集群带来过多的侵入,操作风险巨大,随着pool的不断增加,存储集群对元数据管理、pool管理都将成为挑战。

发明内容

本发明实施例提供一种分布式存储系统、虚拟机创建和数据卷扩容方法,用以解决现有技术中分布式存储系统扩容困难的缺陷。

第一方面,本发明实施例提供一种分布式存储系统,包括:

镜像服务组件,用于新增可用存储集群;

块存储组件,用于基于新增的可用存储集群进行扩容。

根据本发明一个实施例的分布式存储系统,所述镜像服务组件基于镜像服务配置信息新增可用存储集群;

所述块存储组件基于块存储配置信息,对新增的可用存储集群进行扩容;

所述块存储配置信息和所述镜像服务配置信息均包括预设数量个可用存储集群的信息,所述预设数量个可用存储集群包括新增的可用存储集群。

根据本发明一个实施例的分布式存储系统,所述块存储配置信息和所述镜像服务配置信息均包括可用后端信息和可用后端配置信息;

其中,所述可用后端信息包括所述预设数量个可用存储集群的集群标识,所述可用后端配置信息包括所述预设数量个可用存储集群的配置信息。

根据本发明一个实施例的分布式存储系统,所述块存储配置信息和所述镜像服务配置信息还包括默认存储集群的集群标识,所述默认存储集群为所述预设数量个可用存储集群中的一个。

根据本发明一个实施例的分布式存储系统,新增的可用存储集群是基于原有的可用存储集群中导出用户密钥信息配置的。

第二方面,本发明实施例提供一种虚拟机创建方法,应用于如第一方面所提供的分布式存储系统的块存储组件,包括:

接收虚拟机创建请求,所述虚拟机创建请求包括创建虚拟机所需目标镜像的镜像标识;

基于所述镜像标识,从所述分布式存储系统的镜像服务组件中获取所述目标镜像的位置信息,所述位置信息包括存储所述目标镜像的可用存储集群的集群标识;

基于所述目标镜像的位置信息,从所述分布式存储系统中存储所述目标镜像的可用存储集群中提取所述目标镜像,并基于所述目标镜像创建虚拟机。

根据本发明一个实施例的虚拟机创建方法,还包括:

接收所述镜像服务组件发送的镜像上传请求,所述镜像上传请求中包含待上传镜像及其待存储位置信息,所述待存储位置信息包括待存储集群标识;

将所述待上传镜像存储在所述待存储集群标识对应的可用存储集群中。

根据本发明一个实施例的虚拟机创建方法,所述镜像标识包括对应镜像所处可用存储集群的集群标识。

第三方面,本发明实施例提供一种虚拟机数据卷扩容方法,应用于如第一方面所提供的分布式存储系统的块存储组件,包括:

接收数据卷扩容请求,所述数据卷扩容请求包括用于创建新增数据卷的可用存储集群的待创建集群标识;

在所述待创建集群标识对应的可用存储集群上创建新增数据卷,并将所述新增数据卷挂载到所述数据卷扩容请求指示的虚拟机上。

第四方面,本发明实施例提供一种虚拟机创建装置,应用于如第一方面所提供的分布式存储系统的块存储组件,包括:

请求接收单元,用于接收虚拟机创建请求,所述虚拟机创建请求包括创建虚拟机所需目标镜像的镜像标识;

镜像定位单元,用于基于所述镜像标识,从所述分布式存储系统的镜像服务组件中获取所述目标镜像的位置信息,所述位置信息包括存储所述目标镜像的可用存储集群的集群标识;

创建单元,用于基于所述目标镜像的位置信息,从所述分布式存储系统中存储所述目标镜像的可用存储集群中提取所述目标镜像,并基于所述目标镜像创建虚拟机。

第五方面,本发明实施例提供一种虚拟机数据卷扩容装置,应用于如第一方面所提供的分布式存储系统的块存储组件,包括:

扩容请求接收单元,用于接收数据卷扩容请求,所述数据卷扩容请求包括用于创建新增数据卷的可用存储集群的待创建集群标识;

数据卷扩容单元,用于在所述待创建集群标识对应的可用存储集群上创建新增数据卷,并将所述新增数据卷挂载到所述数据卷扩容请求指示的虚拟机上。

第六方面,本发明实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第二方面提供的虚拟机创建方法或第三方面提供的虚拟机数据卷扩容方法的步骤。

第七方面,本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现第二方面提供的虚拟机创建方法或第三方面提供的虚拟机数据卷扩容方法的步骤。

本发明实施例提供的一种分布式存储系统、虚拟机创建和数据卷扩容方法,分布式存储系统包括用于新增可用存储集群的镜像服务组件,以及基于新增的可用存储集群进行扩容的块存储组件,由此构建的分布式存储系统可以在可用存储集群层面上进行扩容,相较于增加pool的扩容方式,扩容操作更加简单便捷,且不涉及对任何正在提供服务的存储集群的侵入操作,维护难度低,有助于分布式存储系统应对更加丰富复杂的IO性能场景。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的分布式存储系统的结构示意图;

图2为本发明实施例提供的虚拟机创建方法的流程示意图;

图3为本发明实施例提供的虚拟机创建方法的流程示意图;

图4为本发明实施例提供的镜像上传方法的流程示意图;

图5为本发明实施例提供的虚拟机数据卷扩容方法的流程示意图;

图6为本发明实施例提供的虚拟机创建装置的结构示意图;

图7为本发明实施例提供的虚拟机数据卷扩容装置的结构示意图;

图8为本发明实施例提供的电子设备的结构示意图;

附图标记说明:

100-分布式存储系统;110-块存储组件;120-镜像服务组件;

130-存储集群。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

目前,在基于Openstack的分布式存储系统中,基本上所有的数据都被存放在单个存储集群中。随着分布式存储系统运行时间的增长,分布式存储系统中存储的数据量也越来越多,这样就需要对分布式存储系统进行扩容。目前常规的扩容方式中,物理扩容会带来大量数据迁移,不可避免地对客户端的IO性能造成影响,且大量的读写操作会影响物理设备的读写寿命,增加存储集群中的pool会对正在提供服务的存储集群带来过多的侵入,操作风险巨大,且随着pool的不断增加,存储集群对元数据管理、pool管理都将成为挑战。

对此,本发明实施例提供了一种可实现灵活扩容的分布式存储系统。图1为本发明实施例提供的分布式存储系统的结构示意图,如图1所示,分布式存储系统100包括:

镜像服务组件120,用于新增可用存储集群130;

块存储组件110,用于基于新增的可用存储集群130进行扩容。

OpenStack是一个开源的云计算管理平台项目,是一些列软件开源项目的组合。本发明实施例中的分布式存储系统100可以是基于OpenStack构建的。

通常,基于OpenStack的分布式存储系统100后端仅对接单个可用存储集群130,对应的扩容方式即在单个可用存储集群130中增加pool。而本发明实施例中,分布式存储系统100可以通过内部组件新增可用存储集群120并基于新增的可用存储集群120实现系统扩容,也就是将基于OpenStack的分布式存储系统100的扩容思路从pool扩展转换到集群扩展,在容量需求提高之后,可以扩展分布式存储系统100后端对应的可用存储集群130。相较于扩展pool的方案,扩展可用存储集群130不涉及对任何正在提供服务的可用存储集群130的侵入操作,也不存在由于侵入操作所导致的风险。

在分布式存储系统100中,镜像服务组件120(Glance)可以在存在扩容需求时,通过自身具备的镜像服务功能,将虚拟机镜像转移到新增的可用存储集群上,从而实现可用存储集群的新增。例如,镜像服务组件120可以涵盖创建上传镜像、删除镜像、编辑镜像基本信息等功能,镜像服务组件可以将新上传的虚拟机镜像转移到新增的存储集群上。

块存储组件110(Cinder)承担着为分布式存储系统100提供块存储管理的功能。在基于镜像服务组件120实现可用存储集群的新增后,块存储组件110可以通过自身具备的块存储管理功能,在新增的可用存储集群上创建逻辑卷用于存储镜像或者创建虚拟机,由此实现基于新增的可用存储集群的扩容。

本发明实施例提供的分布式存储系统,包括用于新增可用存储集群的镜像服务组件,以及基于新增的可用存储集群进行扩容的块存储组件,由此构建的分布式存储系统可以在可用存储集群层面上进行扩容,相较于增加pool的扩容方式,扩容操作更加简单便捷,且不涉及对任何正在提供服务的可用存储集群的侵入操作,且后续扩充的可用存储集群不会影响原有的可用存储集群,维护难度低,有助于分布式存储系统应对更加丰富复杂的IO性能场景。

此外,在可用存储集群层面上进行扩容,可以更加方便地在扩容过程中为后端添加基于各种类型存储介质的各种性能可用存储集群,从而满足用户对于不同性能的需求。

考虑到目前基于OpenStack的分布式存储系统100中,部分组件例如块存储组件110(Cinder)、镜像服务组件120(Glance)均仅支持单个可用存储集群130的对接,基于上述实施例,本发明实施例为了实现多个可用存储集群130的同时对接,分别对块存储组件110和镜像服务组件120进行了针对性的优化:

镜像服务组件120基于镜像服务配置信息配置,块存储组件110基于块存储配置信息配置;

块存储配置信息和镜像服务配置信息均包括预设数量个可用存储集群130的信息,预设数量个可用存储集群包括新增的可用存储集群。

考虑到目前基于OpenStack的分布式存储系统100中,部分组件例如块存储组件110(Cinder)、镜像服务组件120(Glance)均仅支持单个可用存储集群130的对接,本发明实施例为了实现多个可用存储集群130的同时对接,分别对块存储组件110和镜像服务组件120进行了针对性的优化。

其中,针对块存储组件110,通过设置块存储配置信息来实现块存储组件110的优化配置。为了适应多个可用存储集群130的同时对接,块存储配置信息中包含有每个需要对接的可用存储集群130的信息,相应地,针对镜像服务组件120,通过设置镜像服务配置信息来实现镜像服务组件120的优化配置。为了适应多个可用存储集群130的同时对接,镜像服务配置信息中同样包含有每个需要对接的可用存储集群130的信息。此处,在扩容过程中,每个需要对接的可用存储集群130中必然包含了新增的可用存储集群130,可用存储集群130的信息可以包括可用存储集群130的标识,还可以包括可用存储集群130的配置文件地址等。

由此,块存储组件110和镜像服务组件120均可以基于对应的配置信息的优化配置,实现与每个可用存储集群130的对接,从而在分布式存储系统100运行过程中,块存储组件110可以基于每个可用存储集群130提供块存储服务,镜像服务组件120可以基于每个可用存储集群130实现虚拟机镜像的上传、删除、编辑、查找等功能。对应在需要扩容时,仅需要修改块存储配置信息和镜像服务配置信息中包含的可用存储集群130的信息,在其中增加新增的可用存储集群130的信息,即可保证块存储组件110与镜像服务组件120支持新增的可用存储集群130。

本发明实施例提供的分布式存储系统,通过配置信息配置分布式存储系统的块存储组件和镜像服务组件,使得分布式存储系统在可用存储集群层面上进行扩容时,仅需要修改配置信息中包含的可用存储集群的信息,扩容操作更加简单便捷。

基于上述实施例,分布式存储系统中,块存储配置信息和镜像服务配置信息均包括可用后端信息和可用后端配置信息;

其中,可用后端信息包括预设数量个可用存储集群的集群标识,可用后端配置信息包括预设数量个可用存储集群的配置信息。

此处,块存储配置信息cinder-api.conf和镜像服务配置信息glance-api.conf中包含的每个需要对接的可用存储集群的信息可以表示为可用后端信息和可用后端配置信息。需要说明的是,块存储组件的接口cinder-api能够兼容块存储配置信息cinder-api.conf的更新配置,镜像服务组件的接口glance-api能够兼容镜像服务配置信息glance-api.conf的更新配置。

其中,可用后端信息中存储有分布式存储系统中每个需要对接的可用存储集群的集群标识,集群标识为可用存储集群的身份标识,例如可以是可用存储集群的集群名称。

可用后端配置信息中存储中分布式存储系统中每个需要对接的可用存储集群的配置信息,此处的配置信息可以体现为配置文件地址的形式,配置文件地址即对应可用存储集群配置文件的存放地址,通过配置文件地址可以定位对应可用存储集群的配置文件,以便于获取对应可用存储集群的相关配置信息。

假设分布式存储系统中包含两个可用存储集群,集群名称分别为ceph01和ceph02。对应在镜像服务配置信息glance-api.conf中,可用后端信息可以表示为enabled_backends,可用后端信息可以体现为如下形式:

enabled_backends=glance_store_ceph01,glance_store_ceph02

其中,ceph01和ceph02分别为两个可用存储集群的集群标识,glance_store_ceph01的字段表示指向ceph01,glance_store_ceph02的字段表示指向ceph02。

可用后端配置信息可以体现为如下形式:

[glance_store_ceph01]

rbd_store_ceph_conf=/etc/ceph/ceph01/ceph.conf

[glance_store_ceph02]

rbd_store_ceph_conf=/etc/ceph/ceph02/ceph.conf

其中,段[glance_store_ceph01]和段[glance_store_ceph02]分别表示enabled_backends中后端backend ceph01和ceph02的相关配置,rbd_store_ceph_conf指定后端配置文件,/etc/ceph/ceph01/ceph.conf和/etc/ceph/ceph02/ceph.conf分别为可用存储集群ceph01和ceph02的配置文件地址。此外,分布式存储系统中每个对接的可用存储集群均需要创建{rbd_store_pool}。

对应在块存储配置信息cinder-api.conf中,可用后端信息可以表示为enabled_backends,可用后端信息可以体现为如下形式:

enabled_backends=ceph-cluster-A,ceph-cluster-B

其中,cluster-A和cluster-B分别为两个可用存储集群的集群标识,ceph-cluster-A的字段表示指向cluster-A,ceph-cluster-B的字段表示指向cluster-B,cluster-A和cluster-B与块存储配置信息的可用后端信息中的集群标识ceph01和ceph02一一对应。

可用后端配置信息可以体现为如下形式:

[ceph-cluster-A]

rbd_ceph_conf=/etc/ceph/ceph01/ceph.conf

[ceph-cluster-B]

rbd_ceph_conf=/etc/ceph/ceph02/ceph.conf

其中,段[ceph-cluster-A]和[ceph-cluster-B]分别表示enabled_backends中后端backend的相关配置。此外,各enabled_backends中可用存储集群的rbd_user必须相同。

基于上述任一实施例,分布式存储系统中,块存储配置信息和镜像服务配置信息还包括默认存储集群的集群标识,默认存储集群为预设数量个可用存储集群中的一个。

此处,考虑到传统的分布式存储系统中只对接一个可用存储集群,因此在针对分布式存储系统的读写指令或者计算指令中,通常不会直接指定可用存储集群。而本发明实施例中,分布式存储系统对接有预设数量个可用存储集群,如果接收到的指令中不存在指定的可用存储集群,则无法确定该指令需要对接的是预设数量个可用存储集群中的哪个可用存储集群。

为了支持指令中未指定可用存储集群的情况,本发明实施例在块存储配置信息和镜像服务配置信息中分别加入了默认存储集群的集群标识,用以在分布式存储系统同时对接了多个可用存储集群而指令中未指定可用存储集群时,将默认存储集群作为执行该指令需要对接的后端可用存储集群,以实现该指令的执行。此处,默认存储集群可以是分布式存储系统对接的预设数量个可用存储集群中的任意一个。

在镜像服务配置信息中,默认存储集群的设置可以体现为如下形式:

default_glance_type=glance_store_ceph01

其中,default_glance_type即默认存储集群,glance_store_ceph01字段表示默认存储集群指向ceph01,此处默认存储集群为ceph01和ceph02中的ceph01。

在块存储配置信息中,默认存储集群的设置可以体现为如下形式:

default_volume_type=ceph-cluster-A

其中,default_volume_type即默认存储集群,ceph-cluster-A字段表示默认存储集群指向cluster-A。

本发明实施例提供的分布式存储系统,通过在配置信息中设置默认存储集群,使得对接预设数量个可用存储集群的分布式存储系统可以适应未指定可用存储集群的指令。

块存储组件Cinder中的cinder volume组件在配置rbd后端创建volume时,一般情况下是通过Cinder用户进行操作;而openstack cinder volume组件本身无法自定义操作用户keyring,因此需要针对用户keyring进行配置。

针对这一问题,基于上述任一实施例,分布式存储系统中,新增的可用存储集群是基于原有的可用存储集群中导出用户密钥信息配置的。

分布式存储系统对接的预设数量个可用存储集群,可以是同时对接到分布式存储系统的,也可以是先后对接到分布式存储系统的,即在分布式存储系统的运行过程中通过修改对接的可用存储集群的数量以及块存储配置信息和镜像存储配置信息进行了扩容,在原先对接的可用存储集群的基础上,对接了新增的可用存储集群。

在对新增的可用存储集群进行配置时,可以直接从原有的可用存储集群中导出用户密钥信息,并将用户密钥信息导入到新增的可用存储集群中,由此使得分布式存储系统对接的所有可用存储集群,其用户密钥信息均是一致的,用户对于分布式存储系统对接的所有可用存储集群具备相同的权限。此处,用户密钥信息可以为用户keyring,每个可用存储集群中均配置了同keyring的rbd_store_user,使得每个可用存储集群均拥有相同的认证code。

此外,针对openstack cinder volume组件本身无法自定义操作用户keyring的问题,还可以通过关闭可用存储集群的ceph cluster client端的权限认证来解决。

基于上述任一实施例,图2为本发明实施例提供的虚拟机创建方法的流程示意图,如图2所示,虚拟机的创建方法应用于上述任一实施例提供的分布式存储系统中的块存储组件,该方法包括:

步骤210,接收虚拟机创建请求,虚拟机创建请求包括创建虚拟机所需目标镜像的镜像标识。

步骤220,基于镜像标识,从分布式存储系统的镜像服务组件中获取目标镜像的位置信息,位置信息包括存储所述目标镜像的可用存储集群的集群标识。

此处,虚拟机创建请求是用户发起的,可以是分布式存储系统中的管理组件Nova在接收到用户发起的虚拟机创建请求后,将虚拟机创建请求转发到块存储组件Cinder。虚拟机创建请求中通常包含创建虚拟机所需的目标镜像的镜像标识,此外虚拟机创建请求中还可以包含虚拟机的属性信息,例如卷类型的标识、创建虚拟机所需的系统盘大小等,本发明实施例对此不作具体限定。此处,目标镜像可以为创建虚拟机所需的操作系统信息,目标镜像的镜像标识即目标镜像的身份信息,可以是目标镜像的ID、目标镜像的描述信息或者其他可以标识目标镜像的参数。

块存储组件在接收到虚拟机创建请求后,可以根据虚拟机创建请求中包含的镜像标识,从分布式存储系统的镜像服务组件Glance中获取镜像标识对应的目标镜像的位置信息。块存储组件可以将虚拟机创建请求,或者虚拟机创建请求中包含的镜像标识发送到镜像服务组件,镜像服务组件通过虚拟机创建请求中包含的镜像标识确定目标镜像所在的位置信息,并将目标镜像所在的位置信息返回到块存储组件。

此处,考虑到分布式存储系统同时对接有预设数量个可用存储集群,相较于常规的镜像位置信息仅包含目标镜像在仅有的一个可用存储集群中的存储位置,本发明实施例中的位置信息包含了存储有目标镜像的可用存储集群的集群标识,以及目标镜像在该可用存储集群中的存储位置,以便于直接定位目标镜像。需要说明的是,此处存储有目标镜像的可用存储集群可以是一个,也可以是多个,对应在位置信息中携带的集群标识也可以是一个或者多个,本发明实施例对此不作具体限定。

步骤230,基于目标镜像的位置信息,从分布式存储系统中存储目标镜像的可用存储集群中提取目标镜像,并基于目标镜像创建虚拟机。

在得到目标镜像的位置信息后,块存储组件可以从位置信息所指示的可用存储集群中提取得到目标镜像,基于目标镜像创建虚拟机的逻辑卷,并在虚拟机的逻辑卷中创建虚拟机,并将虚拟机的逻辑卷返回到管理组件。

在基于目标镜像的位置信息提取目标镜像时,若位置信息中存在多个存储有目标镜像的可用存储集群的集群标识,可以从中选取任意一个提取目标镜像,也可以从中选取读取速度相对更快的可用存储集群提取目标镜像,本发明实施例对此不作具体限定。

本发明实施例提供的方法,通过在目标镜像的位置信息中携带存储目标镜像的可用存储集群的集群标识,从而快速准确地在分布式存储系统对接的预设数量个可用存储集群中定位到目标镜像,进而实现虚拟机的快速创建。

基于上述任一实施例,图3为本发明实施例提供的虚拟机创建方法的流程示意图,如图3所示,分布式存储系统中的镜像服务组件Glance、块存储组件Cinder和管理组件Nova均可以与分布式存储系统中的两个可用存储集群Cluster-A和Cluster-A对接,体现在图3中,与Cluster-A对接的连线为双箭头的点划线,与Cluster-B对接的连线为双箭头的虚线。

图3中,虚拟机创建方法包括如下步骤:

①用户通过客户端Client向分布式存储系统中的管理组件Nova发送虚拟机启动请求。

②管理组件Nova基于接收到的虚拟机启动请求,向块存储组件Cinder发送用于创建虚拟机的卷创建请求。此处的卷创建请求中包含有创建虚拟机所需目标镜像的镜像标识。

③块存储组件Cinder将卷创建请求中包含有创建虚拟机所需目标镜像的镜像标识发送到镜像服务组件Glance以获取镜像信息,此处的镜像信息包含目标镜像的位置信息。

④镜像服务组件Glance将目标镜像的镜像标识所对应的镜像信息返回到块存储组件Cinder。此处,镜像信息中包含目标镜像的位置信息,目标镜像的位置信息包含存储有目标镜像的可用存储集群的集群标识。

⑤块存储组件Cinder基于镜像信息中目标镜像的位置信息,从对应可用存储集群中提取目标镜像,并基于目标镜像创建虚拟机的逻辑卷,在虚拟机的逻辑卷中创建虚拟机,基于虚拟机的逻辑卷生成新建卷信息返回到管理组件Nova。

⑥管理组件Nova请求其他设备信息。

⑦管理组件Nova接收返回的其他设备信息。

⑧管理组件Nova结合其他设备信息和新建卷信息,向客户端client返回虚机状态。

基于上述任一实施例,图4为本发明实施例提供的镜像上传方法的流程示意图,如图4所示,虚拟机创建方法还包括:

步骤410,接收镜像服务组件发送的镜像上传请求,镜像上传请求中包含待上传镜像及其待存储集群标识;

步骤420,将待上传镜像存储在待存储集群标识对应的可用存储集群中。

在分布式存储系统配置阶段,管理员Admin可以将待上传镜像发送到镜像服务组件,再由镜像服务组件将待上传镜像及其相关的信息封装为镜像上传请求,并将镜像上传请求发送到块存储组件。

考虑到分布式存储系统可以同时对接预设数量个可用存储集群,本发明实施例在镜像上传请求中携带了预先设定好的待上传镜像需要上传存储的可用存储集群的集群标识,即待存储集群标识,以便于直接从分布式存储系统的预设数量个可用存储集群中定位到需要上传的可用存储集群。需要说明的是,此处的待存储集群标识可以是一个,也可以是多个,本发明实施例对此不作具体限定。另外,待存储集群标识也可以为空,待存储集群标识为空的情况下,可以将分布式存储系统的默认存储集群作为需要上传的可用存储集群。

此处,待存储集群标识可以通过指定参数的形式添加在镜像上传请求中,例如在镜像上传请求中设置参数property cluster,通过写入“property cluster=Cluster-B”的形式设置待存储集群为Cluster-B。若镜像上传请求中不存在参数property cluster,则可以自动添加镜像服务配置信息glance-api中的default_glance_type作为待存储集群。

块存储组件在接收到镜像上传请求后,基于镜像上传请求中包含的待存储位置信息,确定待上传镜像预先设定的存储位置,并将待上传镜像存储至对应存储位置。其中,块存储组件可以根据待存储位置信息中的待存储集群标识,定位用于存储待上传镜像的可用存储集群,进而将待上传镜像存储在该可用存储集群中。

本发明实施例提供的方法,通过在待存储位置信息中携带待存储集群标识,从而快速准确地在分布式存储系统对接的预设数量个可用存储集群中定位到待上传镜像需要存入的可用存储集群,进而实现镜像上传。

基于上述任一实施例,镜像上传功能glance image-create可以体现为如下形式:

其中,每个"items"中均包含镜像的属性"properties",每个镜像的属性“properties”中均包含有"cluster"用于表示镜像的待存储集群,例如字段"cluster":"ceph02","name":"demo"表示名称为demo的镜像的待存储集群为ceph02。相较于通常的镜像上传功能,以上示出的表现形式中在每个item中都添加了"cluster"属性,以标识镜像的待存储集群。"cluster"的属性值可以应用于cinder volume-create中指定type类型。

基于上述任一实施例,镜像标识包括对应镜像所处可用存储集群的集群标识。

针对分布式存储系统同时对接预设数量个可用存储集群的情况,为了方便后续的镜像定位和镜像选择,可以在设置镜像的镜像标识时,将镜像所处的可用存储集群的集群标识包含在镜像标识中,例如可以将集群标识作为镜像标识的前缀。

基于上述任一实施例,图5为本发明实施例提供的虚拟机数据卷扩容方法的流程示意图,如图5所示,虚拟机数据卷扩容方法应用于上述任一实施例提供的分布式存储系统中的块存储组件,该方法包括:

步骤510,接收数据卷扩容请求,数据卷扩容请求包括用于创建新增数据卷的可用存储集群的待创建集群标识。

步骤520,在待创建集群标识对应的可用存储集群上创建新增数据卷,并将所述新增数据卷挂载到所述数据卷扩容请求指示的虚拟机上。

此处,数据卷扩容请求是用户发起的,可以是分布式存储系统中的管理组件Nova在接收到用户发起的数据卷扩容请求后,将数据卷扩容请求转发到块存储组件Cinder。数据卷扩容请求中通常包含创建用于扩容的数据卷所需的存储后端的位置信息。

考虑到分布式存储系统可以同时对接多个可用存储集群,相较于常规的数据卷扩容请求中只包含用于扩容的数据卷在仅有的一个可用存储集群所需的存储后端位置,本发明实施例中的位置信息包含了用于扩容的数据卷的存储后端所在的可用存储集群的集群标识,即可创建集群标识,以便于块存储组件Cinder能够基于数据卷扩容请求从分布式存储系统对接的多个存储集群中直接定位到用于虚拟机数据卷扩容的可用存储集群。需要说明的是,此处用于创建新增数据卷的可用存储集群可以是一个,也可以是多个,对应在数据卷扩容请求中包含的待创建集群标识也可以是一个或者多个,本发明实施例对此不作具体限定。

在确定数据卷扩容请求中包含的待创建集群标识后,即可在待创建集群标识对应的可用存储集群上创建新增数据卷。此处,新增数据卷即为了实现虚拟机数据卷扩容所创建的数据卷。在完成新增数据卷的创建后,可以将新增数据卷挂载到数据卷扩容请求中指示的需要进行数据卷扩容的虚拟机上,从而实现虚拟机的数据卷扩容。

在新增数据卷创建结束后,可以是块存储组件Cinder将新增数据卷的信息发送到管理组件Nova,再由管理组件Nova将新增数据卷挂载到数据卷扩容请求所指示的虚拟机上,以实现虚拟机的数据卷扩容。

本发明实施例提供的方法,通过在数据卷扩容请求中携带用于创建新增数据卷的可用存储集群的待创建集群标识,从而快速准确地在分布式存储系统对接的预设数量个可用存储集群中定位到用于创建新增数据卷的可用存储集群,进而实现新增数据卷的快速创建和挂载,完成虚拟机的数据卷扩容。

在此过程中,块存储组件Cinder中的cinder-volume组件负责封装driver,不同的driver负责控制不同的可用存储集群,并提供卷相关操作,继而通过管理组件Nova中的nova-compute组件将卷挂载到实例instance中,期间nova-compute组件会获取cinder-volume组件创建的卷信息,由此得到的卷信息是实例instance可有效链接的。在虚拟操作系统模拟器qemu中,多网络卷进行挂载是相互独立的,因此保证了单个实例下不同属性的卷方案的可行性。

基于上述任一实施例,图6为本发明实施例提供的虚拟机创建装置的结构示意图,如图6所示,虚拟机创建装置应用于如上述任一实施例提供的分布式存储系统的块存储组件,该装置包括请求接收单元610、镜像定位单元620和创建单元630;

其中,请求接收单元610用于接收虚拟机创建请求,所述虚拟机创建请求包括创建虚拟机所需目标镜像的镜像标识;

镜像定位单元620用于基于所述镜像标识,从所述分布式存储系统的镜像服务组件中获取所述目标镜像的位置信息,所述位置信息包括存储所述目标镜像的可用存储集群的集群标识;

创建单元630用于基于所述目标镜像的位置信息,从所述分布式存储系统中存储所述目标镜像的可用存储集群中提取所述目标镜像,并基于所述目标镜像创建虚拟机。

本发明实施例提供的装置,通过在目标镜像的位置信息中携带存储目标镜像的可用存储集群的集群标识,从而快速准确地在分布式存储系统对接的预设数量个可用存储集群中定位到目标镜像,进而实现虚拟机的快速创建。

基于上述任一实施例,该装置还包括镜像上传单元,镜像上传单元用于:

接收所述镜像服务组件发送的镜像上传请求,所述镜像上传请求中包含待上传镜像及其待存储位置信息,所述待存储位置信息包括待存储集群标识;

将所述待上传镜像存储在所述待存储集群标识对应的可用存储集群中。

基于上述任一实施例,该装置中,所述镜像标识包括对应镜像所处可用存储集群的集群标识。

基于上述任一实施例,图7为本发明实施例提供的虚拟机数据卷扩容装置的结构示意图,如图7所示,虚拟机数据卷扩容装置应用于上述任一实施例提供的分布式存储系统的块存储组件,该装置包括扩容请求接收单元710和数据卷扩容单元720;

其中,扩容请求接收单元710用于接收数据卷扩容请求,所述数据卷扩容请求包括用于创建新增数据卷的可用存储集群的待创建集群标识;

数据卷扩容单元720用于在所述待创建集群标识对应的可用存储集群上创建新增数据卷,并将所述新增数据卷挂载到所述数据卷扩容请求指示的虚拟机上。

本发明实施例提供的装置,通过在数据卷扩容请求中携带用于创建新增数据卷的可用存储集群的待创建集群标识,从而快速准确地在分布式存储系统对接的预设数量个可用存储集群中定位到用于创建新增数据卷的可用存储集群,进而实现新增数据卷的快速创建和挂载,完成虚拟机的数据卷扩容。

图8为本发明实施例提供的电子设备的结构示意图,如图8所示,该电子设备可以包括:处理器(processor)810、通信接口(Communications Interface)820、存储器(memory)830和通信总线840,其中,处理器810,通信接口820,存储器830通过通信总线840完成相互间的通信。处理器810可以调用存储器830中的逻辑命令,以执行如下方法:

接收虚拟机创建请求,所述虚拟机创建请求包括创建虚拟机所需目标镜像的镜像标识;

基于所述镜像标识,从所述分布式存储系统的镜像服务组件中获取所述目标镜像的位置信息,所述位置信息包括存储所述目标镜像的可用存储集群的集群标识;

基于所述目标镜像的位置信息,从所述分布式存储系统中存储所述目标镜像的可用存储集群中提取所述目标镜像,并基于所述目标镜像创建虚拟机。

处理器810还可以调用存储器830中的逻辑命令,以执行如下方法:

接收数据卷扩容请求,所述数据卷扩容请求包括用于创建新增数据卷的可用存储集群的待创建集群标识;

在所述待创建集群标识对应的可用存储集群上创建新增数据卷,并将所述新增数据卷挂载到所述数据卷扩容请求指示的虚拟机上。

此外,上述的存储器830中的逻辑命令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干命令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的方法,例如包括:

接收虚拟机创建请求,所述虚拟机创建请求包括创建虚拟机所需目标镜像的镜像标识;

基于所述镜像标识,从所述分布式存储系统的镜像服务组件中获取所述目标镜像的位置信息,所述位置信息包括存储所述目标镜像的可用存储集群的集群标识;

基于所述目标镜像的位置信息,从所述分布式存储系统中存储所述目标镜像的可用存储集群中提取所述目标镜像,并基于所述目标镜像创建虚拟机。

本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的方法,例如包括:

接收数据卷扩容请求,所述数据卷扩容请求包括用于创建新增数据卷的可用存储集群的待创建集群标识;

在所述待创建集群标识对应的可用存储集群上创建新增数据卷,并将所述新增数据卷挂载到所述数据卷扩容请求指示的虚拟机上。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干命令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

相关技术
  • 分布式存储系统、虚拟机创建和数据卷扩容方法
  • 一种基于云平台的虚拟机数据卷的扩容方法及装置
技术分类

06120112151384