背景
家里机房有台 Dell R730,想利用起来跑本地大模型和视频生成。显卡选了两张 Tesla P40(24GB 显存一张,二手便宜量大),通过 PCIe 直通(VFIO)给虚拟机里的 AI 环境专用,不和宿主机抢资源。
硬件清单
- 主机:Dell R730(双路 E5,内存足够)
- 显卡:Tesla P40 × 2(24GB GDDR5,Pascal 架构)
- 配件:PCIe 4.0 riser 延长线(解决机箱内走线和间距问题)
- 虚拟化:Proxmox VE(PVE)
- 虚拟机:aiserver(Ubuntu 26.04)
为什么选 P40
- 24GB 大显存,跑 7B-32B 量化模型够用
- 二手价格极低,性价比高
- PCIe 3.0 x16,直通后性能损失小
- 缺点:Pascal 架构,没有 Tensor Core,不支持 FP8,推理靠 FP16
物理安装
R730 内部空间有限,两张全高全长显卡加上供电和走线,直接插主板容易打架。用 PCIe riser 延长线把显卡引导到合适位置,注意:
- 延长线要选 PCIe 4.0 规格向下兼容
- 固定牢固,避免震动导致接触不良
- 供电线单独走,不要和数据线捆一起
PVE 直通配置
1. 加载 VFIO 模块
编辑 /etc/modules,加入:
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd2. GRUB 开启 IOMMU
编辑 /etc/default/grub:
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt"更新 grub 后重启:
update-grub && reboot3. 屏蔽开源驱动
把 P40 的 PCI ID 加入黑名单,避免宿主机加载 nouveau/nvidia:
echo "options vfio-pci ids=10de:1b38,10de:1b38" >> /etc/modprobe.d/vfio.conf
update-initramfs -u4. 虚拟机挂载 GPU
在 VM 配置文件里把两张 PCI 设备加进去:
machine: q35
hostpci0: 0000:01:00,pcie=1
hostpci1: 0000:02:00,pcie=1验证
启动 VM 后,在系统里执行:
lspci | grep -i nvidia应该看到两张 NVIDIA Corporation Device。然后装 NVIDIA 驱动,nvidia-smi 能识别两张 P40:
nvidia-smiECC 的小坑
P40 默认 ECC 开启,开启 ECC 后可用显存会少一部分(大约 1.5GB),所以 GPU1 显示可用显存比 GPU0 略小。这是正常现象,不是硬件故障。
小结
直通完成后,宿主机 PVE 只负责虚拟化和网络,两张 P40 完整交给虚拟机用。下一步就是在虚拟机里装 Ollama 和 OpenWebUI 跑大模型。