Last few weeks, I reinstalled 4 of my machines to use ZFS instead of ext4. Read my other post Setting up root on ZFS for installing Debian 11 (bullseye) with ZFS and my ZFS commands post showing simple commands for creating zpools, datasets, snapshots...
I want to use ZFS to be able to:
- check the integrity of my files
- make backups easier to handle (compare to borg backup and rdiff-backup). It is easy to either restore the full snapshot or a single file
- better performance when synchronizing data between machines (compare to rsync). Why? Because the file checksums are already computed with ZFS on the sending and the receiving machines and the data that needs to be sent is also precomputed: it is everything since the last snapshot
- compress the data on disk automatically
I thought ZFS was resource intensive, but it's quite ok even on old and slow machines like these:
- Macbook Air 2008: Cpu Intel Core 2 (2 cores), 2GB RAM
- Dell XPS 13, Cpu Intel Skylake (2 cores, 4 HW threads), 16 GB RAM
- Intel NUC, Cpu Intel Kaby lake (2 cores, 4 HW threads), 32 GB RAM
- Acer laptop 2009, Cpu AMD C-60 (2 cores, 1ghz), 4 GB RAM
It uses more CPU and more RAM than other file systems but the machines are still usable compare to my previous setup with ext4.
The performance for reading and writing files is good,
du are slower than on ext4.
I configured my ZFS pools to compress the data on disk with LZ4, it is quite painless. The Compression ratios are between 1.3 and 1.58, I have a lot of text files: source code, html, ... Of course you are not going to get the compression ratio if your data is mainly binary like images.