CN109634713A - 一种虚拟机启动方法以及装置 - Google Patents

一种虚拟机启动方法以及装置 Download PDF

Info

Publication number
CN109634713A
CN109634713A CN201811300466.8A CN201811300466A CN109634713A CN 109634713 A CN109634713 A CN 109634713A CN 201811300466 A CN201811300466 A CN 201811300466A CN 109634713 A CN109634713 A CN 109634713A
Authority
CN
China
Prior art keywords
virtual machine
image file
memory
target virtual
memory image
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.)
Granted
Application number
CN201811300466.8A
Other languages
English (en)
Other versions
CN109634713B (zh
Inventor
钟晋明
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
New H3C Cloud Technologies Co Ltd
Original Assignee
New H3C Cloud Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by New H3C Cloud Technologies Co Ltd filed Critical New H3C Cloud Technologies Co Ltd
Priority to CN201811300466.8A priority Critical patent/CN109634713B/zh
Publication of CN109634713A publication Critical patent/CN109634713A/zh
Application granted granted Critical
Publication of CN109634713B publication Critical patent/CN109634713B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/4555Para-virtualisation, i.e. guest operating system has to be modified
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

本公开实施例提供了一种虚拟机启动方法以及启动装置,其中,该方法包括:监听虚拟机批量启动的触发事件;当发生所述虚拟机批量启动的触发事件时,获取所述触发事件触发启动的多台目标虚拟机分别对应的内存快照文件;基于所述多台目标虚拟机分别对应的内存快照文件,启动所述多台目标虚拟机。本公开实施例能够通过虚拟机内存快照文件实现虚拟机的快速启动,降低虚拟机批量启动过程中从存储系统中读取数据的数据量,避免虚拟桌面大批量启动过程中因资源限制导致启动过慢,甚至无法启动。

Description

一种虚拟机启动方法以及装置
技术领域
本公开涉及虚拟机技术领域,具体而言,涉及一种虚拟机启动方法以及启动装置。
背景技术
虚拟桌面基础架构(Virtual Desktop Infrastructure,VDI)又称客户端虚拟化或者桌面虚拟化,是一种在数据中心已虚拟化的宿主机上运行微软视窗操作系统Windows7或Windows 10等虚拟机,将装有各种应用程序前端的桌面进行虚拟化技术。用户从客户端设备使用远程桌面协议(Remote Desktop Protocol,RDP)等协议与远程虚拟桌面进行连接,实现对远程虚拟桌面的访问。
当大量的虚拟桌面在短时间内同时启动之时,例如在每个工作日的上午9点到下午5点,运行虚拟化桌面的多台虚拟机会在短时间内集中启动,此时宿主机的操作系统和应用程序需要从各个虚拟磁盘中读取待启动虚拟机的相关系统数据并加载和执行。由于虚拟机磁盘本身为宿主机存储系统的一部分,虚拟机的启动过程就等同于从宿主机的存储系统中读取大量的数据以加载和执行的过程。如果存储系统不能很好的设计以处理如此密集的输入/输出(Input/Output,I/O)负载,最终可能造成虚拟机启动过慢,甚至部分虚拟机无法启动,影响用户的正常使用。
发明内容
有鉴于此,本公开实施例的目的在于提供一种虚拟机启动方法以及装置,能够通过虚拟机内存快照文件实现虚拟机的快速启动,降低虚拟机批量启动过程中从存储系统中读取数据的数据量,避免虚拟桌面大批量启动过程中因资源限制导致启动过慢,甚至无法启动。
第一方面,本公开实施例提供了一种虚拟机启动方法,包括:监听虚拟机批量启动的触发事件;
当发生所述虚拟机批量启动的触发事件时,获取所述触发事件触发启动的多台目标虚拟机分别对应的内存快照文件;
基于所述多台目标虚拟机分别对应的内存快照文件,启动所述多台目标虚拟机。
在一种可选实施方式中,所述内存快照文件包括:与所述目标虚拟机的系统模版对应的基础内存快照文件,以及所述目标虚拟机的扩展内存快照文件;
所述获取所述触发事件触发启动的多台目标虚拟机分别对应的内存快照文件,包括:针对每台所述目标虚拟机,获取与该目标虚拟机的系统模板对应的基础内存快照文件,以及与该目标虚拟机对应的扩展内存快照文件;
所述基于所述多台目标虚拟机分别对应的内存快照文件,启动所述多台目标虚拟机,包括:将与所述系统模板对应的基础内存快照文件复制到该目标虚拟机的内存中,并在该目标虚拟机的内存中加载该目标虚拟机的扩展内存快照文件。
在一种可选实施方式中,所述获取与所述系统模板对应的基础内存快照文件,包括:检测在内存公共区中是否存在与所述目标虚拟机的系统模版对应的基础内存快照文件,如果存在,则从所述内存公共区中获取所述基础内存快照文件,如果不存在,则在所述内存公共区中建立所述基础内存快照文件,并从所述内存公共区中获取所述基础内存快照文件。
在一种可选实施方式中,所述在所述内存公共区中建立所述基础内存快照文件,包括:将该目标虚拟机的基础内存快照文件从其它存储空间中加载到所述内存公共区;或者,
根据该目标虚拟机的系统模板,创建第一临时虚拟机,并生成所述第一临时虚拟机的内存快照文件;将所述第一临时虚拟机的内存快照文件作为所述基础内存快照文件加载到所述内存公共区中;或者,
从其它宿主机中获取目标虚拟机的基础内存快照文件,并将从其它宿主机中获取的基础内存快照文件加载到所述内存公共区中。
在一种可选实施方式中,根据以下步骤确定与每台所述目标虚拟机对应的系统模版:读取所述目标虚拟机的虚拟磁盘配置信息中的虚拟磁盘名;
根据获取的所述目标虚拟机的虚拟磁盘名,从所述目标虚拟机的虚拟磁盘中获取所述目标虚拟机的基础镜像文件;
根据所述目标虚拟机的基础镜像文件,确定所述虚拟机的系统模版。
在一种可选实施方式中,采用下述方式生成所述目标虚拟机的内存快照文件:监听虚拟机快照生成的触发事件;
当发生所述虚拟机快照生成的触发事件时,确定所述虚拟机快照生成的触发事件对应的目标虚拟机,并生成确定的所述目标虚拟机的内存快照文件。
在一种可选实施方式中,所述内存快照文件包括:与所述目标虚拟机的系统模版对应的基础内存快照文件以及扩展内存快照文件;
所述生成所述目标虚拟机的内存快照文件,包括:生成各台所述目标虚拟机的临时内存快照文件;以及,
确定所述目标虚拟机的系统模版,并根据确定出的所述目标虚拟机的系统模版,创建第二临时虚拟机,并生成所述第二临时虚拟机的内存快照文件;
将所述第二临时虚拟机的内存快照文件作为所述目标虚拟机的基础内存快照文件,以及根据所述目标虚拟机的临时内存快照文件以及基础内存快照文件,生成所述目标虚拟机的扩展内存快照文件。
在一种可选实施方式中,所述确定所述目标虚拟机的系统模版之后,还包括:根据各台所述目标虚拟机的系统模版对所述目标虚拟机进行分类;
所述根据确定出的所述目标虚拟机的系统模版,创建第二临时虚拟机,包括:
针对每一分类中的多台目标虚拟机,根据识别出的该分类对应的系统模版,创建与该分类对应的第二临时虚拟机;
所述将所述第二临时虚拟机的内存快照文件作为所述目标虚拟机的基础内存快照文件,包括:将每一分类对应的所述第二临时虚拟机的内存快照文件作为该分类中所有目标虚拟机的基础内存快照文件。
第二方面,提供一种虚拟机启动装置,包括:
监听模块,用于监听虚拟机批量启动的触发事件;
获取模块,用于当发生所述虚拟机批量启动的触发事件时,获取所述触发事件触发启动的多台目标虚拟机分别对应的内存快照文件;
启动模块,用于基于所述多台目标虚拟机分别对应的内存快照文件,启动所述多台目标虚拟机。
第三方面,本公开实施例还提供一种电子设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行上述第一方面中任一种可能的实施方式中的步骤。
第四方面,本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述第一方面中任一种可能的实施方式中的步骤。
本公开实施例通过在监听到虚拟机批量启动的触发事件后,基于目标虚拟机的内存快照文件将虚拟机的内存恢复到虚拟机启动之后的状态,以完成虚拟机的快速启动,降低虚拟机批量启动过程中从存储系统中读取数据的数据量,避免虚拟桌面大批量启动过程中因资源限制导致启动过慢,甚至无法启动。
另外,本公开实施例将目标虚拟机的内存快照文件拆分成基础内存快照文件和扩展内存快照文件,在根据目标虚拟机的内存快照文件启动目标虚拟机时,可以使得同宿主机内的相同系统模板虚拟机,通过共同的基础内存快照和各自对应的扩展内存快照快速启动虚拟机,读取基础内存快照的过程只有一次,甚至在一些实施方式中不存在读取基础内存快照的过程,减少了批量启动虚拟机带来的大量的读取操作,进一步缓虚拟桌面启动风暴对用户的影响。
另外,由于在将虚拟机的临时内存快照文件拆分成基础内存快照文件和扩展内存快照文件的过程,是基于第二临时虚拟机的内存快照文件来进行的,具有更高的效率。
随着宿主机内部署的目标虚拟机的数量的增长,只要使用的系统模板的数量不变,只需要少量的磁盘存储空间就能够保存这些新增加的目标虚拟机的扩展内存快照,无需额外增加存储资源,扩展性更高。
为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本公开实施例所提供的一种虚拟机启动方法的流程图;
图2示出了本公开实施例所提供的虚拟机启动方法中,生成目标虚拟机的内存快照文件的具体方法的流程图;
图3示出了本公开实施例所提供的虚拟机启动方法中,另一种生成目标虚拟机的内存快照文件的具体方法的流程图;
图4示出了本公开实施例所提供的一种虚拟机启动装置的示意图;
图5示出了本公开实施例所提供的一种电子设备的示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
与现有技术不同,本公开实施例通过在监听到虚拟机批量启动的触发事件后,基于目标虚拟机的内存快照文件将虚拟机的内存恢复到虚拟机启动之后的状态,以完成虚拟机的启动,不需要通过访问虚拟磁盘读取启动虚拟机的相关系统数据,降低虚拟机批量启动过程中从存储系统中读取数据的数据量,避免虚拟桌面大批量启动过程中因资源限制导致启动过慢,甚至无法启动。
为便于对本实施例进行理解,首先对本公开实施例所公开的一种虚拟机启动方法进行详细介绍,该方法的执行主体为虚拟机的宿主机。本公开实施例提供的虚拟机启动方法,除了能够用于批量启动虚拟机,也可以用于启动单台或者数量较少的虚拟机。
图1示出本公开实施例提供的虚拟机启动方法的流程图,包括S101~S103。
S101:监听虚拟机批量启动的触发事件。
在具体实施中,虚拟机批量启动的触发事件,是指触发多台虚拟机在一定时间内集中启动的触发事件。其可以包括但不限于以下(1)、(2)、(3)所示的触发事件中一种或者多种:
(1)虚拟机批量启动的触发事件包括:预设时刻到达。宿主机被配置为在预设时刻到达时,自动启动多台预先创建好的虚拟机。
例如,宿主机被配置为在每个工作日的9:00自动启动虚拟机VM1~VM100共一百台虚拟机。并被配置为在每个休息日的10:00自动启动虚拟机VM1~VM20共20台虚拟机。
宿主机会对时间是否到达预设时刻进行监听;每当到达工作日的9:00时,宿主机自动启动虚拟机VM1~VM100;且每当到达休息日的10:00时,宿主机自动启动虚拟机VM1~VM20。
(2)虚拟机批量启动的触发事件包括:宿主机在预设时段内接收到针对不同虚拟机的虚拟机启动指令达到预设数量。此处,虚拟机启动指令一般由用于操控虚拟机的客户端设备发出。
例如,将预设时段设置为5秒;预设数量为50;宿主机在5秒内收到针对VM1~VM60共六十台虚拟机的启动指令,此时,可以认为虚拟机需要批量启动。
(3)虚拟机批量启动的触发事件包括:宿主机收到虚拟机启动指令,该虚拟机启动指令用于指示宿主机批量启动虚拟机。
S102:当发生虚拟机批量启动的触发事件时,获取触发事件触发启动的多台目标虚拟机分别对应的内存快照文件。
此处,目标虚拟机的内存快照文件是指对目标虚拟机的内存数据执行内存快照,生成的保存有当前全部内存数据的文件。
在具体实施中,多台目标虚拟机的内存快照文件的是预先生成的。
参见图2所示,本公开实施例提供一种生成目标虚拟机的内存快照文件的具体方法,包括:
S201:监听虚拟机快照生成的触发事件。
S201:当发生虚拟机快照生成的触发事件时,确定虚拟机快照生成的触发事件对应的目标虚拟机,并生成确定的目标虚拟机的内存快照文件。
在具体实施中,虚拟机快照生成的触发事件,是指触发虚拟机快照生成的事件,其可以包括但不限于以下触发事件A、B和C中一种或者多种:
A:虚拟机快照生成的触发事件包括:目标虚拟机在创建后被首次启动。
目标虚拟机在首次启动成功后,会向宿主机或者对应的客户端设备发送启动成功的指令;
针对目标虚拟机向宿主机发送启动成功的指令的情况,当宿主机接收到该启动成功的指令后,确认其监听到该目标虚拟机的虚拟机快照生成的触发事件,对该目标虚拟机执行内存快照,生成与该虚拟机对应的内存快照文件。
针对目标虚拟机向客户端设备发送启动成功的指令的情况,当客户端设备接收到该启动成功的指令后,会基于该启动成功的指令,向宿主机发送内存快照执行指令;宿主机在接收到客户端设备发送的内存快照执行指令后,确认其监听到虚拟机快照生成的触发事件,对该目标虚拟机执行内存快照,生成与该目标虚拟机对应的内存快照文件。
例如,在目标虚拟机的操作系统(Operating System,OS)内配置有第一代理工具;在客户端设备内部署有第二代理工具。在目标虚拟机的OS内部署有能够在目标虚拟机启动成功后自动执行的可执行文件,此处的可执行文件可以是可直接执行的执行程序,也可以是可被解释执行的批处理文件,或者是注册的接口、函数等,本公开不做具体限定;该可执行文件在被执行时,用于通知第一代理工具目标虚拟机启动完成。第一代理工具在接收到目标虚拟机启动完成的通知后,会向客户端设备内部署的第二代理工具发送启动成功的指令;客户端设备内部署的第二代理工具生成内存快照执行指令,并将该内存快照执行指令发送给宿主机;该内存快照执行指令用于指示宿主机对该目标虚拟机执行内存快照。
B:虚拟机快照生成的触发事件包括:目标虚拟机在系统发生较大的变化后被首次启动。例如系统更新、软硬件升级、新功能加载等。
启动的方式可以参见上述A的描述,在此不再赘述。
C:虚拟机快照生成的触发事件包括:预设快照更新周期到达时。
具体地,可以采用但并不限于以下实施方式中1或2中任意一种:
1:宿主机被配置为在预设快照更新周期到达时,自动为目标虚拟机生成新的内存快照文件,并使用新的内存快照文件,对目标虚拟机原有的内存快照文件进行更新。
此处,宿主机在监测到预设快照更新周期到达后,为预设快照更新周期到达后首次成功启动的目标虚拟机生成内存快照文件。
例如,宿主机在8月20日晚上20:00监测到目标虚拟机VM1~VM100预设周期到达。且在8月20日20:00后,目标虚拟机VM1~VM50在8月21日9:00首次启动成功,则宿主机为目标虚拟机VM1~VM50生成新的内存快照文件;目标虚拟机VM51~VM100在8月22日10:00首次启动成功,则宿主机为目标虚拟机VM51~VM100生成新的内存快照文件。
2:虚拟机被配置为在预设快照更新周期到达时,向宿主机或者向对应的客户端设备发送快照更新的指令。
针对目标虚拟机向宿主机发送快照更新的指令的情况,当宿主机接收到该快照更新的指令后,确认其监听到该目标虚拟机的虚拟机快照生成的触发事件,对该目标虚拟机执行内存快照,生成与该目标虚拟机对应的新的内存快照文件,并使用该目标虚拟机对应的新的内存快照文件,更新其原有的内存快照文件。
针对目标虚拟机向客户端设备发送快照更新的指令的情况,当客户端设备接收到该快照更新的指令后,会基于该快照更新的指令,向宿主机发送内存快照执行指令;宿主机在接收到客户端设备发送的内存快照执行指令后,确认其监听到虚拟机快照生成的触发事件,对该虚拟机执行内存快照,生成与该虚拟机对应的新的内存快照文件,并使用该虚拟机对应的新的内存快照文件,更新其原有的内存快照文件。
在本公开一些实施例中,目标虚拟机的内存快照文件包括:与目标虚拟机的系统模版对应的基础内存快照文件以及扩展内存快照文件。
其中,基础内存快照文件携带的内存信息,包括:一台虚拟机的OS基于系统模版创建,并正常运行时的内存所具有的基础信息;扩展内存快照文件,则是虚拟机在实际使用过程中,除了基础内存快照文件中的基础信息外的扩展信息。
生成目标虚拟机的内存快照文件的方法包括但并不限于如下方法一、二、三和四中至少一种:
一:参见图3所示,本公开实施例提供一种生成目标虚拟机的内存快照文件的具体方法,包括:
S301:生成各台目标虚拟机的临时内存快照文件。
此处,该临时内存快照文件中携带了基础快照文件中携带的基础信息,以及扩展内存快照文件对应的扩展信息。
S302:确定目标虚拟机的系统模版,并根据确定出的目标虚拟机的系统模版,创建第二临时虚拟机,并生成第二临时虚拟机的内存快照文件。
上述S301和S302并无执行的先后顺序。
S303:将第二临时虚拟机的内存快照文件作为目标虚拟机的基础内存快照文件,以及根据目标虚拟机的临时内存快照文件以及基础内存快照文件,生成目标虚拟机的扩展内存快照文件。
在具体实现的时候,可以采用下述方式确定目标虚拟机的系统模版:读取目标虚拟机的虚拟磁盘配置信息中的虚拟磁盘名;根据获取的目标虚拟机的虚拟磁盘名,从目标虚拟机的虚拟磁盘中获取目标虚拟机的基础镜像文件;根据目标虚拟机的基础镜像文件,确定虚拟机的系统模版。
此处,目标虚拟机在创建之后,宿主机会保存目标虚拟机的配置信息,如虚拟机名称、内存配置信息、虚拟磁盘配置信息等。而虚拟机正常运行过程中的大部分相关数据,包括能够表征创建虚拟机所使用的系统模板的基础镜像文件,则都存储在与虚拟机对应的虚拟磁盘中。为了能够确定与目标虚拟机对应的系统模版,首先根据目标虚拟机的虚拟机名称,获取该目标虚拟机的虚拟磁盘配置信息,并从获取的目标虚拟机的虚拟磁盘配置信息中,读取虚拟磁盘名;然后根据虚拟磁盘名访问虚拟磁盘,并从虚拟磁盘中获取目标虚拟机的镜像文件;之后根据获取的目标虚拟机的镜像文件,识别出虚拟机的系统模版。
例如,该过程为:
a:宿主机首先使用libvirt工具读取目标虚拟机VM1的磁盘配置信息得到虚拟磁盘名diskA;相关命令为:virsh dump VM1。
b:使用qemu工具解析虚拟磁盘,得出虚拟磁盘的基础镜像文件为win7templete;相关命令为:qemu-img info diskA。
c:然后根据基础镜像文件win7templete,得出该目标虚拟机VM1的系统模板为Windows 7。
在确定了目标虚拟机的系统模板后,根据目标虚拟机的系统模板,创建第二临时虚拟机。然后在第二临时虚拟机启动成功后,生成该第二临时虚拟机的内存快照文件;为第二临时虚拟机生成的内存快照文件中,只携带了第二虚拟机的基础信息,且由于第二临时虚拟机是基于目标虚拟机的系统模板创建的,第二虚拟机的内存快照文件中携带的基础信息与目标虚拟机的基础内存快照中携带的基础信息一致,因此,可以将第二虚拟机的内存快照文件作为目标虚拟机的基础内存快照文件,并基于目标虚拟机的基础内存快照文件中携带的基础信息,将扩展信息从临时内存快照文件中解析出来,并使用解析出来的扩展信息构成目标虚拟机的扩展内存快照文件,实现将临时内存快照文件拆分成基础内存快照文件和扩展内存快照文件的目的。
二,在本公开一些实施例中,还提供另外一种生成目标虚拟机的内存快照文件的具体方法,包括:
生成各台目标虚拟机的临时内存快照文件,以及确定各台目标虚拟机的系统模版;根据各台目标虚拟机的系统模版对目标虚拟机进行分类;针对每一分类中的多台目标虚拟机,根据识别出的该分类对应的系统模版,创建与该分类对应的第二临时虚拟机;将每一分类对应的第二临时虚拟机的内存快照文件作为该分类中所有目标虚拟机的基础内存快照文件;并根据每台目标虚拟机的临时内存快照文件和基础内存快照文件,生成目标虚拟机的扩展内存快照文件。
此处,在确定各台目标虚拟机的系统模版后,如果不同的目标虚拟机使用的系统模版相同,则它们的基础内存快照文件也是相同的,因此只需要为系统模版相同的目标虚拟机创建一次第二临时虚拟机,并将该第二临时虚拟机的内存快照文件作为这些系统模版相同的目标虚拟机的基础内存快照文件即可,能够简化多台目标虚拟机的内存快照文件的生成步骤,提升生成速度。
示例一:宿主机上的虚拟机包括:VM1~VM400共四百台虚拟机。
且虚拟机VM1~VM100,VM201~VM300均使用Windows 7的模版win7templete创建;虚拟机VM101~VM200,VM301~VM400均使用Windows10的模板win10templete创建。
在确定了各台虚拟机的系统模板后,能够基于各台虚拟机的系统模板将虚拟机分为两类,其中一类包括虚拟机VM1~VM100,VM201~VM300,对应的系统模板为win7templete;另一类包括虚拟机VM101~VM200,VM301~VM400,对应的系统模板为win10templete。
宿主机在监听到虚拟机快照生成的触发事件时,确定该虚拟机快照生成的触发事件对应的虚拟机包括:VM1~VM400,并对虚拟机VM1~VM400执行内存快照,生成虚拟机VM1~VM400分别对应的临时内存快照文件,并保存到宿主机临时空间。
以win7templete创建第二临时虚拟机,并在该第二临时虚拟机启动后,执行内存快照,生成与该第二临时虚拟机对应的内存快照文件base1,该base1也是虚拟机VM1~VM100,VM201~VM300的基础内存快照文件。
然后使用虚拟机VM1的临时快照文件,与base1进行比较,拆分出虚拟机VM1对应的扩展内存快照extend1。base1和extend1共同构成虚拟机VM1的内存快照文件。
使用虚拟机VM2的临时快照文件,与base1进行比较,拆分出虚拟机VM2对应的扩展内存快照extend2。base1和extend2共同构成虚拟机VM2的内存快照文件。
……
使用虚拟机VM300的临时快照文件,与base1进行比较,拆分出虚拟机VM300对应的扩展内存快照extend300。base1和extend300共同构成虚拟机VM300的内存快照文件。
同理,
以win10templete创建另一第二临时虚拟机,并在该第二临时虚拟机启动后,执行内存快照,生成与该第二临时虚拟机对应的内存快照文件base2,该base2也是虚拟机VM101~VM200,VM301~VM400的基础内存快照文件。
然后使用虚拟机VM101的临时快照文件,与base2进行比较,拆分出虚拟机VM101对应的扩展内存快照extend101。base2和extend101共同构成虚拟机VM101的内存快照文件。
使用虚拟机VM102的临时快照文件,与base2进行比较,拆分出虚拟机VM102对应的扩展内存快照extend102。base2和extend102共同构成虚拟机VM2的内存快照文件。
……
使用虚拟机VM400的临时快照文件,与base2进行比较,拆分出虚拟机VM400对应的扩展内存快照extend400。base2和extend400共同构成虚拟机VM400的内存快照文件。
删除两个第二临时虚拟机。
通过上述过程,生成虚拟机VM1~VM400分别对应的内存快照文件。
三,在本公开一些实施例中,还提供另外一种生成目标虚拟机的内存快照文件的具体方法,包括:生成各台目标虚拟机的临时内存快照文件,并确定各台目标虚拟机的系统模版;将使用了相同的系统模板的所有目标虚拟机的临时内存快照文件进行比对,将使用了相同的系统模板的所有目标虚拟机的临时内存快照文件中相同的信息作为基础信息,构成基础内存快照文件,并将使用了相同的系统模板的所有目标虚拟机中的每一个目标虚拟机的临时内存快照文件中区别于其他任意一个目标虚拟机的信息作为扩展信息,构成扩展内存快照文件,从而生成各个目标虚拟机的基础内存快照文件和扩展内存快照文件。
此种方法较为适用批量生成目标虚拟机的内存快照的场景。
四,在本公开一些实施例中,还提供另外一种生成目标虚拟机的内存快照文件的具体方法,包括:生成各台目标虚拟机A的临时内存快照文件,以及确定目标虚拟机A的系统模版;根据目标虚拟机A的系统模板,确定与该目标虚拟机A使用了相同的系统模板的另一目标虚拟机B。其中,已经预先为该另一目标虚拟机B生成了基础内存快照文件和扩展内存快照文件。将该另一目标虚拟机B的基础内存快照文件作为该虚拟机A的基础内存快照文件,并根据该虚拟机的A的基础内存快照文件和临时内存快照文件,生成该虚拟机A的扩展内存快照文件。
此种方法较为适合在之前已经生成了其他目标虚拟机的内存快照文件,且该其他目标虚拟机使用的系统模版与目标虚拟机使用的系统模板相同的场景。
在生成了各个目标虚拟机的内存快照文件后,就能够在监听到发生虚拟机批量启动的触发事件时,获取与触发时间触发启动的多台目标虚拟机分别对应的内存快照文件。
在一些实施例中,由于内存快照文件包括:与目标虚拟机的系统模版对应的基础内存快照文件,以及目标虚拟机的扩展内存快照文件,因此,获取触发事件触发启动的多台目标虚拟机分别对应的内存快照文件,包括:
针对每台目标虚拟机,获取与该目标虚拟机的系统模板对应的基础内存快照文件,以及与该目标虚拟机对应的扩展内存快照文件。
然后根据台目标虚拟机分别对应的内存快照文件,启动多台目标虚拟机。
具体的根据内存快照文件启动目标虚拟机的过程可参见下述S103的相关描述,在此不再赘述。
S103:基于多台目标虚拟机分别对应的内存快照文件,启动多台目标虚拟机。
在具体实施中,目标虚拟机的内存快照文件包括:基础内存快照文件和扩展内存快照文件。为了实现基于基础内存快照文件和扩展内存快照文件启动目标虚拟机,就要将基础内存快照文件和扩展内存快照文件都加载到目标虚拟机的内存中。
为了实现上述目的,本公开实施例提供的一种基于多台目标虚拟机分别对应的内存快照文件,启动多台目标虚拟机的过程,包括:
将与系统模板对应的基础内存快照文件复制到该目标虚拟机的内存中,并在该目标虚拟机的内存中加载该目标虚拟机的扩展内存快照文件。
此处,由于使用相同系统模版的多台目标虚拟机的基础内存快照文件是相同的,为了降低目标虚拟机启动内存快照文件的时间,同时更能够减少从存储内存快照文件中读取数据的数据量,可以将这些使用相同系统模板的目标虚拟机的基础内存快照文件首先加载在宿主机的内存公共区中,且只需要加载一次;然后将加载后的基础内存快照直接复制到各个目标虚拟机的内存中,并在各个虚拟机的内存中加载各自对应的扩展内存快照文件,实现目标虚拟机的启动,进而能够进一步减少虚拟机启动过程中从存储系统中读取数据的数据量,减少虚拟机桌面启动风暴对用户的影响。
具体地,为了实现上述目的,就要获取与系统模板对应的基础内存快照文件,并将该基础内存快照文件。本公开实施例可以采用下述方式获取与该目标虚拟机的系统模板对应的基础内存快照文件:
检测在内存公共区中是否存在与目标虚拟机的系统模版对应的基础内存快照文件,如果存在,则从内存公共区中获取基础内存快照文件,如果不存在,则在内存公共区中建立基础内存快照文件,并从内存公共区中获取基础内存快照文件。
此处,首先要确定目标虚拟机对应的系统模板。确定的方式可以参见如图3对应的实施例的具体描述,在此不再赘述。
在确定了目标虚拟机对应的系统模板后,要检测在内存公共区中是否存在与目标虚拟机的系统模板对应的基础内存快照。如果存在,就直接从该内存公共区中获取基础内存快照,并将获取的基础内存快照文件复制到目标虚拟机的内存中;如果不存在,可以采用下述①、②和③中至少一种方式在内存公共区中建立基础内存快照文件:
①:将获取的目标虚拟机的基础内存快照文件,从其它存储空间中加载到该内存公共区中。此处,其它存储空间,是指存储了目标虚拟机的基础内存快照文件的存储空间。
之后,在启动另一目标虚拟机时,如果该另一目标虚拟机所使用的系统模板和该目标虚拟机使用的系统模板相同,则可以直接从内存公共区中获取对应的基础内存快照作为该另一目标虚拟机的内存快照,复制到该另一目标虚拟机的内存中。
示例二:在基于上述示例一生成虚拟机VM1~VM400的内存快照文件后,可以在监听到发生虚拟机批量启动的触发事件时,采用下述步骤对虚拟机VM1~VM400进行批量启动:
首先启动虚拟机VM1;此处,首先启动的虚拟机VM1是随机确定的。
宿主机识别虚拟机VM1的系统模板为win7templete。
由于虚拟机VM1第一个被启动,此时在宿主机的内存公共区中不存在win7templete的基础内存快照文件,此时将虚拟机VM1的基础内存快照文件base1加载到内存公共区中。
从内存公共区中复制base1到虚拟机VM1的内存中,并加载虚拟机VM1的扩展内存快照文件extend1到VM1的内存中,完成VM1的启动。
虚拟机VM2被启动时,宿主机识别虚拟机VM2的系统模板为win7templete,与VM1相同,因此能够确定在宿主机的内存公共区中存在win7templete的基础内存快照文件,此时,内存公共区中复制base1到虚拟机VM2的内存中,并加载虚拟机VM2的扩展内存快照文件extend2到VM2的内存中,完成VM2的启动。
……
虚拟机VM300被启动时,宿主机识别虚拟机VM300的系统模板为win7templete,与VM1相同,因此能够确定在宿主机的内存公共区中存在win7templete的基础内存快照文件,此时,内存公共区中复制base1到虚拟机VM300的内存中,并加载虚拟机VM300的扩展内存快照文件extend300到VM300的内存中,完成VM300的启动。
同理,虚拟机VM101启动时,宿主机识别虚拟机VM101的系统模板为win10templete。此时在宿主机的内存公共区中不存在win10templete的基础内存快照文件,此时将虚拟机VM101的基础内存快照文件base2加载到内存公共区中。
从内存公共区中复制base2到虚拟机VM101的内存中,并加载虚拟机VM101的扩展内存快照文件extend101到VM101的内存中,完成VM101的启动。
虚拟机VM102被启动时,宿主机识别虚拟机VM102的系统模板为win10templete,与VM101相同,因此能够确定在宿主机的内存公共区中存在win10templete的基础内存快照文件,此时,内存公共区中复制base2到虚拟机VM102的内存中,并加载虚拟机VM102的扩展内存快照文件extend102到VM102的内存中,完成VM102的启动。
……
虚拟机VM400被启动时,宿主机识别虚拟机VM400的系统模板为win10templete,与VM101相同,因此能够确定在宿主机的内存公共区中存在win10templete的基础内存快照文件,此时,内存公共区中复制base2到虚拟机VM400的内存中,并加载虚拟机VM400的扩展内存快照文件extend400到VM400的内存中,完成VM400的启动。
通过上述步骤,完成了虚拟机VM1~VM400的批量启动。
②:根据该目标虚拟机的系统模板,创建第一临时虚拟机,并生成第一临时虚拟机的内存快照文件;将第一临时虚拟机的内存快照文件作为基础内存快照文件加载到内存公共区中。
然后在启动使用该系统模板的各台目标虚拟机时,就可以从内存公共区中,获取各台使用该系统模板的目标虚拟机的基础内存快照文件,并将该基础内存快照文件复制到使用该系统模板的各台目标虚拟机的内存中。
例如,在上述示例二中,首先启动虚拟机VM1;此处,首先启动的虚拟机VM1是随机确定的。
宿主机识别虚拟机VM1的系统模板为win7templete。
由于虚拟机VM1第一个被启动,此时在宿主机的内存公共区中不存在win7templete的基础内存快照文件,此时根据win7templete创建第一临时虚拟机,并在第一临时虚拟机启动后,对该第一临时虚拟机执行内存快照,生成该第一临时虚拟机对应的内存快照文件。将该第一临时虚拟机对应的内存快照文件,作为虚拟机VM1的基础内存快照base1加载到内存公共区中,完成在内存公共区中建立基础内存快照文件的过程。
然后就可以参照上述示例二中示出的各个目标虚拟机的启动方式来启动虚拟机VM1~VM100、VM201~VM300。
同理,可以完成对虚拟机VM101~VM200、VM301~VM400的启动。
③:从其它宿主机中获取目标虚拟机的基础内存快照文件,并将从其它宿主机中获取的基础内存快照文件加载到内存公共区中。
此处,当宿主机有多个,且多个宿主机上的虚拟机基于相同的系统模版创建时,如果其中一个宿主机的内存公共区中,已经加载了目标虚拟机的基础内存快照文件,则其它的宿主机则可以直接从该宿主机中获取目标虚拟机的基础内存快照文件,并复制到各自的内存公共区中。
例如,在上述示例二中,虚拟机VM1~VM400均在宿主机A中被创建;宿主机B中创建有虚拟机VM401~VM600,且VM401~VM500基于win7templete创建,VM501~VM600基于win10templete创建。
宿主机A首先启动虚拟机VM1;此处,首先启动的虚拟机VM1是随机确定的。
宿主机识别虚拟机VM1的系统模板为win7templete。
由于虚拟机VM1第一个被启动,此时在宿主机的内存公共区中不存在win7templete的基础内存快照文件,宿主机会检测宿主机B的内存公共区中是否存在win7templete的基础内存快照文件base1,如果是,则从宿主机B的内存公共区中获取win7templete的基础内存快照文件base1,并复制到宿主机A的内存公共区中,完成在宿主机A的内存公共区中建立基础内存快照文件base1的过程。
然后就可以参照上述示例二中示出的各个目标虚拟机的启动方式来启动虚拟机VM1~VM100、VM201~VM300。
如果宿主机会检测宿主机B的内存公共区中不存在win7templete的基础内存快照文件base1,则宿主机A可以采用上述①或②的方式,在宿主机A的内存公共区中加载base1。
同理,可以完成对虚拟机VM101~VM200、VM301~VM400的启动。
本公开实施例通过在监听到虚拟机批量启动的触发事件后,基于目标虚拟机的内存快照文件将虚拟机的内存恢复到虚拟机启动之后的状态,以完成虚拟机的启动,不需要通过访问虚拟磁盘读取启动虚拟机的相关系统数据,降低虚拟机批量启动过程中从存储系统中读取数据的数据量,避免虚拟桌面大批量启动过程中因资源限制导致启动过慢,甚至无法启动。
另外,本公开实施例将目标虚拟机的内存快照文件拆分成基础内存快照文件和扩展内存快照文件,在根据目标虚拟机的内存快照文件启动目标虚拟机时,可以使得同宿主机内的相同系统模板虚拟机,通过共同的基础内存快照和各自对应的扩展内存快照快速启动虚拟机,读取基础内存快照的过程只有一次,甚至在一些实施方式中不存在读取基础内存快照的过程,减少了批量启动虚拟机带来的大量的读取操作,进一步缓虚拟桌面启动风暴对用户的影响。
另外,由于在将虚拟机的临时内存快照文件拆分成基础内存快照文件和扩展内存快照文件的过程,是基于第二临时虚拟机的内存快照文件来进行的,具有更高的效率。
同时,在保存虚拟机的内存快照文件时,可以将使用相同系统模板的目标虚拟机的内存快照文件进行批量保存,例如,针对使用相同系统模板的目标虚拟机的内存快照文件,只保存一份基础内存快照文件,以及各台目标虚拟机分别对应的扩展内存快照文件,相较之保存完整的目标虚拟机的内存快照文件,能够节省磁盘存储空间。
另外,还可以进一步的将基于不同的系统模板创建的多个基础内存快照进行解析,获取多个基础内存快照之间相同的部分,得到子基础内存快照,在保存各台目标虚拟机的内存快照文件时,可以只保存一份子基础内存快照,进一步的节省磁盘存储空间。
随着宿主机内部署的目标虚拟机的数量的增长,只要使用的系统模板的数量不变,只需要少量的磁盘存储空间就能够保存这些新增加的目标虚拟机的扩展内存快照,无需额外增加存储资源,扩展性更高。
基于同一发明构思,本公开实施例中还提供了与虚拟机启动方法对应的虚拟机启动装置,由于本公开实施例中的装置解决问题的原理与本公开实施例上述虚拟机启动方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
参照图4所示,为本公开实施例五提供的一种虚拟机启动装置的示意图,所述装置包括:监听模块41、获取模块42、启动模块43;其中,
监听模块41,用于监听虚拟机批量启动的触发事件;
获取模块42,用于当发生所述虚拟机批量启动的触发事件时,获取所述触发事件触发启动的多台目标虚拟机分别对应的内存快照文件;
启动模块43,用于基于所述多台目标虚拟机分别对应的内存快照文件,启动所述多台目标虚拟机。
在一种可选实施方式中,所述内存快照文件包括:与所述目标虚拟机的系统模版对应的基础内存快照文件,以及所述目标虚拟机的扩展内存快照文件;
获取模块42,具体用于采用下述方式获取所述触发事件触发启动的多台目标虚拟机分别对应的内存快照文件:针对每台所述目标虚拟机,获取与该目标虚拟机的系统模板对应的基础内存快照文件,以及与该目标虚拟机对应的扩展内存快照文件;
启动模块43,具体用于采用下述方式基于所述多台目标虚拟机分别对应的内存快照文件,启动所述多台目标虚拟机:
将与所述系统模板对应的基础内存快照文件复制到该目标虚拟机的内存中,并在该目标虚拟机的内存中加载该目标虚拟机的扩展内存快照文件。
在一种可选实施方式中,获取模块42,具体用于采用下述方式获取与所述系统模板对应的基础内存快照文件:检测在内存公共区中是否存在与所述目标虚拟机的系统模版对应的基础内存快照文件,如果存在,则从所述内存公共区中获取所述基础内存快照文件,如果不存在,则在所述内存公共区中建立所述基础内存快照文件,并从所述内存公共区中获取所述基础内存快照文件。
在一种可选实施方式中,获取模块42,用于采用下述方式在所述内存公共区中建立所述基础内存快照文件:
将该目标虚拟机的基础内存快照文件从其它存储空间中加载到所述内存公共区;
或者,
根据该目标虚拟机的系统模板,创建第一临时虚拟机,并生成所述第一临时虚拟机的内存快照文件;将所述第一临时虚拟机的内存快照文件作为所述基础内存快照文件加载到所述内存公共区中;
或者,
从其它宿主机中获取目标虚拟机的基础内存快照文件,并将从其它宿主机中获取的基础内存快照文件加载到所述内存公共区中。
在一种可选实施方式中,获取模块42用于采用下述方式确定与每台所述目标虚拟机对应的系统模版:
读取所述目标虚拟机的虚拟磁盘配置信息中的虚拟磁盘名;
根据获取的所述目标虚拟机的虚拟磁盘名,从所述目标虚拟机的虚拟磁盘中获取所述目标虚拟机的基础镜像文件;
根据所述目标虚拟机的基础镜像文件,确定所述虚拟机的系统模版。
在一种可选实施方式中,还包括:快照生成模块44,用于采用下述方式生成所述目标虚拟机的内存快照文件:
监听虚拟机快照生成的触发事件;
当发生所述虚拟机快照生成的触发事件时,确定所述虚拟机快照生成的触发事件对应的目标虚拟机,并生成确定的所述目标虚拟机的内存快照文件。
在一种可选实施方式中,所述内存快照文件包括:与所述目标虚拟机的系统模版对应的基础内存快照文件以及扩展内存快照文件;
快照生成模块44,用于采用下述方式生成所述目标虚拟机的内存快照文件:
生成各台所述目标虚拟机的临时内存快照文件;以及,
确定所述目标虚拟机的系统模版,并根据确定出的所述目标虚拟机的系统模版,创建第二临时虚拟机,并生成所述第二临时虚拟机的内存快照文件;
将所述第二临时虚拟机的内存快照文件作为所述目标虚拟机的基础内存快照文件,以及
根据所述目标虚拟机的临时内存快照文件以及基础内存快照文件,生成所述目标虚拟机的扩展内存快照文件。
在一种可选实施方式中,快照生成模块44,还用于确定所述目标虚拟机的系统模版之后,还用于:
根据各台所述目标虚拟机的系统模版对所述目标虚拟机进行分类;
快照生成模块44,用于采用下述方式根据确定出的所述目标虚拟机的系统模版,创建第二临时虚拟机:
针对每一分类中的多台目标虚拟机,根据识别出的该分类对应的系统模版,创建与该分类对应的第二临时虚拟机;
快照生成模块44,用于采用下述方式将所述第二临时虚拟机的内存快照文件作为所述目标虚拟机的基础内存快照文件:
将每一分类对应的所述第二临时虚拟机的内存快照文件作为该分类中所有目标虚拟机的基础内存快照文件。
本公开实施例通过在监听到虚拟机批量启动的触发事件后,基于目标虚拟机的内存快照文件将虚拟机的内存恢复到虚拟机启动之后的状态,以完成虚拟机的启动,不需要通过访问虚拟磁盘读取启动虚拟机的相关系统数据,降低虚拟机批量启动过程中从存储系统中读取数据的数据量,避免虚拟桌面大批量启动过程中因资源限制导致启动过慢,甚至无法启动。
另外,本公开实施例将目标虚拟机的内存快照文件拆分成基础内存快照文件和扩展内存快照文件,在根据目标虚拟机的内存快照文件启动目标虚拟机时,可以使得同宿主机内的相同系统模板虚拟机,通过共同的基础内存快照和各自对应的扩展内存快照快速启动虚拟机,读取基础内存快照的过程只有一次,甚至在一些实施方式中不存在读取基础内存快照的过程,减少了批量启动虚拟机带来的大量的读取操作,进一步缓虚拟桌面启动风暴对用户的影响。
另外,由于在将虚拟机的临时内存快照文件拆分成基础内存快照文件和扩展内存快照文件的过程,是基于第二临时虚拟机的内存快照文件来进行的,具有更高的效率。
同时,在保存虚拟机的内存快照文件时,可以将使用相同系统模板的目标虚拟机的内存快照文件进行批量保存,例如,针对使用相同系统模板的目标虚拟机的内存快照文件,只保存一份基础内存快照文件,以及各台目标虚拟机分别对应的扩展内存快照文件,相较之保存完整的目标虚拟机的内存快照文件,能够节省磁盘存储空间。
另外,还可以进一步的将基于不同的系统模板创建的多个基础内存快照进行解析,获取多个基础内存快照之间相同的部分,得到子基础内存快照,在保存各台目标虚拟机的内存快照文件时,可以只保存一份子基础内存快照,进一步的节省磁盘存储空间。
随着宿主机内部署的目标虚拟机的数量的增长,只要使用的系统模板的数量不变,只需要少量的磁盘存储空间就能够保存这些新增加的目标虚拟机的扩展内存快照,无需额外增加存储资源,扩展性更高。
对应于图1中的虚拟机启动方法,本公开实施例还提供了一种计算机设备500,如图5所示,为本公开实施例提供的计算机设备500结构示意图,包括:
处理器51、存储器52、和总线53;存储器52用于存储执行指令,包括内存521和外部存储器522;这里的内存521也称内存储器,用于暂时存放处理器51中的运算数据,以及与硬盘等外部存储器522交换的数据,处理器51通过内存521与外部存储器522进行数据交换,当所述用户设备50运行时,所述处理器51与所述存储器52之间通过总线53通信,使得所述处理器51在用户态执行以下指令:
监听虚拟机批量启动的触发事件;
当发生所述虚拟机批量启动的触发事件时,获取所述触发事件触发启动的多台目标虚拟机分别对应的内存快照文件;
基于所述多台目标虚拟机分别对应的内存快照文件,启动所述多台目标虚拟机。
一种可能的实施方式中,处理器51执行的指令中,所述内存快照文件包括:与所述目标虚拟机的系统模版对应的基础内存快照文件,以及所述目标虚拟机的扩展内存快照文件;
所述获取所述触发事件触发启动的多台目标虚拟机分别对应的内存快照文件,包括:
针对每台所述目标虚拟机,获取与该目标虚拟机的系统模板对应的基础内存快照文件,以及与该目标虚拟机对应的扩展内存快照文件;
所述基于所述多台目标虚拟机分别对应的内存快照文件,启动所述多台目标虚拟机,包括:
将与所述系统模板对应的基础内存快照文件复制到该目标虚拟机的内存中,并在该目标虚拟机的内存中加载该目标虚拟机的扩展内存快照文件。
一种可能的实施方式中,处理器51执行的指令中,所述获取与所述系统模板对应的基础内存快照文件,包括:
检测在内存公共区中是否存在与所述目标虚拟机的系统模版对应的基础内存快照文件,如果存在,则从所述内存公共区中获取所述基础内存快照文件,如果不存在,则在所述内存公共区中建立所述基础内存快照文件,并从所述内存公共区中获取所述基础内存快照文件。
一种可能的实施方式中,处理器51执行的指令中,所述在所述内存公共区中建立所述基础内存快照文件,包括:将该目标虚拟机的基础内存快照文件从其它存储空间中加载到所述内存公共区;或者,根据该目标虚拟机的系统模板,创建第一临时虚拟机,并生成所述第一临时虚拟机的内存快照文件;将所述第一临时虚拟机的内存快照文件作为所述基础内存快照文件加载到所述内存公共区中;或者,从其它宿主机中获取目标虚拟机的基础内存快照文件,并将从其它宿主机中获取的基础内存快照文件加载到所述内存公共区中。
一种可能的实施方式中,处理器51执行的指令中,根据以下步骤确定与每台所述目标虚拟机对应的系统模版:
读取所述目标虚拟机的虚拟磁盘配置信息中的虚拟磁盘名;
根据获取的所述目标虚拟机的虚拟磁盘名,从所述目标虚拟机的虚拟磁盘中获取所述目标虚拟机的基础镜像文件;
根据所述目标虚拟机的基础镜像文件,确定所述虚拟机的系统模版。
一种可能的实施方式中,处理器51执行的指令中,采用下述方式生成所述目标虚拟机的内存快照文件:监听虚拟机快照生成的触发事件;
当发生所述虚拟机快照生成的触发事件时,确定所述虚拟机快照生成的触发事件对应的目标虚拟机,并生成确定的所述目标虚拟机的内存快照文件。
一种可能的实施方式中,处理器51执行的指令中,所述内存快照文件包括:与所述目标虚拟机的系统模版对应的基础内存快照文件以及扩展内存快照文件;
所述生成所述目标虚拟机的内存快照文件,包括:生成各台所述目标虚拟机的临时内存快照文件;以及,
确定所述目标虚拟机的系统模版,并根据确定出的所述目标虚拟机的系统模版,创建第二临时虚拟机,并生成所述第二临时虚拟机的内存快照文件;
将所述第二临时虚拟机的内存快照文件作为所述目标虚拟机的基础内存快照文件,以及
根据所述目标虚拟机的临时内存快照文件以及基础内存快照文件,生成所述目标虚拟机的扩展内存快照文件。
一种可能的实施方式中,处理器51执行的指令中,所述确定所述目标虚拟机的系统模版之后,还包括:
根据各台所述目标虚拟机的系统模版对所述目标虚拟机进行分类;
所述根据确定出的所述目标虚拟机的系统模版,创建第二临时虚拟机,包括:
针对每一分类中的多台目标虚拟机,根据识别出的该分类对应的系统模版,创建与该分类对应的第二临时虚拟机;
所述将所述第二临时虚拟机的内存快照文件作为所述目标虚拟机的基础内存快照文件,包括:
将每一分类对应的所述第二临时虚拟机的内存快照文件作为该分类中所有目标虚拟机的基础内存快照文件。
对应于图1中的虚拟机启动方法,本公开实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器51运行时执行上述虚拟机启动方法的步骤。
具体地,该存储介质能够为通用的存储介质,如移动磁盘、硬盘等,该存储介质上的计算机程序被运行时,能够执行上述虚拟机启动方法,从而解决现有技术中存在的虚拟机批量启动时对宿主机的存储系统造成较大负载的问题,进而达到降低虚拟机启动过程中从存储系统中读取数据的数据量的效果。
本公开实施例所提供的虚拟机启动方法以及启动装置的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。

Claims (10)

1.一种虚拟机启动方法,其特征在于,包括:
监听虚拟机批量启动的触发事件;
当发生所述虚拟机批量启动的触发事件时,获取所述触发事件触发启动的多台目标虚拟机分别对应的内存快照文件;
基于所述多台目标虚拟机分别对应的内存快照文件,启动所述多台目标虚拟机。
2.根据权利要求1所述的方法,其特征在于,所述内存快照文件包括:与所述目标虚拟机的系统模版对应的基础内存快照文件,以及所述目标虚拟机的扩展内存快照文件;
所述获取所述触发事件触发启动的多台目标虚拟机分别对应的内存快照文件,包括:
针对每台所述目标虚拟机,获取与该目标虚拟机的系统模板对应的基础内存快照文件,以及与该目标虚拟机对应的扩展内存快照文件;
所述基于所述多台目标虚拟机分别对应的内存快照文件,启动所述多台目标虚拟机,包括:
将与所述系统模板对应的基础内存快照文件复制到该目标虚拟机的内存中,并在该目标虚拟机的内存中加载该目标虚拟机的扩展内存快照文件。
3.根据权利要求2所述的方法,其特征在于,所述获取与所述系统模板对应的基础内存快照文件,包括:
检测在内存公共区中是否存在与所述目标虚拟机的系统模版对应的基础内存快照文件,如果存在,则从所述内存公共区中获取所述基础内存快照文件,如果不存在,则在所述内存公共区中建立所述基础内存快照文件,并从所述内存公共区中获取所述基础内存快照文件。
4.根据权利要求3所述的方法,其特征在于,所述在所述内存公共区中建立所述基础内存快照文件,包括:
将该目标虚拟机的基础内存快照文件从其它存储空间中加载到所述内存公共区;
或者,
根据该目标虚拟机的系统模板,创建第一临时虚拟机,并生成所述第一临时虚拟机的内存快照文件;将所述第一临时虚拟机的内存快照文件作为所述基础内存快照文件加载到所述内存公共区中;
或者,
从其它宿主机中获取目标虚拟机的基础内存快照文件,并将从其它宿主机中获取的基础内存快照文件加载到所述内存公共区中。
5.根据权利要求2所述的方法,其特征在于,根据以下步骤确定与每台所述目标虚拟机对应的系统模版:
读取所述目标虚拟机的虚拟磁盘配置信息中的虚拟磁盘名;
根据获取的所述目标虚拟机的虚拟磁盘名,从所述目标虚拟机的虚拟磁盘中获取所述目标虚拟机的基础镜像文件;
根据所述目标虚拟机的基础镜像文件,确定所述虚拟机的系统模版。
6.根据权利要求1所述的方法,其特征在于,采用下述方式生成所述目标虚拟机的内存快照文件:
监听虚拟机快照生成的触发事件;
当发生所述虚拟机快照生成的触发事件时,确定所述虚拟机快照生成的触发事件对应的目标虚拟机,并生成确定的所述目标虚拟机的内存快照文件。
7.根据权利要求6所述的方法,其特征在于,所述内存快照文件包括:与所述目标虚拟机的系统模版对应的基础内存快照文件以及扩展内存快照文件;
所述生成所述目标虚拟机的内存快照文件,包括:
生成各台所述目标虚拟机的临时内存快照文件;以及,
确定所述目标虚拟机的系统模版,并根据确定出的所述目标虚拟机的系统模版,创建第二临时虚拟机,并生成所述第二临时虚拟机的内存快照文件;
将所述第二临时虚拟机的内存快照文件作为所述目标虚拟机的基础内存快照文件,以及
根据所述目标虚拟机的临时内存快照文件以及基础内存快照文件,生成所述目标虚拟机的扩展内存快照文件。
8.根据权利要求7所述的方法,其特征在于,所述确定所述目标虚拟机的系统模版之后,还包括:
根据各台所述目标虚拟机的系统模版对所述目标虚拟机进行分类;
所述根据确定出的所述目标虚拟机的系统模版,创建第二临时虚拟机,包括:
针对每一分类中的多台目标虚拟机,根据识别出的该分类对应的系统模版,创建与该分类对应的第二临时虚拟机;
所述将所述第二临时虚拟机的内存快照文件作为所述目标虚拟机的基础内存快照文件,包括:
将每一分类对应的所述第二临时虚拟机的内存快照文件作为该分类中所有目标虚拟机的基础内存快照文件。
9.一种虚拟机启动装置,其特征在于,包括:
监听模块,用于监听虚拟机批量启动的触发事件;
获取模块,用于当发生所述虚拟机批量启动的触发事件时,获取所述触发事件触发启动的多台目标虚拟机分别对应的内存快照文件;
启动模块,用于基于所述多台目标虚拟机分别对应的内存快照文件,启动所述多台目标虚拟机。
10.一种电子设备,其特征在于,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行如权利要求1至8任一所述的虚拟机启动方法的步骤。
CN201811300466.8A 2018-11-02 2018-11-02 一种虚拟机启动方法以及装置 Active CN109634713B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811300466.8A CN109634713B (zh) 2018-11-02 2018-11-02 一种虚拟机启动方法以及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811300466.8A CN109634713B (zh) 2018-11-02 2018-11-02 一种虚拟机启动方法以及装置

Publications (2)

Publication Number Publication Date
CN109634713A true CN109634713A (zh) 2019-04-16
CN109634713B CN109634713B (zh) 2020-12-08

Family

ID=66067232

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811300466.8A Active CN109634713B (zh) 2018-11-02 2018-11-02 一种虚拟机启动方法以及装置

Country Status (1)

Country Link
CN (1) CN109634713B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110569108A (zh) * 2019-09-04 2019-12-13 腾讯科技(深圳)有限公司 小游戏虚拟机执行环境的创建方法及相关产品
CN110704161A (zh) * 2019-09-27 2020-01-17 联想(北京)有限公司 虚拟机创建方法、装置及计算机设备
CN111506389A (zh) * 2020-03-25 2020-08-07 新华三大数据技术有限公司 一种虚拟机启动方法及装置
CN113886027A (zh) * 2021-12-07 2022-01-04 广州锦和科技有限公司 虚拟机模板创建及虚拟机的进入方法、装置及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103946807A (zh) * 2013-11-20 2014-07-23 华为技术有限公司 一种生成快照的方法、系统和装置
CN106598698A (zh) * 2016-11-25 2017-04-26 山东乾云启创信息科技股份有限公司 基于迁移方式加速虚拟机批量启动的方法及系统
CN106778246A (zh) * 2016-12-01 2017-05-31 北京奇虎科技有限公司 沙箱虚拟化的检测方法及检测装置
CN106775946A (zh) * 2016-12-16 2017-05-31 无锡华云数据技术服务有限公司 一种虚拟机快速创建方法
CN107239322A (zh) * 2017-08-02 2017-10-10 郑州云海信息技术有限公司 一种虚拟机启动方法和装置
CN107544870A (zh) * 2017-06-14 2018-01-05 新华三云计算技术有限公司 一种虚拟机磁盘备份方法及装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103946807A (zh) * 2013-11-20 2014-07-23 华为技术有限公司 一种生成快照的方法、系统和装置
CN106598698A (zh) * 2016-11-25 2017-04-26 山东乾云启创信息科技股份有限公司 基于迁移方式加速虚拟机批量启动的方法及系统
CN106778246A (zh) * 2016-12-01 2017-05-31 北京奇虎科技有限公司 沙箱虚拟化的检测方法及检测装置
CN106775946A (zh) * 2016-12-16 2017-05-31 无锡华云数据技术服务有限公司 一种虚拟机快速创建方法
CN107544870A (zh) * 2017-06-14 2018-01-05 新华三云计算技术有限公司 一种虚拟机磁盘备份方法及装置
CN107239322A (zh) * 2017-08-02 2017-10-10 郑州云海信息技术有限公司 一种虚拟机启动方法和装置

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110569108A (zh) * 2019-09-04 2019-12-13 腾讯科技(深圳)有限公司 小游戏虚拟机执行环境的创建方法及相关产品
CN110569108B (zh) * 2019-09-04 2021-04-30 腾讯科技(深圳)有限公司 小游戏虚拟机执行环境的创建方法及相关产品
CN110704161A (zh) * 2019-09-27 2020-01-17 联想(北京)有限公司 虚拟机创建方法、装置及计算机设备
CN110704161B (zh) * 2019-09-27 2022-05-31 联想(北京)有限公司 虚拟机创建方法、装置及计算机设备
CN111506389A (zh) * 2020-03-25 2020-08-07 新华三大数据技术有限公司 一种虚拟机启动方法及装置
CN113886027A (zh) * 2021-12-07 2022-01-04 广州锦和科技有限公司 虚拟机模板创建及虚拟机的进入方法、装置及存储介质

Also Published As

Publication number Publication date
CN109634713B (zh) 2020-12-08

Similar Documents

Publication Publication Date Title
CN109634713A (zh) 一种虚拟机启动方法以及装置
Vayghan et al. Kubernetes as an availability manager for microservice applications
CN108089913B (zh) 一种超融合系统的虚拟机部署方法
US20030217131A1 (en) Processing distribution using instant copy
CN108196915A (zh) 基于应用容器引擎的代码处理方法、设备及存储介质
JP2002123400A (ja) 転送方法、システム、コンピュータ可読媒体及びプログラム
KR20060051932A (ko) 소프트웨어를 실행 동안 업데이트하는 시스템, 방법 및컴퓨터-판독가능 매체
TW200828118A (en) Method and process for using common preinstallation environment for heterogeneous operating systems
US20080033902A1 (en) A Method for Providing Live File Transfer Between Machines
CN105052111A (zh) 跨群集边界的服务迁移
CN101778132B (zh) 一种基于负载均衡的网络安装方法、系统及装置
CN101170423A (zh) 一种面向服务的机群部署方法
CN111796838B (zh) Mpp数据库自动部署方法及装置
CN103077034B (zh) 混合虚拟化平台java应用迁移方法与系统
CN109144776A (zh) 虚拟机镜像文件处理方法及装置
CN109522028A (zh) 一种操作系统的安装方法及系统
CN115051846B (zh) 基于超融合平台的k8s集群的部署方法及电子设备
CN109600439B (zh) 基于微服务的PaaS平台的部署方法及PaaS平台
CN114995888A (zh) 一种智能网卡部署方法、装置及介质
CN107247596A (zh) 开机方法、装置及电子设备
US10313190B2 (en) Techniques of preserving and restoring customized configurations of thin client at restore time points
US20060047927A1 (en) Incremental provisioning of software
US7506115B2 (en) Incremental provisioning of software
CN116483382A (zh) 一种裸金属部署方法、装置及其介质
CN116467043A (zh) 一种基于k8s容器化差异化自动部署方法、装置及介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant