|  | 

emFile RAID 1


RAID 1 – Teoria del funzionamento

Il RAID 1 utilizza il “mirroring” per consentire il recupero dei dati. Una copia di tutti i dati presenti sulla partizione master viene mantenuta su una partizione separata chiamata mirror. Il master e il mirror possono risiedere sullo stesso dispositivo di memorizzazione o su dispositivi separati. In caso di difetto hardware o guasto sulla partizione master, i dati possono essere recuperati dalla partizione mirror.

  • Scrittura: Su una richiesta di scrittura del file system, i dati del settore vengono scritti contemporaneamente sia sul master che sul mirror.
  • Lettura: Su una richiesta di lettura, l’add-on RAID 1 legge i dati dal master. In caso di errore di lettura, i dati vengono prelevati dalla partizione mirror. Il dato viene così recuperato e non viene segnalato alcun errore al file system.

Il RAID 1 può essere configurato per archiviare i dati su un unico dispositivo o su due distinti. Se si utilizza un singolo dispositivo, la prima metà viene usata come partizione master. Quando si usano due dispositivi diversi, le dimensioni dei volumi non devono necessariamente corrispondere: il numero di settori disponibili per il file system sarà pari a quello del dispositivo più piccolo. È tuttavia richiesto che la dimensione del settore sia identica per entrambi i dispositivi.


Recupero errori NAND flash

Il driver Universal NAND può utilizzare l’add-on RAID 1 per evitare la perdita di dati quando si verifica un errore di bit non correggibile durante un’operazione di lettura. In questo caso, il driver richiede all’add-on RAID 1 di fornire i dati del settore corretti dalla partizione mirror. Questa procedura si applica sia alle richieste di lettura provenienti dal file system, sia alle operazioni di lettura interne eseguite dal driver Universal NAND (ad esempio quando i dati di un blocco NAND vengono copiati in un’altra posizione).


Sincronizzazione dei settori

Un reset imprevisto che interrompe un’operazione di scrittura può portare a un’incoerenza dei dati. È possibile che i dati dell’ultimo settore scritto siano memorizzati solo sul master e non sul mirror. Dopo il riavvio, il file system continuerà a funzionare correttamente, ma in caso di un errore di lettura che colpisca esattamente quel settore, verrebbero letti dati obsoleti dal mirror, causando una corruzione dei dati.

Questa situazione può essere evitata sincronizzando tutti i settori del volume RAID. L’applicazione può eseguire la sincronizzazione chiamando la funzione API FS_STORAGE_SyncSectors(). Ad esempio, un task a bassa priorità può chiamare questa funzione in parallelo ad altre attività del file system.


Esempio di configurazione

Il seguente frammento di codice mostra come configurare l’add-on RAID per utilizzare due dispositivi di memoria NAND rispettivamente come partizione master e mirror.

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

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

/*********************************************************************
*
* FS_X_AddDevices
*
* Descrizione funzione
* Questa funzione viene chiamata dal file system durante FS_Init().
* Serve ad aggiungere tutti i dispositivi, usando principalmente FS_AddDevice().
*/
void FS_X_AddDevices(void) {
  //
  // Fornisce memoria al file system per il suo funzionamento.
  //
  FS_AssignMemory(&_aMemBlock[0], sizeof(_aMemBlock));
  
  //
  // Imposta la dimensione massima del settore del file system.
  //
  FS_SetMaxSectorSize(2048);
  
  //
  // Aggiunge e configura il driver NAND per lo storage master (Indice 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);
  
  //
  // Aggiunge e configura il driver NAND per lo storage mirror (Indice 1).
  //
  FS_AddDevice(&FS_NAND_UNI_Driver);
  FS_NAND_UNI_SetPhyType(1, &FS_NAND_PHY_ONFI);
  FS_NAND_UNI_SetECCHook(1, &FS_NAND_ECC_HW_NULL);
  
  //
  // Aggiunge e configura il driver RAID.
  // I parametri indicano: (Unità RAID, Driver Master, Indice Master, Driver Mirror, Indice Mirror).
  //
  FS_AddDevice(&FS_RAID1_Driver);
  FS_RAID1_Configure(0, &FS_NAND_UNI_Driver, 0, &FS_NAND_UNI_Driver, 1);
}

Articoli simili

  •  | 

    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…

  •  | 

    Flasher Hub-12

    Fratello maggiore del Flasher Hub-4, il Flasher Hub-12 controlla fino a 24 unità Flasher Compact, che operano come canali individuali per la programmazione multipla (“gang”) parallela ad alta velocità. Ogni canale può essere configurato per programmare un dispositivo diverso o un’immagine firmware differente. Il sistema combinato Flasher Hub-12 e Flasher Compact viene configurato una sola…

  •  |  | 

    Segger SystemView

    Panoramica SystemView è uno strumento di testing embedded progettato per analizzare e profilare il comportamento dei sistemi real-time. Offre approfondimenti dettagliati sul comportamento a runtime, superando le capacità dei debugger tradizionali. Ideale per sistemi complessi con thread multipli e interrupt, SystemView aiuta gli sviluppatori di software embedded a garantire che i propri sistemi funzionino come…

  •  |  | 

    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 emFTP

    FTP significa File Transfer Protocol (Protocollo di Trasferimento File). È il meccanismo di base per spostare file tra macchine su reti basate su TCP/IP, come Internet. L’FTP è un protocollo client/server, il che significa che una macchina (il client) avvia il trasferimento contattando un’altra macchina (il server) ed effettuando delle richieste. Il server deve essere…

  •  |  | 

    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 permette di creare app: piccoli…