Questa settimana abbiamo deciso di dare un’occhiata al nuovo Resilient File System (ReFS) su Windows 2012 per descriverne vantaggi e svantaggi e dove e in quale caso dovrebbe essere utilizzato.
Il primo vero file system
Il primo file system disponibile è stato l’Electronic Recording Machine Accounting (ERMA) Mark 1, un file system gerarchico presentato nel 1958 alla Eastern Joint Computer Conference. Nel loro articolo “Organization and Retrieval of Records Generated in a Large-Scale Engineering Project”, Barnard e Fein descrivevano come era nata l’idea e cosa si prefiggevano di migliorare con questo file system, ossia ridurre le inefficienze e gli errori che si presentavano a causa della mancanza di un sistema più strutturato.
L’idea alla base dello sviluppo del sistema era quella di fornire un numero maggiore e più accurato di informazioni in un modo più veloce e più efficiente. Inutile dire che arrivare ai moderni file system è stato un processo molto lungo se si considera che lo sviluppo è iniziato nel 1958.
Un’introduzione al Resilient File System
Il Resilient File System (ReFS) è un file system sviluppato da Microsoft per essere utilizzato su Windows Server 2012. Il suo predecessore, il New Technology File System (NTFS), è stato considerato il file system standard dai primi anni 90 (tecnicamente da Windows NT 3.51 sui server e da Win 2000 su desktop) ed è ancora oggi in uso. L’ReFS è ancora un file system opzionale che gli utenti devono scegliere di utilizzare, ma Microsoft ha pianificato di sostituire l’NTFS con l’ReFS come file system di default per i futuri modelli di Windows.
L’ReFS è stato progettato per essere utilizzato in sistemi che trattano grossi volumi di dati, in modo da fornire maggiore scalabilità e disponibilità rispetto all’NTFS. L’integrità dei dati è stata una delle principali caratteristiche aggiunte al sistema, ciò permette ai dati critici dell’azienda di essere protetti dai più comuni errori che possono provocare una perdita di dati. Se si verifica un errore di sistema, l’ReFS lo può correggere senza incorrere nel rischio di perdere i dati e senza influenzare la disponibilità del volume. La degradazione dei media è un’altra questione che è stata risolta per impedire la perdita dei dati nel caso in cui un disco si usuri.
Elementi chiave dell’ReFS
Allocate on Write
I motivi principali per utilizzare un ReFS dipendono dalla quantità di dati che la vostra azienda gestisce. Questo tipo di file system è normalmente utilizzato per una serie molto grande di dati, questo è l’elemento che lo differenzia dall’NTFS. La corruzione dei dati, ad esempio, può essere evitata utilizzando la funzione Allocate on Write senza la necessità di dover aumentare il consumo dello storage.
Facendo un paragone, l’NTFS utilizza un transaction journal che mantiene la consistenza sul disco e che effettua l’aggiornamento dei metadata in uso. Il journal può essere utilizzato nel caso di perdita di dati per tracciare l’errore ed effettuare il recupero. In ogni caso, nel momento in cui il disco viene aggiornato, i metadati potrebbero corrompersi se si verifica un calo di tensione; questo fenomeno è noto come “torn write”. In questo caso solo una parte del blocco è scritta, e alcuni settori vanno invece persi.
L’ReFS cerca di eliminare ogni torn write utilizzando la metodologia dell’Allocate on Write, che non aggiorna i dati ma li scrive utilizzando la funzione atomic operation. Ciò significa che la lettura e la scrittura del file vengono effettuate in un singolo comando. Il sistema check-sum verifica che tutti i dati, che sono scritti e archiviati, siano “sani” e affidabili; ad esempio verifica che il disco non sia corrotto. Questa funzione è utilizzata per rilevare se i dati sul disco hanno subito una modifica da quando sono stati scritti.
B+tree
La capacità dell’ReFS permette un’ampia scalabilità. Come mostrato nella tabella qui sotto, non ci sono limiti in termini di dimensione del file e della cartella. Ovviamente ciò significa che si tratta di una soluzione molto vantaggiosa quando dovete lavorare con molti dati.
Fonte: Microsoft Blog
Questo file system utilizza una struttura on-disk per archiviare i file utilizzando i B+tree. Si tratta di un sistema che consente di archiviare e recuperare i dati, attraverso il quale le informazioni sono memorizzate in una struttura ad albero in cui ogni nodo contiene una lista ordinata di chiavi memorizzate o puntatori ai livelli di nodi inferiori. All’interno di un nodo viene fornito un numero fisso di elementi (blocchi).
Fonte immagine: B+ Tree index structures in InnoDB
Il vantaggio di B+Tree sta nel modo in cui la struttura ad albero archivia i record o le cosiddette informazioni satellite che sono memorizzate a livello delle foglie. Le chiavi e i puntatori figli sono memorizzati in nodi interni o “non-foglia”. Archiviare i record a livello della “foglia” della struttura ad albero, permette di massimizzare la ramificazione dei nodi interni. Un alto fattore di ramificazione consente di mantenere l'albero più piccolo; ciò significa minori operazioni di lettura/scrittura del disco (disk I/O) e quindi migliori performance.
Cosa significa questo per il recupero dati?
La struttura dell’ReFS funziona come un database perciò è completamente diverso dal recupero NTFS che utilizza una tabella flat di metadati. Per trovare i dati, dobbiamo “attraversare” l’ReFS come un database, aprire le tabelle che contengono a loro volta un set di altre tabelle, etc. La struttura del database rende il file system più complicato rispetto all’NTFS ma offre comunque alcuni vantaggi per il recupero di alcuni tipi di danni.
Dato che l’ReFS è un file system “copy on write”, ci sono molte copie dei dati che possono essere utilizzate per il recupero se la copia primaria è danneggiata. Tuttavia poichè l'ReFS è un database, gli ingegneri di data recovery hanno bisogno di specifici tool e training per decodificare i metadata dei file.