System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种动态迁移虚拟机网卡从vhost-net到vhost-user的方法技术_技高网

一种动态迁移虚拟机网卡从vhost-net到vhost-user的方法技术

技术编号:43342494 阅读:0 留言:0更新日期:2024-11-15 20:38
本发明专利技术涉及一种动态迁移虚拟机网卡从vhost‑net到vhost‑user的方法。本方法包括:迁移源端启动使用vhost‑net协议网卡的虚拟机,配置vhost‑net网卡tap设备,并将其添加到OpenSwitch网桥上;部署OpenSwitch+DPDK的目的端服务器,在目的端服务器的OpenSwitch网桥上创建虚拟机使用的虚拟端口,该虚拟端口使用的mac地址为源端虚拟机使用的mac地址,其iface‑id也与源端虚拟机保持一致;准备目的端虚拟机xml文件,该xml文件中涉及的vhost‑user网卡使用的mac地址为源端虚拟机使用的mac地址;执行虚拟机迁移命令。本方法具备高度的灵活性,可实现动态高性能迁移,业务中断时间控制在毫秒级别,几乎不影响网络业务的正常运行,迁移后网络性能与直接使用vhost‑user网卡的虚拟机相当。

【技术实现步骤摘要】

本专利技术涉及虚拟机网卡迁移方法,尤其涉及一种动态迁移虚拟机网卡从vhost-net到vhost-user的方法及其装置。


技术介绍

1、virtio是一种为虚拟机提供高性能i/o访问的开源标准化接口框架,它设计之初便旨在打破传统虚拟化中的i/o性能瓶颈,通过减少虚拟机与宿主机之间的交互复杂度和开销,实现接近物理机的i/o性能。virtio不仅支持块设备(如virtio-blk)的虚拟化,还广泛应用于网络设备(virtio-net)的虚拟化,为虚拟化环境带来了前所未有的灵活性和性能提升。

2、作为virtio框架中最复杂的设备之一,virtio-net专注于网络设备的虚拟化。它通过定义一套标准化的i/o接口和协议,使得虚拟机能够高效、可靠地与宿主机及外部网络进行通信。作为前端组件,virtio-net运行在虚拟机的内核空间,负责将虚拟机内部的网络请求封装为virtio消息,并通过特定的机制(如共享内存)与宿主机的后端组件进行无缝对接。

3、vhost-net是vhost框架中专为处理网络i/o请求设计的后端组件,它运行在宿主机的内核空间,通过直接与宿主机的网络堆栈(如linux内核网络堆栈)交互,vhost-net能够高效地处理来自virtio-net前端组件的网络请求,从而大幅减少虚拟化引入的额外性能开销。vhost-net利用vhost协议构建数据面转发框架,采用共享内存机制在宿主机与虚拟机之间快速转发数据包。此外,它还支持多队列技术,可有效地将网络请求分发至多个cpu核心并行处理,进一步提升了系统的整体性能和可扩展性。

4、作为vhost框架的一个重要扩展,vhost-user将vhost的数据平面功能从内核空间卸载到用户空间的应用程序中。这一创新设计赋予了开发者在用户空间实现自定义数据平面处理逻辑的能力,从而提供了前所未有的灵活性和性能优化空间。结合dpdk等高性能用户态网络处理库,vhost-user能够实现更低延迟、更高吞吐量的数据包处理和转发,进一步推动了虚拟化环境中网络性能的新飞跃。通过unix域套接字等机制实现进程间的高效通信和事件通知,vhost-user为用户空间与内核空间之间的协同工作搭建了坚实的桥梁。

5、如前所述,vhost-net是宿主机内核空间中的一个关键组件,它以内核模块的形式存在,并通过特定的内核线程(名为vhost-xxx的线程)来直接处理虚拟机的网络i/o请求。这些请求通过共享内存区域(vring)与虚拟机中的virtio-net网卡进行交互。vhost-xxx线程负责从vring中高效地读取和写入数据包,从而实现了虚拟机与宿主机之间网络数据的快速传输。在宿主机的网络堆栈中,每个虚拟机网卡对应着一个tap设备。tap设备是一种虚拟的点对点网络设备,是虚拟机网络与宿主机网络之间的通信桥梁,通过tap设备,虚拟机能够发送和接收来自宿主机网络堆栈的数据包。

