Come espandere un volume LVM
Hai esaurito lo spazio sul tuo server Ubuntu e non sai come espandere la partizione? In questa guida ti spiego cos'è LVM e ti accompagno passo-passo nell'espansione del tuo disco, tutto da riga di comando.
È da mesi ormai che avete installato quella VM Ubuntu Server, ma alla fine il momento fatidico è arrivato: avete terminato lo spazio.
Se state usando un virtualizzatore come Hyper-V o ESXi sapete che vi basta aumentare lo spazio assegnato al disco virtuale ma... non funziona?!
Sapete che per fare la stessa cosa su Windows, vi basta aprire Gestione Disco ed espandere la partizione interessata ma... come potete fare senza una GUI che vi aiuti?
Prima di tutto è necessario capire cosa è e come funziona LVM (Logical Volume Manager).
Iniziamo!

Che cosa è LVM?
LVM (Logical Volume Manager) è uno strumento di virtualizzazione dello storage, e -in questo caso- viene di default attivato durante l'installazione di Ubuntu Server.
LVM introduce un livello di astrazione tra i dischi fisici ed il sistema operativo. Invece di farci usare direttamente le partizioni dei dischi, LVM le organizza in tre livelli logici:
- Physical Volume (lo trovate indicato con la dicitura PV)

Si tratta del livello più basso. Un PV è una partizione fisica del disco, o un intero disco "marchiato" per essere utilizzato da LVM.
- Volume Group (è indicato con la dicitura VG)

Il Volume Group è un "contenitore" che raggruppa uno o più PV.
Creando un VG si unisce lo spazio di diverse partizioni (anche su dischi diversi!) in un unico pool di archiviazione.
La dimensione di un VG è la somma delle dimensioni dei PV che lo compongono.
- Logical Volume (indicato con la sigla LV)

Il Logical Volume infine, è il livello di astrazione più alto, che viene visto anche dal Sistema Operativo.
Un LV viene "ritagliato" dallo spazio disponibile di un VG.
È infine sopra al LV che il sistema operativo crea le proprie partizioni, come si può vedere nel grafico che finalmente risulta completo.

Ora che abbiamo capito cosa stiamo per fare, facciamolo!

Come espandere un volume LVM
(procedura testata su Ubuntu Server 24.04)
L'obiettivo è quello di ampliare una partizione di sistema con spazio aggiuntivo. Per farlo, seguiremo i seguenti passaggi:
- Aggiungere una nuova partizione (vuota) al disco fisico
- Creare un PV sopra alla nuova partizione
- Estendere il VG aggiungendo il PV appena creato
- Infine estendere l'LV prendendo lo spazio aggiuntivo dal VG
Se state lavorando con un virtualizzatore come Hyper-V o ESXi, modificate le dimensioni del disco virtuale in modo da aggiungere lo spazio necessario, poi procedete.
1 - Creare la nuova partizione fisica
Per creare la nuova partizione fisica, dobbiamo usare il comando cfdisk
- Eseguite
cfdisksulla riga di comando - Navigate usando le frecce fino alla riga che indica Free space
- Selezionate New e premete INVIO
- cfdisk vi chiederà la dimensione della nuova partizione. Lasciate la dimensione di default per utilizzare tutto lo spazio disponibile
- Selezionate Write e digitate yes per confermare la scrittura delle modifiche
- Selezionate Quit per uscire
- Segnatevi il nome della nuova partizione (ad esempio, /dev/sda4)
2 - Inizializzare la partizione come Physical Volume
Adesso dobbiamo dire ad LVM che può usare questa nuova partizione, inizializzandola come PV.
- Eseguite il comando
pvcreateindicando il nome della partizione creata al punto 1
pvcreate /dev/sda4
3 - Estendere il Volume Group
Ora aggiungiamo il nuovo PV al nostro pool di archiviazione (il VG).
- Ricavate il nome del vostro VG usando il comando
vgdisplay - Eseguite il comando
vgextendper estendere il VG con il PV appena creato
(se differente, sostituite ubuntu-vg col nome del vostro VG)
vgextend ubuntu-vg /dev/sda4
4 - Estendere il Logical Volume
Adesso che il nostro VG ha più spazio, possiamo usarlo per ingrandire l'LV.
- Ricavate il nome del vostro LV tramite il comando
lvdisplay - Usate il comando
lvextendper estendere l'LV
(se differente, sostituite /dev/ubuntu-vg/ubuntu-lv col nome del vostro LV)
lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
Il parametro l- +100%FREE significa, in poche parole:
usa il 100% dello spazio libero del Volume Group
Un altro utilizzo di questo parametro potrebbe essere -l +50G per aggiungere 50GB
Con questo, per quanto riguarda LVM, abbiamo fatto tutto!
Adesso dobbiamo solo espandere la partizione del Sistema Operativo.
5 - Ridimensionare il filesystem
Espandiamo il filesystem facendogli usare tutto lo spazio aggiuntivo sull'LV.
- Usate il comando
df -hper ricavare il percorso dell'LV lato sistema operativo - Infine, tramite il comando
resize2fsespandete la partizione
(se differente, sostituite /dev/mapper/ubuntu--vg-ubuntu--lv)
resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv
Per assicurarvi di aver fatto tutto bene, usate nuovamente il comando df -h per controllare che l'output rispecchi il nuovo spazio disponibile.

Conclusioni
Ce l'avete fatta!
Non solo avete aumentato con successo lo spazio a disposizione sulla vostra macchina, ma nel farlo avete anche imparato come funziona LVM.
