Sulla perdita dei dati dell’EXT4 e dei moti rivoluzionari

Un paio di settimane fa un utente aveva segnalato un grave problema relativo al nuovo file system ext4 recentemente incluso nel kernel Linux e dichiarato stabile.

La storia aveva dello straordinario perchè il nostro caro collega, in quanto utilizzatore di software libero, spiegava in un ticket di segnalazione del bug pubblicato su Launchpad come, dopo aver installato la versione alpha di kubuntu 9.04, abbia perso una grandissima quantità di dati in uno stop improvviso della macchina in questione.

In realtà i file erano presenti ma la loro dimensione era irrimediabilmente fissata sullo zero segno questo che non lascia ben sperare per il recupero degli stessi.

Da qui la polemica è divampata sulla rete in pochissimi secondi, le personalità più differenti si prodigavano nella denuncia del fatto che certamente ha sconvolto molti di coloro che utilizzano il software libero perchè ritenuto di qualità più alta.

Da che mondo è mondo se una cosa viene inclusa in una release del kernel significa che è matura, stabile e sicura.

Personalmente ho aspettato prima di fornire pareri ed eventualmente muovere critiche, volevo essere sicuro dei fatti e farmi una idea precisa dell’accaduto, analizzare per poi esporre realmente il problema è nella mia natura.

Passano i giorni, molto pochi in realtà, e vengo a sapere che il tizio che si occupa del file system ext4 ha rilasciato una patch per risolvere il problema, tale patch sarà disponibile nella release del kernel 2.6.30.

Decido allora di preparare una analisi semi approfondita della questione giusto per capire come e cosa è accaduto all’interno di quel disco rigido che ha dato il via alla piccola rivoluzione.

Genericamente quando un file viene alterato o modificato viene creato un primo file temporaneo (lo chiameremo A) che racchiude i nuovi dati e successivamente viene modificato l’indice dei file per far si che il vecchio file (lo chiameremo B) sia ora rintracciabile in un’altra locazione.

Questo processo da luogo a due condizioni; per prima cosa si ha un cambio dei metadati dei file all’interno del file system, viene creato un nuovo inode per il file temporaneo A che si andrà a scrivere e viene generata una nuova voce indice che punta al file A appena creato.

Una volta apportate le modifiche a questo nuovo file (A), e cambiato il suo nome, si reindirizza le informazioni di indice del vecchio file originario (B) a questa nuova posizione.

Ora si possono scrivere i dati e per fare ciò il sistema deve preparare una serie di blocchi sul disco sufficiente a stipare tutte le informazioni che si andranno a salvare.

In entrambe le tipologia di file system, parlo di ext3 e di ext4, vi è una protezione dei dati attraverso il sistema di journaling che effettua il commit, e quindi il cambiamento effettivo dei dati, solo quando le modifiche al file B sono terminate.

Un file di log si incarica di tenere traccia di tutte le attività svolte sul file, una volta che esse di possono considerare concluse vi è l’effettivo cambiamento delle informazioni.

Se in questa precisa fase si ha un calo della tensione del sistema è impossibile trovare all’avvio il nuovo file in quanto esso non è stato ancora creato e quindi, anche se ci dovessimo trovare nella condizione di aver già assegnato i parametri per l’indicizzazione del vecchio file alla nuova posizione, basterà un semplice riavvio del sistema per riportare tutto alla normalità pur avendo perso le nuove informazioni.

Purtroppo per noi però c’è una piccola ma sostanziale differenza tra i due file system (ext3 ed ext4), solo nel caso di un file system ext3, con opzione di mount in data=ordered (ovvero di ordinamento dei dati), i metadati vengono aggiornati dopo il commit delle nuove informazioni scritte nel file.

Questa operazione può richiedere fino a 5 secondi di tempo, in questo lasso di tempo le modifiche sono presenti solo nella cache del sistema ed è possibile che i blocchi di dati appena riservati alla nuova versione del file non presentino le modifiche apportate perchè facenti parte di un file appena eliminato o per altre cause.

In questa condizione dopo un crash del pc ci si ritroverebbe ad avere una versione vecchia o nuova delle informazioni a seconda che il down sia avvenuto prima o dopo la scrittura su disco.

Questo modo di operare permette di avere a disposizione sempre e comunque una versione dei dati che sia essa la più aggiornata o meno.

Ext4 dal canto suo invece opera in modo diverso in quanto ricorre alla assegnazione ritardata dei blocchi di memoria.

