一种网卡虚拟化特性的测试方法及装置与流程

文档序号:16245327发布日期:2018-12-11 23:31阅读:243来源:国知局
一种网卡虚拟化特性的测试方法及装置与流程

本申请涉及计算机虚拟化技术领域,尤其涉及x86平台下对设备输入输出虚拟化特性的测试方法及装置。

背景技术

随着虚拟化技术的不断发展,cpu虚拟化与内存虚拟化技术已日趋成熟,而输入输出(input/output,i/o)虚拟化技术的发展却相对滞后,影响了虚拟机的整体性能。现实中外设资源是有限的,为了满足多个虚拟机对外设的访问需求,虚拟机监视器(virtualmachine,vmm)必须通过i/o虚拟化的方式来复用有限的外设资源,目前一些常见的vmm系统针对i/o设备虚拟化分别采用了不同的设计思路,比较典型的有:设备仿真、本虚拟化及硬件辅助。intel和amd在2005年分别推出了全新的硬件辅助的虚拟化技术,2007年,intel公司推出了硬件辅助的i/o虚拟化技术(virtualizationtechnologyfordirectedi/o,vt-d),vt-d技术在不需要修改虚拟机操作系统的情况下将设备直接分配给虚拟机,在性能方面得到很大提升,但在这种方式下一个物理设备只能被一个虚拟机独占,因此对系统的性能和可拓展性有一定的限制,针对这一问题,外围部件互连专业组(peripheralcomponentinterconnectspecialinterestgroup,pci-sig)提出了输入输出虚拟化(i/ovirtualization,iov)规范,旨在定义一个可分割共享i/o设备的规范,其中包括单根输入输出虚拟化(singlerootiov,sr-iov)。

sr-iov通过设备支持的方式,使得一个物理设备能够提供多个虚拟功能单元,每个虚拟功能单元都可以作为一个轻型的设备供虚拟机使用,这样一个物理设备就可以同时被分配给多个虚拟机,解决因设备数量限制给虚拟化系统带来的可扩展性差的问题。

目前,关于网卡sr-iov特性的测试方法还处于空白状态,使得技术人员在进行网卡sr-iov特性测试时需要花费大量的时间。



技术实现要素:

本申请实施例提供了一种网卡虚拟化特性的测试方法及装置,用于对网卡进行虚拟化特性的测试,以验证网卡对虚拟化技术的支持。

第一方面,本申请实施例提供了一种网卡虚拟化特性的测试方法,该方法应用于物理机,该物理机常用于服务器,该物理机包括bios(basicinputoutputsystem,基本输入输出系统)固件和支持sr-iov的网卡,该bios具有虚拟化功能的选项,包括开启sr-iov功能的选项,在intel平台下,该选项还应包括开启vt(intelvirtualtechnology,intel虚拟化技术)功能的选项,在amd平台下,该选项还应包括开启svmmode(securevirtualmachinemode,安全虚拟机模式)功能的选项,该虚拟化功能用于支持虚拟化服务,该虚拟化服务包括cpu(centralprocessingunit,中央处理器)虚拟化服务,i/o(input/output,输入输出)虚拟化服务,该网卡用于为该物理机提供网络功能,同时,该网卡利用虚拟化技术产生的虚拟网口能够为虚拟机提供网络功能,该物理机上一般运行有至少一个虚拟机,该虚拟机常用于虚拟服务器对客户端提供服务器的功能;本申请实施例的方法包括:

为该虚拟机分配虚拟网口,虚拟网口由支持sr-iov的pcie设备,此处为网卡虚拟化产生,虚拟机通过虚拟网口进行网络数据收发;

测试该虚拟机与物理客户机及该物理机之间的网络连通性,该物理客户机与该物理机一般通过物理方式进行网络连接,即通过网线进行链接,该网线可以是同轴电缆,也可以是光纤;

若该虚拟机与物理客户机,该虚拟机与该物理机,该物理客户机与该物理机之间都能够进行网络通信,则可以测试出该网卡为支持sr-iov功能的网卡。

在本申请实施例中,通过测试虚拟机与物理机,物理客户机与物理机之间的网络连通性,来证实网口虚拟化成功,物理机与虚拟机以共享的方式进行网卡的访问,以此来测试出该网卡具有sr-iov功能所表现出的特性。

根据第一方面,本申请实施例第一方面的第一种实施方式中,该物理机还应包括内核,在为所述虚拟机分配虚拟网口之前,所述方法还包括:

物理机修改系统内核的启动参数,该系统指物理机的操作系统,该启动参数用于对物理机进行初始化设置,使得物理机可以将设备访问的虚拟地址转化为物理地址。

