Avanti
Indietro
Indice
Possono esserci molte buone ragioni per usare il RAID. Alcune sono: la capacità di combinare diversi dischi "reali" in un dispositivo "virtuale" più grande, l'aumento delle prestazioni e la ridondanza.
Il RAID per Linux può funzionare sulla maggior parte dei dispositivi a blocchi. Non importa se usate dispositivi SCSI o IDE o una loro combinazione. Alcuni hanno usato il Network Block Device (NBD) con più o meno successo.
Assicuratevi che il bus (o i bus) a cui sono collegati i dischi siano abbastanza veloci. Non dovreste avere 14 dispositivi UW-SCSI su un bus UW, se ogni disco può fornire 10 MB/s e il bus può sostenere solo 40 MB/s.
Inoltre, dovreste avere solo un disco per ogni bus IDE. Far lavorare i dischi come master e slave è tremendo per le prestazioni. L'IDE non lavora bene quando deve accedere a più di un disco per bus. Naturalmente, tutte le schede madri più recenti hanno due bus IDE, così che possiate montare due dischi in RAID senza dover acquistare degli ulteriori controller.
Il layer (strato) RAID non ha assolutamente nulla a che fare con il layer del filesystem. Potete mettere qualsiasi filesystem su un dispositivo RAID, così come su qualunque altro dispositivo a blocchi.
L'acronimo "RAID" indica il "Linux Software RAID". Questo HOWTO non copre nessuno degli aspetti dell'Hardware RAID.
Quando si descrivono i setup, è utile fare riferimento al numero dei dischi e alle loro dimensioni. Per tutto l'HOWTO la lettera N è usata per identificare il numero di dischi attivi nell'array (senza contare gli
spare-disk). La lettera S è la dimensione del più piccolo disco dell'array, se non diversamente specificato. La lettera P è usata come indice di prestazione di un disco dell'array, in MB/s.
Di solito, si assume che tutti i dischi dell'array siano ugualmente veloci, il che può non essere sempre vero.
Occorre notare che le parole "dispositivo" (``device'') e "disco" (``disk'') significano la stessa cosa. Di solito i dispositivi usati per costruire un dispositivo RAID sono delle partizioni sui dischi e non necessariamente interi dischi. Combinare diverse partizioni su un disco di solito non ha senso, così le parole dispositivi e dischi significano "partizioni su dischi diversi".
Viene qui presentato brevemente ciò che è supportato nelle Linux RAID patch. Alcune delle informazioni sono dei ragguagli assolutamente basilari sul RAID. Saltate pure questa parte se conoscete il RAID. Potete sempre tornare a leggerla se doveste avere dei problemi :).
Le patch RAID attuali per Linux supportano i seguenti livelli:
- Linear mode
- Due o più dischi sono combinati in un dispositivo fisico. I dischi sono "appesi" (accodati) l'uno all'altro, così lo scrivere sul dispositivo RAID riempirà prima il disco 0, poi il disco 1 e così via. Non è obbligatorio che i dischi abbiano la stessa dimensione. Infatti, non importa affatto :)
- Non c'è ridondanza in questo livello. Se un disco si danneggia, probabilmente tutti i dati saranno persi. Potreste comunque essere fortunati e recuperare alcuni dati, perché il filesysytem starà perdendo solo un grande blocco consecutivo ("chunk") di dati.
- Le prestazioni in lettura e scrittura non miglioreranno per delle singole letture/scritture. Ma se diversi utenti utilizzano il dispositivo, potreste essere fortunati nel caso in cui un utente usi il primo disco e l'altro stia accedendo a dei file che stanno sul secondo disco. Se succede questo, dovreste accorgervi di un incremento di prestazioni.
- RAID-0
- Detto anche modalità (mode) ``stripe''. Come il linear mode, eccetto che le letture e le scritture sono fatte in parallelo sui dischi. I dischi dovrebbero essere approssimativamente della stessa dimensione. Siccome tutti gli accessi sono effettuati in parallelo, i dischi si dovrebbero riempire nella stessa misura. Se un disco è più grande degli altri, lo spazio eccedente è ancora usato nel dispositivo RAID, ma l'accesso avverrà solo sul disco più grande durante le scritture alla fine del dispositivo RAID. Questo va naturalmente a detrimento (deterioramento??) delle prestazioni.
- Come per il linear mode, non c'è nessuna ridondanza in questo livello. Diversamente dal linear mode, non sarà possibile recuperare alcun dato se un disco si danneggia. Se un disco viene rimosso da un RAID-0, il RAID non perderà solo un grande consecutivo blocco di dati, esso sarà riempito con piccoli buchi lungo tutto il dispositivo. e2fsck non sarà probabilmente in grado di recuperare molto da questo dispositivo.
- Le prestazioni in lettura e scrittura cresceranno, poiché le letture e scritture sono fatte in parallelo sui dischi. Questa è solitamente la ragione per cui si implementa un RAID-0. Se i bus che collegano i dischi sono abbastanza veloci, si dovrebbe ottenere qualcosa di molto vicino a N*P MB/s.
- RAID-1
- Questa è la prima modalità che presenta ridondanza. Il RAID-1 può essere usato su due o più dischi con zero o più spare-disk. Questa modalità mantiene un'immagine (mirror) esatta del contenuto di un disco sugli altri. Naturalmente i dischi devono essere della stessa dimensione. Se un disco è più grande di un altro, il dispositivo RAID avrà la dimensione del disco più piccolo.
- Se fino a N-1 dischi vengono rimossi (o si danneggiano), tutti i dati saranno ancora intatti. Se ci sono spare-disk disponibili e se il sistema (leggi SCSI driver o chipset IDE, ecc.) sopravvive al blocco del sistema, la ricostruzione del mirror inizierà immediatamente su uno degli spare-disk, dopo aver individuato il disco danneggiato.
- Le prestazioni in scrittura sono piuttosto peggiori che su un singolo dispositivo, perché delle copie identiche dei dati scritti devono essere inviate a ogni disco dell'array. Le prestazioni in lettura sono di solito piuttosto cattive a causa di una troppo semplificata strategia di read-balancing nel codice RAID. Comunque, è stata implementata un strategia di read-balancing migliorata, che potrebbe diventare disponibile per le patch del Linux kernel 2.2 (chiedere sulla linux-kernel list), e sarà molto probabilmente nel supporto RAID del kernel 2.4.
- RAID-4
- Questo livello RAID non è usato molto spesso. Può essere usato su tre o più dischi. Invece di fare un immagine (mirror) completa delle informazioni, esso tiene delle informazioni di parità su un disco e scrive i dati sugli altri dischi in una maniera simile al RAID-0. Siccome un disco è riservato per le informazioni di parità, la dimensione dell'array sarà (N-1)*S, dove S rappresenta la dimensione del più piccolo disco dell'array. Così come nel RAID-1, i dischi dovrebbero essere della stessa dimensione, altrimenti il valore S nella formula precedente sarà la dimensione del più piccolo disco dell'array.
- Se un disco si danneggia, le informazioni di parità possono essere utilizzate per ricostruire tutti i dati. Se si danneggiano due dischi tutti i dati saranno persi.
- La ragione per cui questo livello non è usato spesso è che l'informazione di parità è tenuta su un disco. Quindi questa informazione deve essere aggiornata ogni volta uno degli altri dischi viene scritto. Quindi, il disco che contiene l'informazione di parità diventa un collo di bottiglia, se esso non è molto più veloce degli altri dischi. Comunque, se vi accade di avere molti dischi lenti ed uno molto veloce, questo livello RAID può essere molto utile.
- RAID-5
- Questa è forse la più utile modalità RAID quando di desidera combinare un gran numero di dischi e mantenere ancora una certa ridondanza. Il RAID-5 può essere usato su tre o più dischi, con zero o più spare-disk. Il dispositivo RAID-5 che viene fuori avrà la dimensione (N-1)*S, come nel RAID-4. La grande differenza fra il RAID-5 ed il RAID-4 è che le informazioni di parità sono distribuite in modo uguale fra i dischi di cui è composto l'array, evitando così il collo di bottiglia che si creava nel RAID-4.
- Se uno dei dischi si danneggia, tutti i dati saranno ancora intatti, grazie alle informazioni di parità. Se degli spare-disk sono disponibili, la ricostruzione inizierà immediatamente dopo il guasto del dispositivo. Se due dischi si danneggiano simultaneamente, tutti i dati saranno persi. Il RAID-5 può sopravvivere al danneggiamento di un disco, ma non a quello di due o più.
- Sia le prestazioni in scrittura che in lettura migliorano, ma è difficile predire di quanto.
Spare disks
Gli spare disks sono dischi che non fanno parte dell'array RAID fino a che uno dei dischi attivi smette di funzionare. Quando il guasto di un disco viene rilevato, questo dispositivo viene marcato come "cattivo" (bad) e la ricostruzione viene immediatamente iniziata su uno degli spare-disk a disposizione.
Quindi, gli spare-disk aggiungono un'utile extra sicurezza specialmente ai sistemi RAID-5. Ci si può permettere di far lavorare il sistema per un po', con un dispositivo guasto, poiché tutta la ridondanza è conservata per mezzo degli spare-disk.
Non si può essere sicuri che un sistema sopravviva al guasto di un disco. Il RAID layer dovrebbe gestire i guasti ai dischi piuttosto bene, ma i driver SCSI potrebbero crollare sulla gestione degli errori, o il chipset IDE potrebbe bloccarsi, oppure una quantità di altre cose potrebbe accadere.
Non c'è nessuna ragione nell'usare il RAID per questioni di prestazioni dello swap. Il kernel stesso può creare delle stripe facendo lo swap su più dispositivi, se solo gli date la stessa priorità nel file fstab.
Un fstab ben fatto si presenta così:
/dev/sda2 swap swap defaults,pri=1 0 0
/dev/sdb2 swap swap defaults,pri=1 0 0
/dev/sdc2 swap swap defaults,pri=1 0 0
/dev/sdd2 swap swap defaults,pri=1 0 0
/dev/sde2 swap swap defaults,pri=1 0 0
/dev/sdf2 swap swap defaults,pri=1 0 0
/dev/sdg2 swap swap defaults,pri=1 0 0
Questa configurazione permette alla macchina di fare lo swap in parallelo su sette dispositivi SCSI. Non c'è nessuna necessità del RAID, visto che questa è da sempre una caratteristica intrinseca del kernel.
Un'altra ragione per usare il RAID per lo swap è l'elevata disponibilità. Se per esempio si costruisce un sistema che fa il boot su un dispositivo RAID-1, il sistema dovrebbe essere in grado di sopravvivere al danneggiamento di un disco. Ma se il sistema stava facendo lo swap sul dispositivo guasto, ci sarà sicuramente un blocco. Fare lo swap su un dispositivo RAID-1 risolverebbe questo problema.
Ci sono state molte discussioni se fare lo swap fosse stabile sui dispositivi RAID. Questo è un dibattito continuo, che dipende per la maggior parte su altri aspetti del kernel. Nel momento in cui viene scritto questo HOWTO, sembra che fare lo swap su RAID sia perfettamente stabile, eccetto quando l'array è in fase di ricostruzione (per esempio dopo che un nuovo disco è stato inserito in un array danneggiato). Quando il kernel 2.4 sarà rilasciato, questa è una questione che sarà sistemata piuttosto rapidamente, ma fino ad allora, dovreste testare profondamente il sistema da soli fino a che sarete soddisfatti per la stabilità oppure concluderete che non volete fare lo swap su RAID.
Potete costruire un RAID in un file di swap su un filesystem sul vostro dispositivo RAID, o potete costruire un dispositivo RAID come una partizione di swap, come preferite. Come sempre, il dispositivo RAID è solo un dispositivo a blocchi.
Avanti
Indietro
Indice