La scrittura dei dati quindi avviene in una fase successiva e secondaria alla chiusura delle modifiche sul file per permettere di ottimizzare il processo di scrittura reale su disco.

Questo metodo però lascia spazio ad una problematica ovvero quella di avere un file di dimensione 0 byte per non occupare blocchi di dati inutilmente fino al momento nel quale questo non venga scritto realmente su disco, momento che è ritardato nel tempo.

Se si verifica una interruzione dell’alimentazione in questa fase ci si ritrova nella condizione di avere un log di journaling dove l’operazione è stata già scritta come effettuata ma in realtà, proprio per la questione dell’allocazione ritardata dei blocchi su disco, essa non è realmente passata alla fase di commit.

Si crea una sorta di desincornizzazione tra cià che sono le modifiche scritte nel log del sistema di journaling e quelli che realmente sono i cambiamenti apportati.

La problematica sfocia quindi nella condizione di avere sia il vecchio che il nuovo file di dimensioni nulle.

Sicuramente un problema da sottolineare ma che trova riscontri simili in tutti quei file system che rispettano le direttive POSIX.

Lo stesso Ted T’so, curatore del progetto, ha dichiarato che la sicurezza dell’ext3 in queste occasioni non è una proprio caratteristica peculiare ma solo un effetto collaterale dovuto alla gestione dell’allocazione dei blocchi di dati del file system in questione.

Il problema si potrebbe manifestare soprattutto nel caso di applicazioni sviluppate seguendo come standard il comportamento anomalo del file system di precedente generazione.

La risoluzione dell’anomalia può essere affrontata in molti modi differenti, esattamente tre, ma la patch prontamente sviluppata da T’so prevede che l’azione di allocazione dei settori sia contemporanea a quella di scrittura delle informazioni (commit).

Non ci resta che attendere la release numero 2.6.30 per veder risolto il problema.

Personalmente ritengo che una situazione del genere sia difficile da reperire in situazione nelle quali il file system sia ospitato all’interno di dischi rigidi di un server visto che questo tipo di macchine sono (e devono essere) assistite da gruppi di continuità; è comunque vero che il problema andava scovato in anticipo e corretto prima di includere il supporto nel kernel Linux.

Ciao a tutti.

EXT4, uno sguardo al futuro

Con la release numero 2.6.28 dello scorso Dicembre sono state introdotte molte novità la più importante è sicuramente in pieno e stabile supporto al file system di nuova generazione ext4.

I vantaggi rispetto al tipo ext3 sono molteplici e vanno dalla scalabilità alla affidabilità, in realtà non si può parlare di vera e propria rivoluzione della tecnologia che vi è alle spalle del progetto visto che esso è il frutto di un’opera di revisione e miglioramento del già potente ext3.

Prima di osservare da vicino le caratteristiche del nuovo ext4 è bene fare un piccolo riassunto storico di quelle che sono state le tappe che ci hanno portato a questa implementazione:

  1. nell’Aprile 1992 nasce il file system ext ad opera di Remy Card, implementazione del file system virtuale (VFS) e supporto fino ad una dimensione massima di 2 Gb erano le caratteristiche principali.
  2. nel Gennaio 1993 vede la luce il file system ext2 questa volta Remy Card ha integrato dei miglioramenti attraverso l’implementazione di soluzioni riscontrabili in altri progetti come il FFS; massima estensione di 2TB fino ad un massimo di 32 TB dopo il rilascio del kernel 2.6
  3. Novembre 2001, ext3 debutta e, anche se presenta prestazioni leggermente inferiori ad altri in alcuni campi di applicazione, introduce notevoli innovazioni come il sistema di journaling che ne migliora l’affidabilità. Il creatore è Stephen Tweedie.
  4. Dicembre 2008, ext4 entra di diritto come stabile nel kernel Linux dopo essere stato testato per lungo tempo dal gruppo di sviluppo alla guida di Theodore Tso già manutentore di ext3.

Funzionalità EXT4

La prima importante funzionalità che possiamo trovare i ext4 è l’estrema compatibilità con il file system che lo precede.

Il principale obbiettivo di una migrazione ad un nuovo e più performante file system dovrebbe essere quello di poter essere il più indolore e semplice possibile, questa volta sembra che lo scopo sia stato centrato in quanto è possibile montare vecchie partizioni ext3 come fossero ext4 oltre a questo è stata implementata una tecnologia in grado di effettuare una migrazione graduale.

