Featured image of post Proxmox VE 中 SATA 直通配置指南 🖥️

Proxmox VE 中 SATA 直通配置指南 🖥️

Proxmox VE 中 SATA 直通配置指南 🖥️ 本指南详细介绍了在 Proxmox VE (PVE) 中实现 SATA 硬盘和控制器直通的ê

Proxmox VE 中 SATA 直通配置指南 🖥️

PVE SATA Passthrough

本指南详细介绍了在 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 配置

1
nano /etc/default/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 界面方式

  1. 选择目标虚拟机
  2. 进入"硬件"选项卡
  3. 点击"添加" > “SATA Disk”
  4. 选择"使用物理磁盘"
  5. 从下拉菜单中选择对应的硬盘 ID
  6. 点击"添加"

🎛️ 方法二:直通整个 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 设备

  1. 选择目标虚拟机
  2. 进入"硬件"选项卡
  3. 点击"添加" > “PCI 设备”
  4. 选择对应的 SATA 控制器
  5. 勾选"所有功能"和"PCI-Express"
  6. 点击"添加"

🔍 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

更新并重启:

1
2
update-grub
reboot

🐛 问题 3: 直通后 PVE 系统无法启动

症状:系统启动失败或进入只读模式

解决方案

  1. 进入 PVE 恢复模式
  2. 注释掉相关的直通配置
  3. 将 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/

⚠️ 重要注意事项

  1. 📁 系统安装位置:如果 PVE 系统安装在 SATA 硬盘上,直通整个 SATA 控制器会导致系统无法启动
  2. 🔒 数据安全:直通操作有风险,务必提前备份重要数据
  3. 🔄 兼容性:不同硬件平台的 IOMMU 实现可能有差异
  4. ⚡ 性能影响:直通整个控制器可能影响其他设备的性能

📚 参考资料


通过以上步骤,您应该能够成功在 PVE 中配置 SATA 直通。建议先从单个硬盘直通开始尝试,熟练掌握后再考虑控制器级别的直通。🚀

最后更新于 2025-09-28