CN108205506B - 虚拟机热迁移的方法、虚拟机内存数据处理方法、服务器和虚拟机系统 - Google Patents
虚拟机热迁移的方法、虚拟机内存数据处理方法、服务器和虚拟机系统 Download PDFInfo
- Publication number
- CN108205506B CN108205506B CN201810119431.8A CN201810119431A CN108205506B CN 108205506 B CN108205506 B CN 108205506B CN 201810119431 A CN201810119431 A CN 201810119431A CN 108205506 B CN108205506 B CN 108205506B
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- memory
- network card
- source
- virtual
- 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
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种虚拟机热迁移的方法和服务器,以解决在SR‑IOV技术场景下虚拟机的热迁移无法实现的问题。实施例的虚拟机热迁移方法和服务器,通过设置写脏标志,使得待迁移的虚拟机的虚拟PCIE设备对接收到的数据进行至少一次的读写操作,所述待迁移的虚拟机的虚拟机管理器能够识别出数据的变化,并将变化的数据迁移到目的虚拟机,解决了现有技术虚拟机热迁移过程中因数据通过虚拟PCIE设备,虚拟机管理器不能感知数据导致的数据无法迁移问题。
Description
技术领域
本发明涉及信息技术领域,特别涉及一种虚拟机热迁移的方法、虚拟机内存数据处理 方法、服务器和虚拟机系统。
背景技术
SR-IOV(Single-Root I/O Virtualization,单根IO虚拟化)是一种IO虚拟化技术,该 技术可以在一个物理PCIE(Peripheral Component Interconnection Express英文,快捷 外围部件互连标准)设备上虚拟化出多个虚拟的PCIE设备,虚拟PCIE设备只能通过原物理 PCIE设备进行配置和管理,每个虚拟PCIE设备可以有独立的中断和DMA(DirectMemory Access,直接内存存取),这样虚拟机可以直接通过虚拟PCIE设备访问物理PCIE设备,不需 要VMM(Virtual Machine Monitor,虚拟机监控器)的干预。以支持SR-IOV的网卡为例,各 虚拟PCIE设备对应一块虚拟网卡,虚拟PCIE设备与对应的虚拟网卡之间直接进行报文的交 换,不需要VMM参与。从而能够降低VMM的开销,提升了虚拟交换的性能
服务器在实现虚拟化后,可以方便地实现虚拟机的热迁移,而虚拟机热迁移的关键就是 内存的迁移,通常虚拟机内存的迁移可为三个阶段:
迭代预拷贝阶段:虚拟机迁移过程启动后,其依然运行在源服务器上,虚拟机业务不中 断,首先把虚拟机的全部内存复制到目的服务器上,然后向目的服务器不停的迭代复制虚 拟机中变化的内存数据。当迭代到需要复制的内存小到一定的门限后,进入停机拷贝阶段。
停机拷贝阶段:虚拟机停机,业务中断,拷贝虚拟机的残余内存数据。
恢复阶段:目的虚拟机完成运行前的恢复处理,启动目的虚拟机,整个迁移过程完成。
在使用SR-IOV技术的场景下,由于数据传输过程不需要VMM的参与,当以PCIE为接口的 设备传输数据是,VMM无法控制数据的传输行为,在虚拟机热迁移过程中,导致这些设备的 数据在虚拟机热迁移过程中无法迁移,虚拟机的热迁移无法实现。
发明内容
本发明实施例提供一种虚拟机热迁移的方法、虚拟机内存数据处理方法、服务器和虚 拟机系统,以解决现有技术中虚拟机的热迁移时数据无法迁移完整的问题。
本发明实施例提供了一种虚拟机热迁移的方法,所述方法包括:
虚拟PCIE设备接收启动虚拟机热迁移的第一消息;其中,所述虚拟机处理的数据通过 物理PCIE设备传输,所述虚拟PCIE设备是运行在所述物理PCIE设备的虚拟设备,所述虚拟 机通过所述虚拟PCIE设备访问所述物理PCIE设备;
所述虚拟PCIE设备根据所述第一消息,设置写脏标志;所述写脏标志用于对经过所述 虚拟PCIE设备的数据进行至少一次的读写操作。
可选的,所述虚拟PCIE设备根据所述第一消息设置写脏标志包括:
所述虚拟PCIE设备根据所述第一消息,由所述虚拟PCIE设备的驱动设置写脏标志;或 所述虚拟PCIE设备设置独立的变量作为写脏标志。
可选的,所述虚拟PCIE设备的驱动设置写脏标志包括:
所述虚拟PCIE设备在所述虚拟PCIE设备驱动预留的数据空间内,设置写脏标志。
可选的,在所述虚拟PCIE设备接收启动虚拟机热迁移的第一消息之前,所述方法还包 括:
在所述虚拟PCIE设备与所述物理PCIE设备之间建立消息通道,以接收启动虚拟机热迁 移的第一消息。
可选的,所述在所述虚拟PCIE设备与所述物理PCIE设备之间建立消息通道包括:
在所述虚拟PCIE设备的驱动和所述物理PCIE设备的驱动分别预留一段数据空间,通过 该预留的数据空间实现消息的传递。
可选的,所述虚拟PCIE设备和所述物理PCIE设备通过预留的数据空间实现消息的传递 包括:
所述虚拟机的网卡通过在所述预留的数据空间之间通过直接内存存取DMA的方式传递 消息,来实现所述虚拟PCIE设备和所述物理PCIE设备之间的消息通信;或者,
在所述虚拟机的网卡预留一个用于通信的数据空间,并将预留的数据空间分别共享给 所述虚拟PCIE设备和所述物理PCIE设备。
可选的,所述方法应用于适用单根输入输出虚拟化SR-IOV技术的虚拟机热迁移过程中, 所述虚拟PCIE设备接收所述虚拟机热迁移完成的第二消息时,根据所述第二消息取消所述 写脏标志。
本发明实施例还提供了一种服务器,所述服务器上运行至少一个虚拟机,所述至少一 个虚拟机处理的数据通过物理PCIE设备传输,所述物理PCIE设备上运行至少一个虚拟PCIE 设备,每个虚拟机对应一个虚拟PCIE设备;所述至少一个虚拟PCIE设备中的第一虚拟PCIE 设备包括:
接收单元,用于接收与所述第一虚拟PCIE设备对应的虚拟机热启动迁移的第一消息;
设置单元,用于根据所述第一消息,设置写脏标志;所述写脏标志用于对经过所述第 一虚拟PCIE设备的数据进行至少一次的读写操作。
可选的,所述设置单元根据所述第一消息设置写脏标志包括:
所述设置单元根据所述第一消息,由所述第一虚拟PCIE设备的驱动设置写脏标志;或 所述设置单元设置独立的变量作为写脏标志。
可选的,所述设置单元通过驱动设置写脏标志包括:
所述设置单元在所述第一虚拟PCIE设备驱动预留的数据空间内,设置写脏标志。
可选的,在所述第一虚拟PCIE设备还包括消息通道建立单元;
所述消息通道建立单元,用于在所述第一虚拟PCIE设备与所述物理PCIE设备之间建立 消息通道,以以使所述接收单元通过建立的消息通道接收启动所述第一虚拟PCIE设备对应 的虚拟机热迁移的第一消息。
可选的,所述消息通道建立单元在所述第一虚拟PCIE设备与所述物理PCIE设备之间建 立消息通道包括:
消息通道建立单元在所述第一虚拟PCIE设备的驱动和所述物理PCIE设备的驱动分别预 留一段数据空间,通过该预留的数据空间实现所述第一虚拟PCIE设备和所述物理PCIE设备 之间的消息传递。
可选的,所述第一虚拟PCIE设备和所述物理PCIE设备通过预留的数据空间实现消息的 传递包括:
通过所述虚拟机的网卡在所述预留的数据空间之间通过直接内存存取DMA的方式传递 消息,来实现所述虚拟PCIE设备和所述物理PCIE设备之间的消息通信;或者,
所述消息通道建立单元在所述虚拟机的网卡预留一个用于通信的数据空间,并将预留 的数据空间分别共享给所述虚拟PCIE设备和所述物理PCIE设备。
可选的,所述第一虚拟PCIE设备对应的虚拟机适用单根输入输出虚拟化SR-IOV技术实 现虚拟化;
所述设置单元在接收到所述第一虚拟PCIE设备对应的虚拟机热迁移完成的第二消息 时,根据所述第二消息取消所述写脏标志。
本发明实施例还提供了第一种虚拟机内存数据处理方法,应用于虚拟机系统,所述虚 拟机系统包括虚拟机迁移管理单元、主机设备和物理网卡,所述主机设备上运行至少一台 虚拟机,所述物理网卡上运行至少一个虚拟网卡,每台虚拟机至少对应一个虚拟网卡,所 述物理网卡通过直接存储器访问的方式读写所述每台虚拟机的内存上的数据;
当所述虚拟机系统中的任意一台虚拟机发生迁移,所述方法包括:
待迁移的源虚拟机接收所述虚拟机迁移管理单元发送的启动虚拟机迁移的消息;
所述源虚拟机根据所述启动虚拟机迁移的消息,设置写脏标志;
在确定所述物理网卡向所述源虚拟机的内存中写入了新数据时,所述源虚拟机根据所 述写脏标志,从所述源虚拟机的内存中读出所述新数据,以及将所述新数据再次写入所述 源虚拟机的内存。
可选的,所述源虚拟机接收所述虚拟机迁移管理单元发送的所述源虚拟机的停机消息;
所述源虚拟机根据所述源虚拟机的停机消息,将所述源虚拟机对应的虚拟网卡的状态 信息写入所述源虚拟机的内存中。
可选的,所述源虚拟机接收所述物理网卡发送的状态信息读取通知,其中,所述物理 网卡根据接收到的所述虚拟机迁移管理单元发送的所述源虚拟机的停机消息,将所述源虚 拟机对应的虚拟网卡的状态信息写入所述源虚拟机的内存之后发送所述状态信息读取通 知;
根据所述状态信息读取通知,所述源虚拟机从所述源虚拟机的内存中读出所述源虚拟 机的虚拟网卡的状态信息,以及将所述状态信息再次写入所述源虚拟机的内存。
可选的,所述源虚拟机根据所述写脏标志,从所述源虚拟机的内存中读出所述新数据, 以及将所述新数据再次写入所述源虚拟机的内存,包括:
所述源虚拟机确定所述新数据在所述源虚拟机的内存中占用的内存页,根据所述写脏 标志,读出所述内存页中的数据,并将读出的数据再次写入所述内存页。
可选的,所述源虚拟机接收虚拟机迁移管理单元发送的启动虚拟机迁移的消息包括:
所述源虚拟机中的虚拟网卡的驱动读取所述源虚拟机的虚拟网卡上的缓存器或寄存 器,获取所述虚拟机迁移管理单元在所述缓存器或寄存器上直接写入的所述启动虚拟机迁 移的消息。
可选的,所述方法还包括:
所述源虚拟机清除所述写脏标志。
本发明实施例还提供第二种虚拟机内存数据处理方法,应用于虚拟机系统,所述虚拟 机系统包括虚拟机迁移管理单元、主机设备和物理网卡,所述主机设备上运行至少一台虚 拟机,所述物理网卡上运行至少一个虚拟网卡,每台虚拟机至少对应一个虚拟网卡,所述 物理网卡通过直接存储器访问的方式读写所述每台虚拟机的内存上的数据;
当所述虚拟机系统中的任意一台虚拟机发生迁移,所述方法包括:
待迁移的源虚拟机接收所述虚拟机迁移管理单元发送的所述源虚拟机的停机消息;
所述源虚拟机根据所述源虚拟机的停机消息,将所述源虚拟机对应的虚拟网卡的状态 信息写入所述源虚拟机的内存中。
可选的,在接收所述源虚拟机的停机消息之前,所述方法还包括:
所述源虚拟机接收所述虚拟机迁移管理单元发送的启动虚拟机迁移的消息;
所述源虚拟机根据所述启动虚拟机迁移的消息,设置写脏标志;
在确定所述物理网卡向所述源虚拟机的内存中写入了新数据时,所述源虚拟机根据所 述写脏标志,从所述源虚拟机的内存中读出所述新数据,以及将所述新数据再次写入所述 源虚拟机的内存。
可选的,所述源虚拟机根据所述写脏标志,从所述源虚拟机的内存中读出所述新数据, 以及将所述新数据再次写入所述源虚拟机的内存,包括:
所述源虚拟机确定所述新数据在所述源虚拟机的内存中占用的内存页,根据所述写脏 标志,读出所述内存页中的数据,并将读出的数据再次写入所述内存页。
可选的,所述方法还包括:
所述源虚拟机清除所述写脏标志。
本发明实施例还提供第三种虚拟机内存数据处理方法,应用于虚拟机系统,所述虚拟 机系统包括虚拟机迁移管理单元、主机设备和物理网卡,所述主机设备上运行至少一台虚 拟机,所述物理网卡上运行至少一个虚拟网卡,每台虚拟机至少对应一个虚拟网卡,所述 物理网卡通过直接存储器访问的方式读写所述每台虚拟机的内存上的数据;
当所述虚拟机系统中的任意一台虚拟机发生迁移,所述方法包括:
待迁移的源虚拟机接收所述物理网卡发送的状态信息读取通知,其中,所述物理网卡 根据接收到的所述虚拟机迁移管理单元发送的所述源虚拟机的停机消息,将所述源虚拟机 对应的虚拟网卡的状态信息写入所述源虚拟机的内存之后发送所述状态信息读取通知;
根据所述状态信息读取通知,所述源虚拟机从所述源虚拟机的内存中读出所述源虚拟 机的虚拟网卡的状态信息,以及将所述状态信息再次写入所述源虚拟机的内存。
可选的,在接收所述状态信息读取通知之前,所述方法还包括:
所述源虚拟机接收所述虚拟机迁移管理单元发送的启动虚拟机迁移的消息;
所述源虚拟机根据所述启动虚拟机迁移的消息,设置写脏标志;
在确定所述物理网卡向所述源虚拟机的内存中写入了新数据时,所述源虚拟机根据所 述写脏标志,从所述源虚拟机的内存中读出所述新数据,以及将所述新数据再次写入所述 源虚拟机的内存。
可选的,所述源虚拟机根据所述写脏标志,从所述源虚拟机的内存中读出所述新数据, 以及将所述新数据再次写入所述源虚拟机的内存,包括:
所述源虚拟机确定所述新数据在所述源虚拟机的内存中占用的内存页,根据所述写脏 标志,读出所述内存页中的数据,并将读出的数据再次写入所述内存页。
可选的,所述方法还包括:
所述源虚拟机清除所述写脏标志。
本发明实施例还提供了第四种虚拟机迁移方法,应用于虚拟机系统,所述虚拟机系统 包括虚拟机迁移管理单元、主机设备和物理网卡,所述主机设备上运行至少一台虚拟机, 所述物理网卡上运行至少一个虚拟网卡,每台虚拟机至少对应一个虚拟网卡,所述物理网 卡通过直接存储器访问的方式读写所述每台虚拟机的内存上的数据;
所述方法包括:
待迁移的源虚拟机接收虚拟机迁移管理单元发送的启动虚拟机迁移的消息;
所述源虚拟机根据所述启动虚拟机迁移的消息,设置写脏标志;
在确定所述物理网卡向所述源虚拟机的内存中写入了新数据时,所述源虚拟机根据所 述写脏标志,从所述源虚拟机的内存中读出所述新数据,以及将所述新数据再次写入所述 源虚拟机的内存;
所述源虚拟机接收所述虚拟机迁移管理单元发送的所述源虚拟机的停机消息;
所述源虚拟机根据所述源虚拟机的停机消息,将所述源虚拟机对应的虚拟网卡的状态 信息写入所述源虚拟机的内存中;
所述虚拟机迁移管理单元触发内存迭代操作,所述内存迭代操作用于将所述源虚拟机 的内存中的数据迁移到目标虚拟机。
可选的,所述源虚拟机根据所述写脏标志,从所述源虚拟机的内存中读出所述新数据, 以及将所述新数据再次写入所述源虚拟机的内存,包括:
所述源虚拟机确定所述新数据在所述源虚拟机的内存中占用的内存页,根据所述写脏 标志,读出所述新数据占用的内存页中的数据,并将读出的数据再次写入所述新数据占用 的内存页。
可选的,所述方法还包括:
所述源虚拟机将所述状态信息占用的内存地址通知所述虚拟机迁移管理单元,以使得 所述虚拟机迁移管理单元将所述状态信息占用的内存地址通知所述目标虚拟机;
可选的,所述方法还包括:
所述目标虚拟机根据所述状态信息占用的内存地址,从迁移的内存数据中获取所述状 态信息;
根据所述状态信息,所述目标虚拟机恢复所述目标虚拟机对应的虚拟网卡。
本发明实施例还提供了第五种虚拟机迁移方法,应用于虚拟机系统,所述虚拟机系统 包括虚拟机迁移管理单元、物理设备和和网卡,所述物理设备上运行至少一台虚拟机,所 述网卡上运行至少一个虚拟网卡,每台虚拟机对应一个虚拟网卡,所述每台虚拟机通过对 应的虚拟网卡收发报文;
所述方法包括:
待迁移的源虚拟机接收虚拟机迁移管理单元发送的启动虚拟机迁移的消息;
所述源虚拟机根据所述启动虚拟机迁移的消息,设置写脏标志;
在确定所述源虚拟机的内存中写入了新数据时,所述源虚拟机根据所述写脏标志,从 所述源虚拟机的内存中读出所述新数据,以及将所述新数据再次写入所述源虚拟机的内存;
所述源虚拟机接收所述网卡发送的状态信息读取通知,所述状态信息读取通知是所述 网卡将所述源虚拟机对应的虚拟网卡的状态信息写入所述源虚拟机的内存之后发送的,所 述网卡在接收到所述虚拟机迁移管理单元发送的所述源虚拟机的停机消息之后触发将所述 状态信息写入所述源虚拟机的内存的步骤;
根据所述状态信息读取通知,所述源虚拟机从所述源虚拟机的内存中读出所述源虚拟 机的虚拟网卡的状态信息,以及将所述状态信息再次写入所述源虚拟机的内存;
所述虚拟机迁移管理单元触发内存迭代操作,所述内存迭代操作用于将所述源虚拟机 的内存中的数据迁移到目标虚拟机。
可选的,所述源虚拟机根据所述写脏标志,从所述源虚拟机的内存中读出所述新数据, 以及将所述新数据再次写入所述源虚拟机的内存,包括:
所述源虚拟机确定所述新数据在所述源虚拟机的内存中占用的内存页,根据所述写脏 标志,读出所述新数据占用的内存页中的数据,并将读出的数据再次写入所述新数据占用 的内存页。
可选的,所述方法还包括:
所述源虚拟机将所述状态信息占用的内存页的信息通知所述虚拟机迁移管理单元,以 使得所述虚拟机迁移管理单元将所述状态信息占用的内存页的信息通知所述目标虚拟机。
可选的,所述方法还包括:
所述目标虚拟机根据所述状态信息占用的内存页的信息,从迁移的内存数据中获取所 述状态信息;
根据所述状态信息,所述目标虚拟机恢复所述目标虚拟机对应的虚拟网卡。
本发明实施例还提供了第一种虚拟机系统,所述虚拟机系统包括虚拟机迁移管理单元、 主机设备和物理网卡,所述主机设备上运行至少一台虚拟机,所述物理网卡上运行至少一 个虚拟网卡,每台虚拟机至少对应一个虚拟网卡,所述物理网卡通过直接存储器访问的方 式读写所述每台虚拟机的内存上的数据;所述虚拟机系统中的第一虚拟机包括:
接收单元,用于接收所述虚拟机迁移管理单元发送的启动虚拟机迁移的消息;
设置单元,用于根据所述启动虚拟机迁移的消息,设置写脏标志;
处理单元,用于在确定所述物理网卡向所述第一虚拟机的内存中写入了新数据时,根 据所述写脏标志,从所述第一虚拟机的内存中读出所述新数据,并将所述新数据再次写入 所述第一虚拟机的内存。
可选的,所述接收单元,还用于接收所述虚拟机迁移管理单元发送的所述第一虚拟机 的停机消息;
所述处理单元,还用于根据所述第一虚拟机的停机消息,将所述源虚拟机对应的虚拟 网卡的状态信息写入所述第一虚拟机的内存中。
可选的,所述接收单元,还用于接收所述物理网卡发送的状态信息读取通知,其中, 所述物理网卡根据接收到的所述虚拟机迁移管理单元发送的所述第一虚拟机的停机消息, 将所述第一虚拟机对应的虚拟网卡的状态信息写入所述第一虚拟机的内存之后发送所述状 态信息读取通知;
所述处理单元,还用于根据所述状态信息读取通知,所述第一虚拟机从所述第一虚拟 机的内存中读出所述第一虚拟机的虚拟网卡的状态信息,并将所述状态信息再次写入所述 第一虚拟机的内存。
可选的,所述处理单元根据所述写脏标志,从所述第一虚拟机的内存中读出所述新数 据,并将所述新数据再次写入所述第一虚拟机的内存,包括:
所述处理单元确定所述新数据在所述第一虚拟机的内存中占用的内存页,根据所述写 脏标志,读出所述内存页中的数据,并将读出的数据再次写入所述内存页。
可选的,所述接收单元接收虚拟机迁移管理单元发送的启动虚拟机迁移的消息包括:
所述接收单元读取所述第一虚拟机的虚拟网卡上的缓存器或寄存器,获取所述虚拟机 迁移管理单元在所述缓存器或寄存器上直接写入的所述启动虚拟机迁移的消息。
可选的,所述第一虚拟机还包括清除单元,用于清除所述写脏标志。
本发明实施例还提供了第二种虚拟机系统,所述虚拟机系统包括虚拟机迁移管理单元、 主机设备和物理网卡,所述主机设备上运行至少一台虚拟机,所述物理网卡上运行至少一 个虚拟网卡,每台虚拟机至少对应一个虚拟网卡,所述物理网卡通过直接存储器访问的方 式读写所述每台虚拟机的内存上的数据;所述虚拟机系统中的第一虚拟机包括:
接收单元,用于接收所述虚拟机迁移管理单元发送的所述第一虚拟机的停机消息;
处理单元,用于根据所述第一虚拟机的停机消息,将所述第一虚拟机对应的虚拟网卡 的状态信息写入所述第一虚拟机的内存中。
可选的,所述接收单元还用于,接收所述虚拟机迁移管理单元发送的启动虚拟机迁移 的消息;
相应的,所述第一虚拟机还包括设置单元,用于根据所述启动虚拟机迁移的消息,设 置写脏标志;
所述处理单元,还用于在确定所述物理网卡向所述第一虚拟机的内存中写入了新数据 时,根据所述写脏标志,从所述第一虚拟机的内存中读出所述新数据,并将所述新数据再 次写入所述第一虚拟机的内存。
可选的,所述处理单元根据所述写脏标志,从所述第一虚拟机的内存中读出所述新数 据,并将所述新数据再次写入所述第一虚拟机的内存,包括:
所述处理单元确定所述新数据在所述第一虚拟机的内存中占用的内存页,根据所述写 脏标志,读出所述内存页中的数据,并将读出的数据再次写入所述内存页。
可选的,所述第一虚拟机还包括清除单元,用于清除所述写脏标志。
本发明实施例还提供了第三种虚拟机系统,所述虚拟机系统包括虚拟机迁移管理单元、 主机设备和物理网卡,所述主机设备上运行至少一台虚拟机,所述物理网卡上运行至少一 个虚拟网卡,每台虚拟机至少对应一个虚拟网卡,所述物理网卡通过直接存储器访问的方 式读写所述每台虚拟机的内存上的数据;所述虚拟机系统中的第一虚拟机包括:
接收单元,用于接收所述物理网卡发送的状态信息读取通知,所述状态读取通知是所 述物理网卡根据接收到的所述虚拟机迁移管理单元发送的所述第一虚拟机的停机消息,将 所述第一虚拟机对应的虚拟网卡的状态信息写入所述第一虚拟机的内存之后发送所述状态 信息读取通知;
处理单元,用于从所述第一虚拟机的内存中读出所述第一虚拟机的虚拟网卡的状态信 息,并将所述状态信息再次写入所述第一虚拟机的内存。
可选的,所述接收单元,还用于接收所述虚拟机迁移管理单元发送的启动虚拟机迁移 的消息;
相应的,所述第一虚拟机还包括设置单元,用于根据所述启动所述虚拟机迁移的消息, 设置写脏标志;
所述处理单元,还用于在确定所述物理网卡向所述第一虚拟机的内存中写入了新数据 时,根据所述写脏标志,从所述第一虚拟机的内存中读出所述新数据,并将所述新数据再 次写入所述第一虚拟机的内存。
可选的,所述处理单元根据所述写脏标志,从所述第一虚拟机的内存中读出所述新数 据,并将所述新数据再次写入所述第一虚拟机的内存,包括:
所述处理单元确定所述新数据在所述第一虚拟机的内存中占用的内存页,根据所述写 脏标志,读出所述内存页中的数据,并将读出的数据再次写入所述内存页。
可选的,所述第一虚拟机还包括,清除单元,用于清除所述写脏标志。
本发明实施例还提供了第四种虚拟机系统,所述虚拟机系统包括虚拟机迁移管理单元、 主机设备和物理网卡,所述主机设备上运行至少一台虚拟机,所述物理网卡上运行至少一 个虚拟网卡,每台虚拟机至少对应一个虚拟网卡,所述物理网卡通过直接存储器访问的方 式读写所述每台虚拟机的内存上的数据;所述虚拟机系统中的第一虚拟机包括:
接收单元,用于接收虚拟机迁移管理单元发送的启动虚拟机迁移的消息,并接收所述 虚拟机迁移管理单元发送的所述第一虚拟机的停机消息;
设置单元,用于根据所述启动虚拟机迁移的消息,设置写脏标志;
处理单元,用于在确定所述物理网卡向所述第一虚拟机的内存中写入了新数据时,根 据所述写脏标志,从所述第一虚拟机的内存中读出所述新数据,并将所述新数据再次写入 所述第一虚拟机的内存,并根据所述第一虚拟机的停机消息,将所述第一虚拟机对应的虚 拟网卡的状态信息写入所述第一虚拟机的内存中;
相应的,所述虚拟机迁移管理单元还用于触发内存迭代操作,所述内存迭代操作用于 将所述第一虚拟机的内存中的数据迁移到第二虚拟机,所述第二虚拟机是所述第一虚拟机 迁移的目的虚拟机。
可选的,所述处理单元根据所述写脏标志,从所述第一虚拟机的内存中读出所述新数 据,并将所述新数据再次写入所述第一虚拟机的内存,包括:
所述处理单元确定所述新数据在所述第一虚拟机的内存中占用的内存页,根据所述写 脏标志,读出所述新数据占用的内存页中的数据,并将读出的数据再次写入所述新数据占 用的内存页。
可选的,所述第一虚拟机还包括:
通知单元,用于将所述状态信息占用的内存地址通知所述虚拟机迁移管理单元,以使 得所述虚拟机迁移管理单元将所述状态信息占用的内存地址通知所述第二虚拟机。
可选的,所述第二虚拟机根据所述状态信息占用的内存地址,从迁移的内存数据中获 取所述状态信息;根据所述状态信息恢复所述第二虚拟机对应的虚拟网卡。
本发明实施例还提供了第五种虚拟机系统,所述虚拟机系统包括虚拟机迁移管理单元、 物理设备和和网卡,所述物理设备上运行至少一台虚拟机,所述网卡上运行至少一个虚拟 网卡,每台虚拟机对应一个虚拟网卡,所述每台虚拟机通过对应的虚拟网卡收发报文;所 述虚拟机系统中的第一虚拟机包括:
接收单元,用于接收虚拟机迁移管理单元发送的启动虚拟机迁移的消息,并接收所述 物理网卡发送的状态信息读取通知,所述状态信息读取通知是所述物理网卡在接收到所述 虚拟机迁移管理单元发送的所述第一虚拟机的停机消息之后触发将所述状态信息写入所述 第一虚拟机的内存之后发送的;
设置单元,用于根据所述启动虚拟机迁移的消息,设置写脏标志;
处理单元,用于在确定所述第一虚拟机的内存中写入了新数据时,所述第一虚拟机根 据所述写脏标志,从所述第一虚拟机的内存中读出所述新数据,并将所述新数据再次写入 所述第一虚拟机的内存;还处理单元还用于根据所述状态信息读取通知,从所述第一虚拟 机的内存中读出所述第一虚拟机的虚拟网卡的状态信息,并将所述状态信息再次写入所述 第一虚拟机的内存;
相应的,所述虚拟机迁移管理单元还用于触发内存迭代操作,所述内存迭代操作用于 将所述第一虚拟机的内存中的数据迁移到第二虚拟机,所述第二虚拟机是所述第一虚拟机 迁移的目的虚拟机。
可选的,所述处理单元根据所述写脏标志,从所述第一虚拟机的内存中读出所述新数 据,并将所述新数据再次写入所述第一虚拟机的内存,包括:
所述处理单元确定所述新数据在所述第一虚拟机的内存中占用的内存页,根据所述写 脏标志,读出所述新数据占用的内存页中的数据,并将读出的数据再次写入所述新数据占 用的内存页。
可选的,所述第一虚拟机还包括:
通知单元,用于将所述状态信息占用的内存页的信息通知所述虚拟机迁移管理单元, 以使得所述虚拟机迁移管理单元将所述状态信息占用的内存页的信息通知所述第二虚拟 机。
可选的,所述第二虚拟机根据所述状态信息占用的内存页的信息,从迁移的内存数据 中获取所述状态信息;根据所述状态信息,所述目标虚拟机恢复所述目标虚拟机对应的虚 拟网卡。
本发明实施例提供的虚拟机热迁移的方法、虚拟机内存数据处理方法、服务器和虚拟 机系统,通过设置写脏标志,使得待迁移的虚拟机的虚拟PCIE设备对接收到的数据进行至 少一次的读写操作,所述待迁移的虚拟机的虚拟机管理器能够识别出数据的变化,并将变 化的数据迁移到目的虚拟机,解决了现有技术虚拟机热迁移过程中因数据通过虚拟PCIE设 备,虚拟机管理器不能感知数据导致的数据无法迁移问题。同时,源虚拟机能够根据停机 消息,将所述源虚拟机对应的虚拟网卡的状态信息写入所述源虚拟机的内存中,或待迁移 的源虚拟机根据物理网卡发送的状态信息读取通知,从所述源虚拟机的内存中读出所述源 虚拟机的虚拟网卡的状态信息,以及将所述状态信息再次写入所述源虚拟机的内存,实现 了在虚拟机迁移过程中虚拟网卡的状态迁移。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技 术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明 的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以 根据这些附图获得其他的附图。
图1为本发明实施例一种虚拟机热迁移的方法流程示意图;
图2为本发明实施例一种服务器200的结构示意图;
图3为本发明实施例一种服务器200另一种实现方式的结构示意图;
图4为本发明实施例提供的虚拟机系统的结构图;
图5为本发明实施例的虚拟机迁移的方法的流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地 描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明 中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施 例,都应属于本发明保护的范围。
为解决现有技术中,在SR-IOV技术场景下无法实现虚拟机的热迁移的问题,本发明实 施例公开了一种虚拟机热迁移的方法。
参考图1,图1为本发明实施例一种虚拟机热迁移的方法流程示意图,所述方法包括:
步骤100:虚拟PCIE设备接收启动虚拟机热迁移的第一消息;其中,所述虚拟机处理的 数据通过物理PCIE设备传输,所述虚拟PCIE设备是运行在所述物理PCIE设备的虚拟设备, 所述虚拟机通过所述虚拟PCIE设备访问所述物理PCIE设备;
步骤102:所述虚拟PCIE设备根据所述第一消息,设置写脏标志;所述写脏标志用于对 经过所述虚拟PCIE设备的数据进行至少一次的读写操作;
步骤104:所述虚拟PCIE设备接收所述虚拟机热迁移完成的第二消息时,根据所述第二 消息取消所述写脏标志。
通过上述设置写脏标志,使得待迁移的虚拟机的虚拟PCIE设备对接收到的数据进行至 少一次的读写操作,所述待迁移的虚拟机的虚拟机管理器能够识别出数据的变化,并将变 化的数据迁移到目的虚拟机,解决了现有技术虚拟机热迁移过程中因数据通过虚拟PCIE设 备,虚拟机管理器不能感知数据导致的数据无法迁移问题。
作为一种可选的实现方式,在所述步骤100之前,本发明实施例的一种虚拟机热迁移的 方法还包括:
在所述虚拟PCIE设备与所述物理PCIE设备之间建立消息通道,以接收启动虚拟机热迁 移的第一消息;
其中,建立所述虚拟PCIE设备与所述物理PCIE设备之间的消息通道,可以通过如下方 式建立:
建立所述虚拟PCIE设备的驱动与物理PCIE设备的驱动之间的消息通道,也就是在所述 虚拟PCIE设备的驱动和所述物理PCIE设备的驱动分别预留一段数据空间,通过该预留的数 据空间实现消息的传递。
所述虚拟PCIE设备与所述物理PCIE设备之间通过预留的数据空间传递消息,可以通过 下述两种方式实现:
所述虚拟机的网卡通过在所述预留的数据空间之间通过DMA的方式传递消息,来实现所 述虚拟PCIE设备和所述物理PCIE设备之间的消息通信;或者,
在所述虚拟机的网卡预留一个用于通信的数据空间,并将预留的数据空间分别共享给 所述虚拟PCIE设备和所述物理PCIE设备。
其中,所述虚拟机的网卡是所述虚拟机使用的物理网卡。
具体的,物理PCIE设备和虚拟PCIE设备之间消息的传递可以按照如下方式实现:
物理PCIE设备将要发往虚拟PCIE设备的消息写入该物理PCIE设备数据空间,该消息携 带有源物理PCIE设备的地址和目的虚拟PCIE设备的地址;网卡检测到数据空间有新的消息 时,根据目的虚拟PCIE设备地址将消息搬移到对应的虚拟PCIE设备的数据空间,并通知虚 拟PCIE设备获取所述消息。对应的虚拟PCIE设备从其数据空间获取所述消息。
可选的,所述虚拟PCIE设备与所述物理PCIE设备之间建立的消息通道是由所述虚拟机 的虚拟机管理器或虚拟机迁移管理模块创建的。
上述步骤100中,可以是所述虚拟机的迁移管理模块下发启动虚拟机热迁移的第一消息 给所述物理PCIE设备,所述物理PCIE设备通过上述建立的消息通道将所述第一消息发送给 所述虚拟PCIE设备。本发明实施例的步骤102中,所述虚拟PCIE设备设置的写脏标志,可以 设置在所述虚拟PCIE设备驱动预留的数据空间内,也可以设置独立的变量作为写脏标志。 具体的,可以是所述虚拟PCIE设备的驱动设置该写脏标志。
所述虚拟PCIE设备设置写脏标志后,所述虚拟PCIE设备对接收到的数据进行至少一次 的读写操作,例如进行一个字长的读写操作,这样,所述虚拟机的虚拟机管理器能够识别 出数据已经被修改,在进行虚拟机的热迁移时能够迁移该数据。
虚拟机迁移管理模块启动虚拟机热迁移的内存迭代拷贝,为了使虚拟机的热迁移达到 更好的效果,还可以在虚拟PCIE设备和物理PCIE设备的驱动中分别预留另一份数据空间, 该另一份数据空间用于存放网卡与相应的虚拟PCIE设备之间的状态数据,该状态数据用于 在虚拟机迁移后在目的虚拟机上恢复该状态数据,实现虚拟机状态的无缝切换。
在上述步骤104之前,本发明实施例的一种虚拟机热迁移的方法还包括:
在完成最后一轮虚拟机热迁移的迭代拷贝时,虚拟机迁移管理模块通过物理PCIE设备 下发消息给网卡和对应的虚拟PCIE设备,停止数据的收发;
所述网卡接收到消息后,停止针对所述虚拟PCIE设备的数据收发;
所述虚拟PCIE设备将所述网卡停止接收数据前接收到的所有数据所在的页根据设置的 写脏标志写脏。这样能够实现对所有的数据实现迁移,提高了虚拟机热迁移的精度。可选 的,如果还存在其它通过DMA修改的变量的数据,也将其锁在的页根据设置的写脏标志写脏。
当所述虚拟机迁移完成准备启动目的虚拟机时,虚拟机迁移管理模块通过目的服务器 的物理PCIE设备,下发启动目的虚拟机的启动消息给网卡,使得所述网卡将上述保存的网 卡与相应虚拟PCIE设备之间的状态数据,通DMA方式发送给目的虚拟机对应的虚拟PCIE设 备,以实现虚拟机状态从源虚拟机到目的虚拟机的切换。
在所述虚拟机迁移完成后,虚拟机迁移管理模块发送迁移完成的第二消息给所述虚拟 机虚拟PCIE设备,以取消写脏标志。
本发明实施例还提供了一种服务器,在运行在所述服务器上的虚拟机采用SR-IOV技术 实现虚拟化。参考图2,图2为本发明实施例一种服务器200的结构示意图。
所述服务器200上运行至少一个虚拟机,所述至少一个虚拟机处理的数据通过物理PCIE 设备传输,所述物理PCIE设备上运行至少一个虚拟PCIE设备,每个虚拟机对应一个虚拟PCIE 设备;所述至少一个虚拟PCIE设备中的第一虚拟PCIE设备包括:
接收单元201,用于接收与所述第一虚拟PCIE设备对应的虚拟机热启动迁移的第一消 息;
设置单元202,用于根据所述第一消息,设置写脏标志;所述写脏标志用于对经过所述 第一虚拟PCIE设备的数据进行至少一次的读写操作;并在接收到所述第一虚拟PCIE设备对 应的虚拟机热迁移完成的第二消息时,根据所述第二消息取消所述写脏标志。
通过上述设置单元202设置写脏标志,使得待迁移的虚拟机的第一虚拟PCIE设备对接收 到的数据进行至少一次的读写操作,所述待迁移的虚拟机的虚拟机管理器能够识别出数据 的变化,并将变化的数据迁移到目的虚拟机,解决了现有技术虚拟机热迁移过程中因数据 通过虚拟PCIE设备,虚拟机管理器不能感知数据导致的数据无法迁移问题。
其中,所述设置单元202根据所述第一消息设置写脏标志可以包括:
所述设置单元根据所述第一消息,由所述第一虚拟PCIE设备的驱动设置写脏标志;或 所述设置单元设置独立的变量作为写脏标志。
所述设置单元202通过驱动设置写脏标志可以包括:
所述设置单元在所述第一虚拟PCIE设备驱动预留的数据空间内,设置写脏标志。
作为一种可选的实现方式,所述第一虚拟PCIE设备还包括消息通道建立单元203;参考 图3,图3为本发明实施例一种服务器另一种实现方式结构示意图;
所述消息通道建立单元203,用于在所述第一虚拟PCIE设备与所述物理PCIE设备之间建 立消息通道,以使所述接收单元201通过建立的消息通道接收启动所述第一虚拟PCIE设备对 应的虚拟机热迁移的第一消息。
作为一种可选的实现方式,所述消息通道建立单元203在所述第一虚拟PCIE设备与所述 物理PCIE设备之间建立消息通道包括:
消息通道建立单元203在所述第一虚拟PCIE设备的驱动和所述物理PCIE设备的驱动分 别预留一段数据空间,通过该预留的数据空间实现所述第一虚拟PCIE设备和所述物理PCIE 设备之间的消息传递。
相应的,所述第一虚拟PCIE设备和所述物理PCIE设备通过预留的数据空间实现消息的 传递包括:
通过所述虚拟机的网卡在所述预留的数据空间之间通过直接内存存取DMA的方式传递 消息,来实现所述虚拟PCIE设备和所述物理PCIE设备之间的消息通信;或者,
所述消息通道建立单元在所述虚拟机的网卡预留一个用于通信的数据空间,并将预留 的数据空间分别共享给所述虚拟PCIE设备和所述物理PCIE设备。
本发明实施例上述服务器200中虚拟PCIE设备的实现方式,可以参考图1中方法的实 现方式来实现,不再赘述。
基于上述的本发明实施例实现虚拟机热迁移的方法,本发明实施例还提供了基于上述 方法的虚拟机的内存数据的处理方法和虚拟机迁移的方法。以下将进一步介绍。
在介绍本发明实施例方法之前,进一步描述本发明实施例的系统架构如下:
参考图4,图4为本发明实施例虚拟机系统的结构示意图。所述虚拟机系统包括:主机设备10、物理网卡20和虚拟机迁移管理单元30,主机设备10与物理网卡20通过接口 相连,主机设备10上运行n台虚拟机(n大于等于1),物理网卡20上虚拟出n个虚拟网 卡,每个虚拟网卡对应一台虚拟机,每台虚拟机上运行有虚拟网卡对应的虚拟网卡驱动, 每台虚拟机的虚拟网卡驱动用于获取所述每台虚拟机的内存地址,并将所述每台虚拟机的 内存地址通过每台虚拟机对应的虚拟网卡通知到物理网卡20,物理网卡20保存所述每台虚 拟机的内存地址。例如:虚拟机VM1的虚拟网卡驱动1与虚拟网卡1相连,虚拟机VM1的 虚拟网卡驱动获取虚拟机VM1的内存地址,并将虚拟机VM1的内存地址通过虚拟网卡1通 知到物理网卡20,物理网卡20保存所述虚拟机VM1的内存地址。上述的物理网卡20具体 实现可以是本发明前述实施例中的物理PCIe设备,上述的虚拟网卡具体可以对应到本发明 前述实施例中的虚拟PCIe设备(本实施例中虚拟网卡与虚拟网卡的驱动分别单独列出,虚 拟网卡由物理网卡20提供,而虚拟网卡对应的驱动相应地装载在了虚拟机上,而前述实施 例中虚拟PCIe设备是一较大的概念,包含了虚拟PCIe设备以及其对应的驱动,本领域技 术人员应当理解本发明实施例的方案,以上区别仅在于表述的不同)。
当每台虚拟机的虚拟网卡接收到报文后,物理网卡20会根据所述每台虚拟机的内存 地址,通过所述主机设备与所述物理网卡之间的接口,以直接存储器访问的DMA方式读写 所述每台虚拟机的内存上的数据。也就是说,物理网卡20直接从主机设备10读取所述每台虚拟机的内存上的数据,或者直接向主机设备10写入数据到每台虚拟机的内存。例如:虚拟网卡1接收到虚拟机VM1发出或收到的报文后,物理网卡20根据保存的虚拟机VM1的 内存地址,通过主机设备10与物理网卡20之间的接口,以DMA方式从主机设备10读取VM1 内存上的数据或以DMAD方式将虚拟网卡1接收到的报文数据写入虚拟机VM1的内存。
作为一种可选的实现方式,图4中所示的虚拟机(例如VM1、VM2等)可以包含:虚拟机上运行的操作系统、虚拟机上运行的应用、虚拟机上运行的虚拟网卡的驱动等等。
图4中,主机设备10是包含中央处理器CPU、内存、硬盘等的设备,虚拟机是从主机设备10虚拟出的虚拟设备,图4所示主机设备10与虚拟机(VM1、VM2)等分开是为清楚 显示虚拟机、网络网卡以及主机设备之间的连接关系所示,并不代表主机设备10与虚拟机 是分离的。
本发明实施例中的虚拟机系统,包括虚拟机迁移管理单元、主机设备和物理网卡,例 如,图4中虚拟机系统包括虚拟机迁移管理单元30、主机设备10和物理网卡20。
虚拟机迁移管理单元30在图4中运行在主机设备之上,作为一种软件模块实现,而本 发明实施例的其它具体实现中,虚拟机迁移管理单元30也可以直接由一台具备管理功能的 服务器来实现,本领域技术人员还可以采用其他的实现方式,例如采用一台虚拟机实现虚 拟机迁移管理单元,本发明实施例不做限定。
当某一虚拟机系统中的一个虚拟机迁移到另一个虚拟机时,例如图5所示(图5所示 的方法所运行的虚拟机系统中,虚拟机迁移管理单元可以有多个,待迁移的源虚拟机的虚 拟机迁移管理单元与目标虚拟机的虚拟机迁移管理单元为不同的单元,其他实施例中,源 虚拟机和目标虚拟机可以具备相同的虚拟机迁移管理单元),当第一虚拟机(源虚拟机)要 迁移到第二虚拟机(目标虚拟机)时,由于物理网卡通过直接存储器访问的方式读写所述 每台虚拟机的内存上的数据,第一虚拟机内存上的数据的读写并不经过所述第一虚拟机或 者所述第一虚拟机的管理器,因此在启动第一虚拟机的热迁移时,所述第一虚拟机在迁移 发生之后其内存数据上发生的改变的数据不能通过内存迭代的方式迁移到第二虚拟机,为 解决此问题,本发明实施例提供一种虚拟机的迁移方法,如图5所示,如下包括:
步骤501:当第一虚拟机发生迁移,第一虚拟机的迁移管理单元下发启动所述第一虚 拟机迁移的消息给第一虚拟机,以启动所述第一虚拟机的迁移;
其中,所述第一虚拟机的迁移管理单元下发启动第一虚拟机迁移的消息给所述第一虚 拟机,可以通过如下方式实现:
方式一:第一虚拟机的第一虚拟网卡的驱动与第一物理网卡的驱动各配置一个消息收、 发buffer,所述第一虚拟机迁移管理单元发送报文消息到第一物理网卡的驱动的buffer, 该报文消息有源地址和目的地址,目的地址为第一虚拟网卡,所述第一物理网卡的驱动从 该发送buffer DMA读取数据,并且依据该报文消息的目的地址,将消息DMA写到所述第一 虚拟网卡的驱动的buffer中,并且通过中断通知所述第一虚拟网卡的驱动进行消息处理。
方式二:第一物理网卡的驱动与第一虚拟机的第一虚拟网卡驱动各配置一个消息收、 发寄存器,所述第一虚拟机迁移管理单元发消息时将报文消息写入所述第一物理网卡的驱 动的消息寄存器,该报文消息有源地址和目的地址,目的地址为第一虚拟网卡,所述第一 物理网卡的驱动检查到消息写入后根据消息的目的地址,将消息移到所述第一虚拟网卡驱 动的消息寄存器中,并且中断通知接收所述第一虚拟网卡驱动进行消息处理。
步骤502:所述第一虚拟机根据接收到的启动所述第一虚拟机迁移的消息,设置写脏 标志;
本发明实施例中,设置写脏标志可以通过多种方式实现。例如在所述第一虚拟网卡的 驱动的预留空间内设置,或在所述第一虚拟网卡对应的芯片中设置,或者用独立的变量来 设置等等,本发明实施例不限定写脏标志的存放位置,只要所述第一虚拟机能够获取写脏 标志即可。该写脏标志也可以称为写脏标识,用来指示第一虚拟机的内存中的某些数据需 要该第一虚拟机进行重新处理,以使得所述第一虚拟机能够获知该部分数据,所述重新处 理可以是所述第一虚拟机将该部分数据从内存中读出再写入的操作。
步骤503:在确定第一物理网卡向所述第一虚拟机的内存中写入了新数据时,所述第 一虚拟机根据所述写脏标志,从所述第一虚拟机的内存中读出所述新数据,并将所述新数 据再次写入所述第一虚拟机的内存;
本发明实施例中,所述第一虚拟机可以有多种方式确定所述第一物理网卡向自身的内 存中写入了新数据,例如通过接收到的所述第一物理网卡发送的中断通知。
本发明实施例中,所述第一虚拟机从所述第一虚拟机的内存中读出所述新数据,并将 所述新数据再次写入所述第一虚拟机的内存包括:所述第一虚拟机从所述第一虚拟机的内 存中按页进行至少一次的读写操作;或所述第一虚拟机从所述第一虚拟机的内存中按块进 行至少一次的读写操作。所述至少一次的读写操作,可以是对一个bit位的数据进行至少 一次读取并写入的操作。
步骤504:所述第一虚拟机迁移管理单元或者第二虚拟机的迁移管理单元启动所述第 一虚拟机热迁移的内存迭代拷贝;
即,将所述第一虚拟机的内存中的数据迁移到第二虚拟机。
步骤505:当完成所述第一虚拟机最后一轮的内存迭代拷贝时,所述第一虚拟机迁移 管理单元或者第二虚拟机迁移管理单元发送所述第一虚拟机的停机消息,所述第一虚拟机 的停机消息发送到所述第一虚拟机或者所述第一物理网卡;若所述第一虚拟机的停机消息 发送到所述第一虚拟机,执行步骤506A,若所述第一虚拟机的停机消息发送到所述第一物 理网卡,执行步骤506B;
本发明实施例中,在完成所述第一虚拟机最后一轮的内存迭代拷贝时,才触发所述停 机消息,在其他的实施例中,该停机消息的触发时机还可以灵活决定。
其中,所述停机消息是一个新的消息,主要用于通知所述第一虚拟网卡停止工作或者 停止收发报文,表示所述第一虚拟机的迁移进入另一个阶段,本领域技术人员可以通过各 种方式实现,消息名称仅为其中一个示例。
步骤506A:所述第一虚拟机根据所述停机消息,将所述第一虚拟网卡的状态信息写入 所述源虚拟机的内存中;
其中,所述第一虚拟网卡的状态信息包括但不限于:恢复计数器,寄存器,buffer指 针,上下文内容,DMA状态等等,这些状态信息存储在第一物理网卡上。
由于本发明实施例中,由于第一虚拟网卡运行在第一物理网卡上,该第一虚拟网卡的 状态信息也保存在该第一物理网卡的存储介质中,而为了实现第一虚拟机的成功迁移,该 第一虚拟网卡的状态信息也需要迁移到第二虚拟机侧,使得第二虚拟网卡上恢复工作。因 此,本发明实施例中,在发出停机消息后,触发将第一虚拟网卡的状态信息写入到第一虚 拟机的内存中,以使得这些状态信息能够跟随其他的第一虚拟机的内存数据一起迁移到第 二虚拟机侧,最终保证第一虚拟机的成功迁移。
步骤506B:所述第一物理网卡根据接收到的所述第一或第二虚拟机迁移管理单元发送 的所述第一虚拟机的停机消息,将所述第一虚拟网卡的状态信息写入所述第一虚拟机的内 存,并发送所述状态信息读取通知给所述第一虚拟机;所述第一虚拟机根据所述状态信息 读取通知,从所述第一虚拟机的内存中读出所述第一虚拟网卡的状态信息,并将所述第一 虚拟网卡的状态信息再次写入所述源虚拟机的内存;
步骤507:第二虚拟机迁移管理单元触发第二虚拟网卡状态的恢复,并启动所述第二 虚拟机。
所述第二虚拟网卡要恢复的状态,是所述第一虚拟网卡在所述第一虚拟机迁移前的状 态,由于所述第一虚拟网卡的状态在所述第一虚拟机停止收发数据后保存在所述第一虚拟 机的内存中并迁移到所述第二虚拟机的内存中,因此,能够实现所述第二虚拟机所对应的 第二虚拟网卡的状态恢复。
作为可选的实现方式,在本发明实施例中,所述第一虚拟机迁移管理单元触发所述第 二虚拟网卡状态的恢复可以包括:
所述第一虚拟机迁移管理单元将所述第一虚拟网卡的状态信息在所述第一虚拟机的内 存中的位置发送给所述第二虚拟机,所述第二虚拟机根据所述状态信息占用的内存地址, 从所述第二虚拟机的内存中获取所述状态信息;或
所述第一虚拟机迁移管理单元将所述第一虚拟网卡的状态信息在所述第一虚拟机的内 存中的位置发送给所述第二虚拟网卡驱动,使得所述第二虚拟网卡驱动获取所述第二虚拟 机内存中的所述第一虚拟网卡的状态信息,并进行状态的恢复,所述第二虚拟网卡驱动是 所述第一虚拟机与所述第二虚拟网卡之间的接口;或者,
所述第二虚拟机迁移管理单元通知所述第二虚拟机将所述第一虚拟网卡的状态信息恢 复到第二物理网卡的芯片上,并通知所述第二虚拟网卡的驱动从所述芯片获取所述第一虚 拟网卡的状态以恢复第二虚拟网卡的状态。
作为可选的实现方式,所述第二虚拟机可以在所述第二虚拟网卡驱动状态恢复后再启 动,也可以先启动再进行所述第二虚拟网卡状态的恢复,本发明实施例不限定其先后顺序。
需要说明的是,在本发明实施例中,所述写脏标志用于对需要迁移的虚拟机内存的数 据进行至少一次的读写操作,实现虚拟机内存数据在虚拟机迁移过程中的有效迁移。在所 述第一虚拟机迁移完成后,可以取消所述写脏标志。例如,可以在所述步骤505完成后, 所述第一虚拟机清除所述写脏标志;或者在所述步骤507,所述第一虚拟机迁移到所述第二 虚拟机时,所述第二虚拟机清除所述写脏标志。
在上述虚拟机的迁移方法中,虚拟机的内存数据的处理是本发明实施例的一个关键实 现,本发明实施例也提供相应的虚拟机的内存数据处理方法。
本发明实施例的第一种虚拟机内存处理方法。
本发明实施例的一种虚拟机内存处理方法应用于虚拟机系统,所述虚拟机系统包括虚 拟机迁移管理单元、主机设备和物理网卡,所述主机设备上运行至少一台虚拟机,所述物 理网卡上运行至少一个虚拟网卡,每台虚拟机至少对应一个虚拟网卡,所述物理网卡通过 直接存储器访问的方式读写所述每台虚拟机的内存上的数据;
当所述虚拟机系统中的任意一台虚拟机发生迁移,该方法包括:
S1:待迁移的源虚拟机接收所述虚拟机迁移管理单元发送的启动虚拟机迁移的消息;
S2:所述源虚拟机根据所述启动虚拟机迁移的消息,设置写脏标志;
S3:在确定所述物理网卡向所述源虚拟机的内存中写入了新数据时,所述源虚拟机根 据所述写脏标志,从所述源虚拟机的内存中读出所述新数据,以及将所述新数据再次写入 所述源虚拟机的内存。
上述方法通过设置写脏标志,在确定所述物理网卡向所述源虚拟机的内存中写入了新 数据时,从所述源虚拟机的内存中读出所述新数据,以及将所述新数据再次写入所述源虚 拟机的内存,使得待迁移的源虚拟机的虚拟机迁移管理单元能够识别出数据的变化,并将 变化的数据迁移到目的虚拟机,解决了现有技术虚拟机迁移过程中虚拟机迁移管理单元不 能感知数据导致的数据无法迁移问题。
在具体实现过程中,本发明实施例的第一种虚拟机内存处理方法还可以包括:
S4A:所述源虚拟机接收所述虚拟机迁移管理单元发送的所述源虚拟机的停机消息;
所述源虚拟机根据所述源虚拟机的停机消息,将所述源虚拟机对应的虚拟网卡的状态 信息写入所述源虚拟机的内存中。
或者,本发明实施例的第一种虚拟机内存处理方法还可以包括:
S4B:所述源虚拟机接收所述物理网卡发送的状态信息读取通知,其中,所述物理网卡 根据接收到的所述虚拟机迁移管理单元发送的所述源虚拟机的停机消息,将所述源虚拟机 对应的虚拟网卡的状态信息写入所述源虚拟机的内存之后发送所述状态信息读取通知;
根据所述状态信息读取通知,所述源虚拟机从所述源虚拟机的内存中读出所述源虚拟 机的虚拟网卡的状态信息,以及将所述状态信息再次写入所述源虚拟机的内存。
上述方法S4A或步骤S4B取决于虚拟机的迁移管理单元将虚拟机的停机消息通知到虚拟 机还是物理网卡,两种实现方式都能够使得所述源虚拟机的虚拟网卡的状态信息写入源虚 拟机的内存,使得所述源虚拟机的虚拟网卡的状态信息也能够随源虚拟机迁移到目的虚拟 机,从而实现虚拟机虚拟网卡状态的迁移。
S5:所述源虚拟机清除所述写脏标志。
可选的,上述步骤S3中,所述源虚拟机根据所述写脏标志,从所述源虚拟机的内存中 读出所述新数据,以及将所述新数据再次写入所述源虚拟机的内存,可以包括:
所述源虚拟机确定所述新数据在所述源虚拟机的内存中占用的内存页,根据所述写脏 标志,读出所述内存页中的数据,并将读出的数据再次写入所述内存页。
可选的,上述步骤S1中,所述源虚拟机接收虚拟机迁移管理单元发送的启动虚拟机迁 移的消息可以包括:
所述源虚拟机中的虚拟网卡的驱动读取所述源虚拟机的虚拟网卡上的缓存器或寄存 器,获取所述虚拟机迁移管理单元在所述缓存器或寄存器上直接写入的所述启动虚拟机迁 移的消息。
本发明实施例的第二种虚拟机内存处理方法。
该第二种虚拟机内存数据处理方法应用于虚拟机系统,所述虚拟机系统包括虚拟机迁 移管理单元、主机设备和物理网卡,所述主机设备上运行至少一台虚拟机,所述物理网卡 上运行至少一个虚拟网卡,每台虚拟机至少对应一个虚拟网卡,所述物理网卡通过直接存 储器访问的方式读写所述每台虚拟机的内存上的数据;
当所述虚拟机系统中的任意一台虚拟机发生迁移,所述方法包括:
S1:待迁移的源虚拟机接收所述虚拟机迁移管理单元发送的所述源虚拟机的停机消息;
S2:所述源虚拟机根据所述源虚拟机的停机消息,将所述源虚拟机对应的虚拟网卡的 状态信息写入所述源虚拟机的内存中。
上述方法能够使得所述源虚拟机的虚拟网卡的状态信息写入源虚拟机的内存,使得所 述源虚拟机的虚拟网卡的状态信息也能够随源虚拟机迁移到目的虚拟机,从而实现虚拟机 虚拟网卡状态的迁移。
在具体实现过程中,在接收所述源虚拟机的停机消息之前,本发明实施例的第二种虚 拟机内存处理方法还可以包括:
S0:所述源虚拟机接收所述虚拟机迁移管理单元发送的启动虚拟机迁移的消息;
所述源虚拟机根据所述启动虚拟机迁移的消息,设置写脏标志;
在确定所述物理网卡向所述源虚拟机的内存中写入了新数据时,所述源虚拟机根据所 述写脏标志,从所述源虚拟机的内存中读出所述新数据,以及将所述新数据再次写入所述 源虚拟机的内存。
上述通过设置写脏标志,在确定所述物理网卡向所述源虚拟机的内存中写入了新数据 时,从所述源虚拟机的内存中读出所述新数据,以及将所述新数据再次写入所述源虚拟机 的内存,使得待迁移的源虚拟机的虚拟机迁移管理单元能够识别出数据的变化,并将变化 的数据迁移到目的虚拟机,解决了现有技术虚拟机迁移过程中虚拟机迁移管理单元不能感 知数据导致的数据无法迁移问题。
S3:所述源虚拟机清除所述写脏标志。
其中,所述S0或S3的具体实现方式和实施顺序可以很灵活,本领域技术人员可以根据 本发明上述其他实施例灵活确定。
作为一种可选的实现方式,上述步骤S0中所述源虚拟机根据所述写脏标志,从所述源 虚拟机的内存中读出所述新数据,以及将所述新数据再次写入所述源虚拟机的内存,包括:
所述源虚拟机确定所述新数据在所述源虚拟机的内存中占用的内存页,根据所述写脏 标志,读出所述内存页中的数据,并将读出的数据再次写入所述内存页。
本发明实施例的第三种虚拟机内存处理方法。本发明实施例的三种虚拟机内存处理方 法应用于虚拟机系统,应用于虚拟机系统,所述虚拟机系统包括虚拟机迁移管理单元、主 机设备和物理网卡,所述主机设备上运行至少一台虚拟机,所述物理网卡上运行至少一个 虚拟网卡,每台虚拟机至少对应一个虚拟网卡,所述物理网卡通过直接存储器访问的方式 读写所述每台虚拟机的内存上的数据;
当所述虚拟机系统中的任意一台虚拟机发生迁移,所述方法包括:
S1:待迁移的源虚拟机接收所述物理网卡发送的状态信息读取通知,其中,所述物理 网卡根据接收到的所述虚拟机迁移管理单元发送的所述源虚拟机的停机消息,将所述源虚 拟机对应的虚拟网卡的状态信息写入所述源虚拟机的内存之后发送所述状态信息读取通 知;
S2:根据所述状态信息读取通知,所述源虚拟机从所述源虚拟机的内存中读出所述源 虚拟机的虚拟网卡的状态信息,以及将所述状态信息再次写入所述源虚拟机的内存。
通过上述方法能够使得所述源虚拟机的虚拟网卡的状态信息写入源虚拟机的内存,使 得所述源虚拟机的虚拟网卡的状态信息也能够随源虚拟机迁移到目的虚拟机,从而实现虚 拟机虚拟网卡状态的迁移。
在具体实现过程中,本发明实施例的第三种虚拟机内存处理方法还可以包括:
S0:所述源虚拟机接收所述虚拟机迁移管理单元发送的启动虚拟机迁移的消息;所述 源虚拟机根据所述启动虚拟机迁移的消息,设置写脏标志;在确定所述物理网卡向所述源 虚拟机的内存中写入了新数据时,所述源虚拟机根据所述写脏标志,从所述源虚拟机的内 存中读出所述新数据,以及将所述新数据再次写入所述源虚拟机的内存。
S3:所述源虚拟机清除所述写脏标志。
其中,所述S0或S3的具体实现方式和实施顺序可以很灵活,本领域技术人员可以根据 本发明上述其他实施例灵活确定。
作为一种可选的实现方式,上述步骤S0中所述源虚拟机根据所述写脏标志,从所述源 虚拟机的内存中读出所述新数据,以及将所述新数据再次写入所述源虚拟机的内存,包括:
所述源虚拟机确定所述新数据在所述源虚拟机的内存中占用的内存页,根据所述写脏 标志,读出所述内存页中的数据,并将读出的数据再次写入所述内存页。
基于上述虚拟机内存数据处理方法,本发明实施例还提供两种虚拟机的迁移方法。本 发明实施例的虚拟机迁移方法应用于虚拟机系统,所述虚拟机系统包括虚拟机迁移管理单 元、主机设备和物理网卡,所述主机设备上运行至少一台虚拟机,所述物理网卡上运行至 少一个虚拟网卡,每台虚拟机至少对应一个虚拟网卡,所述物理网卡通过直接存储器访问 的方式读写所述每台虚拟机的内存上的数据;
所述方法包括:
S1:待迁移的源虚拟机接收虚拟机迁移管理单元发送的启动虚拟机迁移的消息;
S2:所述源虚拟机根据所述启动虚拟机迁移的消息,设置写脏标志;
S3:在确定所述物理网卡向所述源虚拟机的内存中写入了新数据时,所述源虚拟机根 据所述写脏标志,从所述源虚拟机的内存中读出所述新数据,以及将所述新数据再次写入 所述源虚拟机的内存;
S4:所述源虚拟机接收所述虚拟机迁移管理单元发送的所述源虚拟机的停机消息;
S5:所述源虚拟机根据所述源虚拟机的停机消息,将所述源虚拟机对应的虚拟网卡的 状态信息写入所述源虚拟机的内存中;
S6:所述虚拟机迁移管理单元触发内存迭代操作,所述内存迭代操作用于将所述源虚 拟机的内存中的数据迁移到目标虚拟机。
上述方法通过设置写脏标志,在确定所述物理网卡向所述源虚拟机的内存中写入了新 数据时,从所述源虚拟机的内存中读出所述新数据,以及将所述新数据再次写入所述源虚 拟机的内存,使得待迁移的源虚拟机的虚拟机迁移管理单元能够识别出数据的变化,并将 变化的数据迁移到目的虚拟机,解决了现有技术虚拟机迁移过程中虚拟机迁移管理单元不 能感知数据导致的数据无法迁移问题。同时,所述源虚拟机根据所述源虚拟机的停机消息, 将所述源虚拟机对应的虚拟网卡的状态信息写入所述源虚拟机的内存中,能够使得所述源 虚拟机的虚拟网卡的状态信息写入源虚拟机的内存,使得所述源虚拟机的虚拟网卡的状态 信息也能够随源虚拟机迁移到目的虚拟机,从而实现虚拟机虚拟网卡状态的迁移。
在具体实现过程中,本发明实施例的方法还可以包括:
S7:所述源虚拟机将所述状态信息占用的内存地址通知所述虚拟机迁移管理单元,以 使得所述虚拟机迁移管理单元将所述状态信息占用的内存地址通知所述目标虚拟机;
S8:所述目标虚拟机根据所述状态信息占用的内存地址,从迁移的内存数据中获取所 述状态信息;
根据所述状态信息,所述目标虚拟机恢复所述目标虚拟机对应的虚拟网卡。
本发明实施例的另一种虚拟机迁移方法应用于虚拟机系统,所述虚拟机系统包括虚拟 机迁移管理单元、物理设备和和网卡,所述物理设备上运行至少一台虚拟机,所述网卡上 运行至少一个虚拟网卡,每台虚拟机对应一个虚拟网卡,所述每台虚拟机通过对应的虚拟 网卡收发报文;
所述方法包括:
S1:待迁移的源虚拟机接收虚拟机迁移管理单元发送的启动虚拟机迁移的消息;
S2:所述源虚拟机根据所述启动虚拟机迁移的消息,设置写脏标志;
S3:在确定所述源虚拟机的内存中写入了新数据时,所述源虚拟机根据所述写脏标志, 从所述源虚拟机的内存中读出所述新数据,以及将所述新数据再次写入所述源虚拟机的内 存;
S4:所述源虚拟机接收所述网卡发送的状态信息读取通知,所述状态信息读取通知是 所述网卡将所述源虚拟机对应的虚拟网卡的状态信息写入所述源虚拟机的内存之后发送 的,所述网卡在接收到所述虚拟机迁移管理单元发送的所述源虚拟机的停机消息之后触发 将所述状态信息写入所述源虚拟机的内存的步骤;
S5:根据所述状态信息读取通知,所述源虚拟机从所述源虚拟机的内存中读出所述源 虚拟机的虚拟网卡的状态信息,以及将所述状态信息再次写入所述源虚拟机的内存;
S6:所述虚拟机迁移管理单元触发内存迭代操作,所述内存迭代操作用于将所述源虚 拟机的内存中的数据迁移到目标虚拟机。
上述方法通过设置写脏标志,在确定所述物理网卡向所述源虚拟机的内存中写入了新 数据时,从所述源虚拟机的内存中读出所述新数据,以及将所述新数据再次写入所述源虚 拟机的内存,使得待迁移的源虚拟机的虚拟机迁移管理单元能够识别出数据的变化,并将 变化的数据迁移到目的虚拟机,解决了现有技术虚拟机迁移过程中虚拟机迁移管理单元不 能感知数据导致的数据无法迁移问题。同时,所述源虚拟机根据所述源虚拟机的停机消息, 将所述源虚拟机对应的虚拟网卡的状态信息写入所述源虚拟机的内存中,能够使得所述源 虚拟机的虚拟网卡的状态信息写入源虚拟机的内存,使得所述源虚拟机的虚拟网卡的状态 信息也能够随源虚拟机迁移到目的虚拟机,从而实现虚拟机虚拟网卡状态的迁移。
在具体实现过程中,还可以包括:
步骤S7:所述源虚拟机将所述状态信息占用的内存页的信息通知所述虚拟机迁移管理 单元,以使得所述虚拟机迁移管理单元将所述状态信息占用的内存页的信息通知所述目标 虚拟机。
步骤S8:所述目标虚拟机根据所述状态信息占用的内存页的信息,从迁移的内存数据 中获取所述状态信息;根据所述状态信息,所述目标虚拟机恢复所述目标虚拟机对应的虚 拟网卡。
基于上述的虚拟机的内存数据的处理方法和虚拟机的迁移方法,结合图4提供的虚拟机 系统结构图,本发明实施例还分别提供五种虚拟机系统,分别是:
第一种虚拟机系统:
一种虚拟机系统,包括虚拟机迁移管理单元、主机设备和物理网卡,所述主机设备上 运行至少一台虚拟机,所述物理网卡上运行至少一个虚拟网卡,每台虚拟机至少对应一个 虚拟网卡,所述物理网卡通过直接存储器访问的方式读写所述每台虚拟机的内存上的数据;
所述虚拟机迁移管理单元用于向源虚拟机发送启动虚拟机迁移的消息,所述源虚拟机 为待迁移的虚拟机;
所述源虚拟机,用于接收所述虚拟机迁移管理单元发送的所述启动虚拟机迁移的消息, 根据所述启动虚拟机迁移的消息,设置写脏标志,以及在确定所述物理网卡向所述源虚拟 机的内存中写入了新数据时,根据所述写脏标志,从所述源虚拟机的内存中读出所述新数 据,并将所述新数据再次写入所述源虚拟机的内存。
进一步,所述虚拟机迁移管理单元,还用于向所述源虚拟机发送所述源虚拟机的停机 消息;所述源虚拟机,还用于接收所述虚拟机迁移管理单元发送的所述源虚拟机的停机消 息,根据所述源虚拟机的停机消息,将所述源虚拟机对应的虚拟网卡的状态信息写入所述 源虚拟机的内存中。
进一步,所述虚拟机迁移管理单元,还用于向所述物理网卡发送所述源虚拟机的停机 消息;
所述物理网卡,用于根据接收到的所述源虚拟机的停机消息,将所述源虚拟机对应的 虚拟网卡的状态信息写入所述源虚拟机的内存,并向所述源虚拟机发送状态信息读取通知;
所述源虚拟机,还用于接收所述物理网卡发送的所述状态信息读取通知,根据所述状 态信息读取通知,从所述源虚拟机的内存中读出所述源虚拟机的虚拟网卡的状态信息,并 将所述状态信息再次写入所述源虚拟机的内存。
优选地,所述源虚拟机具体用于确定所述新数据在所述源虚拟机的内存中占用的内存 页,根据所述写脏标志,读出所述内存页中的数据,并将读出的数据再次写入所述内存页。
进一步,所述源虚拟机还用于清除所述写脏标志。
第二种虚拟机系统:
一种虚拟机系统,包括虚拟机迁移管理单元、主机设备和物理网卡,所述主机设备上 运行至少一台虚拟机,所述物理网卡上运行至少一个虚拟网卡,每台虚拟机至少对应一个 虚拟网卡,所述物理网卡通过直接存储器访问的方式读写所述每台虚拟机的内存上的数据;
所述虚拟机迁移管理单元,用于向源虚拟机发送源虚拟机的停机消息,所述源虚拟机 为待迁移的虚拟机;所述源虚拟机,用于接收所述虚拟机迁移管理单元发送的所述源虚拟 机的停机消息,根据所述源虚拟机的停机消息,将所述源虚拟机对应的虚拟网卡的状态信 息写入所述源虚拟机的内存中。
进一步,所述所述源虚拟机还用于,接收所述虚拟机迁移管理单元发送的启动虚拟机 迁移的消息,用于根据所述启动虚拟机迁移的消息,设置写脏标志,在确定所述物理网卡 向所述源虚拟机的内存中写入了新数据时,根据所述写脏标志,从所述源虚拟机的内存中 读出所述新数据,并将所述新数据再次写入所述源虚拟机的内存。
进一步,所述源虚拟机还用于清除所述写脏标志。
第三种虚拟机系统:
一种虚拟机系统,包括虚拟机迁移管理单元、主机设备和物理网卡,所述主机设备上 运行至少一台虚拟机,所述物理网卡上运行至少一个虚拟网卡,每台虚拟机至少对应一个 虚拟网卡,所述物理网卡通过直接存储器访问的方式读写所述每台虚拟机的内存上的数据;
所述虚拟机迁移管理单元,用于向所述物理网卡发送源虚拟机的停机消息,所述源虚 拟机为待迁移的虚拟机;所述物理网卡,用于根据接收到的所述源虚拟机的停机消息,将 所述源虚拟机对应的虚拟网卡的状态信息写入所述源虚拟机的内存,并向所述源虚拟机发 送状态信息读取通知;
所述源虚拟机,,用于接收所述物理网卡发送的状态信息读取通知,,根据所述状态 信息读取通知,从所述源虚拟机的内存中读出所述源虚拟机的虚拟网卡的状态信息,并将 所述状态信息再次写入所述源虚拟机的内存。
进一步,所述源虚拟机,还用于接收所述虚拟机迁移管理单元发送的启动虚拟机迁移 的消息,根据所述启动所述虚拟机迁移的消息,设置写脏标志,在确定所述物理网卡向所 述源虚拟机的内存中写入了新数据时,根据所述写脏标志,从所述源虚拟机的内存中读出 所述新数据,并将所述新数据再次写入所述源虚拟机的内存。
进一步,所述源虚拟机还用于清除所述写脏标志。
第四种虚拟机系统:
一种虚拟机系统,包括虚拟机迁移管理单元、主机设备和物理网卡,所述主机设备上 运行至少一台虚拟机,所述物理网卡上运行至少一个虚拟网卡,每台虚拟机至少对应一个 虚拟网卡,所述物理网卡通过直接存储器访问的方式读写所述每台虚拟机的内存上的数据;
所述虚拟机迁移管理单元用于向所述源虚拟机发送启动虚拟机迁移的消息;
所述源虚拟机,用于接收所述虚拟机迁移管理单元发送的所述启动虚拟机迁移的消息, 根据所述启动虚拟机迁移的消息,设置写脏标志,在确定所述物理网卡向所述源虚拟机的 内存中写入了新数据时,根据所述写脏标志,从所述源虚拟机的内存中读出所述新数据, 并将所述新数据再次写入所述源虚拟机的内存,以及接收所述虚拟机迁移管理单元发送的 所述源虚拟机的停机消息,根据所述源虚拟机的停机消息,将所述源虚拟机对应的虚拟网 卡的状态信息写入所述源虚拟机的内存中;
所述虚拟机迁移管理单元还用于触发内存迭代操作,所述内存迭代操作用于将所述源 虚拟机的内存中的数据迁移到目标虚拟机。
第五种虚拟机系统:
一种虚拟机系统,包括虚拟机迁移管理单元、物理设备和和网卡,所述物理设备上运 行至少一台虚拟机,所述网卡上运行至少一个虚拟网卡,每台虚拟机对应一个虚拟网卡, 所述每台虚拟机通过对应的虚拟网卡收发报文;所述虚拟机迁移管理单元用于向源虚拟机 发送启动虚拟机迁移的消息;
所述源虚拟机,用于接收所述虚拟机迁移管理单元发送的所述启动虚拟机迁移的消息, 根据所述启动虚拟机迁移的消息,设置写脏标志,在确定所述物理网卡向所述源虚拟机的 内存中写入了新数据时,根据所述写脏标志,从所述源虚拟机的内存中读出所述新数据, 并将所述新数据再次写入所述源虚拟机的内存;
所述虚拟机迁移管理单元,还用于向所述物理网卡发送源虚拟机的停机消息;
所述物理网卡,用于根据接收到的所述源虚拟机的停机消息,将所述源虚拟机对应的 虚拟网卡的状态信息写入所述源虚拟机的内存,并向所述源虚拟机发送状态信息读取通知;
所述源虚拟机,还用于接收所述物理网卡发送的所述状态信息读取通知,根据所述状 态信息读取通知,从所述源虚拟机的内存中读出所述源虚拟机的虚拟网卡的状态信息,并 将所述状态信息再次写入所述源虚拟机的内存;
所述虚拟机迁移管理单元还用于触发内存迭代操作,所述内存迭代操作用于将所述源 虚拟机的内存中的数据迁移到目标虚拟机。
在上述第四种或第五种虚拟机系统中,所述源虚拟机还用于将所述状态信息占用的内 存地址通知所述虚拟机迁移管理单元,以使得所述虚拟机迁移管理单元将所述状态信息占 用的内存地址通知所述目标虚拟机。
进一步,所述目标虚拟机根据所述状态信息占用的内存地址,从迁移的内存数据中获 取所述状态信息;根据所述状态信息恢复所述目标虚拟机对应的虚拟网卡。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及 算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和 软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些 功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业 技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应 认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、 装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通 过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示 或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的 部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络 单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目 的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各 个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元 既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可 以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者 说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现 出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备 (可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部 或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、 随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码 的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟 悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换, 这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要 求的保护范围为准。
Claims (6)
1.一种虚拟机系统,其特征在于,所述虚拟机系统包括虚拟机迁移管理单元、主机设备和物理网卡,所述主机设备上运行至少一台虚拟机,所述物理网卡上运行至少一个虚拟网卡,每台虚拟机至少对应一个虚拟网卡,所述物理网卡通过直接存储器访问的方式读写所述每台虚拟机的内存上的数据;
所述虚拟机迁移管理单元用于向源虚拟机发送启动虚拟机迁移的消息,所述源虚拟机为待迁移的虚拟机;
所述源虚拟机,用于接收所述虚拟机迁移管理单元发送的所述启动虚拟机迁移的消息,根据所述启动虚拟机迁移的消息,设置写脏标志,在所述物理网卡向所述源虚拟机的内存中写入了新数据时,根据所述写脏标志对所述源虚拟机的内存进行至少一次的读写操作。
2.根据权利要求1所述的虚拟机系统,其特征在于,所述源虚拟机具体用于确定所述新数据在所述源虚拟机的内存中占用的内存页,根据所述写脏标志对所述内存页进行至少一次的读写操作。
3.一种虚拟机系统,其特征在于,所述虚拟机系统包括虚拟机迁移管理单元、主机设备和物理网卡,所述主机设备上运行至少一台虚拟机,所述物理网卡上运行至少一个虚拟网卡,每台虚拟机至少对应一个虚拟网卡,所述物理网卡通过直接存储器访问的方式读写所述每台虚拟机的内存上的数据;
所述虚拟机迁移管理单元用于向源虚拟机发送启动虚拟机迁移的消息;
所述源虚拟机,用于接收所述虚拟机迁移管理单元发送的所述启动虚拟机迁移的消息,根据所述启动虚拟机迁移的消息,设置写脏标志,在所述物理网卡向所述源虚拟机的内存中写入了新数据时,根据所述写脏标志对所述源虚拟机的内存进行至少一次的读写操作,以及接收所述虚拟机迁移管理单元发送的所述源虚拟机的停机消息,根据所述源虚拟机的停机消息,将所述源虚拟机对应的虚拟网卡的状态信息写入所述源虚拟机的内存中;
所述虚拟机迁移管理单元还用于触发内存迭代操作,所述内存迭代操作用于将所述源虚拟机的内存中的数据迁移到目标虚拟机。
4.根据权利要求3所述的虚拟机系统,其特征在于,所述源虚拟机还用于将所述状态信息占用的内存地址通知所述虚拟机迁移管理单元,以使得所述虚拟机迁移管理单元将所述状态信息占用的内存地址通知所述目标虚拟机。
5.根据权利要求4所述的虚拟机系统,其特征在于,所述目标虚拟机根据所述状态信息占用的内存地址,从迁移的内存数据中获取所述状态信息;根据所述状态信息恢复所述目标虚拟机对应的虚拟网卡。
6.一种虚拟机系统,其特征在于,所述虚拟机系统包括虚拟机迁移管理单元、主机设备和物理网卡,所述主机设备上运行至少一台虚拟机,所述物理网卡上运行至少一个虚拟网卡,每台虚拟机对应一个虚拟网卡,所述每台虚拟机通过对应的虚拟网卡收发报文;所述虚拟机迁移管理单元用于向源虚拟机发送启动虚拟机迁移的消息;
所述源虚拟机,用于接收所述虚拟机迁移管理单元发送的所述启动虚拟机迁移的消息,根据所述启动虚拟机迁移的消息,设置写脏标志,在所述物理网卡向所述源虚拟机的内存中写入了新数据时,根据所述写脏标志对所述源虚拟机的内存进行至少一次的读写操作;
所述虚拟机迁移管理单元,还用于向所述物理网卡发送源虚拟机的停机消息;
所述物理网卡,用于根据接收到的所述源虚拟机的停机消息,将所述源虚拟机对应的虚拟网卡的状态信息写入所述源虚拟机的内存,并向所述源虚拟机发送状态信息读取通知;
所述源虚拟机,还用于接收所述物理网卡发送的所述状态信息读取通知,根据所述状态信息读取通知,对所述源虚拟机的内存进行至少一次的读写操作;
所述虚拟机迁移管理单元还用于触发内存迭代操作,所述内存迭代操作用于将所述源虚拟机的内存中的数据迁移到目标虚拟机。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNPCT/CN2013/091131 | 2013-12-31 | ||
PCT/CN2013/091131 WO2015100622A1 (zh) | 2013-12-31 | 2013-12-31 | 虚拟机热迁移的方法和服务器 |
CN201480055409.1A CN105612498B (zh) | 2013-12-31 | 2014-12-04 | 虚拟机热迁移的方法、虚拟机内存数据处理方法、服务器和虚拟机系统 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480055409.1A Division CN105612498B (zh) | 2013-12-31 | 2014-12-04 | 虚拟机热迁移的方法、虚拟机内存数据处理方法、服务器和虚拟机系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108205506A CN108205506A (zh) | 2018-06-26 |
CN108205506B true CN108205506B (zh) | 2021-11-19 |
Family
ID=55991262
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810119431.8A Active CN108205506B (zh) | 2013-12-31 | 2014-12-04 | 虚拟机热迁移的方法、虚拟机内存数据处理方法、服务器和虚拟机系统 |
CN201480055409.1A Active CN105612498B (zh) | 2013-12-31 | 2014-12-04 | 虚拟机热迁移的方法、虚拟机内存数据处理方法、服务器和虚拟机系统 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480055409.1A Active CN105612498B (zh) | 2013-12-31 | 2014-12-04 | 虚拟机热迁移的方法、虚拟机内存数据处理方法、服务器和虚拟机系统 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN108205506B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107797878A (zh) * | 2016-09-06 | 2018-03-13 | 阿里巴巴集团控股有限公司 | 虚拟机热迁移处理方法及系统 |
CN106878082B (zh) * | 2017-02-28 | 2020-03-31 | 郑州云海信息技术有限公司 | 一种虚拟网卡热迁移方法及其装置 |
CN107301084B (zh) * | 2017-07-05 | 2020-04-21 | 深圳先进技术研究院 | 集群服务器的虚拟机迁移方法、装置、服务器及存储介质 |
CN110413213B (zh) * | 2018-04-28 | 2023-06-27 | 伊姆西Ip控股有限责任公司 | 存储卷在存储阵列之间的无缝迁移 |
CN109634720B (zh) * | 2018-12-13 | 2021-11-19 | 郑州云海信息技术有限公司 | 一种多虚拟机共享fpga板卡的方法、系统及装置 |
CN111352695B (zh) * | 2018-12-24 | 2023-09-29 | 中国电信股份有限公司 | 虚拟机迁移方法、装置和计算机可读存储介质 |
CN112148421B (zh) * | 2019-06-29 | 2024-01-30 | 华为技术有限公司 | 虚拟机迁移的方法以及装置 |
CN110532208B (zh) * | 2019-07-12 | 2021-05-28 | 优刻得科技股份有限公司 | 一种数据处理方法、接口转换结构及数据处理设备 |
CN112306624A (zh) * | 2019-07-31 | 2021-02-02 | 华为技术有限公司 | 一种信息处理方法、物理机和pcie设备 |
CN118312284A (zh) * | 2019-07-31 | 2024-07-09 | 华为技术有限公司 | 虚拟机热迁移方法和通信设备 |
CN111736945B (zh) * | 2019-08-07 | 2024-05-17 | 北京京东尚科信息技术有限公司 | 基于智能网卡的虚拟机热迁移方法、装置、设备及介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101101562A (zh) * | 2007-07-10 | 2008-01-09 | 北京大学 | 一种虚拟机的外存在线迁移方法 |
CN102073462A (zh) * | 2010-11-29 | 2011-05-25 | 华为技术有限公司 | 虚拟存储迁移方法、系统和虚拟机监控器 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5573649B2 (ja) * | 2010-12-17 | 2014-08-20 | 富士通株式会社 | 情報処理装置 |
US9104459B2 (en) * | 2011-01-07 | 2015-08-11 | Red Hat Israel, Ltd. | Memory change tracking during migration of virtual machine (VM) with VM-controlled assigned peripherals |
WO2015100622A1 (zh) * | 2013-12-31 | 2015-07-09 | 华为技术有限公司 | 虚拟机热迁移的方法和服务器 |
-
2014
- 2014-12-04 CN CN201810119431.8A patent/CN108205506B/zh active Active
- 2014-12-04 CN CN201480055409.1A patent/CN105612498B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101101562A (zh) * | 2007-07-10 | 2008-01-09 | 北京大学 | 一种虚拟机的外存在线迁移方法 |
CN102073462A (zh) * | 2010-11-29 | 2011-05-25 | 华为技术有限公司 | 虚拟存储迁移方法、系统和虚拟机监控器 |
Also Published As
Publication number | Publication date |
---|---|
CN108205506A (zh) | 2018-06-26 |
CN105612498B (zh) | 2018-03-09 |
CN105612498A (zh) | 2016-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108205506B (zh) | 虚拟机热迁移的方法、虚拟机内存数据处理方法、服务器和虚拟机系统 | |
US10802870B2 (en) | Virtual machine live migration method, virtual machine memory data processing method, server, and virtual machine system | |
EP2840495B1 (en) | Container-based processing method and apparatus | |
JP5798485B2 (ja) | 実行中における物理的ハードウェアのエミュレーションとの交換 | |
JP6186374B2 (ja) | 仮想化されたプラットフォームへ安全に移行するためのシステム及び方法 | |
US9600369B2 (en) | Operating system recovery method and apparatus, and terminal device | |
US9678682B2 (en) | Backup storage of vital debug information | |
CN108469986B (zh) | 一种数据迁移方法及装置 | |
EP2905700B1 (en) | Operating system recovery method, apparatus and terminal device | |
US9747149B2 (en) | Firmware dump collection from primary system dump device adapter | |
US9886387B2 (en) | Method and system for performing on-demand data write through based on virtual machine types | |
US11144409B2 (en) | Recovering from a mistaken point-in-time copy restore | |
GB2509930A (en) | Data backup recovery | |
CN110968393B (zh) | 虚拟机的迁移处理方法、存储介质、计算设备 | |
US8918582B2 (en) | Simulating EEPROM in virtual distributed switches | |
CN107209727B (zh) | 存储系统 |
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 |