Grazie alla capacità di archiviare i nuovi file che si andranno a scrivere su di una partizione ext3 montata in ext4 come se fossero delle informazioni che vanno ad archiviarsi direttamente su di un file system ext4 nativo si può avere una migrazione tipo on-line.

In questo modo è possibile migrare in modo semplice un ext3 visto che la lenta sostituzione dei file del volume andrà automaticamente a convertire il volume nel nuovo formato.

Questo particolare tipo di migrazione, anche se personalmente non ritenuta una soluzione soddisfacente, sicuramente farà la felicità di molti utenti che non hanno le capacità tecniche o la pazienza di dare atto ad una conversione tradizionale.

Di seguito una tabella di compatibilità del nuovo ext4:

figure1.gif

Il secondo miglioramento che è possibile far rientrare nel campo delle nuove funzionalità riguarda il range e la risoluzione del timestamp.

Incredibilmente il timestamp di tutti i file system ext prima dell’avvento della quarta versione era basato sul secondo.

Con l’incremento di prestazione dell’hardware degli ultimi periodi e l’utilizzo del sistema operativo GNU/Linux su particolari settori ad alte prestazioni di calcolo l’unità di misura limite del secondo è diventata rapidamente obsoleta per essere utilizzata come limite di timestamp.

La soluzione è stata l’implementazione del nanosecondo come misura limite estendendo nel contempo di due bit il range del tempo per permettere l’estensione della durata della vita del file system di altri 500 anni.

Scalabilità

Uno dei principali limiti dell’ext3 era reperibile nella sua impossibilità di gestire grandi array di dischi dai volumi enormi.

Con la rivoluzione della rete e la creazione degli ormai famosi e tanto sbandierati servizi web 2.0 la capacità di archiviazione è uno di quei parametri che può fare la fortuna o la disgrazia di un moderno file system.

A tal proposito l’ext4 è in grado dar supporto a file system con una dimensione massima di 1 Exabyte con una dimensione massima dei file fino a 16 TB supponendo blocchi di dati da 4 KB.

Oltre a tutta questa profusione di numeri è stata definitivamente archiviata la limitazione per la profondità dello sotto-cartelle che ora è virtualmente illimitata.

Altra innovazione è rintracciabile nel meccanismo di allocazione, ext4 migliora sensibilmente questo aspetto che era un vero tallone d’Achille per il vecchio ext3.

Il file system di precedente generazione si comportava in modo egregio con i file di piccole dimensioni ma era tremendamente lento per quel che riguarda i file di notevoli dimensioni, in una situazione di contiguità delle informazioni il file system ext4 non fornisce le informazioni per ogni singolo blocco ma piuttosto restituisce la posizione dell’intero elenco di blocchi.

Questo metodo permette di trattare in modo efficiente sia i piccoli file, come nel precedente FS, sia i file di grandi dimensioni visto che le informazioni non riguardano il singolo blocco di dati ma, se consequenziali, il suo insieme.

Prestazioni

Uno dei primi parametri di valutazione per un nuovo FS è la velocità con il quale esso è in grado di lavorare.

Ci sono chiaramente diverse tecnologie che permettono di aumentare le prestazioni di un nuovo progetto ma molto spesso si predilige agire con strumenti conosciuti.

Ext4 ha subito dei notevoli miglioramenti nel comparto di preallocazione dei file ed adotta tecniche tali da migliorare la consequenzialità dei dati che andranno scritti su disco, questo evita, in fase di lettura e di modifica del file, di far rincorrere i settori scritti dalla testina del disco rigido per aumentarne così la velocità di trasferimento vista la ridotta necessita di spostamenti che occorrono per portare al termine le operazioni.

Un secondo metodo che ci permette di ottenere questi effetti è individuabile nella tecnica di ritardo di allocazione del blocco delle informazioni.

Se si ritarda la scrittura dei file fino alla chiamata flush, invece di agire alla chiamata write, si ha come conseguenza un compattamento delle informazioni in settori contigui risparmiando nel contempo cicli di scrittura visto che in questo modo si diminuisce notevolmente la necessità di scrivere i file temporanei, caratterizzati da una vita brevissima, sul disco stesso.

Certamente ci sono anche degli svantaggi visto che utilizzando questa tempistica i file residenti in memoria, e non ancora scritti su disco, risulteranno per sempre persi in caso di interruzione dell’alimentazione.

Affidabilità

Sicuramente un rinnovo del FS non poteva non passare per una migliorata affidabilità dello stesso.

