首页 > 其他分享 >37 KVM管理设备-管理设备直通

37 KVM管理设备-管理设备直通

时间:2023-06-02 18:37:14浏览次数:34  
标签:直通 VF rev 虚拟机 KVM 37 controller Ethernet 设备

37 KVM管理设备-管理设备直通

设备直通技术是指将host上的物理设备直接呈现给一台虚拟机,虚拟机可以直接访问该设备资源的一种使用方式。使用设备直通的方式可以让虚拟机获得良好的I/O性能。

当前设备直通使用的是VFIO方式,按照直通的设备类型可以分为PCI直通和SR-IOV直通两种类型。

37.1 PCI直通

PCI直通是指将host上的物理PCI设备直接呈现给一台虚拟机,供虚拟机直接访问的一种使用方式。PCI直通使用了vfio设备直通方式,为虚拟机配置PCI直通的xml配置如下:

<hostdev mode='subsystem' type='pci' managed='yes'>   
    <driver name='vfio'/> 
    <source>
        <address domain='0x0000' bus='0x04' slot='0x10' function='0x01'/>
    </source>
    <rom bar='off'/>
    <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</hostdev>

表 1 PCI直通设备配置项

参数名 说明 取值
hostdev.source.address.domain host OS上的PCI设备的domain号。 >=0
hostdev.source.address.bus host OS上的PCI设备bus号。 >=1
hostdev.source.address.slot host OS上的PCI设备的device号。 >=0
hostdev.source.address.function host OS上的PCI设备的function号。 >=0
hostdev.driver.name 可选配置项,指定PCI直通的后端驱动。 vfio(默认配置项)
hostdev.rom 直通设备的ROM是否呈现给虚拟机。 可以配置为“on/off”,默认为“on”。on:表示直通设备的ROM呈现给虚拟机,例如:直通网卡虚拟机需要从该网卡的PXE启动时,可以将该选项配置为“on”,HBA卡直通虚拟机需要从ROM中启动时可以将该选项配置为“on”。off:表示直通设备的ROM不呈现给虚拟机。
hostdev.address type PCI设备呈现的Guest内bdf号。 0x03-0x1e说明:domain为域信息,bus为总线号,slot为插槽号,function为功能除了slot插槽号,这里其余均默认为0。第一个slot插槽号0x00被系统占用,第二个slot号0x01被IDE控制器和USB控制器占用,第三个slot号0x02被video占用。最后一个slot号0x1f被pvchannel占用。

img 说明: VFIO直通方式的最小直通单位是iommu_group,host根据硬件上的ACS位,来划分iommu_group。同一个iommu_group中的设备只允许直通给同一台虚拟机(一个PCI设备上的若干个function,如果属于同一个iommu_group,只允许直通给一个虚拟机使用)。

37.2 SR-IOV直通

37.2.1 概述

SR-IOV(Single Root I/O Virtualizaiton)是一种基于硬件的虚拟化解决方案,通过SR-IOV技术可以将一个PF(Physical Function)虚拟成多个VF(Virtual Function),每个VF都可以单独被直通给一个虚拟机,极大地提升了硬件资源利用率和虚拟机的I/O性能。一种典型的应用场景就是网卡SR-IOV设备直通,利用SR-IOV技术可以将一个物理网卡(PF)虚拟成多个VF网卡,再把VF直通给虚拟机使用。

img 说明:

  • SR-IOV需要物理硬件支持,使用SR-IOV前请确保要直通的硬件设备支持该能力,并且Host侧的设备驱动程序工作在SR-IOV模式下。
  • 查询网卡具体型号的办法如下: 例如下述回显,第一列为网卡的PCI号,19e5:1822为网卡的厂商号设备号。
# lspci | grep Ether  
05:00.0 Ethernet controller: Device 19e5:1822 (rev 45)  
07:00.0 Ethernet controller: Device 19e5:1822 (rev 45)  
09:00.0 Ethernet controller: Device 19e5:1822 (rev 45)  
0b:00.0 Ethernet controller: Device 19e5:1822 (rev 45)  
81:00.0 Ethernet controller: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection (rev 01)  
81:00.1 Ethernet controller: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection (rev 01)  

