一种虚拟机热迁移的方法、装置、设备和存储介质与流程

文档序号:28736529发布日期:2022-02-07 19:29阅读:59来源:国知局
1.本发明涉及虚拟化
技术领域
:,尤其涉及一种虚拟机热迁移的方法、装置、设备和存储介质。
背景技术
::2.在当下移动互联,万物互联的浪潮下,无论企业还是个人,数据上云已经进行的如火如荼。而在云环境中虚拟机的热迁移技术是非常复杂,同时也被频繁使用的一种技术。通常,该技术主要被用来进行负载均衡、故障转移、版本升级以及漏洞修复等。但是目前虚拟机的热迁移技术仅仅局限于异地迁移,即,将待迁移虚拟机从一台物理服务器迁移到另一台远端的物理服务器,这样带来的问题就是:一方面,虚拟机的所有数据要通过网络进行传输,给线上网络带宽带来很大压力;另一方面,业务繁忙的虚拟机不断产生大量数据,而网络带宽成为迁移的瓶颈时,最终由于数据无法完成传输导致虚拟机迁移失败。针对以上两种情况,目前主流做法是:方案一,压缩需要传输的数据,该方案的做法是在数据进入网络进行传输前,先进行压缩,减少数据在网络中传输的尺寸来提高传输的效率,进而提升虚拟机热迁移的成功率。方案二,减少数据的生成速率,该方案的做法是通过减少虚拟机的中央处理器(centralprocessingunit,cpu)提交运行时间来达到减缓新数据的生成,从而达到减少在网络传输的数据量来提升热迁移的成功率。3.但针对方案一,由于压缩过程本身需要额外耗费时间,而且压缩是一个计算密集型的操作,即会极大的耗费cpu资源,因此如果当前的虚拟机的cpu资源已经比较紧张或者过载,那么该方案无疑是雪上加霜。针对方案二,由于需要减少虚拟机cpu的提交运行时间来减少数据的生成,这种方案会在热迁移迟迟未迁移成功的情况下逐渐让虚拟机变得不可用,并且伴随输入/输出(input/output,io)请求的极大延迟、丢包等问题。因此,它不能很好的用于cpu和io密集的虚拟机。针对该问题,目前尚无有效解决方案。技术实现要素:4.有鉴于此,本发明实施例期望提供一种虚拟机热迁移的方法、装置、设备和存储介质。5.本发明实施例的技术实施例是这样实现的:6.本发明实施例提供一种虚拟机热迁移的方法,所述方法包括:7.确定待迁移虚拟机和目标虚拟机;所述待迁移虚拟机和所述目标虚拟机位于同一主机上;获得所述待迁移虚拟机的第一识别文件;根据所述第一识别文件的第一名称和第一识别码识别所述待迁移虚拟机;分配身份标识和第二识别码至所述目标虚拟机;所述第二识别码为对所述第一识别码按预设方式处理获得;基于所述第一名称、所述身份标识和所述第二识别码确定所述目标虚拟机的第二识别文件;根据所述第二识别文件的第二名称和第二识别码识别所述目标虚拟机;基于所述第一识别文件和所述第二识别文件生成所述待迁移虚拟机与所述目标虚拟机之间的第一管道文件;获得迁移指令,基于所述迁移指令将所述待迁移虚拟机的内存数据通过所述第一管道文件迁移至所述目标虚拟机。8.在上述方案中,所述确定待迁移虚拟机和目标虚拟机,包括:9.获得所述待迁移虚拟机以及所述待迁移虚拟机的第一设备模拟器;基于获得的操作指令卸载所述第一设备模拟器以及安装第二设备模拟器;根据所述第二设备模拟器创建所述目标虚拟机。10.在上述方案中,所述方法还包括:11.基于所述第一名称确定第二管道文件;所述第二管道文件分别用于与所述待迁移虚拟机和所述第一设备模拟器进行通信;基于所述第二名称确定所述第三管道文件;所述第三管道文件分别用于与所述目标虚拟机和所述第二设备模拟器进行通信。12.在上述方案中,所述基于所述第一名称、所述身份标识和所述第二识别码确定所述目标虚拟机的第二识别文件,包括:13.基于所述第一名称和所述身份标识确定所述第二名称;根据所述第二名称和所述第二识别码确定所述第二识别文件。14.在上述方案中,所述方法还包括:15.注册所述第二识别文件至所述主机的管理表中;基于所述第二识别文件和所述待迁移虚拟机的第一资源文件创建所述目标虚拟机的第二资源文件;所述第一资源文件包括以下至少之一:日志文件、结构性的标记文件和连接信息文件;根据所述第一名称访问所述第一资源文件,以及根据所述第二名称访问第二资源文件。16.在上述方案中,所述获得迁移指令,基于所述迁移指令将所述待迁移虚拟机的内存数据通过所述第一管道文件迁移至所述目标虚拟机之后,所述方法还包括:17.删除所述待迁移虚拟机;在所述主机的管理表中更新所述第二识别码为所述第一识别码。18.本发明实施例提供一种虚拟机热迁移的装置,所述装置包括:确定单元、获得单元、分配单元、生成单元和迁移单元,其中:19.所述确定单元,用于确定待迁移虚拟机和目标虚拟机;所述待迁移虚拟机和所述目标虚拟机位于同一主机上;所述获得单元,用于获得所述待迁移虚拟机的第一识别文件;根据所述第一识别文件的第一名称和第一识别码识别所述待迁移虚拟机;所述分配单元,用于分配身份标识和第二识别码至所述目标虚拟机;所述第二识别码为对所述第一识别码按预设方式处理获得;所述确定单元,还用于基于所述第一名称、所述身份标识和所述第二识别码确定所述目标虚拟机的第二识别文件;根据所述第二识别文件的第二名称和第二识别码识别所述目标虚拟机;所述生成单元,用于基于所述第一识别文件和所述第二识别文件生成所述待迁移虚拟机与所述目标虚拟机之间的第一管道文件;所述迁移单元,用于获得迁移指令,基于所述迁移指令将所述待迁移虚拟机的内存数据通过所述第一管道文件迁移至所述目标虚拟机。20.在上述方案中,所述确定单元,还用于获得所述待迁移虚拟机以及所述待迁移虚拟机的第一设备模拟器;基于获得的操作指令卸载所述第一设备模拟器以及安装第二设备模拟器;根据所述第二设备模拟器创建所述目标虚拟机。21.在上述方案中,所述确定单元,还用于基于所述第一名称确定第二管道文件;所述第二管道文件分别用于与所述待迁移虚拟机和所述第一设备模拟器进行通信;基于所述第二名称确定所述第三管道文件;所述第三管道文件分别用于与所述目标虚拟机和所述第二设备模拟器进行通信。22.在上述方案中,所述确定单元,还用于基于所述第一名称和所述身份标识确定第二名称;根据所述第二名称和所述第二识别码确定所述目标虚拟机的第二识别文件。23.在上述方案中,所述装置还包括:注册单元、创建单元和访问单元,其中:24.所述注册单元,用于注册所述第二识别文件至所述主机的管理表中;所述创建单元,用于基于所述注册单元注册的所述第二识别文件和所述待迁移虚拟机的第一资源文件创建所述目标虚拟机的第二资源文件;所述第一资源文件包括以下至少之一:日志文件、结构性的标记文件和连接信息文件;所述访问单元,用于根据所述第一名称访问所述第一资源文件,以及根据所述第二名称访问第二资源文件。25.在上述方案中,所述装置还包括更新单元,还用于删除所述待迁移虚拟机;在所述主机的管理表中更新所述第二识别码为所述第一识别码。26.本发明实施例提供一种虚拟机热迁移的设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述所述方法的任一步骤。27.本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述所述方法的任一步骤。28.本发明实施例提供的一种虚拟机热迁移的方法、装置、设备和存储介质,其中,包括:确定待迁移虚拟机和目标虚拟机;所述待迁移虚拟机和所述目标虚拟机位于同一主机上;获得所述待迁移虚拟机的第一识别文件;根据所述第一识别文件的第一名称和第一识别码识别所述待迁移虚拟机;分配身份标识和第二识别码至所述目标虚拟机;所述第二识别码为对所述第一识别码按预设方式处理获得;基于所述第一名称、所述身份标识和所述第二识别码确定所述目标虚拟机的第二识别文件;根据所述第二识别文件的第二名称和第二识别码识别所述目标虚拟机;获得迁移指令,基于所述迁移指令将所述待迁移虚拟机的内存数据通过所述第一管道文件迁移至所述目标虚拟机。采用本发明实施例的技术方案,通过分配身份标识和第二识别码至所述目标虚拟机;所述第二识别码为对所述第一识别码按预设方式处理获得;基于所述第一名称、所述身份标识和所述第二识别码确定所述目标虚拟机的第二识别文件;基于所述第一识别文件和所述第二识别文件生成所述待迁移虚拟机与所述目标虚拟机之间的第一管道文件;获得迁移指令,基于所述迁移指令将所述待迁移虚拟机的内存数据通过所述第一管道文件迁移至所述目标虚拟机;实现了在同一主机上的虚拟机迁移,无需跨主机进行虚拟机的迁移,在非共享场景下无需传输磁盘数据,仅拷贝内存数据,可极大缩短迁移时间。附图说明29.图1为本发明实施例虚拟机热迁移的方法实现流程示意图;30.图2为本发明实施例虚拟机热迁移的方法中虚拟机管理器对待迁移虚拟机和目标虚拟机进行管理的架构示意图;31.图3为本发明实施例虚拟机热迁移方法的一种应用场景示意图;32.图4为本发明实施例虚拟机热迁移的装置的组成结构示意图;33.图5为本发明实施例中虚拟机热迁移的设备的一种硬件实体结构示意图。具体实施方式34.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对发明的具体技术方案做进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。35.本实施例提出一种虚拟机热迁移的方法,该方法应用于虚拟机热迁移的设备,该方法所实现的功能可以通过虚拟机热迁移的设备中的处理器调用程序代码来实现,当然程序代码可以保存在计算机存储介质中,可见,该计算设备至少包括处理器和存储介质。图1为本发明实施例虚拟机热迁移的方法实现流程示意图,如图1所示,该方法包括:36.步骤s101:确定待迁移虚拟机和目标虚拟机;所述待迁移虚拟机和所述目标虚拟机位于同一主机上。37.本发明实施例中,所述待迁移虚拟机和所述目标虚拟机位于同一主机上;其中,同一主机可以理解为同一物理机(host),又称同一个节点。确定待迁移虚拟机和目标虚拟机可以为在同一物理机确定待迁移虚拟机和目标虚拟机,即在同一物理机上出现待迁移虚拟机和目标虚拟机共存的环境。在同一物理机确定待迁移虚拟机和目标虚拟机可以为在同一物理机上先获得所述待迁移虚拟机,再创建所述目标虚拟机。作为一种示例,可以获得所述待迁移虚拟机以及所述待迁移虚拟机的第一设备模拟器;基于获得的操作指令卸载所述第一设备模拟器以及安装第二设备模拟器;根据所述第二设备模拟器创建所述目标虚拟机;其中,所述待迁移虚拟机可以为旧版本或低版本的虚拟机;所述目标虚拟机可以为新版本或高版本的虚拟机;所述第一设备模拟器可以为旧版本或低版本的虚拟机设备模拟器,又称为旧版本或低版本的qemu;所述第二设备模拟器可以为新版本或高版本的虚拟机设备模拟器,又称为新版本或高版本的qemu或高版本的qemu;在同一物理机确定待迁移虚拟机和目标虚拟机的目的可以为将旧版本或低版本的虚拟机升级为新版本或高版本的虚拟机。在同一物理机上有虚拟机管理器(libvirt),可以获得旧版本或低版本的虚拟机以及旧版本或低版本的qemu;基于获得用户的操作指令卸载所述旧版本或低版本的qemu以及安装新版本或高版本的qemu;根据所述新版本或高版本的qemu创建所述目标虚拟机;即在同一host上出现新旧版本虚拟机共存的环境。38.步骤s102:获得所述待迁移虚拟机的第一识别文件;根据所述第一识别文件的第一名称和第一识别码识别所述待迁移虚拟机。39.本实施例中,获得所述待迁移虚拟机的第一识别文件;其中,所述第一识别文件可以理解为所述待迁移虚拟机的户口本,用于识别所述待迁移虚拟机,并访问所述待迁移虚拟机。40.根据所述第一识别文件的第一名称和第一识别码识别所述待迁移虚拟机;其中,所述第一名称可以为所述待迁移虚拟机的名字(name),基于所述name可以便于用户在同一主机上区分不同的虚拟机;所述第一识别码可以为所述待迁移虚拟机的通用唯一识别码(universallyuniqueidentifier,uuid),基于所述uuid可以便于机器在同一主机上区分不同的虚拟机;一般情况下对于用户来说同一个name对应相同的虚拟机,对于机器来说同一个uuid对应相同的虚拟机。41.在实际应用中,如果同一主机上同时存在两个完全一样的虚拟机,即两个虚拟机的name和uuid完全相同,主机上的虚拟机管理器(libvirt)是不支持两个虚拟机在该主机上迁移的,主要是无法区分同一主机上的虚拟机以及访问路径。42.步骤s103:分配身份标识和第二识别码至所述目标虚拟机;所述第二识别码为对所述第一识别码按预设方式处理获得。43.本实施例中,分配身份标识和第二识别码至所述目标虚拟机;其中,所述身份标识是一种不同于名称和识别码的一种标识,但可以与名称进行组合,以命名不同的虚拟机;所述第二识别码为对所述第一识别码按预设方式处理获得;其中,所述预设方式可以为对所述第一识别码进行隐藏处理,该隐藏处理可以理解为一种映射关系,即所述第二识别码与所述第一识别码存在某种对应关系;作为一种示例,在所述第一识别码为uuid的情况下,所述第二识别码可以为shaduuid。在后续的迁移阶段,libvirt可以通过uuid对待迁移虚拟机进行管控,以及shaduuid对目标虚拟机进行管控;在后续的迁移完成阶段,可以删除待迁移虚拟机,将shaduuid替换成uuid。44.步骤s104:基于所述第一名称、所述身份标识和所述第二识别码确定所述目标虚拟机的第二识别文件;根据所述第二识别文件的第二名称和第二识别码识别所述目标虚拟机。45.本实施例中,基于所述第一名称、所述身份标识和所述第二识别码确定所述目标虚拟机的第二识别文件;其中,所述第二识别文件可以理解为所述目标虚拟机的户口本,用于识别所述目标虚拟机,并访问所述目标虚拟机。作为一种示例,所述基于所述第一名称、所述身份标识和所述第二识别码确定所述目标虚拟机的第二识别文件可以为基于所述第一名称和所述身份标识确定第二名称;根据所述第二名称和所述第二识别码确定所述目标虚拟机的第二识别文件;其中,基于所述第一名称和所述身份标识确定第二名称可以为将所述第一名称和所述身份标识进行组合,获得所述第一名称和所述身份标识的组合名即为第二名称,例如,所述第一名称为name,所述身份标识为id,则第二名称可以为id-name;根据所述第二名称和所述第二识别码确定所述目标虚拟机的第二识别文件可以为根据id-name和shaduuid确定所述目标虚拟机的第二识别文件,换句话说,第二识别文件包括id-name和shaduuid,根据id-name和shaduuid识别所述目标虚拟机。46.步骤s105:基于所述第一识别文件和所述第二识别文件生成所述待迁移虚拟机与所述目标虚拟机之间的第一管道文件。47.本实施例中,基于所述第一识别文件和所述第二识别文件生成所述待迁移虚拟机与所述目标虚拟机之间的第一管道文件;其中,第一管道文件可以为套接字(socket)文件,用于实现同一主机上虚拟机之间的通信,又称进程间通信(unixdomainsocket),作为一种示例,所述第一管道文件可以为unix.socket文件。48.作为一种示例,基于所述第一识别文件和所述第二识别文件生成所述待迁移虚拟机与所述目标虚拟机之间的第一管道文件可以为基于所述第一识别文件识别所述待迁移虚拟机;基于所述第二识别文件识别所述目标虚拟机;生成所述待迁移虚拟机与所述目标虚拟机之间的第一管道文件。具体的,可以为基于所述第一识别文件的所述第一名称确定第二管道文件;所述第二管道文件用于与所述待迁移虚拟机进行通信,以识别出所述待迁移虚拟机;基于所述第二识别文件的所述第二名称确定所述第三管道文件;所述第三管道文件用于与所述目标虚拟机进行通信,以识别出所述目标虚拟机;进而在所述待迁移虚拟机与所述目标虚拟机之间生成第一管道文件;其中,第二管道文件和第三管道文件可以均为套接字(socket)文件,用于实现同一主机上的进程间通信,可以发送或接收数据。作为一种示例,根据所述第一识别文件确定第二管道文件可以为根据所述第一识别文件确定第一监视器(monitor)指定路径下的第二socket文件,可以记为待迁移虚拟机对应的monitor.sock文件,即第二管道文件,可以与待迁移虚拟机通信,以识别出待迁移虚拟机,该第二socket文件与所述第一识别文件中的第一名称紧密相关;所述第一监视器为待迁移虚拟机的监视器;根据所述第二识别文件确定第三管道文件可以为根据所述第二识别文件确定第二监视器(monitor)指定路径下的第三socket文件,可以记为目标虚拟机对应的monitor.sock文件,即第三管道文件,可以与目标虚拟机通信,以识别出目标虚拟机,该第三socket文件与所述第二识别文件中的第二名称紧密相关;所述第二监视器为目标虚拟机的监视器;在识别出待迁移虚拟机与目标虚拟机之后,便于在所述待迁移虚拟机与所述目标虚拟机之间生成第一管道文件。49.步骤s106:获得迁移指令,基于所述迁移指令将所述待迁移虚拟机的内存数据通过所述第一管道文件迁移至所述目标虚拟机。50.本实施例中,所述迁移指令可以为用户输入的迁移指令;基于所述迁移指令将所述待迁移虚拟机的内存数据通过所述第一管道文件迁移至所述目标虚拟机可以为发送迁移指令至待迁移虚拟机,控制将所述待迁移虚拟机的内存数据通过所述第一管道文件迁移至所述目标虚拟机。作为一种示例,libvirt基于获得的迁移指令控制发送至机,控制将所述待迁移虚拟机的内存数据通过所述第一管道文件迁移至所述目标虚拟机。51.本发明实施例提供的虚拟机热迁移的方法,通过分配身份标识和第二识别码至所述目标虚拟机;所述第二识别码为对所述第一识别码按预设方式处理获得;基于所述第一名称、所述身份标识和所述第二识别码确定所述目标虚拟机的第二识别文件;基于所述第一识别文件和所述第二识别文件生成所述待迁移虚拟机与所述目标虚拟机之间的第一管道文件;获得迁移指令,基于所述迁移指令将所述待迁移虚拟机的内存数据通过所述第一管道文件迁移至所述目标虚拟机;实现了在同一主机上的虚拟机迁移,无需跨主机进行虚拟机的迁移,在非共享场景下无需传输磁盘数据,仅拷贝内存数据,可极大缩短迁移时间。52.在本发明的一种可选实施例中,所述确定待迁移虚拟机和目标虚拟机,包括:获得所述待迁移虚拟机以及所述待迁移虚拟机的第一设备模拟器;基于获得的操作指令卸载所述第一设备模拟器以及安装第二设备模拟器;根据所述第二设备模拟器创建所述目标虚拟机。53.本发明实施例中,获得所述待迁移虚拟机以及所述待迁移虚拟机的第一设备模拟器;其中,所述第一设备模拟器可以为旧版本或低版本的虚拟机设备模拟器,又称为旧版本或低版本的qemu,所述待迁移虚拟机是基于旧版本或低版本的qemu创建,以获得旧版本或低版本的qemu进程。54.基于获得的操作指令卸载所述第一设备模拟器以及安装第二设备模拟器;其中,所述操作指令为用户输入的指令,作为一种示例,所述指令可以为命令行,该命令行可以指示相应的操作;所述第二设备模拟器可以为新版本或高版本的虚拟机设备模拟器,又称为新版本或高版本的qemu。55.根据所述第二设备模拟器创建所述目标虚拟机可以为根据新版本或高版本的qemu创建新版本或高版本的虚拟机,以获得新版本或高版本的qemu进程。56.在实际应用中,所述待迁移虚拟机可以为旧版本或低版本的虚拟机,所述目标虚拟机可以为新版本或高版本的虚拟机,物理机上存量的虚拟机一般为旧版本或低版本的虚拟机,它的活动不会受到卸载旧版本或低版本qemu操作的影响,物理机上的虚拟机管理器(libvirt)会先获得旧版本或低版本的虚拟机以及对应的旧版本或低版本qemu,在用户输入操作指令的情况下,libvirt便基于用户输入的操作指令卸载旧版本或低版本qemu,以及安装新版本或高版本的qemu,基于该新版本或高版本的qemu在同一物理机上创建新版本或高版本的虚拟机,即实现了在同一物理机出现了待迁移虚拟机和目标虚拟机共存的环境,为后续将旧版本或低版本的虚拟机升级为新版本或高版本的虚拟机做准备。57.在本发明的一种可选实施例中,所述基于所述第一名称、所述身份标识和所述第二识别码确定所述目标虚拟机的第二识别文件,包括:基于所述第一名称和所述身份标识确定第二名称;根据所述第二名称和所述第二识别码确定所述目标虚拟机的第二识别文件。58.本发明实施例中,基于所述第一名称和所述身份标识确定第二名称;其中,所述第一名称可以为名字(name);所述身份标识可以为身份标识号(identitydocument,id)。基于所述第一名称和所述身份标识确定第二名称可以为将所述第一名称和所述身份标识进行组合,获得所述第一名称和所述身份标识的组合名即为第二名称,例如第二名称可以为id-name。59.据所述第二名称和所述第二识别码确定所述目标虚拟机的第二识别文件可以理解为所述目标虚拟机的第二识别文件包括所述第二名称和所述第二识别码;其中,所述第二名称可以为id-name,所述第二识别码可以为shaduuid,所述目标虚拟机的第二识别文件可以理解为所述目标虚拟机的户口本。60.在实际应用中,由于libvirt原生不支持虚拟机在同一个节点(物理主机)上进行迁移,并且还为此进行了多重限制,主要是考虑到在同一个节点上同时存在name和uuid两个完全一样的虚拟机,libvirt无法区分区分。本实施例中,在同一主机上保持待迁移虚拟机的第一识别文件中的第一名称name和第一识别码uuid不变,而活动的目标虚拟机的第二识别文件中的第二名称处理为id-name以及第二识别码处理为shaduuid,以使libvirt能够区分待迁移虚拟机和目标虚拟机。61.在本发明的一种可选实施例中,所述基于所述第一识别文件和所述第二识别文件生成所述待迁移虚拟机与所述目标虚拟机之间的第一管道文件,包括:基于所述第一识别文件识别所述待迁移虚拟机;基于所述第二识别文件识别所述目标虚拟机;生成所述待迁移虚拟机与所述目标虚拟机之间的第一管道文件。62.本实施例中,基于所述第一识别文件识别所述待迁移虚拟机;基于所述第二识别文件识别所述目标虚拟机;生成所述待迁移虚拟机与所述目标虚拟机之间的第一管道文件可以为基于所述第一识别文件的所述第一名称确定第二管道文件;所述第二管道文件用于与所述待迁移虚拟机进行通信,以识别出所述待迁移虚拟机;基于所述第二识别文件的所述第二名称确定所述第三管道文件;所述第三管道文件用于与所述目标虚拟机进行通信,以识别出所述目标虚拟机;进而在所述待迁移虚拟机与所述目标虚拟机之间生成第一管道文件;其中,所述第二管道文件的名字与所述第一名称紧密相关;作为一种示例,可以以name的方式命名所述第二管道文件的路径和名字;所述第三管道文件的名字与所述第二名称紧密相关。作为一种示例,可以以id-name的方式命名所述第三管道文件的名字;第二管道文件和第三管道文件可以均为套接字(socket)文件,用于实现同一主机上的进程间通信,可以发送或接收数据。作为一种示例,根据所述第一识别文件确定第二管道文件可以为根据所述第一识别文件确定第一监视器(monitor)指定路径下的第二socket文件,可以记为待迁移虚拟机对应的monitor.sock文件,即第二管道文件,可以与待迁移虚拟机通信,以识别出待迁移虚拟机,该第二socket文件与所述第一识别文件中的第一名称紧密相关;所述第一监视器为待迁移虚拟机的监视器;根据所述第二识别文件确定第三管道文件可以为根据所述第二识别文件确定第二监视器(monitor)指定路径下的第三socket文件,可以记为目标虚拟机对应的monitor.sock文件,即第三管道文件,可以与目标虚拟机通信,以识别出目标虚拟机,该第三socket文件与所述第二识别文件中的第二名称紧密相关;所述第二监视器为目标虚拟机的监视器;在识别出待迁移虚拟机与目标虚拟机之后,便于在所述待迁移虚拟机与所述目标虚拟机之间生成第一管道文件。63.在本发明的一种可选实施例中,所述方法还包括:基于所述第一识别文件的所述第一名称确定第二管道文件;所述第二管道文件分别用于与所述待迁移虚拟机和所述第一设备模拟器进行通信;基于所述第二识别文件的所述第二名称确定所述第三管道文件;所述第三管道文件分别用于与所述目标虚拟机和所述第二设备模拟器进行通信。64.本实施例中,基于所述第一识别文件的所述第一名称确定第二管道文件;所述第二管道文件分别用于与所述待迁移虚拟机和所述第一设备模拟器进行通信可以为基于所述第一识别文件的所述第一名称命名第二管道文件;所述第二管道文件既可以与所述待迁移虚拟机进行通信,也可以与所述第一设备模拟器进行通信;其中,第二管道文件可以为socket文件,可以发送或接收数据;所述第一设备模拟器可以为旧版本或低版本的qemu。作为一种示例,根据所述第一识别文件确定第二管道文件可以为根据所述第一识别文件确定第一监视器(monitor)指定路径下的第二socket文件,可以记为待迁移虚拟机对应的monitor.sock文件,即第二管道文件,可以与待迁移虚拟机通信,以识别出待迁移虚拟机,该第二socket文件与所述第一识别文件中的第一名称紧密相关;所述第一监视器为待迁移虚拟机的监视器。65.基于所述第二识别文件的所述第二名称确定所述第三管道文件;所述第三管道文件分别用于与所述目标虚拟机和所述第二设备模拟器进行通信可以为基于所述第二识别文件的所述第二名称命名第三管道文件;所述第三管道文件既可以与所述目标移虚拟机进行通信,也可以与所述第二设备模拟器进行通信;其中,第三管道文件可以为socket文件,可以发送或接收数据;所述第二设备模拟器可以为新版本或高版本的qemu。作为一种示例,根据所述第二识别文件确定第三管道文件可以为根据所述第二识别文件确定第二监视器(monitor)指定路径下的第三socket文件,可以记为目标虚拟机对应的monitor.sock文件,即第三管道文件,可以与目标虚拟机通信,以识别出目标虚拟机,该第三socket文件与所述第二识别文件中的第二名称紧密相关;所述第二监视器为目标虚拟机的监视器。66.为了方便理解,这里示例出虚拟机热迁移的方法中虚拟机管理器对待迁移虚拟机和目标虚拟机进行管理的架构示意图;图2为本发明实施例虚拟机热迁移的方法中虚拟机管理器对待迁移虚拟机和目标虚拟机进行管理的架构示意图;如图2所述,待迁移虚拟机21位于主机29上,主机29内有虚拟机监视器28,虚拟机管理器20获得所述待迁移虚拟机21以及所述待迁移虚拟机的第一虚拟机设备模拟器26,基于获得用户的操作指令卸载所述第一虚拟机设备模拟器26以及安装第二虚拟机设备模拟器27,根据所述第二虚拟机设备模拟器27创建所述目标虚拟机22,即实现待迁移虚拟机21和目标虚拟机22位于同一主机29上;获得所述待迁移虚拟机21的第一识别文件的name和uuid,虚拟机管理器20通过第一识别文件的name和uuid可以识别所述待迁移虚拟机21,分配id和shaduuid至目标虚拟机22,以确定所述目标虚拟机22的第二识别文件的id-name和shaduuid,虚拟机管理器20通过第二识别文件的id-name和shaduuid可以识别所述目标虚拟机22,进而在所述待迁移虚拟机21和所述目标虚拟机22之间生成第一管道文件25,根据name分配第二管道文件23,以及id-name分配第三管道文件24;所述第二管道文件23既可以与所述待迁移虚拟机21通信,也可以与所述第一设备模拟器26通信;所述第三管道文件24既可以与所述所述目标虚拟机22通信,也可以与所述第二虚拟机设备模拟器27通信;在获得用户的迁移指令时,虚拟机管理器20控制所述第二管道文件23向所述待迁移虚拟机21发送迁移所述待迁移虚拟机的内存数据至所述目标虚拟机22的命令,该命令控制所述待迁移虚拟机21的内存数据通过所述第一管道文件25迁移至所述目标虚拟机22,以完成迁移的过程。67.在本发明的一种可选实施例中,所述方法还包括:注册所述第二识别文件至所述主机的管理表中;基于所述第二识别文件和所述待迁移虚拟机的第一资源文件创建所述目标虚拟机的第二资源文件;所述第一资源文件包括日志文件、结构性的标记文件和连接信息文件;根据所述第一识别文件中的第一名称访问所述第一资源文件,以及根据所述第二识别文件中的所述第二名称访问第二资源文件。68.本实施例中,主要考虑到libvirt对虚拟机的管理主要是对虚拟机对应的识别文件构成的管理表进行管理,待迁移虚拟机本身就存在主机中,已经注册过。注册所述第二识别文件至所述主机的管理表中;其中,所述管理表可以为散列表(hashtable),也可以称为哈希表。69.所述第一资源文件包括以下至少之一:日志文件、结构性的标记文件和连接信息文件;其中,日志文件可以记为log文件,用于显示待迁移虚拟机进程的运行情况;结构性的标记文件可以记为xml文件,用于显示待迁移虚拟机结构;连接信息文件记为connection文件,用于在虚拟机进程发生异常操作的情况下,通过连接信息文件调用函数清除异常操作。70.基于所述第二识别文件和所述待迁移虚拟机的第一资源文件创建所述目标虚拟机的第二资源文件主要由于资源文件的命名和路径与识别文件紧密相关,libvirt可以复制所述待迁移虚拟机的第一资源文件,并以第二识别文件重新命名和路径,即为第二资源文件,所述第二资源文件包括日志文件、结构性的标记文件和连接信息文件。作为一种示例,libvirt可以根据所述待迁移虚拟机的第一资源文件为目标虚拟机创建一个log文件、xml文件、connection文件,并使用第二识别文件的id-name的方式重新命名名称,以及使用第二识别文件中的shaduuid的方式重新命名路径,从而可以避免在待迁移虚拟机和目标虚拟机的名称和识别码均相同(即为name和uuid)的情况下,对共享资源访问出现冲突。71.根据所述第一识别文件中的第一名称访问所述第一资源文件,以及根据所述第二识别文件中的所述第二名称访问第二资源文件。可以理解为libvirt可以通过名称对第一资源文件和第二资源文件进行区分,以解决同一主机上的不同版本虚拟机对共享资源访问冲突的问题。72.在本发明的一种可选实施例中,所述获得迁移指令,基于所述迁移指令将所述待迁移虚拟机的内存数据通过所述第一管道文件迁移至所述目标虚拟机之后,所述方法还包括:73.删除所述待迁移虚拟机;在所述主机的管理表中更新所述第二识别码为所述第一识别码。74.本实施例中,在获得迁移指令,基于所述迁移指令将所述待迁移虚拟机的内存数据通过所述第一管道文件迁移至所述目标虚拟机之后可以理解为所述待迁移虚拟机迁移至目标虚拟机已经完成;删除所述待迁移虚拟机可以理解为从管理表中移除待迁移虚拟机。75.在所述主机的管理表中更新所述第二识别码为所述第一识别码可以理解为将所述主机的管理表中shaduuid替换为uuid。76.为了方便理解,这里提供虚拟机热迁移方法的一种应用场景示意图;图3为本发明实施例虚拟机热迁移方法的一种应用场景示意图;如图3所述,以待迁移虚拟机为旧版本虚拟机(oldvm);目标虚拟机为新版本虚拟机(newvm);旧版本虚拟机31和新版本虚拟机32位于同一主机39上,主机39内虚拟机监视器38,第一管道文件为第一监视器套接字文件(第一monitor.sock);第二管道文件为第二监视器套接字文件(第二monitor.sock);第一设备模拟器为旧版本虚拟机设备模拟器(oldqemu);第二设备模拟器为新版本虚拟机设备模拟器(newqemu);旧版本虚拟机31的第一识别文件中的第一名称为name、第一识别码为uuid;根据name创建第一monitor.sock文件;新版本虚拟机32的第二识别文件中的第二名称为id-name、第二识别码为shaduuid;根据id-name创建第二monitor.sock文件;第一识别文件和第二识别文件可以均注册到虚拟机管理器30对应的管理表中,在图3中没有示出第一识别文件和第二识别文件;在旧版本虚拟机31需要升级为新版本虚拟机32的情况下,虚拟机管理器30可以通过查询管理表中name和id-name以区分旧版本虚拟机31和新版本虚拟机32,以将旧版本虚拟机31升级为新版本虚拟机32,具体的过程如下:虚拟机管理器30通过安装新版本虚拟机设备模拟器37创建新版本虚拟机32;获得旧版本虚拟机31的第一识别文件中的name和uuid,分配id和shaduuid至新版本虚拟机32,以确定所述新版本虚拟机32的第二识别文件的id-name和shaduuid,根据name分配第一监视器套接字文件35,以及id-name分配第二监视器套接字文件33;在获得用户的迁移指令时,虚拟机管理器30通过第一监视器套接字文件35向旧版本虚拟机31发迁移旧版本虚拟机31的内存数据至新版本虚拟机32的命令,该命令控制所述待迁移虚拟机31的内存数据通过所述第一套监视器接字文件35迁移至所述目标虚拟机32,以完成迁移的过程。在旧版本虚拟机31的内存数据迁移至新版本虚拟机32后,虚拟机管理器30从管理表中移除待迁移虚拟机,再将所述主机的管理表中shaduuid替换为uuid。77.本实施例提出一种虚拟机热迁移的装置,图4为本发明实施例虚拟机热迁移的装置的组成结构示意图,如图4所示,所述装置400包括:确定单元401、获得单元402、分配单元403、生成单元404和迁移单元405,其中:78.所述确定单元401,用于确定待迁移虚拟机和目标虚拟机;所述待迁移虚拟机和所述目标虚拟机位于同一主机上;所述获得单元402,用于获得所述待迁移虚拟机的第一识别文件;根据所述第一识别文件的第一名称和第一识别码识别所述待迁移虚拟机;所述分配单元403,用于分配身份标识和第二识别码至所述目标虚拟机;所述第二识别码为对所述第一识别码按预设方式处理获得;所述确定单元401,还用于基于所述第一名称、所述身份标识和所述第二识别码确定所述目标虚拟机的第二识别文件;根据所述第二识别文件的第二名称和第二识别码识别所述目标虚拟机;所述生成单元404,用于基于所述第一识别文件和所述第二识别文件生成所述待迁移虚拟机与所述目标虚拟机之间的第一管道文件;所述迁移单元405,用于获得迁移指令,基于所述迁移指令将所述待迁移虚拟机的内存数据通过所述第一管道文件迁移至所述目标虚拟机。79.在其他的实施例中,所述确定单元401,还用于获得所述待迁移虚拟机以及所述待迁移虚拟机的第一设备模拟器;基于获得的操作指令卸载所述第一设备模拟器以及安装第二设备模拟器;根据所述第二设备模拟器创建所述目标虚拟机。80.在其他的实施例中,所述确定单元401,还用于基于所述第一名称确定第二管道文件;所述第二管道文件分别用于与所述待迁移虚拟机和所述第一设备模拟器进行通信;基于所述第二名称确定所述第三管道文件;所述第三管道文件分别用于与所述目标虚拟机和所述第二设备模拟器进行通信。81.在其他的实施例中,所述确定单元401,还用于基于所述第一名称和所述身份标识确定所述第二名称;根据所述第二名称和所述第二识别码确定所述目标虚拟机的第二识别文件。82.在其他的实施例中,所述装置400还包括:注册单元、创建单元和访问单元,其中:83.所述注册单元,用于注册所述第二识别文件至所述主机的管理表中;所述创建单元,用于基于所述注册单元注册的所述第二识别文件和所述待迁移虚拟机的第一资源文件创建所述目标虚拟机的第二资源文件;所述第一资源文件包括以下至少之一:日志文件、结构性的标记文件和连接信息文件;所述访问单元,用于根据所述第一识别文件中的所述第一名称访问所述第一资源文件,以及根据所述第二识别文件中的所述第二名称访问第二资源文件。84.在其他的实施例中,所述装置400还包括更新单元,还用于删除所述待迁移虚拟机;在所述主机的管理表中更新所述第二识别码为所述第一识别码。85.以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本发明装置实施例中未披露的技术细节,请参照本发明方法实施例的描述而理解。86.需要说明的是,本发明实施例中,如果以软件功能模块的形式实现上述的虚拟机热迁移的方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术实施例本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台虚拟机热迁移的设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:u盘、移动硬盘、只读存储器(readonlymemory,rom)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本发明实施例不限制于任何特定的硬件和软件结合。87.对应地,本发明实施例提供一种虚拟机热迁移的设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述实施例提供的虚拟机热迁移的方法中的步骤。88.对应地,本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例提供的虚拟机热迁移的方法中的步骤。89.这里需要指出的是:以上存储介质和设备实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本发明存储介质和设备实施例中未披露的技术细节,请参照本发明方法实施例的描述而理解。90.需要说明的是,图5为本发明实施例中虚拟机热迁移的设备的一种硬件实体结构示意图,如图5所示,该虚拟机热迁移的设备500的硬件实体包括:处理器501和存储器503,可选地,所述虚拟机热迁移的设备500还可以包括通信接口502。91.可以理解,存储器503可以是易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(rom,readonlymemory)、可编程只读存储器(prom,programmableread-onlymemory)、可擦除可编程只读存储器(eprom,erasableprogrammableread-onlymemory)、电可擦除可编程只读存储器(eeprom,electricallyerasableprogrammableread-onlymemory)、磁性随机存取存储器(fram,ferromagneticrandomaccessmemory)、快闪存储器(flashmemory)、磁表面存储器、光盘、或只读光盘(cd-rom,compactdiscread-onlymemory);磁表面存储器可以是磁盘存储器或磁带存储器。易失性存储器可以是随机存取存储器(ram,randomaccessmemory),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(sram,staticrandomaccessmemory)、同步静态随机存取存储器(ssram,synchronousstaticrandomaccessmemory)、动态随机存取存储器(dram,dynamicrandomaccessmemory)、同步动态随机存取存储器(sdram,synchronousdynamicrandomaccessmemory)、双倍数据速率同步动态随机存取存储器(ddrsdram,doubledataratesynchronousdynamicrandomaccessmemory)、增强型同步动态随机存取存储器(esdram,enhancedsynchronousdynamicrandomaccessmemory)、同步连接动态随机存取存储器(sldram,synclinkdynamicrandomaccessmemory)、直接内存总线随机存取存储器(drram,directrambusrandomaccessmemory)。本发明实施例描述的存储器503旨在包括但不限于这些和任意其它适合类型的存储器。92.上述本发明实施例揭示的方法可以应用于处理器501中,或者由处理器501实现。处理器501可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器501中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器501可以是通用处理器、数字虚拟机热迁移的器(dsp,digitalsignalprocessor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。处理器501可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本发明实施例所公开的方法的步骤,可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于存储介质中,该存储介质位于存储器503,处理器501读取存储器503中的信息,结合其硬件完成前述方法的步骤。93.在示例性实施例中,虚拟机热迁移的设备可以被一个或多个应用专用集成电路(asic,applicationspecificintegratedcircuit)、dsp、可编程逻辑器件(pld,programmablelogicdevice)、复杂可编程逻辑器件(cpld,complexprogrammablelogicdevice)、现场可编程门阵列(fpga,field-programmablegatearray)、通用处理器、控制器、微控制器(mcu,microcontrollerunit)、微处理器(microprocessor)、或其他电子元件实现,用于执行前述方法。94.在本发明所提供的几个实施例中,应该理解到,所揭露的方法和装置,可以通过其他的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个观测量,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其他形式的。95.上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例的目的。96.本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(rom,read-onlymemory)、磁碟或者光盘等各种可以存储程序代码的介质。97.或者,本发明实施例上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术实施例本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台虚拟机热迁移的设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、rom、磁碟或者光盘等各种可以存储程序代码的介质。98.本发明是实例中记载的基于虚拟机热迁移的方法、装置和计算机存储介质只以本发明所述实施例为例,但不仅限于此,只要涉及到该基于虚拟机热迁移的方法、装置和计算机存储介质均在本发明的保护范围。99.应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本发明的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。100.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。101.以上所述,仅为本发明的实施方式,但本发明的保护范围并不局限于此,任何熟悉本
技术领域
:的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1