Introducción
LVM, o Gestión de Volumen Lógico, es una tecnología de gestión de dispositivos de almacenamiento que brinda a los usuarios la capacidad de agrupar y abstraer el diseño físico de los dispositivos de almacenamiento de componentes para una administración flexible. Utilizando el marco del kernel de Linux device mapper, la versión actual, LVM2, se puede utilizar para agrupar dispositivos de almacenamiento existentes en grupos y asignar unidades lógicas del espacio combinado según sea necesario.
Las principales ventajas de LVM son la 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 también pueden cambiar de tamaño dinámicamente a medida que cambian los requisitos de espacio y migrar entre dispositivos físicos dentro del grupo en un sistema en ejecución o exportarse. LVM también ofrece características avanzadas como instantáneas, listas y espejos.
En esta guía, aprenderás cómo funciona LVM y practicarás comandos básicos para comenzar rápidamente en una máquina de metal desnudo.
Arquitectura y Terminología de LVM
Antes de adentrarse en los comandos administrativos de LVM, es importante tener una comprensión básica de cómo LVM organiza los dispositivos de almacenamiento y algunos de los términos que emplea.
Estructuras de Gestión de Almacenamiento LVM
El LVM funciona mediante la superposición de abstracciones sobre dispositivos de almacenamiento físico. Las capas básicas que utiliza el LVM, comenzando con la más primitiva, son:
-
Volúmenes Físicos: El prefijo de utilidad LVM para volúmenes físicos es
pv...
. Estos dispositivos bloquean físicamente dispositivos o dispositivos similares a discos (por ejemplo, otros dispositivos creados por el administrador de dispositivos, como matrices RAID) y son utilizados por el LVM como material de construcción crudo para niveles superiores de abstracción. Los volúmenes físicos son dispositivos de almacenamiento regulares. El LVM escribe un encabezado en el dispositivo para asignarlo para su gestión. -
Grupos de Volúmenes: El prefijo de utilidad LVM para grupos de volúmenes es
vg...
. El LVM combina volúmenes físicos en piscinas de almacenamiento conocidas como grupos de volúmenes. Los grupos de volúmenes abstraen las características de los dispositivos subyacentes y funcionan como un dispositivo lógico unificado con capacidad de almacenamiento combinada de los volúmenes físicos componentes. -
Volúmenes Lógicos: El prefijo de utilidad LVM para volúmenes lógicos es
lv...
, utilidades genéricas de LVM podrían comenzar conlvm...
. Un grupo de volúmenes se puede dividir en cualquier número de volúmenes lógicos. Los volúmenes lógicos son funcionalmente equivalentes a particiones en 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.
LVM se puede utilizar para combinar volúmenes físicos en grupos de volúmenes para unificar el espacio de almacenamiento disponible en un sistema. Posteriormente, los administradores pueden segmentar el grupo de volúmenes en volúmenes lógicos arbitrarios, que actúan como particiones flexibles.
Comprensión de Extensiones
Cada volumen dentro de un grupo de volúmenes está segmentado en pequeños fragmentos de tamaño fijo llamados extensiones. El tamaño de las extensiones está determinado por el grupo de volúmenes. Todos los volúmenes dentro del grupo cumplen con el mismo tamaño de extensión.
Las extensiones en un volumen físico se llaman extensiones físicas, mientras que las extensiones de un volumen lógico se llaman extensiones lógicas. Un volumen lógico es un mapeo que LVM mantiene entre extensiones lógicas y físicas. Debido a esta relación, el tamaño de la extensión representa la cantidad más pequeña de espacio que puede asignar LVM.
Las extensiones están detrás de gran parte de la flexibilidad y potencia de LVM. Las extensiones lógicas que se presentan como un dispositivo unificado por LVM no tienen que coincidir con extensiones físicas continuas. LVM puede copiar y reorganizar las extensiones físicas que componen un volumen lógico sin interrupciones para los usuarios. Los volúmenes lógicos también pueden expandirse o contraerse agregando extensiones al volumen o eliminándolas.
Casos de Uso Comunes
Ahora que estás familiarizado con parte de la terminología y estructuras que utiliza LVM, puedes explorar algunas formas comunes de utilizar LVM. Comenzarás con un procedimiento que utilizará dos discos físicos para formar cuatro volúmenes lógicos.
Etiquetado de los Dispositivos Físicos como Volúmenes Físicos
Comienza escaneando el sistema en busca de dispositivos de bloques a los que LVM pueda acceder y gestionar. Puedes hacerlo con el siguiente comando:
- sudo lvmdiskscan
La salida mostrará todos los dispositivos de bloques disponibles con los que LVM puede interactuar:
Output /dev/ram0 [ 64.00 MiB]
/dev/sda [ 200.00 GiB]
/dev/ram1 [ 64.00 MiB]
. . .
/dev/ram15 [ 64.00 MiB]
/dev/sdb [ 100.00 GiB]
2 disks
17 partitions
0 LVM physical volume whole disks
0 LVM physical volumes
En este ejemplo, observa que actualmente hay dos discos y 17 particiones. Las particiones son principalmente particiones /dev/ram*
que se utilizan en el sistema como un disco RAM para mejoras de rendimiento. Los discos en este ejemplo son /dev/sda
, que tiene 200G de espacio, y /dev/sdb
, que tiene 100G.
Advertencia: Asegúrate de verificar dos veces que los dispositivos que pretendes usar con LVM no tengan datos importantes ya escritos en ellos. Usar estos dispositivos dentro de LVM sobrescribirá los contenidos actuales. Si tienes datos importantes en tu servidor, realiza copias de seguridad antes de continuar.
Ahora que sabes los dispositivos físicos que quieres usar, márcalos como volúmenes físicos dentro de LVM utilizando el comando pvcreate
:
- sudo pvcreate /dev/sda /dev/sdb
Output Physical volume "/dev/sda" successfully created
Physical volume "/dev/sdb" successfully created
Esto escribirá un encabezado de LVM en los dispositivos para indicar que están listos para ser agregados a un grupo de volúmenes.
Verifica que LVM haya registrado los volúmenes físicos ejecutando pvs
:
- sudo pvs
Output PV VG Fmt Attr PSize PFree
/dev/sda lvm2 --- 200.00g 200.00g
/dev/sdb lvm2 --- 100.00g 100.00g
Ten en cuenta que ambos dispositivos están presentes bajo la columna PV
, que significa volumen físico.
Agregando los Volúmenes Físicos a un Grupo de Volúmenes
Ahora que has creado volúmenes físicos a partir de tus dispositivos, puedes crear un grupo de volúmenes. La mayoría de las veces, solo tienes un único grupo de volúmenes por sistema para máxima flexibilidad en la asignación. El siguiente ejemplo de grupo de volúmenes se llama LVMVolGroup
. Puedes nombrar tu grupo de volúmenes como desees.
Para crear el grupo de volúmenes y agregar ambos de tus volúmenes físicos a él, ejecuta:
- sudo vgcreate LVMVolGroup /dev/sda /dev/sdb
Output Volume group "LVMVolGroup" successfully created
Verificar nuevamente la salida de pvs
indicará que tus volúmenes físicos ahora están asociados con el 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
Lista un resumen breve del grupo de volúmenes con vgs
:
- sudo vgs
Output VG #PV #LV #SN Attr VSize VFree
LVMVolGroup 2 0 0 wz--n- 299.99g 299.99g
Tu grupo de volúmenes actualmente tiene dos volúmenes físicos, cero volúmenes lógicos, y tiene la capacidad combinada de los dispositivos subyacentes.
Creando Volúmenes Lógicos desde el Conjunto de Grupo de Volúmenes
Ahora que tienes un grupo de volúmenes disponible, puedes usarlo como un conjunto para asignar volúmenes lógicos. A diferencia de la partición convencional, al trabajar con volúmenes lógicos, no necesitas conocer la disposición del volumen ya que LVM lo mapea y maneja esto por ti. Solo necesitas proporcionar el tamaño del volumen y un nombre.
En el siguiente ejemplo, crearás cuatro volúmenes lógicos separados de tu 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 “workspace” que llenará el espacio restante
Para crear volúmenes lógicos, usa el comando lvcreate
. Debes pasar el grupo de volúmenes del que deseas extraer y puedes nombrar el volumen lógico con la opción -n
. Para especificar el tamaño directamente, puedes usar la opción -L
. Si, en cambio, deseas especificar el tamaño en términos del número de extensiones, puedes usar la opción -l
.
Crea los tres primeros volúmenes lógicos con la opción -L
:
- 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.
Puedes ver los volúmenes lógicos y su relación con el grupo de volúmenes seleccionando una 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
En este ejemplo, se agregaron las dos últimas columnas de la salida. Indica cuánto espacio está asignado a tus volúmenes lógicos.
Ahora, puedes asignar el resto del espacio en el grupo de volúmenes al volumen "workspace"
utilizando la bandera -l
, que funciona en extensiones. También puedes proporcionar un porcentaje y una unidad para comunicar mejor tus intenciones. En este ejemplo, asigna el espacio libre restante, para ello, puedes ingresar 100%FREE
:
- sudo lvcreate -l 100%FREE -n workspace LVMVolGroup
Output Logical volume "workspace" created.
Verificando la información del grupo de volúmenes con el comando personalizado vgs
, observa que has 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
El volumen workspace
ha sido creado y el grupo de volúmenes LVMVolGroup
está completamente asignado.
Formateo y Montaje de los Volúmenes Lógicos
Ahora que tienes volúmenes lógicos, puedes usarlos como dispositivos de bloque normales.
Los dispositivos lógicos están disponibles en el directorio /dev
al igual que otros dispositivos de almacenamiento. Puedes acceder a ellos en dos lugares:
/dev/nombre_del_grupo_de_volúmenes/nombre_del_volumen_lógico
/dev/mapper/nombre_del_grupo_de_volúmenes-nombre_del_volumen_lógico
Para formatear tus cuatro volúmenes lógicos con el sistema de archivos Ext4, ejecuta los siguientes comandos:
- sudo mkfs.ext4 /dev/LVMVolGroup/projects
- sudo mkfs.ext4 /dev/LVMVolGroup/www
- sudo mkfs.ext4 /dev/LVMVolGroup/db
- sudo mkfs.ext4 /dev/LVMVolGroup/workspace
Alternativamente, puedes ejecutar lo siguiente:
- 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 del formateo, crea puntos de montaje:
- sudo mkdir -p /mnt/{projects,www,db,workspace}
Luego monta los volúmenes lógicos en la ubicación apropiada:
- 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 hacer que los puntos de montaje sean persistentes, usa tu editor de texto preferido para agregarlos al archivo /etc/fstab
. El siguiente ejemplo utiliza nano
:
- sudo nano /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
Después de editar tu archivo, guarda y sal. Si estás utilizando nano
, presiona CTRL+c
, luego y
, y después ENTER
.
El sistema operativo ahora debería montar automáticamente los volúmenes lógicos de LVM al arrancar.
Conclusión
Ahora tienes una comprensión de los diversos componentes que LVM gestiona para crear un sistema de almacenamiento flexible, y cómo poner en marcha dispositivos de almacenamiento en una configuración de LVM.
Para obtener más información sobre cómo trabajar con LVM, consulta nuestra guía para usar LVM con Ubuntu 18.04.