首页 > 其他分享 >PVE 开启IOMMU(硬件直通)

PVE 开启IOMMU(硬件直通)

时间:2024-06-12 17:34:56浏览次数:22  
标签:直通 grub IOMMU CPU PVE 虚拟机

一、前言

什么是硬件直通(Passthrough) VT-d 、DirectPath I/O,通过 DirectPath I/O,虚拟机可以使用 I/O 内存管理单元访问平台上的物理 PCI 功能,就是俗称的虚拟化直通,简单理解就是允许宿主机将某些硬件资源的管辖权直接移交给虚拟机,虚拟机会以直通独占的方式使用硬件,宿主机将不能再使用此硬件,利用效率几乎等同于将硬件插到了虚拟机的主板扩展槽里一样,最实用的目的是避免了虚拟化平台自身软件层转换带来的效能下降。

典型应用场景,例如在服务器上将某个物理网卡直接划给某台虚拟机使用,以达到几乎和物理机搭配物理网卡类似的网络性能。更可观的场景是,将磁盘控制器直通给虚拟机独占使用,那么虚拟机往往最瓶颈的磁盘性能,将得到非常可观的提升。

我们在Proxmox VE(Proxmox Virtual Environment)PVE系统操作添加: PCI设备 硬件直通提示:No IOMMU detected, please activate it.See Documentation for further information.【翻译:未开启IOMMU,请设置开启激活,更多有关更多信息,请参阅文档。】

image
PVE系统添加PCI设备直通时提示:No IOMMU detected界面

是因为默认ProxmoxVE PVE系统只能支持硬盘、CPU型号直通。其他PCI硬件,例如:网卡 或者 核心显卡的直通,还需要开启IOMMU分组功能。
在Proxmox VE(PVE)系统开启IOMMU功能实现硬件直通之前,我们要确认CPU是否支持VT-D技术;
开启直通的必要条件 CPU支持VT-D,同时主板要开启VT-D支持。

二、查询CPU是否支持VT-D

1.点击进入Intel官方网站【https://www.intel.cn/】或 AMD 官方网站【AMD ׀ 同超越,共成就 _ 人工智能】,搜索对应处理器型号(例如:i7-7700【传送门】)
如果看到下图内容,则说明CPU支持VT-D技术

image

三、启用IOMMU功能

Intel CPU
对于Intel CPU,添加 intel_iommu=on,操作如下:
1、Shell 里面输入命令:nano /etc/default/grub

root@pve:~# nano /etc/default/grub

2、在里面找到:GRUB_CMDLINE_LINUX_DEFAULT="quiet"
然后修改为

GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on"

编辑完成后,使用快捷键 Ctrl + O 回车保存文件,Ctrl + X 退出编辑器。
3、使用命令 update-grub 保存更改并更新grub

root@pve:~# update-grub

4、更新完成后,使用命令 reboot 重启PVE系统

root@pve:~# reboot

从命令行运行 dmesg | grep -e DMAR -e IOMMU 如果没有输出,则说明有问题。
如果有,可基本确认这个过程顺利完成! 接下来就可以为虚拟机正常的添加硬件直通了。

AMD CPU
对于AMD CPU 添加 amd_iommu=on, 操作如下:

1、Shell 里面输入命令:nano /etc/default/grub

root@pve:~# nano /etc/default/grub

2、在里面找到:GRUB_CMDLINE_LINUX_DEFAULT="quiet"
然后修改为

GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on"

编辑完成后,使用快捷键 Ctrl + O 回车保存文件,Ctrl + X 退出编辑器。

3、使用命令 update-grub 保存更改并更新grub

root@pve:~# update-grub

4、更新完成后,使用命令 reboot 重启PVE系统

root@pve:~# reboot

从命令行运行 dmesg | grep -e DMAR -e IOMMU 如果没有输出,则说明有问题。

如果有,可基本确认这个过程顺利完成! 接下来就可以为虚拟机正常的添加硬件直通了。

四、增加虚拟化驱动,加载vifo系统模块

这仅在必要时启用IOMMU转换,将iommu分组相关的内核模块启用,从而可以提高VM中未使用的PCIe设备的性能。
然后是修改 /etc/modules 文件

root@pve:~# nano /etc/modules

添加如下内容

vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd

image
如果按照此方法:ProxmoxVE 开启硬件直通 还设置无效,请再次检查自己的CPU支持VT-D技术。

注意:虚拟机进行直通操作时,取消勾选开机自启动的选项,这样哪怕直通错误,只需重启一下物理机就可以了,因为虚拟机没有自启的原因就不会直通,不会导致冲突无法开机使用。

如果出现PVE下的虚拟主机直通硬件时,不小心把PVE系统主机使用的网卡、硬盘或者是其他硬件直通了,又勾选了开机自启动的选项,导致无法进入PVE系统网页控制界面,重启后也是没用任何反应,多次重启后还是无法解决,请往下看。

五、扩展信息

您需要通过编辑内核命令行来启用IOMMU,首先打开 grub 的bootloader内核命令行配置文件:

编辑内核命令行
您可以在以下位置修改内核命令行,具体取决于所使用的引导程序

Grub
内核命令行需要在文件/etc/default/grub中放置
GRUB_CMDLINE_LINUX_DEFAULT变量
然后 运行 update-grub将其内容附加到/boot/grub/grub.cfg中的所有linux条目中

Systemd-boot
内核命令行需要在/etc/kernel/cmdline中放置
要应用更改,请运行pve-efiboot-tool refresh
将其设置为loader/entries/proxmox-*.conf中的配置文件

首先打开grub的bootloader内核命令行配置文件:

GRUB(传统引导)

nano /etc/default/grub