在本申请实施例中,通过修改系统内核启动参数,使得物理机能够保存相关启动参数信息,在下次物理机重新开机时能够应用这些启动参数信息。

根据第一方面的第一种实施方式,本申请实施例第一方面的第二种实施方式中,修改内核启动参数包括:

为了将设备访问的虚拟地址转化为物理地址,根据不同的处理器平台,需要对内核启动参数进行不同的修改;

对于intel的处理器,应将intel_iommu=on添加到物理机系统内核启动参数;

对于amd的处理器,应将amd_iommu=on添加到物理机系统内核启动参数;

在本申请实施例中,针对不同的处理器平台进行不同的内核启动参数修改操作,增加了本申请实施例的灵活性。

根据第一方面,本申请实施例第一方面的第三种实施方式中,在为所述虚拟机分配虚拟网口之前,所述方法还包括:

物理机修改系统配置文件来决定创建虚拟网口的数量;

为创建的虚拟网口分配具有唯一标识的物理地址;

在本申请实施例中,在虚拟机创建前生成虚拟网口,使得在创建虚拟机时能够直接为虚拟机配置虚拟网口。

根据第一方面,本申请实施例第一方面的第四种实施方式中,为所述虚拟机分配虚拟网口包括:

为虚拟机的虚拟网口配置驱动,使得该虚拟网口能够在该虚拟机上正常工作;

确定虚拟网口成功配置到该虚拟机上;

在本请实施例中,为虚拟网口配置驱动,使得虚拟网口正常工作,为本申请实施例后续工作做准备。

第二方面,本申请实施例提供了一种物理机,该物理机包括固件和网卡,该固件具有开机虚拟化功能的选项,该虚拟化功能用于支持虚拟化服务,该网卡用于为该物理机提供网络功能,该物理机上运行有虚拟机,该物理机执行如前述第一方面中所述的内容,该物理机包括:

第一分配单元,用于为该虚拟机分配虚拟网口,虚拟网口由支持sr-iov的pcie设备,此处为网卡虚拟化产生,虚拟机通过虚拟网口进行网络数据收发;

测试单元,用于测试该虚拟机与物理客户机及该物理机之间的网络连通性,该物理客户机与该物理机一般通过物理方式进行网络连接,即通过网线进行链接,该网线可以是同轴电缆,也可以是光纤;

确定单元,用于根据该虚拟机与该物理客户机及该物理机之间网络连通正常,确定网卡为支持单根i/o虚拟化sr-iov功能的网卡。

在本申请实施例中,通过物理机创建虚拟网口,配置虚拟机,测试虚拟机与物理机,物理客户机与物理机之间的网络连通性,来证实网口虚拟化成功,物理机与虚拟机已共享的方式进行网卡的访问,以此来测试出该网卡具有sr-iov功能所表现出的特性。

根据第二方面,本申请实施例第二方面的第一种实施方式中,该物理机还包括:

第一修改单元,用于修改系统内核的启动参数,该系统指物理机的操作系统,该启动参数用于对物理机进行初始化设置,使得物理机可以将设备访问的虚拟地址转化为物理地址;

在本申请实施例中,修改单元通过修改系统内核启动参数,使得物理机能够保存相关启动参数信息,在下次物理机重新开机时能够应用这些启动参数信息。

根据第二方面的第一种实施方式,本申请实施例第二方面的第二种实施方式中,第一修改单元包括:

确定模块,用于确定不同的处理器平台,如intel处理器或amd处理器;

添加模块,当所述处理器为intel处理器时,将intel_iommu=on附加到所述物理机内核启动参数;

当所述处理器为amd处理器时,将amd_iommu=on附加到所述物理机内核启动参数;

在本申请实施例中,第一修改单元能够根据不同的处理器进行不同的内核启动参数修改操作,增加本申请实施例的可实现性。

根据第二方面,本申请实施例第二方面的第三种实施方式中,该物理机还包括:

第二修改单元,用于修改系统配置文件,所述系统配置文件位于所述物理机,所述系统配置文件用于确定生成所述虚拟网口的数量;

第二分配单元,用于为所述虚拟网口分配唯一的硬件地址。

在本申请实施例中,至少创建一个虚拟网口。

根据第二方面,本申请实施例第二方面的第四种实施方式中,第一分配单元包括:

配置模块,用于为虚拟机的虚拟网口配置驱动,使得该虚拟网口能够在该虚拟机上正常工作;

确定模块,用于确定所述虚拟机网口驱动成功加载到所述虚拟机。

