domenica 22 aprile 2012

RAID su linux con mdadm

Su linux è possibile implementare una configurazione RAID dei dischi, anche complessa, sfruttando direttamente il kernel di questo sistema operativo. Nel kernel linux infatti è implementato tutto quel che server per tirare su un sistema RAID nelle configurazioni 0,1,5 e 6 più qualche altra. Il bello è che è possibile gestire queste configurazioni, sia col kernel direttamente, sia con la funzionalità LVM (Logical Volume Manager).
Nelle moderne distribuzioni il lavoro sporco viene fatto dalla procedura di installazione, che attraverso delle procedure guidate, permette di configurare i dischi con quasi tutte le configurazioni RAID permesse da linux.
Prima di iniziare dobbiamo capire l’uso che verrà fatto del filesystem che verrà caricato sul nostro RAID. Se sul nostro filesystem verrà usato come filesystem generico o per condividere file o ancora come archivio per un web server, useremo dei chunk (dimensione sel settore RAID) piccoli, 32 o 64 kibibyte (unità di misura dei settori RAID in linux), in modo da limitare lo spreco di memoria. Se il nostro filesystem verrà usato da un database engine, allora useremo un chunk più grande, tipo 128 kibibyte in modo da privilegiare la velocità di trasferimento.
Faccio una nota importante per chi voglia usare il RAID 5 sul root filesystem. Con questa configurazione RAID non è possibile effettuare il boot del kernel di linux. In questo caso vi consiglio di creare un piccolo filesystem in RAID 1, su cui montare la cartella boot del vostro filesystem, cosi che tutti i file necessari all’avvio del vostro sistema risiederanno sul RAID 1. Una volta che il kernel si è avviato, monterà senza problemi il root file system e procederà col boot.
Per chi volesse invece smanettare con il prompt dei comandi, riporto di seguito una breve analisi dell’utility mdadm.
Mdadm ha diverse modalità operative, la prima si accede usando il parametro –create, e consente la creazione di una nuova unità logica raid. Da qui si possono impostare il livello RAID da utilizzare, la dimensione dei chunk, il numero di unità attive nell’unità logica, quelle di riserva, etc.
La seconda modalità operativa è accessibile usando il parametro –assemble, e permette di assemblare a mano unità precedentemente create. Questo è molto utile se avete dimenticato di impostare il tipo di partizione usata per creare l’unità logica, a “FD – Linux RAID auto”
La terza modalità operativa è accessibile usando il parametro –build. Questa modalità operativa è molto simile alla prima. La differenza tra le due e che in questo caso non viene creato un nuovo superblock.
La quarta modalità operativa è accessibile usando il parametro –manage, è permette di manutenere il RAID, aggiungere unità a disco, togliere, mettere in FAIL un elemento dell’array o cancellare del tutto l’unità logica.
Altre modalità operative permettono la modifica di parametri più o meno vitali dell’unità RAID, quindi a meno che non sappiate quello che state facendo e meglio evitare di usarle, in particolare –grow per modificare le dimensione dell’unità logica.
C’è anche una modalità per il monitoring dell’array che notifica in caso di problema con una e-mail.
Non volevo essere esaustivo sul argomento e vi rimando al manuale di mdadm per ulteriori dettagli, ma spero di aver chiarito le idee a chi si volesse cimentare nella creazione di unità RAID sfruttando il kernel del nostro Linux.
JCON