Nel panorama delle tecnologie di storage, i sistemi RAID offrono una vasta gamma di configurazioni e livelli, ciascuno con caratteristiche uniche adatte a differenti esigenze di utilizzo. L'obiettivo principale dei sistemi RAID è quello di garantire l'integrità dei dati attraverso tecniche di ridondanza, distribuzione e protezione.
La scelta di un particolare livello RAID dipende da diversi fattori, tra cui la crittografia dei dati, le prestazioni richieste, il costo, la capacità di ridondanza e la tolleranza ai guasti.
I sistemi RAID sono ampiamente utilizzati in una varietà di contesti, tra cui server aziendali, sistemi di archiviazione di grandi dimensioni, applicazioni di videosorveglianza, server di database critici e sistemi di elaborazione dati ad alte prestazioni.
A breve, esploreremo i principali livelli RAID, dalla configurazione di base RAID 0 fino alle soluzioni più avanzate come RAID 6. Ogni livello offre un approccio unico alla protezione dei dati e alle prestazioni, offrendo agli utenti una gamma diversificata di opzioni per soddisfare le loro esigenze di storage. Buona lettura!
RAID 0 - striping
Il sistema RAID 0 divide i dati equamente tra due o più dischi, tipicamente tramite sezionamento (striping), ma senza mantenere alcuna informazione di parità o ridondanza che aumenti l'affidabilità.
Visto che il file system utilizza tutti i dischi, il guasto di un disco rende inaccessibile una porzione così grande del file system da impedirne spesso ogni funzionamento. Sebbene i dati possano essere recuperati, risultano spesso incompleti e danneggiati. RAID 0 è molto utile per creare server che necessitino di grandi spazi di stoccaggio, per i quali la ridondanza è irrilevante o gestita altrimenti (cfr. RAID 1+0 e RAID 0+1).
- Schema:

- Numero minimo di dischi: 2
- Numero massimo dischi difettosi: 0
- Capacità: 𝐶1+𝐶2+..+𝐶n
- Vantaggi: Basso costo di implementazione e alte prestazioni in scrittura e lettura. Ad esempio RAID 0 è spesso utilizzato in applicazioni dove la velocità è cruciale, come l'editing video e le applicazioni che richiedono un elevato throughput
- Svantaggi: Impossibilità di utilizzare dischi hot-spare e affidabilità drasticamente ridotta. Inoltre la mancanza di ridondanza significa che RAID 0 non è adatto per dati critici senza un backup esterno
RAID 1 - replicazione / mirroring
Il sistema RAID 1 mantiene una copia esatta di tutti i dati su almeno due dischi. È utile quando la ridondanza sia ritenuta un'esigenza più importante rispetto allo sfruttamento ottimale della capacità di stoccaggio dei dischi. L'insieme, infatti, limita il suo volume a quello del disco di taglia inferiore. D'altro canto, visto che un sistema con "𝑛" dischi è in grado di resistere alla rottura di 𝑛 - ( 𝑛 - 1 ) componenti, l'affidabilità aumenta linearmente al numero di dischi presenti.
- Schema:

- Numero minimo di dischi: 2
- Numero massimo dischi difettosi: N/2
- Capacità: 𝐶 (capacità del disco più piccolo)
- Vantaggi: Alta affidabilità grazie alla resistenza ai guasti che aumenta linearmente con il numero di copie; velocità di lettura (in certe implementazioni e sotto certe condizioni); recupero dati più rapido in caso di guasto di un disco, dato che i dati sono immediatamente disponibili sull'altro disco.
- Svantaggi: Bassa scalabilità; costi aumentati linearmente con il numero di copie (dovuto al fatto che ogni disco aggiuntivo raddoppia la quantità di hardware necessaria); velocità di scrittura ridotta a quella del disco più lento dell'insieme.
RAID 2 - sezionamento a livello di bit
Un sistema RAID 2 divide i dati al livello di bit (invece che di blocco) e utilizza un codice di Hamming che permette di correggere errori su singoli bit e di rilevare errori doppi. Questi dischi sono sincronizzati dal controllore, in modo tale che la testina di ciascun disco sia nella stessa posizione in ogni disco. Questo sistema si rivela molto efficiente in ambienti in cui si verificano numerosi errori di lettura o scrittura. Tuttavia, in ambienti più moderni, data l'elevata affidabilità dei dischi, il RAID 2 non viene più utilizzato e oggi è considerato obsoleto.
- Schema:

