|  | 

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 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 Flasher ATE (gang)

    A differenza della programmazione di singoli dispositivi, la programmazione gang è un metodo altamente efficiente utilizzato nella produzione elettronica per programmare più dispositivi simultaneamente. Questo approccio è particolarmente vantaggioso in contesti in cui grandi quantità di microcontrollori o altri dispositivi programmabili devono essere configurati in modo rapido e accurato. Riducendo significativamente il tempo totale di…

  •  |  | 

    Segger emWin

      emWin è la libreria grafica per sistemi embedded di SEGGER. Fornisce strumenti e API per la creazione di interfacce grafiche (GUI) su piattaforme microcontrollore, consentendo anche a sistemi con risorse limitate di eseguire interfacce utente interattive di alta qualità. Supporta display sia semplici che complessi ad alta risoluzione, è progettata specificamente per il mondo…

  •  |  | 

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