在本申请实施例中,配置模块为虚拟网口配置驱动,使得虚拟网口正常工作,为本申请实施例后续工作做准备。

第三方面,本申请实施例提供了一种物理机,所述宿主机包括:处理器和存储器,所述存储器中存储有前述第一方面中所述网卡虚拟化特性的测试方法的指令,当其在计算机上运行时,使得计算机执行前述第一方面中所述的网卡虚拟化特性的测试方法的步骤。

第四方面,本申请实施例提供了一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行如第一方面所述的方法。

本申请实施例通过物理机的设置、虚拟机的搭建、网卡的配置以及连接性测试等过程,实现了针对网卡sr-iov特性的测试,使得技术人员能够根据本测试方法快速地实现对网卡sr-iov特性的测试。

附图说明

图1为本申请实施例提供的虚拟化示意图;

图2为本申请实施例提供的网卡虚拟化特性的测试方法的一种流程示意图;

图3为本申请实施例提供的物理机的一个实施例示意图;

图4为本申请实施例提供的物理机的另一个实施例示意图。

具体实施方式

本申请实施例提供了一种网卡虚拟化特性的测试方法,用于对网卡进行虚拟化特性的测试,以验证网卡对虚拟化技术的支持,本申请实施例还提供了物理机及计算机可读存储介质。以下分别进行详细说明。

在计算机科学中,虚拟化技术是一种对计算机硬件资源进行抽象和模拟的技术,一般所说的计算机硬件资源主要包括计算资源、存储资源和通信资源。对于运行于虚拟机之上的软件来说,虚拟机和真实机器没有区别。图1显示了一个虚拟化环境。在一台物理机器,即宿主机上,使用虚拟化技术创建了三台虚拟机,这三台虚拟机分别运行着windows,linux和unix。

虚拟化技术包括cpu虚拟化、内存虚拟化和i/o虚拟化,在虚拟化技术三个组成部分中,cpu虚拟化和内存虚拟化在硬件的支持下,已经能获得接近物理机器的执行效率,而i/o虚拟化由于虚拟化所带来的巨大额外开销,是如今虚拟化环境的重要性能瓶颈之一。

sr-iov标准允许在虚拟机之间高效共享pcie设备,由于它是在硬件中实现的,可以获得能够与本机性能媲美的i/o性能,sr-iov规范定义了新的标准,创建的设备可以允许将虚拟机直接连接到i/o设备,单个i/o设备可由多个虚拟机共享,共享的设备将提供专用的资源,并且还使用共享的通用资源,启动了sr-iov并且具有适当的硬件和操作系统支持的pcie设备,例如网卡,可以显示为多个单独的物理设备,每个设备都具有自己的pcie配置空间。

下面对本申请实施例中网卡虚拟化特性的测试方法进行详细描述,请参阅图2,本申请实施例提供的一种网卡虚拟化特性的测试方法实施例包括:

201、创建虚拟网口;

为物理机配置网卡相应的驱动,以intel万兆网卡x722为例,其驱动可以从intel官网上获取,在配置网卡驱动后,通过修改rhel7.2的配置文件sriov_numvfs来决定创建虚拟网口的数量,如linux命令#echo4>/sys/bus/pci/device/0000:1c:00.0(x722pciaddress)/srior_numvfs创建了4个虚拟网口,通过命令#lspci|grep–iethernet来确认虚拟网口被成功创建;

在创建虚拟网口时,驱动程序会为每个虚拟网口分配一个随机的mac地址,通过使用命令#iplinksetenp28s0f0vf0macaa:bb:cc:dd:ee:ff为虚拟网口设置指定的mac地址,防止mac地址重复从而导致虚拟网口无法ping通,通过命令#iplinkshowenp28s0f0确认所有创建的虚拟网口的mac地址都被成功分配;

在本申请实施例中,可以使用命令#lsmod|grep–ii40e查看驱动是否加载成功,网卡驱动加载期间所有的警告、错误和相关信息都会被记录在/var/log/messages文件中,通过检查文件来确定驱动在没有警告或错误的情况下被成功加载;

在本申请实施例中,物理机应该包括bios固件和网卡,在为虚拟机分配虚拟网口之前,bios中的vt、vt-d、sr-iov功能选项应保持开启状态,为了描述方便,在本实施例以及后续实施例中,在硬件方面,以支持intel硬件辅助直接i/o虚拟化技术(virtualizationtechnologyfordirectedi/o,vt-d)和sr-iov特性的服务器平台进行说明,在软件方面,本文的物理机操作系统及虚拟机操作系统以linux为例,具体为rhel7.2版本,使用root用户身份登录到rhel7.2系统中,因为rhel7.2默认不开启输入输出内存管理单元(input/outputmemorymanagementunit,iommu),在步骤202分配虚拟网口的时候,必须iommu的支持,因此需要在rhel7.2内核启动参数中添加intel_iommu=on,并通过重启物理机使得iommu生效,在重启物理机使得iommu生效后,通过#dmesg|grep–iiommu命令查看iommu的状态。

