Удаление снимков ZFS с взаимозависимостями и клонами

Ниже приведен мой список томов и снимков 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
8
задан 14 May 2017 в 01:43
1 ответ

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 и е свободен за използване.)

8
ответ дан 2 December 2019 в 23:01

Теги

Похожие вопросы