本发明涉及虚拟机重建领域,具体地说是一种卷启动的虚拟机重建方法、终端及可读存储介质。
背景技术:
随着信息技术和云计算的发展,教育、科学、文化、政府等多个领域开始越来越多地应用云计算技术,因此,云计算平台中的用户数量也在逐渐增多,用户对openstack中计算和存储的需求越来越明晰化、具体化。
在目前openstack环境下,通过启动卷创建的虚拟机不支持rebuild操作,用户无法对启动卷创建的虚拟机进行重建操作,使openstack在灵活性上受到限制,用户的体验上受到局限性。openstack的nova组件对volume启动的虚拟机不支持rebuild操作,对卷启动的虚拟机rebuild时不允许使用其他镜像,而cinder以及cinder_volume没有对应的rebuild方法,cinderclient同时也没有提供与nova对接的api命令。
针对以上问题,如何实现在openstack中对启动卷创建的虚拟机支持重建,是需要解决的技术问题。
技术实现要素:
本发明的技术任务是针对以上不足,提供一种一种卷启动的虚拟机重建方法、终端及可读存储介质,来解决如何实现在openstack中对启动卷创建的虚拟机支持重建的问题。
第一方面,本发明提供一种卷启动的虚拟机重建方法,所述方法基于openstack用于对启动卷创建的虚拟机进行重建,包括如下步骤:
s100、在nova组件中,将挂载的原卷与实例分离,destroy虚拟机,并将卷的状态置为reserved;
s200、在cinder组件中增设用于重建卷的api接口,将原卷删除,根据api接口传入的参数创建新卷并将镜像中的内容填充至新卷中;
s300、nova组件中对卷的状态进行检验,当卷创建成功后将创建新卷挂载至虚拟机,并同步更新数据库;
所述参数包括volume_id和image_id。
作为优选,步骤s100中,将挂载的原卷与实例分离,destroy虚拟机之前,停止nova组件中api接口对重建卷后端虚拟机的检查,不需对比卷的image信息。
作为优选,步骤s200包括如下分步骤:
调用cinderclient,通过cinderclient将参数发送至cinder组件;
调用cinderapi组件中新增的rebuild接口,根据参数volume_id获取卷的信息,并对卷进行校验;
cindermanager调用底层驱动的delete_volume方法,删除后端卷后,调用create_volume方法创建新的后端卷;
根据传入的参数volume_id创建新卷并将镜像中的内容填充至新卷中。
作为优选,根据参数volume_id获取卷的信息,并对卷进行校验,包括对卷的状态和大小进行校验。
作为优选,步骤s200中,如果重建卷的过程出错,将虚拟机的状态设置为error,并执行步骤s100和步骤s200进行重建,直至重建成功。
作为优选,步骤s300,包括如下分步骤:
在nova组件中,调用api接口的重建请求,对参数进行检验;
novamanager中循环查询cinder组件中创建的新卷的状态;
如果新卷创建成功,且新卷的状态为reserved,novamanager调用attach_volume方法将新卷重新挂载至虚拟机,并重新启动虚拟机;
如果新卷创建失败,或者新卷创建成功、但状态不是reserved,则重新执行步骤s100-步骤s300。
作为优选,步骤s100中,在nova组件中,将挂载的原卷与实例分离,包括如下步骤:
调用api接口的重建请求,对参数进行校验;
novamanager调用detach_volume方法将挂载的原卷与实例分离,将状态置为reserved。
第二方面,本发明提供一种终端,包括处理器、输入设备、输出设备和存储器,处理器、输入设备、输出设备和存储器相互连接,存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令执行如第一方面任一项所述的一种卷启动的虚拟机重建方法。
第三方面,本发明提供一种可读存储介质,为计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,程序指令当被处理器执行时所述处理器执行如第一方面任一项所述的一种卷启动的虚拟机重建方法。
本发明的一种卷启动的虚拟机重建方法、终端及可读存储介质具有以下优点:在cinder组件中增设用于重建卷的api接口,在nova组件中将挂载的原卷与实例分离,并destroy虚拟机后,在cinder组件中通过api接口检验参数,并根据api接口传入的参数创建新卷并将镜像中的内容填充至新卷中,并同步更新数据库,在nova组件中调用用于重建卷的api接口对参数进行检验,并将创建成功的新卷挂载至虚拟机,从而实现了在openstack中对启动卷创建的虚拟机进行重建。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
下面结合附图对本发明进一步说明。
附图1为实施例1一种卷启动的虚拟机重建方法中openstack框架的结构示意图;
附图2为实施例1一种卷启动的虚拟机重建方法的流程框图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步说明,以使本领域的技术人员可以更好地理解本发明并能予以实施,但所举实施例不作为对本发明的限定,在不冲突的情况下,本发明实施例以及实施例中的技术特征可以相互结合。
本发明实施例提供一种卷启动的虚拟机重建方法、终端及可读存储介质,用于解决如何实现在openstack中对启动卷创建的虚拟机支持重建的技术问题。
实施例1:
如附图1和附图2所示,本发明的一种卷启动的虚拟机重建方法,其后端存储为lvm(logicalvolumemanager,逻辑卷管理)或者为ceph对接的cinder,该方法基于openstack用于对启动卷创建的虚拟机进行重建,包括如下步骤:
s100、在nova组件中,将挂载的原卷与实例分离,destroy虚拟机,并将卷的状态置为reserved;
s200、在cinder组件中增设用于重建卷的api接口,将原卷删除,根据api接口传入的参数创建新卷并将镜像中的内容填充至新卷中;
s300、nova组件中对卷的状态进行检验,当卷创建成功后将创建新卷挂载至虚拟机,并同步更新数据库;
其中上述参数包括volume_id和image_id。
步骤s100中,将挂载的原卷与实例分离,destroy虚拟机之前,停止nova组件中api接口对重建卷后端虚拟机的检查,不需对比卷的image信息。
步骤s100中,在nova组件中,将挂载的原卷与实例分离,包括如下分步骤:
s110、调用api接口的重建请求,对参数进行校验;
s120、novamanager调用detach_volume方法将挂载的原卷与实例分离。
步骤s200包括如下分步骤:
s210、调用cinderclient,通过cinderclient将参数发送至cinder组件;
s220、调用cinder组件中增设的api接口,用于对参数进行校验;
s230、调用cinder组件中api接口的重建请求,根据参数volume_id获取卷的信息,并对卷进行校验,包括对卷的状态和大小等进行校验;
s240、cindermanager调用底层驱动的delete_volume方法,删除后端卷后,调用create_volume方法创建新的后端卷;
s250、根据传入的参数volume_id创建新卷并将镜像中的内容填充至新卷中。
步骤s200中,重建卷可以直接对后端进行删除和创建,不需要对当前的卷进行备份,如果一旦重建出错,则将虚拟机的状态置为‘error’,示意虚拟机重建失败,并执行步骤s100和步骤s200进行重建,直至重建成功。
步骤s300中,在nova端循环查询cinder新创建的卷的状态,卷创建成功并且状态为reserved时,nova将卷重新挂载到虚拟机上,重新启动;若创建卷中异常直接中止操作,提示用户重新操作,具体包括如下分步骤:
s310、在nova组件中,调用api接口的重建请求,对参数进行检验;
s320、调用novamanager,循环查询cinder组件中创建的新卷的状态;
s330、如果新卷创建成功,且新卷的状态为reserved,novamanager调用attach_volume方法将新卷重新挂载至虚拟机,并重新启动虚拟机;
s340、如果新卷创建失败,或者新卷创建成功、但状态不是reserved,则重新执行步骤s100-步骤s300。
本实施例中在cinder组件中增加了一个重建卷的api接口,该api接口接受一个“volume_id”和“image_id”,将原卷detach并删除,根据传入的volume_id创建新的卷并将镜像中的内容填充到新卷中;nova组件方面则需要修改重建虚拟机的代码,调用重建卷的api,将卷内容恢复到给定的镜像,同时更新数据库中的数据。
实施例2:
本发明的一种终端,包括处理器、输入设备、输出设备和存储器,处理器、输入设备、输出设备和存储器相互连接,存储器用于存储计算机程序,计算机程序包括程序指令,处理器被配置用于调用所述程序指令执行如实施例1公开的一种卷启动的虚拟机重建方法。
实施例3:
本发明的一种可读存储介质,为计算机可读存储介质,该计算机可读存储介质存储有计算机程序,计算机程序包括程序指令,程序指令当被处理器执行时所述处理器执行如实施例1公开的一种卷启动的虚拟机重建方法。
计算机可读存储介质包括但不限于机械硬盘、固态硬盘等。
以上所述实施例仅是为充分说明本发明而所举的较佳的实施例,本发明的保护范围不限于此。本技术领域的技术人员在本发明基础上所作的等同替代或变换,均在本发明的保护范围之内。本发明的保护范围以权利要求书为准。
1.一种卷启动的虚拟机重建方法,其特征在于所述方法基于openstack用于对启动卷创建的虚拟机进行重建,包括如下步骤:
s100、在nova组件中,将挂载的原卷与实例分离,destroy虚拟机,并将卷的状态置为reserved;
s200、在cinder组件中增设用于重建卷的api接口,将原卷删除,根据api接口传入的参数创建新卷并将镜像中的内容填充至新卷中;
s300、nova组件中对卷的状态进行检验,当卷创建成功后将创建新卷挂载至虚拟机,并同步更新数据库;
所述参数包括volume_id和image_id。
2.根据权利要求1所述的一种卷启动的虚拟机重建方法,其特征在于步骤s100中,将挂载的原卷与实例分离,destroy虚拟机之前,停止nova组件中api接口对重建卷后端虚拟机的检查,不需对比卷的image信息。
3.根据权利要求1或2所述的一种卷启动的虚拟机重建方法,其特征在于步骤s200包括如下分步骤:
调用cinderclient,通过cinderclient将参数发送至cinder组件;
调用cinderapi组件中新增的rebuild接口,根据参数volume_id获取卷的信息,并对卷进行校验;
cindermanager调用底层驱动的delete_volume方法,删除后端卷后,调用create_volume方法创建新的后端卷;
根据传入的参数volume_id创建新卷并将镜像中的内容填充至新卷中。
4.根据权利要求3所述的一种卷启动的虚拟机重建方法,其特征在于根据参数volume_id获取卷的信息,并对卷进行校验,包括对卷的状态和大小进行校验。
5.根据权利要求1、2或3所述的一种卷启动的虚拟机重建方法,其特征在于步骤s200中,如果重建卷的过程出错,将虚拟机的状态设置为error,并执行步骤s100和步骤s200进行重建,直至重建成功。
6.根据权利要求根据权利要求1、2或3所述的一种卷启动的虚拟机重建方法,其特征在于步骤s300,包括如下分步骤:
在nova组件中,调用api接口的重建请求,对参数进行检验;
novamanager中循环查询cinder组件中创建的新卷的状态;
如果新卷创建成功,且新卷的状态为reserved,novamanager调用attach_volume方法将新卷重新挂载至虚拟机,并重新启动虚拟机;
如果新卷创建失败,或者新卷创建成功、但状态不是reserved,则重新执行步骤s100-步骤s300。
7.根据权利要求1、2或3所述的一种卷启动的虚拟机重建方法,其特征在于步骤s100中,在nova组件中,将挂载的原卷与实例分离,包括如下步骤:
调用api接口的重建请求,对参数进行校验;
novamanager调用detach_volume方法将挂载的原卷与实例分离,将状态置为reserved。
8.一种终端,其特征在于包括处理器、输入设备、输出设备和存储器,处理器、输入设备、输出设备和存储器相互连接,存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令执行如权利要求1-7任一项所述的一种卷启动的虚拟机重建方法。
9.一种可读存储介质,为计算机可读存储介质,其特征在于所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,程序指令当被处理器执行时所述处理器执行如权利要求1-7任一项所述的一种卷启动的虚拟机重建方法。
技术总结