Guida alle tecnologie

Sostituzione e test di un disco guasto in RAID1

6 min read Linux Aggiornato 28 Sep 2025
Sostituire un disco guasto in RAID1 con mdadm
Sostituire un disco guasto in RAID1 con mdadm

Sostituisci il disco guasto in un array RAID1 usando mdadm: simula il guasto, rimuovi la vecchia unità, copia la tabella delle partizioni, azzera i superblock RAID, aggiungi il nuovo disco e aspetta la ricostruzione. Infine reinstalla GRUB su entrambi i dischi. Questa guida mostra i comandi passo passo, verifiche e procedure alternative.

Panoramica

Questa sezione descrive come simulare la rottura di un disco, sostituirlo e ricostruire un array RAID1 software (mdadm) su Linux. Gli esempi assumono un array con /dev/md0 (partizione 1) e /dev/md1 (partizione 2), e due dischi fisici: /dev/sda e /dev/sdb. Nell’esempio /dev/sdb è il disco che viene sostituito.

Importante: esegui queste operazioni con accesso root e, se possibile, in un ambiente di test prima su sistemi di produzione.

Prerequisiti

  • mdadm installato
  • Accesso root o sudo
  • Una copia recente dei dati o backup (consigliato)
  • Conoscenza dei nomi dei dispositivi (/dev/sda, /dev/sdb possono cambiare su sistemi diversi)

1. Simulare un guasto del disco

Puoi simulare la rimozione del disco fisico spegnendo la macchina e scollegando l’HDD, oppure emulare la rimozione da software con mdadm:

mdadm --manage /dev/md0 --fail /dev/sdb1
mdadm --manage /dev/md1 --fail /dev/sdb2

mdadm --manage /dev/md0 --remove /dev/sdb1
mdadm --manage /dev/md1 --remove /dev/sdb2

Dopo aver segnalato il fallimento e la rimozione, spegni il sistema se vuoi simulare lo swap fisico:

shutdown -h now

Sostituisci fisicamente il disco con uno nuovo (o riposiziona i dispositivi se stai simulando /dev/sda fallito) e riavvia. Il sistema dovrebbe avviarsi anche con l’array degradato.

2. Verificare lo stato dell’array degradato

Esegui:

cat /proc/mdstat

Dovresti vedere l’array in stato degraded (esempio):

[root@server1 ~]# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sda1[0]
104320 blocks [2/1] [U_]

md1 : active raid1 sda2[0]
10377920 blocks [2/1] [U_]

unused devices: 
[root@server1 ~]#

E controlla le partizioni:

fdisk -l

Esempio di output (non modificare i dispositivi reali):

