在云计算系统中创建系统盘的方法、装置、设备及存储介质转让专利

申请号 : CN201910600965.7

文献号 : CN112181278B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 沈晓静

申请人 : 中移(苏州)软件技术有限公司中国移动通信集团有限公司

摘要 :

本申请实施例公开了一种在云计算系统中创建系统盘的方法、装置、设备及存储介质,所述方法包括:接收针对云计算系统中待创建的系统盘的建卷请求,所述建卷请求包括所述系统盘的镜像文件的标识;根据所述标识查询所述云计算系统使用的块存储服务;当查询到所述块存储服务中存在与所述标识对应的镜像文件时,复制所述镜像文件到所述块存储服务的第一目标卷,如此,能够避免云计算系统的系统盘创建过程中网络带宽被大规模占用,进而提高创建系统盘的效率。

权利要求 :

1.一种在云计算系统中创建系统盘的方法,其特征在于,所述方法包括:接收针对云计算系统中待创建的系统盘的建卷请求,所述建卷请求包括所述系统盘的镜像文件的标识;

当接收到针对所述系统盘的至少两个建卷请求,且块存储服务中存储节点未存储有包括所述镜像文件的第二目标卷时,对创建所述镜像文件的标识的操作添加互斥锁,响应获得所述互斥锁的建卷请求,以建立所述镜像文件的第二目标卷;

当响应完成并释放所述互斥锁且缓存功能处于开启状态时,基于所述镜像文件的第二目标卷响应未获得所述互斥锁的建卷请求,复制所述第二目标卷中的镜像文件;

根据所述标识查询所述云计算系统使用的所述块存储服务;

当查询到所述块存储服务中存在与所述标识对应的镜像文件时,复制所述镜像文件到所述块存储服务的第一目标卷。

2.根据权利要求1所述的方法,其特征在于,所述当查询到所述块存储服务中存在与所述标识对应的镜像文件时,复制所述镜像文件到所述块存储服务的第一目标卷,包括:根据所述标识查询所述块存储服务中的存储节点中是否存在第二目标卷;

当所述块存储服务中的存储节点中存储有包括所述镜像文件的第二目标卷时,从所述第二目标卷复制所述镜像文件到所述存储节点的所述第一目标卷中。

3.根据权利要求2所述的方法,其特征在于,所述块存储服务的缓存功能具有开启状态或关闭状态;

所述根据所述标识查询所述块存储服务中的存储节点中是否存在第二目标卷,包括:当所述块存储服务的缓存功能处于所述开启状态时,查询所述块存储服务中是否存在与所述标识对应的镜像文件,以响应针对所述待创建的系统盘的建卷请求;

所述方法还包括:当所述块存储服务的缓存功能处于所述关闭状态时,直接从镜像文件服务下载与所述标识对应的镜像文件,并将所述镜像文件存储至所述块存储服务的第二目标卷。

4.根据权利要求1所述的方法,其特征在于,所述方法还包括:当查询到所述块存储服务中不存在与所述标识对应的镜像文件时,从镜像文件服务下载与所述标识对应的镜像文件;

将所下载的镜像文件存储至所述块存储服务中的第二目标卷。

5.根据权利要求4所述的方法,其特征在于,所述方法还包括:将所下载的镜像文件存储至所述块存储服务中的第二目标卷之前,将所述镜像文件的格式转换为所述云计算系统中虚拟机能够识别的原始格式。

6.根据权利要求1所述的方法,其特征在于,

所述标识包括在数据库中对应所述镜像文件而创建的入口,所述入口是当首次从镜像文件服务下载所述镜像文件时所创建的。

7.一种在云计算系统中创建系统盘的装置,其特征在于,所述装置包括:接收单元,用于接收针对云计算系统中待创建的系统盘的建卷请求,所述建卷请求包括所述系统盘的镜像文件的标识;

当接收到针对所述系统盘的至少两个建卷请求,且块存储服务中存储节点未存储有包括所述镜像文件的第二目标卷时,对创建所述镜像文件的标识的操作添加互斥锁,响应获得所述互斥锁的建卷请求,以建立所述镜像文件的第二目标卷;

当响应完成并释放所述互斥锁且缓存功能处于开启状态时,基于所述镜像文件的第二目标卷响应未获得所述互斥锁的建卷请求,复制所述第二目标卷中的镜像文件;

查询单元,用于根据所述标识查询所述云计算系统使用的所述块存储服务;

复制单元,用于当查询到所述块存储服务中存在与所述标识对应的镜像文件时,复制所述镜像文件到所述块存储服务的第一目标卷。

8.一种在云计算系统中创建系统盘的设备,其特征在于,所述设备至少包括:处理器和配置为存储可执行指令的存储介质,其中:所述处理器配置为执行存储的可执行指令;所述可执行指令配置为执行上述权利要求1至6任一项所提供的在云计算系统中创建系统盘的方法。

9.一种存储介质,其特征在于,所述存储介质中存储有计算机可执行指令,所述计算机可执行指令配置为执行上述权利要求1至6任一项所提供的在云计算系统中创建系统盘的方法。

说明书 :

在云计算系统中创建系统盘的方法、装置、设备及存储介质

技术领域

[0001] 本申请实施例涉及云计算技术领域,涉及但不限于一种在云计算系统中创建系统盘的方法、装置、设备及存储介质。

背景技术

[0002] 目前,在云计算系统创建系统盘时,通常是通过云计算系统使用的块存储服务来实现。块存储服务是一个资源管理系统服务,负责向虚拟机提供持久的块存储资源,通过对块存储服务所对应的多个存储节点进行封装,提供统一的驱动,不同存储节点的驱动进一步复用,从而实现了对不同块存储资源的管理。块存储服务的主要核心是对卷的管理,允许对卷、卷类型、卷的快照进行处理。
[0003] 相关技术中,在云计算系统创建系统盘时,用户下发创建系统盘命令,块存储服务和镜像文件服务进行交互,下载镜像文件至本地并缓存,然后直接将镜像文件写入目标盘。
[0004] 但是,在多次或者大量并发的创建相同镜像文件的系统盘时,块存储服务会向镜像文件服务多次发送请求以进行镜像文件下载,这样,会导致同一镜像文件被多次下载,网络带宽被大规模占用,从而极大的干扰了其他业务的正常运行,并且会降低创建系统盘的效率。

