Un file system che ha vent’anni di storia sulle spalle non è certamente l’ultimo arrivato. ZFS, acronimo di Zettabyte File System, è un file system “aperto” sviluppato originariamente da Sun Microsystems, acquisita anni fa da Oracle. Chi lavora nel campo dell’informatica e, in particolare, dello storage dei dati in ambito aziendale, conosce ZFS da tempo immemorabile.
Diverse distribuzioni GNU/Linux e molti dispositivi per l’archiviazione dati, tuttavia, hanno avuto l’innegabile merito di portare ZFS anche all’attenzione dei professionisti e, in generale, “delle masse”. Lanciato nel 2004, ZFS è stato progettato per superare i limiti dei tradizionali file system, offrendo una soluzione di storage avanzata e altamente scalabile.
ZFS: l’evoluzione e la biforcazione
La storia di ZFS prende una svolta significativa nel 2010 quando Oracle acquisisce Sun Microsystems. In seguito a quella novità, sia OpenSolaris che ZFS divennero progetti a sorgente chiuso.
Gli sviluppatori originali – Matthew Ahrens e Jeff Bonwick – insieme con due terzi dei tecnici che lavoravano su ZFS, abbandonarono Oracle per fondare il progetto OpenZFS nel 2013. Quest’ultimo ha di fatto guidato lo sviluppo open source di ZFS negli anni a venire. OpenZFS è diventato il punto focale per lo sviluppo aperto di ZFS, garantendo la continuità e l’evoluzione della tecnologia rivoluzionaria.
Un aspetto cruciale nella storia di ZFS è la questione delle licenze. ZFS è distribuito sotto licenza CDDL (Common Development and Distribution License), che è incompatibile con la GPL (GNU General Public License) utilizzata dal kernel Linux. Questa incompatibilità ha creato ostacoli significativi, bloccando l’integrazione diretta di ZFS nel kernel del pinguino.
Il progetto OpenZFS ha valutato la possibilità di cambiare licenza, ma la complessità legale di tale operazione ha reso l’operazione del tutto impraticabile. Lo scenario relativo al licensing ha portato a soluzioni alternative per l’utilizzo di ZFS sui sistemi Linux, come l’implementazione di moduli kernel esterni. Alcune distribuzioni assicurano comunque il supporto ZFS integrato.
Le principali caratteristiche di ZFS
ZFS si distingue per una serie di funzionalità innovative che lo rendono unico nel panorama dei file system. Il concetto di storage pooling, ad esempio, è una delle innovazioni più significative di ZFS. A differenza dei file system tradizionali, ZFS funge sia da file system che da volume manager.
Ciò significa che gli utenti possono creare file system che si estendono su più unità di archiviazione; aumentare lo storage aggiungendo nuovi dischi al pool; gestire in automatico il partizionamento e la formattazione dei nuovi dischi aggiunti.
Quest’ultima funzionalità semplifica notevolmente la gestione dello storage, offrendo una flessibilità senza precedenti nell’espansione e nell’organizzazione dello spazio di archiviazione.
Copy-on-Write e snapshot
La tecnologia Copy-on-Write (CoW), della quale abbiamo parlato in altri articoli, è un pilastro fondamentale di ZFS che garantisce l’integrità dei dati. Quando un dato viene modificato, la nuova versione è scritta in un nuovo blocco. Il metadato corrispondente è aggiornato a livello di file system solo dopo che la scrittura è completata con successo. In caso di interruzioni impreviste, la versione originale del dato rimane intatta.
Il meccanismo CoW non soltanto previene la perdita di dati in caso di crash del sistema, ma elimina anche la necessità di eseguire il comando fsck
(file system check).
La possibilità di usare gli snapshot è una conseguenza diretta della tecnologia CoW. Gli snapshot permettono di creare istantanee del file system in un determinato momento ed occupano spazio soltanto per i dati che cambiano rispetto all'”immagine” creata in precedenza.
Gli snapshot possono essere montati in modalità di sola lettura per recuperare versioni precedenti dei file. Inoltre, consentono il ripristino dell’intero file system a uno stato precedente.
Inutile dire che i migliori NAS per professionisti e aziende hanno abbracciato da tempo l’utilizzo di ZFS, semplificando l’accesso alle sue caratteristiche peculiari. Ne parliamo nell’articolo che mette a confronto i NAS QNAP QTS e QuTS hero.
Verifica dell’integrità dei dati e riparazione automatica
Il file system ZFS implementa un sistema avanzato per garantire l’integrità dei dati: genera un checksum per ogni blocco di dati scritto e lo verifica a ogni lettura del dato. In caso di discrepanza, ZFS tenta automaticamente di riparare le informazioni corrotte.
L’implementazione della tecnologia RAID è chiamata RAID-Z nel caso di ZFS: offre diversi livelli di ridondanza (RAID-Z1, RAID-Z2, RAID-Z3). L’idea è quella di abbinare l’efficienza dello storage con un’elevata tolleranza ai guasti, rendendo RAID-Z e ZFS una scelta eccellente per tutti quegli ambienti in cui è richiesta un’elevata disponibilità dei dati.
Il “write hole” è un problema intrinseco dei sistemi RAID-5 e RAID-6 tradizionali, che può verificarsi durante le operazioni di scrittura. Se il sistema interrompe il suo funzionamento durante attività di scrittura multipla, previste in RAID-5 e RAID-6, c’è il rischio che alcune delle scritture abbiano successo mentre altre no. Questa situazione anomala lascia il sistema in uno stato inconsistente, poiché la parità potrebbe non corrispondere ai dati reali presenti sulle unità di memorizzazione.
ZFS offre una robusta protezione contro il “write hole” e altri problemi di integrità dei dati che possono affliggere i sistemi RAID tradizionali.
Capacità di archiviazione massiva
Pur risalendo ormai a 20 anni fa, ZFS è frutto di una progettazione assennata, con una visione a lungo termine. Il file system, infatti, utilizza indirizzamento a 128 bit, offrendo una capacità teorica di memorizzazione davvero imponente.
Basti pensare che ZFS può gestire fino a 256 quadrilioni di Zettabyte mentre la dimensione massima del singolo file è di 16 Exabyte (cioè 16.000.000 Terabyte).
Questi valori, sebbene al momento largamente superiori alle necessità pratiche, garantiscono che ZFS possa gestire anche le future o futuribili esigenze di archiviazione.
Deduplica dei dati e self-healing
Un concetto poco conosciuto di ZFS è la deduplica dei dati. Questa funzionalità, introdotta nel 2009, identifica e rimuove le copie duplicate dei dati presenti nello storage, ottimizzando l’utilizzo dello spazio. La deduplica richiede tuttavia una notevole quantità di RAM, quindi deve essere utilizzata su sistemi ben “carrozzati”.
Altro aspetto interessante di ZFS sono le abilità di self-healing. Grazie all’utilizzo di checksum e meccanismi di ridondanza, il file system è in grado di rilevare e correggere automaticamente eventuali errori nei dati memorizzati, aumentando significativamente l’affidabilità dello storage.
Controindicazioni e costi di ZFS
Nonostante i suoi numerosi vantaggi, ZFS presenta anche alcune sfide e potenziali rischi che vanno comunque considerati.
ZFS è noto per il suo elevato consumo di memoria RAM. Utilizza la memoria come cache per migliorare le prestazioni, ma questo può portare a un degrado prestazionale sui sistemi che usano poca memoria oltre a una potenziale instabilità del sistema se la memoria è insufficiente.
Le funzionalità avanzate come la deduplicazione possono causare un significativo overhead, se non configurate correttamente. Inoltre, l’utilizzo intensivo degli snapshot può influire sulle prestazioni di scrittura nel tempo.
Sebbene potente, RAID-Z presenta alcune limitazioni nell’espansione della capacità di storage. RAID-Z richiede che i dischi siano aggiunti in gruppi, non singolarmente.
Per RAID-Z1, ad esempio, è necessario aggiungere almeno 3 dischi alla volta; per RAID-Z2 e RAID-Z3, sono necessari rispettivamente 4 e 5 dischi come valore minimo. Configurare un sistema RAID-Z richiede un investimento iniziale significativo in hardware. I costi possono quindi lievitare, anche perché RAID-Z1 richiede un disco di parità, RAID-Z2 due e RAID-Z3 tre. Questo si traduce in una perdita di capacità utilizzabile, aumentando il costo per gigabyte effettivo.
Credit immagine in apertura: iStock.com – Anton Yakob