03.02.2021
Bacula – Problem: Bacula Storage Daemon blockiert Backups
Ein oder mehrere Backups hängen fest oder es werden weitere Backups blockiert. Es kommt zu Warnungen beim Bacula Storage Daemon.
Warnungen: Bacula Storage Daemon "Device is being initialized" bzw. '3902 Device ""my-device" (/storage/path)" is busy in acquire.'
Problem
Backup(s) hängt fest oder blockiert weitere Backups. Eine Abfrage des Backup Status auf der bconsole mittels "status client=<name>" zeigt, das Client Backup steht bei "Files=0"
...
JobId 12345 Job my-host.2021-01-02_02.58.00_35 is running.
Incremental Backup Job started: 03-Jan-21 16:33
Files=0 Bytes=0 Bytes/sec=0 Errors=0
Files Examined=0
SDReadSeqNo=5 fd=5
...
Auf dem Storage selbst zeigt sich folgendes Problem:
echo "status storage=my-storage" | bconsole
Device File: "my-storage" (/storage/path) open but no Bacula volume is currently mounted.
Total Bytes Read=0 Blocks Read=0 Bytes/block=0
Positioned at File=0 Block=0
Device is being initialized.
Available Space=100 TB
Ein umount-Versuch auf dem Storage hat folgende Meldung zum Resultat:
echo "umount storage=my-storage" | bconsole
3902 Device ""my-storage" (/storage/path)" is busy in acquire.
Analyse
Prüfung der Bacula Messages der letzten gelaufenen/fehlgeschlagenen Backups für diesen konkreten Storage (my-storage), hier mit Bacula 9.x getestet. Ggf. findet sich dort eine Fehlermeldung wie die Folgende:
19-Jul 14:32 my-sd JobId 351935: Error: block.c:275 Volume data error at 0:0! Wanted ID: "BB02", got "e se". Buffer discarded.
19-Jul 14:32 my-sd JobId 351935: Warning: acquire.c:280 Read acquire: Requested Volume my-client-yearly-full-5572" on "my-storage" (/storage/path) is not a Bacula labeled Volume, because: ERR=block.c:275 Volume data error at 0:0! Wanted ID: "BB02", got "e se". Buffer discarded.
Das Backup mit diesem Fehler steht dabei gewöhnlich nicht in direkter Verbindung mit dem Backup, das zuvor als unmittelbar "blockierend" erkannt wurde!
Lösung
- Ein Volume ist ggf. korrupt oder enthält Informationen, die es nicht enthalten sollte (z.B. eine manuell angelegte Text-Datei, statt eines korrekten Bacula Volumes)
- Volume genau prüfen und wenn es tatsächlich z.B. eine versehentlich manuell angefasste/abgelegte Datei ist, diese umbenennen mit einer Endung, die sich mit keinem Volume überschneidet, benennen
- Defektes Volume: Dies untersuchen und ggf. reparieren (in diesem Beitrag nicht thematisiert)
- Nachfolgend den Storage Daemon neustarten, da sich der Fehler nicht anders auflösen lässt
- Bei ggf. laufenden Backups alle Backups für den Storage anhalten
bconsole
* status director # prüfen auf laufende Jobs
* stop # passende laufende Jobs für den relevanten Storage Daemon auswählen und damit anhalten, wenn keine vorhanden, dann kein Stop notwendig
- Storage Daemon neustarten
service bacula-sd restart
- Backups sollten nun wieder korrekt statt finden, keine hängenden Clients