Esistono molte teorie ed applicazioni pratiche tese ad evitare la perdiata di dati. Fra tutte ne spicca una: il RAID (Redundant Array of Inexpensive Disk), una serie ridondante di hard disk economici.
1. Prima che la tecnologia RAID venisse inventata, i costruttori di hard disk tendevano a spingere all’estremo la
sofisticazione tecnologica dei loro prodotti per renderli sempre più veloci e soprattutto affidabili.
2. A quel punto ci si è chiesti come fare si che la rottura di un disco non causasse alcuna perdita di dati.
3. La risposta è RAID: un’architettura nella quale i dati vengono scritti contemporaneamente su più dischi. Anche
qualora un disco si rompa, il dato è salvaguardato in quanto è presente anche sugli altri dischi del RAID.
Nel passato i RAID composti da piccoli dischi poco costosi erano visti come alternativa ai grandi e costosi dischi; attualmente i RAID sono usati per la loro maggiore affidabilità (tolleranza ai guasti) e per la superiore velocità di trasferimento dei dati, piuttosto che per motivi economici.
Un po' di terminologia in materia:
Il mirroring fornisce alta affidabilità ma è costoso. Lo striping, fornisce un’alta velocità di trasferimento dati, ma non migliora l’affidabilità. Sono stati proporsti numerosi schemi per fornire ridondanza a basso costo utilizzando l’idea dello spezzamento del disco combinato con l’uso di bit di parita o di ECC. Sono nati cosi i livelli di RAID. Nelle descrizioni seguenti si avrà:
In tutti i casi è memorizzata una quantità di dati equivalente a quattro dischi e si usano dischi supplementari per le informazioni ridondanti per il recupero dopo un guasto.
Il RAID livello 0 si riferisce agli array di dischi con spezzamento a livello di blocchi, ma senza alcuna ridondanza.
Il RAID a livello 1 si riferisce al mirroring di dischi. La figura, mostra un’organizzazione di mirror che gestisce una quantità di dati pari a quattro dischi.
Ogni byte in memoria può avere associato un bit di parità. Gli schemi ECC, memorizzano due o più bit supplementari per poter ricostruire i dati eventualmente danneggiati. Ad esempio, si può memorizzare il primo bit di ogni byte nel primo disco, il secondo nel disco 2 e così via. I bit di correzione sono immagazzinati in dischi supplementari (dischi P). Se uno dei dischi viene a mancare, i rimanenti bit, e quelli correttivi associati, possono venire letti dagli altri dischi ed essere usati per ricostruire i dati danneggiati.
Migliora il livello 2. Se uno dei settori del disco viene danneggiato, sappiamo esattamente di che settore si tratta e, per ogni bit nel settore possiamo rilevare se è 1 o 0 calcolando la parità dei bit corrispondenti degli altri dischi. Questo livello di RAID è meno costoso del 2 in quanto si utilizza un numero di dischi supplementari inferiore. Per questo il livello 2, nella pratica non viene usato. Inoltre serve un solo disco supplementare contro gli N dischi mirror del livello 1.
Usa una suddivisone a livello di blocco come nel RAID 0, e inoltre mantiene un blocco di parità su un disco separato per i blocchi corrispondenti provenienti da altri N dischi (figura (e)). Si ha una velocità di I/O più elevata rispetto al livello 3, inoltre la velocità di trasferimento per letture di grandi dimensioni è elevata, poiché tutti i dischi possono essere letti in parallelo.
Differisce dal livello 4 per la suddivisione dei dati e della parità tra tutti gli N+1 dischi, invece di memorizzare i dati in N dischi e la parità in un solo disco. Per ogni blocco, cioè, uno dei dischi memorizza la parità e gli altri memorizzano i dati.
E’ molto simile al RAID 5, ma memorizza ulteriori informazioni ridondanti su diversi supporti per fronteggiare l’evenienza di guasti di dischi multipli. Invece di usare la parità, si usano dei codici correttori dell’errore (ad es. codici di Reed-Solomon). In questo livello sono memorizzadi 2 bit di dati ridondanti ogni quattro bit di dati e il sistema può supportare 2 guasti del disco.
Sono infine presenti due tecniche di RAID che uniscono il RAID 0 ed il RAID 1 e vengono definiti RAID a più livelli:
Vengono combinati i livelli di RAID 0 e 1. Il RAID 0 fornisce le prestazioni, mentre il RAID 1 fornisce l’affidabilità. Nel RAID 0 + 1, si suddivide un gruppo di dischi, quindi la suddivisione viene messa in mirror con un’altra suddivisione ad essa equivalente. In questo tipo di RAID se si guasta un singolo disco, risulta inaccessibile l’intera suddivisione.
Come nel precedente caso si combinano i RAID 0 e 1. In questo caso però, i dischi sono in mirror a coppie (RAID 1) e poi le coppie del mirror risultano suddivise (RAID 0). In questo caso, il principale vantaggio è dato dal fatto che se si guasta un singolo disco, sarà l’unico indisponibile, ma il resto dei dischi e la sua coppia mirror resteranno accessibili.