Appendice E. 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 supera in prestazioni quelle di un unico, grande e costoso disco. Questo array di dischi viene visto come un unico dispositivo dal computer.

La tecnologia RAID offre un metodo per suddividere le informazioni su vari dischi, usando tecniche come disk striping (RAID Level 0) e disk mirroring (RAID level 1) per aggiungere ridondanza ai dati e per migliorare la velocutà di lettura e di scrittura.

Il concetto di base della tecnologia RAID è che i dati possono venir distribuiti tra i dischi dell'array in maniera consistente. Per fare questo, i dati devono venir prima spezzati in "chunk" (spesso di 32k o 64k di grandezza, anche se altre dimensioni possono venir usate). 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 hanno bisogno di gestire grandi quantità di dati e di avere un sistema robusto ai guasti hardware. Le principali ragioni per usare la tecnologia RAID sono:

  • aumento della velocità

  • aumento della capacita di archiviazione

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

RAID: Hardware contro Software

Esistono due possibili approcci al RAID: RAID Hardware e 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 connesso a un controller SCSI che presenta al sistema un singolo disco SCSI. Un sistema RAID è gestito dal controller RAID. Tutto il sottosistema è connesso ad un calcolatore tramite un normale controller SCSI ed appare 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 ad un controller RAID così come fareste con un controller SCSI.

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 che è completamente indipendente dall'hardware. Le prestazioni di un array basato su software dipende sulle performance e sul carico della CPU.

Alcune caratteristiche del RAID

Questa è una breve lista di alcune caratteristiche offerte dal RAID software:

  • 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 Hot-swappable

  • Riconoscimento automatico della CPU per avvantaggiarsi di 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 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 ad un basso costo ma non fornisce ridondanza. La capacità di memorizzazione dell'array è uguale alla capacità totale dei dischi membri.

  • Livello 1 -- Il RAID 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 a causa della sua semplicità ed 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 provvedere alti valori di transazioni I/O. Il livello 1 fornisce un'alta affidabilità e migliora le prestazioni per applicazioni intensive nella lettura dati ma ad un costo relativamente alto [2]. La capacità dell'array è uguale alla capacità di un disco membro dell'array stesso.

  • Livello 4 -- Il RAID livello 4 utilizza la parità[3] concentrandola su un singolo disco per la protezione dei dati. È più orientato per le transazioni di I/O piuttosto che per pesanti trasferimenti di dati. Poiché il disco dedicato alla parità rappresenta un non indifferente collo di bottiglia, il livello 4 è raramente utilizzato 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à dell'array è uguale alla capacità dei dischi membri meno la capacità di un disco.

  • Livello 5 -- Il tipo più comune di RAID. Distribuendo la parità tra alcuni o tutti i dischi membri, Il RAID 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 il RAID software non rappresenta un grosso collo di bottiglia. Come con il livello 4, i risultati sono prestazioni molto elevate, con le letture che sostanzialmente sono più performanti delle scritture. Il livello 5 è spesso utilizzato con il write-back caching per ridurre l'asimmetria. La capacità dell'array è uguale alla capacità dei dischi membri meno la capacità di un disco.

  • 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 è completamente riempito. Questo raggruppamento non porta vantaggi in prestazioni, così come è poco probabile che alcuna 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.

Creare Partizioni RAID

Il RAID è disponibile in entrambe le modalità di installazione GUI e kickstart. Potrete utilizzare l'fdisk o il Disk Druid per creare la vostra configurazione RAID, ma queste istruzioni saranno focalizzate sull'utilizzo di Disk Druid per completare questa operazione.

Prima di creare un dispositivo RAID, dovete creare delle partizioni RAID utilizzando le seguenti istruzioni.

SuggerimentoSuggerimento: Se utilizzate fdisk
 

Se state utilizzando fdisk per creare una partizione RAID, dovete tener presente che invece di creare una partizione di tipo 83, che è Linux native, dovrete crearla di tipo fd (Linux RAID).

  • Create una partizione. In Disk Druid, dovrete scegliere Add per creare una nuova partizione (vedasi Figura E-1).

    Figura E-1. Creare una Nuova Partizione RAID

  • Non potete inserire un mount point (potrete farlo una volta creato il vostro device RAID).

  • Inserite la dimensione per la partizione.

  • Selezionate Grow to fill disk se volete che la partizione occupi tutto lo spazio libero disponibile su disco. In questo caso, la dimensione verrà espansa e diminuita a seconda delle modifiche fatte alle altre partizioni. Se selezionate più di una partizione "growable", le partizioni competeranno per lo spazio disponibile su disco.

  • Inserite il tipo di partizione RAID.

  • Infine, per Allowable Drives, selezionate il disco dove verrà creato il RAID. Se avete dischi multipli, tutti i dischi verranno selezionati e dovrete deselezionare quei drive che non vorrete nell'array RAID.

Continuate con questi passi in modo da creare le partizioni di cui avete bisogno per la vostra configurazione RAID.

Figura E-2. Partizioni RAID

Una volta che tutte le vostre partizioni sono state create come RAID, selezionate il tasto Make RAID Device sullo schermo principale di Disk Druid (vedasi Figura E-2).

Successivamente, apparirà la Figura E-3 che vi permetterà di creare un dispositivo RAID.

Figura E-3. Creare un Device RAID

  • Prima di tutto, inserite un mount point.

  • In seguito, assicuratevi che il tipo di partizione sia selezionata come Linux Native (che sarà quella predefinita).

  • Scegliete il vostro dispositivo RAID. Dovreste scegliere md0 come primo device, md1 come secondo, e così via, a meno che non abbiate una ragione particolare per creare i device in maniera differente. I device RAID vanno da md0 a md7, ed ognuno può essere scelto solo una volta.

  • Scegliete il tipo di RAID. Potete scegliere tra RAID 0, RAID 1, e RAID 5.

    NotaNota Bene
     

    Se state creando una partizione RAID di /boot, dovete scegliere RAID livello 1. Se non ne state creando una, e state creando una partizione /, deve essere RAID livello 1.

  • Infine, selezionate quali partizioni andranno in questo array RAID (come in Figura E-4) e quindi premete il pulsante Next.

    Figura E-4. Creare un Array RAID

  • Da qui, potete continuare il processo di installazione. Fate riferimento al Official Red Hat Linux Installation Guide per maggiori istruzioni.

Note

[1]

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

[2]

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

[3]

Le informazioni sulla parità vengono calcolate in base al contenuto del resto dei dischi membri dell'array. Queste informazioni possono essere quindi utilizzate per la ricostruzione dei dati quando uno dei dischi dell'array è danneggiato. I dati ricostruiti possono quindi essere utilizzati per soddisfare le richieste di I/O per il disco danneggatio.

[4]

Il RAID livello 4 richiede fino allo stesso spazio richiesto dal livello 5, ma il livello 5 ha molti ventaggi rispetto al livello 4.