File System - Ubuntu

Espandere un volume LVM su Ubuntu con growpart

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-utils

Prima 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 rom

L’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 3

Attenzione: 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/sda3

Possiamo 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 -h

Il punto di mount / mostrerà la nuova dimensione. Possiamo anche controllare la colonna Avail per verificare che lo spazio libero sia aumentato.