6、为了将虚拟机接入到更广泛的网络环境中,如openswitch虚拟机网桥,我们可以将tap设备添加到该网桥上。这样,tap设备就能够接收来自虚拟机的数据包,并将其转发给openswitch网桥进行进一步的处理和路由。同时,来自外部网络或openswitch网桥的数据包也会通过tap设备转发给虚拟机,实现了虚拟机与外部网络的双向通信。

7、vhost-user协议的业内通用实现方案为openswitch和dpdk相结合,这种结合的核心在于将数据包处理的快速路径从内核空间转移到用户空间,由dpdk在用户空间内直接实现数据包的接收、解析、转发等操作。

8、dpdk通过其独特的轮询模式驱动(pmd)技术,直接访问网络硬件,从而绕过了linux内核网络协议栈的复杂性和开销。pmd采用轮询方式接收和发送数据包,显著减少了cpu的空闲等待时间,并避免了中断和内核模式切换的开销,从而大幅提升了数据包处理的效率和吞吐量。

9、vhost-user协议作为一种高性能的虚拟化网络接口技术,相较于早期的vhost-net协议,在性能和灵活性方面有着显著的优势。然而,在实际应用中,许多早期部署的虚拟机可能仍然使用着vhost-net网卡,随着业务的发展和对性能要求的不断提高,这些虚拟机亟需一种转化技术,以便能够动态地从vhost-net网卡迁移到vhost-user网卡,从而享受vhost-user带来的性能提升。

10、虚拟机网卡由vhost-net网卡转换成vhost-user网卡,目前常用做法为:先停止虚拟机业务并关闭虚拟机,卸载vhost-net网卡,将虚拟机冷迁移到部署openswitch+dpdk组件并支持vhost-user网卡的环境上,然后给虚拟机添加vhost-user网卡,最后启动虚拟机。或者将当前节点虚拟机全部关闭后,然后在本节点部署openswitch+dpdk组件,给虚拟机添加vhost-user网卡,然后启动虚拟机。然而,无论采用上述哪种方式,迁移过程中业务停止时间都比较长,对业务影响很大。


技术实现思路

1、为了解决现有虚拟机网卡从vhost-net到vhost-user的迁移方法存在的上述问题,本专利技术提出了一种新的动态迁移虚拟机网卡从vhost-net到vhost-user的方法,本方法可有效解决冷迁移带来的业务停止时间长、对业务影响大的问题。

2、概括来说,本专利技术提供了一种热迁移方案,可实现虚拟机从使用vhost-net网卡迁移为使用vhost-user网卡,并且不影响虚拟机网络业务的运行,网络中断时间控制在毫秒级别,并且保证切换网卡后的网络性能与直接使用vhost-user网卡的虚拟机相当。本专利技术的中心思想是将使用vhost-net网卡的虚拟机动态迁移成使用vhost-user网卡的虚拟机。本方法涉及虚拟机状态的保存、网络配置的转换、vhost-user网卡的配置与启动等步骤。

3、具体地,本专利技术提供了一种动态迁移虚拟机网卡从vhost-net到vhost-user的方法,如图1所示,本方法包括下述步骤:

4、s1.迁移源端启动使用vhost-net协议网卡的虚拟机,配置vhost-net网卡tap设备,并将其添加到openswitch网桥上;

5、s2.部署openswitch+dpdk的目的端服务器,在目的端服务器的openswitch网桥上创建虚拟机使用的虚拟端口,该虚拟端口使用的mac地址为源端虚拟机使用的mac地址,其iface-id也与源端虚拟机保持一致;

6、s3.准备(迁移所需要的)目的端虚拟机xml文件,该xml文件中涉及的vhost-user网卡使用的mac地址为源端虚拟机使用的mac地址;

