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

news2025/5/20 19:30:38

文章目录

    • 37 KVM管理设备-管理设备直通
      • 37.1 PCI直通
      • 37.2 SR-IOV直通
        • 37.2.1 概述
        • 37.2.2 操作方法
          • 37.2.2.1 开启网卡的SR-IOV模式
          • 37.2.2.2 获取PF和VF的PCI BDF信息
          • 37.2.2.3 识别和管理PF/VF对应关系
          • 37.2.2.4 挂载SR-IOV网卡到虚拟机中
        • 37.2.3 HPRE加速器SR-IOV直通

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.domainhost OS上的PCI设备的domain号。>=0
hostdev.source.address.bushost OS上的PCI设备bus号。>=1
hostdev.source.address.slothost OS上的PCI设备的device号。>=0
hostdev.source.address.functionhost 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 typePCI设备呈现的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.managedlibvirt处理PCI设备的两种模式。no:默认配置,表示直通设备由用户自行管理。yes:表示直通设备由libvirt管理。SR-IOV直通场景需要配置为yes。
hostdev.source.address.bushost OS上的PCI设备bus号。>=1
hostdev.source.address.slothost OS上的PCI设备device号。>=0
hostdev.source.address.functionhost 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计算、部分大数辅助运算(模幂、模乘、取模、乘法、模逆、素数测试、互质测试)
VendorID0x19E5
PF DeviceID0xA258
VF DeviceID0xA259
最大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

👍 点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富!

image-20230321214338307

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/602525.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IOS上架流程详解,包含审核避坑指南!

准备 开发者账号完工的项目 上架步骤 一、创建App ID二、创建证书请求文件 &#xff08;CSR文件&#xff09;三、创建发布证书 &#xff08;CER&#xff09;四、创建Provisioning Profiles配置文件 &#xff08;PP文件&#xff09;五、在App Store创建应用六、打包上架 一、…

又一运维利器:资源监控微应用

过去几个月&#xff0c;优维在新的资源监控微应用相关能力的研发上投入大量的时间与精力。 上周三&#xff0c;优维专门召开了一场资源监控微应用发布会&#xff0c;介绍了优维的监控微应用的功能亮点和后续规划。 下面就跟着鹿小U一起来具体了解一下。 01 过去&#xff0c…

需求不完备测试解决方案——分布式微服务架构测试实践

1痛点和研究背景 目前随着分布式核心下移和小型机下线的趋势&#xff0c;主流系统架构已逐步演变为CCETDSQL。而在这一演进过程中也陆续暴露出来一些痛点难点问题&#xff0c;需要我们着力解决。为此&#xff0c;我们聚焦于分布式架构下需求、架构、数据这三个方面的痛点问题探…

【Linux驱动】VScode 环境简单配置

在开始编写驱动之前&#xff0c;我们需要保证良好的编码环境&#xff0c;这里编写代码所使用的编辑器是VScode&#xff0c;如果进行环境配置&#xff0c;可能会提示很多错误&#xff0c;比如头文件找不到、内核函数的定义无法跳转等等。 VScode 在这里只作为编辑器使用&#x…

Springboot配置Yml多环境

文章目录 学习链接前言pom.xmlapplication.ymlapplication-dev.yml 开发环境配置application-prod.yml 线上环境配置logback.xml 日志配置 学习链接 easypan Spring Boot手把手教学(2)&#xff1a;使用yml多环境配置和创建多环境profile打包 springboot 配置多环境使用yml配置…

自动化测试介绍和分类,看这一篇就够了

自动化测试介绍及分类 什么是自动化测试? 自动化测试是软件测试活动中一个重要的分支和组成部分,即利用工具或脚本达到测试目的,没有人工或者极少人工参与的软件测试活动称为自动化测试. 自动化测试的优势有哪些? 方便进行回归测试,当软件的版本发布比较频繁的时候,自动化…

平台工程是 DevOps 的未来

Gartner 预测到 2026 年时&#xff0c;将有 80% 的软件工程组织会建立平台团队 DevOps 与平台工程 DevOps 是一种文化和理念。平台工程&#xff0c;是我们实现**“谁构建、谁运行”**的唯一方式。这是 DevOps 的核心初衷&#xff0c;也是后来企业级规模和云原生时代的实现基础…

游泳健身馆预约小程序开发 助力门店拓客引流

暑假快要到了&#xff0c;很多游泳健身馆都想方设法来招揽顾客&#xff0c;其实无论是派发传单还是媒体投放&#xff0c;都不如开发一款游泳健身类预约小程序来的好。因为有了健身游泳小程序系统不仅能够起到很好的推广宣传效果&#xff0c;对于日后的经营发展也有诸多好处。 …

javaEE在2023年5月21知识复盘(一)

