A prescindere dalla tua precedente esperienza con gli array RAID, e se hai seguito tutti i tutorial di questa serie RAID o meno, gestire i RAID software in Linux non è un compito molto complicato una volta che hai imparato a conoscere il comando mdadm --manage.

Gestire i dispositivi Raid con Mdadm in Linux – Parte 9

In questo tutorial esamineremo le funzionalità fornite da questo strumento in modo da poterlo avere a portata di mano quando ne hai bisogno.

Scenario di test del RAID

Come nell’ultimo articolo di questa serie, useremo per semplicità un array RAID 1 (mirror) che consiste di due dischi da 8 GB (/dev/sdb e /dev/sdc) e un dispositivo di riserva iniziale (/dev/sdd) per illustrare, ma i comandi e i concetti qui elencati si applicano anche ad altri tipi di configurazione. Detto questo, sentitevi liberi di aggiungere questa pagina ai segnalibri del vostro browser, e cominciamo.

Capire le opzioni e l’uso di mdadm

Fortunatamente, mdadm fornisce un flag built-in --help che fornisce spiegazioni e documentazione per ciascuna delle opzioni principali.

Quindi, iniziamo a digitare:

# mdadm --manage --help

per vedere quali sono i compiti che mdadm --manage ci permetterà di eseguire e come:

Gestire il RAID con lo strumento mdadm

Come possiamo vedere nell’immagine qui sopra, la gestione di un array RAID comporta l’esecuzione dei seguenti compiti in un momento o nell’altro:

  1. (Ri)Aggiungere un dispositivo all’array.
  2. Marcare un dispositivo come difettoso.
  3. Rimuovere un dispositivo difettoso dall’array.
  4. Sostituire il dispositivo difettoso con uno di riserva.
  5. Avviare un array parzialmente costruito.
  6. Arrestare un array.
  7. Marcare un array come ro (sola lettura) o rw (lettura-scrittura).

Gestire i dispositivi RAID con lo strumento mdadm

Nota che se ometti l’opzione --manage, mdadm assume comunque la modalità di gestione. Tenete a mente questo fatto per evitare di incorrere in problemi più avanti.

Il testo evidenziato nell’immagine precedente mostra la sintassi di base per gestire i RAID:

# mdadm --manage RAID options devices

Illustriamo con alcuni esempi.

Esempio 1: Aggiungere un dispositivo all’array RAID

In genere si aggiunge un nuovo dispositivo quando se ne sostituisce uno difettoso, o quando si ha un pezzo di ricambio che si vuole avere a portata di mano in caso di guasto:

# mdadm --manage /dev/md0 --add /dev/sdd1
Add Device to Raid Array
Esempio 2: Contrassegnare un dispositivo RAID come difettoso e rimuoverlo dall’array

Questo è un passo obbligatorio prima di rimuovere logicamente il dispositivo dall’array, e successivamente estrarlo fisicamente dalla macchina – in quest’ordine (se si salta uno di questi passi si può finire per causare danni reali al dispositivo):

# mdadm --manage /dev/md0 --fail /dev/sdb1

Nota come il dispositivo di riserva aggiunto nell’esempio precedente è usato per sostituire automaticamente il disco difettoso. Non solo, ma anche il recupero e la ricostruzione dei dati raid iniziano immediatamente:

Recupero e ricostruzione dei dati raid

Una volta che il dispositivo è stato indicato manualmente come guasto, può essere rimosso dall’array in modo sicuro:

# mdadm --manage /dev/md0 --remove /dev/sdb1
Esempio 3: Riaggiungere un dispositivo che faceva parte dell’array che era stato rimosso in precedenza

Fino a questo punto, abbiamo un array RAID 1 funzionante che consiste di 2 dispositivi attivi: /dev/sdc1 e /dev/sdd1. Se tentiamo di riaggiungere /dev/sdb1 a /dev/md0 in questo momento:

# mdadm --manage /dev/md0 --re-add /dev/sdb1

ci imbatteremo in un errore:

mdadm: --re-add for /dev/sdb1 to /dev/md0 is not possible

perché l’array è già composto dal massimo numero possibile di unità. Quindi abbiamo 2 scelte: a) aggiungere /dev/sdb1 come riserva, come mostrato nell’esempio #1, o b) rimuovere /dev/sdd1 dall’array e poi riaggiungere /dev/sdb1.

Scegliamo l’opzione b), e cominceremo fermando l’array per riassemblarlo successivamente:

# mdadm --stop /dev/md0# mdadm --assemble /dev/md0 /dev/sdb1 /dev/sdc1

Se il comando precedente non aggiunge con successo /dev/sdb1 all’array, usate il comando dell’esempio #1 per farlo.

Anche se mdadm inizialmente rileverà il dispositivo appena aggiunto come uno spare, inizierà a ricostruire i dati e quando avrà finito, dovrebbe riconoscere il dispositivo come parte attiva del RAID:

Stato di ricostruzione del RAID
Esempio 4: Sostituire un dispositivo Raid con un disco specifico

Sostituire un disco nell’array con uno spare è facile come:

# mdadm --manage /dev/md0 --replace /dev/sdb1 --with /dev/sdd1
Replace Raid Device

Il risultato è che il dispositivo che segue lo switch --with viene aggiunto al RAID mentre il disco indicato tramite --replace viene marcato come difettoso:

Check Raid Rebuild Status
Esempio 5: Marcare un array Raid come ro o rw

Dopo aver creato l’array, devi aver creato un filesystem sopra di esso e averlo montato su una directory per poterlo utilizzare. Quello che probabilmente non sapevi allora è che puoi marcare il RAID come ro, permettendo così di eseguire solo operazioni di lettura su di esso, o rw, per poter scrivere anche sul dispositivo.

Per marcare il dispositivo come ro, deve essere prima smontato:

# umount /mnt/raid1# mdadm --manage /dev/md0 --readonly# mount /mnt/raid1# touch /mnt/raid1/test1
Set Permissions on Raid Array

Per configurare l’array per permettere anche operazioni di scrittura, usa l’opzione --readwrite. Nota che dovrai smontare il dispositivo e fermarlo prima di impostare il flag rw:

# umount /mnt/raid1# mdadm --manage /dev/md0 --stop# mdadm --assemble /dev/md0 /dev/sdc1 /dev/sdd1# mdadm --manage /dev/md0 --readwrite# touch /mnt/raid1/test2
Allow Read Write Permission on Raid

Summary

In questa serie abbiamo spiegato come impostare una varietà di array RAID software che sono usati in ambienti aziendali. Se hai seguito gli articoli e gli esempi forniti in questi articoli sei pronto a sfruttare la potenza dei RAID software in Linux.

Se ti capita di avere domande o suggerimenti, sentiti libero di contattarci utilizzando il modulo sottostante.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.