Saltar la navegación

Ampliación y reducción del los VGs

Otra operación que podemos hacer con LVM es aumentar el espacio de los discos virtuales, es decir, los VGs, y también reducirlo si fuese necesario. Los comandos que utilizaremos para ello son vgextend y vgreduce, cuya sintaxis básica es la siguiente:

# vgextend nombre_del_VG volumen_físico...
# vgreduce nombre_del_VG volumen_físico...

Veamos un ejemplo donde ampliamos el VG con un nuevo PV, concretamente con el dispositivo de bloques /dev/sdd que supuestamente lo hemos añadido con ese objetivo.

Comenzamos convirtiendo el dispositivo de bloques en un PV.

# lvmdiskscan 
  /dev/disco_virtual/web [     152,00 MiB] 
  /dev/sda1              [       9,31 GiB] 
  /dev/sda2              [     702,00 MiB] 
  /dev/sdb               [     100,00 MiB] LVM physical volume
  /dev/sdc               [     100,00 MiB] LVM physical volume
  /dev/sdd               [     100,00 MiB] 
  /dev/sde1              [      50,00 MiB] LVM physical volume
  /dev/sde2              [      49,00 MiB] 
  2 disks
  3 partitions
  2 LVM physical volume whole disks
  1 LVM physical volume
# pvcreate /dev/sdd
  Physical volume "/dev/sdd" successfully created
# lvmdiskscan 
  /dev/disco_virtual/web [     152,00 MiB] 
  /dev/sda1              [       9,31 GiB] 
  /dev/sda2              [     702,00 MiB] 
  /dev/sdb               [     100,00 MiB] LVM physical volume
  /dev/sdc               [     100,00 MiB] LVM physical volume
  /dev/sdd               [     100,00 MiB] LVM physical volume
  /dev/sde1              [      50,00 MiB] LVM physical volume
  /dev/sde2              [      49,00 MiB] 
  1 disk
  3 partitions
  3 LVM physical volume whole disks
  1 LVM physical volume
# vgs
  VG            #PV #LV #SN Attr   VSize   VFree 
  disco_virtual   3   1   0 wz--n- 240,00m 88,00m
# vgextend disco_virtual /dev/sdd
  Volume group "disco_virtual" successfully extended
# vgs
  VG            #PV #LV #SN Attr   VSize   VFree  
  disco_virtual   4   1   0 wz--n- 336,00m 184,00m

Reducir un VG extrayéndole un PV es igual de fácil que añadirlo, solo que hay que tener la seguridad de que no contiene información, puede ser necesario mover su información a otro PV antes de actuar. Vamos a eliminar el PV que acabamos de añadir.

# vgdisplay -v disco_virtual 
    DEGRADED MODE. Incomplete RAID LVs will be processed.
    Using volume group(s) on command line
    Finding volume group "disco_virtual"
  --- Volume group ---
  VG Name               disco_virtual
  System ID             
  Format                lvm2
  Metadata Areas        4
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               0
  Max PV                0
  Cur PV                4
  Act PV                4
  VG Size               336,00 MiB
  PE Size               4,00 MiB
  Total PE              84
  Alloc PE / Size       38 / 152,00 MiB
  Free  PE / Size       46 / 184,00 MiB
  VG UUID               RFkcOE-qIrc-3s16-k9ie-iUlB-RRJu-gbuNki
   
  --- Logical volume ---
  LV Path                /dev/disco_virtual/web
  LV Name                web
  VG Name                disco_virtual
  LV UUID                PaPk0H-0dSe-OZfm-hcm3-ymcN-LVbS-DUw1Fw
  LV Write Access        read/write
  LV Creation host, time debian, 2024-01-14 22:27:26 +0100
  LV Status              available
  # open                 0
  LV Size                152,00 MiB
  Current LE             38
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           254:0
   
  --- Physical volumes ---
  PV Name               /dev/sdb     
  PV UUID               mHsm57-0CKQ-fBt7-VecZ-hR01-7e8F-jVUwKz
  PV Status             allocatable
  Total PE / Free PE    24 / 0
   
  PV Name               /dev/sdc     
  PV UUID               Gtg7dE-k4YQ-nSgE-7KvZ-dbU2-Jrev-W1dBqf
  PV Status             allocatable
  Total PE / Free PE    24 / 10
   
  PV Name               /dev/sde1     
  PV UUID               1H04tT-uiti-5obu-qO7r-DxUs-a6dd-DdnVuB
  PV Status             allocatable
  Total PE / Free PE    12 / 12
   
  PV Name               /dev/sdd     
  PV UUID               g3efnL-l0hJ-br48-KLAy-TmE2-jxnu-RnOy0B
  PV Status             allocatable
  Total PE / Free PE    24 / 24
 

Vemos que /dev/sdd está completamente vacío, no se está usando, por lo tanto lo podemos extraer del VG.

# vgs
  VG            #PV #LV #SN Attr   VSize   VFree  
  disco_virtual   4   1   0 wz--n- 336,00m 184,00m
# vgreduce disco_virtual /dev/sdd
  Removed "/dev/sdd" from volume group "disco_virtual"
# vgs
  VG            #PV #LV #SN Attr   VSize   VFree 
  disco_virtual   3   1   0 wz--n- 240,00m 88,00m

Es posible también, con la opción --all, eliminar de golpe todos los PVs que estén vacíos en un VG.

# vgreduce --all disco_virtual