Zfs
ZFS 刪除具有相互依賴關係和複製的快照
下面是我的 ZFS 捲和快照列表,以及每個的源和複製。
**我想刪除所有快照,但保留所有文件系統。**我怎樣才能做到這一點?
我嘗試
zfs promote
過嘗試為文件系統的許多不同組合刪除每個文件系統。這會圍繞快照“存在”的位置而變化;例如,zfs promote tank/containers/six
將快照F
從移動tank/containers/three@F
到tank/containers/six@F
。文件系統中的實時數據沒有被修改(這是我想要的!),但我仍然無法刪除快照(這不是我想要的)。一個典型的
zfs destroy
嘗試告訴我它有依賴的複製,其中一些(快照)我確實想銷毀,但其他一些(文件系統)我不想銷毀。例如。
# zfs destroy tank/containers/six@A cannot destroy 'tank/containers/six@A': snapshot has dependent clones use '-R' to destroy the following datasets: tank/containers/five tank/containers/two@B tank/containers/two
在上面的例子中,我不想銷毀
tank/containers/five
ortank/containers/two
,但是如果我zfs promote
五和二,我仍然無法銷毀任何快照。有解決辦法嗎?# zfs list -t all -o name,origin,clones NAME ORIGIN CLONES tank - - tank/containers - - tank/containers/five tank/containers/two@B - tank/containers/four tank/containers/six@C - tank/containers/one - - tank/containers/one@E - tank/containers/three tank/containers/two tank/containers/six@A - tank/containers/two@B - tank/containers/five tank/containers/six tank/containers/three@F - tank/containers/six@A - tank/containers/two tank/containers/six@C - tank/containers/four tank/containers/three tank/containers/one@E - tank/containers/three@F - tank/containers/six
AFAIK 您將不得不將這些數據集複製到新的獨立數據集。升級只是切換哪個數據集是“父”與“子”,如果您想同時保留兩者,它實際上不會破壞任何依賴關係。
例如:
root@box~# zfs snapshot tank/containers/six@1 root@box~# zfs send tank/containers/six@1 | pv | zfs receive tank/containers/newsix root@box~# zfs destroy -R tank/containers/six root@box~# zfs destroy tank/containers/three@F root@box~# zfs rename tank/containers/newsix tank/containers/six
花點時間,確定你在做什麼。尤其是實際刪除。
這種複制是逐塊複製的,因此如果其中有任何重要數據,則需要一段時間。該
pv
部分是嚴格可選的,但會在您等待時為您提供一個進度條供您查看。也可以考慮在現在和將來自動執行複制任務。(必填:我是這個工具的原作者,它是 GPLv3 許可的,可以免費使用。)