ZFS vs Btrfs: Which Filesystem for Your NAS or Homelab?

ZFS for a dedicated NAS with stable drive counts and enough RAM; Btrfs when you need flexibility, mixed drive sizes, and in-kernel simplicity — as long as you avoid RAID 5/6.

Published: 2026-08-28

Short answer: pick ZFS if you are building a dedicated NAS with a stable set of drives and enough RAM. It has the most battle-tested data-integrity story available in any filesystem, and its RAID (RAIDZ), snapshot, and replication tooling has been hammered on in production for two decades. Pick Btrfs when you need flexibility: mixed drive sizes, adding a single drive to a pool whenever you like, and native support in every mainline Linux kernel with no extra modules — as long as you stay away from its RAID 5/6 modes. Both checksum everything and self-heal when given redundancy. The difference is temperament and operational shape, not whether your data is safe.

The rest of this post covers what copy-on-write filesystems actually buy you, the honest strengths and weaknesses of each, and why in most homelabs the platform you run ends up choosing the filesystem for you.

Quick comparison

QuestionZFSBtrfs
License / kernel statusCDDL; out-of-tree module maintained by the OpenZFS projectGPL; in the mainline Linux kernel
Checksumming and self-healingYes: end-to-end checksums, repairs from redundancy on scrub or readYes: checksums on data and metadata, repairs from redundancy
SnapshotsYes, cheap and instant; replication via zfs send/receiveYes, per-subvolume; replication via btrfs send/receive
RAIDMirrors plus RAIDZ1/2/3 — mature and widely deployedRAID 0/1/10 fine; RAID 5/6 still not recommended
Pool expansionHistorically rigid; RAIDZ expansion landed in the OpenZFS 2.3 era, still newer than the rest of the stackAdd or remove single drives freely, then rebalance
Mixed drive sizesPoor — vdevs want matched drivesGood — allocator handles uneven drives well
RAM appetiteLikes RAM for its ARC cache; ECC recommended, not requiredModest, uses the normal page cache
Inline compressionYes (lz4, zstd)Yes (zstd, lzo, zlib)
EncryptionNative, per-datasetNone native; relies on LUKS underneath
Typical homesTrueNAS, Proxmox, FreeBSDSynology DSM, Fedora, openSUSE; Unraid uses a Btrfs/XFS mix

Why a copy-on-write filesystem at all

The reason ZFS and Btrfs exist is a failure mode that traditional filesystems cannot even see: silent corruption. Drives occasionally return wrong data without reporting an error — a flipped bit from a failing sector, a firmware hiccup, a bad cable, a controller writing to the wrong place. On ext4 or XFS, that corrupted block is simply your data now. Nothing checks it, nothing notices, and the corruption quietly propagates into your backups until the day you open the file and find garbage. This is what people mean by bitrot.

Copy-on-write filesystems attack this with three mechanisms working together. First, checksums: every block of data and metadata is written with a checksum stored separately from the block itself, so a wrong read is detectable. Second, scrubs: a scheduled job walks the entire pool, verifies every checksum, and reports or repairs what it finds. Third, redundancy: when the filesystem has a mirror or parity copy, a failed checksum is not just detected but repaired automatically from the good copy. Detection plus redundancy equals self-healing, and neither ext4 nor XFS can do it, because they checksum (at most) metadata and have no idea what your file contents are supposed to look like.

Copy-on-write also makes snapshots nearly free. Because the filesystem never overwrites data in place, a snapshot is just a promise not to garbage-collect the old blocks. You get instant point-in-time copies of a whole dataset, instant rollback after a bad upgrade or a fat-fingered delete, and an efficient way to ship incremental changes to another machine. For a NAS holding years of family photos or a homelab running services you actually depend on, this combination — checksums, scrubs, self-healing, snapshots — is the whole reason to bother with either of these filesystems.

ZFS: strengths and weaknesses

Where ZFS is genuinely strong:

Where it is weak:

Btrfs: strengths and weaknesses

Where Btrfs is genuinely strong:

Where it is weak:

When to choose ZFS

When to choose Btrfs

The practical homelab decision: the platform picks for you

Here is the part most comparison posts skip: very few homelabbers choose a filesystem in the abstract. They choose a platform, and the platform has already chosen.

