Come abbiamo notato la scorsa settimana, Ubuntu 19.10 è ufficialmente arrivato e porta con sé una serie di caratteristiche davvero interessanti. Anche se la maggior parte di queste nuove opzioni sono rivolte agli utenti desktop, c’è una caratteristica particolarmente eccitante che beneficerà sia gli utenti desktop che i server. Questa caratteristica è il supporto ZFS.
Sviluppato per la prima volta da Sun Microsystems per la sua distro Solaris Unix, ZFS è una combinazione di file system a 128 bit e gestore di volumi logici che offre le seguenti caratteristiche:
- È scalabile.
- Offre supporto per un’elevata capacità di archiviazione e una più efficiente compressione dei dati.
- Include snapshot e rollback.
- Supporta i cloni copy-on-write.
- Fa il controllo continuo dell’integrità e la riparazione automatica.
- Indirizzo a 128 bit
- E molto altro.
Chiedete a qualsiasi amministratore e saranno d’accordo che l’aggiunta di ZFS è un grande affare per Ubuntu. Perché? Le istantanee e le caratteristiche di rollback da sole valgono il prezzo di ingresso (che, a proposito, è gratuito). Con questa caratteristica, gli amministratori possono ripristinare i loro sistemi ad uno stato funzionante (o uno stato che includeva dati cancellati accidentalmente). Questo è un bel problema.
Ovviamente le istantanee e i rollback non sono una novità. Infatti, molte piattaforme hanno incluso questo strumento per anni. Quindi forse Ubuntu è un po’ indietro su questo. Ma per chiunque usi Ubuntu questo è un caso di “meglio tardi che mai.”
Ma come funziona ZFS su Ubuntu? Sono contento che tu l’abbia chiesto. Lascia che te lo mostri.
Un avvertimento
Prima di tuffarti in questo, sappi che il supporto ZFS in Ubuntu 19.10 è sperimentale. Anche se l’ho trovato incredibilmente stabile, potresti pensarci due volte prima di usarlo in un ambiente di produzione (fino a quando non sarà più elencato come “sperimentale”).
Inoltre, nota che il supporto ZFS è attualmente offerto solo durante l’installazione della versione desktop. Questo non significa che non si possa aggiungere il supporto per il filesystem nella versione server, ma non è così semplice. A causa di questo, farò una dimostrazione sulla versione desktop di Ubuntu 19.10.
Installazione
Il primo passo è quello di abilitare ZFS al momento dell’installazione di Ubuntu 19.10. Durante l’installazione, troverete una nuova opzione nella fase del tipo di installazione (Figura 1).
Figura 1: Selezionare l’opzione ZFS durante l’installazione.
Una volta completata l’installazione, riavviate e fate il login.
Se state usando la versione server di Ubuntu 19.10, puoi sempre installare il supporto ZFS con il comando:
1
|
sudo apt-get install zfsutils-linux
|
Naturalmente, se si sceglie questa strada, si dovrà fare qualche passo in più (come la creazione di dataset). Con l’installazione desktop, scoprirai che la tua intera gerarchia di directory è composta da set di dati ZFS, quindi c’è molto meno lavoro da fare.
Primi passi con ZFS
Una volta effettuato l’accesso al desktop, vorrai aprire una finestra di terminale e ottenere un elenco dei tuoi set di dati. Con le installazioni di Ubuntu che non usano ZFS, in genere si lavora con percorsi di directory come /home/jack o /usr/local/. Questo non è il caso dei sistemi abilitati a ZFS. Invece, lavorano con i set di dati. Un dataset è un tipo di filesystem che condivide un pool di memoria (il blocco di base di ZFS).
Per trovare i vostri dataset, eseguite il comando:
1
|
zfs list
|
Come potete vedere (in Figura 2), ogni directory si trova nel pool bpool (boot) o rpool (root).
Figura 2: Il nostro elenco di dataset.
Lavoriamo con la home directory di un utente. In questo caso, il dataset rpool/USERDATA/jack_bwcn4u.
Creazione di un’istantanea
La prima cosa che faremo è creare una nuova istantanea della directory /home/jack (che, ricorda, è il dataset rpool/USERDATA/jack_bwcn4u). Diciamo che vogliamo creare un’istantanea etichettata con la data di oggi. Il comando per questo sarebbe:
1
|
sudo zfs snapshot rpool/USERDATA/jack_bwcn4u@FRIDAY10-18-19
|
Si potrebbe includere il comando data così:
1
|
sudo zfs rollback rpool/USERDATA/jack_bwcn4u@`date +%F`
|
Per verificare che il tuo snapshot sia stato preso, dai il comando:
1
|
zfs list -t snapshot
|
Si dovrebbero vedere tutte le istantanee correnti elencate (Figura 3).
Figura 3: La nostra nuova istantanea è stata creata.
Riavvolgere un’istantanea
Diciamo che, per qualsiasi motivo, una directory è stata accidentalmente cancellata dalla home directory. Cosa fate? Fortunatamente, avete preso un’istantanea e potete fare un rollback dell’istantanea, in modo che la directory cancellata ritorni.
Primo, cancelliamo la directory ~/Documents con il comando:
1
|
rm -rf /home/jack/Documents
|
Lancia il comando ls e puoi vedere che la directory Documents è sparita (Figura 4).
La nostra directory Documents è stata cancellata.
Ora faremo un rollback dello snapshot di venerdì per recuperare quella directory. Per fare questo, emettete il comando:
1
|
sudo zfs rollback rpool/USERDATA/jack_bwcn4u@FRIDAY10-18-19
|
Dopo il completamento del comando, emetti nuovamente ls per vedere che Documents è tornato (Figura 5).
Figura 5: Documents è tornato.
Distruggere le istantanee
Diciamo che hai creato un certo numero di istantanee, o una particolare istantanea ha dati corrotti o mancanti. Potresti voler eliminare quell’istantanea. Diciamo che vogliamo eliminare lo snapshot rpool/USERDATA/jack_bwcn4u@FRIDAY10-18-19. Per farlo, il comando sarebbe:
1
|
sudo zfs destroy rpool/USERDATA/jack_bwcn4u@FRIDAY10-18-19
|
Una volta distrutto uno snapshot non può essere recuperato, quindi usate questo comando con cura. Se vi capita di avere un’istantanea particolarmente importante che non volete che venga distrutta, potete mettere un hold su di essa. Per mettere un hold sul nostro snapshot rpool/USERDATA/jack_bwcn4u@FRIDAY10-18-19, dovrai eseguire il comando:
1
|
sudo zfs hold keep rpool/USERDATA/jack_bwcn4u@FRIDAY10-18-19
|
Ora se provate a distruggere quello snapshot, vedrete un errore (Figura 6).
Figura 6: Impossibile distruggere questa istantanea.
Per distruggere un’istantanea trattenuta, devi aggiungere l’opzione -d in questo modo:
1
|
<i>sudo zfs destroy -d rpool/USERDATA/jack_bwcn4u@FRIDAY10-18-19</i>
|
Ecco fatto, l’istantanea tenuta è sparita.
E queste sono le basi per creare e distruggere le istantanee con la nuova funzione ZFS aggiunta in Ubuntu 19.10. Fate una prova su un ambiente di test e vedete come funziona bene. Finora ho scoperto solo un problema che, quando si cerca di eseguire il rollback di un’istantanea, ho dovuto riavviare la macchina prima che il comando di rollback venisse eseguito con successo. Al di fuori di questo problema, è stata una navigazione tranquilla con ZFS e Ubuntu 19.10.
.