In informatica il RAID, acronimo di "Redundant Array of Independent Disks" ovvero insieme ridondante di dischi indipendenti, (originariamente "Redundant Array of Inexpensive Disks", insieme ridondante di dischi economici), è una tecnica di installazione raggruppata di diversi dischi rigidi in un computer (o collegati ad esso) che fa sì che gli stessi nel sistema appaiano e siano utilizzabili come se fossero un unico volume di memorizzazione.
Scopi del RAID sono: aumentare le performance, rendere il sistema resiliente alla perdita di uno o più dischi e poterli rimpiazzare senza interrompere il servizio. Il RAID sfrutta, con modalità differenti a seconda del tipo di realizzazione, i principi di ridondanza dei dati e di parallelismo nel loro accesso per garantire, rispetto ad un disco singolo, incrementi di prestazioni, aumenti nella capacità di memorizzazione disponibile, miglioramenti nella tolleranza ai guasti e quindi maggiore affidabilità. Le modalità più diffuse sono RAID 0, 1, 5 e 10. La 3 e la 4 sono state praticamente soppiantate dalla 5. Alcuni sistemi usano modalità nidificate come la 10 o altre modalità proprietarie.
Il RAID può essere implementato anche nei PC normali: sono disponibili, infatti, schede RAID a basso costo quando questo non sia già presente sulle schede madri più sofisticate: Tuttavia è una tecnica storicamente impiegata nei server o nelle workstation dove sono richiesti grandi volumi o elevate prestazioni di immagazzinamento di dati: ad esempio per ospitare una base di dati o una postazione di montaggio di audio o video digitali. Il RAID si trova comunemente anche nei NAS e, sempre, nei sistemi di storage per architetture blade.
Storia Il termine RAID è stato introdotto nel 1988 da David A. Patterson, Garth A. Gibson e Randy H. Katz nell'articolo A Case for Redundant Arrays of Inexpensive Disks (RAID) pubblicato negli atti della SIGMOD Conference (pagg. 109–116). Gli autori presentano in maniera sistematica alcune delle tecnologie introdotte nel decennio precedente, aggregandole sotto l'acronimo di Redundant Array of Inexpensive Disks, in italiano insieme ridondante di dischi economici, e identificandole con i numeri da 1 a 5 che oggi sono noti come "livelli" RAID. Il primo brevetto fu depositato nel 1977 da Norman Ken Ouchi di IBM presentando quello che ora è noto come livello 4. Il significato della lettera "I" nel titolo è dovuto al fatto che negli anni '80, a differenza di oggi, il fattore chiave di tale tecnologia era l'abilità di combinare parecchi dischi a basso costo ed obsoleti per rendere il sistema complessivamente migliore di un disco di ultima generazione per capacità, affidabilità e velocità.
Implementazioni RAID Sezionamento dei dati I dati vengono suddivisi in sezioni (in inglese "stripes") di uguale lunghezza, dette "unità del sezionamento", e scritti su dischi differenti solitamente secondo un algoritmo di distribuzione di tipo round robin.
Quando si richiede una lettura di dimensione superiore all'unità di sezionamento, diverse implementazioni di diversi sistemi RAID distribuiscono l'operazione su più dischi in parallelo, aumentando le prestazioni. Ad esempio, se abbiamo sezioni da 1 bit e un array di D dischi, le sequenze di dati lunghe almeno D bit sfruttano tutti i dischi.
Economico o indipendente Sebbene la "I" di RAID oggi generalmente significhi independent (indipendente) invece di inexpensive (economico), uno dei vantaggi originali del RAID era l'uso di apparecchiature poco costose e rimane vero in molte situazioni, soprattutto dove vengono usati dischi IDE/ATA o SATA.
Più comunemente, invece, vengono usati dischi SCSI indipendenti (e più costosi), anche se il costo di tali dischi è molto minore del sistema che il RAID in genere sostituisce.
Hardware o software Il RAID può essere implementato sia con hardware dedicato sia con software specifico su hardware di uso comune.
Con una implementazione software, il sistema operativo gestisce l'insieme di dischi attraverso un normale controller (ATA, SCSI, Fibre Channel o altro). Questa opzione può essere più lenta di un RAID hardware, ma non richiede componenti extra (anche questi, in ogni caso, soggetti a possibili guasti).
Una implementazione hardware del RAID richiede (almeno) un controllore RAID ad hoc. Nei computer desktop, questo può essere una scheda di espansione PCI o può essere usato il controller presente nella scheda madre. Nei RAID più grandi, il controller e i dischi sono sistemati in un alloggiamento esterno. Questi dischi possono essere ATA, SATA, SCSI, o Fibre Channel mentre il controllore collega il computer ospite con uno o più collegamenti ad alta velocità SCSI, Fibre Channel o connessioni iSCSI, sia direttamente sia come NAS. Questo controllore gestisce i dischi e compie i controlli di parità (di cui molti livelli RAID hanno necessità).
Questa opzione tende a dare le migliori prestazioni e a rendere la gestione nel sistema operativo molto più semplice. Le implementazioni hardware in genere supportano lo scambio a caldo (hot swapping), permettendo di sostituire un disco mentre il sistema rimane in esecuzione.
Sia i sistemi hardware che software supportano l'uso degli Hot-spare, dischi preinstallati che vengono usati immediatamente (e quasi automaticamente) quando un altro disco si rompe.
Livelli RAID standard Tabella riassuntiva dei più comuni livelli RAID
Livello Numero minimodi dischi Capacità Numero massimo consentitodi dischi difettosi Schema Vantaggi Svantaggi RAID 0 2 C × N 0 Costo di implementazione basso;
alte prestazioni in scrittura e lettura grazie al parallelismo delle operazioni I/O dei dischi concatenati.Impossibilità d'utilizzo di dischi hot-spare;
affidabilità drasticamente ridotta, anche rispetto a quella di un disco singolo. RAID 1 2 C N - 1 Affidabilità, cioè resistenza ai guasti, che aumenta linearmente con il numero di copie;
velocità di lettura (in certe implementazioni e sotto certe condizioni).Bassa scalabilità;
costi aumentati linearmente con il numero di copie;
velocità di scrittura ridotta a quella del disco più lento dell'insieme.RAID 27C × (2P - P - 1) / N1Protezione contro letture non corrette da tutti i dischi.Serve un controller dedicato che sia capace di tenere in sincrono la lettura di tutti i dischi; serve un numero elevato di dischi per avere una capacità di dati accettabile. RAID 3 3 C × (N - 1) 1 Velocità di scrittura uguale a quella di lettura.La lettura di un blocco coinvolge tutti i dischi, e quindi le letture non sono parallelizzabili. RAID 4 3 C × (N - 1) 1 Resistenza ai guasti;
letture veloci grazie al parallelismo della struttura;
possibilità di inserire dischi hot-spare.Il disco utilizzato per la parità può costituire il collo di bottiglia del sistema;
scrittura lenta a causa della modifica e del calcolo della parità
(4 accessi a disco per ogni operazione I/O). RAID 5 3 C × (N − 1) 1 La parità è distribuita e quindi non esiste il problema del disco collo di bottiglia come nel RAID 4;
Le letture e le scritture sono più veloci rispetto allo stesso RAID 4 (perché il disco che nel RAID 4 è dedicato alla parità ora può essere utilizzato per le letture parallele).Scritture lente a causa della modifica e del calcolo della parità (4 accessi a disco per ogni operazione I/O), ma è comunque più veloce del singolo disco ed aumenta all'aumentare del numero di dischi.
Su un controller P410, un raid 5 composto da 5 dischi da 10.000 RPM, la lettura/scrittura sequenziale è paragonabile a quella di un SSD; con 10 dischi è più del doppio. RAID 6 4 C × (N − 2) 2 Altissima fault tolerance grazie alla doppia ridondanza.Scritture molto lente a causa della modifica e del calcolo della parità (6 accessi a disco per ogni operazione I/O), necessari N+2 dischi, molto costoso economicamente a causa della ridondanza e della complessità del controller della struttura.
Problema del Write Hole. Le write sui diversi dispositivi non sono atomiche nell'insieme: questo vuol dire che la mancanza di alimentazione durante una scrittura può portare alla perdita di dati. Ad esempio, con un sistema con 3 dischi in raid 5, se si volesse modificare il blocco n si dovrebbero fare queste operazioni: lettura del blocco n-1, lettura della parità, calcolo della nuova parità, scrittura del blocco n, e scrittura della parità. Il problema si ha nel caso in cui venga a mancare l'alimentazione durante queste due ultime operazioni.Livelli RAID annidati C = capacità del disco più piccolo; N = numero di dischi; P = dischi di parità
RAID 0: sezionamento senza ridondanza
Il sistema RAID 0 divide i dati equamente tra due o più dischi, tipicamente tramite sezionamento (o striping), ma senza mantenere alcuna informazione di parità o ridondanza che aumenti l'affidabilità (la dicitura RAID, ancorché diffusa, è pertanto impropria). RAID 0 è usato generalmente per aumentare le prestazioni di un sistema, o per la comodità di usare un grande numero di piccoli dischi fisici come se fossero un piccolo numero di grandi dischi virtuali.
L'affidabilità del sistema, misurata come tempo medio tra due guasti (MTBF), è inversamente proporzionale al numero degli elementi, perché uguale al rapporto tra l'affidabilità media dei dischi e il numero di dischi presenti. Un sistema di due dischi, per esempio, è affidabile la metà di un disco solo. Visto che il file system utilizza tutti i dischi, infatti, 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, seppur incompleti e danneggiati. RAID 0 è molto utile per creare server che necessitino di grandi spazi di stoccaggio, per i quali ridondanza è irrilevante o gestita altrimenti (cfr. RAID 1+0 e RAID 0+1), ma dove avere un grande numero di volumi sarebbe dispendioso, come un server NFS costretto ad esporre decine di punti di montaggio, o impossibile, come un sistema Microsoft Windows che ha il limite massimo di 128 volumi logici.
Vantaggi costo di implementazione basso; alte prestazioni in scrittura e lettura, grazie al parallelismo delle operazioni I/O dei dischi concatenati.
Svantaggi impossibilità d'utilizzo di dischi hot-spare; affidabilità drasticamente ridotta, anche rispetto a quella di un disco singolo: l'affidabilità di un sistema di n dischi con affidabilità media A è pari a A/n.
Concatenazione Sebbene una concatenazione di dischi non sia uno dei livelli RAID, è un metodo popolare per combinare un insieme di dischi fisici in un grande disco virtuale. Come il nome indica, è semplicemente un concatenamento di dischi al fine di far sembrare l'insieme come un singolo disco.
In questo senso, la concatenazione è un modo per invertire il partizionamento. Mentre il partizionamento prende un singolo disco fisico e crea uno o più dischi logici, la concatenazione usa due o più dischi fisici per creare un singolo disco logico. Anche la concatenazione, come il RAID 0, nel caso di rottura di un disco rende inutilizzabile l'intero array di dischi. In questo caso però il recupero dei dati sarà un po' più probabile rispetto al RAID 0 in quanto i dati sono scritti linearmente come se fosse un solo Hard Disk con un numero di blocchi danneggiati pari alla dimensione dell'Hard Disk danneggiato.
Per questo motivo può essere definito un Insieme di dischi Economici (senza ridondanza), e può essere visto come un parente lontano del RAID. La concatenazione è utile a volte per trasformare un insieme di dischi di diverse dimensioni in un disco logico di dimensioni utili. Quindi, la concatenazione può usare dischi da 3 GB, 15 GB, 5,5 GB e 12 GB per creare un singolo disco logico da 35,5 GB, di certo più utile dei singoli dischi presi separatamente.
In Linux 2.6 è definito come RAID.
Concatenazione indipendente (o JBOD)