[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          13      104391   fd  Linux raid autodetect
/dev/sda2             14        1305    10377990   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/md1: 10.6 GB, 10626990080 bytes
2 heads, 4 sectors/track, 2594480 cylinders
Units = cylinders of 8 * 512 = 4096 bytes

Disk /dev/md1 doesn't contain a valid partition table

Disk /dev/md0: 106 MB, 106823680 bytes
2 heads, 4 sectors/track, 26080 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 al disco nuovo

Copia la tabella delle partizioni da /dev/sda a /dev/sdb:

sfdisk -d /dev/sda | sfdisk /dev/sdb

Se si verifica un errore relativo alla firma msdos, prova con –force:

sfdisk -d /dev/sda | sfdisk --force /dev/sdb

Esempio di output della copia:

[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    208844     208782  fd  Linux raid autodetect
/dev/sdb2        208845  20964824   20755980  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 ...

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: l’output può variare con versioni diverse di utilità e kernel.

4. Rimuovere eventuali residui RAID e aggiungere il nuovo disco

Azzerare eventuali superblock RAID residui sul nuovo disco:

mdadm --zero-superblock /dev/sdb1
mdadm --zero-superblock /dev/sdb2

Aggiungi le partizioni dell’HDD al rispettivo array RAID:

mdadm -a /dev/md0 /dev/sdb1
mdadm -a /dev/md1 /dev/sdb2

Verifica lo stato di sincronizzazione:

cat /proc/mdstat

Esempio durante la ricostruzione:

[root@server1 ~]# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb1[1] sda1[0]
104320 blocks [2/2] [UU]

md1 : active raid1 sdb2[2] sda2[0]
10377920 blocks [2/1] [U_]
[======>..............]  recovery = 32.3% (3360768/10377920) finish=1.5min speed=74238K/sec

unused devices: 
[root@server1 ~]#

Aspetta che la sincronizzazione finisca fino a quando tutte le unità mostrano [UU]:

[root@server1 ~]# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb1[1] sda1[0]
104320 blocks [2/2] [UU]

md1 : active raid1 sdb2[1] sda2[0]
10377920 blocks [2/2] [UU]

unused devices: 
[root@server1 ~]#

5. Reinstallare il bootloader (GRUB)

Per assicurarsi che il sistema sia avviabile anche se uno dei dischi si guasta, installa GRUB su entrambi i dischi fisici. Avvia l’interfaccia di grub e esegui:

grub

Quindi, nella console di grub:

root (hd0,0)
setup (hd0)
root (hd1,0)
setup (hd1)
quit

Questo installa il bootloader su entrambe le unità (hd0 e hd1) così l’array rimane avviabile se un disco si guasta.

6. Verifiche finali

  • Controlla /proc/mdstat: tutti gli array devono essere [UU]
  • Esegui mount e ls su filesystem critici per verificare l’integrità
  • Controlla dmesg/journalctl per errori sul disco
  • Se hai /etc/mdadm/mdadm.conf o /etc/mdadm.conf, aggiorna la configurazione con –detail –scan se necessario:
mdadm --detail --scan >> /etc/mdadm/mdadm.conf

Important: non sovrascrivere il file senza verificare il contenuto; meglio aggiungere e rivedere manualmente.

Controlli rapidi (cheat sheet dei comandi)

  • Simulare fail: mdadm –manage /dev/mdX –fail /dev/sdY1
  • Rimuovere: mdadm –manage /dev/mdX –remove /dev/sdY1
  • Copiare partizioni: sfdisk -d /dev/sda | sfdisk /dev/sdb
  • Azzerare superblock: mdadm –zero-superblock /dev/sdY1
  • Aggiungere al RAID: mdadm -a /dev/mdX /dev/sdY1
  • Stato: cat /proc/mdstat
  • Reinstallare GRUB: usare la shell di grub come mostrato sopra

Procedure alternative e considerazioni

  • Hot-swap: se il tuo server supporta hot-swap e il controller è compatibile, puoi sostituire il disco senza spegnere la macchina. In tal caso rileva l’unità e procedi con sfdisk e mdadm come sopra.
  • Hardware RAID: su controller hardware la procedura è differente. Spesso si usa l’interfaccia del controller per ricostruire l’array; non usare mdadm.
  • NVMe / nomi dispositivi: su sistemi moderni i dispositivi possono chiamarsi /dev/nvme0n1p1 o usare link persistenti in /dev/disk/by-id/. È più robusto usare identificatori persistenti per evitare confusioni sul riavvio.

Quando questa procedura può fallire (controesempi)

  • Tabella delle partizioni non copiabile: dispositivi con geometrie o tabelle particolari (GPT vs MBR) richiedono comandi diversi (gdisk, sgdisk).
  • Dischi con settori danneggiati: la copia delle partizioni può non funzionare se il disco sorgente ha errori fisici gravi.
  • RAID non ricostruisce: se il superblock non è coerente o i numeri di array/UUID differiscono, potrebbe essere necessario usare mdadm –assemble con –uuid o modificare manualmente mdadm.conf.

Checklist per ruolo (amministratore)

  • Verificare backup recente
  • Identificare il disco guasto via smartctl e dmesg
  • Simulare il guasto in ambiente di prova prima in produzione
  • Sostituire il disco e copiare la tabella partizioni
  • Azzerare superblock e aggiungere il disco
  • Monitorare /proc/mdstat fino a ricostruzione completa
  • Reinstallare GRUB su entrambi i dischi
  • Aggiornare mdadm.conf se necessario
  • Registrare l’operazione nel change log

SOP: playbook rapido

  1. Notifica finestra di manutenzione.
  2. Effettua backup (se non presente).
  3. Segnala il disco come failed con mdadm.
  4. Rimuovi la partizione dal sistema e sostituisci fisicamente.
  5. Copia la tabella partizioni (sfdisk).
  6. mdadm –zero-superblock sui dispositivi nuovi.
  7. mdadm -a per reintrodurre le partizioni nell’array.
  8. Verifica sincronizzazione e stato [UU].
  9. Reinstalla GRUB su entrambi i dischi.
  10. Verifica boot da ciascun disco (se possibile) e chiudi la manutenzione.

Casi di test e criteri di accettazione

  • Dopo ripristino: /proc/mdstat mostra [UU] per tutti gli array.
  • Sistema avvia correttamente con uno dei due dischi scollegato.
  • Nessun errore critico in dmesg o journalctl dopo la ricostruzione.

Note tecniche e compatibilità

  • GPT vs MBR: sfdisk lavora con tabelle DOS/MBR; per GPT usare sgdisk o parted.
  • Udev e mappature disco: dopo aver scritto la tabella partizioni, potrebbe essere necessario forzare la rilettura con partprobe o riavviare per aggiornare i nodi di dispositivo.
  • UUID e mdadm.conf: usare mdadm –detail –scan per aggiornare la configurazione e assicurarsi che gli UUID siano consistenti.

Troubleshooting rapido

  • mdadm non riconosce la partizione: controlla che il type ID sia fd (Linux RAID autodetect) e che la partizione sia stata scritta correttamente.
  • Ricostruzione lenta: può dipendere da I/O del disco, carico del sistema o limitazioni del controller.
  • GRUB non si installa: controlla che il dispositivo sia correttamente indirizzato (hd0/hd1) nella console grub e che le partizioni contengano il filesystem di /boot se presente.

Sommario

Hai appena sostituito un disco in un array RAID1 usando mdadm: simulazione del guasto, copia della tabella delle partizioni, azzeramento dei superblock, aggiunta del nuovo disco e sincronizzazione. Infine, reinstalla GRUB su entrambi i dischi per garantire l’avviabilità.

Importante: testa sempre le procedure su sistemi non produttivi e utilizza identificatori persistenti per i dispositivi quando possibile.

Link utili

Autore
Redazione

Materiali simili

Aggiungi un forum al tuo blog Tumblr
Guide Tecnologiche

Aggiungi un forum al tuo blog Tumblr

Come usare Dropbox su Android in modo semplice
Guide.

Come usare Dropbox su Android in modo semplice

Disattivare la memoria chat di Google Gemini
Privacy

Disattivare la memoria chat di Google Gemini

Almowafir: coupon e offerte a Dubai
Shopping

Almowafir: coupon e offerte a Dubai

Sostituire un disco guasto in RAID1 con mdadm
Linux

Sostituire un disco guasto in RAID1 con mdadm

Ricerca inversa immagini su WhatsApp: guida pratica
Tecnologia

Ricerca inversa immagini su WhatsApp: guida pratica