Run TrueNAS and you get ZFS — it is the entire identity of the product, and the web UI, alerting, snapshot scheduling, and replication are all ZFS-shaped. Run Proxmox and ZFS is a first-class, installer-supported option for both the boot pool and VM storage, with replication built into the cluster tooling. Run Unraid and the main array is its own parity system with individually-formatted data drives (XFS or Btrfs), with ZFS available for dedicated pools in recent versions — the appeal being exactly the mixed-drive, add-one-disk-at-a-time flexibility that classic ZFS lacked. Run Synology DSM and you get Btrfs layered on top of Linux md-RAID, which is a quietly clever design: md handles the parity RAID (sidestepping the Btrfs RAID 5/6 problem entirely) while Btrfs provides checksums and snapshots on top, and DSM wires the layers together for checksum-based repair.

So the realistic decision tree is short. Decide what you want to run — a storage appliance, a hypervisor, a flexible media box, an off-the-shelf NAS — and the filesystem mostly follows. Fighting the platform default (Btrfs on TrueNAS, or hand-rolled ZFS on a distro that makes it painful) buys you almost nothing and costs you the paved road. If you are still weighing the platforms themselves, that comparison matters more than the filesystem one.

Neither one replaces backups

The data-safety honesty section, because both communities occasionally oversell their filesystem. Snapshots are not backups. A snapshot lives on the same pool as the data; if the pool dies — controller failure, multiple drive failures, fire, theft, a destructive command — every snapshot dies with it. RAID is not a backup either. RAID keeps you online through drive failures; it does nothing against deletion, ransomware, or the enclosure itself failing. Checksums and scrubs protect you from the disks lying to you, and that is all they protect you from.

What both filesystems do give you is excellent raw material for real backups: schedule scrubs (monthly is a common cadence for a home NAS) so corruption is found while redundancy can still fix it, then use snapshot replication to get copies off the pool. The standard shape is the 3-2-1 rule: three copies of your data, on two different types of media or systems, with one copy off-site. A ZFS or Btrfs NAS replicating snapshots to a second box, plus an encrypted off-site copy through a dedicated backup tool, satisfies it. Nothing about either filesystem changes the rule.

FAQ

Is ZFS better than Btrfs?

For a dedicated multi-drive NAS, mostly yes: ZFS has mature parity RAID, a longer production track record, and stronger replication tooling. But better is workload-dependent. For a single-disk Linux machine, a root filesystem you want to snapshot, or a pool of mismatched drives you grow one disk at a time, Btrfs is the better fit — and it is the only one of the two in the mainline kernel. Both deliver the core promise of checksummed, self-healing, snapshot-capable storage.

Which file system is faster, ZFS or Btrfs?

It depends on the workload, and for home NAS duty both are fast enough that you will bottleneck on the network or the drives long before the filesystem. ZFS tends to win on repeated reads because its ARC cache is aggressive and effective when RAM is plentiful. Btrfs can struggle when nearly full or heavily fragmented, and copy-on-write hurts both of them on in-place rewrite workloads like databases and VM images without tuning. Neither filesystem is chosen for raw speed — if maximum throughput were the only goal, plain XFS would beat both. You choose these for integrity and snapshots.

Is ZFS the best filesystem?

It is the most battle-tested filesystem you can run for data integrity, and for its niche — a machine whose job is storing data safely — it is about as close to best as the word means anything. It is not the best everywhere: the out-of-tree licensing situation, the RAM appetite, and the historically rigid pool design make it a poor default for laptops, small single-disk boxes, and casual installs. Best filesystem is a workload question, and ZFS answers one workload extremely well.

Why not use Btrfs?

Three real reasons: you need parity RAID (RAID 5/6) and want it from the filesystem itself, in which case the long-standing write-hole caveats rule Btrfs out; you run heavy in-place-rewrite workloads and do not want to manage nodatacow exceptions; or you want native encryption and per-dataset administration, where ZFS is simply more complete. If none of those apply — and for a lot of home servers none do — the common objections to Btrfs are mostly aged folklore from its rough early years.

The bottom line

Both filesystems checksum your data, heal it when they can, and snapshot it for free — which already puts either of them far ahead of ext4 or XFS for storage you care about. Choose ZFS for the dedicated, planned, RAM-equipped NAS; choose Btrfs for flexibility, mixed hardware, and anything running a stock Linux kernel; and let your platform break the tie, because it usually already has.

If the platform question is the one you are actually stuck on, our TrueNAS vs Unraid comparison walks through exactly that decision. And since neither filesystem replaces real backups, the Kopia vs restic comparison covers the two best open-source tools for getting encrypted copies of your NAS off-site.

Last updated: August 2026.

Last updated: 2026-08-28

Explore more on Talos.tools