CN108037980B - 控制执行虚拟机热迁移的方法、装置和可读存储介质 - Google Patents

控制执行虚拟机热迁移的方法、装置和可读存储介质 Download PDF

Info

Publication number
CN108037980B
CN108037980B CN201810001805.6A CN201810001805A CN108037980B CN 108037980 B CN108037980 B CN 108037980B CN 201810001805 A CN201810001805 A CN 201810001805A CN 108037980 B CN108037980 B CN 108037980B
Authority
CN
China
Prior art keywords
memory
virtual machine
memory page
page data
host
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
Application number
CN201810001805.6A
Other languages
English (en)
Other versions
CN108037980A (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.)
Tencent Technology Shenzhen Co Ltd
Tencent Cloud Computing Beijing Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Tencent Cloud Computing Beijing 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 Tencent Technology Shenzhen Co Ltd, Tencent Cloud Computing Beijing Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201810001805.6A priority Critical patent/CN108037980B/zh
Publication of CN108037980A publication Critical patent/CN108037980A/zh
Application granted granted Critical
Publication of CN108037980B publication Critical patent/CN108037980B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明揭示了一种控制执行虚拟机热迁移的方法、装置和计算机可读存储介质。所述方法包括:从虚拟机所对应宿主机虚拟化进程查找宿主机虚拟内存区域;按照指定时间间隔迭代获得所述宿主机虚拟内存区域映射的内存页面数据;根据所述对应于相同内存页面的内存页面数据比较,获得所述虚拟机的内存变化率;根据所述内存变化率控制所述虚拟机热迁移操作的执行。由于是根据虚拟机的内存变化率而控制虚拟机热迁移操作的执行,因此能够达到适当的时机才执行虚拟机热迁移操作,避免虚拟机所使用的某些内存区域发生非常快的更新时执行虚拟机热迁移操作,进而使得虚拟机热迁移过程可控性强,不再发生迁移时间过长的情况,保证虚拟机热迁移的成功性。

Description

