ZFS 测试回滚未按预期进行

ZFS 测试回滚未按预期进行

我对 ZFS 快照和回滚应该如何工作感到困惑。我有一个包含几个 zvol(每个都由 mirrorvdev 的分区组成)的 zpool。我制作了这样的快照:

~$ sudo zfs snapshot nvme-tank@roll_test

然后我启动一个位于 zpool 中某个 zvol 上的 VM,并创建一个测试文件

~$ echo "This is a test of the rollback system" > rbtest.txt

然后我关闭虚拟机并执行回滚。据我理解,回滚应该将 nvme-tank 中的所有内容恢复到我拍摄快照时的状态,然后再制作 rbtest.txt。

~$ sudo zfs rollback nvme-tank@roll_test

然后我重新启动虚拟机,检查 rbtest.txt,它还在那里! 在此处输入图片描述

快照在那里:

~$ 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  -

那么,我是否误解了快照的作用,错误地使用它们,或者我的 zfs 出了问题?

答案1

您只对 进行了快照nvme-tank,但没有对nvme-tank/ext4-zvol或进行快照nvme-tank/ntfs-zvol,其中一个包含您创建的文件。因此什么也没有发生,因为您快照的数据集与您创建文件时所在的数据集不同。

如果您希望快照递归到后代数据集/zvol,则必须使用 明确请求递归快照zfs snapshot -r。但是,您每次只能使用 回滚一个特定的数据集/zvol zfs rollback

相关内容