文件系统怎么选:ext4、ZFS 与 Btrfs
系统选好之后,再往下一层就是文件系统。它决定了数据写进硬盘之后发生的事:能不能快照、坏了能不能发现、扩容方不方便。自建圈主流的三个选项是 ext4、ZFS、Btrfs,这一章把三者的性格讲清楚,并给出按场景的选择建议。
三个选项的背景
ext4 是 Linux 世界的老黄牛,从 ext2/ext3 一路演化而来,稳定、通用、几乎所有 Linux 工具都支持它。它把数据写进去就不管了,坏没坏靠文件系统检查(fsck)事后发现。它是「够用且不出错」的代表。
家里如果有退役的老硬盘,ext4 也是最包容的选项:它对运行环境要求最低,在 U 盘、TF 卡、老旧 SATA 控制器上都能稳定跑。很多玩家用它做冷备份盘的文件系统,图的就是十年后插上还能读。
ZFS 出身企业级,集校验、快照、缓存、去重、压缩于一身。它的能力强,但管理单元是存储池而不是单盘,内存门槛高,扩容逻辑复杂。前面 TrueNAS 一章详细说过它,这里只从文件系统角度补充。
Btrfs 是 Linux 原生的现代文件系统,被称呼为「ZFS 的开源替代」。它有写时复制快照、校验和、子卷、透明压缩这些 ZFS 的标志性能力,同时可以直接装在单盘上、按目录扩容,学习曲线平缓得多。
一个很快能感知到的差别是透明压缩:Btrfs 挂载时开启压缩选项,文档和文本数据写入时自动压缩,读取时自动解压,容量立省,速度还几乎不掉。家庭场景里各种日志、数据库、虚拟机镜像压缩率可观,相当于白送 10% 到 30% 的空间。注意已压缩的格式(照片、视频、压缩包)开了也基本无效,省不了多少但不会变慢,开起来无妨。Synology 的 Btrfs、OMV 的 Btrfs 选项、unRAID 的部分池都是它。
| 特性 | ext4 | Btrfs | ZFS |
|---|---|---|---|
| 数据校验 | 无 | 有 | 有 |
| 快照 | 无(靠 lvm) | 有,瞬时 | 有,瞬时 |
| 单盘可用 | 是 | 是 | 是但浪费 |
| RAID 管理 | 交给 mdadm | 内置多设备卷 | 内置 vdev 池 |
| 内存要求 | 极低 | 低 | 偏高 |
| 扩容弹性 | 一般 | 好 | 复杂 |
ext4:什么时候它仍然是答案
别觉得用 ext4 就是落后。家庭场景里它有几个不可替代的优势:一是对硬盘休眠友好,没有后台校验任务,机械盘闲置时能真正休眠省电;二是元数据轻量,小文件性能好,系统盘和 Docker 数据目录放 ext4 上响应最快;三是跨系统兼容好,U 盘、移动硬盘、虚拟机镜像几乎都默认它。
典型用法是把 ext4 和软 RAID(mdadm)组合:RAID1 负责冗余,ext4 负责存储。这是十几年来 Linux 家庭服务器的标准配方,简单、稳定、可迁移。windows 系统盘之外的所有家用场景几乎都能套这个公式,而且所有 NAS 系统都认识它。
说 mdadm 管理复杂的人多半被他吓到过:实际上三条命令就能完成日常操作——看状态、加盘、换盘。真正难的是理解「阵列是一组盘的逻辑身份」这个概念,一旦理解,剩下都是体力活。这是十几年来 Linux 家庭服务器的标准配方,简单、稳定、可迁移。你要是把数据盘拆下来插到另一台 Linux 机器上,mdadm 加 ext4 几乎一定能读出来——这种「在哪都能读」的安心感,ZFS 和 Btrfs 给不了同样的普遍性。
Btrfs:中间派的善意
Btrfs 在家用 NAS 里的位置越来越重要,原因有两个。第一是子卷加快照:它能在单盘上划出多个「子卷」,每个子卷独立快照,给家庭目录留 hourly 快照、给媒体库留 daily 快照,粒度随心。第二是校验和修复:配合 Btrfs RAID1 或者 DUP 元数据,它能在读取时发现损坏,并从镜像副本自动修复。对家庭照片这种场景,这是实打实的安全升级。
它也有短板:RAID5/6 支议至今被标记为不稳定,别碰;多设备卷的平衡(balance)操作在大容量下很慢;早期版本的一些坑让老玩家心有余悸(虽然现在早已修好)。家用最佳实践是:单盘或 RAID1,子卷加快照,别玩 RAID5。

