一种可快速还原系统盘的虚拟机创建方法

文档序号:6512349阅读:178来源:国知局
一种可快速还原系统盘的虚拟机创建方法
【专利摘要】本发明涉及云计算【技术领域】,特别是指一种可快速还原系统盘的虚拟机创建方法。本发明首先将制作好的虚拟机镜像上传到NFS服务器中保存;然后以共享存储的方式将NFS服务器挂载到宿主机;将虚拟机母版镜像拷贝到宿主机本地存储指定目录;对本地存储指定目录中的模板镜像创建外部快照;利用外部快照文件创建虚拟机和快速还原虚拟机系统盘。本发明提供了一种可快速还原系统盘的虚拟机创建方法,使虚拟机可以随时在秒级时间上还原到刚创建的时候;可以用于虚拟机的创建。
【专利说明】一种可快速还原系统盘的虚拟机创建方法
【技术领域】
[0001]本发明涉及云计算【技术领域】,特别是指一种可快速还原系统盘的虚拟机创建方法。
【背景技术】
[0002]对于经常由不同的人员使用的虚拟机来说,考虑到用户数据保密性和系统安全性,有必要对系统盘进行还原。目前可用于虚拟机系统盘还原的方法有两种。第一种方法是使用还原精灵一类的软件,这种方法首先会对系统盘的初始数据做一个备份,每次操作系统重启后,将系统盘还原到备份时的状态;这种方法有以下缺点:1、系统盘的备份数据会占用虚拟机磁盘的空间,造成额外的存储空间浪费;2、还原精灵一类的软件每次关机后再开机都会执行系统盘还原,不能有选择性地执行还原;3、还原时间过长。
[0003]第二种方法是在虚拟机创建完毕以后创建快照,在需要对系统盘进行还原时使用这个快照还原到初始状态;这种方法有如下缺点:1、虚拟机的快照会占用宿主机额外的磁盘空间;2、还原时间过长。
[0004]为了能够满足虚拟机快速还原系统盘到刚创建的时候而又避免存储资源的浪费和还原事件过长的问题,需要一种可快速还原系统盘的虚拟机创建方法。

【发明内容】

[0005]本发明解决的技术问题在于提供一种可快速还原系统盘的虚拟机创建方法,解决现存系统还原方法浪费存储资源、还原时间非常长等问题,另外本发明还实现了可按照用户需要随时还原系统盘,还原过程中时间非常短,能达到秒级还原的效果。
[0006]本发明解决上述技术问题的技术方案是:
[0007]包括如下步骤:
[0008]步骤1:将制作好的虚拟机镜像上传到NFS服务器中保存;
[0009]步骤2:然后以共享存储的方式将NFS服务器挂载到宿主机;
[0010]步骤3:将虚拟机母版镜像拷贝到宿主机本地存储指定目录;如果宿主机本地存储指定目录上面已经存在该母版镜像,则放弃;
[0011]步骤4:对本地存储指定目录中的模板镜像创建外部快照;
[0012]步骤5:利用外部快照文件创建虚拟机和快速还原虚拟机系统盘。
[0013]所述的虚拟机创建过程如下:
[0014](I)从NFS服务器中拷贝虚拟机镜像文件到宿主机本地存储目录I;
[0015](2)对镜像文件做外部快照,并将快照文件保存到宿主机本地存储目录2;
[0016](3)准备启动虚拟机所需要的配置文件并启动虚拟机;
[0017](4)为虚拟机挂载存储卷,用作永久数据保存。
[0018]所述的虚拟机系统盘还原过程如下:
[0019](I)卸载虚拟机的存储卷;[0020](2)强制关闭虚拟机;
[0021](3)删除虚拟机对应宿主机本地存储目录2中的外部快照文件;
[0022](4)利用本地存储目录I中的母版镜像重新创建外部快照;
[0023](5)重新启动虚拟机;
[0024](6)挂载之前保存有永久数据的存储卷。
[0025]所述的母版镜像是创建虚拟机时准备的原始镜像文件。
[0026]所述的外部快照是指虚拟机管理平台针对虚拟机镜像文件提供的一个工具,利用它创建的快照文件启动虚拟机,用户在虚拟机内部新建、删除、修改文件等操作时只会修改快照文件,而不会影响到母版镜像。
[0027]采用本发明的方法创建虚拟机,在进行系统还原时,无需依赖于还原软件,避免浪费存储资源。利用外部快照文件创建虚拟机和快速还原虚拟机系统盘,实现了按照用户需要随时还原系统盘。本发明的方法可缩短还原时间,能达到秒级还原的效果。
【专利附图】

