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