控制执行虚拟机热迁移的方法、装置和可读存储介质
技术领域
本发明涉及计算机应用技术领域,特别涉及一种控制执行虚拟机热迁移的方法、装置和计算机可读存储介质。
背景技术
随着虚拟化技术的不断发展,虚拟机的应用也越来越广泛。日常应用中可能出现资源不足,系统管理调整或者系统备份等原因,希望将某一虚拟机从原来物理主机迁移到另一个物理主机上。
虚拟机迁移的实现,所支持的迁移方式包括虚拟机热迁移。在KVM(Kernel-basedVirtual Machine)这一虚拟化工具的虚拟化实现下,采用了主流的预拷贝技术来完成虚拟机热迁移。采用预拷贝技术而执行的虚拟机热迁移过程主要是通过多轮内存内容发送的进行,将源虚拟机的内存内容发送到目的虚拟机,并最终进入停机拷贝阶段。
具体而言,首先在第一轮中发送所有的内存页数据到目的虚拟机,然后在接下来的每一轮发送中,都发送上一轮内存页数据中被虚拟机写过的脏页。而在停机拷贝阶段,源虚拟机停止执行且内存也不会被更新,在停机期间最后一轮将所有的脏页传输到目的虚拟机。
预拷贝技术的采用将极大减小热迁移过程中的停机时间。但是,虚拟机中某些内存区域可能存在着非常快的更新,这将相应导致了每一轮都会产生很多的脏页,进而造成虚拟机热迁移过程中循环次数过多且迁移时间过长,例如,每一轮都需要耗费的时间以及所需要的停机时间过长,从而使得整个虚拟机热迁移所耗费的时间非常多,由此也将导致虚拟机热迁移的失败。
即便利用了预拷贝技术也无法保证虚拟机热迁移的成功性,存在着虚拟机热迁移过程不可控的局限性。
系统的迁移是指把源主机上的操作系统和应用程序移动到目的主机,并且能够在目的主机上正常运行。在没有虚拟机的时代,物理机之间的迁移依靠的是系统备份和恢复技术。在源主机上实时备份操作系统和应用程序的状态,然后把存储介质连接到目标主机上,最后在目标主机上恢复系统。随着虚拟机技术的发展,系统的迁移更加灵活和多样化。
发明内容
为了解决相关技术中虚拟机热迁移过程不可控的技术问题,本发明提供了一种控制执行虚拟机热迁移的方法、装置和计算机可读存储介质。
一种控制执行虚拟机热迁移的方法,所述方法包括:
从虚拟机所对应宿主机虚拟化进程查找宿主机虚拟内存区域;
按照指定时间间隔迭代获得所述宿主机虚拟内存区域映射的内存页面数据;
根据所述对应于相同内存页面的内存页面数据比较,获得所述虚拟机的内存变化率;
根据所述内存变化率控制所述虚拟机热迁移操作的执行。
一种控制执行虚拟机热迁移的装置,所述装置包括:
区域查找模块,用于从虚拟机所对应宿主机虚拟化进程查找宿主机虚拟内存区域;
读取模块,用于按照指定时间间隔迭代获得所述宿主机虚拟内存区域映射的内存页面数据;
比较模块,用于根据所述对应于相同内存页面的内存页面数据比较,获得所述虚拟机的内存变化率;
执行控制模块,用于根据所述内存变化率控制所述虚拟机热迁移操作的执行。
一种控制执行虚拟机热迁移的装置,包括:
处理器;以及
存储器,所述存储器上存储有计算机可读指令,所述计算机可读指令被所述处理器执行时实现如前所述的方法。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如前所述的方法。
本发明的实施例提供的技术方案可以包括以下有益效果:
在需要进行虚拟机热迁移时,首先从虚拟机所对应宿主机虚拟化进程查找宿主机虚拟内存区域,然后按照指定时间间隔迭代获得宿主机虚拟内存区域映射的内存页面数据,在此迭代下进行对应于相同内存页面的内存页面数据比较,获得虚拟机的内存变化率,最后即可根据内存变化率控制虚拟机热迁移操作的执行,由于是根据虚拟机的内存变化率而控制虚拟机热迁移操作的执行,因此能够达到适当的时机才执行虚拟机热迁移操作,避免虚拟机所使用的某些内存区域发生非常快的更新时执行虚拟机热迁移操作,进而使得虚拟机热迁移过程可控性强,不再发生迁移时间过长的情况,保证虚拟机热迁移的成功性。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本发明。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并于说明书一起用于解释本发明的原理。
图1是根据一示例性实施例示出的本发明所涉及的实施环境的示意图;
图2是根据一示例性实施例示出的一种装置的框图;
图3是根据一示例性实施例示出的一种控制执行虚拟机热迁移的方法的流程图;
图4是根据图3对应实施例示出的对步骤330的细节进行描述的流程图;
图5是根据图4对应实施例示出的对步骤331的细节进行描述的流程图;
图6是根据图3对应实施例示出的对步骤350的细节进行描述的流程图;
图7是根据图3对应实施例示出的对步骤370的细节进行描述的流程图;
图8是根据一示例性实施例示出的KVM虚拟化架构下客户机物理地址空间的模拟实现示意图;
图9是根据一示例性实施例示出的虚拟机执行内存访问操作而实现物理内存访问的示意图;
图10是根据一示例性实施例示出的宿主机qemu-kvm进程为虚拟机进行的物理内存模拟示意图;
图11是根据一示例性实施例示出的虚拟机热迁移执行控制的应用示意图;
图12是根据一示例性实施例示出的一种控制执行虚拟机热迁移的装置的框图;
图13是根据图12所对应实施例示出的对读取模块的细节进行描述的框图;
图14是根据图13对应实施例示出的对内容读取单元的细节进行描述的框图;
图15是根据图12对应实施例示出的对比较模块的细节进行描述的框图;
图16是根据图12对应实施例示出的对执行控制模块的细节进行描述的框图。
具体实施方式
这里将详细地对示例性实施例执行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
图1是根据一示例性实施例示出的本发明所涉及的实施环境的示意图。本发明所涉及的实施环境,至少包括源主机110和目的主机130。
源主机110是虚拟机对应的宿主机,通过源主机110所构建的虚拟化环境实现虚拟机的运行,并通过虚拟化工具的运行为虚拟机实现CPU和内存虚拟化。由此,虚拟机热迁移的实现,是在源主机110的作用下实现的。
目的主机130是相对于源主机110而言的,目的主机130也将构建虚拟化环境而实现目的虚拟机的运行,此目的虚拟机即为源主机110上虚拟机进行内存内容迁移的目标。
至此,即可在虚拟机上的某些服务故障停机时,可以自动切换至目的主机130所运行的目的虚拟机,从而达到不中断服务的目的,进而简化虚拟机上系统维护管理,提高负载均衡能力,增强错误容忍度。
图2是根据一示例性实施例示出的一种装置200的框图。装置200可以是搭载任一可以作用宿主机的机器,例如,服务器。
参见图2,该装置200可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(central processing units,CPU)222(例如,一个或一个以上处理器)和存储器232,一个或一个以上存储应用程序242或数据244的存储介质230(例如一个或一个以上海量存储设备)。其中,存储器232和存储介质230可以是短暂存储或持久存储。存储在存储介质230的程序可以包括一个或一个以上模块(图示未示出),每个模块可以包括对装置200中的一系列指令操作。更进一步地,中央处理器222可以设置为与存储介质230通信,在装置200上执行存储介质230中的一系列指令操作。装置200还可以包括一个或一个以上电源226,一个或一个以上有线或无线网络接口250,一个或一个以上输入输出接口258,和/或,一个或一个以上操作系统241,例如WindowsServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。上述图3、图4、图5、图6和图7所示实施例中执行的步骤可以基于该图2所示的装置结构。
图3是根据一示例性实施例示出的一种控制执行虚拟机热迁移的方法的流程图。该控制执行虚拟机热迁移的方法在一个示例性实施例中可以由图2所示的装置执行,如图3所示,至少包括以下步骤。
在步骤310中,从虚拟机所对应宿主机虚拟化进程查找宿主机虚拟内存区域。
其中,虚拟机是宿主机所实现的虚拟化场景,换而言之,虚拟机是运行于宿主机通过虚拟化工具而构建的虚拟化环境中的。例如,此虚拟化工具可为KVM,进而构建KVM虚拟化架构这一虚拟化环境,其是运行于Linux操作系统内核中的一虚拟化框架,将为虚拟机实现了内存虚拟化和CPU虚拟化。
应当理解,宿主机将为虚拟机提供可供使用的物理资源,例如,各种硬件的调用。因此,虚拟机所产生内存操作的机器指令是在宿主机的物理内存上执行的,也就是说,虚拟机所进行的内存访问,是针对于宿主机的物理内存实现的。
因此,对于虚拟机所产生内存操作的机器指令,将被所在虚拟化环境对应的虚拟化工具所捕获,通过虚拟化工具运行此机器指令,或者根据此机器指令所指示内存操作访问的虚拟地址进行物理地址的转换方能够完成此机器指令。
在此应当补充说明的是,虚拟化工具的运行,有其所对应的宿主机虚拟化进程,以此方能够在宿主机虚拟化进程的作用下为虚拟机实现虚拟化环境,以及在此虚拟化环境下虚拟机所对应内存虚拟化和CPU虚拟化的实现。
宿主机虚拟化进程,与其它进程相类似的,都有着自身所独立的内存空间,即宿主机虚拟内存区域。宿主机虚拟内存空间是为宿主机虚拟化进程所分配的内存空间,并且与物理内存空间存在着映射,每次需要访问宿主机虚拟内存区域中的某个地址时,此地址为宿主机虚拟地址,都需要将其转换为实际的物理内存地址,即相对于宿主机虚拟地址而言的宿主机物理地址。
在一个示例性实施例中,此宿主机虚拟化进程为qemu进程,例如,在KVM虚拟化架构下,qemu进程即为qemu-kvm进程。
综上所述的,虚拟化工具所对应宿主机虚拟化进程,将为虚拟机实现物理内存的访问,即执行虚拟机所对应的内存访问操作。而虚拟机迁移的进行,用于将虚拟机中的操作系统和应用程序都移动到目的虚拟机,其所对应的镜像都是存储于宿主机虚拟化进程所对应宿主机虚拟内存区域映射的物理内存的,为此,需要查找到宿主机虚拟内存区域,以便于得以映射至所需要执行迁移操作的物理内存。
基于此,在虚拟机需要执行迁移之时,即可从所对应的宿主机虚拟化进程来进行所对应虚拟内存的查找,进而获得虚拟机在宿主机所对应的宿主机虚拟内存区域。
在步骤330中,按照指定时间间隔迭代获得宿主机虚拟内存区域映射的内存页面数据。
其中,如前所述的,宿主机虚拟内存区域映射着物理内存中的部分区域,所映射的物理内存中部分区域将实现了虚拟机所运行操作系统及应用程序的相关数据存储。
物理内存通过分布机制而被划分为若干内存页面,通过内存页面实现数据的存储,进而相应形成若干内存页面数据。换而言之,查找得到的宿主机虚拟内存区域是映射至内存页面数据的。由此,宿主机虚拟内存区域所映射的物理内存中部分区域,存在着若干内存页面数据,并且通过虚拟机所触发内存操作的机器指令的执行,而不断使得内存页面数据发生更新。
指定时间间隔用于控制感知所存在脏页的间隔时长。对于宿主机虚拟内存区域映射的物理内存而言,指定时间间隔表征进行所存在脏页数量感知的等待时间。在一个示例性实施例的具体实现中,在指定时间间隔的作用下所进行的迭代是二次迭代的执行过程。
至此,即可在指定时间间隔下两次获取宿主机虚拟内存区域映射的内存页面数据,进而以两次获取的内存页面数据为依据,确定在指定时间间隔下产生的脏页以及脏页数量,除此之外,也将获得宿主机虚拟内存区域所映射的内存页面数量。
应当理解,内存页面数据是唯一对应于内存页面的,通过所进行的迭代也将在指定时间间隔下先后获得对应于相同内存页面的内存页面数据。
在步骤350中,根据对应于相同内存页面的内存页面数据比较,获得虚拟机的内存变化率。
其中,虚拟机的内存变化率,用于指示虚拟机所映射物理内存中发生数据更新的规模大小。虚拟机的内存变化率越大,则说明虚拟机触发内存操作而发生更新的数据规模越大;虚拟机的内存变化率越小,则说明虚拟机触发内存操作而发生更新的数据规模越小。
需通过指定时间间隔前后所虚拟机在物理内存所对应数据存储情况比较,相对于宿主机虚拟内存区域所映射的所有内存页面,获知发生数据更新的内存页面,进而以此为依据相应运算得到此虚拟机的内存变化率。
也就是说,对于仅仅是所对应的时间不同,即在时间上相互之间间隔了指定时间间隔,但是所对应内存页面相同的内存页面数据之后,比较二者之间是否并不相同,如果二者之间并不相同,则定位得到发生数据更新的内存页面,以此类推,即可获得宿主机虚拟内存区域映射的所有内存页面中发生数据更新的内存页面,进而即可运算得到此虚拟机的内存变化率。
应当理解,物理内存是在分页机制下以页为单位进行存储的,因此,对于为虚拟机所进行的数据比较而言,也将是以页为单位进行的,以与物理内存的实现相适应,进而保证当前所进行虚拟机热迁移操作的时机感知准确性和灵敏性,并且也保证了数据比较的准确性和简易性。
在步骤370中,根据内存变化率控制虚拟机热迁移操作的执行。
其中,虚拟机热迁移操作,作为内存操作的一种,也将是在宿主机的物理内存上执行的,具体而言,是针对于存储于物理内存中虚拟机所搭载操作系统和应用程序的镜像而执行的。
与之相对应的,虚拟机热迁移操作的执行中,必然涉及网络传输,即需要由所在的宿主机,即图1所示实施环境中的源主机110经过网络传输而将操作系统和应用程序的镜像拷贝复制至目的主机130,因此,对于虚拟机热迁移过程而言,需要依赖于虚拟机在物理内存所存储的数据量以及在此期间而更新的数据量、网络传输带宽等因素,所涉及拷贝复制过程往往由于所需要传输的数据量巨大而需要无休止的执行虚拟机热迁移过程,进而必将导致虚拟机热迁移过程的失败,由此所需要耗费的迁移时间过长。
而在虚拟机热迁移期间突发的数据量增长,即每一轮所需要拷贝复制到目的主机的脏页数据都较为巨大,是导致虚拟机热迁移失败的重要原因之一,这也是由于执行虚拟机热迁移操作的时间并不合适而导致的,因此,在运算得到虚拟机的内存变化率之后,即可根据内存变化率来进行虚拟机热迁移操作的精准控制,以保证在合适的时间执行虚拟机热迁移操作,进而能够提高虚拟机热迁移的成功性和可靠性。
通过如上所述的示例性实施例中,通过实现虚拟化环境所运行虚拟机的迁移,由于是通过对虚拟机在物理内存映射的内存页面数据而进行虚拟机热迁移操作是否执行的评估,在精准有效控制虚拟机热迁移过程的同时,也将提高虚拟机热迁移的速度,极大降低所需要的停机时间,使得业务不受影响。
图4是根据图3对应实施例示出的对步骤330的细节进行描述的流程图。该步骤330,如图4所示,至少包括以下步骤。
在步骤331中,针对于宿主机虚拟内存区域,按照指定时间间隔进行所映射内存页面中内存块内容的读取。
其中,对所需要进行热迁移的虚拟机,通过步骤310的执行,从此虚拟机所对应宿主机虚拟化进程而查找得到宿主机虚拟内存区域,此宿主机虚拟内存区域即为实现内存虚拟化所对应的宿主机虚拟地址空间,其所对应的地址即为宿主机虚拟地址(HVA,HostVirtual Address)。
虚拟机所对应数据存储于宿主机虚拟内存区域在物理内存映射的内存页面上。具体而言,虚拟机中触发的内存访问操作,即对所存储数据进行的增删查改等操作,虚拟机都相应生成机器指令,此机器指令指示了内存访问操作的客户机虚拟地址。
应当补充说明的是,虚拟机有其所对应的客户机虚拟地址空间和客户机物理地址空间,虚拟机所触发进行的内存访问操作,都是针对于客户机虚拟地址空间而言的,而真正的数据是存储于物理内存中的。宿主机上,相对于所运行的虚拟机,则分配了宿主机虚拟内存和物理内存,经由宿主机虚拟化进程而查找得到的宿主机虚拟内存区域,则是宿主机虚拟内存的一部分,是分配给宿主机虚拟化进程的。
因此,虚拟机以及所在的宿主机之间,需要通过配置的地址翻译机制实现客户机虚拟地址向物理地址的转换,进而得以进行物理内存中的访问,完成内存访问操作所对应机器指令的执行。
对于查找得到的宿主机虚拟内存区域,通过所配置的地址翻译机制完成宿主机虚拟地址向物理地址的转换,由宿主机虚拟内存虚拟映射至若干内存页面。
然后对所映射的若干内存页面以块为单元进行内容的读取,获得每一内存页面所对应的内存块内容,对应于一内存页面的所有内存块内容便形成内存页面数据。
针对于所映射的若干内存页面而进行内存块内容的读取,是按照指定时间间隔迭代执行的,即每隔指定时间间隔便执行一次所映射若干内存页面上的内存块内容读取,以获得当前所存在的内存页面数据。
完成了当前所存在内存页面数据的读取之后,便暂停指定时间间隔,然后再进行内存页面数据的读取。
为保证读取效率,将以块为单位进行宿主机虚拟内存区域所映射内存页面中的内容读取,进而顺次获得所映射内存页面中的所有内存块内容。
在步骤333中,通过读取的内存块内容获得对应指定时间间隔前后的原内存页面数据和新内存页面数据。
其中,在指定时间间隔的作用下,至少完成了两轮宿主机虚拟内存区域所映射内存页面的内容读取,因此,获得了对应指定时间间隔前后的原内存页面数据和新内存页面数据。
内存页面数据,即为存储于宿主机虚拟内存区域在物理内存所映射内存页面的数据。随着时间的推移,将获得在时间上存在着先后顺序的原内存页面数据和新内存页面数据。
原内存页面数据和新内存页面数据,是相对而言的,都是内存页面数据。在每一轮所映射内存页面的内容读取中,所获得内存块内容便形成了内存页面数据,并且随着下一轮所映射内存页面的内容读取的进行,当前所得到的内存页面数据便成为原内存页面数据。
通过如上所示实施例迭代进行的内容读取,得以准确全面的获得虚拟机的全部内存页面数据,为后续评估是否执行虚拟机热迁移操作避免了遗漏,并且能够保证虚拟机对数据执行操作的准确感知。
图5是根据图4对应实施例示出的对步骤331的细节进行描述的流程图。该步骤331,如图5所示,至少包括以下步骤。
在步骤3311中,在宿主机虚拟内存区域所映射内存页面逐块进行内存块内容的读取,并缓存获得原内存页面数据。
在步骤3313中,按照指定时间间隔再次进行宿主机虚拟内存区域所映射内存页面中内存块内容的读取和缓存,获得新内存页面数据。
其中,通过此示例性实施例,得以获知一时间点上虚拟机在物理内存的数据存在情况,并且也将随之而获得下一时间点上虚拟机在物理内存的数据存在情况,即每一时间点上宿主机虚拟内存区域所映射内存页面上逐块进行的内容读取和缓存。
步骤3311和步骤3313示出了内存页面数据的两次迭代获得过程,在一个示例性实施例中,两次迭代的完成即可触发执行内存页面数据的比较以及虚拟机热迁移的评估,进而最终确定是否对虚拟机执行热迁移操作。
图6是根据图3对应实施例示出的对步骤350的细节进行描述的流程图。该步骤350,如图6所示,至少包括以下步骤。
在步骤351中,以内存页面为单位进行内存页面数据的比较,向对应于相同内存页面但相互之间不相同的内存页面数据进行计数,获得在指定时间间隔内容发生变化的页面数量。
其中,物理内存中数据通过所配置分页机制而划分的页面进行存储,因此,所提取的内存页面数据都是对应于一内存页面的,对于一内存页面而言,也将在指定时间间隔下分别获得所对应的两组内存页面数据。
在虚拟机对所映射内存页面执行了内存访问操作,例如,数据的写操作,则此内存页面所对应的两组内存页面数据虽对应于相同内存页面,但相互之间却各不相同,即此内存页面发生了数据更新。
因此,将以内存页面为单元,指定时间间隔下分别获得的两组内存页面数据进行比较,逐页进行页面内容,即内存页面数据的比较,在比较得到所对应内存页面数据不同的内存页面时触发进行计数,以此类推,完成宿主机虚拟内存区域所映射所有内存页面的比较,此时计数而对应的数值即为指定时间间隔内发生变化的页面数量。
在步骤353中,根据页面数量运算得到虚拟机的内存变化率。
其中,根据虚拟机所对应宿主机虚拟化进程,针对于宿主机虚拟内存区域,进行虚拟机的内存变化率运算,所运算得到的内存变化率即为表征内存页面发生变化的页面数量与宿主机虚拟内存区域映射的所有内存页面数量之间的商。
虚拟机的内存变化率,将指示了一段时间内虚拟机所对应物理内存发生数据更新的情况,以通过内存变化率的运算而不断感知虚拟机所映射物理内存的变化情况,进而方能够及时控制虚拟机热迁移操作的执行。
图7是根据图3对应实施例示出的对步骤370的细节进行描述的流程图。该步骤370,如图7所示,至少包括以下步骤。
在步骤371中,根据内存变化率预估虚拟机的迁移时间。
在步骤373中,如果迁移时间超出时间容忍值,暂缓执行虚拟机的迁移操作。
在步骤375中,如果迁移时间未超出时间容忍值,则触发执行虚拟机的迁移操作。
其中,应当理解,在已有的每一内存页面数据对应的数据量、网络带宽情况等的作用下,即可由内存变化率预估虚拟机的迁移时间。为虚拟机所预估得到的迁移时间是指在虚拟机当前所需要拷贝复制的数据量以及网络环境下完成虚拟机热迁移所需要耗费的时间,而对于当前所需要拷贝复制的数据量,与内存变化率相关。
内存变化率较大,则虚拟机热迁移所需要耗费的时间,即迁移时间较长;在时间上评估是否执行虚拟机的迁移操作。
如果对虚拟机预估而得到的迁移时间超出了可以容忍的范围,即所指的时间容忍值,则暂缓虚拟机的迁移,从而提高虚拟机在给定的时间限制内热迁移成功的概率
通过如前所述的示例性实施例,通过检测内存变化率来预估虚拟机执行热迁移所需要的时间,进而在迁移前就能够确定此虚拟机是否能在约束的时间内完成迁移,因此有效提高了虚拟机热迁移的成功率,减少虚拟机热迁移的停机时间。
如上所述的示例性实施例中,虚拟机迁移前,在宿主机进行着虚拟机内存的变化率统计,以此来判断能否进行迁移,进而使得整个的迁移时间和停机时间都在可接受的范围之内。
以一主机中的虚拟机热迁移过程为例,结合具体应用场景,描述该控制执行虚拟机热迁移的方法。
首先需要进行说明的是,主机通过KVM虚拟化架构而运行着一个以上的虚拟机,每一虚拟机都分配有对应的客户机虚拟地址(Guest Virtual Address,简称GVA)、客户机物理地址(Guest Physical Address,简称GPA),并且都有所对应的宿主机虚拟化进程,具体而言,在KVM虚拟化架构下,此宿主机虚拟化进程即为qemu-kvm进程。
Qemu-kvm进程通过分配不同的虚拟内存区域,即宿主机虚拟内存区域来映射虚拟机不同的物理内存区域,进而以此来模拟虚拟机所需要使用的客户机物理地址空间。
图8是根据一示例性实施例示出的KVM虚拟化架构下客户机物理地址空间的模拟实现示意图。如图8所示的,客户机物理地址空间通过宿主机虚拟地址空间(宿主机虚拟内存区域)而最终映射至宿主机物理地址空间,即物理内存中。在此,所指的宿主机,即为虚拟机所在的主机。
在此有必要对虚拟机中内存访问操作的执行做进一步阐述,进而说明虚拟机执行内存访问操作时所进行的物理内存访问。
随着虚拟机的运行,对于执行内存访问操作而进行的所在主机的物理内存访问,是通过引入Intel VT-x所提供的Extend Page Table(EPT)技术,在硬件上实现的地址转换过程。
图9是根据一示例性实施例示出的虚拟机执行内存访问操作而实现物理内存访问的示意图。如图9所示的,虚拟机410与其所在的主机430之间,通过虚拟化的操作系统完成GVA到GPA的转换,在此基础上,通过EPT原理而实现虚拟机所对应GPA,即客户域下的GPA向HPA的转换。
对于所执行的内存访问操作而言,通过执行此地址转换过程即可最终获得所在主机中请求访问的地址,即HPA。
具体而言,在虚拟化环境下,内存访问操作所使用的是客户机虚拟地址(GVA),采用客户机寄存器CR3作为基址,利用自身所维护的页表进行地址转换,即,通过其本身页表机制而将客户机虚拟地址转换成物理地址,此物理地址便是客户机物理地址(GPA),完成GVA向GPA的转换。
至此,虽然已经转换成物理地址,但是由于是客户机物理地址,并不等同于所在主机的物理地址,所以并不能直接进行访问,仍然需要进行第二次的转换,此时,将进行基于EPT原理的地址转换。
借助于MMU(内存管理单元)431和TLB(Translation Lookside Buffer)寄存器433这两类硬件实现第二次的地址转换。
具体而言,将在MMU 431和TLB 433的辅助下,通过所维护的页目录和页表实现GPA向HPA的地址转换。
而对于虚拟机热迁移的进行,是由所在主机,向其它主机执行的迁移过程,即源主机向目的主机之间热迁移的实现。
虚拟机所在的主机,如前所述的,其qemu-kvm进程控制下通过一段虚拟地址实现虚拟机中物理内存的模拟。每一虚拟机都有唯一对应的qemu-kvm进程。
图10是根据一示例性实施例示出的宿主机qemu-kvm进程为虚拟机进行的物理内存模拟示意图。如图10所示的,宿主机qemu-kvm进程通过一段虚拟地址510进行所对应虚拟机的物理内存模拟。这一段虚拟地址510便构成前述所指的宿主机虚拟内存区域。
图11是根据一示例性实施例示出的虚拟机热迁移执行控制的应用示意图。在此基础上,如图11所示的,所进行的虚拟机热迁移控制,包括以下过程的实现:
首先,在通过步骤610的执行,对宿主机虚拟内存区域在物理内存映射的内存页面读取起始地址start和结束地址end,并设置当前读取的地址cur为start。
配置所读取的内存块为CHUNK_SIZE。
其次,从start处开始开始读取内容,并进入指定时间间隔所控制的循环。
具体而言,对于虚拟机在物理内存所映射的所有内存页都划分为CHUNK_SIZE所对应尺寸大小的内存块,从起始地址start和结束地址end读取每一内存块的内容,即内存块内容,并放入缓存oldbuf中,此时,便获得所有内存页面数据,如步骤630中1的执行过程。
暂停指定的间隔interval,即指定时间间隔之后,进行下一轮循环,再次从起始地址start和结束地址end读取每一内存块的内容,即内存块内容,并放入缓存newbuf中,此时,获得新内存页面数据,缓存oldbuf中的内存页面数据则成为原内存页面数据。
执行步骤650,逐页进行缓存oldbuf和缓存newbuf中的内容比较,如果内容不同则计数,
在完成所有内容的读取之后,便退出循环,并由计数结果获得虚拟机的内存变化率,进而以此为依据来确认当前是否为虚拟机执行热迁移操作。
下述为本发明装置实施例,可以用于执行本发明上述控制执行虚拟机热迁移的方法实施例。对于本发明装置实施例未披露的细节,请参照本发明控制执行虚拟机热迁移的方法实施例。
图12是根据一示例性实施例示出的一种控制执行虚拟机热迁移的装置的框图。该控制执行虚拟机热迁移的装置,如图12所示,包括但不限于:区域查找模块810、读取模块830、比较模块850和执行控制模块870。
区域查找模块810,用于从虚拟机所对应宿主机虚拟化进程查找宿主机虚拟内存区域。
读取模块830,用于按照指定时间间隔迭代获得宿主机虚拟内存区域映射的内存页面数据。
比较模块850,用于根据对应于相同内存页面的内存页面数据比较,获得虚拟机的内存变化率。
执行控制模块870,用于根据内存变化率控制虚拟机热迁移操作的执行。
图13是根据图12所对应实施例示出的对读取模块的细节进行描述的框图。该读取模块830,如图13所示,至少包括:内容读取单元831和页面数据获得单元833。
内容读取单元831,用于针对于宿主机虚拟内存区域,按照指定时间间隔进行所映射内存页面中内存块内容的读取。
页面数据获得单元833,用于通过读取的内存块内容获得对应指定时间间隔前后的原内存页面数据和新内存页面数据。
图14是根据图13对应实施例示出的对内容读取单元的细节进行描述的框图。该内容读取单元831,如图14所示,至少包括:源页面获得单元8311和新页面获得单元8313。
源页面获得单元8311,用于在宿主机虚拟内存区域所映射内存页面逐块进行内存块内容的读取,并缓存获得原内存页面数据。
新页面获得单元8313,用于按照指定时间间隔再次进行宿主机虚拟内存区域所映射内存页面中内存块内容的读取和缓存,获得新内存页面数据。
图15是根据图12对应实施例示出的对比较模块的细节进行描述的框图。该比较模块850,如图15所示,至少包括:比较计数单元851和变化率运算单元853。
比较计数单元851,用于以内存页面为单位进行内存页面数据的比较,向对应于相同内存页面但相互之间不相同的内存页面数据进行计数,获得在指定时间间隔内容发生变化的页面数量。
变化率运算单元853,用于根据页面数量运算得到虚拟机的内存变化率。
图16是根据图12对应实施例示出的对执行控制模块的细节进行描述的框图。该执行控制模块870,如图16所示,至少包括:时间预估单元871、暂缓控制单元873和执行控制单元875。
时间预估单元871,用于根据内存变化率预估虚拟机的迁移时间。
暂缓控制单元873,用于如果迁移时间超出时间容忍值,暂缓执行虚拟机的迁移操作。
执行控制单元875,用于如果迁移时间未超出时间容忍值,则触发执行虚拟机的迁移操作。
可选的,本发明还提供一种控制执行虚拟机热迁移的装置,该控制执行虚拟机热迁移的装置可以执行图3、图4、图5、图6和图7任一所示的控制执行虚拟机热迁移的方法的全部或者部分步骤。所述装置包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行:
从虚拟机所对应宿主机虚拟化进程查找宿主机虚拟内存区域;
按照指定时间间隔迭代获得所述宿主机虚拟内存区域映射的内存页面数据;
根据所述对应于相同内存页面的内存页面数据比较,获得所述虚拟机的内存变化率;
根据所述内存变化率控制所述虚拟机热迁移操作的执行。
该实施例中的装置的处理器执行操作的具体方式已经在有关该控制执行虚拟机热迁移的方法实施例中执行了详细描述,此处将不做详细阐述说明。
在示例性实施例中,还提供了一种存储介质,该存储介质为计算机可读存储介质,例如可以为包括指令的临时性和非临时性计算机可读存储介质。该存储介质例如包括指令的存储器204,上述指令可由装置200的处理器218执行以完成上述控制执行虚拟机热迁移的方法。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围执行各种修改和改变。本发明的范围仅由所附的权利要求来限制。

