Appendice D. RAID (Redundant Array of Independent Disks)

Cos'è il RAID?

L'idea di base dietro al RAID è di combinare più dischi di modeste dimensioni e di costo ridotto in un array che superi le prestazioni di un disco unico, grande e costoso. Questo array di dischi viene visto dal computer come un unico dispositivo.

La tecnologia RAID offre un metodo per suddividere le informazioni su vari dischi, usando tecniche come il disk striping (RAID livello di 0), il disk mirroring (RAID di livello 1) e il disk striping with parity (RAID di livello 5) per aggiungere ridondanza ai dati, ottenere una latenza inferiore e/o una larghezza banda superiore per leggere o scrivere dati su dischi e massimizzare la capacità di recupero dopo un crash del disco.

Il concetto di base della tecnologia RAID è che i dati possono essere distribuiti tra i dischi dell'array in maniera consistente. Per fare questo, i dati devono prima venir spezzati in "chunk" (spesso di 32k o 64k di grandezza, anche se vengono a volte usate altre dimensioni). Ogni chunk viene così scritto sui dischi a turno. Quando i dati vengono letti, il processo avviene al contrario, dando l'illusione che più dischi siano combinati in una unica unità.

Chi dovrebbe usare i RAID?

Coloro che devono gestire grandi quantità di dati e necessitano di un sistema che resista ai guasti hardware. I principali vantaggi apportati dalla la tecnologia RAID sono:

  • maggiore velocità

  • aumento della capacita di archiviazione usando un unico disco virtuale

  • grande efficienza nel recupero in seguito a un crash del sistema

RAID: hardware e software

Esistono due possibili approcci al RAID: il RAID hardware e il RAID software.

RAID hardware

Le soluzioni hardware gestiscono il sottosistema RAID indipendentemente dall'host e presentano all'host un singolo disco per array.

Un esempio di RAID hardware potrebbe essere quello collegato a un controller SCSI che presenta al sistema un unico disco SCSI. Un sistema RAID esterno sposta tutta "l'intelligenza" gestita dal RAID in un controller situato nel sottosistema del disco esterno. Tutto il sottosistema è collegato a un calcolatore tramite un normale controller SCSI e compare come un singolo disco.

Esistono anche controller RAID nella forma di schede che agiscono come un controller e gestiscono tutte le comunicazioni reali tra i dischi in modo autonomo. In questi casi, basta collegare i dischi a un controller RAID così come fareste con un controller SCSI, ma dovete aggiungerli alla configurazione del controller RAID perché il sistema operativo non veda la differenza.

RAID software

Il Software RAID implementa i vari livelli di RAID nel codice del kernel riguardante la gestione del disco (block device). Offre inoltre la soluzione in assoluto meno costosa: non sono richiesti costosi controller dedicati o chassis hot-swap, [1] e il RAID software funziona sia con dischi IDE meno costosi sia con dischi SCSI. Con le CPU dell'ultima generazione, le prestazioni di un RAID software possono eccellere quelle di un RAID hardware.

Il driver MD nel kernel di Linux è un esempio di una soluzione RAID completamente indipendente dall'hardware. Le prestazioni di un array basato su software dipende dalle prestazioni e dal carico della CPU.

Per informazioni sulla configurazione del RAID software nel programma di installazione di Red Hat Linux, consultate la Official Red Hat Linux Customization Guide.

Per coloro che desiderano ricevere maggiori informazioni sul RAID software, ecco un breve elenco delle sue caratteristiche più importanti:

  • Processo di ricostruzione basato su thread

  • Configurazione completamente basata sul kernel

  • Portabilità di array tra macchine Linux senza ricostruire l'array RAID

  • Ricostruzione dell'array in background utilizzando risorse inutilizzate di sistema

  • Supporto per drive sostituibili a caldo

  • Riconoscimento automatico della CPU per sfruttare alcune ottimizzazioni della CPU

Livelli e supporto lineare

