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.