Guard writer units against activation and fix backup cancellation
This commit is contained in:
1 parent
c0a24b63fc
commit
ff152c7f0f
9 files changed
+372
-16
No files matched your search
+50
-1
@@ -311,6 +311,49 @@ passenden AVC-Meldungen prüfen. Maßgeblich für den erfolgreichen Abschluss bl
|
||||
`SUCCESS` in `result.txt`; erst danach aktiviert der Installer den Backup-Timer.
|
||||
Eine Wiederherstellungsprobe auf einem separaten System steht weiterhin aus.
|
||||
|
||||
## Erneuter Dienststart während der Sicherung
|
||||
|
||||
Am 10.09.2026 starteten auf Gemini um 15:15 Uhr Apache und PHP-FPM während der
|
||||
Nextcloud-Datenkopie erneut. Paket `c0a24b63fc1c` hatte die SELinux-Zugriffe bereits
|
||||
korrigiert, schützte jedoch nicht vor fremden Startaufträgen. Den betroffenen
|
||||
Lauf nicht als konsistente Sicherung abnehmen, auch falls Upload/Hashprüfung
|
||||
anschließend erfolgreich waren. Der konkrete Auslöser des Startauftrags ist
|
||||
noch offen. Die 90 Sekunden Apache-Stopp sind dagegen durch dessen Journal
|
||||
erklärt: Timeout beim Beenden, anschließend SIGKILL durch systemd. Das neue Paket
|
||||
ändert weder Apache-Timeout noch seine Signalbehandlung pauschal.
|
||||
|
||||
Einen noch laufenden alten Update-Auftrag kontrolliert beenden:
|
||||
|
||||
```bash
|
||||
sudo systemctl stop app-backup-upgrade.service
|
||||
sudo journalctl --no-pager -u app-backup-upgrade.service -n 60
|
||||
sudo systemctl --no-pager is-active httpd php-fpm gitea postfix dovecot crond
|
||||
```
|
||||
|
||||
Im Protokoll die Wiederaufnahme und das Verlassen des Wartungsmodus prüfen.
|
||||
Bei Fehlern die ausgegebene `recovery-*.json` beachten. Erst nach abgeschlossenem
|
||||
alten Auftrag das aktuelle Paket mit den bisherigen Gitea-/Cron-/Mail-Optionen
|
||||
starten. Bestehende Sicherungssätze und Arbeitsverzeichnisse nicht pauschal löschen.
|
||||
|
||||
Das neue Paket richtet für die Kopierphase vorübergehende systemd-Startbedingungen
|
||||
ein und prüft Writer-Zustände sowie Aktivierungszeitpunkte vor/nach den Kopien.
|
||||
Es entfernt beim Wiederanlauf nur eigene Ergänzungen; bei einem teilweise
|
||||
ausgeführten Restore bleiben sie bis zur manuellen Prüfung bestehen. Einzelheiten
|
||||
zur gezielten Freigabe stehen in `Dokumentation.md` bei der Wiederanlaufhilfe.
|
||||
Die permanente Dienstkonfiguration und vorhandene Maskierungen bleiben erhalten.
|
||||
Die Meldung `Copy window complete; writer guards verified` bestätigt das Ende
|
||||
der geprüften Kopierphase. Abgeschlossen ist die Paketabnahme erst bei `SUCCESS`
|
||||
in der Ergebnisdatei nach vollständiger Remote-Prüfung.
|
||||
|
||||
Der Abbruchpfad wurde ebenfalls korrigiert: Bisher erreichte TERM bei
|
||||
`KillMode=mixed` zunächst nur den Update-Hauptprozess. Eine wartende Bash konnte
|
||||
dadurch den Stop bis zum Ende ihres Backup-/Upload-Kindprozesses verzögern.
|
||||
Die neuen Units verwenden `KillMode=control-group`; die Protokollprozesse bleiben
|
||||
während der Fehlerbehandlung verfügbar. Nach einem Update-Abbruch das Journal
|
||||
und die Dienstzustände prüfen; insbesondere ein Stop-Timeout ist kein Nachweis
|
||||
für eine erfolgreiche Wiederaufnahme. Die Änderung wirkt für neue Aufträge,
|
||||
nicht nachträglich für einen bereits gestarteten alten Worker.
|
||||
|
||||
## Paket reproduzieren
|
||||
|
||||
Aus einem sauberen, eingecheckten Repository:
|
||||
@@ -327,7 +370,7 @@ Das ausführbare Paket ausschließlich über euren vertrauenswürdigen Kanal bez
|
||||
|
||||
## Verifikation der Lieferung
|
||||
|
||||
44 Container-Tests sowie ShellCheck und Shell-Syntaxprüfung erfolgreich.
|
||||
52 Testfälle erfolgreich: vollständiger Durchlauf mit 50 Tests, anschließend die zwei zusätzlichen Abbruchtests für Kopie und Upload. ShellCheck und Shell-Syntaxprüfung abschließend erfolgreich.
|
||||
Die Tests enthalten echte MariaDB-Dumps/Imports und lokale rclone-Crypt-Roundtrips;
|
||||
systemd/occ und die systemd-run-Übergabe sind simuliert. Das Übergabemodell
|
||||
berücksichtigt jetzt das Warten auf den oneshot-Startauftrag: Der Regressionstest
|
||||
@@ -338,3 +381,9 @@ SELinux-Durchsetzung wird im Debian-Testcontainer nicht nachgebildet; der erfolg
|
||||
Bash-/rsync-Lesetest auf Gemini wurde separat vom Betreiber durchgeführt. Die vollständige
|
||||
Server-/OneDrive-Prüfung erfolgt beim Paketlauf. Ein fachlicher Restore
|
||||
auf einem separaten Testsystem bleibt erforderlich.
|
||||
|
||||
Die neuen Tests bilden fremde Startaufträge während rsync, zwischenzeitliche
|
||||
Neustarts, bestehende Maskierungen und Fehler bei der Sperrfreigabe ab. Die
|
||||
Condition-Auswertung (Sperrverzeichnis vorhanden/entfernt) und Unit-Syntax wurden
|
||||
zusätzlich mit echtem `systemd-analyze` geprüft. Der tatsächliche systemd-Manager
|
||||
und SELinux auf Gemini bleiben Teil der noch ausstehenden Serverabnahme.
|
||||
Reference in new issue
Block a user