ZFS:为数据再加一道铠甲
ZFS 的细节前面 TrueNAS 一章讲过,这里补两个文件系统层面的观点。
一是 ZFS 的校验是端到端的:数据写入时算校验和,读取时验证,scrub 时全局体检。Btrfs 才能发现「这个块坏了」,ZFS 能发现并修复。对数据完整性要求最高的场景,ZFS 仍然是唯一答案。
多说一句校验和的实用价值:硬盘的故障方式不只是「彻底坏了」一种,更隐蔽的是「静默损坏」——bit 随时间翻转,文件还在但内容错了。照片花了一小块、文档变成乱码,没有校验和的文件系统感知不到,备份软件还会忠实地把坏的备份下来。ZFS 和 Btrfs 的校验和就是防这一层,属于家庭数据看不见的保护神。另外两类文件系统还有一个选择维度是「这份系统是否熟悉」——三者用的命令、工具、排障思路都不同,选你或你的社区朋友最熟的那个,出事时能快速自救。技术选型很多时候选的是「出事的那天晚上,谁能帮你」。
二是 ZFS 的代价不是钱而是约束:存储池一旦建好,结构改动成本高;对内存和硬件兼容有要求;单盘 ZFS 虽然能跑但享受不到大部分优势(冗余才是它能力的来源)。如果选它,请配合至少 mirror 的冗余结构;单盘 ZFS 只有校验和能告诉你「数据坏了」,但没有冗余副本可修,等于只剩报警功能。

快照:最被低估的功能
无论 Btrfs 还是 ZFS,快照都是家庭 NAS 最该用的功能,而新手最容易忽略它。
快照的意义在于消除「误操作」这一整类风险。手滑 rm 删了整个家庭目录、移动硬盘整理时覆盖了文件、勒索病毒加密文档——这些事故的共同点是数据被改坏了但盘没坏。传统 ext4 方案里只能靠备份救,而快照让你在五分钟内回到事故发生之前。占的空间也只是「变化的部分」,几乎零成本。
配置建议:重要的子卷或数据集,每小时快照保留 24 份、每日快照保留 7 份、每周保留 4 份。这套梯度覆盖了「刚刚手滑」到「上周改错」的所有常见事故窗口。
快照还能防灾于未然之外的用法:重大系统更新之前拍一张,更新失败一键回滚整个根文件系统。Btrfs 或者 ZFS 做系统根分区的发行版(比如 openSUSE),已经把这个体验做进了开机菜单,家用 NAS 手动做一遍也能享受同样的安全感。这套梯度覆盖了「刚刚手滑」到「上周改错」的所有常见事故窗口。OMV 用户可以装 Btrfs 快照插件,TrueNAS 在数据集设置里配保留策略,unRAID 7 的 ZFS 池也能做快照。
按场景给建议
一句话版本:纯备份加省电选 ext4 加 RAID1;要快照和校验且盘位不多选 Btrfs RAID1;数据价值最高、愿意投入学习选 ZFS mirror。
再细一点:系统盘选 ext4,简单可靠;Docker 应用数据目录选 ext4 或 Btrfs 都行,应用本身通常自己管备份;家庭文档和照片目录选 Btrfs 子卷加快照,或者 ZFS 数据集加快照;媒体库选 ext4 就行——电影重下就有,快照配得太勤反而浪费。混合使用完全正常:同一台机器上,系统盘 ext4、应用目录 Btrfs、重要数据 ZFS,三者各司其职。前提是你的系统支持——OMV 上随便混,unRAID 7 也同时支持 XFS、Btrfs、ZFS 多种池。 TrueNAS 是纯 ZFS 的世界,别去里面找 ext4。

迁移与共存
有人问能不能先 ext4 起步、以后再换 Btrfs 或 ZFS。可以,但换文件系统等于换存储结构:先把数据备份到别处,建好新文件系统再拷回来,没有原地转换的捷径。所以起步阶段如果已经有较重要的数据,建议直接上 Btrfs 单盘(以后还能加盘做 RAID1),省一次迁移。Ext4 起步的方案要预留一个「迟早花一整个周末做迁移」的心理预算,很多人的数据迁移就拖在那里,一拖几年, 迁移的周末就永远在「下个月」,趁早选一步到位的方案才是真省事,与所有选择困难症共勉,选完就别再回头看,把时间花在配置和备份上比什么都强。
另外提醒一个常见误操作:别在同一台机器上混用不同文件系统的同一份数据的多层冗余。比如 ZFS 池里再放一个 Btrfs 子卷镜像,层层冗余只增加复杂度不增加安全。
文件系统层定了,日常管理仍然以命令行为主,远程操作详见 ssh;想给硬盘和网络搭个图形化管理的,可以了解 bt2017 的面板方案。
