Sostituzione e test di un disco guasto in RAID1
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
- Notifica finestra di manutenzione.
- Effettua backup (se non presente).
- Segnala il disco come failed con mdadm.
- Rimuovi la partizione dal sistema e sostituisci fisicamente.
- Copia la tabella partizioni (sfdisk).
- mdadm –zero-superblock sui dispositivi nuovi.
- mdadm -a per reintrodurre le partizioni nell’array.
- Verifica sincronizzazione e stato [UU].
- Reinstalla GRUB su entrambi i dischi.
- 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
- The Software-RAID Howto: http://tldp.org/HOWTO/Software-RAID-HOWTO.html
- CentOS: http://www.centos.org/
Materiali simili

Aggiungi un forum al tuo blog Tumblr

Come usare Dropbox su Android in modo semplice

Disattivare la memoria chat di Google Gemini

Almowafir: coupon e offerte a Dubai
Sostituire un disco guasto in RAID1 con mdadm
