跳转到内容

TrueNAS SCALE 虚拟机 ​

TrueNAS SCALE 在 2025 年随 25.04(代号 Fangtooth)正式改名为 TrueNAS Community Edition,本文沿用清单里更多人熟悉的旧名字,两者是同一个开源项目——官方的说法是「只改了名字,软件没变」。它是基于 ZFS 原生实现的开源 NAS 系统,相比 OpenMediaVault,它对硬件直通的要求更硬,回报是更完整的 ZFS 能力(快照、压缩、去重、原生复制)和一套更大的应用生态。

适合谁 ​

你的情况适不适合
想要 ZFS 的校验、快照、复制这些原生能力适合,这是 TrueNAS 相对 OMV 最大的优势
有一张独立 HBA 卡、机箱有位置装它适合,这是本文推荐的前提条件
只想在虚拟磁盘上跑,不想碰直通不建议,见下文「为什么直通实质上是必须的」
内存紧张(低于 8 GB 能分给它)不合适,TrueNAS 比 OMV 吃内存得多
要托管极重要且没有额外备份的数据任何跑在虚拟机里的 NAS 都不合适,见NAS 系统里的通用警示

为什么直通实质上是必须的 ​

TrueNAS 官方博客对「能不能虚拟化」给出的立场很明确:对于要长期保存的数据,唯一被验证为可靠的方案是把一整张 TrueNAS 支持的 HBA 直通给虚拟机。映射单块虚拟磁盘、用「HBA 模式」的 RAID 卡、逐块直通物理磁盘,社区都尝试过,但都不如整卡直通稳定。

不要逐块直通物理磁盘(qm set -scsiN /dev/disk/by-id/...)

这个做法能让 TrueNAS 认到磁盘、建起 ZFS 池,但有两个后果:

  1. 拿不到完整 SMART 信息,ZFS 的错误处理和磁盘健康判断依赖真实设备属性,虚拟化的 SATA/SCSI 层会丢失一部分信息。
  2. 磁盘故障处理更麻烦:换盘、重新识别的行为和真机不完全一致,社区报告过换盘后 VM 起不来的案例。

正确做法是直通承载这些磁盘的整张 HBA 卡,让 TrueNAS 直接管理控制器,而不是管理单块虚拟盘。

直通的前提条件(IOMMU、分组、内核参数)不在本文重复,完整说明见硬盘与 HBA 直通:NAS 虚拟机的正确做法。这里只强调 TrueNAS 场景的两个特殊点:

  • HBA 要接在直连 CPU 的 PCIe 插槽上,避免和主板芯片组上的其他设备(网卡、USB 控制器)分到同一个 IOMMU 分组,导致「只能一起直通」。
  • 给系统盘的存储控制器和数据盘的 HBA 分开:PVE 宿主机自己的启动盘不要挂在打算直通出去的这张 HBA 上。

同一块 ZFS 盘不要同时被宿主机和 TrueNAS 识别

如果 HBA 直通配置不干净(比如宿主机还残留着这些盘的旧引用),可能出现宿主机和 TrueNAS 同时尝试导入同一个 ZFS 池的情况,这会损坏池。直通前确认宿主机没有导入过这些盘上的池(zpool status 里不应该出现它们),必要时在宿主机上把 HBA 对应的驱动加入黑名单,具体做法见 硬盘与 HBA 直通。

资源规划 ​

项建议起点说明
vCPU2–4Type 用 host
内存8 GB 起,官方最低要求;16–32 GB 更实际见下文
系统盘16–32 GB 虚拟磁盘即可只装系统,不放数据
数据盘直通的整张 HBA 及其上的磁盘见上文
气球驱动关闭,固定分配内存ZFS 的 ARC 缓存和内存动态回收配合很差

官方内存建议怎么换算

TrueNAS 官方硬件指南给的是「8 GB 起步,够 8 块盘以内的基础使用;每多一块盘加 1 GB;每 50 GB 的 L2ARC 缓存再加约 1 GB」。这是整机层面的建议,直接套用到分给虚拟机的内存上:先按盘数和是否跑应用/虚拟机功能预估,再往上留一些余量,社区经验是跑到 16 GB 才会觉得「够用」,跑应用或者 iSCSI 共享則建议 32 GB 起。

内存必须直接预留给这台虚拟机

ZFS 的 ARC(自适应缓存)会主动占用它能拿到的大部分内存。给 TrueNAS 虚拟机开气球驱动,等于让宿主机在内存紧张时试图从 ARC 里抢内存,容易造成难以复现的性能抖动甚至崩溃。Memory 和 Minimum memory 填同一个值,等于关闭气球驱动。

