Guida alle tecnologie

Sostituire un disco in RAID1 e testare la ricostruzione

4 min read RAID Aggiornato 09 Oct 2025
Sostituire disco RAID1 e testare la ricostruzione
Sostituire disco RAID1 e testare la ricostruzione

Testare la sostituzione di un disco in un array RAID1 consiste nel simulare il guasto, rimuovere il disco guasto, clonare la tabella delle partizioni sul nuovo disco, aggiungerlo all’array e attendere la ricostruzione. Alla fine bisogna reinstallare GRUB su entrambi i dischi per garantire l’avvio.

Scopo e varianti di ricerca

Sostituire disco RAID1 è la procedura principale trattata qui. Varianti correlate: simulare guasto disco, riparare RAID1 con mdadm, clonare tabella partizioni con sfdisk, reinstallare GRUB su RAID.

Prerequisiti

  • Accesso root o sudo sul server.
  • mdadm, sfdisk e grub disponibili sul sistema.
  • Un disco di ricambio con almeno la stessa capacità del disco guasto.

Importante: questa guida assume un array RAID1 a 2 dischi e usa /dev/sda e /dev/sdb come esempi. Adatta i nomi dei dispositivi al tuo sistema.

1) Simulare il guasto del disco

Non importa se scegli /dev/sda o /dev/sdb. Nell’esempio si assume che /dev/sdb sia quello guasto. Puoi rimuovere fisicamente il disco o marcarlo come guasto da software:

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

Quindi rimuovilo dall’array:

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

Per spegnere la macchina:

shutdown -h now

Sostituisci il disco fisico guasto con un nuovo HDD/SSD. Se hai simulato il guasto di /dev/sda, inserisci ora il disco come /dev/sda o collega il nuovo HDD come /dev/sdb seguendo la tua configurazione hardware. Avvia il sistema; dovrebbe partire normalmente anche con un array degradato.

2) Verifica che l’array sia degradato

Controlla lo stato dell’array:

cat /proc/mdstat

Esempio di output quando un membro è mancante:

[root@server1 ~]# cat /proc/mdstat  
Personalities : [raid1] [raid6] [raid5] [raid4]  
md0 : active raid1 sda1[0]  
      104320 blocks [2/1] [U_]  
  
md1 : active raid1 sda2[0]  
      513984 blocks [2/1] [U_]  
  
md2 : active raid1 sda3[0]  
      4618560 blocks [2/1] [U_]  
  
unused devices:   
[root@server1 ~]#

E controlla le partizioni/dischi con fdisk:

fdisk -l

Esempio di output (mostra che /dev/sdb non ha tabella partizioni valida):

[root@server1 ~]# fdisk -l  
  
Disk /dev/sda: 5368 MB, 5368709120 bytes  
255 heads, 63 sectors/track, 652 cylinders  
Units = cylinders of 16065 * 512 = 8225280 bytes  
Disk identifier: 0x0007b217  
  
   Device Boot      Start         End      Blocks   Id  System  
/dev/sda1   *           1          13      104391   fd  Linux raid autodetect  
/dev/sda2             14          77      514080   fd  Linux raid autodetect  
/dev/sda3             78         652     4618687+  fd  Linux raid autodetect  
  
Disk /dev/sdb: 5368 MB, 5368709120 bytes  
255 heads, 63 sectors/track, 652 cylinders  
Units = cylinders of 16065 * 512 = 8225280 bytes  
Disk identifier: 0x00000000  
  
Disk /dev/sdb doesn't contain a valid partition table  
  
Disk /dev/md2: 4729 MB, 4729405440 bytes  
2 heads, 4 sectors/track, 1154640 cylinders  
Units = cylinders of 8 * 512 = 4096 bytes  
Disk identifier: 0x00000000  
  
Disk /dev/md2 doesn't contain a valid partition table  
  
Disk /dev/md1: 526 MB, 526319616 bytes  
2 heads, 4 sectors/track, 128496 cylinders  
Units = cylinders of 8 * 512 = 4096 bytes  
Disk identifier: 0x00000000  
  
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 identifier: 0x00000000  
  
Disk /dev/md0 doesn't contain a valid partition table  
[root@server1 ~]#

3) Copiare la tabella delle partizioni dal disco sano al nuovo disco

Clona la tabella delle partizioni di /dev/sda su /dev/sdb con sfdisk:

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

Se compare un errore sulla signature, puoi forzare l’operazione:

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

Esempio di output di sfdisk che descrive la scrittura della nuova tabella:

