Zfs
ZFS 測試回滾未按預期工作
我對 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-zvol
或nvme-tank/ntfs-zvol
,其中一個包含您創建的文件。所以什麼都沒有發生,因為您正在拍攝與創建文件的數據集不同的數據集。如果您希望快照遞歸到後代數據集/zvol,則必須明確要求遞歸快照,使用
zfs snapshot -r
. 但是,您一次只能回滾一個特定的數據集/zvolzfs rollback
。