Guida alle tecnologie

Come ridimensionare partizioni RAID1 software con LVM, riduci e espandi

10 min read Linux Aggiornato 13 Oct 2025
Ridimensionare RAID1 software con LVM
Ridimensionare RAID1 software con LVM

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

  1. Avvia un sistema rescue se ridimensioni la root.
  2. Carica i moduli kernel necessari e attiva gli array con mdadm.
  3. Controlla e riduci il file system (resize2fs).
  4. Riduci il logical volume (lvreduce).
  5. Eventualmente rimuovi LV finali (es. swap) per liberare spazio.
  6. Ridimensiona il PV (pvresize –setphysicalvolumesize).
  7. Riduci l’array RAID (mdadm –grow –size).
  8. 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.

  1. 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.

  1. 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.

  1. 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.

  1. 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
  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.

  1. 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.

  1. Espandi il PV alla massima dimensione dell’array (opzionale dopo la modifica dell’array)
pvresize /dev/md1
  1. 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
  1. Estendi il LV della root all’uso desiderato e ridimensiona il filesystem
lvextend -l +317 /dev/server1/root
resize2fs /dev/server1/root
  1. 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)

  1. Pianificazione: definisci dimensioni target, backup e finestre di manutenzione.
  2. Preflight: controlli SMART, e2fsck, mdadm –detail, pvdisplay.
  3. Esecuzione su rescue: esegui i comandi di shrink in sequenza.
  4. Verifica: controlla integrità, riavvia, monitora log e SMART.
  5. 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.

  1. Avvia rescue, monta /proc e carica moduli se necessario.
modprobe md
modprobe raid1
/etc/init.d/lvm start
mdadm -A --scan
  1. Esegui il filesystem check
e2fsck -f /dev/server1/root
  1. Riduci il filesystem
resize2fs /dev/server1/root 2G
  1. Riduci il logical volume
lvreduce -L2.5G /dev/server1/root
  1. Rimuovi LV finali (opzionale)
lvremove /dev/server1/swap_1
  1. Imposta la dimensione PV
pvresize --setphysicalvolumesize 3G /dev/md1
  1. Riduci l’array RAID
mdadm --grow /dev/md1 --size=4194304
  1. Ripristina PV
pvresize /dev/md1
  1. Ricrea swap
lvcreate --name swap_1 -l 66 server1
mkswap /dev/server1/swap_1
  1. Estendi LV root e filesystem
lvextend -l +317 /dev/server1/root
resize2fs /dev/server1/root
  1. 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:

  1. Controlla dmesg e /var/log/kern.log per errori I/O.
  2. Rimuovi il membro problematico se possibile e aggiungi il disco sano.
  3. Esegui badblocks o smartctl per valutare l’hardware.
  4. 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.
Autore
Redazione

Materiali simili

Trovare messaggi nascosti su Facebook
Social Media

Trovare messaggi nascosti su Facebook

Installare Ubuntu 8.04 con RAID1 software
Sistemi

Installare Ubuntu 8.04 con RAID1 software

RAID1: configurazione, fstab e GRUB
Sistemi

RAID1: configurazione, fstab e GRUB

Beeftext: frammenti di testo per Windows
Produttività

Beeftext: frammenti di testo per Windows

Sbloccare iPhone se hai dimenticato il codice
Guide iPhone

Sbloccare iPhone se hai dimenticato il codice

Ridimensionare RAID1 software con LVM
Linux

Ridimensionare RAID1 software con LVM