Zfs

ZFS 測試回滾未按預期工作

  • November 9, 2018

我對 ZFS 快照和回滾應該如何工作感到困惑。我有一個包含幾個 zvol 的 zpool(每個 zvol 都由 mirrorvdev 的分區組成)。我製作這樣的快照:

~$ 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 有什麼問題?

您只進行了快照nvme-tank,但您沒有快照nvme-tank/ext4-zvolnvme-tank/ntfs-zvol,其中一個包含您創建的文件。所以什麼都沒有發生,因為您正在拍攝與創建文件的數據集不同的數據集。

如果您希望快照遞歸到後代數據集/zvol,則必須明確要求遞歸快照,使用zfs snapshot -r. 但是,您一次只能回滾一個特定的數據集/zvol zfs rollback

引用自:https://serverfault.com/questions/939237