一种基于磁盘镜像创建虚拟机的方法及系统与流程

文档序号:23628391发布日期:2021-01-12 10:41阅读:75来源:国知局
一种基于磁盘镜像创建虚拟机的方法及系统与流程

本申请涉及云计算虚拟机技术领域,特别是涉及一种基于磁盘镜像创建虚拟机的方法及系统。



背景技术:

随着云计算技术的发展,云计算部署规模逐渐扩张,越来越多的企业采用包括私有云、公有云以及混合云的各种云形式,将业务部署在云端,从而大大提高了业务扩展能力和资源动态规划能力。云端业务的部署介质中,使用最普通的就是虚拟机,如何批量地基于已有虚拟机模板快速部署大量业务虚拟机,对于企业信息化部署,是非常重要的。

目前基于外部磁盘镜像部署虚拟机的方法,通常是逐个部署,全量数据拷贝。即:首先进行数据拷贝,等数据拷贝完毕后开启虚拟机业务。

然而,目前基于外部磁盘镜像部署虚拟机的方法中,由于逐个部署过程中,磁盘数据拷贝的时间较长,导致整个虚拟机部署占用的时间较长,部署效率较低,无法应对业务的快速交付。



技术实现要素:

本申请提供了一种基于磁盘镜像创建虚拟机的方法及系统,以解决现有技术中部署效率较低的问题。

为了解决上述技术问题,本申请实施例公开了如下技术方案:

一种基于磁盘镜像创建虚拟机的方法,所述方法包括:

根据磁盘镜像的位置,确定访问磁盘镜像文件的方式;

获取所述磁盘镜像文件的镜像信息,所述镜像信息包括:磁盘镜像文件的虚拟大小和实际大小;

根据所述镜像信息,在目标存储中创建虚拟磁盘,其中,所述目标存储中创建有虚拟机;

按照磁盘镜像文件复制业务和虚拟机运行业务,对所述虚拟磁盘的空间进行分区;

开启虚拟机,通过动态调整读指针和写指针在后台将所述磁盘镜像文件异步复制到所述虚拟磁盘。

可选地,所述根据磁盘镜像的位置,确定访问磁盘镜像文件的方式,包括:

确定磁盘镜像的位置,所述位置包括:基于远程ip访问的远程目录和本地目录;

如果磁盘镜像的位置处于基于远程ip访问的远程目录下,根据当前的访问协议,将磁盘镜像所在的远程目录挂载到目标主机的本地目录下,所述访问协议包括:nfs(networkfilesystem,网络文件系统)协议、ftp(filetransferprotocol,文件传输协议)协议或者cifs(commoninternetfilesystem,通用网络文件系统)协议;

在本地目录下访问磁盘镜像文件;

如果磁盘镜像的位置处于本地目录下,直接在本地目录下访问磁盘镜像文件。

可选地,所述按照磁盘镜像文件复制业务和虚拟机运行业务,对所述虚拟磁盘的空间进行分区,包括:

根据所述磁盘镜像文件的虚拟大小,对所述虚拟磁盘申请虚拟磁盘空间;

将所述磁盘空间分为磁盘镜像文件复制分区和虚拟机业务运行分区。

可选地,所述开启虚拟机,通过动态调整读指针和写指针在后台将所述磁盘镜像文件异步复制到所述虚拟磁盘,包括:

将所述虚拟磁盘的写指针指向所述虚拟磁盘空间的地址,且所述写指针的起始位置为虚拟磁盘空间中磁盘镜像文件实际大小的结束位置;

将所述虚拟磁盘的读指针指向所述写指针的起始位置,且写指针起始位置处的读指针指向所述磁盘镜像文件;

复制所述磁盘镜像文件的元数据副本;

根据所述虚拟磁盘写指针的位置,更新所述元数据副本的元数据信息;

根据所述虚拟磁盘开启虚拟机;

开启与所述虚拟机运行业务不同的另一个线程或进程,全量拷贝所述磁盘镜像文件至所述虚拟磁盘;

拷贝完成后,向虚拟化管理层发送写入完毕通知;

根据所述写入完毕通知,虚拟化管理层发送读指针切换指令到虚拟磁盘;

根据所述读指针切换指令,虚拟磁盘将读指针切换至虚拟磁盘当前写入的结束位置。

可选地,所述方法还包括:

