[SOLVED] Windows Dienst vor Backup stoppen

ulf.kosack

Renowned Member
Jan 28, 2012
49
7
73
Wachtberg
www.edvnet-uk.com
Hallo zusammen,

ich habe eine Windows Server VM, die täglich per Proxmox Backup Server gesichert wird. Das läuft auch alles super.

Auf dem Server habe ich einen Windows-Dienst laufen (Aagon ACMP Server), der seine Konfiguration beim Beenden in eine Datei schreibt und beim Starten die Datei einliest und löscht. Das heißt, dass die Datei während des Online-Backups (Modus Snapshot) nicht vorhanden ist. Damit kann ich sie mir auch nicht aus einem alten Backup wiederherstellen. Die Einzeldateiwiederherstellung aus dem PBS ist übrigens der Hammer.

Wie kann ich den Windows-Dienst vor dem jeweiligen Backup anhalten?

Ich möchte ungern den Modus Stopp beim Sichern der VM nutzen, da dann auch der darauf laufende MSSQL-Server angehalten werden würde. Alternativ könnte ich noch eine Aufgabe in Windows laufen lassen, die den Server vorher anhält. Dann muss ich nur die Aufgaben- und Sicherungszeit immer synchron halten.

Danke
Ulf
 
Vielleicht könntest du mit Hook-Scripts arbeiten. Dann würde dein PVE Server immer automatisch vor dem Backup der VM einen Befehl an die VM absetzen. Vielleicht könnte man da im Hook-Script mit "qm guest exec" arbeiten, damit dein PVE Host dann dem Win-Gast vor dem Backup anweist das Programm zu beenden. Nach dem Backup könnte das Hook-Script dann einen erneuen Befehl absetzen, um das Programm wieder zu starten.
 
Wow, tolle Hilfe. Danke, dass Du mich auf diesen Trip gebracht hast. Mir eröffnen sich gerade neue Welten o_O

Nachdem ich über /etc/vzdump.conf nicht weitergekommen bin (hatte ich in anderen Threads gefunden), kam ich über die /etc/pve/jobs.cfg letztendlich zum Erfolg.

Die VM kommt jetzt in einen eigenen Pool, da bei mir die Backups pool-basierend laufen. In der jobs.cfg konnte ich dann das Script unterbringen:
Code:
vzdump: backup-7809d3e4-de12
        comment Test Backup-Job mit Hook-Script
        schedule yearly
        enabled 1
        mailnotification always
        mode snapshot
        notes-template {{cluster}}, {{guestname}}, {{node}}, {{vmid}} mit Hook Script
        script /var/lib/vz/snippets/vzdump-hook-script.pl
        storage pbs
        vmid 103,101

Das Script ist das Standard-Example-Script von Proxmox aus /usr/share/doc/pve-manager/examples/vzdump-hook-script.pl.

Dank dieses Posts habe ich dann auch gefunden, warum es bei mir nicht funktionieren wollte. Ich musst die WebUI einmal reloaden :cool:.

Seit dem läuft es super, was man auch perfekt im Log erkennen kann
Code:
INFO: VM Name: SV004
INFO: include disk 'virtio0' 'vmpool:vm-101-disk-0' 100G
INFO: include disk 'virtio1' 'vmpool:vm-101-disk-1' 200G
INFO: exclude disk 'virtio2' 's001pveStorage:101/vm-101-disk-0.qcow2' (backup=no)
INFO: backup mode: snapshot
INFO: ionice priority: 7
INFO: HOOK: backup-start snapshot 101
INFO: HOOK-ENV: vmtype=qemu;storeid=pbs;hostname=SV004;target=vm/101/2022-12-18T09:17:32Z;
INFO: {
INFO:    "exitcode" : 0,
INFO:    "exited" : 1,
INFO:    "out-data" : "ACMP Network Boot wird beendet.\r\nACMP Network Boot wurde erfolgreich beendet.\r\n\r\n"
INFO: }
...
INFO: HOOK: backup-end snapshot 101
INFO: HOOK-ENV: vmtype=qemu;storeid=pbs-edvnet;hostname=SV004;target=vm/101/2022-12-18T09:17:32Z;
INFO: {
INFO:    "exitcode" : 0,
INFO:    "exited" : 1,
INFO:    "out-data" : "ACMP Network Boot wird gestartet.\r\nACMP Network Boot wurde erfolgreich gestartet.\r\n\r\n"
INFO: }
INFO: Finished Backup of VM 101 (00:00:26)

In vzdump-hook-script.pl habe ich die Ausführung auf die eine VM beschränkt (falls es mal jemand braucht):
Code:
...
    print "HOOK-ENV: ";
    for my $var (qw(vmtype dumpdir storeid hostname target logfile)) {
        print "$var=$ENV{uc($var)};" if defined($ENV{uc($var)});
    }
    print "\n";

    # sv004 Stop ACMP Dienste vor Backup
    if ($phase eq 'backup-start') {
        if ($hostname eq 'V004') {
            system("/usr/sbin/qm guest exec $vmid net stop NetworkBoot");
        }
    }

    # example: copy resulting backup file to another host using scp
    if ($phase eq 'backup-end') {
        if ($hostname eq 'V004') {
            system("/usr/sbin/qm guest exec $vmid net start NetworkBoot");
        }
    }

...

Dadurch kann ich pro VM extra Befehle eintragen.

Danke Proxmox und Community
 
  • Like
Reactions: Neobin and Dunuin

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!