Ниже приведен мой список томов и снимков ZFS, а также источник и клон для каждого.
Я хочу удалить все снимки, но сохранить все файловые системы. Как я могу это сделать?
Я пробовал zfs promotion
с последующей попыткой удалить каждую файловую систему для множества различных комбинаций файловых систем. Это смещается туда, где «живут» снимки; например, zfs продвигает танк / контейнеры / шесть
снимков перемещений F
из танка / контейнеров /от трех @ F
до цистерн / контейнеров / шесть @ 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
В приведенном выше примере я не хочу уничтожать танк / контейнеров / пять
или танк / контейнеров / два
, но если я zfs рекламируйте
пять и два, я все еще не могу уничтожить снимки. Есть ли решение?
# 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 и е свободен за използване.)