Cos'è ZFS? Perché la gente ne va pazza?
Oggi daremo uno sguardo a ZFS, un file system avanzato. Discuteremo da dove viene, cos'è e perché è così popolare tra i tecnici e le imprese.
Anche se vengo dagli Stati Uniti, preferisco pronunciarlo ZedFS anziché ZeeFS perché suona più interessante. Sei libero di pronunciarlo come preferisci.
Nota: vedrai ZFS ripetuto più volte nell'articolo. Quando parlo di funzionalità e installazione, parlo di OpenZFS. ZFS (sviluppato da Oracle) e OpenZFS hanno seguito percorsi diversi da quando Oracle ha chiuso OpenSolaris. (Ne parleremo più avanti.)
Storia di ZFS
Lo Z File System (ZFS) è stato creato da Matthew Ahrens e Jeff Bonwick nel 2001. ZFS è stato progettato per essere un file system di nuova generazione per OpenSolaris di Sun Microsystems. Nel 2008, ZFS è stato portato su FreeBSD. Lo stesso anno è stato avviato un progetto per portare ZFS su Linux. Tuttavia, poiché ZFS è concesso in licenza ai sensi della Common Development and Distribution License, che è incompatibile con la GNU General Public License, non può essere incluso nel kernel Linux. Per aggirare questo problema, la maggior parte delle distribuzioni Linux offre metodi per installare ZFS.
Poco dopo l'acquisto di Sun Microsystems da parte di Oracle, OpenSolaris è diventato closed-source. Anche tutti gli ulteriori sviluppi di ZFS sono diventati closed source. Molti degli sviluppatori di ZFS erano scontenti di questa svolta degli eventi. Due terzi dei principali sviluppatori di ZFS, tra cui Ahrens e Bonwick, hanno lasciato Oracle a causa di questa decisione. Si sono uniti ad altre società e hanno creato il progetto OpenZFS nel settembre del 2013. Il progetto ha guidato lo sviluppo open source di ZFS.
Torniamo al problema della licenza menzionato sopra. Dato che il progetto OpenZFS è separato da Oracle, alcuni probabilmente si chiedono perché non cambiano la licenza con qualcosa che sia compatibile con la GPL in modo che possa essere inclusa nel kernel Linux. Secondo il sito Web di OpenZFS, la modifica della licenza comporterebbe contattare chiunque abbia contribuito con il codice all'attuale implementazione di OpenZFS (incluso il codice ZFS iniziale e comune fino a OpenSolaris) e ottenere il permesso di modificare la licenza. Poiché questo lavoro è quasi impossibile (perché alcuni contributori potrebbero essere morti o difficili da trovare), hanno deciso di mantenere la licenza che hanno.
Cos'è ZFS? Quali sono le sue caratteristiche?
Come ho detto prima, ZFS è un file system avanzato. In quanto tale, ha alcune caratteristiche interessanti. Ad esempio:
Archiviazione in pool
Copia su scrittura
Istantanee
Verifica dell'integrità dei dati e riparazione automatica
RAID-Z
Dimensione massima del file 16 Exabyte
Spazio di archiviazione massimo di 256 quadrilioni di Zettabyte
Analizziamo un paio di queste funzionalità.
Archiviazione in pool
A differenza della maggior parte dei file system, ZFS combina le funzionalità di un file system e di un gestore di volumi. Ciò significa che, a differenza di altri file system, ZFS può creare un file system che si estende su una serie di unità o su un pool. Non solo, ma puoi aggiungere spazio di archiviazione a un pool aggiungendo un'altra unità. ZFS gestirà il partizionamento e la formattazione.
Copia su scrittura
La copia su scrittura è un'altra funzionalità interessante (e interessante). Nella maggior parte dei file system, quando i dati vengono sovrascritti, vengono persi per sempre. Su ZFS, le nuove informazioni vengono scritte in un blocco diverso. Una volta completata la scrittura, i metadati del file system vengono aggiornati per puntare alle nuove informazioni. Ciò garantisce che se il sistema si blocca (o succede qualcos'altro) mentre è in corso la scrittura, i vecchi dati verranno preservati. Significa anche che non è necessario che il sistema esegua fsck dopo un arresto anomalo del sistema.
Istantanee
La copia su scrittura porta a un'altra funzionalità ZFS: gli snapshot. ZFS utilizza le istantanee per tenere traccia delle modifiche nel file system. “L'istantanea contiene la versione originale del file system e il file system live contiene tutte le modifiche apportate da quando è stata scattata l'istantanea. Non viene utilizzato spazio aggiuntivo. Man mano che nuovi dati vengono scritti nel file system live, vengono allocati nuovi blocchi per archiviare questi dati. Se un file viene eliminato, viene rimosso anche il riferimento allo snapshot. Pertanto, le istantanee sono progettate principalmente per tenere traccia delle modifiche ai file, ma non dell'aggiunta e della creazione di file.
Le istantanee possono essere montate in sola lettura per recuperare una versione precedente di un file. È anche possibile ripristinare il sistema live a uno snapshot precedente. Tutte le modifiche apportate dopo lo snapshot andranno perse.
Verifica dell'integrità dei dati e riparazione automatica
Ogni volta che vengono scritti nuovi dati su ZFS, viene creato un checksum per tali dati. Quando i dati vengono letti, il checksum viene verificato. Se il checksum non corrisponde, ZFS sa che è stato rilevato un errore. ZFS tenterà quindi automaticamente di correggere l'errore.
RAID-Z
ZFS può gestire RAID senza richiedere software o hardware aggiuntivi. Non sorprende che ZFS abbia una propria implementazione di RAID: RAID-Z. RAID-Z è in realtà una variante di RAID-5. Tuttavia, è progettato per superare l'errore del buco di scrittura RAID-5, "in cui i dati e le informazioni sulla parità diventano incoerenti dopo un riavvio inaspettato". Per utilizzare il livello base di RAID-Z (RAID-Z1) sono necessari almeno due dischi per l'archiviazione e uno per la parità. RAID-Z2 richiedeva almeno due unità di archiviazione e due unità per la parità. RAID-Z3 richiede almeno due unità di archiviazione e tre unità per la parità. Quando le unità vengono aggiunte ai pool RAID-Z, devono essere aggiunte in multipli di due.
Enorme potenziale di archiviazione
Quando è stato creato ZFS, è stato progettato per essere l'ultima parola in termini di file system. In un momento in cui la maggior parte dei file system era a 64 bit, i creatori di ZFS hanno deciso di passare direttamente a 128 bit per renderlo a prova di futuro. Ciò significa che ZFS “offre 16 miliardi di miliardi di volte la capacità dei sistemi a 32 o 64 bit”. In effetti, Jeff Bonwick (uno dei creatori) ha affermato che alimentare un “pool di archiviazione a 128 bit completamente popolato richiederebbe, letteralmente, più energia che far bollire gli oceani”.
Come installare ZFS?
Se desideri utilizzare ZFS immediatamente, sarebbe necessario installare FreeBSD o un sistema operativo utilizzando il kernel illumos. illumos è un fork del kernel OpenSolaris.
In effetti, il supporto per ZFS è uno dei motivi principali per cui alcuni utenti Linux esperti optano per BSD.
Se vuoi provare ZFS su Linux, puoi usarlo come file system di archiviazione. Di recente, Ubuntu 19.10 ha introdotto la possibilità di installare ZFS sul root immediatamente. Ulteriori informazioni sull'utilizzo di ZFS su Ubuntu. Se sei interessato a provare ZFS su Linux, il progetto ZFS su Linux offre una serie di tutorial su come farlo.
Avvertimento
Questo articolo ha cantato i vantaggi di ZFS. Ora lascia che ti parli di un rapido problema con ZFS. L'utilizzo di RAID-Z può essere costoso a causa del numero di unità necessarie da acquistare per aggiungere spazio di archiviazione.
Hai mai usato ZFS? Com'è stata la tua esperienza? Fateci sapere nei commenti qui sotto.
Se hai trovato interessante questo articolo, prenditi un minuto per condividerlo sui social media, Hacker News o Reddit.