Zfs

ZFS 刪除具有相互依賴關係和複製的快照

  • January 29, 2019

下面是我的 ZFS 捲和快照列表,以及每個的源和複製。

**我想刪除所有快照,但保留所有文件系統。**我怎樣才能做到這一點?

我嘗試zfs promote過嘗試為文件系統的許多不同組合刪除每個文件系統。這會圍繞快照“存在”的位置而變化;例如,zfs promote tank/containers/six將快照F從移動tank/containers/three@Ftank/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/fiveor tank/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 許可的,可以免費使用。)

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