Aumentar capacidad de un disco en Logical Volume Management (LVM)

De Apuntes
Saltar a: navegación, buscar

Cuando tenemos un servidor con un volumen lógico es posible ampliar su tamaño de forma sencilla y evitar problemas de espacio. Todo depende si tenemos ya espacio en el disco sin ser utilizado por el volumen o si necesitamos agregar otro disco para asignarlo al grupo del volumen lógico. Se debe estar con permisos de super usuario para ejecutar la mayoría de comandos. Los datos mostrados son de ejemplo y valores propios como nombre de discos, nombres de grupos, particiones, etc deben de reemplazarse según corresponda.

Es importante tener en cuenta que desde que se instaló y configuró el servidor debió definirse con un volumen lógico para poder realizar este procedimiento

LVM Storage Management se divide en 3 partes:

  1. Physical Volumes (PV) – son los discos (ejemplo: /dev/sda, /dev,sdb, /dev/vdb etc)
  2. Volume Groups (VG) – los volúmenes físicos (PV) se combinan en grupos de volúmenes (VG). (ejemplo: my_vg = /dev/sda + /dev/sdb.)
  3. Logical Volumes (LV) – un grupo de volúmenes (VG) se divide en volúmenes lógicos (LV) (ejemplo: my_vg divided into my_vg/data, my_vg/backups, my_vg/home, my_vg/mysqldb)

Primero podemos verificar el estado del disco con el comando:

  • df -h
Ejemplo donde tenemos un volumen de 160 GB y vamos a ampliar en 100 GB:

Filesystem                         Size  Used Avail Use% Mounted on
udev                               1.9G     0  1.9G   0% /dev
tmpfs                              395M  1.1M  394M   1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv  157G   64G   87G  43% /
tmpfs                              2.0G     0  2.0G   0% /dev/shm
tmpfs                              5.0M     0  5.0M   0% /run/lock
tmpfs                              2.0G     0  2.0G   0% /sys/fs/cgroup
/dev/loop0                          94M   94M     0 100% /snap/core/8935
/dev/loop1                          94M   94M     0 100% /snap/core/9066
/dev/sda2                          976M  145M  765M  16% /boot
tmpfs                              395M     0  395M   0% /run/user/1000

Luego se puede verificar si se dispone de más espacio disponible con el comando:

  • fdisk -l
Ejemplo:

Disk /dev/loop0: 93.8 MiB, 98336768 bytes, 192064 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/loop1: 93.9 MiB, 98484224 bytes, 192352 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/sda: 260 GiB, 279172874240 bytes, 545259520 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: C929DD79-38DB-499B-A9CA-6DDCDF5B86F9

Device       Start       End   Sectors  Size Type
/dev/sda1     2048      4095      2048    1M BIOS boot
/dev/sda2     4096   2101247   2097152    1G Linux filesystem
/dev/sda3  2101248 335542271 333441024  159G Linux filesystem

Disk /dev/mapper/ubuntu--vg-ubuntu--lv: 159 GiB, 170720755712 bytes, 333438976 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Si el Physical Volume tiene espacio disponible sin utilizar

Podemos ampliar el volumen físico con el comando:

  • parted
Ejemplo ampliando /dev/sda3 al máximo disponible:

GNU Parted 3.2
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) resizepart                                                       
Partition number? 3                                                       
End?  [172GB]?                                                            
(parted) quit                                                             
Information: You may need to update /etc/fstab.

Y para finalizar se completa con este comando para cambiar el tamaño del disco:

  • pvresize /dev/sdx
Ejemplo: pvresize /dev/sda3

Si se desea ampliar el volumen al total de espacio que tenga disponible el grupo puede digitarse el siguiente comando

  • lvextend -l +100%FREE /dev/VGNAME/LVNAME
Ejemplo: lvextend -l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv

Si se desea aumentar un tamaño específico puede utilizarse el siguiente comando (ejemplo 20GB):

  • lvextend --size SIZE /dev/VGNAME/LVNAME
Ejemplo: lvextend --size 20G /dev/mapper/ubuntu--vg-ubuntu--lv

En cualquiera de los dos casos debe digitarse el siguiente comando para completar el proceso:

  • resize2fs /dev/VGNAME/LVNAME
Ejemplo: resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv

Si el Physical Volume no tiene espacio disponible sin utilizar

Crearemos una partición adicional del tamaño que sea necesario para posteriormente agregarla al grupo del volumen lógico:

  • fdisk /dev/sdx
Ejemplo creando una nueva partición sda4 de todo el espacio disponible en el disco:

fdisk /dev/sda

Command (m for help): n
Partition number (4-128, default 4): 4
First sector (335542272-545259486, default 335542272): 
Last sector, +sectors or +size{K,M,G,T,P} (335542272-545259486, default 545259486): 

Created a new partition 4 of type 'Linux filesystem' and of size 100 GiB.

