ZFS

Esercitazione sulle istantanee ZFS

Esercitazione sulle istantanee ZFS

Le istantanee sono importanti se stai eseguendo una semplice macchina virtuale sul tuo computer di casa o se si tratta di un database aziendale che viene costantemente aggiornato e modificato. È importante disporre di istantanee, ovvero una copia dell'intero filesystem com'era in un determinato periodo di tempo.

Le persone spesso perdono traccia di dove le cose sono andate storte, un file è stato cancellato e nessuno si è accorto che era sparito. Sono passati diversi backup e ora ti rendi conto che manca un file importante tra tutti i backup disponibili delle ultime 5 settimane. In questo tutorial, vedremo come utilizzare gli snapshot ZFS e toccheremo varie politiche di snapshot che funzionerebbero in modo ottimale, in termini sia di utilizzo delle risorse che di recuperabilità.

Meccanismo Copy-On-Write

ZFS ha sia la panoramica di alto livello di file e directory e comprende come i dati vengono scritti sul disco. Quando si scrivono fisicamente i dati su un disco, lo si fa in blocchi discreti. In genere, la dimensione del blocco può arrivare fino a 1 MB, ma l'impostazione predefinita è solitamente 128 KB. Ora, questo significa che ogni modifica (lettura, scrittura o cancellazione) avverrà nei blocchi discreti.

Il meccanismo copy-on-write assicura che ogni volta che un blocco viene modificato, invece di modificare direttamente il blocco, esegua una copia del blocco con le modifiche richieste fatte sul nuovo blocco.

Ciò è particolarmente utile nei casi in cui, ad esempio, si verifica un'interruzione di corrente e il sistema si arresta in modo anomalo durante la scrittura di nuovi dati sul disco. Se ciò accade in un filesystem tradizionale, i tuoi file verranno danneggiati o lasciati con dei buchi. Ma se stai usando ZFS, potresti perdere la transazione in corso mentre stava accadendo, ma l'ultimo stato valido dei tuoi file rimarrà comunque intatto.

Anche le istantanee si basano su questa funzionalità, e in effetti abbastanza pesantemente. Quando si scatta un'istantanea di un determinato set di dati ("set di dati" è il termine ZFS per un file system), ZFS registra solo il timestamp quando è stata creata l'istantanea. questo è tutto! Nessun dato viene copiato e non viene consumato spazio di archiviazione aggiuntivo.

Solo quando il filesystem cambia e i dati in esso contenuti divergono dallo snapshot, lo snapshot inizia a consumare spazio di archiviazione aggiuntivo. Quello che succede sotto il cofano è questo: invece di riciclare i vecchi blocchi nel tempo, ZFS li tiene in giro. Ciò migliora anche l'utilizzo dello spazio di archiviazione. Se istantanei un set di dati da 20 GB e modifichi solo alcuni file di testo qua e là, l'istantanea potrebbe richiedere solo pochi MB di spazio.


Creazione di istantanee

Per dimostrare l'uso delle istantanee, iniziamo con un set di dati che contiene molti file di testo, solo per semplificare la questione. La macchina virtuale che userò per la demo esegue FreeBSD 11.1-RELEASE-p3 che è l'ultima versione stabile disponibile al momento della stesura di questo documento. Il filesystem di root è montato su zroot pool per impostazione predefinita e molte delle directory familiari come /usr/src, /home, /etc sono tutti i propri set di dati montati su zroot. Se non sai cosa significa un pool (o uno zpool), nel vernacolo ZFS, varrebbe la pena leggerlo prima di continuare.

Uno dei tanti filesystem, o set di dati, che vengono forniti di default su FreeBSD è: zroot/usr/src

Per guardarne le proprietà, esegui il seguente comando.

[email protected]:~$ zfs list zroot/usr/src

Come puoi vedere, utilizza 633 MB di spazio di archiviazione. Contiene l'intero albero dei sorgenti per il sistema operativo.

Facciamo un'istantanea di zroot/usr/src

[email protected]:~$ zfs snapshot zroot/usr/[email protected]

Il simbolo @ funge da delimitatore tra il set di dati e il nome dell'istantanea, che nel nostro caso è istantanea1.

Ora diamo un'occhiata allo stato dell'istantanea mentre viene creata.

Eseguendo il comando:

zfs list -rt all zroot/usr/src

Puoi vedere che l'istantanea non usa spazio extra quando nasce. Non c'è nemmeno spazio disponibile, perché è un set di dati di sola lettura, lo snapshot stesso non può crescere, modificare o rimpicciolirsi. Infine, non è montato da nessuna parte, il che lo rende completamente isolato dalla data gerarchia del filesystem.

Ora rimuoviamo il sbin directory in /usr/src/

[email protected]:$ rm /usr/src/sbin

Guardando l'istantanea ora vedrai che è cresciuta,

Ciò è previsto perché il meccanismo di copia su scrittura è al lavoro qui e l'eliminazione (o la modifica) dei file ha portato a più dati associati solo allo snapshot e non al set di dati effettivamente in uso.

Notare la colonna REFER nell'output sopra. Ti dà la quantità di dati accessibili sul set di dati mentre la colonna USED ti mostra solo quanto spazio è occupato sul disco fisico.

Il meccanismo Copy-On-Write di ZFS spesso fornisce questi risultati controintuitivi in ​​cui l'eliminazione di un file farebbe sembrare che ora venga utilizzato più spazio rispetto a prima. Tuttavia, avendo letto finora, sai cosa sta realmente accadendo!

Prima di finire, recuperiamo il sbin a partire dal istantanea1. Per farlo basta eseguire:

[email protected]:/usr/src$ zfs rollback zroot/usr/[email protected]

Politica di snapshot

La prossima domanda da porsi è: quanto spesso vuoi scattare le istantanee?? Sebbene possa variare da un'azienda all'altra, prendiamo l'esempio di un database molto dinamico che cambia ogni tanto.

All'inizio inizieresti a scattare istantanee ogni 6 ore circa, ma poiché il database cambia così tanto diventerebbe presto impossibile archiviare tutte le numerose istantanee che sono state create. Quindi il prossimo passo sarebbe eliminare le istantanee che sono più vecchie di, diciamo, 48 ore.

Ora, il problema sarebbe recuperare qualcosa che è stato perso 49 ore fa. Per aggirare questo problema, puoi conservare una o due istantanee da quella cronologia di 48 ore e conservarle per una settimana. Eliminali quando diventano più grandi di così.

E se riesci ad andare avanti in questo modo, potresti stipare istantanee fino alla genesi stessa del sistema, proprio in ordine decrescente di frequenza. Infine, vorrei sottolineare che queste istantanee sono DI SOLA LETTURA, il che significa che se vieni infettato da un ransomware e ottieni tutti i tuoi dati crittografati (modificati). Queste istantanee, molto probabilmente, sarebbero ancora intatte.

Le migliori distribuzioni Linux per il gioco nel 2021
Il sistema operativo Linux ha fatto molta strada dal suo aspetto originale, semplice e basato su server. Questo sistema operativo è notevolmente migli...
Come acquisire e riprodurre in streaming la tua sessione di gioco su Linux
In passato, giocare era considerato solo un hobby, ma con il tempo l'industria dei giochi ha visto una crescita enorme in termini di tecnologia e nume...
I migliori giochi da giocare con il tracciamento delle mani
Oculus Quest ha recentemente introdotto la grande idea del tracciamento manuale senza controller. Con un numero sempre crescente di giochi e attività ...