Come fare un'istantanea di btrfs?


22

La mia partizione / home è composta da un intero disco fisico. È formattato come btrfs. Voglio fare un'istantanea. Sono confuso riguardo alla denominazione del sottovolume, in particolare.

Sono consapevole che ci sono domande simili, ma ogni domanda simile sembra porre qualcosa di diverso da quello che sto chiedendo (e sono più vecchi, il che significa probabilmente obsoleti, dato il rapido sviluppo di btrfs). Ad esempio, la risposta a questa domanda non è apparentemente la risposta alla mia domanda perché la mia partizione / home è un volume separato e la pagina man di btrfs mostra un comando diverso per la creazione di istantanee ora.

un altro problema simile, nessuna soluzione solida .
qualcun altro confuso quanto me sui problemi di denominazione

La mia domanda:

Avvio semplice: è questo il comando corretto per eseguire una semplice istantanea della mia partizione home?

btrfs subvolume snapshot /home/@home /home/@home_snapshot_20120421

Sono stato davvero coraggioso e testato e non funziona. L'errore è error accessing /home/@home. Come mostrato di seguito, è elencato @home.

Sono ovviamente confuso su nomi di sottovolume. Devo usarli nella creazione di istantanee? Alcuni esempi mostrano come scattare le foto di home usando /homecome parametro source, ma sulla base di esempi di volumi di root, mi sembra che debba usare /home/@home.

Questo comando funzionerebbe? E se no, perché?

btrfs subvolume snapshot /home /home/@home_snapshot_20120421

È @solo una convenzione di denominazione? È significativo affatto?

Ecco alcuni output che potrebbero essere rilevanti:

btrfs subvolume list /home
ID 256 top level 5 path @home

Non sono sicuro di cosa significhi esattamente. Quando provo, btrfs device scanviene visualizzato un errore (ad esempio, impossibile scansionare il dispositivo / dev / sda1). Il mio file system non ha errori. Va tutto bene.

Ecco le mie partizioni. In risposta a una risposta, no / home non è la mia unica partizione btrfs.

/dev/sda1: (boot partition) TYPE="ext2"  
/dev/sda2: (root partition) TYPE="btrfs"  
/dev/sdb1: (home partition) TYPE="btrfs"  
/dev/sdc1: (shared partition) TYPE="btrfs"  
/dev/sdc2: TYPE="swap"  

la community deciderà di repo ...
One Zero,

Risposte:


19

Qual è il comando corretto per creare un'istantanea della mia partizione home su Ubuntu 12.04?

Dato che home è su una partizione btrfs ed è montata come / home, il comando corretto è:

sudo btrfs subvolume snapshot /home/ /home/<any_name_you_choose_for_the_snapshot>

Ecco i miei risultati:

Prima di eseguire il comando oggi:

$ btrfs subvolume list /home  
ID 256 top level 5 path @home  
ID 257 top level 5 path @home/@snapshot_20120521_1936

Il comando:

$ sudo btrfs subvolume snapshot /home/ /home/@snapshot_20120611_1307  
Create a snapshot of '/home/' in '/home/@snapshot_20120611_1307'

Dopo aver eseguito il comando oggi:

$ btrfs subvolume list /home  
ID 256 top level 5 path @home  
ID 257 top level 5 path @home/@snapshot_20120521_1936  
ID 258 top level 5 path @home/@snapshot_20120611_1307

L'unico problema con questo metodo è che le istantanee vengono visualizzate quando si (elenco) / home.

La Wiki della comunità Ubuntu è stata aggiornata con una soluzione per questo. Ecco qui:

Come lavorare con le istantanee nel layout di Ubuntu

Per lavorare con le istantanee di / o / home nel layout di Ubuntu è molto conveniente montare il filesystem btrfs in una posizione separata e lavorare dalla cima dell'albero di btrfs, piuttosto che dai sottovolumi montati. <- questa è la soluzione. Sfortunatamente, non è conveniente .

sudo mount /dev/sdX# /mnt

Per creare uno snapshot usa la stessa sintassi che ho usato sopra:

sudo btrfs subvolume snapshot /mnt/@ /mnt/@_snapshot

Questo creerà un'istantanea del sottovolume @ denominato @_snapshot che si trova anche nella parte superiore dell'albero btrfs. Dal momento che si trova nella parte superiore dell'albero, non verrà visualizzato quando si elencano i file in un volume montato.

Per tornare a un'istantanea, devi semplicemente cambiarne il nome con il nome che Ubuntu monta e riavvia. Ecco come cambiare il nome:

sudo mv /mnt/@ /mnt/@_badroot
sudo mv /mnt/@_snapshot /mnt/@

Per eliminare un'istantanea utilizzare:

sudo btrfs subvolume delete /mnt/@_badroot

Le istantanee di btrfs sono sottovolumi in sé e autosufficienti, eliminando il sottovolume @ in questo modo va bene, a condizione che ne abbiamo una sostituzione.

