VFIO的使用及原理

news2024/11/16 11:34:04

vfio设备透传主要用于将设备直通给虚拟机以提高性能,本篇以一张网卡为例讲述VFIO设备的配置使用及底层原理。其中涉及的技术背景主要有linux+qemu+kvm+vfio。

一、VFIO网卡的配置使用

1.host配置iommu

首先是宿主机host必须支持硬件虚拟化技术,如x86架构的VT-d,其中有关IO的有iommu的支持,x86默认是不开启的,可以通过追加内核参数“intel_iommu=on”来打开。

vim /etc/default/grub

添加完后重启宿主机,并dmesg | grep -i iommu查看是否开启成功

powerpc架构下的iommu是默认开启的,所以可以直接跳过此步。

2.选择设备

本次以一张网卡为例,常见的intel网卡如I350等都是支持VFIO透传的,可以在dmesg看到网卡的iommu支持。

记住一定要选择一个宿主机不用的网卡,如state=DOWN的或ifconfig查看 rx和tx=0 bytes的网卡来配置透传,毕竟vfio属于二选一,透传给VM则host不能再用了。

本次选择enP1p27s0fx这张网卡;

3.设备解绑与重新绑定vfio-pci驱动

#查看group里面的设备,可以发现这个group中共有4个设备

[root@localhost jcf]# ls /sys/bus/pci/devices/0001\:1b\:00.0/iommu_group/devices/
0001:1b:00.0  0001:1b:00.1  0001:1b:00.2  0001:1b:00.3
#将设备与驱动程序解绑,注意这里要把同一group下的4张网卡全部解绑
[root@localhost jcf]# echo 0001:1b:00.0 > /sys/bus/pci/devices/0001\:1b\:00.0/driver/unbind

[root@localhost jcf]# echo 0001:1b:00.1 > /sys/bus/pci/devices/0001\:1b\:00.1/driver/unbind
[root@localhost jcf]# echo 0001:1b:00.2 > /sys/bus/pci/devices/0001\:1b\:00.2/driver/unbind
[root@localhost jcf]# echo 0001:1b:00.3 > /sys/bus/pci/devices/0001\:1b\:00.3/driver/unbind
#找到设备的生产商&设备ID
[root@localhost jcf]# lspci -n -s 0001:1b:00.0
0001:1b:00.0 0200: 8086:1521 (rev 01)

#将设备绑定到vfio-pci驱动,这会导致一个新的设备节点“/dev/vfio/5”被创建
[root@localhost jcf]# echo 8086 1521 > /sys/bus/pci/drivers/vfio-pci/new_id
#查看刚生成的设备节点
[root@localhost jcf]# ls /dev/vfio/

此时host中已看不到之前的enP1p27s0fx网卡

4.创建虚机,添加参数 -device vfio-pci,host=xxxx,id=net0

/home/jcf/qemu-6.2.0/build/qemu-system-ppc64 -m 32G -smp 8 -boot c -hda /home/jcf/pseries.img -machine pseries --enable-kvm -device vfio-pci,host=0001:1b:00.0,id=net0 -vnc :25

通过qemu monitor可以看到该网卡已经透传到了虚机内。

若是通过libvirt创建虚机,则需添加如下xml透传配置

 <devices>  
     <hostdev mode='subsystem' type='pci' managed='yes'>
       <driver name='vfio'/>
       <source>
         <address domain='0x0001' bus='0x1b' slot='0x00' function='0x0'/>
       </source>
     </hostdev>
 <devices/>

二、VFIO原理

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

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

相关文章

是谁家班主任还不知道 怎么发布期中成绩啊。

你知道吗&#xff1f;居然还有班主任不知道怎么发布期中成绩&#xff01; 发布成绩并不是一件难事&#xff0c;只需几个步骤&#xff0c;就能轻松搞定&#xff01; 给大家讲一下成绩查询是什么。成绩查询是指学生通过一定的方式&#xff0c;如输入学号、姓名等&#xff0c;在指…

小程序如何设置自动使用物流账号发货

