Proxmox VE(PVE) 进行网卡直通

2023-11-02

我的设备

  • ECS Z270H4-I
  • E3 1235L V5
  • DDR4 2133 24G
  • WD 240G SSD

介绍

PCI直通允许您在VM内部使用物理PCI设备(图形卡,网卡)(仅限KVM虚拟化)。如果您“PCI passthrough”设备,该设备将不再可用于主机。

注意:PCI passthrough是Proxmox VE中的一项实验性功能

要启用硬件直通的话先要确保硬件支持VT-D和VT-X,CPU必须支持硬件虚拟化(为了使用 kvm)和 IOMMU(为了使用 VGA 直通)并保证主板中相关功能的开启

添加CPU支持,开启iommu

  • IOMMU 是 Intel VT-d 和 AMD-Vi 的通用名称。
  • VT-d 指的是直接输入/输出虚拟化(Intel Virtualization Technology for Directed I/O),不应与VT-x(x86平台下的Intel虚拟化技术,Intel Virtualization Technology)混淆。VT-x 可以让一个硬件平台作为多个“虚拟”平台,而 VT-d 提高了虚拟化的安全性、可靠性和 I/O 性能。

设置完之后最好重新启动一下

reboot

查询网卡信息

lspci | grep -i ethernet 

显示

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
root@pve:~# lspci | grep -i ethernet 
00:1f.6 Ethernet controller: Intel Corporation Ethernet Connection (2) I219-LM
01:00.0 Ethernet controller: Intel Corporation I350 Gigabit Network Connection (rev 01)
01:00.1 Ethernet controller: Intel Corporation I350 Gigabit Network Connection (rev 01)
01:00.2 Ethernet controller: Intel Corporation I350 Gigabit Network Connection (rev 01)
01:00.3 Ethernet controller: Intel Corporation I350 Gigabit Network Connection (rev 01)
03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 16)
root@pve:~# 

Intel CPU

修改grub

  • 编辑文件/etc/default/grub
  • 修改行“GRUB_CMDLINE_LINUX_DEFAULT=“quiet”
  • 使其为“GRUB_CMDLINE_LINUX_DEFAULT=“quiet intel_iommu=on”
  • 使用update-grub更新
  • 验证其有效性,从命令行运行“dmesg | grep -e DMAR -e IOMMU”。如果没有输出,则出现问题。极有可能是bios设置的问题,需要启动cpu的vt-x支持。
vi /etc/default/grub

找到  GRUB_CMDLINE_LINUX_DEFAULT="quiet"
修改为 GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on"

update-grub

dmesg | grep -e DMAR -e IOMMU

AMD CPU

修改grub

  • 编辑文件/etc/default/grub
  • 修改行“GRUB_CMDLINE_LINUX_DEFAULT=“quiet”
  • 使其为“GRUB_CMDLINE_LINUX_DEFAULT=“quiet amd_iommu=on”
  • 使用update-grub更新
  • 验证其有效性,从命令行运行“dmesg | grep -e DMAR -e IOMMU”。如果没有输出,则出现问题。极有可能是bios设置的问题,需要启动cpu的vt-x支持。
vi /etc/default/grub

找到  GRUB_CMDLINE_LINUX_DEFAULT="quiet"
修改为 GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on"

update-grub

dmesg | grep -e DMAR -e IOMMU

新增所需模块

修改文件/etc/modules,加入如下的行

vi /etc/modules
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd

执行命令来更新initramfs

update-initramfs -u -k all.

添加PCI设备

命令模式添加

  1. 使用命令找到网卡PCI的地址,地址应采用以下形式:01:00.0
  2. 打开文件进行手工添加
  • 集群:/etc/pve/nodes/你的集群名称/qemu-server/虚拟机id.conf
  • PCI:/etc/pve/qemu-server/vmid.conf
  • PCIE: /etc/pve/qemu-server/.conf
查找网卡ID
lspci | grep net


或者
lspci


