Script timed out
Ein normaler Veeam Backup Job sicherte alle seine VMs mit Status “success”. Dennoch war der Gesamtstatus des Jobs auf “Warning”.
In der Übersicht findet sich die Meldung “Post-job script timed out”.
Die Ursache war ein im Job definiertes Post-job-script. Hier besteht ein grundlegender Unterschied der Veeam Version 8 im Vergleich zur Version 7. Wurde bisher das Script nur blind aktiviert, so wird es seit Version 8 als Bestandteil des Jobs betrachtet. Das bedeutet auch, daß Veeam eine Statusmeldung des Scripts erwartet. Die Ausführung eines Kopierbefehls nach dem Backup kann unter Umständen mehrere Stunden dauern, was dann zu Timeouts in Veeam führt und die Warnung auslöst. Der Standard Timeout beträgt 900 Sekunden (15 Minuten). Es gibt nun zwei Lösungsansätze, dieses Problem zu umgehen:
- Timeout anpassen
- indirekter Aufruf
Timeout anpassen
Zur Anpassung des Timout Wertes sollte man eine grobe Vorstellung der zu erwartenden Skript-Ausführungsdauer haben. Wie oben erwähnt, ist der Standardwert 900 Sekunden. Erwartet man also eine Ausführungsdauer von einer Stunde, so ist der Wert auf mindestens 3600 Sekunden anzupassen. Dazu müssen zwei Werte (für pre- und für post-Skripte) manuell in der Registry erzeugt werden:
HKEY_LOCAL_MACHINE\SOFTWARE\Veeam\Veeam Backup and Replication
PreJobScriptTimeoutSec (DWORD) PostJobScriptTimeoutSec (DWORD)
In meinen Augen ist dies aber keine schöne Methode, da es die Dauer eines Backupjobs erheblich verlängert. Eleganter ist da die zweite Lösungsvariante mit dem indirekten Aufruf.
indirekter Aufruf
Beim indirekten Aufruf verwendet man ein Starter-Skript, welches ein zweites aufruft. Das Starter Skript ist schnell beendet und gibt Veeam zeitnah Rückmeldung. Ein Timeout wird nicht überschritten. Einziger Nachteil (oder Vorteil) ist die Entkopplung des zeitaufwendigen Skripts vom Backupjob. Das bedeutet natürlich auch, daß im Falle eines Problems keine Rückmeldung an den Backupjob erfolgt.
Skript1 (Starter)
Der Veeam Backupjob ruft am Ende das Skript initPostJob.cmd auf, welches nur einen Befehl enthält:
start C:\skript\PostJob.cmd
Skript2 (eigentliches Post-Job Skript)
Skript2 PostJob.cmd macht die eigentliche Arbeit (z.B. ein Backupfile irgendwohin kopieren, oder sonstige Aktionen)
Links
Veeam Forum – v8 post-job scripting changes “post-job script timed out“