根据所获取的指令,取消磁盘镜像文件异步复制操作。

可选地,所述根据所获取的指令,取消磁盘镜像文件异步复制,包括:

根据所获取的取消指令,虚拟化管理层关闭运行中的虚拟机,并发送中断指令;

根据所述中断指令,终止对所述磁盘镜像文件的异步复制操作;

删除已创建的虚拟磁盘;

判断磁盘镜像的位置是否基于远程ip访问的远程目录;

如果是,根据所获取的指令,取消远程目录的挂载。

一种基于磁盘镜像创建虚拟机的系统,所述系统包括:

访问方式确定模块,用于根据磁盘镜像的位置,确定访问磁盘镜像文件的方式;

镜像信息获取模块,用于获取所述磁盘镜像文件的镜像信息,所述镜像信息包括:磁盘镜像文件的虚拟大小和实际大小;

虚拟磁盘创建模块,用于根据所述镜像信息,在目标存储中创建虚拟磁盘,其中,所述目标存储中创建有虚拟机;

分区模块,用于按照磁盘镜像文件复制业务和虚拟机运行业务,对所述虚拟磁盘的空间进行分区;

异步复制模块,用于开启虚拟机,通过动态调整读指针和写指针在后台将所述磁盘镜像文件异步复制到所述虚拟磁盘。

可选地,所述分区模块包括:

虚拟磁盘空间申请单元,用于根据所述磁盘镜像文件的虚拟大小,对所述虚拟磁盘申请虚拟磁盘空间;

分区单元,用于将所述磁盘空间分为磁盘镜像文件复制分区和虚拟机业务运行分区。

可选地,所述异步复制模块包括:

写指针位置确定单元,用于将所述虚拟磁盘的写指针指向所述虚拟磁盘空间的地址,且所述写指针的起始位置为虚拟磁盘空间中磁盘镜像文件实际大小的结束位置;

读指针位置确定单元,用于将所述虚拟磁盘的读指针指向所述写指针的起始位置,且写指针起始位置处的读指针指向所述磁盘镜像文件;

复制单元,用于复制所述磁盘镜像文件的元数据副本;

元数据信息更新单元,用于根据所述虚拟磁盘写指针的位置,更新所述元数据副本的元数据信息;

虚拟机开启单元,用于根据所述虚拟磁盘开启虚拟机;

拷贝单元,用于开启与所述虚拟机运行业务不同的另一个线程或进程,全量拷贝所述磁盘镜像文件至所述虚拟磁盘;

第一发送单元,用于拷贝完成后,向虚拟化管理层发送写入完毕通知;

第二发送单元,用于根据所述写入完毕通知,虚拟化管理层发送读指针切换指令到虚拟磁盘;

切换单元,用于根据所述读指针切换指令,虚拟磁盘将读指针切换至虚拟磁盘当前写入的结束位置。

可选地,所述系统中还包括取消模块,用于根据所获取的指令,取消磁盘镜像文件异步复制操作。

本申请的实施例提供的技术方案可以包括以下有益效果:

本申请提供一种基于磁盘镜像创建虚拟机的方法,该方法首先根据磁盘镜像的位置确定访问磁盘镜像文件的方式,其次获取磁盘镜像文件的镜像信息,然后根据该镜像信息在目标存储中创建虚拟磁盘,并按照磁盘镜像文件复制业务和虚拟机运行业务,对所述虚拟磁盘的空间进行分区,最后开启虚拟机,通过动态调整读指针和写指针在后台将所述磁盘镜像文件异步复制到所述虚拟磁盘。本实施例在确定磁盘镜像文件访问方式并获取镜像信息后,先根据镜像信息,在目标存储中创建虚拟磁盘,通过对虚拟磁盘的空间进行分区,并不立即拷贝数据,而是在目标存储中申请地址空间并修改指针,以确保后续从写指针开始写入新产生的业务数据。便于在开启虚拟机后,利用写指针和读指针的动态调整,分离虚拟机的读写位置。虚拟磁盘空间分区后,开启虚拟机业务,并在后台将磁盘镜像文件异步复制到虚拟磁盘,这种异步复制的方式,能够将虚拟机开机和数据拷贝过程分离,能够在不影响虚拟机正常读写的情况下进行数据拷贝,能够大大节省虚拟机部署时间,从而有效提高虚拟机部署效率。