Command (m for help): w
The partition table has been altered.
Syncing disks.

  • fdisk -l
Ejemplo:
 
Device         Start       End   Sectors  Size Type
/dev/sda1       2048      4095      2048    1M BIOS boot
/dev/sda2       4096   2101247   2097152    1G Linux filesystem
/dev/sda3    2101248 335542271 333441024  159G Linux filesystem
/dev/sda4  335542272 545259486 209717215  100G Linux filesystem

Una vez creada la partición se debe crear el volumen físico:

  • pvcreate /dev/sdax
Ejemplo: 

pvcreate /dev/sda4
 Physical volume "/dev/sda4" successfully created.

Se pueden verificar los volumenes físicos con el comando:

  • pvdisplay
Ejemplo: acá podemos ver el primer volumen que ya teníamos (sda3) y el nuevo volumen creado (sda4)
  
--- Physical volume ---
 PV Name               /dev/sda3
 VG Name               ubuntu-vg
 PV Size               <159.00 GiB / not usable 1.00 MiB
 Allocatable           yes (but full)
 PE Size               4.00 MiB
 Total PE              40703
 Free PE               0
 Allocated PE          40703
 PV UUID               3yTSsu-N19t-fL6J-2XBi-xqDo-i8gr-2gdeJv
  
 "/dev/sda4" is a new physical volume of "100.00 GiB"
 --- NEW Physical volume ---
 PV Name               /dev/sda4
 VG Name               
 PV Size               100.00 GiB
 Allocatable           NO
 PE Size               0   
 Total PE              0
 Free PE               0
 Allocated PE          0
 PV UUID               xe2HKe-5PYR-Ue1c-FKsz-sjcC-NasJ-c1h39p

Quedaría por último incluir en el grupo del volumen (VG) el nuevo volumen físico:

  • vgextend ubuntu-vg /dev/sdax
Ejemplo:

vgextend ubuntu-vg /dev/sda4 
 Volume group "ubuntu-vg" successfully extended

Podemos ver en estado de la extensión del grupo por medio del comando:

  • pvdisplay
 --- Physical volume ---
 PV Name               /dev/sda3
 VG Name               ubuntu-vg
 PV Size               <159.00 GiB / not usable 1.00 MiB
 Allocatable           yes (but full)
 PE Size               4.00 MiB
 Total PE              40703
 Free PE               0
 Allocated PE          40703
 PV UUID               3yTSsu-N19t-fL6J-2XBi-xqDo-i8gr-2gdeJv
  
 --- Physical volume ---
 PV Name               /dev/sda4
 VG Name               ubuntu-vg
 PV Size               100.00 GiB / not usable 4.98 MiB
 Allocatable           yes 
 PE Size               4.00 MiB
 Total PE              25599
 Free PE               25599
 Allocated PE          0
 PV UUID               usWQjH-AA2q-vi8i-gK0j-IYVh-E20s-jFU7LS

Igual que en el caso anterior, si se desea ampliar el volumen al total de espacio que tenga disponible el grupo puede digitarse el siguiente comando

  • lvextend -l +100%FREE /dev/VGNAME/LVNAME
Ejemplo: lvextend -l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv

Si se desea aumentar un tamaño específico puede utilizarse el siguiente comando (ejemplo 20GB):

  • lvextend --size SIZE /dev/VGNAME/LVNAME
Ejemplo: lvextend --size 20G /dev/mapper/ubuntu--vg-ubuntu--lv

En cualquiera de los dos casos debe digitarse el siguiente comando para completar el proceso:

  • resize2fs /dev/VGNAME/LVNAME
Ejemplo: resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv

Si verificamos nuevamente con el comando df podemos observar los cambios en el disco:

  • df -h
Filesystem                         Size  Used Avail Use% Mounted on
udev                               1.9G     0  1.9G   0% /dev
tmpfs                              395M  1.1M  394M   1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv  255G   64G  181G  27% /
tmpfs                              2.0G     0  2.0G   0% /dev/shm
tmpfs                              5.0M     0  5.0M   0% /run/lock
tmpfs                              2.0G     0  2.0G   0% /sys/fs/cgroup
/dev/loop0                          94M   94M     0 100% /snap/core/8935
/dev/loop1                          94M   94M     0 100% /snap/core/9066
/dev/sda2                          976M  145M  765M  16% /boot
tmpfs                              395M     0  395M   0% /run/user/1000

Resumen de comandos

  • pvs: muestra volúmenes físicos (PV).
  • pvdisplay: muestra información detallada de los volúmenes físicos.
  • vgs: muestra los grupos de volúmenes
  • vgdisplay: muestra información detallada de los grupos de volúmenes
  • lvs: muestra los volúmenes lógicos
  • lvdisplay: muestra información detallada de los volúmenes lógicos
  • lvmdiskscan: busca todos los dispositivos visibles para LVM
  • pvcreate: crea un volumen físico
  • vgextend: incluye un volumen físico a un grupo