37.2.2 操作方法

请使用root用户按照如下操作步骤配置SR-IOV直通网卡:

37.2.2.1 开启网卡的SR-IOV模式
  1. 请确保Guest OS有网卡供应商提供的VF驱动支持,否则Guest OS内VF无法正常工作。

  2. 在host OS的BIOS中开启SMMU/IOMMU的支持。不同厂家服务器的开启方式可能不同,请参考各服务器的帮助文档。

  3. HOST驱动配置,开启SR-IOV的VF模式。这里以Hi1822网卡为例,开启16个VF。

    # echo 16 > /sys/class/net/ethX/device/sriov_numvfs
    
37.2.2.2 获取PF和VF的PCI BDF信息
  1. 获取当前单板上的网卡资源列表,参考命令如下:

    # lspci | grep Eth
    03:00.0 Ethernet controller: Huawei Technologies Co., Ltd. Hi1822 Family (4*25GE) (rev 45)
    04:00.0 Ethernet controller: Huawei Technologies Co., Ltd. Hi1822 Family (4*25GE) (rev 45)
    05:00.0 Ethernet controller: Huawei Technologies Co., Ltd. Hi1822 Family (4*25GE) (rev 45)
    06:00.0 Ethernet controller: Huawei Technologies Co., Ltd. Hi1822 Family (4*25GE) (rev 45)
    7d:00.0 Ethernet controller: Huawei Technologies Co., Ltd. Device a222 (rev 20)
    7d:00.1 Ethernet controller: Huawei Technologies Co., Ltd. Device a222 (rev 20)
    7d:00.2 Ethernet controller: Huawei Technologies Co., Ltd. Device a221 (rev 20)
    7d:00.3 Ethernet controller: Huawei Technologies Co., Ltd. Device a221 (rev 20)
    
  2. 查看VF的PCI BDF信息,参考命令如下:

    # lspci | grep "Virtual Function"
    03:00.1 Ethernet controller: Huawei Technologies Co., Ltd. Hi1822 Family Virtual Function (rev 45)
    03:00.2 Ethernet controller: Huawei Technologies Co., Ltd. Hi1822 Family Virtual Function (rev 45)
    03:00.3 Ethernet controller: Huawei Technologies Co., Ltd. Hi1822 Family Virtual Function (rev 45)
    03:00.4 Ethernet controller: Huawei Technologies Co., Ltd. Hi1822 Family Virtual Function (rev 45)
    03:00.5 Ethernet controller: Huawei Technologies Co., Ltd. Hi1822 Family Virtual Function (rev 45)
    03:00.6 Ethernet controller: Huawei Technologies Co., Ltd. Hi1822 Family Virtual Function (rev 45)
    03:00.7 Ethernet controller: Huawei Technologies Co., Ltd. Hi1822 Family Virtual Function (rev 45)
    03:01.0 Ethernet controller: Huawei Technologies Co., Ltd. Hi1822 Family Virtual Function (rev 45)
    03:01.1 Ethernet controller: Huawei Technologies Co., Ltd. Hi1822 Family Virtual Function (rev 45)
    03:01.2 Ethernet controller: Huawei Technologies Co., Ltd. Hi1822 Family Virtual Function (rev 45)
    
  3. 选择一个可用的VF,根据其BDF信息将其配置写入虚拟机的配置文件中。以03:00.1设备为例,对应的bus号是03,slot号是00,function号是1。

