|  | 

emFile Journaling

emFile Journaling è un componente aggiuntivo per il file system emFile che lo rende “fail-safe” (a prova di guasto). I file system privi di supporto al journaling (come FAT ed EFS) non sono fail-safe. Il journaling consiste nel registrare tutte le modifiche in un registro (journal) prima di applicarle al file system principale, garantendo così la coerenza dei dati.

Caratteristiche principali

  • I file system non fail-safe diventano fail-safe.
  • Piena compatibilità con le implementazioni standard dei file system (es. FAT).
  • Può essere utilizzata qualsiasi soluzione di archiviazione. Non è richiesta alcuna riformattazione.
  • I molteplici accessi in scrittura al supporto di memorizzazione possono essere combinati nell’applicazione utente.

Teoria del funzionamento

emFile viene tipicamente utilizzato con file system non fail-safe come FAT ed EFS. La perdita di dati può verificarsi sia a livello di driver che a livello di file system. Il livello driver è solitamente fail-safe, quindi l’unico punto critico per la perdita di dati è il livello del file system. Quest’ultimo può essere corrotto da un accesso in scrittura interrotto, ad esempio in caso di interruzione di corrente o crash del sistema. Ciò è intrinseco nel design del FAT e vale per tutte le implementazioni di qualsiasi fornitore. L’add-on emFile Journaling aggiunge il journaling a questo livello.

L’obiettivo di questo livello aggiuntivo è garantire che il file system si trovi sempre in uno stato coerente dopo un reset imprevisto. Le operazioni sul file system non sono quasi mai atomiche. Ad esempio, una singola chiamata a FS_FWrite() per scrivere dati in un nuovo file causa l’esecuzione delle seguenti tre operazioni a livello di memoria:

  1. Allocazione del cluster e aggiornamento della tabella di allocazione.
  2. Scrittura dei dati utente.
  3. Aggiornamento della voce di directory.

Un reset imprevisto durante questo processo può corrompere il file system. Per prevenire tali corruzioni, l’add-on Journaling memorizza ogni accesso in scrittura per mantenere uno stato sempre coerente. Tutte le modifiche vengono memorizzate in un file di journal. I dati presenti nel journal vengono copiati nel file system solo se l’operazione del livello file system è stata completata senza interruzioni.

Questa procedura garantisce la coerenza costante, poiché un’interruzione del processo di copia non porta alla perdita di dati: il processo di copia interrotto verrà riavviato automaticamente al riavvio del sistema.


Scenari di errore

Momento dell’erroreStato del file systemStato dei dati
Journal vuotoCoerente
Durante la scrittura nel journalCoerentePersi
Durante la finalizzazione del journalCoerentePersi
Dopo la finalizzazioneCoerenteOttenuti
Durante la copia dal journal al file systemCoerenteOttenuti
Dopo la copia, prima dell’invalidazione del journalCoerenteOttenuti
Durante l’invalidazione del journalCoerenteOttenuti

Come utilizzare il journaling

L’utilizzo del journaling è molto semplice dal punto di vista dell’utente:

  1. Abilitare il journaling nella configurazione di emFile.
  2. Chiamare FS_JOURNAL_Create() dopo la formattazione del volume.

Tutto qui. Ogni altra operazione è gestita automaticamente dall’estensione emFile Journaling.


Sicurezza del driver (Driver fail-safety)

I dati possono essere persi in caso di reset imprevisto sia nel livello del file system (FAT o EFS) che nel livello del driver del dispositivo. L’intero sistema è fail-safe solo se entrambi i livelli lo sono. L’add-on Journaling garantisce la sicurezza del livello file system. Per quanto riguarda la sicurezza dei singoli driver di dispositivo, si prega di fare riferimento alle pagine specifiche del driver interessato.

Articoli simili

  •  |  | 

    Segger J-Trace

    Panoramica Lo J-Trace di SEGGER è una sonda di tracciamento (trace probe) professionale di tipo streaming che offre la migliore esperienza di analisi possibile, vantando un elenco esteso di funzionalità in grado di soddisfare ogni esigenza di debug degli sviluppatori embedded. Grazie allo streaming trace illimitato, al Live Code Profiling e alla Live Code Coverage,…

  •  |  | 

    Segger emPower OS

    emPower OS di SEGGER è un sistema operativo completo che fornisce l’ambiente ideale per qualsiasi sviluppatore impegnato nella creazione di sistemi embedded o dispositivi IoT. Può essere adattato per girare in sistemi a microcontrollore singolo con risorse limitate (senza memoria esterna) o scalato per ottenere le massime prestazioni su processori applicativi (MPU) senza sovraccarichi inutili….

  •  |  | 

    Segger emApps

    emApps è un pacchetto software rivoluzionario che porta nel mondo dei sistemi embedded la flessibilità tipica degli smartphone. Come alternativa al firmware statico, emApps introduce un livello applicativo che consente di aggiungere nuove funzionalità in qualsiasi momento, senza toccare il nucleo del sistema già validato. Per ottenere questo risultato, emApps implementa il concetto di App, ovvero piccoli…

  •  |  | 

    Segger emCrypt

    Panoramica Progettato pensando sia all’efficienza che alla sicurezza, emCrypt funge da toolkit di crittografia affidabile, offrendo tutti i componenti chiave necessari per i protocolli sicuri odierni. In un mondo pieno di dispositivi connessi, mantenere i dati al sicuro è fondamentale. Con emCrypt, gli utenti possono confidare nella protezione dei propri dispositivi embedded contro le potenziali…

  •  |  | 

    Segger emUSB-C PD

    emUSB-C PD trasforma il cavo in una connessione intelligente, consentendo il rilevamento del tipo di dispositivo collegato, delle capacità di alimentazione, del software USB Host/Device e molto altro. Con la libreria emUSB-C PD di SEGGER, le applicazioni embedded possono gestire facilmente una porta USB-C su qualsiasi dispositivo dotato di un controller USB PD. emUSB-C PD…

  •  |  | 

    Segger emRun

    Panoramica La maggior parte delle toolchain che utilizzano GCC o LLVM si appoggia a newlib, newlib-nano o glibc. Sfortunatamente, queste librerie presentano svantaggi significativi rispetto alle librerie di runtime professionali per sistemi embedded. È qui che entra in gioco emRun. Può essere utilizzato con GCC, LLVM e altre toolchain per fornire una libreria di runtime…