Volumi Logici

I volumi logici sono croce e delizia di Linux. Permetto di aumentare e diminuire le dimensioni delle partizioni senza riavviare il computer, ma hanno una struttura complessa.

Per cominciare il comando lvs spiega i volumi logici:

 # lvs
  LV      VG Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv_root vg -wi-ao----  38.55g
  lv_swap vg -wi-ao---- 952.00m

dall'esempio abbiamo 2 volumi, uno di 38.55 Giga (g) e uno di 952 Mega (m). Vediamo ora come sono realmente costituiti col comando lsblk:

 # lsblk
 NAME           MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
 sda              8:0    0    40G  0 disk
 ├─sda1           8:1    0   476M  0 part /boot
 ├─sda2           8:2    0     1K  0 part
 ├─sda5           8:5    0  19.5G  0 part
 │ ├─vg-lv_swap 253:0    0   952M  0 lvm  [SWAP]
 │ └─vg-lv_root 253:1    0  38.6G  0 lvm  /
 └─sda6           8:6    0    20G  0 part
   └─vg-lv_root 253:1    0  38.6G  0 lvm  /

Come vedete il disco sda e' suddiviso in 5 partizioni:

  • sda1
  • sda2
  • sda5 che contiene:
    • vg-lv_swap ( volume logico dentro sda5, montato some swap)
    • vg-lv_root (volume logico dentro sda5, montato su /)
  • sda6 che contiene:
  • vg-lv_root (volume logico dentro sda6, montano su /)

due partizione hanno lo stesso nome perche' sono unite e appaiono come un'unica partizione per il sistema operativo. Questo e' il vantaggio dei dischi logici: si possono unire o rimuove e il sistema operativo vede solo una partizione che si allarga o si restringe. Da notare che per i volumi logici sda5 e sda6 sono volumi fisici (PV).

Sfortunatamente le cose non sono cosi' semplici, un volume logico non puo' esistere se non dentro un gruppo di volumi (VG). Un gruppo di volumi puo' contenere molti volumi logici, partizioni, ecc. Questo rende tutto molto piu' complesso, ad esempio:

  # vgs
  VG #PV #LV #SN Attr   VSize  VFree
  vg   2   2   0 wz--n- 39.48g    0

Nonostante abbiamo 2 partizioni fittizie (vg-lv_swap e vg-lv_root) abbiamo un solo gruppo chiamato vg.

Se avessimo spazio libero su hard disk, potremmo creare una nuova partizione sda3.

I volumi fisici vanno creati col comando pvcreate, ad esempio se abbiamo una partizione vuota su sda3:

 # pvcreate /dev/sda3
 Physical volume "/dev/sda3" successfully created.

Poi bisogna estendere il gruppo di volumi col comando vgextend:

 # vgextend vg /dev/sda3
 Volume group "vg" successfully extended

Finalmente possiamo estendere il volume che ci interessa con lvextend:

 # lvextend -l +100%FREE /dev/vg/lv_root
  Size of logical volume vg/lv_root changed from 38.55 GiB (9869 extents) to 78.59 GiB (20120 extents).
  Logical volume vg/lv_root successfully resized.

Ora dobbiamo solo estendere il filesystem nel volume logico, resize2fs in automatico espande il filesystem nella partizione:

 # resize2fs /dev/vg/lv_root
 resize2fs 1.44.1 (24-Mar-2018)
 Filesystem at /dev/vg/lv_root is mounted on /; on-line resizing required
 old_desc_blocks = 3, new_desc_blocks = 5
 The filesystem on /dev/vg/lv_root is now 20602880 (4k) blocks long.