TrueNAS 与 ZFS:先进但有代价

如果 OMV 是「NAS 界的老实人」,TrueNAS 就是那个把企业级技术搬回家的工程师。它的核心是 ZFS 文件系统——一个出身于太阳微系统、在开源社区活了二十多年、至今没有任何传统文件系统能完全替代它的东西。这一章聊 TrueNAS SCALE 能给你什么,以及这些能力的代价。

ZFS 到底强在哪

传统文件系统(ext4、NTFS)把文件写进硬盘就结束了,数据对不对全靠运气,等发现问题时往往已经晚了。ZFS 不一样:每次写入都生成校验和,每次读取都核对校验和,发现 silently 损坏会自动用冗余数据修复。这个特性叫「自我修复」,对存家庭照片这种「丢了就永远没了」的数据,价值是实打实的。

ZFS 还有几样传统文件系统没有的家当:快照是瞬时完成的,给整个存储池拍一张「时间点照片」,占用的空间只随数据变化增长,几秒钟就能回滚到上周二;ARC 用内存做读缓存,重复读取的数据直接从内存返回,几乎零成本地提速;写缓存通过 ZIL(可以单独配一块 SSD)保证断电时事务不丢;数据去重、压缩、加密全都集成在文件系统层。这套能力过去只有企业存储才有。

一个真实的感受:家里有不重要的数据,也有丢了会难受几年的数据。ZFS 的意义是让后者在你没注意的时候也一直被保护着——校验和是自动的,快照是定时的,修复是后台的,你唯一要做的事是配好它们然后忘记。

ZFS的三层结构

存储池怎么规划

ZFS 的存储结构自下而上是:硬盘组成 vdev,vdev 组成 pool,pool 里建 dataset。难点全在 vdev 这一步,因为它决定了你的冗余等级和容量。

单盘 vdev 没有任何冗余,一块盘坏了数据全没,除非做定期备份,否则不要在生产环境用。两盘 mirror 是最推荐的家庭起步形态:任何一块盘坏了,数据都在,换个盘自动重建。三盘以上可以选 RAIDZ1(单盘冗余)、RAIDZ2(双盘冗余,四盘起步最踏实)、RAIDZ3(三盘冗余,八盘以上才值得)。家用的经验是:盘少用 mirror,盘多 RAIDZ2 起步,RAIDZ1 在重建时风险偏高不推荐放重要数据。

选 vdev 类型时还有一对矛盾要想:性能和容量。mirror 的随机读写性能最好,因为每次读写只涉及镜像组里的一块盘;RAIDZ 的条带宽度大、顺序读写够用,但小文件性能相对弱。家用存照片视频这种大文件为主的场景,RAIDZ 的短板并不明显;如果要在上面跑数据库或者一堆 Docker 容器,mirror 会体感更快。

一个雷区是容量扩展。传统说法是「RAIDZ 组建好就不能加盘」,OpenZFS 2.2 之后支持了 RAIDZ 单盘扩容,TrueNAS 24.10 起带上了这个功能,但操作依然缓慢(要逐盘重写数据),且扩容期间性能下降。家庭用户最稳的扩容方式仍然是「一组 vdev 加一组新 vdev」或者直接换大盘重建。

vdev 类型 最少盘数 允许坏几块 容量利用率
单盘 1 0 约 100%
双盘 mirror 2 1 约 50%
三盘 RAIDZ1 3 1 约 67%
四盘 RAIDZ2 4 2 约 50%
八盘 RAIDZ2 8 2 约 75%

TrueNAS SCALE 的取舍

SCALE 版本基于 Debian,是官方力推的方向;Core(FreeBSD 内核)进入维护尾声,新装机不用考虑。写作时的稳定版是 25.04(Fangtooth),24.10(Electric Eel)完成了两项重大转变:应用后端从 Kubernetes 换成了 Docker(应用部署省心得多,Compose 文件直接贴),监控集成了 Netdata,仪表板可定制性大幅提升。对家用用户来说,24.10 的 Docker 化应用还有一个隐性好处:应用的数据以普通目录形式存在于文件系统里,备份和迁移比以前的 Kubernetes 卷直观多了。

安装 TrueNAS 之前先做硬件体检,它的硬件段位要求比 OMV 高一档,心理预期先建立起来。内存官方建议 8G 起步(ZFS 的 ARC 会尽量多吃,给它空间),而去重功能对内存的要求高到家用基本劝退。硬盘最好走 HBA 卡直通模式(IT 固件),主板自带 SATA 控制器也能用,但要避开会做缓存的硬件阵列卡。ECC 内存在家用平台上是加分项而不是必选项——别为了 ECC 专门换平台。系统盘叫 boot pool,装在一块小 SSD 上,正式用法是两块做 mirror,因为 boot pool 坏了系统就起不来,镜像之后坏一块还能开机换盘。