[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    208844     208782  fd  Linux raid autodetect  
/dev/sdb2        208845   1237004    1028160  fd  Linux raid autodetect  
/dev/sdb3       1237005  10474379    9237375  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 ~]#

4) Pulire eventuali superblock RAID precedenti e aggiungere il disco all’array

Rimuovi le tracce di eventuali array RAID precedenti:

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

Aggiungi le partizioni appena create all’array RAID:

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

Controlla lo stato di sincronizzazione:

cat /proc/mdstat

Esempio mentre uno dei dispositivi si sta ricostruendo:

[root@server1 ~]# cat /proc/mdstat  
Personalities : [raid1] [raid6] [raid5] [raid4]  
md0 : active raid1 sdb1[1] sda1[0]  
      104320 blocks [2/2] [UU]  
  
md1 : active raid1 sdb2[1] sda2[0]  
      513984 blocks [2/2] [UU]  
  
md2 : active raid1 sdb3[2] sda3[0]  
      4618560 blocks [2/1] [U_]  
      [===>.................]  recovery = 15.4% (715584/4618560) finish=4.9min speed=13222K/sec  
  
unused devices:   
[root@server1 ~]#

Attendi il completamento della ricostruzione:

[root@server1 ~]# cat /proc/mdstat  
Personalities : [raid1] [raid6] [raid5] [raid4]  
md0 : active raid1 sdb1[1] sda1[0]  
      104320 blocks [2/2] [UU]  
  
md1 : active raid1 sdb2[1] sda2[0]  
      513984 blocks [2/2] [UU]  
  
md2 : active raid1 sdb3[1] sda3[0]  
      4618560 blocks [2/2] [UU]  
  
unused devices:   
[root@server1 ~]#

5) Reinstallare il bootloader su entrambi i dischi

Per garantire che il sistema sia avviabile anche se un disco fallisce, installa GRUB su entrambi i dischi. Avvia il comando grub (o grub-install secondo la versione) e usa i comandi del prompt GRUB come nell’esempio:

grub

Quindi, al prompt GRUB:

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

Su sistemi moderni usa invece grub-install su ciascun dispositivo, ad esempio:

grub-install /dev/sda
grub-install /dev/sdb

Nota: la sintassi dipende dalla versione di GRUB presente sulla tua distribuzione.

Criteri di verifica finali

  • cat /proc/mdstat mostra tutti i dispositivi come [UU] per ogni mdX.
  • fdisk -l mostra le partizioni del nuovo disco corrispondenti a quelle del disco sano.
  • Entrambi i dischi hanno il bootloader installato (testare l’avvio con un disco rimosso se possibile in ambiente di test).

Checklist rapida per il responsabile operativo

  • Backup recente verificato.
  • Nuovo disco disponibile e identificato (/dev/sdb o altro).
  • Tabella partizioni clonata con sfdisk.
  • Superblock azzerati (mdadm –zero-superblock).
  • Disco aggiunto all’array (mdadm -a).
  • Ricostruzione completata (cat /proc/mdstat).
  • GRUB reinstallato su entrambi i dischi.

Errori comuni e rimedi

  • sfdisk segnala mancante signature: usare –force se sei sicuro del disco.
  • mdadm non aggiunge la partizione: assicurati che la partizione sia del tipo RAID (Id fd).
  • Ricostruzione lenta: verifica I/O, load del sistema e cavi/SATA.

Mini-metodologia (che cosa fare in produzione)

  1. Notifica downtime o esegui in manutenzione programmata.
  2. Verifica backup e snapshot.
  3. Segui i passaggi sopra in ambiente controllato.
  4. Monitora la ricostruzione e il log di sistema.
  5. Documenta la sostituzione nel change log.

Link utili

Riepilogo

Hai simulato il guasto di un disco, clonato la tabella delle partizioni, aggiunto il nuovo disco all’array e atteso la ricostruzione. Infine hai reinstallato il bootloader per assicurare l’avvio da entrambi i dischi.

Autore
Redazione

Materiali simili

Musica di sottofondo per app Android (guida Tasker)
Android

Musica di sottofondo per app Android (guida Tasker)

Previsioni di vendita accurate: guida pratica
Vendite

Previsioni di vendita accurate: guida pratica

Controller fisico su Android: Wiimote e MOGA
Gaming Mobile

Controller fisico su Android: Wiimote e MOGA

Eliminare il lag della fotocamera su Android
Mobile

Eliminare il lag della fotocamera su Android

File cancellati irrecuperabili: 3 metodi rapidi
Sicurezza dati

File cancellati irrecuperabili: 3 metodi rapidi

Configurare lo slave MySQL con replica SSL
Database

Configurare lo slave MySQL con replica SSL