Come Utilizzare LVM per Creare Volumi Logici

LVM (Logical Volume Manager) è un metodo di allocazione dello spazio del disco fisso in volumi logici che possono essere facilmente ridimensionati al contrario delle partizioni.

Per creare un volume logico, dobbiamo necessariamente assegnare prima un volume fisico (Physical Volume = pv) a uno o più device (hard disk) realmente esistenti, creare poi un Volume Group (vg) e infine dividere il volume group in logical volume (lv).

I comandi che principalmente ci interesseranno sono tre
– pvcreate
– vgcreate
– lvcreate

Per iniziare, tramite fdisk dovremo creare la partizione, definendola però come Linux LVM (codice 8E). Supponendo che il disco interessato venga visto come /dev/sdb lanciamo
#fdisk /dev/sdb

Apparirà la CLI di fdisk

Una volta definita e creata la partizione, andremo a creare il volume fisico
# pvcreate /dev/sdb1

con il relativo volume group (denominato vgpool)
# vgcreate vgpool /dev/sdb1

Infine creeremo il volume logico con il comando
# lvcreate -L 3G -n lv01 vgpool

In questa maniera il volume logico avrà una dimensione di 3 GB, si chiamerà “lv01″ e farà parte del volume group “vgpool”.

Possiamo ora procedere alla formattazione e al mount del volume appena creato
# mkfs.ext4 /dev/vgpool/lv01
# mount /dev/vgpool/lv01 /mnt

La comodità di utilizzare LVM è quella di poter ridimensionare un filesystem senza dover eliminarne tutti i dati. E’ possibile anche aggiungere ulteriori device fisici a un volume group. L’unica accortezza è che tutte le operazioni di estensione/riduzione andranno fatti dopo un umount del filesystem stesso.

Poniamo caso che al filesystem creato poco fa abbiamo aggiunto un nuovo hard disk e vogliamo espanderlo.
Aggiungiamo la nuova partizione (precedentemente preparata con fdisk) tramite il comando
# vgextend vgpool /dev/sdc1

Ora possiamo espandere il volume (ad esempio aggiungendo 8 GB) con il comando
# lvextend -L8G /dev/vgpool/lv01

In realtà, con il comando precedente abbiamo trasformato il volume dai precedenti 3 GB agli attuali 8 GB. Per aggiungerne altri 3 (e quindi arrivare a 11 GB totali), digitiamo
# lvextend -L+3G /dev/vgpool/lv01

Il logical volume è ora di 11 GB ma il sistema operativo continuerà a vedere la partizione come se fosse di 3 GB. Dobbiamo in qualche modo “comunicargli” il cambiamento tramite il comando:
# resize2fs /dev/vgpool/lv01

Possiamo ora montare nuovamente la partizione e verificare le sue attuali dimensioni con il comando df.