ASIR2 DOC 2025/26

Assignmets docs for asir2

View on GitHub

Gestor de Volúmenes lógicos (LVM)

Contexto

Nuestras necesidades de almacenamiento cambian dependiendo del momento, en muchos casos debemos aumentar el tamaño de nuestro almacenamiento empleando el menor tiempo posible. Para ello necesitamos un esquema de almacenamiento flexible. LVM es una capa de abstracción que permite gestionar el almacenamiento de manera más flexible que el particionado tradicional. Divide el espacio en tres componentes: Volúmenes Físicos (PV), que son las unidades de almacenamiento subyacentes; Grupos de Volúmenes (VG), que agrupan los PV en un "disco virtual"; y Volúmenes Lógicos que son las particiones que el sistema operativo utiliza. Sus principales ventajas incluyen la capacidad de redimensionar volúmenes dinámicamente sin parar el sistema

Objetivos

Pasos previos

Creación y manejo de volúmenes en incus VM

Para trabajar con dispositivos de bloques es necesario crear una máquina virtual en incus, esta a diferencia de los contenedores de sistema dispone de su propio kernel, pero desde el punto de vista del usuario la interfaz de comandos es la misma.

incus$ incus launch images:ubuntu/24.04 lvm --vm
incus$ incus exec lvm -- bash -c 'apt-get update && apt-get -y install  aptitude wget bash-completion gpg nano xsel vim bats git lvm2'

Incus almacena los datos (imágenes,máquinas virutales, contenedores y custom) en pools divididos en volúmenes de diferentes tipos. Por defecto incus crea un pool denominado default. Podemos hacer uso de este pool para crear nuestros volumenes que simularán los discos de nuestro RAID.

Para crear los dispositivos de bloques (discos) utilizaremos los siguientes comandos en incus

incus$ incus storage volume list <pool>
incus$ incus storage volume create <pool> disk_a size=10MiB --type=block
incus$ incus storage volume delete <pool> disk_a
incus$ incus storage volume list <pool> -c tnc

TYPE NAME
custom disk_b
custom disk_c
custom disk_d
custom disk_e
custom disk_f
custom disk_g

Una vez creado el volumen, lo asociamos a una instancia

incus$ incus storage volume attach <pool> disk_a <instance>
incus$ incus storage volume detach <pool> disk_a <instance>

Podemos ver los dispositivos de bloques que tiene nuestra instancia con el comando lsblk

Actividad

Crea una instancia de máquina virtual denominada lvm y añadele tres volúmenes de 20MiB y 2 volúmentes de 10MiB

##lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda      8:0    0   10G  0 disk 
├─sda1   8:1    0  100M  0 part /boot/efi
└─sda2   8:2    0  9.9G  0 part /
sdb      8:16   0   10M  0 disk 
sdc      8:32   0   10M  0 disk 
sdd      8:48   0   10M  0 disk 
sde      8:64   0   10M  0 disk 

Vamos a simular que los dispositivos son de diferente naturaleza física y unos son discos duros magnéticos HDD y otros SSD.

Device Type
/dev/sdb HDD
/dev/sdc HDD
/dev/sdd HDD
/dev/sde SSD
/dev/sdf SSD

Utilizaremos los dispositivos SSD para las aplicaciones que requieran acceso más rápido al sistema de almacenamiento. Utiliza lvm para crear el siguiente esquema de almacenamiento.

lvm schema

Evaluable

Anexo I. Comandos LVM

Se enumeran a continuación los comandos relacionados con la creción, eliminación y visualización de los volúmenes físicos, grupo de volúmenes y volúmenes lógicos.

Volúmenes lógicos

pvcreate /dev/sdX /dev/sdX
pvremove /dev/sdX
pvdisplay /dev/sdX
pvscan
pvs
root@lvm:~# pvs
  PV         VG Fmt  Attr PSize  PFree 
  /dev/sdb      lvm2 ---  10.00m 10.00m
  /dev/sdc      lvm2 ---  10.00m 10.00m
  /dev/sdd      lvm2 ---  10.00m 10.00m
  /dev/sde      lvm2 ---  10.00m 10.00m

Grupo de volúmenes Cuando se utilizan volúmenes físicos para crear un grupo de volumen, sl espacio de disco se divide en extensiones de 4MB de forma predeterminada. El valor de la extensión es la cantidad mínima por la cual el volumen lógico puede ser incrementado o reducido.

Si el valor predeterminado no es el deseado, el tamaño de la extensión puede ser especificado con la opción -s del comando vgcreate

vgcreate -s <PE_size> <volumen group> /dev/sdX /dev/sdX
vgreduce <volumen group> <phisical volume>
vgextend <volumen group> <phisical volume>
vgremove <volumen group>
vgdisplay <volumn group>
vgs

Volúmenes lógicos

lvcreate -L 10G -n <name> <volumen group>
lvcreate -l 20%VG -n <name> <volumen group>
lvcreate -l 100%FREE -n <name> <volumen group>
lvextend -l +10%VG <path logical volume> #/dev/volumen_group/logical_volumen
lvs

Crea y monta sistema de archivos

mkfs.ext4 /dev/volume_group/logical_volume
mount /dev/volume_group/logical_volume <local_mount_point>

Edita el fichero /etc/fstab para hacer el punto de montaje permanente.

Implementación RAID de LVM

lvcreate --type raid1 -m 1 -L 1G -n raid1 my_vg
#three stripes + 1 parity
lvcreate --type raid5 -i 3 -L 1G -n raid5 my_vg 
#three stripes + 2 parity
lvcreate --type raid6 -i 3 -L 1G -n raid6 my_vg

Anexo II. Referencias