CN103473113B - 一种通用的虚拟机收养方法 - Google Patents
一种通用的虚拟机收养方法 Download PDFInfo
- Publication number
- CN103473113B CN103473113B CN201310397427.5A CN201310397427A CN103473113B CN 103473113 B CN103473113 B CN 103473113B CN 201310397427 A CN201310397427 A CN 201310397427A CN 103473113 B CN103473113 B CN 103473113B
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- host
- virtual
- machine
- adopt
- 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.)
- Active
Links
Landscapes
- Stored Programmes (AREA)
Abstract
本发明涉及云计算技术领域,特别是指一种通用的虚拟机收养方法。本发明首先获取虚拟机列表;然后根据列表中的虚拟机ID依次获取明细信息;根据该信息在宿主机上准备好xml格式配置文件、创建包含有所属宿主机IP地址的文件;然后定时、依次扫描判断虚拟机是否处于可收养状态;如果处于可收养,则进行IP一致比较,一致则收养。本发明提供了一种通用的虚拟机收养机制,可收养XEN、KVM、VMware等所有适配libvirt的持久化和非持久化虚拟机;可应用于虚拟化尤其是云计算领域里宿主机对虚拟机的管理控制上。
Description
技术领域
本发明涉及云计算技术领域,特别是指一种通用的虚拟机收养方法。
背景技术
云计算解决方案中,各个计算节点存在着大量的持久化、非持久化虚拟机。这些虚拟机创建方式又各不相同,有的是在XEN环境下创建,有的是在KVM环境下创建,另外还有Vmware等。除了虚拟化环境不同以外,计算节点上面的虚拟机还存在有的是通过管理平台创建,有的又是管理人员直接从底层创建。面对各种情况下的虚拟机,需要云平台提供一种通用的、简单而有效的虚拟机收养方式,以实现对虚拟机及时有效的管理。
目前虚拟机的收养,有如下方法:在宿主机上调用hypervisor的命令获取当前注册在宿主机上的虚拟机列表;根据列表中显示的虚拟机ID调用hypervisor命令获取单台虚拟机的明细信息,得到虚拟机的二进制配置文件和虚拟磁盘文件的路径;利用linux中内存文件映射mmap将虚拟机二进制文件保存到物理磁盘文件中;虚拟机收养模块读取该二进制文件实现虚拟机的收养。
这种收养方式存在如下问题:
一是不方便,虚拟机的收养依赖于一个二进制文件,这个文件对于底层管理人员来说是透明的,我们无法对虚拟机的配置做相应修改,这样就不利于错误的排查;
二是收养不完整,这种虚拟机收养机制完全依赖于云平台,如果管理人员在底层一不小心将虚拟机的二进制文件删除或者进行了错误操作,那么这样的虚拟机就不能被收养;另外当底层开发人员或是管理人员没有通过云平台而是自己手动创建了虚拟机进行相关的开发试验时,由于这些虚拟机没有保存相应信息的二进制文件,而不能被收养,这样就满足不了开发人员和管理人员的需求;
三是机制复杂,每一次虚拟机的操作都需要云平台进行mmap内存与文件进行映射,管理人员很难自我管理;
四是不能很好的支持其他操作,例如虚拟机迁移,我们必须先映射二进制文件至内存,然后修改虚拟机所属宿主机,再把二进制文件映射到磁盘,这个过程比较复杂;
为了满足管理人员对虚拟机的有效管理,实现对不同虚拟化环境下创建的持续化、非持续化的虚拟机进行收养,实现对虚拟机其他操作的良好支持,需要一种简单方便、完整通用的虚拟机收养机制。
发明内容
本发明解决的技术问题在于提供一种简单通用的虚拟机收养方法,解决目前收养方法所存在的复杂、难控制、收养不全、对其他操作支持不好等问题。
本发明解决上述技术问题的技术方案是:包括如下步骤:
步骤1:在宿主机上调用hypervisor命令获取当前注册在宿主机上的虚拟机列表;
步骤2:根据虚拟机列表中的虚拟机ID依次调用hypervisor命令获取虚拟机的明细信息;
步骤3:根据虚拟机明细信息在宿主机指定目录下生成符合libvirt支持的xml格式配置文件,同时创建生成一个包括虚拟机所属宿主机IP的文件;
步骤4:虚拟机收养模块定时的依次扫描所有虚拟机子目录判断虚拟机是否处于可收养状态;如果不满足可收养状态则跳过该虚拟机收养过程继续下一台虚拟机收养过程,否则读取虚拟机子目录里的配置文件和IP地址文件;
步骤5:判断读取到的IP地址文件里的IP与当前宿主机使用IP是否一致;如果一致,则进行收养;否则跳过该虚拟机的收养,继续执行步骤4;
步骤6:将进行收养的虚拟机的libvirt配置文件读取出来,以反序列化方式解析生成虚拟机对象;
步骤7:将虚拟机对象添加到虚拟机列表全局变量中或是更新列表中的虚拟机信息供其他服务模块进行操作;
所述的虚拟机收养是指云平台将已有的虚拟机纳入到平台管理中,能对其进行查看、删除、停止、重启、修改配置、打包操作;
所述的云平台是指用于管理控制所有的计算资源、存储资源、对外提供各种云服务的一个云操作系统;
所述宿主机指定目录是指配置好的存放所有用户虚拟机镜像及其libvirt配置文件的目录;
所述的所有用户虚拟机包括步骤利用hypervisor命令获取到的虚拟机和当前没有在宿主机上启动注册而存放在宿主机指定的虚拟机存放目录下面的虚拟机。
虚拟机的不可收养状态是指虚拟机处于正在被创建、正在被迁移、正在打包操作执行过程中的中间状态。
所述的方法支持包括XEN、KVM、VMware虚拟化技术创建的持久化和非持久化适配libvirt虚拟机。
采用本发明的方法,可收养XEN、KVM、VMware等所有适配libvirt的持久化和非持久化虚拟机,同时能够满足虚拟机管理人员根据需要修改虚拟机配置信息要求,对虚拟机其他如迁移、打包等操作支持较好。采用本发明的收养机制,可以将虚拟机镜像文件放在共享存储中,然后复制配置文件和IP文件到新宿主机,并修改IP文件里的IP值即可。
附图说明
下面结合附图对本发明进一步说明:
附图为本发明方法流程图。
具体实施方式
本发明首先在宿主机上调用“virsh list--all”获取当前宿主机上面的虚拟机列表:
根据虚拟机列表中的虚拟机Id或者Name依次调用“virsh dumpxml Id|Name”获取虚拟机的明细信息:
根据上面获得的虚拟机明细信息在宿主机指定的虚拟机存放目录下面为每台待收养的虚拟机准备好libvirt支持的xml格式配置文件libvirt.xml,格式如下:
虚拟机收养模块首先判断收养条件是否符合,针对虚拟机i-i-58F844B1,首先判断虚拟机是否处于正在创建的状态,具体方法为读取/instances/work/admin/i-58F844B1/目录下虚拟机创建临时文件createLock,如果虚拟机正在创建,则createLock锁文件存在,读取成功则不收养该正在创建的虚拟机。代码如下:
上述代码中函数checkIsCreateing的参数instancePath在本例中为/instances/work/admin/i-58F844B1。
如果虚拟机没有处于正在创建状态,则继续检测待收养的虚拟机是否处于正在从别的节点迁移到本节点状态。代码如下:
上述代码中checkIsMigratedOver函数会根据/instances/work/admin/i-58F844B1/目录下是否存在虚拟机迁移临时文件i-58F844B1_migrateStatus以及文件里面的内容来确定虚拟机是否正处于迁移状态,如果是则跳过收养过程,否则继续进行宿主机IP地址检验。
在前面条件都满足的情况下,虚拟机收养模块读取/instances/work/admin/i-58F844B1/目录下的IP文件nodeInfo得到虚拟机所属宿主机IP,比较是否与当前宿主机IP一致。代码如下:
如果虚拟机所属宿主机IP与当前计算节点IP不一致,则表示该虚拟机暂时不属于该节点,忽略不收养;否则进行虚拟机的收养,相关代码如下:
在上面代码中,instancePath代表着“/instances/work/admin/i-58F844B1/”,函数vm=generateInstance(xmlDesc),表示根据该虚拟机的配置文件libvirt.xml反序列化解析生成虚拟机对象vm。
最后将该虚拟机对象vm添加到虚拟机列表全局变量中,以供其他虚拟机相关操作顺利进行。
Claims (3)
1.一种通用的虚拟机收养方法,其特征在于:包括如下步骤:
步骤1:在宿主机上调用hypervisor命令获取当前注册在宿主机上的虚拟机列表;
步骤2:根据虚拟机列表中的虚拟机ID依次调用hypervisor命令获取虚拟机的明细信息;
步骤3:根据虚拟机明细信息在宿主机指定目录下生成符合libvirt支持的xml格式配置文件,同时创建生成一个包括虚拟机所属宿主机IP的文件;
步骤4:虚拟机收养模块定时的依次扫描所有虚拟机子目录判断虚拟机是否处于可收养状态;如果不满足可收养状态则跳过该虚拟机收养过程继续下一台虚拟机收养过程,否则读取虚拟机子目录里的配置文件和IP地址文件;
步骤5:判断读取到的IP地址文件里的IP与当前宿主机使用IP是否一致;如果一致,则进行收养;否则跳过该虚拟机的收养,继续执行步骤4;
步骤6:将进行收养的虚拟机的libvirt配置文件读取出来,以反序列化方式解析生成虚拟机对象;
步骤7:将虚拟机对象添加到虚拟机列表全局变量中或是更新列表中的虚拟机信息供其他服务模块进行操作;
所述的虚拟机收养是指云平台将已有的虚拟机纳入到平台管理中,能对其进行查看、删除、停止、重启、修改配置、打包操作;
所述的云平台是指用于管理控制所有的计算资源、存储资源、对外提供各种云服务的一个云操作系统;
所述宿主机指定目录是指配置好的存放所有用户虚拟机镜像及其libvirt配置文件的目录;
所述的所有用户虚拟机包括步骤利用hypervisor命令获取到的虚拟机和当前没有在宿主机上启动注册而存放在宿主机指定的虚拟机存放目录下面的虚拟机。
2.根据权利要求1所述的一种通用的虚拟机收养方法,其特征在于:虚拟机的不可收养状态是指虚拟机处于正在被创建、正在被迁移、正在打包操作执行过程中的中间状态。
3.根据权利要求1或2所述的一种通用的虚拟机收养方法,其特征在于:所述的方法支持包括XEN、KVM、VMware虚拟化技术创建的持久化和非持久化适配libvirt虚拟机。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310397427.5A CN103473113B (zh) | 2013-09-04 | 2013-09-04 | 一种通用的虚拟机收养方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310397427.5A CN103473113B (zh) | 2013-09-04 | 2013-09-04 | 一种通用的虚拟机收养方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103473113A CN103473113A (zh) | 2013-12-25 |
CN103473113B true CN103473113B (zh) | 2017-02-08 |
Family
ID=49797982
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310397427.5A Active CN103473113B (zh) | 2013-09-04 | 2013-09-04 | 一种通用的虚拟机收养方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103473113B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104111862A (zh) * | 2014-07-17 | 2014-10-22 | 湖南昇云科技有限公司 | 云计算平台中获取虚拟机ip地址方法与系统 |
CN104636189B (zh) * | 2015-02-25 | 2018-03-30 | 哈尔滨工业大学 | 基于Xen的虚拟机部署系统及方法 |
CN106155762A (zh) * | 2015-04-14 | 2016-11-23 | 中兴通讯股份有限公司 | 一种管理虚拟机状态的方法、装置和虚拟化管理中心 |
CN107203408B (zh) * | 2016-03-17 | 2021-02-23 | 华为技术有限公司 | 重定向的方法、装置和系统 |
CN107861792A (zh) * | 2017-11-06 | 2018-03-30 | 郑州云海信息技术有限公司 | 一种基于Libvirt的虚拟机管理方法及装置 |
CN111522626B (zh) * | 2020-04-23 | 2024-04-02 | 杭州海康威视系统技术有限公司 | 一种虚拟机列表生成方法、装置及电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102567080A (zh) * | 2012-01-04 | 2012-07-11 | 北京航空航天大学 | 一种云计算环境中的面向负载均衡的虚拟机择位系统 |
CN102857561A (zh) * | 2012-08-21 | 2013-01-02 | 浪潮电子信息产业股份有限公司 | 一种虚拟机系统与云计算控制中心交互方法 |
CN103167034A (zh) * | 2013-03-13 | 2013-06-19 | 河海大学 | 基于CloudStack虚拟节点的监控Agent的构建方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110225459A1 (en) * | 2010-03-09 | 2011-09-15 | Microsoft Corporation | Generating a debuggable dump file for a virtual machine |
-
2013
- 2013-09-04 CN CN201310397427.5A patent/CN103473113B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102567080A (zh) * | 2012-01-04 | 2012-07-11 | 北京航空航天大学 | 一种云计算环境中的面向负载均衡的虚拟机择位系统 |
CN102857561A (zh) * | 2012-08-21 | 2013-01-02 | 浪潮电子信息产业股份有限公司 | 一种虚拟机系统与云计算控制中心交互方法 |
CN103167034A (zh) * | 2013-03-13 | 2013-06-19 | 河海大学 | 基于CloudStack虚拟节点的监控Agent的构建方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103473113A (zh) | 2013-12-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103473113B (zh) | 一种通用的虚拟机收养方法 | |
US20210314223A1 (en) | Managing Virtual Network Functions | |
US10152345B2 (en) | Machine identity persistence for users of non-persistent virtual desktops | |
US8683466B2 (en) | System and method for generating a virtual desktop | |
US9317279B2 (en) | Virtual machine block substitution | |
US8924703B2 (en) | Secure virtualization environment bootable from an external media device | |
CN110088733A (zh) | 虚拟机迁移的基于存储层的编排 | |
CN105144093B (zh) | 使用基础设施管理代理供应的工作负荷部署 | |
CN109062655A (zh) | 一种容器化云平台及服务器 | |
US20110246988A1 (en) | Hypervisor for starting a virtual machine | |
WO2019060228A1 (en) | SYSTEMS AND METHODS FOR SERVICE INSTANCATION ON SERVICES | |
JP2015534167A (ja) | クラウドコンピューティング環境で使用するサービス管理エンジンを提供するためのシステムおよび方法 | |
US11188347B2 (en) | Virtual function driver loading method and server using global and local identifiers corresponding to locations of the virtual functions | |
WO2020123213A1 (en) | Container migration in computing systems | |
US11544046B1 (en) | Dynamic cloud anti-pattern detection for a modernization assessment service | |
CN108073423B (zh) | 一种加速器加载方法、系统和加速器加载装置 | |
CN103077034B (zh) | 混合虚拟化平台java应用迁移方法与系统 | |
WO2021129332A1 (zh) | 虚拟机部署及热迁移方法、vmm升级方法、服务器 | |
CN108108229B (zh) | 虚拟主机迁移系统、方法、计算机设备、可读存储介质 | |
US8904396B2 (en) | System and method of general service management | |
US20120222023A1 (en) | Automatic runtime dependency lookup | |
US9965357B1 (en) | Virtual backup and restore of virtual machines | |
US10296318B2 (en) | Offline tools upgrade for virtual machines | |
US11704408B1 (en) | Threat scanning transplanted containers | |
US10275271B2 (en) | Virtual machine device access |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP02 | Change in the address of a patent holder |
Address after: 523808 19th Floor, Cloud Computing Center, Chinese Academy of Sciences, No. 1 Kehui Road, Songshan Lake Hi-tech Industrial Development Zone, Dongguan City, Guangdong Province Patentee after: G-Cloud Technology Co., Ltd. Address before: 523808 No. 14 Building, Songke Garden, Songshan Lake Science and Technology Industrial Park, Dongguan City, Guangdong Province Patentee before: G-Cloud Technology Co., Ltd. |
|
CP02 | Change in the address of a patent holder |