或者 systemd-boot(UEFI)

nano /etc/kernel/cmdline

对于GRUB: 找到带有“ GRUB_CMDLINE_LINUX_DEFAULTGRUB_CMDLINE_LINUX_DEFAULT”的行
对于systemd-boot(UEFI)创建用于systemd-boot的文件(格式为带有选项的单行)

附:网卡直通错误,失联打不开解决方案,不用重新安装PVE

PS:四网口设备只能给3个直通PCI设备给虚拟机,管理口默认是最小数值得那个==
image
解决思路:
关闭虚拟机,不要虚拟机在PVE系统重启后自动启动,PVE重新启动成功后,到管理界面删除网卡直通

把PVE这台服务器,插上显示器,键盘,用管理员账户进入

1、查看虚拟机

qm list

输出显示
image

这里主要是 105 即虚拟机id
2、关闭虚拟机

qm stop 105

3、关闭虚拟机自动启动

qm set 105 -onboot 0

image
4、重启服务器

reboot

重启完成后,浏览器进入PVE管理界面,把虚拟机直通的网卡删除。

原文链接 https://blog.csdn.net/hivlt/article/details/134348112

标签:直通,grub,IOMMU,CPU,PVE,虚拟机
From: https://www.cnblogs.com/paylove/p/18244369

相关文章

  • 每日AIGC最新进展(21):清华大学提出从人体运动和视频中理解人类行为MotionLLM、武汉大
    DiffusionModels专栏文章汇总:入门与实战MotionLLM:UnderstandingHumanBehaviorsfromHumanMotionsandVideos本研究提出了一种名为MotionLLM的新型框架,旨在通过结合视频和运动序列(如SMPL序列)的多模态数据,利用大型语言模型(LLMs)的能力来理解人类行为。与以往只针对视......
  • Bootstrap框架最新V5 快速入门&直通
    目录Bootstrap-前言Bootstrap-下载Bootstrap-使用Bootstrap-学习Bootstrap-栅格系统Bootstrap-全局样式Bootstrap-组件(Coponents)Bootstrap-字体图标Bootstrap-前言        Bootstrap是由Twitter公司开发维护的前端UI框架,它提供了大量编......
  • 《Java开发及前端最全面试题-Offer直通车》目录
    Java开发是需求最广,工资高的细分领域,同时也是会的人最多,有的公司招1个Java开发,要面试几十甚至上百面试者,同时要求很高,要求通晓技术栈很多及很深深度。如果你正准备面试,想要脱颖而出,那么《Java开发及前端最全面试题-Offer直通车》是你的不二选择。本书汇集了多篇超过1万字的精......
  • 在PVE上搭建Jellyfin服务器踩坑
    在PVE上搭建Jellyfin踩坑目录在PVE上搭建Jellyfin踩坑1、创建LXC容器2、首次启动3、安装Jellyfin4、挂载网盘5、挂载NFS6、Jellyfin中文显示乱码或方框问题解决7、LXC容器下Intel核显直通8、配置Nginx反向代理,通过80/443端口访问9、安装ddns-go,解析IPv6公网访问10、配置......
  • ProxmoxVE(PVE)使用IMG镜像文件,img/raw转qcow2
    第一步,创建虚拟机。第二步,登陆SHELL,具体登陆方法自己探索。使用WinSCP之类的软件把img2kvm和IMG镜像上传到ROOT目录,当然也可以使用wget命令下载到PVE宿主机。img2kvm下载地址:*注:第二种方法无需img2kvm。第三步:IMG转换第一种:chmod+ximg2kvm./img2kvmLEDE.img101vm-1......
  • OpenStack虚拟化PCI设备直通
    1、确定主板和CPU都支持虚拟化技术,在BIOS将VT-d(芯片组、IO)、VT-x(CPU)设置成启用。2、确保BIOS中启用了SR-IOV。3、内核启动参数设置,开启IOMMU。#检查系统是否启用iommucat/proc/cmdline|grepiommu#编辑/etc/default/grub文件#X86架构设置为GRUB_CMDLINE_LINUX_DEFAU......
  • PVE虚拟机迁移至VMware平台
    1、PVE备份需要迁移的虚拟机,备份参数如下 2、备份完成 3、备份的虚拟机文件在/var/lib/vz/dump有3个文件 4、ssh登录PVE虚拟机,cd/var/lib/vz/dump进入备份文件目录,使用qemu-img转换vma磁盘文件为raw格式vmaextractvzdump-qemu-202-2024_05_27-18_03_14.......
  • PVE学生自用记录
    PVE记录这篇博客主要记录自己大二阶段配置和使用PVE的过程。什么是PVE说到PVE,大家可能会想到PlaysersVsEnvironment,但是这里肯定不是指的游戏中的模式了,而是一个操作系统。它的全称为:ProxmoxVE,是一个运行虚拟机和容器的平台。基于DebianLinux完全开源。最大的灵活性,实......
  • PVE强制关闭虚拟机
    问题:有时候在web端点击关机后,虚拟机并没有执行,这就很尴尬,emo 解决方法:ssh登录pve服务器,执行以下命令qmdestroy202#查看202虚拟机状态VM202isrunning-destroyfailed#显示VM202正在运行,无法关闭rm-rf/var/lock/qemu-server/lock-202.conf......
  • pve虚拟机的安装
    下载镜像https://enterprise.proxmox.com/iso/我个人使用的是PVE8-Debian12安装之后的换源更换debian源nano/etc/apt/sources.listdebhttp://mirrors.ustc.edu.cn/debian/bookwormmainnon-free-firmwaredeb-srchttp://mirrors.ustc.edu.cn/debian/bookwormmain......