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
- Entendre el funcionament i components de LVM: PV, VG i LV.
- Crear, formatar i muntar volums lògics per a un servei web.
- Ampliar o reduir la mida dels volums.
- 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
Crea una nova MV amb AlmaLinux i un disc principal de 20 GB.
Durant la instal·lació, selecciona LVM com a esquema de particionat.Afegeix dos discos addicionals de 20 GB cadascun (ex.
nvme0n2invme0n3).Comprova l’estat inicial del sistema:
lsblkHauries 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/nvme0n3Quin é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- 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_webappPas 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_runPer 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- Utilitza
df -hper verificar que els volums estan muntats correctament. - Afegeix les entrades corresponents a
/etc/fstabper 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_dataEscenari 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/runQuè 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.txtPas 2: Crear snapshot
lvcreate -L 1G -s -n snap_data /dev/vg_webapp/lv_dataPas 3: Muntar snapshot
mkdir /snaps
mount /dev/vg_webapp/snap_data /snaps
diff -r /opt/webapp/data /snapsPas 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 /snapsQuè 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/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_data2Exercicis addicionals
- Descriu els passos per migrar un
LVexistent a un altrePVutilitzantpvmove. Quin avantatge té aquest procediment respecte a copiar fitxers manualment? - Configura un mirall de
/opt/webapp/datautilitzant 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
fioi 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.