CN105607962B - 一种虚拟机备份的方法和装置 - Google Patents
一种虚拟机备份的方法和装置 Download PDFInfo
- Publication number
- CN105607962B CN105607962B CN201510694894.3A CN201510694894A CN105607962B CN 105607962 B CN105607962 B CN 105607962B CN 201510694894 A CN201510694894 A CN 201510694894A CN 105607962 B CN105607962 B CN 105607962B
- Authority
- CN
- China
- Prior art keywords
- memory
- page
- virtual machine
- standby end
- memory pages
- 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
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明提供了一种虚拟机备份方法所述方法包括,所述方法应用于备端虚拟机,所述备端虚拟机配置有缓存空间,接收到所述主端虚拟机发起备份请求之后,每当所述备端虚拟机对内存发起访问请求时,确定所述访问请求对应的所述备端虚拟机内存中的内存页面;更新所述内存页面中的内容为所述内存页面对应的缓存页面中的内容;以及基于更新后的内存页面处理所述访问请求。应用本发明技术方案,实现了将主端虚拟机中主端内存页上的数据备份到了对应的备端内存页,且在将备份数据由缓存空间拷贝到备端虚拟机的过程中,不需要暂停虚拟机,从而降低了热备份对于虚拟机运行的影响,提高了虚拟机工作的连续性和稳定性。
Description
技术领域
本发明涉及虚拟机技术领域,具体涉及一种虚拟机备份的方法和装置
背景技术
虚拟机热备份,又称为“虚拟化平台下双机容错”,是指在虚拟化平台下通过备端虚拟机提供业务虚拟机的冗余,使得主端虚拟机发生故障或者受保护的虚拟机所在的主机发生故障,备端虚拟机能够及时接管业务。从而达到在发生硬件故障的情况下,虚拟机业务不中断、数据零丢失(网络服务不中断模式下)或虚拟机业务秒级中断、数据少量丢失的目的。
为了使备端虚拟机能够接管业务,备端虚拟机的状态要跟主端虚拟机的状态保持一致,热备份的过程就是不停将主端虚拟机的状态备份到备端虚拟机的过程。
现有技术中,主端虚拟机和备端虚拟机被部署在两个主机上,端的虚拟机状态,包括内存、设备状态和磁盘数据等,会通过网络传送到备端。由于传输过程中可能发生故障,导致数据不一致,因此,会先保存主端虚拟机发送的备份数据到备端虚拟机所在主机的一个缓存空间中,当数据传送完成后,再将完整的数据刷入备端虚拟机的内存和磁盘中。为了减少主端虚拟机向缓存空间传送备份数据对于主端虚拟机的影响,主端虚拟机可以在运行状态中,仅将产生脏页的内存页传送到缓存空间中。
在一种现有技术中,周期性进行虚拟机备份,主端虚拟机发起备份请求,备端虚拟机所在主机将缓存空间中的备份数据刷入备端虚拟机中。而在另一种现有技术中,主端虚拟机和备端虚拟机同时运行,主端虚拟机通过比较主端虚拟机和备端虚拟机对同一个网络请求的响应是否相同来决定是否发起备份请求,进行虚拟机备份,从而减少了备份的频率,提高了系统性能。
将缓存空间中的内存数据刷入备端虚拟机内存时,由于是将整个内存数据全部刷入,因此需要暂停备端虚拟机的运行,为了保证主端与备端的一致,主端虚拟机也学要相应的暂停运行。由于每次将缓存空间中的备份数据刷入虚拟机的数据量较大,当虚拟机内存规格加大时,这个过程会非常耗时,长达几秒,甚至几十秒,通常对于虚拟机用户这是难以接受的。同时,由于缓存空间的大小与备端虚拟机内存大小相同,所以备端虚拟机至少需要占用2倍于自身内存大小的主机内存,从而增加了主机的资源开销。
发明内容
有鉴于此,本发明提供了一种虚拟机备份的方法及装置,缩短了虚拟机备份时,虚拟机的暂停时间,并减小了备端虚拟机缓存空间的大小,节省了系统资源。
一方面,本发明的实施例提供了一种虚拟机备份的方法,所述方法应用于备端虚拟机,备端虚拟机方法包括机配置有缓存页面同时与主端和备端虚拟机的内存页面一一的对应缓存空间,用于将主端发送的备份数据存储在与主端虚拟机内存页面相对应的缓存页面上。在备端虚拟机发对内存发起访问请求时,先将内存页面中的内容更新为内存页面对应的缓存页面中的内容,然后基于更新后的内存页面对其进行访问。由于在访问之前,先更新了内存页中的内容,使得备端虚拟机访问的内存数据为缓存页面中与主端虚拟机一致的内容,因此,实现了备份的效果。同时,由于每次只需要更新一个内存页面的内容,因此无需暂停虚拟机,提高了虚拟机运行的连续性和稳定性。
在一个可能的设计中,仅在访问第一页面时,进行本方面中所述的更新操作。第一页面包括主端虚拟机内存中所对应的内存页面内容不一致的备端虚拟机内存中的内存页面。从而对于内容一致的内存页面,无需进行不必要的更新操作,提高了备份的效率,减小了对虚拟机运行性能的影响。
在一种可能的设计中,第一页面可以通过现有技术中比较对应内存页面上的数据的一致性的方式来确定备端虚拟机内存上的页面是否属于第一页面。
在一种可能的设计中,可以通过比较主端虚拟机与备端虚拟机对于同一操作请求的响应是否相同来判断主端虚拟机内存与备端虚拟机内存是否一致,当响应不相同时,该操作请求所关联的内存页面中包括了第一页面。
在一个可能的设计中,所述的第一页面包括所述备端虚拟机内存中的脏页和所述主端虚拟机中的脏页所对应的所述备端虚拟机内存中的内存页面。由于脏页的内容被修改,因此可能会造成与相对应的内存页面的内容不一致,从而保证第一页面包含了全部端虚拟机内存中所对应的内存页面内容不一致的备端虚拟机内存中的内存页面。
在一种可能的设计中,主端虚拟机中的脏页通过发送到缓存空间中的备份数据中所包含的需要更新的缓存页面地址所获得。
在一个可能的设计中,可以在当所述备端虚拟机内存中的某一内存页面的数据被修改时,将其标记为第一页面;以及,当所述缓存空间中某一缓存页面写入了主端虚拟机发送的备份数据时,将其所对应的备端内存页标记为第一页面,从而使得所述被修改的页面被及时的标记为了第一页面。备端虚拟机访问这些内存页面时,均会先进行更新,使其与对应的主端内存页面相一致,从而使备端虚拟机的运行状态与主端虚拟机保持一致。
在一个可能的设计中,可以在主端虚拟机发起备份请求后,将符合条件的所述备端虚拟机内存上的内存页面标记记录为所述第一页面,从而使得每次主端虚拟机发起备份请求后,备端虚拟机的运行状态可以与主端虚拟机发起备份请求是的状态一致。
在一种可能的设计中,可以在主端虚拟机发起备份请求后,将上次发起本备份请求之后后到本次发起所述备份请求之前,备端虚拟机内存中数据被修改的内存页面和被写入了主端虚拟机发送的备份数据的缓存页面对应的备端虚拟机内存中的内存页面标记为第一页面,从而在每次备份请求后增量的将产生的脏页标记为第一页面。
在一种可能的设计中,在缓存空间存储主端虚拟机发送的备份数据时,先确定缓存页面上是否存储有尚未更新到所对应的备端虚拟机内存中的内存页面的备份数据,如果是,则先更新所述备端虚拟机内存中的内存页面中的内容为所述内存页面对应的缓存页面中的内容,从而保证未更新的备份数据备份到了备端虚拟机,且备端虚拟机所更新的内容为内存页面标记为第一页面时对应的缓存页面上的内容。
在一种可能的设计中,在更新所述内存页面中的内容为所述内存页面对应的缓存页面中的内容后,取消所述内存页面标记为第一页面。从而在内存页面和缓存页面内容一致后,不再在访问该内存页面是进行更新操作。
在一种可能的设计中,当备端虚拟机对内存发起访问请求为写操作时,确定所述写操作对应的所述内存页面不属于第一页面,如果不属于,则在进行写操作之前,先备份所述内存页面中的内容到所述缓存空间中对应的缓存页面。由于不属于第一页面的内存页面中的内容与对应的主端的内存页面中的内容是一致的,对于内容一致的内存页面,不需要在缓存空间中对应的缓存页面中存储备份数据,从而可以减小了缓存空间所占用的存储空间大小。
在一种可能的设计中,在建立备端虚拟机时,当备端虚拟机内存中内容与主端虚拟机内存中内容完全一致后,清空缓存空间中缓存页面内的数据。由于备端虚拟机建立时内存中内容由主端虚拟机内存拷贝而来,因此内容完全一致,因此在先将缓存空间中的内容清空,只有当备端虚拟机要对其内存做修改时,才先将备端虚拟机内存页中的内容备份到相对应的缓存页面上。
在一种可能的设计中,在更新所述内存页面中的内容为所述内存页面对应的缓存页面中的内容之后,如果所述备端虚拟机对内存发起的访问请求为读请求,则不会再对以及通过更新而一致的内存页面进行修改,可以删除所述缓存页面中的内容,从而释放缓存空间的数据。
在一种可能的设计中,在所述备份所述内存页面中的内容到所述缓存空间中对应的缓存页面之前,确定所述缓存页面中是否有未更新到备端虚拟机内存的数据;如果没有,则备份所述内存页面中的内容到所述缓存空间中对应的缓存页面。由此,可以避免未更新到备端的虚拟机内存中的内容被备端的备份数据所覆盖。
在一种可能的设计中,对第二页面进行写操作时,先备份所述内存页面中的内容到所述缓存空间中对应的缓存页面,再对所述内存页面进行写操作。第二页面通过标记的方法来记录,具体的,建立备端虚拟机时,当备端虚拟机内存中内容与主端虚拟机内存中内容完全一致后,将备端虚拟机内存中内存页面全部标记为第二页面,并清空缓存空间中缓存页面内的数据;以及当所述备端虚拟机内存上的内存页面被标记记录为所述第一页面时,取消将所述内存页面标记为第二页面。
在一种可能的设计中,建立虚拟机并将内存页面全部标记为第二页面之后,所述的第二页面通过如下方式来更新标记:在每次发起备份请求之后,当所述备端虚拟机内存上的内存页面被标记记录为所述第一页面时,取消将所述内存页面标记为第二页面,以及将备端虚拟机内存中未被标记为第一页面的内存页面标记为第二页面。由此,可以结合前述设计中,每次发起备份请求后同时完成第一页面和第二页面的标记,节省了系统的处理资源。
在一种可能的设计中,在进行了前述中对内存页面内容的更新后,如果所述备端虚拟机对内存发起的访问请求为读操作,则将所述内存页面标记为第二页面,并删除所述缓存页面中的内容。由此,更新后且没有被修改的内存页面中内容与主端虚拟机相对于的页面中的内容一致,可以释放对应的缓存页面中的内容以进一步节省存储空间。
在一种可能的设计中,在备份所述内存页面中的内容到缓存空间中之前,先确定缓存页面中是否有未更新到备端虚拟机内存的数据,如果没有才进行备份,否则,取消将所述内存页面标记为第二页面。由此,可以防止当缓存空间中以及保存了主端虚拟机发送的备份数据后,所述备份操作将更新数据覆盖的情况。
又一方面,本发明实施例提供了一种虚拟机备份装置,所述装置运行有备端虚拟机,该装置具有实现上述方法中备端虚拟机行为的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。
在一种可能的设计中,虚拟机备份装置包括缓存模块和内存更新模块,所述缓存模块用于实现前述方法中与缓存空间相关的相应功能,所述内存更新模块用于实现前述方法中对备端虚拟机内存页面内容更新的相应功能。
在一种可能的设计中,虚拟机备份装置还可以包括内存标记模块,用于实现前述方法中与在备端虚拟机内存中标记第一页面或者第二页面相关的相应功能。
在一种可能的设计中,虚拟机备份装置还可以包括内存备份模块,用于实现前述方法中将备端虚拟机内存中内存页面内容备份到缓存空间相关的相应功能。
又一方面,本发明实施例提供了一种虚拟机备份装置,所述装置运行有备端虚拟机,装置的结构中包括处理器,所述处理器被配置为支持装置执行上述方法中相应的功能。所述装置还可以包括存储器,所述存储器用于与处理器耦合,其保存必要的程序指令和数据。
又一方面,本发明实施例提供了一种虚拟机备份系统,该系统包括运行有主端虚拟机的装置以及上述方面所述的运行有备端虚拟机的装置,从而实现将主端虚拟机内存中的内容备份到备端虚拟机的内存中。
再一方面,本发明实施例提供了一种计算机存储介质,用于存储为上述方面所述的装置所用的计算机软件指令,其包含用于执行上述方面所涉及的程序。
可见,由于备端虚拟机访问备端虚拟机内存上的备端内存页时,将所述备端内存页所对应的缓存页面上的数据拷贝到了对应的备端内存页上,实现了将主端虚拟机中主端内存页上的数据备份到了对应的备端内存页,且在将备份数据由缓存空间更新到备端虚拟机的过程中,只需要更新一个内存页面的内容,无需将虚拟机暂停,从而降低了备份对于虚拟机运行的影响,提高了虚拟机工作的连续性和稳定性。
同时,由于可以仅对备端虚拟机内存上产生脏页的内存页面和缓存空间上产生脏页的缓存页面所对应的备端内存页标记记录为第一页面,从而使得当备端虚拟机访问到所存储数据与对应的缓存页面上的数据一致的备端内存页时(即不是第一页面的备端内存页),不会进行数据的拷贝,从而进一步减小了数据备份对备端虚拟机运行的影响,节省了系统资源,提高了虚拟机工作的稳定性。
同时,由于可以对不是第一页面或者为第二页面的备端内存页进行写操作时,先将所述备端内存页中的数据拷贝到所述备端内存页在缓存空间中所对应的缓存页面中,再对所述备端内存页进行写操作,因此,在缓存空间中,与备端内存页面上数据一致的的备端内存页所对应的缓存页面无需存储数据,从而减少了缓存页面的大小,节省了备端虚拟机所在主机的存储资源。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例中列举的虚拟机双机备份的场景示意图。
图2是本申请实施例中一种运行虚拟机的主机的系统架构图。
图3是本发明实施例中提供的一种虚拟机备份场景的系统架构图。
图4是本发明实施例中提供的一种虚拟机备份方法的流程示意图。
图5是本发明实施例中提供并又一种虚拟机备份方法的流程示意图。
图6是本发明实施例中第一页面的确定范围的流程示意图。
图7是本发明实施例中一种虚拟机备份方法的实施系统的系统架构图。
图8是本发明实施例中一种虚拟机备份方法的具体实现方式的流程示意图。
图9是本发明实施例中又一种虚拟机备份方法的的结流程示意图。
图10是本发明实施例中一种虚拟机备份方法的具体实现方式的流程示意图。
图11是本发明实施例中又一种虚拟机备份方法的具体实现方式的流程示意图
图12是本发明实施例中一种虚拟机备份装置的结构示意图。
图13是本发明实施例中又一种虚拟机备份装置的结构示意图。
具体实施方式
本发明实施例提供一种虚拟机备份的方法,以实现虚拟机备份时,缩短虚拟机的暂停时间,提高备份效率;并减小虚拟机备份空间大小,节省系统资源。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了方便理解本发明实施例,首先在此介绍本发明实施例描述中会引入的概念。
缓存空间:结合背景技术中所介绍,当主端虚拟机向备端虚拟机进行数据热备份时,为了防止由于网络故障等原因造成的数据不完整,会在备端虚拟机所在主机中创建一个存缓存空间。该缓存空间中的设置了缓存页面,并与备端虚拟机内存中的内存页面(在后文中也简称为备端内存页)一一对应,相应的,由于备端虚拟机与主端虚拟机的内存是相对应的,因此缓存空间中的缓存页面也与主端虚拟机内存中的内存页面(在后文中也简称为主端内存页)一一对应。当进行虚拟机备份时,主端虚拟机首先将主端虚拟机中的备份数据发送给备端虚拟机所在主机,并缓存在缓存空间中相对应的缓存空间的缓存页面中。当备份数据传输完成后,再将缓存空间中的数据刷入备端虚拟机内存中相对应的内存页中。
备份数据:备份数据是指主端虚拟机向缓存空间所发送的用于更新备端虚拟机内存页面的内存数据。备份数据的作用是为了保持缓存空间中对应页面的内存数据与主端虚拟机的内存页面中的内存数据保持一致。备份数据是通过增量备份的方式进行的,即将主端虚拟机中产生的脏页中的数据通过备份数据发送到缓存空间。因此,备份数据中包含了脏页的页面地址以及脏页中所包含的数据,缓存空间通过备份数据将脏页所对应的缓存页面中的内容更新,从而使得缓存空间中的内容与主端虚拟机内存中的内容保持一致。备份数据的发送可以是每当主端虚拟机产生了脏页,就及时的将备份数据发送到缓存空间,或者,可以在固定的时间间隔后发送一次备份数据。如果采用定时发送的方式时,在主端虚拟机发起备份请求时,还会再发送一次从最近一次发送备份数据到发起备份请求时所产生的备份数据,从而使得缓存空间中的内容与发起备份请求时的内容是一致的。
应当注意的是,在一种可能的实现方式中,缓存空间中的缓存页面还能存储有从备端虚拟机备份内存数据。此时,虽然该数据是由备端虚拟机所发送的,但是由于所述的内存数据与主端内存上的内存数据是一致的,从而将其等同为主端虚拟机的内存数据。因此,该种数据也应当被包含在备份数据的范畴中。
为了方便理解本发明技术方案,现结合图1,介绍本方案的一种实施环境的网络系统架构。
图1是一个简化的部署图,描述了一个集群系统,这个集群是由多个主机服务器(也可以称之为主机、节点、服务器、计算节点等)组成,通过网络(NET)相连接,例如图中的主机1、主机2、主机3。而每个计算节点是由计算机软件,包括内核(kernel)、虚拟化软件等;以及硬件,例如中央处理器(CPU)、随机存取存储器(RAM),存储硬件,网络硬件等组成。每个计算节点上允许运行多台虚拟机。每台虚拟机都对外提供服务,用户使用的客户端(即图中的用户1、用户2、用户3等)通过网络连接到集群系统,每个客户端都对应集群内的一台或多台虚拟机。
如果某个用户希望能够为一台虚拟机开启虚拟机热备份功能时,集群系统就会在系统内需要一个合适的主机服务器,这个主机服务器不能是这个用户使用的虚拟机所在的主机服务器。集群系统会在这个新找到的主机服务器上建立一台备端虚拟机。这台备端虚拟机的会与主端虚拟机(即用户使用的虚拟机)同时运行,即主端虚拟机和备端虚拟机同时运行,并同时响应用户的指令,同时,备端虚拟机状态会保持和主端虚拟机保持一致,即主端虚拟机会将虚拟机的虚拟机状态,包括内存、设备状态和磁盘数据等,会通过网络传送到备端虚拟机。对用户而言,这台备份虚拟机是不可见的,在发生故障时,会由这台备份虚拟机来连接用户的客户端,代替主端虚拟机提供服务。
图2是一台主机服务器的架构示意图。一台主机服务器的硬件部分包括存储设备,网络设备,内存,以及处理器等。在硬件层之上,会有一层Hypervisor层,Hypervisor是一种运行在基础物理服务器和操作系统之间的中间软件层。在一些虚拟化平台中,Hypervisor可以就是操作系统,例如kvm虚拟化平台的Hypervisor就是虚拟机所在主机操作系统,可允许多个操作系统和应用共享硬件。在另一些虚拟化平台中,也可叫做VMM(virtual machinemonitor),即虚拟机监视器。VMM和Hypervisor可以是是分离的,VMM在Hypervisor层上运行,但在一些虚拟化平台中,两者的关系没有严格区分,两者共同协调着下层硬件资源的访问,为虚拟机的运行模拟CPU、RAM等硬件设备,同时负责虚拟机CPU的调度,以及高级管理(例如虚拟机热迁移),一个主机服务器上可以运行多个虚拟机。
为了更好的理解本发明技术,现结合图3介绍现有技术中的一种虚拟机热备份的流程。
图3描述了在前述系统架构下虚拟机备份的一种流程示意图。一台虚拟机就是一个进程实体,VMM里实现了虚拟机高级管理功能,其中有一个备份功能模块(checkpoint)。checkpoint模块会将主端的整体虚拟机状态(包括内存数据),通过网络传送到备端虚拟机的备份接收模块(checkpoint incoming)。备端虚拟机checkpoint incoming模块不会立即将接收到的数据刷到备端虚拟机,而是先缓冲在对应的主端虚拟机缓存空间(PVM memoryCache)中,PVM memory Cache是由备端虚拟机所申请的,用以缓存整个备端虚拟机的内存数,所以大小等于备端虚拟机的内存大小。在数据传送完成后,当有备份请求时,需要将缓存空间中的数据刷入备端虚拟机内存,所以备端虚拟机会暂停运行,同时主端虚拟机也会暂停运行,checkpoint incoming模块会将PVM memory cache的数据刷新到备端虚拟机的内存中。另外,为了尽可能减少从主端虚拟机到缓存空间的传送数据量,在主备端虚拟机正常运行阶段,会在后台将一些主端虚拟机产生的脏页传送到缓存空间,从而更新缓存空间中的数据,使得缓存空间的数据与主端虚拟机的内存数据保持一致。
下面结合图4,对本发明的实施例提供的方案进行说明。本方法实施例用于备端虚拟机,所述备端虚拟机配置有缓存空间,所述缓存空间中的缓存页面与主端虚拟机内存中的内存页面一一对应,所述缓存空间用于将主端虚拟机发送的备份数据存储在于所述备份数据所在主端虚拟机内存中的内存页面所对应的缓存页面上,另所述缓存页面还与所述备端虚拟机内存中的内存页面一一对应。所述方法包括:
S401、当所述备端虚拟机对内存发起访问请求时,确定所述访问请求对应的所述备端虚拟机内存中的内存页面;
S402更新所述内存页面中的内容为所述内存页面对应的缓存页面中的内容;
S403以及基于更新后的内存页面处理所述访问请求。
在一种实现方式中,当接收到所述主端虚拟机发起备份请求之后,执行所述的方法,从而使得备端虚拟机能够保持与主端虚拟机的同步。可以理解的,也可以通过其他方式启动从而开始执行所述的方法。例如,可以当建立虚拟机后即开始所述方法,或者通过其他的指令指示备端虚拟机开启所述方法。
在一种实现方式中,主端虚拟机可以仅将内存脏页发送至缓存空间,用以更新缓存空间中的内存镜像。从而减少主端虚拟机发送的备份数据的数据量。
由于当备端虚拟机对备端内存页进行访问,即进行读写操作时,会触发本步骤,即先找到备端虚拟机所要访问的备端内存页所在内存缓存空中所对应的缓存页面,并将该缓存页面中的数据更新到该备端内存页中,然后在对该备端内存页进行读写操作。因此,虽然备端虚拟机的内存页面中的数据实际与主端虚拟机所对应的数据并不一致,但是,访问内存时访问的内容是更新后的内容,即与主端内容是一致的,从而可以认为备端虚拟机与主端虚拟机的“运行状态”是相同的,即备端虚拟机实现了对主端虚拟机的备份。
在本方法实施例中,由于将单个内存页中的数据拷贝到虚拟机中的数据量并不大,因此该过程无需暂停虚拟机。由于备端虚拟机会频繁的访问备端虚拟机内存上的备端内存页,从而将缓存页面上的数据拷贝到了对应的备端内存页上,实现了将主端虚拟机中主端内存页上的数据备份到了对应的备端内存页,并保证了备端虚拟机访问的备端内存页上的数据为备份后与主端内存页一致的数据。相对于现有技术,本发明实施例在将备份数据由缓存空间拷贝到备端虚拟机的过程中,不需要暂停虚拟机,从而降低了热备份对于虚拟机运行的影响,提高了虚拟机工作的连续性和稳定性。
下面将结合更多的附图,对本发明的实施例做进一步说明。
图5是本发明实施例提供的前述实施例的一种具体实现方式的流程示意图。其中,
S501、确定所述访问请求对应的所述内存页面属于第一页面,所述第一页面包括与所述主端虚拟机内存中所对应的内存页面内容不一致的备端虚拟机内存中的内存页面;
S502、若所述访问请求对应的所述内存页面属于第一页面,则更新所述内存页面中的内容为所述内存页面对应的缓存页面中的内容。
由于备端虚拟机在建立时,是作为主端虚拟机的备份,即此时主端与备端虚拟机是完全一致的。而同时,主端虚拟机与备端虚拟机会对同一个指令同时进行响应,因此,在正常情况下,主端与备端虚拟机内存中多数内容是一致的,当备端虚拟机访问这一部分内容所在内存页面时,如果仍然先对内存页面进行更新,更新前后内存页面的内容并不会发生变化,从而浪费了系统资源和增加了访问时间。因此,本实施例在前述实施例的基础上,将与所述主端虚拟机内存中所对应的内存页面内容不一致的备端虚拟机内存中的内存页面作为第一页面,备端虚拟机仅在访问第一页面时,才需要先更新所述内存页面中的内容。
在一种实现方式中,所述第一页面具体包括:所述备端虚拟机内存中的脏页和所述备端虚拟机中的脏页所对应的所述备端虚拟机内存中的内存页面。
脏页是指内存中被进程修改了数据的内存页,在本实施例中,对于缓存空间而言,由于缓存空间的作用是存储主端虚拟机内存发送的备份数据,主端虚拟机在运行中产生的脏页会通过传输到缓存空间的备份数据对脏页所对应的缓存页面进行更新,因此,通过备份数据在缓存空间中更新的内存页即为脏页;而对于备端虚拟机内存而言,在运行中被进程修改了数据的内存页为脏页。应当注意的是,从缓存空间更新数据到备端内存页,或者从备端虚拟机备份数据到缓存页面时,对备端内存页或者缓存页面的数据进行了修改,但是不能认为所述的备端内存页或者缓存页面为脏页,因为该更新或者备份或者更新并不是是本实施例方法中的操作,而非虚拟机运行中所对内存进行的修改,因而不能将其视为脏页。
在一种具体的实现方式中,当所述备端虚拟机内存中的某一内存页面的数据被修改时,通过标记记录所述数据被修改的内存页面为第一页面;当所述缓存空间中某一缓存页面写入了主端虚拟机发送的备份数据时,通过标记记录所述被写入了主端虚拟机发送的备份数据的缓存页面对应的备端虚拟机内存中的内存页面为第一页面。可以理解的,备端虚拟机内存中数据被修改,是指备端虚拟机运行过程中,进程对内存所做的修改,并不包括前述方法中,备端虚拟机更新所述内存页面中的内容为所述内存页面对应的缓存页面中的内容。
在这种实现方式下,每当有脏页产生,就会将其所对应的备端内存页标记记录为第一页面。从而使得备端虚拟机内存中与主端虚拟机内存不一致的部分都被标记为了第一页面(可以理解的,由于可能主端和备端对相对应的内存页进行了相同的修改,从而使得即便产生了脏页,其对应的主端内存页也可能和备端内存页上的内容相同。但是,通过将脏页标记为第一页面,可以将备端虚拟机内存中与主端虚拟机内存不一致的部分均被标记为第一页面)。因此,该方法实施例可以使备端虚拟机保持与主端虚拟机的一致性。
在另一种实现方式中,在所述主端虚拟机发起所述备份请求之后,将符合条件的所述备端虚拟机内存上的内存页面标记记录为所述第一页面。
在该种实现方式中,对备端内存上的内存页面标记为第一页面的动作并不是实时的,而是在每次主端虚拟机发起备份请求之后。即如果备端虚拟机上某一内存页面与对应的主端内存页上的内容出现了不一致,但主端虚拟机并没有发起备份请求,则除非该内存页面在之前已经被标记为了第一页面,否则,该页面并不会被标记为第一页面。即备端虚拟机访问到该内存时,并不会先将缓存空间中对应的缓存页面中的内容跟新到该内存页面中。在这种实现方式下,备端虚拟机的状态为每次发起备份请求,完成对内存页面进行第一页面的标记之后的状态,从而可以快速实现主端虚拟机所发起的备份请求。
符合条件的内存页面,是指前述实施例中所描述的,在一种具体的实现方式中,所述与所述主端虚拟机内存中所对应的内存页面内容不一致的备端虚拟机内存中的内存页面。在一种具体的实现方式中,通过如下方式标记符合条件的内存页面:在所述主端虚拟机发起上一次备份请求之后到本次发起所述备份请求之前,所述备端虚拟机内存中数据被修改的内存页面和被写入了主端虚拟机发送的备份数据的缓存页面对应的备端虚拟机内存中的内存页面为符合条件的所述备端虚拟机内存上的内存页面。
在该种实现方式下,每当主端发起一次备份请求,则会将上一次发起备份请求到本次发起备份请求之间所产生的脏页标记为第一页面。为了方便理解,图6描述了在一段时间内,被标记为第一页面的内存页在主端虚拟机内存、缓存空间以及备端虚拟机内存中脏页的对应关系。在一段时间内,备端内存页的脏页,或者缓存页面的脏页所对应的备端内存页可能并不一致,因此,所述的备端内存页与所对应的缓存页面中的数据是不一致的。在图6中,主端虚拟机产生的脏页为PVM dirty部分,相应的在缓存空间中写入了主端虚拟机发送的备份数据的缓存页面也是相应的部分。备端虚拟机产生的脏页为SVM dirty部分,该两部分的合集,即为第一页面的范围。
在一种实现方式中,所述更新所述内存页面中的内容为所述内存页面对应的缓存页面中的内容后,取消将所述内存页面标记为第一页面。由于完成所述的更新之后,备端内存页与与之对应的缓存页面中的数据重新一致,也即与主端虚拟机的内存数据一致,因此,取消将所述内存页面标记为第一页面。
在一种实现方式中,在将主端虚拟机发送的备份数据存储在于所述备份数据所在主端虚拟机内存中的内存页面所对应的缓存页面上之前,确定所述缓存页面上是否存储有尚未更新到所对应的备端虚拟机内存中的内存页面的备份数据,如果是,则先更新所述备端虚拟机内存中的内存页面中的内容为所述内存页面对应的缓存页面中的内容,再将主端虚拟机发送的备份数据存储在于所述备份数据所在主端虚拟机内存中的内存页面所对应的缓存页面上。由于位于同一内存页中的备份数据的具体内存地址可能并不相同,当新的备份数据与未拷贝到备份虚拟机的备份数据位于同一内存页时,可能新的备份数据并不应当覆盖原有的备份数据,因此,通过该实现方式的方法,可以避免尚未拷贝到备端虚拟机中的备份数据被覆盖。
主端虚拟机的备份请求的发送,根据不同的热备份技术,在现有技术中有不同的方式,例如在签署中列举的按照时间段发送备份请求,或者主端虚拟机通过比较主端虚拟机和备端虚拟机对同一个网络请求的响应是否相同来决定是否发起备份请求。
本实施例中,第一页面的实现方式更具不同的实施环境和系统架构而有所不同。下面列举Linux系统内核所提供的Userfaultfd接口提供了缺页异常(MISS)功能,介绍本方法在Linux系统架构下的一种具体的实现方式。
通过Userfaultfd接口,将某段指定的内存页标记为缺页异常,当访问到被标记的内存页时(访问可以是从内核态进行访问,也可以是从用户态进行访问),用户态会被阻塞,并通过ioctl接口将可用的内存页地址通知内核,从而使内核将新的内存页地址中的数据替代被标记内存页中的数据,并访问替代后的数据。因此,当将所述可用的内存页地址设置为被标记内存页所对应的缓存空间上的缓存页面地址,则可实现本实现方式中的功能。也可以在系统中添加新的功能或者接口,以实现本实现方式中标记第一页面所需实现的功能。
在不同的系统架构和虚拟机热备份技术下,本方法实施例的具体实现方式可能不同。为了便于理解,下面结合在前述图3所描述的系统架构下,举例描述本实施例的具体实现方式。为了方便理解,图7给出了基于图3的系统架构下,修改后适用于本实施例的新的系统架构。本方法实施例可以改变所述的系统架构下的备份接收模块(checkpointincoming),缓存空间(PVM memory Cache)在接收主端发送的备份数据(即主端虚拟机运行时内存产生的脏页上的数据)时,会同时将脏页所对应的备端虚拟机的内存页地址保存在脏页地址表(dirty bi tmap)中,而备端虚拟机在运行时,内存产生的脏页地址同样会保存在该脏页地址表中。在具体实现时,采用两张脏页地址表,即dirty bitmap_old来存储上一次备份请求时的脏页地址,dirty bitmap_new在dirty bitmap_old存储的脏页地址的基础上,还存储了上次备份请求后到本次备份请求时产生的脏页地址,当地址表内的内存地址被置位时,即表示该内存地址为脏页。备份接收模块会启动接收线程(Incoming thread)和异常处理线程(Userfault process thread),当接收到备份请求后,Incoming thread线程并不会直接将缓存空间中的数据刷入备端虚拟机内存,而是将dirty bitmap_new中的内存地址通过userfaultfd接口标记为缺页(Miss)状态,并将标记后的内存地址从dirtybitmap中清除。当备端虚拟机访问到所述标记了Miss状态的内存页时,都会发生缺页异常,进而异常处理线程(Userfault process thread)会将所述内存页在缓存空间中所对应的内存页上的数据拷贝到备端虚拟机的所述内存页中,然后备端虚拟机在正常访问该内存页。
结合图8,对上述具体的实现方式中接收线程(Incoming thread)和异常处理线程(Userfault process thread)的具体方法流程做进一步的描述。
接收线程(Incoming thread)收到由主端虚拟机(PVM)发送到缓存空间的脏页后,置位脏页对应的置位dirty_bitmap_new上的地址,并查看脏页对应的dirty_bitmap_old地址是否置位。如果dirty_bitmap_old地址也已经置位,则说明该脏页对应的地址中存储有之前主端虚拟机发送的脏页数据,且该数据尚未被拷贝到备端虚拟机中,因此,将改地址对应的缓存空间中的数据拷贝到备端虚拟机,并将对应的dirty_bitmap_old地址清零。完成上述步骤后,或者如果dirty_bi tmap_old地址没有置位,则将收到的脏页数据拷贝到对应的缓存空间中的地址上。此外,备端虚拟机在进行对内存进行修改时,内存管理器会将dirty_bitmap_new中对应的内存页面置位。当接收到备份请求后,暂停虚拟机,并将dirty_bitmap_new数值更新到到dirty_bitmap_old,遍历dirty_bitmap_new,将dirty_bitmap_new中对应的备端虚拟机内存页置为缺页(Miss)状态。
当虚拟机读取标记为Miss的内存页时,异常处理线程(Userfault processthread)被触发,并将读取操作阻塞在read(ufd…)状态,此时,返回Miss的异常地址,即被读取的内存页在缓存空间中的缓存页面地址,并清零对应的dirty_bitmap_old地址位,将此地址的内存页的数据从缓存空间拷贝到备端虚拟机中。
在本方法实施例中,通过对判断备端内存页是否为第一页面,从而实现对于内容与相对应的主端内存页不一致的备端内存页,先将所述备端内存页所对应的缓存页面上的数据拷贝到所述备端内存页中,再访问所述备端内存页。相对于现有技术,无需暂停虚拟机或者仅需短暂的暂停虚拟机,从而降低了热备份对于虚拟机运行的影响,提高了虚拟机工作的连续性和稳定性。
同时,由于只会在当备端虚拟机访问到所存储数据与对应的主端内存页上的数据不一致的备端内存页时(即不是第一页面的备端内存页),进行数据的拷贝,从而进一步减小了数据备份对备端虚拟机运行的影响,节省了系统资源,提高了虚拟机工作的稳定性。
图9是本发明实施例结合前一实施例的进一步的实施例的流程示意图,本实施例结合前一实施例进行描述,在包括了前一实施例的S501、S502的步骤的基础上,当所述备端虚拟机对内存发起访问请求为写操作时,本实施例还包括如下步骤:
S901、确定所述写操作对应的所述内存页面不属于第一页面;
S902、若所述访问请求对应的所述内存页面不属于第一页面,则对所述内存页面进行写操作之前,先备份所述内存页面中的内容到所述缓存空间中对应的缓存页面;
S903、对所述内存页面进行写操作。
当备端虚拟机的内存页面不属于第一页面时,即其页面中的内容与主端虚拟机一致,备端虚拟机在访问所述的内存页面的时候,并不会将所对应的缓存页面中的内容更新到备端内存页上。因此,所述的缓存页面中,并不需要存储主端虚拟机中的内容。而当备端虚拟机要对所述的内存页面进行写操作时,所述内存页面中的内容会被修改,从而与主端虚拟机中的对于内存页面中的内容不一致。由于所对应的缓存空间中并没有存储主端内存页中的内容,因此,在备端内存页对内存页面中的内容进行写操作之前,将上述内存页面中的内容备份到对应的缓存页面中,由于此时的主端与备端的对应内存页面上的内容是一致的,因此备份到缓存页面中的内容即为主端虚拟机对应内存页面上的内容。
在一种实现方式中,在备份所述内存页面中的内容到所述缓存空间中对应的缓存页面之前,确定所述缓存页面中是否有未更新到备端虚拟机内存的数据,如果没有,则备份所述内存页面中的内容到所述缓存空间中对应的缓存页面。
对于不属于第一页面的备端内存页,由于缓存空间被所对应的备端内存页所对应的缓存页面中仍然可能继续存储由主端虚拟机所发送的备份数据,即主端虚拟机中对所述对应的内存页面进行了修改。在这种情况下,备端虚拟机所述内存页面中的内容实际上与主端虚拟机中所对应的内存页面中的内容并不一致。因此,通过本实现方式中的步骤,可以避免备端虚拟机将内存页面中的内容备份到缓存空间从而覆盖了主端虚拟机发送的备份数据。
在一种实现方式中,在更新所述内存页面中的内容为所述内存页面对应的缓存页面中的内容之后,如果所述备端虚拟机对内存发起的访问请求为读请求,删除所述缓存页面中的内容。由于将所述内存页面中的内容更新为所述内存页面对应的缓存页面中的内容,且之后的读操作并不会对所述内存页面中的内容进行修改,因此此时内存页面中的内容与相对应的缓存页面中的内容是一致的,进一步的,即与相对应的主端内存页上的内容一致,可以删除对应的缓存空间中的数据,用以释放存储空间。
在一种实现方式中,可以通过对备端虚拟机的内存页面标记记录为第二页面,当所述备端虚拟机对内存发起访问请求为写操作时,确定所述写操作对应的所述内存页面属于第二页面,若所述访问请求对应的所述内存页面属于第二页面,则对所述内存页面进行写操作之前,先备份所述内存页面中的内容到所述缓存空间中对应的缓存页面,再对所述内存页面进行写操作。
在该种实现方式下,通过第二页面的标记,可以直接判断是否需要对内存页面进行备份。标记第二页面的方式,前述实施例中标记第一页面的方式相对应,列举其中如下方式。
在一种实现方式中,建立备端虚拟机时,当备端虚拟机内存中内容与主端虚拟机内存中内容完全一致后,将备端虚拟机内存中内存页面全部标记为第二页面,并清空缓存空间中缓存页面内的数据。由于建立备端虚拟机时,所述备端虚拟机为主端虚拟机的镜像,当完成备端虚拟机的建立后,备端虚拟机内存中的内容与主端虚拟机内存中的内容是完全一致的。即此时备端虚拟机中的内存页面全部都符合第二页面的条件,因此可以将其全部标记为第二页面。
此外,对所述内存页面进行写操作后,取消将所述内存页面标记为第二页面。由于对应的缓存页面中存储了写操作之前内存页中的内容,因此对内存页面进行写操作后,内存页面与对应的缓存页面中的内容以及不再一致,因而取消将所述内存页面标记为第二页面。
在一种实现方式下,在所述主端虚拟机发起所述备份请求之后,将备端虚拟机内存中未被标记为第一页面的内存页面标记为第二页面。
在前述一种实现方式中,主端虚拟机发起备份请求之后,备端虚拟机会将符合条件的内存页,即与主端虚拟机内存页中内容不一致的备端内存页标记为第一页面。而与之相应的,未被标记为第一页面的内存页面即为与相对应的主端内存页内容一致的备端内存页,因此可以将这些内存页标记为第二页面。
可以理解的,本实施例是在上一实施例的基础上进行的进一步改进,因此可以在前述实施例的所应用的架构下实现。例如,结合前述实施例的描述,第二页面的实现方式可以为Linux系统内核所提供的Userfaultfd接口提供了写保护(Write Protect)功能,将某段指定的内存页标记为写保护,当访问到被标记的内存页时(访问可以是从内核态进行访问,也可以是从用户态进行访问),用户态会被阻塞,并通过ioct l接口先将这些要被写入的内存页中的数据拷贝到缓存空间中对应的缓存页面中,然后再让备端虚拟机继续去写此内存页。当然,可以理解的,在不同的系统环境下,本实施例的实现方式可以在系统中添加新的功能或者接口,以实现本实现方式中标记第一页面所需实现的功能。
在不同的系统架构和虚拟机热备份技术下,主本方法实施例的具体实现方式可能不同。为了便于理解,下面在前述图7所描述的系统架构下,结合图8中对前述实施例中的介绍,举例描述本实施例的一种具体实现方式。
在增加了本发明实施例所提供的方法后,接收线程(Incoming thread)和异常处理线程(Userfault process thread)的具体方法流程有所变化。
如图10所示,接收线程(Incoming thread)增加一个步骤,即在线程开始时,由于此时备端虚拟机与主端虚拟机中的内存数据是完全一致的,所示先将备端虚拟机中所有内存页标记为写保护(WP)。其他步骤与前述实施例中类似,在此不再赘述。
异常处理线程(Userfault process thread)由于需要处理Miss和WP两种异常状态的内存页,因此执行方法变化较多,在此重新进行描述。当虚拟机访问内存页被阻塞在read(udf…)状态后,判断引起阻塞的内存页时被标记为Miss还是被标记为WP。
如图11所示,当所述内存页被标记为Miss时,查找所访问的内存页地址所对应的dirty bitmap_old,并将其置零。然后判断所述访问内存页的操作是否为读操作,如果是,则将所述内存页所对应的缓存空间中的备份数据拷贝到所述内存页中,将上述内存页设置WP标记,并释放所述缓存空间的对应的内存页中的数据。如果不是,则所述操作为写操作,将所述内存页对应的dirty bitmap_new置位,并将所述内存页所对应的缓存空间中的备份数据拷贝到所述内存页中。
当所述内存页被标记为WP,意味着虚拟机会对所述内存页进行写操作,从而产生脏页。因此,先查看所述内存页地址在dirty bitmap_new上是否被置位,如果被置位,所述内存页所对应的缓存空间上的缓存页面中由尚未拷贝到备端虚拟机的备份数据,因此直接去掉该内存页的WP标记,备端虚拟机对该页进行写操作。如果没有被置位,则将所述内存页中的数据拷贝到缓存空间中对应的缓存页面中,并置位在dirty bitmap_new对应的地址,然后去掉该内存页的WP标记,备端虚拟机对该页进行写操作。
在本置为第二页面的备端内存页进行写操作时,先将所述备端内存页中的数据拷贝到所述备端内存页在缓存空间中所对应的缓存页面中,再对所述备端内存页进行写操作,因此,在缓存空间中,设置为第二页面的备端内存页所对应的缓存页面无需存储数据,从而减少了缓存页面的大小,节省了备端虚拟机所在主机的系统资源。
结合图12,是本发明提供的一种虚拟机备份装置1200的结构示意图,所述装置可以为图2所示架构下的运行虚拟机的主机服务器,也可以是其他类似架构或者能够达到类似功能的通用计算机或者专用计算装置。本装置包括计算机软件(包括操作系统、虚拟化软件等)和硬件(包括计算硬件,例如x86、ARM,存储硬件,网络硬件等)组成。因此,所述装置可以独立的硬件的方式来实现,也可以是由物理机的处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、移动硬盘、CD-ROM或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于ASIC中。另外,该ASIC可以位于用户设备中。当然,处理器和存储介质也可以作为分立组件存在于用户设备中。
结合图1的网络架构可知,本装置用于运行开机热备份的主端虚拟机所对应的备端虚拟机,并用以实现前述实施例所述之功能,所述设备包括如下模块:
缓存模块1201:包含虚拟机配置的缓存空间,所述缓存空间中的缓存页面与主端虚拟机内存中的内存页面一一对应,所述缓存空间用于将主端虚拟机发送的备份数据存储在于所述备份数据所在主端虚拟机内存中的内存页面所对应的缓存页面上,另所述缓存页面还与所述备端虚拟机内存中的内存页面一一对应;
内存更新模块1202:用于接收到所述所述主端虚拟机发起备份请求之后,每当所述备端虚拟机对内存发起访问请求时,确定所述访问请求对应的所述备端虚拟机内存中的内存页面;更新所述内存页面中的内容为所述内存页面对应的缓存页面中的内容;以及基于更新后的内存页面处理所述访问请求。
结合前述实施例中的描述,所述内存缓存模块可以用于执行前述实施例中S401的方法,所述内存拷贝模块可用于执行S402的方法,因此在前述实施例中已有的描述在此处不再赘述。
可选的,在一种实现方式中,所述装置还包括内存标记模块1203,用于当所述备端虚拟机内存中的某一内存页面的数据被修改时,通过标记记录所述数据被修改的内存页面为第一页面;以及,当所述缓存空间中某一缓存页面写入了主端虚拟机发送的备份数据时,通过标记记录所述被写入了主端虚拟机发送的备份数据的缓存页面对应的备端虚拟机内存中的内存页面为第一页面。
在另一种实现方式中,内存标记模块在所述主端虚拟机发起所述备份请求之后,将符合条件的所述备端虚拟机内存上的内存页面标记记录为所述第一页面,所述符合条件的所述备端虚拟机内存上的内存页面包括与所述主端虚拟机内存中所对应的内存页面内容不一致的备端虚拟机内存中的内存页面。具体的,在符合条件的所述备端虚拟机内存上的内存页面标记记录为所述第一页面时,所述内存标模块具体用于,所述符合条件的所述备端虚拟机内存上的内存页面具体包括:在所述主端虚拟机发起上一次备份请求之后到本次发起所述备份请求之前,所述备端虚拟机内存中数据被修改的内存页面和被写入了主端虚拟机发送的备份数据的缓存页面对应的备端虚拟机内存中的内存页面为符合条件的所述备端虚拟机内存上的内存页面。
可选的,所述内存更新模块还用于,在将主端虚拟机发送的备份数据存储在于所述备份数据所在主端虚拟机内存中的内存页面所对应的缓存页面上之前,确定所述缓存页面上是否存储有尚未更新到所对应的备端虚拟机内存中的内存页面的备份数据,如果是,则先更新所述备端虚拟机内存中的内存页面中的内容为所述内存页面对应的缓存页面中的内容,再将主端虚拟机发送的备份数据存储在于所述备份数据所在主端虚拟机内存中的内存页面所对应的缓存页面上。或者,所述更新所述内存页面中的内容为所述内存页面对应的缓存页面中的内容后,取消将所述内存页面标记为第一页面。
结合前述实施例中的描述,所述内存标记模块可以用于执行前述实施例中S501,所述内存拷贝模块可用于执行S502的方法,以及这些方法中具体的实施方式,因此在前述实施例中已有的描述在此处不再赘述。
可选的,在一种实现方式中,所述装置还包括内存备份模块1204:用于当所述备端虚拟机对内存发起访问请求为写操作时,确定所述写请求所对应的所述内存页面不属于第一页面,若所述写请求所对应的所述内存页面不属于第一页面,则处理所述写请求之前,先备份所述内存页面中的内容到所述缓存空间中对应的缓存页面,再基于备份后的内存页面处理所述写请求。
可选的,所述内存标记模块还用于,建立备端虚拟机时,当备端虚拟机内存中内容与主端虚拟机内存中内容完全一致后,清空缓存空间中缓存页面内的数据。或者,在更新所述内存页面中的内容为所述内存页面对应的缓存页面中的内容之后,如果所述备端虚拟机对内存发起的访问请求为读请求,删除所述缓存页面中的内容。或者在所述备份所述内存页面中的内容到所述缓存空间中对应的缓存页面之前,确定所述缓存页面中是否有未更新到备端虚拟机内存的数据;如果没有,则备份所述内存页面中的内容到所述缓存空间中对应的缓存页面。
结合前述实施例中的描述,所述内存标记模块可以用于执行前述实施例中S701,所述内存备份模块可用于执行S702的方法,以及这些方法中具体的实施方式,因此在前述实施例中已有的描述在此处不再赘述。
结合图6和图9中所提供的在一种具体的系统架构下的实现方式,本装置中的内存缓存模块和内存标记模块可以执行所述接收线程(Incoming thread)的方法实现,内存更新模块和内存备份模块可以通过所述异常处理线程(Userfault process thread)的方法实现。因此,所述所述装置可以独立的硬件的方式来实现,也可以是由物理机的处理器执行软件指令的方式来实现上述线程的方法。
结合图13,在本发明的另一种实施例中,本发明实施例提供了一种虚拟机备份装置1300,所述装置运行有备端虚拟机,装置的结构中包括处理器1301,所述处理器被配置为支持装置执行上述实施例方法中备端虚拟机相应的功能。所述装置还可以包括存储器,所述存储器1302用于与处理器耦合,其保存必要的程序指令和数据。此外,存储器还可以提供存储空间用于实现缓存空间的相应功能。结合前述实施例中的描述,可以理解本发明实施例所提供的装置的具体实现的功能,再次不再赘述。
在本装置实施例中,由于备端虚拟机访问备端虚拟机内存上的备端内存页时,将所述备端内存页所对应的缓存页面上的数据拷贝到了对应的备端内存页上,实现了将主端虚拟机中主端内存页上的数据备份到了对应的备端内存页,且在将备份数据由缓存空间更新到备端虚拟机的过程中,只需要更新一个内存页面的内容,无需将虚拟机暂停,从而降低了备份对于虚拟机运行的影响,提高了虚拟机工作的连续性和稳定性。
同时,由于可以仅对备端虚拟机内存上产生脏页的内存页面和缓存空间上产生脏页的缓存页面所对应的备端内存页标记记录为第一页面,从而使得当备端虚拟机访问到所存储数据与对应的缓存页面上的数据一致的备端内存页时(即不是第一页面的备端内存页),不会进行数据的拷贝,从而进一步减小了数据备份对备端虚拟机运行的影响,节省了系统资源,提高了虚拟机工作的稳定性。
同时,由于可以对不是第一页面或者为第二页面的备端内存页进行写操作时,先将所述备端内存页中的数据拷贝到所述备端内存页在缓存空间中所对应的缓存页面中,再对所述备端内存页进行写操作,因此,在缓存空间中,与备端内存页面上数据一致的的备端内存页所对应的缓存页面无需存储数据,从而减少了缓存页面的大小,节省了备端虚拟机所在主机的存储资源。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件(例如传感器处理器,或者传感器处理器与功耗处理器配合)来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:ROM、RAM、磁盘或光盘等。
以上对本发明实施例所提供的数据传输方法、设备以及数据传输系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (32)
1.一种虚拟机备份方法,其特征在于,所述方法应用于备端虚拟机,所述备端虚拟机配置有缓存空间,所述缓存空间中的缓存页面与主端虚拟机内存中的内存页面一一对应,所述缓存空间用于将主端虚拟机发送的备份数据存储在与所述备份数据所在主端虚拟机内存中的内存页面所对应的缓存页面上,另所述缓存页面还与所述备端虚拟机内存中的内存页面一一对应,所述方法包括:
当所述备端虚拟机对内存发起访问请求时,确定所述访问请求对应的所述备端虚拟机内存中的内存页面;更新所述内存页面中的内容为所述内存页面对应的缓存页面中的内容;以及基于更新后的内存页面处理所述访问请求。
2.根据权利要求1所述方法,其特征在于,所述当所述备端虚拟机对内存发起访问请求时,在确定所述访问请求对应的所述备端虚拟机内存中的内存页面之前,所述方法还包括:
确定所述访问请求对应的所述内存页面属于第一页面,所述第一页面包括与所述主端虚拟机内存中所对应的内存页面内容不一致的备端虚拟机内存中的内存页面;
若所述访问请求对应的所述内存页面属于第一页面,则确定所述访问请求对应的所述备端虚拟机内存中的内存页面。
3.根据权利要求2所述方法,其特征在于,所述第一页面为所述备端虚拟机内存中的脏页和所述主端虚拟机中的脏页所对应的所述备端虚拟机内存中的内存页面。
4.根据权利要求2所述方法,其特征在于,所述方法还包括:
当所述备端虚拟机内存中的某一内存页面的数据被修改时,通过标记记录所述数据被修改的内存页面为第一页面;
当所述缓存空间中某一缓存页面写入了主端虚拟机发送的备份数据时,通过标记记录所述被写入了主端虚拟机发送的备份数据的缓存页面对应的备端虚拟机内存中的内存页面为第一页面。
5.根据权利要求2所述方法,其特征在于,确定所述访问请求对应的所述内存页面属于第一页面之前,所述方法还包括:
将符合条件的所述备端虚拟机内存上的内存页面标记记录为所述第一页面,所述符合条件的所述备端虚拟机内存上的内存页面包括与所述主端虚拟机内存中所对应的内存页面内容不一致的备端虚拟机内存中的内存页面。
6.根据权利要求5所述方法,其特征在于,所述方法用于接收到所述主端虚拟机发起备份请求之后;
所述符合条件的所述备端虚拟机内存上的内存页面具体包括:
在所述主端虚拟机发起上一次备份请求之后到本次发起备份请求之前,所述备端虚拟机内存中数据被修改的内存页面和被写入了主端虚拟机发送的备份数据的缓存页面对应的备端虚拟机内存中的内存页面为符合条件的所述备端虚拟机内存上的内存页面。
7.根据权利要求5所述方法,其特征在于,在将主端虚拟机发送的备份数据存储在所述备份数据所在主端虚拟机内存中的内存页面所对应的缓存页面上之前,确定所述缓存页面上是否存储有尚未更新到所对应的备端虚拟机内存中的内存页面的备份数据,如果是,则先更新所述备端虚拟机内存中的内存页面中的内容为所述内存页面对应的缓存页面中的内容,再将主端虚拟机发送的备份数据存储在所述备份数据所在主端虚拟机内存中的内存页面所对应的缓存页面上。
8.根据权利要求4所述方法,其特征在于,所述更新所述内存页面中的内容为所述内存页面对应的缓存页面中的内容后,取消将所述内存页面标记为第一页面。
9.根据权利要求2-8中任一所述方法,其特征在于,当所述备端虚拟机对内存发起访问请求为写请求时,所述方法还包括:
确定所述写请求所对应的所述内存页面不属于第一页面,若所述写请求所对应的所述内存页面不属于第一页面,则处理所述写请求之前,先备份所述内存页面中的内容到所述缓存空间中对应的缓存页面,再基于备份后的内存页面处理所述写请求。
10.根据权利要求9所述方法,其特征在于,所述方法还包括:建立备端虚拟机时,当备端虚拟机内存中内容与主端虚拟机内存中内容完全一致后,清空缓存空间中缓存页面内的数据。
11.根据权利要求9所述方法,其特征在于,在更新所述内存页面中的内容为所述内存页面对应的缓存页面中的内容之后,如果所述备端虚拟机对内存发起的访问请求为读请求,删除所述缓存页面中的内容。
12.根据权利要求9所述方法,其特征在于,在所述备份所述内存页面中的内容到所述缓存空间中对应的缓存页面之前,确定所述缓存页面中是否有未更新到备端虚拟机内存的数据;如果没有,则备份所述内存页面中的内容到所述缓存空间中对应的缓存页面。
13.根据权利要求4所述方法,其特征在于,所述方法还包括:
建立备端虚拟机时,当备端虚拟机内存中内容与主端虚拟机内存中内容完全一致后,将备端虚拟机内存中内存页面全部标记为第二页面,并清空缓存空间中缓存页面内的数据;
当所述备端虚拟机内存上的内存页面被标记记录为所述第一页面时,取消将所述内存页面标记为第二页面;
当所述备端虚拟机对内存发起访问请求为写操作时,确定所述写操作对应的所述内存页面属于第二页面,若所述访问请求对应的所述内存页面属于第二页面,则对所述内存页面进行写操作之前,先备份所述内存页面中的内容到所述缓存空间中对应的缓存页面,再对所述内存页面进行写操作。
14.根据权利要求5所述方法,其特征在于,所述方法还包括:
建立备端虚拟机时,当备端虚拟机内存中内容与主端虚拟机内存中内容完全一致后,将备端虚拟机内存中内存页面全部标记为第二页面,并清空缓存空间中缓存页面内的数据;
在所述主端虚拟机发起备份请求之后,当所述备端虚拟机内存上的内存页面被标记记录为所述第一页面时,取消将所述内存页面标记为第二页面,以及将备端虚拟机内存中未被标记为第一页面的内存页面标记为第二页面;
当所述备端虚拟机对内存发起访问请求为写操作时,确定所述写操作对应的所述内存页面属于第二页面,若所述访问请求对应的所述内存页面属于第二页面,则对所述内存页面进行写操作之前,先备份所述内存页面中的内容到所述缓存空间中对应的缓存页面,再对所述内存页面进行写操作。
15.根据权利要求13或14所述方法,其特征在于,在更新所述内存页面中的内容为所述内存页面对应的缓存页面中的内容之后,如果所述备端虚拟机对内存发起的访问请求为读操作,则将所述内存页面标记为第二页面,并删除所述缓存页面中的内容。
16.根据权利要求13或14所述方法,其特征在于,在所述备份所述内存页面中的内容到所述缓存空间中对应的缓存页面之前,确定所述缓存页面中是否有未更新到备端虚拟机内存的数据;如果没有,则备份所述内存页面中的内容到所述缓存空间中对应的缓存页面,否则,取消将所述内存页面标记为第二页面。
17.一种虚拟机备份装置,所述装置运行有备端虚拟机,其特征在于,所述装置包括:
缓存模块:包含缓存空间,所述缓存空间中的缓存页面与主端虚拟机内存中的内存页面一一对应,所述缓存空间用于将主端虚拟机发送的备份数据存储在所述备份数据所在主端虚拟机内存中的内存页面所对应的缓存页面上,另所述缓存页面还与所述备端虚拟机内存中的内存页面一一对应;
内存更新模块:用于接收到所述主端虚拟机发起备份请求之后,每当所述备端虚拟机对内存发起访问请求时,确定所述访问请求对应的所述备端虚拟机内存中的内存页面;更新所述内存页面中的内容为所述内存页面对应的缓存页面中的内容;以及基于更新后的内存页面处理所述访问请求。
18.根据权利要求17所述装置,其特征在于,所述内存更新模块具体用于,所述每当所述备端虚拟机对内存发起访问请求时,在确定所述访问请求对应的所述备端虚拟机内存中的内存页面之前,确定所述访问请求对应的所述内存页面属于第一页面,所述第一页面包括与所述主端虚拟机内存中所对应的内存页面内容不一致的备端虚拟机内存中的内存页面;若所述访问请求对应的所述内存页面属于第一页面,则确定所述访问请求对应的所述备端虚拟机内存中的内存页面。
19.根据权利要求18所述装置,其特征在于,所述第一页面为所述备端虚拟机内存中的脏页和所述主端虚拟机中的脏页所对应的所述备端虚拟机内存中的内存页面。
20.根据权利要求18所述装置,其特征在于,所述装置还包括:
内存标记模块,用于当所述备端虚拟机内存中的某一内存页面的数据被修改时,通过标记记录所述数据被修改的内存页面为第一页面;以及,当所述缓存空间中某一缓存页面写入了主端虚拟机发送的备份数据时,通过标记记录所述被写入了主端虚拟机发送的备份数据的缓存页面对应的备端虚拟机内存中的内存页面为第一页面。
21.根据权利要求18所述装置,其特征在于,所述装置还包括:
内存标记模块:在所述主端虚拟机发起所述备份请求之后,将符合条件的所述备端虚拟机内存上的内存页面标记记录为所述第一页面,所述符合条件的所述备端虚拟机内存上的内存页面包括与所述主端虚拟机内存中所对应的内存页面内容不一致的备端虚拟机内存中的内存页面。
22.根据权利要求21所述装置,其特征在于,所述符合条件的所述备端虚拟机内存上的内存页面具体包括:在所述主端虚拟机发起上一次备份请求之后到本次发起所述备份请求之前,所述备端虚拟机内存中数据被修改的内存页面和被写入了主端虚拟机发送的备份数据的缓存页面对应的备端虚拟机内存中的内存页面为符合条件的所述备端虚拟机内存上的内存页面。
23.根据权利要求21所述装置,其特征在于,所述内存更新模块还用于,在将主端虚拟机发送的备份数据存储在所述备份数据所在主端虚拟机内存中的内存页面所对应的缓存页面上之前,确定所述缓存页面上是否存储有尚未更新到所对应的备端虚拟机内存中的内存页面的备份数据,如果是,则先更新所述备端虚拟机内存中的内存页面中的内容为所述内存页面对应的缓存页面中的内容,再将主端虚拟机发送的备份数据存储在所述备份数据所在主端虚拟机内存中的内存页面所对应的缓存页面上。
24.根据权利要求20-23中任一所述装置,其特征在于,所述内存标记模块还用于:
所述更新所述内存页面中的内容为所述内存页面对应的缓存页面中的内容后,取消将所述内存页面标记为第一页面。
25.根据权利要求18或19所述装置,其特征在于,所述装置还包括:
内存备份模块:用于当所述备端虚拟机对内存发起访问请求为写操作时,确定所述写请求所对应的所述内存页面不属于第一页面,若所述写请求所对应的所述内存页面不属于第一页面,则处理所述写请求之前,先备份所述内存页面中的内容到所述缓存空间中对应的缓存页面,再基于备份后的内存页面处理所述写请求。
26.根据权利要求25所述装置,其特征在于,所述装置还包括内存标记模块,所述内存标记模块用于,建立备端虚拟机时,当备端虚拟机内存中内容与主端虚拟机内存中内容完全一致后,清空缓存空间中缓存页面内的数据。
27.根据权利要求25所述装置,其特征在于,所述内存更新模块还用于,在更新所述内存页面中的内容为所述内存页面对应的缓存页面中的内容之后,如果所述备端虚拟机对内存发起的访问请求为读请求,删除所述缓存页面中的内容。
28.根据权利要求25所述装置,其特征在于,所述内存备份模块还用于,在所述备份所述内存页面中的内容到所述缓存空间中对应的缓存页面之前,确定所述缓存页面中是否有未更新到备端虚拟机内存的数据;如果没有,则备份所述内存页面中的内容到所述缓存空间中对应的缓存页面。
29.根据权利要求20所述装置,其特征在于,
所述内存标记模块还用于:建立备端虚拟机时,当备端虚拟机内存中内容与主端虚拟机内存中内容完全一致后,将备端虚拟机内存中内存页面全部标记为第二页面,并清空缓存空间中缓存页面内的数据;以及,
当所述备端虚拟机内存上的内存页面被标记记录为所述第一页面时,取消将所述内存页面标记为第二页面;
所述装置还包括内存备份模块:用于当所述备端虚拟机对内存发起访问请求为写操作时,确定所述写操作对应的所述内存页面属于第二页面,若所述访问请求对应的所述内存页面属于第二页面,则对所述内存页面进行写操作之前,先备份所述内存页面中的内容到所述缓存空间中对应的缓存页面,再对所述内存页面进行写操作。
30.根据权利要求21所述装置,其特征在于,
所述内存标记模块还用于:建立备端虚拟机时,当备端虚拟机内存中内容与主端虚拟机内存中内容完全一致后,将备端虚拟机内存中内存页面全部标记为第二页面,并清空缓存空间中缓存页面内的数据;以及,
在所述主端虚拟机发起所述备份请求之后,当所述备端虚拟机内存上的内存页面被标记记录为所述第一页面时,取消将所述内存页面标记为第二页面,以及将备端虚拟机内存中未被标记为第一页面的内存页面标记为第二页面;
当所述备端虚拟机对内存发起访问请求为写操作时,确定所述写操作对应的所述内存页面属于第二页面,若所述访问请求对应的所述内存页面属于第二页面,则对所述内存页面进行写操作之前,先备份所述内存页面中的内容到所述缓存空间中对应的缓存页面,再对所述内存页面进行写操作。
31.根据权利要求29或30所述装置,其特征在于,所述内存标记模块还用于:在更新所述内存页面中的内容为所述内存页面对应的缓存页面中的内容之后,如果所述备端虚拟机对内存发起的访问请求为读操作,则将所述内存页面标记为第二页面,并删除所述缓存页面中的内容。
32.根据权利要求29所述装置,其特征在于,所述内存备份模块还用于,在所述备份所述内存页面中的内容到所述缓存空间中对应的缓存页面之前,确定所述缓存页面中是否有未更新到备端虚拟机内存的数据;如果没有,则备份所述内存页面中的内容到所述缓存空间中对应的缓存页面,否则,取消将所述内存页面标记为第二页面。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510694894.3A CN105607962B (zh) | 2015-10-22 | 2015-10-22 | 一种虚拟机备份的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510694894.3A CN105607962B (zh) | 2015-10-22 | 2015-10-22 | 一种虚拟机备份的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105607962A CN105607962A (zh) | 2016-05-25 |
CN105607962B true CN105607962B (zh) | 2019-03-19 |
Family
ID=55987915
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510694894.3A Active CN105607962B (zh) | 2015-10-22 | 2015-10-22 | 一种虚拟机备份的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105607962B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110622478B (zh) * | 2018-04-08 | 2020-11-06 | 华为技术有限公司 | 数据同步处理的方法和装置 |
CN108984430A (zh) * | 2018-05-04 | 2018-12-11 | 广东睿江云计算股份有限公司 | 基于固定缓冲的虚拟机磁盘复制过程写入方法及装置 |
US10909002B2 (en) | 2018-06-29 | 2021-02-02 | Industrial Technology Research Institute | Fault tolerance method and system for virtual machine group |
TWI669605B (zh) * | 2018-06-29 | 2019-08-21 | 財團法人工業技術研究院 | 虛擬機器群組的容錯方法及其容錯系統 |
CN110308974A (zh) * | 2019-07-11 | 2019-10-08 | 联想(北京)有限公司 | 一种数据处理方法、虚拟机装置及虚拟机架构 |
CN110837441A (zh) * | 2019-11-14 | 2020-02-25 | 北京京航计算通讯研究所 | 基于脏数据位图和网络块设备的kvm虚拟机备份方法 |
CN110837442B (zh) * | 2019-11-14 | 2022-08-16 | 北京京航计算通讯研究所 | 基于脏数据位图和网络块设备的kvm虚拟机备份系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102073556A (zh) * | 2010-12-08 | 2011-05-25 | 北京航空航天大学 | 虚拟机的热备份和恢复方法、设备及系统 |
CN102331949A (zh) * | 2011-10-12 | 2012-01-25 | 华为技术有限公司 | 一种虚拟机内存快照生成和恢复方法、装置及系统 |
-
2015
- 2015-10-22 CN CN201510694894.3A patent/CN105607962B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102073556A (zh) * | 2010-12-08 | 2011-05-25 | 北京航空航天大学 | 虚拟机的热备份和恢复方法、设备及系统 |
CN102331949A (zh) * | 2011-10-12 | 2012-01-25 | 华为技术有限公司 | 一种虚拟机内存快照生成和恢复方法、装置及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN105607962A (zh) | 2016-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105607962B (zh) | 一种虚拟机备份的方法和装置 | |
US9563452B2 (en) | Cloud-enabled, distributed and high-availability system with virtual machine checkpointing | |
CN105095094B (zh) | 内存管理方法和设备 | |
US10838829B2 (en) | Method and apparatus for loading data from a mirror server and a non-transitory computer readable storage medium | |
CN103765406B (zh) | 用于远程更新执行进程的方法和装置 | |
CN103164254B (zh) | 用于维持镜像虚拟环境中存储装置的一致性的方法和系统 | |
JP2019016135A (ja) | 情報処理システム、情報処理システムの制御プログラム及び情報処理システムの制御方法 | |
CN105549905A (zh) | 一种多虚拟机访问分布式对象存储系统的方法 | |
US10452300B2 (en) | Storage system, node apparatus, cache control method and program | |
US10628235B2 (en) | Accessing log files of a distributed computing system using a simulated file system | |
US10599622B2 (en) | Implementing storage volumes over multiple tiers | |
JP2007286860A (ja) | データ転送方法及び情報処理装置 | |
US20190212998A1 (en) | Implementing Application Entrypoints With Containers of a Bundled Application | |
CN104102535B (zh) | 进程迁移方法和可迁移操作系统 | |
US10620871B1 (en) | Storage scheme for a distributed storage system | |
US10642697B2 (en) | Implementing containers for a stateful application in a distributed computing system | |
JPWO2012063334A1 (ja) | 仮想マシンのライブマイグレーションを支援するためのメモリ制御装置及びi/oスイッチ | |
US20220229734A1 (en) | Snapshot performance optimizations | |
CN108762668A (zh) | 一种处理写入冲突的方法及装置 | |
US10241874B2 (en) | Checkpoint method for a highly available computer system | |
CN104956346A (zh) | 控制由于分布式计算系统的计算节点中的故障而导致的错误传播 | |
US11288238B2 (en) | Methods and systems for logging data transactions and managing hash tables | |
JP2010231567A (ja) | ストレージスイッチ、記憶領域サイズ変更方法 | |
US11392464B2 (en) | Methods and systems for mirroring and failover of nodes | |
JP5561303B2 (ja) | データ複製システム、データ複製方法、及びそのプログラム |
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 |