小程序支持自动使用物流账号发货并生成运单号。商家需要与物流公司合作&#xff0c;获取物流账号&#xff0c;支持快递物流和同城外卖配送平台。具体方法请参考公众号之前发布的文章&#xff0c;例如可以搜索“快递账号”。 导入物流账号后&#xff0c;在小程序管理员后台->…

Ansible中的变量及加密

目录 1.变量命名 2.变量级别 3.变量设定和使用方式 在playbook中直接定义变量 在文件中定义变量 使用变量 设定主机变量和清单变量 目录设定变量 用命令覆盖变量 使用数组设定变量 ​编辑 注册变量 事实变量 ​编辑 魔法变量 JINJA2模板 j2模板书写规则 ​编辑 f…

【MySQL】 索引(上)

文章目录 1. 索引的概念2. MySQL与磁盘 的交互基本单位3. 建立共识4. 现象与结论如何理解mysql中page概念为什么 要采用page的方案 进行交互 而不是用多少加载多少&#xff1f; 5. 页目录为什么要引入 页目录概念单页情况多页情况使用B树 构建索引为什么不用其他数据结构为什么…

打造更智能的移动端平台,蚂蚁mPaaS5.0亮相云栖大会

11月2日&#xff0c;在云栖大会上&#xff0c;蚂蚁数科宣布mPaaS正式升级至5.0版本。mPaaS5.0融合了蚂蚁大模型框架下的多种算法能力&#xff0c;以AI智能引擎驱动移动端平台的运营、服务和体验管理实现全链路升级&#xff0c;助力金融机构及企业打造更加智能、更懂用户的移动端…

数据结构与算法:使用数组模拟环形队列Java版

文章目录 如何使用数组模拟队列环形队列逻辑分析自己写的听课笔记实现代码部分方法说明 如何使用数组模拟队列 不知道如何使用数组模拟队列的可以看上一篇文章 使用数组模拟队列点击跳转 环形队列逻辑分析 自己写的听课笔记 实现代码 package com.haimeng.queue;import java…

Java实验三类的继承与派生

1.定义一个Person类&#xff0c;包含姓名&#xff08;name&#xff09;、性别&#xff08;sex&#xff09;、年龄&#xff08;age&#xff09;等字段&#xff1b;继承Person类设计Teacher 类&#xff0c;增加职称&#xff08;pro&#xff09;、部门&#xff08;department&…

配置git并把本地项目连接github

一.配置git 1.下载git&#xff08;Git&#xff09;&#xff0c;但推荐使用国内镜像下载&#xff08;CNPM Binaries Mirror&#xff09; 选好64和版本号下载&#xff0c;全部点下一步 下载完成后打开终端&#xff0c;输入 git --version 出现版本号则说明安装成功 然后继续…

《巴渝小将》少儿电视综艺走进江小白金色黄庄拍摄圆满成功!

巴渝小将&#xff0c;乘风破浪&#xff01; 张扬巴渝魅力&#xff0c;展示少年风采&#xff0c;本期拍摄我们来到了位于江津的江小白金色黄庄。 江小白金色黄庄位于永兴镇黄庄村&#xff0c;是一座充满诗意又不乏童趣的农文旅综合体&#xff0c;基于当地良好的酿酒高粱产业基础…

Diango项目-简易个人博客项目

项目实现功能 在admin后台自定义添加上传文档。对展示在首页的文章分页显示。在首页点击文章的阅读全文按钮可进入该文章全文详情页进行浏览。对文章实现了内容分类何以发布时间进行归档分类。使用django的whoose搜索引擎对全文实现内容的搜索。 项目涉及技术 Mysql Djan…

性价比最高的开放式耳机是哪款、超高性价比开放式耳机

入耳式的耳机堵塞耳道&#xff0c;长时间佩戴耳朵闷闷的很不舒服。很多人更倾向于选择开放式耳机&#xff0c;即使是暴汗耳朵依旧保持通透。今天就来多方位评测一下市面上炙手可热的几款开放式耳机吧 1、西圣开放式耳机 推荐指数&#xff1a;★★★★★ 官方售价&#xff1a…

