把物理硬盘交给 NAS 虚拟机直接管理,是 PVE 自建里最容易踩坑的一环。很多人第一次配置时会发现:盘能挂上、能读写,但 NAS 系统里看不到 SMART 信息,温度、通电时间、坏道计数全是空白。问题往往不在 NAS 系统本身,而在于你选择了单盘直通,而不是控制器直通。
这两种方式的差别,决定了 NAS 虚拟机能不能像物理机一样完整掌控硬盘。
为什么单盘直通读不到 SMART
单盘直通的做法是把某块 /dev/sdX 直接映射给虚拟机。对虚拟机来说,它看到的是一块普通块设备,读写没问题,但这条链路把硬盘的底层管理通道截断了。
SMART 信息、原生扇区大小、硬盘温度这些数据,需要通过存储控制器与硬盘之间的管理协议获取。单盘直通只传递了数据读写能力,没有把控制器本身交给虚拟机,所以 NAS 系统拿不到这些元数据。搜索结果里 Proxmox 论坛的讨论也印证了这一点:推荐做法是 PCI passthrough,把整个 HBA 控制器直通给虚拟机,这样 NAS 才能获得对挂载硬盘的直接访问,同时保留 SMART 数据、原生扇区大小,并避免虚拟化带来的额外开销。
换句话说,如果你只是想让 NAS 能存数据,单盘直通够用;但如果你希望 NAS 系统能监控硬盘健康、在盘快坏掉时提前告警、正确识别 4Kn 盘的原生扇区,就必须走控制器直通。
另一个容易被忽略的后果是:控制器直通之后,接在该控制器上的硬盘对 PVE 宿主机就不可见了。搜索结果里有个开源项目的 issue 提到,当 NAS 虚拟机通过 HBA 直通运行时,连在控制器上的硬盘不再对 PVE 宿主机可见,导致宿主机上的温度监控工具读不到这些盘的温度。这不是 bug,而是直通的正常表现——资源被完整交给了虚拟机。
控制器直通的前提:HBA 卡刷 IT 模式
要让控制器直通真正可用,HBA 卡需要工作在 IT 模式。
IT 模式(有时叫 JBOD passthrough)把每块硬盘单独呈现给操作系统,不做 RAID 封装。IR 模式(Integrated RAID)则会把硬盘组成由卡管理的 RAID 阵列。对 ZFS 这类需要直接访问硬盘的文件系统来说,IT 模式是硬性要求——搜索结果里明确写到,IT 模式固件是选卡时的第一要求,TrueNAS 这类场景需要 IT 模式。
如果手上的 HBA 卡还是 IR 模式,需要先刷成 IT 模式。刷写流程大致是:从卡厂商支持页面下载对应型号的固件和刷写工具,准备一个 UEFI Shell 启动环境(搜索结果里提到需要 UEFI shell 的启动文件),在 Shell 下执行固件更新命令,把卡切换到 IT 模式。具体命令和文件因卡型号而异,务必以厂商支持页面提供的固件包和说明为准,不要混用不同型号的固件。
刷写前把卡从系统里拔下来单独操作更稳妥,避免刷写中途断电或中断。刷完后重新插回,进入系统确认卡已经以 IT 模式工作。
BIOS 开启 VT-d 与 IOMMU
控制器直通依赖硬件虚拟化支持。在主板 BIOS 里需要开启 VT-d(Intel 平台)或 AMD-Vi / IOMMU(AMD 平台)。不同主板菜单名称不一样,通常在芯片组或高级设置里。
开启后进入 PVE,确认 IOMMU 已经启用。如果直通时出现宿主机崩溃或虚拟机启动失败,很可能是 IOMMU 分组问题——搜索结果里有用户遇到把 HBA 的 PCIe 插槽直通给 TrueNAS 虚拟机导致 PVE 崩溃的情况,讨论中怀疑与主板的 IOMMU 分组有关。遇到这种情况,可以先检查 IOMMU 分组是否把 HBA 和其他关键设备分在了同一组,必要时调整 PCIe 插槽位置,或在内核启动参数里启用更细的分组支持。
VFIO 绑定与虚拟机挂载
确认 IOMMU 正常后,把 HBA 控制器绑定到 VFIO 驱动,让 PVE 宿主机不再占用它。
基本流程是:找到 HBA 的 PCI 设备 ID,把该设备加入 VFIO 绑定配置,然后重建 initramfs 并重启。搜索到的操作记录里给出的验证方式是重启后用 lspci -k 查看该设备,确认「Kernel driver in use」显示为 vfio-pci。只有显示 vfio-pci,才说明宿主机已经放手,设备可以安全地直通给虚拟机。
绑定生效后,在 NAS 虚拟机的硬件配置里添加 PCI 设备,选中这块 HBA 控制器。启动虚拟机,进入 NAS 系统,应该能看到接在控制器上的所有硬盘,并且 SMART 信息可以正常读取。
迁移硬盘时有个顺序要注意。搜索结果里的操作记录建议:先在 NAS 虚拟机设置里关闭「开机自启」,关闭宿主机,把硬盘的 SATA 线从主板接口移到 HBA 卡上,再开机。这样可以避免宿主机在启动过程中抢先占用了这些盘。
直通之后宿主机不要再碰这块控制器
这一点必须单独强调:控制器一旦直通给虚拟机,PVE 宿主机就不应该再以任何方式占用它。
不要试图在宿主机上挂载接在该控制器上的硬盘,不要在宿主机上对这些盘做 SMART 监控,也不要让宿主机的存储服务去访问它们。搜索资料里那个监控工具读不到温度的案例,根源就是宿主机和虚拟机在争同一块控制器——直通的意义就是把控制权完整移交,宿主机再插手只会导致冲突或数据风险。
如果你确实需要在宿主机层面监控这些盘的温度,可行的做法是在 NAS 虚拟机内部读取 SMART 并通过网络把数据传出来,而不是让宿主机直接访问硬件。
怎么判断自己该选哪种
判断标准其实很简单:
只要 NAS 系统需要读取 SMART、需要正确识别原生扇区大小、需要 ZFS 直接管理硬盘,就选控制器直通,并且把 HBA 卡刷成 IT 模式。这是自建 NAS 场景下的标准做法,也是搜索结果里反复推荐的方向。
如果只是临时把一块盘映射给虚拟机做测试,不关心健康监控和底层管理,单盘直通可以凑合用,但要清楚它读不到 SMART 是设计使然,不是配置错误。
对绝大多数用 PVE 跑 NAS 的自建用户来说,买一块能刷 IT 模式的 HBA 卡、开启 VT-d、做好 VFIO 绑定、把整个控制器交给虚拟机,这一套走下来,NAS 才能像对待物理机硬盘一样完整地管理它们。配置过程中最容易出问题的地方是 IOMMU 分组和硬盘迁移顺序,把这两步做对,剩下的基本就是按流程走。

评论(1)
之前单盘直通SMART一直读不到,原来是这个原因