Pillole di cultura informatica.

di Marco Protasi (www.nxproject.info)
Come aumentare le prestazioni e/o la tolleranza ai guasti del sistema dischi – Parte I
Redundant Array of Independent Disks, più noto con il nome di RAID, è una struttura costituita da un insieme di dischi il cui scopo è quello di aumentare la tolleranza ai guasti e l’integrità dei dati e/o, a seconda della tipologia adottata, aumentare le prestazioni di trasferimento dati.
Volendo semplificare potremmo dire che il principio cardine sui cui si basa tale tecnologia è “l’unione fa la forza”, di fatti il sistema combina le unità che lo compongono al fine di raggiungere l’obiettivo prefissato apparendo al sistema operativo come un’unica unità.
RAID 0: denominato striping. Per il suo funzionamento sono necessari almeno due dischi, la cui combinazione genera un’unica unità. La capacità totale è la somma delle unità che lo compongono. Nelle operazioni di accesso, sia in scrittura che in lettura, i dati vengono divisi tra i dischi e il risultato finale può consistere in un incremento delle prestazioni, dato che il lavoro può essere svolto simultaneamente da tutti i dischi che compongono l'array.
Tale sistema non offre nessuna tolleranza agli errori, è infatti sufficiente che uno dei dischi che lo componga si guasti per rendere irrecuperabile il contenuto dell’intero array.

RAID 1: denominato mirroring, è il primo livello RAID che offre affidabilità e protezione dei dati. Occorrono due dischi per realizzarlo e la capacità totale del sistema è pari alla capacità dell’unità più piccola che ne fa parte. Il suo funzionamento si basa sulla duplicazione dei dati. Una copia integrale dei dati viene effettuata sul secondo disco dell'array. Le prestazioni in scrittura rimangono invariate mentre quelle in lettura migliorano in quanto i dati vengono attinti da più dischi contemporaneamente.

RAID 2: utilizza lo striping operando sui dati a livello di bit; a differenza del raid 0 attraverso il codice di Hamming è in grado di rilevare errori a livello di bit e correggerli. Era previsto per array di dischi privi di correzione di errori integrata per cui attualmente non ha impiego pratico.
RAID 3: basato sul byte striping con protezione dei dati: delle minimo tre unità che lo compongono due vengono gestite in striping mentre la terza è riservata al controllo della parità. Ogni volta che un dato viene scritto viene generata una parità nel disco dedicato; in caso di rottura di una delle unità il contenuto mancante può essere recuperato utilizzando le unità rimaste e la parità. Nonostante ciò il sistema è raramente usato, l’accesso ai dischi è eseguito in parallelo e ciò impedisce ai dischi di operare in maniere indipendente.
RAID 4: molto simile al RAID 3, ma a differenza di questo opera per Block striping (i byte vengono organizzati in blocchi ed elaborati come tali) e consente un accesso indipendente ai vari dischi dell’array in funzione dei blocchi da recuperare. Si prefeferisce di norma non impiegarlo e implementare in sua vece il RAID 5.
RAID 5: opera a livello di Block striping e permette l’accesso indipendente ai vari dischi in funzione dei blocchi da recuperare. In questa struttura tutti i dischi (minimo 3) sono in striping e a differenza di quanto accade nel raid 3 e 4 la parità viene distribuita su tutte le unità dell’Array.
Nelle operazioni di lettura la parità viene ignorata fino a quando l’Array non perde uno dei dischi o non si presenta un errore CRC, in questa circostanza i dati vengono riscostruiti “al volo” utilizzando i blocchi rimanenti e quello di parità. Le prestazioni in lettura possono migliorare rispetto a quelle ottenibili con un singolo disco dal momento che i dati possono essere letti simultaneamente da tutti i dischi dell'array, mentre in fase di scrittura si avrà un lieve degrado dovuto al calcolo della parità. In generale le prestazioni sono inferiori rispetto a quelle ottenibili dal RAID di livello 1. Da notare, inoltre, che la ricostruzione dei dati è decisamente più lenta che nel RAID 1.
RAID 6: opera anch’esso a livello di Block striping, ma introduce una doppia parità, in questo array infatti i dati di parità vengono distribuiti 2 volte sui due dischi diversi utilizzando la doppia parità, vengono cioè creati due tipi di parità diverse. Ciò aumenta la tolleranza agli errori ma di contro richiede un numero maggiori di dischi rispetto al raid 5 per operare al meglio.

RAID 0+1: richiede un minimo di quattro dischi ed è realizzato facendo il mirroring di due array striping.

RAID 1+0: richiede quattro dischi, ed è realizzato facendo lo striping di due array mirroring.

In un’ottica di protezione e sicurezza dei dati il vantaggio dell’uso di un sistema RAID è evidente.
Sistemi come il RAID 5, con l’aggiunta di tecnologie hot swap, oltre a garantire la continuità delle operazioni in caso di guasto di un'unità permettono persino la sostituzione a caldo e, una volta sostituito il disco, il sistema provvede alla ricostruzione dei dati mancanti senza richiedere il fermo operativo.
Sistemi come lo striping sono volti all’incremento delle prestazioni e sono indicati dove è necessario lo spostamento e l’elaborazione di file di grandi dimensioni.