In uno scenario tipico in cui si è eseguita una installazione di Ubuntu lasciando i settaggi di default, la gestione dello storage è certamente con LVM. LVM è un abstraction framework che si interpone tra il disco fisico (o virtuale) e il file system di Linux (generalmente ext4). Grazie ad LVM è possibile raggruppare partizioni distinte sotto l’egida di uno o più Volume Group
(VG) e poi eventualmente suddividere i Volume Group in Logical Volumes
(LV).
Estendere un disco LVM
Come prima cosa lanciamo il seguente comando per verificare quanto spazio abbiamo a disposizione da aggiungere al nostro disco LVM
df -h
Nel mio scenario lo spazio del mio disco LVM è ormai saturo
Filesystem Size Used Avail Use% Mounted on
tmpfs 593M 1.4M 591M 1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv 9.8G 9.7G 0 100% /
tmpfs 2.9G 0 2.9G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
/dev/sda2 1.7G 129M 1.5G 8% /boot
tmpfs 593M 4.0K 593M 1% /run/user/1000
tmpfs 1.0M 0 1.0M 0% /var/snap/lxd/common/ns
Con il seguente comando controlliamo se c’è spazio disponibile sul nostro Volume Group
vgdisplay
Nel mio scenario ho uno spazio disponibile di 4.25 GB
--- Volume group ---
VG Name ubuntu-vg
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 2
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 1
Act PV 1
VG Size <14.25 GiB
PE Size 4.00 MiB
Total PE 3647
Alloc PE / Size 2560 / 10.00 GiB
Free PE / Size 1087 / <4.25 GiB
VG UUID 286phs-QWZr-f7nx-aG2M-2PkD-KZdv-Ngylgd
Per utilizzare l’intero spazio disponibile nel Volume Group lanciamo il seguente comando
lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
Lanciamo quindi il seguente comando per assegnare tale spazio al nostro Logical Volume
resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv
Includere in LVM l'incremento di spazio di un disco fisico o virtuale
Questo scenario si presenta spesso quando si è espansa la capacità di un disco virtuale in KVM/VMWare/Hyper-V o quando si è lavorato sul RAID Controller incrementandone lo spazio a disposizione.
Come prima cosa lanciamo il seguente comando per controllare se il sistema ci segnala dello spazio libero
cfdisk
![](https://alessandromasciadri.com/ama-uploads/2023/10/extend-lvm-space-01.png)
Se non viene visualizzato spazio disco libero, ma si ha la certezza che questo debba essere presente, allora si può forzare un rescan di /dev/sda
lanciando il seguente comando
echo 1>/sys/class/block/sda/device/rescan
Una volta completato, sarà possibile visualizzare lo spazio disponibile lanciando nuovamente il comando
cfdisk
/dev/sda3
dalla lista, selezionare con il pulsante TAB
la voce Resize e premere ENTER
. ![](https://alessandromasciadri.com/ama-uploads/2023/10/extend-lvm-space-02.png)
Premere di nuovo ENTER
per confermare la nuova dimensione. Nel nostro scenario di esempio è 38.2G
Selezionare con il tasto TAB
la voce Write
dal menu posto in basso e digitare yes
quando richiesto.
![](https://alessandromasciadri.com/ama-uploads/2023/10/extend-lvm-space-03.png)
Ora che la partizione LVM che sta a supporto del volume fisico /dev/sda3 è stata estesa, è il momento di estendere il volume fisico stesso. Per fare ciò, lanciare il seguente comando
pvresize /dev/sda3
Ottenendo un output di questo tipo
Physical volume "/dev/sda3" changed
1 physical volume(s) resized or updated / 0 physical volume(s) not resized
Per verificare la nuova dimensione lanciamo ora il comando
pvdisplay
Ed otterremo un output simile al seguente
--- Physical volume ---
PV Name /dev/sda3
VG Name ubuntu-vg
PV Size <38.25 GiB / not usable 16.50 KiB
Allocatable yes
PE Size 4.00 MiB
Total PE 9791
Free PE 6144
Allocated PE 3647
PV UUID IyvLpU-Hj69-Nxy2-d4V0-Utdf-WIT7-OM3zs6
Lanciamo quindi il comando per verificare il nuovo spazio libero nel Volume Group
vgdisplay
Ed otteniamo un output di questo tipo
--- Logical volume ---
LV Path /dev/ubuntu-vg/ubuntu-lv
LV Name ubuntu-lv
VG Name ubuntu-vg
LV UUID VBTg3z-Am1v-vmVH-KeUo-dU8K-VGY1-As1vy1
LV Write Access read/write
LV Creation host, time ubuntu-server, 2023-10-10 07:54:39 +0000
LV Status available
# open 1
LV Size <14.25 GiB
Current LE 3647
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0
Estendiamo quindi il Logical Volume occupando tutto lo spazio nuovo disponibile lanciando il seguente comando
lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
A questo punto il block volume alla base del nostro root file system è stato esteso, ma il file system in se non è ancora stato ridimensionato per coincidere con quel volume. Possiamo verificare ciò lanciando il comando
df -h
Noteremo che lo spazio disponibile a livello di file system è ancora immutato
Filesystem Size Used Avail Use% Mounted on
tmpfs 593M 1.4M 591M 1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv 14G 7.0G 6.3G 53% /
tmpfs 2.9G 0 2.9G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
/dev/sda2 1.7G 129M 1.5G 8% /boot
tmpfs 593M 4.0K 593M 1% /run/user/1000
tmpfs 1.0M 0 1.0M 0% /var/snap/lxd/common/ns
Lanciamo quindi il seguente comando per ridimensionarlo
resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv
A questo punto possiamo verificare la nuova dimensione del file system lanciando un’altra volta il comando
df -h
Il nuovo file system sarà ora di maggior dimensione
Filesystem Size Used Avail Use% Mounted on
tmpfs 593M 1.4M 591M 1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv 38G 7.0G 29G 20% /
tmpfs 2.9G 0 2.9G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
/dev/sda2 1.7G 129M 1.5G 8% /boot
tmpfs 593M 4.0K 593M 1% /run/user/1000
tmpfs 1.0M 0 1.0M 0% /var/snap/lxd/common/ns