Il RAID offre il supporto per i livelli 0, 1, 4, 5, e lineare. Questi tipi di RAID si comportano nel modo seguente:

  • Livello 0 — Il RAID di livello 0, spesso chiamato "striping," è una tecnica orientata alle prestazioni di mappatura dati "striped". Questo vuol dire che i dati scritti sull'array vengono divisi in strisce e scritti sui dischi membri dell'array. Questo permette alte prestazioni di I/O a un basso costo, ma non fornisce ridondanza. La capacità di memorizzazione dell'array è uguale alla capacità totale dei dischi membri in un RAID hardware o alla capacità totale delle partizioni membri in un RAID software.

  • Livello 1 — Il RAID di livello 1 o "mirroring," è stato utilizzato più a lungo rispetto ad altre forme di RAID. Il livello 1 fornisce ridondanza scrivendo dati identici su ogni disco membro dell'array, lasciando una copia "identica" su ciascun disco. Il mirroring rimane popolare grazie alla sua semplicità e all'alto livello di disponibilità di dati. Il livello 1 opera con due o più dischi che possono utilizzare una modalità di accesso parallelo per trasferimenti veloci di dati in lettura, ma più comunemente opera in modo indipendente per fornire alti valori di transazioni di I/O. Il livello 1 assicura un'alta affidabilità e migliora le prestazioni per applicazioni intensive nella lettura dati ma a un costo relativamente alto[2]. La capacità di memorizzazione dell'array di livello 1 è uguale alla capacità di uno dei dischi fissi copiati in un RAID hardware o di una della partizioni copiate in un RAID software.

  • Livello 4 — Il RAID di livello 4 utilizza la parità[3] concentrandola su un singolo disco per la protezione dei dati. È più adeguato alle transazioni di I/O piuttosto che ai pesanti trasferimenti di dati. Poiché il disco dedicato alla parità rappresenta un collo di bottiglia non indifferente, il livello 4 è utilizzato di rado senza tecnologie aggiuntive come il write-back caching. Anche se il RAID di livello 4 è un'opzione in alcuni schemi di ripartizionamento RAID, non è un opzione permessa nell'installazione RAID di Red Hat Linux [4]. La capacità del RAID hardware di livello 4 è uguale alla capacità dei dischi membri meno la capacità di un disco. La capacità del software RAID di livello 4 è uguale alla capacità delle partizioni membri meno le dimensioni di una partizione se hanno le stesse dimensioni.

  • Livello 5 — È il tipo più comune di RAID. Distribuendo la parità tra alcuni o tutti i dischi membri, il RAID di livello 5 elimina il collo di bottiglia inerente al livello 4. L'unico collo di bottiglia è il processo di calcolo della parità. Con le moderne CPU e il RAID software, ciò non rappresenta un grosso problema. Come con il livello 4, i risultati sono prestazioni molto elevate, con letture sostanzialmente migliori delle scritture. Il livello 5 è spesso utilizzato con il write-back caching per ridurre l'asimmetria. La capacità del RAID hardware di livello 5 è uguale alla capacità dei dischi membri meno la capacità di un disco. La capacità del RAID software di livello 5 è uguale alla capacità delle partizioni membri meno le dimensioni di una partizione se hanno le stesse dimensioni.

  • RAID lineare — Il RAID lineare è un semplice raggruppamento di dischi in modo da creare un disco virtuale più grande. Nel RAID lineare, i chunk sono disposti sequenzialmente da un disco membro fino al disco successivo solo quando il primo è pieno. Questo raggruppamento non porta vantaggi a livello delle prestazioni, così come è poco probabile che un'operazione di I/O venga divisa tra i dischi membri. Il RAID lineare non offre ridondanza e infatti l'affidabilità diminuisce: se uno dei drive viene meno, l'intero array non può essere utilizzato. La capacità è quella totale di tutti i dischi membri.

Note

[1]

Uno chassis hot-swap vi permette di rimuovere un disco rigido senza dover spegnere il computer.

[2]

Il RAID livello 1 ha un alto costo poiché si scrivono le stesse informazioni su tutti i dischi dell'array, sprecando un notevole spazio di memorizzazione. Per esempio: avete configurato il RAID di livello 1 in modo che la vostra partizione root (/) sia su dischi da 40 GB. Avete una capacità totale di 80 GB ma potete memorizzarne solo 40 GB. Gli altri 40 GB si comportano come una copia di riserva dei primi 40 GB.

[3]

Le informazioni sulla parità vengono calcolate in base al contenuto degli altri dischi membri dell'array. Queste informazioni possono essere quindi utilizzate per la ricostruzione dei dati quando uno dei dischi dell'array viene danneggiato. I dati ricostruiti possono quindi essere utilizzati per soddisfare le richieste di I/O per il disco danneggiato prima che venga sostituito e per ricostituirne il contenuto dopo la sua sostituzione.

[4]

Il RAID di livello 4 richiede fino allo stesso spazio richiesto dal livello 5, ma il livello 5 ha molti più vantaggi rispetto al livello 4. Per questo motivo il livello 4 non viene supportato.