Etiqueta: LVM

Montar Pool LVM para KVM

Por default KVM guarda las imágenes de los discos virtuales en /var, si dicho directorio pertenece a la partición raíz esto puede ocasionar que el disco del equipo anfitrión se llene. Para evitar este problema, las imágenes de discos virtuales pueden montarse en un Volumen Group.

Llegados a este punto he montado un disco duro de 1TB, el disco está en /dev/sda, con los siguientes comandos crearemos la tabla de partición y la etiqueta lvm.

sudo parted /dev/sda mklabel msdos
sudo parted /dev/sda mkpart primary 0% 100%
sudo parted /dev/sda set 1 lvm on

Creamos el Volumen Group.

sudo pvcreate /dev/sda1
sudo vgcreate vglab /dev/sda1
[tusysadmin@localhost ~]$ sudo vgs
  VG     #PV #LV #SN Attr   VSize    VFree   
  fedora   1   1   0 wz--n- <110.20g       0 
  vglab    1   1   0 wz--n- <931.51g <831.51g

Abrimos virt-manager y en el menú Editar seleccionamos Detalles de la conexión, en la pestaña de Almacenamiento agregamos un nuevo pool.

Podemos listar los pools disponibles en el equipo anfitrión para corroborar que ha sido exitosamente añadido.

[tusysadmin@localhost ~]$ sudo virsh pool-list
 Nombre      Estado   Inicio automático
-----------------------------------------
 default     activo   si
 s.o         activo   si
 volumenes   activo   si

Ahora, en vez de almacenar los discos virtuales en /var podrán ser guardados en un LVM, solo debemos asegurarnos de seleccionar la opción correcta al momento de crear la maquina virtual.

Administrar para crear el LVM

Image 1 De 5

Validamos la creación del LVM.

[tusysadmin@localhost ~]$ sudo lvdisplay vglab/Maquina1
  --- Logical volume ---
  LV Path                /dev/vglab/Maquina1
  LV Name                Maquina1
  VG Name                vglab
  LV UUID                vnOjXX-981U-tbej-jPQl-C6mG-ft0p-E34Ki9
  LV Write Access        read/write
  LV Creation host, time localhost, 2021-10-03 22:48:27 -0500
  LV Status              available
  # open                 1
  LV Size                30.00 GiB
  Current LE             7680
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:2

Extender Volumen

En una entrada anterior se configuraron tres discos para crear un VG (Volumen Group) y sobre él dos volúmenes con diferentes sistemas de archivos, en esta entrada agregaremos un nuevo disco que permita incrementar el tamaño del VG y a su vez el de los volúmenes.

Hasta el momento esta es la configuración de los discos en donde están montadas las particiones, el volumen lv1 tiene un sistema de archivos ext4 y el volumen lv2 xfs.

[tusysadmin@lvm ~]$ sudo lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0              11:0    1 1024M  0 rom  
vda             252:0    0    7G  0 disk 
├─vda1          252:1    0    1G  0 part /boot
└─vda2          252:2    0    6G  0 part 
  ├─centos-root 253:0    0  5.3G  0 lvm  /
  └─centos-swap 253:1    0  716M  0 lvm  [SWAP]
vdb             252:16   0   10G  0 disk 
└─vdb1          252:17   0   10G  0 part 
  └─vg1-lv1     253:2    0   12G  0 lvm  /lv1
vdc             252:32   0   10G  0 disk 
└─vdc1          252:33   0   10G  0 part 
  ├─vg1-lv1     253:2    0   12G  0 lvm  /lv1
  └─vg1-lv2     253:3    0   12G  0 lvm  /lv2
vdd             252:48   0   10G  0 disk 
└─vdd1          252:49   0   10G  0 part 
  └─vg1-lv2     253:3    0   12G  0 lvm  /lv2

