Proxmox VE 中 SATA 直通配置指南 🖥️
本指南详细介绍了在 Proxmox VE (PVE) 中实现 SATA 硬盘和控制器直通的完整方法。
📋 目录导航
🔧 1. 准备工作
🖥️ 硬件要求
- Intel CPU:需支持 VT-d 技术(B75 以上芯片组/4 代酷睿以上)
- AMD CPU:需支持 AMD-Vi 技术
- BIOS 设置:需要在 BIOS 中启用 VT-d/AMD-Vi 功能
🔍 检查硬件支持
1
2
3
4
5
|
# 检查 CPU 虚拟化支持
egrep -c '(vmx|svm)' /proc/cpuinfo
# 检查 IOMMU 支持
dmesg | grep -i iommu
|
📝 识别硬盘信息
1
2
3
4
5
|
# 查看所有硬盘及其 ID
ls -l /dev/disk/by-id/
# 示例输出:
# ata-WDC_WD2500BEVT-22ZCT0_WD-WXHZ08044989 -> ../../sda
|
记录需要直通的硬盘 ID(ata-
开头的标识符)和对应的设备名称(如 sda
)。
⚙️ 2. 开启 IOMMU 支持
📝 编辑 GRUB 配置
根据 CPU 类型修改配置:
-
Intel CPU:
1
|
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt"
|
-
AMD CPU:
1
|
GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt"
|
🔄 更新 GRUB 配置
1
2
3
4
5
|
# 更新 GRUB
update-grub
# 对于 UEFI 系统
proxmox-boot-tool refresh
|
📦 加载必要内核模块
1
2
|
# 编辑模块配置文件
nano /etc/modules
|
添加以下内容:
1
2
3
4
|
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
|
🔄 应用配置并重启
1
2
3
4
5
|
# 更新 initramfs
update-initramfs -u -k all
# 重启系统
reboot
|
✅ 验证 IOMMU 启用
1
2
3
4
5
|
# 检查 IOMMU 是否启用
dmesg | grep -i iommu
# 检查 IOMMU 分组
find /sys/kernel/iommu_groups/ -type l
|
🚀 3. 直通方法
💾 方法一:直通单个 SATA 硬盘(推荐)
⌨️ 命令行方式
1
2
|
# 语法:qm set <VMID> --sataX /dev/disk/by-id/<硬盘ID>
qm set 100 --sata0 /dev/disk/by-id/ata-WDC_WD2500BEVT-22ZCT0_WD-WXHZ08044989
|
参数说明:
<VMID>
:虚拟机 ID(如 100)
sataX
:控制器位置(sata0, sata1, sata2, sata3)
<硬盘ID>
:完整的硬盘 ID
🌐 Web 界面方式
- 选择目标虚拟机
- 进入"硬件"选项卡
- 点击"添加" > “SATA Disk”
- 选择"使用物理磁盘"
- 从下拉菜单中选择对应的硬盘 ID
- 点击"添加"
🎛️ 方法二:直通整个 SATA 控制器
🔍 识别 SATA 控制器
1
2
3
4
5
|
# 查看 SATA 控制器信息
lspci | grep -i sata
# 示例输出:
# 00:17.0 SATA controller: Intel Corporation Alder Lake-N SATA AHCI Controller
|
📋 获取设备 ID
1
2
3
4
5
|
# 查看详细的 PCI 设备信息
lspci -nn | grep -i sata
# 示例输出:
# 00:17.0 SATA controller [0106]: Intel Corporation Alder Lake-N SATA AHCI Controller [8086:54d3]
|
记录设备 ID(格式为 [XXXX:XXXX]
,如 [8086:54d3]
)
⚙️ 配置直通
1
2
|
# 编辑模块黑名单
nano /etc/modprobe.d/vfio.conf
|
添加以下内容:
1
|
options vfio-pci ids=8086:54d3
|
🌐 Web 界面添加 PCI 设备
- 选择目标虚拟机
- 进入"硬件"选项卡
- 点击"添加" > “PCI 设备”
- 选择对应的 SATA 控制器
- 勾选"所有功能"和"PCI-Express"
- 点击"添加"
🔍 4. 故障排查
❓ 常见问题及解决方案
🐛 问题 1: IOMMU 未启用
症状:dmesg | grep -i iommu
无输出
解决方案:
1
2
3
4
|
# 检查 BIOS 设置
# 确认 GRUB 配置正确
# 重启后检查内核参数
cat /proc/cmdline
|
🐛 问题 2: PCI 设备无法直通
症状:设备不在 IOMMU 组中或无法绑定
解决方案:
1
2
|
# 编辑 GRUB 配置添加 ACS 覆盖
nano /etc/default/grub
|
添加参数:
1
|
pcie_acs_override=downstream,multifunction
|
更新并重启:
🐛 问题 3: 直通后 PVE 系统无法启动
症状:系统启动失败或进入只读模式
解决方案:
- 进入 PVE 恢复模式
- 注释掉相关的直通配置
- 将 PVE 系统安装在 NVMe 硬盘上
🐛 问题 4: 虚拟机无法识别直通设备
症状:虚拟机中看不到直通硬盘
解决方案:
1
2
3
4
5
|
# 检查虚拟机配置
qm config <VMID>
# 确认设备路径正确
ls -la /dev/disk/by-id/
|
💡 5. 最佳实践
🔒 1. 安全性考虑
1
2
3
4
|
# 确保直通硬盘不包含系统关键数据
# 定期备份重要数据
# 使用监控工具检查硬盘健康状态
smartctl -a /dev/sdX
|
⚡ 2. 性能优化
1
2
3
4
|
# 启用 AHCI 模式
# 使用 SSD 进行缓存
# 调整虚拟机 CPU 类型为 host
qm set <VMID> --cpu host
|
📊 3. 监控和维护
1
2
3
4
5
6
|
# 监控直通设备状态
qm monitor <VMID>
info block
# 检查设备连接状态
lspci -k
|
💾 4. 备份策略
1
2
3
4
5
|
# 定期备份虚拟机配置
qm config <VMID> > /backup/vm-<VMID>-config.backup
# 备份重要数据
rsync -av /path/to/data /backup/location/
|
⚠️ 重要注意事项
- 📁 系统安装位置:如果 PVE 系统安装在 SATA 硬盘上,直通整个 SATA 控制器会导致系统无法启动
- 🔒 数据安全:直通操作有风险,务必提前备份重要数据
- 🔄 兼容性:不同硬件平台的 IOMMU 实现可能有差异
- ⚡ 性能影响:直通整个控制器可能影响其他设备的性能
📚 参考资料
通过以上步骤,您应该能够成功在 PVE 中配置 SATA 直通。建议先从单个硬盘直通开始尝试,熟练掌握后再考虑控制器级别的直通。🚀