Perché scegliere ZFS? Analisi del suo impatto sui sistemi Ubuntu Linux
Scopri i motivi per cui il file system ZFS in Linux Ubuntu si distingue come scelta eccellente per gli utenti. Dalle sue funzionalità avanzate di protezione dei dati alla scalabilità e flessibilità, scopri perché ZFS è considerato superiore. Leggi ora per sbloccare i vantaggi di ZFS e ottimizzare la tua esperienza con Linux Ubuntu!

- Vantaggi di ZFS
- Limitazioni di ZFS
- Installazione di ZFS su Ubuntu
- Come creare RAIDz
- Come creare, ripristinare e rimuovere snapshot ZFS
- Invio e ricezione ZFS
- Compressione dei dati in ZFS
- Conclusione
- Domande e risposte
- Commenti
ZFS o Zettabyte File System è un file system speciale creato inizialmente da Sun Microsystems per il sistema operativo Solaris. Supporta enormi quantità di dati, combina i concetti di file system, disco fisico e volume manager, e offre metodi di gestione semplici per i volumi di archiviazione.
È un file system di nuova generazione progettato inizialmente per soluzioni NAS con miglioramenti in termini di sicurezza, affidabilità e prestazioni. A differenza di molti altri sistemi, ZFS è un file system a 128 bit che offre una capacità virtualmente illimitata. ZFS è un progetto open source rilasciato con licenza CDDL (Common Development and Distribution License).
| Caratteristica | Descrizione |
|---|---|
| Supporto per grandi volumi di dati | ZFS supporta volumi di dati estremamente grandi, permettendo l’archiviazione fino a esabyte di informazioni. |
| Integrazione di file system e gestione dei volumi | Combina file system e volume manager, fornendo una gestione semplificata dello spazio su disco. |
| Snapshot istantanei | Consente di creare snapshot del file system per un rapido ripristino dei dati senza un significativo overhead di risorse. |
| Protezione dalla corruzione dei dati | Meccanismi integrati di verifica dell’integrità dei dati tramite checksum per prevenire la corruzione. |
| Ridondanza dei dati (RAID-Z) | Fornisce vari livelli di protezione dei dati tramite funzioni RAID-Z integrate per salvaguardare dalla perdita. |
| Compressione dei dati | Offre una compressione efficace dei dati, aiutando a risparmiare spazio su disco. |
| Clonazione del file system | Permette di creare copie clonate direttamente dagli snapshot per test o sviluppo. |
| Crittografia | Supporta la crittografia dei dati per proteggere le informazioni sensibili. |

Se vuoi usare ZFS “out of the box”, dovrai installare FreeBSD oppure un sistema operativo che utilizzi il kernel illumos (illumos è un fork del kernel OpenSolaris).
Se desideri usare ZFS su Ubuntu, è necessario aggiungere manualmente le funzionalità di supporto – ma è un’operazione piuttosto semplice che richiede l’esecuzione di pochi comandi. Esploreremo i dettagli più avanti, ma ora parliamo dei pro e dei contro di questo file system.
Come aprire un disco con file system ZFS in Windows
Vantaggi di ZFS
Parlando dei vantaggi di ZFS, si possono distinguere i seguenti punti:
Vantaggi. Modello di amministrazione semplificato.
Combina la gestione dei volumi, degli array RAID e del file system. Tutto ciò che serve per gestire volumi, livelli di ridondanza, file system, rapporti di compressione e punti di mount è ottenibile con pochi comandi.
Questo approccio semplifica anche il monitoraggio poiché ci sono meno livelli da considerare.
Vantaggi. Un altro vantaggio riguarda la garanzia dell’integrità dei dati.
Quando alcuni dati vengono scritti, viene calcolato anche il loro checksum e memorizzato. Successivamente, quando i dati vengono letti, il checksum viene verificato nuovamente. Se il checksum non corrisponde ai dati letti, ZFS identifica un errore. Dopo di ciò, il file system tenta di riparare automaticamente tale errore.
Inoltre, ZFS è perfettamente scalabile con la possibilità di aggiungere nuovi dispositivi di archiviazione, opzioni di gestione della cache e così via.
Vantaggi. La funzionalità copy-on-write.
Nella maggior parte dei file system, i dati vengono persi definitivamente quando vengono sovrascritti. In ZFS, invece, le nuove informazioni vengono scritte in un blocco diverso.