Il sistema di journaling ora è nettamente più evoluto e può operare in differenti modalità:

  • Writeback mode: journaled dei soli metadati
  • Ordered mode: una modalità nella quale i metadati sono journaled ma anche i dati godono di una forma di protezione
  • Journal mode: sia i metadati che i dati sono journaled

chiaramente solo la terza modalità offre piene garanzia ma si rivela anche come il metodo di controllo più lento.

Sul fronte dell’affidabilità gioca un ruolo particolare anche la deframmentazione del disco che nel caso di ext4 è definibile come una frammentazione di tipo on-line.

Molto semplicemente la tecnologia si preoccupa di copiare i file deframmentati e sparsi sul disco in una nuova locazione più grande in grado di accogliere lo stesso completamente senza spezzare i dati in due o più parti.

La stessa tecnologia permette inoltre di accorciare in modo drastico i tempi necessari al controllo del disco tramite fsck visto che i blocchi inutilizzati saranno marcati come tali e quindi completamente ignorati durante il controllo di routine.

Conclusioni

Questo nuovo FS ha tutte le carte in regola per divenire un buon prodotto e, secondo quanto mostrato durante i primi test, sembra essere molto veloce tanto da distaccare in modo netto gli altri concorrenti.

Ciao a tutti.

Facciamoci tentare da Ext4

Il nuovo file system Ext4, felice successore del glorioso Ext3, è ormai pronto a fare il suo debutto negli Hdd degli utenti.

La nuova Ubuntu 9.04, ancora in fase di sviluppo, ha integrato il supporto a questo tipo di file system in modo ufficiale ed è quindi possibile provare i benefici che questo avanzamento porterà con se.

Già qualche giorno fa, attraverso Twitter, ho avuto notizia di temerari che hanno provato il nuovo file system il quale però non ha fatto registrare miglioramenti significativi in termini di velocità sui pc degli utenti coraggiosi.

I pareri però sono contrastanti, riviste del settore e giornali online riportano numerosi test che documentano in modo inequivocabile le aumentate prestazioni della nuova tecnologia.

phoronix_benchmark.png

Ricordo come Ext4 sia fondamentalmente una evoluzione del precedente Ext3; inserita nel kernel 2.6.28 questa tecnologia promette maggiore velocità ed aumentata affidabilità unitamente ad una dimensione maggiore per quel che riguarda i file che possono essere salvati nel disco fisso ed una riduzione importante del tempo necessario richiesto per effettuare una operazione di fsck.

Un paio di giorni fa il sito Phoronix ha effettuato dei test del nuovo file system usando quella che sarà la nuova Ubuntu 9.04, i risultati sono stati sorprendenti.

Un totale sbaragliamento della concorrenza dimostrato dai test condotti con risultati disponibili a questo link.

Che sia quindi giunto il momento di procedere ad una conversione dei nostri file system??

Ciao a tutti.

Il nuovo kernel Linux 2.6.28

Anche per le appena trascorse festività natalizie abbiamo ricevuto un regalo da parte degli sviluppatori del sistema operativo Open per eccellenza.

In realtà il regalo è dei ragazzi che, sotto l’occhio vigile di Torvalds, ogni giorno mettono mano al cuore del sistema GNU/Linux per implementare nuove funzioni al kernel.

L’ultimo in data di apparizione è il kernel 2.6.28 il quale promette molti miglioramenti per quel che riguarda aspetti fondamentali del sistema operativo GNU/Linux.

Ad aprire la parata delle novità troviamo il supporto a quello che dovrebbe essere il futuro file system del pinguino, ovvero EXT4, e la rinnovata sezione grafica la quale ora promette notevoli incrementi prestazionali a detta degli sviluppatori.

Questa release era già stata annunciata dallo stesso Torvalds che in mailing list dichiarava di voler rilasciare il kernel prima o in concomitanza delle festività natalizie in modo da non dover restare altre due settimane occupandosi dello sviluppo del kernel cosa che lo avrebbe reso pazzo.

Come prima accennato il supporto al file system di tipo EXT4 ora è completo ed è stato dichiarato stabile, questo tipo di file di sistema è una revisione del precedente EXT3 il quale ha alcune carenze; anche se ormai la strada sembra segnata per GNU/Linux in nome dell’adozione di EXT4 nelle distro più famose, si fa strada un secondo file system denominato BTRFS.

Probabilmente si avranno novità in tal senso durante l’anno appena iniziato ma gli addetti ai lavori già vedono di buon occhio il nuovo arrivato tanto da considerare un notevole avanzamento di prestazioni del sistema in caso di adozione.

