Sistemi RAID implementabili su Linux

Premessa

L’obiettivo di questo post non è quello di spiegare le diverse modalità di funzionamento del RAID (già discusse qui), ma di illustrare come sia possibile implementare tale tecnologia sulle macchine Linux.

RAID

Tipologie di sistemi RAID

Per farla breve, esistono 3 modi per realizzare quanto detto sopra:

1) Utilizzando un controller dedicato (in questo caso parliadmo di RAID hardware). Ovviamente ne esiste una vasta gamma ma ciò che li contraddistingue è il chipset di cui sono dotati (ad esempio LSI MPT, LSI MegaRAID, ecc)., dato che è proprio tramite di essi che il sistema operativo sarà in grado di interfacciarsi con i dischi (siano essi fisici o virtuali). A mio avviso, questo è il metodo più sicuro di implementazione del RAID (a patto che si tenga sotto controllo lo stato di salute dei vari elementi coinvolti, compresa la batteria di backup in dotazione al controller).

2) Avvalendosi del chipset integrato alla scheda madre (sempre che tale funzionalità sia effettivamente supportata). In tal caso parliamo di RAID ATA o fake RAID. E’ sicuramente uno dei metodi più comodi di implementazione (la creazione e gestione dei volumi avviene mediante il BIOS), ma è comunque poco affidabile (non sono rari i casi in cui tale tecnologia si è rivelata essere insufficiente, portando spesso alla perdita di tutte le informazioni presenti sugli hard drive).

3) Demandando al sistema operativo (Linux) la creazione e la gestione dei dischi logici. In questo caso parliamo di RAID software. Anche questo metodo, come quello del punto 1, è molto sicuro ed è ampiamente preferibile al fake RAID.

Tool per la gestione dei sistemi RAID hardware

A seconda della tecnologia scelta, Linux è in grado di interrogare lo stato dei dischi configurati in RAID avvalendosi di alcuni tool. Ad esempio, se si utilizza un controller dedicato e ci si vuole interagire, occorrerà prima di tutto individuare il chipset di cui è dotato e successivamente scegliere un tool in grado di interfacciarsi con esso.

Nella fattispecie, per l’indentificazione dei chipset, si può utilizzare il tool lspci:

[root@linuxbox ~]# lspci | grep LSI

oppure, in alternativa, il comando dmesg:

[root@linuxbox ~]# dmesg | grep LSI

Una volta identificato il chipset, occorrerà sincerarsi che esso sia supportato dal kernel della nostra macchina (ovvero che esiste un driver in grado di parlarci), ed in caso affermativo verificare, in seconda battuta, che tale driver (sottoforma di modulo) sia stato opportunamente caricato.

Nella fattispecie, se parliamo di un chipset LSI MPT, sarà necessario caricare il modulo mptctl mediante il seguente comando:

[root@linuxbox ~]# modprobe mptctl

In seguito si dovranno scaricare ed installare i tool daemonize ed mpt-status, il primo mandatorio per il funzionamento del secondo (se utilizzate una macchina CentOS/RHEL potete scaricarli da qui).

Una volta fatto ciò sarà possibile interrogare il controller utilizzando il seguente comando:

[root@linuxbox ~]# mpt-status -p

che ci restituirà l’ID del controller stesso e successivamente:

[root@linuxbox ~]# mpt-status -i <ID controller>

per individuare lo stato dei volumi e dei dischi fisici.

Nel caso in cui, invece, si avesse a che fare con un controller LSI MegaRAID, sarà necessario utilizzare un tool a scelta tra dmraid o MegaCli64 (anche se esistono diverse alternative, quali storcli). Sinceramente preferisco il secondo, anche se la sintassi che utilizza non è propriamente esplicativa. Solo a titolo di esempio, ecco alcune “query” (lasciatemi passare il termine) dirette al controller ed effettuate mediante MegaCli64:

[root@linuxbox ~]# MegaCli64 -AdpAllInfo -aAll

per ottenere tutte le info relative al controller stesso (stato dei volumi, dei dischi fisici, della batteria, ecc.);