Quando l’operazione di scrittura è completata, i metadati del file system vengono aggiornati per puntare alle nuove informazioni. Questo aiuta a preservare i dati precedenti in caso di crash del sistema (o di altri eventi sfavorevoli).
Vantaggi. Questo file system integra opzioni di storage.
Replica – il processo di creazione di copie dei dati.
-
Deduplicazione – una tecnica per eliminare copie duplicate di dati ripetuti e ridurre il carico di archiviazione.

Compressione – l’opzione che salva spazio su disco e aumenta la velocità, poiché il numero di bit necessari a rappresentare i dati è ridotto.
-
Snapshot – rappresentazioni consistenti dell’intero insieme di dati nello stato in cui si trovavano in un dato istante temporale.

-
Clone – copie identiche dei dati.
Limitazioni di ZFS
Tuttavia, come ogni altro file system, ZFS presenta alcuni svantaggi.
Limitazioni. Quando la capacità di archiviazione è utilizzata per l’80% o più, le prestazioni di ZFS tendono a degradare notevolmente.
Questo è un problema comune per molti file system. Quando il pool corrente raggiunge l’80% dello spazio disponibile, dovresti o espandere il pool o migrarlo su un sistema di archiviazione con capacità maggiore.
Limitazioni. Nessuna possibilità di ridurre il pool di archiviazione.
Non è possibile rimuovere dispositivi o vdev (abbreviazione di dispositivi virtuali) dal pool dopo che sono stati aggiunti.
Limitazioni. Ci sono anche limitazioni nel cambiare il tipo di ridondanza.
Ad eccezione della conversione di un pool basato su singolo disco in un pool mirror, non è possibile cambiare il tipo di ridondanza. Dopo aver scelto il tipo di ridondanza, l’unica soluzione è distruggere il pool e crearne uno nuovo, ripristinando i dati da backup o da un’altra posizione.
Installazione di ZFS su Ubuntu
Ora vediamo come installare ZFS su un sistema operativo Linux, prendendo come esempio Ubuntu versione 20.04.
Per l’installazione avrai bisogno del Terminale, quindi premi la combinazione di tasti Ctrl + Alt + T per aprirlo.
Poi esegui questo comando:
$ sudo apt update
per controllare gli aggiornamenti dei pacchetti. Quando il comando viene inserito, il sistema ti chiederà la password di root; digitata la password premi Invio.

E questo, per l'installazione:
$ sudo apt install zfsutils-linux

Digita y per confermare il comando di installazione e premi Invio. Inizia il processo di installazione del software.
Per verificare l'installazione di ZFS, usa questo comando:
$ zfs –version

Come risultato verrà visualizzata la versione del programma. Ora puoi creare un pool di archiviazione con un vdev, un dispositivo virtuale.

Un pool di archiviazione è un insieme che include uno o più dispositivi virtuali in cui i dati possono essere memorizzati. Un pool ZFS, noto anche come Zpool, è il contenitore di dati di livello superiore in questo file system. Viene utilizzato per creare uno o più file system (dataset) o dispositivi a blocchi (volume). Questi file system e dispositivi a blocchi possono quindi utilizzare lo spazio rimanente del pool. Tutte le operazioni di partizionamento e formattazione vengono eseguite da ZFS.

Un dispositivo virtuale (vdev) può essere composto da uno o più dispositivi fisici. Può essere un pool o una sua parte, e può avere vari livelli di ridondanza - mirror, mirror a tre vie, RAIDZ, RAIDZ-2 o RAIDZ-3.
RAID-Z è un'implementazione modificata di RAID-5. In ZFS è progettato per superare il problema del write hole, che spesso colpisce i sistemi RAID-5 convenzionali. RAID-Z1 richiede almeno tre dischi: due per l'archiviazione dei dati e uno per la parità.
RAID-Z2 dovrebbe avere almeno quattro dischi - due per l'archiviazione e due per la parità.

