Pràctica 01: Snapshots i restauració amb systemd i initramfs

Unitat 2 · Administració i Manteniment de Sistemes i Aplicacions (AMSA)

Autor/a

Jordi Mateo Fornés

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
AlertaAdvertència

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

  1. Crear snapshots amb rsync (2 punts) 📝
    • Escriure un script que creï snapshots dels directoris /home, /opt, /bin, /usr a /mnt/snapshots utilitzant rsync.
    • Crea un primer snapshot manualment per tenir una base de dades inicial i anomeneu-lo snapshot_00000000_000000, feu servir script com a root.
    • 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.
  2. 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.
  3. 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 de multi-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.
  4. 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 exemple snapshot=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)
    • Reconstruir l’initramfs i validar que s’ha restaurat el snapshot correcte.

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 i tar 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.