本发明涉及openstack云平台技术领域,具体的说是一种基于云平台的多启动卷虚拟机启动顺序变更方法。
背景技术:
随着云平台技术的快速发展和普及,云计算技术已经逐渐应用在各个领域,越来越多的企事业单位和个人将传统应用迁移到云数据中心。
openstack作为云平台中的主流开源平台,为广大用户提供了iaas层虚机管理功能。
目前,openstack开源社区所实现的虚机创建过程中,虽然支持挂载多个卷,但是没有考虑对单个虚机实例进行多个卷之间的启动切换,即已有技术不支持多启动卷之间进行启动卷的切换。尤其对于有切换操作系统、或者使用临时启动卷对原有操作系统进行修复的需求时,显然现有技术是不能满足的。
技术实现要素:
针对openstack平台虚拟机没有提供多启动卷进行启动顺序变更的问题,无法满足用户根据需要方便地切换操作系统或启动卷,本发明提供一种基于云平台的多启动卷虚拟机启动顺序变更方法。
本发明的一种基于云平台的多启动卷虚拟机启动顺序变更方法,解决上述技术问题采用的技术方案如下:
一种基于云平台的多启动卷虚拟机启动顺序变更方法,针对kvm和qemu搭建的openstack云平台,
基于nova-api服务,在允许用户请求重新定义卷启动顺序时,修改虚拟机实例的启动卷信息和块设备映射信息,并根据用户请求向nova-compute发送进行硬重启调用的消息,
基于nova-compute服务,变更虚拟机硬重启的处理,生成虚拟机实例定义的xml文件,借助底层qemu的对启动顺序的支持,实现openstack云平台对多启动卷虚拟机启动顺序变更功能的支持。
可选的,允许用户请求重新定义卷启动顺序,其具体流程为:
定义查询虚拟机实例的卷的启动顺序接口,
定义查询允许用户请求重新定义虚拟机实例所挂载的卷启动顺序变更接口,用户请求包含新定义的卷启动信息,
处理请求时,根据新定义的卷启动信息对虚拟机实例信息进行启动卷信息变更和块设备映射信息的变更,
随后根据用户的请求向nova-compute发送进行硬重启调用的消息。
进一步可选的,用户请求包含新定义的卷启动信息,新定义的卷启动信息包括每个启动卷的启动顺序信息和是否进行立即硬重启的可选项。
进一步可选的,基于虚拟机启动的卷大小会因为变更启动卷顺序后而变更,处理请求时,还根据新定义的卷启动信息对虚拟机实例信息进行规格变更。
进一步可选的,根据用户的请求向nova-compute发送进行硬重启调用的消息时,是否发送重启请求取决于用户是否将硬重启选项设置为是,如果选择立即重启,则启动顺序修改立即生效。
可选的,变更虚拟机硬重启的处理时,应当首先判断当前计算节点是否支持变更启动顺序,
若支持,则对虚拟机的配置进行变更,生成虚拟机实例定义的xml文件,
若不支持,则按虚拟机实例的原配置信息进行虚拟机定义xml文件的生成。
进一步可选的,虚拟机硬重启,生成虚拟机实例定义的xml文件,其具体流程为:
根据虚拟机实例的信息重新构建虚拟机配置,
判断当前虚拟机是否由qemu虚拟化,
判断启动盘类型是否为“hd”,
判断虚拟机是否挂载了多块可启动卷,
在判断结果全部为是时,满足条件,变更虚拟机的配置,增加块设备定义的bootindex,清除os元素中的bootdev元素,
随后根据虚拟机配置加入bootorder属性信息,并转换为虚拟机实例定义的xml文件。
进一步可选的,基于虚拟机实例定义的xml文件,qemu根据新的启动顺序启动虚拟机。
本发明的一种基于云平台的多启动卷虚拟机启动顺序变更方法,与现有技术相比具有的有益效果是:
1)本发明针对kvm和qemu搭建的openstack云平台,通过nova-api服务允许用户请求重新定义卷启动顺序,修改虚拟机实例的启动卷信息和块设备映射信息,并根据用户请求向nova-compute发送进行硬重启调用的消息,通过nova-compute服务,变更虚拟机硬重启的处理,生成虚拟机实例定义的xml文件,借助底层qemu的对启动顺序的支持,实现openstack云平台对多启动卷虚拟机启动顺序变更功能的支持;
2)本发明实现了openstack虚拟机支持挂载多个启动卷设备,并根据需要选择使用选取的启动卷进行虚机的启动,达到切换启动卷进行启动甚至以此方法切换操作系统的目的。
附图说明
附图1是本发明的方法流程图。
具体实施方式
为使本发明的技术方案、解决的技术问题和技术效果更加清楚明白,以下结合具体实施例,对本发明的技术方案进行清楚、完整的描述。
实施例一:
结合附图1,本实施例提出一种基于云平台的多启动卷虚拟机启动顺序变更方法,针对kvm和qemu搭建的openstack云平台,通过变更nova-api服务和nova-compute服务,实现了openstack云平台对多启动卷虚拟机启动顺序变更功能的支持。
(一)基于nova-api服务,在允许用户请求重新定义卷启动顺序时,修改虚拟机实例的启动卷信息和块设备映射信息,并根据用户请求向nova-compute发送进行硬重启调用的消息。
本操作中,允许用户请求重新定义卷启动顺序,其具体流程为:
定义查询虚拟机实例的卷的启动顺序接口;
定义查询允许用户请求重新定义虚拟机实例所挂载的卷启动顺序变更接口,用户请求包含新定义的卷启动信息,新定义的卷启动信息包括每个启动卷的启动顺序信息和是否进行立即硬重启的可选项;
处理请求时,根据新定义的卷启动信息对虚拟机实例信息进行启动卷信息变更和块设备映射信息的变更;本实施例中,基于虚拟机启动的卷大小会因为变更启动卷顺序后而变更,还根据新定义的卷启动信息对虚拟机实例信息进行规格变更;
随后根据用户的请求向nova-compute发送进行硬重启调用的消息。
本操作中,根据用户的请求向nova-compute发送进行硬重启调用的消息时,是否发送重启请求取决于用户是否将硬重启选项设置为是,如果选择立即重启,则启动顺序修改立即生效。
(二)基于nova-compute服务,变更虚拟机硬重启的处理,生成虚拟机实例定义的xml文件,借助底层qemu的对启动顺序的支持,实现openstack云平台对多启动卷虚拟机启动顺序变更功能的支持。
本操作中,变更虚拟机硬重启的处理时,首先判断当前计算节点是否支持变更启动顺序,
(a)若支持,则
(1)根据虚拟机实例的信息重新构建虚拟机配置,
(2)判断
(a)当前虚拟机是否由qemu虚拟化,
(b)启动盘类型是否为“hd”,
(c)虚拟机是否挂载了多块可启动卷,
(3)在(a)、(b)、(c)全部是时,满足条件,变更虚拟机的配置,增加块设备定义的bootindex,清除os元素中的bootdev元素,
(4)随后根据虚拟机配置加入bootorder属性信息,并转换为虚拟机实例定义的xml文件。
(b)若不支持,则按虚拟机实例的原配置信息进行虚拟机定义xml文件的生成。
本操作中,基于虚拟机实例定义的xml文件,qemu根据新的启动顺序启动虚拟机。
综上可知,采用本发明的一种基于云平台的多启动卷虚拟机启动顺序变更方法,针对kvm和qemu搭建的openstack云平台,基于nova-api服务和nova-compute服务,实现了openstack虚拟机支持挂载多个启动卷设备,并根据需要选择使用选取的启动卷进行虚机的启动,达到切换启动卷进行启动甚至以此方法切换操作系统的目的。
以上应用具体个例对本发明的原理及实施方式进行了详细阐述,这些实施例只是用于帮助理解本发明的核心技术内容。基于本发明的上述具体实施例,本技术领域的技术人员在不脱离本发明原理的前提下,对本发明所作出的任何改进和修饰,皆应落入本发明的专利保护范围。