发明内容

[0005] 有鉴于此,本申请实施例提供一种在云计算系统中创建系统盘的方法、装置、设备及存储介质。
[0006] 本申请实施例的技术方案是这样实现的:
[0007] 第一方面,本申请实施例提供一种在云计算系统中创建系统盘的方法,所述方法包括:
[0008] 接收针对云计算系统中待创建的系统盘的建卷请求,所述建卷请求包括所述系统盘的镜像文件的标识;
[0009] 根据所述标识查询所述云计算系统使用的块存储服务;
[0010] 当查询到所述块存储服务中存在与所述标识对应的镜像文件时,复制所述镜像文件到所述块存储服务的第一目标卷。
[0011] 第二方面,本申请实施例提供一种在云计算系统中创建系统盘的装置,所述装置包括:
[0012] 接收单元,用于接收针对云计算系统中待创建的系统盘的建卷请求,所述建卷请求包括所述系统盘的镜像文件的标识;
[0013] 查询单元,用于根据所述标识查询所述云计算系统使用的块存储服务;
[0014] 复制单元,用于当查询到所述块存储服务中存在与所述标识对应的镜像文件时,复制所述镜像文件到所述块存储服务的第一目标卷。
[0015] 第三方面,本申请实施例提供一种在云计算系统中创建系统盘的设备,所述设备至少包括:处理器和配置为存储可执行指令的存储介质,其中:所述处理器配置为执行存储的可执行指令;
[0016] 所述可执行指令配置为执行上述在云计算系统中创建系统盘的方法。
[0017] 第四方面,本申请实施例提供一种存储介质,所述存储介质中存储有计算机可执行指令,所述计算机可执行指令配置为执行上述在云计算系统中创建系统盘的方法。
[0018] 本申请实施例提供的在云计算系统中创建系统盘的方法、装置、设备及存储介质,当查询到块存储服务中存在与标识对应的镜像文件时,复制所述镜像文件到所述块存储服务的第一目标卷,以响应针对所述待创建的系统盘的建卷请求。这样,由于查询到所述块存储服务中存在与所述标识对应的镜像文件,即表明在所述块存储服务中已经存储有所述镜像文件,此时直接复制该镜像文件到第一目标卷,而不会再次下载镜像文件,因此也就不会导致同一镜像文件被多次下载,从而能够避免网络带宽被大规模占用,进而提高创建系统盘的效率。

附图说明

[0019] 在附图(其不一定是按比例绘制的)中,相似的附图标记可在不同的视图中描述相似的部件。具有不同字母后缀的相似附图标记可表示相似部件的不同示例。附图以示例而非限制的方式大体示出了本文中所讨论的各个实施例。
[0020] 图1为相关技术中创建系统盘的方法的实现流程示意图;
[0021] 图2为本申请实施例所提供的一种在云计算系统中创建系统盘的方法的实现流程示意图;
[0022] 图3为本申请实施例所提供的另一种在云计算系统中创建系统盘的方法的实现流程示意图;
[0023] 图4为本申请实施例所提供的再一种在云计算系统中创建系统盘的方法的实现流程示意图;
[0024] 图5为本申请实施例所提供的又一种在云计算系统中创建系统盘的方法的实现流程示意图;
[0025] 图6A为本申请实施例所提供的在云计算系统中创建系统盘的方法的实现流程示意图;
[0026] 图6B为本申请实施例所增加的配置过程的实现流程示意图;
[0027] 图7为本申请实施例所提供的在云计算系统中创建系统盘的装置的组成结构示意图;
[0028] 图8为本申请实施例所提供的在云计算系统中创建系统盘的设备的组成结构示意图。

具体实施方式