37.2.2.3 识别和管理PF/VF对应关系
  1. 识别PF对应的VF关系,以PF 03.00.0为例:

    # ls -l /sys/bus/pci/devices/0000\:03\:00.0/
    

    可显示如下的软链接信息,根据信息可以获得其对应的VF编号(virtfnX)和PCI BDF号。

  2. 识别VF对应的PF关系,以VF 03:00.1为例:

    # ls -l /sys/bus/pci/devices/0000\:03\:00.1/
    

    可显示下述软连接信息,即可获得其对应PF的PCI BDF号。

    lrwxrwxrwx 1 root root       0 Mar 28 22:44 physfn -> ../0000:03:00.0
    
  3. 获知PF/VF对应的网卡设备名称,例如:

    # ls /sys/bus/pci/devices/0000:03:00.0/net
    eth0
    
  4. 设置VF的mac/vlan/qos信息,确保VF在直通之前处于UP状态。以VF 03:00.1为例,假设PF为eth0,VF编号为0。

    # ip link set eth0 vf 0 mac 90:E2:BA:21:XX:XX    # 设置mac地址
    # ifconfig eth0 up
    # ip link set eth0 vf 0 rate 100                 # 设置VF出口速率,单位Mbps
    # ip link show eth0                              # 查看mac/vlan/qos信息,确认设置成功
    
37.2.2.4 挂载SR-IOV网卡到虚拟机中

创建虚拟机时,在虚拟机配置文件中增加SR-IOV直通的配置项。

<interface type='hostdev' managed='yes'> 
    <mac address='fa:16:3e:0a:xx:xx'/>
    <source> 
        <address type='pci' domain='0x0000' bus='0x06' slot='0x11' function='0x6'/>
    </source> 
    <vlan>
        <tag id='1'/>
    </vlan>
</interface>

表 1 SR-IOV配置选项说明

参数名 说明 取值
hostdev.managed libvirt处理PCI设备的两种模式。 no:默认配置,表示直通设备由用户自行管理。yes:表示直通设备由libvirt管理。SR-IOV直通场景需要配置为yes。
hostdev.source.address.bus host OS上的PCI设备bus号。 >=1
hostdev.source.address.slot host OS上的PCI设备device号。 >=0
hostdev.source.address.function host OS上的PCI设备function号。 >=0

img 说明: 关闭SR-IOV功能。 在虚拟机使用完毕后(虚拟机关机,所有的VF均没有在使用中的时候),若要关闭SR-IOV功能。执行操作如下: 这里以Hi1822网卡(eth0对应PF的网口名称)为例:

# echo 0 > /sys/class/net/eth0/device/sriov_numvfs  

37.2.3 HPRE加速器SR-IOV直通

加速器引擎是TaiShan 200服务器基于Kunpeng 920处理器提供的硬件加速解决方案。HPRE加速器用于加速SSL/TLS应用,可以显著降低处理器消耗,提高处理器效率。 在鲲鹏服务器上,需要把主机Host上的HPRE加速器的VF直通给虚拟机,供虚拟机内部业务使用。

表 1 HPRE加速器说明

项目 说明
设备名称 Hi1620 on-chip RSA/DH security algorithm accelerator (HPRE engine)
功能 模幂运算、RSA密钥对运算、DH计算、部分大数辅助运算(模幂、模乘、取模、乘法、模逆、素数测试、互质测试)
VendorID 0x19E5
PF DeviceID 0xA258
VF DeviceID 0xA259
最大VF数量 一个HPRE PF最多支持创建63个VF

img 说明: 当虚拟机正在使用VF设备时,不允许卸载Host上的驱动,加速器不支持热插拔。 VF操作(VFNUMS为0表示关闭VF,hpre_num用来标识具体的加速器设备):

# echo $VFNUMS > /sys/class/uacce/hisi_hpre-$hpre_num/device/sriov_numvfs

标签:直通,VF,rev,虚拟机,KVM,37,controller,Ethernet,设备
From: https://blog.51cto.com/u_237826/6404529