7、s4.执行以下虚拟机迁移命令:

8、virsh migrate--live--unsafe vm-name(vm-id)qemu+tcp://目的端服务器ip地址/system--xml./ovs.xml。

本文档来自技高网...

【技术保护点】

1.一种动态迁移虚拟机网卡从vhost-net到vhost-user的方法,其特征在于,所述方法包括:

2.根据权利要求1所述的动态迁移虚拟机网卡从vhost-net到vhost-user的方法,其特征在于,所述方法中虚拟机迁移目的端服务器是已经部署了OpenSwitch+DPDK的环境。

3.根据权利要求1所述的动态迁移虚拟机网卡从vhost-net到vhost-user的方法,其特征在于,步骤S2中创建的虚拟端口使用类型为dpdkvhostuserclient类型,虚拟机qemu进程作为server端,OpenSwitch作为client端。

4.根据权利要求1所述的动态迁移虚拟机网卡从vhost-net到vhost-user的方法,其特征在于,步骤S2中创建的虚拟端口使用类型为dpdkvhostuserclient类型,qemu创建unixdomain路径作为qemu进程与OpenSwitch进行vhost-user协商的通道。

5.根据权利要求4所述的动态迁移虚拟机网卡从vhost-net到vhost-user的方法,其特征在于,步骤S3中所述的xml文件中涉及的vhost-user网卡使用的socket路径与qemu创建的unix domain路径相同。

6.根据权利要求1所述的动态迁移虚拟机网卡从vhost-net到vhost-user的方法,其特征在于,所述方法中还包括:针对开源的libvirt组件,在迁移过程中libvirt对源端虚拟机的xml文件和目的端虚拟机的xml文件进行对比,如果发现两者不匹配则对相关的错误进行对应的修改。

7.根据权利要求6所述的动态迁移虚拟机网卡从vhost-net到vhost-user的方法,其特征在于,所述对相关的错误进行对应的修改包括进行mtu检测修改。

8.根据权利要求1所述的动态迁移虚拟机网卡从vhost-net到vhost-user的方法,其特征在于,所述方法在目的端虚拟机恢复网卡信息之前,预先将源端虚拟机网卡特性注入到当前qemu进程的网卡特性中。

9.一种动态迁移虚拟机网卡从vhost-net到vhost-user的装置,其特征在于,所述装置运行时实现权利要求1-8任一项所述的动态迁移虚拟机网卡从vhost-net到vhost-user的方法的步骤。

10.一种计算机可读存储介质,所述存储介质上存储有计算机程序,所述程序被处理器执行时实现权利要求1-8任一项所述的动态迁移虚拟机网卡从vhost-net到vhost-user的方法的步骤。

...

【技术特征摘要】

1.一种动态迁移虚拟机网卡从vhost-net到vhost-user的方法,其特征在于,所述方法包括:

2.根据权利要求1所述的动态迁移虚拟机网卡从vhost-net到vhost-user的方法,其特征在于,所述方法中虚拟机迁移目的端服务器是已经部署了openswitch+dpdk的环境。

3.根据权利要求1所述的动态迁移虚拟机网卡从vhost-net到vhost-user的方法,其特征在于,步骤s2中创建的虚拟端口使用类型为dpdkvhostuserclient类型,虚拟机qemu进程作为server端,openswitch作为client端。

4.根据权利要求1所述的动态迁移虚拟机网卡从vhost-net到vhost-user的方法,其特征在于,步骤s2中创建的虚拟端口使用类型为dpdkvhostuserclient类型,qemu创建unixdomain路径作为qemu进程与openswitch进行vhost-user协商的通道。

5.根据权利要求4所述的动态迁移虚拟机网卡从vhost-net到vhost-user的方法,其特征在于,步骤s3中所述的xml文件中涉及的vhost-user网卡使用的socket路径与qemu创建的unix domain路...

【专利技术属性】
技术研发人员:芦志朋罗海俊
申请(专利权)人:中电云计算技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1