ZFS test rollback doesn't work as expected
Clash Royale CLAN TAG#URR8PPP
up vote
3
down vote
favorite
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 nvme-tank@roll_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 nvme-tank@roll_test
I then reboot the vm, check for rbtest.txt, and there it is, still there!
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
nvme-tank@nov82018 0B - 24K -
nvme-tank@roll_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?
zfs snapshot zfsonlinux rollback
add a comment |Â
up vote
3
down vote
favorite
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 nvme-tank@roll_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 nvme-tank@roll_test
I then reboot the vm, check for rbtest.txt, and there it is, still there!
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
nvme-tank@nov82018 0B - 24K -
nvme-tank@roll_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?
zfs snapshot zfsonlinux rollback
add a comment |Â
up vote
3
down vote
favorite
up vote
3
down vote
favorite
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 nvme-tank@roll_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 nvme-tank@roll_test
I then reboot the vm, check for rbtest.txt, and there it is, still there!
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
nvme-tank@nov82018 0B - 24K -
nvme-tank@roll_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?
zfs snapshot zfsonlinux rollback
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 nvme-tank@roll_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 nvme-tank@roll_test
I then reboot the vm, check for rbtest.txt, and there it is, still there!
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
nvme-tank@nov82018 0B - 24K -
nvme-tank@roll_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?
zfs snapshot zfsonlinux rollback
zfs snapshot zfsonlinux rollback
asked 3 hours ago
Thoughtcraft
1426
1426
add a comment |Â
add a comment |Â
1 Answer
1
active
oldest
votes
up vote
3
down vote
accepted
You only snapshotted nvme-tank
, but you didn't snapshot either of nvme-tank/ext4-zvol
or 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 zfs rollback
.
Additionally, in OpenZFS a new feature channel programs (illumos version of the man page) will allow you to recursively rollback a bunch of datasets at once, but you'll have to write a short Lua script to implement that specific function.
â Dan
2 hours ago
add a comment |Â
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
3
down vote
accepted
You only snapshotted nvme-tank
, but you didn't snapshot either of nvme-tank/ext4-zvol
or 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 zfs rollback
.
Additionally, in OpenZFS a new feature channel programs (illumos version of the man page) will allow you to recursively rollback a bunch of datasets at once, but you'll have to write a short Lua script to implement that specific function.
â Dan
2 hours ago
add a comment |Â
up vote
3
down vote
accepted
You only snapshotted nvme-tank
, but you didn't snapshot either of nvme-tank/ext4-zvol
or 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 zfs rollback
.
Additionally, in OpenZFS a new feature channel programs (illumos version of the man page) will allow you to recursively rollback a bunch of datasets at once, but you'll have to write a short Lua script to implement that specific function.
â Dan
2 hours ago
add a comment |Â
up vote
3
down vote
accepted
up vote
3
down vote
accepted
You only snapshotted nvme-tank
, but you didn't snapshot either of nvme-tank/ext4-zvol
or 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 zfs rollback
.
You only snapshotted nvme-tank
, but you didn't snapshot either of nvme-tank/ext4-zvol
or 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 zfs rollback
.
answered 3 hours ago
Michael Hamptonâ¦
160k26296604
160k26296604
Additionally, in OpenZFS a new feature channel programs (illumos version of the man page) will allow you to recursively rollback a bunch of datasets at once, but you'll have to write a short Lua script to implement that specific function.
â Dan
2 hours ago
add a comment |Â
Additionally, in OpenZFS a new feature channel programs (illumos version of the man page) will allow you to recursively rollback a bunch of datasets at once, but you'll have to write a short Lua script to implement that specific function.
â Dan
2 hours ago
Additionally, in OpenZFS a new feature channel programs (illumos version of the man page) will allow you to recursively rollback a bunch of datasets at once, but you'll have to write a short Lua script to implement that specific function.
â Dan
2 hours ago
Additionally, in OpenZFS a new feature channel programs (illumos version of the man page) will allow you to recursively rollback a bunch of datasets at once, but you'll have to write a short Lua script to implement that specific function.
â Dan
2 hours ago
add a comment |Â
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fserverfault.com%2fquestions%2f939237%2fzfs-test-rollback-doesnt-work-as-expected%23new-answer', 'question_page');
);
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password