|  | 

emFile RAID 5

Sebbene l’acronimo R-A-I-D derivi da Redundant Array of Independent (originariamente Inexpensive) Disks, i termini “recuperabile” e “replicabile” sono più accurati di “ridondante”. Storicamente, i dispositivi di archiviazione sono stati i dischi rigidi. Nelle applicazioni embedded, questi possono essere qualsiasi tipo di dispositivo di memoria (NAND, NOR, SD) e, date le dimensioni del sistema, l’archiviazione è raramente “indipendente”. Tuttavia, la terminologia standard rimane RAID. Invece di disco o drive, il termine più pertinente, specialmente per i sistemi embedded, è “partizione”.

Una partizione è una sezione di un dispositivo di archiviazione che viene trattata dal sistema operativo come se fosse un dispositivo separato. Sia il RAID1 che il RAID5 archiviano i dati su più partizioni, in modo che i dati originali possano essere recuperati o replicati in caso di guasto di un’unità di memoria.

Caratteristiche principali

  • Aumenta la capacità di archiviazione utilizzabile rispetto al RAID 1.
  • Fornisce protezione da difetti/guasti del dispositivo di memoria.
  • Funziona a livello di storage sia con file system FAT che EFS.
  • Può essere utilizzato con qualsiasi dispositivo di archiviazione supportato da emFile (come schede NAND, NOR e SD).
  • Consente l’uso di diversi tipi di memoria per le partizioni.
  • Permette di collocare tutte le partizioni sullo stesso dispositivo di archiviazione.

RAID 5 – Teoria del funzionamento

Il RAID 5 richiede almeno tre partizioni di memoria. Uno spazio di archiviazione equivalente alla dimensione di una partizione viene utilizzato per le informazioni di controllo della parità, rendendolo non disponibile per l’archiviazione dei dati. Il controllo di parità consiste nell’aggiunta di un’informazione extra (il risultato di una formula) che può essere utilizzata per replicare i dati in caso di difetto o guasto hardware. La capacità di archiviazione richiesta per i dati di parità può essere ridotta aumentando il numero di partizioni, incrementando così la capacità totale disponibile.

L’add-on RAID 5 calcola le informazioni di parità utilizzando la funzione “eXclusive Or” (XOR). Il risultato di una funzione XOR eseguita su un qualsiasi numero di input è tale che, se un input viene perso (ovvero una partizione si guasta), l’informazione mancante può essere ricalcolata (cioè recuperata o replicata) utilizzando il risultato XOR e gli altri input noti.


RAID 5 vs RAID 1

Il RAID 1 utilizza il mirroring (rispecchiamento) per consentire il recupero dei dati. Una copia di tutti i dati sulla partizione master viene mantenuta su una partizione separata chiamata mirror. Il master e il mirror possono trovarsi sullo stesso dispositivo di archiviazione o su dispositivi separati. In caso di guasto hardware sulla partizione master, i dati possono essere recuperati dalla partizione mirror.

Il RAID 5 distribuisce i dati su diverse partizioni e utilizza il controllo di parità. Il salvataggio di un controllo di parità, anziché di una copia completa dei dati, riduce la quantità di memoria necessaria per ricreare i dati originali in caso di necessità.

Nota: Il RAID 5 utilizza meno spazio di archiviazione per ottenere la stessa sicurezza dei dati del RAID 1. Questo può essere un vantaggio cruciale in ambienti con risorse limitate. Il RAID 1 è leggermente più veloce del RAID 5 perché esegue meno funzioni per garantire la sicurezza dei dati.


RAID con il driver NAND di SEGGER

Il driver proprietario Universal NAND Flash di SEGGER è il migliore della categoria per velocità, efficienza, affidabilità e protezione dei dati. È stato ottimizzato per utilizzare la minor quantità possibile di RAM e ROM mantenendo prestazioni elevate.

Può correggere errori di bit singoli o multipli utilizzando l’ECC (codice di correzione degli errori) hardware integrato nella flash NAND o routine ECC software fornite dalla libreria emLib ECC. I driver NAND utilizzano il wear leveling (livellamento dell’usura) attivo e passivo, la gestione dei blocchi danneggiati (bad-block management) e sono fail-safe. L’add-on RAID fornisce un ulteriore livello di precauzione a un sistema già robusto, massimizzando l’integrità dei dati.

