ZFS löscht Snapshots mit Abhängigkeiten und Klonen

9

Unten ist meine Liste der ZFS-Volumes und Snapshots sowie der Ursprung und der Klon für jedes.

Ich möchte alle Snapshots löschen, aber alle Dateisysteme behalten. Wie kann ich das machen?

Ich habe versucht, zfs promotegefolgt von dem Versuch, jedes Dateisystem für viele verschiedene Kombinationen der Dateisysteme zu löschen. Dies verschiebt sich dahin, wo die Schnappschüsse "leben"; Verschiebt beispielsweise den zfs promote tank/containers/sixSchnappschuss Fvon tank/containers/three@Fnach tank/containers/six@F. Die Live-Daten im Dateisystem werden nicht geändert (was ich will!), Aber ich kann den Schnappschuss immer noch nicht löschen (was ich nicht will).

Ein typischer zfs destroyVersuch sagt mir , es abhängige Klone hat, von denen einige (die Snapshots) ich nicht zerstören wollen, aber andere , von denen (die Dateisysteme) ich nicht zerstören wollen.

Zum Beispiel.

# 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

Im obigen Beispiel möchte ich nicht zerstören tank/containers/fiveoder tank/containers/two, aber wenn ich zfs promotefünf und zwei habe, kann ich immer noch keine Schnappschüsse zerstören. Gibt es eine Lösung?

# 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
allquixotic
quelle

Antworten:

9

AFAIK Sie müssen diese Datensätze in neue, unabhängige Datensätze kopieren. Bei der Heraufstufung wird nur umgeschaltet, welches Dataset "Eltern" oder "Kind" ist. Es werden keine Abhängigkeiten aufgehoben, wenn Sie beide beibehalten möchten.

Z.B:

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

Nehmen Sie sich Zeit und stellen Sie sicher, was Sie tun. Besonders bei den eigentlichen Löschungen.

Diese Replikation erfolgt Block für Block. Wenn also wichtige Daten enthalten sind, dauert es eine Weile. Der pvTeil ist streng optional, gibt Ihnen jedoch einen Fortschrittsbalken, den Sie während des Wartens anzeigen können.

Ziehen Sie möglicherweise auch Syncoid in Betracht, um die Replikationsaufgaben jetzt und in Zukunft zu automatisieren. (Obligatorisch: Ich bin der ursprüngliche Autor dieses Tools, das GPLv3-lizenziert und kostenlos verwendet werden kann.)

Jim Salter
quelle
Jim, bitte gib deine Zugehörigkeit zu syncoid bekannt. Aus den Site-Regeln: "Veröffentlichen Sie gute, relevante Antworten. Wenn sich einige (aber nicht alle) auf Ihr Produkt oder Ihre Website beziehen, ist dies in Ordnung. Sie müssen jedoch Ihre Zugehörigkeit in Ihren Antworten offenlegen."
Costin Gușă
Glücklich, Costin - wusste nicht, dass es eine große Sache war, da ich direkt mit dem Projekt GitHub Repo verknüpft war und kein Wort über Beratungsleistungen sprach.
Jim Salter