Claims (12)

1.一种控制执行虚拟机热迁移的方法,其特征在于,所述方法包括:
从虚拟机所对应宿主机虚拟化进程执行内存访问操作,所述内存访问操作对客户机虚拟地址进行地址转换为客户机物理地址,再通过内存管理单元和寄存器二类硬件进行第二次地址转换获得宿主机物理地址,宿主机物理地址空间是所述内存访问操作访问的物理内存;
按照指定时间间隔迭代在物理内存映射的内存页面读取内存块内容并缓存获得原内存页面数据和新内存页面数据;
根据所述对应于相同内存块的原内存页面数据和新内存页面数据比较,获得所述虚拟机的内存变化率;
根据所述内存变化率控制所述虚拟机热迁移操作的执行。
2.根据权利要求1所述的方法,其特征在于,所述按照指定时间间隔迭代在物理内存映射的内存页面读取内存块内容并缓存获得原内存页面数据和新内存页面数据,包括:
针对于所述物理内存所映射内存页面划分的内存块,按照指定时间间隔进行所映射内存页面中内存块内容的读取;
通过读取的所述内存块内容获得对应所述指定时间间隔前后的原内存页面数据和新内存页面数据。
3.根据权利要求2所述的方法,其特征在于,所述针对于所述物理内存所映射内存页面划分的内存块,按照指定时间间隔进行所映射内存页面中内存块内容的读取,包括:
在所述物理内存所映射内存页面逐块进行内存块内容的读取,并缓存获得原内存页面数据;
按照所述指定时间间隔再次进行所述物理内存所映射内存页面中内存块内容的读取和缓存,获得新内存页面数据。
4.根据权利要求1所述的方法,其特征在于,所述根据所述对应于相同内存块的原内存页面数据和新内存页面数据比较,获得所述虚拟机的内存变化率,包括:
以内存页面为单位进行内存页面数据的比较,向对应于相同内存页面但相互之间不相同的内存页面数据进行计数,获得在所述指定时间间隔内容发生变化的页面数量;
根据所述页面数量运算得到所述虚拟机的内存变化率。
5.根据权利要求1所述的方法,其特征在于,所述根据所述内存变化率控制所述虚拟机热迁移操作的执行,包括:
根据所述内存变化率预估所述虚拟机的迁移时间;
如果所述迁移时间超出时间容忍值,暂缓执行所述虚拟机的迁移操作;
如果所述迁移时间未超出时间容忍值,则触发执行所述虚拟机的迁移操作。
6.一种控制执行虚拟机热迁移的装置,其特征在于,所述装置包括:
区域查找模块,用于从虚拟机所对应宿主机虚拟化进程执行内存访问操作,所述内存访问操作对客户机虚拟地址进行地址转换为客户机物理地址,再通过内存管理单元和寄存器二类硬件进行第二次地址转换获得宿主机物理地址,宿主机物理地址空间是所述内存访问操作访问的物理内存;
读取模块,用于按照指定时间间隔迭代在物理内存映射的内存页面读取内存块内容并缓存获得原内存页面数据和新内存页面数据;
比较模块,用于根据所述对应于相同内存块的原内存页面数据和新内存页面数据比较,获得所述虚拟机的内存变化率;
执行控制模块,用于根据所述内存变化率控制所述虚拟机热迁移操作的执行。
7.根据权利要求6所述的装置,其特征在于,所述读取模块包括:
内容读取单元,用于针对于所述物理内存所映射内存页面划分的内存块,按照指定时间间隔进行所映射内存页面中内存块内容的读取;
页面数据获得单元,用于通过读取的所述内存块内容获得对应所述指定时间间隔前后的原内存页面数据和新内存页面数据。
8.根据权利要求7所述的装置,其特征在于,所述内容读取单元包括:
源页面获得单元,用于在所述物理内存所映射内存页面逐块进行内存块内容的读取,并缓存获得原内存页面数据;
新页面获得单元,用于按照所述指定时间间隔再次进行所述物理内存所映射内存页面中内存块内容的读取和缓存,获得新内存页面数据。
9.根据权利要求6所述的装置,其特征在于,所述比较模块包括:
比较计数单元,用于以内存页面为单位进行内存页面数据的比较,向对应于相同内存页面但相互之间不相同的内存页面数据进行计数,获得在所述指定时间间隔内容发生变化的页面数量;
变化率运算单元,用于根据所述页面数量运算得到所述虚拟机的内存变化率。
10.根据权利要求6所述的装置,其特征在于,所述执行控制模块包括:
时间预估单元,用于根据所述内存变化率预估所述虚拟机的迁移时间;
暂缓控制单元,用于如果所述迁移时间超出时间容忍值,暂缓执行所述虚拟机的迁移操作;
执行控制单元,用于如果所述迁移时间未超出时间容忍值,则触发执行所述虚拟机的迁移操作。
11.一种控制执行虚拟机热迁移的装置,其特征在于,包括:
处理器;以及
存储器,所述存储器上存储有计算机可读指令,所述计算机可读指令被所述处理器执行时实现根据权利要求1至5中任一项所述的方法。
12.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现根据权利要求1至5中任一项所述的方法。
CN201810001805.6A 2018-01-02 2018-01-02 控制执行虚拟机热迁移的方法、装置和可读存储介质 Active CN108037980B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810001805.6A CN108037980B (zh) 2018-01-02 2018-01-02 控制执行虚拟机热迁移的方法、装置和可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810001805.6A CN108037980B (zh) 2018-01-02 2018-01-02 控制执行虚拟机热迁移的方法、装置和可读存储介质

