ZFS elimina le istantanee con interdipendenze e cloni


9

Di seguito è riportato il mio elenco di volumi e snapshot ZFS, nonché l'origine e il clone di ciascuno.

Voglio eliminare tutte le istantanee, ma mantenere tutti i filesystem. Come posso fare questo?

Ho provato zfs promoteseguito dal tentativo di eliminare ciascun filesystem per molte diverse combinazioni dei filesystem. Questo si sposta intorno a dove "vivono" le istantanee; ad esempio, zfs promote tank/containers/sixsposta l'istantanea Fda tank/containers/three@Fa tank/containers/six@F. I dati live nel filesystem non vengono modificati (che è quello che voglio!), Ma non riesco ancora a eliminare lo snapshot (che non è quello che voglio).

Un tipico zfs destroytentativo mi dice che ha cloni dipendenti, alcuni dei quali (istantanee) che non voglio distruggere, ma altri dei quali (i filesystem) che non vogliono distruggere.

Per esempio.

# 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

Nell'esempio sopra, non voglio distruggere tank/containers/fiveo tank/containers/two, ma se avessi zfs promotecinque e due, non potrei ancora distruggere alcuna istantanea. C'è una soluzione?

# 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

Risposte:


9

AFAIK dovrai copiare questi set di dati in nuovi set di dati indipendenti. La promozione cambia semplicemente il set di dati "parent" rispetto a "child", in realtà non interrompe alcuna dipendenza se si desidera mantenere entrambi.

Per esempio:

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

Prenditi il ​​tuo tempo e sii sicuro di quello che stai facendo. Soprattutto con le effettive cancellazioni.

Questa replica è blocco per blocco, quindi se ci sono dati significativi lì dentro ci vorrà del tempo. La pvparte è strettamente facoltativa, ma ti fornirà una barra di avanzamento da guardare mentre aspetti.

Potresti anche considerare syncoid per automatizzare le attività di replica, ora e in futuro. (Obbligatorio: sono l'autore originale di questo strumento, che è concesso in licenza GPLv3 e gratuito da usare.)


Jim, ti preghiamo di rivelare la tua affiliazione con syncoid. Dalle regole del sito: "Pubblica risposte valide e pertinenti e se alcuni (ma non tutti) si verificano sul tuo prodotto o sito Web, va bene. Tuttavia, devi rivelare la tua affiliazione nelle risposte."
Costin Gușă,

Felice, Costin - non mi ero reso conto che fosse un grosso problema, dato che stavo collegando direttamente al repository GitHub del progetto e non parlavo dei servizi di consulenza.
Jim Salter,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.