创建与安装 ​

  1. 按创建第一个虚拟机的通用建议建一台虚拟机:Machine 用 q35(直通 PCIe 设备的前提),BIOS 用 OVMF (UEFI),SCSI Controller 用 VirtIO SCSI single,Qemu Agent 勾上。
  2. 系统盘用一块 16–32 GB 的虚拟磁盘,Bus 选 SCSI,勾 Discard 和 IO thread。
  3. 确认 HBA 已经完成直通前的全部准备(IOMMU、分组、驱动黑名单,见硬盘与 HBA 直通)之后,在虚拟机关机状态下:虚拟机 → Hardware → Add → PCI Device,选 Raw Device,找到这张 HBA,如果它暴露多个 PCI Function,勾上 All Functions 一起带走。
  4. 从 TrueNAS 官网 获取 SCALE(Community Edition)安装镜像并核对官方公布的校验值,上传到 PVE 的 ISO 存储。

先只挂系统盘装完系统

和 OMV 一样,安装时先只接系统盘这一块虚拟磁盘,装完系统、确认能正常开机之后再加 PCI 直通的 HBA。这样能避免安装程序在磁盘选择界面选错、抹掉数据盘上的内容。

安装过程是 TrueNAS 自己的文本安装器,按提示选系统盘(就是那块 16–32 GB 的虚拟盘)完成即可。

第一次启动之后 ​

首次登录 TrueNAS 的 Web 界面(https://<ip>,安装时设置的账号密码),完成基础设置:

  1. 在 存储 里确认能看到直通进来的物理磁盘(数量和容量应该和物理机上一致,而不是虚拟磁盘的规格)。
  2. 建 ZFS 池:选好磁盘、选择冗余方式(镜像、RAIDZ1/2/3),这部分和 TrueNAS 在物理机上的操作完全一样,官方文档的池创建向导可以直接对照使用。
  3. 装 guest agent:TrueNAS SCALE 基于 Debian,可以通过它的 Apps/Shell 安装 qemu-guest-agent,具体安装入口以你的版本界面为准。

池创建这一步能确认直通是否配置正确

如果这里看到的磁盘数量、容量和物理机上不一致,或者只看到一个「控制器」而看不到单独的盘(常见于某些 NVMe 直通场景),说明直通配置有问题,不要继续建池,先回去检查 IOMMU 分组和 PCI 直通配置。

检查结果 ​

  1. 存储 → 磁盘 里的物理盘数量、型号、序列号和真实硬件一致。
  2. ZFS 池状态为健康(TrueNAS 界面上通常显示为绿色/Healthy)。
  3. 创建一个共享(SMB 或 NFS),从另一台电脑验证能连接、能读写。
  4. 重启这台虚拟机(PVE 里 Stop 再 Start),确认 HBA 重新被直通、池自动重新导入、共享自动恢复。
  5. 虚拟机 → Summary 能看到 IP,说明 guest agent 正常工作。

备份与维护 ​

直通给 TrueNAS 的磁盘数据完全不在 vzdump 备份里

vzdump 只能备份 PVE 存储上的虚拟磁盘(这台虚拟机里就只有系统盘)。整张 HBA 连带它上面的物理盘对 PVE 完全不可见,数据的备份必须由 TrueNAS 自己负责。

区分冗余和备份:ZFS 的镜像/RAIDZ 解决的是硬盘物理损坏,解决不了误删、勒索软件加密、或者这台虚拟机/主机整体损坏。TrueNAS 自带的**复制任务(Replication)**能把快照发送到另一台机器或云端,这才是真正的备份手段。规划方式见备份与恢复。

系统盘(TrueNAS 自身的配置)可以被 vzdump 正常备份,能救「系统配置改崩了」,救不了数据本身。

升级 ​

大版本升级前,先确认当前没有正在直通设备导致的快照限制——挂了 PCI 直通设备的虚拟机通常无法打快照,这意味着升级出问题时不能简单靠回滚快照恢复。稳妥做法是先在 TrueNAS 里手动记录当前的池配置和共享配置,或者按 TrueNAS 官方的升级前检查清单操作。

常见问题 ​

HBA 直通之后宿主机的 lsblk 看不到那些硬盘了。 这是预期行为,直通之后宿主机对这些设备完全失去可见性,属于直通的固有代价,见硬件直通。

TrueNAS 里看到的磁盘数量和物理机不一致。 通常是 IOMMU 分组没有干净地包含整张 HBA(分组里混进了其他设备,或者只直通了部分 PCI Function),回到硬盘与 HBA 直通重新核对。

内存占用一直很高,是不是有问题。 ZFS 的 ARC 会主动占用大部分可用内存作为缓存,这是设计如此,不是内存泄漏。在 TrueNAS 的报告页面能看到 ARC 的实际占用和命中率。

能不能只直通单块 NVMe 盘而不是整张卡。 很多主板上单块 NVMe 直接接在 CPU 的 PCIe 通道上、自成一个 IOMMU 分组,这种情况下直通单块 NVMe 是可行的,效果类似整卡直通(依然是整个控制器级别的直通,只是控制器只接了一块盘)。判断依据同样是 IOMMU 分组是否干净,而不是「盘的数量」。

参考资料 ​

Proxmox VE 非官方中文使用指南,与 Proxmox Server Solutions GmbH 无隶属关系。