【附图说明】
[0028]下面结合附图对本发明进一步说明:
[0029]图1是本发明方法流程图;
[0030]图2是本发明创建虚拟机流程图;
[0031]图3是本发明还原系统盘流程图。
【具体实施方式】
[0032]请参阅附图,本发明首先准备一台单独物理机作为NFS服务器(例如IP为20.251.32.19,用户可自定义),进行如下操作完成NFS服务器的搭建:
[0033]步骤1:登陆服务器,创建/sdb文件夹
[0034]#mkdir /sdb
[0035]#mkdir /sdb/images
[0036]#mkdir /sdb/buckets_xm
[0037]#mkdir /sdb/isos
[0038]步骤2:编辑/etc/exports,添加如下内容:
[0039]#vi /etc/exports
[0040]/sdb* (rw, no—root—squash)
[0041]步骤3:启动nfs服务
[0042]#/etc/init.d/nfs start
[0043]步骤4:将nfs服务加入开机启动
[0044]#chkconfig—add/etc/init.d/nfs
[0045]#chkconfig—level2345nfs on
[0046]然后进入宿主机挂载NFS服务器到本地:
[0047]步骤1:登录宿主机服务器,查看是否能访问nfs服务。
[0048]#showmount-e20.251.32.19
[0049]步骤2:挂载NFS到本地/sharefiles目录[0050]#mount _t nfs _o vers = 320.251.32.19:/sdb/sharefiles[0051 ] 步骤3:设置NFS开机自动挂载
[0052]#echo" mount _t nfs _o vers = 3, nolock20.251.32.19:/sdb/sharefiles;/> > /etc/rc.local
[0053]经过以上步骤,保证了 NFS服务器能够为宿主机提供正常服务,然后创建虚拟机,利用dd命令或者cp命令将模板镜像拷贝到宿主机本地存储/instances目录下面:
[0054]dd if = /sharefiles/images/em1-χχχχχχχχ of = /instances/cache
[0055]执行“qemu-1mg create -f qcow2 _b母镜像路径虚拟机系统镜像名字”创建外
部快照,具体代码如下:
[0056]
int vmSnapCreate (const char * in, const char * out) {
[0057]
logprintfl(EUCAINFO,XIONGM_DEBUG"enter function: %s \n",—func—);
int ret = OK;
char * Output=NULL;
output = pruntf (TR UE, "qemu-1mg create -b %s -f qcow2 %s", in.0ut);
if (!output) {
logprintfl(EUCAERROR,XIONGM_DEBUG"leave function: %s withFAILED \n —func—);
return ERROR;
I else {
free (output);
logprintfl(EUCAINFO,XiONGM_DEBUG"leave function: %s withSUCCESS \n",_func_);
}
return ret;
}
[0058]接着准备启动虚拟机配置文件libvirt.xml,代码如下:
[0059]int gen_libvirt_instance_xml(nclnstance * instance) {
logprintfl(EUCAINFO, XIONGM_DEBUG!,entei function: %s \n",_ tunc_);
char instanceXmlFilePath[CH/\R_BUFFER_SIZE];
snprintf(mstanceXmlFilePath, CHAR—BUFFER—SIZE, n%s/instance.xml",
i n stan c e -> i n s tan c e Wo rk P at h);
[0060]snprintf(instance->libvirtFilePath,CHAR_BUFFER_SIZE,
"%s/libviit.xmr!, instance->instanceWorkPath);pthrcad_mutcx_lock(&xml_mutex);
int ret = apply_xslt_styleslieet(xs1t_path, instanceXmlFilePath,instance->libvirtFilePath, NULL.0);
pthread_mutex_unlock(&xml_mutex)
logprinttl(EUCAINFO, XIONGM_DEBUG"leave function: %s withret=%d(():success 1:failed) VrT,—func— ict)return ret;
}
[0061]最后根据虚拟机配置文件、外部快照文件以及母版镜像启动运行虚拟机,代码片
段如下:
[0062]xml=file2str(instance->libvirtFilePath); virDomainPtr dom=NULL;
dom=virDomainDefineXML(nc_state.conn,xml);//define PersistentInstance if(xml) free(xml); if(dom) {
//virDomainSetAutostart(dom,0);
ret= v i rDomai nCreate(do m);
if(ret==0) {
result=0;/./success
change_state(instance,RUNNING);
[0063]
[0064]最后用户通过创建存储卷并挂载到虚拟机使用即可。
[0065]根据前面的步骤已经完成了可快速还原系统盘的虚拟机创建,至于虚拟机系统盘快速回复的过程是通过删除虚拟机已有的外部快照文件,另外由母版镜像重新创建一个外部快照文件,创建外部快照过程跟上面一样,并且这个过程几乎能在I秒之内完成,达到了快速还原系统盘的要求。
【权利要求】
1.一种可快速还原系统盘的虚拟机创建方法,其特征在于: 包括如下步骤: 步骤1:将制作好的虚拟机镜像上传到NFS服务器中保存; 步骤2:然后以共享存储的方式将NFS服务器挂载到宿主机; 步骤3:将虚拟机母版镜像拷贝到宿主机本地存储指定目录;如果宿主机本地存储指定目录上面已经存在该母版镜像,则放弃; 步骤4:对本地存储指定目录中的模板镜像创建外部快照; 步骤5:利用外部快照文件创建虚拟机和快速还原虚拟机系统盘。
2.根据权利要求1所述的虚拟机创建方法,其特征在于:所述的虚拟机创建过程如下: (1)从NFS服务器中拷贝虚拟机镜像文件到宿主机本地存储目录I; (2)对镜像文件做外部快照,并将快照文件保存到宿主机本地存储目录2; (3)准备启动虚拟机所需要的配置文件并启动虚拟机; (4)为虚拟机挂载存储卷,用作永久数据保存。
3.根据权利要求1所述的虚拟机创建方法,其特征在于:所述的虚拟机系统盘还原过程如下: (1)卸载虚拟机的存储卷; (2)强制关闭虚拟机; (3)删除虚拟机对应宿主机本地存储目录2中的外部快照文件; (4)利用本地存储目录I中的母版镜像重新创建外部快照; (5)重新启动虚拟机; (6)挂载之前保存有永久数据的存储卷。
4.根据权利要求2所述的虚拟机创建方法,其特征在于:所述的虚拟机系统盘还原过程如下: (1)卸载虚拟机的存储卷; (2)强制关闭虚拟机; (3)删除虚拟机对应宿主机本地存储目录2中的外部快照文件; (4)利用本地存储目录I中的母版镜像重新创建外部快照; (5)重新启动虚拟机; (6)挂载之前保存有永久数据的存储卷。
5.根据权利要求1至4任一项所述的虚拟机创建方法,其特征在于:所述的母版镜像是创建虚拟机时准备的原始镜像文件。
6.根据权利要求1至4任一项所述的虚拟机创建方法,其特征在于:所述的外部快照是指虚拟机管理平台针对虚拟机镜像文件提供的一个工具,利用它创建的快照文件启动虚拟机,用户在虚拟机内部新建、删除、修改文件等操作时只会修改快照文件,而不会影响到母版镜像。
7.根据权利要求5所述的虚拟机创建方法,其特征在于:所述的外部快照是指虚拟机管理平台针对虚拟机镜像文件提供的一个工具,利用它创建的快照文件启动虚拟机,用户在虚拟机内部新建、删除、修改文件等操作时只会修改快照文件,而不会影响到母版镜像。
【文档编号】G06F9/44GK103473065SQ201310430422
【公开日】2013年12月25日 申请日期:2013年9月18日 优先权日:2013年9月18日
【发明者】熊梦, 杨松, 莫展鹏, 季统凯 申请人:国云科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1