相关文章

  • ACM暑假训练 中石油oj 3737: 礼物(矩阵快速幂)
    3737:礼物时间限制:5Sec  内存限制:512MB提交:46  解决:12[提交][状态][讨论版]题目描述热情好客的小猴请森林中的朋友们吃饭,他的朋友被编号为1∼N,每个到来的朋友都会带给他一些礼物:香蕉。其中,第一个朋友会带给他1个香蕉,之后,每一个朋友到来以后,都会带给他之前所有......
  • upc 8378: Floating-Point Numbers(模拟浮点数运算)
    8378:Floating-PointNumbers时间限制:1Sec  内存限制:128MB提交:10  解决:4[提交][状态][讨论版][命题人:admin]题目描述Inthisproblem,weconsiderfloating-pointnumberformats,datarepresentationformatstoapproximaterealnumbersoncomputers.S......
  • 字符设备驱动-7.异步通知
    1.异步通知概述前面讲到APP读取按键方式里面包含4种方式:1.查询方式,2.休眠唤醒,3,poll机制的休眠唤醒,4.异步通知什么是异步通知?你去买奶茶:◼你在旁边等着,眼睛盯着店员,生怕别人插队,他一做好你就知道:你是主动等待他做好,这叫“同步”。◼你付钱后就去玩手机了,店员做好后他会打电......
  • 项目访问的端口是8018,但是真实接口地址是19080,导致访问这个地址http://9.6.237.104:80
    这个问题是由于您的前端页面与后端应用程序的接口地址不在同一个域名下所引起的跨域请求。在浏览器中,出于安全考虑,通常不允许JavaScript从一个域名下访问另一个不同域名下的资源,这种行为被称为跨域请求(Cross-OriginResourceSharing,CORS)。有一些方法可以解决跨域问题,下面是......
  • iostat相关参数说明——await:平均每次设备I/O操作的等待时间 (毫秒),如果%util接近 100
    iostat是I/Ostatistics(输入/输出统计)的缩写,iostat工具将对系统的磁盘操作活动进行监视。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。同vmstat一样,iostat也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析。iostat的语法如下:iostat[......
  • EasyCVR使用SDK接入,设备全部离线,但是SDK DEMO接入正常是什么原因?
    EasyCVR视频融合平台基于云边端一体化架构,具有强大的数据接入、处理及分发能力,平台支持多协议、多类型的设备接入,包括主流标准协议国标GB28181、RTSP/Onvif、RTMP等,以及厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。有用户反馈,EasyCVR平台中,使用SDK接入的设备显示......
  • AI视频融合平台EasyCVR接入国标GB28181设备,视频无法播放是什么原因?
    EasyCVR可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等,能对外分发RTSP、RTMP、FLV、HLS、WebRTC等格式的视频流。有用户反馈,将设备通过国标GB28181协议接入EasyCVR......
  • EasyCVR使用SDK接入,设备全部离线,但是SDK DEMO接入正常是什么原因?
    EasyCVR视频融合平台基于云边端一体化架构,具有强大的数据接入、处理及分发能力,平台支持多协议、多类型的设备接入,包括主流标准协议国标GB28181、RTSP/Onvif、RTMP等,以及厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。有用户反馈,EasyCVR平台中,使用SDK接入的设备显示全......
  • X86架构对KVM支持
     CHAPTER23:INTRODUCTIONTOVIRTUALMACHINEEXTENSIONSCHAPTER24:VIRTUALMACHINECONTROLSTRUCTURESCHAPTER25:VMXNON-ROOTOPERATIONCHAPTER26:VMENTRIESCHAPTER27:VMEXITSCHAPTER28:VMXSUPPORTFORADDRESSTRANSLATIONCHAPTER29:APICVIRTUA......
  • 导入keras报错Process finished with exit code -1073741819 (0xC0000005)
    1. 遇到报错问题导入keras报错Processfinishedwithexitcode-1073741819(0xC0000005) 查看chatgpt后,给出的解答如下:2.  tensorflow与keras兼容问题关于版本兼容问题,以下是chatGPT3.5给的答案,具体更多兼容版本对应关系可以查看文章末尾的链接。 3.......