Extender un LVM on Linux

Re-ajustar el tamaño del Disco

Primero lo primero, es necesario expandir el disco en el hipervisor.

Luego de ajustar el tamaño del disco, puede re-escanear el disco para que Linux reconozca el nuevo espacio. El comando siguiente re-escanea todos los discos.

# Assuming VirtIO SCSI
$ for x in /sys/class/scsi_disk/*; do echo '1' > $x/device/rescan; done

Si el disco sigue teniendo el mismo tamaño, necesitarás reiniciar el servidor.

Re-ajustar la Partición

Dependiendo del layout de particiones, tendrás que re-ajustar 1 o 2 particiones, asumiendo que las particiones están al final del disco.

  • En el layout 1, solamente hay una partición que es la del LVM.
  • En el layout 2 habrá una partición extendida que contiene la partición de LVM.

El proceso de re-ajuste es el mismo, excepto que en el layout 2 tendrás que re-ajustar 2 particiones, con la extendida siendo la primera para poder contener la partición de LVM.

Utilice parted para re-ajustar las particiones. Primero abrimos parted sobre /dev/sda

$ parted /dev/sda

Normalmente se utiliza el byte como unidad y luego el comando print free para ver donde necesita rellenar el espacio libre.

(parted) unit b
(parted) print free
Number Start End Size Type File system Flags
32256B 1048575B 1016320B Free Space
1 1048576B 255852543B 254803968B primary ext2 boot
255852544B 256900095B 1047552B Free Space
2 256900096B 53687091200B 53430191104B primary lvm
53687091201B 75161927679B 5369757696B Free Space

Para agrandarla, simplemente utilizamos resizepart.

(parted) resizepart 2 75161927679B

En el caso de una partición extendida que contenga la partición LVM, el comando de arriba solo necesita correrse contra los 2 números de partición, estando primera la partición extendida y luego la partición del LVM. El byte al final de la partición del LVM tiene que ser uno menos que la de la partición extendida.

En este ejemplo, la partición 2 es la partición extendida, y la partición 5 es la partición del LVM.

(parted) resizepart 2 75161927679B
(parted) resizepart 5 75161927678B

Re-ajustar el Volúmen Físico

Luego de agrandar la partición es necesario re-ajustar el volumen físico. Es tan simple como hacer lo siguiente:

$ pvresize /dev/sda2

Reemplace /dev/sda2 con la partición que acaba de extender.

Re-ajustar el Volúmen Lógico

Lo siguiente es re-ajustar el volúmen lógico con lvresize [lv path].

Puede elegir agrandarlo para rellenar todo el espacio vacío, o seleccionar un tamaño específico. En este ejemplo utilizaré todo el espacio restante.

Reemplace /dev/VolGroup/lv_root con el path correspondiente al volúmen lógico que quiera re-ajustar.

$ lvresize -l +100%FREE /dev/VolGroup/lv_root

Debería ver la siguiente salida una vez que el volúmen fue re-ajustado.

Size of logical volume VolGroup/lv_root changed from 48.54 GiB (12426 extents) to 68.54 GiB (17546 extents).
Logical volume lv_root successfully resized

Re-ajustar el Filesystem

Lo último es re-ajustar el filesystem. Esto se puede hacer en caliente en ext4 con la herramienta resize2fs.

Reemplace /dev/mapper/VolGroup-lv_root con el path al filesystem que quiera ajustar.

Si no está seguro del filesystem, lvscan printea el path al filesystem.

$ resize2fs /dev/mapper/VolGroup-lv_root

Una vez el ajuste esté completo debería poder correr un df y ver nuevo espacio en disco. En mi caso el filesystem creció de 50GB a casi 70GB.

$ df -h

Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
68G 44G 20G 69% /