ZFS è un file system locale e un gestore di volumi logici creato da Sun Microsystems Inc. per dirigere e controllare il posizionamento, l’archiviazione e il recupero dei dati nei sistemi informatici di classe enterprise.

Il file system e il gestore di volumi ZFS sono caratterizzati da integrità dei dati, alta scalabilità e caratteristiche di archiviazione integrate come:

  • Replicazione – il processo di fare una replica (una copia) di qualcosa.
  • Deduplicazione – un processo che elimina le copie ridondanti dei dati e riduce l’overhead dello storage.
  • Compressione – una riduzione del numero di bit necessari per rappresentare i dati.
  • Snapshots – un insieme di marcatori di riferimento per i dati in un particolare momento.
  • Cloni – una copia identica di qualcosa.
  • Protezione dei dati – il processo di salvaguardia delle informazioni importanti dalla corruzione e/o perdita.

Storia di ZFS

Gli ingegneri Sun hanno iniziato a lavorare allo sviluppo di ZFS nel 2001 per il sistema operativo (OS) Solaris basato su Unix dell’azienda. Nel 2005, Sun ha rilasciato il codice sorgente di ZFS sotto una licenza di sviluppo e distribuzione comune (CDDL) come parte del sistema operativo open source OpenSolaris. Una comunità di sviluppatori, compresi i rappresentanti di Sun e di altri fornitori, ha lavorato sui miglioramenti al codice open source e ha portato ZFS su altri sistemi operativi, tra cui FreeBSD, Linux e Mac OS X.

Il progetto open source OpenSolaris, che includeva ZFS, è terminato dopo che Oracle Corp. ha acquisito Sun nel 2010 e ha registrato il termine ZFS. Gli ingegneri di Oracle continuano a migliorare e aggiungere caratteristiche a ZFS su Solaris. Oracle usa il suo codice proprietario ZFS come base per Oracle Solaris, Oracle ZFS Storage Appliance e altre tecnologie Oracle.

Una comunità di sviluppo ha iniziato un nuovo progetto open source, chiamato OpenZFS, basato sul codice sorgente ZFS nella versione finale di OpenSolaris. La comunità aperta lavora su nuove caratteristiche, miglioramenti e correzioni di bug del codice OpenZFS. I sistemi operativi che supportano OpenZFS includono Apple OS X, FreeBSD, illumos (che è basato su OpenSolaris), e varianti di Linux come Debian, Gentoo e Ubuntu. OpenZFS funziona su tutte le distribuzioni Linux, ma solo alcuni venditori commerciali lo forniscono come parte delle loro distribuzioni. Le aziende con prodotti commerciali costruiti su OpenZFS includono Cloudscaling, Datto, Delphix, Joyent, Nexenta, SoftNAS e Spectra Logic.

ZFS e OpenZFS tendono a fare appello alle imprese che hanno bisogno di gestire grandi quantità di dati e garantire l’integrità dei dati. Gli utenti includono istituzioni scientifiche, laboratori nazionali, agenzie governative, società finanziarie, telecomunicazioni e società di media e intrattenimento.

ZFS inizialmente stava per Zettabyte File System, ma la parola zettabyte non ha più alcun significato nel contesto del file system. Come file system a 128 bit, ZFS ha il potenziale per scalare fino a 256 quadrilioni di zettabyte.

Come funziona ZFS

ZFS è progettato per funzionare su un singolo server, potenzialmente con centinaia se non migliaia di unità di archiviazione collegate. ZFS raggruppa lo storage disponibile e gestisce tutti i dischi come una singola entità. Un utente può aggiungere altre unità di archiviazione al pool se il file system ha bisogno di ulteriore capacità. ZFS è altamente scalabile e supporta una grande dimensione massima di file.

ZFS memorizza almeno due copie di metadati ogni volta che i dati vengono scritti su disco. I metadati includono informazioni come i settori del disco in cui i dati sono memorizzati, la dimensione dei blocchi di dati e una somma di controllo delle cifre binarie di un pezzo di dati. Quando un utente richiede l’accesso a un file, un algoritmo di checksum esegue un calcolo per verificare che i dati recuperati corrispondano ai bit originali scritti sul disco. Se il checksum rileva un’incongruenza, segnala i dati errati. Nei sistemi con un pool di archiviazione a specchio o la versione ZFS del RAID, ZFS può recuperare la copia corretta dall’altra unità e riparare la copia di dati danneggiata.

