|  | 

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 emVNC

    emVNC-Server (Virtual Network Computing) consente di visualizzare il display e gestire un sistema embedded tramite USB (utilizzando emUSB-Device di SEGGER), TCP/IP o qualsiasi altro livello di trasporto di tipo socket. emVNC è stato progettato specificamente per i sistemi embedded. Fornisce sia il modulo server per il sistema target, sia l’applicazione client per i computer. L’applicazione…

  •  |  |  | 

    Segger emSSL

    emSSL offre un supporto completo per i più recenti protocolli TLS, fornendo funzionalità avanzate senza i vincoli delle licenze open-source o dell’obbligo di attribuzione. Può essere integrato senza problemi in prodotti gratuiti, commerciali o proprietari senza la necessità di divulgare il codice sorgente combinato. Fornito come codice sorgente in ANSI C, emSSL garantisce la massima…

  •  |  | 

    Segger emRun++

    emRun++ è una libreria standard C++ completa, utilizzabile con qualsiasi toolchain. È stata specificamente ottimizzata per sistemi e applicazioni embedded. In quanto linguaggio di programmazione moderno, il C++ sta diventando sempre più importante nel settore embedded, offrendo agli sviluppatori opzioni sempre più vaste. Con questo obiettivo, emRun++ viene costantemente aggiornata per soddisfare i più moderni…

  •  |  | 

    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…

  •  |  | 

    Segger emBoot Secure

    Panoramica emBoot-Secure è la soluzione di SEGGER conforme al Cyber Resilience Act (CRA) per aggiornamenti firmware sicuri e verificabili su dispositivi embedded. Questo approccio end-to-end protegge i dispositivi da modifiche non autorizzate del firmware, furto di proprietà intellettuale e clonazione. Garantisce che venga installato solo firmware autentico e approvato dal produttore, utilizzando un’architettura crittografica a…

  •  |  | 

    Segger IoT Toolkit

    Panoramica L’IoT Toolkit è una raccolta di librerie progettate per comunicare senza sforzo con i moderni dispositivi IoT, permettendoti di concentrarti sulle parti cruciali della tua applicazione. Sebbene i dispositivi IoT parlino tipicamente linguaggi semplici, implementare questi protocolli secondo gli standard ufficiali può diventare un onere gravoso. L’IoT Toolkit fornisce librerie collaudate per aiutarti a…