PVE 显卡“掉卡”自救:免重启强制重置 PCIe 设备
背景
在使用 PVE(Proxmox VE)做 GPU 直通时,偶尔会遇到**显卡”掉卡”**的情况:宿主机还在正常运行,但显卡从 PCIe 总线上”消失”了,导致依赖该显卡的虚拟机无法启动,或者正在运行的虚拟机突然异常。
传统做法是直接重启整个 PVE 宿主机——但生产环境里重启代价很大,所有虚拟机都得跟着停。
其实有一种纯软件层面的自救手段,相当于在操作系统层面对 PCIe 设备执行”拔出再插回”,大多数情况下能让显卡重新被识别,虚拟机恢复正常。
操作步骤
1. 找到显卡的 PCIe 编号
通过 SSH 登录 PVE 宿主机,先确认显卡在哪个 PCIe 插槽上:
1 | |
输出示例:
1 | |
记住目标显卡的编号,例如 0000:01:00.0(格式为 0000:总线:设备.功能)。多卡环境下会有多条输出,每张卡的编号不同,操作时选择你需要重置的那张即可。
2. 强制”拔掉”设备
1 | |
注意:路径中的冒号前要加反斜杠转义。请将
01:00.0替换为你实际的 PCI 编号。
执行后,显卡在 lspci 中就会消失。等待 2 秒让系统完成清理。
3. 重新扫描 PCIe 总线
1 | |
系统会重新枚举所有 PCIe 设备,显卡应该会重新出现在 lspci 列表中。
4. 验证恢复
1 | |
如果能再次看到你的显卡,说明”掉卡”已自救成功,虚拟机可以正常开机了。
一键脚本
为了方便下次使用,可以把以上命令保存为一个脚本 /usr/local/bin/pve-gpu-reset:
1 | |
赋予执行权限:
1 | |
以后掉卡直接:
1 | |
适用场景与注意事项
| 场景 | 是否适用 |
|---|---|
显卡在 lspci 中消失 |
✅ 适用 |
| 虚拟机报 “device not found” | ✅ 适用 |
显卡出现在 lspci 中但显示为 (rev ff) |
✅ 可以尝试 |
| 显卡驱动内核 panic | ⚠️ 可能需要重启 |
| 硬件物理故障(散热、供电) | ❌ 不适用,应排查硬件 |
- 不影响其他虚拟机:该操作只针对指定的 PCIe 设备,宿主机和其他使用不同设备的虚拟机不受影响。
- 正在使用该显卡的虚拟机 执行前需要先关闭。
- 此方法本质上是触发 Linux 内核的 PCIe 热插拔机制,比
vfio-pci解绑再重新绑定更底层。
参考
- Linux Kernel PCI Documentation
- Proxmox VE Wiki: PCI Passthrough
PVE 显卡“掉卡”自救:免重启强制重置 PCIe 设备
https://blog.952405.xyz/2026/06/pve-gpu-reset-rescan/
转发请注明出处