Tempo di Lettura: 9 minuti
Lo ZFS (Zettabyte File System) è il più moderno file system esistente e il più ricco di funzionalità innovative, anche se per contro, forse perché troppo rivoluzionario, è quello meno compatibile tra tutti. Infatti, concentrandoci solo sul mondo Mac (dato che per Windows ancora non è previsto alcuno sviluppo futuro), un disco formattato ZFS non verrà riconosciuto dal computer che non avrà almeno installato Mac OS 10.5 Leopard: quest’ultimo, però, riesce, almeno per ora, solamente a leggere il contenuto del disco ma non è ancora possibile scrivervi sopra (in pratica come avviene, nativamente, con i filesystem NTFS su Mac o, più semplicemente, per i CD-ROM di qualsiasi sistema operativo). In effetti mesi fa si supponeva che con Leopard vi fosse stato il supporto completo con ZFS ma, purtroppo Apple sta ancora sviluppando la funzionalità di scrittura sui dischi ZFS e ha promesso che in un aggiornamento successivo di Mac OS X 10.5 verrà aggiunta.
Dopo questa premessa, viene naturale chiedersi cosa abbia questo filesystem da far parlare tanto di sé. Innanzitutto occorre chiarire che un file system è un meccanismo mediante il quale è possibile immagazzinare e ordinare cartelle e documenti affinché sia facile, in un secondo momento, la ricerca e l’accesso ad essi.
ZFS è un file system open source moderno e potente sviluppato nei laboratori della Sun Microsystems nel 2004 per il suo sistema operativo Solaris ed è famoso per l’integrazione in un unico file system di diversi concetti presi da vari file system in un unico prodotto.
Nel giugno 2007 viene annunciata l’adozione di ZFS anche per il Mac OS X Leopard di Apple, notizia inizialmente smentita nel corso del WWDC07 da Brian Croll, senior director di product marketing per Mac OS, che ha dichiarato che “ZFS non ci sarà”, salvo poi smentire le smentita. ZFS non sarà comunque il file system principale di Mac OS 10.5 Leopard ma piuttosto affiancherà HFS+.
Si sta, inoltre, lavorando perché ZFS diventi, de facto, uno standard comune di filesystem Unix: è open-source e molti altri sistemi Unix o Unix-like (Solaris, FreeBSD, NetBSD, Linux) lo supportano o stanno lavorando per farlo. Il beneficio di uno standard comune è enorme, perché permetterebbe di lavorare tutti insieme per il miglioramento del futuro dell’informazione (storage). In effetti, sin’ora non si è mai avuto un file system comune a Windows, Linux e Mac. Infatti, una delle mancanze più sentite di Mac OS X, parlando di filesystem, è quella del supporto pieno ed ufficiale dell’ext3 di Linux e di NTFS di Microsoft (dovuto soprattutto agli alti costi in termini di ingegnerizzazione con un ritorno minimo negli investimenti). Chissà se con ZFS le cose cambieranno!
Se volessimo dire cosa è lo ZFS, una definizione veloce potrebbe essere questa:
ZFS è un nuovo tipo di file system che fornisce una semplice amministrazione, una approccio transazionale, una integrità del dato “end-to-end” e una immensa scalabilità (128-bit). ZFS non è un miglioramento “incrementale” alla tecnologia esistente, ma è un nuovo approccio alla gestione dei dati creato eliminando alcune assunzioni di base che risalevano a 20 anni fa.
Se non avete ancora chiaro il concetto, ecco le caratteristiche positive e negative del filesystem del futuro:
Il primo file system a 128 bit
ZFS è l’unico file system a 128 bit esistente mentre gli attuali file system sono a 32 o a 64 bit: questo significa che è in grado di gestire dischi di dimensioni arbitrariamente grandi. Infatti, potendo fornire uno spazio di 16 miliardi di miliardi (16 Exabyte ovvero 16 miliardi di Gigabyte) di volte la capacità dei file system attuali a 64-bit, i limiti del ZFS sono così ampi da non poter essere mai raggiunti in una qualsiasi operazione pratica. Bonwick affermò che “per riempire un file system a 128 bit non sarebbero bastati tutti i dischi della terra“. Addirittura, un utente che volesse creare mille file al secondo, impiegherebbe 9000 anni a raggiungere il limite!
Secondo la legge di Moore, prima o poi, anche questa capacità di immagazzinamento dovrà essere, in via del tutto teorica, raggiunta ma considerando i limiti della fisica quantistica, sui quali si basano i calcoli del capo del progetto di ZFS, l’energia necessaria per far bollire gli oceani non sarà sufficiente per archiviare così tanti dati!
Checksum a 64 bit per correggere gli errori automaticamente
ZFS è l’unico file system esistente in grado di riconoscere i danni ai documenti, segnalandolo opportunamente. Nel caso si tratti di piccoli difetti, il sistema recupererà le informazioni, ma se sono grandi i dati verranno ripristinati da una copia di riserva.
Infatti, con ZFS non serve (e non esiste) un “fsck” per un ZFS. Ogni blocco ha un checksum a 64 bit per prevenire una corruzione silente dei dati ed il dato stesso è riparato in automatico se si trova in un pool in configurazione mirror o RAID. Se una copia è danneggiata, ZFS se ne accorge e usa un’altra copia per riparla.
Con questo è possibile, quindi, affermare che lo stato dei dati è sempre consistente rendendo ZFS il file system più resistente esistente. Infatti, sottoponendo ZFS a oltre un milione di interruzioni forzate, come crash di sistema causati dalla perdita di alimentazione dei dischi fissi o dallo scollegamento forzato dal computer ospite, nel tentativo, invano, di causare perdite di dati, neanche una volta è stata persa l’integrità dei dati.
Compressione dei dati
ZFS permette di attivare su base file system la compressione trasparente dei dati. Oltre a ridurre il consumo di spazio, la compressione riduce anche il numero di richieste di I/O. Per questo motivo si è verificato che attivando la compressione con particolari workload si ottiene anche un beneficio prestazione.
La rivoluzione del copy-on-write che starà alla base del futuro Time Machine
Tutte le operazioni sono transazioni “copy-on-write”, in questo modo lo stato dei dati su disco è sempre valido, garantendone costantemente la consistenza dei dati ad ogni operazione. Ad esempio, quando è necessaria una modifica ad alcune informazioni già salvate, i dati non vengono in nessun caso sovrascritti, bensì, ZFS scrive i nuovi dati in un nuovo blocco e solo alla fine vengono modificati i puntatori (che servono ad indicare su quale posizione fisica viene salvata l’informazione) e, quindi, completata l’operazione di scrittura.
L’adozione del modello transazionale “copy-on-write” permette a ZFS di creare rapidamente un numero illimitato di snapshot (read-only) e cloni (read-write) di un file system. Infatti, quando ZFS aggiorna dei dati, i blocchi contenenti i vecchi dati, invece di essere eliminati, vengono lasciati dove stanno, creando uno snapshot del file system. Le funzionalità di backup e restore di ZFS sono basate proprio sugli snapshot. Ogni snapshot può generare un backup completo, ogni coppia di snapshot può produrre un backup incrementale. I backup incrementali possono essere utilizzati per implementare una architettura di data replication, ad esempio trasmettendo un “incremento” ogni 10 secondi.
ZFS è in grado di recuperare uno stato precedente, (infatti ZFS non sovrascrive i dati nei loro blocchi originari), ovvero sarà possibile chiedere al disco fisso di tornare alla situazione in cui si trovava il giorno prima o il mese prima. Ovviamente, tutte le modifiche apportate nel periodo in esame verranno perse, per cui è da considerarsi una operazione da svolgere con le dovute cautele del caso (ma se si tratta solo di qualche giorno la situazione sarà facilmente recuperabile)
Queste caratteristiche, forse, sarà possibile utilizzarle nelle future versioni di Mac OS X se adotterà ZFS come file system principale aprendo nuove strade e offrire lo spunto per creare nuove funzionalità . Gli snapshot, ad esempio, potrebbero essere utilizzati per annullare e ripristinare istantaneamente operazioni svolte nel Finder, mentre Time Machine potrebbe sfruttare la caratteristica nativa degli snapshot senza dover richiedere, obbligatoriamente, l’uso di un disco esterno dedicato al backup.
Inoltre, occorre considerare che, rispetto al journaling, proprio del file system HFS+, il modello copy-on-write rappresenta indubbiamente un passo avanti: infatti, il journaling mantiene un log con tutte le operazioni svolte dal file system, come in una sorta di diario di bordo, che, quando avviene una interruzione forzata a causa, magari, di un assenza di corrente, viene interrogato per ripristinare la consistenza del file system. L’approccio usato da ZFS, invece, garantisce sempre e comunque la consistenza.
Il Pool Storage di ZFS
ZFS è in grado di usare i dischi con la stessa facilità con cui si espande la memoria RAM, grazie al concetto di Pool di Storage. Infatti, se fino ad oggi eravamo abituati al massimo a dividere un disco in due o più partizioni o volumi, con ZFS sarà possibile prendere 2 dischi fissi fisicamente distinti e unirli in un unico volume logico! In tal modo vedremo un unico volume virtuale ma con la capacità pari alla somma dei due dischi fissi! Caratteristica molto utile se volete aumentare lo spazio dei file di sistema (come per esempio i font) che si trovano solo sul disco fisso principale dove è stato installato Mac OS X.
Su unix queste caratteristiche sono all’ordine del giorno, ma per gli utenti Windows questo è un sogno proibito, visto che i file system tradizionali possono risiedere solo su un singolo dispositivo d’archiviazione e un singolo disco può essere diviso in una o più partizioni con uno o più file system distinti.
L’approccio di Pool di Storage per ZFS comporta alcuni vantaggi non indifferenti: innanzitutto, ogni file system può potenzialmente disporre della capacità totale di tutti i dispositivi da cui è composto il pool di storage. Inoltre, ad ogni file system è possibile assegnare delle quote; ciò significa che, sarà sufficiente aggiungere un dispositivo al pool di storage perché tutti i file system ZFS che poggiano su di esso ne traggano beneficio.
Un altro vantaggio riguarda la banda: siccome vengono usati contemporaneamente tutti i dischi del pool di storage, la banda è, inevitabilmente, la somma delle bande dei vari dispositivi. In tal modo, aggiungendo un disco al pool di aumenta automaticamente la banda di lettura/scrittura di tutti i file system ZFS che poggiano sul pool di storage in questione.
Striping e Mirroring
Un altra caratteristica propria dei sistemi UNIX e che anche ZFS supporterà è che, se inserite due dischi fissi e li usate contemporaneamente, ZFS registrerà automaticamente i dati parte sul primo e parte sul secondo hard disk: in questo caso parliamo di STRIPING e serve a massimizzare le prestazioni del sistema, raddoppiando la velocità di lettura e scrittura sul disco fisso (che notoriamente è la fase più lenta che un SO deve affrontare). Inoltre permette di limitare le perdite dei dati in caso di rottura fisica di un disco.
Allo stesso modo, è possibile realizzare un sistema protetto o ridondante: basterà registrare i medesimi dati su entrambi i dischi fissi in modalità parallela: in questo caso è lecito parlare di MIRRORING. Ovviamente lo spazio a disposizione per i file sarà la metà della somma delle capacità dei due (o più) dischi fissi, ma qualsiasi guasto fisico di un hard disk non comprometterà il sistema dato che non avverrà alcuna perdita di dati.
Svantaggi nell’adozione di ZFS
Gli svantaggi nell’adozione di ZFS come file system per la propria piattaforma sono pochi, ma è bene analizzarli, perchè, anche se penso sia a causa della giovane età di questo file system, credo che possano essere vincolati per molti:
- Ad oggi lo ZFS è utilizzabile solo come sistema di memorizzazione dei documenti e non come disco di avvio, per il quale esiste il file system HFS.
- Lo ZFS non è predisposto per la crittografia come è invece prevista per gli altri file system.
- Lo ZFS è usabile solo su dischi rigidi con partizionamento GUID e non sui dischi analizzati con la tabella partizioni Apple, come si usava fare abitualmente sui Mac a processori PowerPC.
Veramente un gran bell’articolo. I miei complimenti. Ora capisco le vere potenzialità di questo famigerato ZFS 🙂
Il vero peccato è l’assenza di una cifratura a livello di file system. Non è prevista nemmeno opzionalmente (non sempre è necessaria) ed è un peccato perché per il resto sembra essere il degno erede dell’HFS che è già un ottimo file system.
Ciao,
Emanuele
MiTTTico! =D I tuoi articoli sono sempre i più attesi tra i miei RSS, anche se inizialmente non m’interessa molto l’argomento mi prendo sempre dentro! Sono ben scritti, molto precisi e comprensibili anche da un neofita^^ Complimenti ancora! =D
@Ciccio: che bel complimento… grazie!