[0029] 为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请的具体技术方案做进一步详细描述。以下实施例用于说明本申请,但不用来限制本申请的范围。
[0030] 在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本申请的说明,其本身没有特定的意义。因此,“模块”、“部件”或“单元”可以混合地使用。
[0031] 目前,在云计算系统创建系统盘时,通常是通过云计算系统(例如,OpenStack云计算管理系统,以下简称OpenStack系统)使用的块存储服务来实现。块存储服务是一个资源管理系统,负责向虚拟机提供持久的块存储资源(例如,系统盘的镜像文件),通过对块存储服务所对应的多个存储节点进行封装,提供统一的驱动,不同存储节点的驱动进一步复用,从而实现了对不同块存储资源的管理。块存储服务的主要核心是对卷的管理,允许对卷、卷类型、卷的快照进行处理。
[0032] 图1为相关技术中创建系统盘的方法的实现流程示意图,如图1所示,在云计算系统创建系统盘时,所述方法包括以下步骤:
[0033] 步骤S101,用户下发创建系统盘命令。
[0034] 步骤S102,块存储服务和镜像文件服务进行交互,下载镜像文件至本地并缓存。
[0035] 这里,当为云计算系统采用OpenStack实现时,对应的存储服务可以为OpenStack系统中的Cinder服务,所述镜像文件服务可以为Glance服务。所述Cinder服务与所述Glance服务进行交互,Cinder服务向Glance服务请求下载所述镜像文件至本地并缓存。
[0036] 步骤S103,判断所述镜像文件的格式是否为原始格式。
[0037] 这里,可以采用虚拟操作系统模拟器(Quick EMUlator,QEMU)的磁盘管理工具qemu‑img的查看镜像信息命令(记为Info命令),对缓存的所述镜像文件进行格式判断,如果所述镜像文件的格式为原始格式,例如,所述原始格式可以为RAW格式,则执行步骤S105;如果所述镜像文件的格式不是原始格式,则执行步骤S104。
[0038] 步骤S104,使用qemu‑img的文件格式转换命令(记为Convert命令)对镜像文件格式进行转换。
[0039] 这里,在转换镜像文件的格式之后,将转换格式后的镜像文件写入目标盘。
[0040] 步骤S105,直接将所述镜像文件写入所述存储节点的目标卷中。
[0041] 但是,相关技术中创建系统盘的方法,在大量并发创建相同镜像文件的系统盘时,Cinder服务会向Glance服务多次发送请求以进行镜像文件下载,这样,会导致同一镜像文件被多次下载,网络带宽被大规模占用,从而极大的干扰了其他业务的正常运行,并且会降低创建系统盘的效率。
[0042] 基于相关技术所存在的问题,本申请实施例提供一种在云计算系统中创建系统盘的方法,当需要基于相同镜像文件多次重复创建或者大量并发创建对应的系统盘时,对已经创建成功的系统盘的镜像文件直接克隆,创建镜像文件的缓存卷,达到在Cinder服务的缓存节点保存镜像文件的目的,之后创建该镜像文件的系统盘时,将直接克隆镜像文件,从而避免相同镜像文件的多次下载,极大提高建卷速度。
[0043] 在解释本申请实施例之前,对本申请的云计算系统进行介绍:
[0044] 所述云计算系统可以为OpenStack系统,所述OpenStack系统中包括三种存储服务,分别为:对象存储服务(例如,Swift服务)、虚拟机镜像存储和管理服务(例如,Glance服务)和块存储服务(例如,Cinder服务)。其中,所述Cinder服务提供相应的块存储,即虚拟出一块磁盘,可以挂载到相应的虚拟机上,不受文件系统等因素影响,对虚拟机来说,这个操作就像是新加了一块硬盘,可以完成对硬盘的任何操作,包括挂载、卸载、格式化、转换文件系统等操作。
[0045] OpenStack系统中的Cinder服务为虚拟机提供存储资源,所述存储资源为镜像文件,通过所述Cinder服务控制对所述OpenStack系统中的存储节点创建卷,在所创建的卷中可以存储镜像文件。其中,所述OpenStack系统中包括至少一个存储节点,每一存储节点中包括至少一个卷,每一个卷中存储有镜像文件。
[0046] Cinder服务是Openstack系统的关键组件之一,为Openstack系统提供块存储服务,支持光纤通道(Fibre Channel,FC)/互联网小型计算机系统接口(Internet Small Computer System Interface,ISCSI)/网络附属存储(Network Attached Storage,NAS)等存储驱动,可以工作于客户端/服务器的网络模式。Cinder服务是在虚拟机和具体存储之间引入“逻辑存储卷”的抽象,本身并不是一种存储技术,只是提供一个抽象的中间接口层,通过将不同存储类型的驱动接口进行封装,实现对不同存储的管理。
[0047] 图2为本申请实施例所提供的一种在云计算系统中创建系统盘的方法的实现流程示意图,如图2所示,所述方法包括以下步骤:
[0048] 步骤S201,接收针对云计算系统中待创建的系统盘的建卷请求。
[0049] 这里,所述建卷请求包括所述系统盘的镜像文件的标识。
[0050] 所述镜像文件是将特定的一系列文件按照一定的格式制作成的单一的文件,所述镜像文件可以被特定的软件识别并可直接刻录到光盘上,所述镜像文件中可以包括系统文件、引导文件和分区表信息等。通过所述镜像文件可以创建所述系统盘。
[0051] 步骤S202,根据所述标识查询所述云计算系统使用的块存储服务。
[0052] 这里,对于不同的至少两个云计算系统,所使用的块存储服务可以相同,也可以不同,且当云计算系统确定时,该云计算系统所使用的块存储服务并不是固定的。另外,对于同一云计算系统,所使用的块存储服务所管理的存储节点可以是确定的也可以是不确定的,但是存储节点中所存储的镜像文件与块存储服务可以具有一一对应关系,也就是说,当镜像文件确定时,控制将该镜像文件存储于存储节点中的卷中的块存储服务也就会被确定出。这样,可以通过与镜像文件对应的块存储服务来存储镜像文件,以创建系统盘。
[0053] 本实施例中,根据所述标识查询所述云计算系统使用的块存储服务,是指根据所述镜像文件的标识,确定管理所述待创建的系统盘的块存储服务,以实现基于该块存储服务来管理存储节点。
[0054] 步骤S203,当查询到所述块存储服务中存在与所述标识对应的镜像文件时,复制所述镜像文件到所述块存储服务的第一目标卷。
[0055] 这里,当查询到所述块存储服务中存在与所述标识对应的镜像文件时,是指查询到所述块存储服务中的存储节点中存在与所述标识对应的镜像文件,那么,在步骤S203之前,所述方法还包括以下步骤:
[0056] 步骤S2031,根据所述镜像文件的标识,在所述块存储服务中的存储节点中查询,是否存在与所述标识对应的镜像文件。
[0057] 本实施例中,查询所述块存储服务中的存储节点中是否存在与所述标识对应的镜像文件的目的是:确定在当前时刻之前是否已经在所述存储节点中存储了相同的镜像文件。当查询到存储有与所述标识对应的镜像文件时,表明在当前时刻之前已经在该存储节点中存储了相同的镜像文件,那么,直接复制所述镜像文件到块存储服务的第一目标卷,以响应针对所述待创建的系统盘的建卷请求。这样,块存储服务可以不用再次与镜像文件服务进行信息交互,以再次从镜像文件服务下载相同的镜像文件。
[0058] 所述第一目标卷是所述块存储服务中的存储节点中的一个存储单元,所述第一目标卷用于存储所述镜像文件。所述第一目标卷可以是所述存储节点中的一个固定的存储单元,也可以是所述存储节点中的一个随机确定的存储单元,也可以是根据所述镜像文件所确定的一个存储单元。
[0059] 本实施例中,当复制所述镜像文件到所述块存储服务的第一目标卷之后,即完成在所述云计算系统中创建系统盘的过程,因此,完成针对所述待创建的系统盘的建卷请求的响应。
[0060] 本申请实施例提供的在云计算系统中创建系统盘的方法,当查询到块存储服务中存在与标识对应的镜像文件时,复制所述镜像文件到所述块存储服务的第一目标卷,以响应针对所述待创建的系统盘的建卷请求。这样,由于查询到所述块存储服务中存在与所述标识对应的镜像文件,即表明在所述块存储服务中已经存储有相同的镜像文件,此时直接复制该镜像文件到第一目标卷,而不会再次下载镜像文件,因此也就不会导致同一镜像文件被多次下载,从而能够避免网络带宽被大规模占用,进而提高创建系统盘的效率。
[0061] 图3为本申请实施例所提供的另一种在云计算系统中创建系统盘的方法的实现流程示意图,如图3所示,所述方法包括以下步骤:
[0062] 步骤S301,接收针对云计算系统中待创建的系统盘的建卷请求。
[0063] 这里,所述建卷请求中包括所述系统盘的镜像文件的标识。
[0064] 步骤S302,根据所述标识查询所述云计算系统使用的块存储服务。
[0065] 需要说明的是,步骤S301和步骤S302与上述步骤S201和步骤S202相同,本实施例不再赘述。
[0066] 步骤S303,根据所述标识查询所述块存储服务中的存储节点中是否存在第二目标卷。
[0067] 这里,所述存储节点中包括至少一个缓存卷,所述第二目标卷为所述至少一个缓存卷中的任意一个缓存卷,所述第二目标卷中缓存有一个或多个镜像文件。
[0068] 需要说明的是,这里的第二目标卷与上述实施例中的第一目标卷可以相同也可以不同,所述第二目标卷也是所述块存储服务中的存储节点中的一个存储单元,所述第二目标卷用于存储镜像文件。
[0069] 本实施例中,根据所述标识查询所述块存储服务中的存储节点中是否存在第二目标卷,可以为根据所述标识查询所述块存储服务中存储节点中的缓存卷中所存储的镜像文件,如果查找到镜像文件,则将所查找到的镜像文件对应的缓存卷确定为所述第二目标卷。
[0070] 步骤S304,当所述块存储服务中的存储节点中存储有包括所述镜像文件的第二目标卷时,从所述第二目标卷复制所述镜像文件到所述存储节点的所述第一目标卷中。
[0071] 这里,当所述块存储服务中的存储节点中存储有包括所述镜像文件的第二目标卷时,表明在当前时刻之前已经在该存储节点中存储了相同的镜像文件;或者,表明在当前时刻之前已经在存储节点中存储了该镜像文件,并采用所述镜像文件建立了系统盘。那么,直接复制所述镜像文件到块存储服务的第一目标卷,以响应针对所述待创建的系统盘的建卷请求。这样,块存储服务可以不用再次与镜像文件服务进行信息交互,以再次从镜像文件服务下载相同的镜像文件。
[0072] 本申请实施例提供的在云计算系统中创建系统盘的方法,根据所述标识查询所述块存储服务中的存储节点中是否存在第二目标卷,当所述块存储服务中的存储节点中存储有包括所述镜像文件的第二目标卷时,从所述第二目标卷复制所述镜像文件到所述存储节点的所述第一目标卷中,以响应针对所述待创建的系统盘的建卷请求。这样,由于查询到所述块存储服务中的存储节点中存储有包括所述镜像文件的第二目标卷,即表明在所述块存储服务中的存储节点中已经存储有相同的镜像文件,此时直接复制该镜像文件到第一目标卷,而不会再次下载镜像文件,因此也就不会导致同一镜像文件被多次下载,从而能够避免网络带宽被大规模占用,进而提高创建系统盘的效率。
[0073] 图4为本申请实施例所提供的再一种在云计算系统中创建系统盘的方法的实现流程示意图,如图4所示,所述方法包括以下步骤:
[0074] 步骤S401,接收针对云计算系统中待创建的系统盘的建卷请求。
[0075] 这里,所述建卷请求中包括所述系统盘的镜像文件的标识。
[0076] 步骤S402,根据所述标识查询所述云计算系统使用的块存储服务。
[0077] 需要说明的是,步骤S401和步骤S402与上述步骤S301和步骤S302相同,本实施例不再赘述。
[0078] 步骤S403,当所述块存储服务的缓存功能处于所述开启状态时,查询所述块存储服务中是否存在与所述标识对应的镜像文件,以响应针对所述待创建的系统盘的建卷请求。
[0079] 这里,所述缓存功能是所述块存储服务的存储节点能够缓存镜像文件的功能。所述块存储服务的存储节点的所述缓存功能为可配置的缓存功能。
[0080] 本实施例中,所述块存储服务的不同存储节点的缓存功能可以被统一配置,或者,也可以对不同存储节点的缓存功能进行分别配置。其中,所述缓存功能可以被配置为开启状态或关闭状态。
[0081] 一方面,当不同存储节点的缓存功能被统一配置时,在接收到建卷请求之后,所述方法还包括以下步骤:
[0082] 步骤S4031,确定所述存储节点的缓存功能被统一配置的状态。
[0083] 这里,所述被统一配置的状态包括所述开启状态或所述关闭状态。
[0084] 对应地,步骤S403还可以通过以下步骤实现:
[0085] 步骤S4032,当所述存储节点被统一配置为开启状态时,查询所述块存储服务中是否存在与所述标识对应的镜像文件,以响应针对所述待创建的系统盘的建卷请求。
[0086] 另一方面,当不同存储节点的缓存功能被分别配置时,在接收到建卷请求之后,所述方法还包括以下步骤:
[0087] 步骤S4033,查询块存储服务中缓存功能被配置为开启状态的存储节点。
[0088] 对应地,步骤S403还可以通过以下步骤实现:
[0089] 步骤S4034,确定被配置为开启状态的存储节点中的缓存卷中是否存储有与所述标识对应的镜像文件。
[0090] 步骤S404,当所述块存储服务的缓存功能处于所述关闭状态时,直接从镜像文件服务下载与所述标识对应的镜像文件,并将所述镜像文件存储至所述块存储服务的第二目标卷。
[0091] 这里,由于所述块存储服务中的不同存储节点的状态可以被统一配置,或者也可以被分别配置,因此,步骤S404也可以包括以下两方面:
[0092] 一方面,当不同存储节点的缓存功能被统一配置为关闭状态时,直接从镜像文件服务下载与所述标识对应的镜像文件,并将所述镜像文件存储至所述块存储服务的第二目标卷。
[0093] 另一方面,当不同存储节点中的部分存储节点的缓存功能被分别配置为关闭状态时,查询存储所述标识对应的镜像文件的缓存节点是否被配置为关闭状态,如果该缓存节点也被配置为关闭状态,则直接从镜像文件服务下载与所述标识对应的镜像文件,并将所述镜像文件存储至该缓存节点的第二目标卷。
[0094] 本申请实施例提供的在云计算系统中创建系统盘的方法,所述块存储服务的不同存储节点的缓存功能可以被统一配置或者被分别配置,且可以被配置为开启状态或关闭状态,这样,只有当存储节点的缓存功能被配置为开启状态时,才会查询该存储节点中是否存在与所述标识对应的镜像文件,否则直接从镜像文件服务下载与所述标识对应的镜像文件。因此,通过配置缓存功能的状态,可以满足用户创建系统盘时的多种不同需求,为用户提供创建系统盘的多样性选择。
[0095] 图5为本申请实施例所提供的又一种在云计算系统中创建系统盘的方法的实现流程示意图,如图5所示,所述方法包括以下步骤:
[0096] 步骤S501,接收针对云计算系统中待创建的系统盘的建卷请求。
[0097] 这里,所述建卷请求中包括所述系统盘的镜像文件的标识;所述标识包括在数据库中对应所述镜像文件而创建的入口,所述入口是当首次从镜像文件服务下载所述镜像文件时所创建的。
[0098] 步骤S502,根据所述标识查询所述云计算系统使用的块存储服务。
[0099] 本实施例中,在查询到所述块存储服务之后,还可以通过以下方式创建入口:当查询到所述块存储服务中不存在与所述标识对应的镜像文件时,从镜像文件服务下载与所述标识对应的镜像文件之后,对该镜像文件创建入口。
[0100] 步骤S503,当查询到所述块存储服务中存在与所述标识对应的镜像文件时,复制所述镜像文件到所述块存储服务的第一目标卷,以响应针对所述待创建的系统盘的建卷请求。
[0101] 这里,当查询到存储有与所述标识对应的镜像文件时,表明在当前时刻之前已经在该存储节点中存储了相同的镜像文件,那么,直接复制所述镜像文件到块存储服务的第一目标卷,这样,块存储服务可以不用再次与镜像文件服务进行信息交互,以再次从镜像文件服务下载相同的镜像文件。
[0102] 步骤S504,当查询到所述块存储服务中不存在与所述标识对应的镜像文件时,从镜像文件服务下载与所述标识对应的镜像文件。
[0103] 这里,当查询到所述块存储服务中不存在与所述标识对应的镜像文件时,表明在当前时刻之前还没有在存储节点的目标卷中存储所述标识对应的镜像文件;或者,表明在当前时刻之前还没有对所述镜像文件建卷;或者,表明在当前时刻之前还没有采用所述镜像文件建立系统盘。那么,直接从镜像文件服务下载与所述标识对应的镜像文件。
[0104] 步骤S505,将所述镜像文件的格式转换为所述云计算系统中虚拟机能够识别的原始格式。
[0105] 这里,在实现过程中,可以先判断所述镜像文件的格式,本实施例中,可以采用Info命令对所述镜像文件的格式进行判断。如果所述镜像文件的格式为原始格式,则直接执行步骤S506;如果所述镜像文件的格式不是原始格式,则对所述镜像文件的格式进行转换,将所述镜像文件的格式转换成原始格式。
[0106] 本申请实施例中,所述原始格式是能够直接将云存储系统的存储节点分配给虚拟机使用的格式,且为虚拟机虚拟出来的磁盘块号与镜像文件的数据块的顺序一致。这样,可以使虚拟机具有良好的读写性能。例如,所述原始格式可以为RAW格式,所述RAW格式是基本的虚拟机格式。
[0107] 步骤S506,将所下载的镜像文件存储至所述块存储服务中的第二目标卷。
[0108] 这里,所述第二目标卷与所述第一目标卷可以是不同的卷,也可以是相同的卷。
[0109] 本申请实施例中,所述第二目标卷的容量可以小于等于所述第一目标卷的容量,其中,所述容量是指所述第二目标卷或者所述第一目标卷能够存储数据的大小。当然,所述第二目标卷的容量也可以大于所述第一目标卷的容量,本申请实施例不做限定。
[0110] 在其他实施例中,所述方法还包括:
[0111] 步骤S510,当接收到针对所述系统盘的至少两个建卷请求,且所述块存储服务中的存储节点未存储有包括所述镜像文件的第二目标卷时,响应所述至少两个建卷请求中首次接收的建卷请求,并对其余的建卷请求进行锁定。
[0112] 这里,所述至少两个建卷请求包括以下两种情况:
[0113] 情况一:同时接收到的至少两个建卷请求,且该至少两个建卷请求均请求在相同存储节点中使用相同镜像文件创建系统盘。
[0114] 情况二:先后接收的建卷请求,即首次接收的建卷请求还没有响应完成时,后续的建卷请求已经被接收到,以两个建卷请求为例,第一个建卷请求还没有响应完成时,第二个建卷请求已经被接收到,且该先后接收的建卷请求均请求在相同存储节点中使用相同镜像文件创建系统盘。
[0115] 对于情况二,也就是说,在接收到第一个建卷请求之后,对第一个建卷请求进行响应,执行以下响应步骤:查询第一个建卷请求中的标识对应的镜像文件是否被存储于存储服务中的存储节点中,如果是,则复制该镜像文件到第一目标卷,如果否,则从镜像文件服务下载与所述标识对应的镜像文件,并将下载的镜像文件存储至第二目标卷。但是,在执行上述响应步骤的过程中,还没有执行完上述响应步骤时,就接收到第二个建卷请求。
[0116] 本实施例中,当接收到针对所述系统盘的并发的建卷请求,且所述块存储服务中的存储节点未存储有包括所述镜像文件的第二目标卷时,表明所述并发的建卷请求是关于所述镜像文件的首次建卷请求,此时,仅响应所述并发的建卷请求中首次接收的建卷请求,并对其余的建卷请求进行锁定,以屏蔽响应锁定的建卷请求。
[0117] 需要说明的是,本实施例中执行锁定的对象是建卷请求,即对其余的建卷请求进行锁定。
[0118] 步骤S511,当完成响应所述首次接收的建卷请求时,释放所述锁定的建卷请求以进行响应。
[0119] 需要说明的是,本实施例中,由于已经对首次接收的建卷请求进行响应,因此,在缓存功能处于开启状态的情况下,对于所述锁定的建卷请求,在响应时则不需要再次下载所述镜像文件,只需要从第二目标卷中拷贝所述镜像文件。
[0120] 在其他实施例中,所述方法还包括:
[0121] 步骤S512,当接收到针对所述系统盘的至少两个建卷请求,且所述块存储服务中存储节点未存储有包括所述镜像文件的第二目标卷时,对创建所述镜像文件的标识的操作添加互斥锁,响应获得所述互斥锁的建卷请求,以建立所述镜像文件的第二目标卷。
[0122] 这里,通过对创建所述镜像文件的标识的操作添加互斥锁,以使得获得所述互斥锁的建卷请求的优先级最高,未获得所述互斥锁的建卷请求的优先级相同。这样,响应获取所述互斥锁的建卷请求,可以为根据所述至少两个建卷请求的优先级,响应优先级最高的建卷请求。
[0123] 需要说明的是,当响应获得所述互斥锁的建卷请求时,其他未获得所述互斥锁的建卷请求处于等待状态。
[0124] 本实施例中,添加互斥锁的对象是创建所述镜像文件的标识的操作,即对创建所述镜像文件的标识的操作添加互斥锁。所述创建所述镜像文件的标识的操作为对所述镜像文件创建入口的操作。
[0125] 本实施例中,所述至少两个建卷请求也包括上述两种情况。
[0126] 对于上述情况一,同时接收到的至少两个建卷请求,且该至少两个建卷请求均请求在相同存储节点中使用相同镜像文件创建系统盘时,则可以随机为所述至少两个建卷请求中的任意一个建卷请求对应的创建镜像文件的标识的操作添加互斥锁,即所述至少两个建卷请求争抢所述互斥锁的锁资源,如果某一建卷请求争抢到所述锁资源,则为该建卷请求对应的创建镜像文件的标识的操作添加互斥锁。
[0127] 对于上述情况二,先后接收的建卷请求,即首次接收的建卷请求还没有响应完成时,后续的建卷请求已经被接收到时,则可以为首次接收到的建卷请求对应的创建镜像文件的标识的操作添加互斥锁。
[0128] 步骤S513,当响应完成并释放所述互斥锁时,基于所述镜像文件的第二目标卷响应未获得所述互斥锁的建卷请求。
[0129] 这里,在响应完成获取所述互斥锁的建卷请求之后,释放所述互斥锁,此时,由于未获得所述互斥锁的建卷请求的优先级均相同,所以未获得所述互斥锁的建卷请求可以被同时响应,并且,由于已经对获取所述互斥锁的建卷请求进行响应,那么在存储节点中已经存在所述镜像文件的第二目标卷,因此,可以基于所述镜像文件的第二目标卷响应未获得所述互斥锁的建卷请求,即在响应未获得所述互斥锁的建卷请求时,可以直接复制所述第二目标卷中的镜像文件。
[0130] 本实施例中,由于已经对获得所述互斥锁的建卷请求进行响应,因此,在缓存功能处于开启状态的情况下,对于其余的建卷请求,在响应时则不需要再次下载所述镜像文件,只需要从第二目标卷中复制所述镜像文件。并且,由于只对对创建所述镜像文件的标识的操作添加互斥锁,即只需要添加一次锁资源,这样,可以最大程度的减小添加互斥锁的范围。
[0131] 基于以上实施例,本申请实施例的创建系统盘的方法还可以包括以下步骤:
[0132] 步骤S514,当查询所述块存储服务中是否存在与所述标识对应的镜像文件时,发送第一通知消息;当检测到删除所述第二目标卷时,发送第二通知消息。
[0133] 这里,所述第一通知消息包括以下至少之一:用于通知存在与所述标识对应的镜像文件的通知消息、用于通知不存与所述标识对应的镜像文件的通知消息。
[0134] 本申请实施例提供的在云计算系统中创建系统盘的方法,由于在首次创建所述镜像文件的系统盘时,同时保存所述镜像文件对应的第二目标卷,这样,在后续接收到关于相同镜像文件的建卷请求时,可以直接拷贝该第二目标卷中的镜像文件,从而不用再次下载镜像文件,因此也就不会导致同一镜像文件被多次下载,能够避免网络带宽被大规模占用,进而后续提高创建系统盘的效率。并且,对于并发的建卷请求,通过对建卷请求加锁,能够保证并发建卷请求的有序响应,避免并发建卷请求同时响应时会多次下载镜像文件的情况。
[0135] 基于以上实施例,本申请实施例再提供一种在云计算系统中创建系统盘的方法,所述方法在多次创建相同镜像文件的系统盘的场景下,对第一次创建成功的系统盘进行克隆,创建镜像文件的缓存卷(对应上述第二目标卷),达到在Cinder服务保存镜像文件的目的,之后创建该镜像文件的系统盘时,将直接克隆镜像文件的缓存卷,从而避免相同镜像文件的多次下载,极大提高建卷速度。
[0136] 图6A为本申请实施例所提供的在云计算系统中创建系统盘的方法的实现流程示意图,在已经存在镜像文件的缓存的情况下,将不需要从Glance服务下载镜像,极大地减少了网络流量,加快了建卷速度。如图6A所示,所述方法包括以下步骤:
[0137] 步骤S601,用户下发创建系统盘命令。
[0138] 这里,所述创建系统盘命令相当于上述实施例中的建卷请求,所述创建系统盘命令中包括所述系统盘的镜像文件的标识。
[0139] 步骤S602,根据所述镜像文件的标识,判断是否存在对应镜像文件的缓存卷。
[0140] 这里,如果判断结果为是,则执行步骤S604,否则,执行步骤S603。
[0141] 步骤S603,按照常规方式建卷,建卷成功后,创建隐藏数据库(Cache Database,Cache Db)和缓存卷。
[0142] 这里,所述Cache Db是存储节点中用于保存所述缓存卷的数据库。所述缓存卷中存储有所述镜像文件。
[0143] 步骤S604,克隆所述缓存卷,并将克隆所述缓存卷得到的镜像文件存储至目标卷中。
[0144] 本申请实施例提供的在云计算系统中创建系统盘的方法还包括以下步骤,且以下步骤是本申请需要增加的配置,在常规建卷行为中不需要增加对应配置。图6B为本申请实施例所增加的配置过程的实现流程示意图,如图6B所示,所述配置过程包括以下步骤:
[0145] 步骤S611,配置内部租户。
[0146] 本申请实施例提供的方法需要首先配置内部租户,所述内部租户用以保存所有的缓存卷,且保证缓存卷不对外可见。并且,需要注意的是,内部租户所配置的租户和用户无特殊权限,可以使用其他的租户和用户。
[0147] 举例来说,在本申请一实施例中,内部租户的配置为cinder_internal_tenant_project_id和cinder_internal_tenant_user_id,且均置于[DEFAULT]标签下,分别表示租户名和用户名。
[0148] 步骤S612,配置存储后端缓存功能的状态。
[0149] Cinder服务中可使用的存储后端(即上述存储节点)配置于enabled_backends中,各存储后端以逗号隔开,同时通过各存储后端对应的标签设置具体配置。用户可自行决定各存储后端是否开启缓存功能,通过在各存储后端对应的标签中增加image_volume_cache_enabled为True或者False,来表示开启或者关闭缓存功能,开启缓存功能的存储后端将以本方案流程创建目标卷,否则将以常规流程创建目标卷。
[0150] 步骤S613:配置创建目标卷的流程。
[0151] 在建卷行为中,常规建卷流程直接从Glance服务下载指定镜像文件至本地,如果镜像文件为qcow2格式,则先将其转换为RAW格式,并将镜像文件写至目标卷。
[0152] 对比常规建卷流程,本申请实施例方案的改进为:在第一次建卷行为中,首先在数据库中为指定镜像文件创建入口(entry),其中,所述数据库是指用于存储所下载镜像文件的数据库,同时将克隆目标卷,克隆成功的新卷作为缓存卷保存于内部租户中;在第二次及以后的使用相同镜像文件创建目标卷的行为中,先查找指定镜像文件是否有入口,有入口表示该镜像在Cinder上保存了缓存卷,则直接克隆缓存卷;否则表示之前的创建缓存卷的行为失败,则将重复第一次创建目标卷的流程。
[0153] 步骤S614:配置并发创建目标卷时的流程。
[0154] 在开启存储后端缓存功能的前提下,在使用相同镜像文件并发创建目标卷时,由于入口的创建时间接近,因此并发卷中的任何一个卷创建过程中查找入口均失败,该卷将创建新的入口,导致相同镜像文件对应多个入口。为此,本申请实施例的方案采取了在创建Cache entry时,进行加锁(例如,tooz加锁)的解决方案,并且只针对创建镜像文件的入口行为加锁,从而最大程度地减少了加锁的范围。
[0155] 在进行加锁的过程中,可以通过prepare_image_cache_entry函数,设置互斥锁为:@coordination.synchronized({image_id}'),互斥锁的作用相当于把并发的行为转换为顺序执行。当并发建卷时(即接收到并发的建卷请求时),各建卷请求均将执行prepare_image_cache_entry函数的代码流程,只有争抢到互斥锁的锁资源的建卷请求才可正常执行,其他没获取到互斥锁的锁资源的建卷请求将处于等待状态,需要说明的是,是否争抢到锁资源是由速度快慢决定的,即使是并发行为,但是也会有速度上的少许差异。第一次获取锁资源的建卷请求首先查找入口,其中,查找入口可以由image_volume_cache.get_entry函数实现,因为此建卷请求为第一次获取锁资源的建卷请求,故查找入口失败,该建卷请求将创建入口,并克隆目标卷,克隆成功的卷作为缓存卷保存于内部租户中。当所述锁资源被释放后,之后的建卷请求会继续争抢锁资源,但由于第一次请求已成功创建入口,这些建卷请求都将查找入口成功,并直接克隆缓存卷,将克隆成功的卷作为目标卷使用。
[0156] 步骤S615:配置消息通知机制。
[0157] 传统建卷行为不设置消息通知机制,本申请实施例中,为方便用户查找使用缓存功能并创建目标卷的整体流程,追踪缓存卷的行为,本申请实施例设置消息通知机制,其中,所述消息通知机制包括以下至少之一:Image Volume Cache.hit:表明找到cache entry;Image Volume Cache.miss:表明未找到cache entry;Image Volume Cache.evict:表明删除cache entry,用于删除缓存卷。
[0158] 本申请实施例提供的在云计算系统中创建系统盘的方法,通过在Cinder服务预先创建镜像文件的缓存卷,当用户使用对应镜像文件建卷时,将直接克隆该缓存卷。其中,在第一次使用镜像文件创建系统盘时,在按照常规流程创建系统盘后,同时创建镜像文件的入口和镜像文件的缓存卷;并且,为解决并发建卷时,多次创建镜像文件的缓存卷的问题,本申请采用加锁的解决方案,对创建镜像文件的入口的行为加锁,并且加锁只在创建镜像文件的入口时进行,最大限度减小加锁范围。本实施例的方法,能够在Cinder服务Z中保存指定镜像文件的缓存卷,在此前提下,创建系统盘将直接克隆对应的缓存卷,极大缩短建卷速度;并且能够在并发建卷的情况下,避免创建相同镜像文件的多个入口和缓存卷。
[0159] 基于前述的实施例,本申请实施例提供一种在云计算系统中创建系统盘的装置,该装置包括所包括的各模块、以及各模块所包括的各部件,可以通过数据检测设备中的处理器来实现;当然也可通过逻辑电路实现;在实施的过程中,处理器可以为中央处理器(CPU)、微处理器(MPU)、数字信号处理器(DSP)或现场可编程门阵列(FPGA)等。
[0160] 图7为本申请实施例所提供的在云计算系统中创建系统盘的装置的组成结构示意图,如图7所示,该在云计算系统中创建系统盘的装置700包括:
[0161] 接收单元701,用于接收针对云计算系统中待创建的系统盘的建卷请求,所述建卷请求包括所述系统盘的镜像文件的标识;
[0162] 查询单元702,用于根据所述标识查询所述云计算系统使用的块存储服务;
[0163] 复制单元703,用于当查询到所述块存储服务中存在与所述标识对应的镜像文件时,复制所述镜像文件到所述块存储服务的第一目标卷。
[0164] 在其他实施例中,所述复制单元包括:
[0165] 查询模块,用于根据所述标识查询所述块存储服务中的存储节点中是否存在第二目标卷;
[0166] 复制模块,用于当所述块存储服务中的存储节点中存储有包括所述镜像文件的第二目标卷时,从所述第二目标卷复制所述镜像文件到所述存储节点的所述第一目标卷中。
[0167] 在其他实施例中,所述块存储服务的缓存功能具有开启状态或关闭状态;
[0168] 所述查询模块包括:查询子模块,用于当所述块存储服务的缓存功能处于所述开启状态时,查询所述块存储服务中是否存在与所述标识对应的镜像文件,以响应针对所述待创建的系统盘的建卷请求;
[0169] 所述装置还包括:第一处理单元,用于当所述块存储服务的缓存功能处于所述关闭状态时,直接从镜像文件服务下载与所述标识对应的镜像文件,并将所述镜像文件存储至所述块存储服务的第二目标卷。
[0170] 在其他实施例中,所述装置还包括:
[0171] 下载单元,用于当查询到所述块存储服务中不存在与所述标识对应的镜像文件时,从镜像文件服务下载与所述标识对应的镜像文件;
[0172] 第二处理单元,用于将所下载的镜像文件存储至所述块存储服务中的第二目标卷。
[0173] 在其他实施例中,所述装置还包括:转换单元,用于将所述镜像文件的格式转换为所述云计算系统中虚拟机能够识别的原始格式。
[0174] 在其他实施例中,所述标识包括在数据库中对应所述镜像文件而创建的入口,所述入口是当首次从镜像文件服务下载所述镜像文件时所创建的。
[0175] 在其他实施例中,所述装置还包括:
[0176] 第三处理单元,用于当接收到针对所述系统盘的至少两个建卷请求,且所述块存储服务中存储节点未存储有包括所述镜像文件的第二目标卷时,对创建所述镜像文件的标识的操作添加互斥锁,响应获得所述互斥锁的建卷请求,以建立所述镜像文件的第二目标卷;
[0177] 释放单元,用于当响应完成并释放所述互斥锁时,基于所述镜像文件的缓存卷响应未获得所述互斥锁的建卷请求。
[0178] 需要说明的是,本申请实施例中,如果以软件功能模块的形式实现上述的在云计算系统中创建系统盘的方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台终端执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本申请实施例不限制于任何特定的硬件和软件结合。
[0179] 对应的,本申请实施例提供一种在云计算系统中创建系统盘的设备,图8为本申请实施例所提供的在云计算系统中创建系统盘的设备的组成结构示意图,如图8所示,所述在云计算系统中创建系统盘的设备800至少包括:处理器801、通信接口802和配置为存储可执行指令的存储介质803,其中:处理器801通常控制所述在云计算系统中创建系统盘的设备800的总体操作。
[0180] 通信接口802可以使在云计算系统中创建系统盘的设备通过网络与其他终端或服务器通信。
[0181] 存储介质803配置为存储由处理器801可执行的指令和应用,还可以缓存待处理器801和在云计算系统中创建系统盘的设备800中各模块待处理或已处理的数据,可以通过闪存(FLASH)或随机访问存储器(Random Access Memory,RAM)实现。
[0182] 应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
[0183] 需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。
[0184] 上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器、磁碟或者光盘等各种可以存储程序代码的介质。或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台终端执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、磁碟或者光盘等各种可以存储程序代码的介质。
[0185] 以上所述,仅为本申请的实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。