gtsam初探以及结合LIO-SAM算法的一些理解

概述 GTSAM&#xff08;Georgia Tech Smoothing and Mapping&#xff09;是基于因子图的C库&#xff0c;本篇基于GTSAM对因子图优化做一个简单了解和梳理&#xff0c;并以LIO-SAM为例进一步分析因子图优化在SLAM中的应用。 参考链接&#xff1a; [0]gtsam官方文档 [1]https:/…

NEFU数字图像处理(3)图像分割

一、图像分割的基本概念 1.1专有名词 前景和背景 在图像分割中&#xff0c;我们通常需要将图像分为前景和背景两个部分。前景是指图像中我们感兴趣、要分割出来的部分&#xff0c;背景是指和前景不相关的部分。例如&#xff0c;对于一张人物照片&#xff0c;人物就是前景&…

✔ ★【备战实习(面经+项目+算法)】 11.2学习

✔ ★【备战实习&#xff08;面经项目算法&#xff09;】 坚持完成每天必做如何找到好工作1. 科学的学习方法&#xff08;专注&#xff01;效率&#xff01;记忆&#xff01;心流&#xff01;&#xff09;2. 每天认真完成必做项&#xff0c;踏实学习技术 认真完成每天必做&…

leetCode 2915. 和为目标值的最长子序列的长度 + 动态规划 +01背包 + 空间优化 + 记忆化搜索 + 递推

2915. 和为目标值的最长子序列的长度 - 力扣&#xff08;LeetCode&#xff09; 给你一个下标从 0 开始的整数数组 nums 和一个整数 target 。返回和为 target 的 nums 子序列中&#xff0c;子序列 长度的最大值 。如果不存在和为 target 的子序列&#xff0c;返回 -1 。子序列 …

开放式耳机百元机哪个好、平价又好用的开放式耳机

开放式耳机最近一两年越来越受欢迎&#xff0c;市场上不同形态的非入耳式耳机都有&#xff0c;从骨传导&#xff0c;夹耳式到气传导等等都有。开放式耳机的好处有很多&#xff0c;非入耳式&#xff0c;不伤耳朵&#xff0c;佩戴更舒适更安全。今天就来和大家聊聊开放式耳机百元…

C语言跟着郝斌学到指针,MDK搭建了,为什么越学越不懂?

今日话题&#xff0c;一学生说C语言跟着郝斌学到指针&#xff0c;MDK搭建了&#xff0c;为什么越学越不懂&#xff1f;在学习STM32时&#xff0c;熟练使用库函数是非常关键的一步。我最初使用了野火的教材&#xff0c;虽然内容详尽&#xff0c;但对于初学者来说可能显得有些冗长…

《C语言从入门到精通》:入门容易,精通难,C语言也不例外

《C语言从入门到精通》&#xff1a;入门容易&#xff0c;精通难&#xff0c;C语言也不例外 C语言&#xff0c;容易上手&#xff0c;难以精通。它是一把双刃剑&#xff0c;既打开了编程世界的大门&#xff0c;又需要耐心与热情。无论是初学者还是专业人士&#xff0c;都需不断钻…

uniapp 离线打包 google 登录

官方文档&#xff1a; Oauth 模块 | uni小程序SDK 其中有 clientid 和反向url clientid 是 xxxx.apps.googleusercontent.com 反向url 是 com.googleusercontent.apps.xxx

早安心语微语早读,保持活力,偶尔撤退,时常欢喜,便是幸福的一生

1、单薄的人生&#xff0c;厚重的生命&#xff0c;我们总会遇到岁月的阳光和阴霾&#xff0c;路过生命的欢愉和遗憾。保持活力&#xff0c;偶尔撤退&#xff0c;时常欢喜&#xff0c;便是幸福的一生。 2、人活着不容易&#xff0c;别把自己&#xff0c;太亏欠&#xff1b;别让…