- Numero minimo di dischi: 7
- Numero massimo dischi difettosi: 0
- Capacità: 𝐶×7 (dove 𝐶 è la capacità del disco più piccolo)
- Vantaggi: Elevata capacità di correzione degli errori grazie all'utilizzo del codice di Hamming; Buona performance in ambienti con frequenti errori di lettura/scrittura.
- Svantaggi: Inefficienza in termini di utilizzo dello spazio rispetto ad altri livelli RAID, dato che richiede un elevato numero di dischi; Costi elevati dovuti al bisogno di dischi sincronizzati e di un controller specializzato; Obsolescenza, poiché le moderne tecnologie di dischi offrono già una bassa probabilità di errori e una maggiore efficienza.
RAID 3 - sezionamento a livello di byte con disco di parità
Un sistema RAID 3 usa una divisione a livello di byte con un disco dedicato alla parità. Il RAID 3 è estremamente raro nella pratica. Uno degli effetti collaterali del RAID 3 è che non può eseguire richieste multiple simultaneamente. Questo perché ogni singolo blocco di dati è diffuso tra tutti i dischi del RAID e risiede nella stessa posizione su ciascun disco. Quindi, ogni operazione di I/O richiede l'utilizzo di tutti i dischi.
Nell'esempio riportato qua sotto, una richiesta per il blocco A richiederà di cercare attraverso tutti i dischi. Una richiesta simultanea per il blocco B rimarrà invece in attesa.
- Schema:

- Numero minimo di dischi: 3
- Numero massimo dischi difettosi: 1
- Capacità: 𝐶×(𝑁-1) (dove 𝐶 è la capacità del disco più piccolo e 𝑁 è il numero totale di dischi)
- Vantaggi: Sicurezza ed efficienza contro la perdita di dati; La parità permette di recuperare i dati in caso di guasto di un singolo disco; La ricostruzione dei dati persi può essere effettuata rapidamente grazie al disco di parità dedicato.
- Svantaggi: Non è possibile eseguire richieste multiple simultaneamente, il che può ridurre le prestazioni in ambienti con elevati carichi di lavoro; Se il disco di parità fallisce, l'intero sistema RAID è vulnerabile fino a quando il disco non viene sostituito e la parità ricostruita; Le operazioni di scrittura possono essere lente poiché il disco di parità deve essere aggiornato ogni volta che i dati vengono scritti.
RAID 4 - sezionamento a livello di blocco con disco di parità
Il sistema RAID 4 usa una divisione dei dati a livello di blocchi e mantiene su uno dei dischi i valori di parità, in maniera molto simile al RAID 3, dove la suddivisione è a livello di byte. Questo permette ad ogni disco appartenente al sistema di operare in maniera indipendente quando è richiesto un singolo blocco.
Se il controllore del disco lo permette, un sistema RAID 4 può servire diverse richieste di lettura contemporaneamente. In lettura, la capacità di trasferimento è paragonabile al RAID 0, ma la scrittura è penalizzata perché la scrittura di ogni blocco comporta anche la lettura del valore di parità corrispondente e il suo aggiornamento.
Nell'esempio accanto, una richiesta al blocco A1 potrebbe essere evasa dal disco 1. Una richiesta simultanea al blocco B1 dovrebbe aspettare, ma una richiesta al blocco B2 potrebbe essere servita allo stesso momento.
- Schema:

