Come ridimensionare partizioni RAID1 software con LVM, riduci e espandi
Se hai un array RAID1 software con LVM sopra e devi ridurre o aumentare lo spazio, questa guida fornisce una procedura passo‑passo per sistemi con ext3/ext4. Include operazioni su array intatti e degradati, comandi esatti, checklist di preflight, piani di rollback e suggerimenti per il recupero. Esegui sempre backup e lavora da un sistema rescue se ridimensioni la partizione di root.
Obiettivo e varianti di ricerca
Questo articolo spiega come ridimensionare partizioni RAID1 software con LVM. Varianti correlate: ridimensionare LVM su RAID1, shrink LVM su RAID software, espandere RAID1 con LVM, riparare array degradato prima del resize, ridurre PV su RAID.
Sommario rapido dei passaggi
- Avvia un sistema rescue se ridimensioni la root.
- Carica i moduli kernel necessari e attiva gli array con mdadm.
- Controlla e riduci il file system (resize2fs).
- Riduci il logical volume (lvreduce).
- Eventualmente rimuovi LV finali (es. swap) per liberare spazio.
- Ridimensiona il PV (pvresize –setphysicalvolumesize).
- Riduci l’array RAID (mdadm –grow –size).
- Ripristina LVM: pvresize, ricrea LV, lvextend e resize2fs.
Important
- Fai sempre backup offline prima di procedere.
- Lavora da un ambiente non montato per i LV coinvolti (rescue/live).
- Tutti i comandi mostrati sono esempi: adatta nomi e dimensioni al tuo sistema.
Introduzione e contesto
Questa guida illustra come ridurre e poi riallocare lo spazio su un RAID1 software che ospita LVM. L’esempio originale riguarda file system ext3 su logical volume. Le stesse fasi si applicano a ext4 con gli stessi strumenti; per XFS il ridimensionamento verso il basso non è supportato online e richiede procedure diverse.
Breve definizione: LVM è il livello di astrazione che mette volumi logici sopra volumi fisici; pv (physical volume) è il dispositivo fisico (qui /dev/md1), vg è il volume group, lv è il logical volume contenente il filesystem.
Caso di esempio: situazione iniziale
Nell’esempio, l’array /dev/md1 è composto da /dev/sda5 e /dev/sdb5. Il VG si chiama server1 e contiene i LV /dev/server1/root e /dev/server1/swap_1. L’array è integro oppure degradato a seconda del caso descritto più avanti.
Esempi di output utili (da verificare sul tuo sistema):
cat /proc/mdstat
df -h
pvdisplay
vgdisplay
lvdisplay
Questi comandi ti dicono rispettivamente lo stato degli array, l’uso dei filesystem, e la struttura LVM.
1 Preparazione e precauzioni
Checklist di preflight (esegui prima di iniziare):
- Backup recente dei dati critici (immagine disco o backup logico).
- Assicurati che i LV da modificare siano smontati.
- Se ridimensioni la root, avvia da una Live/Rescue (Knoppix, SystemRescueCD).
- Verifica consistenza filesystem con e2fsck.
- Controlla lo stato SMART dei dischi se sospetti errori hardware.
- Prendi nota di UUID e mappature: /etc/mdadm/mdadm.conf e output di mdadm –examine.
Comandi utili per la preparazione:
modprobe md
modprobe linear
modprobe multipath
modprobe raid0
modprobe raid1
modprobe raid5
modprobe raid6
modprobe raid10
cp /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf_orig
mdadm --examine --scan >> /etc/mdadm/mdadm.conf
mdadm -A --scan
/etc/init.d/lvm start
Nota: l’ordine di caricamento dei moduli può variare in base alla distribuzione. I comandi sopra attivano il demone md e LVM.
2 Ridurre un array intatto: procedura dettagliata
Descrivo la sequenza completa con spiegazioni di ogni passaggio. Adatta le dimensioni e i nomi al tuo caso.
- Controllo del filesystem sul logical volume che vuoi ridurre
e2fsck -f /dev/server1/root
Spiegazione: e2fsck forza il controllo completo del filesystem ext3/ext4. Se ci sono errori, correggili prima di procedere.
- Riduci il filesystem prima di ridurre il LV
Per essere sicuro, imposta il filesystem a una dimensione inferiore al LV target. Nell’esempio riduciamo il filesystem a 2G.
resize2fs /dev/server1/root 2G
Spiegazione: resize2fs può ridurre o espandere ext2/3/4. Non deve essere più grande del LV.
- Riduci il logical volume
lvreduce -L2.5G /dev/server1/root
Spiegazione: lvreduce riduce la dimensione del LV. Imposta una dimensione maggiore o uguale alla dimensione del filesystem. Usa –resizefs se la tua versione di LVM la supporta per combinare resize2fs e lvreduce.
- Se necessario, rimuovi LV finali per liberare spazio (es. swap)
Se un LV si trova alla fine del PV e impedisce di ridurre il PV, rimuovilo temporaneamente: nel nostro esempio /dev/server1/swap_1.
lvremove /dev/server1/swap_1
- Ridimensiona il PV a una dimensione fisica inferiore rispetto al dispositivo md
Prima cambia la dimensione fisica del PV per adattarla alla nuova dimensione dell’array che vorrai creare:
pvresize --setphysicalvolumesize 3G /dev/md1
Spiegazione: questo imposta la nuova dimensione del PV. Assicurati che la somma dei LV non superi questa dimensione.
- Riduci l’array RAID
La dimensione passata a mdadm –grow deve essere in KiB e divisibile per 64. Esempio per ridurre a 4GiB:
mdadm --grow /dev/md1 --size=4194304
Spiegazione: 4 GiB = 4 x 1024 x 1024 KiB = 4194304. mdadm ricostruisce la tabella su ogni membro prima di iniziare il sync.
- Espandi il PV alla massima dimensione dell’array (opzionale dopo la modifica dell’array)
pvresize /dev/md1
- Ricrea LV rimossi e riequilibra
Se hai rimosso swap, ricrealo con lo spazio disponibile:
lvcreate --name swap_1 -l 66 server1
mkswap /dev/server1/swap_1
- Estendi il LV della root all’uso desiderato e ridimensiona il filesystem
lvextend -l +317 /dev/server1/root
resize2fs /dev/server1/root
- Controlla e riavvia
e2fsck -f /dev/server1/root
reboot
Dopo il riavvio verifica con cat /proc/mdstat, pvdisplay, vgdisplay, lvdisplay e df -h.
3 Ridimensionare un array degradato
Se l’array è degradato (membro mancante o guasto), la procedura cambia: puoi ridurre l’array solo se il membro rimanente ha spazio sano fino alla nuova dimensione e non si leggono errori I/O nelle aree che manterrai.
Scenario comune: /dev/sda5 morto, /dev/sdb5 con settori difettosi alla fine. Strategia:
- Riduci l’array per escludere settori danneggiati sul membro sano prima di aggiungere un nuovo disco.
- Aggiungi la partizione equivalente del nuovo disco e lascia terminare la sync.
- Rimuovi il membro danneggiato e rimpiazza l’hardware.
Importante: se l’unico membro sano ha errori nell’area che vuoi mantenere, copia prima i dati o usa ddrescue per recuperare i blocchi leggibili.
Esempio di log di errore che denota settori difettosi:
Nov 22 18:51:06 server1 kernel: sdb: Current: sense key: Aborted Command
Nov 22 18:51:06 server1 kernel: end_request: I/O error, dev sdb, sector 1465142856
In questo caso, riduci il RAID in modo che l’area con errori sia esclusa; poi procedi come nel caso integro.
4 Spiegazione dettagliata dei comandi critici
- mdadm –grow –size=NNN: modifica la dimensione di un dispositivo RAID. La dimensione è in KiB e deve essere congruente con gli allineamenti interni.
- pvresize –setphysicalvolumesize: imposta la dimensione visibile del PV; utile quando il dispositivo sottostante viene ridotto.
- lvreduce: riduce un logical volume; usa con cautela.
- lvextend: estende un logical volume; può essere combinato con resize2fs.
- resize2fs: riduce o estende ext2/3/4; sempre ridurre il filesystem prima del LV.
- e2fsck -f: forza controllo consistenza del filesystem prima e dopo le modifiche.
Quando questa procedura fallisce e soluzioni alternative
Counterexample 1: filesystem XFS
- XFS non supporta il ridimensionamento verso il basso. Se usi XFS dovrai copiare i dati su un altro dispositivo e ricreare il filesystem.
Counterexample 2: settori danneggiati all’interno dell’area che vuoi mantenere
- Se il membro sano ha errori nella porzione che resterà dopo il resize, la riduzione è rischiosa. Usa ddrescue per recuperare i dati e ricostruire il filesystem su nuovo hardware.
Alternative
- Spostare i LV su un altro PV prima di ridurre l’array (pvmove).
- Clonare il disco su un nuovo disco più grande e ricostruire l’array senza ridimensionare.
Mini metodologia operativa (step ripetibili per team)
- Pianificazione: definisci dimensioni target, backup e finestre di manutenzione.
- Preflight: controlli SMART, e2fsck, mdadm –detail, pvdisplay.
- Esecuzione su rescue: esegui i comandi di shrink in sequenza.
- Verifica: controlla integrità, riavvia, monitora log e SMART.
- Post‑operazioni: aggiorna documentazione e backup.
Playbook operativo completo (lista di comandi nell’ordine consigliato)
Nota: sostituisci i nomi dei dispositivi e le dimensioni con quelli reali del tuo sistema.
- Avvia rescue, monta /proc e carica moduli se necessario.
modprobe md
modprobe raid1
/etc/init.d/lvm start
mdadm -A --scan
- Esegui il filesystem check
e2fsck -f /dev/server1/root
- Riduci il filesystem
resize2fs /dev/server1/root 2G
- Riduci il logical volume
lvreduce -L2.5G /dev/server1/root
- Rimuovi LV finali (opzionale)
lvremove /dev/server1/swap_1
- Imposta la dimensione PV
pvresize --setphysicalvolumesize 3G /dev/md1
- Riduci l’array RAID
mdadm --grow /dev/md1 --size=4194304
- Ripristina PV
pvresize /dev/md1
- Ricrea swap
lvcreate --name swap_1 -l 66 server1
mkswap /dev/server1/swap_1
- Estendi LV root e filesystem
lvextend -l +317 /dev/server1/root
resize2fs /dev/server1/root
- Controllo finale e reboot
e2fsck -f /dev/server1/root
reboot
Criteri di accettazione
- mdadm mostra la nuova dimensione per /dev/md1 e tutti i membri sono in stato [UU] per array integro oppure il membro sostitutivo ha completato il sync.
- pvdisplay e vgdisplay riflettono la nuova dimensione del PV e del VG.
- lvdisplay mostra LV con dimensioni coerenti e filesystem montabili senza errori.
- df -h mostra spazio coerente sul mount point.
Rollback e runbook di incidente
Rollback semplice (prima di rimuovere dati o spezzare PV):
- Se non hai ancora eseguito pvresize –setphysicalvolumesize o mdadm –grow, interrompi e ripristina lo stato dal backup.
- Se l’array è stato ridotto ma il PV è ancora più grande nel dispositivo fisico, puoi tentare di ripristinare la dimensione MD a quella precedente usando mdadm –grow –size=
. Questo funziona solo se non hai scritto dati oltre la nuova frontiera.
Runbook per sync che non procede o si interrompe ripetutamente:
- Controlla dmesg e /var/log/kern.log per errori I/O.
- Rimuovi il membro problematico se possibile e aggiungi il disco sano.
- Esegui badblocks o smartctl per valutare l’hardware.
- Usa ddrescue per copiare dati dall’unità con settori difettosi prima di tentare operazioni invasive.
Controlli e test post‑operazione
- mdadm –detail /dev/md1
- cat /proc/mdstat
- pvdisplay; vgdisplay; lvdisplay
- e2fsck -f /dev/server1/root
- df -h e mount
Mappa decisionale per procedure di riduzione e aumento
flowchart TD
A[Inizia: hai backup?] -->|No| Z[Interrompi e fai backup]
A -->|Sì| B[Il LV da modificare è root?]
B -->|Sì| C[Avvia rescue]
B -->|No| D[Puoi smontare LV online?]
D -->|No| C
D -->|Sì| E[Controlla filesystem]
E --> F{Filesystem supporta shrink?}
F -->|No| G[Usa metodo alternativo 'copia/ricrea FS']
F -->|Sì| H[Riduci filesystem -> Riduci LV]
H --> I{PV deve essere ridotto?}
I -->|Sì| J[Rimuovi LV finali se necessario -> pvresize --setphysicalvolumesize]
I -->|No| K[Estendi o riporta PV]
J --> L[mdadm --grow --size]
L --> M[Verifica e ricrea LV rimossi]
M --> N[resize2fs e verifica]
N --> O[Fatto]
Ruoli e checklist rapida per team
Amministratore di sistema (prima dell’intervento):
- Verifica backup.
- Comunica finestra di manutenzione.
- Prepara live/rescue e media di ripristino.
Esecutore (durante intervento):
- Esegui i comandi di preflight.
- Documenta ogni comando eseguito.
- Mantieni comunicazione con il team.
Verificatore (dopo intervento):
- Controlla log kernel e mdadm.
- Conferma integrità filesystem.
- Aggiorna la documentazione di sistema.
Test case e criteri di accettazione
Test case 1: riduzione di /dev/md1 da 5GB a 4GB senza perdita di dati
- Pre: backup completo.
- Esegui i passaggi qui descritti.
- Criterio: filesystem montabile, file intatti, mdstat mostra 4194304 blocks.
Test case 2: array degradato con settori difettosi alla fine
- Pre: isolare settore difettoso con mdadm –grow.
- Criterio: sync completato, nuovo disco aggiunto e rebuild completato.
Glossario rapido (1 riga ciascuno)
- PV: physical volume, dispositivo fisico su cui LVM opera.
- VG: volume group, raccolta di PV logici.
- LV: logical volume, volume logico contenente filesystem.
- mdadm: utilità per creare e gestire array software RAID Linux.
- resize2fs: strumento per ridimensionare ext2/3/4.
Note di compatibilità e migrazione
- XFS non si riduce; pianifica migrazione su ext4 se devi ridurre frequentemente.
- In ambienti con multipath, accertati che i device multiname siano consistentemente indicati in /etc/mdadm/mdadm.conf.
- Alcune distribuzioni forniscono wrapper systemd per mdadm: usa i comandi della tua distro se differiscono.
Rischi e mitigazioni
Rischio: perdita di dati durante lvreduce o pvresize. Mitigazione: esegui backup e verifica filesystem prima di ridurre.
Rischio: sync che non completa a causa di settori bad. Mitigazione: isola i settori con mdadm –grow per escluderli o usa ddrescue.
Checklist finale di verifica
- mdstat indica array stabile.
- pvdisplay/vgdisplay coerenti con le nuove dimensioni.
- lvdisplay mostra LV attesi.
- e2fsck non riporta errori.
- Rimosso ogni riferimento a LV temporanei in /etc/fstab se necessario.
Riepilogo
Ridimensionare partizioni RAID1 software con LVM richiede attenzione: riduci prima il filesystem, poi il LV, poi il PV, e solo dopo riduci l’array RAID. Se il disco è degradato, escludi le aree difettose prima di aggiungere nuovo hardware. Segui la checklist, fai backup e verifica ogni passaggio.
Summary
- Pianifica e fai backup prima di tutto.
- Riduci filesystem prima di ridurre LV.
- Usa pvresize e mdadm –grow con dimensioni corrette e allineamento.
- Verifica con e2fsck, pvdisplay, vgdisplay, lvdisplay e mdadm.
Materiali simili

Trovare messaggi nascosti su Facebook
Installare Ubuntu 8.04 con RAID1 software
RAID1: configurazione, fstab e GRUB

Beeftext: frammenti di testo per Windows