Infine, per RAID-Z3 sono necessari almeno due dischi per l'archiviazione e tre dischi per la parità.

Come creare RAIDz
Ora vediamo come costruire un sistema RAID-Z con un insieme di dischi. Prima di tutto, decidiamo quali dischi includere.
Usa l'utilità fdisk per vedere quali dischi sono collegati e quali sono adatti al tuo scopo. Esegui questo comando per elencare i dischi:
$ sudo fdisk -l
Come risultato vedrai un elenco dei dischi con informazioni dettagliate su ciascuno.

A scopo illustrativo, ti mostrerò come costruire un RAID-Z1 - è l'equivalente di RAID 5 con un disco di parità. Il suo design permette di utilizzare l'array e mantenere i dati integri anche se uno dei dischi dovesse guastarsi.
Ho tre dischi rigidi elencati come /dev/sdd, /dev/sde e /dev/sdf. Creerò un pool con il nome “zdata”. Ecco il comando da utilizzare:
$ sudo zpool create ith2-zfs-raid-1p zdata /dev/sdd /dev/sde /dev/sdf
$ sudo zpool create zdata raidz /dev/sdd /dev/sde /dev/sdf

Se si verifica un errore, puoi eseguire questo comando aggiungendo -f dopo “zpool create” - forza l'esecuzione del comando.
$ sudo zpool create -f ith2-zfs-raid-1p zdata /dev/sdd /dev/sde /dev/sdf
Per trovare il punto di mount, esegui il comando df -h dopo che il pool è stato creato:
$ df –h

Il pool è montato in /zdata. Per modificare il punto di mount del tuo pool, usa la seguente sintassi:
$ sudo zfs set mountpoint =<path> <pool_name>
In questo esempio ho usato /var/pool come nuovo punto di mount.
$ sudo zfs set mountpoint=/var/pool zdata
Verifichiamo il nuovo punto:
$ df –h

Puoi creare directory nel pool di archiviazione. Ad esempio, creiamo una directory chiamata mydata.
$ sudo zfs create zdata/mydata
Per visualizzare tutti i pool ZFS in questo sistema, esegui il seguente comando:
$ zpool list

Per vedere la configurazione e lo stato di ogni dispositivo all'interno del pool ZFS, utilizza il comando status.
$ zpool status
Per visualizzare gli eventi e risolvere i problemi, c'è un altro comando:
$ sudo zpool events zdata –v

Se è necessario aggiungere un altro disco rigido al pool ZFS, esegui questo comando indicando il nome del disco da aggiungere.
$ sudo zpool add zdata /dev/sdb
Dopo l'aggiunta del disco, controlliamo lo stato del pool:
$ zpool status

Infine, l'ultimo comando che può essere utilizzato per rimuovere un pool ZFS.
$ sudo zpool destroy zdata
Come creare, ripristinare e rimuovere snapshot ZFS
Questo file system consente di creare snapshot del tuo pool.
Uno snapshot è una copia di sola lettura di un file system in un determinato istante temporale. Puoi creare snapshot di interi dataset o pool. Uno snapshot include la versione originale del file system insieme a tutte le modifiche effettuate dopo la creazione dello snapshot. In altre parole, è una copia di sola lettura delle differenze.
Per creare snapshot, utilizza il comando zfs snapshot seguito dal nome dello snapshot. In questo esempio ho usato zdata/mydata per creare uno snapshot.
$ sudo zfs snapshot zdata/mydata@snap1
Usa il seguente comando per controllare gli snapshot:
$ zfs list -t snapshot

Lo snapshot può essere rinominato se necessario:
sudo zfs rename zdata/mydata@snap1 zdata/mydata@snap2
Puoi annullare le modifiche effettuando un rollback dello snapshot. Tuttavia, ciò significa che perderai tutte le modifiche avvenute dopo la creazione dello snapshot.
Per tornare a uno snapshot specifico, esegui il comando zfs rollback con il nome dello snapshot. Questo annullerà tutte le azioni nella directory eseguite dopo la creazione dello snapshot.
$ sudo zfs rollback test-pool/mydata@snap1