本申请还提供一种基于磁盘镜像创建虚拟机的系统,该系统主要包括:访问方式确定模块、镜像信息获取模块、虚拟磁盘创建模块、分区模块以及异步复制模块。通过访问方式确定模块和镜像信息获取模块,能够实现磁盘镜像预处理。通过虚拟磁盘创建模块和分区模块,能够在目标存储中创建虚拟磁盘,并对其空间进行分区,也就是目标存储中申请地址空间并修改指针,以确保后续从写指针开始写入新产生的业务数据。便于在开启虚拟机后,利用写指针和读指针的动态调整,分离虚拟机的读写位置。通过异步复制模块,能够将虚拟机开机和数据拷贝过程分离,在不影响虚拟机正常读写的情况下进行数据拷贝,从而大大节省虚拟机部署时间,进而有效提高虚拟机部署效率。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。

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

图1为本申请实施例所提供的一种基于磁盘镜像创建虚拟机的方法的流程示意图;

图2为本申请实施例所提供的一种基于磁盘镜像创建虚拟机的系统的结构示意图。

具体实施方式

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

为了更好地理解本申请,下面结合附图来详细解释本申请的实施方式。

实施例一

参见图1,图1为本申请实施例所提供的一种基于磁盘镜像创建虚拟机的方法的流程示意图。由图1可知,本实施例中基于磁盘镜像创建虚拟机的方法,主要包括如下过程:

s1:根据磁盘镜像的位置,确定访问磁盘镜像文件的方式。

本实施例中在创建虚拟机之前,先进行如步骤s1所示的预处理过程。磁盘镜像的位置不同,采用不同的访问磁盘镜像文件的方式。具体地,步骤s1包括:

s11:确定磁盘镜像的位置。

磁盘镜像的位置包括:基于远程ip访问的远程目录和本地目录。

如果磁盘镜像的位置处于基于远程ip访问的远程目录下,执行步骤s12:根据当前的访问协议,将磁盘镜像所在的远程目录挂载到目标主机的本地目录下。

可以使用mount命令,根据不同的访问协议进行挂载,本实施例中的访问协议包括但不限于:nfs协议、ftp协议或者cifs协议。

针对基于远程ip访问的远程目录的磁盘镜像,挂载到本地目录下之后,执行步骤s13:在本地目录下访问磁盘镜像文件。

如果磁盘镜像的位置处于本地目录下,执行步骤s14:直接在本地目录下访问磁盘镜像文件。也就是不必挂载直接访问磁盘镜像文件。

继续参见图1可知,确定访问磁盘镜像文件的方式之后,对磁盘镜像文件进行访问,即执行步骤s2:获取磁盘镜像文件的镜像信息。

由于基于远程ip访问的磁盘镜像和本地磁盘镜像此时都在本地目录下,本实施例在本地目录中读取磁盘镜像文件,获取镜像信息。

镜像信息包括:磁盘镜像文件的虚拟大小和实际大小。其中,虚拟大小用于确定磁盘镜像文件占用存储的空间范围,实际大小用于确定磁盘镜像文件中原始的实际数据的起始读写位置和结束读写位置。本实施例中定义实际数据的起始位置为s0,实际数据的结束位置为e0。

获取镜像信息后,执行步骤s3:根据所述镜像信息,在目标存储中创建虚拟磁盘。其中,目标存储中创建有虚拟机。

创建虚拟磁盘后执行步骤s4:按照磁盘镜像文件复制业务和虚拟机运行业务,对虚拟磁盘的空间进行分区。

具体地,步骤s4包括如下过程:

s41:根据磁盘镜像文件的虚拟大小,对虚拟磁盘申请虚拟磁盘空间。

本实施例中,虚拟磁盘空间的大小范围即为磁盘镜像文件的虚拟大小范围。定义磁盘镜像文件的实际大小中实际数据的起始位置为s0,实际数据的结束位置为e0,定义虚拟磁盘空间的起始位置为s1,结束位置为e1。通过步骤s41,能够快速申请复制后的虚拟磁盘空间,有利于提高虚拟机的创建效率。

s42:将磁盘空间分为磁盘镜像文件复制分区和虚拟机业务运行分区。

继续参见图1可知,对虚拟磁盘空间分区之后执行步骤s5:开启虚拟机,通过动态调整读指针和写指针在后台将磁盘镜像文件异步复制到所述虚拟磁盘。

