Cómo aumentar el tamaño de una partición LVM en Linux agregando un nuevo disco

En este post voy a explicarles como aumentar el espacio de disco para una máquina virtual Linux sobre VMware que utiliza un administrador de volúmenes lógicos (LVM). En pocas palabras, lo que tenemos que hacer es agregar un nuevo disco a la máquina virtual y luego extender el LVM original con este espacio adicional. En este ejemplo vamos a tener dos discos físicos con un grupo de volúmenes y un grupo lógico que está utilizando el espacio en los dos discos juntos.

En este ejemplo trabajaré con una máquina virtual de VMware con Debian 6, con un disco de 20 GB y agregaré un disco de 20gb para un tamaño total de LVM de 40gb, a pesar de que este ejemplo es para un ambiente virtualizado, aplica perfectamente para servidor físico.

Notas importantes: Tenga mucho cuidado cuando se trabaja con los comandos en este artículo, ya que tienen el potencial de causar mucho daño a sus datos. Si está trabajando con las máquinas virtuales asegúrese de tomar un snapshot o realizar un clon de la máquina virtual, o de otra manera tener alguna otra copia de seguridad hasta la fecha antes de proceder. Es importante mencionar que a pesar de que con este método no hay tiempo de inactividad en la máquina virtual, si les recomiendo hacer un reinicio posterior para validar la salud del sistema operativo.

Paso 1. Identificar el tipo de partición.

fdisk -l

 

Como se puede ver en la imagen de arriba el dispositivo /dev /sda5 se muestra como “Linux LVM” y que tiene el ID de 8e. El código hexadecimal 8e muestra que se trata de un LVM Linux, mientras que el 83 muestra una partición nativa Linux. Ahora que hemos confirmado que estamos trabajando con un LVM podemos continuar 🙂

A continuación veremos que solamente tenemos un disco de 20gb, que está bajo el volumen lógico llamado /dev/mapper/Mega-root - esto es lo que vamos a ampliar con el nuevo disco.

 

Finalmente hemos localizado que /dev/mapper/Mega-root es el volumen que se compone de /dev/sda5 actualmente, esto será lo que vamos a ampliar.

Paso 2. Agregar un disco duro virtual

En primer lugar vamos a añadir un nuevo disco a la máquina virtual. Esto se hace haciendo clic derecho en la máquina virtual en vSphere, seleccionar los ajustes de edición y luego haciendo clic en el botón “Añadir ...” para agregar hardware de la máquina virtual.

Seleccione el disco duro y haga clic en siguiente.

Seleccione crear un nuevo disco virtual y haga clic en siguiente.

 

Seleccione el tamaño del disco que desea agregar, en nuestro caso vamos a seleccionar 20gb como se mencionó anteriormente. También elegiremos el mismo almacén de datos como los archivos de las máquinas virtuales, con esto bastará por ahora para mis propósitos de prueba. Una vez completado, haga clic en Siguiente

 

Seleccionar el siguiente para las opciones avanzadas.

Haremos clic en Finalizar una vez que se haya confirmado la configuración.

 

A continuación, aparecerá el nuevo disco en la pestaña dispositivos de hardware y será marcada en negritas, lo que significa que no se aplicará hasta que haga clic en OK y Aceptar para completar el proceso.

 

Paso 3. Detectar el espacio del disco nuevo en el SO

Tan pronto hayamos añadido el disco adicional a través de VMware se mostrará en el sistema operativo a través de 'fdisk-l' para mí, se puede ver el segundo disco etiquetado como /dev/sdb. También es importante mencionar aún no tiene una tabla de particiones válida, estamos a punto de instalar esto.

 

Si usted tiene problemas de detección del disco nuevo, sólo realice un reinicio y luego se debería mostrar correctamente.

Paso 3. Particionando el disco nuevo

Ahora necesitamos particionar el nuevo disco /dev/sdb para que pueda ser utilizado, esto se hace mediante el uso de fdisk.

fdisk /dev/sdb

Una vez ejecutado el comando, seleccionaremos la opción 'n' para agregar una nueva partición:

root@Mega:~# fdisk /dev/sdb
Command (m for help): n

 

Posteriormente seleccionaremos la opción  ‘p’ para hacer la partición primaria:

Command action
   e   extended
   p   primary partition (1-4)
p

 

Como es un nuevo disco, aún no tenemos alguna particiín, entonces seleccionaremos 1

Partition number (1-4): 1
 
A continuación, presionamos 'Enter' dos veces, ya que, de manera predeterminada, el primer y el último cilindro del espacio no asignado deben ser correctos.
First cylinder (1-2610, default 1): "enter"
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): "enter"
Using default value 2610
 
't' se selecciona para cambiar a una ID de sistema de particiones, en este caso cambiamos a '1' automáticamente ya que es nuestra única partición.
Command (m for help): t
Selected partition 1
 
Se ingresó el código hexadecimal '8e', ya que este es el código para un LVM de Linux, ya que la uniremos con el LVM original de Linux que actualmente utiliza /dev/sda5.
Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e (Linux LVM)
 
