RAID Debian · 5 min read · Nov 14, 2025

Espandere un RAID software su Debian migrando a nuovi dischi rigidi più grandi

La configurazione: due dischi fisici di un RAID 1 (mirror) saranno sostituiti con due dischi più capienti, faremo una sostituzione “a caldo” direttamente dal sistema operativo in esecuzione, senza la necessità di avviare da un supporto di avvio esterno. Questa guida è stata testata su distribuzioni Debian 6, 7, 8 sia a 32 che a 64 bit.

Si presume che i due dischi siano partizionati con una partizione root e una partizione swap e che queste due partizioni costituiscano i due dispositivi raid md0 e md1:

  • La partizione sda1 e sdb1 che costituiscono il volume md0 (root)
  • Le partizioni sda2 e sdb2 che costituiscono il volume md1 (swap)

Per prima cosa, eseguire un backup di tutti i dati, anche se la guida è stata testata più volte, la sfortuna è sempre in agguato… Forniamo (a mio avviso, la migliore soluzione) per una sostituzione, scollegare uno dei due vecchi dischi con la macchina spenta, quindi collegare un nuovo disco temporaneo, poi risincronizzare, in modo da avere ancora il RAID funzionante e un solo disco (con RAID in modalità degradata) e si può ancora ricreare un RAID funzionante se qualcosa non funziona. Per fare ciò, basta digitare questi comandi dopo aver sostituito il disco pieno con quello vuoto:

sfdisk -d /dev/hd source | sfdisk —force /dev/hd empty  
mdadm —zero-superblock /dev/hd empty  
mdadm —add /dev/md(raid) /dev/hd(empty)

Ripetere le ultime due righe per ogni RAID / partizione sul sistema