Altro punto di notevole rilievo in questa release è il già citato miglioramento del comparto grafico.

Tutto risiede nell’introduzione della GEM (Graphics Execution Manager) in grado di gestire le risorse delle moderne schede video in modo intelligente e sicuramente migliore rispetto ai kernel più vecchi, si è lavorato molto per raggiungere una gestione della memoria ottimale il che garantisce prestazioni superiori.

Alcuni kernel hacker si sono sbilanciati parlando di GEM come un baluardo ed una svolta epocale per il comparto grafico in ambiente Linux.

Il nuovo kernel sembra anche in grado di modulare il consumo delle periferiche video attraverso l’azione dei driver, parole dette da Paul Frields uno dei Red Hat Fedora Project Leader; chiaramente a beneficiare maggiormente di questa possibilità saranno i notebook in grado così di resistere più a lungo lontano da fonti di alimentazione.

Finalmente è possibile collegare dispositivi USB senza fili grazie al supporto nativo che queste periferiche hanno a livello di kernel, una intera classe di dispositivi questa che mai prima d’ora aveva trovato spazio nel mondo Linux ma che, grazie ai notevoli risultati ottenuti, è entrata a pieno titolo tra le periferiche appetibili al kernel di Torvalds.

Un altro importane successo è quello della virtualizzazione, sempre di più virtualizzare è una necessità di ogni utente che sia esso normale o evoluto.

Nel secondo caso, e nel caso dei server, questa tecnologia consente di risparmia spazio, lavoro, tempo e risorse ottenendo nel contempo grandi benefici; il KVM del kernel è stato ulteriormente ottimizzato, migliorata è la gestione delle periferiche di tipo pci da assegnare direttamente al sistema virtualizzato registrando nel contempo anche altro codice necessario per il supporto dei nuovi processori Intel Tukwila.

Naturalmente è stato allargato il parco di driver disponibili e quindi di periferiche supportate e queste non può rendere che felice ogni utente.

I presupposti per dichiarare questo kernel ottimo ci sono tutti, non ci resta che metterlo alla prova nelle nostre Linux box.

Ciao a tutti.

Voglia di benchmarks? EXT4 VS ALL (o quasi)

Il tipico homo linuxianensis è un essere dedito alla ricerca delle prestazioni estreme della sua macchina informatica.

Anche se spesso alle prese con periferiche di vecchio tipo, è sempre alla ricerca del migliore mix software per strappare l’ultimo secondo di miglioramento possibile rimasto disponibile nel suo vetusto hardware.

Le fasi che questo sotto tipo umano percorre per raggiungere i suoi obbiettivi sono molti ed una di queste è l’importatissima fase chiamata comunemente “scelta del file system”.

Molte opzioni diverse si palesano davanti occhi del linuxianensis e spesso la decisione avviene dopo intere settimane di test accurati.

Spesso, per cause che sembrano non essere imputabili alla sua diretta volontà ma da quella degli individui che lo circondano fidanzate, famigliari, amici, datori di lavoro, bisogno di cibo, il nostro individuo si affida a test effettuati da terze entità professionali e pubblicati direttamente nella grande rete; la stessa rete dalla quale l’oggetto di studio non può restare assente per più di 2 o 3 ore e dove spesso condivide, consiglia o incamera informazioni utili al suo scopo primario.

Una di queste terze entità prende il nome di Phoronix il quale in questo periodo presenta una serie di accurati test volti a scoprire le perfomance del nuovo fie system ext4 rispetto ai rivali ext3, reiserFS, Xfs.

Sicuramente un pasto celebrale appetibile per il nostro gruppo umano che in questo modo tenta di risparmiare mesi di test.

Ciao a tutti.

Da ext3 a ext4 in pochi passi

Per tutti coloro che presentano una innata curiosità e quella particolare mania da aggiornamento presento un articolo che permetterà di provare sul vostro Hdd le meraviglie del file system ext4 che si appresta a sostituire il glorioso ext3 sulla macchine GNU/Linux.

Nell’articolo potete trovare una piccola parte comparativa dei due file system e successivamante un comodo "manuale" su come migrare un partizione ext3 alla nuova ext4 in modo semplice e, si spera, indolore.

Il tutto è scritto e redatto da Rod Smith che, per chi non lo conoscesse, è un autore di libri sul pinguino, sulle reti e consulente Linux.

Link

Ciao a tutti.