ZFS è comunemente indicato come un file system copy-on-write, sebbene Oracle lo descriva come redirect on write. Quando ZFS scrive dati sul disco, non sovrascrive i dati sul posto. ZFS scrive un nuovo blocco in un punto diverso del disco e aggiorna i metadati per puntare al blocco appena scritto, mantenendo anche le versioni precedenti dei dati.

Un vero file system copy-on-write farebbe una replica esatta di un blocco di dati in una posizione separata prima di sovrascrivere il blocco originale. Prima di sovrascrivere i dati, il sistema dovrebbe leggere il valore precedente del blocco. Un file system copy-on-write richiede tre operazioni di I/O — lettura, modifica e scrittura — per ogni scrittura di dati. Al contrario, un sistema redirect-on-write richiede solo un’operazione di I/O, facilitando una maggiore efficienza e prestazioni più elevate.

ZFS è una scelta popolare per i sistemi di archiviazione collegati alla rete, eseguendo NFS sopra il file system, così come in ambienti server virtuali. Un altro scenario di implementazione comune è la stratificazione di un file system in cluster, come il General Parallel File System (GPFS) o Lustre, sopra ZFS per consentire la scalabilità su nodi server aggiuntivi. Gli utenti OpenStack possono implementare ZFS come file system sottostante per lo storage a blocchi Cinder e lo storage a oggetti Swift.

Caratteristiche chiave di ZFS

Snapshots e cloni: ZFS e OpenZFS possono fare copie point-in-time del file system con grande efficienza e velocità perché il sistema conserva tutte le copie dei dati. Le istantanee sono copie immutabili del file system, mentre i cloni possono essere modificati. Le istantanee e i cloni sono integrati negli ambienti di avvio con ZFS su Solaris, permettendo agli utenti di tornare a un’istantanea se qualcosa va storto quando si applica una patch o si aggiorna il sistema. Un altro potenziale beneficio di ZFS è come tecnica di recupero contro il ransomware.

RAID-Z: RAID-Z permette di memorizzare gli stessi dati in più posizioni per aumentare la tolleranza agli errori e migliorare le prestazioni. Il sistema ricostruisce i dati sull’unità persa usando le informazioni memorizzate sulle altre unità del sistema. Simile a RAID 5, RAID-Z mette in striscia le informazioni di parità su ogni disco per permettere a un sistema di archiviazione di funzionare anche se un disco si guasta. Tuttavia, con RAID-Z, i dati in striping sono un blocco completo, che è di dimensioni variabili. Anche se RAID-Z è tipicamente paragonato a RAID 5, esegue alcune operazioni in modo diverso per affrontare alcuni problemi di vecchia data con il RAID tradizionale. Un problema che RAID-Z affronta è noto come l’effetto “write hole”, dove un sistema non può determinare quali dati o blocchi di parità sono stati scritti sul disco a causa di un’interruzione di corrente o di un’interruzione catastrofica del sistema. I venditori di sistemi che usano il RAID tradizionale tipicamente risolvono il problema attraverso l’uso di un gruppo di continuità o hardware dedicato.

RAID-Z2 supporta la perdita di due unità di archiviazione, simile a RAID 6, e RAID-Z3 può tollerare la perdita di tre dispositivi di archiviazione. Gli utenti hanno la possibilità di organizzare le unità in gruppi, come nel RAID convenzionale. Per esempio, un sistema con due gruppi di sei unità impostato come RAID-Z3 potrebbe tollerare la perdita di tre unità in ogni gruppo.

Compressione: La compressione dei dati in linea è una caratteristica integrata in ZFS e OpenZFS per ridurre il numero di bit necessari per memorizzare i dati. ZFS e OpenZFS supportano ciascuno un certo numero di algoritmi di compressione. Gli utenti hanno la possibilità di abilitare o disabilitare la compressione in linea.