[root@linuxbox ~]# MegaCli64 -AdpBbuCmd -aAll | grep "Battery State"

per individuare lo stato della batteria del controller (detta di backup), grazie alla quale è possibile preservare la configurazione del RAID anche in caso di failure della CMOS;

[root@linuxbox ~]# MegaCli64 -LDinfo -Lall -aALL | grep "State"

per avere informazioni relative ai dischi logici (volumi);

[root@linuxbox ~]# MegaCli64 -PDList -aALL

per individuare lo stato dei dischi fisici;

[root@linuxbox ~]# MegaCli64 -PDList -aALL | grep "S.M.A.R.T alert

per appurare la presenza di eventuali errori di tipo S.M.A.R.T (vedi qui per ulteriori dettagli);

[root@linuxbox ~]# MegaCli64 -PDList -aALL | grep "Firmware state"

per individuare lo stato delle repliche RAID sui dischi fisici.

Tool per la gestione dei sistemi RAID ATA

Per quanto riguarda il fake RAID, uno dei tool più diffusi per la sua gestione è sicuramente dmraid. E’ necessario precisare, inoltre, che tale tool supporta anche diversi controller hardware e per ottenere una lista esaustiva di quelli compatibili basta utilizzare il comando:

[root@linuxbox ~]# dmraid -l

il cui output sarà simile al seguente:

asr     : Adaptec HostRAID ASR (0,1,10)
ddf1    : SNIA DDF1 (0,1,4,5,linear)
hpt37x  : Highpoint HPT37X (S,0,1,10,01)
hpt45x  : Highpoint HPT45X (S,0,1,10)
isw     : Intel Software RAID (0,1,5,01)
jmicron : JMicron ATARAID (S,0,1)
lsi     : LSI Logic MegaRAID (0,1,10)
nvidia  : NVidia RAID (S,0,1,10,5)
pdc     : Promise FastTrack (S,0,1,10)
sil     : Silicon Image(tm) Medley(tm) (0,1,10)
via     : VIA Software RAID (S,0,1,10)
dos     : DOS partitions on SW RAIDs

Per ottenere lo stato del volume RAID è sufficiente lanciare il comando:

[root@linuxbox ~]# dmraid -s

il cui output sarà qualcosa del tipo:

*** Group superset isw_bigeeiijaj
--> Active Subset
name   : isw_bigeeiijaj_Volume0
size   : 312576256
stride : 128
type   : mirror
status : ok
subsets: 0
devs   : 2
spares : 0

Per lo stato dei dischi fisici, invece, occorre utilizzare la flag -r:

[root@linuxbox ~]# dmraid -r

/dev/sdc: isw, "isw_bigeeiijaj", GROUP, ok, 312581806 sectors, data@ 0
/dev/sda: isw, "isw_bigeeiijaj", GROUP, ok, 312581806 sectors, data@

Tool per la gestione dei sistemi RAID Software

Per gestire i RAID software si può utilizzare il tool mdadm o, in alternativa, nel caso in cui fosse sufficiente individuare lo stato dei dischi fisici e dei volumi, si può lanciare il comando:

[root@linuxbox ~]# cat /proc/mdstat

il cui output avrà il seguente formato:

[root@linuxbox ~]# cat /proc/mdstat
Personalities : [raid1]
md3 : active raid1 sda3[0] sdb3[1]
      511998912 blocks [2/2] [UU]
      bitmap: 0/4 pages [0KB], 65536KB chunk

md2 : active raid1 sda2[0] sdb2[1]
      1433598912 blocks [2/2] [UU]
      bitmap: 4/11 pages [16KB], 65536KB chunk

dove la stringa Personalities: indica il tipo di RAID supportato dal kernel, mentre md3 ed md2 sono i 2 volumi configurati in RAID 1 (mirroring).

Per ora è tutto. Alla prossima.

Sistemi RAID implementabili su Linuxultima modifica: 2017-02-13T10:00:24+01:00da nazarenolatella
Reposta per primo quest’articolo