LVM (Logical Volume Manager) è un sistema di gestione dello storage per Linux che aggiunge un livello di astrazione tra il disco fisico e il file system. Grazie a LVM è possibile ridimensionare, spostare e gestire partizioni in modo flessibile, senza i vincoli delle partizioni tradizionali.
La necessità di espandere un volume LVM si presenta tipicamente quando una macchina virtuale o un’istanza cloud esaurisce lo spazio su disco e dall’hypervisor o dal pannello di controllo del cloud provider si aggiunge dello spazio. In questi casi, il disco fisico è già stato allargato, ma il sistema operativo non lo sa ancora.
Nell’articolo utilizzeremo il comando growpart che è presente nel pacchetto cloud-guest-utils della distribuzione Ubuntu. Potrebbe non essere installato di default e, se non lo è, possiamo installarlo con
sudo apt install -y cloud-guest-utilsPrima di procedere ad espandere il volume LVM su Ubuntu diamo per scontato che sia già stato ridimensionato il disco.
Procedura
L’espansione di un volume LVM su Ubuntu si articola in tre operazioni distinte, che agiscono su livelli diversi dello stack di storage: la partizione, il Physical Volume LVM e infine il Logical Volume con il file system.
Per verificare qual è la partizione di root che dobbiamo aumentare e il disco in cui si trova, possiamo eseguire il comando lsblk
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 25G 0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 1.8G 0 part /boot
└─sda3 8:3 0 23.2G 0 part
├─ubuntu--vg-ubuntu--lv 252:0 0 20G 0 lvm /
└─ubuntu--vg-swap_1 252:1 0 3.2G 0 lvm [SWAP]
sr0 11:0 1 1024M 0 romL’output mostrerà la struttura dei dischi, da cui possiamo individuare che il disco è /dev/sda e la partizione LVM è /dev/sda3. Qualora la partizione da allargare non sia quella di / è sufficiente recuperare i dati corrispondenti.
Espansione della Partizione Fisica
Come detto in precedenza, il kernel non si accorge automaticamente che il disco sottostante è cresciuto. Il comando growpart legge la nuova dimensione del disco e aggiorna di conseguenza la tabella delle partizioni
sudo growpart /dev/sda 3Attenzione: Lo spazio tra il nome del disco (/dev/sda) e il numero di partizione (3) è obbligatorio. Senza di esso il comando restituisce un errore.
Aggiornamento del Physical Volume (PV)
Dopo aver espanso la partizione, LVM non è ancora a conoscenza del nuovo spazio disponibile. Il comando pvresize aggiorna i metadati del Physical Volume affinché rispecchino la nuova dimensione della partizione
sudo pvresize /dev/sda3Possiamo verificare l’esito con il comando
sudo pvs
PV VG Fmt Attr PSize PFree
/dev/sda3 ubuntu-vg lvm2 a-- <24.95g 0
che mostrerà la nuova dimensione del Physical Volume nella colonna PSize
Estensione del Logical Volume e del File System
L’ultimo passaggio assegna tutto lo spazio libero del Volume Group al Logical Volume e ridimensiona il file system in un unico comando
sudo lvextend -l +100%FREE --resizefs /dev/mapper/ubuntu--vg-ubuntu--lv- -l +100%FREE: alloca tutto lo spazio libero disponibile nel Volume Group
- –resizefs: ridimensiona automaticamente il file system sottostante (ext4 o XFS). Questo evita di dover eseguire manualmente resize2fs o xfs_growfs come passaggio separato
Suggerimento: se si vuole espandere solo di una quantità specifica invece di usare tutto lo spazio, è possibile sostituire +100%FREE con una dimensione esplicita, ad esempio -L +5G per aggiungere 5 GB
Per confermare che l’espansione del volume LVM su Ubuntu sia andata a buon fine
df -hIl punto di mount / mostrerà la nuova dimensione. Possiamo anche controllare la colonna Avail per verificare che lo spazio libero sia aumentato.