Deduplicazione: La deduplicazione dei dati in linea è una caratteristica integrata in ZFS e OpenZFS che permette l’efficienza di archiviazione eliminando i dati ridondanti. ZFS e OpenZFS trovano i dati duplicati guardando il checksum di un blocco, che può variare in dimensione. Gli utenti possono abilitare o disabilitare la deduplicazione in linea.

ZFS send/receive: ZFS e OpenZFS permettono di inviare un’istantanea del file system a un diverso nodo del server, permettendo all’utente di replicare i dati su un sistema separato per scopi quali il backup o la migrazione dei dati al cloud storage.

Sicurezza: ZFS e OpenZFS supportano autorizzazioni delegate e liste di controllo degli accessi a grana più fine per gestire chi può eseguire attività amministrative. Gli utenti hanno la possibilità di impostare ZFS in sola lettura, quindi nessun dato può essere modificato. Oracle supporta la crittografia in ZFS su Solaris.

Vantaggi e limitazioni di ZFS

ZFS integra il file system e il volume manager in modo che gli utenti non debbano ottenere e imparare strumenti e set di comandi separati. ZFS offre un ricco set di funzionalità e servizi di dati a costo zero, poiché è integrato nel sistema operativo Oracle. L’open source OpenZFS è liberamente disponibile. Il file system può essere espanso aggiungendo unità al pool di memoria. I file system tradizionali richiedono che la partizione del disco sia ridimensionata per aumentare la capacità, e gli utenti spesso hanno bisogno di prodotti di gestione del volume per aiutarli.

ZFS è limitato all’esecuzione su un singolo server in contrasto con i file system distribuiti o paralleli, come GPFS e Lustre, che possono scalare su più server.

La ricca serie di funzionalità offerte con ZFS può rendere il software complicato da usare e gestire. Caratteristiche come gli algoritmi di checksum ZFS integrati possono richiedere ulteriore potenza di elaborazione e influenzare le prestazioni.

Nella comunità Linux, ci sono varie opinioni sulle licenze rispetto alla redistribuzione del codice ZFS e dei moduli binari del kernel. Per esempio, Red Hat considera problematico distribuire codice protetto sotto una CDDL con codice protetto sotto una licenza pubblica generale (GPL). Al contrario, Canonical, che distribuisce Ubuntu, ha determinato che è in conformità con i termini delle licenze CDDL e GPL.

ZFS vs. OpenZFS

ZFS di Oracle e OpenZFS open source derivano dallo stesso codice sorgente ZFS. Su binari separati, Oracle e la comunità open source hanno aggiunto estensioni e apportato miglioramenti significativi alle prestazioni di ZFS e OpenZFS, rispettivamente. Gli aggiornamenti di Oracle ZFS sono proprietari e disponibili solo nelle tecnologie Oracle. Gli aggiornamenti al codice open source OpenZFS sono liberamente disponibili.

L’elenco dei miglioramenti che Oracle ha apportato a ZFS dal 2010 include:

  • crittografia;
  • supporto per la persistenza di dati compressi attraverso i riavvii del sistema operativo nella L2 adaptive replacement cache (ARC);
  • etichette Extensible Firmware Interface avviabili che forniscono supporto per dischi fisici e volumi di dischi virtuali di dimensioni maggiori di 2 TB;
  • quote utente e gruppo predefinite; e
  • monitoraggio di pool/file system.

L’elenco degli aggiornamenti che la comunità open source ha fatto a OpenZFS include:

  • algoritmi di compressione aggiuntivi;
  • resumable send/receive, che permette ad un’operazione di send/receive ZFS di lunga durata di ripartire dal punto di un’interruzione del sistema;
  • compressed send/receive, che permette al sistema di inviare dati compressi da un pool ZFS ad un altro senza dover decomprimere/ricomprimere i dati durante lo spostamento dal nodo di invio a quello di destinazione;
  • compresso ARC, che permette a ZFS di mantenere i dati compressi in memoria, consentendo un set di dati di lavoro più grande nella cache; e
  • aumento della dimensione massima del blocco da 128 KB a 16 MB per migliorare le prestazioni quando si lavora con file di grandi dimensioni e velocizzare la ricostruzione dei dati quando si recupera da un guasto del disco.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.