添加PCI
vi /etc/pve/qemu-server/vmid.conf
添加一个pci地址:  
hostpci0: 01:00.0
添加多个pci地址方式1:  
hostpci0: 01:00.0;01:00.1
添加多个pci地址方式2:  
hostpci0: 01:00.0
hostpci1: 01:00.1
添加统称所有pci地址,自动传递所有功能:  
hostpci0: 01:00


添加PCIE
vi /etc/pve/qemu-server/111.conf
machine: q35
hostpci0: 01:00.0,pcie=1

web页面模式添加

硬件->添加,选择PCI设备->选择,完成
如需更改为PCIE,可设置机器为q35

如果添加了PCI设备开启虚拟机正常使用那后面的就不需要看了

如果添加了PCI设备无法开启虚拟机的话需要允许不安全的中断

  1. 先验证IOMMU是否有效
  2. 再查看IOMMU是否可以中断重映射
  3. 后启用中断重映射,允许不安全的中断

验证IOMMU有效

要让pci passthrough正常工作,您需要为您的pci设备提供专用的iommu组

find / sys / kernel / iommu_groups / -type l

输入命令后有相关东西输出,则表示正常

如果没有则需要进行IOMMU中断重映射,只有每个IOMMU都支持中断重映射,才会启用中断重映射。

IOMMU中断重映射

没有中断重映射就不可能使用PCI passthrough。

对于KVM用户,设备分配将失败,出现’Failed to assign device "[device name]"的错误,即“无法分配设备”[设备名称]“:操作不允许”错误,并且’未找到中断重映射硬件,将设备传递到非特权域是不安全的。

不支持中断重映射的系统:

  • 所有使用AMD处理器和芯片组的系统都支持AMD I / O虚拟化(AMD-Vi)。这种硬件具有中断重映射支持; 但是,上游尚未提供软件支持。
  • 所有使用英特尔处理器和芯片组的系统都支持英特尔定向I / O虚拟化技术(VT-d),但不支持中断重映射。新的处理器和芯片组提供了中断重映射支持。要确定您的系统是否支持中断重映射:

查看中断重映射

  1. 运行“dmesg | grep ecap”命令。
  2. 在IOMMU行上,“ecap”之后的十六进制值表示是否支持中断重映射。如果该值的最后一个字符是8,9,a,b,c,d,e或f,则支持中断重映射。例如,“ecap 1000”表示没有中断重映射支持。“ecap 10207f”表示中断重映射支持,因为最后一个字符是“f”。

启用中断重映射

  • 官方文档是这个

If your system doesn’t support interrupt remapping,
you can allow unsafe interrupts with:

echo "options vfio_iommu_type1 allow_unsafe_interrupts=1" > /etc/modprobe.d/iommu_unsafe_interrupts.conf
  • 或者添加驱动黑名单
vi /etc/modprobe.d/pve-blacklist.conf

文件里面添加一行
options vfio_iommu_type1 allow_unsafe_interrupts=1
来启用不安全的中断

之后就可以通过图形化界面执行PCIE设备的直通操作了

