CN105612498A - 虚拟机热迁移的方法、虚拟机内存数据处理方法、服务器和虚拟机*** - Google Patents
虚拟机热迁移的方法、虚拟机内存数据处理方法、服务器和虚拟机*** Download PDFInfo
- Publication number
- CN105612498A CN105612498A CN201480055409.1A CN201480055409A CN105612498A CN 105612498 A CN105612498 A CN 105612498A CN 201480055409 A CN201480055409 A CN 201480055409A CN 105612498 A CN105612498 A CN 105612498A
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- migration
- source virtual
- internal memory
- write
- 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.)
- Granted
Links
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(Direct Memory 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,图14为本发明实施例虚拟机***的结构示意图。所述虚拟机***包括:主机设备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在图14中运行在主机设备之上,作为一种软件模块实现,而本发明实施例的其它具体实现中,虚拟机迁移管理单元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-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (51)
- 一种虚拟机内存数据处理方法,其特征在于,应用于虚拟机***,所述虚拟机***包括虚拟机迁移管理单元、主机设备和物理网卡,所述主机设备上运行至少一台虚拟机,所述物理网卡上运行至少一个虚拟网卡,每台虚拟机至少对应一个虚拟网卡,所述物理网卡通过直接存储器访问的方式读写所述每台虚拟机的内存上的数据;当所述虚拟机***中的任意一台虚拟机发生迁移,所述方法包括:待迁移的源虚拟机接收所述虚拟机迁移管理单元发送的启动虚拟机迁移的消息;所述源虚拟机根据所述启动虚拟机迁移的消息,设置写脏标志;在确定所述物理网卡向所述源虚拟机的内存中写入了新数据时,所述源虚拟机根据所述写脏标志,从所述源虚拟机的内存中读出所述新数据,以及将所述新数据再次写入所述源虚拟机的内存。
- 根据权利要求1所述的方法,其特征在于,所述方法还包括:所述源虚拟机接收所述虚拟机迁移管理单元发送的所述源虚拟机的停机消息;所述源虚拟机根据所述源虚拟机的停机消息,将所述源虚拟机对应的虚拟网卡的状态信息写入所述源虚拟机的内存中。
- 根据权利要求1所述的方法,其特征在于,所述方法还包括:所述源虚拟机接收所述物理网卡发送的状态信息读取通知,其中,所述物理网卡根据接收到的所述虚拟机迁移管理单元发送的所述源虚拟机的停机消息,将所述源虚拟机对应的虚拟网卡的状态信息写入所述源虚拟机的内存之后发送所述状态信息读取通知;根据所述状态信息读取通知,所述源虚拟机从所述源虚拟机的内存中读出所述源虚拟机的虚拟网卡的状态信息,以及将所述状态信息再次写入 所述源虚拟机的内存。
- 根据权利要求1-3任意一项所述的方法,其特征在于,所述源虚拟机根据所述写脏标志,从所述源虚拟机的内存中读出所述新数据,以及将所述新数据再次写入所述源虚拟机的内存,包括:所述源虚拟机确定所述新数据在所述源虚拟机的内存中占用的内存页,根据所述写脏标志,读出所述内存页中的数据,并将读出的数据再次写入所述内存页。
- 根据权利要求1-4任一项所述的方法,其特征在于,所述源虚拟机接收虚拟机迁移管理单元发送的启动虚拟机迁移的消息包括:所述源虚拟机中的虚拟网卡的驱动读取所述源虚拟机的虚拟网卡上的缓存器或寄存器,获取所述虚拟机迁移管理单元在所述缓存器或寄存器上直接写入的所述启动虚拟机迁移的消息。
- 根据权利要求1-5任一所述的方法,其特征在于,所述方法还包括:所述源虚拟机清除所述写脏标志。
- 一种虚拟机内存数据处理方法,其特征在于,应用于虚拟机***,所述虚拟机***包括虚拟机迁移管理单元、主机设备和物理网卡,所述主机设备上运行至少一台虚拟机,所述物理网卡上运行至少一个虚拟网卡,每台虚拟机至少对应一个虚拟网卡,所述物理网卡通过直接存储器访问的方式读写所述每台虚拟机的内存上的数据;当所述虚拟机***中的任意一台虚拟机发生迁移,所述方法包括:待迁移的源虚拟机接收所述虚拟机迁移管理单元发送的所述源虚拟机的停机消息;所述源虚拟机根据所述源虚拟机的停机消息,将所述源虚拟机对应的虚拟网卡的状态信息写入所述源虚拟机的内存中。
- 根据权利要求7所述的方法,其特征在于,在接收所述源虚拟机的停机消息之前,所述方法还包括:所述源虚拟机接收所述虚拟机迁移管理单元发送的启动虚拟机迁移的消息;所述源虚拟机根据所述启动虚拟机迁移的消息,设置写脏标志;在确定所述物理网卡向所述源虚拟机的内存中写入了新数据时,所述源虚拟机根据所述写脏标志,从所述源虚拟机的内存中读出所述新数据,以及将所述新数据再次写入所述源虚拟机的内存。
- 根据权利要求8述的方法,其特征在于,所述源虚拟机根据所述写脏标志,从所述源虚拟机的内存中读出所述新数据,以及将所述新数据再次写入所述源虚拟机的内存,包括:所述源虚拟机确定所述新数据在所述源虚拟机的内存中占用的内存页,根据所述写脏标志,读出所述内存页中的数据,并将读出的数据再次写入所述内存页。
- 根据权利要求8或9所述的方法,其特征在于,所述方法还包括:所述源虚拟机清除所述写脏标志。
- 一种虚拟机内存数据处理方法,其特征在于,应用于虚拟机***,所述虚拟机***包括虚拟机迁移管理单元、主机设备和物理网卡,所述主机设备上运行至少一台虚拟机,所述物理网卡上运行至少一个虚拟网卡,每台虚拟机至少对应一个虚拟网卡,所述物理网卡通过直接存储器访问的方式读写所述每台虚拟机的内存上的数据;当所述虚拟机***中的任意一台虚拟机发生迁移,所述方法包括:待迁移的源虚拟机接收所述物理网卡发送的状态信息读取通知,其中,所述物理网卡根据接收到的所述虚拟机迁移管理单元发送的所述源虚拟机的停机消息,将所述源虚拟机对应的虚拟网卡的状态信息写入所述源虚拟机的内存之后发送所述状态信息读取通知;根据所述状态信息读取通知,所述源虚拟机从所述源虚拟机的内存中读出所述源虚拟机的虚拟网卡的状态信息,以及将所述状态信息再次写入 所述源虚拟机的内存。
- 根据权利要求11所述的方法,其特征在于,在接收所述状态信息读取通知之前,所述方法还包括:所述源虚拟机接收所述虚拟机迁移管理单元发送的启动虚拟机迁移的消息;所述源虚拟机根据所述启动虚拟机迁移的消息,设置写脏标志;在确定所述物理网卡向所述源虚拟机的内存中写入了新数据时,所述源虚拟机根据所述写脏标志,从所述源虚拟机的内存中读出所述新数据,以及将所述新数据再次写入所述源虚拟机的内存。
- 根据权利要求11所述的方法,其特征在于,所述源虚拟机根据所述写脏标志,从所述源虚拟机的内存中读出所述新数据,以及将所述新数据再次写入所述源虚拟机的内存,包括:所述源虚拟机确定所述新数据在所述源虚拟机的内存中占用的内存页,根据所述写脏标志,读出所述内存页中的数据,并将读出的数据再次写入所述内存页。
- 根据权利要求12或13所述的方法,其特征在于,所述方法还包括:所述源虚拟机清除所述写脏标志。
- 一种虚拟机迁移方法,其特征在于,应用于虚拟机***,所述虚拟机***包括虚拟机迁移管理单元、主机设备和物理网卡,所述主机设备上运行至少一台虚拟机,所述物理网卡上运行至少一个虚拟网卡,每台虚拟机至少对应一个虚拟网卡,所述物理网卡通过直接存储器访问的方式读写所述每台虚拟机的内存上的数据;所述方法包括:待迁移的源虚拟机接收虚拟机迁移管理单元发送的启动虚拟机迁移的消息;所述源虚拟机根据所述启动虚拟机迁移的消息,设置写脏标志;在确定所述物理网卡向所述源虚拟机的内存中写入了新数据时,所述源虚拟机根据所述写脏标志,从所述源虚拟机的内存中读出所述新数据,以及将所述新数据再次写入所述源虚拟机的内存;所述源虚拟机接收所述虚拟机迁移管理单元发送的所述源虚拟机的停机消息;所述源虚拟机根据所述源虚拟机的停机消息,将所述源虚拟机对应的虚拟网卡的状态信息写入所述源虚拟机的内存中;所述虚拟机迁移管理单元触发内存迭代操作,所述内存迭代操作用于将所述源虚拟机的内存中的数据迁移到目标虚拟机。
- 根据权利要求15所述的方法,其特征在于,所述源虚拟机根据所述写脏标志,从所述源虚拟机的内存中读出所述新数据,以及将所述新数据再次写入所述源虚拟机的内存,包括:所述源虚拟机确定所述新数据在所述源虚拟机的内存中占用的内存页,根据所述写脏标志,读出所述新数据占用的内存页中的数据,并将读出的数据再次写入所述新数据占用的内存页。
- 根据权利要求15或16所述的方法,其特征在于,所述方法还包括:所述源虚拟机将所述状态信息占用的内存地址通知所述虚拟机迁移管理单元,以使得所述虚拟机迁移管理单元将所述状态信息占用的内存地址通知所述目标虚拟机;
- 根据权利要求17所述的方法,其特征在于,所述方法还包括:所述目标虚拟机根据所述状态信息占用的内存地址,从迁移的内存数据中获取所述状态信息;根据所述状态信息,所述目标虚拟机恢复所述目标虚拟机对应的虚拟网卡。
- 一种虚拟机迁移方法,其特征在于,应用于虚拟机***,所述虚拟机***包括虚拟机迁移管理单元、物理设备和和网卡,所述物理设备上 运行至少一台虚拟机,所述网卡上运行至少一个虚拟网卡,每台虚拟机对应一个虚拟网卡,所述每台虚拟机通过对应的虚拟网卡收发报文;所述方法包括:待迁移的源虚拟机接收虚拟机迁移管理单元发送的启动虚拟机迁移的消息;所述源虚拟机根据所述启动虚拟机迁移的消息,设置写脏标志;在确定所述源虚拟机的内存中写入了新数据时,所述源虚拟机根据所述写脏标志,从所述源虚拟机的内存中读出所述新数据,以及将所述新数据再次写入所述源虚拟机的内存;所述源虚拟机接收所述网卡发送的状态信息读取通知,所述状态信息读取通知是所述网卡将所述源虚拟机对应的虚拟网卡的状态信息写入所述源虚拟机的内存之后发送的,所述网卡在接收到所述虚拟机迁移管理单元发送的所述源虚拟机的停机消息之后触发将所述状态信息写入所述源虚拟机的内存的步骤;根据所述状态信息读取通知,所述源虚拟机从所述源虚拟机的内存中读出所述源虚拟机的虚拟网卡的状态信息,以及将所述状态信息再次写入所述源虚拟机的内存;所述虚拟机迁移管理单元触发内存迭代操作,所述内存迭代操作用于将所述源虚拟机的内存中的数据迁移到目标虚拟机。
- 根据权利要求19所述的方法,其特征在于,所述源虚拟机根据所述写脏标志,从所述源虚拟机的内存中读出所述新数据,以及将所述新数据再次写入所述源虚拟机的内存,包括:所述源虚拟机确定所述新数据在所述源虚拟机的内存中占用的内存页,根据所述写脏标志,读出所述新数据占用的内存页中的数据,并将读出的数据再次写入所述新数据占用的内存页。
- 根据权利要求19或20所述的方法,其特征在于,所述方法还包括:所述源虚拟机将所述状态信息占用的内存页的信息通知所述虚拟机迁移管理单元,以使得所述虚拟机迁移管理单元将所述状态信息占用的内存页的信息通知所述目标虚拟机。
- 根据权利要求21所述的方法,其特征在于,所述方法还包括:所述目标虚拟机根据所述状态信息占用的内存页的信息,从迁移的内存数据中获取所述状态信息;根据所述状态信息,所述目标虚拟机恢复所述目标虚拟机对应的虚拟网卡。
- 一种虚拟机***,其特征在于,所述虚拟机***包括虚拟机迁移管理单元、主机设备和物理网卡,所述主机设备上运行至少一台虚拟机,所述物理网卡上运行至少一个虚拟网卡,每台虚拟机至少对应一个虚拟网卡,所述物理网卡通过直接存储器访问的方式读写所述每台虚拟机的内存上的数据;所述虚拟机迁移管理单元用于向源虚拟机发送启动虚拟机迁移的消息,所述源虚拟机为待迁移的虚拟机;所述源虚拟机,用于接收所述虚拟机迁移管理单元发送的所述启动虚拟机迁移的消息,根据所述启动虚拟机迁移的消息,设置写脏标志,以及在确定所述物理网卡向所述源虚拟机的内存中写入了新数据时,根据所述写脏标志,从所述源虚拟机的内存中读出所述新数据,并将所述新数据再次写入所述源虚拟机的内存。
- 根据权利要求23所述的虚拟机***,其特征在于:所述虚拟机迁移管理单元,还用于向所述源虚拟机发送所述源虚拟机的停机消息;所述源虚拟机,还用于接收所述虚拟机迁移管理单元发送的所述源虚拟机的停机消息,根据所述源虚拟机的停机消息,将所述源虚拟机对应的虚拟网卡的状态信息写入所述源虚拟机的内存中。
- 根据权利要求23所述的虚拟机***,其特征在于:所述虚拟机迁移管理单元,还用于向所述物理网卡发送所述源虚拟机的停机消息;所述物理网卡,用于根据接收到的所述源虚拟机的停机消息,将所述源虚拟机对应的虚拟网卡的状态信息写入所述源虚拟机的内存,并向所述源虚拟机发送状态信息读取通知;所述源虚拟机,还用于接收所述物理网卡发送的所述状态信息读取通知,,根据所述状态信息读取通知,从所述源虚拟机的内存中读出所述源虚拟机的虚拟网卡的状态信息,并将所述状态信息再次写入所述源虚拟机的内存。
- 根据权利要求23-25任意一项所述的虚拟机***,其特征在于,所述源虚拟机具体用于确定所述新数据在所述源虚拟机的内存中占用的内存页,根据所述写脏标志,读出所述内存页中的数据,并将读出的数据再次写入所述内存页。
- 根据权利要求23-26任一所述的虚拟机***,其特征在于,所述源虚拟机还用于清除所述写脏标志。
- 一种虚拟机***,其特征在于,所述虚拟机***包括虚拟机迁移管理单元、主机设备和物理网卡,所述主机设备上运行至少一台虚拟机,所述物理网卡上运行至少一个虚拟网卡,每台虚拟机至少对应一个虚拟网卡,所述物理网卡通过直接存储器访问的方式读写所述每台虚拟机的内存上的数据;所述虚拟机迁移管理单元,用于向源虚拟机发送源虚拟机的停机消息,所述源虚拟机为待迁移的虚拟机;所述源虚拟机,用于接收所述虚拟机迁移管理单元发送的所述源虚拟机的停机消息,根据所述源虚拟机的停机消息,将所述源虚拟机对应的虚拟网卡的状态信息写入所述源虚拟机的内存中。
- 根据权利要求28所述的虚拟机***,其特征在于:所述所述源虚拟机还用于,接收所述虚拟机迁移管理单元发送的启动虚拟机迁移的消息,用于根据所述启动虚拟机迁移的消息,设置写脏标志,在确定所述物理网卡向所述源虚拟机的内存中写入了新数据时,根据所述写脏标志,从所述源虚拟机的内存中读出所述新数据,并将所述新数据再次写入所述源虚拟机的内存。
- 根据权利要求28或29所述的虚拟机***,其特征在于:所述源虚拟机还用于清除所述写脏标志。
- 一种虚拟机***,其特征在于,所述虚拟机***包括虚拟机迁移管理单元、主机设备和物理网卡,所述主机设备上运行至少一台虚拟机,所述物理网卡上运行至少一个虚拟网卡,每台虚拟机至少对应一个虚拟网卡,所述物理网卡通过直接存储器访问的方式读写所述每台虚拟机的内存上的数据;所述虚拟机迁移管理单元,用于向所述物理网卡发送源虚拟机的停机消息,所述源虚拟机为待迁移的虚拟机;所述物理网卡,用于根据接收到的所述源虚拟机的停机消息,将所述源虚拟机对应的虚拟网卡的状态信息写入所述源虚拟机的内存,并向所述源虚拟机发送状态信息读取通知;所述源虚拟机,,用于接收所述物理网卡发送的状态信息读取通知,,根据所述状态信息读取通知,从所述源虚拟机的内存中读出所述源虚拟机的虚拟网卡的状态信息,并将所述状态信息再次写入所述源虚拟机的内存。
- 根据权利要求31所述的虚拟机***,其特征在于:所述源虚拟机,还用于接收所述虚拟机迁移管理单元发送的启动虚拟机迁移的消息,根据所述启动所述虚拟机迁移的消息,设置写脏标志,在确定所述物理网卡向所述源虚拟机的内存中写入了新数据时,根据所述写脏标志,从所述源虚拟机的内存中读出所述新数据,并将所述新数据再次写入所述源虚拟机的内存。
- 根据权利要求31或32所述的虚拟机***,其特征在于,所述源虚 拟机还用于清除所述写脏标志。
- 一种虚拟机***,其特征在于,所述虚拟机***包括虚拟机迁移管理单元、主机设备和物理网卡,所述主机设备上运行至少一台虚拟机,所述物理网卡上运行至少一个虚拟网卡,每台虚拟机至少对应一个虚拟网卡,所述物理网卡通过直接存储器访问的方式读写所述每台虚拟机的内存上的数据;所述虚拟机迁移管理单元用于向所述源虚拟机发送启动虚拟机迁移的消息;所述源虚拟机,用于接收所述虚拟机迁移管理单元发送的所述启动虚拟机迁移的消息,根据所述启动虚拟机迁移的消息,设置写脏标志,在确定所述物理网卡向所述源虚拟机的内存中写入了新数据时,根据所述写脏标志,从所述源虚拟机的内存中读出所述新数据,并将所述新数据再次写入所述源虚拟机的内存,以及接收所述虚拟机迁移管理单元发送的所述源虚拟机的停机消息,根据所述源虚拟机的停机消息,将所述源虚拟机对应的虚拟网卡的状态信息写入所述源虚拟机的内存中;所述虚拟机迁移管理单元还用于触发内存迭代操作,所述内存迭代操作用于将所述源虚拟机的内存中的数据迁移到目标虚拟机。
- 根据权利要求34所述的虚拟机***,其特征在于,所述源虚拟机还用于将所述状态信息占用的内存地址通知所述虚拟机迁移管理单元,以使得所述虚拟机迁移管理单元将所述状态信息占用的内存地址通知所述目标虚拟机。
- 根据权利要求35所述的虚拟机***,其特征在于,所述目标虚拟机根据所述状态信息占用的内存地址,从迁移的内存数据中获取所述状态信息;根据所述状态信息恢复所述目标虚拟机对应的虚拟网卡。
- 一种虚拟机***,其特征在于,所述虚拟机***包括虚拟机迁移管理单元、物理设备和和网卡,所述物理设备上运行至少一台虚拟机,所述网卡上运行至少一个虚拟网卡,每台虚拟机对应一个虚拟网卡,所述每台虚拟机通过对应的虚拟网卡收发报文;所述虚拟机迁移管理单元用于向源虚拟机发送启动虚拟机迁移的消息;所述源虚拟机,用于接收所述虚拟机迁移管理单元发送的所述启动虚拟机迁移的消息,根据所述启动虚拟机迁移的消息,设置写脏标志,在确定所述物理网卡向所述源虚拟机的内存中写入了新数据时,根据所述写脏标志,从所述源虚拟机的内存中读出所述新数据,并将所述新数据再次写入所述源虚拟机的内存;所述虚拟机迁移管理单元,还用于向所述物理网卡发送源虚拟机的停机消息;所述物理网卡,用于根据接收到的所述源虚拟机的停机消息,将所述源虚拟机对应的虚拟网卡的状态信息写入所述源虚拟机的内存,并向所述源虚拟机发送状态信息读取通知;所述源虚拟机,还用于接收所述物理网卡发送的所述状态信息读取通知,根据所述状态信息读取通知,从所述源虚拟机的内存中读出所述源虚拟机的虚拟网卡的状态信息,并将所述状态信息再次写入所述源虚拟机的内存;所述虚拟机迁移管理单元还用于触发内存迭代操作,所述内存迭代操作用于将所述源虚拟机的内存中的数据迁移到目标虚拟机。
- 一种虚拟机热迁移的方法,其特征在于,所述方法包括:虚拟PCIE设备接收启动虚拟机热迁移的第一消息;其中,所述虚拟机处理的数据通过物理PCIE设备传输,所述虚拟PCIE设备是运行在所述物理PCIE设备的虚拟设备,所述虚拟机通过所述虚拟PCIE设备访问所述物理PCIE设备;所述虚拟PCIE设备根据所述第一消息,设置写脏标志;所述写脏标志用于对经过所述虚拟PCIE设备的数据进行至少一次的读写操作。
- 根据权利要求38所述的方法,其特征在于,所述虚拟PCIE设备根据所述第一消息设置写脏标志包括:所述虚拟PCIE设备根据所述第一消息,由所述虚拟PCIE设备的驱动设置写脏标志;或所述虚拟PCIE设备设置独立的变量作为写脏标志。
- 根据权利要求39所述的方法,其特征在于,所述虚拟PCIE设备的驱动设置写脏标志包括:所述虚拟PCIE设备在所述虚拟PCIE设备驱动预留的数据空间内,设置写脏标志。
- 根据权利要求37-38任一所述的方法,其特征在于,在所述虚拟PCIE设备接收启动虚拟机热迁移的第一消息之前,所述方法还包括:在所述虚拟PCIE设备与所述物理PCIE设备之间建立消息通道,以接收启动虚拟机热迁移的第一消息。
- 根据权利要求41所述的方法,其特征在于,所述在所述虚拟PCIE设备与所述物理PCIE设备之间建立消息通道包括:在所述虚拟PCIE设备的驱动和所述物理PCIE设备的驱动分别预留一段数据空间,通过该预留的数据空间实现消息的传递。
- 根据权利要求42所述的方法,其特征在于,所述虚拟PCIE设备和所述物理PCIE设备通过预留的数据空间实现消息的传递包括:所述虚拟机的网卡通过在所述预留的数据空间之间通过直接内存存取 DMA的方式传递消息,来实现所述虚拟PCIE设备和所述物理PCIE设备之间的消息通信;或者,在所述虚拟机的网卡预留一个用于通信的数据空间,并将预留的数据空间分别共享给所述虚拟PCIE设备和所述物理PCIE设备。
- 根据权利要求37-43任一所述的方法,其特征在于,所述方法应用于适用单根输入输出虚拟化SR-IOV技术的虚拟机热迁移过程中;所述虚拟PCIE设备在停止接收数据前接收到的所有数据所在的页写脏后,根据接收到的所述迁移完成的第二消息取消写脏标志。
- 一种服务器,所述服务器上运行至少一个虚拟机,所述至少一个虚拟机处理的数据通过物理PCIE设备传输,所述物理PCIE设备上运行至少一个虚拟PCIE设备,每个虚拟机对应一个虚拟PCIE设备;其特征在于,所述至少一个虚拟PCIE设备中的第一虚拟PCIE设备包括:接收单元,用于接收与所述第一虚拟PCIE设备对应的虚拟机热启动迁移的第一消息;设置单元,用于根据所述第一消息,设置写脏标志;所述写脏标志用于对经过所述第一虚拟PCIE设备的数据进行至少一次的读写操作。
- 根据权利要求45所述的服务器,其特征在于,所述设置单元根据所述第一消息设置写脏标志包括:所述设置单元根据所述第一消息,由所述第一虚拟PCIE设备的驱动设置写脏标志;或所述设置单元设置独立的变量作为写脏标志。
- 根据权利要求46所述的服务器,其特征在于,所述设置单元通过驱动设置写脏标志包括:所述设置单元在所述第一虚拟PCIE设备驱动预留的数据空间内,设置写脏标志。
- 根据权利要求45-47任一所述的服务器,其特征在于,在所述第一虚拟PCIE设备还包括消息通道建立单元;所述消息通道建立单元,用于在所述第一虚拟PCIE设备与所述物理PCIE设备之间建立消息通道,以使所述接收单元通过建立的消息通道接收启动所述第一虚拟PCIE设备对应的虚拟机热迁移的第一消息。
- 根据权利要求48所述的服务器,其特征在于,所述消息通道建立单元在所述第一虚拟PCIE设备与所述物理PCIE设备之间建立消息通道包括:消息通道建立单元在所述第一虚拟PCIE设备的驱动和所述物理PCIE设备的驱动分别预留一段数据空间,通过该预留的数据空间实现所述第一虚拟PCIE设备和所述物理PCIE设备之间的消息传递。
- 根据权利要求49所述的服务器,其特征在于,所述第一虚拟PCIE设备和所述物理PCIE设备通过预留的数据空间实现消息的传递包括:通过所述虚拟机的网卡在所述预留的数据空间之间通过直接内存存取DMA的方式传递消息,来实现所述虚拟PCIE设备和所述物理PCIE设备之间的消息通信;或者,所述消息通道建立单元在所述虚拟机的网卡预留一个用于通信的数据空间,并将预留的数据空间分别共享给所述虚拟PCIE设备和所述物理PCIE设备。
- 根据权利要求45-50任一所述的服务器,其特征在于,所述第一虚 拟PCIE设备对应的虚拟机适用单根输入输出虚拟化SR-IOV技术实现虚拟化;所述设置单元,还用于接收到所述第一虚拟PCIE设备对应的虚拟机热迁移完成的第二消息时,根据所述第二消息取消所述写脏标志。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201480055409.1A CN105612498B (zh) | 2013-12-31 | 2014-12-04 | 虚拟机热迁移的方法、虚拟机内存数据处理方法、服务器和虚拟机*** |
CN201810119431.8A CN108205506B (zh) | 2013-12-31 | 2014-12-04 | 虚拟机热迁移的方法、虚拟机内存数据处理方法、服务器和虚拟机*** |
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNPCT/CN2013/091131 | 2013-12-31 | ||
PCT/CN2013/091131 WO2015100622A1 (zh) | 2013-12-31 | 2013-12-31 | 虚拟机热迁移的方法和服务器 |
PCT/CN2014/093034 WO2015101128A1 (zh) | 2013-12-31 | 2014-12-04 | 虚拟机热迁移的方法、虚拟机内存数据处理方法、服务器和虚拟机*** |
CN201480055409.1A CN105612498B (zh) | 2013-12-31 | 2014-12-04 | 虚拟机热迁移的方法、虚拟机内存数据处理方法、服务器和虚拟机*** |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810119431.8A Division CN108205506B (zh) | 2013-12-31 | 2014-12-04 | 虚拟机热迁移的方法、虚拟机内存数据处理方法、服务器和虚拟机*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105612498A true CN105612498A (zh) | 2016-05-25 |
CN105612498B CN105612498B (zh) | 2018-03-09 |
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 Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810119431.8A Active CN108205506B (zh) | 2013-12-31 | 2014-12-04 | 虚拟机热迁移的方法、虚拟机内存数据处理方法、服务器和虚拟机*** |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN108205506B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106878082A (zh) * | 2017-02-28 | 2017-06-20 | 郑州云海信息技术有限公司 | 一种虚拟网卡热迁移方法及其装置 |
CN107301084A (zh) * | 2017-07-05 | 2017-10-27 | 深圳先进技术研究院 | 集群服务器的虚拟机迁移方法、装置、服务器及存储介质 |
CN109634720A (zh) * | 2018-12-13 | 2019-04-16 | 郑州云海信息技术有限公司 | 一种多虚拟机共享fpga板卡的方法、***及装置 |
CN110413213A (zh) * | 2018-04-28 | 2019-11-05 | 伊姆西Ip控股有限责任公司 | 存储卷在存储阵列之间的无缝迁移 |
TWI764912B (zh) * | 2016-09-06 | 2022-05-21 | 香港商阿里巴巴集團服務有限公司 | 虛擬機熱遷移處理方法及系統 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111352695B (zh) * | 2018-12-24 | 2023-09-29 | 中国电信股份有限公司 | 虚拟机迁移方法、装置和计算机可读存储介质 |
CN112148421B (zh) * | 2019-06-29 | 2024-01-30 | 华为技术有限公司 | 虚拟机迁移的方法以及装置 |
CN110532208B (zh) * | 2019-07-12 | 2021-05-28 | 优刻得科技股份有限公司 | 一种数据处理方法、接口转换结构及数据处理设备 |
CN118312284A (zh) * | 2019-07-31 | 2024-07-09 | 华为技术有限公司 | 虚拟机热迁移方法和通信设备 |
CN112306624A (zh) * | 2019-07-31 | 2021-02-02 | 华为技术有限公司 | 一种信息处理方法、物理机和pcie设备 |
CN111736945B (zh) * | 2019-08-07 | 2024-05-17 | 北京京东尚科信息技术有限公司 | 基于智能网卡的虚拟机热迁移方法、装置、设备及介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120159101A1 (en) * | 2010-12-17 | 2012-06-21 | Fujitsu Limited | Information processing device |
US20120179855A1 (en) * | 2011-01-07 | 2012-07-12 | Tsirkin Michael S | Mechanism for Memory Change Tracking During Migration of Virtual Machine (VM) with VM-Controlled Assigned Peripherals |
CN103890728A (zh) * | 2013-12-31 | 2014-06-25 | 华为技术有限公司 | 虚拟机热迁移的方法和服务器 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100489787C (zh) * | 2007-07-10 | 2009-05-20 | 北京大学 | 一种虚拟机的外存在线迁移方法 |
CN102073462B (zh) * | 2010-11-29 | 2013-04-17 | 华为技术有限公司 | 虚拟存储迁移方法、***和虚拟机监控器 |
-
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 (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120159101A1 (en) * | 2010-12-17 | 2012-06-21 | Fujitsu Limited | Information processing device |
US20120179855A1 (en) * | 2011-01-07 | 2012-07-12 | Tsirkin Michael S | Mechanism for Memory Change Tracking During Migration of Virtual Machine (VM) with VM-Controlled Assigned Peripherals |
CN103890728A (zh) * | 2013-12-31 | 2014-06-25 | 华为技术有限公司 | 虚拟机热迁移的方法和服务器 |
CN103890728B (zh) * | 2013-12-31 | 2015-12-30 | 华为技术有限公司 | 虚拟机热迁移的方法和服务器 |
Non-Patent Citations (1)
Title |
---|
ZHENHAO PAN等: "CompSC: Live Migration with Pass-through Devices", 《PROCEEDINGS OF THE 8TH ACM SIGPLAN/SIGOPS CONFERENCE ON VIRTUAL EXECUTION ENVIRONMENTS》 * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI764912B (zh) * | 2016-09-06 | 2022-05-21 | 香港商阿里巴巴集團服務有限公司 | 虛擬機熱遷移處理方法及系統 |
CN106878082A (zh) * | 2017-02-28 | 2017-06-20 | 郑州云海信息技术有限公司 | 一种虚拟网卡热迁移方法及其装置 |
CN106878082B (zh) * | 2017-02-28 | 2020-03-31 | 郑州云海信息技术有限公司 | 一种虚拟网卡热迁移方法及其装置 |
CN107301084A (zh) * | 2017-07-05 | 2017-10-27 | 深圳先进技术研究院 | 集群服务器的虚拟机迁移方法、装置、服务器及存储介质 |
CN107301084B (zh) * | 2017-07-05 | 2020-04-21 | 深圳先进技术研究院 | 集群服务器的虚拟机迁移方法、装置、服务器及存储介质 |
CN110413213A (zh) * | 2018-04-28 | 2019-11-05 | 伊姆西Ip控股有限责任公司 | 存储卷在存储阵列之间的无缝迁移 |
CN110413213B (zh) * | 2018-04-28 | 2023-06-27 | 伊姆西Ip控股有限责任公司 | 存储卷在存储阵列之间的无缝迁移 |
CN109634720A (zh) * | 2018-12-13 | 2019-04-16 | 郑州云海信息技术有限公司 | 一种多虚拟机共享fpga板卡的方法、***及装置 |
CN109634720B (zh) * | 2018-12-13 | 2021-11-19 | 郑州云海信息技术有限公司 | 一种多虚拟机共享fpga板卡的方法、***及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN108205506B (zh) | 2021-11-19 |
CN105612498B (zh) | 2018-03-09 |
CN108205506A (zh) | 2018-06-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105612498A (zh) | 虚拟机热迁移的方法、虚拟机内存数据处理方法、服务器和虚拟机*** | |
CN103890728B (zh) | 虚拟机热迁移的方法和服务器 | |
CN103562878B (zh) | 在镜像虚拟机***中的存储器检查点设置 | |
CN102341786B (zh) | 改变对网络访问的方法和设备 | |
EP3992790B1 (en) | Information processing method, physical machine and pcie device | |
EP2755132A1 (en) | Virtual machine memory snapshot generating and recovering method, device and system | |
CN100589089C (zh) | 处理直接存储器访问请求的设备和方法 | |
US10956189B2 (en) | Methods for managing virtualized remote direct memory access devices | |
CN106095622A (zh) | 数据备份方法及装置 | |
CN118312284A (zh) | 虚拟机热迁移方法和通信设备 | |
CN104170307A (zh) | 失效切换方法、装置和*** | |
US20090307716A1 (en) | Block storage interface for virtual memory | |
CN105117274A (zh) | 虚拟机迁移方法和装置 | |
US10545697B1 (en) | Reverse order request queueing by para-virtual device drivers | |
CN104199716A (zh) | 一种虚拟机热迁移的方法、物理主机及*** | |
CN112099916B (zh) | 虚拟机数据的迁移方法、装置、计算机设备及存储介质 | |
CN105808391A (zh) | 一种热替换cpu节点的方法及装置 | |
CN102622245B (zh) | 一种sun4v架构下的虚拟机自动启动控制方法 | |
CN109308232A (zh) | 虚拟机热迁移故障后回滚的方法、装置以及*** | |
CN113918284B (zh) | 云主机批量迁移的方法及装置、电子设备和存储介质 | |
CN107515774B (zh) | 一种在线替换虚拟操作***底层块设备驱动的方法和装置 | |
CN116909689A (zh) | 虚拟机热迁移方法、装置、存储介质和电子设备 | |
CN117874748A (zh) | 一种跨平台操作***的混合安全虚拟化方法 | |
CN115858434A (zh) | 一种计算设备及请求处理方法 | |
CN115269109A (zh) | 内存回收方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |