RAID1 Software · 3 min read · Dec 25, 2025

Sostituzione di un Disco Rigido Guasto in un Array RAID1 Software

Questa guida mostra come rimuovere un disco rigido guasto da un array RAID1 Linux (RAID software) e come aggiungere un nuovo disco rigido all’array RAID1 senza perdere dati.

NOTA: È disponibile una nuova versione di questo tutorial che utilizza gdisk invece di sfdisk per supportare le partizioni GPT.

1 Nota Preliminare

In questo esempio ho due dischi rigidi, /dev/sda e /dev/sdb, con le partizioni /dev/sda1 e /dev/sda2 così come /dev/sdb1 e /dev/sdb2.

/dev/sda1 e /dev/sdb1 costituiscono l’array RAID1 /dev/md0.

/dev/sda2 e /dev/sdb2 costituiscono l’array RAID1 /dev/md1.

/dev/sda1 + /dev/sdb1 = /dev/md0
/dev/sda2 + /dev/sdb2 = /dev/md1

/dev/sdb ha subito un guasto e vogliamo sostituirlo.

2 Come Posso Capire Se un Disco Rigido È Guasto?

Se un disco ha subito un guasto, probabilmente troverai molti messaggi di errore nei file di log, ad esempio /var/log/messages o /var/log/syslog.

Puoi anche eseguire

cat /proc/mdstat

e invece della stringa [UU] vedrai [U_] se hai un array RAID1 degradato.

3 Rimozione del Disco Guasto

Per rimuovere /dev/sdb, contrassegneremo /dev/sdb1 e /dev/sdb2 come guasti e li rimuoveremo dai rispettivi array RAID (/dev/md0 e /dev/md1).

Prima contrassegniamo /dev/sdb1 come guasto:

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

L’output di

cat /proc/mdstat

dovrebbe apparire così:

server1:~# cat /proc/mdstat  
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]  
md0 : active raid1 sda1[0] sdb1[2](F)  
      24418688 blocks [2/1] [U_]  
  
md1 : active raid1 sda2[0] sdb2[1]  
      24418688 blocks [2/2] [UU]  
  
unused devices: 

Poi rimuoviamo /dev/sdb1 da /dev/md0:

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

L’output dovrebbe essere simile a questo:

server1:~# mdadm --manage /dev/md0 --remove /dev/sdb1  
mdadm: hot removed /dev/sdb1

E

cat /proc/mdstat

dovrebbe mostrare questo:

server1:~# cat /proc/mdstat  
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]  
md0 : active raid1 sda1[0]  
      24418688 blocks [2/1] [U_]  
  
md1 : active raid1 sda2[0] sdb2[1]  
      24418688 blocks [2/2] [UU]  
  
unused devices: 

Ora facciamo gli stessi passaggi per /dev/sdb2 (che fa parte di /dev/md1):

mdadm --manage /dev/md1 --fail /dev/sdb2
cat /proc/mdstat
server1:~# cat /proc/mdstat  
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]  
md0 : active raid1 sda1[0]  
      24418688 blocks [2/1] [U_]  
  
md1 : active raid1 sda2[0] sdb2[2](F)  
      24418688 blocks [2/1] [U_]  
  
unused devices: 
mdadm --manage /dev/md1 --remove /dev/sdb2
server1:~# mdadm --manage /dev/md1 --remove /dev/sdb2  
mdadm: hot removed /dev/sdb2
cat /proc/mdstat
server1:~# cat /proc/mdstat  
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]  
md0 : active raid1 sda1[0]  
      24418688 blocks [2/1] [U_]  
  
md1 : active raid1 sda2[0]  
      24418688 blocks [2/1] [U_]  
  
unused devices: 

Poi spegni il sistema:

shutdown -h now

e sostituisci il vecchio disco rigido /dev/sdb con uno nuovo (deve avere almeno la stessa dimensione del vecchio - se è solo pochi MB più piccolo del vecchio, la ricostruzione degli array fallirà).

4 Aggiunta del Nuovo Disco Rigido

Dopo aver cambiato il disco rigido /dev/sdb, avvia il sistema.

La prima cosa che dobbiamo fare ora è creare la stessa partizione esatta di /dev/sda. Possiamo farlo con un semplice comando:

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

Puoi eseguire

fdisk -l

per controllare se entrambi i dischi rigidi hanno ora la stessa partizione.

Successivamente, aggiungiamo /dev/sdb1 a /dev/md0 e /dev/sdb2 a /dev/md1:

mdadm --manage /dev/md0 --add /dev/sdb1
server1:~# mdadm --manage /dev/md0 --add /dev/sdb1  
mdadm: re-added /dev/sdb1
mdadm --manage /dev/md1 --add /dev/sdb2
server1:~# mdadm --manage /dev/md1 --add /dev/sdb2  
mdadm: re-added /dev/sdb2

Ora entrambi gli array (/dev/md0 e /dev/md1) saranno sincronizzati. Esegui

cat /proc/mdstat

per vedere quando è finito.

Durante la sincronizzazione, l’output apparirà così:

server1:~# cat /proc/mdstat  
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]  
md0 : active raid1 sda1[0] sdb1[1]  
      24418688 blocks [2/1] [U_]  
      [=>...................]  recovery =  9.9% (2423168/24418688) finish=2.8min speed=127535K/sec  
  
md1 : active raid1 sda2[0] sdb2[1]  
      24418688 blocks [2/1] [U_]  
      [=>...................]  recovery =  6.4% (1572096/24418688) finish=1.9min speed=196512K/sec  
  
unused devices: 

Quando la sincronizzazione è completata, l’output apparirà così:

server1:~# cat /proc/mdstat  
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]  
md0 : active raid1 sda1[0] sdb1[1]  
      24418688 blocks [2/2] [UU]  
  
md1 : active raid1 sda2[0] sdb2[1]  
      24418688 blocks [2/2] [UU]  
  
unused devices: 

Ecco fatto, hai sostituito con successo /dev/sdb!

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.