Rollback del sottovolume btrfs con sottovolumi secondari


9

Esiste un modo canonico di tornare a un'istantanea di sottovolume che ha sottovolumi secondari. Ad esempio, questo è il layout del mio volume btrfs:

ID 257 gen 59802 top level 5 path __active
ID 258 gen 59784 top level 5 path __snapshot
ID 259 gen 59802 top level 257 path home
ID 260 gen 36538 top level 257 path opt
ID 261 gen 59802 top level 257 path var

Quindi puoi vedere che home, opt e var sono sottovolumi secondari di __active. Se eseguo un'istantanea __attiva tale che questo è il mio nuovo layout:

ID 257 gen 59802 top level 5 path __active
ID 258 gen 59784 top level 5 path __snapshot
ID 259 gen 59802 top level 257 path home
ID 260 gen 36538 top level 257 path opt
ID 261 gen 59802 top level 257 path var
ID 416 gen 59784 top level 258 path __snapshot/__active

Se voglio tornare all'istantanea di __active, c'è un modo per ricollegare home, opt e var al nuovo __active?

Risposte:


3

Se intendi con ricollegare che btrfs subvolume listmostreresti:

ID 257 gen 59802 top level 5 path __active
ID 258 gen 59784 top level 5 path __snapshot
ID 259 gen 59802 top level 416 path home
ID 260 gen 36538 top level 416 path opt
ID 261 gen 59802 top level 416 path var
ID 416 gen 59784 top level 258 path __snapshot/__active

allora no non c'è modo di farlo ora con btrfs-progs.

I sotto-volumi possono essere eliminati solo se tutti i sottovolumi secondari (creati con btrfs subvolume create ...) sono vuoti, tuttavia ciò non è vero per le istantanee (che vengono create con btrfs subvolume snapshot .... Le istantanee possono sempre essere eliminate e quindi se potessi spostarle, ci sarebbe un problema con la rimozione dell'istantanea.

Sebbene sia i sottovolumi secondari sia le istantanee vengano visualizzati nella stessa struttura ad albero e condividano persino il btrfs subvolume delete ..comando, non agiscono allo stesso modo.


1

Prima di tutto, durante la creazione __snapshot/__active, i sottovolumi (home, opt, var) non vengono bloccati. Invece vengono create directory vuote. Quindi __snapshot/__activepuò essere facilmente rimosso, mentre __activenon è possibile.

Ma il punto principale è stato il ripristino __activecon __snapshot/__active. Per quanto ne so, questo non può essere fatto atomicamente. Ma puoi felicemente mvistantanee e altri sottovolumi in giro (purché siano scrivibili). Così facendo ad es

mv __active __snapshot/__active.old
mv __snapshot/__active __active

ripristina __activedall'istantanea, ma spostando i sottovolumi in __snapshot/__active.old/{home,opt,var}. Per riattaccarli ora puoi usare

mv __snapshot/__active.old/{home,opt,var} __active/

e otterrai

ID 257 gen 59804 top level 258 path __snapshot/__active.old
ID 258 gen 59786 top level 5 path __snapshot
ID 259 gen 59802 top level 416 path home
ID 260 gen 36538 top level 416 path opt
ID 261 gen 59802 top level 416 path var
ID 416 gen 59784 top level 5 path __active

Nel caso in cui la tua istantanea sia di sola lettura, puoi fare ad esempio

mv __active __snapshot/__active.old
btrfs subvolume snapshot __snapshot/__active __active
mv __snapshot/__active.old/{home,opt,var} __active/
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.