参考

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Proxmox VE(PVE) 进行网卡直通 的相关文章

  • Android Studio中Intel HAXM的那些坑

    最近用过两台电脑折腾Android Studio 都是windows的系统 不知道为什么连着踩了两个坑 第一台我结束了qemu system i386 exe这个倒霉的进程 导致我开启模拟器的时候一直提示我没有安装Intel HAXM 没办
  • vSphere Client(Vcenter)上传ISO镜像

    不少新手在ESXi上安装好虚拟机后 都要寻找浏览器的ios镜像 但同学们会在这里卡顿 找不到上传ios的路径 今天就来讲一讲 上传的问题 一 方法一 我初学时 一样在这里卡顿 找不到上传的路径 在网上搜索 确实找到了一种上传的方法 在这里转
  • PVE虚拟化平台之安装Ubuntu Desktop系统

    PVE虚拟化平台之安装Ubuntu Desktop系统 一 Ubuntu介绍 1 1 Ubuntu简介 1 2 Ubuntu版本 1 3 ubuntu命名规则 二 上传镜像到PVE 2 1 检查PVE环境 2 2 上传镜像到PVE 三 新建
  • 【HCIA】虚拟化技术介绍

    虚拟化技术介绍 虚拟化 Virtualization 的含义很广泛 将任何一种形式的资源抽象成另一种形式的技术都是虚拟化 是资源的一种逻辑表示 解除了物理硬件和操作系统之间的紧耦合关系 虚拟化是云计算的基础 简单地说 虚拟化使得在一台物理的
  • kvm虚拟机读取宿主机usb设备

    1 查看usb设备 用lsusb查看宿主机usb设备信息 2 在kvm虚拟机的xml文件中添加如下
  • 全/半虚拟化、硬件/软件辅助的全虚拟化之间的区别与联系

    全虚拟化 不需要对GuestOS操作系统软件的源代码做任何的修改 就可以运行在这样的VMM中 在全虚拟化的虚拟平台中 GuestOS并不知道自己是一台虚拟机 它会认为自己就是运行在计算机物理硬件设备上的HostOS 因为全虚拟化的VMM会将
  • VMware vCenter 7.0U2A升级攻略VMware vCenter 7.0U3C攻略

    一 概述 写这篇文章是因为VMware 7 0U2A之前版本有个bug 用户可根据漏洞 CVE 2021 22005 进行提权443端口 直接访问vCenter 443管理界面 然后想着将VMware 7 0U2A升级至最新版VMware
  • NVIDIA vGPU License服务器安装过程

    在vGPU场景下 NVIDIA vGPU License Server 是一个很重要的组件 一个vGPU虚拟机没有正常获取License的时候 功能会受到很大限制 因此正式生产环境或者POC测试环境中都建议搭建 在之前的文章介绍过VMwar
  • ovirt-node和ovirt-engine相连遇到的问题解决办法

    1 Host 192 168 70 7 does not comply with the cluster Default emulated machines The Hosts emulated machines are
  • kvm内存管理

    qemu kvm 进程很像一个普通的linux程序 它通过通常的malloc和mmap调用来申请内存 如果一个客户系统想使用1G物理内存 qemu kvm将会做一个malloc 1 lt lt 30 调用 在主机上申请1G的虚拟地址 然而
  • 云管平台 — vRealize Suite

    原文地址 https blogs vmware com china 2017 11 08 E4 BA 91 E7 AE A1 E5 B9 B3 E5 8F B0 vrealize suite vRealize Suite 是 vRealiz
  • 云安全技术——kvm虚拟化技术

    目录 10 1 kvm简介 10 2 在CentOS 7 图形化界面下安装KVM 使用IDEA开发读写MySQL数据库程序 实验目的 了解 CentOS7图形化界面的部署方法 了解 KVM的组成和作用 了解 KVM的技术架构 了解KVM的安
  • VMware虚拟化- 虚拟化与VMware的基础介绍

    1 什么是虚拟化 1 1 虚拟化概念 通俗的理解 如果你问 什么是虚拟化 我想大部分人的回答都会是 就是在一个操作系统中运行另一个操作系统 虽然这个答案也没错 但这并不是真正 虚拟化 的意义 只能说是虚拟化在硬件和操作系统之间的一个实践 事
  • 内核虚拟化KVM/QEMU——guest os,qemu,kvm的运行流程

    内核虚拟化KVM QEMU guest os qemu kvm的运行流程 这里主要介绍基于x86平台的Guest Os Qemu Kvm工作流程 如图 通过KVM APIs可以将qemu的command传递到kvm 1 创建VM syste
  • KVM源代码分析1:基本工作原理

    http www oenhan com kvm src 1 13年的时候准备挖 KVM源代码分析 的坑 陆陆续续2年过去了 坑也没有填上 当时是因为对KVM了解的肤浅 真正的理解必然要深入到代码级别 所谓 摈弃皮毛 看到血肉 看到真相 当时
  • KVM热迁移

    KVM热迁移 介绍 KVM热迁移的前提是拥有共享存储 以下通过NFS实现KVM热迁移 迁移过程 将一处于运行状态的KVM虚拟机从节点kvm 01迁移到kvm 02后继续运行 准备 主机准备 hostname IP地址 系统 配置 kvm 0
  • Qemu-KVM基本工作原理分析

    1 理解KVM与Qemu的关系 我们都知道开源虚拟机KVM 并且知道它总是跟Qemu结合出现 那这两者之间有什么关系呢 首先 Qemu本身并不是KVM的一部分 而是一整套完整的虚拟化解决方案 它是纯软件实现的 包括处理器虚拟化 内存虚拟化以
  • 如何让 perf stat 支持 KVM 中的“分支”、“分支未命中”等硬件事件

    我想通过 分支未命中 硬件事件来评估一个进程的性能 但是当我使用 perf stat 获取 分支未命中 数据时 它总是返回 0 因为我的操作系统位于 KVM 中 因为我拿一台真机来做测试比较麻烦 所以我想知道当我在 KVM 中时 有什么方法
  • libvirtError:XML 错误:预期单播 mac 地址,发现多播

    我正在通过 ansible 设置 KVM 自动化 并且我有一个虚拟机一直给我这个错误 libvirtError XML 错误 预期的单播 mac 地址 发现多播 53 54 00 b4 ad 81 我不认为这是一个可靠的问题 因为其他几个虚
  • x86 PIC,QEMU 在所有 CPU 上引发中断是否正确?

    我最近不得不解决 x86 PIC 的专有操作系统问题 其中操作系统预期定时器中断仅在 CPU0 上 我启用了 IO APIC 来解决这个问题并进行了 CPU 控制 因此中断仅到达 CPU0 问题解决了 有人告诉我 我们的硬件已经损坏 无法做

