I am confused about how ZFS snapshots and rollback are supposed to work.
I have a zpool containing a couple zvols (each made from partitions of a mirrorvdev). I make a snapshot like this:
~$ sudo zfs snapshot [email protected]_test
Then I boot a VM located on one of the zvols in the zpool and create a test file
~$ echo "This is a test of the rollback system" > rbtest.txt
Then I shut down the VM and do the rollback. As I understand the concept, the rollback should revert everything in nvme-tank to the state it was when I took the snapshot, before making rbtest.txt.
~$ sudo zfs rollback [email protected]_test
The snapshot is there:
~$ zfs list -t all -r nvme-tank NAME USED AVAIL REFER MOUNTPOINT nvme-tank 887G 12.1G 24K /media/nvme-tank [email protected] 0B - 24K - [email protected]_test 0B - 24K - nvme-tank/ext4-zvol 474G 449G 37.8G - nvme-tank/ntfs-zvol 413G 23.9G 401G -
So, am I misunderstanding what snapshots are supposed to do, using them incorrectly, or is something broken with my zfs?
You only snapshotted
nvme-tank, but you didn’t snapshot either of
nvme-tank/ntfs-zvol, one of which contains the file you created. So nothing happened because you were snapshotting a different dataset than the one you created the file in.
If you want snapshots to be recursive to descendent datasets/zvols, you have to explicitly ask for recursive snapshots, with
zfs snapshot -r. However, you can only rollback one specific dataset/zvol at a time with
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.