[tusysadmin@lvm ~]$ sudo blkid | grep lv
/dev/mapper/vg1-lv1: UUID="53912dab-4d9d-4449-b366-aee3766c42c6" TYPE="ext4" 
/dev/mapper/vg1-lv2: UUID="14928bc2-7382-43e5-9f55-579e4115eaf1" TYPE="xfs"

El Volumen Group vg1 aun cuenta con espacio suficiente como para extender los volúmenes lógicos pero en esta entrada anexaremos la parte de agregar más discos para crecer el VG.

[tusysadmin@lvm ~]$ sudo vgs vg1
  VG  #PV #LV #SN Attr   VSize   VFree 
  vg1   3   2   0 wz--n- <29.99g <5.99g
[tusysadmin@lvm ~]$ 

Al esquema anterior se le ha agregado un disco de 5GB que está en el dispositivo vde. Como siempre, se crea la tabla de particiones y la etiqueta de lvm.

sudo parted /dev/vdb mklabel msdos
sudo parted /dev/vdb mkpart primary 0% 100%
sudo parted /dev/vdb set 1 lvm on

Para después agregar esta nueva partición al VG.

sudo vgextend vg1 /dev/vde1
[tusysadmin@lvm ~]$ sudo vgs vg1
  VG  #PV #LV #SN Attr   VSize  VFree 
  vg1   4   2   0 wz--n- 34.98g 10.98g

Como puede verse, el tamaño del VG aumentó y ya se cuenta con 10.98G para extender los volúmenes, en este momento son de 12G cada uno.

sudo lvs vg1
  LV   VG  Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv1  vg1 -wi-ao---- 12.00g                                                    
  lv2  vg1 -wi-ao---- 12.00g  

Para conservar equidad, a cada volumen se le asignan 5G.

sudo lvextend -L+5G /dev/vg1/lv1
sudo lvextend -L+5G /dev/vg1/lv2

Finalmente, se incrementan los sistemas de archivos, primero ext4.

sudo resize2fs /dev/vg1/lv1 
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/vg1/lv1 is mounted on /lv1; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 3
The filesystem on /dev/vg1/lv1 is now 4456448 blocks long.

Después incrementamos xfs.

sudo xfs_growfs /dev/vg1/lv2
meta-data=/dev/mapper/vg1-lv2    isize=512    agcount=4, agsize=786432 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=3145728, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               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 3145728 to 4456448

Al revisar el espacio usado encontramos ambos volúmenes con su respectivo tamaño.

[tusysadmin@lvm ~]$ df -h
S.ficheros              Tamaño Usados  Disp Uso% Montado en
devtmpfs                  485M      0  485M   0% /dev
tmpfs                     496M      0  496M   0% /dev/shm
tmpfs                     496M   6.9M  489M   2% /run
tmpfs                     496M      0  496M   0% /sys/fs/cgroup
/dev/mapper/centos-root   5.1G   1.5G  3.4G  32% /
/dev/vda1                 976M   168M  742M  19% /boot
/dev/mapper/vg1-lv1        17G    44M   16G   1% /lv1
/dev/mapper/vg1-lv2        17G    33M   17G   1% /lv2
tmpfs                     100M      0  100M   0% /run/user/1000

LVM

Otra forma de configurar unidades de almacenamiento y que trabajen de manera conjunta, flexible y dinámica es a través de volúmenes lógicos. El Administrador de Volúmenes Lógicos (LVM) crea un nivel de abstracción sobre las unidades de disco; que en realidad son particiones concentradas en un pool que posteriormente se presentan en volumen lógico o partición.

Como se puede ver en la imagen anterior los discos son agregados a un grupo para posteriormente presentarse en uno o más volúmenes lógicos, esto es más flexible que presentar una partición por disco. A un servidor se le han presentado 3 discos duros de 10 GB para crear un grupo y gestionar el almacenamiento.

