Pràctica 01: Snapshots i restauració amb systemd i initramfs
Unitat 2 · Administració i Manteniment de Sistemes i Aplicacions (AMSA)
Objectius
- Comprendre el procés d’arrencada en Linux (GRUB → initramfs → systemd).
- Configurar i gestionar serveis
systemd
. - Crear snapshots de l’estat del sistema i restaurar-los.
- Introduir-se a la personalització d’
initramfs
i opcionalment GRUB.
Context
En entorns reals, és freqüent necessitar tornar a un estat anterior del sistema després d’una fallada o una actualització incorrecta. Aquesta pràctica simula aquest escenari: configurarem un mecanisme de snapshots i un procés per restaurar-los en arrencar la màquina.
Entorn de treball
- Màquina virtual amb Debian 12 i amb UEFI amb 20 GB de disc.
- Disc virtual addicional de 20 GB per emmagatzemar els snapshots.
Preparació de la màquina virtual
Un cop arrencada la màquina virtual, afegiu un disc dur addicional de 20 GB. Aquest disc serà utilitzat per emmagatzemar els snapshots. Per exemple, si el disc principal és /dev/nvme0n1
, el nou disc podria ser /dev/nvme0n2
. Un cop afegit el disc, inicieu la màquina virtual i comproveu que el nou disc és visible amb lsblk
.
Un cop identificat el nou disc, cal crear-hi un sistema de fitxers i muntar-lo. Per exemple, si el nou disc és /dev/nvme0n2
, podeu fer-ho així:
# Com a root o amb sudo
mkfs.ext4 /dev/nvme0n2
mount /dev/nvme0n2 /mnt
mkdir -p /mnt/snapshots
Per evitar haver de muntar el disc manualment cada cop, afegiu una entrada a /etc/fstab
. Per exemple, afegiu aquesta línia al final del fitxer:
/dev/nvme0n2 /mnt ext4 defaults 0 2
Assegureu-vos d’indicar el disc correcte que pot ser nvme0n2, sdb, vdb,… No utilitzeu el disc principal on està instal·lat el sistema operatiu.
Un cop muntat el disc, instal·leu rsync
si no està instal·lat:
# Com a root o amb sudo
apt update
apt install rsync
En cas de problemes amb el update
, igual necessitareu fer un apt upgrade
abans.
Tasques
- Crear snapshots amb
rsync
(2 punts) 📝- Escriure un script que creï snapshots dels directoris
/home, /opt, /bin, /usr
a/mnt/snapshots
utilitzantrsync
. - Crea un primer snapshot manualment per tenir una base de dades inicial i anomeneu-lo
snapshot_00000000_000000
, feu servir script com aroot
. - Provar l’script manualment i assegurar-se que es poden crear diversos snapshots.
- Utilitzar un format de nom com
snapshot_YYYYMMDD_HHMMSS
per al directori. - Els snapshots han de ser còpies completes:
/home, /opt, /bin, /usr
. No cal comprimir aquests snapshots. Poden ser carpetes independents utilitzant la nomenclatura indicada. - Implementar una política per mantenir el snapshot inicial i els 3 snapshots més recents, eliminant els més antics.
- Escriure un script que creï snapshots dels directoris
- Automatitzar la creació de snapshots amb
systemd
(3 punts) ⚙️- Crear un servei
systemd
que executi l’script de creació de snapshots a cada apagada de la màquina. - Validar que cada vegada que s’aturi la màquina es crea un nou snapshot.
- Crear un servei
- Restaurar snapshots en arrencada amb
systemd
(3 punts) 🔄- Escriure un script que mostri un llistat de snapshots disponibles i permeti seleccionar-ne un per restaurar.
- Crear un servei
systemd
que s’executi abans demulti-user.target
i cridi aquest script. - Comprovar que en arrencar la màquina es mostra el menú de snapshots.
- Validar que es pot restaurar un snapshot seleccionat.
- Restaurar snapshots des d’
initramfs
(1/2 punts) 🚀- Afegir un parametre al kernel per indicar el fitxer de snapshot a restaurar. Aquest paràmetres’anomenarà
snapshot=
i rebrrà el nom de la snapshot a restaurar, per exemplesnapshot=snapshot_20240101_120000
. En cas de no rebre cap paràmetre, no es restaurarà cap snapshot. - Afegir un script a
initramfs
que carregui el disc secundari, llegeixi el paràmetre i restauri el snapshot abans de muntar/
.- Simple: Utilitzant comandes integrades a
initramfs
. (1 punt) - Avançat: Afegint programari compilat estaticament a
initramfs
. (2 punts)
- Simple: Utilitzant comandes integrades a
- Reconstruir l’
initramfs
i validar que s’ha restaurat el snapshot correcte.
- Afegir un parametre al kernel per indicar el fitxer de snapshot a restaurar. Aquest paràmetres’anomenarà
Organització i lliurament
Accediu a l’activitat a través de l’enllaç al Github Classroom. Un cop acceptada l’activitat, clonareu el repositori a la vostra màquina local i començareu a treballar. Podeu treballar amb grups de fins a 3 persones.
📂 practica01/
├── SOLUCIÓ.md
├── scripts/
│ ├── create_snapshot.sh
│ ├── restore_snapshot.sh
│ └── helpers.sh
├── systemd/
│ ├── snapshot.service
│ └── restore.service
├── initramfs/
│ └── snapshot_menu
└── grub/
└── 40_custom_snapshot
El document SOLUCIÓ.md
ha d’incloure:
- Explicació de cada part de la pràctica i comandes utilitzades.
- Diferències entre les comandes
cp
,rsync
itar
per fer còpies de seguretat. - Conjunt de proves realitzades per validar cada part.
- Enregistrament en format vídeo de la consola on es demostri el funcionament correcte de les diferents parts de la pràctica, o bé captures de pantalla on es mostri el procés i els resultats.
- Documentació o prompts consultats.