Laboratori: Desplegament d’un servidor web amb LVM

En aquest laboratori aprendrem a utilitzar LVM (Logical Volume Manager) per administrar l’emmagatzematge d’un servidor web. Simularem un entorn real on diferents tipus de dades (codi font, dades de la web, i fitxers temporals) es gestionen mitjançant volums lògics, millorant la flexibilitat i escalabilitat del sistema.

🎯 Objectius

  1. Entendre el funcionament i components de LVM: PV, VG i LV.
  2. Crear, formatar i muntar volums lògics per a un servei web.
  3. Ampliar o reduir la mida dels volums.
  4. Crear i utilitzar snapshots per fer còpies de seguretat en calent.

🧱 Escenari

Gestionarem una aplicació web desplegada en un servidor AlmaLinux.

Directori Funció Exemple de contingut
/opt/webapp/sources Codi font Django Python, HTML, JS
/opt/webapp/data Dades, imatges, logs CSV, JPG, LOG
/opt/webapp/run Fitxers temporals i sockets PID, sock

🧩 Preparació de la màquina virtual

  1. Crea una nova MV amb AlmaLinux i un disc principal de 20 GB.
    Durant la instal·lació, selecciona LVM com a esquema de particionat.

  2. Afegeix dos discos addicionals de 20 GB cadascun (ex. nvme0n2 i nvme0n3).

  3. Comprova l’estat inicial del sistema:

    lsblk

    Hauries de veure una sortida semblant a:

    nvme0n1     20G  
    ├─nvme0n1p1 600M  /boot/efi
    ├─nvme0n1p2   1G  /boot
    ├─nvme0n1p3   2G  [SWAP]
    └─nvme0n1p4 16.4G /
    nvme0n2     20G
    nvme0n3     20G

🧠 Activitat 1. Creació dels volums físics i grup de volums

Pas 1: Crear els volums físics

pvcreate /dev/nvme0n2 /dev/nvme0n3
Alerta💡 Comprova l’estat dels PV

Quin és l’estat del camp Allocatable abans de crear el grup de volums?

Pas 2: Crear el grup de volums vg_webapp

vgcreate vg_webapp /dev/nvme0n2 /dev/nvme0n3
Alerta💡 Comprova l’estat del VG
  • Quina és la mida total del grup de volums vg_webapp?
  • Quants extents té el VG i quina és la mida de cada extent?

⚙️ Activitat 2. Creació i muntatge dels volums lògics

Pas 1: Crear els LV

lvcreate -L 1G -n lv_sources vg_webapp
lvcreate -L 10G -n lv_data vg_webapp
lvcreate -L 1G -n lv_run vg_webapp

Pas 2: Formatar els LV amb sistemes de fitxers

mkfs.xfs /dev/vg_webapp/lv_sources
mkfs.ext4 /dev/vg_webapp/lv_data
mkfs.xfs /dev/vg_webapp/lv_run
Alerta💡 Discussió

Per què podria ser interessant utilitzar xfs per a /run i ext4 per a /data o al revés?

Pas 3: Muntar els volums

mkdir -p /opt/webapp/{sources,data,run}
mount /dev/vg_webapp/lv_sources /opt/webapp/sources
mount /dev/vg_webapp/lv_data /opt/webapp/data
mount /dev/vg_webapp/lv_run /opt/webapp/run
Alerta💡 Comprova els muntatges
  • Utilitza df -h per verificar que els volums estan muntats correctament.
  • Afegeix les entrades corresponents a /etc/fstab per muntar-los automàticament en reiniciar.

📏 Activitat 3. Redimensionar volums lògics

Escenari 1: Augmentar lv_data de 10 GB a 20 GB

Quan s’amplia un volum lògic, s’afegeixen nous extents al final del volum. Si el sistema de fitxers és ext4, cal actualitzar-ne la taula d’espai amb resize2fs.

lvextend -L +10G /dev/vg_webapp/lv_data
resize2fs /dev/vg_webapp/lv_data

Escenari 2: Reduir lv_run de 1 GB a 500 MB

El sistema de fitxers xfs no permet reduir volums.

umount /opt/webapp/run
lvremove /dev/vg_webapp/lv_run
lvcreate -L 500M -n lv_run vg_webapp
mkfs.xfs -f /dev/vg_webapp/lv_run
mount /dev/vg_webapp/lv_run /opt/webapp/run
Alerta💡 Reduir o Ampliar

Què creus que és més segur: redimensionar un volum lògic cap amunt o cap avall? Per què?

💾 Activitat 4. Creació d’snapshots

Els snapshots LVM permeten fer còpies de seguretat en calent del sistema de fitxers. Aquest mecanisme utilitza la tècnica Copy-on-Write (COW) per mantenir versions consistents de les dades mentre s’estan utilitzant.

Pas 1: Crear dades

echo "Hello, World1!" > /opt/webapp/data/file1.txt
echo "Hello, World2!" > /opt/webapp/data/file2.txt
echo "Hello, World3!" > /opt/webapp/data/file3.txt

Pas 2: Crear snapshot

lvcreate -L 1G -s -n snap_data /dev/vg_webapp/lv_data

Pas 3: Muntar snapshot

mkdir /snaps
mount /dev/vg_webapp/snap_data /snaps
diff -r /opt/webapp/data /snaps

Pas 4: Modificar dades originals i comparar

dd if=/dev/zero of=/opt/webapp/data/file3.txt bs=1M count=100
diff -r /opt/webapp/data /snaps
Alerta💡 Reflexió: Mida snapshot

Què passa amb la mida de l’snapshot quan s’escriuen noves dades?

Pas 5: Crear un segon snapshot i comprovar versions

lvcreate -L 1G -s -n snap_data2 /dev/vg_webapp/lv_data
umount /snaps
mount /dev/vg_webapp/snap_data2 /snaps
ls -li /opt/webapp/data /snaps/
AlertaInodes

Els fitxers inalterats comparteixen inode; els modificats tenen un inode nou.

🧹 Neteja

umount /snaps
lvremove /dev/vg_webapp/snap_data
lvremove /dev/vg_webapp/snap_data2

Exercicis addicionals

  • Descriu els passos per migrar un LV existent a un altre PV utilitzant pvmove. Quin avantatge té aquest procediment respecte a copiar fitxers manualment?
  • Configura un mirall de /opt/webapp/data utilitzant LVM. Realitza una prova simulant la fallada d’un disc i comprova que les dades es mantenen accessibles. Quines implicacions té sobre el rendiment?
  • Cerca informació sobre l’eina fio i realitza un experiment per avaluar el rendiment d’un volum striped. Representa una gràfica amb els resultats per diferents valors de --stripe-size (64K, 128K, 256K, 512K, 1M, 2M). Interpreta la relació entre mida de bloc i rendiment.