(per esempio:

mdadm -add /dev/md0 /dev/sdb1 

poi

mdadm -add /dev/md1 /dev/sdb2

ecc..

In questo modo, abbiamo forzato la tabella delle partizioni dal disco sorgente a quello vuoto, quindi aggiungiamo questo al RAID.

Ovviamente, bisogna aspettare fino alla fine del processo di ricostruzione, monitorato da:

watch cat / pro / mdstat

(E ovviamente CTRL + C per uscire dal processo)

Spegnere la macchina a questo punto, aggiungere due nuovi dischi, che diventano rispettivamente sdc e sdd, quindi avviare il server ed eseguire il comando:

fdisk -l

Il risultato dovrebbe apparire simile a questo:

Disk /dev/sda: ……MB , ………….Bytes  
… heads, …sectors/track , ….. cylinders  
I/O size (minimum/optimal): 512 bytes / 512 bytes  
Disk: identifier : ………..
Device boot Start End Blocks Id   System
/dev/sda2        970           1044 602437+ fd   Linux raid autodetect
/dev/sda2            1 969 7783461 fd   Linux raid autodetect 
……
/dev/sdb1     *       1 969 7783461 fd   Linux raid autodetect 
/dev/sdb2            970        1044 602437+ fd   Linux raid autodetect 
……
Disk /dev/sdc: …Mb, …….Bytes
……
Disk /dev/sdd: …Mb, …….Bytes
……
Disk /dev/md0: …Mb, …….Bytes
…...
Disk /dev/md1: …Mb, …….Bytes

Ora, digitare:

fdisk /dev/sdc

creiamo una nuova partizione con il comando n,

selezioniamo p partizione primaria,

selezioniamo il numero della partizione ( 1,2,3, ecc …),

selezioniamo il cilindro di partenza ( 1),

selezioniamo la dimensione della partizione primaria digitando il simbolo + seguito dalla dimensione in GB e GB dalle lettere (per esempio: +480GB)

la rendiamo avviabile con il comando a, selezionando lo stesso numero di partizione.

cambiamo l’ID della partizione in “ fd “ (Linux Raid Autodetect) con t, e scrivendo come codice esadecimale, solo “ fd

Poi ripetiamo TUTTI i comandi per la seconda partizione (la partizione sarà lo swap).

Salveremo le modifiche con w.

Ovviamente, prestare attenzione alla dimensione delle partizioni. La soluzione migliore è sottrarre la dimensione attuale dello swap dal totale dello spazio libero per creare la partizione di lavoro con lo spazio più ampio possibile.

Ora eseguiremo esattamente le stesse operazioni sul disco SDD, assicurandoci di creare la stessa partizione con le stesse dimensioni che abbiamo utilizzato in precedenza.

A questo punto facciamo uno scambio tra il primo disco “pieno” e il primo nuovo disco, aggiungendo quest’ultimo come riserva al RAID:

mdadm -add /dev/md0 /dev/sdc1

Poi dovremmo verificare la situazione del disco raid, dovrebbe essere così:

md0: active raid 1 sdc1[S] sda1[2] sdb1[3]
 ………blocks super 1.2 [2/2] [UU]

Poi mettiamo nel disco originale:

mdadm -f /dev/md0 /dev/sda1

e lo rimuoviamo dal RAID:

mdadm -r /dev/md0 /dev/sda1

Ora verifichiamo che la ricostruzione sia iniziata automaticamente e aspettiamo fino al completamento monitorando di nuovo con:

watch cat /proc/mdstat

(E ovviamente CTRL + C per uscire dal processo)

Alla fine installiamo il bootloader (grub) sul nuovo disco (/ dev / sdc):

grub-install /dev/sdc

Lo stesso processo deve essere ripetuto per ciascuna delle partizioni di sistema:

mdadm -add /dev/md0 /dev/sdd1
mdadm -f /dev/md0 /dev/sdb1
mdadm -r /dev/md0 /dev/sdb1

E aspettiamo di nuovo fino al completamento della ricostruzione:

watch cat /proc/mdstat

(E ovviamente CTRL + C per uscire dal processo)

Successivamente, eseguire la stessa procedura per la prima partizione swap dei due nuovi dischi:

mdadm -add /dev/md1 /dev/sdc2
mdadm -f /dev/md0 /dev/sda2
mdadm -r /dev/md0 /dev/sda2

Aspettiamo di nuovo fino al completamento della ricostruzione:

watch cat /proc/mdstat

(E ovviamente CTRL + C per uscire dal processo)

E l’ultimo disco:

mdadm -add /dev/md1 /dev/sdd2
mdadm -f /dev/md0 /dev/sdb2
mdadm -r /dev/md0 /dev/sdb2

Aspettiamo di nuovo fino al completamento della ricostruzione:

watch cat /proc/mdstat

(E ovviamente CTRL + C per uscire dal processo)

A questo punto reinstalliamo il bootloader su entrambi i dischi:

grub-install /dev/sdc
grub-install /dev/sdd

A questo punto ci troviamo con il vecchio disco espulso dal RAID, e i nuovi dischi sono installati e operativi. Ma con lo spazio utilizzabile al di sotto del massimo consentito dalla partizione

Poi procediamo con l’ingrandimento della partizione e la verifica della stessa, come al solito per entrambi i volumi:

mdadm —grow —raid-devices=2 /dev/md0
mdadm -A —scan
mdadm —grow /dev/md0 —size=max
mdadm —examine —scan
e2fsck -f /dev(md0
resize2fs /dev/md0
mdadm —grow —raid-devices=2 /dev/md1
mdadm -A —scan
mdadm —grow /dev/md1 —size=max
mdadm —examine —scan
e2fsck -f /dev/md1
resize2fs /dev/md1

Quando finito, spegnere il PC, scollegare i vecchi dischi e riavviare la macchina.

Anche se il riavvio è andato a buon fine, ricostruiamo il grub per motivi di sicurezza poiché il lancio del nuovo disco avrà preso il nome del vecchio (sda e sdb):

mv /boot/grub/device.map/boot/grub/device.map.old
grub-mkdevicemap
update-grub2 && grub-install /dev/sda && grub-install /dev/sdb

Se vuoi essere assolutamente sicuro che la nuova configurazione del raid funzioni, spegni la macchina, scollega uno dei nuovi dischi e riavvia. Dovrebbe avviarsi senza problemi. Successivamente, spegni di nuovo, collega il disco e avvia. Puoi usare questo comando per controllare lo stato del raid.

watch cat /proc/mdstat

(E ovviamente CTRL + C per uscire dal processo)

Abbiamo finito il lavoro, festeggiamo.

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.