4.18 RAID

Allo scopo di incrementare l’affidabilità della memoria di massa, che costituisce l’archivio delle informazioni del sistema, possono essere utilizzate varie tecniche che generalmente vanno sotto il nome di RAID (Redundant Array of Independent Disks)41. Le tecniche si basano sull’utilizzo di due o più dischi in modo tale che se uno dei dispositivi si guasta, le informazioni sono comunque reperibili dagli altri. Il sistema operativo “vede” un’unica unità logica composta da più unità fisiche.

Esistono vari livelli di RAID, illustrati di seguito, di cui i più utilizzati sono lo 0, l’1, il 3 ed il 5.

È opportuno notare che la gestione RAID è indipendente dal filesystem utilizzato per la memorizzazione delle informazioni sulle partizioni dei dischi fisici che lo compongono.

[da completare ...]

Nei sistemi GNU/Linux, il RAID può essere di tipo hardware o software. Il RAID hardware affida la gestione della tecnica di memorizzazione ad uno specifico controller (hardware), che presenta al sistema operativo un unico disco composto dall’insieme dei dischi in RAID. Il RAID software è la gestione di più unità a dischi secondo la tecnica RAID, effettuata dal sistema operativo, senza la necessità di controller dedicati. Vista l’elevata velocità dei processori attuali, il RAID software è una valida alternativa economica ai sistemi RAID hardware. Il sistema operativo non conosce e non deve conoscere da cosa sia costituito il disco che vede, ma si limita a gestirlo come fosse un’unica unità a dischi, che nel caso di RAID software viene generalmente riferita come md device (md sta per multiple device).

GNU/Linux è in grado di gestire a livello software il RAID 0, il RAID 1, il RAID 4 ed il RAID 5. Inoltre, poiché le unità a disco gestite in RAID sono “viste” dal sistema come un’unità logica a blocchi (come un disco), è possibile utilizzare la tecnica RAID sui dischi già gestiti in RAID per ottenere le varie tecniche combinate come il RAID 10.

Oltre alle modalità RAID sopra elencate, è possibile gestire i dischi in una modalità detta linear mode, per mezzo della quale è possibile far “vedere” al sistema più dischi fisici come una sola unità logica, facendoglieli utilizzare in maniera sequenziale: le informazioni verranno scritte sul secondo disco quando il primo sarà stato riempito, poi sarà la volta del terzo, e così via. L’unico vantaggio è rappresentato dal fatto che se più utenti accedono alle informazioni presenti sui dischi gestiti in questo modo, si può avere un leggero incremento delle prestazioni nel caso in cui le informazioni accedute dagli utenti si trovino fisicamente su dischi diversi.

GNU/Linux introduce anche il concetto di spare disk. Uno spare disk è un disco che viene associato all’unità RAID, ma non è destinato a contenere le informazioni. Questo viene usato soltanto nel caso in cui il sistema rileva che uno degli altri dischi non funziona più e quindi lo spare disk viene utilizzato automaticamente per ricostruire le informazioni presenti sul disco non più funzionante. In questo modo, il RAID software può ripristinare una situazione di rottura di un disco.

Per riconoscere se il sistema è in grado di supportare la gestione del RAID software, è sufficiente controllare se esiste il file /proc/mdstat. Esso contiene le informazioni relative alla gestione dei dischi in RAID, come riportato di seguito.

Personalities :
read_ahead not set
unused devices: <none>
Esso riporta le Personalities, ovvero le modalità RAID correntemente utilizzate e le unità a disco attualmente non utilizzate.

La gestione dei dispositivi RAID è possibile in GNU/Linux tramite i pacchetti raidtools (mkraid, raidstart, raidstop, lsraid, ...) e mdadm (mdadd, mdrun, mdstop, ...). I comandi del pacchetto raidtools, presuppongono che le impostazioni relative alla gestione RAID siano contenute nel file /etc/raidtab. Ogni riga del file contiene una specifica direttiva, tra quelle possibili, riportate di seguito.

Di seguito è riporato un esempio del contenuto del file /etc/raidtab in cui sono definite due unità a disco RAID, l’una (/dev/md0) di tipo RAID 0 e l’altra (/dev/md1) di tipo RAID 5. La /dev/md0 è formata da 2 dischi fisici, /dev/hda1 e /dev/hdb1, mentre /dev/md1 è formata da 3 dischi fisici, /dev/sda1, /dev/sdb1 e /dev/sdc1 oltre ad uno spare disk (/dev/sdd1).

raiddev /dev/md0
 raid-level              0
 nr-raid-disks           2
 persistent-superblock   0
 chunk-size              8
 device                  /dev/hda1
 raid-disk               0
 device                  /dev/hdb1
 raid-disk               1
raiddev /dev/md1
 raid-level              5
 nr-raid-disks           3
 nr-spare-disks          1
 persistent-superblock   1
 parity-algorithm        left-symmetric
 device                  /dev/sda1
 raid-disk               0
                                                                        
                                                                        
 device                  /dev/sdb1
 raid-disk               1
 device                  /dev/sdc1
 raid-disk               2
 device                  /dev/sdd1
 spare-disk              0
Il comando mkraid (man page mkraid(8)) inizializza un insieme di dischi RAID.

