ext4 and btrfs are the two filesystems a Linux desktop or server actually chooses between in 2026. ext4 is the dependable default that has carried Debian, Ubuntu, and Fedora installs for over a decade; btrfs trades some of that conservatism for snapshots, checksums, and built-in compression. Both are excellent — for different definitions of excellent.

What each one optimises for #

Capabilityext4btrfs
MaturityDecades of production useMature, still evolving
ChecksumsMetadata only (journal)All data and metadata
SnapshotsNo (need LVM)Built-in, instant
CompressionNozstd, transparent
SubvolumesNoYes — flexible layouts
ResizeOffline shrink, online growOnline both ways
Recovery storyfsck, well understoodscrub, self-healing with redundancy

The checksum row is the philosophical divide: btrfs detects silent corruption — bit rot, misbehaving cables, firmware lies — because every block carries one. ext4 trusts the hardware and journals for crashes, not decay.

Working with each #

Day to day, both are invisible. The moments they differ:

btrfs: snapshot before a system change
$ sudo btrfs subvolume snapshot / /snapshots/pre-update

That instant snapshot is btrfs's headline act — the basis of openSUSE and Fedora's system rollback, and the reason "I'll just try the update" stops being a gamble on those systems.

btrfs: verify every block, on a schedule
$ sudo btrfs scrub start /
ext4: the classic check
$ sudo touch /forcefsck    # or: fsck from recovery, unmounted

Choosing honestly #

ext4 remains the right answer when you want the filesystem to be boring: maximum compatibility, predictable performance, tools every rescue ISO carries. btrfs is the right answer when snapshots or compression pay rent — rolling system updates, build trees that compress hugely, datasets that deserve checksums. On servers with many disks, xz/zfs also enter the conversation; on the desktop it is genuinely these two.

Sizing and disk math live in df and du; the underlying device work is dd. The terminal notes series continues.