Publications (2)

Publication Number Publication Date
CN108037980A CN108037980A (zh) 2018-05-15
CN108037980B true CN108037980B (zh) 2023-03-14

Family

ID=62098406

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810001805.6A Active CN108037980B (zh) 2018-01-02 2018-01-02 控制执行虚拟机热迁移的方法、装置和可读存储介质

Country Status (1)

Country Link
CN (1) CN108037980B (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109189545B (zh) * 2018-07-06 2021-03-30 烽火通信科技股份有限公司 一种提高虚拟机热迁移可靠性的实现方法及系统
CN110928636A (zh) * 2018-09-19 2020-03-27 阿里巴巴集团控股有限公司 虚拟机热迁移方法、装置和设备
CN110336894B (zh) * 2019-06-24 2021-03-30 中国科学院软件研究所 一种虚拟机用户空间地址到宿主机内核空间地址转换方法
CN110737509B (zh) * 2019-10-18 2022-04-19 杭州朗和科技有限公司 热迁移处理方法及装置、存储介质和电子设备
CN112783599B (zh) * 2019-11-05 2024-03-29 阿里巴巴集团控股有限公司 虚拟机热迁移方法、装置、终端设备及计算机存储介质
CN113032088B (zh) * 2019-12-25 2023-12-22 阿里巴巴集团控股有限公司 脏页记录方法、装置、电子设备及计算机可读介质
CN113626131B (zh) * 2020-05-07 2023-03-28 中科寒武纪科技股份有限公司 实现热迁移的方法、芯片、板卡和存储介质
CN112099905B (zh) * 2020-08-26 2024-01-26 海光信息技术股份有限公司 虚拟机脏页获取方法、装置、电子设备及可读存储介质
CN112379974A (zh) * 2020-12-04 2021-02-19 海光信息技术股份有限公司 一种虚拟机热迁移系统及其热迁移方法
CN112988332B (zh) * 2021-04-26 2021-09-21 杭州优云科技有限公司 一种虚拟机热迁移预测方法、系统和计算机可读存储介质
CN113342473B (zh) * 2021-06-28 2024-01-19 海光信息技术股份有限公司 数据处理方法、安全虚拟机的迁移方法及相关装置、架构
CN116719752A (zh) * 2022-09-30 2023-09-08 荣耀终端有限公司 一种分配内存的方法、电子设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102521038A (zh) * 2011-12-06 2012-06-27 北京航空航天大学 基于分布式文件系统的虚拟机迁移方法和装置
CN106201659A (zh) * 2016-07-12 2016-12-07 腾讯科技(深圳)有限公司 一种虚拟机热迁移的方法及宿主机
CN107015844A (zh) * 2015-12-18 2017-08-04 英特尔公司 虚拟机批量在线迁移

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9720728B2 (en) * 2013-12-06 2017-08-01 Huawei Technologies Co., Ltd. Migrating a VM when the available migration duration times of a source and destination node are greater than the VM's migration duration time

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102521038A (zh) * 2011-12-06 2012-06-27 北京航空航天大学 基于分布式文件系统的虚拟机迁移方法和装置
CN107015844A (zh) * 2015-12-18 2017-08-04 英特尔公司 虚拟机批量在线迁移
CN106201659A (zh) * 2016-07-12 2016-12-07 腾讯科技(深圳)有限公司 一种虚拟机热迁移的方法及宿主机

Also Published As

Publication number Publication date
CN108037980A (zh) 2018-05-15

Similar Documents

Publication Publication Date Title
CN108037980B (zh) 控制执行虚拟机热迁移的方法、装置和可读存储介质
US10289555B1 (en) Memory read-ahead using learned memory access patterns
US10474369B2 (en) Mapping guest pages to disk blocks to improve virtual machine management processes
US9122765B1 (en) Efficient overcommitment of main-memory based virtual database system to disk
EP3857389B1 (en) Logging pages accessed from i/o devices
CN106575235B (zh) 虚拟计算环境中的存储器和资源管理
US20150095585A1 (en) Consistent and efficient mirroring of nonvolatile memory state in virtualized environments
US10140212B2 (en) Consistent and efficient mirroring of nonvolatile memory state in virtualized environments by remote mirroring memory addresses of nonvolatile memory to which cached lines of the nonvolatile memory have been flushed
US11809888B2 (en) Virtual machine memory migration facilitated by persistent memory devices
US20160098302A1 (en) Resilient post-copy live migration using eviction to shared storage in a global memory architecture
US9495191B2 (en) Using virtual disk in virtual machine live migration
US9542100B2 (en) Management of memory pages
US20180365163A1 (en) Switching between single-level and two-level page table translations
CN108713189B (zh) 推测性虚拟机执行
WO2015162469A1 (en) Unified caching of storage blocks and memory pages in a compute-node cluster
CN116583825A (zh) 多主机数据处理环境中的存储器迁移
Li et al. Efficient live virtual machine migration for memory write-intensive workloads
US20170041191A1 (en) Parallel computing system and migration method
EP4278265B1 (en) Memory address compression within an execution trace
US20230342282A1 (en) Memory page markings as logging cues for processor-based execution tracing
JP2018181378A (ja) ハードウェア内で変換索引バッファ(tlb)シュートダウンを指示および追跡するための方法およびシステム、並びに非一時的なコンピュータ可読媒体
CN112241305A (zh) 虚拟机脏页处理方法、处理芯片、计算机设备及存储介质
US11288207B2 (en) Apparatus and method for processing address translation and invalidation transactions
US20240143362A1 (en) Migrating memory pages between non-uniform memory access (numa) nodes based on entries in a page modification log
EP4278262B1 (en) Physical memory address omission or obfuscation within an execution trace

Legal Events

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