This is an old revision of the document!
Table of Contents
Logical Volume Manager (LVM)
Si installa il pacchetto Debian lvm2:
apt install lvm2
Con parted si crea la partizione e si imposta il flag lvm:
(parted) set 5 lvm on
Concetti
| physical volumes | Dispositivi a blocchi (block devices) che costituiscono la base per lo spazio di memorizzazione LVM. Possono essere semplici partizioni di un disco, volumi RAID, ecc. |
|---|---|
| volume groups | Un volume group è l'unione di uno o più physical volumes, il cui spazio totale viene visto come entità unica di cui disporre. |
| logical volumes | Lo spazio di un volume group viene allocato creando uno o più logical volumes al suo interno. Tale volume è un block device che può essere utilizzato ad esempio per contenere un filesystem. |
physical volumes, volume groups e logical volumes
Crea due physical volumes:
pvcreate /dev/sda5 pvcreate /dev/sdb1
Crea un volume group (per il momento con un solo volume fisico) e lo attiva:
vgcreate data_vg /dev/sda5 vgchange --activate y data_vg
Crea un logical volume che si estende per il 100% dello spazio libero:
lvcreate --extents +100%FREE data_vg --name data
Creazione di alcuni logical volume con dimensione specifica nel volume group vg_server1:
lvcreate --size 32G --name lv_rootfs vg_server1 lvcreate --size 16G --name lv_swap vg_server1 lvcreate --size 100G --name lv_var vg_server1
Verifica configurazione
Verifica i volumi fisici, i gruppi di volumi e i volumi logici esistenti:
pvs PV VG Fmt Attr PSize PFree /dev/sda5 data_vg lvm2 a-- 918,47g 0 /dev/sdb1 lvm2 --- 931,51g 931,51g
vgs VG #PV #LV #SN Attr VSize VFree data_vg 1 0 0 wz--n- 918.47g 918.47g
lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert data data_vg -wi-a----- 918.47g
/dev/data_vg/data -> ../dm-0
Modifica configurazione
Estende il volume group con un volume fisico aggiuntivo:
vgextend data_vg /dev/sdb1
Estende il volume logico data aggiungendo tutto lo spazio libero nel volume group data_vg. Il filesystem viene ridimensionato contestualmente (funziona anche con filesystem montato e in uso):
lvextend --extents +100%FREE --resizefs data_vg/data
Riduzione di un volume logico
Può capitare che di desideri aggiungere o aumentare lo spazio libero in un volume group, ad esempio per poter creare uno snapshot di un volume logico. In questo caso di decide di ridurre la dimensione di un volume logico esistente, effettuando contestualmente il resize del filesystem in esso contenuto:
lvreduce --resizefs --size -2G /dev/vg_server1/lv_home
Resize disco => LVM => filesystem
Vedere Live Resizing LVM on Linux.
Supponiamo che esista una partizione LVM che occupa un intero disco. La partizione potrebbe essere stata creata in precedenza con questi comandi, prima usando parted:
parted (parted) mklabel gpt (parted) mkpart primary 0% 100% (parted) set 1 lvm on
e quindi usando i tool LVM:
~# pvcreate /dev/sdb1 ~# vgcreate home_vg /dev/sdb1 ~# vgchange --activate y home_vg ~# lvcreate --extents +100%FREE home_vg --name homefs ~# pvs ~# vgs ~# lvs
…
Il seguito è da verificare! Appunti per aumentare la dimensione di una partizione LVM dopo aver allargato il disco (virtuale, ovviamente!).
Con parted verificare che il disco sia davvero allargato e che abbia spazio libero contiguo alla partizione da allargare:
parted /dev/sdb (parted) unit b (parted) print free
Allargare la partizione per lo spazio libero risultante:
(parted) resizepart 1 75161927679B
Allargare il physical volume:
pvresize /dev/sdb1
Allargare il logical volume:
lvresize -l +100%FREE /dev/home_vg/homefs
Il percorso del volume logico si vede con lvs, ed è composto da /dev/[VolumeGroup]/[LogicalVolume].
Allaragare il filesystem:
resize2fs /dev/home_vg/homefs
Snapshot
Crea uno snapshot del volume logico lv_rootfs assegnando il nome lv_rootfs_snap e allocando al massimo 2 Gb di spazio:
lvcreate --snapshot --size 2G --name lv_rootfs_snap /dev/vg_server1/lv_rootfs
Viene creato il device virtuale /dev/vg_server1/lv_rootfs_snap.
Per vedere lo stato dello snapshot (soprattutto lo spazio usato dei 2 Gb allocati):
lvdisplay /dev/vg_server1/lv_rootfs_snap ... COW-table size 2.00 GiB ... Allocated to snapshot 16.76% ...
Se lo spazio tende ad esaurirsi è possibile allocarne altro con lvextend, sempre ammesso che esista spazio libero nel volume group.
Nel caso in cui lo spazio dello snapshot si esaurisca, il device snapshot viene invalidato e mostra l'attributo I in lvs:
lvs LV VG Attr LSize Pool Origin Data% lv_rootfs vg_server1 owi-aos--- 32.00g lv_rootfs_snap vg_server1 swi-a-s--- 2.00g lv_rootfs 27.21
lvs LV VG Attr LSize Pool Origin Data% lv_rootfs vg_server1 owi-aos--- 32.00g lv_rootfs_snap vg_server1 swi-I-s--- 2.00g lv_rootfs 100.00
:
- Cosa succede se si esaurisce lo spazio allocato?
- Come si libera lo snapshot?
