La virtualización (o consolidación) de servidores trae consigo innumerables ventajas: mayor eficiencia energética, reducción de costos, menor cantidad de hardware, mejor aprovechamiento de los recursos, mayor flexibilidad y simplicidad en la administración, mejor seguridad y recuperación, entre otras. Pero también se introducen nuevos escenarios y problemáticas que antes no se planteaban.

Un ejemplo de situación especial que se debe afrontar a menudo es el caso de la administración de discos. La mayoría (por no decir todos) los sistemas de virtualización permiten redimensionar (aumentar o reducir la capacidad) de los discos virtuales. Esto anteriormente sucedía en raras ocasiones, porque obviamente un disco físico no se puede redimensionar (a lo sumo se puede reemplazar por uno de diferente capacidad).

La situación que debí abordar recientemente (y que nunca antes se me había presentado) surgió por la necesidad de aumentar la capacidad de un disco virtual. Un servidor consolidado (convertido a máquina virtual desde una instalación en hardware físico) se quedó sin espacio en uno de sus discos y me solicitaron aumentar su capacidad. En general, cuando se trata de una tabla de particiones MBR tradicional, es una tarea relativamente sencilla utilizando una herramienta como parted o GParted. Pero en este caso el disco no tenía tabla de particiones, sino que estaba asigado completamente como único volumen físico de un grupo LVM sin physical extents (PE) disponibles (PFree). Por lo tanto (luego de aumentar la capacidad del disco virtual desde el hipervisor) necesitaba redimensionar el grupo LVM antes de poder redimensionar cualquier volumen lógico, para finalmente redimensionar el sistema de archivos que había quedado sin espacio.



Por supuesto se trataba de una máquina virtual corriendo GNU/Linux, más precisamente Debian 6. Y, como mencioné anteriormente, el disco (/dev/sdb) estaba asignado completamente como único volumen físico de un grupo LVM (vg-aplicaciones) que poseía un único volumen lógico (vol-aplicaciones) con un sistema de archivos ext4.

En este artículo voy a explicar paso a paso cómo (desde la máquina virtual GNU/Linux) actualizar el tamaño del volumen físico (luego de haber aumentado el tamaño de disco virtual subyacente), aumentar la capacidad del grupo LVM, redimensionar el volumen lógico LVM, y finalmente asignar mayor capacidad al sistema de archivos ext4. Ya que el método para redimensionar un disco virtual cambia en cada entorno de virtualización (en máquinas virtuales KVM, Xen o ESX se puede utilizar el comando virsh vol-resize), asumo que ya se ha redimensionado el disco virtual y comienzo directamente con las tareas necesarias en el sistema operativo de la máquina virtual.

Para continuar con la lectura se requieren conocimientos básicos de LVM (Logical Volume Manager) en GNU/Linux. Si no se poseen es posible acceder a la documentación que se encuentra disponible en el sitio The Linux Documentation Project: LVM HOWTO.

Manos a la obra

En el escenario propuesto se ha redimensionado el disco virtual (de 5 GB a 50 GB) y se ha reiniciado la máquina virtual, pero al listar los grupos LVM se observa que el tamaño del grupo vg-aplicaciones no ha cambiado (VSize sigue siendo igual a 5 GB):

Al listar los volúmenes físicos LVM también se observa que el tamaño del volumen /dev/sdb no coincide con el tamaño actual del disco (50 GB):

Por lo tanto, es necesario modificar el tamaño del volumen físico /dev/sdb para que corresponda con el tamaño del disco /dev/sdb. Para ello se debe utilizar la herramienta pvresize. Esta herramienta permite modificar el tamaño en uso de un volumen físico LVM. Si no se especifica un tamaño, pvresize expande el volumen físico automáticamente hasta el tamaño disponible en el disco/partición:

En LVM es posible asignar a un volumen físico un disco completo o una partición. Por esta razón, la herramienta pvresize puede ser útil también en aquellos casos en los que se redimensiona una partición (por ejemplo con fdisk) asignada a un volumen físico LVM.

Luego de redimensionar el volumen físico (detectar el cambio de tamaño del disco /dev/sdb), al listar volúmenes y grupos LVM se observan los tamaños actualizados:

Ahora que el grupo vg-aplicaciones posee espacio disponible (PFree es igual a 45 GB), es posible aumentar el tamaño del volumen lógico vol-aplicaciones utilizando la herramienta lvextend, en este caso le asigno 5 GB adicionales:

El grupo vg-aplicaciones ahora tiene 40 GB disponibles:

Luego de expandir el volúmen lógico vol-aplicaciones es necesario redimensionar el sistema de archivos ext4. Desmontar el sistema de archivos del dispositivo /dev/mapper/vg--aplicaciones-vol--aplicaciones:

Redimensionar el sistema de archivos ext4 utilizando la herramienta resize2fs

NOTA: Antes de poder desmontar es necesario detener todo servicio que se encuentre utilizando el sistema de archivos en cuestión y luego es recomendable correr e2fsck para hacer una verificación del mismo antes de redimensionar.

Finalmente es posible volver a montar. Se observa que ahora el sistema de archivos posee 4,9 GB de espacio libre:

Para mayor información acerca de LVM acceder a la documentación que se encuentra disponible en el sitio The Linux Documentation Project: LVM HOWTO.


Tal vez pueda interesarte


Compartí este artículo