Icono de Terminal

Extender volúmenes LVM (Logical Volume Manager)

 
 

Índice General

  1. Objetivo del artículo
  2. Breve introducción sobre LVM
  3. Extender volúmenes LVM
    1. Agregar un nuevo disco duro a la máquina virtual
    2. Extender volúmenes

Enlaces externos
 

En este artículo partimos de un sistema con LVM (Logical Volume Manager) configurado.
En </ZeppelinuX> hemos publicado los artículos Instalar Debian 8 con LVM en VMware Workstation e Instalar Debian 10 con LVM en VMware Workstation, por si te interesa conocer el procedimiento de como instalar Debian en una máquina virtual o directamente sobre el hardware de nuestro ordenador y, configurar en la instalación LVM (Logical Volume Manager).

  1. Objetivo del artículo (Volver al índice General)
    A veces, es difícil estimar cuanto espacio será necesario para el sistema, programas, temporales o para los datos de usuarios o de los distintos servicios (web, correo, FTP, etc.), que ejecuta la máquina virtual o PC. Es bastante común, que con el paso del tiempo nos quedemos sin espacio en disco, debido al crecimiento del numero de programas instalados o al de los datos generados.

    Con LVM, en el caso de que nos quedemos sin espacio, podremos redimensionar las particiones y añadir mas discos duros, permitiéndonos extender las particiones sobre estos. Otra característica de LVM son las instantáneas (snapshots), que permiten crear un nuevo dispositivo que será una copia exacta de un Volumen Lógico (LV), congelado en algún punto del tiempo.

    En este artículo, simularemos que nuestro sistema operativo con LVM configurado, necesita mas espacio de almacenamiento y añadiremos dos nuevos discos adicionales, ya sean discos virtuales en una máquina virtual o discos conectados físicamente al ordenador y, una vez añadido los discos, redimensionaremos las particiones (Logical Volume, LV) existentes, aumentando así el espacio agotado en las mismas.

  2.  

  3. Breve introducción sobre LVM (Volver al índice General)
    LVM es una implementación de un administrador de volúmenes lógicos para el kernel Linux. Incluye muchas de las características que se esperan de un administrador de volúmenes, incluyendo:

    • Redimensionado de grupos lógicos.
    • Redimensionado de volúmenes lógicos.
    • Instantáneas de sólo lectura (LVM2 ofrece lectura y escritura).
    • RAID0 de volúmenes lógicos.

     
    LVM no implementa RAID1 o RAID5, por lo que se recomienda usar soluciones específicas de RAID para estas operaciones, teniendo las LV (volúmenes lógicos) por encima del RAID.

    Con Logical Volume Manager o LVM podemos crear y administrar particiones virtuales de disco, nos abstrae de la estructura del disco, de aspectos como son; la tabla de particiones, espacio disponible en el disco, el tamaño inicial de las particiones, etc.

    LVM nos permite redimensionar las particiones y añadir nuevos discos extendiendo las particiones sobre estos.

    Un LVM se compone de tres partes:

    • Volúmenes físicos o physical volumen (PV): es como si de un disco duro físico se tratase, ya que puede ser una sola parte de un disco, un disco completo o incluso mas de un disco. Están formados por extensiones físicas o physical extent (PE).
    • Grupos de volúmenes o volume group (VG): Cuando ya tenemos definida una porción de disco, un disco completo o mas de un disco físico como un PV, deberemos de crear sobre este uno o varios grupos de volúmenes (VG) que los entenderemos como una unidad de disco
    • Volúmenes lógicos o logical volume (LV): Es aquí donde crearemos las particiones.
  4.  

  5. Extender volúmenes (Volver al índice General)
    Vamos a suponer que nuestro sistema, por el motivo que sea, necesita de mas espacio de disco. En nuestro caso, recurriremos a añadir un nuevo disco y haciendo uso de LVM, podremos redimensionar las particiones (LV) ya existentes.

    En primer lugar mostraremos como añadir un disco adicional a una máquina virtual. Si optasteis por instalar Debian como sistema operativo en vuestro PC, no os queda mas remedio que pinchar otro disco duro adicional, ya sea internamente (así aprovechais y le quitais el polvo del interior 🙂 ), o utilizar discos rápidos conectados por interfaces del tipo USB 3.1, Thunderbolt, eSATA, etc.
     

    1. Agregar un nuevo disco duro a la máquina virtual (Volver al índice General)

      Nota: La instalación y configuración de VMware Workstation queda fuera de este artículo.

      En este ejemplo agregaremos un nuevo disco duro virtual de 20GB.

      Figura 1: Para editar la configuración de la máquina virtual pulsar sobre "Edit virtual machine settings"
      Figura 1: Para editar la configuración de la máquina virtual pulsar sobre "Edit virtual machine settings"
      Figura 2: Pulsaremos "Add..." para añadir nuevo hardware.
      Figura 2: Pulsaremos "Add..." para añadir nuevo hardware.
      Figura 3: Seleccionamos "Hard Disk" para añadir el nuevo disco duro.
      Figura 3: Seleccionamos "Hard Disk" para añadir el nuevo disco duro.
       
      Figura 4: Seleccionamos la opción recomendada para el tipo de disco: "SCSI".
      Figura 4: Seleccionamos la opción recomendada para el tipo de disco: "SCSI".
      Figura 5: Seleccionamos crear un nuevo disco virtual.
      Figura 5: Seleccionamos crear un nuevo disco virtual.
       
      Figura 6: Le asignamos tamaño al disco: 20GB.
      Figura 6: Le asignamos tamaño al disco: 20GB.
       
      Figura 7: Damos un nombre al disco.
      Figura 7: Damos un nombre al disco.
      Figura 8: Ya tenemos nuestro disco de 20GB adicional.
      Figura 8: Ya tenemos nuestro disco de 20GB adicional.
      Figura 9: Listos para iniciar la máquina con los dos discos.
      Figura 9: Listos para iniciar la máquina con los dos discos.


       
       

    2. Extender volúmenes (Volver al índice General)
      Tras la instalación del disco duro, ya sea virtual o físico, procederemos a la extensión de las particiones (LV).

      En este ejemplo partimos de que tenemos creado un grupo de volúmenes llamado grp_datos. Dentro de grp_datos tenemos dos volúmenes lógicos llamados vl_var y vl_home. El volumen vl_var se monta en /var y el volumen vl_home se monta en /home.

      LVM se gestiona principalmente desde la interfaz para la línea de comandos (CLI), pero además, proporciona una interfaz gráfica de usuario (GUI) que puede ser utilizada para configurar volúmenes lógicos LVM. La herramienta gráfica que utilizaremos para la configuración será system-config-lvm.
       

      • Configuración mediante la interfaz de líne de comandos (CLI) (Volver al índice General)
        1. Añadimos el nuevo disco, ya sea físico o virtual. En nuestro caso, hemos añadido un disco duro virtual de 20GB. No olvidar que si añadís el disco en caliente, habrá que reiniciar la máquina virtual para que lo reconozca el sistema operativo.
        2. Comprobamos que el sistema lo detecta: Una vez añadido hacemos fdisk -l para ver que el sistema lo detecta.
          $ sudo fdisk -l

          Ya que hemos comenzado con un único disco duro de 20GB /dev/sda tras añadir el nuevo disco, el sistema operativo deberá identificar el nuevo como /dev/sdb de 20GB.

          Resultado de ejecutar: fdisk -l
          Resultado de ejecutar: fdisk -l.
          Haz clic para aumentar.
        3. Creamos el volumen físico utilizando el comando pvcreate:
          $ sudo pvcreate /dev/sdb
            Physical volume "/dev/sdb" successfully created
        4. Ver los grupos de volúmenes creados: Ejecutamos vgdisplay para que nos muestre los gruposque tenemos creados. En nuestro ejemplo, aparecerá el grupo grp_datos:
          $ sudo vgdisplay
            --- Volume group ---
            VG Name               grp_datos
            System ID             
            Format                lvm2
            Metadata Areas        1
            Metadata Sequence No  5
            VG Access             read/write
            VG Status             resizable
            MAX LV                0
            Cur LV                2
            Open LV               2
            Max PV                0
            Cur PV                1
            Act PV                1
            VG Size               8,82 GiB
            PE Size               4,00 MiB
            Total PE              2258
            Alloc PE / Size       2258 / 8,82 GiB
            Free  PE / Size       0 / 0   
            VG UUID               0EtoY8-dZZm-HXsf-5L4W-VdFJ-sFeO-I7E3VI

          Comprobamos que el grupo de volúmenes se llama grp_datos.

        5. Añadimos el volumen físico (PV) al grupo de volúmenes (VG): Utilizaremos el comando vgextend:
          $ sudo vgextend grp_datos /dev/sdb
            Volume group "grp_datos" successfully extended
        6. Extender los volúmenes lógicos: En nuestro ejemplo, ya teníamos dos volúmenes lógicos en el grupo de volúmenes, uno llamado vl_var que se monta en /var y otro llamado vl_home que se monta en /home.

          Si queremos listar los volúmenes lógicos que existen en nuestro sistema, podemos ejecutar alguno de los siguientes comandos:

          • lvdisplay: muestra las propiedades del volumen lógico (como tamaño, distribución y asignación) en un formato fijo.
            $ sudo lvdisplay 
              --- Logical volume ---
              LV Path                /dev/grp_datos/vl_var
              LV Name                vl_var
              VG Name                grp_datos
              LV UUID                tGFV15-SeeR-oWP8-GOUs-tFmL-Fvf8-XgxdZG
              LV Write Access        read/write
              LV Creation host, time debiancifrado, 2020-05-11 19:03:13 +0200
              LV Status              available
              # open                 1
              LV Size                4,16 GiB
              Current LE             7064
              Segments               1
              Allocation             inherit
              Read ahead sectors     auto
              - currently set to     256
              Block device           254:1
             
              --- Logical volume ---
              LV Path                /dev/grp_datos/vl_home
              LV Name                vl_home
              VG Name                grp_datos
              LV UUID                vrKFPf-ZwQb-g9SK-srKA-dFe2-D3fz-XERG4d
              LV Write Access        read/write
              LV Creation host, time debiancifrado, 2020-05-11 19:06:28 +0200
              LV Status              available
              # open                 2
              LV Size                4,66 GiB
              Current LE             489
              Segments               1
              Allocation             inherit
              Read ahead sectors     auto
              - currently set to     256
              Block device           254:2
          • lvs: proporciona información sobre el volumen lógico de una forma configurable, mostrando cada volumen lógico en una línea.
            $ sudo lvs
              LV      VG        Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
              vl_var  grp_datos -wi-ao---- 4,16g                                                    
              vl_home grp_datos -wi-ao---- 4,66g
          • lvscan: busca los volúmenes lógicos en el sistema y los lista.
            $ sudo lvscan 
              ACTIVE            '/dev/grp_datos/vl_var'  [4,16 GiB] inherit
              ACTIVE            '/dev/grp_datos/vl_home' [4,66 GiB] inherit

          Como en este ejemplo hemos instalado un disco de 20GB, vamos a añadir 15GB al volumen /dev/grp_datos/vl_var

          $ sudo lvextend -L+15G /dev/grp_datos/vl_var 
            Size of logical volume grp_datos/vl_var changed from 4,16 GiB (1066 extents) to 19,16 GiB (4906 extents).
            Logical volume vl_var successfully resized

          y añadimos el resto, 5GB al volumen /dev/grp_datos/vl_home.

          $ sudo lvextend -L+5113M /dev/grp_datos/vl_home 
            Size of logical volume grp_datos/vl_home changed from 4,66 GiB (1192 extents) to 9,65 GiB (2471 extents).
            Logical volume vl_home successfully resized

          Nota: Para añadir los 5GB restantes he utilizado el indicador M (Megas) en vez de G (Gigas) ya que al indicar que expandiese el resto, 5G, me dio un error de que no había espacio suficiente para 5G, por lo cual, en vez de Gigas utilizo Megas que me permite afinar mejor el espacio restante.

        7. Redimensionando el sistema de ficheros: Acción necesaria para aumentarlo hasta el tamaño del volumen lógico.
          $ sudo resize2fs /dev/grp_datos/vl_var
          $ sudo resize2fs /dev/grp_datos/vl_home

          NOTA IMPORTANTE: Se puede aumentar el tamaño del sistema de ficheros online, es decir, sin desmontarlo, porque el kernel 2.6 y sucesivos, soportan el redimensionado on-line para sistemas de ficheros ext3 y ext4. Sin embargo, para reducir el tamaño del sistema de ficheros, tendría que hacerlo forzosamente off-line. Por ejemplo utilizando un Live-CD.

      •  

      • Configuración mediante system-config-lvm (Volver al índice General)
        system-config-lvm es una interfaz gráfica de usuario (GUI) para configurar volúmenes lógicos LVM. Debido a que no viene preinstalada en Debian, en primer lugar, instalaremos la aplicación system-config-lvm y todas sus dependencias con el comando siguiente:

        $ sudo apt-get install system-config-lvm

        Una vez instalado system-config-lvm, pasamos a extender los volúmenes.

        1. Añadimos el nuevo disco, ya sea físico o virtual. En este caso, vamos a añadir un disco duro virtual de 10GB, siguiendo el procedimiento del apartado Agregar un nuevo disco duro a la máquina virtual. No olvidar que si añadís el disco en caliente, habrá que reiniciar la máquina virtual para que lo reconozca el sistema operativo.
        2. Comprobamos que el sistema lo detecta: Una vez añadido hacemos fdisk -l para ver que el sistema lo detecta.
          $ sudo fdisk -l

          En este punto del artículo, disponemos de tres discos, uno de 20GB /dev/sda (de la instalación), otro de 20GB /dev/sdb (que hemos añadido en el punto anterior) y por último uno de 10GB /dev/sdc (que es el que acabamos de añadir).

          Resultado de ejecutar: fdisk -l
          Resultado de ejecutar: fdisk -l.
          Haz clic para aumentar.
        3. Creamos el volumen físico utilizando el comando pvcreate:
          $ sudo pvcreate /dev/sdc
            Physical volume "/dev/sdc" successfully created
        4. Lanzamos la aplicación: Una vez instalada la ejecutaremos bien desde el icono que aparece tras la instalación el menú de inicio o bien desde la consola ejecutando el siguiente comando:
          $ sudo system-config-lvm

          En ambos casos, nos pedirá que nos autentiquemos como root.

          Si expandimos todo el arbol de la parte izquierda de la interfaz obtendremos la siguiente imagen:

          Pantalla inicial de system-config-lvm
          Pantalla inicial de system-config-lvm.
          Haz clic para aumentar.
        5. Añadimos el volumen físico (PV) al grupo de volúmenes (VG): Añadiremos el disco de 10GB /dev/sdc al grupo grp_datos posicionandonos encima de él en el panel de la izquierda y clicando sobre el botón Agregar al Grupo Volumen existente. Nos aparecerá el siguiente cuadro de dialogo desde el que seleccionaremos el grupo grp_datos:
          Selección del grupo al que añadiremos el volumen no asignado /dev/sdc.
          Agregar /dev/sdc al grupo grp_datos.
          Haz clic para aumentar.
          En la siguiente imágen podemos observar como /dev/sdc se ha añadido al grupo grp_datos.
          /dev/sdc añadido al grupo grp_datos.
          /dev/sdc añadido al grupo grp_datos.
          Haz clic para aumentar.
        6. Extender los volúmenes lógicos: El siguiente paso será seleccionar el volumen lógico a extender, que en nuestro ejemplo será vl_var y lo extenderemos de nuevo con los 10GB que hemos añadido al grupo de volúmenes grp_datos.

          Antes de proceder tendremos que desmontar la partición ya que de lo contrario, no nos permitirá realizar los cambios, y además, tendremos que reiniciar la aplicación para poder continuar con el proceso.

          A continuación indicamos los pasos a seguir:

          1. Cerramos la aplicación system-config-lvm
          2. Desmontamos la particion. Como vl_var se monta en /var, ejecutamos el siguiente comando:
            $ sudo umount /var
          3. Abrimos la aplicación y seleccionamos el volumen a extender, en este caso vl_var
          4. Editamos las propiedades del volumen lógico haciendo clic en el botón Editar Propiedades.

            En el siguiente cuadro de dialogo, vemos las propiedades del volumen lógico antes del cambio.

            Propiedades del volumen lógico vl_var antes del cambio.
            Propiedades del volumen lógico vl_var antes del cambio.
            Haz clic para aumentar.
            En el mismo cuadro de dialogo, extendemos el volumen lógico con todo el espacio disponible, 10GB.
            Propiedades del volumen lógico vl_var: lo expandimos 10GB.
            Propiedades del volumen lógico vl_var: lo expandimos 10GB.
            Haz clic para aumentar.
            Una vez hemos aceptado, nuestro volumen vl_var pasa a tener 29.16GB.
            vl_var ya modificado y aumentado a 29.16GB.
            vl_var ya modificado y aumentado a 29.16GB.
            Haz clic para aumentar.

 
Enlaces externos (Volver al índice General)

 

Espero que este artículo os haya sido de utilidad. Si pensáis que podéis colaborar para mejorar este artículo, que hay algo erróneo en él o simplemente deseáis comentarlo, por favor, dejad vuestra opinión más abajo.
 
Seguir J. Carlos:

Técnico Informático - Desarrollo Web - Administración de Redes

Técnico Informático. Desarrollo Web. Administración de redes.

2 comentarios

  1. Carles Simó

    Muchas gracias, me ha ido muy bien para mi ha sido el mejor tutorial que he hallado, me ha solucionado el problema de ampliar el
    tamaño del root

Deja una respuesta

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.