ESPO-04 legt zuerst den LVM-Snapshot an und bricht ab, wenn das nicht gelingt - kein Update ohne Rueckweg. Es bricht ausserdem ab, wenn noch ein Snapshot aus einem frueheren Lauf besteht: Das hiesse, dass das vorige Update nie bestaetigt wurde, und zwei Snapshots uebereinander waeren kein Rueckweg mehr. ESPO-05 verwirft den Snapshot, nachdem jemand die Instanz geprueft hat, und haelt vorher Fuellgrad und Gueltigkeit fest - war er bereits vollgelaufen, hat der Rueckweg schon vorher nicht mehr getragen. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
44 lines
2.0 KiB
Bash
Executable File
44 lines
2.0 KiB
Bash
Executable File
#!/bin/bash
|
|
# ESPO-05-Snapshot-verwerfen - raeumt den Rueckweg weg, nachdem die Instanz von Hand geprueft wurde.
|
|
# Aufruf: ohne Argumente.
|
|
# Laeuft bewusst erst nach der Pruefung: Solange der Snapshot besteht, kostet jeder Schreibvorgang
|
|
# auf /srv einen zusaetzlichen Kopiervorgang, und ein vollgelaufener Snapshot wird still verworfen.
|
|
set -u
|
|
|
|
# Standzeile: zeigt im Protokoll, welche Fassung tatsaechlich gelaufen ist.
|
|
echo "ESPO-05-Snapshot-verwerfen, Skriptstand 2026-09-24"
|
|
|
|
VG=ubuntu-vg
|
|
SNAPSHOT=srv-vor-update
|
|
|
|
fehler() { echo "FEHLER: $*"; echo "ESPO05_ERGEBNIS: FEHLER"; exit 1; }
|
|
|
|
# 1. Vorbedingungen.
|
|
[ "$(id -u)" -eq 0 ] || fehler "nicht als root gestartet"
|
|
command -v lvremove >/dev/null || fehler "LVM-Werkzeuge fehlen"
|
|
|
|
# 2. Ohne Snapshot gibt es nichts zu verwerfen - das ist kein Erfolg, sondern ein Hinweis:
|
|
# Entweder lief kein Update, oder der Snapshot ist bereits weg (auch stillschweigend, siehe 3).
|
|
lvs --noheadings -o lv_name "$VG" 2>/dev/null | grep -qw "$SNAPSHOT" \
|
|
|| fehler "kein Snapshot '$SNAPSHOT' vorhanden - lief ESPO-04 ueberhaupt?"
|
|
|
|
# 3. Zustand festhalten, bevor er verschwindet. Ein 'I' im Attributfeld heisst: bereits ungueltig,
|
|
# der Rueckweg haette also gar nicht mehr getragen. Das gehoert ins Protokoll.
|
|
echo "--- Zustand vor dem Verwerfen"
|
|
lvs -o lv_name,lv_attr,origin,lv_size,data_percent "$VG/$SNAPSHOT" 2>/dev/null | sed 's/^/ /'
|
|
ATTR="$(lvs --noheadings -o lv_attr "$VG/$SNAPSHOT" 2>/dev/null | tr -d ' ')"
|
|
case "$ATTR" in
|
|
*I*) echo "HINWEIS: Der Snapshot war bereits ungueltig (vollgelaufen) - ein Rueckweg bestand nicht mehr." ;;
|
|
esac
|
|
|
|
# 4. Verwerfen.
|
|
lvremove -y "$VG/$SNAPSHOT" >/dev/null 2>&1 || fehler "Snapshot liess sich nicht entfernen"
|
|
lvs --noheadings -o lv_name "$VG" 2>/dev/null | grep -qw "$SNAPSHOT" \
|
|
&& fehler "Snapshot ist nach lvremove immer noch da"
|
|
|
|
# 5. Ergebnis zeigen: freie Extents sind die Voraussetzung fuer das naechste Update.
|
|
echo "--- Danach"
|
|
echo "Snapshot '$SNAPSHOT' verworfen."
|
|
vgs --units g -o vg_name,vg_size,vg_free "$VG" 2>/dev/null | sed 's/^/ /'
|
|
echo "ESPO05_ERGEBNIS: OK"
|