Una introducción a los conceptos, la terminología y las operaciones de LVM

Introducción

LVM, o Logical Volume Management, es una tecnología de gestión de dispositivos de almacenamiento que ofrece a los usuarios el poder de agrupar y abstraer la disposición física de los dispositivos de almacenamiento de componentes para una administración más fácil y flexible. Utilizando el marco del kernel Linux del mapeador de dispositivos, la iteración actual, LVM2, puede utilizarse para reunir los dispositivos de almacenamiento existentes en grupos y asignar unidades lógicas del espacio combinado según sea necesario.

Las principales ventajas de LVM son una mayor abstracción, flexibilidad y control. Los volúmenes lógicos pueden tener nombres significativos como «bases de datos» o «root-backup». Los volúmenes se pueden redimensionar dinámicamente a medida que cambian las necesidades de espacio y se pueden migrar entre dispositivos físicos dentro del pool en un sistema en funcionamiento o exportarse fácilmente. LVM también ofrece características avanzadas como snapshotting, striping y mirroring.

En esta guía, discutiremos brevemente cómo funciona LVM y luego demostraremos los comandos básicos necesarios para ponerse en marcha rápidamente.

Arquitectura y terminología de LVM

Antes de adentrarnos en los comandos administrativos de LVM, es importante tener una comprensión básica de cómo LVM organiza los dispositivos de almacenamiento y parte de la terminología que emplea.

Estructuras de gestión de almacenamiento de LVM