- Numero minimo di dischi: 3
- Numero massimo dischi difettosi: 1
- Capacità: 𝐶×(𝑁-1) (dove 𝐶 è la capacità del disco più piccolo e 𝑁 è il numero totale di dischi)
- Vantaggi: Grazie al disco di parità, il sistema può tollerare il guasto di un disco senza perdita di dati; Il parallelismo nella struttura permette di servire rapidamente le richieste di lettura (simile a RAID 0); Possibilità di inserire dischi hot-spare per un recupero rapido in caso di guasto di un disco.
- Svantaggi: Il disco di parità può diventare un collo di bottiglia, limitando le prestazioni complessive del sistema; La modifica e il calcolo della parità comportano una penalizzazione delle operazioni di scrittura, richiedendo fino a 4 accessi al disco per ogni operazione I/O (lettura dei dati vecchi, lettura della parità vecchia, scrittura dei dati nuovi, scrittura della parità aggiornata).
RAID 5 - sezionamento a livello di blocco con parità distribuita
Un sistema RAID 5 utilizza una suddivisione dei dati a livello di blocco, distribuendo i dati di parità uniformemente tra tutti i dischi che lo compongono. È una delle implementazioni più popolari, sia in software che in hardware, e praticamente ogni dispositivo di storage integrato dispone del RAID 5 tra le sue opzioni.
- Schema:

- Numero minimo di dischi: 3
- Numero massimo dischi difettosi: 1
- Capacità: 𝐶×(𝑁-1) (dove 𝐶 è la capacità del disco più piccolo e 𝑁 è il numero totale di dischi)
- Vantaggi: Non esiste il problema del disco collo di bottiglia come nel RAID 4, poiché la parità è distribuita tra tutti i dischi; Le letture e le scritture sono più veloci rispetto al RAID 4, poiché tutti i dischi possono partecipare alle operazioni di I/O. Questo rende RAID 5 particolarmente efficiente in lettura; Offre un buon equilibrio tra capacità di storage, prestazioni e tolleranza ai guasti.
- Svantaggi: Le operazioni di scrittura sono penalizzate dalla necessità di calcolare e aggiornare la parità, richiedendo fino a 4 accessi al disco per ogni operazione di I/O (lettura dei dati vecchi, lettura della parità vecchia, scrittura dei dati nuovi, scrittura della parità aggiornata). Tuttavia, è comunque più veloce di un singolo disco; Sebbene le scritture siano più lente rispetto alle letture, la velocità aumenta all'aumentare del numero di dischi. Su un controller P410, un RAID 5 composto da 5 dischi da 10.000 RPM offre una lettura/scrittura sequenziale paragonabile a quella di un SSD; con 10 dischi, la velocità è più del doppio.
RAID 6 - sezionamento a livello di blocco con doppia parità distribuita
Un sistema RAID 6 utilizza una divisione a livello di blocchi con i dati di parità distribuiti due volte tra tutti i dischi. Non era presente tra i livelli RAID originari. Nel RAID 6, il blocco di parità viene generato e distribuito tra due stripe di parità, su due dischi separati, utilizzando differenti stripe di parità nelle due direzioni.
Il RAID 6 è più ridondante del RAID 5, ma è molto inefficiente quando viene usato con un numero limitato di dischi. La doppia parità fornisce un'implementazione ancora più ridondante.
- Schema:

- Numero minimo di dischi: 4
- Numero massimo dischi difettosi: 2
- Capacità: 𝐶×(𝑁−2) (dove 𝐶 è la capacità del disco più piccolo e 𝑁 è il numero totale di dischi)
- Vantaggi: Altissima fault tolerance, grazie alla doppia ridondanza, il sistema può tollerare il guasto di due dischi contemporaneamente; Ideale per ambienti mission-critical dove la perdita di dati non è un'opzione.
- Svantaggi: Le operazioni di scrittura sono penalizzate dalla necessità di calcolare e aggiornare due blocchi di parità, richiedendo fino a 6 accessi al disco per ogni operazione di I/O (lettura dei dati vecchi, lettura delle parità vecchie, scrittura dei dati nuovi, scrittura delle parità aggiornate);Necessita di almeno N+2 dischi, aumentando significativamente il costo economico della struttura a causa della ridondanza e della complessità del controller; Le scritture sui diversi dispositivi non sono atomiche nell'insieme; la mancanza di alimentazione durante una scrittura può portare alla perdita di dati. Ad esempio, in un sistema con 4 dischi in RAID 6, se si volesse modificare un blocco, si dovrebbero fare le seguenti operazioni: lettura del blocco n-1, lettura delle parità, calcolo della nuova parità, scrittura del blocco n e scrittura delle parità. Se si perde l'alimentazione durante le ultime operazioni, i dati possono risultare danneggiati.