还有点硬件层面要避开的坑:一是别用 RAID 卡的「硬件 RAID」模式,要么 HBA 直通,要么老老实实主板 SATA;二是尽量别混用不同容量的盘,ZFS 在同一 vdev 里以最小盘为基准计算容量,大盘会缩水;三是了解扇区对齐这个坑:建池时对齐参数设错(比如 4K 扇区的盘用了 512B)会在后期悄悄掉速,建池时确认好,后期改不动。

用快照保护你的数据

装好 TrueNAS 后最该养成习惯的是快照。给重要的 dataset 配定时快照:每天一次、保留 30 天,每周一次、保留 8 周。快照几乎不占空间(只保存变化的部分),但能在「手滑删掉整个共享目录」或者「文件被加密勒索」这种时刻,让你五分钟回到出事之前。

ZFS 在 dataset 层还支持透明压缩:开启后数据写入时自动压缩、读取时自动解压,对照片这类已压缩文件效果一般,对文档、日志、虚拟机镜像效果显著,等于变相给硬盘扩容,想要的时候随手开一个试试。

更进一步可以把快照做进备份:TrueNAS 支持把快照复制到另一台 TrueNAS(异地备份的经典做法),也可以配合云备份任务把数据同步到对象存储。快照是成本最低的数据保险,任何用 TrueNAS 的人都应该当天就配上。

配快照时还有两个实操建议:给「会变」的数据集拍,不给「只增不改」的媒体库频繁拍,快照的价值在于捕捉变化,不变的库拍一次就够;定期清理过期快照,虽然快照省空间,但几百个快照堆在一起管理和恢复都会眼花。

快照和备份的区别

它的代价是什么

讲了这么多好,代价也要说清楚,不然这章就是广告。

代价一是硬件门槛:内存、直通、boot pool 的要求加起来,往往意味着你要为 TrueNAS 准备一套比 OMV 更好的硬件。代价二是学习成本:vdev 和 dataset 的概念、快照的保留策略、权限和共享的层级,都得花时间理解。TrueNAS 的 Web 界面为了表达这些概念,塞满了表单开关,第一次配共享目录的时候,你会见到十几项参数,大部分家用场景都可以留默认,但「不知道该留默认还是改」本身就是一种心智负担。代价三是弹性差:ZFS 不是想改就改的,存储池方案进门就要想好,事后改的痛苦高于任何传统方案。代价四是社区定位:TrueNAS 的文档和论坛主要面向专业用户,家用小白的报错帖经常石沉大海。

什么人该选它

一句话总结:数据上有「绝不能丢」的成分、愿意为可靠性多花一份硬件钱和学习时间的人,TrueNAS 是唯一答案。如果只是存下载的电影和可缓存重建的文件,OMV 加一块备份盘更经济。下载的电影没了重下就是,照片没了就是真没了——把贵的特性用在贵的数据上,这是选系统的经济学。很多人最终的双机方案是:TrueNAS 存照片和重要文档,OMV 或者 unRAID 跑影音和下载,各司其职。如果你只能有一台机器,也可以在一台 TrueNAS 里把所有应用容器都跑起来——SCALE 的 Docker 应用生态完全够用,只是要做好应用数据与用户数据的目录隔离,免得哪天折腾存储池时误伤应用。

给准备入坑的人最后一句忠告:装 TrueNAS 之前先在虚拟机里玩两天。用 VirtualBox 或者 PVE 虚拟几块小硬盘,建池、建快照、模拟坏盘重建,把这些操作在测试环境里走一遍,比在生产数据上摸索强一百倍。该踩的坑在虚拟机里踩完,真机上手时你已经是个熟手。这就是 TrueNAS 的学习之道:看起来门槛高,其实全是熟能生巧的操作,投入的时间最后都会变成数据安全感的一部分,这笔账对于真正重要的数据来说,怎么算都不亏。选它,然后好好用它。

是否该选TrueNAS的判断

装好 TrueNAS 之后的第一件事同样是配远程访问,把 SSH 密钥放好、关掉密码登录,见 ssh;内网 IP 规划和 VLAN 这些基础知识可以先翻 jsjwlmst 补一遍。

延伸阅读

  • 下一章《unRAID 与单盘容错:灵活的折中》:另一个主流的容错思路
  • ssh:TrueNAS 的日常管理少不了安全的远程登录
  • jsjwlmst:把网络概念理顺,配共享和穿透更顺手