Aumentar capacidad de un disco en Logical Volume Management (LVM)
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:
- Physical Volumes (PV) – son los discos (ejemplo: /dev/sda, /dev,sdb, /dev/vdb etc)
- Volume Groups (VG) – los volúmenes físicos (PV) se combinan en grupos de volúmenes (VG). (ejemplo: my_vg = /dev/sda + /dev/sdb.)
- 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