13. Sistemi RAID
L’evoluzione tecnologica ha permesso di avere dischi sempre più piccoli e meno costosi, pertanto è più facile equipaggiare un sistema con molti dischi in modo da raggiungere maggiori prestazioni attraverso letture e scritture in parallelo e maggior affidabilità tramite ridondanza. Il RAID nasce nel 1988 come Redundant Array of Independent Disks, con l’obiettivo di migliorare l’affidabilità incrementando le prestazioni. La struttura software dei dispositivi RAID si basa su più dischi indipendenti collegati al bus e la funzionalità RAID implementata dal sistema operativo. La struttura hardware si basa su un controllore intelligente che gestisce diversi dischi collegati alla macchina. Una batteria RAID è un’unità a sè stante composta da controllore, cache e dischi autonomi collegati a una macchina.
Concetti di base
Le strutture RAID si basano su copiatura speculare dei dati (mirroring) e sezionamento dei dati (data striping), per implementare parallelismo che garantisce aumento di prestazioni e affidabilità.
Affidabilità
Un guasto a un disco comporta la perdita di dati e per migliorare l’affidabilità si deve ricorrere alla ridondanza, che consiste nel memorizzare informazioni non strettamente necessarie ma utili per ricostruire le informazioni perse in caso di guasto. Vediamo ora come implementarla.
Copiatura speculare
Il modo più semplice per implementare la ridondanza è il mirroring (o shadowing) in cui un disco logico corrisponde a due dischi fisici, ogni scrittura avviene su entrambi i dischi e i dati si perdono solo se si guastano entrambi i dischi.
Il tempo medio di perdita dei dati in caso di mirroring dipende dal tempo medio di guasto di ogni singolo disco e dal tempo medio di riparazione. Per esempio, supponendo un tempo medio di guasto sul singolo disco di 100.000 ore e un tempo di riparazione di 10 ore, si ha il seguente tempo medio di perdita dei dati su un sistema con mirroring:
Si noti come offra protezione solo contro i guasti indipendenti e per cause esterne (calo di tensione, difetti di fabbricazione in una partita di dischi, ecc.) entrambi i dischi potrebbero guastarsi contemporaneamente.
Con mirroring la frequenza di gestione delle letture raddoppia perchè si può leggere da uno qualunque dei due dischi e il tempo di trasferimento rimane inalterato.
Sezionamento dei dati
Usando più dischi è possibile migliorare la capacità di trasferimento distribuendo i dati in sezioni su più dischi (data striping).
Il sezionamento può avvenire a livello di bit, ovvero i bit di ciascun byte vengono distribuiti su più dischi, o a livello di blocco, in cui i blocchi dei file sono distribuiti su più dischi.
Il parallelismo tramite il bilanciamento del carico aumenta la produttività per accessi multipli a piccole porzioni di dati e riduce il tempo di risposta relativo agli accessi a grandi quantità di dati.
Livelli di RAID
Il mirroring garantisce un'alta affidabilità ma è costoso, mentre il data striping permette alta capacità di trasferimento dati ma non migliora l’affidabilità. Spesso si usano tecniche basate sui bit di parità.
L’utilizzo combinato di queste tecniche è stato schematizzato in 6 livelli di RAID.
Livello RAID 0
Puro data striping a livello di blocco per migliorare soltanto le prestazioni, senza ridondanza.
Vantaggi
È economico e garantisce alte prestazioni grazie al parallelismo delle operazioni di lettura e scrittura.
Svantaggi
Non ha ridondanza e l’affidabilità diminuisce all’aumentare del numero di dischi impiegati.
Livello RAID 1
Avviene mirroring senza sezionamento di blocco.
Vantaggi
Aumenta l’affidabilità linearmente con il numero di copie.
Si aumentano le prestazioni in lettura (se il disco è occupato si può leggere dall’altro).
Svantaggi
Ha un alto costo e bassa scalabilità.
Livello RAID 2
Avviene il data striping a livello di bit, congiunto all'uso del codice di Hamming che consente di correggere gli errori.
I bit di correzione sono memorizzati singolarmente in dischi separati diversi rispetto a quelli usati per i dati.
Se un disco si guasta i bit rimanenti del byte dati e i bit di correzione associati vengono usati per ricostruire il dato danneggiato. Il RAID 2 richiede solo 3 dischi in più per 4 dischi dati rispetto ai 4 richiesti dal RAID 1. Questo perchè utilizza il codice di Hamming, che codifica 4 bit dati in 7 bit, aggiungendone 3 di parità.
Vantaggi
È un RAID 0 con correzione degli errori, dunque maggiore affidabilità.
Svantaggi
Gli accessi non possono essere paralleli, poichè i dati devono essere ricostruiti mano a mano che le letture proseguono, e la rotazione dei dischi deve essere sincronizzata, proprio perchè si deve leggere un bit da un disco ed un bit dall'altro alternatamente. Inoltre è costoso.
Livello di RAID 3
Avviene il data striping a livello di byte, con un disco dedicato ai bit di parità noto come organizzazione con bit di parità. I controllori dei dischi sono in grado di rilevare se un settore è stato letto correttamente. Se un settore è danneggiato per ogni bit del settore è possibile determinare se deve valere 0 o 1 calcolando la parità dei bit corrispondenti dai settori degli altri dischi.
Vantaggi
Ha la stessa efficienza del RAID 2 ma usa un solo disco per i bit di parità.
La velocità di trasferimento è pari a
Svantaggi
Rispetto al RAID 1 fornisce meno operazioni di I/O al secondo in quanto ogni disco è coinvolto da tutte le richieste.
Il tempo di scrittura è più lungo dovuto al calcolo del bit di parità. È possibile però risolvere delegando al controllore RAID il calcolo della parità, sollevando così la CPU dall’incarico.
Livello di RAID 4
Avviene il data striping a livello di blocco, con un disco dedicato ai bit di parità detto organizzazione con blocchi di parità intercalati. È simile al RAID 0 con un blocco di parità in un disco separato. Ha
più tolleranza ai guasti e letture più veloci grazie al parallelismo.
Vantaggi
Visto che il data striping avviene a livello di blocco, le operazioni di accesso ai dischi sono parallelizzabili, consentendo così letture più veloci. Inoltre ha la tolleranza ai guasti.
Svantaggi
Il disco usato per la parità può diventare un collo di bottiglia e le scritture sono lente a causa del calcolo della parità.
Livello di RAID 5
Avviene il data striping a livello di blocco, con bit di parità distribuiti tra tutti i dischi del RAID, noto come organizzazione con blocchi intercalati a parità distribuita. Ovviamente un blocco di parità non può contenere informazioni di parità per blocchi che risiedono nello stesso disco, altrimenti un guasto al disco farebbe perdere i dati.
Vantaggi
Ha gli stessi vantaggi del RAID 4 senza il collo di bottiglia del disco di parità, visto che i blocchi contenenti bit di parità sono distribuiti in tutti i dischi.
Svantaggi
Come il RAID 4 ha scritture lente.
Livello di RAID 6
È simile al RAID 5 ma con maggiori informazioni di ridondanza per gestire il malfunzionamento di ben 2 dischi contemporaneamente. Al posto della parità usa altri codici per la correzione degli errori come Reed-Solomon.
Vantaggi
Ha un altissima ridondanza.
Svantaggi
È molto costoso e le scritture sono lente per la gestione dei codici per la correzione degli errori.
Livello RAID 0 + 1
Combina il RAID 0 e 1 per fornire affidabilità e alte prestazioni: si trovano due RAID 0 messi in RAID 1. I dischi principali effettuano data striping tra di loro, le copie effettuano data striping tra di loro.
Vantaggi
Ha prestazioni migliori rispetto al RAID 5 e alta affidabilità.
Svantaggi
È molto costoso e richiede il doppio dei dischi necessari per memorizzare dati. Infine non supporta la rottura simultanea di due dischi, se non appartengono allo stesso stripe.
Livello RAID 1 + 0
Combina 1 e 0 per fornire affidabilità e alte prestazioni: dati
Vantaggi
È più robusto del RAID 0 + 1 in quanto ogni disco di ogni stripe può guastarsi senza far perdere dati al sistema.
Svantaggi
È costoso.