Il driver NAND e il RAID lavorano insieme per evitare la perdita di dati quando si verifica un errore di bit non correggibile durante un’operazione di lettura. In tal caso, il driver Universal NAND richiede all’add-on RAID 5 di fornire i dati del settore corretti dalle altre partizioni. Questa procedura si applica sia alle richieste di lettura provenienti dal file system, sia alle operazioni di lettura interne eseguite dal driver quando i dati di un blocco NAND vengono copiati in un’altra posizione.


Sincronizzazione dei dati dei settori

Un reset imprevisto che interrompe un’operazione di scrittura può causare incoerenza dei dati. È possibile che sul dispositivo venga aggiornato solo il dato dell’ultimo settore scritto, mentre l’informazione di parità no. Dopo il riavvio, il file system continuerà a funzionare correttamente, ma in caso di errore di lettura su quel settore (o su qualsiasi settore nella stessa stripe), il componente RAID 5 non sarà in grado di recuperare i dati, il che potrebbe causare una corruzione.

Questa situazione può essere prevenuta eseguendo una sincronizzazione di tutti i settori sul volume RAID 5 tramite la funzione API FS_STORAGE_SyncSectors(). Questa operazione può essere eseguita all’inizializzazione del file system o in parallelo alle normali attività, ad esempio in un task a bassa priorità.


Esempio di configurazione

Il seguente frammento di codice mostra come configurare l’add-on RAID 5 utilizzando tre partizioni situate sullo stesso dispositivo flash NAND.

/*********************************************************************
*
* Definizioni configurabili
*
**********************************************************************
*/
#define ALLOC_SIZE      0x8000              // Dimensione del pool di memoria in byte

/*********************************************************************
*
* Dati statici
*
**********************************************************************
*/
static U32 _aMemBlock[ALLOC_SIZE / 4];      // Pool di memoria per allocazione semi-dinamica.

/*********************************************************************
*
* FS_X_AddDevices
*
* Descrizione funzione
* Chiamata dal File System durante FS_Init().
* Aggiunge tutti i dispositivi usando primariamente FS_AddDevice().
*/
void FS_X_AddDevices(void) {
  //
  // Assegna memoria al file system per il funzionamento.
  //
  FS_AssignMemory(&_aMemBlock[0], sizeof(_aMemBlock));
  //
  // Aggiunge e configura il volume RAID5. Nome volume: "raid5:0:"
  //
  FS_AddDevice(&FS_RAID5_Driver);
  FS_RAID5_AddDevice(0, &FS_NAND_UNI_Driver, 0, 0);
  FS_RAID5_AddDevice(0, &FS_NAND_UNI_Driver, 0, 1000);
  FS_RAID5_AddDevice(0, &FS_NAND_UNI_Driver, 0, 2000);
  FS_RAID5_SetNumSectors(0, 1000);
  //
  // Aggiunge e configura il driver NAND. Nome volume: "nand:0:"
  //
  FS_AddDevice(&FS_NAND_UNI_Driver);
  FS_NAND_UNI_SetPhyType(0, &FS_NAND_PHY_ONFI);
  FS_NAND_UNI_SetECCHook(0, &FS_NAND_ECC_HW_NULL);
  FS_NAND_UNI_SetBlockRange(0, 0, NAND_NUM_BLOCKS);
  FS_NAND_ONFI_SetHWType(0, &FS_NAND_HW_K66_SEGGER_emPower);
}

Articoli simili

  •  |  |  | 

    Segger emSecure

    emSecure è una suite di firme digitali per sistemi embedded progettata per proteggere prodotti e asset vitali, offrendo una protezione totale contro l’hacking. Basata su algoritmi di crittografia asimmetrica a doppia chiave, la suite garantisce che le firme non possano essere forgiate tramite il reverse engineering del firmware. Inoltre, emSecure può rendere impossibile la creazione…

  •  |  | 

    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 emUSB Device

    Panoramica emUSB-Device è un software per dispositivi USB ad alte prestazioni, progettato specificamente per i sistemi embedded. Scritto in codice ANSI C, consente una facile integrazione della funzionalità USB in qualsiasi sistema embedded. Vengono fornite molteplici classi di dispositivi standard, che permettono al sistema di comportarsi come un dispositivo USB standard e garantiscono la comunicazione…

  •  |  | 

    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 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,…

  •  | 

    Flasher Hub-4

    Versione compatta del Flasher Hub-12, il Flasher Hub-4 controlla più unità Flasher Compact per consentire la programmazione simultanea. È possibile collegare fino a 24 Flasher utilizzando uno o più moduli SEGGER USB Hub-7 per creare un potente programmatore “gang” (multiplo) per una programmazione parallela efficiente ad alto volume. Il Flasher Hub-4 di SEGGER gestisce diverse…