Introducción
En este laboratorio, aprenderá el proceso fundamental de creación y gestión de almacenamiento LVM (Administrador de Volumen Lógico) en un sistema Red Hat Enterprise Linux. Comenzará preparando un disco físico, particionándolo con parted e inicializándolo como un Volumen Físico (PV, Physical Volume) de LVM utilizando pvcreate. A continuación, agrupará este PV en un Grupo de Volumen (VG, Volume Group) con vgcreate, y luego creará un Volumen Lógico (LV, Logical Volume) flexible a partir de ese grupo utilizando lvcreate. La configuración inicial concluye con el formateo del nuevo LV con un sistema de archivos XFS y su montaje persistente para el uso del sistema.
Basándose en la configuración inicial, explorará una de las ventajas clave de LVM: la capacidad de redimensionar el almacenamiento dinámicamente. Aprenderá a extender un Grupo de Volumen existente agregando un nuevo Volumen Físico con vgextend. Posteriormente, expandirá el Volumen Lógico para utilizar este nuevo espacio utilizando lvextend y redimensionará el sistema de archivos XFS en línea con xfs_growfs para que la capacidad adicional esté inmediatamente disponible para el sistema operativo sin tiempo de inactividad.
Preparar Volúmenes Físicos con parted y pvcreate
En este paso, comenzará a gestionar el almacenamiento preparando un disco físico para su uso con el Administrador de Volumen Lógico (LVM, Logical Volume Manager). Esto implica dos etapas clave: primero, particionar el disco utilizando la utilidad parted, y segundo, inicializar estas particiones como Volúmenes Físicos (PV, Physical Volumes) de LVM con el comando pvcreate.
Descripción general del Administrador de Volumen Lógico (LVM)
LVM es una potente herramienta de gestión de almacenamiento en Linux que proporciona una capa flexible sobre los dispositivos de almacenamiento físico. En lugar de utilizar discos y particiones directamente, LVM le permite crear "grupos de volumen" abstractos a partir de uno o más dispositivos físicos, y luego crear "volúmenes lógicos" a partir de ese espacio agrupado. Esto facilita mucho el redimensionamiento del almacenamiento, la sustitución de discos y la gestión del almacenamiento de su sistema sin tiempo de inactividad.
El componente más fundamental en LVM es el Volumen Físico (PV, Physical Volume). Un PV es un dispositivo de almacenamiento físico, como una partición de disco duro o un disco completo, que ha sido inicializado para su uso por LVM.
1. Crear una partición para LVM
Antes de que un disco pueda ser utilizado por LVM, debe crear una partición en él y establecer su tipo en "LVM". Usaremos el dispositivo /dev/vdb para este ejercicio. Necesitará privilegios sudo para modificar las particiones del disco.
Primero, cree una nueva Tabla de Particiones GUID (GPT, GUID Partition Table) en el dispositivo /dev/vdb. GPT es un estándar moderno para la disposición de la tabla de particiones en un dispositivo de almacenamiento físico.
sudo parted /dev/vdb mklabel gpt
A continuación, cree una única partición de 512 MiB de tamaño. Llamaremos a esta partición lvm-part1.
sudo parted /dev/vdb mkpart lvm-part1 1MiB 513MiB
Ahora, establezca el tipo de partición en lvm. Esta bandera le dice al sistema que esta partición está destinada a ser utilizada con el Administrador de Volumen Lógico.
sudo parted /dev/vdb set 1 lvm on
Para asegurar que el kernel reconozca la nueva partición inmediatamente, ejecute el comando udevadm settle. Este comando espera a que el demonio udev procese todos los eventos del dispositivo, asegurando que la nueva partición /dev/vdb1 esté disponible.
sudo udevadm settle
Finalmente, verifique que la partición se creó correctamente imprimiendo la tabla de particiones.
sudo parted /dev/vdb print
Debería ver una salida similar a la siguiente, mostrando una partición con la bandera lvm habilitada.
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 42.9GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 538MB 537MB lvm-part1 lvm
2. Inicializar la partición como un Volumen Físico
Con la partición creada y correctamente tipificada, el siguiente paso es inicializarla como un Volumen Físico de LVM utilizando el comando pvcreate. Este comando escribe metadatos de LVM en la partición, haciéndola formalmente parte del sistema LVM.
Ejecute el siguiente comando para inicializar /dev/vdb1:
sudo pvcreate /dev/vdb1
Una operación exitosa producirá el siguiente mensaje:
Physical volume "/dev/vdb1" successfully created.
Creating devices file /etc/lvm/devices/system.devices
3. Mostrar información del Volumen Físico
Ahora puede inspeccionar el Volumen Físico recién creado. El comando pvs proporciona un resumen compacto de todos los PV en el sistema, mientras que pvdisplay ofrece una vista más detallada.
Use pvs para ver un resumen rápido:
sudo pvs
La salida enumerará su nuevo PV. Tenga en cuenta que aún no pertenece a ningún Grupo de Volumen (VG, Volume Group).
PV VG Fmt Attr PSize PFree
/dev/vdb1 lvm2 --- 512.00m 512.00m
Para más detalles, use pvdisplay:
sudo pvdisplay /dev/vdb1
Este comando muestra información detallada, incluyendo el nombre del PV, el tamaño y el identificador único (UUID).
"/dev/vdb1" is a new physical volume of "512.00 MiB"
--- NEW Physical volume ---
PV Name /dev/vdb1
VG Name
PV Size 512.00 MiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Ahora ha preparado con éxito una partición física para LVM. En el siguiente paso, utilizará este PV para crear un Grupo de Volumen.
Crear un Grupo de Volumen a partir de Volúmenes Físicos con vgcreate
En este paso, utilizará el Volumen Físico (PV, Physical Volume) que preparó en el paso anterior para crear un Grupo de Volumen (VG, Volume Group). Un Grupo de Volumen es un componente central de LVM, que actúa como un único grupo de espacio en disco gestionable a partir del cual puede crear Volúmenes Lógicos.
Entendiendo los Grupos de Volumen y las Extensiones Físicas
Un Grupo de Volumen (VG, Volume Group) agrega uno o más Volúmenes Físicos en un único grupo de almacenamiento. Piense en ello como la combinación de varios contenedores de agua más pequeños en un tanque grande. Esta abstracción es lo que le da a LVM su flexibilidad.
Este grupo de almacenamiento se divide en pequeños fragmentos de tamaño fijo llamados Extensiones Físicas (PE, Physical Extents). Por defecto, un PE es de 4 MiB. Cuando crea un Volumen Lógico más tarde, esencialmente está asignando un cierto número de estos PE del Grupo de Volumen.
1. Crear el Grupo de Volumen
Ahora, creará un Grupo de Volumen llamado my_vg utilizando el Volumen Físico /dev/vdb1. El comando para esto es vgcreate.
sudo vgcreate my_vg /dev/vdb1
Si el comando tiene éxito, verá un mensaje de confirmación:
Volume group "my_vg" successfully created
Este comando ha creado un nuevo grupo de almacenamiento llamado my_vg que contiene todo el espacio disponible de /dev/vdb1.
2. Mostrar información del Grupo de Volumen
Al igual que hizo con los Volúmenes Físicos, puede mostrar información sobre su nuevo Grupo de Volumen. El comando vgs proporciona un resumen, y vgdisplay proporciona una vista detallada.
Para obtener un resumen compacto de todos los Grupos de Volumen en el sistema, ejecute:
sudo vgs
La salida mostrará su nuevo VG, su tamaño y la cantidad de espacio libre.
VG #PV #LV #SN Attr VSize VFree
my_vg 1 0 0 wz--n- 508.00m 508.00m
Para un informe más detallado sobre su Grupo de Volumen específico, use vgdisplay:
sudo vgdisplay my_vg
Esta salida proporciona detalles completos, incluyendo el tamaño de PE, el número total de PE y cuántos aún están libres.
--- Volume group ---
VG Name my_vg
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size 508.00 MiB
PE Size 4.00 MiB
Total PE 127
Alloc PE / Size 0 / 0
Free PE / Size 127 / 508.00 MiB
VG UUID xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Observe que el PE Size es 4.00 MiB y tiene 127 Free PE, lo que corresponde al espacio total disponible en el Grupo de Volumen. Ahora ha creado con éxito un Grupo de Volumen y está listo para que se creen Volúmenes Lógicos a partir de él.
Crear y Formatear un Volumen Lógico con lvcreate y mkfs.xfs
En este paso, creará un dispositivo de bloque utilizable, conocido como Volumen Lógico (LV, Logical Volume), a partir del Grupo de Volumen que creó. Una vez que se crea el LV, sigue siendo solo espacio de almacenamiento sin formato. Para almacenar archivos en él, debe formatearlo con un sistema de archivos.
Entendiendo los Volúmenes Lógicos y los Sistemas de Archivos
Un Volumen Lógico (LV, Logical Volume) es el equivalente LVM de una partición de disco tradicional. Se crea a partir del espacio libre dentro de un Grupo de Volumen y se presenta al sistema operativo como un dispositivo de bloque estándar. Puede crear sistemas de archivos en LVs, montarlos y usarlos para almacenar datos. La principal ventaja es que los LVs se pueden redimensionar fácilmente, lo cual es mucho más difícil con las particiones físicas.
Un sistema de archivos es una estructura de datos que el sistema operativo utiliza para controlar cómo se almacenan y recuperan los datos. Organiza el espacio sin formato de un dispositivo como un LV en archivos y directorios. Para este laboratorio, usaremos XFS, que es un sistema de archivos con registro de alto rendimiento que es el predeterminado para Red Hat Enterprise Linux.
1. Crear el Volumen Lógico
Ahora, creará un Volumen Lógico de 256 MiB llamado my_lv desde el Grupo de Volumen my_vg. El comando para esto es lvcreate.
-n my_lv: Especifica el nombre para el nuevo LV.-L 256M: Establece el tamaño del LV en 256 Megabytes.my_vg: El nombre del Grupo de Volumen desde el cual crear el LV.
Ejecute el siguiente comando:
sudo lvcreate -n my_lv -L 256M my_vg
Un comando exitoso producirá esta salida:
Logical volume "my_lv" created.
2. Verificar la Creación del Volumen Lógico
Puede inspeccionar su nuevo LV utilizando los comandos lvs y lvdisplay.
Para ver un resumen de todos los LVs, ejecute:
sudo lvs
La salida mostrará su nuevo LV, my_lv, dentro del grupo my_vg.
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
my_lv my_vg -wi-a----- 256.00m
Para una vista detallada, puede especificar la ruta completa del LV. La ruta a un LV es típicamente /dev/VG_NAME/LV_NAME.
sudo lvdisplay /dev/my_vg/my_lv
Esto proporciona información detallada, incluyendo la Ruta del LV, que necesitará para el siguiente paso.
--- Logical volume ---
LV Path /dev/my_vg/my_lv
LV Name my_lv
VG Name my_vg
LV UUID xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
LV Write Access read/write
LV Creation host, time host, 2023-10-27 10:30:00 +0000
LV Status available
## open 0
LV Size 256.00 MiB
Current LE 64
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:2
3. Formatear el Volumen Lógico con un Sistema de Archivos XFS
Ahora, formateará el Volumen Lógico my_lv con el sistema de archivos XFS utilizando el comando mkfs.xfs. Esto prepara el volumen para almacenar archivos.
sudo mkfs.xfs /dev/my_vg/my_lv
El comando mostrará detalles sobre el sistema de archivos que está creando.
meta-data=/dev/my_vg/my_lv isize=512 agcount=4, agsize=16384 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1
data = bsize=4096 blocks=65536, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
Su Volumen Lógico ahora está formateado y listo para ser montado y utilizado. Hará esto en el siguiente paso.
Montar Persistentemente el Volumen Lógico usando /etc/fstab
En este paso, hará que el Volumen Lógico que creó y formateó sea accesible para el sistema. Esto implica dos acciones: crear un directorio para que sirva como "punto de montaje" y luego configurar el sistema para que adjunte automáticamente el Volumen Lógico a este directorio cada vez que se inicia.
Entendiendo el Montaje y /etc/fstab
Un dispositivo de bloque formateado, como su Volumen Lógico my_lv, no es directamente utilizable hasta que se monta. Montar es el proceso de adjuntar un sistema de archivos a un directorio específico en el árbol principal del sistema de archivos. Una vez montado, puede navegar dentro de ese directorio para leer y escribir archivos en el dispositivo.
Para asegurar que el sistema de archivos se monte automáticamente después de un reinicio, debe agregar una entrada para él en el archivo /etc/fstab (tabla del sistema de archivos). Este archivo contiene una lista de todos los discos y particiones que el sistema debe montar en el momento del arranque.
1. Crear un Punto de Montaje
Un punto de montaje es simplemente un directorio vacío que servirá como la raíz de su nuevo sistema de archivos. Crearemos un directorio llamado /data para este propósito.
sudo mkdir /data
2. Agregar una Entrada a /etc/fstab para el Montaje Persistente
Ahora, necesita indicarle al sistema que monte su LV en el directorio /data automáticamente. Agregará una nueva línea al archivo /etc/fstab. Cada línea en este archivo tiene seis campos:
- Dispositivo: El dispositivo a montar. En nuestro caso,
/dev/my_vg/my_lv. - Punto de Montaje: El directorio donde montarlo. Aquí, es
/data. - Tipo de Sistema de Archivos: El tipo de sistema de archivos, que es
xfs. - Opciones de Montaje: Opciones para el montaje.
defaultses un conjunto estándar de opciones adecuado para la mayoría de los casos. - Dump: Utilizado por la utilidad
dumppara decidir si se debe hacer una copia de seguridad del sistema de archivos.0significa deshabilitar. - Pass: Utilizado por
fsckpara determinar el orden de comprobación de los sistemas de archivos al arrancar.0significa no comprobar.
Usaremos el comando echo combinado con sudo tee -a para agregar la línea correcta a /etc/fstab sin necesidad de un editor de texto.
echo '/dev/my_vg/my_lv /data xfs defaults 0 0' | sudo tee -a /etc/fstab
Puede verificar que la línea se agregó correctamente viendo el contenido del archivo:
cat /etc/fstab
3. Montar el Sistema de Archivos
Ahora que la entrada existe en /etc/fstab, puede usar el comando mount para montarlo inmediatamente. Debido a que el punto de montaje /data está listado en /etc/fstab, solo necesita proporcionar el nombre del directorio.
sudo mount /data
El sistema leerá /etc/fstab, encontrará la entrada para /data y montará el dispositivo correspondiente.
4. Verificar el Montaje
Para confirmar que el sistema de archivos se ha montado correctamente, puede usar el comando df (disk free) con la opción -h (legible por humanos).
df -h /data
La salida debería mostrar su volumen lógico montado en /data, con su tamaño total y espacio disponible.
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/my_vg-my_lv 251M 28M 224M 11% /data
También puede crear un archivo de prueba para asegurarse de tener acceso de escritura:
echo "¡Mi LVM está funcionando!" | sudo tee /data/test.txt
Luego, lea el archivo para confirmar que se escribió:
cat /data/test.txt
¡Mi LVM está funcionando!
Su Volumen Lógico ahora está montado y estará disponible automáticamente cada vez que se inicie el sistema.
Extender el Grupo de Volumen y el Volumen Lógico con vgextend y lvextend
En este paso, experimentará una de las características más poderosas de LVM: la capacidad de aumentar dinámicamente el tamaño de su almacenamiento. Agregará una nueva partición de disco físico a su Grupo de Volumen existente para expandir su capacidad total, y luego extenderá su Volumen Lógico para usar parte de ese nuevo espacio.
Entendiendo la Extensión de Almacenamiento
Una razón principal para usar LVM es su flexibilidad. Cuando se queda sin espacio, no necesita realizar una migración de datos compleja. En cambio, simplemente puede agregar otro disco físico (o partición) al Grupo de Volumen y luego aumentar sus Volúmenes Lógicos según sea necesario. Todo esto se puede hacer en línea, sin desmontar el sistema de archivos.
vgextend: Este comando agrega uno o más Volúmenes Físicos a un Grupo de Volumen existente, aumentando su tamaño total.lvextend: Este comando aumenta el tamaño de un Volumen Lógico, tomando espacio de las extensiones libres dentro de su Grupo de Volumen.
1. Preparar un Nuevo Volumen Físico
Para extender el Grupo de Volumen, primero necesita un nuevo Volumen Físico. Crearemos una segunda partición en el dispositivo /dev/vdb, tal como lo hizo en el primer paso.
Primero, cree una nueva partición de 512 MiB. La colocaremos inmediatamente después de la primera.
sudo parted /dev/vdb mkpart lvm-part2 513MiB 1025MiB
Luego, establezca el tipo de partición en lvm.
sudo parted /dev/vdb set 2 lvm on
Asegúrese de que el kernel reconozca la nueva partición, /dev/vdb2.
sudo udevadm settle
Finalmente, inicialice esta nueva partición como un Volumen Físico.
sudo pvcreate /dev/vdb2
Debería ver el mensaje de éxito:
Physical volume "/dev/vdb2" successfully created.
2. Extender el Grupo de Volumen
Ahora, agregue el nuevo Volumen Físico (/dev/vdb2) a su Grupo de Volumen existente (my_vg) usando el comando vgextend.
sudo vgextend my_vg /dev/vdb2
El mensaje de confirmación indicará el éxito:
Volume group "my_vg" successfully extended
Puede verificar el cambio con el comando vgs. Observe que VSize y VFree han aumentado significativamente.
sudo vgs my_vg
VG #PV #LV #SN Attr VSize VFree
my_vg 2 1 0 wz--n- 1022.00m 766.00m
El Grupo de Volumen my_vg ahora abarca dos particiones físicas y tiene más espacio libre disponible.
3. Extender el Volumen Lógico
Con más espacio disponible en el Grupo de Volumen, ahora puede extender su Volumen Lógico. Aumentemos el tamaño de my_lv de 256 MiB a un nuevo tamaño total de 400 MiB.
El comando lvextend con la opción -L establece el nuevo tamaño absoluto del volumen.
sudo lvextend -L 400M /dev/my_vg/my_lv
La salida confirmará la operación de redimensionamiento.
Size of logical volume my_vg/my_lv changed from 256.00 MiB (64 extents) to 400.00 MiB (100 extents).
Logical volume my_vg/my_lv successfully resized.
Verifique el nuevo tamaño del Volumen Lógico con lvs:
sudo lvs /dev/my_vg/my_lv
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
my_lv my_vg -wi-ao---- 400.00m
Importante: Ha extendido con éxito el Volumen Lógico (el dispositivo de bloque), pero el sistema de archivos XFS que reside en él aún no es consciente de este nuevo espacio. Si verifica el tamaño del sistema de archivos montado, aún informará el tamaño anterior.
df -h /data
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/my_vg-my_lv 251M 28M 224M 11% /data
En el siguiente paso, redimensionará el sistema de archivos para llenar el espacio recién disponible en el Volumen Lógico.
Redimensionar el Sistema de Archivos XFS con xfs_growfs
En este paso final, completará el proceso de extensión de almacenamiento redimensionando el sistema de archivos XFS para que sea consciente del espacio adicional que asignó a su Volumen Lógico subyacente. Este es el último paso crucial que hace que el nuevo espacio sea utilizable para almacenar archivos.
Entendiendo el Redimensionamiento del Sistema de Archivos
Cuando extiende un Volumen Lógico, solo está aumentando el tamaño del contenedor (el dispositivo de bloque). El sistema de archivos dentro de ese contenedor permanece en su tamaño original y no es consciente del nuevo espacio no utilizado al final del dispositivo.
Para un sistema de archivos XFS, el comando xfs_growfs se utiliza para expandir el sistema de archivos para llenar el dispositivo subyacente. Una gran ventaja de XFS es que esta operación se puede realizar en línea, mientras el sistema de archivos está montado y en uso, sin necesidad de tiempo de inactividad.
1. Aumentar el Sistema de Archivos XFS
El comando xfs_growfs toma el punto de montaje del sistema de archivos como su argumento. En su caso, el punto de montaje es /data.
Ejecute el siguiente comando para expandir el sistema de archivos:
sudo xfs_growfs /data
El comando mostrará información sobre el cambio, indicando el número antiguo y nuevo de bloques de datos.
meta-data=/dev/mapper/my_vg-my_lv isize=512 agcount=4, agsize=16384 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1
data = bsize=4096 blocks=65536, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 65536 to 102400
La línea clave es data blocks changed from 65536 to 102400, que confirma que el sistema de archivos ha crecido.
2. Verificar el Nuevo Tamaño del Sistema de Archivos
Ahora, ejecute el comando df -h nuevamente para verificar que el tamaño del sistema de archivos refleje el cambio.
df -h /data
La salida ahora debería mostrar el nuevo tamaño, más grande, que es aproximadamente 400 MiB.
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/my_vg-my_lv 395M 29M 367M 8% /data
También puede verificar que el archivo de prueba que creó anteriormente todavía esté intacto:
cat /data/test.txt
¡Mi LVM está funcionando!
¡Felicidades! Ha completado con éxito todo el flujo de trabajo de LVM: desde particionar un disco físico y crear Volúmenes Físicos, hasta construir un Grupo de Volumen, crear un Volumen Lógico, formatearlo y montarlo, y finalmente, extenderlo dinámicamente en línea sin ninguna pérdida de datos.
Resumen
En este laboratorio, aprendió el flujo de trabajo fundamental para configurar el almacenamiento utilizando el Administrador de Volumen Lógico (LVM, por sus siglas en inglés) en RHEL. Comenzó preparando un disco físico, usando parted para crear una partición con la bandera lvm establecida, y luego inicializándolo como un Volumen Físico (PV, por sus siglas en inglés) con pvcreate. Después de esto, agrupó el PV en un nuevo Grupo de Volumen (VG, por sus siglas en inglés) usando vgcreate. Desde este VG, creó un Volumen Lógico (LV, por sus siglas en inglés) con lvcreate, lo formateó con un sistema de archivos XFS usando mkfs.xfs, y lo configuró para el montaje persistente agregando una entrada a /etc/fstab.
El laboratorio también demostró la flexibilidad de LVM guiándolo a través del proceso de extensión de un volumen lógico existente. Esto implicó preparar un nuevo volumen físico, agregarlo al grupo de volumen con vgextend para aumentar el espacio total disponible, y luego extender el propio volumen lógico con lvextend. Finalmente, redimensionó el sistema de archivos XFS en línea usando xfs_growfs para hacer que el espacio de almacenamiento adicional sea utilizable por el sistema operativo, completando el proceso de extremo a extremo de la gestión dinámica del almacenamiento.



