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/sdb2ecc..
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 -lIl 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, …….BytesOra, digitare:
fdisk /dev/sdccreiamo 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/sdc1Poi 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/sda1e lo rimuoviamo dal RAID:
mdadm -r /dev/md0 /dev/sda1Ora 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/sdcLo stesso processo deve essere ripetuto per ciascuna delle partizioni di sistema:
mdadm -add /dev/md0 /dev/sdd1mdadm -f /dev/md0 /dev/sdb1mdadm -r /dev/md0 /dev/sdb1E 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/sdc2mdadm -f /dev/md0 /dev/sda2mdadm -r /dev/md0 /dev/sda2Aspettiamo 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/sdd2mdadm -f /dev/md0 /dev/sdb2mdadm -r /dev/md0 /dev/sdb2Aspettiamo 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/sdcgrub-install /dev/sddA 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/md0mdadm -A —scanmdadm —grow /dev/md0 —size=maxmdadm —examine —scane2fsck -f /dev(md0resize2fs /dev/md0mdadm —grow —raid-devices=2 /dev/md1mdadm -A —scanmdadm —grow /dev/md1 —size=maxmdadm —examine —scane2fsck -f /dev/md1resize2fs /dev/md1Quando 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.oldgrub-mkdevicemapupdate-grub2 && grub-install /dev/sda && grub-install /dev/sdbSe 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.
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.