CN106155759A - 虚拟机批量创建方法及装置 - Google Patents
虚拟机批量创建方法及装置 Download PDFInfo
- Publication number
- CN106155759A CN106155759A CN201510136920.0A CN201510136920A CN106155759A CN 106155759 A CN106155759 A CN 106155759A CN 201510136920 A CN201510136920 A CN 201510136920A CN 106155759 A CN106155759 A CN 106155759A
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- virtual
- script
- robot arm
- cloud platform
- 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.)
- Granted
Links
Landscapes
- Stored Programmes (AREA)
Abstract
本发明实施例提供一种虚拟机批量创建方法及装置。本发明实施例在虚拟机组模板中已包含中间镜像的前提下,云平台在批量创建虚拟机时可不用再执行或不再重复执行公共脚本,加快虚拟机的创建速度,从而提高批量创建虚拟机的效率,且虚拟机组容量的弹性扩展效率高。
Description
技术领域
本发明实施例涉及虚拟机技术,尤其涉及一种虚拟机批量创建方法及装置。
背景技术
云计算是一种服务的交付和消费模式。云服务供应商(Cloud ServiceProvider,简称:CSP)将大量计算资源用网络连接起来并进行统一的管理、分配和调度,构成一个巨大的计算资源池向用户提供服务,其中,云计算资源包括网络,服务器,存储,应用软件以及服务等;提供资源的网络即称为“云”。
对用户而言,云计算资源可无限扩展,具有按需索取、按使用付费等高效灵活的特点。一般来说,云服务大致可分为三个层次:即基础设施即服务(Infrastructure as a service,简称:IaaS,也称为I层)、平台即服务(Platformas a service,简称:PaaS,也称为P层)和软件即服务(Software as a service,简称:SaaS,也称为S层)。目前,业界最多的为I层供应商,如亚马逊网络服务(Amazon Web Services,简称:AWS)平台。I层主要为用户提供计算、存储和网络传输等基础设施能力。CSP通常以虚拟机的方式为用户提供I层服务。
在实际的应用中,需要批量创建一组类似的虚拟机,如网络(Web)服务器采用集群的方式创建多个实例。这些虚拟机上的操作系统、软件等相同或者类似。通常在启动虚拟机之后,用户还希望能够自动执行一些指令,比如联网下载软件安装,配置环境变量、程序设置,注册到负载均衡服务器,连接到数据库等指令。这些指令通常以脚本的形式存在,虚拟机启动操作系统之后自动执行脚本内的指令。
一种比较通用的虚拟机批量创建方法是单独创建每一台虚拟机,加载模板中指定的镜像启动虚拟机;每台虚拟机启动之后下载用户数据(UserData)脚本并执行UserData脚本内的指令。当模板中虚拟机组的某些属性更新时,整个虚拟机组需要重新创建。为此,需要重新创建每一台虚拟机并再次执行所有UserData脚本内的指令。
上述虚拟机批量创建方法不仅耗时,而且多台虚拟机下载对云平台的系统带宽资源占用也较高,批量创建时效率较低。另外,当弹性虚拟机组在后续运行过程中需要新建虚拟机时,新建的虚拟机仍然需要重新完整执行所有UserData脚本内的指令,弹性扩展效率低。
发明内容
本发明实施例提供一种虚拟机批量创建方法及装置,以解决现有技术中虚拟机批量创建方法效率低及弹性扩展效率差的问题。
第一方面,本发明实施例提供一种虚拟机批量创建方法,包括:
云平台接收用于创建虚拟机的指令,所述指令包括要创建的所述虚拟机所采用的虚拟机组模板;
所述云平台解析所述虚拟机组模板,获取虚拟机组的属性信息,所述属性信息包括所述虚拟机组的标识信息、创建所述虚拟机组内的虚拟机的硬件配置、所述虚拟机组的容量M和要加载的初始镜像、公共脚本及差异脚本,所述公共脚本为在所述虚拟机组内所有虚拟机上执行效果相同的脚本,所述差异脚本为在所述虚拟机组内所有虚拟机上执行效果不同或必须在所述虚拟机上运行才可以达到效果的脚本,所述M为自然数;
若在所述虚拟机组模板中,所述云平台查询到所述虚拟机组的标识信息对应的中间镜像,根据所述虚拟机组内的虚拟机的硬件配置,创建M台第一虚拟机,所述中间镜像通过为所述第一虚拟机加载所述初始镜像后执行所述公共脚本得到;
所述云平台为每一台所述第一虚拟机加载所述中间镜像,得到M台第二虚拟机;
所述云平台控制每一台所述第二虚拟机执行所述差异脚本,获得M台所述虚拟机。
根据第一方面,在第一方面的第一种可能的实现方式中,所述方法还包括:
若在所述虚拟机组模板中,所述云平台未查询到所述虚拟机组的标识信息对应的所述中间镜像,则根据所述虚拟机组内的虚拟机的硬件配置,创建一台所述第一虚拟机;
所述云平台为所述第一虚拟机加载所述初始镜像,得到第三虚拟机;
所述云平台控制所述第三虚拟机执行所述公共脚本,得到一台所述第二虚拟机,并为所述第二虚拟机创建镜像,将所述镜像作为所述中间镜像保存至所述虚拟机组模板中;
所述云平台根据所述虚拟机组内的虚拟机的硬件配置,创建M-1台所述第一虚拟机,所述M为大于1的正整数;
所述云平台为所述M-1台第一虚拟机加载所述中间镜像,得到M-1台所述第二虚拟机;
所述云平台控制每一台所述第二虚拟机执行所述差异脚本,获得M台所述虚拟机。
根据第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述云平台控制所述第三虚拟机执行所述公共脚本之前,所述方法还包括:
所述云平台发送第一地址给所述第三虚拟机,所述第一地址为所述公共脚本在所述云平台的存储位置。
根据第一方面的第一种或第二种可能的实现方式,在第一方面的第三种可能的实现方式中,所述云平台控制所述第三虚拟机执行所述公共脚本,得到一台所述第二虚拟机之后,所述方法还包括:
所述云平台接收所述第二虚拟机发送的第一响应,所述第一响应用于指示已完成所述公共脚本的执行。
根据第一方面、第一方面的第一种至第三种可能的实现方式中任意一种,在第一方面的第四种可能的实现方式中,所述云平台控制所述第二虚拟机执行所述差异脚本之前,所述方法还包括:
所述云平台发送第二地址给所述第二虚拟机,所述第二地址为所述差异脚本在所述云平台的存储位置。
根据第一方面、第一方面的第一种至第四种可能的实现方式中任意一种,在第一方面的第五种可能的实现方式中,所述云平台控制所述第二虚拟机执行所述差异脚本,获得M台所述虚拟机之后,所述方法还包括:
所述云平台接收所述虚拟机发送的第二响应,所述第二响应用于指示已完成所述差异脚本的执行。
第二方面,本发明实施例提供一种虚拟机批量创建方法,包括:
云平台接收用于创建虚拟机的指令,所述指令包括要创建的所述虚拟机所采用的虚拟机组模板的标识信息和要创建的所述虚拟机的数量N,所述N为自然数;
所述云平台根据所述虚拟机组模板的标识信息,获取虚拟机组的属性信息,所述属性信息包括创建所述虚拟机组内的虚拟机的硬件配置和要加载的中间镜像及差异脚本,所述中间镜像为对根据所述硬件配置创建的第一虚拟机加载所述初始镜像后执行公共脚本得到,所述公共脚本为在所述虚拟机组内所有虚拟机上执行效果相同的脚本,所述差异脚本为在所述虚拟机组内所有虚拟机上执行效果不同或必须在所述虚拟机上运行才可以达到效果的脚本;
所述云平台根据所述虚拟机组内的虚拟机的硬件配置,创建N台所述第一虚拟机;
所述云平台为每一台所述第一虚拟机加载所述中间镜像,得到N台第二虚拟机;
所述云平台控制每一台所述第二虚拟机执行所述差异脚本,获得N台所述虚拟机。
根据第二方面,在第二方面的第一种可能的实现方式中,所述云平台控制所述第二虚拟机执行所述差异脚本之前,所述方法还包括:
所述云平台发送地址给所述第二虚拟机,所述地址为所述差异脚本在所述云平台的存储位置。
根据第二方面或第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述云平台控制所述第二虚拟机执行所述差异脚本,获得N台所述虚拟机之后,所述方法还包括:
所述云平台接收所述虚拟机发送的响应,所述响应用于指示已完成所述差异脚本的执行。
第三方面,本发明实施例提供一种虚拟机批量创建装置,包括:
资源部署模块,用于接收用于创建虚拟机的指令,所述指令包括要创建的所述虚拟机所采用的虚拟机组模板;解析所述虚拟机组模板,获取虚拟机组的属性信息,所述属性信息包括所述虚拟机组的标识信息、创建所述虚拟机组内的虚拟机的硬件配置、所述虚拟机组的容量M和要加载的初始镜像、公共脚本及差异脚本,所述公共脚本为在所述虚拟机组内所有虚拟机上执行效果相同的脚本,所述差异脚本为在所述虚拟机组内所有虚拟机上执行效果不同或必须在所述虚拟机上运行才可以达到效果的脚本,所述M为自然数;向虚拟机管理模块发送创建所述虚拟机的第一请求,所述第一请求携带所述虚拟机组的属性信息;
所述虚拟机管理模块,用于接收所述第一请求;若在所述虚拟机组模板中,查询到所述虚拟机组的标识信息对应的中间镜像,根据所述虚拟机组内的虚拟机的硬件配置,创建M台第一虚拟机,所述中间镜像通过为所述第一虚拟机加载所述初始镜像后执行所述公共脚本得到;为每一台所述第一虚拟机加载所述中间镜像,得到M台第二虚拟机;控制每一台所述第二虚拟机执行所述差异脚本,获得M台所述虚拟机。
根据第三方面,在第三方面的第一种可能的实现方式中,所述虚拟机管理模块还用于:
若在所述虚拟机组模板中,未查询到所述虚拟机组的标识信息对应的所述中间镜像,则根据所述虚拟机组内的虚拟机的硬件配置,创建一台所述第一虚拟机;为所述第一虚拟机加载所述初始镜像,得到第三虚拟机;控制所述第三虚拟机执行所述公共脚本,得到一台所述第二虚拟机,并为所述第二虚拟机创建镜像,将所述镜像作为所述中间镜像保存至所述虚拟机组模板中;根据所述虚拟机组内的虚拟机的硬件配置,创建M-1台所述第一虚拟机,所述M为大于1的正整数;为所述M-1台第一虚拟机加载所述中间镜像,得到M-1台所述第二虚拟机;控制每一台所述第二虚拟机执行所述差异脚本,获得M台所述虚拟机。
根据第三方面或第三方面的第一种可能的实现方式,在第三方面的第二种可能的实现方式中,所述装置还包括镜像管理模块,用于管理所述初始镜像和所述中间镜像。
根据第三方面、第三方面的第一种至第二种可能的实现方式中任意一种,在第三方面的第三种可能的实现方式中,所述装置还包括脚本管理模块,用于管理所述公共脚本和所述差异脚本。
根据第三方面的第一种至第三种可能的实现方式中任意一种,在第三方面的第四种可能的实现方式中,所述虚拟机管理模块还用于:
发送第一地址给所述第三虚拟机,所述第一地址为所述公共脚本在所述虚拟机批量创建装置的存储位置;
和/或,发送第二地址给所述第二虚拟机,所述第二地址为所述差异脚本在所述虚拟机批量创建装置的存储位置;
和/或,接收所述第二虚拟机发送的第一响应,所述第一响应用于指示已完成所述公共脚本的执行;
和/或,接收所述虚拟机发送的第二响应,所述第二响应用于指示已完成所述差异脚本的执行。
第四方面,本发明实施例提供一种虚拟机批量创建装置,包括:
资源管理模块,用于接收用于创建虚拟机的指令,所述指令包括要创建的所述虚拟机所采用的虚拟机组模板的标识信息和要创建的所述虚拟机的数量N,所述N为自然数;根据所述虚拟机组模板的标识信息,获取虚拟机组的属性信息,所述属性信息包括创建所述虚拟机组内的虚拟机的硬件配置和要加载的中间镜像及差异脚本,所述中间镜像为对根据所述硬件配置创建的第一虚拟机加载所述初始镜像后执行公共脚本得到,所述公共脚本为在所述虚拟机组内所有虚拟机上执行效果相同的脚本,所述差异脚本为在所述虚拟机组内所有虚拟机上执行效果不同或必须在所述虚拟机上运行才可以达到效果的脚本;向虚拟机管理模块发送创建所述虚拟机的第一请求,所述第一请求携带所述虚拟机组的属性信息;
所述虚拟机管理模块,用于接收所述第一请求;根据所述虚拟机组内的虚拟机的硬件配置,创建N台所述第一虚拟机;为每一台所述第一虚拟机加载所述中间镜像,得到N台第二虚拟机;控制每一台所述第二虚拟机执行所述差异脚本,获得N台所述虚拟机。
根据第四方面,在第四方面的第一种可能的实现方式中,所述装置还包括镜像管理模块,用于管理所述初始镜像和所述中间镜像。
根据第四方面或第四方面的第一种可能的实现方式,在第四方面的第二种可能的实现方式中,所述装置还包括脚本管理模块,用于管理所述公共脚本和所述差异脚本。
根据第四方面的第一种可能的实现方式,在第四方面的第三种可能的实现方式中,所述虚拟机管理模块,还用于发送获取所述初始镜像的第二请求给所述镜像管理模块;所述镜像管理模块,还用于接收所述第二请求;反馈所述初始镜像的地址给所述虚拟机管理模块。
根据第四方面、第四方面的第一种至第三种可能的实现方式中任意一种,在第四方面的第四种可能的实现方式中,所述虚拟机管理模块还用于:
发送地址给所述第二虚拟机,所述地址为所述差异脚本在所述虚拟机批量创建装置的存储位置;
和/或,接收所述虚拟机发送的响应,所述响应用于指示已完成所述差异脚本的执行。
本发明实施例虚拟机批量创建方法及装置,在批量创建虚拟机时可不用再执行或不重复执行公共脚本,加快虚拟机的创建速度,从而提高批量创建虚拟机的效率,且所述虚拟机组容量的弹性扩展效率高。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明应用场景的示例图;
图2为本发明虚拟机批量创建方法实施例一的流程图;
图3为本发明虚拟机批量创建方法实施例二的流程图;
图4为本发明虚拟机批量创建方法实施例三的流程图;
图5为本发明虚拟机批量创建装置实施例一的结构示意图;
图6为本发明虚拟机批量创建装置实施例二的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了用户更方便地使用I层云计算资源,云服务通常还会提供基础设施的自动部署服务,如AWS提供了CloudFormation服务帮助用户自动部署和管理云计算资源,最流行的开源云计算平台OpenStack提供Heat项目来完成云计算资源部署功能。这些自动部署服务通常是事先定义一系列的模板规范,用户根据需要编写自定义的模板文件提供给云计算平台(以下简称“云平台”)去自动部署云计算资源。
为了描述这种部署,OpenStack提供了几种相关的模板:
InstanceGroup:数量固定的虚拟机组。
AutoScalingGroup:可根据一定的策略数量动态增减的弹性虚拟机组。这一资源应用比较广泛,创建指定数量的虚拟机后,云平台可以监控虚拟机的状态,如果某台虚拟机挂起,系统可以自动重新建立一台虚拟机保证虚拟机组的数量。另外,还可以根据一定的策略增减虚拟机的数量。比如监控虚拟机组的负载情况,如果负载过高,可以自动新建虚拟机增加虚拟机组的数量以提高虚拟机组整体的处理能力。
LaunchConfiguration:主要描述上述虚拟机组中单台虚拟机的硬件配置、初始镜像、开机执行的脚本等信息。
如下是一个简化的模板例子(部分无关内容省略):
在该模板例子中,WebServerGroup表示一个AutoScalingGroup资源,Type表明云计算资源的类型,Properties字段指定云计算资源的相关属性。其中,LaunchConfigrationName字段指定了虚拟机组按照名为LaunchConfig的LaunchConfigration资源描述来创建该虚拟机组内的虚拟机;Desired_capaciy描述初始创建的虚拟机数量;MaxSize和MinSize是虚拟机组数量的最大最小值,用于限制虚拟机组内虚拟机数量的变化。其中LaunchConfig具体描述了WebServerGroup的虚拟机组中单台虚拟机硬件配置、初始镜像、开机脚本等属性信息。具体地,ImageId为虚拟机启动时加载的初始镜像,InstanceType为虚拟机的硬件配置类型,UserData为虚拟机启动之后需要自动执行的脚本命令。虚拟机组中所有的虚拟机启动之后都需要执行UserData中的脚本命令。其中,硬件配置包括虚拟机的中央处理器(Central Processing Unit,简称:CPU)核数、内存大小、存储容量等虚拟机信息,云平台可根据这些信息申请虚拟硬件资源来创建虚拟机。
另外,虚拟机的快照技术是一种基于时间点的数据拷贝技术。快照的目的在于能够记录虚拟机在某一个时刻的数据信息并将其保存。快照技术分为两类:物理拷贝和逻辑拷贝,物理拷贝就是对虚拟机的原始数据的完全拷贝;逻辑拷贝就是只针对发生过改变的数据进行拷贝,逻辑拷贝需要配合原虚拟机的数据进行使用。
物理拷贝快照和镜像的工作方式是一样的,都是将某个目标数据源的内容完整的拷贝到另外的地方,但是快照是在某个时刻点的拷贝,过后目标数据的变化将不再被记录,而镜像是时时刻刻都要保证目标数据和拷贝数据的一致性。但在描述虚拟机的初始镜像时,初始镜像是静态保存的操作系统镜像,并不是动态更新的,初始镜像只是业界的通常说法,可以与物理拷贝快照概念混用,均指某一时间点的数据完全拷贝。本发明后续所述的镜像与快照技术均指物理拷贝快照技术。
现有技术在批量部署虚拟机时,每台虚拟机启动之后需要执行一系列脚本命令,如下载安装软件、配置环境、连接数据库等操作。其中有些操作如下载安装软件,耗时较长,在每台虚拟机上都执行的话,批量部署时效率较低。
需注意的是,虚拟机开机后要执行的脚本命令可以分为两类:一类是在所有虚拟机上执行效果相同的命令,如下载安装软件、配置相同的环境变量等,这些脚本可以称为公共脚本;另一类是在不同的虚拟机上执行效果不同或者必须在虚拟机上运行一次才能达到效果的脚本,如将本机IP及ID等信息注册到负载均衡服务器(Load Balancer),连接到数据库等,这些脚本可以称为差异脚本。其中,负载均衡服务器负责把用户的请求分配到具体的网络服务器上进行处理,网络服务器在启动后通常会在负载均衡服务器注册,通知负载均衡服务器其自身已经可以接受请求。
在实际应用中,当虚拟机组需要重建时,虚拟机组可能只改变了虚拟机硬件配置等属性,而公共脚本并未变化,重复执行公共脚本的话,重建效率低。
基于上述,本发明实施例提供一种虚拟机批量创建方法及装置。首先,接收批量部署虚拟机的指令,解析指令中的虚拟机组模板,获取初始镜像、硬件配置、公共脚本和差异脚本;其次,创建一台第一虚拟机,为第一虚拟机加载初始镜像,执行公共脚本,得到第三虚拟机;再次,为第三虚拟机创建快照,并保存为中间镜像;然后,创建剩余的虚拟机,加载中间镜像得到第二虚拟机,并启动第二虚拟机;最后,所有的第二虚拟机执行差异脚本,完成整个批量部署过程。当需要重建虚拟机组时,如果公共脚本没有变化,则采用已保存的中间镜像来创建虚拟机,每台虚拟机创建成功后执行差异脚本。
本发明的实施例采用OpenStack的Heat模板来描述虚拟机的批量创建。如图1所示,应用场景是在OpenStack上批量创建一组初始数量为4的虚拟机组(WebServerGroup),每台虚拟机作为一个网络服务器(WebServer)实例,分别标识为虚拟机11、虚拟机12、虚拟机13和虚拟机14;虚拟机被创建后需要进行一些安装配置工作,故虚拟机11、虚拟机12、虚拟机13和虚拟机14向负载均衡服务器10注册,并连接到系统的后台数据库(Database)20。这组虚拟机在操作系统启动之后具体需要执行以下操作:1.下载安装阿帕奇(Apache)、汤姆猫(Tomcat)、MySql等软件工具;2.下载网络应用程序文件(WebArchive file,简称:War)包;3.获取后台数据库节点的网络信息(如IP和端口号等);4.配置环境变量和Apache、Tomcat、MySql等软件的配置;5.向负载均衡服务器10注册WebServer信息;6.连接到指定后台数据库20;7.启动网络服务。
需说明的是,在如下实施例中,术语“第一虚拟机”、“第二虚拟机”及“第三虚拟机”仅用于区分虚拟机创建过程中不同阶段得到的结果。
图2为本发明虚拟机批量创建方法实施例一的流程图。本发明实施例提供一种虚拟机批量创建方法,该方法可以由任意执行虚拟机批量创建方法的装置来执行,该装置可以通过软件和/或硬件实现。本实施例中,该装置可以集成在云平台中。如图2所示,该方法包括:
S201、云平台接收用于创建虚拟机的指令,该指令包括要创建的虚拟机所采用的虚拟机组模板。
具体地,当云服务用户(Cloud Service Consumer,简称:CSC)创建虚拟机组时,CSC向云平台发送用于为虚拟机组创建虚拟机的指令。对应地,云平台接收所述指令。
对于所述指令的用途,可以理解为以下含义:用于指示云平台首次使用该虚拟机组模板,批量创建该虚拟机组对应的虚拟机;或者,云平台非首次使用该虚拟机组模板,为该虚拟机组新增虚拟机。
对于虚拟机组模板,其描述了虚拟机组的容量,虚拟机组内虚拟机的硬件配置(InstanceType)、要加载的初始镜像(ImageId)、开机后要执行的公共脚本(BaseData)和差异脚本(UserData)等属性信息。这里,仅给出虚拟机组模板中基本的虚拟机信息,其他信息在此不赘述。
现有的虚拟机组模板中所有的脚本保存在UserData字段。本实施例在现有的虚拟机组模板中增加BaseData字段,用于描述公共脚本;原有的UserData字段用于描述差异脚本。本发明实施例的虚拟机组模板示例如下:
该示例中各符号含义具体可参考上述模板例子,此处不再赘述。
在如图1所示示例对应的说明中,虚拟机在操作系统启动后执行的操作1,2,3对应的脚本可以作为公共脚本保存在BaseData字段;操作5,6,7对应的脚本必须要在每台虚拟机上运行一次,因此作为差异脚本保存在UserData字段。其中,操作4根据具体情况,如果各虚拟机配置完全相同,可作为公共脚本;如果各虚拟机配置有所差别,可以作为差异脚本,具体划分可由模板编写者来指定,本示例中将操作4对应的脚本按差异脚本对待。
本实施例创建虚拟机组时,要创建的虚拟机数量为虚拟机组模板指定的默认数量4(Desired_capacity)。
S202、云平台解析虚拟机组模板,获取虚拟机组的属性信息。
其中,属性信息包括虚拟机组的标识信息、创建虚拟机组内的虚拟机的硬件配置、虚拟机组的容量M和要加载的初始镜像、公共脚本及差异脚本,M为自然数。其中,公共脚本为在虚拟机组内所有虚拟机上执行效果相同的脚本;差异脚本为在虚拟机组内所有虚拟机上执行效果不同或必须在虚拟机上运行才可以达到效果的脚本。
可选地,云平台保存虚拟机组模板。其中,云平台可通过多种形式保存虚拟机组模板,例如云平台可通过如表1所示的形式保存虚拟机组模板。
表1云平台保存虚拟机模板的形式示例
本例中硬件配置为m1.large,m1.large为4核8G内存80G硬盘空间的虚拟机;初始镜像为ubuntu-12.04;容量为4;中间镜像为Webservergroup-intermediate公共脚本和差异脚本的下载地址为\\dataserver\\。
需说明的是,虚拟机组模板中可以直接包括各种脚本(公共脚本和/或差异脚本),也可以引用其他脚本文件,还可以是其它形式,只要云平台解析时能获得最终的公共脚本和/或差异脚本即可。
S203、若在虚拟机组模板中,云平台查询到虚拟机组的标识信息对应的中间镜像,根据虚拟机组内的虚拟机的硬件配置,创建M台第一虚拟机。
其中,中间镜像通过为第一虚拟机加载初始镜像后执行公共脚本得到。
其中,具体的中间镜像生成技术可参考快照技术,此处不再赘述。
如表1所示,其中,中间镜像的值不为空(NULL),也就是说,标识信息为WebServerGroup的虚拟机组对应中间镜像Webservergroup-intermediate。
因此,云平台根据虚拟机组内的虚拟机的硬件配置,创建M台第一虚拟机。其中,硬件配置包括虚拟机的CPU核数、内存大小、存储容量等虚拟机信息,云平台可根据这些信息申请虚拟硬件资源来创建虚拟机。
S204、云平台为每一台第一虚拟机加载中间镜像,得到M台第二虚拟机。
现有技术中,云平台在根据虚拟机组内的虚拟机的硬件配置,创建第一虚拟机之后,为第一虚拟机加载初始镜像。不同于现有技术,在本发明实施例中,云平台在根据虚拟机组内的虚拟机的硬件配置,创建第一虚拟机之后,为第一虚拟机加载中间镜像,从而得到的第二虚拟机是已完成公共脚本的执行后获得的。这样,相较于每次创建一台虚拟机都要执行公共脚本,明显降低虚拟机创建的速度。
S205、云平台控制每一台所述第二虚拟机执行差异脚本,获得M台所述虚拟机。
本发明实施例虚拟机批量创建方法及装置,首先,云平台接收用于创建虚拟机的指令,该指令包含虚拟机组模板;然后,云平台基于在该虚拟机组模板中能够查询到创建所述虚拟机所需加载的中间镜像的结果,为根据所述虚拟机组内的虚拟机的硬件配置所批量创建的第一虚拟机加载该中间镜像,得到第二虚拟机;最后,云平台控制所述第二虚拟机执行差异脚本,获得所述虚拟机。因此,在虚拟机组模板中已包含中间镜像的前提下,云平台在批量创建虚拟机时可不用再执行或者不再重复执行公共脚本(首次创建一虚拟机组内的虚拟机时需执行一次公共脚本),加快批量虚拟机的创建速度,从而提高批量创建虚拟机的效率,且所述虚拟机组容量的弹性扩展效率高。
以下通过具体的实施例详细说明云平台在使用所述虚拟机组模板首次创建虚拟机的过程。其中,此过程包括所述中间镜像的获取过程。
S301、云平台接收用于创建虚拟机的指令,该指令包括要创建的虚拟机所采用的虚拟机组模板。
该步骤同S201,此处不再赘述。
S302、云平台解析虚拟机组模板,获取虚拟机组的属性信息。
该步骤同S202,此处不再赘述。
S303、若在虚拟机组模板中,云平台未查询到虚拟机组的标识信息对应的中间镜像,则根据虚拟机组内的虚拟机的硬件配置,创建一台第一虚拟机。
表2云平台保存虚拟机模板的形式示例
表2为与表1对应设置的云平台保存虚拟机模板的形式。因为是第一次创建该虚拟机组内的虚拟机,所以云平台中还没有此虚拟机组对应的中间镜像,云平台中虚拟机组信息如表2所示,查询中间镜像为NULL。因此,该实施例中先生成该中间镜像。具体地,通过云平台执行S303至S305获得中间镜像。
S304、云平台为第一虚拟机加载初始镜像,得到第三虚拟机。
云平台一般会通过一个专门的镜像管理服务提供一些预置的镜像,如各种版本的操作系统镜像等。CSC需要在虚拟机组模板中指定虚拟机要加载的初始镜像,云平台根据虚拟机组模板中指定的初始镜像的标识在云平台的镜像管理服务中找到对应的初始镜像,加载到第一虚拟机中获得第三虚拟机。
第三虚拟机启动以后,云平台中虚拟机的状态为启动成功状态(START_SUCCESS),例如如表3所示。
表3虚拟机状态表
虚拟机的标识信息 | 状态 |
Webserver-01 | START_SUCCESS |
… | … |
… | … |
其中,要创建的虚拟机的标识信息例如为Webserver-01;省略号表示其他要创建的虚拟机的标识信息及其状态。
S305、云平台控制第三虚拟机执行公共脚本,得到一台第二虚拟机,并为第二虚拟机创建镜像,将所述镜像作为中间镜像保存至虚拟机组模板中。
待第三虚拟机执行公交脚本完成之后,云平台中虚拟机的状态更新为公共脚本执行完成状态(BASEDATA_COMPLATE),例如如表4所示。
表4虚拟机状态表
虚拟机的标识信息 | 状态 |
Webserver-01 | BASEDATA_COMPLATE |
… | … |
… | … |
公共脚本执行完成之后,云平台为第二虚拟机创建镜像并保存在虚拟机组模板中作为中间镜像,如表1所示。此时,云平台中虚拟机的状态更新为中间镜像保存完成状态(IMAGE_COMPLETE),例如如表5所示。
表5虚拟机状态表
虚拟机的标识信息 | 状态 |
Webserver-01 | IMAGE_COMPLETE |
… | … |
… | … |
S306、云平台根据虚拟机组内的虚拟机的硬件配置,创建M-1台第一虚拟机。
其中,云平台根据虚拟机组内的虚拟机的硬件配置创建第一虚拟机的过程可参考现有技术,此处不再赘述,这里的“第一虚拟机”仅为区别最后要创建的虚拟机。
云平台在监控到虚拟机的状态为IMAGE_COMPLETE时,说明中间镜像已经保存完毕,接下来将创建剩余M-1台第一虚拟机,并更新虚拟机的状态为等待执行差异脚本状态(WAITING_FOR_USERDATA)。此时,具体的创建过程与现有技术中根据虚拟机组内的虚拟机的硬件配置创建虚拟机的创建过程类似,但要加载的镜像为中间镜像(从表1中可得到中间镜像为webservergroup-intermediate),即云平台执行S307。
S307、云平台为M-1台第一虚拟机加载中间镜像,得到M-1台第二虚拟机。
在S305保存中间镜像之后,云平台创建虚拟机就可以采用加载中间镜像的方式来加快虚拟机的创建速度。云平台为第一虚拟机加载中间镜像得到第二虚拟机。
所有第二虚拟机启动成功后,云平台中虚拟机的状态如表6所示。
表6虚拟机状态表
虚拟机的标识信息 | 状态 |
Webserver-01 | WAITING_FOR_USERDATA |
Webserver-02 | WAITING_FOR_USERDATA |
Webserver-03 | WAITING_FOR_USERDATA |
Webserver-04 | WAITING_FOR_USERDATA |
表6中以创建4个虚拟机为例说明,这4个虚拟机的标识信息分别为Webserver-01、Webserver-02、Webserver-03和Webserver-04。
S308、云平台控制每一台第二虚拟机执行差异脚本,获得M台虚拟机。
云平台监控虚拟机组中所有虚拟机的状态,当监控到虚拟机的状态为WAITING_FOR_USERDATA时,云平台控制每一台第二虚拟机执行差异脚本。差异脚本执行完毕之后,云平台中虚拟机的状态更新为创建完成状态(CREATE_COMPLETE),如表7所示。
当云平台监控到所有M台虚拟机的状态都是CREATE_COMPLETE时,整个虚拟机批量创建的过程结束。
表7虚拟机状态表
虚拟机的标识信息 | 状态 |
Webserver-01 | CREATE_COMPLETE |
Webserver-02 | CREATE_COMPLETE |
Webserver-03 | CREATE_COMPLETE |
Webserver-04 | CREATE_COMPLETE |
本发明实施例仅在首次创建虚拟机时需执行公共脚本,其余在根据虚拟机组模板中的硬件配置创建第一虚拟机之后,为该第一虚拟机加载中间镜像后执行差异脚本,从而节省了批量创建虚拟机时资源的占用,加快批量创建虚拟机的速度;另外,因差异脚本在每一虚拟机上执行,因此,任两台虚拟机的差异脚本之间相互独立,因此,差异脚本可自由编写,灵活度高。
在上述实施例中,云平台控制第三虚拟机执行公共脚本之前,所该方法还可以包括:云平台发送第一地址给第三虚拟机,该第一地址为公共脚本在云平台的存储位置。该实施例中,云平台发送第一地址给第三虚拟机,由第三虚拟机到第一地址获取公共脚本,然后执行公共脚本。
可选地,云平台控制第三虚拟机执行公共脚本,得到一台第二虚拟机之后,该方法还可以包括:云平台接收第二虚拟机发送的第一响应,第一响应用于指示已完成公共脚本的执行。该实施例通过云平台与第二虚拟机的交互保证云平台对虚拟机状态的监控。
在上述实施例的基础上,云平台控制第二虚拟机执行差异脚本之前,该方法还可以包括:云平台发送第二地址给第二虚拟机,第二地址为差异脚本在云平台的存储位置。该实施例中,云平台发送第二地址给第二虚拟机,由第二虚拟机到第二地址获取差异脚本,然后执行差异脚本。
进一步地,云平台控制第二虚拟机执行差异脚本,获得M台虚拟机之后,该方法还可以包括:云平台接收虚拟机发送的第二响应,第二响应用于指示已完成差异脚本的执行。该实施例通过云平台与虚拟机的交互保证云平台对虚拟机状态的监控。
通常情况下,如果已经创建了一虚拟机组,该虚拟机组会对应一个标识信息,例如,身份标识(ID)或名称(Name)之类的标识。另外,云平台也会保存虚拟机组模板等信息,云平台提供一个对外的接口来扩展虚拟机组,用户需要提供要扩展的虚拟机组的标识信息以及数量N等参数,云平台可以根据虚拟机组的标识信息获取已保存的虚拟机组模板。
因此,本发明实施例还提供另一种虚拟机批量创建方法,该方法与上述实施例所保护的方法的区别在于:用于创建虚拟机的指令中包括要创建的虚拟机所采用的虚拟机组模板的标识信息和要创建的虚拟机的数量N,其中,N为自然数。以下通过具体实施例说明该虚拟机批量创建方法。
图4为本发明虚拟机批量创建方法实施例三的流程图。本发明实施例的方法可以由任意执行虚拟机批量创建方法的装置来执行,该装置可以通过软件和/或硬件实现。本实施例中,该装置可以集成在云平台中。如图4所示,该方法包括:
S401、云平台接收用于创建虚拟机的指令。
其中,该指令包括要创建的虚拟机所采用的虚拟机组模板的标识信息和要创建的虚拟机的数量N,其中,N为自然数。
S402、云平台根据虚拟机组模板的标识信息,获取虚拟机组的属性信息。
其中,上述属性信息包括创建虚拟机组内的虚拟机的硬件配置和要加载的中间镜像及差异脚本。中间镜像为对根据硬件配置创建的第一虚拟机加载初始镜像后执行公共脚本得到。公共脚本为在虚拟机组内所有虚拟机上执行效果相同的脚本。差异脚本为在虚拟机组内所有虚拟机上执行效果不同或必须在虚拟机上运行才可以达到效果的脚本。
S403、云平台根据虚拟机组内的虚拟机的硬件配置,创建N台第一虚拟机。
S404、云平台为每一台第一虚拟机加载中间镜像,得到N台第二虚拟机。
S405、云平台控制每一台第二虚拟机执行差异脚本,获得N台虚拟机。
前述实施例已说明,云平台在首次创建虚拟机时,可保存虚拟机组模板等信息,云平台提供一个对外的接口来扩展虚拟机组。
该实施例中各个步骤的解释可参考前述实施例,这里不再赘述。
本发明实施例虚拟机批量创建方法及装置,首先,云平台接收用于创建虚拟机的指令,该指令包含虚拟机组的标识信息;然后,云平台基于该虚拟机组的标识信获取虚拟机组的属性信息,为根据所述虚拟机组内的虚拟机的硬件配置所批量创建的第一虚拟机加载中间镜像,得到第二虚拟机;最后,云平台控制所述第二虚拟机执行差异脚本,获得所述虚拟机。因为上述中间镜像已被保存,因此,云平台在创建虚拟机时可不用再执行公共脚本,加快虚拟机的创建速度,从而提高批量创建虚拟机的效率,且所述虚拟机组容量的弹性扩展效率高。
需说明的是,虚拟机组模板中可以直接包括各种脚本(公共脚本和/或差异脚本),也可以引用其他脚本文件,还可以是其它形式,例如,脚本的地址信息等,只要云平台解析时能获得最终的公共脚本和/或差异脚本即可。
另外,云平台在根据虚拟机组模板的硬件配置创建第一虚拟机之后,为该第一虚拟机加载中间镜像后执行差异脚本,从而节省了批量创建虚拟机时资源的占用,加快批量创建虚拟机的速度;且,因差异脚本在每一虚拟机上执行,因此,任两台虚拟机的差异脚本之间相互独立,因此,差异脚本可自由编写,灵活度高。
在上述实施例的基础上,S405之前,该方法还可以包括:云平台发送地址给第二虚拟机,该地址为差异脚本在云平台的存储位置。该实施例中,云平台发送地址给第二虚拟机,由第二虚拟机到地址获取差异脚本,然后执行差异脚本。
进一步地,S405之前,该方法还可以包括:云平台接收虚拟机发送的响应,该响应用于指示已完成差异脚本的执行。该实施例通过云平台与虚拟机的交互保证云平台对虚拟机状态的监控。
图5为本发明虚拟机批量创建装置实施例一的结构示意图。如图5所示,虚拟机批量创建装置50包括资源部署模块51和虚拟机管理模块52。
其中,资源部署模块51用于接收用于创建虚拟机的指令,该指令包括要创建的虚拟机所采用的虚拟机组模板;解析虚拟机组模板,获取虚拟机组的属性信息,属性信息包括虚拟机组的标识信息、创建虚拟机组内的虚拟机的硬件配置、虚拟机组的容量M和要加载的初始镜像、公共脚本及差异脚本,公共脚本为在虚拟机组内所有虚拟机上执行效果相同的脚本,差异脚本为在虚拟机组内所有虚拟机上执行效果不同或必须在虚拟机上运行才可以达到效果的脚本,M为自然数;向虚拟机管理模块52发送创建虚拟机的第一请求,第一请求携带虚拟机组的属性信息。虚拟机管理模块52用于接收第一请求;若在虚拟机组模板中,查询到虚拟机组的标识信息对应的中间镜像,根据虚拟机组内的虚拟机的硬件配置,创建M台第一虚拟机,中间镜像通过为第一虚拟机加载初始镜像后执行公共脚本得到;为每一台第一虚拟机加载中间镜像,得到M台第二虚拟机;控制每一台第二虚拟机执行差异脚本,获得M台虚拟机。
本实施例的装置,可以用于执行图2所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
概括地说,资源部署模块51用于接收CSC提交的用于批量创建虚拟机的指令,并根据指令获得虚拟机组的属性信息,控制整个资源部署过程。虚拟机管理模块52用于管理虚拟机的整个生命流程,包括虚拟机创建、更新、删除、生成镜像等。
进一步地,虚拟机管理模块52还可以用于:若在虚拟机组模板中,未查询到虚拟机组的标识信息对应的中间镜像,则根据虚拟机组内的虚拟机的硬件配置,创建一台第一虚拟机;为第一虚拟机加载初始镜像,得到第三虚拟机;控制第三虚拟机执行公共脚本,得到一台第二虚拟机,并为第二虚拟机创建镜像,将镜像作为中间镜像保存至虚拟机组模板中;根据虚拟机组内的虚拟机的硬件配置,创建M-1台第一虚拟机,M为大于1的正整数;为M-1台第一虚拟机加载中间镜像,得到M-1台第二虚拟机;控制每一台第二虚拟机执行差异脚本,获得M台虚拟机。该实施例说明在首次创建虚拟机组内的虚拟机时,云平台创建虚拟机的过程。具体步骤的实施例可参考如图3所示实施例的描述。
图6为本发明虚拟机批量创建装置实施例二的结构示意图。如图6所示,虚拟机批量创建装置60包括资源部署模块61、虚拟机管理模块62、镜像管理模块63和脚本管理模块64。
其中,资源部署模块61和虚拟机管理模块62的功能和作用类似资源部署模块51和虚拟机管理模块52的功能和作用。镜像管理模块63用于管理初始镜像和中间镜像。脚本管理模块64用于管理公共脚本和差异脚本。
具体地,资源部署模块61接收CSC的指令并通过对虚拟机组模板的解析,获取要批量部署的虚拟机的数量,每台虚拟机的硬件配置、要加载的初始镜像、公共脚本和差异脚本(仅给出了最基本的虚拟机信息,其他信息在此不赘述)。资源部署模块61将虚拟机组模板的公共脚本和差异脚本保存在脚本管理模块64中。脚本管理模块64将各脚本的下载地址返回资源部署模块61,后续根据该下载地址,虚拟机可从脚本管理模块64中下载对应脚本。
资源部署模块61中保存虚拟机组模板和虚拟机组模板中各资源的信息,具体可参考如表1或表2所示。在第一次创建虚拟机组对应的虚拟机时,资源部署模块61中还没有此虚拟机组对应的中间镜像,如表1所示,查询中间镜像为NULL;当虚拟机组创建以后,会保存一份中间镜像,可查询到对应的中间镜像为。
虚拟机管理模块62内置了几种固定硬件配置的虚拟机类型。
在第一次创建虚拟机组模块对应的虚拟机时,资源部署模块61向虚拟机管理模块62发送申请一台虚拟机的第一请求,该第一请求中包含获取的硬件配置(例如m1.large)、初始镜像、公共脚本和差异脚本的下载地址等信息。虚拟机管理模块62在收到资源部署模块61创建虚拟机的第一请求之后,发送获取初始镜像的第二请求到镜像管理模块63,镜像管理模块63返回初始镜像的下载地址。虚拟机管理模块62从自身的资源池中创建一台例如m1.large类型的虚拟机作为第一虚拟机,并从镜像管理模块63返回的初始镜像下载地址中获取初始镜像加载到第一虚拟机中,得到第三虚拟机,并启动此第三虚拟机。虚拟机管理模块62自身提供的初始镜像在操作系统启动以后会自动启动第三虚拟机,其中,虚拟机可内置代理模块,该代理(Agent)模块用于虚拟机操作系统与资源部署模块61交互并执行指令。第三虚拟机启动以后,代理模块自动启动,并更新虚拟机的状态为START_SUCCESS,如表3所示。
资源部署模块61监控虚拟机状态表。当资源部署模块61确定虚拟机的状态为START_SUCCESS,说明第三虚拟机启动成功,之后,发送公共脚本和差异脚本的下载地址到第三虚拟机。第三虚拟机接收上述下载地址后,根据下载地址从脚本管理模块64中下载公共脚本和差异脚本到第三虚拟机,且,第三虚拟机执行公共脚本,得到第二虚拟机。虚拟机上的代理模块监控到公交脚本执行完成之后,更新虚拟机的状态为BASEDATA_COMPLATE,如表4所示。
资源部署模块61监控到虚拟机的状态为BASEDATA_COMPLATE,说明第三虚拟机上公共脚本执行完毕。资源部署模块61向虚拟机管理模块62发出为第二虚拟机创建镜像的请求;虚拟机管理模块62接收该请求后,为第二虚拟机生成镜像,并向镜像管理模块63发出镜像保存请求,镜像保存请求中至少包含虚拟机的标识信息及镜像文件;镜像管理模块63将此镜像文件保存为中间镜像后,返回保存的中间镜像索引标识;虚拟机管理模块62接收到中间镜像索引标识后,将中间镜像索引标识返回资源部署模块61。其中,具体的镜像生成技术可参考快照技术,此处不再赘述。资源部署模块61在接收到中间镜像索引标识,即中间镜像保存成功之后,保存中间镜像索引标识。此时,更新虚拟机组模块的信息如表1所示;更新虚拟机的状态为IMAGE_COMPLETE,如表5所示。
资源部署模块61在监控到虚拟机的状态为IMAGE_COMPLETE时,说明第二虚拟机对应的中间镜像已经保存完毕,向虚拟机管理模块62发出创建剩余虚拟机的请求,并更新虚拟机的状态为WAITING_FOR_USERDATA,如表6所示。此时,剩余虚拟机具体的创建过程与第一虚拟机创建过程类似,但每台第一虚拟机根据硬件配置等信息申请资源之后加载的镜像为镜像管理模块63中保存的中间镜像(从表1中可得到中间镜像为webservergroup-intermediate)。因为中间镜像已经包含公共脚本和差异脚本,因此剩余虚拟机不需要再次下载公共脚本。第二虚拟机启动成功后,更新虚拟机的状态为WAITING_FOR_USERDATA。所有第二虚拟机启动成功后,虚拟机状态如表6所示。
资源部署模块61监控虚拟机组中所有虚拟机的状态,当监控到虚拟机的状态为WAITING_FOR_USERDATA时,资源部署模块61通知对应虚拟机的执行差异脚本。虚拟机启动差异脚本并监控其执行,在差异脚本执行完毕之后,更新对应虚拟机的状态为CREATE_COMPLETE,如表7所示。
资源部署模块61在监控到所有虚拟机的状态都是CREATE_COMPLETE时,整个批量创建虚拟机的过程结束。
基于上述说明,虚拟机管理模块62还可以用于:发送第一地址给第三虚拟机,该第一地址为公共脚本在虚拟机批量创建装置60的存储位置。
和/或,虚拟机管理模块62还可以用于:发送第二地址给第二虚拟机,该第二地址为差异脚本在虚拟机批量创建装置60的存储位置。
和/或,虚拟机管理模块62还可以用于:接收第二虚拟机发送的第一响应,该第一响应用于指示已完成公共脚本的执行。
和/或,虚拟机管理模块62还可以用于:接收虚拟机发送的第二响应,该第二响应用于指示已完成差异脚本的执行。
本实施例的装置,可以用于执行图3所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
不同于上述实施例,仍参考图5,资源管理模块51用于接收用于创建虚拟机的指令,该指令包括要创建的虚拟机所采用的虚拟机组模板的标识信息和要创建的虚拟机的数量N,N为自然数;根据虚拟机组模板的标识信息,获取虚拟机组的属性信息,该属性信息包括创建虚拟机组内的虚拟机的硬件配置和要加载的中间镜像及差异脚本,该中间镜像为对根据硬件配置创建的第一虚拟机加载初始镜像后执行公共脚本得到,公共脚本为在虚拟机组内所有虚拟机上执行效果相同的脚本,差异脚本为在虚拟机组内所有虚拟机上执行效果不同或必须在虚拟机上运行才可以达到效果的脚本;向虚拟机管理模块52发送创建虚拟机的第一请求,该第一请求携带虚拟机组的属性信息。虚拟机管理模块52用于接收上述第一请求;根据虚拟机组内的虚拟机的硬件配置,创建N台第一虚拟机;为每一台第一虚拟机加载中间镜像,得到N台第二虚拟机;控制每一台第二虚拟机执行差异脚本,获得N台虚拟机。
本实施例的装置,可以用于执行图4所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
参考图6所示的结构,在上述实施例的基础上,虚拟机管理模块62还可以用于发送获取初始镜像的第二请求给镜像管理模块63。进一步地,镜像管理模块63还可以用于接收第二请求;反馈初始镜像的地址给虚拟机管理模块62。
更进一步地,虚拟机管理模块62还可以用于:发送地址给第二虚拟机,该地址为差异脚本在虚拟机批量创建装置60的存储位置。和/或,虚拟机管理模块62还可以用于:接收虚拟机发送的响应,该响应用于指示已完成差异脚本的执行。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (19)
1.一种虚拟机批量创建方法,其特征在于,包括:
云平台接收用于创建虚拟机的指令,所述指令包括要创建的所述虚拟机所采用的虚拟机组模板;
所述云平台解析所述虚拟机组模板,获取虚拟机组的属性信息,所述属性信息包括所述虚拟机组的标识信息、创建所述虚拟机组内的虚拟机的硬件配置、所述虚拟机组的容量M和要加载的初始镜像、公共脚本及差异脚本,所述公共脚本为在所述虚拟机组内所有虚拟机上执行效果相同的脚本,所述差异脚本为在所述虚拟机组内所有虚拟机上执行效果不同或必须在所述虚拟机上运行才可以达到效果的脚本,所述M为自然数;
若在所述虚拟机组模板中,所述云平台查询到所述虚拟机组的标识信息对应的中间镜像,根据所述虚拟机组内的虚拟机的硬件配置,创建M台第一虚拟机,所述中间镜像通过为所述第一虚拟机加载所述初始镜像后执行所述公共脚本得到;
所述云平台为每一台所述第一虚拟机加载所述中间镜像,得到M台第二虚拟机;
所述云平台控制每一台所述第二虚拟机执行所述差异脚本,获得M台所述虚拟机。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若在所述虚拟机组模板中,所述云平台未查询到所述虚拟机组的标识信息对应的所述中间镜像,则根据所述虚拟机组内的虚拟机的硬件配置,创建一台所述第一虚拟机;
所述云平台为所述第一虚拟机加载所述初始镜像,得到第三虚拟机;
所述云平台控制所述第三虚拟机执行所述公共脚本,得到一台所述第二虚拟机,并为所述第二虚拟机创建镜像,将所述镜像作为所述中间镜像保存至所述虚拟机组模板中;
所述云平台根据所述虚拟机组内的虚拟机的硬件配置,创建M-1台所述第一虚拟机,所述M为大于1的正整数;
所述云平台为所述M-1台第一虚拟机加载所述中间镜像,得到M-1台所述第二虚拟机;
所述云平台控制每一台所述第二虚拟机执行所述差异脚本,获得M台所述虚拟机。
3.根据权利要求2所述的方法,其特征在于,所述云平台控制所述第三虚拟机执行所述公共脚本之前,所述方法还包括:
所述云平台发送第一地址给所述第三虚拟机,所述第一地址为所述公共脚本在所述云平台的存储位置。
4.根据权利要求2或3所述的方法,其特征在于,所述云平台控制所述第三虚拟机执行所述公共脚本,得到一台所述第二虚拟机之后,所述方法还包括:
所述云平台接收所述第二虚拟机发送的第一响应,所述第一响应用于指示已完成所述公共脚本的执行。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述云平台控制所述第二虚拟机执行所述差异脚本之前,所述方法还包括:
所述云平台发送第二地址给所述第二虚拟机,所述第二地址为所述差异脚本在所述云平台的存储位置。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述云平台控制所述第二虚拟机执行所述差异脚本,获得M台所述虚拟机之后,所述方法还包括:
所述云平台接收所述虚拟机发送的第二响应,所述第二响应用于指示已完成所述差异脚本的执行。
7.一种虚拟机批量创建方法,其特征在于,包括:
云平台接收用于创建虚拟机的指令,所述指令包括要创建的所述虚拟机所采用的虚拟机组模板的标识信息和要创建的所述虚拟机的数量N,所述N为自然数;
所述云平台根据所述虚拟机组模板的标识信息,获取虚拟机组的属性信息,所述属性信息包括创建所述虚拟机组内的虚拟机的硬件配置和要加载的中间镜像及差异脚本,所述中间镜像为对根据所述硬件配置创建的第一虚拟机加载所述初始镜像后执行公共脚本得到,所述公共脚本为在所述虚拟机组内所有虚拟机上执行效果相同的脚本,所述差异脚本为在所述虚拟机组内所有虚拟机上执行效果不同或必须在所述虚拟机上运行才可以达到效果的脚本;
所述云平台根据所述虚拟机组内的虚拟机的硬件配置,创建N台所述第一虚拟机;
所述云平台为每一台所述第一虚拟机加载所述中间镜像,得到N台第二虚拟机;
所述云平台控制每一台所述第二虚拟机执行所述差异脚本,获得N台所述虚拟机。
8.根据权利要求7所述的方法,其特征在于,所述云平台控制所述第二虚拟机执行所述差异脚本之前,所述方法还包括:
所述云平台发送地址给所述第二虚拟机,所述地址为所述差异脚本在所述云平台的存储位置。
9.根据权利要求7或8所述的方法,其特征在于,所述云平台控制所述第二虚拟机执行所述差异脚本,获得N台所述虚拟机之后,所述方法还包括:
所述云平台接收所述虚拟机发送的响应,所述响应用于指示已完成所述差异脚本的执行。
10.一种虚拟机批量创建装置,其特征在于,包括:
资源部署模块,用于接收用于创建虚拟机的指令,所述指令包括要创建的所述虚拟机所采用的虚拟机组模板;解析所述虚拟机组模板,获取虚拟机组的属性信息,所述属性信息包括所述虚拟机组的标识信息、创建所述虚拟机组内的虚拟机的硬件配置、所述虚拟机组的容量M和要加载的初始镜像、公共脚本及差异脚本,所述公共脚本为在所述虚拟机组内所有虚拟机上执行效果相同的脚本,所述差异脚本为在所述虚拟机组内所有虚拟机上执行效果不同或必须在所述虚拟机上运行才可以达到效果的脚本,所述M为自然数;向虚拟机管理模块发送创建所述虚拟机的第一请求,所述第一请求携带所述虚拟机组的属性信息;
所述虚拟机管理模块,用于接收所述第一请求;若在所述虚拟机组模板中,查询到所述虚拟机组的标识信息对应的中间镜像,根据所述虚拟机组内的虚拟机的硬件配置,创建M台第一虚拟机,所述中间镜像通过为所述第一虚拟机加载所述初始镜像后执行所述公共脚本得到;为每一台所述第一虚拟机加载所述中间镜像,得到M台第二虚拟机;控制每一台所述第二虚拟机执行所述差异脚本,获得M台所述虚拟机。
11.根据权利要求10所述的装置,其特征在于,所述虚拟机管理模块还用于:
若在所述虚拟机组模板中,未查询到所述虚拟机组的标识信息对应的所述中间镜像,则根据所述虚拟机组内的虚拟机的硬件配置,创建一台所述第一虚拟机;为所述第一虚拟机加载所述初始镜像,得到第三虚拟机;控制所述第三虚拟机执行所述公共脚本,得到一台所述第二虚拟机,并为所述第二虚拟机创建镜像,将所述镜像作为所述中间镜像保存至所述虚拟机组模板中;根据所述虚拟机组内的虚拟机的硬件配置,创建M-1台所述第一虚拟机,所述M为大于1的正整数;为所述M-1台第一虚拟机加载所述中间镜像,得到M-1台所述第二虚拟机;控制每一台所述第二虚拟机执行所述差异脚本,获得M台所述虚拟机。
12.根据权利要求10或11所述的装置,其特征在于,所述装置还包括镜像管理模块,用于管理所述初始镜像和所述中间镜像。
13.根据权利要求10-12任一项所述的装置,其特征在于,所述装置还包括脚本管理模块,用于管理所述公共脚本和所述差异脚本。
14.根据权利要求11-13任一项所述的装置,其特征在于,所述虚拟机管理模块还用于:
发送第一地址给所述第三虚拟机,所述第一地址为所述公共脚本在所述虚拟机批量创建装置的存储位置;
和/或,发送第二地址给所述第二虚拟机,所述第二地址为所述差异脚本在所述虚拟机批量创建装置的存储位置;
和/或,接收所述第二虚拟机发送的第一响应,所述第一响应用于指示已完成所述公共脚本的执行;
和/或,接收所述虚拟机发送的第二响应,所述第二响应用于指示已完成所述差异脚本的执行。
15.一种虚拟机批量创建装置,其特征在于,包括:
资源管理模块,用于接收用于创建虚拟机的指令,所述指令包括要创建的所述虚拟机所采用的虚拟机组模板的标识信息和要创建的所述虚拟机的数量N,所述N为自然数;根据所述虚拟机组模板的标识信息,获取虚拟机组的属性信息,所述属性信息包括创建所述虚拟机组内的虚拟机的硬件配置和要加载的中间镜像及差异脚本,所述中间镜像为对根据所述硬件配置创建的第一虚拟机加载所述初始镜像后执行公共脚本得到,所述公共脚本为在所述虚拟机组内所有虚拟机上执行效果相同的脚本,所述差异脚本为在所述虚拟机组内所有虚拟机上执行效果不同或必须在所述虚拟机上运行才可以达到效果的脚本;向虚拟机管理模块发送创建所述虚拟机的第一请求,所述第一请求携带所述虚拟机组的属性信息;
所述虚拟机管理模块,用于接收所述第一请求;根据所述虚拟机组内的虚拟机的硬件配置,创建N台所述第一虚拟机;为每一台所述第一虚拟机加载所述中间镜像,得到N台第二虚拟机;控制每一台所述第二虚拟机执行所述差异脚本,获得N台所述虚拟机。
16.根据权利要求15所述的装置,其特征在于,所述装置还包括镜像管理模块,用于管理所述初始镜像和所述中间镜像。
17.根据权利要求15或16所述的装置,其特征在于,所述装置还包括脚本管理模块,用于管理所述公共脚本和所述差异脚本。
18.根据权利要求16所述的装置,其特征在于,
所述虚拟机管理模块,还用于发送获取所述初始镜像的第二请求给所述镜像管理模块;
所述镜像管理模块,还用于接收所述第二请求;反馈所述初始镜像的地址给所述虚拟机管理模块。
19.根据权利要求15-18任一项所述的装置,其特征在于,所述虚拟机管理模块还用于:
发送地址给所述第二虚拟机,所述地址为所述差异脚本在所述虚拟机批量创建装置的存储位置;
和/或,接收所述虚拟机发送的响应,所述响应用于指示已完成所述差异脚本的执行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510136920.0A CN106155759B (zh) | 2015-03-26 | 2015-03-26 | 虚拟机批量创建方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510136920.0A CN106155759B (zh) | 2015-03-26 | 2015-03-26 | 虚拟机批量创建方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106155759A true CN106155759A (zh) | 2016-11-23 |
CN106155759B CN106155759B (zh) | 2019-05-28 |
Family
ID=57338937
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510136920.0A Active CN106155759B (zh) | 2015-03-26 | 2015-03-26 | 虚拟机批量创建方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106155759B (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106775946A (zh) * | 2016-12-16 | 2017-05-31 | 无锡华云数据技术服务有限公司 | 一种虚拟机快速创建方法 |
CN107102883A (zh) * | 2017-03-10 | 2017-08-29 | 深圳市神云科技有限公司 | 一种虚拟机配置方法 |
CN107193633A (zh) * | 2017-05-23 | 2017-09-22 | 郑州云海信息技术有限公司 | 一种批量创建虚拟机的方法及装置 |
CN107357633A (zh) * | 2017-07-17 | 2017-11-17 | 郑州云海信息技术有限公司 | 一种虚拟机的创建方法及创建装置 |
CN108920685A (zh) * | 2018-07-12 | 2018-11-30 | 郑州云海信息技术有限公司 | 云数据系统中数据库的管理方法和装置 |
CN109002343A (zh) * | 2017-06-07 | 2018-12-14 | 中兴通讯股份有限公司 | 一种实现虚拟机批量创建的方法及装置 |
CN110554906A (zh) * | 2019-09-10 | 2019-12-10 | 中国工商银行股份有限公司 | 虚拟机配置管理方法及装置 |
WO2020134479A1 (zh) * | 2018-12-28 | 2020-07-02 | 中兴通讯股份有限公司 | 虚机调整方法、装置、网络设备和可读存储介质 |
CN111488199A (zh) * | 2020-04-17 | 2020-08-04 | 苏州浪潮智能科技有限公司 | 一种创建虚拟机的方法、装置、设备和介质 |
CN111625319A (zh) * | 2020-05-25 | 2020-09-04 | 北京金山云网络技术有限公司 | 虚拟机监控数据的采集方法、装置及宿主机 |
US20210028993A1 (en) * | 2019-07-23 | 2021-01-28 | Vmware, Inc. | Methods and apparatus to detect drift in a hybrid cloud environment |
CN113590271A (zh) * | 2021-09-27 | 2021-11-02 | 武汉四通信息服务有限公司 | 数据库部署方法、装置、电子设备及存储介质 |
CN116527494A (zh) * | 2023-07-05 | 2023-08-01 | 南京赛宁信息技术有限公司 | 基于虚拟网卡克隆的靶场虚拟机网络初始化方法与系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8307358B1 (en) * | 2007-07-10 | 2012-11-06 | Parallels IP Holdings GmbH | Method and system for unattended installation of guest operating system |
CN103856343A (zh) * | 2012-12-05 | 2014-06-11 | 北京华胜天成科技股份有限公司 | 配置虚拟机网络信息的方法及系统 |
CN104156257A (zh) * | 2014-08-22 | 2014-11-19 | 成都致云科技有限公司 | 一种快速高效的云服务磁盘镜像管理方法 |
CN104468791A (zh) * | 2014-12-09 | 2015-03-25 | 广州杰赛科技股份有限公司 | 私有云IaaS平台的构建方法 |
-
2015
- 2015-03-26 CN CN201510136920.0A patent/CN106155759B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8307358B1 (en) * | 2007-07-10 | 2012-11-06 | Parallels IP Holdings GmbH | Method and system for unattended installation of guest operating system |
CN103856343A (zh) * | 2012-12-05 | 2014-06-11 | 北京华胜天成科技股份有限公司 | 配置虚拟机网络信息的方法及系统 |
CN104156257A (zh) * | 2014-08-22 | 2014-11-19 | 成都致云科技有限公司 | 一种快速高效的云服务磁盘镜像管理方法 |
CN104468791A (zh) * | 2014-12-09 | 2015-03-25 | 广州杰赛科技股份有限公司 | 私有云IaaS平台的构建方法 |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106775946A (zh) * | 2016-12-16 | 2017-05-31 | 无锡华云数据技术服务有限公司 | 一种虚拟机快速创建方法 |
CN107102883A (zh) * | 2017-03-10 | 2017-08-29 | 深圳市神云科技有限公司 | 一种虚拟机配置方法 |
CN107193633A (zh) * | 2017-05-23 | 2017-09-22 | 郑州云海信息技术有限公司 | 一种批量创建虚拟机的方法及装置 |
CN109002343B (zh) * | 2017-06-07 | 2023-08-25 | 中兴通讯股份有限公司 | 一种实现虚拟机批量创建的方法及装置 |
CN109002343A (zh) * | 2017-06-07 | 2018-12-14 | 中兴通讯股份有限公司 | 一种实现虚拟机批量创建的方法及装置 |
CN107357633A (zh) * | 2017-07-17 | 2017-11-17 | 郑州云海信息技术有限公司 | 一种虚拟机的创建方法及创建装置 |
CN108920685B (zh) * | 2018-07-12 | 2021-11-26 | 郑州云海信息技术有限公司 | 云数据系统中数据库的管理方法和装置 |
CN108920685A (zh) * | 2018-07-12 | 2018-11-30 | 郑州云海信息技术有限公司 | 云数据系统中数据库的管理方法和装置 |
WO2020134479A1 (zh) * | 2018-12-28 | 2020-07-02 | 中兴通讯股份有限公司 | 虚机调整方法、装置、网络设备和可读存储介质 |
US20210028993A1 (en) * | 2019-07-23 | 2021-01-28 | Vmware, Inc. | Methods and apparatus to detect drift in a hybrid cloud environment |
US11595266B2 (en) * | 2019-07-23 | 2023-02-28 | Vmware, Inc. | Methods and apparatus to detect drift in a hybrid cloud environment |
CN110554906A (zh) * | 2019-09-10 | 2019-12-10 | 中国工商银行股份有限公司 | 虚拟机配置管理方法及装置 |
CN111488199A (zh) * | 2020-04-17 | 2020-08-04 | 苏州浪潮智能科技有限公司 | 一种创建虚拟机的方法、装置、设备和介质 |
CN111625319A (zh) * | 2020-05-25 | 2020-09-04 | 北京金山云网络技术有限公司 | 虚拟机监控数据的采集方法、装置及宿主机 |
CN113590271A (zh) * | 2021-09-27 | 2021-11-02 | 武汉四通信息服务有限公司 | 数据库部署方法、装置、电子设备及存储介质 |
CN116527494A (zh) * | 2023-07-05 | 2023-08-01 | 南京赛宁信息技术有限公司 | 基于虚拟网卡克隆的靶场虚拟机网络初始化方法与系统 |
CN116527494B (zh) * | 2023-07-05 | 2023-09-12 | 南京赛宁信息技术有限公司 | 基于虚拟网卡克隆的靶场虚拟机网络初始化方法与系统 |
Also Published As
Publication number | Publication date |
---|---|
CN106155759B (zh) | 2019-05-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106155759A (zh) | 虚拟机批量创建方法及装置 | |
CN102834822B (zh) | 由虚拟机共享的群集的快速-完整备份 | |
CN112099918A (zh) | 容器化环境中的集群的实时迁移 | |
US7823023B2 (en) | Test framework for testing an application | |
US6714949B1 (en) | Dynamic file system configurations | |
CN108073423A (zh) | 一种加速器加载方法、系统和加速器加载装置 | |
CN109690482A (zh) | 虚拟机图形处理器的分配 | |
CN110520844A (zh) | 云管理平台、虚拟机管理方法及其系统 | |
CN108089913A (zh) | 一种超融合系统的虚拟机部署方法 | |
CN106775946A (zh) | 一种虚拟机快速创建方法 | |
CN109992278A (zh) | 一种基于容器的应用程序发布方法及装置 | |
CN112596762A (zh) | 一种滚动升级方法及装置 | |
CN112230857B (zh) | 一种混合云系统、混合云盘申请方法和数据存储方法 | |
CN115686932B (zh) | 备份集文件恢复方法、装置和计算机设备 | |
CN113438295A (zh) | 容器组地址分配方法、装置、设备及存储介质 | |
CN114490062A (zh) | 一种本地磁盘的调度方法、装置、电子设备及存储介质 | |
CN106790489B (zh) | 并行数据加载方法和系统 | |
WO2018119662A1 (zh) | 内核更新方法和装置、计算机设备 | |
CN114385349A (zh) | 容器组部署方法和装置 | |
CN101277301B (zh) | 分布式系统的接口调用方法、装置和系统 | |
CN106354435A (zh) | Raid初始化的方法及装置 | |
CN108062239A (zh) | 一种加速器加载方法、系统和加速器加载装置 | |
CN103188306B (zh) | 分布式预处理方法和系统 | |
US20020112231A1 (en) | Software distribution at a multi-processor telecommunications platform | |
CN104317660A (zh) | 一种银行参数管理系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20200214 Address after: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Patentee after: HUAWEI TECHNOLOGIES Co.,Ltd. Address before: 210012 Ande Gate No. 94, Yuhuatai District, Jiangsu, Nanjing Patentee before: Huawei Technologies Co.,Ltd. |
|
TR01 | Transfer of patent right |