I finally moved a workstation's root filesystem onto ZFS. I've run ZFS on data pools for years and trusted it completely there, but root always felt like a step too clever. Then I bricked a box with a bad kernel update one too many times, and the appeal of being able to roll the whole system back in seconds won the argument.
The install was the fiddly part. ZFS root means setting up the pool, the datasets and the bootloader by hand because the distro installer won't do it for you. A boot pool kept simple for GRUB's sake, a root pool for everything else, and a dataset layout that puts the things you want to snapshot together and the things you don't (/var/log, caches) somewhere separate. An hour of following a guide carefully and double-checking every zpool command before I hit return.
The payoff arrived the first time I ran a system upgrade. Before touching anything:
zfs snapshot rpool/ROOT/default@pre-update
A second. No copying, no space used to speak of until things diverge. If the update wedged the machine, I'd boot the previous environment and roll back, and I'd be exactly where I started. That safety net changes how you behave. I patch more willingly now, because the cost of a bad patch dropped from an evening of recovery to a reboot.
It is not magic and it is not free: ZFS wants RAM and it wants you to understand it before you lean on it. But for a machine I actually depend on, the snapshot-before-anything-risky ritual has already paid for the awkward install. I should have done it years ago.