Sostituzione e test di un disco guasto in RAID1
Simula un guasto disco, copia la tabella delle partizioni dal disco sano a quello nuovo, azzera i superblocchi mdadm, aggiungi il nuovo disco all’array e aspetta la sincronizzazione. Infine reinstalla il bootloader su entrambi i dischi. Questa guida mostra i comandi e gli output più comuni e offre checklist, criteri di accettazione e strategie di troubleshooting.
Introduzione
Questa guida descrive come sostituire un disco guasto in un array RAID1 software (mdadm) su Linux. Include i comandi necessari, gli output attesi e suggerimenti pratici per il controllo e il ripristino. Definizione rapida: RAID1 replica i dati su due o più dischi per tolleranza ai guasti.
Importante: esegui queste operazioni da root o con sudo. Esegui backup regolari prima di manipolare partizioni o superblocchi.
Prerequisiti
- Accesso come root o sudo.
- mdadm installato e funzionante.
- Disco di ricambio almeno della stessa capacità o più grande.
- Familiarità con fdisk/sfdisk e grub.
1) Simulare un guasto del disco
Per testare la procedura puoi simulare il guasto di un disco. Non importa se scegli /dev/sda o /dev/sdb. Nell’esempio si assume che /dev/sdb sia il disco guasto.
Puoi rimuovere fisicamente il disco oppure rimuoverlo ‘soft’ con mdadm:
mdadm --manage /dev/md0 --fail /dev/sdb1
mdadm --manage /dev/md1 --fail /dev/sdb2
mdadm --manage /dev/md2 --fail /dev/sdb3
mdadm --manage /dev/md0 --remove /dev/sdb1
mdadm --manage /dev/md1 --remove /dev/sdb2
mdadm --manage /dev/md2 --remove /dev/sdb3
Quindi arresta la macchina se vuoi sostituire fisicamente il disco:
shutdown -h now
Sostituisci il disco guasto con il nuovo disco fisico. Se stavi simulando lo scambio tra sda e sdb, assicurati che i nomi device corrispondano alla tua configurazione attuale al riavvio.
2) Verificare che l’array sia degradato
Dopo il boot, controlla lo stato dell’array:
cat /proc/mdstat
Esempio di output atteso quando un disco è mancante:
[root@server1 ~]# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sda1[0]
200704 blocks [2/1] [U_]
md1 : active raid1 sda2[0]
522048 blocks [2/1] [U_]
md2 : active raid1 sda3[0]
9759360 blocks [2/1] [U_]
unused devices:
[root@server1 ~]#
Controlla anche le partizioni e i dischi con fdisk:
fdisk -l
Esempio di output (in questo caso /dev/sdb non contiene tabella partizioni valida):
[root@server1 ~]# fdisk -l
Disk /dev/sda: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 25 200781 fd Linux raid autodetect
/dev/sda2 26 90 522112+ fd Linux raid autodetect
/dev/sda3 91 1305 9759487+ fd Linux raid autodetect
Disk /dev/sdb: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/sdb doesn't contain a valid partition table
Disk /dev/md2: 9993 MB, 9993584640 bytes
2 heads, 4 sectors/track, 2439840 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Disk /dev/md2 doesn't contain a valid partition table
Disk /dev/md1: 534 MB, 534577152 bytes
2 heads, 4 sectors/track, 130512 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Disk /dev/md1 doesn't contain a valid partition table
Disk /dev/md0: 205 MB, 205520896 bytes
2 heads, 4 sectors/track, 50176 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Disk /dev/md0 doesn't contain a valid partition table
[root@server1 ~]#
3) Copiare la tabella delle partizioni dal disco sano a quello nuovo
Copia la tabella delle partizioni di /dev/sda su /dev/sdb con sfdisk:
sfdisk -d /dev/sda | sfdisk /dev/sdb
Se ricevi un errore relativo alla firma msdos, puoi provare l’opzione –force:
sfdisk -d /dev/sda | sfdisk --force /dev/sdb
Esempio di esecuzione e output:
[root@server1 ~]# sfdisk -d /dev/sda | sfdisk /dev/sdb
Checking that no-one is using this disk right now ...
OK
Disk /dev/sdb: 1305 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 1445849 1044225 fd Linux raid autodetect
/dev/sdb3 1445850 20964824 19518975 fd Linux raid autodetect
/dev/sdb4 0 - 0 0 Empty
Successfully wrote the new partition table
Re-reading the partition table ...
If you created or changed a DOS partition, /dev/foo7, say, then use dd(1)
to zero the first 512 bytes: dd if=/dev/zero of=/dev/foo7 bs=512 count=1
(See fdisk(8).)
[root@server1 ~]#
Nota: se i device name cambiano (es. NVMe), adegua i nomi (/dev/nvme0n1p1 etc.).
4) Azzerare eventuali superblocchi RAID residui
Prima di aggiungere le nuove partizioni all’array, rimuovi eventuali superblocchi mdadm presenti sul disco di destinazione:
mdadm --zero-superblock /dev/sdb1
mdadm --zero-superblock /dev/sdb2
mdadm --zero-superblock /dev/sdb3
Questo evita conflitti con identificatori RAID residui.
5) Aggiungere il nuovo disco all’array e avviare la ricostruzione
Aggiungi le partizioni appena create all’array:
mdadm -a /dev/md0 /dev/sdb1
mdadm -a /dev/md1 /dev/sdb2
mdadm -a /dev/md2 /dev/sdb3
Controlla lo stato di ricostruzione:
cat /proc/mdstat
Esempio (si vede la ricostruzione in corso sul md2):
[root@server1 ~]# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb1[1] sda1[0]
200704 blocks [2/2] [UU]
md1 : active raid1 sdb2[1] sda2[0]
522048 blocks [2/2] [UU]
md2 : active raid1 sdb3[2] sda3[0]
9759360 blocks [2/1] [U_]
[=======>.............] recovery = 39.4% (3846400/9759360) finish=1.7min speed=55890K/sec
unused devices:
[root@server1 ~]#
Attendi il completamento della sincronizzazione. Alla fine tutti gli array dovrebbero mostrare [UU]:
[root@server1 ~]# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb1[1] sda1[0]
200704 blocks [2/2] [UU]
md1 : active raid1 sdb2[1] sda2[0]
522048 blocks [2/2] [UU]
md2 : active raid1 sdb3[1] sda3[0]
9759360 blocks [2/2] [UU]
unused devices:
[root@server1 ~]#
6) Reinstallare il bootloader su entrambi i dischi
Per evitare che il sistema non si avvii se uno dei dischi fallisce, installa GRUB su entrambi gli HDD. Esempio con interfaccia testuale di grub:
grub
Poi, nella shell di grub:
root (hd0,0)
setup (hd0)
root (hd1,0)
setup (hd1)
quit
Il risultato finale: il disco è stato sostituito e l’array RAID1 è tornato completo.
Criteri di accettazione
- L’output di cat /proc/mdstat mostra tutti gli array con stato [UU].
- fdisk -l mostra la tabella partizioni sul nuovo disco rispecchiante il disco sano.
- GRUB è installato su entrambi i dischi e la macchina si avvia correttamente anche con un disco rimosso.
Checklist rapida (playbook)
- Effettuare backup recenti e verificati.
- Simulare o identificare il disco guasto.
- Rimuovere il disco dall’array con mdadm (fail + remove) se necessario.
- Sostituire fisicamente il disco.
- Copiare la tabella partizioni con sfdisk.
- Azzerare i superblocchi mdadm sul nuovo disco.
- Aggiungere le partizioni all’array (mdadm -a).
- Monitorare cat /proc/mdstat fino a [UU].
- Reinstallare GRUB su entrambi i dischi.
- Eseguire test di boot e monitoraggio SMART sul disco sostituito.
Ruoli e responsabilità (breve)
- Sysadmin: esegue i comandi, monitora la ricostruzione e reinstalla il bootloader.
- Operatore di sala: sostituisce il disco fisico e aggiorna il ticket.
- Backup owner: verifica l’integrità dei backup prima dell’intervento.
Quando questa procedura può fallire (controesempi)
- Il nuovo disco ha settori danneggiati o SMART warning gravi.
- I nomi dei device cambiano (es. passaggio a NVMe) e non vengono aggiornati i comandi.
- Tabella delle partizioni non compatibile per motivi di allineamento o differenze di logica (es. GPT vs MBR).
In questi casi, considera l’uso di parted/gdisk per creare partizioni compatibili o copia manuale con sgdisk per GPT.
Alternative e varianti
- Se usi GPT, usa sgdisk per copiare la tabella delle partizioni: sgdisk –backup=table /dev/sda; sgdisk –load-backup=table /dev/sdb.
- Se vuoi clonar tutto byte-per-byte (attento a UUID duplicati), usa dd if=/dev/sda of=/dev/sdb bs=64K conv=noerror,sync — poi aggiorna UUID e riscrivi i superblocchi.
- Per sistemi con LVM sopra RAID, ricontrolla che i PV/LV siano attivi dopo la ricostruzione: pvscan, vgchange -ay.
Mental model e heuristica veloce
Pensa all’array RAID1 come a coppie di dischi identificati da UUID e superblocchi. La procedura tipica è: ripristinare la struttura delle partizioni, eliminare residui di configurazioni precedenti, poi riaggiungere il disco all’array per avviare la ricostruzione.
Test di accettazione
- Dopo il ripristino, rimuovi il disco appena aggiunto e verifica che il sistema si avvii solo dal disco rimanente.
- Controlla i log di sistema per errori mdadm (journalctl, /var/log/messages).
- Esegui smartctl -a /dev/sdb per confermare l’integrità SMART del disco sostituito.
Troubleshooting comune
Problema: sfdisk segnala ‘msdos signature’ errore.
Soluzione: provare con –force oppure usare fdisk/parted per ricreare manualmente le partizioni seguendo gli offset del disco sano.Problema: ricostruzione molto lenta.
Soluzione: verificare I/O load, scheduler, e limiti di banda; il kernel può limitare la velocità di rebuild in base a sysctl (/proc/sys/dev/raid/speed_limit_min e speed_limit_max).Problema: GRUB non si installa su un disco.
Soluzione: controlla la tabella partizioni e la presenza della partizione BIOS/EFI corretta; su UEFI usa efibootmgr per registrare il boot manager.
Matrice dei rischi e mitigazioni (alto livello)
- Perdita dati dovuta a errore umano — Mitigazione: backup e verifica prima delle operazioni.
- Disco di ricambio difettoso — Mitigazione: test SMART e burn-in se possibile.
- Doppio guasto durante la ricostruzione — Mitigazione: avere spare immediatamente disponibili o policy hot-swap per riparazioni rapide.
Note su compatibilità e migrazione
- Se stai migrando da MBR a GPT o da dischi con diversa geometria, ricrea le partizioni con parted/gdisk e aggiorna eventuali riferimenti in /etc/fstab con UUID.
- Su sistemi moderni con device names non persistenti (es. /dev/sdX che possono cambiare), preferisci riferimenti per UUID o LABEL in /etc/fstab e in configurazioni mdadm.
Collegamenti utili
- The Software-RAID Howto: http://tldp.org/HOWTO/Software-RAID-HOWTO.html
- CentOS: http://www.centos.org/
Riepilogo
Hai imparato a simulare un guasto disco, copiare una tabella partizioni, azzerare superblocchi, aggiungere un disco a un array RAID1, monitorare la ricostruzione e reinstallare il bootloader. Segui la checklist e i criteri di accettazione prima di dichiarare l’intervento concluso.
Materiali simili

Google Pay su Android con root: guida pratica

Joystick per Pokémon GO: come ottenerlo in sicurezza
RAID1 con LVM: creare e migrare dati

Errore copia-incolla Intune: cause e soluzioni

Escludere cartelle dalla ricerca di Windows