具体地,步骤s5包括如下过程:

s51:将虚拟磁盘的写指针指向虚拟磁盘空间的地址,且写指针的起始位置为虚拟磁盘空间中磁盘镜像文件实际大小的结束位置。

本实施例中写指针的起始位置为s1+(e0-s0)。

s52:将虚拟磁盘的读指针指向写指针的起始位置,且写指针起始位置处的读指针指向所述磁盘镜像文件。

也就是将虚拟磁盘的读指针指向位置s1+(e0-s0),且s1+(e0-s0)位置处的读指针指向磁盘镜像文件。在磁盘镜像文件复制业务执行前,读指针还是指向原来的磁盘镜像文件,从而建立读指针和写指针之间的链接关系。

通过步骤s52,能够根据当前的写指针的起始位置,建立读指针以及磁盘镜像文件的链接关系,从而实现读指针和写指针的移动,实现写指针和读指针的动态调整,进而分离虚拟机的读写位置,确保后续顺利实现异步复制。

s53:复制磁盘镜像文件的元数据副本。

s54:根据虚拟磁盘写指针的位置,更新元数据副本的元数据信息。

通过对读写指针的起始位置和结束位置的分配,实现虚拟磁盘读写分离之后,再通过步骤s53和s54,复制一份磁盘镜像文件的元数据副本,并将元数据副本中的元数据内容修改为新申请的地址信息。

由以上步骤s51-s54可知,本实施例中获取到镜像信息后,并不立即拷贝原始磁盘镜像中的数据,而是仅在目标存储中申请地址空间并修改指针,即申请虚拟磁盘空间并修改读指针和写指针,此时不进行大批量的数据拷贝,处理速度很快,有利于提高创建虚拟机的效率。而且,此时基于新的存储空间所创建的虚拟磁盘,可以快速开启虚拟机,运行业务,从写指针开始写入新产生的业务数据,对虚拟磁盘的分区有利于进一步提高创建虚拟机的效率。

s55:根据虚拟磁盘开启虚拟机。

s56:开启与虚拟机运行业务不同的另一个线程或进程,全量拷贝磁盘镜像文件至虚拟磁盘。

其中,虚拟磁盘当前写入的起始位置为0,结束位置为0+(e0-s0)。

s57:拷贝完成后,向虚拟化管理层发送写入完毕通知。

s58:根据写入完毕通知,虚拟化管理层发送读指针切换指令到虚拟磁盘。

s59:根据读指针切换指令,虚拟磁盘将读指针切换至虚拟磁盘当前写入的结束位置。

通过将读指针切换至虚拟磁盘当前写入操作的结束位置,能够实现读指针与写指针的合一,从而完成一次完整的基于外部磁盘镜像异步创建虚拟机的过程。通过以上步骤s1-s5可知,本实施例在创建虚拟机的过程中,虚拟机可以在真正的数据拷贝之前将业务运行起来,从而避免了等待数据拷贝完成再开启业务的情况,进而大大节省虚拟机创建时间,有利于提高虚拟机部署效率。

进一步地,本实施例中基于磁盘镜像创建虚拟机的方法,还包括步骤s6:根据所获取的指令,取消磁盘镜像文件异步复制操作。

具体地,步骤s6包括如下过程:

s61:根据所获取的取消指令,虚拟化管理层关闭运行中的虚拟机,并发送中断指令。

s62:根据中断指令,终止对磁盘镜像文件的异步复制操作。

s63:删除已创建的虚拟磁盘。

通过删除当前创造虚拟机过程中的相关虚拟磁盘,能够释放创建过程中所占用的存储地址空间,有利于资源的充分利用,提高资源利用率。

s64:判断磁盘镜像的位置是否基于远程ip访问的远程目录。

s65:如果是,根据所获取的指令,取消远程目录的挂载。

可以利用umount指令,取消远程目录的挂载。针对远程ip访问的磁盘镜像,通过步骤s64和s65,能够及时取消对远程目录的挂载,有利于进一步节省资源空间,提高资源利用率。当然,磁盘镜像的位置不是基于远程ip访问的远程目录,而是本地访问时,只需要执行步骤s61-s63即可。

实施例二