LVM funciona mediante la superposición de abstracciones sobre los dispositivos de almacenamiento físico. Las capas básicas que utiliza LVM, empezando por las más primitivas, son.

  • Volúmenes físicos:
    • Prefijo de utilidad de LVM: pv...
    • Descripción: Los dispositivos físicos de bloque u otros dispositivos similares a los discos (por ejemplo, otros dispositivos creados por el mapeador de dispositivos, como las matrices RAID) son utilizados por LVM como la materia prima de construcción para niveles superiores de abstracción. Los volúmenes físicos son dispositivos de almacenamiento normales. LVM escribe una cabecera en el dispositivo para asignarlo para su gestión.
  • Grupos de Volumen:
    • Prefijo de la utilidad LVM: vg...
    • Descripción: LVM combina los volúmenes físicos en grupos de almacenamiento conocidos como grupos de volumen. Los grupos de volúmenes abstraen las características de los dispositivos subyacentes y funcionan como un dispositivo lógico unificado con la capacidad de almacenamiento combinada de los volúmenes físicos componentes.
    • Volúmenes lógicos:
      • Prefijo de la utilidad LVM: lv... (las utilidades LVM genéricas podrían comenzar con lvm...)
      • Descripción: Un grupo de volúmenes puede dividirse en cualquier número de volúmenes lógicos. Los volúmenes lógicos son funcionalmente equivalentes a las particiones de un disco físico, pero con mucha más flexibilidad. Los volúmenes lógicos son el componente principal con el que interactuarán los usuarios y las aplicaciones.
    • En resumen, LVM puede utilizarse para combinar volúmenes físicos en grupos de volúmenes para unificar el espacio de almacenamiento disponible en un sistema. Después, los administradores pueden segmentar el grupo de volúmenes en volúmenes lógicos arbitrarios, que actúan como particiones flexibles.

      ¿Qué son los extents?

      Cada volumen dentro de un grupo de volúmenes se segmenta en pequeños trozos de tamaño fijo llamados extents. El tamaño de los extents está determinado por el grupo de volúmenes (todos los volúmenes dentro del grupo se ajustan al mismo tamaño de extent).

      Los extents de un volumen físico se llaman physical extents, mientras que los extents de un volumen lógico se llaman logical extents. Un volumen lógico es simplemente un mapeo que LVM mantiene entre extensiones lógicas y físicas. Debido a esta relación, el tamaño de extensión representa la menor cantidad de espacio que puede asignar LVM.

      Los extensiones están detrás de gran parte de la flexibilidad y potencia de LVM. Los extensiones lógicas que se presentan como un dispositivo unificado por LVM no tienen que asignarse a extensiones físicas continuas. LVM puede copiar y reorganizar los extensiones físicas que componen un volumen lógico sin ninguna interrupción para los usuarios. Los volúmenes lógicos también pueden ampliarse o reducirse fácilmente simplemente añadiendo o eliminando extensiones del volumen.

      El caso de uso simple

      Ahora que está familiarizado con parte de la terminología y las estructuras que utiliza LVM, podemos explorar algunas formas comunes de utilizar LVM. Comenzaremos recorriendo un procedimiento básico que utilizará dos discos físicos para formar cuatro volúmenes lógicos.

      Marcar los dispositivos físicos como volúmenes físicos

      Nuestro primer paso es escanear el sistema en busca de dispositivos de bloque que LVM pueda ver y gestionar. Puedes hacer esto escribiendo:

    • sudo lvmdiskscan

    La salida mostrará todos los dispositivos de bloque disponibles con los que LVM puede interactuar:

    Output
    /dev/ram0 /dev/sda /dev/ram1 . . . /dev/ram15 /dev/sdb 2 disks 17 partitions 0 LVM physical volume whole disks 0 LVM physical volumes

    Desde la salida anterior, podemos ver que actualmente hay dos discos y 17 particiones. Las particiones son en su mayoría /dev/ram* particiones que se utilizan el sistema como un disco Ram para mejorar el rendimiento. Los discos de este ejemplo son /dev/sda, que tiene 200G de espacio, y /dev/sdb, que tiene 100G.

    Atención: Asegúrese de comprobar que los dispositivos que pretende utilizar con LVM no tienen datos importantes ya escritos en ellos. El uso de estos dispositivos dentro de LVM sobrescribirá el contenido actual. Si ya tiene datos importantes en su servidor, haga copias de seguridad antes de proceder.

    Ahora que sabemos los dispositivos físicos que queremos usar, podemos marcarlos como volúmenes físicos dentro de LVM usando el comando pvcreate:

    • sudo pvcreate /dev/sda /dev/sdb
    Output
    Physical volume "/dev/sda" successfully created Physical volume "/dev/sdb" successfully created

    Esto escribirá una cabecera LVM en los dispositivos para indicar que están listos para ser añadidos a un grupo de volúmenes.

    Puedes verificar rápidamente que LVM ha registrado los volúmenes físicos escribiendo:

    • sudo pvs
    Output
    PV VG Fmt Attr PSize PFree /dev/sda lvm2 --- 200.00g 200.00g /dev/sdb lvm2 --- 100.00g 100.00g

    Como puedes ver, ambos dispositivos están presentes bajo la columna PV, que significa volumen físico.

    Añadir los volúmenes físicos a un grupo de volúmenes

    Ahora que hemos creado los volúmenes físicos de nuestros dispositivos, podemos crear un grupo de volúmenes. Tendremos que seleccionar un nombre para el grupo de volúmenes, que mantendremos genérico. La mayoría de las veces, sólo tendremos un único grupo de volúmenes por sistema para tener la máxima flexibilidad en la asignación. Llamaremos a nuestro grupo de volumen LVMVolGroup para simplificar.

    Para crear el grupo de volúmenes y añadirle nuestros dos volúmenes físicos en un solo comando, escribe:

    • sudo vgcreate LVMVolGroup /dev/sda /dev/sdb
    Output
    Volume group "LVMVolGroup" successfully created

    Si comprobamos de nuevo la salida pvs, podemos ver que nuestros volúmenes físicos están ahora asociados al nuevo grupo de volúmenes:

    • sudo pvs
    Output
    PV VG Fmt Attr PSize PFree /dev/sda LVMVolGroup lvm2 a-- 200.00g 200.00g /dev/sdb LVMVolGroup lvm2 a-- 100.00g 100.00g

    Podemos ver un breve resumen del propio grupo de volúmenes escribiendo:

    • sudo vgs
    Output
    VG #PV #LV #SN Attr VSize VFree LVMVolGroup 2 0 0 wz--n- 299.99g 299.99g

    Como puedes ver, nuestro grupo de volúmenes tiene actualmente dos volúmenes físicos, cero volúmenes lógicos y tiene la capacidad combinada de los dispositivos subyacentes.

    Creación de volúmenes lógicos desde el pool del grupo de volúmenes

    Ahora que tenemos un grupo de volúmenes disponible, podemos utilizarlo como un pool del que podemos asignar volúmenes lógicos. A diferencia del particionamiento convencional, cuando se trabaja con volúmenes lógicos, no es necesario conocer la distribución del volumen ya que LVM mapea y maneja esto por ti. Sólo hay que suministrar el tamaño del volumen y un nombre.

    Crearemos cuatro volúmenes lógicos separados de nuestro grupo de volúmenes:

    • Volumen «proyectos» de 10G
    • Volumen «www» de 5G para contenido web
    • Volumen «db» de 20G para una base de datos
    • Volumen «espacio de trabajo» que llenará el espacio restante
    • Para crear volúmenes lógicos, utilizamos el comando lvcreate. Debemos pasar el grupo de volúmenes del que tirar, y podemos nombrar el volumen lógico con la opción -n. Para especificar el tamaño directamente, se puede utilizar la opción -L. Si, en cambio, quieres especificar el tamaño en términos de número de extensiones, puedes utilizar la opción -l.

      Podemos crear los tres primeros volúmenes lógicos con la opción -L así:

    • sudo lvcreate -L 10G -n projects LVMVolGroup
    • sudo lvcreate -L 5G -n www LVMVolGroup
    • sudo lvcreate -L 20G -n db LVMVolGroup
    Output
    Logical volume "projects" created. Logical volume "www" created. Logical volume "db" created.

    Podemos ver los volúmenes lógicos y su relación con el grupo de volúmenes seleccionando la salida personalizada del comando vgs:

    • sudo vgs -o +lv_size,lv_name
    Output
    VG #PV #LV #SN Attr VSize VFree LSize LV LVMVolGroup 2 3 0 wz--n- 299.99g 264.99g 10.00g projects LVMVolGroup 2 3 0 wz--n- 299.99g 264.99g 5.00g www LVMVolGroup 2 3 0 wz--n- 299.99g 264.99g 20.00g db

    Hemos añadido las dos últimas columnas de salida para poder ver el espacio asignado a nuestros volúmenes lógicos.

    Ahora, podemos asignar el resto del espacio del grupo de volúmenes al volumen «espacio de trabajo» utilizando la bandera -l, que funciona en extensiones. También podemos proporcionar un porcentaje y una unidad para comunicar mejor nuestras intenciones. En nuestro caso, deseamos asignar el espacio libre restante, por lo que podemos pasar en 100%FREE:

    • sudo lvcreate -l 100%FREE -n workspace LVMVolGroup
    Output
    Logical volume "workspace" created.

    Si volvemos a comprobar la información del grupo de volúmenes, podemos ver que hemos utilizado todo el espacio disponible:

    • sudo vgs -o +lv_size,lv_name
    Output
    VG #PV #LV #SN Attr VSize VFree LSize LV LVMVolGroup 2 4 0 wz--n- 299.99g 0 10.00g projects LVMVolGroup 2 4 0 wz--n- 299.99g 0 5.00g www LVMVolGroup 2 4 0 wz--n- 299.99g 0 20.00g db LVMVolGroup 2 4 0 wz--n- 299.99g 0 264.99g workspace

    Como puedes ver, el volumen «workspace» ha sido creado y el grupo de volúmenes «LVMVolGroup» está completamente asignado.

    Formatear y montar los volúmenes lógicos

    Ahora que tenemos volúmenes lógicos, podemos utilizarlos como dispositivos de bloque normales.

    Los dispositivos lógicos están disponibles dentro del directorio /dev al igual que otros dispositivos de almacenamiento. Se puede acceder a ellos en dos lugares:

    • /dev/volume_group_name/logical_volume_name
    • /dev/mapper/volume_group_name-logical_volume_name

    Así que para formatear nuestros cuatro volúmenes lógicos con el sistema de archivos Ext4, podemos escribir:

    • sudo mkfs.ext4 /dev/LVMVolGroup/projects
    • sudo mkfs.ext4 /dev/LVMVolGroup/www
    • sudo mkfs.ext4 /dev/LVMVolGroup/db
    • sudo mkfs.ext4 /dev/LVMVolGroup/workspace

    O podemos escribir:

    • sudo mkfs.ext4 /dev/mapper/LVMVolGroup-projects
    • sudo mkfs.ext4 /dev/mapper/LVMVolGroup-www
    • sudo mkfs.ext4 /dev/mapper/LVMVolGroup-db
    • sudo mkfs.ext4 /dev/mapper/LVMVolGroup-workspace

    Después de formatear, podemos crear puntos de montaje:

    • sudo mkdir -p /mnt/{projects,www,db,workspace}

    A continuación, podemos montar los volúmenes lógicos en la ubicación adecuada:

    • sudo mount /dev/LVMVolGroup/projects /mnt/projects
    • sudo mount /dev/LVMVolGroup/www /mnt/www
    • sudo mount /dev/LVMVolGroup/db /mnt/db
    • sudo mount /dev/LVMVolGroup/workspace /mnt/workspace

    Para que los montajes sean persistentes, añádelos a /etc/fstab como harías con los dispositivos de bloque normales:

    • sudo nano /etc/fstab
    /etc/fstab
    . . ./dev/LVMVolGroup/projects /mnt/projects ext4 defaults,nofail 0 0/dev/LVMVolGroup/www /mnt/www ext4 defaults,nofail 0 0/dev/LVMVolGroup/db /mnt/db ext4 defaults,nofail 0 0/dev/LVMVolGroup/workspace /mnt/workspace ext4 defaults,nofail 0 0

    El sistema operativo debería ahora montar los volúmenes lógicos LVM automáticamente en el arranque.

    Conclusión

    Esperamos que, en este punto, tenga una comprensión bastante buena de los diversos componentes que LVM maneja para crear un sistema de almacenamiento flexible. También debería tener una comprensión básica de cómo poner en marcha los dispositivos de almacenamiento en una configuración LVM.

    Esta guía sólo ha tocado brevemente el poder y el control que LVM proporciona a los administradores de sistemas Linux. Para aprender más sobre cómo trabajar con LVM, consulte nuestra guía para usar LVM con Ubuntu 16.04.

Deja una respuesta

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