NOTA: il comando btrfs-tools set-defaultinterromperà il layout di Ubuntu.


Quindi ci sei, vero? Ora dovresti essere in grado di montare le tue istantanee.
turbo,

In realtà non ho ancora provato a montarli. E ho appena visto la risposta di psusi sul pacchetto apt-btrfs-snapshot. Sembra interessante, vero?
MountainX per Monica Cellio,

Sì, l'ho menzionato anche nel terzo punto. Siamo spiacenti di averlo fatto notare;)
turbo,

Ti suggerisco quindi di contrassegnare la tua soluzione come risposta.
turbo,

C'è una soluzione per le istantanee che appaiono quando sei / home. Sto modificando la mia risposta con le informazioni ora.
MountainX per Monica Cellio,

11

Ok prima le cose prima:

  • Il nome del sottovolume che stai guardando è @homecome mostrato da btrfs subvolume list /home. È montato dentro /home. @home è il nome del sottovolume inoltre ha l'ID 256 quindi molto probabilmente solo il tuo / home è formata come btrfs.

  • Ora per creare un'istantanea di @home devi emettere: sudo btrfs subvolume snapshot /home/ /home/@home_snapshot_20120421

  • Il sottovolume può avere qualsiasi nome. La @ è la convenzione di Ubuntu al momento dell'installazione. (Se usi apt-btrfs-snapshotil sottovolume radice deve essere chiamato @tra l'altro.) Il wiki della comunità raccomanda vivamente di conservarlo@ come root e @homecome home poiché è montato in quel modo. Ciò è particolarmente importante se si desidera eseguire il rollback: NON si deve usare il sottovolume btrfs set-default (non sintassi evidenziata dallo scopo).

  • Per btrfs device scante devi usaresudo .

  • Per eliminare un volume secondario è possibile utilizzare sudo btrfs subvolume delete @home_snapshot_20120421

Tutti i comandi btrfs possono essere abbreviati purché non ambigui, quindi ad esempio sudo btrfs device scanpossono essere troncati insudo btrfs d s , sudo btrfs dev sco nulla in mezzo.

Spero che abbia risposto alle tue domande. Ci sono alcuni strumenti là fuori per eseguire backup regolari, btrfs-snapshot-rotazione è un esempio. Usare quelli con cautela poiché nessuno di loro è veramente maturo o ha guadagnato abbastanza trazione, cioè possono benissimo contenere bug.


Ottengo un errore:$ sudo btrfs subvolume snapshot @home home/@snapshot_20120611_1257 ERROR: error accessing '@home'
MountainX per Monica Cellio l'

Inoltre, non ho ancora avuto successo btrfs device scan. Qualsiasi variante, incluso l'utilizzo, sudodà l'errore "ERRORE: impossibile eseguire la scansione del dispositivo '/ dev / sdX'" dove X è un nome valido come a, a1, b, ecc.
MountainX per Monica Cellio,

@OneZero: Non ho ancora tutte le risposte, ma ho trovato il comando corretto per creare un'istantanea della mia partizione home su Ubuntu 12.04 e ho fornito queste informazioni come risposta di seguito.
MountainX per Monica Cellio l'

è davvero strano. Ho controllato con la mia partizione btrfs btrfs sub snap @ /mnt/randome ha funzionato per me. Poi di nuovo ero in / mnt dove è stato montato @. Ci scusiamo per la confusione
turbo l'

@turbo: la tua risposta è stata molto utile. Non c'è bisogno di scusarsi per aver cercato di aiutare. Anche le pagine di Ubuntu non sono chiare. Alla fine capiremo tutto.
MountainX per Monica Cellio l'

10

Installare il apt-btrfs-snapshotpacchetto e utilizzare i suoi sottocomandi list, snapshot, deletee set-default.

Questo è uno script che avvolge i btrfscomandi di livello inferiore . Funziona montando prima il filesystem di root btrfs da qualche parte. Con ciò intendo la radice reale, al contrario del /@sottovolume che è normalmente montato come /. In altre parole, è necessario eseguire mount /dev/sda1 /mntin modo da poter visualizzare le sottovolumi che saranno elencati come /mnt/@, /mnt/@homee tutti gli altri che avete creato. Da lì puoi btrfs subvolume snapshot /mnt/@home @snapshot-today, che creerà un'istantanea del /@homenome /@snapshot-today. Confronta questo con la corsa btrfs subvolume snapshot /home /home/@snapshot_today, che invece crea l'istantanea come figlio di /@home, quindi si presenta quando tu ls /homee il suo vero nome è /@home/@snapshot-today.

Abortire uno snapshot è solo una semplice operazione di ridenominazione: mv /mnt/@home @backup ; mv /mnt/@snapshot-today @home. La prossima volta che si avvia, quando va a montare /@homein /home, troverà l'istantanea.

È un po 'complicato avvolgere la testa perché devi tenere presente la differenza tra come btrfs vede le cose e come il kernel vede le cose, che è influenzato dalle opzioni di mount (l'argomento subvol = in particolare).

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.