最近在新买的天钡WTR PRO 5825U主机上部署了Proxmox VE(PVE)虚拟化环境,并创建了NAS虚拟机。为进一步提升存储性能,计划将物理硬盘直通(Passthrough)至虚拟机。
开启IOMMU
虚拟机直通硬件需要开启IOMMU,参考:天钡WTR PRO 5825U BIOS设置:来电自启与硬件直通配置
直通方式
硬盘直通虚拟机主要有两种实现方式:PCI直通和硬盘映射。其中PCI直通虽然性能最优,但兼容性和灵活性较差。xiaoz在初次尝试时选择了PCI直通方案,却意外导致PVE系统无法正常启动(具体原因尚未查明),最终改用硬盘映射方案才成功完成配置。
硬盘映射直通又分好几种接口类型,具体对比如下:
| 对比项 | SATA | SCSI | VirtIO | IDE |
|---|---|---|---|---|
| 命令示例 | --sata1 | --scsi1 | --virtio1 | --ide1 |
| 性能 | 中等 | 较高 | 最高 | 最低 |
| 兼容性 | 最好 | 较好 | 需要驱动 | 最好 |
| 最大设备数 | 6个 | 13个 | 无严格限制 | 4个 |
| 热插拔支持 | 支持 | 支持 | 支持 | 不支持 |
| 推荐场景 | 通用场景 | 高性能需求 | Linux系统 | 老旧系统 |
| 操作系统支持 | 全部 | 多数 | 需要virtio驱动 | 全部 |
| 配置复杂度 | 简单 | 简单 | 中等 | 简单 |
| 虚拟化效率 | 中等 | 较高 | 最高 | 最低 |
一般情况下硬盘映射常用方案是SATA或者SCSI,这两种方案比较平衡。
设置硬盘直通
首先通过命令ls -l /dev/disk/by-id/找到物理硬盘的ID,如下图所示。

ID格式如:ata-WDC_WD4xxx-xxx_WD-xxx,不需要后面的-partx,找到要直通的硬盘ID并记录下来。
然后修改PVE虚拟机配置文件,文件位于/etc/pve/qemu-server/VMID.conf下,修改前记得备份。(VMID是你虚拟机ID编号)
然后添加如下内容:
scsi1: /dev/disk/by-id/ata-WDC_WDxxx-xxx,discard=on,iothread=1- scsi1:指定使用SCSI控制器(也可以用
sata1),1表示这是第一个SCSI设备(编号从0开始) - ata-WDC_WDxxx-xxx:是硬盘编号
- discard=on:启用TRIM/DISCARD支持
- iothread=1:启用独立的I/O线程
配置修改完毕后需要关闭虚拟机,然后再启动即可生效。另外也可以使用命令设置硬盘直通,比如:
qm set 102 -sata1 /dev/disk/by-id/ata-WDC_WD40XXX挂载硬盘
最后用lsblk或fdisk查看硬盘映射是否成功,其余的就是分区和挂载了,不在本文讨论范围内。
结语
通过在天钡WTR PRO 5825U主机上部署PVE并配置硬盘直通,成功实现了高性能NAS虚拟机的搭建。尽管在PCI直通过程中遇到了一些挑战,但最终通过硬盘映射方案解决了问题。
天钡WTR PRO 5825U购买地址:https://u.jd.com/OGzqcdS