[tusysadmin@lvm ~]$ sudo lsblk
 NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
 sr0              11:0    1 1024M  0 rom  
 vda             252:0    0    7G  0 disk 
 ├─vda1          252:1    0    1G  0 part /boot
 └─vda2          252:2    0    6G  0 part 
   ├─centos-root 253:0    0  5.3G  0 lvm  /
   └─centos-swap 253:1    0  716M  0 lvm  [SWAP]
 vdb             252:16   0   10G  0 disk 
 vdc             252:32   0   10G  0 disk 
 vdd             252:48   0   10G  0 disk 

A estos discos se les crea una tabla de particiones, la partición y la etiqueta de lvm.

sudo parted /dev/vdb mklabel msdos
sudo parted /dev/vdb mkpart primary 0% 100%
sudo parted /dev/vdb set 1 lvm on
sudo parted /dev/vdc mklabel msdos
sudo parted /dev/vdc mkpart primary 0% 100%
sudo parted /dev/vdc set 1 lvm on
sudo parted /dev/vdd mklabel msdos
sudo parted /dev/vdd mkpart primary 0% 100%
sudo parted /dev/vdd set 1 lvm on

Las particiones /dev/vdb1, /dev/vdc1 y /dev/vdd1 son agregadas como pvs, para ser agregadas al VG vg1.

sudo pvcreate /dev/vdb1 /dev/vdc1 /dev/vdd1
sudo vgcreate vg1 /dev/vdb1 /dev/vdc1 /dev/vdd1
[tusysadmin@lvm ~]$ sudo vgs
  VG     #PV #LV #SN Attr   VSize   VFree  
  centos   1   2   0 wz--n-  <6.00g   4.00m
  vg1      3   0   0 wz--n- <29.99g <29.99g

Este VG dispone de la suma de las tres particiones, se creara un LVM de 12GB que sera montado en la ruta /lv1.

sudo lvcreate -n lv1 -L 12G vg1
sudo mkdir /lv1
sudo mkfs.ext4 /dev/vg1/lv1
sudo mount /dev/vg1/lv1 /lv1

Para montar esta partición al iniciar el servidor se modifica el archivo /etc/fstab, como root escribimos.

echo "/dev/vg1/lv1   /lv1   ext4   defaults 1 2" >> /etc/fstab

LVM Con XFS

Hasta este momento se cuenta con una partición que no utiliza todo el espacio de los discos montados, por lo que el volumen VG1 contará con espacio suficiente, para revisar el espacio con disponible usamos vgs.

[tusysadmin@lvm ~]$ sudo vgs
  VG     #PV #LV #SN Attr   VSize   VFree  
  centos   1   2   0 wz--n-  <6.00g   4.00m
  vg1      3   1   0 wz--n- <29.99g <17.99g

Con los 17.99GB disponibles se creara un nuevo LVM, pero esta vez con un sistema de archivos xfs.

sudo lvcreate -n lv2 -L 12G vg1
sudo mkdir /lv2
sudo mkfs.xfs /dev/vg1/lv2
sudo mount /dev/vg1/lv2

Al igual que en la otra partición, se modifica el archivo /etc/fstab para que sea montada al momento de arrancar el servidor. Como root escribimos.

echo "/dev/vg1/lv2   /lv2   xfs   defaults 1 2" >> /etc/fstab

Y con esto, tenemos dos particiones con diferentes sistemas de archivos, el VG cuenta con espacio libre para incrementar alguno de los volúmenes en caso de requerirse.

tusysadmin@lvm ~]$ sudo vgdisplay vg1
  --- Volume group ---
  VG Name               vg1
  System ID             
  Format                lvm2
  Metadata Areas        3
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                3
  Act PV                3
  VG Size               <29.99 GiB
  PE Size               4.00 MiB
  Total PE              7677
  Alloc PE / Size       6144 / 24.00 GiB
  Free  PE / Size       1533 / <5.99 GiB
  VG UUID               eyvICn-sJmi-x5aQ-J20q-szo2-1ynY-FjSaL5

En entradas posteriores se mostrara como incrementar estas particiones así como la adición de un nuevo disco.

© 2025

Tema por Anders NorenArriba ↑