技术领域
[0001] 本
发明涉及虚拟化技术领域,特别是涉及一种用于主机的kvm虚拟机网卡直通方法及其装置。
背景技术
[0002] 虚拟化,是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机(虚拟机)。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的
操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。其中,物理计算机称为主机,多台逻辑计算机为客户机。
[0003] 目前,虚拟机使用的网卡为虚拟网卡,是通过将主机上的物理网卡虚拟化后得到的,虚拟机不能够直接使用主机上的物理网卡,使得虚拟机的网卡性能较差,
信号传输的速度较慢。
[0004] 因此,如何提供一种能够提高虚拟机的网卡性能以及
信号传输速率的用于主机的kvm虚拟机网卡直通方法及其装置是本领域技术人员目前需要解决的问题。
发明内容
[0005] 本发明的目的是提供一种用于主机的kvm虚拟机网卡直通方法及其装置,使虚拟机能够直接使用主机的物理网卡,简化了信号传输过程,优化了虚拟机的性能。
[0006] 为解决上述技术问题,本发明提供了一种用于主机的kvm虚拟机网卡直通方法,包括:
[0007] 接收虚拟机发送的网卡直通
请求,确定所述虚拟机需要的网卡数量;
[0008] 控制主机的
硬件虚拟化功能以及Intel_iommu处于打开状态;
[0009] 依据所述虚拟机需要的网卡数量,从所述主机中物理网卡的PCI地址列表内选取相应个数的物理网卡,并获取所选取的若干个物理网卡的PCI地址;
[0010] 依据所述PCI地址,拼接所选取的若干个所述物理网卡的xml配置文件;
[0011] 调用主机与虚拟机之间的连接
接口,依据所述网卡直通请求内携带的所述虚拟机的标识符将所述xml配置文件发送至所述虚拟机内,供所述虚拟机使用所选取的若干个所述物理网卡。
[0012] 优选地,所述控制主机的硬件虚拟化功能以及Intel_iommu处于打开状态的过程具体为:
[0013] 检测所述主机是否打开了硬件虚拟化功能,若未打开,控制所述主机开启硬件虚拟化功能;
[0014] 检测所述Intel_iommu是否处于开启状态,若未开启,重新编辑并生成所述主机的配置文件,控制所述Intel_iommu开启。
[0015] 优选地,所述主机与虚拟机之间的连接接口具体为:
[0016] 安装于所述主机上的、libvirt C函数库提供的attachDevice接口。
[0017] 为解决上述技术问题,本发明还提供了一种用于主机的kvm虚拟机网卡直通装置,包括:
[0018] 请求接收模
块,用于接收虚拟机发送的网卡直通请求,确定所述虚拟机需要的网卡数量;
[0019] 功能开启模块,用于控制主机的硬件虚拟化功能以及Intel_iommu处于打开状态;
[0020] 选取模块,用于依据所述虚拟机需要的网卡数量,从所述主机中物理网卡的PCI地址列表内选取相应个数的物理网卡,并获取所选取的若干个物理网卡的PCI地址;
[0021] 拼接模块,用于依据所述PCI地址,拼接所选取的若干个所述物理网卡的xml配置文件;
[0022] 发送模块,用于调用主机与虚拟机之间的连接接口,依据所述网卡直通请求内携带的所述虚拟机的标识符将所述xml配置文件发送至所述虚拟机内,供所述虚拟机使用所选取的若干个所述物理网卡。
[0023] 优选地,所述功能开启模块具体包括:
[0024] 硬件检测单元,用于检测所述主机是否打开了硬件虚拟化功能,若未打开,控制所述主机开启硬件虚拟化功能;
[0025]
软件检测单元,用于检测所述Intel_iommu是否处于开启状态,若未开启,重新编辑并生成所述主机的配置文件,控制所述Intel_iommu开启。
[0026] 本发明提供了一种用于主机的kvm虚拟机网卡直通方法及其装置,主机接收虚拟机发送的网卡直通请求后,从自身物理网卡的PCI地址列表内选取虚拟机请求个数的物理网卡,依据选取的物理网卡的PCI地址拼接xml配置文件,然后将拼接后的xml配置文件发送至相应的虚拟机内,使得虚拟机的网卡列表内能够看到选取的若干个物理网卡,从而使虚拟机能够直接使用选取的这些物理网卡,直接使用物理网卡的方式与使用虚拟化后的虚拟网卡方式的相比,信号传输的过程简单,信号传输的速率更快,从而提高了虚拟机的网卡性能。
附图说明
[0027] 为了更清楚地说明本发明
实施例中的技术方案,下面将对
现有技术和实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0028] 图1为本发明提供的一种用于主机的kvm虚拟机网卡直通方法的过程的
流程图;
[0029] 图2为本发明提供的一种用于主机的kvm虚拟机网卡直通装置的结构示意图。
具体实施方式
[0030] 本发明的核心是提供一种用于主机的kvm虚拟机网卡直通方法及其装置,使虚拟机能够直接使用主机的物理网卡,简化了信号传输过程,优化了虚拟机的性能。
[0031] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0032] 本发明提供了一种用于主机的kvm虚拟机网卡直通方法,参见图1所示,图1为本发明提供的一种用于主机的kvm虚拟机网卡直通方法的过程的流程图;该方法包括:
[0033] 步骤s101:接收虚拟机发送的网卡直通请求,确定虚拟机需要的网卡数量;
[0034] 步骤s102:控制主机的硬件虚拟化功能以及Intel_iommu处于打开状态;
[0035] 步骤s103:依据虚拟机需要的网卡数量,从主机中物理网卡的PCI((Peripheral Component Interconnect,外部设备互连总线)地址列表内选取相应个数的物理网卡,并获取所选取的若干个物理网卡的PCI地址;
[0036] 步骤s104:依据PCI地址,拼接所选取的若干个物理网卡的xml配置文件;
[0037] 具体实施时,通过lspci|grep Ethernet列出主机中物理网卡的PCI地址列表。其中,每个物理网卡的xml配置文件的具体配置内容如下:
[0038]
[0039] 以上配置中通过物理网卡的PCI地址来唯一标识一个物理网卡,也就是
,其中domain、bus、slot、function的具体取值即为物理网卡的PCI地址;例如选中的物理网卡PCI地址为04:00:3那么对应的xml配置文件为:
[0040]
[0041] 步骤s105:调用主机与虚拟机之间的连接接口,依据网卡直通请求内携带的虚拟机的标识符将xml配置文件发送至虚拟机内,供虚拟机使用所选取的若干个物理网卡。
[0042] 其中,步骤s102的过程具体为:
[0043] 检测主机是否打开了硬件虚拟化功能,若未打开,控制主机开启硬件虚拟化功能;
[0044] 检测Intel_iommu是否处于开启状态,若未开启,重新编辑并生成主机的配置文件,控制Intel_iommu开启。
[0045] 需要注意的是,上述两个步骤的先后顺序不作限定,两者也可同时并列进行,本发明对此不作限定。
[0046] 具体实施时,通过cat/proc/cmdline检Intel_iommu是否开启,若未开启,重新编辑主机配置文件/etc/default/grub,然后执行grub2-mkconfig–o/boot/grub2/grub.cfg命令重新生成配置文件,该配置文件在重启主机后生效。
[0047] 作为优选地,主机与虚拟机之间的连接接口具体为:
[0048] 安装于主机上的、libvirt C函数库提供的attachDevice接口。
[0049] 可以理解的是,libvirt是一套免费、开源的支持Linux下主流虚拟化工具的C函数库,其旨在为包括Xen在内的各种虚拟化工具提供一套方便、可靠的编程接口。
[0050] 本发明提供了一种用于主机的kvm虚拟机网卡直通方法,主机接收虚拟机发送的网卡直通请求后,从自身物理网卡的PCI地址列表内选取虚拟机请求个数的物理网卡,依据选取的物理网卡的PCI地址拼接xml配置文件,然后将拼接后的xml配置文件发送至相应的虚拟机内,使得虚拟机的网卡列表内能够看到选取的若干个物理网卡,从而使虚拟机能够直接使用选取的这些物理网卡,直接使用物理网卡的方式与使用虚拟化后的虚拟网卡方式的相比,信号传输的过程简单,信号传输的速率更快,从而提高了虚拟机的网卡性能。
[0051] 本发明还提供了一种用于主机的kvm虚拟机网卡直通装置,参见图2所示,图2为本发明提供的一种用于主机的kvm虚拟机网卡直通装置的结构示意图。该装置包括:
[0052] 请求接收模块1,用于接收虚拟机发送的网卡直通请求,确定虚拟机需要的网卡数量;
[0053] 功能开启模块2,用于控制主机的硬件虚拟化功能以及Intel_iommu处于打开状态;
[0054] 选取模块3,用于依据虚拟机需要的网卡数量,从主机中物理网卡的PCI地址列表内选取相应个数的物理网卡,并获取所选取的若干个物理网卡的PCI地址;
[0055] 拼接模块4,用于依据PCI地址,拼接所选取的若干个物理网卡的xml配置文件;
[0056] 发送模块5,用于调用主机与虚拟机之间的连接接口,依据网卡直通请求内携带的虚拟机的标识符将xml配置文件发送至虚拟机内,供虚拟机使用所选取的若干个物理网卡。
[0057] 其中,功能开启模块2具体包括:
[0058] 硬件检测单元,用于检测主机是否打开了硬件虚拟化功能,若未打开,控制主机开启硬件虚拟化功能;
[0059] 软件检测单元,用于检测Intel_iommu是否处于开启状态,若未开启,重新编辑并生成主机的配置文件,控制Intel_iommu开启。
[0060] 本发明提供了一种用于主机的kvm虚拟机网卡直通装置,主机接收虚拟机发送的网卡直通请求后,从自身物理网卡的PCI地址列表内选取虚拟机请求个数的物理网卡,依据选取的物理网卡的PCI地址拼接xml配置文件,然后将拼接后的xml配置文件发送至相应的虚拟机内,使得虚拟机的网卡列表内能够看到选取的若干个物理网卡,从而使虚拟机能够直接使用选取的这些物理网卡,直接使用物理网卡的方式与使用虚拟化后的虚拟网卡方式的相比,信号传输的过程简单,信号传输的速率更快,从而提高了虚拟机的网卡性能。
[0061] 需要说明的是,在本
说明书中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0062] 对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种
修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其他实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。