在图1所示实施例的基础之上参见图2,图2为本申请实施例所提供的一种基于磁盘镜像创建虚拟机的系统的结构示意图。由图2可知,本实施例中基于磁盘镜像创建虚拟机的系统,主要包括:访问方式确定模块、镜像信息获取模块、虚拟磁盘创建模块、分区模块以及异步复制模块。

其中,访问方式确定模块,用于根据磁盘镜像的位置,确定访问磁盘镜像文件的方式;镜像信息获取模块,用于获取磁盘镜像文件的镜像信息,镜像信息包括:磁盘镜像文件的虚拟大小和实际大小;虚拟磁盘创建模块,用于根据镜像信息,在目标存储中创建虚拟磁盘,其中,目标存储中创建有虚拟机;分区模块,用于按照磁盘镜像文件复制业务和虚拟机运行业务,对所述虚拟磁盘的空间进行分区;异步复制模块,用于开启虚拟机,通过动态调整读指针和写指针在后台将所述磁盘镜像文件异步复制到所述虚拟磁盘。

进一步地,访问方式确定模块包括:磁盘镜像位置确定单元、远程访问单元和本地访问单元。其中,磁盘镜像位置确定单元,用于确定磁盘镜像的位置,位置包括:基于远程ip访问的远程目录和本地目录。远程访问单元,用于当磁盘镜像的位置处于基于远程ip访问的远程目录下时,根据当前的访问协议,将磁盘镜像所在的远程目录挂载到目标主机的本地目录下,访问协议包括:nfs协议、ftp协议或者cifs协议,以及,在本地目录下访问磁盘镜像文件。本地访问单元,用于当磁盘镜像的位置处于本地目录下时,直接在本地目录下访问磁盘镜像文件。

分区模块包括:虚拟磁盘空间申请单元和分区单元。其中,虚拟磁盘空间申请单元,用于根据磁盘镜像文件的虚拟大小,对虚拟磁盘申请虚拟磁盘空间;分区单元,用于将磁盘空间分为磁盘镜像文件复制分区和虚拟机业务运行分区。

异步复制模块包括:写指针位置确定单元、读指针位置确定单元、复制单元、元数据信息更新单元、虚拟机开启单元、拷贝单元、第一发送单元、第二发送单元和切换单元。

其中,写指针位置确定单元,用于将虚拟磁盘的写指针指向虚拟磁盘空间的地址,且写指针的起始位置为虚拟磁盘空间中磁盘镜像文件实际大小的结束位置;读指针位置确定单元,用于将虚拟磁盘的读指针指向写指针的起始位置,且写指针起始位置处的读指针指向磁盘镜像文件;复制单元,用于复制磁盘镜像文件的元数据副本;元数据信息更新单元,用于根据虚拟磁盘写指针的位置,更新元数据副本的元数据信息。虚拟机开启单元,用于根据虚拟磁盘开启虚拟机;拷贝单元,用于开启与虚拟机运行业务不同的另一个线程或进程,全量拷贝磁盘镜像文件至虚拟磁盘;第一发送单元,用于拷贝完成后,向虚拟化管理层发送写入完毕通知;第二发送单元,用于根据写入完毕通知,虚拟化管理层发送读指针切换指令到虚拟磁盘;切换单元,用于根据读指针切换指令,虚拟磁盘将读指针切换至虚拟磁盘当前写入的结束位置。

进一步地,本实施例中磁盘镜像创建虚拟机的系统,还包括有取消模块,用于根据所获取的指令,取消磁盘镜像文件异步复制操作。

取消模块又包括:关闭单元、终止单元、删除单元、删除单元和挂载取消单元。其中,关闭单元,用于根据所获取的取消指令,虚拟化管理层关闭运行中的虚拟机,并发送中断指令;终止单元,用于根据中断指令,终止对磁盘镜像文件的异步复制操作;删除单元,用于删除已创建的虚拟磁盘;判断单元,用于判断磁盘镜像的位置是否基于远程ip访问的远程目录;挂载取消单元,用于当磁盘镜像的位置是基于远程ip访问的远程目录时,根据所获取的指令,取消远程目录的挂载。

该实施例中基于磁盘镜像创建虚拟机的系统的工作原理和工作方法,在图1所示的实施例中已经详细阐述,两个实施例之间可以互相参照,在此不再赘述。

以上所述仅是本申请的具体实施方式,使本领域技术人员能够理解或实现本申请。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1