今天讲述了doget()、doPost()方法&#xff0c;介绍了里面参数req,resp的一些实用方法 getParameter()获取请求参数 getParameterValues() 返回参数数组 【post方式】 设置编码格式 req-> setCharacterEncoding() resp->SetContent-Type(“text/html;charsetutf-8”) 获取…

SpringBoot + minio实现文件切片极速上传技术(敢说全网整合完整度前三)

一. 概述 提示&#xff1a;请不要多个博客来回跳着看&#xff0c;此文章之详细绝无仅有&#xff0c;融合多家之长&#xff0c;如果遇见报错&#xff0c;请仔细捋一遍文章&#xff0c;不要忽略&#xff01;我在写的时候因为许多文章不全面&#xff0c;来回跳遇见许多坑&#xf…

Java 集合,你肯定也会被问到这些

作为一位小菜 ”一面面试官“&#xff0c;面试过程中&#xff0c;我肯定会问 Java 集合的内容&#xff0c;同时作为求职者&#xff0c;也肯定会被问到集合&#xff0c;所以整理下 Java 集合面试题 说说常见的集合有哪些吧&#xff1f; HashMap说一下&#xff0c;其中的Key需要重…

傻子都能学会的LNMP部署

LNMP 一、安装 Nginx 服务1、安装依赖包2、创建运行用户3、编译安装4、优化路径5、添加 Nginx 系统服务 二、安装 MySQL 服务】1、安装Mysql环境依赖包2、创建运行用户3、编译安装4、修改mysql 配置文件5、更改mysql安装目录和配置文件的属主属组6、设置路径环境变量7、初始化数…

接口测试测什么?一个简单问题把我难住了

那么设计测试用例时我们主要考虑如下几个方面&#xff1a; 一、功能测试 接口的功能是否正确实现了 接口是否按照设计文档中来实现&#xff08;比如username参数写为了user&#xff0c;那么这就不符合&#xff0c;因为接口文档在整个开发中都需要使用&#xff0c;所以接口实…

MEX 文件 ‘lsd.mexw64‘ 无效: 找不到指定的模块。问题解决方法

问题描述 在跑MATLAB和C混合编程的一个算法时&#xff0c;出现了如下错误&#xff1a; MEX 文件 C:\Project\final code\reference code\lsd.mexw64 无效: 找不到指定的模块。 如下图所示&#xff1a; 原因分析 根据资料[1]的说法&#xff0c;*.mexw64文件无效可能的原因是缺…

GitLab从旧服务器迁移到新服务器(空间不足,gitlab安装报错)

注意事项&#xff1a;迁移前首先要保证新旧服务器上的GitLab版本号一致&#xff0c;而且gitlab的包要符合安装的系统gitlab安装&#xff0c;系统与安装包不一致导致的安装错误。 1.查看当前GitLab版本 cat /opt/gitlab/embedded/service/gitlab-rails/VERSION显示为 12.5.5。…

Linux之Ubuntu 22.04实现微信双开

Linux之Ubuntu 22.04实现微信双开 基于deepin-wine仓库安装第一个微信添加仓库安装对应软件包com.qq.weixin.deepin 微信的安装存在的问题补充 Linux下使用模拟器进行微信多开&#xff08;可取&#xff1f;&#xff09;下载Linux模拟器下载完成打开&#xff1a; 安装第二个微信…

zookeeper机制及消息队列kafka集群部署

目录 一、zookeeper1、zookeeper简介2、zookeeper特点3、zookeeper工作模式及机制4、zookeeper应用场景及选举机制5、zookeeper集群部署 二、消息队列kafka1、为什么要有消息队列2、使用消息队列的好处3、kafka简介4、kafka特点5、kafka系统架构名词介绍6、Kafka架构及流程7、k…

技术分享 | 如何编写同时兼容 Vue2 和 Vue3 的代码?

LigaAI 的评论编辑器、附件展示以及富文本编辑器都支持在 Vue2&#xff08;Web&#xff09;与 Vue3&#xff08;VSCode、lDEA&#xff09;中使用。这样不仅可以在不同 Vue 版本的工程中间共享代码&#xff0c;还能为后续升级 Vue3 减少一定阻碍。 那么&#xff0c;同时兼容 Vue…

Shell脚本攻略:文本三剑客之grep

目录 一、理论 1.grep 2.sort 3.uniq 4.tr 5.cut 6.split 7.paste 二、实验 1. grep 2.sort 3.uniq 4.tr 5.cut 6.split 7.统计当前主机的连接状态 8.统计当前连接主机数 一、理论 1.grep &#xff08;1&#xff09;概念 grep是Linux中最常用的”文本处理工…

Redis-主从复制以及哨兵

前言 ​ 要避免单点故障&#xff0c;即保证高可用&#xff0c;便需要冗余&#xff08;副本&#xff09;方式提供集群服务。而Redis 提供了主从库模式&#xff0c;以保证数据副本的一致&#xff0c;主从库之间采用的是读写分离的方式。在 Redis 主从集群中&#xff0c;哨兵机制…