I've been using zfs on Debian for over half a year now. I've been really happy with the stability, going through a handful of power outages and the addition of another drive.
This is such a simple thing, and yet it somehow didn't occur to me until now... if ZFS is your OS's root filesystem, you can use ZFS snapshots to capture and roll back the complete state of your system. Just like that, no other special tools needed. Wow.
It’s fairly graceful with btrfs, and Ubuntu has been doing that by default if the root fs is btrfs for quite a while. The only trouble is that you’re liable to run out of space in /boot/ eventually.
Yes, it just copies & stores the block at the top of the filesystem[0], in the same way naming a git tree will keep its content recursively alive.
However all the data in the snapshot is retained as-is until the snapshot is destroyed, so as the system keeps being used and diverges from the snapshot the snapshot is slowly going to "increase in size" compared to the live FS.
[0] there's also a more recent "checkpoint" concept which "saves" the entire pool by copying the uberblock.
The actual act of snapshotting doesn’t do a whole lot. I believe ZFS uses CoW for that purpose. If you modify a file after a snapshot, the file (or block) will be copied first. Normally, with CoW, the original would then be marked as free space available for writing, but if a snapshot exists, it will be preserved. (This is a general concept; I don’t know the nuances of ZFS’ approach.)
Plugging a small script I wrote that is a bit more targeted than this by only snapshotting the datasets that are going to be changed. Haven't written a readme for it yet (or packaged it :) ) but both files have some header comments explaining how they're used and where they're put.
Do you mean ZFS as root or as a data partition? and when you say migrating to a fresh OS do you mean the Stretch to Buster upgrade? If so, it is great to hear it is working so well now.
ZFS data volume. Haven't tried root yet (wasn't easily available when I created the volume). Still, a data volume in ZFS is so much better than the traditional md raid. Won't go back.
Not the grandparent, but I've moved a running system from one ZFS pool to another without physically touching the computer. The OS was running off a ZFS root.