随机推荐

  • 命令行编译WCE6.0 BSP 中 Private目录下的工程

    转载请标明是引用于 http blog csdn net chenyujing1234 参考文章 http social msdn microsoft com Forums en US windowsmobiledev thread 672
  • 漏洞复现之CVE-2015-1635-HTTP.SYS远程执行代码漏洞(ms15-034)

    1 1 1 漏洞描述 在2015年4月安全补丁日 微软发布的众多安全更新中 修复了HTTP sys中一处允许远程执行代码漏洞 编号为 CVE 2015 1635 MS15 034 利用HTTP sys的安全漏洞 攻击者只需要发送恶意的htt
  • 如何判断代码的好坏

    对于代码好坏的判断 是需要一定的标准来衡量 比如可读性 可维护性 可拓展性 简洁性等等 好的代码 无论是对于代码开发者来说 还是对于设备维护者来说都是赏心悦目的 而坏的代码则是让人一头雾水 心生胆怯 甚至在开发和维护阶段 因为修改或者重构代
  • select 语句中 if 的用法

    IF expr1 expr2 expr3 expr1 的值为 TRUE 则返回值为 expr2 expr1 的值为FALSE 则返回值为 expr3 例 SELECT IF TRUE 1 1 1 2 gt 2 SELECT IF FALSE
  • Oracle 高水位(watermark)实验

    oracle 中的高水位标记是 oracle table 中使用的术语 用于显示在 oracle table 的生命周期中曾经使用过的块 当您从表中删除行时 HWM 下面的块可能会变为空 但高水位标记将保持原样 假设您加载了 100 万行的
  • Hololens2开发笔记-Unity项目获取IMU传感器数据

    文章目录 前言 环境 使用指南 运行结果 前言 在仔细捣鼓了 HoloLens2 研究模式的 API 文档后 借鉴了官方案例 SensorVisualization 和这位哥们的代码 HoloLens2 Unity ResearchMode
  • 记一次初学者的spring boot 打包部署

    作为一个前端程序员 好不容易用第一次使用spring boot 写了一个项目 idea里面运行的ok 心里暗自窃喜 但是没想到打包就出现问题 折腾了一天 现在总结一下 先看一下我的项目的结构 这是我的项目 主项目是一个spring boot
  • Java web编写的学生作业管理系统 课程设计 功能齐全、界面漂亮

    8月份由于公司的事情太多 基本上没有更新博客信息 今天稍微空了点 继续为为大家介绍Java web项目 今天要介绍的是一个Java web编写的学生作业管理系统 学生作业管理系统有三种用户类型 学生 老师 系统管理员 学生的主要功能包括 查
  • 多态的定义以及使用

    多态的定义以及使用 package Demo08 代码当中体现多态性 其实就是一句话 父类引用指向子类对象 什么叫多态 左父右子就叫多态 可以通过创建一个对象来调用父类和子类两个 格式 父类名称 对象名 new 子类名称 或者 接口名称 对
  • 区块链二级知识考试

    区块链基础知识二级考试 考试时间30分钟 总分100分 请认真作答 出题人及监考老师 高志豪 请转载者注明 谢谢支持 一 单选题 每题5分 共30分 1 中本聪是哪里人 A 中国人 B 美国人 C 日本人 D 不确定 2 下面哪种共识机制效
  • WPF DataGrid 导出Excel

    region Excel导出 private void btnExportExcel Click object sender RoutedEventArgs e Export this dgvList XX信息查询列表 public voi
  • STM32 F1,F4,CAN多字节发送和接收

    一 简介 CAN的基础知识在这里不做过多介绍 其他网站上讲解的很基础 因为CAN一次性只能接收1字节8位 所以在这里只介绍怎样让CAN能像串口那样一次性接收非常多的位 亲测有效 具体先看效果图 在这里我的实现是通过两块STM32板子 可以是
  • 【mac】mac鼠标指针跟随很慢的问题

    使用时感觉鼠标指针跟随太慢 在系统偏好设置里面将鼠标跟随速度调到最大 还是感觉很慢 后来在网上找到了一个通过命令行改全局配置的方式调快跟随速度 具体方法如下 可以先查看一下当前值 打开终端 输入命令 lcc localhost defaul
  • html的实体字符,h5展示特殊符号<>

    前言 在 HTML 中 某些字符是预留的 不能使用小于号 lt 和大于号 gt 这是因为浏览器会误认为它们是标签 比如 这样是不行的 p lt p 比如用实体字符 p lt p HTML 中有用的字符实体 注释 实体名称对大小写敏感 显示结
  • 单链表的创建、单链表的删除、单链表的插入(数据结构)

    1 创建一个超级简单的单链表 include
  • 用HttpClient抓取人人网高校数据库(省,高校,院系三级级联)--更新1

    更新备注 将src文件改成了一个完整的项目 解压后可以直接导入到Eclipse中去 省去大家配置 项目乱码请改项目属性为GBK 另外 如果你要登陆人人网 的话 需要申请一个人人网账号 这里提供公用的 lei d0809 gmail com
  • matlab画三维、二维动态曲线

    matlab画三维 二维动态曲线 画三维曲线动图 xlabel X m ylabel Y m zlabel Z m grid on for i 1 length x 1 axis 0 05 2 5 0 05 5 0 1 0 1 line x
  • Matlab—频谱分析作图

    clf fs 50 采样频率 每秒钟采样多少个点 N 60 采样点数量 T N fs 采样时间 n 0 N 1 t n fs 时间序列 f n fs N 频率序列 y1 10 sin 2 pi 15 t y2 10 sin 2 pi 20
  • 硬件第二节 MOS管电路工作原理及详解

    文章目录 一 MOS管画法辨认 1 1 辨认MOS管 二 MOS管使用 2 1 作为开关管 2 1 1 导通条件 2 1 2实例 三 如何选择MOS管 3 1 MOS管需要注意的几个参数 3 1 1 选择PMOS还是NMOS 3 1 2 电
  • Proxmox VE(PVE) 进行网卡直通

    文章目录 我的设备 介绍 添加CPU支持 开启iommu 查询网卡信息 Intel CPU AMD CPU 新增所需模块 添加PCI设备 命令模式添加 web页面模式添加 验证IOMMU有效 IOMMU中断重映射 查看中断重映射 启用中断重