Sostituzione e test di un disco guasto in RAID1 con mdadm
In questo articolo spiego come simulare la rottura di un disco in un array RAID1, copiare la tabella delle partizioni sul nuovo disco, pulire eventuali superblocchi RAID e riaggiungere il disco al mirror. Alla fine mostro come reinstallare GRUB su entrambi i dischi per garantire l’avvio.
Panoramica
Obiettivo: sostituire un disco guasto in un array RAID1 gestito con mdadm. Questo esempio assume che /dev/sdb sia il disco fallito. I comandi mostrati sono eseguiti da root su una distribuzione che usa mdadm e GRUB (es. Fedora, CentOS, RHEL).
Definizione rapida: RAID1 è un mirror che mantiene copie identiche dei dati su due o più dischi.
Importante: esegui queste operazioni solo se hai backup aggiornati o sei in un ambiente di test. Azioni errate possono causare perdita di dati.
1) Simulare un guasto del disco
Puoi rimuovere fisicamente il disco o segnalarlo come guasto (soft-fail). In questo esempio si marca /dev/sdb come guasto e lo si rimuove dall’array:
mdadm --manage /dev/md0 --fail /dev/sdb1
mdadm --manage /dev/md1 --fail /dev/sdb2
Poi rimuovilo dall’array:
mdadm --manage /dev/md0 --remove /dev/sdb1
mdadm --manage /dev/md1 --remove /dev/sdb2
Per simulare un reboot completo, spegni la macchina:
shutdown -h now
Sostituisci il disco fisico con un nuovo /dev/sdb (o, se hai simulato il fallimento di /dev/sda, monta il nuovo disco nello slot di /dev/sda e collega il disco sostitutivo come /dev/sdb) e riavvia. Il sistema dovrebbe avviarsi normalmente anche con l’array degradato.
2) Verificare lo stato dell’array degradato
Dopo il boot, controlla lo stato degli array:
cat /proc/mdstat
Dovresti vedere gli array in stato degradato (es. [U_] per un mirror con un disco mancante).
Puoi anche verificare le partizioni e i dischi con:
fdisk -l
Esempi di output vengono preservati nei blocchi di seguito per riferimento operativo; non è necessario interpretarli parola per parola.
3) Copiare la tabella delle partizioni sul nuovo disco
Copia la tabella delle partizioni da /dev/sda a /dev/sdb:
sfdisk -d /dev/sda | sfdisk /dev/sdb
Se ricevi errori relativi alla firma MSDOS, prova con –force:
sfdisk -d /dev/sda | sfdisk --force /dev/sdb
Output di esempio:
[root@server1 ~]# sfdisk -d /dev/sda | sfdisk /dev/sdb
Checking that no-one is using this disk right now ...
OK
Disk /dev/sdb: 652 cylinders, 255 heads, 63 sectors/track
sfdisk: ERROR: sector 0 does not have an msdos signature
/dev/sdb: unrecognized partition table type
Old situation:
No partitions found
New situation:
Units = sectors of 512 bytes, counting from 0
Device Boot Start End #sectors Id System
/dev/sdb1 * 63 401624 401562 fd Linux raid autodetect
/dev/sdb2 401625 10474379 10072755 fd Linux raid autodetect
/dev/sdb3 0 - 0 0 Empty
/dev/sdb4 0 - 0 0 Empty
Successfully wrote the new partition table
Re-reading the partition table ...
4) Pulire eventuali superblocchi RAID sul nuovo disco
Prima di aggiungere le nuove partizioni all’array, cancella eventuali superblocchi residui:
mdadm --zero-superblock /dev/sdb1
mdadm --zero-superblock /dev/sdb2
5) Aggiungere il disco ricostruito all’array
Aggiungi le partizioni appena create all’array RAID:
mdadm -a /dev/md0 /dev/sdb1
mdadm -a /dev/md1 /dev/sdb2
Controlla la ricostruzione in corso:
cat /proc/mdstat
Esempio di stato mentre avviene la sincronizzazione:
md1 : active raid1 sdb2[2] sda2[0]
5036288 blocks [2/1] [U_]
[=====>...............] recovery = 29.8% (1502656/5036288) finish=18.8min speed=3116K/sec
Attendi che la sincronizzazione sia completata; lo stato mostrerà [UU] quando l’array è completamente ricostruito.
6) Reinstallare GRUB su entrambi i dischi
Per garantire che il sistema sia avviabile anche se un disco fallisse nuovamente, reinstalla il bootloader su entrambi i dischi. Avvia l’interfaccia di grub (o usa grub-install in sistemi moderni). Esempio di sessione GRUB interattiva:
grub
Quindi, nella console di grub:
root (hd0,0)
setup (hd0)
root (hd1,0)
setup (hd1)
quit
Su sistemi moderni usa grub-install su ciascun device, ad esempio:
grub-install /dev/sda
grub-install /dev/sdb
(Verifica il metodo adatto alla tua distribuzione.)
Quando questa procedura può fallire o non essere appropriata
- Se la tabella delle partizioni di origine è danneggiata, la copia potrebbe fallire.
- Se il nuovo disco ha geometria incompatibile (molto più piccolo), non potrai copiare le partizioni.
- Su sistemi UEFI con GPT e shim/secure boot, potrebbero servire passaggi aggiuntivi per reinstallare il bootloader.
Alternative e varianti
- Se usi LVM sopra RAID, assicurati di riattivare i volumi LVM (vgchange -ay) dopo la ricostruzione.
- In ambienti critici valuta lo swap a caldo del disco con hot-swap e monitoraggio SMART.
- Per sistemi con UEFI+GPT usa sgdisk per copiare la partizione EFI.
Checklist rapida (operatore)
- Verificare backup prima di iniziare.
- Segnare quale disco è guasto (/dev/sda vs /dev/sdb).
- Fail e remove della partizione RAID.
- Sostituire fisicamente il disco e avviare.
- Copiare tabella partizioni con sfdisk.
- mdadm –zero-superblock sulle nuove partizioni.
- mdadm -a per aggiungere le partizioni all’array.
- Attendere la sincronizzazione completa (cat /proc/mdstat).
- Reinstallare GRUB su entrambi i dischi.
Mini-metodologia in 6 passi
- Isolare il disco guasto (soft-fail o rimozione fisica).
- Sostituire il disco fisico.
- Copiare la tabella partizioni dal disco sano.
- Azzerare eventuali superblocchi RAID residui.
- Aggiungere le partizioni al RAID e monitorare la ricostruzione.
- Reinstallare il bootloader su tutti i dischi.
Flusso decisionale (semplice)
flowchart TD
A[Disco segnato come guasto?] -->|Sì| B'Sostituisci fisicamente il disco'
A -->|No| C'Marcarlo come fail con mdadm'
B --> D{Tabella partizioni valida?}
C --> D
D -->|Sì| E'Copia tabella con sfdisk'
D -->|No| F'Preparare partizioni manualmente'
E --> G'Azzera superblock e aggiungi all'array'
G --> H'Monitorare /proc/mdstat'
H --> I'Quando sincronizzato, reinstallare GRUB'
Glossario (1 linea ciascuno)
- mdadm: utility Linux per gestire RAID software.
- superblock: metadata RAID scritto nelle partizioni che identifica l’appartenenza all’array.
- sfdisk: strumento per manipolare tabelle delle partizioni in batch.
- GRUB: bootloader usato su molte distribuzioni Linux.
Sommario
Hai simulato un guasto, copiato la tabella delle partizioni su un disco sostitutivo, cancellato eventuali superblocchi, riaggiunto il disco all’array e reinstallato il bootloader. Controlla sempre lo stato con cat /proc/mdstat e attendi che la sincronizzazione termini prima di considerare l’intervento completato.
Nota: adatta i comandi di installazione del bootloader alla tua distribuzione e alla modalità BIOS/UEFI.
Materiali simili

Velocizzare il tuo iPhone: guida pratica

Bloccare le app su iPhone: guida rapida

Vedere i post che hai messo Mi piace su Instagram

Guida: come scegliere il migliore Mini PC
