CN112148421B - 虚拟机迁移的方法以及装置 - Google Patents
虚拟机迁移的方法以及装置 Download PDFInfo
- Publication number
- CN112148421B CN112148421B CN201910581208.XA CN201910581208A CN112148421B CN 112148421 B CN112148421 B CN 112148421B CN 201910581208 A CN201910581208 A CN 201910581208A CN 112148421 B CN112148421 B CN 112148421B
- Authority
- CN
- China
- Prior art keywords
- source
- instruction
- virtual machine
- address
- pass
- 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
- 238000013508 migration Methods 0.000 title claims abstract description 208
- 230000005012 migration Effects 0.000 title claims abstract description 204
- 238000000034 method Methods 0.000 title claims abstract description 133
- 238000003860 storage Methods 0.000 claims abstract description 372
- 230000015654 memory Effects 0.000 claims abstract description 255
- 238000012545 processing Methods 0.000 claims description 54
- 238000004891 communication Methods 0.000 claims description 38
- 238000004590 computer program Methods 0.000 claims description 9
- 230000008569 process Effects 0.000 abstract description 37
- 230000006870 function Effects 0.000 description 59
- 238000010586 diagram Methods 0.000 description 31
- 230000005540 biological transmission Effects 0.000 description 28
- 238000005516 engineering process Methods 0.000 description 19
- 230000003863 physical function Effects 0.000 description 14
- 230000002093 peripheral effect Effects 0.000 description 10
- 238000012546 transfer Methods 0.000 description 8
- 230000007246 mechanism Effects 0.000 description 6
- 230000009471 action Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 230000005856 abnormality Effects 0.000 description 3
- 230000001413 cellular effect Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 239000004744 fabric Substances 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 238000002955 isolation Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- LHMQDVIHBXWNII-UHFFFAOYSA-N 3-amino-4-methoxy-n-phenylbenzamide Chemical compound C1=C(N)C(OC)=CC=C1C(=O)NC1=CC=CC=C1 LHMQDVIHBXWNII-UHFFFAOYSA-N 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000004134 energy conservation Methods 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
Abstract
本申请提供了一种虚拟机迁移的方法以及装置,该方法应用在源端物理主机上,源端物理主机包括宿主机操作系统和运行在该宿主机操作系统之上的源端虚拟机,宿主机操作系统中包括PF驱动,该方法包括:源端虚拟机通过PF驱动向源端直通设备发送第一指令,该第一指令用于指示该源端直通设备记录脏页数据的存储地址,该脏页数据为该源端直通设备通过直接内存存取DMA方式向该源端虚拟机写入的数据;该源端虚拟机获取该源端直通设备的脏页数据的存储地址;该源端虚拟机向该目的端虚拟机发送待迁移数据,该待迁移数据包括该源端虚拟机的脏页数据。通过本申请的技术方案,能够保证配置直通设备的虚拟机在迁移过程前后内存的一致性。
Description
技术领域
本申请涉及计算机技术领域,具体地,涉及虚拟机迁移技术领域,尤其涉及配置直通设备的虚拟机迁移的方法以及装置。
背景技术
虚拟机(virtual machine,VM)是指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。虚拟机通常运行在宿主机上,每台宿主机上可以运行多台虚拟机。虚拟机迁移是指将正在运行的虚拟机从源宿主机移到目的宿主机上的过程,迁移过程中需要将虚拟机的脏页数据从源端虚拟机迁移至目的端虚拟机,其中,脏页数据是指源端直通设备通过直接内存存取(direct memory access,DMA)方式向源端虚拟机写入的数据,从而保证源端虚拟机和目的端的虚拟机的内存的一致性。
传统的虚拟化系统架构中,VM通过虚拟机监控器(virtual machine monitor,VMM)访问宿主机的硬件资源。在执行虚拟机迁移流程中,当源宿主机的中央处理器(central processing unit,CPU)执行写操作时对源虚拟机的内存进行修改,源宿主机通过开启扩展页表(extended page table,EPT)进行内存写保护机制标记脏页。例如,当开始源VM进行迁移时,源VM的所有内存页均被设置为写保护模式;当CPU对内存进行写操作时会触发写保护异常,CPU将标记脏页并记录脏页信息。
相比于传统的虚拟化系统架构,为了追求极致的性能,现有技术可以通过给虚拟机配置直通设备,虚拟机可直接访问直通设备从而达到高吞吐量,低时延的目标,同时还能够降低虚拟化层的开销,提升资源的可利用率。但是,当虚拟机的直通设备通过直接内存访问访问虚拟机的内存时,由于直通设备可以不经过CPU直接修改虚拟机的内存,因此可能无法触发内存写保护机制,也就无法确保热迁移的源端虚拟机和目的端的虚拟机的内存的一致性,降低了虚拟机迁移的性能。
发明内容
本申请提供一种虚拟机迁移的方法以及装置,能够保证配置直通设备的虚拟机在迁移过程前后(源端虚拟机和目的端的虚拟机)的内存的一致性,提高了虚拟机迁移的性能。
第一方面,提供了一种虚拟机迁移的方法,该方法应用在源端物理主机上,该源端物理主机包括宿主机操作系统和运行在该宿主机操作系统之上的源端虚拟机,该宿主机操作系统中包括物理功能PF驱动,该源端虚拟机处理的数据通过源端直通设备传输,该方法用于实现将该源端虚拟机迁移至目的端虚拟机,包括:该源端虚拟机通过该PF驱动向该源端直通设备发送第一指令,其中,该第一指令用于指示该源端直通设备记录脏页数据的存储地址,该脏页数据为该源端直通设备通过直接内存存取DMA方式向该源端虚拟机写入的数据;所述源端虚拟机获取所述源端直通设备的脏页数据的存储地址;该源端虚拟机向该目的端虚拟机发送待迁移数据,该待迁移数据包括该源端虚拟机的脏页数据。
其中,上述脏页数据可以是源端直通设备通过DMA方式向源端虚拟机的内存写入的数据;脏页数据的存储地址即可以是数据所在的内存地址,又可以称为脏页信息。
基于上述技术方案,在源端虚拟机需要进行热迁移时,源端虚拟机可以向直通给源端虚拟机的任意一个源端直通设备发送第一指令,从而指示源端直通设备在通过DMA方式向源端虚拟机写入数据时,源端直通设备标记该数据所在的内存地址;进而,源端虚拟机可以从源端直通设备中获取标记的内存地址,根据标记的内存地址获取脏页数据并向目的端发送该脏页数据。通过上述技术方案,可以解决当源端直通设备不经过物理主机CPU直接通过DMA方式修改虚拟机的内存的场景下,CPU无法获取脏页数据的存储地址的问题。基于上述技术方案,能够保证配置直通设备的虚拟机在迁移过程前后的内存的一致性,提高了虚拟机迁移的性能。
上述通过DMA访问方式是指这是指一种高速的数据传输操作,允许外部设备和内存之间直接读写数据。整个数据传输操作在DMA控制器的控制下进行的,DMA控制逻辑可以由CPU和DMA控制接口逻辑芯片共同组成,嵌入式系统的DMA控制器内建在处理器芯片内部。在实现DMA传输时是由DMA控制器直接控制总线,CPU将总线控制权交给DMA控制器,而在结束DMA传输后,DMA控制器立即将总线控制权再交回给CPU。一次完整的DMA传输数据的过程可以包括DMA请求、DMA响应、DMA传输、DMA结束4个步骤。其中,DMA传输是指在DMA控制器获得总线控制权后,CPU即刻挂起或只执行内部操作,由DMA控制器输出读写命令,直接控制RAM与I/O接口进行DMA传输。在DMA控制器的控制下,在存储器和外部设备之间直接进行数据传送,在传送过程中不需要CPU的参与。
在一种可能的实现方式中,源端直通设备通过快捷外围部件互连标准PCIe总线连接源端物理主机中的根复合体(root complex,RC)实现对源端物理主机中运行的源端虚拟机的DMA访问。其中,RC用于将处理器和内存子系统连接到由一个或多个交换设备组成的PCI Express交换结构。
结合第一方面,在某些可能的实现方式中,该源端虚拟机通过该PF驱动向该源端直通设备发送第一指令,包括:该源端虚拟机向该PF驱动发送该第一指令;该PF驱动将该第一指令发送至该源端直通设备。
在本申请的技术方案中,源端虚拟机可以向PF驱动发送迁移指令,PF驱动将迁移指令透传至源端直通设备,迁移指令可以用于指示源端直通设备执行相应的迁移操作,迁移指令可以包括上述第一指令。例如,迁移指令可以包括保存指令、脏页同步指令、停机指令、启动指令、关闭脏页标记指令等。
在一种可能的实现方式中,源端直通设备可以为PF设备,则源端虚拟机可以通过PF驱动向PF设备发送迁移指令。
基于上述技术方案,可以通过PF驱动实现源端虚拟机向源端直通设备发送迁移指令,从而实现配置直通设备的虚拟机的迁移。
结合第一方面,在某些可能的实现方式中,该源端虚拟机通过该PF驱动向该源端直通设备发送第一指令,包括:该PF驱动将该第一指令写入预留的存储空间,该预留的存储空间用于该源端直通设备获取该第一指令,使源端直通设备从预留的存储空间中获取第一指令。
应理解,PF驱动可以通过PF通道向源端直通设备发送迁移指令,PF通道可以是指逻辑概念。在一种实现方式中,PF通道可以是预留的存储空间,PF驱动将接收到的源端虚拟机发送的迁移指令写入至该预留的存储空间,源端直通设备可以通过检测预留的存储空间获取源端虚拟机发送的迁移指令,迁移指令可以包括上述第一指令。
在一种可能的实现方式中,预留的存储空间可以是为PF驱动分配的通过DMA方式访问的预留内存。
基于上述技术方案,可以通过预留的存储空间承载源端虚拟机向源端直通设备发送的迁移指令,从而确保配置直通设备的虚拟机在迁移过程前后的内存的一致性,提高了虚拟机迁移的性能。
结合第一方面,在某些可能的实现方式中,该方法还包括:该PF驱动通过该源端直通设备的寄存器向该源端直通设备发送该预留的存储空间地址。
应理解,在虚拟机迁移准备阶段,源端虚拟机需要将预留的存储空间的内存发送给源端直通设备,从而确保源端直通设备可以接收到源端虚拟机发送的迁移指令。
结合第一方面,在某些可能的实现方式中,该源端虚拟机通过该PF驱动向该源端直通设备发送第一指令,包括:该PF驱动将该第一指令写入该源端直通设备的PCIe配置空间的预留位,该PCIe配置空间用于该源端直通设备获取该指令,使源端直通设备从PCIe配置空间的预留位中获取第一指令。
其中,源端直通设备的PCIe配置空间可以是源端直通设备的一系列寄存器集群。源端虚拟机可以通过PCIe配置空间的预留位向源端直通设备发送迁移指令。
上述PCIe配置空间的预留位可以是指源端直通设备现有的PCIe配置空间的预留位。
基于上述技术方案,PF驱动接收到源端虚拟机发送的迁移指令后,可以通过PCIe配置空间将迁移指令发送至源端直通设备,例如,可以通过PCIe配置空间的预留位将第一指令发送至源端直通设备指示源端直通设备记录脏页数据的存储地址,从而确保配置直通设备的虚拟机在迁移过程前后的内存的一致性,提高了虚拟机迁移的性能。
结合第一方面,在某些可能的实现方式中,该源端虚拟机通过该PF驱动向该源端直通设备发送第一指令,包括:该PF驱动将该第一指令写入该源端直通设备的预配置的PCIe配置空间,该预配置的PCIe配置空间用于该源端直通设备获取该第一指令使源端直通设备从预配置的PCIe配置空间中获取第一指令。
上述预配置的PCIe配置空间可以是指为源端直通设备配置一个用于传输迁移指令的PCIe配置空间。
基于上述技术方案,PF驱动接收到源端虚拟机发送的迁移指令后,可以通过PCIe配置空间将迁移指令发送至源端直通设备,例如,可以通过预配置的PCIe配置空间将第一指令发送至源端直通设备指示源端直通设备记录脏页数据的存储地址,从而确保配置直通设备的虚拟机在迁移过程前后的内存的一致性,提高了虚拟机迁移的性能。
结合第一方面,在某些可能的实现方式中,该源端直通设备中运行多个虚拟直通设备,该方法还包括:为该PF驱动中分配第一存储空间,该第一存储空间用于存储该多个虚拟直通设备中每个多个虚拟直通设备所记录的脏页数据的存储地址。
在一种可能的实现方式中,源端直通设备中可以运行多个虚拟直通设备,虚拟直通设备是运行在源端源端直通设备中的虚拟设备,源端直通设备也可以是硬件设备中运行的多个虚拟直通设备中的任意一个,即第一直通源端直通设备可以是VF设备。
上述第一存储空间可以是为PF驱动分配的通过DMA方式访问的存储空间,该存储空间中可以用于同步多个虚拟直通设备所记录的脏页数据的存储地址。第一存储空间可以是基于虚拟机粒度的存储空间,即该第一存储空间可以用于同步直通源端虚拟机的多个源端直通设备记录的脏页数据的存储地址。
结合第一方面,在某些可能的实现方式中,该源端虚拟机获取该源端源端直通设备的脏页数据的地址,包括:该源端虚拟机通过该PF驱动向该源端直通设备发送脏页同步指令,该脏页指令中包括该第一存储空间中的第一地址,该脏页同步指令用于指示该源端直通设备将该脏页数据的存储地址同步至该第一地址所指示的该第一存储空间中的存储位置;该源端虚拟机根据该第一地址从该第一存储空间中读取该脏页数据的存储地址。
基于上述技术方案,源端虚拟机通过PF驱动可以向源端源端直通设备发送脏页同步指令,脏页同步指令中携带第一地址,源端直通设备可以将记录的脏页数据的存储地址同步至第一地址所指示的第一存储空间的存储位置中。通过本申请的技术方案,在配置直通设备的虚拟机迁移过程中,无需消耗源端物理主机的CPU资源获取脏页数据的存储地址,节省了资源提高了虚拟机迁移的性能。
在一种可能的实现方式中,该脏页同步指令为周期性发送的指令。
应理解,源端直通设备可以不断的对源端虚拟机的内存通过DMA方式进行数据的写入。在源端直通设备停止运行之前,脏页信息是不断更新的信息。因此,源端虚拟机可以周期性地向源端直通设备发送脏页同步指令,获取不断更新的脏页数据的存储地址。
结合第一方面,在某些可能的实现方式中,为该PF驱动中分配第二存储空间,该第二存储空间用于存储该多个虚拟直通设备中每个多个虚拟直通设备的状态信息,该状态信息是指该每个虚拟直通设备在停止运行时刻的状态信息,该状态信息包括该每个虚拟直通设备的寄存器的信息和内存描述符的信息。
这里需要说明的是,寄存器的信息可以是指源端直通设备停止运行时寄存器的状态信息,比如,可以是源端直通设备中寄存器的接收队列、发送队列以及控制队列的索引等信息。内存描述符的信息可以是指源端直通设备在停止运行时刻,数据面接收或者发送数据的状态信息。源端虚拟机通过获取源端直通设备的状态信息,并向目的端虚拟机发送状态信息,从而可以能够保证配置直通设备的虚拟机在迁移过程前后源端直通设备和目的端直通设备的状态(例如,寄存器状态、中断状态)的一致性,提高了虚拟机迁移的性能。
结合第一方面,在某些可能的实现方式中,该方法还包括:该源端虚拟机通过PF驱动向该源端直通设备发送保存指令,该保存指令中包括该第二存储空间中的第二地址,该保存指令用于指示该源端直通设备将该状态信息保存至该第二地址所指示的该第二存储空间中的存储位置;该源端虚拟机在该第二地址对应该第二存储空间中的存储位置获取该状态信息。
基于上述技术方案,源端虚拟机通过PF驱动可以向源端直通设备发送保存指令,保存指令中携带第二地址,源端直通设备可以将源端直通设备的状态信息保存至第二地址所指示的第二存储空间的存储位置中。通过本申请的技术方案,能够保证配置直通设备的虚拟机在迁移过程前后源端直通设备和目的端直通设备状态的一致性,提高了虚拟机迁移的性能。
结合第一方面,在某些可能的实现方式中,,该多个虚拟直通设备中包括该第一虚拟直通设备和第二虚拟直通设备,该方法还包括:在接收到该PF驱动发送的第二指令的反馈指令之后,该源端虚拟机通过该PF驱动向该第二虚拟直通设备发送第三指令;该反馈指令表示该PF驱动已将该第二指令发送至该第一虚拟直通设备。
在一种可能的实现方式中,第二指令、第三指令可以是任意一个迁移指令,例如,可以是前述的第一指令、脏页同步指令、保存指令中的任意一个。
在本申请的技术方案中,源端虚拟机通过PF驱动向第一虚拟直通设备发送第一指令后,PF驱动可以直接发送该第一指令的反馈指令,从而源端虚拟机可以向第二虚拟直通设备发送迁移指令。换而言之,源端虚拟机不需要等待第一虚拟直通设备执行完第一指令后才能向第二虚拟直通设备发送迁移指令,即源端虚拟机接收到第一指令的反馈指令后可以立即向第二虚拟直通设备发送迁移指令,从而降低了虚拟机迁移的时长,提高了虚拟机迁移的性能。
结合第一方面,在某些可能的实现方式中,该源端虚拟机向该目的端虚拟机发送待迁移数据,包括:该源端虚拟机通过内存迭代拷贝方式向该目的端虚拟机发送待迁移数据,该待迁移数据包括该源端虚拟机的脏页数据。
第二方面,提供一种虚拟机迁移的方法,包括:源端直通设备通接收源端虚拟机设备通过物理功能PF驱动发送的第一指令,其中,该第一指令用于指示该源端直通设备记录脏页数据的存储地址,该脏页数据为该源端直通设备通过直接内存存取DMA方式向该源端虚拟机写入的数据,该PF驱动运行在源端物理主机的宿主操作系统中,该源端物理主机还包括运行在该宿主操作系统之上的该源端虚拟机;该源端直通设备根据该第一指令,记录该脏页数据的存储地址;该源端直通设备向该源端虚拟机发送该在脏页数据的存储地址。
其中,上述脏页数据可以是源端直通设备通过DMA方式向源端虚拟机的内存写入的数据;脏页数据的存储地址即可以是数据所在的内存地址,又可以称为脏页信息。
基于上述技术方案,在源端虚拟机需要进行热迁移时,源端虚拟机可以向直通给源端虚拟机的任意一个源端直通设备发送第一指令,从而指示源端直通设备在通过DMA方式向源端虚拟机写入数据时,源端直通设备标记该数据所在的内存地址;进而,源端虚拟机可以从源端直通设备中获取标记的内存地址,根据标记的内存地址获取脏页数据并向目的端发送该脏页数据。通过上述技术方案,可以解决当源端直通设备不经过物理主机CPU直接通过DMA方式修改虚拟机的内存的场景下,CPU无法获取脏页数据的存储地址的问题。基于上述技术方案,能够保证配置直通设备的虚拟机在迁移过程前后的内存的一致性,提高了虚拟机迁移的性能。
上述通过DMA访问方式是指这是指一种高速的数据传输操作,允许外部设备和内存之间直接读写数据。整个数据传输操作在DMA控制器的控制下进行的,DMA控制逻辑可以由CPU和DMA控制接口逻辑芯片共同组成,嵌入式系统的DMA控制器内建在处理器芯片内部。在实现DMA传输时是由DMA控制器直接控制总线,CPU将总线控制权交给DMA控制器,而在结束DMA传输后,DMA控制器立即将总线控制权再交回给CPU。一次完整的DMA传输数据的过程可以包括DMA请求、DMA响应、DMA传输、DMA结束4个步骤。其中,DMA传输是指在DMA控制器获得总线控制权后,CPU即刻挂起或只执行内部操作,由DMA控制器输出读写命令,直接控制RAM与I/O接口进行DMA传输。在DMA控制器的控制下,在存储器和外部设备之间直接进行数据传送,在传送过程中不需要CPU的参与。
在一种可能的实现方式中,源端直通设备通过PCIe总线连接源端物理主机中的根复合体(root complex,RC)实现对源端物理主机中运行的源端虚拟机的DMA访问。其中,RC用于将处理器和内存子系统连接到由一个或多个交换设备组成的PCI Express交换结构。
结合第二方面,在某些可能的实现方式中,该源端直通设备接收源端虚拟机通过物理功能PF驱动发送的第一指令,包括:该源端直通设备接收该PF驱动发送的该第一指令,该第一指令为该源端虚拟机通过该PF驱动透传至该源端直通设备的指令。
在本申请的技术方案中,源端直通设备可以接收源端虚拟机通过PF驱动接收发送的迁移指令,即PF驱动将迁移指令透传至源端直通设备,迁移指令可以用于指示源端直通设备执行相应的迁移操作,迁移指令可以包括上述第一指令。例如,迁移指令可以包括保存指令、脏页同步指令、停机指令、启动指令、关闭脏页标记指令等。
在一种可能的实现方式中,源端直通设备可以为PF设备,则源端虚拟机可以通过PF驱动向PF设备发送迁移指令。
基于上述技术方案,可以通过PF驱动实现源端虚拟机向源端直通设备发送迁移指令,从而实现配置直通设备的虚拟机的迁移。
结合第二方面,在某些可能的实现方式中,该源端直通设备接收源端虚拟机通过物理功能PF驱动发送的第一指令,包括:该源端直通设备获取预留的存储空间的地址;根据该预留的存储空间的地址获取承载于该预留的存储空间中的该第一指令,该第一指令为该PF驱动写入该预留的存储空间的指令,以使源端直通设备从预留的存储空间中获取第一指令。
应理解,PF驱动可以通过PF通道向源端直通设备发送迁移指令,PF通道可以是指逻辑概念。在一种实现方式中,PF通道可以是预留的存储空间,PF驱动将接收到的源端虚拟机发送的迁移指令写入至该预留的存储空间,源端直通设备可以通过检测预留的存储空间获取源端虚拟机发送的迁移指令,迁移指令可以包括上述第一指令。
在一种可能的实现方式中,预留的存储空间可以是为PF驱动分配的通过DMA方式访问的预留内存。
基于上述技术方案,可以通过预留的存储空间承载源端虚拟机向源端直通设备发送的迁移指令,从而确保配置直通设备的虚拟机在迁移过程前后的内存的一致性,提高了虚拟机迁移的性能。
结合第二方面,在某些可能的实现方式中,该源端直通设备接收源端虚拟机通过物理功能PF驱动发送的第一指令,包括:该源端直通设备获取承载于该源端直通设备的PCIe配置空间的预留位的该第一指令,该第一指令为该PF驱动写入该预留位的指令,以使源端直通设备从PCIe配置空间的预留位中获取第一指令。
其中,源端直通设备的PCIe配置空间可以是源端直通设备的一系列寄存器集群。源端虚拟机可以通过PCIe配置空间的预留位向源端直通设备发送迁移指令。
上述PCIe配置空间的预留位可以是指源端直通设备现有的PCIe配置空间的预留位。
基于上述技术方案,PF驱动接收到源端虚拟机发送的迁移指令后,可以通过PCIe配置空间将迁移指令发送至源端直通设备,例如,可以通过PCIe配置空间的预留位将第一指令发送至源端直通设备指示源端直通设备记录脏页数据的存储地址,从而确保配置直通设备的虚拟机在迁移过程前后的内存的一致性,提高了虚拟机迁移的性能。
结合第二方面,在某些可能的实现方式中,该源端直通设备接收源端虚拟机通过物理功能PF驱动发送的第一指令,包括:该源端直通设备获取承载于该源端直通设备的预配置的PCIe配置空间的该第一指令,该第一指令为该PF驱动写入该预配置的PCIe配置空间的指令,以使源端直通设备从预配置的PCIe配置空间中获取第一指令。
上述预配置的PCIe配置空间可以是指为源端直通设备配置一个用于传输迁移指令的PCIe配置空间。
基于上述技术方案,PF驱动接收到源端虚拟机通过PF驱动发送的迁移指令后,可以通过PCIe配置空间将迁移指令发送至源端直通设备,例如,可以通过预配置的PCIe配置空间将第一指令发送至源端直通设备指示源端直通设备记录脏页数据的存储地址,从而确保配置直通设备的虚拟机在迁移过程前后的内存的一致性,提高了虚拟机迁移的性能。
结合第二方面,在某些可能的实现方式中,该源端直通设备向该源端虚拟机发送该在脏页数据的存储地址,包括:该源端直通设备通过接收该源端虚拟机通过该PF驱动发送的脏页同步指令,该脏页指令中包括第一存储空间中的第一地址,该第一存储空间表示为该PF驱动中分配的用于同步该脏页数据的存储地址的存储空间,该脏页同步指令用于指示该源端直通设备将该脏页数据的存储地址同步至该第一地址所指示的该第一存储空间中的存储位置;该源端直通设备根据该脏页同步指令将该脏页数据的存储地址同步至该第一地址所指示的该第一存储空间中的存储位置。
基于上述技术方案,源端虚拟机通过PF驱动可以向源端直通设备发送脏页同步指令,脏页同步指令中携带第一地址,源端直通设备可以将记录的脏页数据的存储地址同步至第一地址所指示的第一存储空间的存储位置中。通过本申请的技术方案,在配置直通设备的虚拟机迁移过程中,无需消耗源端物理主机的CPU资源获取脏页数据的存储地址,节省了资源提高了虚拟机迁移的性能。
在一种可能的实现方式中,该脏页同步指令为周期性发送的指令。
应理解,源端直通设备可以不断的对源端虚拟机的内存通过DMA方式进行数据的写入。在源端直通设备停止运行之前,脏页信息是不断更新的信息。因此,源端虚拟机可以周期性地向源端直通设备发送脏页同步指令,获取不断更新的脏页数据的存储地址。
结合第二方面,在某些可能的实现方式中,该源端直通设备中运行多个虚拟直通设备,该第一存储空间用于存储该多个虚拟直通设备中每个多个虚拟直通设备所记录的脏页数据的存储地址。
在一种可能的实现方式中,源端直通设备中可以运行多个虚拟直通设备,虚拟直通设备是运行在源端直通设备中的虚拟设备,源端直通设备也可以是硬件设备中运行的多个虚拟直通设备中的任意一个,即第一直通源端直通设备可以是VF设备。
上述第一存储空间可以是为PF驱动分配的通过DMA方式访问的存储空间,该存储空间中可以用于同步多个虚拟直通设备所记录的脏页数据的存储地址。第一存储空间可以是基于虚拟机粒度的存储空间,即该第一存储空间可以用于同步直通源端虚拟机的多个源端直通设备记录的脏页数据的存储地址。
结合第二方面,在某些可能的实现方式中,该方法还包括:该源端直通设备接收该源端虚拟机通过该PF驱动发送的保存指令,该保存指令中包括第二存储空间中的第二地址,该第二存储空间表示为该PF驱动中分配的用于保存该源端直通设备在停止运行时刻的状态信息的存储空间,该保存指令用于指示该源端直通设备将该状态信息保存至该第二地址所指示的该第二存储空间中的存储位置,该状态信息包括该源端直通设备的寄存器的信息和内存描述符的信息;该源端直通设备根据该保存指令将该状态信息保存至该第二地址所指示的该第二存储空间中的存储位置。
基于上述技术方案,源端虚拟机通过PF驱动可以向源端直通设备发送保存指令,保存指令中携带第二地址,源端直通设备可以将源端直通设备的状态信息保存至第二地址所指示的第二存储空间的存储位置中。通过本申请的技术方案,能够保证配置直通设备的虚拟机在迁移过程前后源端直通设备和目的端直通设备状态的一致性,提高了虚拟机迁移的性能。
结合第二方面,在某些可能的实现方式中,该源端直通设备中运行多个虚拟直通设备,该第二存储空间用于存储该多个虚拟直通设备中每个多个虚拟直通设备的状态信息。
这里需要说明的是,寄存器的信息可以是指源端直通设备停止运行时寄存器的状态信息,比如,可以是源端直通设备中寄存器的接收队列、发送队列以及控制队列的索引等信息。内存描述符的信息可以是指源端直通设备在停止运行时刻,数据面接收或者发送数据的状态信息。源端虚拟机通过获取源端直通设备的状态信息,并向目的端虚拟机发送状态信息,从而可以能够保证配置直通设备的虚拟机在迁移过程前后源端直通设备和目的端直通设备的状态(例如,寄存器状态、中断状态)的一致性,提高了虚拟机迁移的性能。
第三方面,提供了一种物理主机,包括源端虚拟机模块和物理功能PF驱动模块,该源端虚拟机模块用于通过该PF驱动模块向源端直通设备发送第一指令,其中,该第一指令用于指示该源端直通设备记录脏页数据的存储地址,该脏页数据为该源端直通设备通过直接内存存取DMA方式向该源端虚拟机模块写入的数据;该源端虚拟机模块,还用于获取该源端直通设备记录的脏页数据的存储地址;向该目的端虚拟机发送待迁移数据,该待迁移数据包括该源端虚拟机模块的脏页数据。
结合第三方面,在某些可能的实现方式中,该源端虚拟机模块具体用于:向该PF驱动模块发送该第一指令;该PF驱动模块,具体用于将该第一指令发送至该源端直通设备。
结合第三方面,在某些可能的实现方式中,该PF驱动模块具体用于:将该第一指令写入预留的存储空间,该预留的存储空间用于该源端直通设备获取该第一指令,以使源端直通设备从预留的存储空间中获取第一指令。
结合第三方面,在某些可能的实现方式中,该PF驱动模块还用于:通过该源端直通设备的寄存器向该源端直通设备发送该预留的存储空间的地址,以使源端直通设备从预留的存储空间中获取第一指令。
结合第三方面,在某些可能的实现方式中,该PF驱动模块具体用于:将该第一指令写入该源端直通设备的PCIe配置空间的预留位,该PCIe配置空间用于该源端直通设备获取该指令,以使源端直通设备从PCIe配置空间的预留位中获取第一指令。
结合第三方面,在某些可能的实现方式中,该PF驱动模块,具体用于将该第一指令写入该源端直通设备的预配置的PCIe配置空间,该预配置的PCIe配置空间用于该源端直通设备获取该第一指令,以使源端直通设备从预配置的PCIe配置空间中获取第一指令。
结合第三方面,在某些可能的实现方式中,该源端直通设备中运行多个虚拟直通设备,该物理主机还包括:控制模块,该控制模块用于为该PF驱动模块中分配第一存储空间,该第一存储空间用于存储该多个虚拟直通设备中每个多个虚拟直通设备所记录的脏页数据的存储地址。
结合第三方面,在某些可能的实现方式中,该源端虚拟机模块还用于:通过该PF驱动模块向该源端直通设备发送脏页同步指令,该脏页指令中包括该第一存储空间中的第一地址,该脏页同步指令用于指示该源端直通设备将该脏页数据的存储地址同步至该第一地址所指示的该第一存储空间中的存储位置;根据该第一地址从该第一存储空间中读取该脏页数据的存储地址。
结合第三方面,在某些可能的实现方式中,该控制模块还用于:为该PF驱动模块中分配第二存储空间,该第二存储空间用于存储该多个虚拟直通设备中每个多个虚拟直通设备的状态信息,该状态信息是指该每个虚拟直通设备在停止运行时刻的状态信息,该状态信息包括该每个虚拟直通设备的寄存器的信息和内存描述符的信息。
结合第三方面,在某些可能的实现方式中,该源端虚拟机模块还用于:通过PF驱动模块向该源端直通设备发送保存指令,该保存指令中包括该第二存储空间中的第二地址,该保存指令用于指示该源端直通设备将该状态信息保存至该第二地址所指示的该第二存储空间中的存储位置;在该第二地址对应该第二存储空间中的存储位置获取该状态信息。
结合第三方面,在某些可能的实现方式中,该多个虚拟直通设备中包括该第一虚拟直通设备和第二虚拟直通设备,该源端虚拟机模块还用于:在接收到该PF驱动模块发送的第二指令的反馈指令之后,通过该PF驱动模块向该第二虚拟直通设备发送第三指令;该反馈指令表示该PF驱动模块已将该第二指令发送至该第一虚拟直通设备。
在一种可能的实现方式中,第二指令、第三指令可以是任意一个迁移指令,例如,可以是前述的第一指令、脏页同步指令、保存指令中的任意一个。
第四方面,提供一种直通设备,包括通信模块和处理模块,该通信模块,用于接收源端虚拟机通过物理功能PF驱动发送的第一指令,其中,该第一指令用于指示该直通设备记录脏页数据的存储地址,该脏页数据为该直通设备通过直接内存存取DMA方式向该源端虚拟机写入的数据,该PF驱动运行在源端物理主机的宿主操作系统中,该源端物理主机还包括运行在该宿主操作系统之上的该源端虚拟机;该处理模块,用于根据该第一指令,记录该脏页数据的存储地址;该通信模块,还用于向该源端虚拟机发送该在脏页数据的存储地址。
应理解,上述直通设备可以是配置于源端虚拟机的源端直通设备。
结合第四方面,在某些可能的实现方式中,该通信模块具体用于:接收该PF驱动发送的该第一指令,该第一指令为该源端虚拟机通过该PF驱动透传至该直通设备的指令。
结合第四方面,在某些可能的实现方式中,该通信模块还用于:该直通设备获取预留的存储空间的地址;该处理模块,还用于根据该预留的存储空间的地址获取承载于该预留的存储空间中的该第一指令,该第一指令为该PF驱动写入该预留的存储空间的指令,以使直通设备从预留的存储空间中获取第一指令。
结合第四方面,在某些可能的实现方式中,该通信模块具体用于:获取承载于该直通设备的PCIe配置空间的预留位的该第一指令,该第一指令为该PF驱动写入该预留位的指令,以使直通设备从PCIe配置空间的预留位中获取第一指令。
结合第四方面,在某些可能的实现方式中,该通信模块具体用于:获取承载于该直通设备的预配置的PCIe配置空间的该第一指令,该第一指令为该PF驱动写入该预配置的PCIe配置空间的指令,以使直通设备从预配置的PCIe配置空间中获取第一指令。
结合第四方面,在某些可能的实现方式中,该通信模块还用于:接收该源端虚拟机通过该PF驱动发送的脏页同步指令,该脏页指令中包括第一存储空间中的第一地址,该第一存储空间表示为该PF驱动中分配的用于同步该脏页数据的存储地址的存储空间,该脏页同步指令用于指示该直通设备将该脏页数据的存储地址同步至该第一地址所指示的该第一存储空间中的存储位置;该处理模块,还用于根据该脏页同步指令将该脏页数据的存储地址同步至该第一地址所指示的该第一存储空间中的存储位置。
结合第四方面,在某些可能的实现方式中,该直通设备中运行多个虚拟直通设备,该第一存储空间用于存储该多个虚拟直通设备中每个多个虚拟直通设备所记录的脏页数据的存储地址。
结合第四方面,在某些可能的实现方式中,该通信模块还用于:接收该源端虚拟机通过该PF驱动发送的保存指令,该保存指令中包括第二存储空间中的第二地址,该第二存储空间表示为该PF驱动中分配的用于保存该直通设备在停止运行时刻的状态信息的存储空间,该保存指令用于指示该直通设备将该状态信息保存至该第二地址所指示的该第二存储空间中的存储位置,该状态信息包括该直通设备的寄存器的信息和内存描述符的信息;该处理模块,还用于根据该保存指令将该状态信息保存至该第二地址所指示的该第二存储空间中的存储位置。
结合第四方面,在某些可能的实现方式中,该直通设备中运行多个虚拟直通设备,该第二存储空间用于存储该多个虚拟直通设备中每个多个虚拟直通设备的状态信息。
第五方面,提供了一种计算机系统。该计算机系统包括处理器和存储器,存储器用于存储计算机程序,处理器用于调用该计算机程序执行前述第一方面或第二方面以及第一方面或第二方面中任一种可能实现方式中的方法。
该存储器可以用于存储该计算机系统的程序代码和数据。因此,该存储器可以是处理器内部的存储单元,也可以是与处理器独立的外部存储单元,还可以是包括处理器内部的存储单元和与处理器独立的外部存储单元的部件。
存储器可以包括易失性存储器(volatile memory),例如随机存取存储器(randomaccess memory,RAM);存储器也可以包括非易失性存储器(non-volatile memory),例如只读存储器(read-only memory,ROM)、快闪存储器(flash memory)、硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD);存储器还可以包括上述种类的存储器的组合。存储器可用于存储一组程序代码,以便于处理器调用存储器中存储的程序代码以实现本发明实施例中涉及的接收模块和/或处理模块的功能。
处理器可以由一个或者多个通用处理器构成,例如可以是中央处理器(centralprocessing unit,CPU),通用处理器,数字信号处理器(digital signal processor,DSP),专用集成电路(application-specific integrated circuit,ASIC),现场可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。该处理器也可以是实现计算功能的组合,例如包含多个微处理器组合,DSP和微处理器的组合等等。处理器可用于运行相关的程序代码中处理功能的程序。也就是说,处理器执行程序代码可以实现处理模块的功能。其中,关于处理模块具体可参见前述第三方面中的相关阐述。
应理解,处理器还可以是包括至少一台计算设备的处理器的集合,本申请对此不做具体限定。
在一种可能的实施方式中,该至少一个计算设备的处理器共同用于运行相关的程序代码,以实现本申请上述第三方面中虚拟机和PF驱动的功能。
在一种可能的实施方式中,该至少一个计算设备的处理器共同用于运行相关的程序代码,以实现本申请上述第四方面中各模块的功能。
在另一种可能的实施方式中,每个计算设备的处理器可单独用于运行相关的程序代码,以实现本申请上述第三方面中虚拟机和PF驱动的功能。
在另一种可能的实施方式中,每个计算设备的处理器可单独用于运行相关的程序代码,以实现本申请上述第四方面中各模块的功能。
通信接口可以为有线接口(例如以太网接口)或无线接口(例如蜂窝网络接口或使用无线局域网接口),用于与其他模块/设备进行通信。例如,本申请实施例中通信接口具体可用于接收企业租户或租户发送的指令数据等。
第六方面,提供一种计算机系统,包括前述物理主机和一个或多个直通设备。
第七方面,提供了一种计算机可读介质,该计算机可读介质存储有程序代码,当该计算机程序代码在计算机上运行时,使得计算机执行上述各方面中的方法。
第八方面,提供了一种计算机程序产品,该计算机程序产品包括:计算机程序代码,当该计算机程序代码在计算机上运行时,使得计算机执行上述各方面中的方法。
附图说明
图1是本申请实施例提供的计算机的硬件结构示意图;
图2是本申请实施例提供的虚拟化的计算机的结构图的示意图;
图3是本申请实施例提供的热迁移的示意图;
图4是本申请实施例提供的基于SR-IOV实现直通技术的示意图;
图5是适用于本申请实施例的系统架构的示意图;
图6是适用于本申请实施例的系统架构的示意图;
图7是本申请一个实施提供的虚拟机迁移的方法的示意图;
图8是本申请实施例提供的PF驱动的逻辑架构图;
图9是本申请实施例提供的虚拟机向虚拟直通设备发送迁移指令的示意图;
图10是本申请另一个实施提供的虚拟机迁移的方法的示意图;
图11是本申请一个实施例提供的物理主机的示意性框图;
图12是本申请一个实施例提供的直通设备的示意性框图;
图13是本申请另一个实施例提供的物理主机的示意性框图;
图14是本申请另一个实施例提供的直通设备的示意性框图。
具体实施方式
下面将结合附图,对本申请中的技术方案进行描述。
首先,对本申请中涉及到的一些术语做简单说明。
虚拟计算机为所有类型的虚拟化设备中软件虚拟出来的运行环境的统称,该概念包括虚拟机、容器。虚拟化作为云场景的核心技术,将硬件资源虚拟化后共享给多个用户使用,使用户能在安全隔离的前提下方便灵活地使用物理资源,并且能极大提升物理资源的利用率。
例如,图1所示为本申请实施例提供的计算机的硬件结构示意图。
如图1所示,计算机的硬件结构100可以包括处理器110、存储器120以及网络接口130(也被称为网卡或网络适配器等)等组件。其中,处理器110可以为单核处理器,也可以为多核处理器。当处理器110为多核处理器时,本申请提供的方法可以运行在一个核上,也可以分布运行在不同的核上。处理器110可以为一个,也可以为多个,多个处理器的类型可以相同或不相同。处理器的类型有CPU、图形处理器(graphics processing unit,GPU)、微处理器或协处理器等。网络接口130可以用于连接其他网络设备,包括无线连接和有线连接。存储器120包括易失性和非易失性存储器,通常非易失性存储器上存储有虚拟化软件程序122以及其他程序模块123。虚拟化软件程序122被处理器110读取和运行之后硬件结构100的虚拟化,包括创建宿主机层以及多个虚拟计算机等;本申请提供的虚拟机迁移的软件程序在被处理器110读取和运行之后实现本申请各个实施例提供的各种虚拟机迁移的方法。本申请提供的软件程序可以结合在虚拟化软件程序122中。
以上组件通过总线140连接。总线140可以是一条,也可以是多条。总线140包括高级微控制器总线(advance microcontroller bus architecture,AMBA)工业标准结构(industry standard architecture,ISA)总线,微通道结构(micro channelarchitecture,MCA)总线,扩展ISA(extended-ISA)总线,视频电子标准协会(videoelectronics standards association,VESA)局域总线,以及外围器件互联(peripheralcomponent interconnect,PCI)总线等。
图2所示为本申请实施例提供的虚拟化的计算机200的结构图的示意图。该虚拟化的计算机200可以包括硬件层、宿主机层和虚拟化层,虚拟化层包含两台虚拟机。图2中以硬件层包括两个处理器210、存储器220、网络接口230等硬件进行举例说明。在其他实施例中,处理器210的个数和虚拟机的个数还可以更多或更少。
在其他一些实施例中,虚拟机内可以包含容器(container),容器相当于应用。在其他一些实施例中,虚拟化层可以由轻量级虚拟化技术实现,例如libOS,libOS是一种运行库,能够提供类操作系统的功能且与应用链接在一起运行,从而使得应用运行所必须的全部的资源由应用自身而不是操作系统管理。比如unikernel、OSv、dune等,libOS可以认为是一种轻量级的虚拟计算机。一个libOS内通常包含一个应用,整个libOS是一个或多个库,和该应用链接成一个单地址空间镜像。本申请实施例通常以传统虚拟化技术实现的虚拟机为例,其他类型的虚拟化架构可参考虚拟机的实现。
需要说明的是,本实施例以计算机为例进行说明,但本申请提供的方法并不局限于该设备,所有类型的虚拟化设备均可以应用。
处理器210可以包括一个或多个物理核(本申请中有时将物理核简称为核)。
“物理核”在本申请中代表最小处理单元。如图2所示,本实施例中每个处理器具有两个物理核:核0和核1,以及多个寄存器。在其他一些实施例中,处理器包含的核的数量可以更多或更少,各个处理器包含的核的个数也可以不同。
宿主机内部署有宿主机操作系统270和虚拟机监视器280(virtual machinemonitor,VMM),VMM 280在其他虚拟化架构中相当于hypervisor或其他类型的虚拟监控装置。VMM 280可以部署在宿主机操作系统270内部,也可以和宿主机操作系统270分开部署。VMM280负责管理在其上运行的一台或多台虚拟机。
虚拟机(virtual machine,VM)可以包括虚拟硬件层、客户操作系统290以及多种应用。虚拟硬件层包含虚拟存储器(未在图中示出)、虚拟处理器210-v等虚拟硬件。如图2所示,本实施例包含两个虚拟机,每个虚拟机包含三个虚拟处理器210-v。虚拟处理器210-v是软硬件结合实现的,它的运行实际是物理核读取并运行软件程序实现的,例如,一个物理核读取软件程序并在该物理核的硬件辅助虚拟化的特定模式(例如x86的non-Root模式)下运行该软件程序以实现一个虚拟处理210-v。也因此,虚拟处理器210-v需要被调度到某一个物理核上。
虚拟处理器210-v和物理核可以是绑定的关系,即一个虚拟处理器210-v可以固定在某个物理核上运行,不能被调度到其他物理核上运行,则该虚拟处理器为绑核;一个虚拟处理器210-v可以根据需要被调度到不同的物理核上运行,则该虚拟处理器为非绑核。
在本实施例中,虚拟处理器210-v的总个数为6,大于物理核的数量4,这种场景称之为物理处理器超分配。在物理处理器超分配的情况下,会存在多个虚拟处理器以时间分片方式或其他方式共享同一个物理核的情况,这种物理核叫做非独占核。当然非超分配的情况下也可能出现非独占核。一个物理核与一个虚拟处理器绑核且不被其他虚拟处理器共享,则该物理核是独占核。
VMM 280作为虚拟监控装置,负责调度各个VM的虚拟处理器210-v。例如,基于内核的虚拟机(kernel-based virtual machine,KVM)就是一种典型的VMM。VMM 280对虚拟处理器210-v的调度包括换入虚拟处理器和换出虚拟处理器。首先,VMM 280创建并初始化一个VM的对象,然后为该VM创建三个虚拟处理器210-v。当一个VM包含多个虚拟处理器210-v时,一般会有一个为主虚拟处理器,其他为从属虚拟处理器。虚拟处理器210-v被创建之初还没有与某个物理核关联。VMM 280会依据策略将某个虚拟处理器210-v调度到某个物理核上,这称为该虚拟处理器被换入;VMM 280将该虚拟处理器210-v挂起或从该物理核上迁移出去,称为该虚拟出处理器被换出。在绑核的场景下,一个虚拟处理器每次被换入时都被调度到相同的核上。在非绑核的场景下,VMM 280可以在调度之前根据系统当前的运行状况和/或调度算法确定将该虚拟处理器210-v调度到哪个核上。
需要说明的是,一个虚拟处理器210-v被换入之后可以不立即陷入运行,在虚拟处理器210-v被换入且还没有陷入之前,宿主机(具体为VMM)还可以实现一些对该虚拟处理器210-v的配置,然后该虚拟处理器210-v再陷入客户模式。
下面,对本申请中涉及到的一些术语做简单说明。
1、虚拟机
虚拟机是指通过软件在一台物理计算机上模拟出的一台或者多台虚拟计算机。这些虚拟机运行在完全隔离的环境中,就像真正的计算机那样进行工作。虚拟机上可以安装客户操作系统(guest operating system,guest OS),客户操作系统上运行有一个或多个应用。虚拟机还可访问网络资源。对于在虚拟机中运行的应用而言,就像是在真正的计算机中工作。
2、宿主机(host)层
宿主机层是指作为管理层,用以完成硬件资源的管理、分配;为虚拟机呈现虚拟硬件平台;实现虚拟机的调度和隔离等。在一些实现方式下,宿主机层包括宿主机操作系统和虚拟监控装置,例如,VMM或hypervisor,其中虚拟监控装置可部署在宿主机操作系统之内,也可以部署在宿主机操作系统之外。在另一些实现方式下,“宿主机层”还可以包括1个特权虚拟机(例如虚拟化架构Xen)。其中,虚拟硬件平台对其上运行的各个虚拟计算机提供各种硬件资源,如虚拟处理器、虚拟内存、虚拟磁盘、虚拟网卡等。虚拟计算机则运行在宿主机层为其准备的虚拟硬件平台上。本申请中有时将宿主机层简称为宿主机。
3、硬件层
硬件层是指虚拟化环境运行的硬件平台。其中,硬件层可包括多种硬件,例如某物理计算机的硬件层可包括处理器和存储器,还可以包括中断控制器、网卡(networkinterface card,NIC)、输入/输出(input/output I/O)设备等。
4、libOS(library operating system)
轻量级虚拟化技术提供的一种操作系统,libOS是一种运行库,能够提供类操作系统的功能且与应用链接在一起运行,从而使得应用运行所必须的全部的资源由应用自身而不是操作系统管理。比如unikernel、OSv、dune等。libOS可以认为是一种轻量级的虚拟计算机。
5、物理处理器
物理处理器有时可以简称为“处理器”,在本申请中指物理的处理单元,具体可以是一个最小处理单元,即本申请中的物理核,在某些实施例中也可以指包含多个物理核的处理单元。
6、虚拟处理器
虚拟处理器是在虚拟化技术下,以共享或者分片方式提供给虚拟计算机使用的物理处理单元的表示,例如,虚拟CPU(virtual central processing unit,vCPU)。一台虚拟计算机可以有一个或多个虚拟处理器为其服务,当存在多个虚拟处理器时,通常有一个虚拟处理器为主虚拟处理器,其他为从虚拟处理器。
应理解,虚拟计算机相当于一台独立的计算机,所以虚拟计算机执行动作也可以认为是虚拟处理器执行该动作,而虚拟处理器是软件实现的,所以虚拟处理器执行动作实际上是虚拟处理器所运行的物理处理器或物理核执行该动作。在本申请的多个实施例中,为遵循当下场景的技术表达习惯,会有选择地使用以上表述方式。
7、单根输入/输出虚拟化(single-root input/output virtualization,SR-IOV)
SR-IOV技术可以在一个快捷外围部件互连标准(peripheral componentinterconnect express,PCIe)设备上虚拟化出多个虚拟的PCIe设备,虚拟PCIe设备只能通过原物理PCIe设备进行配置和管理,每个虚拟PCIe设备可以有独立的DMA,这样虚拟机可以直接通过PCIe设备访问物理PCIe设备,而不需要VMM的干预。以支持SR-IOV的网卡为例,各虚拟PCIe设备对应一块虚拟网卡,虚拟PCIe设备与对应的虚拟网卡之间直接进行报文的交换,不需要VMM参与,从而能够降低VMM开销,提升虚拟机的性能。
SR-IOV抽象出了两种功能类型供用户使用,分别称为物理功能(physicalfunction,PF)和虚拟功能(virtual function,VF)。通常支持SR-IOV技术的网卡都会提供一个PF,PF包含了SR-IOV的功能结构,用户通过操作PF来管理网卡的SR-IOV功能。VF是与PF关联的一种功能类型,PF负责创建和维护VF,每个PF可以有多个与其相关联的VF,并将VF提供给虚拟机使用,各个VF之间共享PF所提供的物理资源。
8、虚拟机热迁移
虚拟机热迁移是指将正在运行的虚拟机从原主机移到目的主机上的过程,迁移过程中断虚拟机中部署的业务无感知。
例如,虚拟机运行在主机上,当主机出现故障或者资源分配不均(如负载过重、负载过轻)等情况时,可通过迁移虚拟机来保证虚拟机业务的正常运行。
当前主要的热迁移应用场景包括但不限于以下几种:
场景一:当主机故障或主机负载过重时,可以将运行的虚拟机迁移到另一台主机上,避免业务中断,保证业务的正常运行,做到弹性扩展。
场景二:当多数主机负载过轻时,可以将虚拟机迁移整合,以减少主机数量,提高资源的利用率,实现节能减排,降低成本。
场景三:当主机需要进行硬件或软件的升级维护时,为了不影响其上的虚拟机业务,需要提前将虚拟机迁移到其他物理主机上。在实际应用中,可能存在虚拟机需要迁移的情况,例如,当通过监控发现某个物理机上的负载过重,VM性能下降、VM的中央处理器争抢过高时,需要执行迁移操作,将对应的VM迁移到其余的资源尚有空余的物理机上。而为了保证迁移过程中服务不中断,通常采用虚拟机的热迁移(live migration)技术,即虚拟机保存/恢复,是指将整个虚拟机的运行状态完整保存下来,同时可以快速的恢复到原有硬件平台甚至是不同硬件平台上,恢复以后,虚拟机仍旧平滑运行,用户不会察觉到任何差异。
示例性地,虚拟机迁移过程可以是在线迁移,即在保证源端虚拟机上服务正常运行的同时进行迁移。源端虚拟机可以一边运行一边将内存数据拷贝至另一台物理主机上,当需要拷贝的内存数据非常少时,源端虚拟机可以停止运行将剩余少部分的内存数据一次性拷贝至另一台物理主机上,在拷贝完成之后可以在另一物理主机上重新激活目的虚拟机,实现虚拟机的在线迁移。
在实际应用中,可能存在虚拟机需要迁移的情况,例如,当通过监控发现某个物理机上的负载过重,VM性能下降、VM的中央处理器争抢过高时,需要执行迁移操作,将对应的VM迁移到其余的资源尚有空余的物理机上。而为了保证迁移过程中服务不中断,通常采用虚拟机的热迁移(live migration)技术,即虚拟机保存/恢复,是指将整个虚拟机的运行状态完整保存下来,同时可以快速的恢复到原有硬件平台甚至是不同硬件平台上,恢复以后,虚拟机仍旧平滑运行,用户不会察觉到任何差异。
示例性地,图3是本申请实施例提供的热迁移的示意图。图3所示包括主机310和主机320,其中,主机310和主机320的结构示意图可以如图2所示,主机310可以一个或者多个虚拟机311、宿主机层312以及硬件层313;主机320可以一个或者多个虚拟机321、宿主机层322以及硬件层323。当存在上述需要热迁移的情况时,可以将主机310中的虚拟机迁移至主机320中,即可以将主机310中整个虚拟机的运行状态完整保存下来,同时可以快速的恢复到主机320中的虚拟机321上,恢复以后虚拟机仍旧平滑运行,用户不会察觉到任何差异。
9、虚拟机直通设备
为了追求极致的性能,各大云厂商可能会选择给虚拟机配置直通设备,通过虚拟机直接访问直通设备,使得虚拟机获得接近物理机的性能,达到高吞吐量、低时延的虚拟化性能,;并且还可降低虚拟化层的开销,提升资源的可用率(例如,可以节省主机的中央处理器的资源,可以用来创建更多的虚拟机)。其中,公有云可以是指第三方提供商为用户提供的能够使用的云。用户可以通过互联网访问服务。目前常见的公有云,例如有华为云、阿里云、亚马逊网络服务(amazon web service,AWS)等。私有云可以是指运行在公共资源上,但又可以保证每个用户之间的资源是隔离,用户在使用的时候可以不受其他用户的影响。
虚拟机直通技术是指支持虚拟机绕过hypervisor层,直接访问物理I/O设备,从而使得虚拟机获得接近物理机的性能。SR-IOV直通技术是一种基于硬件的虚拟化解决方案,通过SR-IOV技术虚拟机可以直接连接到物理网卡上,且多个虚拟机之间可以高效共享物理网卡。客户使用SR-IOV直通技术,可以获得能够与物理主机媲美的I/O性能。
示例性地,图4为申请实施例提供的基于SR-IOV实现直通技术的示意图。
如图4所示,包括VM 410、VM420、主机操作系统430以及端点设备(endpoint,EP)440。EP440中可以配置1个PF以及4个VF,其中,VF1和VF2可以被直通给VM1410,VF3可以被直通给VM2 420,VF4处于未被分配。VM410和VM420中可以包括用户可感知的Guest OS部分和用户无法感知的设备模拟器(quick emulator,Qemu),虚拟机内部的Guest OS可以加载对应的VF驱动程序,从而对VF设备进行访问。VF设备的访问可以分为控制面访问(如寄存器设置、中断申请等)和数据面访问(如网卡发送和接收数据等),当控制面进行访问时包括执行以下步骤:
第一步:VF驱动进行写寄存器操作,陷入到VMM;
第二步:VMM解析陷入指令,若解析陷入指令后发现是IO指令,则将指令转发到用户态的Qemu处理;
其中,虚拟化系统包括两种模式:宿主模式(host mode)与客户模式(guestmode)。当一个虚拟处理器进入客户模式,叫做陷入(虚拟);当该虚拟处理器离开客户模式,叫陷出(虚拟)。虚拟处理器陷出后物理处理器将暂时不执行该虚拟处理器的代码,所以此时可以理解为虚拟处理器没有运行。针对一个物理处理器而言,其上运行的虚拟处理器陷入,则可以认为该物理处理器处于客户模式,运行虚拟处理器的代码,当其上运行的虚拟处理器陷出到宿主模式,则可以认为该物理处理器处于宿主模式,运行宿主机相关的代码,比如VMM。
第三步:Qemu根据解析的寄存器地址和长度,访问对应的VF寄存器(通过PCIe链路)。
在图4所示的基于SR-IOV实现直通技术的示意图中进行数据面访问时,VM可以直接将设置的虚拟机物理地址(guest physical address,GPA)经由输入/输出存储管理单元(input–output memory management unit,IOMMU)硬件直接进行转换,转换成主机物理地址(host physical address,HPA)从而进行数据收发处理。因此,VM在进行数据面访问时无需陷入VMM处理,节省开销达到高性能的IO数据面。
10、内存脏页
系统可以将读写操作比较频繁的数据读取到内存中,以提高读写速度,这一过程可以称为高速缓存。例如,在linux操作系统中,是以页作为高速缓存的单位,当写操作修改了高速缓存中的数据时,该页就被内核标记为内存脏页,又可以称为脏页。换句话说,内存中的数据对应硬盘的数据有所改变,改变后的数据页就叫做脏页。
应理解,数据是指数据面接收或者发送的数据;页是指内存的存储单位,例如,通常页可以有4K、2M或者1G的大小。数据面是与管控面相对的概念,数据面主要用于存储IO和网络IO的业务流,管控面可以用于下发控制类或者配置类的指令,例如,迁移指令可以属于控制类的指令。
在传统的热迁移技术中,通常通过服务器中的中央处理器(central processingunit,CPU)发起虚拟机内存的修改,根据扩展页表(extended page tables,EPT)内存写保护等机制获取脏页信息。
例如,当开始进行虚拟机迁移时,可以将虚拟机中的所有的内存页设置为写保护模式。当出现任何写内存的操作时都会触发写保护异常而CPU感知到,从而CPU可以记录脏页的地址完成内存标脏。
但是,对于基于SR-IOV实现直通技术的虚拟机,直通设备可以通过直接内存存取DMA方式访问虚拟机的内存,即直通设备可以通过IOMMU直接对虚拟机的内存进行写操作而不需要通过CPU对虚拟机的内存进行修改,此时无法通过传统的热迁移技术来获取虚拟机中的脏页信息,并且无法实现热迁移前后直通设备的状态一致性。
有鉴于此,本申请实施例提出了一种虚拟机迁移的方法以及装置,在开始虚拟机迁移流程后,源端虚拟机可以发送指示源端直通设备记录脏页数据的存储地址的第一指令,其中,脏页数据是指源端直通设备通过DMA方式向源端虚拟机写入的数据;源端直通设备在接收到第一指令后,当源端直通设备通过DMA方式向源端虚拟机写入数据时,标记数据的存储地址;源端虚拟机可以获取源端直通设备中记录的脏页数据的存储地址,并将脏页数据发送至目的端虚拟机,从而确保配置直通设备的虚拟机在迁移过程前后源端虚拟机和目的端的虚拟机的内存的一致性,提高了虚拟机迁移的性能。
为便于理解本申请实施例,下面首先结合图5和图6详细说明适用于本申请实施例提供的虚拟机迁移的方法的系统架构的示意图。
图5是适用于本申请实施例提供的虚拟机热迁移的方法的系统架构500的示意图。
如图5所示,该系统架构中可以包括前端的物理服务器510和后端的软硬协同卸载卡520,其中,物理服务器510以及软硬协同卸载卡520的计算资源可以为CPU和内存。在图5所示的硬件系统中,软硬协同卸载卡520可以通过PCIe协议与物理服务器510互联。具体的,物理服务器510的硬件层可以包括CPU、内存和根复用器(root complex,RC)芯片,RC芯片为PCIe规范中定义的硬件接口,该硬件接口负责将物理服务器510的PCIe消息发送至外接设备(例如,软硬协同卸载卡520),还可以接收外接设备(例如,软硬协同卸载卡520)发送的PCIe消息。软硬协同卸载卡520的硬件层可以包括CPU、内存和端点(end point,EP)芯片,EP芯片为PCIe规范中定义的硬件接口,其作为软硬协同卸载卡520的外设接口,负责向物理服务器510发送PCIe消息,或者还可以接收物理服务器510发送的PCIe消息。
本申请实施例对RC芯片和EP芯片的具体实现不做限定,只要遵循PCIe规范实现的任何RC芯片以及EP芯片均可使用。
需要说明的是,软硬协同卸载卡520还可以通过网卡存储资源以及网络资源连接,以便于软硬协同卸载卡520将物理服务器510中的VM下发的IO请求交给存储资源、网络资源进行处理。
在如图5所示的软件系统中,物理服务器510上可以运行有VMM,通过计算虚拟化技术,将物理服务器510中的CPU和内存资源提供给虚拟机使用,VMM还可以将虚拟机下发的IO请求直通至软硬协同卸载卡520的软件层进行处理。
下面结合图6对物理服务器以及EP芯片中的具体架构进行详细说明。图6是适用于本申请实施例提供的虚拟机热迁移的方法的系统架构600的示意图。
如图所示,该系统架构600可以包括主机610和一个或者多个端点设备(Endpoint,EP)(例如,端点设备621、端点设备622),其中,主机610中可以运行用户空间611以及内核空间612。
应理解,在本申请的实施例中EP可以是满足PCIe规范的设备。例如,EP可以是具有计算资源和存储资源的设备。比如,EP可以是ASCI芯片、智能网卡或者PFGA芯片等。
以图2中host的操作系统为linux操作系统为例,如图6所示,Linux系统将可以分为两部分,一部分为核心软件,即是内核(kernel space),也称作内核空间,另一部分为普通应用程序,这部分也可以称为用户空间(user space)。其中,用户空间中的代码可以运行在较低的特权级别上,只能看到允许它们使用的部分系统资源,并且不能使用某些特定的系统功能,也不能直接访问内核空间和硬件设备,以及其他一些具体的使用限制。通过将用户空间和内核空间置于这种非对称访问机制下有很好的安全性,能有效抵御恶意用户的窥探,也能防止质量低劣的用户程序的侵害,从而使系统运行得更稳定可靠。
如图6所示的系统600的架构,系统600包括主机610和端点设备EP(例如,EP621和EP622),主机610可以包括用户空间611和内核空间612,其中,用户空间611中可以包括虚拟操作系统模拟器Qemu,其中,Qemu是通过纯软件实现的虚拟化模拟器,通过Qemu使得guestOS可以和物理主机上的硬盘,网卡,CPU,CD-ROM,音频设备和USB等设备进行交互。在图6所示的系统架构中,Qemu可以接收用户发送的热迁移指令并将热迁移指令从物理主机的用户空间发送至内核空间612。Qemu中可以包括虚拟读写功能(virtual function input/output,VFIO)和虚拟基地址寄存器(virtual base address register,vBar),Qemu中的VFIO用于调用内核空间VFIO2提供的各种接口,从而完成直通设备的呈现及功能;Qemu中的vbar中包括与内核空间612的VFIO2模块为每个直通设备分配的device specific region映射的区域,用于用户向直通设备发送迁移指令和信息查询。
内核空间612中可以包括VFIO2模块和物理功能(physical functions,PF)驱动。其中,VFIO2可以用于向用户空间提供访问硬件设备的接口,例如,VFIO2用于对用户空间611提供统一的直通热迁移的抽象接口,屏蔽底层硬件差异。此外,VFIO2还可以对直通设备提供硬件物理PF驱动的注册机制,实现模块化解耦,扩展性强。在SR-IOV模式下,系统架构600中的PF驱动能够实现将热迁移指令传递至端点设备,从而实现虚拟功能直通设备的热迁移。
如图6所示的,主机610与EP可以通过PCIe总线进行连接。例如,EP可以通过交换机(switch)连接到PCIe总线上,switch可以用于扩展链路,提供更多的端口用以连接EP。
示例性地,直通设备可以是基于特殊应用集成电路(application specificintegrated circuit,ASIC)或者现场可编程逻辑门阵列(field programmable gatearray,FPGA)的虚拟设备(支持Linux Endpoint Framework框架)或其他具有计算资源和存储资源的设备等,可使用软件编程加硬件辅助相融合的方式接收并处理来自PF驱动的热迁移指令,完成热迁移流程。
需要说明的是,本申请实施例所提供的方法可以由物理主机执行,具体可以由部署在物理主机上的软件通过执行相应的指令来实现。该软件例如可以是在该物理主机上创建的虚拟机上部署的软件。
下面结合图7对本申请实施例的虚拟机迁移的方法进行详细的介绍。图7所示的方法可以由源端物理主机中运行的源端虚拟机来执行,例如,源端物理主机可以包括宿主机操作系统和运行在宿主机操作系统之上的源端虚拟机,宿主机操作系统中可以包括物理功能PF驱动,源端虚拟机处理的数据通过源端直通设备进行传输。图7所示的方法700包括步骤710至730,下面分别对这些步骤进行详细的描述。
步骤710,源端虚拟机通过PF驱动向源端直通设备发送第一指令,其中,第一指令用于指示源端直通设备记录脏页数据的存储地址,脏页数据为源端直通设备通过直接内存存取DMA方式向源端虚拟机写入的数据。
其中,源端直通设备可以是配置于源端虚拟机的至少一个直通设备中的任意一个直通设备。
示例性地,源端直通设备可以是直通于源端虚拟机的硬件设备。例如,可以是PF设备。
示例性地,源端直通设备可以是虚拟直通设备。例如,源端直通设备中可以运行多个虚拟直通设备,虚拟直通设备是运行在源端直通设备中的虚拟设备,源端直通设备可以是多个虚拟直通设备中的任意一个,即源端直通设备可以是VF设备。
上述通过DMA访问方式是指这是指一种高速的数据传输操作,允许外部设备和内存之间直接读写数据。整个数据传输操作在DMA控制器的控制下进行的,DMA控制逻辑可以由CPU和DMA控制接口逻辑芯片共同组成,嵌入式系统的DMA控制器内建在处理器芯片内部。在实现DMA传输时是由DMA控制器直接控制总线,CPU将总线控制权交给DMA控制器,而在结束DMA传输后,DMA控制器立即将总线控制权再交回给CPU。一次完整的DMA传输数据的过程可以包括DMA请求、DMA响应、DMA传输、DMA结束4个步骤。其中,DMA传输是指在DMA控制器获得总线控制权后,CPU即刻挂起或只执行内部操作,由DMA控制器输出读写命令,直接控制RAM与I/O接口进行DMA传输。在DMA控制器的控制下,在存储器和外部设备之间直接进行数据传送,在传送过程中不需要CPU的参与。
例如,源端直通设备通过DMA方式访问源端虚拟机的内存可以是指源端直通设备通过PCIe总线连接至源端物理主机中的RC实现对源端物理主机中运行的源端虚拟机的DMA访问。其中,RC用于将处理器和内存子系统连接到由一个或多个交换设备组成的PCIExpress交换结构。
可选地,源端虚拟机通过PF驱动向源端直通设备发送第一指令包括:源端虚拟机可以向PF驱动发送第一指令;PF驱动将第一指令发送至源端直通设备。
换而言之,源端虚拟机可以向PF驱动发送迁移指令,PF驱动将获取的迁移指令透传至源端直通设备。迁移指令可以包括上述第一指令、保存指令、脏页同步指令、停机指令、启动指令、关闭脏页标记指令等。
步骤720、源端虚拟机获取源端直通设备记录的脏页数据的存储地址。
其中,脏页数据可以是源端直通设备通过DMA方式向源端虚拟机的内存写入的数据;脏页数据的存储地址即可以是数据所在的内存地址,又可以称为脏页信息。
可选地,源端虚拟机可以通过PF驱动向源端直通设备发送脏页同步指令,脏页指令中包括第一存储空间中的第一地址,脏页同步指令用于指示源端直通设备将脏页数据的存储地址同步至第一地址所指示的第一存储空间中的存储位置;源端虚拟机根据第一地址从第一存储空间中读取脏页数据的存储地址。
上述第一存储空间可以是源端物理主机为所述PF驱动中分配的存储空间,第一存储空间用于存储多个虚拟直通设备中每个多个虚拟直通设备所记录的脏页数据的存储地址。
例如,第一存储空间可以是支持DMA方式访问的内存。
可选地,源端虚拟机可以通过PF驱动周期性地向源端直通设备发送脏页同步指令。
例如,源端虚拟机周期性地向PF驱动发送脏页同步指令,PF驱动将脏页同步指令发送至源端直通设备。
应理解,源端直通设备可以不断的对源端虚拟机的内存通过DMA方式进行数据的写入。在源端直通设备停止运行之前,脏页信息是不断更新的信息。因此,源端虚拟机可以周期性地向源端直通设备发送脏页同步指令,获取不断更新的脏页信息。
例如,在第一时刻源端直通设备通过DMA方式在源端虚拟机的内存地址A进行数据的写入;在源端虚拟机获取内存地址A时,源端直通设备也可以通过DMA方式对源端虚拟机的内存地址B进行数据的写入。因此,源端虚拟机可以周期性向源端直通设备发送脏页同步指令,用于获取源端直通设备中更新的脏页数据的存储地址。
步骤730、源端虚拟机向目的端虚拟机发源端虚拟机的待迁移数据,待迁移数据包括脏页数据。
可选地,源端虚拟机可以通过内存迭代拷贝方式向目的端发送脏页数据。
例如,在建立虚拟机迁移流程后,源端虚拟机可以先将所有的内存数据拷贝至目地端虚拟机,源端虚拟机不断获取源端直通设备中记录的脏页数据的存储地址,源端虚拟机根据脏页数据的存储地址从内存中获取脏页数据,并通过每一轮迭代拷贝将内存中新写入的脏页数据拷贝至目的端虚拟机,直至达到一定的条件就退出迭代,进行最后的停机拷贝。比如,当剩余需要拷贝的脏页数据产生速率比热迁移网络带宽小时,源端虚拟机可以停止VCPU运行并将剩余的脏页数据一次性发送至目的端虚拟机,保持源端虚拟机和目的端虚拟机的内存一致性。
进一步地,源端物理主机可以为PF驱动中分配第二存储空间,第二存储空间用于存储多个虚拟直通设备中每个多个虚拟直通设备的状态信息,状态信息是指每个虚拟直通设备在停止运行时刻的状态信息,状态信息包括可以每个虚拟直通设备的寄存器的信息和内存描述符的信息。
这里需要说明的是,寄存器的信息可以是指源端直通设备停止运行时寄存器的状态信息,比如,可以是源端直通设备中寄存器的接收队列、发送队列以及控制队列的索引等信息。内存描述符的信息可以是指源端直通设备在停止运行时刻,数据面接收或者发送数据的状态信息。源端虚拟机通过获取源端直通设备的状态信息,并向目的端虚拟机发送状态信息,从而可以能够保证配置直通设备的虚拟机在迁移过程前后源端直通设备和目的端直通设备的状态(例如,寄存器状态、中断状态)的一致性,提高了虚拟机迁移的性能。
可选地,源端虚拟机可以通过PF驱动向源端直通设备发送保存指令,保存指令中包括第二存储空间中的第二地址,保存指令用于指示源端直通设备将状态信息保存至第二地址所指示的第二存储空间中的存储位置;源端虚拟机可以在第二地址对应第二存储空间中的存储位置获取源端直通设备的状态信息。
例如,源端虚拟机向源端直通设备发送保存指令时携带源端虚拟机的内存地址A,源端虚拟机将保存指令发送至PF驱动,PF驱动可以将保存指令和内存地址B通过PF通道发送至源端直通设备,内存地址B用于存储状态信息;源端直通设备向PF驱动反馈状态信息,源端直通设备将状态信息保存至内存地址B中,PF获取到状态信息后将同步至源端虚拟机的内存地址A,从而使得源端虚拟机获取到源端直通设备的状态信息。
这里,需要说明的是,上述源端虚拟机通过PF通道向源端直通设备发送迁移指令可以是PF驱动通过PF通道向源端直通设备发送迁移指令,PF通道可以是指逻辑概念。
示例性地,PF驱动中可以包括PF通道,PF通道用于PF驱动将接收到源端虚拟机发送的迁移指令发送至源端直通设备,PF驱动的实现形式可以包括但不限于以下几种方式:
方式一:PF驱动可以通过使用预留的存储空间实现源端虚拟机向源端直通设备发送迁移指令。
例如,PF驱动可以通过源端直通设备的第一寄存器发送预留的存储空间的地址;第一源端虚拟机收到预留的存储空间的地址不断检测该地址对应的存储空间。PF驱动将迁移指令写入至预留的存储空间中,当源端直通设备不断检测预留的存储空间时获取相应的迁移指令。
应理解,上述第一寄存器可以为源端直通设备的收发寄存器,第一寄存器仅支持发送包括存储空间的首地址和存储空间的大小的信息。
上述预留的存储空间可以是为PF驱动分配的通过DMA方式访问的内存。
方式二:PF驱动可以通过使用源端直通设备的PCIe配置空间实现源端虚拟机向源端直通设备发送迁移指令。
示例性地,PF驱动可以将迁移指令写入源端直通设备的PCIe配置空间的预留位,PCIe配置空间用于源端直通设备获取迁移指令。
上述PCIe配置空间的预留位可以是指源端直通设备现有的PCIe配置空间的预留位。
示例性地,PF驱动可以将迁移指令写入源端直通设备的预配置的PCIe配置空间,预配置的PCIe配置空间用于源端直通设备获取迁移指令。
上述预配置的PCIe配置空间可以是指为源端直通设备配置一个用于传输迁移指令的PCIe配置空间。
这里,需要说明的是,对于每个PCIe设备存在一段空间,Host软件可以通过读取该段空间来获得PCIe设备的信息,也可以通过该段空间它来配置PCIe设备,这段空间就称为PCIe配置空间,PCIe配置空间是指逻辑概念可以通过底层硬件寄存器来实现PCIe配置空间中的信息。
在本申请的实施例中,在开始虚拟机迁移流程后,源端虚拟机发送指示源端直通设备记录脏页数据的存储地址的第一指令,其中,脏页数据是指源端直通设备通过DMA方式向源端虚拟机写入的数据;源端直通设备在接收到第一指令后,当源端直通设备通过DMA方式向源端虚拟机写入数据时,标记数据的存储地址;源端直通设备可以获取源端直通设备的脏页数据的存储地址,并将脏页数据发送至目的端虚拟机,从而确保配置直通设备的虚拟机在迁移过程前后(源端虚拟机和目的端的虚拟机)的内存的一致性,同时还可以确保配置于虚拟机的直通设备在迁移前后(源端直通设备和目的端直通设备)的状态一致性,提高了虚拟机迁移的性能。
下面结合图5所示的系统架构图对上述虚拟机迁移的方法进行简要的说明。
如图5所示,例如,源端虚拟机可以是Qemu,源端直通设备可以是端点设备,Qemu执行热迁移的流程可以包括如下步骤:
①、内核空间中的VFIO2可以为用户空间提供直通热迁移抽象接口,其中,直通热迁移的抽象接口可以包括启动指令接口、停止指令接口、预启动指令接口、预停止指令接口、保存指令接口、恢复接口、打开脏页跟踪接口以及PF驱动接口等。PF驱动可以在VFIO2的内存即特定设备区域(device specific region)中进行注册,device specific region可以用于用户通过Qemu向直通设备发送迁移指令和信息查询。
例如,PF驱动可以将热迁移指令对应的回调函数的地址在VFIO2的devicespecific region中进行注册,其中,device specific region为VFIO2中的内存。
其中,回调函数是指一个通过函数指针(地址)调用的函数。PF驱动可以将回调函数的地址在内核空间的VFIO模块进行注册;当内核空间的VFIO接收到用户空间发送的迁移指令时,VFIO模块确定PF驱动中的回调函数的地址并指示PF驱动执行该函数。
这里,需要说明的是,VFIO1中的vbar与device specific region之间存在映射,即用户在VFIO1中的vbar中写入热迁移指令,对应的内核空间的VFIO2中的devicespecific region获得到该热迁移指令,其中,Vbar指VFIO1中的内存,用于Qemu向直通设备发送热迁移指令。
②、管理员(例如,用户)可以为虚拟机配置直通设备,用户空间Qemu中的VFIO1中包括Vbar,Vbar用于直通设备与Qemu进行信息传递。
其中,Qemu向不同直通设备发送的迁移指令时,可以通过vbar中的不同内存资源向直通设备发送迁移指令。
③、管理员发送迁移指令,Qemu可以通过VFIO1中vbar将热迁移指令传递至内核空间VFIO2中device specific region。
④、VFIO2获取到热迁移指令后,通过PF驱动在VFIO2模块中注册的回调函数的地址,指示PF驱动执行该回调函数地址对应的回调函数。
应理解,Qemu下发热迁移指令可以看作是Qemu调用PF驱动中该热迁移指令对应的回调函数。
示例性地,Qemu发送第一指令,第一指令指示源端直通设备开启标脏模式,即Qemu通过VFIO1中vbar对应的内存将第一指令映射至device specific region中,从而VFIO2在device specific region中查找到开启标脏模式对应的回调函数地址,VFIO2根据该回调函数地址指示PF驱动执行该回调函数,PF驱动执行标脏模式对应的回调函数指示源端直通设备在通过DMA方式在源端虚拟机内存中写入数据时,标记该数据的存储地址。
⑤、PF驱动执行开启标脏模式对应的回调函数,具体地,PF驱动可以通过PF通道将第一指令发送至源端直通设备,即PF驱动将第一指令发送至EP。
⑥、EP接收到热迁移指令后,执行该热迁移指令对应的操作。
例如,EP接收到第一指令,则EP启动标脏模式。
在标脏模式开启期间,EP可以对通过DMA方式向虚拟机内存写入的数据对应的内存页进行标记。
⑦、EP在脏页位图区间中记录内存地址,该脏页位图区间可以是EP中的一块存储空间。
可选地,该存储空间可以是通过DMA方式访问的内存。
⑧、Qemu向直通设备发送脏页同步指令,脏页同步指令中包括所述第一存储空间中的第一地址,该脏页同步指令用于指示EP将标记的内存地址同步至第一地址所指示的第一存储空间中的存储位置。
例如,上述第一存储空间可以是PF驱动中的DMA内存。
应理解,Qemu向直通设备发送脏页同步指令的具体流程与上述第一指令的发送流程类似,此处不再赘述。
⑨、EP接收到脏页同步指令后,将标记的内存地址同步至第一地址指示的PF驱动的存储位置。
这里,需要说明的是,由于EP可以不断通过DMA方式对虚拟机的内存写入数据,因此,脏页同步指令可以是周期性发送的指令,即PF驱动的存储位置存储的内存地址可以是不断更新的内存地址。
⑩、PF驱动将获取的EP标记的内存地址发送至VFIO2中的device specificregion,通过device specific region映射至用户空间VFIO1模块中的vbar,从而Qemu从VFIO1中获取标记的内存地址。
可选地,PF驱动可以将获取的EP标记的内存地址直接拷贝到Qemu中VFIO1中申请的存储空间中,从而Qemu从VFIO1中获取标记的内存地址。
通过上述步骤①至⑩可以完成Qemu将热迁移指令发送至EP中,以及Qemu获取EP执行热迁移对应的操作结果。在热迁移成功或者失败后,Qemu可以通过上述流程向EP发送关闭标脏指令,指示EP关闭标记脏页模式。
图8示出本申请实施例提供的PF驱动的逻辑架构图。如图8所示,其中,PF驱动800中可以包括VF信息管理模块810、PF通道处理模块820、脏页跟踪模块830、直通设备热迁移接口实现模块840以及通道信息同步模块850。PF驱动800中的各个模块可以通过软件执行相应的指令来实现,下面对PF驱动800中的各个模块进行详细的描述。
VF信息管理模块810,可以用于管理源端虚拟机对应的一个或者多个源端直通设备。建立PF驱动与直通设备的对应关系,同时包括各种PF通道的资源申请和建立等。
在本申请的实施例中,迁移指令和脏页信息可以是通过PF驱动进行传输。其中,虚拟机配置的直通设备可以是一个EP中运行的多个虚拟直通设备,即可以是EP中虚拟的不同的VF设备,VF信息管理模块810可以用于管理不同的VF设备。例如,通过一个VF可以确定其对应的PF设备,同时能够确定相关联的各种信息,比如vf_number等。
PF通道处理模块820,可以用于与直通设备之间进行信息传输。该通道建立的前提是EP可以支持并发操作,通过PF通道处理模块820可以实现热迁移指令的并发传输,从而实现高效的直通热迁移性能。
需要说明的是,本申请实施例可以实现针对同一类PF设备对应的不同VF设备之间并发传输迁移指令,源端直通设备可以是PF设备中的不同的VF设备。
PF通道处理模块820可以包括以下几种可能的实现方式:
第一种:使用PCIe配置空间。
在一种可能的实现方式中,PF驱动可以通过使用现有PCIe配置空间的预留位向源端直通设备发送迁移指令。例如,PF驱动可以将迁移指令写入至源端直通设备的PCIe配置的空间的预留位,使得源端直通设备通过PCIe配置空间获取相应的迁移指令。
在另一种可能的实现方式中,可以扩展一个支持热迁移的PCIe配置空间,包括记录热迁移需要使用的指令;同时可以用来记录VF进行迁移操作的表信息,这个表保存在BAR指向的一段EP侧的内存中,该表中的不同表项记录不同VF的迁移相关信息,PF通道通过该表项传递热迁移指令。待EP完成一个VF表项中传递的热迁移指令动作后,将完成状态返回也记录到该VF表项的状态位中。
应理解,能力(Capability)是指PCI-X和PCIe总线规范要求其设备必须支持Capabilities结构。在PCI总线的基本配置空间中,包含一个Capabilities Pointer寄存器,该寄存器存放Capabilities结构链表的头指针。在一个PCIe设备中,可能含有多个Capability结构,这些寄存器组成一个链表。每个Capability都有唯一的ID号,表示该PCIe设备具备的一种能力。
第二种:使用DMA方案。
例如,可以预先通过物理主机为PF驱动申请一段DMA内存,把该段DMA内存地址在开始执行迁移流程前通过硬件寄存器发送给硬件EP设备,然后PF驱动可以将热迁移相关的指令写入该段DMA内存中,由EP读取该段DMA内存中的信息,获取具体的热迁移指令,同时将热迁移指令对应的完成状态写入至PF驱动。
应理解,上述硬件寄存器可以为源端直通设备的收发寄存器,该寄存器仅支持发送包括存储空间的首地址和存储空间的大小的信息的功能。
需要说明的是,在本申请的实施例中,通过高效的PF通道设计方法,支持不同VF的并发执行,提升热迁移性能,该模块有如下特点:软件栈可以在不同硬件间迭代复用;支持不同VM不同VF并发进行热迁移;支持状态位返回,如成功、失败、操作不允许、超时等。
可选地,源端直通设备中可以运行多个虚拟直通设备,多个虚拟直通设备中可以包括第一虚拟直通设备和虚拟直通设备,源端虚拟机通过PF驱动向源端直通设备发送指令,包括:
在接收到所述PF驱动发送的第二指令的反馈指令之后,所述源端虚拟机通过所述PF驱动向所述第二虚拟直通设备发送第三指令;所述反馈指令表示所述PF驱动已将所述第二指令发送至所述第一虚拟直通设备。
应理解,第二指令、第三指令可以是任意一个迁移指令。例如,第二指令、第三指令可以是前述的第一指令、脏页同步指令或者保存指令中的任意一个。
例如,如图9所示,图9(a)所示为Qemu串行发送热迁移指令的示意图,9(b)所示为优化后Qemu支持并发发送热迁移指令的示意图。
对于图9(a)所示的Qemu串行发送热迁移指令,即Qemu向EP中的VF设备发送第一热迁移指令后需要执行1-8后,即Qemu需要等待VF设备执行完本次第一热迁移指令后,Qemu才可以向不同的VF设备发送第二热迁移指令;其中,通过串行发送热迁移指令的流程,所需的等待时间较长,即Qemu处理热迁移流程中效率较低,性能较差,等值热迁移的时长过长。
对于图9(b)所示为优化后Qemu支持并发发送热迁移指令,如图9(b)所示,Qemu向EP中的VF设备发送第一热迁移指令,在PF驱动向EP发送第一热迁移指令后可以直接对第一热迁移指令进行反馈,而不需要等待VF设备完成第一热迁移指令对应的操作后再向Qemu反馈。通过图9(b)所示的示意图,Qemu下发第一热迁移指令后会在非常短的时间内接收到第一热迁移指令的响应信息,进而可以发送第二热迁移指令,即图9(b)所示的示意图中Qemu可以支持并发发送多个迁移指令。在本申请的实施例中,可以新增加一个VFIO接口用于在Qemu向所有VF设备的热迁移指令后下发后,通过PF驱动获取各个VF设备的执行结果。通过本申请实施例的PF驱动,可以支持Qemu并发发送热迁移指令。
脏页跟踪模块830,用于获取源端直通设备的脏页信息。例如,脏页跟踪模块830可以向源端直通设备发送PF驱动中第一存储空间中的地址,该第一存储空间可以支持通过DMA方式访问的内存,第一存储空间可以用于存储多个虚拟直通设备中每个多个虚拟直通设备记录的脏页数据的存储地址。
直通热迁移接口实现模块840,用于与VFIO中设备相关的热迁移功能接口实现部分以及注册部分。
通道信息同步模块850,用于实现热迁移相关指令的同步。例如,热迁移停机阶段需要保存端点设备的设备信息,可以通过PF驱动将保存指令下发给端点设备,然后等待端点设备完成保存设备信息,则等待完成的机制可以是通过通道信息同步模块850完成的。
图10是本申请实施例提供的配置直通设备的虚拟机热迁移的方法的示意性流程图。其中,源端虚拟机和目的端虚拟机可以位于不同的服务器中,图10所示的方法900包括步骤901至911,下面分别对步骤901至911进行详细描述。
步骤901、源端虚拟机与目的端虚拟机之间建立连接,开始热迁移。
其中,源端虚拟机与目的端虚拟机可以通过传输控制协议(transmissioncontrol protocol,TCP)建立连接。
步骤902、源端虚拟机通知对应的所有源端直通设备开启内存标脏模式。
例如,源端虚拟机可以通过PF驱动发送第一指令指示源端直通设备开始内存标脏模式,PF驱动将第一指令通过源端直通设备驱动通知所有源端直通设备。其中,内存标脏模式(又称作标脏模式)是指源端直通设备在通过DMA方式向源端虚拟机的内存写入数据的情况下,源端直通设备标记数据所在的内存地址。
步骤903、源端直通设备在通过DMA方式对虚拟机的内存进行写操作时,将写操作对应的内存地址置脏。
其中,内存地址置脏即标记写操作对应的内存地址。
示例性地,源端直通设备中的脏页位图区间可以是指源端直通设备中用于记录脏页信息的内存。
在一种可能的实现方式中,源端直通设备可以通过位图的形式在脏页位图区间中存放脏页信息。
在一种可能的实现方式中,源端直通设备可以通过链表的形式在脏页位图区间中存在脏页信息。
步骤904、源端虚拟机开始内存迭代拷贝。
其中,开始热迁移流程时,将源端虚拟机中的所有内存数据拷贝至目的端虚拟机的内存中。
步骤905、源端虚拟机获取源端直通设备中的脏页位图区间。
其中,脏页位图区间是指源端直通设备用于记录脏页信息的内存。
步骤906、源端直通设备向PF驱动返回一份脏页快照并进行原子的清零。
示例性地,源端直通设备接收到源端虚拟机发送的脏页同步指令,将源端直通设备中脏页位图区间中的脏页信息保存至PF驱动中的第一存储空间中。
这里,需要说明的是,原子操作能够保证重新写入脏页位图区间的脏页信息和脏页位图区间清零的过程不会出现并发操作。当源端虚拟机获取源端直通设备中脏页位图区间的脏页信息时,源端虚拟机的内存地址此时可能也正在被源端直通设备进行标记,新写入脏页位图区间的内存地址可以参与本次导出,即不再写入脏页位图区间;或者新写入脏页位图区间的内存地址可以不参与本次导出,先写入脏页位图区间在下次接收到源端虚拟机的脏页同步指令后进行导出。清零是指对脏页位图区间中的数据的清零,即将脏页位图区间中记录的内存地址进行清零。
图9所示步骤的具体实现过程与上文图7所示的步骤720中获取脏页信息的具体过程相似,为了简洁,此处不再赘述。
这里,需要说明的是,源端直通设备可以不断的对源端虚拟机的内存通过DMA方式进行数据的写入。因此,在源端直通设备停止运行之前,脏页信息是不断更新的信息。即源端虚拟机需要完成多次内存拷贝,并不断向目的端虚拟机发送最新获取的脏页数据。
可选地,在步骤906之后,源端虚拟机可以通过PF驱动向源端直通设备发送预停机指令,该预停机指令用于指示源端直通设备进行迁移前准备工作。
具体地,源端虚拟机可以向PF驱动发送预停机指令,PF驱动可以通过上述PF通道将预停机指令发送至源端直通设备。
步骤907、当迭代拷贝进行到足够收敛时,暂停源端虚拟机的vcpu并获取最后一轮脏页。
其中,足够收敛可以是指当需要拷贝的脏页数据非常少时,源端虚拟机可以停止运行将剩余少部分的脏页数据一次性拷贝至目的端虚拟机,剩余少部分的脏页数据可以指上述的最后一轮脏页。
应理解,源端直通设备可以不断的对源端虚拟机的内存通过DMA方式进行数据的写入。因此,在源端直通设备停止运行之前,脏页信息是不断更新的信息。换而言之,脏页信息中可以包括源端直通设备中间访问过程中不断更新的脏页信息以及源端直通设备停止运行时的脏页信息。
应理解,虚拟机可以通过迭代拷贝从PF驱动的第一存储空间中获取脏页信息,其中,迭代拷贝的具体流程可以参考现有技术,为了简洁,本申请中省略对具体方法的详细说明。
可选地,在步骤907之后,源端虚拟机可以通过PF驱动向源端直通设备发送停机指令,该停机指令用于指示源端直通设备停止运行。
例如,通过上述停机指令可以指示源端直通设备停止数据面接收或者发送数据。
具体地,源端虚拟机可以向PF驱动发送预停机指令,PF驱动可以通过上述PF通道将预停机指令发送至源端直通设备。
步骤908、源端虚拟机获取源端直通设备的最后一轮脏页。
这里,需要说明的是,最后一轮脏页是指源端虚拟机的vcpu暂停后的脏页。
步骤909、源端虚拟机将最后一轮脏页发送至目的端虚拟机。
可选地,在步骤909之后,源端虚拟机可以通过PF驱动向源端直通设备发送保存指令,该保存指令用于指示源端直通设备保存停止运行时刻的状态信息。
例如,源端虚拟机向源端直通设备驱动发送保存指令,保存指令中携带源端虚拟机的内存地址A,源端虚拟机将保存指令发送至PF驱动,PF驱动可以配置DMA内存地址B用于存储状态信息,PF驱动将保存指令发送至源端直通设备驱动,源端直通设备驱动控制源端直通设备进行状态信息的保存;当源端直通设备驱动向PF驱动反馈状态信息时,PF驱动将该状态信息保存至DMA内存地址B中,并将状态信息同步至源端虚拟机的内存地址A,从而使得源端虚拟机获取到源端直通设备的状态信息。
例如,状态信息可以包括寄存器的状态和内存描述符的状态。
可选地,目的端虚拟机可以通过运行在目的端物理主机上的PF驱动向目的端直通设备发送预启动指令,该预启动指令用于指示目的端直通设备进行迁移前准备工作。
步骤910、源端虚拟机向目的端虚拟机发送源端直通设备的状态信息。
可选地,目的端虚拟机可以通过运行在目的端物理主机上的PF驱动向目的端直通设备发送启动指令,该启动指令用于指示目的端直通设备恢复开始运行。
可选地,目的端虚拟机可以通过运行在目的端物理主机上的PF驱动向目的端直通设备发送恢复指令,该恢复指令用于指示目的端直通设备恢复源端直通设备的状态。应理解,目的端直通设备通过恢复源端直通设备的状态信息,从而可以确保源端直通设备和目的端直通设备的状态一致性,例如,可以确保迁移前后直通设备(源端直通设备和目的端直通设备)的寄存器状态的一致性以及中断状态的一致性等。
步骤911、启动目的端虚拟机的CPU,热迁移成功。
应理解,图10所示的虚拟机迁移的方法中,源端虚拟机可以通过图8所示的PF驱动向源端直通设备发送迁移指令。
在本申请的实施例中,在源端虚拟机需要进行热迁移时,源端虚拟机可以向直通给源端虚拟机的任意一个源端直通设备发送第一指令,从而指示源端直通设备在通过DMA方式向源端虚拟机写入数据时,源端直通设备标记该数据所在的内存地址;进而源端虚拟机可以从源端直通设备中获取标记的内存地址,根据标记的内存地址获取脏页数据并向目的端发送该脏页数据。通过上述技术方案,可以解决当源端直通设备不经过物理主机CPU直接通过DMA方式修改虚拟机的内存的场景下,CPU无法获取脏页数据的存储地址的问题。基于上述技术方案,能够保证配置直通设备的虚拟机在迁移过程前后的内存的一致性,同时,本申请的实施例通过获取源端直通设备的状态信息,可以确保源端直通设备和目的端直通设备状态的一致性,提高了虚拟机迁移的性能。
上文中结合图1至图10,详细描述了本申请实施例提供的虚拟机迁移的方法,下面将结合图11至图14,详细描述本申请实施例提供的服务器以及直通设备。应理解,方法实施例的描述与装置实施例的描述相互对应,因此,未详细描述的部分可以参见前面方法实施例。
图11是本申请实施例的物理主机1100的示意性框图。应理解,物理主机1100能够执行图7至图10中的各个步骤/功能,为了避免重复,此处不再详述。该物理主机1100可以是服务器,或者,物理主机1100可以是配置于服务器中的芯片。物理主机1100可以包括:源端虚拟机模块1110和PF驱动模块1120,所述源端虚拟机模块1110,用于通过所述PF驱动模块向源端直通设备发送第一指令,其中,所述第一指令用于指示所述源端直通设备记录脏页数据的存储地址,所述脏页数据为所述源端直通设备通过直接内存存取DMA方式向所述源端虚拟机模块写入的数据;
所述源端虚拟机模1110,还用于获取所述源端直通设备记录的脏页数据的存储地址;向所述目的端虚拟机发送待迁移数据,所述待迁移数据包括所述源端虚拟机模块的脏页数据。
可选地,在一种可能的实现方式中,所述源端虚拟机模块1110具体用于:向所述PF驱动模块发送所述第一指令;
所述PF驱动模块1120,具体用于将所述第一指令发送至所述源端直通设备。
可选地,在一种可能的实现方式中,所述PF驱动模块1120具体用于:
将所述第一指令写入预留的存储空间,所述预留的存储空间用于所述源端直通设备获取所述第一指令。
可选地,在一种可能的实现方式中,所述PF驱动模块1120还用于:
通过所述源端直通设备的寄存器向所述源端直通设备发送所述预留的存储空间的地址。
可选地,在一种可能的实现方式中,所述PF驱动模块1120具体用于:
将所述第一指令写入所述源端直通设备的PCIe配置空间的预留位,所述PCIe配置空间用于所述源端直通设备获取所述指令。
可选地,在一种可能的实现方式中,所述PF驱动模块1120,具体用于将所述第一指令写入所述源端直通设备的预配置的PCIe配置空间,所述预配置的PCIe配置空间用于所述源端直通设备获取所述第一指令。
可选地,在一种可能的实现方式中,所述物理主机1100还包括:
控制模块,所述控制模块用于为所述PF驱动模块中分配第一存储空间,所述第一存储空间用于存储所述多个虚拟直通设备中每个多个虚拟直通设备所记录的脏页数据的存储地址。
可选地,在一种可能的实现方式中,所述源端虚拟机模块1110还用于:
通过所述PF驱动模块向所述源端直通设备发送脏页同步指令,所述脏页指令中包括所述第一存储空间中的第一地址,所述脏页同步指令用于指示所述源端直通设备将所述脏页数据的存储地址同步至所述第一地址所指示的所述第一存储空间中的存储位置;根据所述第一地址从所述第一存储空间中读取所述脏页数据的存储地址。
可选地,所述脏页同步指令为周期性发送的指令。
可选地,在一种可能的实现方式中,所述控制模块还用于:
为所述PF驱动模块中分配第二存储空间,所述第二存储空间用于存储所述多个虚拟直通设备中每个多个虚拟直通设备的状态信息,所述状态信息是指所述每个虚拟直通设备在停止运行时刻的状态信息,所述状态信息包括所述每个虚拟直通设备的寄存器的信息和内存描述符的信息。
可选地,在一种可能的实现方式中,所述源端虚拟机模块1110还用于:
通过PF驱动模块向所述源端直通设备发送保存指令,所述保存指令中包括所述第二存储空间中的第二地址,所述保存指令用于指示所述源端直通设备将所述状态信息保存至所述第二地址所指示的所述第二存储空间中的存储位置;在所述第二地址对应所述第二存储空间中的存储位置获取所述状态信息。
可选地,在一种可能的实现方式中,所述多个虚拟直通设备中包括所述第一虚拟直通设备和第二虚拟直通设备,所述源端虚拟机模块1110还用于:
在接收到所述PF驱动发送的第二指令的反馈指令之后,通过所述PF驱动模块向所述第二虚拟直通设备发送第三指令;所述反馈指令表示所述PF驱动已将所述第二指令发送至所述第一虚拟直通设备。
可选地,第二指令、第三指令可以是任意一个迁移指令,例如,可以是前述的第一指令、脏页同步指令、保存指令中的任意一个。
可选地,在一种可能的实现方式中,所述源端直通设备为虚拟功能VF设备。
应理解,这里的物理主机1100以功能单元的形式体现。这里的术语“模块”可以通过软件和/或硬件形式实现,对此不作具体限定。例如,“单元”可以是实现上述功能的软件程序、硬件电路或二者结合。所述硬件电路可能包括应用特有集成电路(applicationspecific integrated circuit,ASIC)、电子电路、用于执行一个或多个软件或固件程序的处理器(例如共享处理器、专有处理器或组处理器等)和存储器、合并逻辑电路和/或其它支持所描述的功能的合适组件。
因此,在本申请的实施例中描述的各示例的模块,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
图12是本申请实施例的直通设备1200的示意性框图。应理解,直通设备1200能够执行图7至图10中的各个步骤/功能,为了避免重复,此处不再详述。直通设备1200包括:通信模块1210和处理模块1220,所述通信模块1210,用于接收源端虚拟机通过物理功能PF驱动发送的第一指令,其中,所述第一指令用于指示所述直通设备记录脏页数据的存储地址,所述脏页数据为所述直通设备通过直接内存存取DMA方式向所述源端虚拟机写入的数据,所述PF驱动运行在源端物理主机的宿主操作系统中,所述源端物理主机还包括运行在所述宿主操作系统之上的所述源端虚拟机;
所述处理模块1220,用于根据所述第一指令,记录所述脏页数据的存储地址;
所述通信模块1210,还用于向所述源端虚拟机发送所述在脏页数据的存储地址。
可选地,在一种可能的实现方式中,所述通信模块1210具体用于:
接收所述PF驱动发送的所述第一指令,所述第一指令为所述源端虚拟机通过所述PF驱动透传至所述直通设备的指令。
可选地,在一种可能的实现方式中,所述通信模块1210还用于:
所述直通设备获取预留的存储空间的地址;
所述处理模块1220,还用于根据所述预留的存储空间的地址获取承载于所述预留的存储空间中的所述第一指令,所述第一指令为所述PF驱动写入所述预留的存储空间的指令。
可选地,在一种可能的实现方式中,所述通信模块1210具体用于:
获取承载于所述直通设备的PCIe配置空间的预留位的所述第一指令,所述第一指令为所述PF驱动写入所述预留位的指令。
可选地,在一种可能的实现方式中,所述通信模块1210具体用于:
获取承载于所述直通设备的预配置的PCIe配置空间的所述第一指令,所述第一指令为所述PF驱动写入所述预配置的PCIe配置空间的指令。
可选地,在一种可能的实现方式中,所述通信模块1210还用于:
接收所述源端虚拟机通过所述PF驱动发送的脏页同步指令,所述脏页指令中包括第一存储空间中的第一地址,所述第一存储空间表示为所述PF驱动中分配的用于同步所述脏页数据的存储地址的存储空间,所述脏页同步指令用于指示所述直通设备将所述脏页数据的存储地址同步至所述第一地址所指示的所述第一存储空间中的存储位置;
所述处理模块1220,还用于根据所述脏页同步指令将所述脏页数据的存储地址同步至所述第一地址所指示的所述第一存储空间中的存储位置。
可选地,在一种可能的实现方式中,所述直通设备中运行多个虚拟直通设备,所述第一存储空间用于存储所述多个虚拟直通设备中每个多个虚拟直通设备所记录的脏页数据的存储地址。
可选地,在一种可能的实现方式中,所述通信模块1210还用于:
接收所述源端虚拟机通过所述PF驱动发送的保存指令,所述保存指令中包括第二存储空间中的第二地址,所述第二存储空间表示为所述PF驱动中分配的用于保存所述直通设备在停止运行时刻的状态信息的存储空间,所述保存指令用于指示所述直通设备将所述状态信息保存至所述第二地址所指示的所述第二存储空间中的存储位置,所述状态信息包括所述直通设备的寄存器的信息和内存描述符的信息;
所述处理模块1220,还用于根据所述保存指令将所述状态信息保存至所述第二地址所指示的所述第二存储空间中的存储位置。
可选地,在一种可能的实现方式中,所述直通设备中运行多个虚拟直通设备,所述第二存储空间用于存储所述多个虚拟直通设备中每个多个虚拟直通设备的状态信息。
可选地,在一种可能的实现方式中,所述直通设备为虚拟功能VF设备。
应理解,这里的直通设备1200以功能单元的形式体现。这里的术语“模块”可以通过软件和/或硬件形式实现,对此不作具体限定。例如,“单元”可以是实现上述功能的软件程序、硬件电路或二者结合。所述硬件电路可能包括应用特有集成电路(applicationspecific integrated circuit,ASIC)、电子电路、用于执行一个或多个软件或固件程序的处理器(例如共享处理器、专有处理器或组处理器等)和存储器、合并逻辑电路和/或其它支持所描述的功能的合适组件。
因此,在本申请的实施例中描述的各示例的模块,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
图13示出了本申请一个实施例提供的物理主机的示意性框图。该物理主机1300可以包括:通信接口1310、处理器1320和存储器1330。
可选地,物理主机1300还可以包括总线1340。其中,通信接口1310、处理器1320以及存储器1330可以通过总线1340相互连接;总线1340可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extendedindustry standard architecture,EISA)总线等。所述总线1340可以分为地址总线、数据总线、控制总线等。为便于表示,图13中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
该存储器1330可以用于存储该计算机系统执行的程序代码和数据。因此,该存储器1330可以是处理器1320内部的存储单元,也可以是与处理器1320独立的外部存储单元,还可以是包括处理器1320内部的存储单元和与处理器1320独立的外部存储单元的部件。
处理器1320可以由一个或者多个通用处理器构成,例如可以是中央处理器(central processing unit,CPU),通用处理器,数字信号处理器(digital signalprocessor,DSP),专用集成电路(application-specific integrated circuit,ASIC),现场可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。所述处理器也可以是实现计算功能的组合,例如包含多个微处理器组合,DSP和微处理器的组合等等。处理器1320可用于运行相关的程序代码中处理功能的程序。也就是说,处理器1320执行程序代码可以实现发送模块和/或获取的功能。其中,关于发送模块和获取模块的功能具体可参见前述实施例中的相关阐述。
在一种可能的实施方式中,所述处理器1320用于运行相关的程序代码,以实现本申请上述方法实施例中源端虚拟机的功能,或以实现本申请上述图7示出的步骤710至步骤730中所述的方法,或以实现本申请上述图10示出的步骤901至步骤911中所述的方法,和/或实现本文所描述的技术的其它步骤等,本申请这里不做详述和限定。
通信接口1310可以为有线接口(例如以太网接口)或无线接口(例如蜂窝网络接口或使用无线局域网接口),用于与其他模块/设备进行通信。
存储器1330可以包括易失性存储器(volatile memory),例如随机存取存储器(random access memory,RAM);存储器也可以包括非易失性存储器(non-volatilememory),例如只读存储器(read-only memory,ROM)、快闪存储器(flash memory)、硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD);存储器1330还可以包括上述种类的存储器的组合。存储器1330可用于存储一组程序代码,以便于处理器1320调用存储器1330中存储的程序代码以实现本申请实施例中涉及的发送模块和/或获取模块的功能。
当存储器1330中的程序代码被处理器1320执行时,可以使得物理主机1300执行上述方法实施例700或900中的方法。
图14示出了本申请一个实施例提供的直通设备的示意性框图。该直通设备1400可以包括:通信接口1410、处理器1420和存储器1430。
可选地,直通设备1400还可以包括总线1440。其中,通信接口1410、处理器1420以及存储器1430可以通过总线1440相互连接;总线1440可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extendedindustry standard architecture,EISA)总线等。所述总线1440可以分为地址总线、数据总线、控制总线等。为便于表示,图14中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
该存储器1430可以用于存储该计算机系统执行的程序代码和数据。因此,该存储器1430可以是处理器1420内部的存储单元,也可以是与处理器1420独立的外部存储单元,还可以是包括处理器1420内部的存储单元和与处理器1420独立的外部存储单元的部件。
处理器1420可以由一个或者多个通用处理器构成,例如可以是中央处理器(central processing unit,CPU),通用处理器,数字信号处理器(digital signalprocessor,DSP),专用集成电路(application-specific integrated circuit,ASIC),现场可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。所述处理器也可以是实现计算功能的组合,例如包含多个微处理器组合,DSP和微处理器的组合等等。处理器1420可用于运行相关的程序代码中处理功能的程序。也就是说,处理器1420执行程序代码可以实现处理模块的功能。其中,关于处理模块的功能具体可参见前述实施例中的相关阐述。
在一种可能的实施方式中,所述处理器1420用于运行相关的程序代码,以实现本申请上述方法实施例中源端虚直通的功能,或以实现本申请上述图7示出的步骤710至步骤730中所述的方法,或以实现本申请上述图10示出的步骤901至步骤911中所述的方法,和/或实现本文所描述的技术的其它步骤等,本申请这里不做详述和限定。
通信接口1410可以为有线接口(例如以太网接口)或无线接口(例如蜂窝网络接口或使用无线局域网接口),用于与其他模块/设备进行通信。
存储器1430可以包括易失性存储器(volatile memory),例如随机存取存储器(random access memory,RAM);存储器也可以包括非易失性存储器(non-volatilememory),例如只读存储器(read-only memory,ROM)、快闪存储器(flash memory)、硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD);存储器1430还可以包括上述种类的存储器的组合。存储器1430可用于存储一组程序代码,以便于处理器1420调用存储器1430中存储的程序代码以实现本申请实施例中涉及的通信模块和/或处理模块的功能。
当存储器1430中的程序代码被处理器1420执行时,可以使得该直通设备1400执行上述方法实施例700或900中的方法。
可选地,本申请实施例还提供了一种计算机系统,包括上述物理主机和一个或者多个直通设备。
可选地,本申请实施例还提供了一种计算机程序产品,所述计算机程序产品包括:计算机程序代码,当所述计算机程序代码在计算机上运行时,使得计算机执行上述各方面中的方法。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (45)
1.一种虚拟机迁移的方法,其特征在于,所述方法应用在源端物理主机上,所述源端物理主机包括宿主机操作系统和运行在所述宿主机操作系统之上的源端虚拟机,所述宿主机操作系统中包括物理功能PF驱动,所述源端虚拟机处理的数据通过源端直通设备传输,所述方法用于实现将所述源端虚拟机迁移至目的端虚拟机,包括:
所述源端虚拟机通过所述PF驱动向所述源端直通设备发送第一指令,其中,所述第一指令用于指示所述源端直通设备记录脏页数据的存储地址,所述脏页数据为所述源端直通设备通过直接内存存取DMA方式向所述源端虚拟机写入的数据;
所述源端虚拟机获取所述源端直通设备记录的脏页数据的存储地址;
所述源端虚拟机向所述目的端虚拟机发送待迁移数据,所述待迁移数据包括所述源端虚拟机的脏页数据。
2.如权利要求1所述的方法,其特征在于,所述源端虚拟机通过所述PF驱动向所述源端直通设备发送第一指令,包括:
所述源端虚拟机向所述PF驱动发送所述第一指令;
所述PF驱动将所述第一指令发送至所述源端直通设备。
3.如权利要求1或2所述的方法,其特征在于,所述源端虚拟机通过所述PF驱动向所述源端直通设备发送第一指令,包括:
所述PF驱动将所述第一指令写入预留的存储空间,所述预留的存储空间用于所述源端直通设备获取所述第一指令。
4.如权利要求3所述的方法,其特征在于,所述方法还包括:
所述PF驱动通过所述源端直通设备的寄存器向所述源端直通设备发送所述预留的存储空间的地址。
5.如权利要求1、2、4中任一项所述的方法,其特征在于,所述源端虚拟机通过所述PF驱动向所述源端直通设备发送第一指令,包括:
所述PF驱动将所述第一指令写入所述源端直通设备的快捷外围部件互连标准PCIe配置空间的预留位,所述PCIe配置空间用于所述源端直通设备获取所述指令。
6.如权利要求1、2、4中任一项所述的方法,其特征在于,所述源端虚拟机通过所述PF驱动向所述源端直通设备发送第一指令,包括:
所述PF驱动将所述第一指令写入所述源端直通设备的预配置的PCIe配置空间,所述预配置的PCIe配置空间用于所述源端直通设备获取所述第一指令。
7.如权利要求1、2、4中任一项所述的方法,其特征在于,所述源端直通设备中运行多个虚拟直通设备,所述方法还包括:
为所述PF驱动中分配第一存储空间,所述第一存储空间用于存储所述多个虚拟直通设备中每个多个虚拟直通设备所记录的脏页数据的存储地址。
8.如权利要求7所述的方法,其特征在于,所述源端虚拟机获取所述源端直通设备的脏页数据的地址,包括:
所述源端虚拟机通过所述PF驱动向所述源端直通设备发送脏页同步指令,所述脏页同步指令中包括所述第一存储空间中的第一地址,所述脏页同步指令用于指示所述源端直通设备将所述脏页数据的存储地址同步至所述第一地址所指示的所述第一存储空间中的存储位置;
所述源端虚拟机根据所述第一地址从所述第一存储空间中读取所述脏页数据的存储地址。
9.如权利要求8所述的方法,其特征在于,所述方法还包括:
为所述PF驱动中分配第二存储空间,所述第二存储空间用于存储所述多个虚拟直通设备中每个多个虚拟直通设备的状态信息,所述状态信息是指所述每个虚拟直通设备在停止运行时刻的状态信息,所述状态信息包括所述每个虚拟直通设备的寄存器的信息和内存描述符的信息。
10.如权利要求9所述的方法,其特征在于,所述方法还包括:
所述源端虚拟机通过PF驱动向所述源端直通设备发送保存指令,所述保存指令中包括所述第二存储空间中的第二地址,所述保存指令用于指示所述源端直通设备将所述状态信息保存至所述第二地址所指示的所述第二存储空间中的存储位置;
所述源端虚拟机在所述第二地址对应所述第二存储空间中的存储位置获取所述状态信息。
11.如权利要求8至10中任一项所述的方法,其特征在于,所述多个虚拟直通设备中包括第一虚拟直通设备和第二虚拟直通设备,所述源端虚拟机通过PF驱动向源端直通设备发送指令,包括:
在接收到所述PF驱动发送的第二指令的反馈指令之后,所述源端虚拟机通过所述PF驱动向所述第二虚拟直通设备发送第三指令;所述反馈指令表示所述PF驱动已将所述第二指令发送至所述第一虚拟直通设备。
12.一种虚拟机迁移的方法,其特征在于,包括:
源端直通设备接收源端虚拟机通过物理功能PF驱动发送的第一指令,其中,所述第一指令用于指示所述源端直通设备记录脏页数据的存储地址,所述脏页数据为所述源端直通设备通过直接内存存取DMA方式向所述源端虚拟机写入的数据,所述PF驱动运行在源端物理主机的宿主操作系统中,所述源端物理主机还包括运行在所述宿主操作系统之上的所述源端虚拟机;
所述源端直通设备根据所述第一指令,记录所述脏页数据的存储地址;
所述源端直通设备向所述源端虚拟机发送所述在脏页数据的存储地址。
13.如权利要求12所述的方法,其特征在于,所述源端直通设备接收源端虚拟机通过物理功能PF驱动发送的第一指令,包括:
所述源端直通设备接收所述PF驱动发送的所述第一指令,所述第一指令为所述源端虚拟机通过所述PF驱动透传至所述源端直通设备的指令。
14.如权利要求12或13所述的方法,其特征在于,所述源端直通设备接收源端虚拟机通过物理功能PF驱动发送的第一指令,包括:
所述源端直通设备获取预留的存储空间的地址;
根据所述预留的存储空间的地址获取承载于所述预留的存储空间中的所述第一指令,所述第一指令为所述PF驱动写入所述预留的存储空间的指令。
15.如权利要求12或13所述的方法,其特征在于,所述源端直通设备接收源端虚拟机通过物理功能PF驱动发送的第一指令,包括:
所述源端直通设备获取承载于所述源端直通设备的PCIe配置空间的预留位的所述第一指令,所述第一指令为所述PF驱动写入所述预留位的指令。
16.如权利要求12或13所述的方法,其特征在于,所述源端直通设备接收源端虚拟机通过物理功能PF驱动发送的第一指令,包括:
所述源端直通设备获取承载于所述源端直通设备的预配置的PCIe配置空间的所述第一指令,所述第一指令为所述PF驱动写入所述预配置的PCIe配置空间的指令。
17.如权利要求12或13所述的方法,其特征在于,所述源端直通设备向所述源端虚拟机发送所述在脏页数据的存储地址,包括:
所述源端直通设备接收所述源端虚拟机通过所述PF驱动发送的脏页同步指令,所述脏页同步指令中包括第一存储空间中的第一地址,所述第一存储空间表示为所述PF驱动中分配的用于同步所述脏页数据的存储地址的存储空间,所述脏页同步指令用于指示所述源端直通设备将所述脏页数据的存储地址同步至所述第一地址所指示的所述第一存储空间中的存储位置;
所述源端直通设备根据所述脏页同步指令将所述脏页数据的存储地址同步至所述第一地址所指示的所述第一存储空间中的存储位置。
18.如权利要求17所述的方法,其特征在于,所述源端直通设备中运行多个虚拟直通设备,所述第一存储空间用于存储所述多个虚拟直通设备中每个多个虚拟直通设备所记录的脏页数据的存储地址。
19.如权利要求12或13所述的方法,其特征在于,所述方法还包括:
所述源端直通设备接收所述源端虚拟机通过所述PF驱动发送的保存指令,所述保存指令中包括第二存储空间中的第二地址,所述第二存储空间表示为所述PF驱动中分配的用于保存所述源端直通设备在停止运行时刻的状态信息的存储空间,所述保存指令用于指示所述源端直通设备将所述状态信息保存至所述第二地址所指示的所述第二存储空间中的存储位置,所述状态信息包括所述源端直通设备的寄存器的信息和内存描述符的信息;
所述源端直通设备根据所述保存指令将所述状态信息保存至所述第二地址所指示的所述第二存储空间中的存储位置。
20.如权利要求19所述的方法,其特征在于,所述源端直通设备中运行多个虚拟直通设备,所述第二存储空间用于存储所述多个虚拟直通设备中每个多个虚拟直通设备的状态信息。
21.一种物理主机,其特征在于,包括源端虚拟机模块和物理功能PF驱动模块,
所述源端虚拟机模块用于通过所述PF驱动模块向源端直通设备发送第一指令,其中,所述第一指令用于指示所述源端直通设备记录脏页数据的存储地址,所述脏页数据为所述源端直通设备通过直接内存存取DMA方式向所述源端虚拟机模块写入的数据;
所述源端虚拟机模块,还用于获取所述源端直通设备记录的脏页数据的存储地址;向所述目的端虚拟机发送待迁移数据,所述待迁移数据包括所述源端虚拟机模块的脏页数据。
22.如权利要求21所述的物理主机,其特征在于,所述源端虚拟机模块具体用于:
向所述PF驱动模块发送所述第一指令;
所述PF驱动模块,具体用于将所述第一指令发送至所述源端直通设备。
23.如权利要求21或22所述的物理主机,其特征在于,所述PF驱动模块具体用于:
将所述第一指令写入预留的存储空间,所述预留的存储空间用于所述源端直通设备获取所述第一指令。
24.如权利要求23所述的物理主机,其特征在于,所述PF驱动模块还用于:
通过所述源端直通设备的寄存器向所述源端直通设备发送所述预留的存储空间的地址。
25.如权利要求21、22、24中任一项所述的物理主机,其特征在于,所述PF驱动模块具体用于:
将所述第一指令写入所述源端直通设备的快捷外围部件互连标准PCIe配置空间的预留位,所述PCIe配置空间用于所述源端直通设备获取所述指令。
26.如权利要求21、22、24中任一项所述的物理主机,其特征在于,所述PF驱动模块,具体用于将所述第一指令写入所述源端直通设备的预配置的PCIe配置空间,所述预配置的PCIe配置空间用于所述源端直通设备获取所述第一指令。
27.如权利要求21、22、24中任一项所述的物理主机,其特征在于,所述源端直通设备中运行多个虚拟直通设备,所述物理主机还包括:
控制模块,所述控制模块用于为所述PF驱动模块中分配第一存储空间,所述第一存储空间用于存储所述多个虚拟直通设备中每个多个虚拟直通设备所记录的脏页数据的存储地址。
28.如权利要求27所述的物理主机,其特征在于,所述源端虚拟机模块还用于:
通过所述PF驱动模块向所述源端直通设备发送脏页同步指令,所述脏页指令中包括所述第一存储空间中的第一地址,所述脏页同步指令用于指示所述源端直通设备将所述脏页数据的存储地址同步至所述第一地址所指示的所述第一存储空间中的存储位置;
根据所述第一地址从所述第一存储空间中读取所述脏页数据的存储地址。
29.如权利要求28所述的物理主机,其特征在于,所述控制模块还用于:
为所述PF驱动模块中分配第二存储空间,所述第二存储空间用于存储所述多个虚拟直通设备中每个多个虚拟直通设备的状态信息,所述状态信息是指所述每个虚拟直通设备在停止运行时刻的状态信息,所述状态信息包括所述每个虚拟直通设备的寄存器的信息和内存描述符的信息。
30.如权利要求29所述的物理主机,其特征在于,所述源端虚拟机模块还用于:
通过PF驱动模块向所述源端直通设备发送保存指令,所述保存指令中包括所述第二存储空间中的第二地址,所述保存指令用于指示所述源端直通设备将所述状态信息保存至所述第二地址所指示的所述第二存储空间中的存储位置;
在所述第二地址对应所述第二存储空间中的存储位置获取所述状态信息。
31.如权利要求28至30中任一项所述的物理主机,其特征在于,所述多个虚拟直通设备中包括第一虚拟直通设备和第二虚拟直通设备,所述源端虚拟机模块还用于:
在接收到所述PF驱动模块发送的第二指令的反馈指令之后,通过所述PF驱动模块向所述第二虚拟直通设备发送第三指令;所述反馈指令表示所述PF驱动模块已将所述第二指令发送至所述第一虚拟直通设备。
32.一种直通设备,其特征在于,包括通信模块和处理模块,
所述通信模块,用于接收源端虚拟机通过物理功能PF驱动发送的第一指令,其中,所述第一指令用于指示所述直通设备记录脏页数据的存储地址,所述脏页数据为所述直通设备通过直接内存存取DMA方式向所述源端虚拟机写入的数据,所述PF驱动运行在源端物理主机的宿主操作系统中,所述源端物理主机还包括运行在所述宿主操作系统之上的所述源端虚拟机;
所述处理模块,用于根据所述第一指令,记录所述脏页数据的存储地址;
所述通信模块,还用于向所述源端虚拟机发送所述在脏页数据的存储地址。
33.如权利要求32所述的直通设备,其特征在于,所述通信模块具体用于:
接收所述PF驱动发送的所述第一指令,所述第一指令为所述源端虚拟机通过所述PF驱动透传至所述直通设备的指令。
34.如权利要求32或33所述的直通设备,其特征在于,所述通信模块还用于:
所述直通设备获取预留的存储空间的地址;
所述处理模块,还用于根据所述预留的存储空间的地址获取承载于所述预留的存储空间中的所述第一指令,所述第一指令为所述PF驱动写入所述预留的存储空间的指令。
35.如权利要求32或33所述的直通设备,其特征在于,所述通信模块具体用于:
获取承载于所述直通设备的快捷外围部件互连标准PCIe配置空间的预留位的所述第一指令,所述第一指令为所述PF驱动写入所述预留位的指令。
36.如权利要求32或33所述的直通设备,其特征在于,所述通信模块具体用于:
获取承载于所述直通设备的预配置的PCIe配置空间的所述第一指令,所述第一指令为所述PF驱动写入所述预配置的PCIe配置空间的指令。
37.如权利要求32或33所述的直通设备,其特征在于,所述通信模块还用于:
接收所述源端虚拟机通过所述PF驱动发送的脏页同步指令,所述脏页同步指令中包括第一存储空间中的第一地址,所述第一存储空间表示为所述PF驱动中分配的用于同步所述脏页数据的存储地址的存储空间,所述脏页同步指令用于指示所述直通设备将所述脏页数据的存储地址同步至所述第一地址所指示的所述第一存储空间中的存储位置;
所述处理模块,还用于根据所述脏页同步指令将所述脏页数据的存储地址同步至所述第一地址所指示的所述第一存储空间中的存储位置。
38.如权利要求37所述的直通设备,其特征在于,所述直通设备中运行多个虚拟直通设备,所述第一存储空间用于存储所述多个虚拟直通设备中每个多个虚拟直通设备所记录的脏页数据的存储地址。
39.如权利要求32或33所述的直通设备,其特征在于,所述通信模块还用于:
接收所述源端虚拟机通过所述PF驱动发送的保存指令,所述保存指令中包括第二存储空间中的第二地址,所述第二存储空间表示为所述PF驱动中分配的用于保存所述直通设备在停止运行时刻的状态信息的存储空间,所述保存指令用于指示所述直通设备将所述状态信息保存至所述第二地址所指示的所述第二存储空间中的存储位置,所述状态信息包括所述直通设备的寄存器的信息和内存描述符的信息;
所述处理模块,还用于根据所述保存指令将所述状态信息保存至所述第二地址所指示的所述第二存储空间中的存储位置。
40.如权利要求39所述的直通设备,其特征在于,所述直通设备中运行多个虚拟直通设备,所述第二存储空间用于存储所述多个虚拟直通设备中每个多个虚拟直通设备的状态信息。
41.一种物理主机,其特征在于,包括处理器和存储器,所述存储器用于存储计算机可读指令,所述处理器用于读取所述计算机可读指令并实现如权利要求1至11中任一项所述的方法。
42.一种直通设备,其特征在于,包括处理器和存储器,所述存储器用于存储计算机可读指令,所述处理器用于读取所述计算机可读指令并实现如权利要求12至20中任一项所述的方法。
43.一种计算机系统,其特征在于,包括如权利要求41所述的物理主机和一个或者多个如权利要求42所述的直通设备。
44.一种计算机可读介质,其特征在于,包括计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行如权利要求1至11中任一项所述的方法。
45.一种计算机可读介质,其特征在于,包括计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行如权利要求12至20中任一项所述的方法。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910581208.XA CN112148421B (zh) | 2019-06-29 | 2019-06-29 | 虚拟机迁移的方法以及装置 |
EP20834696.5A EP3985504B1 (en) | 2019-06-29 | 2020-06-03 | Virtual machine migration |
PCT/CN2020/094202 WO2021000689A1 (zh) | 2019-06-29 | 2020-06-03 | 虚拟机迁移的方法以及装置 |
CA3145419A CA3145419A1 (en) | 2019-06-29 | 2020-06-03 | Method for migrating virtual machine and apparatus |
US17/564,994 US20220121473A1 (en) | 2019-06-29 | 2021-12-29 | Method For Migrating Virtual Machine And Apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910581208.XA CN112148421B (zh) | 2019-06-29 | 2019-06-29 | 虚拟机迁移的方法以及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112148421A CN112148421A (zh) | 2020-12-29 |
CN112148421B true CN112148421B (zh) | 2024-01-30 |
Family
ID=73891291
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910581208.XA Active CN112148421B (zh) | 2019-06-29 | 2019-06-29 | 虚拟机迁移的方法以及装置 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20220121473A1 (zh) |
EP (1) | EP3985504B1 (zh) |
CN (1) | CN112148421B (zh) |
CA (1) | CA3145419A1 (zh) |
WO (1) | WO2021000689A1 (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200183729A1 (en) * | 2019-10-31 | 2020-06-11 | Xiuchun Lu | Evolving hypervisor pass-through device to be consistently platform-independent by mediated-device in user space (muse) |
WO2022062510A1 (zh) * | 2020-09-28 | 2022-03-31 | 中科寒武纪科技股份有限公司 | 实现热迁移的设备及方法 |
US20220109629A1 (en) * | 2020-10-01 | 2022-04-07 | Vmware, Inc. | Mitigating service overruns |
US20220261266A1 (en) * | 2021-02-15 | 2022-08-18 | Pensando Systems Inc. | Methods and systems for using a peripheral device to assist virtual machine io memory access tracking |
CN113406696B (zh) * | 2021-06-01 | 2023-04-07 | 成都高新减灾研究所 | 实现移动设备地震监测的方法及设备 |
CN113553137B (zh) * | 2021-06-17 | 2022-11-01 | 中国人民解放军战略支援部队信息工程大学 | 一种nfv架构下基于dpdk的接入能力网元高速数据处理方法 |
CN113485756A (zh) * | 2021-06-30 | 2021-10-08 | 深圳市科力锐科技有限公司 | 硬件设备配置方法、装置、设备及存储介质 |
WO2023225990A1 (en) * | 2022-05-27 | 2023-11-30 | Intel Corporation | Optimizing dirty page copying for a workload received during live migration that makes use of hardware accelerator virtualization |
CN115460172B (zh) * | 2022-08-22 | 2023-12-05 | 曙光信息产业股份有限公司 | 设备地址分配方法、装置、计算机设备、介质及程序产品 |
CN115499385B (zh) * | 2022-09-21 | 2023-09-12 | 中电云数智科技有限公司 | 一种vDPA虚机热迁移不丢包的方法 |
CN117389685B (zh) * | 2023-10-19 | 2024-03-19 | 北京云豹创芯智能科技有限公司 | 虚拟机热迁移标脏方法及其装置、后端设备、芯片 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9201612B1 (en) * | 2011-10-20 | 2015-12-01 | Amazon Technologies, Inc. | Utilizing shared storage for efficient VM-HA |
CN105760218A (zh) * | 2016-01-05 | 2016-07-13 | 杭州华三通信技术有限公司 | 一种虚拟机在线迁移方法及装置 |
CN105893114A (zh) * | 2016-04-05 | 2016-08-24 | 浪潮电子信息产业股份有限公司 | 一种虚拟机迁移的方法、目的宿主机和源宿主机 |
CN108874506A (zh) * | 2018-06-08 | 2018-11-23 | 北京百度网讯科技有限公司 | 虚拟机直通设备的热迁移方法和装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102446119B (zh) * | 2010-10-13 | 2013-04-24 | 中标软件有限公司 | 基于Passthrough I/O的虚拟机动态迁移方法 |
CN105612498B (zh) * | 2013-12-31 | 2018-03-09 | 华为技术有限公司 | 虚拟机热迁移的方法、虚拟机内存数据处理方法、服务器和虚拟机系统 |
US9898430B2 (en) * | 2014-11-12 | 2018-02-20 | Vmware, Inc. | Tracking virtual machine memory modified by a single root I/O virtualization (SR-IOV) device |
US10810031B2 (en) * | 2015-09-28 | 2020-10-20 | Red Hat Israel, Ltd. | Dirty memory tracking with assigned devices by exitless paravirtualization |
-
2019
- 2019-06-29 CN CN201910581208.XA patent/CN112148421B/zh active Active
-
2020
- 2020-06-03 EP EP20834696.5A patent/EP3985504B1/en active Active
- 2020-06-03 CA CA3145419A patent/CA3145419A1/en active Pending
- 2020-06-03 WO PCT/CN2020/094202 patent/WO2021000689A1/zh unknown
-
2021
- 2021-12-29 US US17/564,994 patent/US20220121473A1/en active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9201612B1 (en) * | 2011-10-20 | 2015-12-01 | Amazon Technologies, Inc. | Utilizing shared storage for efficient VM-HA |
CN105760218A (zh) * | 2016-01-05 | 2016-07-13 | 杭州华三通信技术有限公司 | 一种虚拟机在线迁移方法及装置 |
CN105893114A (zh) * | 2016-04-05 | 2016-08-24 | 浪潮电子信息产业股份有限公司 | 一种虚拟机迁移的方法、目的宿主机和源宿主机 |
CN108874506A (zh) * | 2018-06-08 | 2018-11-23 | 北京百度网讯科技有限公司 | 虚拟机直通设备的热迁移方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
EP3985504A1 (en) | 2022-04-20 |
WO2021000689A1 (zh) | 2021-01-07 |
EP3985504B1 (en) | 2023-08-30 |
US20220121473A1 (en) | 2022-04-21 |
EP3985504A4 (en) | 2022-08-10 |
CA3145419A1 (en) | 2021-01-07 |
CN112148421A (zh) | 2020-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112148421B (zh) | 虚拟机迁移的方法以及装置 | |
US9086904B2 (en) | Live migration of virtual machine during direct access to storage over SR IOV adapter | |
EP2577450B1 (en) | Virtual machine migration techniques | |
US10509686B2 (en) | Distributable computational units in a continuous computing fabric environment | |
JP5692065B2 (ja) | 計算機システムにおける仮想装置の高速移動システム及び管理装置並びにその方法及びそのプログラム | |
US9055119B2 (en) | Method and system for VM-granular SSD/FLASH cache live migration | |
JP6055310B2 (ja) | 仮想記憶ターゲットオフロード技術 | |
JP5018252B2 (ja) | デバイス割り当て変更方法 | |
US8078764B2 (en) | Method for switching I/O path in a computer system having an I/O switch | |
US9372727B2 (en) | Cross architecture virtual machine migration | |
US9239765B2 (en) | Application triggered state migration via hypervisor | |
US9317314B2 (en) | Techniques for migrating a virtual machine using shared storage | |
JP5262404B2 (ja) | 複合型計算機及び複合型計算機の制御方法 | |
TW200817920A (en) | Method, apparatus, and computer usable program code for migrating virtual adapters from source physical adapters to destination physical adapters | |
US20090150463A1 (en) | Method of migration between virtual machine and physical machine and machine system thereof | |
CN106815067B (zh) | 带i/o虚拟化的虚拟机在线迁移方法、装置 | |
JP2008021252A (ja) | 計算機システム及びアドレス割当方法 | |
CN103140830A (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 |