CN115904630A - 一种虚拟机迁移方法、装置、数据处理设备及存储介质 - Google Patents
一种虚拟机迁移方法、装置、数据处理设备及存储介质 Download PDFInfo
- Publication number
- CN115904630A CN115904630A CN202211679344.0A CN202211679344A CN115904630A CN 115904630 A CN115904630 A CN 115904630A CN 202211679344 A CN202211679344 A CN 202211679344A CN 115904630 A CN115904630 A CN 115904630A
- Authority
- CN
- China
- Prior art keywords
- memory
- migration
- virtual machine
- segments
- segment
- 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.)
- Pending
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例适用于计算机技术领域,提供了一种虚拟机迁移方法、装置、数据处理设备及存储介质,其中,虚拟机迁移方法包括:若第一虚拟机的内存热迁移进入增量迭代迁移阶段,基于第一虚拟机的至少两个内存段的每个内存段的热度值,为至少两个内存段中的内存段设置内存延迟迁移标记;热度值表征对应的内存段中的脏页数量;将不带有内存延迟迁移标记的内存段中的数据迭代迁移至第二虚拟机,直至所有内存段的数据量之和小于设定值;在所有内存段的数据量之和小于设定值时,对第一虚拟机进行停机迁移。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种虚拟机迁移方法、装置、数据处理设备及存储介质。
背景技术
虚拟机的热迁移一般需要经历3个阶段,全量迁移阶段、增量迭代迁移阶段和停机迁移阶段。在增量迭代迁移阶段,源虚拟机会持续迭代发送内存的增量数据给目的虚拟机。当前增量迭代迁移阶段,源虚拟机会把每一轮迭代的内存增量数据都发送给目标虚拟机,使得虚拟机迁移的内存增量数据量太大,使得迁移时间太长,导致虚拟机迁移效率低,从而影响业务。
发明内容
为了解决上述问题,本发明实施例提供了一种虚拟机迁移方法、装置、数据处理设备及存储介质,以至少解决相关技术虚拟机迁移效率低的问题。
本发明的技术方案是这样实现的:
一方面,本发明实施例提供了一种虚拟机迁移方法,该方法包括:
若第一虚拟机的内存热迁移进入增量迭代迁移阶段,基于所述第一虚拟机的至少两个内存段的每个内存段的热度值,为所述至少两个内存段中的内存段设置内存延迟迁移标记;所述热度值表征对应的内存段中的脏页数量;
将不带有所述内存延迟迁移标记的内存段中的数据迭代迁移至第二虚拟机,直至所有内存段的数据量之和小于设定值;
在所有内存段的数据量之和小于设定值时,对所述第一虚拟机进行停机迁移。
在上述方案中,所述基于所述第一虚拟机的至少两个内存段的每个内存段的热度值,为所述至少两个内存段中的内存段设置内存延迟迁移标记,包括:
基于所述热度值的大小对所述至少两个内存段进行排序,得到排序结果;
根据所述排序结果,为所述至少两个内存段中的内存段设置内存延迟迁移标记。
在上述方案中,所述根据所述排序结果,为所述至少两个内存段中的内存段设置内存延迟迁移标记,包括:
在所述排序结果中,从最大热度值的内存段开始依次选取内存段设置内存延迟迁移标记,直至设置有内存延迟迁移标记的内存段占所述至少两个内存段的比例达到设定比例。
在上述方案中,在基于所述第一虚拟机的至少两个内存段的每个内存段的热度值,为所述至少两个内存段中的内存段设置内存延迟迁移标记之前,所述方法还包括:
根据每个内存段中的缓存页的标签属性,确定每个内存段中的脏页数量;
基于每个内存段的脏页数量,确定每个内存段的热度值。
在上述方案中,所述基于所述第一虚拟机的至少两个内存段的每个内存段的热度值,为所述至少两个内存段中的内存段设置内存延迟迁移标记,包括:
确定所述第一虚拟机上部署的业务的业务类型;
若所述业务类型为第一类型,则将第一次迭代迁移时为所述至少两个内存段中的内存段设置的内存延迟迁移标记,确定为后续每一次迭代迁移时对应的内存段的内存延迟迁移标记;
若所述业务类型为第二类型,则在每一次迭代迁移时重新根据所述至少两个内存段的每个内存段的热度值,为所述至少两个内存段中的内存段设置内存延迟迁移标记。
在上述方案中,在为所述至少两个内存段中的内存段设置内存延迟迁移标记之前,所述方法还包括:
基于所述第一虚拟机上部署的业务的业务类型,确定所述至少两个内存段的每个内存段的大小;
根据所述至少两个内存段的每个内存段的大小,将所述第一虚拟机的内存划分为至少两个内存段。
在上述方案中,所述对所述第一虚拟机进行停机迁移,包括:
停止运行所述第一虚拟机;
将所有内存段中的数据和所述第一虚拟机的硬件设备状态数据迁移至所述第二虚拟机。
另一方面,本发明实施例提供了一种虚拟机迁移装置,该装置包括:
设置模块,用于若第一虚拟机的内存热迁移进入增量迭代迁移阶段,基于所述第一虚拟机的至少两个内存段的每个内存段的热度值,为所述至少两个内存段中的内存段设置内存延迟迁移标记;所述热度值表征对应的内存段中的脏页数量;
第一迁移模块,用于将不带有所述内存延迟迁移标记的内存段中的数据迭代迁移至第二虚拟机,直至所有内存段的数据量之和小于设定值;
第二迁移模块,用于在所有内存段的数据量之和小于设定值时,对所述第一虚拟机进行停机迁移。
另一方面,本发明实施例提供了一种数据处理设备,包括处理器和存储器,所述处理器和存储器相互连接,其中,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行本发明实施例第一方面提供的虚拟机迁移方法的步骤。
另一方面,本发明实施例提供了一种计算机可读存储介质,包括:所述计算机可读存储介质存储有计算机程序。所述计算机程序被处理器执行时实现如本发明实施例第一方面提供的虚拟机迁移方法的步骤。
本发明实施例在第一虚拟机的内存热迁移进入增量迭代迁移阶段时,基于第一虚拟机的至少两个内存段的每个内存段的热度值,为至少两个内存段中的内存段设置内存延迟迁移标记。将不带有所述内存延迟迁移标记的内存段的数据迭代迁移至第二虚拟机,直至所有内存段的数据量之和小于设定值时,对第一虚拟机进行停机迁移。其中,热度值表征对应的内存段中的脏页数量。本实施例基于第一虚拟机的每个内存段的热度值,为其中的热点内存段设置内存延迟迁移标记,在增量迭代迁移时,带有内存延迟迁移标记的内存段的数据先不迁移,只将不带有内存延迟迁移标记的内存段的数据迭代迁移至第二虚拟机,从而避免热点内存段中数据的多次无效迁移,可以减低内存迁移数据量,缩短迁移时间,提高第一虚拟机的迁移效率。相比现有技术,由于本实施例只需要迁移不带有内存延迟迁移标记的内存段的数据,本实施例占用的虚拟机资源更少,可以避免虚拟机资源浪费。
附图说明
图1是本发明实施例提供的一种虚拟机热迁移流程的示意图;
图2是本发明实施例提供的一种全量迁移阶段的原理示意图;
图3是本发明实施例提供的一种增量迭代迁移阶段的原理示意图;
图4是本发明实施例提供的一种停机迁移阶段的原理示意图;
图5是本发明实施例提供的一种内存的时间局部性的示意图;
图6是本发明实施例提供的一种内存的空间局部性的示意图;
图7是本发明实施例提供的一种增量迭代迁移阶段的示意图;
图8是本发明实施例提供的一种虚拟机迁移方法的实现流程示意图;
图9是本发明实施例提供的内存段的示意图;
图10是本发明实施例提供的另一种虚拟机迁移方法的实现流程示意图;
图11是本发明实施例提供的一种虚拟机迁移装置的示意图;
图12是本发明一实施例提供的数据处理设备的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
虚拟机的“热迁移(Live Migration)”技术可以将一个虚拟机从一台HOST(运行虚拟机的物理主机)迁移到另一台HOST上,从而实现HOST负载的均衡,并且热迁移过程中保持业务不中断。
如图1所示,图1是本发明实施例提供的一种虚拟机热迁移流程的示意图,虚拟机热迁移的整体流程如下:
步骤1、在热迁移开始时,会在目的主机上启动一个处于冻结状态(INMIGRATE)的虚拟机,称为目的虚拟机。
步骤2、源虚拟机与目的虚拟机建立传输控制协议(TCP,Transmission ControlProtocol)连接,然后源虚拟机在运行时进行数据迁移。
运行时数据迁移,包括如下几种数据:
a、虚拟机的内存数据;
b、虚拟机的磁盘数据(可选项,跨存储热迁移时需要);
c、虚拟机的硬件设备状态数据(中央处理器(CPU,Central Processing Unit)、网卡、显卡等)。
步骤3、在热迁移过程中,源虚拟机处于运行状态(RUNNING),内存和磁盘数据量比较大且在不断变化,无法一次性全部迁完,因此虚拟机的数据迁移需要经历3个阶段:
a、全量迁移阶段,全量迁移源虚拟机的内存数据和磁盘数据到目的虚拟机。
b、增量迭代迁移阶段,由于在热迁移过程中,源虚拟机并不关机,源虚拟机中运行的业务会读写内存数据,导致不停产生新的内存脏数据。增量迭代迁移就是将源虚拟机在迁移过程中产生的增量数据进行多轮迭代迁移,使得内存中的剩余脏数据量逐渐减少。
c、停机迁移阶段,在增量迭代迁移过程中,会根据带宽和当前迁移速率,评估出剩余内存脏数据需要的迁移时间,如果小于Downtime停机时间,就会进入停机迁移阶段。暂停源虚拟机运行,将剩余内存脏数据一次性迁移到目的虚拟机。Downtime指虚拟机热迁移进入最后的停机迁移阶段时,能够接受的最大中断时间阈值。
步骤4、关闭源虚拟机,激活目的虚拟机,这样就完成了整个热迁移操作。
对于全量迁移阶段,图2是本发明实施例提供的一种全量迁移阶段的原理示意图,如图2所示,在全量迁移阶段,源虚拟机会在BITMAP(虚拟机热迁移过程中用来记录内存脏数据的位图结构)将内存的全部数据块都标记为脏,然后全量迁移内存数据块到目的虚拟机。在此期间,源虚拟机在迁移过程中会监控内存数据块的变化情况,并记录在BITMAP,当内存全量数据迁移完后,会进入增量迭代迁移阶段。
对于增量迭代迁移阶段,图3是本发明实施例提供的一种增量迭代迁移阶段的原理示意图,在增量迭代迁移阶段,源虚拟机中运行的业务会不停产生新的内存脏数据,每次增量迭代迁移时,源虚拟机会将内存中所有增量数据迁移到目的虚拟机中。在每轮增量迭代迁移过程中,通过BITMAP记录新的脏数据块,以供下次增量迁移使用。在每次增量迁移后,会根据带宽和当前迁移速率,评估出剩余内存脏数据需要的迁移时间,如果小于Downtime停机时间,就会进入停机迁移阶段。否则,会继续停留在增量迭代迁移阶段。
对于停机迁移阶段,图4是本发明实施例提供的一种停机迁移阶段的原理示意图,如图4所示,停机迁移阶段,会暂停源虚拟机运行,目的是停止数据变更,将剩余内存脏数据和硬件设备状态数据一次性迁移到目的虚拟机。此时,目的虚拟机的内存数据和硬件设备状态数据,与源虚拟机完全一致了。最后,关闭源虚拟机,激活目的虚拟机,这样就完成了整个热迁移操作。
现在的业务系统在架构设计方面大多都遵循内存局部性原理,内存局部性原理分为:时间局部性和空间局部性。
如图5所示,内存的时间局部性,指的是内存某个位置被访问后,未来一段时间内,相同位置有很大概率会被再次访问。
如图6所示,内存的空间局部性,指的是内存某个位置被访问后,未来一段时间内,相邻位置有很大概率会被访问。
根据内存局部性原理,虚拟机业务在运行过程中,会存在大量的热点内存,热点内存会在一定时间内被频繁的访问和修改。
虚拟机热迁移进入到增量迭代迁移阶段,每次增量迭代迁移时,源虚拟机都会将内存中所有增量数据迁移到目的虚拟机中,由于热点内存中的数据会频繁访问和修改,热点内存在每一轮迭代时都可能会写入新的数据。经过申请人大量实验和研究证明,热点内存中的数据在多轮迭代迁移中,只有最后一轮迭代迁移的数据是有效的,前面迭代迁移的数据都属于无效数据。
如图7所示,图7中热点内存在每一轮增量迭代中都会写入新的数据,如果每一轮增量迭代都将热点内存中的数据迁移至目的虚拟机,热点内存每一轮增量迭代的数据都会覆盖前一轮增量迭代的数据,只有最后一轮迭代迁移的数据是有效的,所以图7中热点内存的第1轮增量迭代到第4轮增量迭代都属于无效迁移,只有第5轮增量迭代的数据是有效数据。这种情况会导致计算机资源(网络带宽、CPU、磁盘和内存资源)的浪费,以及热迁移时间过长,导致虚拟机迁移效率低。
针对上述相关技术的缺点,本发明实施例提供了一种虚拟机迁移方法,能够减低内存迁移数据量,提高虚拟机迁移效率。为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。
图8是本发明实施例提供的一种虚拟机迁移方法的实现流程示意图,所述虚拟机迁移方法的执行主体为数据处理设备,包括台式电脑、笔记本电脑、手机和服务器等。其中,所述服务器可以是实体的设备,也可以是部署在云端的虚拟化设备。
参考图8,虚拟机迁移方法包括:
S801,若第一虚拟机的内存热迁移进入增量迭代迁移阶段,基于所述第一虚拟机的至少两个内存段的每个内存段的热度值,为所述至少两个内存段中的内存段设置内存延迟迁移标记;所述热度值表征对应的内存段中的脏页数量。
本实施例对增量迭代迁移阶段中虚拟机的数据迁移操作进行了改进。虚拟机热迁移包含三个阶段:全量迁移阶段、增量迭代迁移阶段和停机迁移阶段,其具体实现过程详见上述实施例,这里不再赘述。
在全量迁移阶段之后,第一虚拟机的内存热迁移进入增量迭代迁移阶段。
在增量迭代迁移阶段,由于第一虚拟机并不关机,第一虚拟机中的业务会不断读写内存,导致第一虚拟机的内存中会不断产生新的内存脏数据,每次增量迭代迁移时,第一虚拟机会将内存中的增量数据(产生的新的内存脏数据)迁移到第二虚拟机中。这里,第一虚拟机是源虚拟机,第二虚拟机是目的虚拟机。
本实施例将第一虚拟机的内存划分为多个(至少两个)内存段,基于第一虚拟机的至少两个内存段的每个内存段的热度值,为至少两个内存段中的若干个内存段设置内存延迟迁移标记。
这里,热度值表征内存段中的脏页数量,因为硬盘的读写速度远赶不上内存的速度,系统就把读写比较频繁的数据事先放到内存中,以提高读写速度,这就叫高速缓存。linux是以缓存页(page cache)作为高速缓存的单位,一般修改的文件数据并不会马上同步到磁盘,会缓存在内存的page cache中,把这种和磁盘数据不一致的page cache称为脏页,脏页会在合适的时机同步到磁盘。内存数据写入到磁盘后,内存和磁盘上的数据页的内容就一致了,称为“干净页”。为了回写page cache中的脏页,需要标记缓存页为脏(dirty)。
通过统计内存段中标记为脏(dirty)的缓存页的数量,可以得到内存段中的脏页数量,脏页数量表示内存段的热度值,例如可以直接将脏页数量作为内存段的热度值。
根据每个内存段的热度值,确定其中的热点内存段,热点内存段指热度值高的内存段,为热点内存段设置内存延迟迁移标记。例如,将至少两个内存段中热度值最高的几个内存段设置内存延迟迁移标记,或者为热度值大于阈值的内存段设置内存延迟迁移标记。
S802,将不带有所述内存延迟迁移标记的内存段中的数据迭代迁移至第二虚拟机,直至所有内存段的数据量之和小于设定值。
带有内存延迟迁移标记的内存段是热点内存段,对于热点内存段,在每一轮增量迭代过程中可能都会有新的脏数据写入,因此本实施例在第一虚拟机每一轮增量迭代迁移时,有内存延迟迁移标记的内存段的数据先不进行迁移,只迁移哪些没有内存延迟迁移标记的内存段的数据,这样可以避免热点内存段中脏数据的多次无效迁移。
如图7所示,应用本实施例方案对增量迭代迁移过程进行改进后,第一轮增量迭代迁移到第4轮增量迭代迁移,热点内存段的数据都不会迁移。只有第5轮增量迭代迁移时,才将所有内存段的数据迁移至第二虚拟机的内存中。
在每轮增量迭代迁移后,统计所有内存段中的数据量之和,如果总数据量小于设定值,说明第一虚拟机满足进入停机迁移阶段的条件,此时可以停止进行增量迭代迁移。
S803,在所有内存段的数据量之和小于设定值时,对所述第一虚拟机进行停机迁移。
如果所有内存段的数据量之和小于设定值,说明第一虚拟机的内存中的剩余数据量不多了,可以关闭延迟迁移功能,走正常的内存迁移流程。即控制第一虚拟机进入最后的停机迁移阶段,停止运行第一虚拟机,将第一虚拟机的所有内存段的剩余数据全部迁移到第二虚拟机的内存中。如此,完成了第一虚拟机的内存热迁移。
这里,设定值可以根据经验设置,例如,设定值为总内存量的10%。
在停机迁移完成后,激活第二虚拟机,完成第一虚拟机的热迁移。
本发明实施例在第一虚拟机的内存热迁移进入增量迭代迁移阶段时,基于第一虚拟机的至少两个内存段的每个内存段的热度值,为至少两个内存段中的内存段设置内存延迟迁移标记。将不带有所述内存延迟迁移标记的内存段的数据迭代迁移至第二虚拟机,直至所有内存段的数据量之和小于设定值时,对第一虚拟机进行停机迁移。其中,热度值表征对应的内存段中的脏页数量。本实施例基于第一虚拟机的每个内存段的热度值,为其中的热点内存段设置内存延迟迁移标记,在增量迭代迁移时,带有内存延迟迁移标记的内存段的数据先不迁移,只将不带有内存延迟迁移标记的内存段的数据迭代迁移至第二虚拟机,从而避免热点内存段中数据的多次无效迁移,可以减低内存迁移数据量,缩短迁移时间,提高第一虚拟机的迁移效率。相比现有技术,由于本实施例只需要迁移不带有内存延迟迁移标记的内存段的数据,本实施例占用的虚拟机资源更少,可以避免虚拟机资源浪费。
在一实施例中,所述对所述第一虚拟机进行停机迁移,包括:
停止运行所述第一虚拟机;
将所有内存段中的数据和所述第一虚拟机的硬件设备状态数据迁移至所述第二虚拟机。
首先,停止运行所述第一虚拟机,这是为了使第一虚拟机的内存停止数据变更。
然后,将第一虚拟机的硬件设备状态数据和所有内存段中的数据迁移至第二虚拟机,这是为了使得第二虚拟机的硬件配置和设备状态与第一虚拟机完全一致,以便第一虚拟机迁移后能够成功运行。
在一实施例中,在基于所述第一虚拟机的至少两个内存段的每个内存段的热度值,为所述至少两个内存段中的内存段设置内存延迟迁移标记之前,所述方法还包括:
根据每个内存段中的缓存页的标签属性,确定每个内存段中的脏页数量;
基于每个内存段的脏页数量,确定每个内存段的热度值。
对于内存段中的缓存页(page cache),脏页会被虚拟机打上标签,标记为脏(dirty),因此根据缓存页的标签属性可以确定缓存页是不是脏页,统计内存段中所有缓存页的标签属性,得到每个内存段中的脏页数量。
在本实施例中,将脏页数量作为内存段的热度值。内存段中的脏页数量越多,说明第一虚拟机频繁对该内存段进行读写操作,该内存段是热点内存段。
如图9所示,图9所示的总内存划分了22个内存段,每个内存段中的数字就是脏页数量,其中脏页数量为90的内存段就是热点内存段,可以为该内存段设置内存延迟迁移标记。
在一实施例中,基于所述第一虚拟机上部署的业务的业务类型,确定所述至少两个内存段的每个内存段的大小;
根据所述至少两个内存段的每个内存段的大小,将所述第一虚拟机的内存划分为至少两个内存段。
本实施例可以根据第一虚拟机上部署的业务的业务类型,确定划分的内存段的大小。
例如,可以根据业务的耗时长短来确定划分的内存段的大小,不同的耗时对应不同的内存段大小,耗时与内存段大小存在对应关系,可以根据耗时获取对应的内存段大小。
例如,耗时越长,内存段的容量越大;耗时越短,内存段的容量越小。对于耗时短(耗时小于设定时长)的业务类型,可以将第一虚拟机的内存划分为小容量(容量为第一设定值)的内存段;对于耗时长(耗时大于或等于设定时长)的业务类型,可以将第一虚拟机的内存划分为大容量(容量为第二设定值)的内存段。其中,第二设定值大于第一设定值。
在实际应用中,如果第一虚拟机上部署的业务是办公自动化(OfficeAutomation,OA)系统、数据库等固定的业务,则内存段的大小可以设置的较大。如果第一虚拟机上部署的业务是编译服务器等耗时较短的业务,则内存段的大小可以设置的较小。此外,可以针对每种业务类型设置一个内存段大小。本实施例针对不同业务类型设置不同的内存段大小,能够获得更好的优化效果,有助于内存数据迁移。
参考图10,在一实施例中,所述基于所述第一虚拟机的至少两个内存段的每个内存段的热度值,为所述至少两个内存段中的内存段设置内存延迟迁移标记,包括:
S1001,基于所述热度值的大小对所述至少两个内存段进行排序,得到排序结果。
S1002,根据所述排序结果,为所述至少两个内存段中的内存段设置内存延迟迁移标记。
根据热度值的大小对所有内存段进行排序,根据排序结果为内存段设置内存延迟迁移标记。例如,可以为排序结果中排名前列(比如前5)的若干个内存段设置内存延迟迁移标记。或者设置一个比例,根据比例从排序结果中选择内存段设置内存延迟迁移标记。
在上述实施例中,所述根据所述排序结果,为所述至少两个内存段中的内存段设置内存延迟迁移标记,包括:
在所述排序结果中,从最大热度值的内存段开始依次选取内存段设置内存延迟迁移标记,直至设置有内存延迟迁移标记的内存段占所述至少两个内存段的比例达到设定比例。合理设置设定比例,有利于提高内存迁移效率。
这里,在虚拟机迁移过程中,设定比例可以动态调整。设定比例指设置有内存延迟迁移标记的内存段的数量占所有内存段数量的比值,比如,设定比例为50%,就是说设置有内存延迟迁移标记的内存段的数量是占所有内存段数量的一半。
在排序结果中,按照热度值从高到低选取内存段,为其设置内存延迟迁移标记,设置有内存延迟迁移标记的内存段占至少两个内存段的比例为设定比例。
假设第一虚拟机总内存是100G,把第一虚拟机总内存分为10个内存段,每个内存段的大小为10G,统计到的各内存段的热度值如下表1所示。
表1
对各内存段的热度值从大到小进行排序,根据设定比例,为热度值最高的若干个内存段设置延迟迁移标记。假设内存延迟迁移的设定比例设为50%,则各内存段的延迟迁移标记如下表2所示。
表2
内存段编号 | 内存段大小 | 内存段热度值 | 设置延迟迁移标记 |
10 | 10G | 40 | 是 |
9 | 10G | 35 | 是 |
7 | 10G | 30 | 是 |
6 | 10G | 25 | 是 |
4 | 10G | 20 | 是 |
3 | 10G | 17 | 否 |
2 | 10G | 10 | 否 |
8 | 10G | 8 | 否 |
1 | 10G | 5 | 否 |
5 | 10G | 4 | 否 |
在一实施例中,所述基于所述第一虚拟机的至少两个内存段的每个内存段的热度值,为所述至少两个内存段中的内存段设置内存延迟迁移标记,包括:
确定所述第一虚拟机上部署的业务的业务类型;
若所述业务类型为第一类型,则将第一次迭代迁移时为所述至少两个内存段中的内存段设置的内存延迟迁移标记,确定为后续每一次迭代迁移时对应的内存段的内存延迟迁移标记;
若所述业务类型为第二类型,则在每一次迭代迁移时重新根据所述至少两个内存段的每个内存段的热度值,为所述至少两个内存段中的内存段设置内存延迟迁移标记。
例如,可以在第一虚拟机的GUEST系统中部署agent插件来感知GUEST系统所承载的业务,GUEST系统是运行在第一虚拟机上的客户操作系统,是虚拟机云服务的重要组成部分。agent插件是GUEST系统中的一个进程,可以用于获取GUEST系统上运行的业务的业务类型。
还可以通过特定脚本或特定命令来检测第一虚拟机上部署的业务,例如,可以使用virt-what脚本来进行检测,virt-what是一个Shell脚本,它可以检测出QEMU/KVM、VMware、Hyper-V、VirtualBox、OpenVZ/Virtuozzo、Xen、LXC、IBM PowerVM以及Parallels等平台类型,以及检测出平台上部署的业务。还可以使用systemd-detect-virt命令来进行检测,该命令可以同时检测到基于hypervisor的虚拟化技术(例如KVM、QEMU、VMware、Xen、OracleVM、VirtualBox和UML)和基于容器的虚拟化技术(例如LXC、Docker和OpenVZ)。
根据GUEST系统所承载的业务的业务类型,可以选择不同的的方法来为内存段设置内存延迟迁移标记。如果业务类型是第一类型,例如,第一类型指数据库、OA系统等比较固定的业务,热点内存段的位置相对比较固定,因此可以将第一次迭代迁移时为内存段设置的内存延迟迁移标记,固定为后续每一次迭代迁移时对应的内存段的内存延迟迁移标记。也就是将热点内存段固定,后续迭代迁移时热点内存段不再发生改变。
如果业务类型是第二类型,例如,第二业务类型是编译服务器,编译服务器会被很多用户同时使用,执行的都是一些耗时很短的短任务,热点内存段的位置可能会随机变换,所以需要在每一轮迭代迁移时重新确定热点内存段,重新为内存段设置内存延迟迁移标记。
在实际应用中,可以对外提供查询接口,能够实时查询每个内存段的热度值。
在实际业务场景中,ORACLE虚拟机、1000用户、5000tps的压力测试场景下,本实施例可以将热迁移耗时从120秒减少到85秒,迁移内存总量从117G减少到75G。可见,本实施例可以大幅降低虚拟机的热迁移耗时,减少内存迁移数据量,提高迁移效率。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
需要说明的是,本发明实施例所记载的技术方案之间,在不冲突的情况下,可以任意组合。
另外,在本发明实施例中,“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
参考图11,图11是本发明实施例提供的一种虚拟机迁移装置的示意图,如图11所示,该装置包括:
设置模块,用于若第一虚拟机的内存热迁移进入增量迭代迁移阶段,基于所述第一虚拟机的至少两个内存段的每个内存段的热度值,为所述至少两个内存段中的内存段设置内存延迟迁移标记;所述热度值表征对应的内存段中的脏页数量;
第一迁移模块,用于将不带有所述内存延迟迁移标记的内存段中的数据迭代迁移至第二虚拟机,直至所有内存段的数据量之和小于设定值;
第二迁移模块,用于在所有内存段的数据量之和小于设定值时,对所述第一虚拟机进行停机迁移。
在一实施例中,所述设置模块基于所述第一虚拟机的至少两个内存段的每个内存段的热度值,为所述至少两个内存段中的内存段设置内存延迟迁移标记,包括:
基于所述热度值的大小对所述至少两个内存段进行排序,得到排序结果;
根据所述排序结果,为所述至少两个内存段中的内存段设置内存延迟迁移标记。
在一实施例中,所述设置模块根据所述排序结果,为所述至少两个内存段中的内存段设置内存延迟迁移标记,包括:
在所述排序结果中,从最大热度值的内存段开始依次选取内存段设置内存延迟迁移标记,直至设置有内存延迟迁移标记的内存段占所述至少两个内存段的比例达到设定比例。
在一实施例中,所述装置还包括:
确定模块,用于根据每个内存段中的缓存页的标签属性,确定每个内存段中的脏页数量;基于每个内存段的脏页数量,确定每个内存段的热度值。
在一实施例中,所述设置模块基于所述第一虚拟机的至少两个内存段的每个内存段的热度值,为所述至少两个内存段中的内存段设置内存延迟迁移标记,包括:
确定所述第一虚拟机上部署的业务的业务类型;
若所述业务类型为第一类型,则将第一次迭代迁移时为所述至少两个内存段中的内存段设置的内存延迟迁移标记,确定为后续每一次迭代迁移时对应的内存段的内存延迟迁移标记;
若所述业务类型为第二类型,则在每一次迭代迁移时重新根据所述至少两个内存段的每个内存段的热度值,为所述至少两个内存段中的内存段设置内存延迟迁移标记。
在一实施例中,所述装置还包括:
划分模块,用于基于所述第一虚拟机上部署的业务的业务类型,确定所述至少两个内存段的每个内存段的大小;根据所述至少两个内存段的每个内存段的大小,将所述第一虚拟机的内存划分为至少两个内存段。
在一实施例中,所述第二迁移模块对所述第一虚拟机进行停机迁移,包括:停止运行所述第一虚拟机;将所有内存段中的数据和所述第一虚拟机的硬件设备状态数据迁移至所述第二虚拟机。
实际应用时,所述设置模块、第一迁移模块和第二迁移模块可通过数据处理设备中的处理器,比如中央处理器(CPU,Central Processing Unit)、数字信号处理器(DSP,Digital Signal Processor)、微控制单元(MCU,Microcontroller Unit)或可编程门阵列(FPGA,Field-Programmable GateArray)等实现。
需要说明的是:上述实施例提供的虚拟机迁移装置在进行虚拟机迁移时,仅以上述各模块的划分进行举例说明,实际应用中,可以根据需要而将上述处理分配由不同的模块完成,即将装置的内部结构划分成不同的模块,以完成以上描述的全部或者部分处理。另外,上述实施例提供的虚拟机迁移装置与虚拟机迁移方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
上述虚拟机迁移装置可以是镜像文件形式,该镜像文件被执行后,可以以容器或者虚拟机的形式运行,以实现本申请所述的虚拟机迁移方法。当然也不局限为镜像文件形式,只要能够实现本申请所述的虚拟机迁移方法的一些软件形式都在本申请的保护范围之内。
基于上述程序模块的硬件实现,且为了实现本申请实施例的方法,本申请实施例还提供了一种数据处理设备。图12为本申请实施例数据处理设备的硬件组成结构示意图,如图12所示,数据处理设备包括:
通信接口,能够与其它设备比如网络设备等进行信息交互;
处理器,与所述通信接口连接,以实现与其它设备进行信息交互,用于运行计算机程序时,执行上述数据处理设备侧一个或多个技术方案提供的方法。而所述计算机程序存储在存储器上。
当然,实际应用时,数据处理设备中的各个组件通过总线系统耦合在一起。可理解,总线系统用于实现这些组件之间的连接通信。总线系统除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图12中将各种总线都标为总线系统。
上述数据处理设备可以是集群形式,比如是云计算平台形式,所谓云计算平台是采用计算虚拟化、网络虚拟化、存储虚拟化技术把多个独立的服务器物理硬件资源组织成池化资源的一种业务形态,它是一种基于虚拟化技术发展基础上软件定义资源的结构,可以提供虚拟机、容器等形态的资源能力。通过消除硬件与操作系统之间的固定关系,依赖网络的连通统一资源调度,然后提供所需要的虚拟资源和服务,是一种新型的IT,软件交付模式,具备灵活,弹性,分布式,多租户,按需等特点。
目前的云计算平台支持几种服务模式:
SaaS(Software as a Service,软件即服务):云计算平台用户无需购买软件,而改为租用部署于云计算平台的软件,用户无需对软件进行维护,软件服务提供商会全权管理和维护软件;
PaaS(Platform as a Service,平台即服务):云计算平台用户(此时通常为软件开发商)可以在云计算平台提供的架构上建设新的应用,或者扩展已有的应用,同时却不必购买开发、质量控制或生产服务器;
IaaS(Infrastructure as a Service,基础架构即服务):云计算平台通过互联网提供了数据中心、基础架构硬件和软件资源,IaaS模式下的云计算平台可以提供服务器、操作系统、磁盘存储、数据库和/或信息资源。
本申请实施例中的存储器用于存储各种类型的数据以支持数据处理设备的操作。这些数据的示例包括:用于在数据处理设备上操作的任何计算机程序。
可以理解,存储器可以是易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(ROM,Read OnlyMemory)、可编程只读存储器(PROM,Programmable Read-Only Memory)、可擦除可编程只读存储器(EPROM,Erasable Programmable Read-Only Memory)、电可擦除可编程只读存储器(EEPROM,Electrically Erasable Programmable Read-Only Memory)、磁性随机存取存储器(FRAM,ferromagnetic random access memory)、快闪存储器(Flash Memory)、磁表面存储器、光盘、或只读光盘(CD-ROM,CompactDisc Read-Only Memory);磁表面存储器可以是磁盘存储器或磁带存储器。易失性存储器可以是随机存取存储器(RAM,RandomAccessMemory),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(SRAM,Static RandomAccess Memory)、同步静态随机存取存储器(SSRAM,Synchronous Static RandomAccess Memory)、动态随机存取存储器(DRAM,Dynamic RandomAccess Memory)、同步动态随机存取存储器(SDRAM,Synchronous DynamicRandomAccess Memory)、双倍数据速率同步动态随机存取存储器(DDRSDRAM,DoubleDataRate Synchronous Dynamic RandomAccess Memory)、增强型同步动态随机存取存储器(ESDRAM,Enhanced Synchronous Dynamic RandomAccess Memory)、同步连接动态随机存取存储器(SLDRAM,SyncLink Dynamic RandomAccess Memory)、直接内存总线随机存取存储器(DRRAM,Direct Rambus RandomAccess Memory)。本申请实施例描述的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
上述本申请实施例揭示的方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器、DSP,或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。处理器可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤,可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于存储介质中,该存储介质位于存储器,处理器读取存储器中的程序,结合其硬件完成前述方法的步骤。
可选地,所述处理器执行所述程序时实现本申请实施例的各个方法中由数据处理设备实现的相应流程,为了简洁,在此不再赘述。
在示例性实施例中,本申请实施例还提供了一种存储介质,即计算机存储介质,具体为计算机可读存储介质,例如包括存储计算机程序的第一存储器,上述计算机程序可由数据处理设备的处理器执行,以完成前述方法所述步骤。计算机可读存储介质可以是FRAM、ROM、PROM、EPROM、EEPROM、Flash Memory、磁表面存储器、光盘、或CD-ROM等存储器。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置、数据处理设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本申请各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是,本申请实施例所记载的技术方案之间,在不冲突的情况下,可以任意组合。
另外,在本申请实例中,“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种虚拟机迁移方法,其特征在于,包括:
若第一虚拟机的内存热迁移进入增量迭代迁移阶段,基于所述第一虚拟机的至少两个内存段的每个内存段的热度值,为所述至少两个内存段中的内存段设置内存延迟迁移标记;所述热度值表征对应的内存段中的脏页数量;
将不带有所述内存延迟迁移标记的内存段中的数据迭代迁移至第二虚拟机,直至所有内存段的数据量之和小于设定值;
在所有内存段的数据量之和小于设定值时,对所述第一虚拟机进行停机迁移。
2.如权利要求1所述的方法,其特征在于,所述基于所述第一虚拟机的至少两个内存段的每个内存段的热度值,为所述至少两个内存段中的内存段设置内存延迟迁移标记,包括:
基于所述热度值的大小对所述至少两个内存段进行排序,得到排序结果;
根据所述排序结果,为所述至少两个内存段中的内存段设置内存延迟迁移标记。
3.如权利要求2所述的方法,其特征在于,所述根据所述排序结果,为所述至少两个内存段中的内存段设置内存延迟迁移标记,包括:
在所述排序结果中,从最大热度值的内存段开始依次选取内存段设置内存延迟迁移标记,直至设置有内存延迟迁移标记的内存段占所述至少两个内存段的比例达到设定比例。
4.如权利要求1所述的方法,其特征在于,在基于所述第一虚拟机的至少两个内存段的每个内存段的热度值,为所述至少两个内存段中的内存段设置内存延迟迁移标记之前,所述方法还包括:
根据每个内存段中的缓存页的标签属性,确定每个内存段中的脏页数量;
基于每个内存段的脏页数量,确定每个内存段的热度值。
5.如权利要求1所述的方法,其特征在于,所述基于所述第一虚拟机的至少两个内存段的每个内存段的热度值,为所述至少两个内存段中的内存段设置内存延迟迁移标记,包括:
确定所述第一虚拟机上部署的业务的业务类型;
若所述业务类型为第一类型,则将第一次迭代迁移时为所述至少两个内存段中的内存段设置的内存延迟迁移标记,确定为后续每一次迭代迁移时对应的内存段的内存延迟迁移标记;
若所述业务类型为第二类型,则在每一次迭代迁移时重新根据所述至少两个内存段的每个内存段的热度值,为所述至少两个内存段中的内存段设置内存延迟迁移标记。
6.如权利要求1所述的方法,其特征在于,在为所述至少两个内存段中的内存段设置内存延迟迁移标记之前,所述方法还包括:
基于所述第一虚拟机上部署的业务的业务类型,确定所述至少两个内存段的每个内存段的大小;
根据所述至少两个内存段的每个内存段的大小,将所述第一虚拟机的内存划分为至少两个内存段。
7.如权利要求1所述的方法,其特征在于,所述对所述第一虚拟机进行停机迁移,包括:
停止运行所述第一虚拟机;
将所有内存段中的数据和所述第一虚拟机的硬件设备状态数据迁移至所述第二虚拟机。
8.一种虚拟机迁移装置,其特征在于,包括:
设置模块,用于若第一虚拟机的内存热迁移进入增量迭代迁移阶段,基于所述第一虚拟机的至少两个内存段的每个内存段的热度值,为所述至少两个内存段中的内存段设置内存延迟迁移标记;所述热度值表征对应的内存段中的脏页数量;
第一迁移模块,用于将不带有所述内存延迟迁移标记的内存段中的数据迭代迁移至第二虚拟机,直至所有内存段的数据量之和小于设定值;
第二迁移模块,用于在所有内存段的数据量之和小于设定值时,对所述第一虚拟机进行停机迁移。
9.一种数据处理设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7任一项所述的虚拟机迁移方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如权利要求1至7任一项所述虚拟机迁移方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211679344.0A CN115904630A (zh) | 2022-12-26 | 2022-12-26 | 一种虚拟机迁移方法、装置、数据处理设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211679344.0A CN115904630A (zh) | 2022-12-26 | 2022-12-26 | 一种虚拟机迁移方法、装置、数据处理设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115904630A true CN115904630A (zh) | 2023-04-04 |
Family
ID=86493790
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211679344.0A Pending CN115904630A (zh) | 2022-12-26 | 2022-12-26 | 一种虚拟机迁移方法、装置、数据处理设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115904630A (zh) |
-
2022
- 2022-12-26 CN CN202211679344.0A patent/CN115904630A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5657121B2 (ja) | 仮想マシンのオンデマンド型イメージ・ストリーミング | |
US10691341B2 (en) | Method for improving memory system performance in virtual machine systems | |
US9218343B2 (en) | Partition file system for virtual machine memory management | |
ES2734248T3 (es) | Procedimiento para bifurcar o migrar una máquina virtual | |
US11669388B2 (en) | Managing the migration of virtual machines in the presence of uncorrectable memory errors | |
JP5778296B2 (ja) | 仮想計算機システム、仮想化機構、及びデータ管理方法 | |
KR102223141B1 (ko) | 컨테이너 환경에서의 스토리지 드라이버의 동작 방법 및 스토리지 드라이버 장치 | |
CN114138405A (zh) | 一种虚拟机创建方法、装置及电子设备和存储介质 | |
CN115543530A (zh) | 一种虚拟机迁移方法以及相关装置 | |
CN104685443A (zh) | 锁定引导数据用以更快引导 | |
WO2020177567A1 (zh) | 一种迁移数据的方法、装置及系统 | |
US8751760B2 (en) | Systems and methods for power state transitioning in an information handling system | |
US9158550B2 (en) | Caching based operating system installation | |
CN113791873A (zh) | 一种虚拟机创建方法、计算设备及存储介质 | |
WO2023165308A1 (zh) | 一种内存回收方法、装置及控制设备 | |
Caldwell et al. | Fluidmem: Memory as a service for the datacenter | |
CN115904630A (zh) | 一种虚拟机迁移方法、装置、数据处理设备及存储介质 | |
US20220129292A1 (en) | Fast virtual machine resume at host upgrade | |
Nakashima et al. | File Placing Control for Improving the I/O Performance of Hadoop in Virtualized Environment | |
US20200174814A1 (en) | Systems and methods for upgrading hypervisor locally | |
US11977785B2 (en) | Non-volatile memory device-assisted live migration of virtual machine data | |
CN113918284B (zh) | 云主机批量迁移的方法及装置、电子设备和存储介质 | |
US20230060835A1 (en) | Method and apparatus for setting memory, and electronic device and storage medium | |
US11442668B2 (en) | Prioritizing volume accesses in multi-volume storage device based on execution path of a service | |
US8799616B2 (en) | Method and system for preferred CPU binding on virtual partitions |
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 |