Questo comando riporterà il sistema a una data condizione.
Al termine dell'operazione di rollback, puoi controllare la directory per verificare la presenza dei file che erano stati eliminati dopo la creazione dello snapshot.
Invio e ricezione ZFS
Gli snapshot possono essere salvati su file e successivamente ripristinati, il che è perfetto per creare backup o per inviare copie tramite rete (ad esempio con SSH) per replicare il file system.
Il comando "send" invia uno snapshot del file system che può essere reindirizzato a un file o a un'altra macchina in streaming. Il comando "receive" riceve tale stream e scrive una copia dello snapshot nel file system ZFS.
Ad esempio, creiamo un altro snapshot e salviamolo su file con questo comando:
sudo zfs snapshot -r zdata/mydata@snap3
sudo zfs send zdata/mydata@snap2> ~/mydata-snap.zfs

E poi ripristiniamolo con un altro comando:
sudo zfs receive -F zdata/mydata-copy < ~/mydata-snap.zfs

Utilizzando script aggiuntivi, puoi configurare il file system per creare snapshot automaticamente e inviarli a un server tramite protocollo SSH.
Compressione dei dati in ZFS
Come accennato in precedenza, ZFS consente di comprimere i dati automaticamente. Considerando la potenza di calcolo delle CPU odierne, questa opzione è molto utile, perché il volume ridotto dei dati comporta meno I/O fisico, con conseguente aumento delle prestazioni. ZFS offre una vasta gamma di metodi di compressione. L'opzione predefinita è lz4 (un sostituto ad alte prestazioni di lzjb) che fornisce una compressione e una decompressione più rapide rispetto a lzjb, mantenendo un buon rapporto di compressione. Per modificare il livello/tipo di compressione, usa questo comando:
sudo zfs set compression=gzip-9 zdata
O anche cambiare il tipo di compressione con un altro comando:
sudo zfs set compression=lz4 zdata
Puoi controllare il rapporto di compressione attualmente utilizzato con questo comando:
sudo zfs get compressratio

La scelta più sicura è lz4, poiché è molto più veloce rispetto ad altre opzioni, pur mantenendo un ottimo livello di efficienza.
Conclusione
Considerando tutto, ZFS è chiaramente il file system che offre un'ampia gamma di opportunità. Non solo permette di gestire i dati in modo molto efficace e innovativo, ma può anche recuperare i dati senza interrompere il lavoro in caso di emergenza. Inoltre, se si verifica un errore o un guasto di sistema, l'intero sistema può essere facilmente ripristinato grazie alla funzionalità snapshot, consentendo un rollback allo stato in cui si trovava in un determinato momento.
Se hai problemi di perdita di dati da ZFS o RAID-Z, prova Hetman RAID Recovery. Ti aiuterà sicuramente a recuperare file eliminati accidentalmente dal file system ZFS o ad accedere ai dati memorizzati in un array RAID-Z danneggiato. Questo programma è utile se le informazioni sono andate perse a seguito di errori, formattazione, sovrascrittura o altri scenari comuni di perdita di dati.
| Caratteristica | Descrizione |
|---|---|
| Supporto array RAID | Il programma supporta vari tipi di array RAID, inclusi RAID 0, RAID 1, RAID 5, RAID 10 e configurazioni personalizzate. |
| Rilevamento automatico dei parametri | Rileva automaticamente i parametri dell'array come dimensione del blocco, ordine dei dischi e altre caratteristiche chiave. |
| Recupero dati | Capacità di recuperare dati da array RAID danneggiati o cancellati, nonché recupero dopo errori di configurazione o guasti. |
| Anteprima dei file | Permette di visualizzare in anteprima i file prima del recupero per valutarne la qualità e verificare i dati. |
| Supporto file system | Supporta file system come FAT, NTFS, ReFS, HFS+, Ext2/3/4, XFS, ZFS e altri. |
| Interfaccia user-friendly | Interfaccia facile da usare con una procedura guidata passo-passo per il recupero dei dati. |

