CN105446834A - 虚拟机快照的生成方法和装置 - Google Patents

虚拟机快照的生成方法和装置 Download PDF

Info

Publication number
CN105446834A
CN105446834A CN201510863046.0A CN201510863046A CN105446834A CN 105446834 A CN105446834 A CN 105446834A CN 201510863046 A CN201510863046 A CN 201510863046A CN 105446834 A CN105446834 A CN 105446834A
Authority
CN
China
Prior art keywords
virtual machine
page
content
snapshot
saved
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
CN201510863046.0A
Other languages
English (en)
Other versions
CN105446834B (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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201510863046.0A priority Critical patent/CN105446834B/zh
Publication of CN105446834A publication Critical patent/CN105446834A/zh
Priority to EP16869533.6A priority patent/EP3370153B1/en
Priority to EP22205358.9A priority patent/EP4220407A1/en
Priority to PCT/CN2016/079882 priority patent/WO2017092219A1/zh
Priority to US15/991,858 priority patent/US10503607B2/en
Application granted granted Critical
Publication of CN105446834B publication Critical patent/CN105446834B/zh
Priority to US16/689,683 priority patent/US11436091B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • G06F11/1451Management of the data involved in backup or backup restore by selection of backup contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • 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
    • 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/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • 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/45575Starting, stopping, suspending or resuming virtual machine instances
    • 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
    • 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/45591Monitoring or debugging support
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/84Using snapshots, i.e. a logical point-in-time copy of the data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/152Virtualized environment, e.g. logically partitioned system

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明实施例公开了一种虚拟机快照的生成方法和装置。本发明实施例方法包括:根据接收到的快照命令,在第一时刻暂停虚拟机,并开始执行对虚拟机的内存中内存页的保存操作及对内存中的内存页的污染拦截操作;将虚拟机在第一时刻的设备状态保存至快照文件;在设备状态保存完毕后,将虚拟机由暂停状态恢复为运行状态;其中,执行对内存页的污染拦截操作包括:从第一时刻到将内存页的内容保存至虚拟机的快照文件的时刻之间,对影响内存页的内容的污染动作进行拦截,将内存页的内容保存到临时缓存后,再解除对污染动作的拦截;其中,执行对虚拟机的内存中内存页的保存操作包括:将临时缓存中保存的内存页的内容保存至虚拟机的快照文件中。

Description

虚拟机快照的生成方法和装置
技术领域
本发明涉及计算机领域,尤其涉及一种虚拟机快照的生成方法和装置。
背景技术
虚拟机快照指的是将某一时刻下的虚拟机的状态复制保存下来,以便系统在出现问题时根据该虚拟机快照还原虚拟机,或者使得虚拟机在启动后根据该虚拟机快照恢复到该时刻的运行状态。在线快照指的是在不中断当前虚拟机的正常运行下将当前虚拟机的工作状态保存到指定文件
虚拟机快照包括虚拟机的设备状态和内存数据。目前的KVM(全称:Kernel-basedVirtualMachine,基于linux内核的虚拟机)并没有在线内存快照功能。在获取KVM的快照时,需先暂停虚拟机,然后再热迁移虚拟机的虚拟内存中的内容和设备状态到快照文件中。然而,热迁移虚拟机内存到快照文件中所花时间较长,因此虚拟机暂停时间较久,这对虚拟机的业务影响较大。
发明内容
本发明实施例提供了一种虚拟机快照的生成方法和装置,以保证快照文件中虚拟机内存的一致性,同时尽可能减少虚拟机内部业务的中断。
第一方面,本发明实施例提供一种虚拟机快照的生成方法。该方法在用户态对虚拟机所有内存页写保护,从而在内核态阻塞所有针对虚拟机内存页的写操作,并在用户态处理写保护异常,在内存页被污染前保存到快照文件中,保存完成后立即恢复虚拟机继续运行。从而保证快照文件中,虚拟机内存的一致性,又尽可能不影响虚拟机的正常运行,减少对宿主机的影响(主要是不能占用过多额外内存)。
在第一方面的一种可能的实现方式中,虚拟机监控器获取快照命令,并根据该快照命令在第一时刻暂停该虚拟机,将处于暂停状态的所述虚拟机的第一时刻的设备状态保存至所述虚拟机的快照文件。在所述设备状态保存完毕后,将所述虚拟机由暂停状态恢复为运行状态。并且从第一时刻开始,虚拟机监控器还执行对所述虚拟机的内存中内存页的保存操作及对所述虚拟机的内存中的内存页的污染拦截操作。
根据第一方面的第一种可能的实现方式,在第二种可能的实现方式中,对所述虚拟机的内存中的内存页的污染拦截操作包括:在所述第一时刻到将所述内存页的内容保存至所述虚拟机的快照文件的时刻之间,对影响所述内存页的内容的污染动作进行拦截,直到将所述内存页的内容保存到临时缓存后,再解除对所述污染动作的拦截。
根据第一方面的第一种可能的实现方式,或者第二种可能的实现方式中,在第三种可能的实现方式中,对所述虚拟机的内存中内存页的保存操作包括:将所述临时缓存中保存的所述内存页的内容保存至所述虚拟机的快照文件中。本发明实施例利用临时缓存来保存虚拟机内存页,减少对虚拟机运行的影响。用户可以根据实际需求,来设置临时缓存的大小,临时缓存越大,对虚拟机运行影响越小。根据第一方面或第一方面的任意一种实现方式,在第四种可能的实现方式中,对所述虚拟机的内存中内存页的保存操作及对所述内存中的内存页的污染拦截操作为第一时刻后两个并行执行的动作。
根据第一方面任意一种实现方式,在第五种可能的实现方式中,依次获取虚拟机的内存中各内存页的快照文件的过程包括:在获取其中一个内存页的快照文件之前,首先判断该内存页的内容是否保存到临时缓存中,若否,则直接将该内存页的内容保存到快照文件中,若是,则将临时缓存中的该内存页的内容保存到虚拟机的快照文件中。因此,针对虚拟机所有内存页只保存一次,因而可以保证快照文件小于等于虚拟机内存大小,减少了内存快照文件占用的空间。进一步地,在第六种可能的实现方式中,临时缓存可以是虚拟机的内存之外的一段内存,也可以是虚拟机内存之外的多个文件。
根据第一方面任意一种实现方式,在第七种可能的实现方式中,判断所述内存页的内容是否保存到临时缓存的方法包括:当拦截到影响该内存页的内容的污染动作时,将该内存页标记为已拦截到污染动作,或者,在将该内存页的内容保存到临时缓存时,将该内存页标记为已缓存到临时缓存中。
本发明实施例的虚拟机快照生成方法中,获取到虚拟机在第一时刻的设备状态的快照文件后,将虚拟机恢复为运行状态,使得虚拟机暂停的时间较短,对虚拟机的业务影响较小;获取虚拟机的内存状态的快照文件时,由于从第一时刻开始到保存虚拟机的内存中的内存页的内容至所述虚拟机的快照文件之前,对影响所述内存页的内容的污染动作进行拦截,将所述内存页的内容保存到临时缓存,使得在保存虚拟机的内存页时,对于已被污染的内存页从临时缓存中获取该内存页的内容保存到虚拟机的快照文件中,这样,可以保证虚拟机的第一时刻的快照文件中设备状态和虚拟内存的一致性;另外,在将内存页的内容保存到临时缓存后,解除对所述污染动作的拦截,以使得能够顺利访问该内存页,不需要将虚拟机暂停直到获取完虚拟机的虚拟内存的快照文件才恢复虚拟机的运行状态,避免了虚拟机暂停时间较久而影响业务的情况
根据第一方面任意一种实现方式,在第八种可能的实现方式中,,对所述内存页的污染动作进行拦截的方法包括:利用userfaultfd接口开启对所述内存页的写保护,通过写保护来拦截该内存页的污染动作。具体的,利用userfaultfd接口将所述内存页标记为只读。linuxuserfault功能对内存页的copy-on-wirite功能,不区分内核态还是用户态在修改写保护页,本发明实施例通过调用userfaultfd接口来开启对内存页的写保护,不用区分是内核态还是用户态在修改写保护页,因此无需修改内核驱动代码,能够兼容现有的虚拟化平台。
根据第一方面任意一种实现方式,在第九种可能的实现方式中,将该内存页的内容保存到临时缓存的方法包括:创建写保护异常处理线程;所述写保护异常处理线程获取文件描述符;可选地,该写保护异常处理线程可通过userfaultfd接口来获取文件描述符。当对所述内存页的污染动作被拦截到时,所述写保护异常处理线程根据所述文件描述符获取所述内存页的地址;所述写保护异常处理线程根据所述内存页的地址获取所述内存页的内容,将所述内容保存到临时缓存中。可选地,写保护异常处理线程可通过调用read(ufd)来获取该内存页的地址。
根据第一方面第九种可能的实现方式,在第十种可能的实现方式中,写保护异常处理线程还可以将该内存页标记为已拦截到污染动作或已保存到临时缓存。优选地,写保护异常处理线程可以利用位图来标记内存页。当写保护异常处理线程将内存页的内容保存到临时缓存后,通过userfaultfd接口通知内核态去掉对该内存页的写保护,虚拟机继续运行,并可以实现对对该内存页的写操作,。当所有的地址的内存页内容全部保存到快照文件中时,通知写保护异常处理线程退出。
根据第一方面任意一种实现方式,在第十一种可能的实现方式中,、虚拟化平台中能够污染虚拟机的内存的有客户机软件和虚拟机监控器。虚拟机监控器打开有扩展页表(英文:ExtendedPageTable,缩写:EPT)或者巢状分页表(英文:NestedPageTable,缩写:NPT)的写保护功能,用于拦截客户机软件对虚拟机的内存的污染动作。打开EPT或者NPT的写保护功能后,所述写保护功能用于在所述客户机软件污染所述内存页前时使得所述虚拟机由客户机状态切换到宿主机状态,所述虚拟机监控器在所述宿主机状态中将所述内存页的内容保存到临时缓存,并将所述内存页标记为已拦截到污染动作或已保存到临时缓存,然后去掉该内存页的写保护,使得客户机软件能够顺利实现对该内存页的写操作。
根据第一方面的第十一种实现方式,在第十二种可能的实现方式中,虚拟机监控器能够通过虚拟机监控器的代码执行路径区分虚拟机监控器是否将要写所述虚拟机的内存。当虚拟机监控器根据执行代码路径确定将要污染所述虚拟机的内存时,所述虚拟机监控器判断当前是否正在获取所述虚拟机的快照文件。具体的,在虚拟机监控器接收到快照命令时,打开写动作跟踪功能。当虚拟机监控器确定写动作跟踪功能打开时,可确定当前正在获取所述虚拟机的快照文件。当所述虚拟机监控器确定当前正在获取所述虚拟机的快照文件时,且所述虚拟机监控器确定要污染的内存页的内容没有存到所述临时缓存时,将所述内存页的内容保存到临时缓存中,然后再污染所述内存页。
第二方面,本发明实施例还提供了用于实现上述方法的虚拟机快照的生成装置。
在第二方面的第一种可能的实现方式中,虚拟机快照的生成装置包括:获取模块、第一保存模块、拦截模块、第二保存模块和恢复模块,其中每个模块完成特定的功能,各个多块共同配合实现上述第一方面、第一方面的第一种可能的实现方式至第十二种可能的实现方式中所提供的虚拟机快照的生成方法。
在第二方面的第二种可能的实现方式中,虚拟机快照的生成装置为虚拟机监控器,该虚拟机监控器包括用户态的QEMU进程和内核态的KVM模块,该QEMU进程具体用于执行上述第一方面、第一方面的第一种可能的实现方式至第十二种可能的实现方式中所提供的虚拟机快照的生成方法。第三方面,本发明实施例还提供一种计算机可读存储介质,该存储介质中存储有用于实现上述第一方面、第一方面的第一种可能的实现方式至第十二种可能的实现方式中所描述的虚拟机快照的生成方法的指令或软件模块。
本发明实施例中,由于从第一时刻开始到保存虚拟机的内存中的内存页的内容至所述虚拟机的快照文件之前,对影响所述内存页内容的污染动作进行拦截,将所述内存页的内容保存到临时缓存,使得在保存虚拟机的内存页时,若检测到该内存页的内容保存到临时缓存,则从临时缓存中获取该内存页的内容,并将该内容保存到虚拟机的快照文件中,这样,可以保证虚拟机的第一时刻的快照文件中设备状态和虚拟内存的一致性;另外,在将内存页的内容保存到临时缓存后,解除对所述污染动作的拦截,以使得能够顺利访问该内存页,不需要将虚拟机暂停直到获取完虚拟机的虚拟内存的快照文件才恢复虚拟机的运行状态,减少了虚拟机暂停时间,从而减少了对虚拟机所承载的业务的影响。
附图说明
图1为本发明实施例中的一个简化的数据中心部署图;
图2为图1所示数据中心中的一个计算节点的框架结构示意图;
图3为本发明的提供的一种虚拟机快照的生成方法的一个实施例的流程示意图;
图4为本发明的提供的一种虚拟机快照的生成方法的另一个实施例的流程示意图;
图5为本发明的提供的一种虚拟机快照的生成方法的另一个实施例的流程示意图;
图6为本发明的提供的一种虚拟机快照的生成装置的一个实施例的流程示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等是用于区别不同的对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
本发明实施例提供的虚拟机快照的生成方法可以典型地用于数据中心的备份与恢复场景。图1所示为一个简化的数据中心部署图。
参见图1,数据中心包括:多个集群(图1中以两个集群为例),每个集群是由多个计算节点(或者称之为主机)组成,例如图1中的集群12,集群12中分别包括计算节点1-n。而每个计算节点是由计算机软件(虚拟化平台)和硬件(包括计算硬件,例如x86、ARM,存储硬件,网络硬件等)组成,每个计算节点上允许运行多台虚拟机。另外在这个数据中心中还有一个管理服务器10(可以认为是管理节点),以及一个备份服务器11(实际部署中可能存在多个备份服务器),备份服务器通常具有一个大容量的存储设备。如图1所示,管理服务器下发针对某个集群某台虚拟机的备份命令,计算节点对指定虚拟机做快照,对应的快照数据会存储到备份服务器上。在需要时可以将通过快照文件恢复虚拟机或创建新虚拟机到原来的集群节点上。或者也可以跨站点备份数据恢复,可以将一个站点的VM快照数据传递到另一个站点,恢复到任意虚拟机中。其中,虚拟机快照是指把某一时刻虚拟机的状态像照片一样保存下来。通常,快照将要保存的所有的硬盘信息、内存信息和CPU信息,某些虚拟机快照还将保存BIOS信息。快照通常分为两大部分,磁盘快照和虚拟机状态快照(也称作是虚拟机内存快照,因为大部分快照文件的内容是内存数据),磁盘快照可以单独使用,虚拟机状态快照一般需要结合磁盘快照使用。本发明涉及的虚拟机快照生成方法用于在不中断当前虚拟机的正常运行下,将计算节点中一个或多个虚拟机的工作状态保存到指定文件中,属于一种在线快照技术。
下面以一个计算节点为例描述本发明的虚拟机快照生成方法。计算节点具体可以为一个服务器,或者具有运算处理能力的硬件设备。。其中,计算节点的内部结构示意图如图2所示。
如图2所示,图2为本发明实施例中的计算节点的一个框架结构示意图。计算节点的硬件平台包括处理器,存储器,通信接口等。其中,存储器可以包括易失性存储器(例如RAM)以及可选的非易失性存储器(例如磁盘,SSD等)。硬件平台上的的各组件可以是由总线连接在一起,实现各组件间的信息交互。所述硬件平台也可以分布在不同的物理实体上,当位于不同的物理实体时,各组件间的信息交互可以经由各计算节点上的通信接口完成。可选的,计算节点可以通过通信接口与一个共享存储设备通信。
计算节点的硬件平台上运行着虚拟机监控器(英文:VirtualMachineMonitor,缩写:VMM),该虚拟机监控器用于屏蔽计算平台的硬件差异,为用户提供抽象的、统一的、模拟的多个计算环境,也即多台虚拟机。虚拟机监控器为每一台虚拟机模拟出一套独立于真实物理硬件的虚拟硬件环境。虚拟机包括虚拟硬件和客户机软件,其中虚拟硬件包括虚拟内存、虚拟处理器、虚拟网卡和其他虚拟设备,客户机软件包括用户程序和客户机操作系统,其中该客户机操作系统可以是windows、linux、Solaris等,在此不作限制。
在部分平台中该虚拟机监控器为操作系统,例如,在KVM中该虚拟机监控模块为宿主机操作系统。
具体举例来说,在KVM中,虚拟机监控器包括用户态的QEMU进程和内核态的KVM模块,QEMU进程用来模拟虚拟机的虚拟网卡和其他虚拟设备;KVM模块辅助QEMU进程,充分利用硬件虚拟化能力,来模拟虚拟机的内存和处理器。
虚拟机的快照用于虚拟机的备份和恢复。图1中,管理服务器10下发针对某个集群中某台虚拟机的备份命令。虚拟机监控器在接收到快照指令时,根据该快照指令获取虚拟机的状态数据,并保存到快照文件中。其中,虚拟机的快照文件包括虚拟机的设备状态数据和虚拟机的虚拟内存数据。为描述方便,在下文中,将“虚拟机的虚拟内存”称为“虚拟机的内存”。在部署集群系统时,常采用共享存储来存储服务器中的各虚拟机的磁盘文件和快照文件,以便于集中式管理。当然,虚拟机的快照文件也可以存储在服务器的非易失性存储器中,在此不作限制。
在获取虚拟机的快照文件时,需确保虚拟机的设备状态的快照和虚拟内存的快照的一致性,也即确保虚拟机的设备状态数据和内存数据分别和虚拟机在某一时刻下的设备状态数据和内存数据相同,以便后续根据该虚拟机的快照文件对该虚拟机的备份和/或恢复。
例如,可以根据该虚拟机在第一时刻的快照文件将该虚拟机恢复到第一时刻的状态,或者,在本集群节点或其他集群节点内另外创建新虚拟机,根据该虚拟机在第一时刻的快照文件使得该新虚拟机具有该虚拟机在第一时刻的状态。
参见图3,图3为本发明的提供的一种虚拟机快照的生成方法的一个实施例的流程示意图。如图1所示,虚拟机快照的生成方法包括:
301、虚拟机监控器根据接收到的快照命令,所述快照命令用于指示获取虚拟机在第一时刻的快照文件,在所述第一时刻暂停所述虚拟机,并开始执行步骤304及步骤305。
在一个实施例中,该快照命令中携带有用于指示该虚拟机的信息,用于指示获取该虚拟机的快照文件。虚拟机监控器接收该快照命令后立即响应该快照命令,获取接收到快照命令时的虚拟机的快照文件。为描述方便,将虚拟机监控器接收到快照命令后响应该快照命令的时刻称为第一时刻。需注意的是,虚拟机响应快照命令的时刻一般和接收到快照命令的时刻为同一时刻,但虚拟机监控器从接收到快照命令后到响应该快照命令之间也可能会存在一定的延时。
虚拟机监控器获取到快照命令后,根据该快照命令在第一时刻暂停该虚拟机,并且,在第一时刻开始执行对所述虚拟机的内存中内存页的保存操作及对所述虚拟机的内存中的内存页的污染拦截操作。其中,对所述虚拟机的内存中的内存页的污染拦截操作在步骤304中进行解释说明,对所述虚拟机的内存中内存页的保存操作在步骤305中进行解释说明。
302、虚拟机监控器将处于暂停状态的所述虚拟机的第一时刻的设备状态保存至所述虚拟机的快照文件。
由于虚拟机在第一时刻暂停,那么虚拟机监控器获取到虚拟机的处于暂停的设备状态的快照文件中为虚拟机在第一时刻的状态。如何获取设备状态的快照文件为现有技术,在此不再赘述。
303、在所述设备状态保存完毕后,虚拟机监控器将所述虚拟机由暂停状态恢复为运行状态。
由于虚拟机的内存中内存页较多,虚拟机监控器获取虚拟机的内存的全部内存页的快照文件所需时间较多,若待全部获取虚拟机的内存的快照文件后再恢复虚拟机的运行状态,会导致虚拟机暂停时间较久,对虚拟机的业务影响较大。因此,本实施例中,虚拟机监控器获取到虚拟机在第一时刻的设备状态的快照文件后,将虚拟机恢复为运行状态,使得虚拟机暂停的时间较短,对虚拟机的业务影响较小。
304、虚拟机监控器对所述虚拟机的内存中的内存页的污染拦截操作包括:从所述第一时刻到将所述内存页的内容保存至所述虚拟机的快照文件的时刻之间,对影响所述内存页的内容的污染动作进行拦截,将所述内存页的内容保存到临时缓存后,再解除对所述污染动作的拦截。
305、虚拟机监控器对所述虚拟机的内存中内存页的保存操作包括:将所述临时缓存中保存的所述内存页的内容保存至所述虚拟机的快照文件中。
本文中,对内存页的污染动作指的是对内存页的写动作。从第一时刻开始,只要虚拟机的内存中各内存页没有被污染,那么虚拟机的内存内容和第一时刻时的内存内容一致。然而,由于完成虚拟机的内存快照所需时间较长,很可能会出现虚拟机的中的部分内存页的内容被污染的情况。
因此,图3所示实施例中,从第一时刻开始,依次获取各内存页的快照文件,其中,对虚拟机的内存中的任意一个内存页,在将该内存页的内容保存至虚拟机的快照文件之前,若出现影响该内存页的内容的污染动作,则对影响该内存页的内容的污染动作进行拦截。当拦截到对内存页的污染动作时,保存该内存页的内容到临时缓存中,然后解除对该污染动作的拦截。污染动作的执行主体再次发起该污染动作,并顺利对该内存页进行写操作。这样,临时缓存中保存的该内存页的内容为该内存页在第一时刻的内容。在内存页的内容已经保存到虚拟机的快照文件中的时刻之后,不用在执行对该内存页的污染动作的拦截操作。
在图3所示实施例中,对所述虚拟机的内存中内存页的保存操作及对所述内存中的内存页的污染拦截操作为第一时刻后两个并行的动作。依次获取虚拟机的内存中各内存页的快照文件的过程中,在获取其中一个内存页的快照文件之前,首先判断该内存页的内容是否保存到临时缓存中,若否,则表示该内存页从第一时刻到当前还未被污染,因此直接将该内存页的内容保存到快照文件中,若是,则表示该内存页从第一时刻到当前已经被污染,那么不是将内存中该内存页的内容保存到虚拟机的快照文件中,而是到临时缓存中查找该内存页的内容,并将临时缓存中的该内存页的内容保存到虚拟机的快照文件中。
其中,临时缓存可以是虚拟机的内存之外的一段内存,也可以是虚拟机内存之外的多个文件,在此不作限制。
其中,判断所述内存页的内容是否保存到临时缓存的方法有多种。例如,从所述第一时刻开始到保存所述内存页的快照文件之前,当拦截到影响该内存页的内容的污染动作时,将该内存页标记为已拦截到污染动作,或者,在将该内存页的内容保存到临时缓存时,将该内存页标记为已缓存到临时缓存中。
这样,在依次获取虚拟机的各内存页的快照文件之前,当检测到该内存页被标记为已拦截到污染动作或被标记为已保存到临时缓存时,表示该内存页已经被污染,也即该内存页的当前内容和第一时刻时的内容不一致,那么不是将该内存页的当前内容存储到虚拟机的快照文件中,而是将从临时缓存中获取该内存页的内容(也即在是第一时刻的内容),并将该内容存储到虚拟机的快照文件中。
其中,对内存页的标记为已拦截到污染动作或被标记为已保存到临时缓存具体为对该内存页的地址标记为已拦截到污染动作或被标记为已保存到临时缓存。在将虚拟机的一个内存页的内容保存到虚拟机的快照文件中时,获取该内存页的地址,并检测该内存页的地址是否被标记,若没有被标记,则根据该内存页的地址获取该内存页的内容并存储到虚拟机的快照文件中。
在图3所示实施例中,对于虚拟机的内存中的任意一个内存页,由于从第一时刻开始到保存该内存页的内容到虚拟机的快照文件之前,对影响该内存页的内容的污染动作进行拦截,将所述内存页的内容保存到临时缓存,使得在保存虚拟机的内存页时,若检测到内存页的内容保存到临时缓存,则从临时缓存中获取该内存页的内容,并将该内容保存到虚拟机的快照文件中,这样,可以保证虚拟机的第一时刻的快照文件中设备状态和虚拟内存的一致性;另外,在将内存页的内容保存到临时缓存后,解除对所述污染动作的拦截,以使得能够顺利访问该内存页,不需要将虚拟机暂停直到获取完虚拟机的虚拟内存的快照文件才恢复虚拟机的运行状态,避免了虚拟机暂停时间较久而影响业务的情况;而且,本实施例中利用临时缓存来保存虚拟机的内存页内容,因此用户可以根据实际需求来设置临时缓存的大小。
在图3所示实施例中,对所述内存页的污染动作进行拦截的方法有多种,下面对其中的两种进行举例说明。
举例一、利用userfaultfd接口开启对所述内存页的写保护,通过写保护来拦截该内存页的污染动作。
具体的,利用userfaultfd接口将所述内存页标记为只读。本实施例中,在对内存页的污染动作进行拦截后,要将该内存页的内容保存到临时缓存中。下面对该内存页的内容保存到临时缓存的方法进行举例说明。
创建写保护异常处理线程;所述写保护异常处理线程获取文件描述符;具体的,该写保护异常处理线程可通过userfaultfd接口来获取文件描述符。当对所述内存页的污染动作被拦截到时,所述写保护异常处理线程根据所述文件描述符获取所述内存页的地址;所述写保护异常处理线程根据所述内存页的地址获取所述内存页的内容,将所述内容保存到临时缓存中。
其中,文件描述符用于内核态和用户态通信。创建写保护异常处理线程后,由于各内存页处于写保护状态,当某个内存页要被污染时,内核态发生缺页异常,那么内核态会阻塞该污染动作,同时通过文件描述符通知用户态中的写保护异常处理线程该内存页的地址。所述写保护异常处理线程根据所述内存页的地址获取所述内存页的内容,并将内存页的内容保存到临时缓存中。
同时,写保护异常处理线程还可以将该内存页标记为已拦截到污染动作或已保存到临时缓存。当写保护异常处理线程将内存页的内容保存到临时缓存后,通过userfaultfd接口通知内核态去掉对该内存页的写保护,虚拟机再次试图对该内存页污染时,成功实现,并继续运行。
在举例一中,通过调用userfaultfd接口来开启对内存页的写保护,不用区分是内核态还是用户态在修改写保护页,因此无需修改内核驱动代码,能够兼容现有的虚拟化平台。
为方便理解,下面以一个具体的实施例对举例一中的方法进行描述。
如图4所示,图4为本发明的虚拟机快照的生成方法的一个实施例的流程示意图。
S41、虚拟机监控器中的控制线程接收快照命令。
本实施例中,快照命令用于指示获取虚拟机在第一时刻的快照。具体的,该控制线程可以是虚拟机监控器中的QEMU线程。
S42、控制线程创建写保护异常处理线程。
S43、写保护异常处理线程通过调用userfaultfd接口获取一个文件描述符ufd。
S44、控制线程暂停虚拟机。
具体的,控制线程在第一时刻暂停虚拟机。需注意的是,步骤S44和步骤42均在步骤S41之后,且之间没有一定的先后顺序。
S45、控制线程将虚拟机的设备状态保存到虚拟机的快照文件中。
由于虚拟机在第一时刻暂停,因此获取到的虚拟机的设备状态与第一时刻的设备状态相同。
S46、控制线程通过调用userfaultfd接口,开启对虚拟机的内存的写保护。
需注意的是,步骤S45和步骤S46之间没有一定的先后顺序。
S47、控制线程创建快照线程。
需注意的是,步骤S47在步骤S44和步骤S46之后,且和步骤S45之间没有一定的先后顺序。
S48、控制线程将虚拟机恢复为运行状态。
在图4所示实施例中,步骤S42的写保护异常处理线程中执行如下步骤:
S421、写保护异常处理线程等待写保护异常处理请求。
在控制线程利用userfaultfd接口开启对虚拟机的内存的写保护后,当某个内存页要被污染时,内核态发生缺页异常,并阻塞该污染动作,然后通过文件描述符通知写保护异常处理线程该内存页的地址。本实施例中,写保护异常处理请求指的是内核态通知写保护异常处理线程被污染的内存页的地址。
S421、写保护异常处理线程调用read(ufd)获取写保护异常的内存页的地址。
在内核态通知写保护异常处理线程被污染的内存页的地址时,写保护异常处理线程通过调用read(ufd)来获取该内存页的地址。
S422、写保护异常处理线程根据所述页地址将所述内存页的内容保存到临时缓存中。
S423、写保护异常处理线程将所述内存页标记为已拦截到污染动作或已保存到临时缓存。
其中,标记内存页的方法有多种。举例来说,可以利用位图来标记内存页。例如,可定义变量userfault_bitmap,该变量的每一位对应着一个虚拟机内存页的地址,具体的,可根据该变量中的任意一位计算出该位所对应的内存页的地址。其中,各内存页分别在userfault_bitmap中的对应位的初始值为0。写保护异常处理线程将内存页的内容保存到临时缓存后,通过将内存页在userfault_bitmap中的对应位改为1来标记该内存页,当然,也可以在标记该内存页之后再将该内存页的内容保存到临时缓存中,在此不作限制。
S434、写保护异常处理线程调用userfaultfd接口清除所述内存页的写保护,以使得污染所述内存页的动作恢复执行。
S435、写保护异常处理线程在接收到退出通知时,结束该写保护异常处理线程。
具体的,当写保护异常处理线程接收到快照线程的退出通知时,结束并退出。
在图4所示实施例中,步骤S47的快照线程包括如下步骤:
S471、按照顺序获取内存页地址。
S472、判断该地址的内存页内容是否保存到临时缓存中,若否,执行步骤S473至S474;若是,执行步骤S475。
具体的,查找所述内存页在userfault_bitmap中的对应位。若所述内存页在userfault_bitmap中的对应位为0,则确定所述内存页未被标记,也即该内存页内容未被保存到临时缓存中;若对应位为1,则确定所述内存页被标记,也即该内存页内容被保存到临时缓存中。
S473、直接将该内存页的内容存储到虚拟机的快照文件中。
S474、调用userfaultfd接口清除该内存页的写保护。
S475、从临时缓存中读取该内存页的内容,并将该内容保存至虚拟机的快照文件中。
S476、判断是否所有的地址的内存页内容全部保存到快照文件中,若是,则通知写保护异常处理线程退出,并结束快照线程;若否,则重复步骤S471至S476。
判断是否所有的地址的内存页内容全部保存到快照文件的方法有多种。举例来说,可以利用位图来标记内存页。例如,可定义变量snapshot_bitmap,该变量的每一位对应着一个虚拟机内存页的地址,具体的,可根据该变量中的任意一位计算出该位所对应的内存页的地址。若内存页在snapshot_bitmap中的对应位为1,则表示该内存页的内容还未存储到虚拟机的快照文件中;若内存页在snapshot_bitmap中的对应位为0,则表示该内存页的内容已经存储到虚拟机的快照文件中。快照线程每次将一个内存页的内容保存到虚拟机的快照文件后,将该内存页在snapshot_bitmap中的对应位改为0。
当检查到虚拟机的各内存页在snapshot_bitmap中的对应位全为0时,可确定所有地址的内存页内容全部保存到快照文件中;若不全为0,则重复上述步骤。
举例二、虚拟化平台中能够污染虚拟机的内存的有客户机软件和虚拟机监控器,其中,虚拟机监控器能够通过虚拟机监控器的代码执行路径区分虚拟机监控器是否将要写所述虚拟机的内存,而在正常运行时,虚拟机监控器无法感知到客户机软件要污染虚拟机的内存。
因此,在举例二中,虚拟机监控器打开EPT或者NPT的写保护功能,用于拦截客户机软件对虚拟机的内存的污染动作。具体的,打开EPT或者NPT的写保护功能后,所述写保护功能用于在所述客户机软件污染所述内存页前时使得所述虚拟机由客户机状态切换到宿主机状态,所述虚拟机监控器在所述宿主机状态中将所述内存页的内容保存到临时缓存,并将所述内存页标记为已拦截到污染动作或已保存到临时缓存,然后去掉该内存页的写保护,使得客户机软件能够顺利实现对该内存页的污染动作。
对于虚拟机监控器,由于虚拟机监控器能够通过代码执行路径确定是否要对虚拟机内存污染,因此,当虚拟机监控器根据执行代码路径确定将要污染所述虚拟机的内存时,所述虚拟机监控器判断当前是否正在获取所述虚拟机的快照文件。具体的,在虚拟机监控器接收到快照命令时,打开写动作跟踪功能。当虚拟机监控器确定写动作跟踪功能打开时,可确定当前正在获取所述虚拟机的快照文件。
当所述虚拟机监控器确定当前正在获取所述虚拟机的快照文件时,且所述虚拟机监控器确定要污染的内存页的内容没有存到所述临时缓存时,将所述内存页的内容保存到临时缓存中,然后再污染所述内存页。
在获取虚拟机的快照文件的过程中,当虚拟机监控器将内存页的内容保存到临时缓存时,将该内存页标记为已缓存到临时缓存中。具体的,可通过记录该内存页的地址来标记该内存页。当然,上述仅为举例,并不作限制。
为方便理解,下面以一个具体的实施例对举例二中的方法进行描述。
如图5所示,图5为本发明的虚拟机快照的生成方法的一个实施例的流程示意图。
S51、控制线程接收快照命令。
本实施例中,快照命令用于指示获取虚拟机在第一时刻的快照。具体的,该控制线程可以是QEMU线程。
S52、控制线程创建快照线程。
S53、控制线程暂停虚拟机。
具体的,控制线程在接收到快照命令时暂停虚拟机。
S54、控制线程将虚拟机的设备状态保存到虚拟机的快照文件中。
由于虚拟机在第一时刻暂停,因此获取到的虚拟机的设备状态与第一时刻的设备状态相同。
S55、控制线程打开EPT或者NPT的写保护功能以及写动作跟踪功能。
控制线程接收到有快照请求的通知时,打开虚拟机内存写保护EPT/NPT的写保护功能。该功能使得客户机软件在试图污染虚拟机的内存页时会退出至虚拟机监控器中而无法污染该内存页。在退出至虚拟机监控器时,该虚拟机监控器能够监测到客户机软件有污染虚拟机内存的动作要发生。
另外,所述虚拟机监控器也可以通过代码执行路径上区分是否将要写所述虚拟机的内存,来监测自己是否有污染虚拟机内存的动作要发生。而写动作跟踪功能的打开能够让虚拟机监控器确定目前正处于获取虚拟机的快照文件的阶段,使得虚拟机监控器在监测到自己有污染虚拟机内存的动作要发生时先判断要污染的内存页的内容是否已经被保存到临时缓存,若否,则将该内存页的内容保存到临时缓存中。
S55、控制线程将虚拟机恢复为运行状态。
在虚拟机监控器中,当检测到有污染虚拟机内存的动作发生后,虚拟机监控器执行以下步骤:
S61、判断是否需要获取虚拟机的内存快照,若是,则执行步骤S52至步骤S66,若否,继续执行污染虚拟机内存的动作。
具体的,当检测到开启了EPT或者NPT的写保护功能和写动作跟踪功能时,则可确定目前正在获取虚拟机的快照文件,因此执行步骤S62至步骤S66。若检测到没开启,则表示不是处于获取虚拟机的快照文件的阶段,因此继续正常执行污染虚拟机内存的动作。
S62、判断要污染的内存页的内容是否已经保存到临时缓存中,若否,则执行步骤S63,若是,则继续执行该污染动作。
其中,由于在获取虚拟机的快照文件过程中,同一个内存页可能出现多次被污染的情况。因此,在将内存页的内容保存到临时缓存中,虚拟机监控器可对该内存页进行标记。这样,当虚拟机监控器检测到有污染虚拟机内存的动作发生时,在将该内存页的内容保存到临时缓存之前,通过确认该内存页是否被标记来确认该内存页的内容是否已经被保存到临时缓存。若是,则不需再将该内存页的内容保存到临时缓存中,继续执行该污染动作。
具体的,虚拟机监控器内设有污染位图dirty_bitmap,虚拟机的各内存页的地址在该污染地图dirty_bitmap内分别具有对应位,其中,内存页的地址在污染位图中的对应位的初始值为0,用于表示该内存页的内容未被保存至临时缓存。虚拟机监控器在将内存页的内容存储到临时缓存时,将该内存页的地址在污染位图中的对应位改为1。这样,当虚拟机监控器检测到该内存页的地址在污染位图中的对应位为1时,表示该内存页的内容已经存储到临时缓存。
S63、标记所述内存页。
S64、判断所述污染动作的执行主体是否是该虚拟机监控器,若是,执行步骤S65,若否,执行步骤S65至步骤S66。
虚拟机监控器在检测到有污染虚拟机内存的动作时,该污染动作的执行主体可能是虚拟机监控器本身,也可能是客户机软件。虚拟机若判断该污染动作的执行主体不是该虚拟机监控器时,可以确定该执行主体是客户机软件。
S65、将所述内存页的内容保存到临时缓存中。
S66、清除对所述内存页的写保护,恢复客户机软件的污染动作。
在图5所示实施例中,步骤S52的快照线程包括如下步骤:
S521、按照顺序获取内存页地址。
S522、判断该地址的内存页内容是否保存到临时缓存中,若否,执行步骤S523;若是,执行步骤S524。
具体的,查找所述内存页在污染位图dirty_bitmap中的对应位。若所述内存页在dirty_bitmap中的对应位为0,则确定所述内存页未被标记,也即该内存页内容未被保存到临时缓存中;若对应位为1,则确定所述内存页被标记,也即该内存页内容被保存到临时缓存中。
S523、直接将该内存页的内容存储到虚拟机的快照文件中。
S524、从临时缓存中读取该内存页的内容,并将该内容保存至虚拟机的快照文件中。
S525、判断是否所有地址的内存页已经保存到快照文件中,若是,则执行步骤S526至步骤S527,若否,则执行步骤S421至步骤S425。
S526、关闭EPT或者NPT的写保护功能以及写动作跟踪功能。
S527、结束快照线程。
上面对本发明的虚拟机快照的生成方法进行了描述,下面将对本发明的虚拟机快照的生成装置进行描述,该虚拟机快照的生成装置用于执行上述虚拟机快照的生成方法。
请参阅图6,图6为本发明的虚拟机快照的生成装置的一个实施例的结构示意图。如图6所示,虚拟机快照的生成装置包括:
获取模块601,用于根据接收到的快照命令,所述快照命令用于指示获取虚拟机在第一时刻的快照文件,在所述第一时刻暂停所述虚拟机;
第一保存模块602,用于从所述第一时刻开始执行对所述虚拟机的内存中内存页的保存操作;
拦截模块603,用于从所述第一时刻开始执行对所述内存中的内存页的污染拦截操作;
第二保存模块604,用于将处于暂停状态的所述虚拟机在第一时刻的设备状态保存至所述虚拟机的快照文件;
恢复模块605,用于在所述设备状态保存完毕后,将所述虚拟机由暂停状态恢复为运行状态;
其中,所述拦截模块603具体用于从所述第一时刻到将所述内存页的内容保存至所述虚拟机的快照文件的时刻之间,对影响所述内存页的内容的污染动作进行拦截,将所述内存页的内容保存到临时缓存后,再解除对所述污染动作的拦截;
其中,所述第一保存模块602具体用于将所述临时缓存中保存的所述内存页的内容保存至所述虚拟机的快照文件中。
可选的,所述拦截模块603在对影响所述内存页内容的污染动作进行拦截之前,还利用userfaultfd接口开启对所述内存页的写保护。
可选的,所述拦截模块603在将所述内存页的内容保存到临时缓存时,具体用于执行以下操作:
创建写保护异常处理线程;
所述写保护异常处理线程利用所述userfaultfd接口获取文件描述符;
当对所述内存页的污染动作被拦截到时,所述写保护异常处理线程根据所述文件描述符获取所述内存页的地址;
所述写保护异常处理线程根据所述内存页的地址获取所述内存页的内容,将所述内容保存到临时缓存中。
可选的,所述虚拟机包括客户机软件;所述拦截模块603具体用于打开EPT或者NPT的写保护功能,所述写保护功能用于在所述客户机软件污染所述内存页前时使得所述虚拟机由客户机状态切换到宿主机状态,所述拦截模块用于在所述宿主机状态中将所述内存页的内容保存到临时缓存。
可选的,所述拦截模块603还用于执行以下操作:
根据所述虚拟机监控器的代码执行路径上确定是否将要污染所述虚拟机的内存;
当确定将要污染所述虚拟机的内存时,所述虚拟机监控器判断当前是否正在获取所述虚拟机的快照文件;
当所述虚拟机监控器确定当前正在获取所述虚拟机的快照文件时,所述虚拟机监控器判断将要污染的内存页的内容是否已经保存到临时缓存中;
当所述虚拟机监控器确定将要污染的内存页的内容没有存到所述临时缓存时,将所述内存页的内容保存到所述临时缓存中。
虚拟机快照的生成装置中更多的细节描述参考上述虚拟机在线快照的生成方法中的描述,在此不再赘述。
上面对本发明的虚拟机快照的生成装置进行了描述,下面将对本发明的虚拟机监控器进行描述。
如图2所示,图2中的计算节点的硬件平台上运行着虚拟机监控器,该虚拟机监控器用于屏蔽计算平台的硬件差异,为用户提供抽象的、统一的、模拟的多个计算环境,也即多台虚拟机。虚拟机监控器为每一台虚拟机模拟出一套独立于真实物理硬件的虚拟硬件环境。该虚拟机监控器还用于采用上述图3至图5所示实施例中的方法来在线生成运行在该虚拟机监控器之上虚拟机的快照文件。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (10)

1.一种虚拟机快照的生成方法,其特征在于,所述方法包括:
根据接收到的快照命令,所述快照命令用于指示获取虚拟机在第一时刻的快照文件,在所述第一时刻暂停所述虚拟机,并开始执行对所述虚拟机的内存中内存页的保存操作及对所述内存中的内存页的污染拦截操作;
将处于暂停状态的所述虚拟机在第一时刻的设备状态保存至所述虚拟机的快照文件;在所述设备状态保存完毕后,将所述虚拟机由暂停状态恢复为运行状态;
其中,执行对所述内存页的污染拦截操作包括:
从所述第一时刻到将所述内存页的内容保存至所述虚拟机的快照文件的时刻之间,对影响所述内存页的内容的污染动作进行拦截,将所述内存页的内容保存到临时缓存后,再解除对所述污染动作的拦截;
其中,执行对所述虚拟机的内存中内存页的保存操作包括:
将所述临时缓存中保存的所述内存页的内容保存至所述虚拟机的快照文件中。
2.根据权利要求1所述的虚拟机快照的生成方法,其特征在于,所述执行对所述内存页的污染拦截操作中,对影响所述内存页内容的污染动作进行拦截,之前还包括:
利用userfaultfd接口开启对所述内存页的写保护。
3.根据权利要求2所述的虚拟机快照的生成方法,其特征在于,所述将所述内存页的内容保存到临时缓存,包括:
创建写保护异常处理线程;
所述写保护异常处理线程利用所述userfaultfd接口获取文件描述符;
当对所述内存页的污染动作被拦截到时,所述写保护异常处理线程根据所述文件描述符获取所述内存页的地址;
所述写保护异常处理线程根据所述内存页的地址获取所述内存页的内容,将所述内容保存到临时缓存中。
4.根据权利要求1至3任一项所述的虚拟机快照的生成方法,其特征在于,所述虚拟机包括虚拟硬件和客户机软件;所述虚拟硬件由虚拟机监控器模拟,所述虚拟机监控器用于在所述虚拟机的宿主机状态中对所述虚拟机操作;
所述执行对所述内存页的污染拦截操作,包括:
打开有扩展页表EPT或者巢状分页表NPT的写保护功能,所述写保护功能用于在所述客户机软件污染所述内存页前时使得所述虚拟机由客户机状态切换到宿主机状态,所述虚拟机监控器在所述宿主机状态中将所述内存页的内容保存到临时缓存。
5.根据权利要求4所述的虚拟机快照的生成方法,其特征在于,对所述虚拟机的内存污染动作的执行主体还包括所述虚拟机监控器;
所述执行对所述内存页的污染拦截操作,还包括:
根据所述虚拟机监控器的代码执行路径上确定是否将要污染所述虚拟机的内存;
当确定将要污染所述虚拟机的内存时,所述虚拟机监控器判断当前是否正在获取所述虚拟机的快照文件;
当所述虚拟机监控器确定当前正在获取所述虚拟机的快照文件时,所述虚拟机监控器判断将要污染的内存页的内容是否已经保存到临时缓存中;
当所述虚拟机监控器确定将要污染的内存页的内容没有存到所述临时缓存时,将所述内存页的内容保存到所述临时缓存中。
6.一种虚拟机快照的生成装置,其特征在于,包括:
获取模块,用于根据接收到的快照命令,所述快照命令用于指示获取虚拟机在第一时刻的快照文件,在所述第一时刻暂停所述虚拟机;
第一保存模块,用于从所述第一时刻开始执行对所述虚拟机的内存中内存页的保存操作;
拦截模块,用于从所述第一时刻开始执行对所述内存中的内存页的污染拦截操作;
第二保存模块,用于将处于暂停状态的所述虚拟机在第一时刻的设备状态保存至所述虚拟机的快照文件;
恢复模块,用于在所述设备状态保存完毕后,将所述虚拟机由暂停状态恢复为运行状态;
其中,所述拦截模块具体用于从所述第一时刻到将所述内存页的内容保存至所述虚拟机的快照文件的时刻之间,对影响所述内存页的内容的污染动作进行拦截,将所述内存页的内容保存到临时缓存后,再解除对所述污染动作的拦截;
其中,所述第一保存模块具体用于将所述临时缓存中保存的所述内存页的内容保存至所述虚拟机的快照文件中。
7.根据权利要求6所述的虚拟机快照的生成装置,其特征在于,所述拦截模块在对影响所述内存页内容的污染动作进行拦截之前,还利用userfaultfd接口开启对所述内存页的写保护。
8.根据权利要求7所述的虚拟机快照的生成装置,其特征在于,所述拦截模块在将所述内存页的内容保存到临时缓存时,具体用于执行以下操作:
创建写保护异常处理线程;
所述写保护异常处理线程利用所述userfaultfd接口获取文件描述符;
当对所述内存页的污染动作被拦截到时,所述写保护异常处理线程根据所述文件描述符获取所述内存页的地址;
所述写保护异常处理线程根据所述内存页的地址获取所述内存页的内容,将所述内容保存到临时缓存中。
9.根据权利要求6至8任一项所述的虚拟机快照的生成装置,其特征在于,所述虚拟机包括客户机软件;
所述拦截模块具体用于打开EPT或者NPT的写保护功能,所述写保护功能用于在所述客户机软件污染所述内存页前时使得所述虚拟机由客户机状态切换到宿主机状态,所述拦截模块用于在所述宿主机状态中将所述内存页的内容保存到临时缓存。
10.根据权利要求9所述的虚拟机快照的生成装置,其特征在于,所述拦截模块还用于执行以下操作:
根据所述虚拟机监控器的代码执行路径上确定是否将要污染所述虚拟机的内存;
当确定将要污染所述虚拟机的内存时,所述虚拟机监控器判断当前是否正在获取所述虚拟机的快照文件;
当所述虚拟机监控器确定当前正在获取所述虚拟机的快照文件时,所述虚拟机监控器判断将要污染的内存页的内容是否已经保存到临时缓存中;
当所述虚拟机监控器确定将要污染的内存页的内容没有存到所述临时缓存时,将所述内存页的内容保存到所述临时缓存中。
CN201510863046.0A 2015-11-30 2015-11-30 虚拟机快照的生成方法和装置 Active CN105446834B (zh)

Priority Applications (6)

Application Number Priority Date Filing Date Title
CN201510863046.0A CN105446834B (zh) 2015-11-30 2015-11-30 虚拟机快照的生成方法和装置
EP16869533.6A EP3370153B1 (en) 2015-11-30 2016-04-21 Method and device for generating virtual machine snapshot
EP22205358.9A EP4220407A1 (en) 2015-11-30 2016-04-21 Method and apparatus for generating virtual machine snapshot
PCT/CN2016/079882 WO2017092219A1 (zh) 2015-11-30 2016-04-21 虚拟机快照的生成方法和装置
US15/991,858 US10503607B2 (en) 2015-11-30 2018-05-29 Method and apparatus for generating virtual machine snapshot
US16/689,683 US11436091B2 (en) 2015-11-30 2019-11-20 Method and apparatus for generating virtual machine snapshot

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510863046.0A CN105446834B (zh) 2015-11-30 2015-11-30 虚拟机快照的生成方法和装置

Publications (2)

Publication Number Publication Date
CN105446834A true CN105446834A (zh) 2016-03-30
CN105446834B CN105446834B (zh) 2018-10-19

Family

ID=55557066

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510863046.0A Active CN105446834B (zh) 2015-11-30 2015-11-30 虚拟机快照的生成方法和装置

Country Status (4)

Country Link
US (2) US10503607B2 (zh)
EP (2) EP4220407A1 (zh)
CN (1) CN105446834B (zh)
WO (1) WO2017092219A1 (zh)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106155778A (zh) * 2016-07-07 2016-11-23 中国科学院声学研究所 一种应用容器的启动方法及系统
WO2017092219A1 (zh) * 2015-11-30 2017-06-08 华为技术有限公司 虚拟机快照的生成方法和装置
CN107515883A (zh) * 2016-06-17 2017-12-26 阿里巴巴集团控股有限公司 一种运行任务的方法和设备
CN109189546A (zh) * 2018-07-11 2019-01-11 新华三云计算技术有限公司 一种虚拟机在线快照的制作方法及装置
CN109714314A (zh) * 2018-11-21 2019-05-03 中国电子科技网络信息安全有限公司 一种重现漏洞全生命周期的全息漏洞库的构建方法
WO2020010556A1 (zh) * 2018-07-11 2020-01-16 华为技术有限公司 增强用户空间与内核空间的隔离性的方法和装置
CN110955560A (zh) * 2019-11-15 2020-04-03 北京浪潮数据技术有限公司 一种虚拟机快照的生成方法、系统、电子设备及存储介质
CN111857966A (zh) * 2020-07-28 2020-10-30 山东海量信息技术研究院 虚拟机快照创建方法、装置及计算机可读存储介质
CN111984473A (zh) * 2020-09-27 2020-11-24 苏州浪潮智能科技有限公司 一种内存快照数据获取方法及相关装置
WO2021174698A1 (zh) * 2020-03-04 2021-09-10 平安科技(深圳)有限公司 虚拟机快照创建方法、装置、存储介质及计算机设备
CN114153567A (zh) * 2022-02-09 2022-03-08 苏州浪潮智能科技有限公司 一种内存快照管理方法、装置、设备及介质

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE202017007517U1 (de) * 2016-08-11 2022-05-03 Twitter, Inc. Aggregatmerkmale für maschinelles Lernen
CN109783272B (zh) * 2017-11-10 2023-01-24 阿里巴巴集团控股有限公司 磁盘快照处理方法、装置和设备
CN109597677B (zh) * 2018-12-07 2020-05-22 北京百度网讯科技有限公司 用于处理信息的方法和装置
US11249865B1 (en) * 2021-01-15 2022-02-15 Rubrik, Inc. Remote snappable linking
US20220326977A1 (en) 2021-04-13 2022-10-13 Nutanix, Inc. Virtual machine memory snapshots in persistent memory
CN113268311B (zh) * 2021-05-12 2024-01-12 西安交通大学 基于用时感知的虚拟机群高效快照方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102520881A (zh) * 2011-12-02 2012-06-27 中标软件有限公司 一种云计算平台的虚拟机快照管理方法和系统
CN103678040A (zh) * 2013-12-06 2014-03-26 北京明朝万达科技有限公司 一种基于计算机系统的快照和回退方法及系统
US20140244950A1 (en) * 2013-02-26 2014-08-28 Red Hat Israel, Ltd. Cloning live virtual machines
CN104598293A (zh) * 2015-01-06 2015-05-06 杭州华三通信技术有限公司 一种在线快照的方法和设备
CN105224391A (zh) * 2015-10-12 2016-01-06 浪潮(北京)电子信息产业有限公司 一种虚拟机的在线备份方法及系统

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7093086B1 (en) * 2002-03-28 2006-08-15 Veritas Operating Corporation Disaster recovery and backup using virtual machines
US7840963B2 (en) * 2004-10-15 2010-11-23 Microsoft Corporation Marking and utilizing portions of memory state information during a switch between virtual machines to minimize software service interruption
US8607009B2 (en) * 2006-07-13 2013-12-10 Microsoft Corporation Concurrent virtual machine snapshots and restore
US8495316B2 (en) * 2008-08-25 2013-07-23 Symantec Operating Corporation Efficient management of archival images of virtual machines having incremental snapshots
US8464252B2 (en) * 2009-02-27 2013-06-11 Red Hat, Inc. Per process virtual machines
US8443166B2 (en) * 2009-03-06 2013-05-14 Vmware, Inc. Method for tracking changes in virtual disks
CN101609419B (zh) * 2009-06-29 2012-05-30 北京航空航天大学 虚拟机持续在线迁移的数据备份方法及装置
US8621460B2 (en) * 2009-11-02 2013-12-31 International Business Machines Corporation Endpoint-hosted hypervisor management
US8037361B2 (en) * 2009-11-04 2011-10-11 International Business Machines Corporation Selective write protect for disaster recovery testing
US8930652B2 (en) * 2009-11-11 2015-01-06 Red Hat Israel, Ltd. Method for obtaining a snapshot image of a disk shared by multiple virtual machines
US9170832B2 (en) * 2012-02-22 2015-10-27 Panasonic Intellectual Property Corporation Of America Virtual machine control apparatus and virtual machine control method
US9569241B2 (en) * 2013-02-22 2017-02-14 Red Hat Israel, Ltd. Sharing devices assigned to virtual machines using runtime exclusion
US9842032B2 (en) * 2013-08-27 2017-12-12 Red Hat, Inc. Memory first live snapshot
US9329958B2 (en) * 2013-12-03 2016-05-03 Vmware, Inc. Efficient incremental checkpointing of virtual devices
JP6609918B2 (ja) * 2014-12-17 2019-11-27 富士通株式会社 ストレージシステム、ストレージ管理装置およびストレージ管理プログラム
CN104572248B (zh) * 2014-12-17 2018-01-23 中电科华云信息技术有限公司 虚拟机动态保存快照的方法
US9645847B1 (en) * 2015-06-08 2017-05-09 Amazon Technologies, Inc. Efficient suspend and resume of instances
US9524389B1 (en) * 2015-06-08 2016-12-20 Amazon Technologies, Inc. Forensic instance snapshotting
CN105446834B (zh) * 2015-11-30 2018-10-19 华为技术有限公司 虚拟机快照的生成方法和装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102520881A (zh) * 2011-12-02 2012-06-27 中标软件有限公司 一种云计算平台的虚拟机快照管理方法和系统
US20140244950A1 (en) * 2013-02-26 2014-08-28 Red Hat Israel, Ltd. Cloning live virtual machines
CN103678040A (zh) * 2013-12-06 2014-03-26 北京明朝万达科技有限公司 一种基于计算机系统的快照和回退方法及系统
CN104598293A (zh) * 2015-01-06 2015-05-06 杭州华三通信技术有限公司 一种在线快照的方法和设备
CN105224391A (zh) * 2015-10-12 2016-01-06 浪潮(北京)电子信息产业有限公司 一种虚拟机的在线备份方法及系统

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11436091B2 (en) 2015-11-30 2022-09-06 Huawei Technologies Co., Ltd. Method and apparatus for generating virtual machine snapshot
WO2017092219A1 (zh) * 2015-11-30 2017-06-08 华为技术有限公司 虚拟机快照的生成方法和装置
US10503607B2 (en) 2015-11-30 2019-12-10 Huawei Technologies Co., Ltd. Method and apparatus for generating virtual machine snapshot
CN107515883A (zh) * 2016-06-17 2017-12-26 阿里巴巴集团控股有限公司 一种运行任务的方法和设备
CN106155778A (zh) * 2016-07-07 2016-11-23 中国科学院声学研究所 一种应用容器的启动方法及系统
CN109189546A (zh) * 2018-07-11 2019-01-11 新华三云计算技术有限公司 一种虚拟机在线快照的制作方法及装置
WO2020010556A1 (zh) * 2018-07-11 2020-01-16 华为技术有限公司 增强用户空间与内核空间的隔离性的方法和装置
US11436155B2 (en) 2018-07-11 2022-09-06 Huawei Technologies Co., Ltd. Method and apparatus for enhancing isolation of user space from kernel space
CN109714314A (zh) * 2018-11-21 2019-05-03 中国电子科技网络信息安全有限公司 一种重现漏洞全生命周期的全息漏洞库的构建方法
CN110955560A (zh) * 2019-11-15 2020-04-03 北京浪潮数据技术有限公司 一种虚拟机快照的生成方法、系统、电子设备及存储介质
WO2021174698A1 (zh) * 2020-03-04 2021-09-10 平安科技(深圳)有限公司 虚拟机快照创建方法、装置、存储介质及计算机设备
CN111857966A (zh) * 2020-07-28 2020-10-30 山东海量信息技术研究院 虚拟机快照创建方法、装置及计算机可读存储介质
CN111984473A (zh) * 2020-09-27 2020-11-24 苏州浪潮智能科技有限公司 一种内存快照数据获取方法及相关装置
CN111984473B (zh) * 2020-09-27 2023-05-23 苏州浪潮智能科技有限公司 一种内存快照数据获取方法及相关装置
CN114153567B (zh) * 2022-02-09 2022-05-10 苏州浪潮智能科技有限公司 一种内存快照管理方法、装置、设备及介质
CN114153567A (zh) * 2022-02-09 2022-03-08 苏州浪潮智能科技有限公司 一种内存快照管理方法、装置、设备及介质

Also Published As

Publication number Publication date
US11436091B2 (en) 2022-09-06
EP3370153B1 (en) 2022-11-30
EP4220407A1 (en) 2023-08-02
EP3370153A4 (en) 2018-12-05
US20180276081A1 (en) 2018-09-27
US20200097368A1 (en) 2020-03-26
CN105446834B (zh) 2018-10-19
EP3370153A1 (en) 2018-09-05
WO2017092219A1 (zh) 2017-06-08
US10503607B2 (en) 2019-12-10

Similar Documents

Publication Publication Date Title
CN105446834A (zh) 虚拟机快照的生成方法和装置
CN101377750B (zh) 一种用于机群容错的系统和方法
EP2840495B1 (en) Container-based processing method and apparatus
CN103970585B (zh) 创建虚拟机的方法及装置
US8266395B2 (en) Detecting attempts to change memory
JP5140633B2 (ja) 仮想化環境において生じる障害の解析方法、管理サーバ、及びプログラム
US7917811B2 (en) Virtual computer system
US6687849B1 (en) Method and apparatus for implementing fault-tolerant processing without duplicating working process
CN112199162B (zh) 基于虚拟化磁盘双活容灾的磁盘快照方法、装置及介质
EP2755132A1 (en) Virtual machine memory snapshot generating and recovering method, device and system
CN102651062B (zh) 基于虚拟机架构的恶意行为跟踪系统和方法
US20180232175A1 (en) Virtual machine hot migration method, host and storage medium
CN107807839B (zh) 一种修改虚拟机内存数据的方法、装置及电子设备
JP4783392B2 (ja) 情報処理装置および障害回復方法
CN104520820A (zh) 使用轻量进程快照的功能评估
CN101373450B (zh) 处理cpu异常的方法及系统
CN106020932B (zh) 一种用于kvm虚拟机系统的安全防护方法及系统
CN105677480B (zh) 一种数据处理方法及装置
CN108804189B (zh) 一种云桌面管理方法及系统
CN102439565A (zh) 启动恢复的方法和装置
US9003139B1 (en) Systems and methods for recovering virtual machines after disaster scenarios
CN108228308A (zh) 虚拟机的监控方法以及装置
CN101996090B (zh) 一种计算机及虚拟机下重置设备的方法
CN110018881B (zh) 一种虚拟机故障快速恢复方法及系统
WO2023151352A1 (zh) 一种内存快照管理方法、装置、设备及介质

Legal Events

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