202、为虚拟机分配虚拟网口;

在为虚拟机分配虚拟网口之前,需要创建至少一个虚拟机,利用rhel7.2的virt-manager可以创建虚拟机,在本申请实施例中,为方便表述,在此处创建一个系统为rhel7.2的虚拟机,并为该虚拟机的添加一个或多个虚拟网口,具体可以为在虚拟机监视器界面对已创建的rhel7.2虚拟机进行编辑;

在本申请实施例中,在虚拟机开机后,需要为虚拟机配置i40evf驱动,以使得虚拟网口正常工作,在配置驱动后,可以使用命令lspci来查看分配的虚拟网口的bus地址是否出现在列表中,若出现,则驱动加载成功。

203、测试网络连通性;

测试物理机、虚拟机以及另一台物理客户机之间网络是否互通,具体地,利用网线通过交换机连接物理机的物理网口和另一台物理客户机的物理网口,若物理机与物理客户机、物理机与虚拟机、虚拟机与物理客户机之间能互相ping通,则说明网卡为支持sr-iov功能的网卡;

在本申请实施例中,在进行测试之前,使用lsmod命令确保虚拟网口的驱动被正确加载,使用ifconfig命令查看虚拟网口设备,使用ping命令来测试网络的连通性。

上面对本申请实施例中网卡虚拟化特性的测试方法进行了介绍,下面对本申请实施例中的装置进行介绍,如图3所示,本实施例中物理机300的一个实施例包括:

第一分配单元301,用于为该虚拟机分配虚拟网口,虚拟网口由支持sr-iov的pcie设备,此处为网卡虚拟化产生,虚拟机通过虚拟网口进行网络数据收发;

测试单元302,用于测试该虚拟机与物理客户机及该物理机之间的网络连通性,该物理客户机与该物理机一般通过物理方式进行网络连接,即通过网线进行链接,该网线可以是同轴电缆,也可以是光纤;

确定单元303,用于根据该虚拟机与该物理客户机及该物理机之间网络连通正常,确定网卡为支持单根i/o虚拟化sr-iov功能的网卡。

第一修改单元304,用于修改系统内核的启动参数,该系统指物理机的操作系统,该启动参数用于对物理机进行初始化设置,使得物理机可以将设备访问的虚拟地址转化为物理地址;

本实施例中,第一修改单元304包括:

确定模块3040,用于确定不同的处理器平台,如intel处理器或amd处理器;

添加模块3041,当所述处理器为intel处理器时,将intel_iommu=on附加到所述物理机内核启动参数;

当所述处理器为amd处理器时,将amd_iommu=on附加到所述物理机内核启动参数;

第二修改单元305,用于修改系统配置文件,所述系统配置文件位于所述物理机,所述系统配置文件用于确定生成所述虚拟网口的数量;

第二分配单元306,用于为所述虚拟网口分配唯一的硬件地址。

本实施例中,第一分配单元301包括:

配置模块3010,用于为虚拟机的虚拟网口配置驱动,使得该虚拟网口能够在该虚拟机上正常工作;

确定模块3011,用于确定所述虚拟机网口驱动成功加载到所述虚拟机。

本申请实施例中,第一修改单元可以根据处理器的不同,添加不同的内核启动参数,提高了方案的灵活性。

图4是本申请实施例提供的物理机400的结构示意图。所述物理机400包括处理器401、存储器402和输入输出(i/o)接口403,存储器402可以包括只读存储器和随机存取存储器,并向处理器401提供操作指令和数据。存储器402的一部分还可以包括非易失性随机存取存储器(nvram)。

处理器401控制物理机400的操作,处理器401还可以称为cpu。存储器402可以包括只读存储器和随机4存取存储器,并向处理器401提供指令和数据。存储器402的一部分还可以包括非易失性随机存取存储器(nvram)。具体的应用中物理机400的各个组件通过总线系统404耦合在一起,其中总线系统404除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线系统404。

上述本申请实施例揭示的方法可以应用于处理器401中,或者由处理器401实现。处理器401可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器401中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器401可以是通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现成可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器402,处理器401读取存储器402中的信息,结合其硬件完成上述方法的步骤。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1