User Tools

Site Tools


doc:appunti:linux:sa:linux_lvm

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
doc:appunti:linux:sa:linux_lvm [2022/02/12 16:52] – [Modifica configurazione] niccolodoc:appunti:linux:sa:linux_lvm [2025/11/21 18:31] (current) – [Snapshot] niccolo
Line 12: Line 12:
 (parted) set 5 lvm on (parted) set 5 lvm on
 </code> </code>
 +
 +===== 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 ===== ===== physical volumes, volume groups e logical volumes =====
Line 34: Line 41:
 lvcreate --extents +100%FREE data_vg --name data lvcreate --extents +100%FREE data_vg --name data
 </code> </code>
 +
 +Creazione di alcuni **logical volume** con dimensione specifica nel volume group **vg_server1**:
 +
 +<code>
 +lvcreate --size 32G   --name lv_rootfs vg_server1
 +lvcreate --size 16G   --name lv_swap   vg_server1
 +lvcreate --size 100G  --name lv_var    vg_server1
 +</code>
 +
  
 ===== Verifica configurazione ===== ===== Verifica configurazione =====
Line 76: Line 92:
 </code> </code>
  
 +===== 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:
 +
 +<code>
 +lvreduce --resizefs --size -2G /dev/vg_server1/lv_home
 +</code>
 +
 +
 +===== Resize disco => LVM => filesystem =====
 +
 +Vedere **[[http://sirlagz.net/2016/01/20/live-resizing-lvm-on-linux/|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**:
 +
 +<code>
 +parted
 +(parted) mklabel gpt
 +(parted) mkpart primary 0% 100%
 +(parted) set 1 lvm on                                                     
 +</code>
 +
 +e quindi usando i **tool LVM**:
 +
 +<code>
 +~# pvcreate /dev/sdb1
 +~# vgcreate home_vg /dev/sdb1
 +~# vgchange --activate y home_vg
 +~# lvcreate --extents +100%FREE home_vg --name homefs
 +~# pvs
 +~# vgs
 +~# lvs
 +</code>
 +
 +...
 +
 +FIXME 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:
 +
 +<code>
 +parted /dev/sdb
 +(parted) unit b
 +(parted) print free
 +</code>
 +
 +Allargare la partizione per lo spazio libero risultante:
 +
 +<code>
 +(parted) resizepart 1 75161927679B
 +</code>
 +
 +Allargare il **physical volume**:
 +
 +<code>
 +pvresize /dev/sdb1
 +</code>
 +
 +Allargare il **logical volume**:
 +
 +<code>
 +lvresize -l +100%FREE /dev/home_vg/homefs
 +</code>
 +
 +Il percorso del volume logico si vede con **lvs**, ed è composto da **%%/dev/[VolumeGroup]/[LogicalVolume]%%**.
 +
 +Allaragare il filesystem:
 +
 +<code>
 +resize2fs /dev/home_vg/homefs
 +</code>
 +
 +===== Snapshot =====
 +
 +Crea uno snapshot del volume logico **lv_rootfs** assegnando il nome **lv_rootfs_snap** e allocando al massimo 2 Gb di spazio:
 +
 +<code>
 +lvcreate --snapshot --size 2G --name lv_rootfs_snap /dev/vg_server1/lv_rootfs
 +</code>
 +
 +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):
 +
 +<code>
 +lvdisplay /dev/vg_server1/lv_rootfs_snap
 +...
 +  COW-table size         2.00 GiB
 +...
 +  Allocated to snapshot  16.76%
 +...
 +</code>
 +
 +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**:
 +
 +<code>
 +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
 +</code>
 +
 +<code>
 +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
 +</code>
 +
 +Infine per liberare lo spazio si rimuove lo snapshot con **lvremove**:
 +
 +<code>
 +lvremove /dev/vg_server1/lv_rootfs_snap
 +</code>
  
 ===== Web References ===== ===== Web References =====
  
   * **[[https://wiki.archlinux.org/title/LVM|ArchWiki LVM]]**   * **[[https://wiki.archlinux.org/title/LVM|ArchWiki LVM]]**
 +
  
doc/appunti/linux/sa/linux_lvm.1644681132.txt.gz · Last modified: by niccolo