'w' se usa para escribir la tabla en el disco y salir, todos los cambios que se hayan realizado se guardarán y luego saldrá de fdisk.
Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
 
Al usar "fdisk -l" ahora podrá ver que /dev/sdb1 aparece en la lista, esta es la nueva partición creada en nuestro disco en /dev/sdb recién agregado y actualmente está usando los 20 gb de espacio.
fdisk after partition created

 

Paso 4. Aumentando el volumen lógico

A continuación, usaremos el comando pvcreate para crear un volumen físico para su uso posterior por LVM. En este caso, el volumen físico será nuestra nueva partición /dev/sdb1
root@Mega:~# pvcreate /dev/sdb1
  Physical volume "/dev/sdb1" successfully created
 
Ahora necesitamos confirmar el nombre del grupo de volúmenes actual usando el comando vgdisplay. El nombre variará según su configuración, para mí será el nombre de mi servidor de prueba. vgdisplay proporciona mucha información sobre el grupo de volúmenes, solo mostraré el nombre y el tamaño actual para este ejemplo.
root@Mega:~# vgdisplay
  --- Volume group ---
  VG Name               Mega
  VG Size               19.76 GiB
 
Ahora, usando el comando vgextend, ampliamos el grupo de volúmenes 'Mega' agregando el volumen físico /dev/sdb1 que creamos usando el comando pvcreate justo antes.
root@Mega:~# vgextend Mega /dev/sdb1
  Volume group "Mega" successfully extended
 
Usando el comando pvscan escaneamos todos los discos para volúmenes físicos, esto debería confirmar la partición /dev/sda5 original y el volumen físico /dev/sdb1 recién creado
root@Mega:~# pvscan
  PV /dev/sda5   VG Mega   lvm2 [19.76 GiB / 0    free]
  PV /dev/sdb1   VG Mega   lvm2 [19.99 GiB / 19.99 GiB free]
  Total: 2 [39.75 GiB] / in use: 2 [39.75 GiB] / in no VG: 0 [0   ]
 
A continuación, necesitamos aumentar el volumen lógico con el comando lvextend (en lugar del volumen físico que ya hemos hecho). Esto significa que tomaremos nuestro volumen lógico original y lo ampliaremos sobre nuestro nuevo disk/partition/physical volume de /dev/sdb1
Primero confirme el nombre del volumen lógico usando lvdisplay. El nombre variará según su configuración.
root@Mega:~# lvdisplay
  --- Logical volume ---
  LV Name                /dev/Mega/root
  LV Size                18.91 GiB
 
El volumen lógico /dev/Mega/root se extenderá utilizando el comando lvextend con el espacio de la partición /dev/sdb1 más nueva
root@Mega:~# lvextend /dev/Mega/root /dev/sdb1
  Extending logical volume root to 38.90 GiB
  Logical volume root successfully resized
 
Si lo desea, puede ejecutar vgdisplay y lvdisplay nuevamente para confirmar el tamaño del grupo de volúmenes y el volumen lógico, respectivamente:
  LV Size                38.90 GiB
  VG Size                39.75 GiB
 
Si se ejecuta un comando "df" para ver el espacio disponible en el disco, no habrá cambiado aún, ya que hay un último paso, tenemos que cambiar el tamaño del sistema de archivos utilizando el comando resize2fs para hacer uso de este espacio.
root@Mega:~# resize2fs /dev/Mega/root
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/Mega/root is mounted on /; on-line resizing required
old desc_blocks = 2, new_desc_blocks = 3
Performing an on-line resize of /dev/Mega/root to 10196992 (4k) blocks.
The filesystem on /dev/Mega/root is now 10196992 blocks long.

 

Alternativamente, si está ejecutando el sistema de archivos XFS (por defecto a partir de RedHat / CentOS 7) puede hacer crecer el sistema de archivos con "xfs_growfs /dev/Mega/root".

Por otro lado, en lugar de cambiar el tamaño del sistema de archivos manualmente, podría usar la opción -r del comando lvextend, que cambiará automáticamente el tamaño del sistema de archivos para hacer uso del espacio de disco adicional.

El cambio de tamaño tomó aproximadamente un minuto para completarse (dependerá de la velocidad y el tamaño del disco), ejecutar el comando "df" ahora muestra el espacio de disco correcto para /dev/mapper/Mega-root

Disk free on expanded LVM

 
Finalmente hemos aumentado el espacio total en el disco de la máquina virtual al agregar primero un nuevo disco virtual a través de VMware, crear una nueva partición de este espacio nuevo sin asignar dentro del sistema operativo invitado, convertirlo en un volumen físico, extender el grupo de volúmenes y luego finalmente extendimos el volumen lógico original sobre el volumen físico más nuevo, lo que resultó en un aumento total del espacio en disco. Este método permite la actualización de espacio en disco sin tiempo de inactividad, mi máquina virtual no se apagó ni reinició en absoluto durante este proceso. Esta es una técnica muy útil para actualizar el espacio en el disco en los servidores de producción que no pueden bajar.
 
Espero que les haya sido de utilidad 🙂
 
IV

Leave a Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *