Como configurar LVM en Linux
Como configurar LVM en Linux

Antes de ver cómo configurar LVM en Linux, explicaremos que és Logical Volume Management (LVM) es un gestor de volúmenes lógicos de discos que todas las principales distribuciones de GNU/Linux presentan. 

Este artículo explica cómo inicializar un grupo de LVM a partir de una partición como primer volumen físico del grupo y crear volúmenes lógicos desde línea de comandos en Linux. El objetivo es comprender todos los pasos involucrados en la inicialización de LVM: crear volúmenes físicos; definir grupos LVM; y crear volúmenes lógicos.

LVM tiene 3 conceptos

  • Volumen físico (PV): es un disco completo o una partición de un disco
  • Grupo de volumen (VG): corresponde a uno o más PV
  • Volumen lógico (LV): representa una parte de un VG. Un LV solo puede pertenecer a un VG. Es en un LV donde podemos crear un sistema de archivos.

Ahora que tienes los conceptos, veámos como configurar lvm en linux.

Como configurar LVM en Linux – Creando LVM

Primero, debes verificar el estado actual del disco con el siguiente comando. Como ves en la imagen hay un disco sdb0 para ser usado.

[simterm][root@todolinux ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0    8G  0 disk
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0    7G  0 part
  ├─centos-root 253:0    0  6,2G  0 lvm  /
  └─centos-swap 253:1    0  820M  0 lvm  [SWAP]
sdb               8:16   0   10G  0 disk
sr0              11:0    1 1024M  0 rom
[/simterm]

Configuración de LVM

Ahora tienes que configurar el disco sdb que usarás como volumen físico para dar soporte al grupo de LVM, vamos a usar la herramienta fdisk para crear un partición tipo «Linux LVM».

[simterm][root@todolinux ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x8fc46edc.
Orden (m para obtener ayuda): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Número de partición (1-4, default 1): 1
Primer sector (2048-20971519, valor predeterminado 2048):
Se está utilizando el valor predeterminado 2048
Last sector, +sectors or +size{K,M,G} (2048-20971519, valor predeterminado 20971519):
Se está utilizando el valor predeterminado 20971519
Partition 1 of type Linux and of size 10 GiB is set
Orden (m para obtener ayuda): t
Selected partition 1
Hex code (type L to list all codes): L
 0  Vacía           24  NEC DOS         81  Minix / old Lin bf  Solaris
 1  FAT12           27  Hidden NTFS Win 82  Linux swap / So c1  DRDOS/sec (FAT-
 2  XENIX root      39  Plan 9          83  Linux           c4  DRDOS/sec (FAT-
 3  XENIX usr       3c  PartitionMagic  84  Unidad C: ocult c6  DRDOS/sec (FAT-
 4  FAT16 <32M      40  Venix 80286     85  Linux extendida c7  Syrinx
 5  Extendida       41  PPC PReP Boot   86  Conjunto de vol da  Datos sin SF
 6  FAT16           42  SFS             87  Conjunto de vol db  CP/M / CTOS / .
 7  HPFS/NTFS/exFAT 4d  QNX4.x          88  Linux plaintext de  Utilidad Dell
 8  AIX             4e  QNX4.x segunda  8e  Linux LVM       df  BootIt
 9  AIX bootable    4f  QNX4.x tercera  93  Amoeba          e1  DOS access
 a  OS/2 Boot Manag 50  OnTrack DM      94  Amoeba BBT      e3  DOS R/O
 b  W95 FAT32       51  OnTrack DM6 Aux 9f  BSD/OS          e4  SpeedStor
 c  W95 FAT32 (LBA) 52  CP/M            a0  Hibernación de  eb  BeOS fs
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a5  FreeBSD         ee  GPT
 f  W95 Ext'd (LBA) 54  OnTrackDM6      a6  OpenBSD         ef  EFI (FAT-12/16/
10  OPUS            55  EZ-Drive        a7  NeXTSTEP        f0  inicio Linux/PA
11  FAT12 oculta    56  Golden Bow      a8  UFS de Darwin   f1  SpeedStor
12  Compaq diagnost 5c  Priam Edisk     a9  NetBSD          f4  SpeedStor
14  FAT16 oculta <3 61  SpeedStor       ab  arranque de Dar f2  DOS secondary
16  FAT16 oculta    63  GNU HURD o SysV af  HFS / HFS+      fb  VMFS de VMware
17  HPFS/NTFS ocult 64  Novell Netware  b7  BSDI fs         fc  VMKCORE de VMwa
18  SmartSleep de A 65  Novell Netware  b8  BSDI swap       fd  Linux raid auto
1b  Hidden W95 FAT3 70  DiskSecure Mult bb  Boot Wizard hid fe  LANstep
1c  Hidden W95 FAT3 75  PC/IX           be  arranque de Sol ff  BBT
1e  Hidden W95 FAT1 80  Old Minix
Hex code (type L to list all codes): 8e
Changed type of partition 'Linux' to 'Linux LVM'
Orden (m para obtener ayuda): p
Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Identificador del disco: 0x8fc46edc
Disposit. Inicio    Comienzo      Fin      Bloques  Id  Sistema
/dev/sdb1            2048    20971519    10484736   8e  Linux LVM
Orden (m para obtener ayuda): w
¡Se ha modificado la tabla de particiones!
Llamando a ioctl() para volver a leer la tabla de particiones.
Se están sincronizando los discos.
[/simterm]

Hemos creado nuestra partición de tipo «8e» (Linux LVM)y se han escrito los cambios en el disco. Tener el cuenta que al estar el servidor en uso, podría fallar la lectura de nuestra nueva tabla de particiones, para solventarlo ejecutaremos el comando partprobe. Pero si incluso ejecutando este comando aún no ves la partición creada, no queda otra opción que reiniciar.

Tras el reinicio comprueba las particiones.

[simterm][root@todolinux ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0    8G  0 disk
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0    7G  0 part
  ├─centos-root 253:0    0  6,2G  0 lvm  /
  └─centos-swap 253:1    0  820M  0 lvm  [SWAP]
sdb               8:16   0   10G  0 disk
└─sdb1            8:17   0   10G  0 part
sr0              11:0    1 1024M  0 rom
[/simterm]

Como ves ahora, aparece la nueva partición sdb1 que es con la que trabajaremos.

Asignando el volumen físico, creación de grupo y volúmenes lógicos LVM

Ahora que tienes la partición vacía, es hora de inicializar el volumen físico para nuestra partición /dev/sdb1, luego crear el grupo que llamaremos «vm_grupo» y por último crearemos los volúmenes lógicos para la maquina.

[simterm][root@todolinux ~]# pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created.
[/simterm]

Puedes visualizar la información del volúmen creado con el comnado pvdisplay.

[simterm][root@todolinux ~]# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               centos
  PV Size               <7,00 GiB / not usable 3,00 MiB
  Allocatable           yes (but full)
  PE Size               4,00 MiB
  Total PE              1791
  Free PE               0
  Allocated PE          1791
  PV UUID               P9Saju-R396-DA0A-VA3L-wcgF-wxEj-K2UgDY
  "/dev/sdb1" is a new physical volume of "<10,00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb1
  VG Name
  PV Size               <10,00 GiB
  Allocatable           NO
  PE Size               0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               PjkRAS-M0d5-MbIa-dZ3V-qET7-Wsvh-YlG3iM
[root@todolinux ~]#
[/simterm]

Ahora crearemos un grupo de vólumenes llamado «vm_grupo». Lo creamos con el siguiente comando.

[simterm][root@todolinux ~]# vgcreate vm_grupo /dev/sdb1
  Volume group "vm_grupo" successfully created
[root@todolinux ~]#
[/simterm]

Llegamos al paso en el que tenemos que crear un volumen lógico dentro del grupo de volúmenes.

[simterm][root@todolinux ~]# lvcreate -L 2G -n lv_grupo1 vm_grupo
  Logical volume "lv_grupo1" created.
[root@todolinux ~]# lvcreate -L 2G -n lv_grupo2 vm_grupo
  Logical volume "lv_grupo2" created.
[root@todolinux ~]#
[/simterm]

La utilidad lvcreate asigna como parámetro un tamaño de volumen especificado en bytes con la opción -L, el nombre de volumen lógico con la opción -n y finalmente el nombre del grupo donde se crea.

Visualizamos nuestro volumen lógico creado.

[simterm][root@todolinux ~]# lvs
  LV        VG       Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root      centos   -wi-ao----  <6,20g
  swap      centos   -wi-ao---- 820,00m
  lv_grupo1 vm_grupo -wi-a-----   2,00g
  lv_grupo2 vm_grupo -wi-a-----   2,00g
[root@todolinux ~]#
[/simterm]

Como configurar LVM en LinuxFormateando y montando volúmenes lógicos

Una vez creado nuestro volúmen lógico, toca darle formato para luego poder montarlos como filesystem. En este punto tienes varias opciones de formatos pero no nos vamos a extender y añadir el formato ext4, el más habitual.

[simterm][root@todolinux ~]# mkfs.ext4 /dev/vm_grupo/lv_grupo1
mke2fs 1.42.9 (28-Dec-2013)
Etiqueta del sistema de ficheros=
OS type: Linux
Tamaño del bloque=4096 (bitácora=2)
Tamaño del fragmento=4096 (bitácora=2)
Stride=0 blocks, Stripe width=0 blocks
131072 inodes, 524288 blocks
26214 blocks (5.00%) reserved for the super user
Primer bloque de datos=0
Número máximo de bloques del sistema de ficheros=536870912
16 bloque de grupos
32768 bloques por grupo, 32768 fragmentos por grupo
8192 nodos-i por grupo
Respaldo del superbloque guardado en los bloques:
        32768, 98304, 163840, 229376, 294912
Allocating group tables: hecho
Escribiendo las tablas de nodos-i: hecho
Creating journal (16384 blocks): hecho
Escribiendo superbloques y la información contable del sistema de ficheros: hecho
[root@todolinux ~]#
[/simterm]
NOTA: Para saber el nombre del Filesystem a dar formato, puedes hacer un lvdisplay y mirar el parámetro "LV Path"

Montamos los nuevos FileSystems. Antes de eso debe de existir una ruta que hayas creado para poder ser montado, si montamos el volumen en un directorio con contenido, perderemos el contenido de este.

[simterm][root@todolinux ~]# mkdir /lv_grupo1 /lv_grupo2
[root@todolinux ~]# mount /dev/vm_grupo/lv_grupo1 /lv_grupo1
[root@todolinux ~]# mount /dev/vm_grupo/lv_grupo2 /lv_grupo2
[root@todolinux ~]#
[/simterm]

Comprobamos que nuestros volúmenes lógicos están montados y accesibles.

[simterm][root@todolinux ~]# df -h
S.ficheros                     Tamaño Usados  Disp Uso% Montado en
/dev/mapper/centos-root          6,2G   1,2G  5,1G  19% /
devtmpfs                         908M      0  908M   0% /dev
tmpfs                            920M      0  920M   0% /dev/shm
tmpfs                            920M   8,6M  911M   1% /run
tmpfs                            920M      0  920M   0% /sys/fs/cgroup
/dev/sda1                       1014M   142M  873M  14% /boot
tmpfs                            184M      0  184M   0% /run/user/0
/dev/mapper/vm_grupo-lv_grupo1   2,0G   6,0M  1,8G   1% /lv_grupo1
/dev/mapper/vm_grupo-lv_grupo2   2,0G   6,0M  1,8G   1% /lv_grupo2
[root@todolinux ~]#
[/simterm]

Haciendo montaje persistente

Lo normal y mas común es hacer el montaje persistente, esto quiere decir, que en caso de un reinicio de la maquina, los volúmenes lógicos que hemos creado y montado anteriormente puedan estar disponibles. Para hacer persistente estos puntos de montaje tendremos que añadirlos al fichero /etc/fstab .

Necesitaremos los UUID de cada volumen, estos los obtenemos con el comnado blkid .

[simterm][root@todolinux ~]# blkid
/dev/sda1: UUID="a5c64f26-4a7d-4d65-aa4a-a2e87fe608ca" TYPE="xfs"
/dev/sda2: UUID="P9Saju-R396-DA0A-VA3L-wcgF-wxEj-K2UgDY" TYPE="LVM2_member"
/dev/sdb1: UUID="PjkRAS-M0d5-MbIa-dZ3V-qET7-Wsvh-YlG3iM" TYPE="LVM2_member"
/dev/mapper/centos-root: UUID="d482cede-f376-4f77-b77a-e715ce169635" TYPE="xfs"
/dev/mapper/centos-swap: UUID="76327786-94ea-435e-b50e-8172381e08ca" TYPE="swap"
/dev/mapper/vm_grupo-lv_grupo1: UUID="7b549cff-1896-47d0-8b25-e7102cb05629" TYPE="ext4"
/dev/mapper/vm_grupo-lv_grupo2: UUID="ce03098d-536e-416f-ad16-94f81f3e1ce9" TYPE="ext4"
[root@todolinux ~]#
[/simterm]

Añadimos al fichero /etc/fstab las líneas de nuestros volúmenes lógicos y debería de quedar de la siguiente manera.

[simterm][root@todolinux ~]# cat /etc/fstab
[root@todolinux ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Wed Sep 15 08:42:12 2021
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root                   /             xfs               defaults        0 0
UUID=a5c64f26-4a7d-4d65-aa4a-a2e87fe608ca /boot         xfs               defaults        0 0
/dev/mapper/centos-swap            swap                 swap              defaults        0 0
UUID=7b549cff-1896-47d0-8b25-e7102cb05629 /lv_grupo1    ext4              defaults        0 2
UUID=ce03098d-536e-416f-ad16-94f81f3e1ce9 /lv_grupo2    ext4              defaults        0 2
[/simterm]

Ahora ejecutamos "mount -a" y si todo está correcto, no dará ningún mensaje de error y ya tendremos nuestros volúmenes lógicos montados y preparados para que se monten automáticamente en caso de un reinicio inesperado del sistema.

Comparte

Categorías: Sistemas

Víctor Arauco

With over 15 years of experience in the IT industry, including roles in development, operations, networking, DevOps, and sales engineering. I’m a devoted husband and proud father. I'm here to simplify your journey into the DevOps world.

1 comentario

▷ Cómo instalar Apache en CentOS 7 ✔️ [2022] Paso a paso · 25 de septiembre de 2023 a las 15:44

[…] "Te dejo un enlace por si luego quieres aprender como configurar LVM en Linux" […]

Deja una respuesta

Marcador de posición del avatar

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