____________________________________________________________________

Comando: mkraid
Path: /sbin/mkraid

SINTASSI  
# mkraid [option] [device]  
DESCRIZIONE

___________________________________________________________________________________________________________

Ad esempio, il comando

 
# mkraid /dev/md0  
inizializza il dispositivo /dev/md0 ad essere gestito in RAID. L’effettivo riconoscimento del dispositivo può essere verificato visualizando il contenuto del file /proc/mdstat. A questo punto tale dispositivo può essere montato, incluso nel file /etc/fstab, utilizzato, ...

Il comando raidstart (man page raidstart(8)) attiva la gestione del RAID software su di una unità.

____________________________________________________________________

Comando: raidstart
Path: /sbin/raidstart

SINTASSI  
# raidstart [option] [device]  
DESCRIZIONE

___________________________________________________________________________________________

Ad esempio, il comando

 
# raidstart /dev/md1  
attiva la gestione per l’unità RAID /dev/md1.

Il comando raidstop (man page raidstop(8)) disattiva la gestione del RAID software su di una unità.

__________________________________________________________________________________________________________

Comando: raidstop
Path: /sbin/raidstop

SINTASSI  
# raidstop [option] [device]  
DESCRIZIONE

___________________________________________________

Ad esempio, il comando

 
# raidstart /dev/md2  
disattiva la gestione per l’unità RAID /dev/md2.

Il comando raid0run (man page raid0run(8)) attiva la gestione del RAID 0 e linear mode su di una unità e senza superblock. Questo è un comando obsoleto.

Il comando raidreconf (man page raidreconf(8)) permette di riconfigurare i dischi gestiti in RAID seguendo le direttive contenute in un file di configurazione creato dall’utente con indicazioni analoghe a quelle conetnute in /etc/raidtab.

__________________________________________________________________________________________________________

Comando: raidreconf
Path: /sbin/raidreconf

SINTASSI  
# raidreconf [option]  
DESCRIZIONE

___________________________________________________

Ad esempio, il comando

 
# raidreconf -o /etc/raidtab -n /etc/newraidtab -m /dev/md0  
riconfigura il RAID /dev/md0 configurato correntemente come specificato in /etc/raidtab, secondo quanto specificato in /etc/newraidtab, cercando di mantenere intatte le informazioni già memorizzate sul RAID.

Il comando lsraid (man page lsraid(8)) può essere utilizzato per ottenere informazioni sui dispositivi RAID attivi o meno.

__________________________________________________________________________________________________________

Comando: lsraid
Path: /sbin/lsraid

SINTASSI  
# lsraid [option] [device]  
DESCRIZIONE

____________________________________________________________________

Ad esempio, il comando

 
# lsraid -A -a /dev/md0  
visualizza l’elenco dei dispositivi fisici relativi al RAID /dev/md0. Il comando

 
# lsraid -A -d /dev/sda1  
visualizza il RAID a cui appartiene il disco fisico /dev/sda1. Il comando

 
# lsraid -A -f -a /dev/md0  
visualizza i dispositivi fisici appartenenti al RAID /dev/md0 sui quali è stato rilevato un problema. Il comando

 
# lsraid -D -l -a /dev/md0  
visualizza il superblock di ognuno dei dischi fisici che appartengono al RAID /dev/md0.

Parallelamente al pacchetto raidtools può essere utilizzato il pacchetto mdadm che basa il suo funzionamento sul file di configurazione /etc/mdtab (corrispondente al file /etc/raidtab del pacchetto raidtools) che contiene righe con la seguente sintassi

 
md_dev mode,[c],[f ],[crc32] dev1 dev2 ...  
dove

I comandi mdadd (man page mdadd(8)) e mdcreate (man page mdcreate(8)) permettono di configurare gli insiemi dei dischi da gestire in RAID inserendo le righe all’interno del file /etc/mdtab.

____________________________________________________________________

Comando: mdadd
Path: /sbin/mdadd

SINTASSI  
# mdadd [option] [md_device] [real_device ...]  
DESCRIZIONE

_____________________________________________

... esempio ...

__________________________________________________________________________________________________________

Comando: mdcreate
Path: /sbin/mdcreate

SINTASSI  
# mdcreate [option] personality md_device real_device ...  
DESCRIZIONE

________________________________________________________________________

... esempio ...

Il comando mdrun (man page mdrun(???)) avvia la gestione delle unità RAID.

__________________________________________________________________________________________________________

Comando: mdrun
Path: ???/mdrun

SINTASSI  
# mdrun [option] [md_device]  
DESCRIZIONE

____________________________

[da completare ...] (inserire esempio)

Il comando mdstop (man page mdstop(8)) disabilita la gestione delle unità RAID.

__________________________________________________________________________________________________________

Comando: mdstop
Path: ???/mdstop

SINTASSI  
# mdstop [option] [md_device]  
DESCRIZIONE

________________

[da completare ...] (inserire esempio)

Il comando mdop (man page mdop(8)) abilita o disabilita un disco fisico alla gestione RAID 1.

__________________________________________________________________________________________________________

Comando: mdop
Path: ???/mdop

SINTASSI  
# mdop [option] [md_device] [real_device]  
DESCRIZIONE

_____________________________________________

[da completare ...]