Shutdown des PBS nachdem alle VMs gesichert wurden?

ich nutze bereits seit Längerem erfolgreich solche HookScripts beim Anfertigen von Backups und habe an der Stelle auch noch eine Frage:
Wenn ich in einem solchen Script Änderungen vornehme, oder gar in /etc/pve/jobs.cfg ein bei einem Backup-Job hinterlegtes HookScript durch ein anderes ersetze, und anschließend den Backup-Job ausführe, dann werden die Änderungen ignoriert. Offenbar muss etwas neu geladen werden, damit die Änderungen übernommen werden. Kann mir hier jemand auf die Sprünge helfen? Ich hoffe nicht, dass bei jeder Anpassung ein Systemneustart notwendig ist xD
 
die jobs.cfg wird eigentlich bei jedem durchgang des schedulers neugeladen (und das hookscript wird ja sowieso extern aufgerufen bei jedem hook point, da sollten aenderungen also sowieso sofort sichtbar werden..)
 
wenn ich den job nicht durch den scheduler ausführen lasse, sondern ihn selbst manuell starte, wird dann vielleicht die jobs.cfg nicht neu geladen? Das würde erklären, weshalb ein ausgetauschtes Script nicht berücksichtigt wird.
ich habe heute auf 7.3 aktualisiert, danach konnte ich den backup-job mit neuem script ausführen, vorher hat er ihn noch mit dem alten gestartet. irgendein neugestarteter service muss also das laden ausgelöst haben.
aber wenn ich weiss, dass der scheduler das auslöst, dann kann ich den zum testen einfach entsprechend konfigurieren.
danke so weit ;)
 
wie hast du den job denn gestartet? "run now" in der GUI?
 
das manuelle ausfuehren ueber die GUI mit "run now" nimmt den state der GUI als ausgangsbasis - d.h. wenn du die backup job uebersicht laedts, dann die jobs.cfg editierst, dann run now drueckst wird noch der alte inhalt verwendet, ausser du laedst die backup job uebersicht neu (es wird naemlich direkt der backup API call aufgefuehrt mit den parametern wie sie in der GUI angezeigt werden bzw. vorher geladen worden sind, das backend weiss gar nicht dass es sich dabei um einen definierten job handelt). aber eine aenderung des script inhalts sollte trotzdem sofort wirksam werden, weil wie gesagt, das script wird einfach nur ausgefuehrt und von unserem code ansonsten weder geparsed noch sonst irgendwas damit gemacht..?
 
danke dir für die klarstellung. bei gelegenheit teste ich das mal, aber das kann gut sein, dass ich die GUI nicht neu geladen habe. Jetzt weiß ich es ja ;)
 
Hi, ich lese im Internet wieder entgegengesetzte Sachen.
1.Kann mir einer erklären was der Unterschied von poweroff und shutdown (ggf. mit -now) ist?
2. Bzw. welchen Befehl verwendet eigentlich die GUI?
3. Was ist der sicherere, sauberere Befehl um ein System vollständig herunterzufahren.

Grüße und Danke
Pedi
 
Last edited:
auf modernen distros ist sowohl /sbin/shutdown als auch /sbin/poweroff ein symlink auf /bin/systemctl , die eigentliche funktionalitaet wird also von systemd bereit gestellt (mit kompatibilitaetsinterface zu den "alten" kommandos). sofern du nicht zusaetzliche parameter mitgibts (zeitpunkt, ..) ist das resultat identisch. wenn dus ganz modern haben willst geht auch systemctl [poweroff|reboot|suspend|..].
 
Hallo zusammen,
@fabian , Danke :)


Leider funktioniert dies bei mir nicht was hier beschrieben wurde, daher bitte ich euch um Hilfe.
Zur Info: autostart_backup und autostop_backup funktioniert ohne Probleme. PBS startet und stoppt, wenn ich diese manuell ausführe.

System:
- Proxmox VE 7.3-3
- Start Backup via GUI
- Storagename: PBS-HHO
- Startserver 101.XY.XYZ.57
- PBS101.XY.XYZ.21
- -rwxr-xr-x 1 root root 103 Dec 19 04:18 vzdump-hook-script

Bei /etc/pve/jobs.cfg
Code:
vzdump: backup-a7gba7be-a896
        schedule 06:00
        enabled 1
        mailnotification always
        mailto xy@xy.email
        mode snapshot
        node pve01
        notes-template {{guestname}}
        storage PBS-HHO
        vmid 101
script /usr/local/bin/vzdump-hook-script

Erste-Testversion /usr/local/bin/vzdump-hook-script
Code:
#!/bin/bash

if [ "$1" == "job-init" ]; then
        ssh autostart@101.XY.XYZ.57 -p 145 'autostart_backup'
        ping  101.XY.XYZ.21 -c 60 < /dev/null &
fi


if [ "$1" == "job-end" ]; then
        ssh autostart@101.XY.XYZ.57 -p 145  'autostop_backup'
fi

exit 0


Zweite-Testversion /usr/local/bin/vzdump-hook-script
Code:
#!/bin/bash
if [ "$1" == "job-init" ]; then
    ssh autouser@101.XY.XYZ.57 -p 145 'autostart_backup'
    ping -W 20 -c 1 101.XY.XYZ.21
    /usr/sbin/pvesm set PBS-HHO -disable false
fi
if [ "$1" == "job-end" ]; then
    ssh autouser@101.XY.XYZ.57 -p 145  'autostop_backup'
fi
exit 0

Der Fehler:
TASK ERROR: could not activate storage 'PBS-HHO': PBS-HHO: error fetching datastores - 500 Can't connect to 101.XY.XYZ.21:8007 (Connection timed out)

Sobald ich den Backupprozess über die GUI starte, erhalte ich nach paar Sekunden den Fehler. PBS ist dabei nicht gestartet worden. Passiert sozusagen "gar nichts". Das Script /usr/local/bin/vzdump-hook-script wird nicht ausgeführt, habe testweise diese mit
Code:
#!/bin/bash
touch ~/testfile
exit 0
erstellt und es wrid keine Datei angelegt. Hoffe ihr könnt mir helfen :cool:

Danke
Pedi
 
Last edited:
ich vermute du wartest nicht lange genug? wie schaut denn der ping output im task log aus? bzw. ueberhaupt der ganze task log, vielleicht mit testweisem 'echo' in den beiden ifs (oder set -x am anfang des skripts, damit die gesamte ausfuehrung protokolliert wird)..
 
Hi,
Code:
vzdump: backup-a7gba7be-a896
        schedule 06:00
        enabled 1
        mailnotification always
        mailto xy@xy.email
        mode snapshot
        node pve01
        notes-template {{guestname}}
        storage PBS-HHO
        vmid 101
script /usr/local/bin/vzdump-hook-script
steht das script wirklich am Anfang der Zeile? Da sollten ein paar Leerzeichen sein ;)
 
Hi,

steht das script wirklich am Anfang der Zeile? Da sollten ein paar Leerzeichen sein ;)
Vielen Dank, das war der Fehler, bis der nächste jetzt gekommen ist :'( . Hoffe kannst/könnt mir hierbei auch helfen.
Sieht jetzt so aus:
/etc/pve/jobs.cfg
Code:
vzdump: backup-a7gba7be-a896
        schedule 06:00
        enabled 1
        mailnotification always
        mailto xy@xy.email
        mode snapshot
        node pve01
        notes-template {{guestname}}
        storage PBS-HHO
        vmid 101
              script /usr/local/bin/vzdump-hook-script
Code:

/usr/local/bin/vzdump-hook-script
Code:
#!/bin/bash
set -x
if [ "$1" == "job-init" ]; then
        ssh autostart@101.XY.XYZ.57 -p 145 'autostart_backup'
        ping  101.XY.XYZ.21 -c 90 < /dev/null &
fi


if [ "$1" == "job-end" ]; then
        echo "Job-End Sleep 10 Sekunden"
        sleep 10
        ssh autouser@101.XY.XYZ.57 -p 145  'autostop_backup'
fi

exit 0

Beim ersten Durchlauf ging es direkt, bekomme jedoch bei dem zweiten den ich direkt gestartet hatte und allen folgenden jetzt diesen Fehler:
Code:
TASK ERROR: could not activate storage 'PBS-Main-HPHO': PBS-Main-HPHO: error fetching datastores - 500 Can't connect to 100.119.118.21:8007 (Connection refused)
Das System startet, bleibt dann jedoch online. Wenn ich den ein zweites mal direkt starte, macht er das Backup und fährt herunter.
User ist ein API-User mit Adminrechten auf /.

Code:
INFO: + '[' job-init == job-init ']'
INFO: + ssh autostart@101.XY.XYZ.57 -p 189 autostart_hp_backupWoL
INFO: + '[' job-init == job-end ']'
INFO: + exit 0
INFO: + ping 101.XY.XYZ.21 -c 90
INFO: PING 101.XY.XYZ.21 (101.XY.XYZ.21) 56(84) bytes of data.
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=50 ttl=63 time=4713 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=51 ttl=63 time=3693 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=52 ttl=63 time=2669 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=53 ttl=63 time=1645 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=54 ttl=63 time=622 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=55 ttl=63 time=13.4 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=56 ttl=63 time=16.8 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=57 ttl=63 time=17.0 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=58 ttl=63 time=16.1 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=59 ttl=63 time=19.1 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=60 ttl=63 time=18.5 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=61 ttl=63 time=15.8 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=62 ttl=63 time=13.9 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=63 ttl=63 time=17.5 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=64 ttl=63 time=15.8 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=65 ttl=63 time=18.1 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=66 ttl=63 time=16.7 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=67 ttl=63 time=19.3 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=68 ttl=63 time=13.8 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=69 ttl=63 time=16.2 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=70 ttl=63 time=14.8 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=71 ttl=63 time=17.1 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=72 ttl=63 time=15.9 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=73 ttl=63 time=15.1 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=74 ttl=63 time=14.5 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=75 ttl=63 time=16.9 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=76 ttl=63 time=16.1 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=77 ttl=63 time=14.9 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=78 ttl=63 time=17.3 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=79 ttl=63 time=15.4 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=80 ttl=63 time=14.8 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=81 ttl=63 time=17.4 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=82 ttl=63 time=15.9 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=83 ttl=63 time=15.6 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=84 ttl=63 time=17.9 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=85 ttl=63 time=16.9 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=86 ttl=63 time=15.9 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=87 ttl=63 time=18.1 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=88 ttl=63 time=16.6 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=89 ttl=63 time=21.7 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=90 ttl=63 time=14.2 ms
INFO: --- 101.XY.XYZ.21 ping statistics ---
INFO: 90 packets transmitted, 41 received, 54.4444% packet loss, time 90314ms
INFO: rtt min/avg/max/mdev = 13.358/339.838/4712.717/1004.170 ms, pipe 5
TASK ERROR: could not activate storage 'PBS-HHO': PBS-HHO: error fetching datastores - 500 Can't connect to 101.XY.XYZ.21:8007 (Connection refused)

Code:
INFO: + '[' job-init == job-init ']'
INFO: + ssh autostart@101.XY.XYZ.57 -p 189 autostart_hp_backupWoL
INFO: + '[' job-init == job-end ']'
INFO: + exit 0
INFO: + ping 101.XY.XYZ.21 -c 90
INFO: PING 101.XY.XYZ.21 (101.XY.XYZ.21) 56(84) bytes of data.
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=1 ttl=63 time=19.1 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=2 ttl=63 time=14.1 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=3 ttl=63 time=17.0 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=4 ttl=63 time=20.5 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=5 ttl=63 time=14.3 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=6 ttl=63 time=17.0 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=7 ttl=63 time=16.0 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=8 ttl=63 time=14.6 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=9 ttl=63 time=17.5 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=10 ttl=63 time=16.0 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=11 ttl=63 time=14.9 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=12 ttl=63 time=17.1 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=13 ttl=63 time=15.9 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=14 ttl=63 time=18.1 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=15 ttl=63 time=17.4 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=16 ttl=63 time=15.9 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=17 ttl=63 time=18.3 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=18 ttl=63 time=16.7 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=19 ttl=63 time=14.7 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=20 ttl=63 time=21.4 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=21 ttl=63 time=16.4 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=22 ttl=63 time=15.4 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=23 ttl=63 time=14.2 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=24 ttl=63 time=20.5 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=25 ttl=63 time=21.0 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=26 ttl=63 time=16.6 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=27 ttl=63 time=16.3 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=28 ttl=63 time=15.1 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=29 ttl=63 time=15.0 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=30 ttl=63 time=14.8 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=31 ttl=63 time=14.0 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=32 ttl=63 time=17.8 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=33 ttl=63 time=17.1 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=34 ttl=63 time=21.1 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=35 ttl=63 time=16.7 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=36 ttl=63 time=15.9 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=37 ttl=63 time=14.8 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=38 ttl=63 time=13.7 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=39 ttl=63 time=17.3 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=40 ttl=63 time=16.7 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=41 ttl=63 time=15.5 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=42 ttl=63 time=19.2 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=43 ttl=63 time=14.7 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=44 ttl=63 time=18.2 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=45 ttl=63 time=17.9 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=46 ttl=63 time=16.6 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=47 ttl=63 time=16.0 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=48 ttl=63 time=15.7 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=49 ttl=63 time=15.0 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=50 ttl=63 time=15.5 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=51 ttl=63 time=15.2 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=52 ttl=63 time=14.5 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=53 ttl=63 time=17.2 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=54 ttl=63 time=15.9 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=55 ttl=63 time=18.0 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=56 ttl=63 time=16.6 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=57 ttl=63 time=15.3 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=58 ttl=63 time=14.1 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=59 ttl=63 time=16.6 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=60 ttl=63 time=15.4 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=61 ttl=63 time=18.8 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=62 ttl=63 time=17.1 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=63 ttl=63 time=15.6 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=64 ttl=63 time=19.5 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=65 ttl=63 time=18.6 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=66 ttl=63 time=16.5 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=67 ttl=63 time=14.8 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=68 ttl=63 time=19.2 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=69 ttl=63 time=16.6 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=70 ttl=63 time=15.0 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=71 ttl=63 time=13.4 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=72 ttl=63 time=16.4 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=73 ttl=63 time=14.7 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=74 ttl=63 time=17.4 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=75 ttl=63 time=15.6 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=76 ttl=63 time=14.1 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=77 ttl=63 time=17.3 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=78 ttl=63 time=15.9 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=79 ttl=63 time=14.0 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=80 ttl=63 time=16.7 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=81 ttl=63 time=16.7 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=82 ttl=63 time=17.4 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=83 ttl=63 time=15.8 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=84 ttl=63 time=18.4 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=85 ttl=63 time=16.9 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=86 ttl=63 time=15.9 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=87 ttl=63 time=13.9 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=88 ttl=63 time=17.0 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=89 ttl=63 time=15.8 ms
INFO: 64 bytes from 101.XY.XYZ.21: icmp_seq=90 ttl=63 time=13.9 ms
INFO: --- 101.XY.XYZ.21 ping statistics ---
INFO: 90 packets transmitted, 90 received, 0% packet loss, time 89106ms
INFO: rtt min/avg/max/mdev = 13.350/16.436/21.373/1.781 ms
INFO: starting new backup job: vzdump 211 --script /usr/local/bin/vzdump-hook-script --notes-template '{{guestname}}' --all 0 --node pve01 --mailnotification always --mode snapshot --mailto server@mydomain.tld --storage PBS-Main-HHO
INFO: + '[' job-start == job-init ']'
INFO: + '[' job-start == job-end ']'
INFO: + exit 0
INFO: Starting Backup of VM 211 (lxc)
INFO: Backup started at 2022-12-19 15:07:01
INFO: status = stopped
INFO: backup mode: stop
INFO: ionice priority: 7
INFO: CT Name: test-debian
INFO: including mount point rootfs ('/') in backup
INFO: + '[' backup-start == job-init ']'
INFO: + '[' backup-start == job-end ']'
INFO: + exit 0
INFO: creating Proxmox Backup Server archive 'ct/211/2022-12-19T14:07:01Z'
INFO: run: lxc-usernsexec -m u:0:100000:65536 -m g:0:100000:65536 -- /usr/bin/proxmox-backup-client backup --crypt-mode=encrypt --keyfd=14 pct.conf:/var/tmp/vzdumptmp1634780_211/etc/vzdump/pct.conf root.pxar:/mnt/vzsnap0 --include-dev /mnt/vzsnap0/./ --skip-lost-and-found --exclude=/tmp/?* --exclude=/var/tmp/?* --exclude=/var/run/?*.pid --backup-type ct --backup-id 211 --backup-time 1671458821 --repository backup-user@pbs!PBS-Backupuser@101.XY.XYZ.21:PBS-HHO
INFO: Starting backup: ct/211/2022-12-19T14:07:01Z
INFO: Client name: pve01
INFO: Starting backup protocol: Mon Dec 19 15:07:01 2022
INFO: Using encryption key from file descriptor..
INFO: Encryption key fingerprint: 43:bd:a2:w1:gg:xy:0a:80
INFO: Downloading previous manifest (Mon Dec 19 14:43:29 2022)
INFO: Upload config file '/var/tmp/vzdumptmp1634780_211/etc/vzdump/pct.conf' to 'backup-user@pbs!PBS-Backupuser@101.XY.XYZ.21:8007:PBS-HHO' as pct.conf.blob
INFO: Upload directory '/mnt/vzsnap0' to 'backup-user@pbs!PBS-Backupuser@101.XY.XYZ.21:8007:PBS-HHO' as root.pxar.didx
INFO: root.pxar: had to backup 0 B of 752.772 MiB (compressed 0 B) in 3.28s
INFO: root.pxar: average backup speed: 0 B/s
INFO: root.pxar: backup was done incrementally, reused 752.772 MiB (100.0%)
INFO: Uploaded backup catalog (446.16 KiB)
INFO: Duration: 4.30s
INFO: End Time: Mon Dec 19 15:07:06 2022
INFO: adding notes to backup
INFO: + '[' backup-end == job-init ']'
INFO: + '[' backup-end == job-end ']'
INFO: + exit 0
INFO: Finished Backup of VM 211 (00:00:05)
INFO: Backup finished at 2022-12-19 15:07:06
INFO: + '[' log-end == job-init ']'
INFO: + '[' log-end == job-end ']'
INFO: + exit 0
INFO: Job-End Sleep 10 Sekunden
INFO: + '[' job-end == job-init ']'
INFO: + '[' job-end == job-end ']'
INFO: + echo 'Job-End Sleep 10 Sekunden'
INFO: + sleep 10
INFO: + ssh autostart@101.XY.XYZ.57 -p 189 autostop_hp_backupWoL
INFO: + exit 0
INFO: Backup job finished successfully
TASK OK

Vielen Dank frohe Weihnachtszeit
Pedi
 
Last edited:
90 packets transmitted, 41 received, 54.4444% packet loss, time 90314ms

hier liegt vermutlich das problem - du wartest zwar 90s, aber das heisst ja noch lange nicht dass dann PBS fertig gebootet hat.. wenn du das sicherstellen willst, muesstest du in ner schleife ca so vorgehen:

Code:
for i in 0..X ; do
    check_status && break;
    sleep 1;
done
if check_status ; then
   echo OK
else
   echo "FEHLER ..."
   exit 1
fi


wobei check_status ein kommando ist, das wirklich schaut ob PBS erreichbar ist..
 
Vielen vielen Dank erneut für die Hilfe, habe es mit deiner Hilfe jetzt geschafft.
Bzgl. check_status, finde ich kaum etwas und das Kommando ist weder dem PVE noch meinem PBS bekannt.
Ich habe kein Cluster im Einsatz, kann es evtl. daran liegen?

Meine Lösung nun (bin kein Profi in Bash, aber es läuft ^^) möchte es jedoch für meine Mitmenschen posten und ja, man kann es noch sauberer machen :) :

Code:
#!/bin/bash
# SET-X damit die Ausfuehrung protokolliert wird
#set -x

if [ "$1" == "job-init" ]; then
        ssh autostart@101.XY.XYZ.57 -p 145 'autostart_backup'
        ping  101.XY.XYZ.21 -c 90 < /dev/null &

for i in {0..100} ; do
    com=$(pvesm status --storage PBS-HHO | tail -1);
    [[ "$com" =~ (PBS-HHO+ +)(pbs+ +)(active|inactive) ]];

    if [ "${BASH_REMATCH[3]}" == "active" ]; then
    break;
else
    sleep 15;
fi
done

if [ "${BASH_REMATCH[3]}" == "active" ]; then
echo OK
sleep 20;
else
   echo "ERROR INACTIVE or else"
   exit 1
fi
fi

if [ "$1" == "job-end" ]; then
        echo "Job-End Sleep 30 Sekunden"
        sleep 30
        ssh autostart@101.XY.XYZ.57 -p 145  'autostop_backup'
fi

exit 0

Vielen Dank frohe Weihnachtszeit
Pedi
 
check_status war als platzhalter gemeint, für *irgendein* kommando dass den status prueft (deine variante mit storage status checken z.b., oder schauen ob der port 8007 antwortet, oder proxmox-backup-client aufrufen, oder .. ;))
 
vielen dank für den genialen Input hier!
da ich das "vzdump-hook-script" aus den letzten Beiträgen nicht so recht verstanden habe (bin da echt ne Null), habe ich nach einer, für mich, logischen Lösung gesucht und gefunden. Diese möchte ich euch präsentieren. Die Fachleute mögen mich bitte korrigieren.

Code:
#!/bin/bash

# SET-X damit die Ausfuehrung protokolliert wird
# set -x

if [ "$1" == "job-init" ]; then                         # wenn ein backup job rein kommt dann
        etherwake -i eno1  aa:bb:cc:dd:ee:ff            # starte den Backup-server
        sleep 10
#        ping  192.168.??.?? -c 3 < /dev/null &            # warum sollte man hier pingen?


until [ "$act" == "true" ]                              # arbeite die loop-schleife ab bis die variable "ack" wahr ist

do
    com=$(pvesm status --storage BackupServer | tail -1);       # keine ahnung
    [[ "$com" =~ (BackupServer+ +)(pbs+ +)(active|inactive) ]];

    if [ "${BASH_REMATCH[3]}" == "active" ]; then               # der server ist erreichbar also aktiv?
        echo "Backup-Server ist erreichbar"
        act=true
        sleep 6
        exit 0
    else
        ((c=c+1))                                               # counter
    fi

    if [ $c == 180 ]; then                                      # wenn der server nach 180 sec. nicht erreichbar ist exit 1 e>
        echo "ERROR Backup-Server ist nicht erreich bar"
        sleep 2
        exit 1
    fi
    sleep 1
done
fi

if [ "$1" == "job-end" ]; then
        echo "Backup erledigt, warte 20 Sekunden dann wird der Backup-Server gestoppt"
        sleep 20s
        ssh root@192.168.xxx.xxx -p 1022 "poweroff < /dev/null &"
fi

exit 0

Für mich funktioniert das sehr gut! Hoffe es können andere auch gut gebrauchen.
 
Ich habe das Hook-Skript noch etwas verbessert.
Das Backup Storage wird nun ebenfalls mit enabled und beim ausschalten wieder disabled. Sonst werden im syslog jede Menge Einträge abgelegt, wegen nicht erreichbarem Storage.
Code:
#!/bin/bash
# script um den Backupserver zu starten wenn ein Backup ansteht. Danach wieder Ausschalten
# dieses Hook-Skript zum Backup-Auftrag hinzufügen: nano /etc/pve/jobs.cfg
# by AME 05/2023
#----------------------- Variablen --------------------------------------------------------------------------------#
PATH=/usr/sbin:${PATH}
# SET-X damit die Ausfuehrung protokolliert wird
# set -x
storeid=BackupServer                                            # Variable - um welches storage handelt es sich
mac="aa:bb:cc:dd:ee:ff"                                         # MAC Adresse des PBS-Servers
host="192.168.xxx.xxx"                                          # Hostname oder IP des PBS-Servers
nic=eno1                                                        # Netzwerk-Karte über die WOL läuft

#----------------------- Programmablauf ---------------------------------------------------------------------------#
if [ "$1" == "job-init" ]; then                                 # wenn ein backup job rein kommt dann
        pvesm set $storeid --disable 0                          # der Storage wir enabled
        etherwake -i $nic  $mac                                 # starte den Backup-server
        sleep 10s
#        ping  $host -c 3 < /dev/null &

until [ "$act" == "true" ]                                      # arbeite die loop-schleife ab bis die variable "ack" wahr ist
do
    com=$(pvesm status --storage $storeid | tail -1);           # Abfrage über den Status des Storage
    [[ "$com" =~ ($storeid+ +)(pbs+ +)(active|inactive) ]];

    if [ "${BASH_REMATCH[3]}" == "active" ]; then               # der server ist erreichbar also aktiv?
        echo "Backup-Server ist erreichbar"
        act=true                                                # variable "act" wirt wahr um aus dem loop raus zukommen
        sleep 6s
        exit 0
    else
        ((c=c+1))                                               # counter
    fi

    if [ $c == 180 ]; then                                      # wenn der server nach 180 sec. nicht erreichbar ist exit 1 e>
        echo "ERROR Backup-Server ist nicht erreich bar"
        sleep 2s
        exit 1
    fi
    sleep 1s
done
fi

if [ "$1" == "job-end" ]; then                                  # Wenn der Backup Job erledigt ist dann
        echo "Backup erledigt, warte 20 Sekunden dann wird der Backup-Server gestoppt"
        sleep 20s
        pvesm set $storeid --disable 1                          # der Storage wir disabled, sonst ist er nicht erreichbar und>
        ssh root@$host -p 22 "poweroff < /dev/null &"           # der Backupserver wird heruntergefahren
fi

exit 0
 
  • Like
Reactions: Rubbershark
Hi dremeier,

ich wollte mich bedanken. Good Job.
Das mit den Syslogeinträgen hat mich auch genervt.

Hat auf Anhieb geklappt.

Muchas gracias Senor
 
  • Like
Reactions: dremeier
Hey, danke nochmal für die vielen, hilfreichen Beiträge hier. Ich habe mir überall etwas zusammengeklaut um so meine automatischen Backups Stück für Stück zu verfeinern. Einen Pferdefuß hat die Geschichte in meinem Setup allerdings noch und ich frage mich, ob es dafür eine elegantere Lösung gibt:

Das Setup besteht aus 2 Servern, PVE1 und PVE2. Während PVE1 stets läuft ist PVE2 selten an. Auf PVE2 befindet sich ebenfalls der PBS (keine VM, ganz normal zusätzlich zum PVE installiert).
So wie ihr das auch macht wird beim Backup PVE2, also der PBS, per WOL gebootet und hinterher wieder heruntergefahren. So weit so gut.

Möchte ich aber auch die VMs auf dem PVE2 sichern ergibt sich das Problem, dass dieser beim Start des Backups nicht verfügbar ist (weil noch aus) und die Backups der daraufgelegenen VMs dann geskippt werden.
Bisher habe ich 2 verschiedene Lösungen dafür, welche beide funktionieren, aber irgendwie nicht so elegant sind:
  • PVE2 wird nicht durch das Hook-Skript beim Start des Backup-Jobs per WOL gebootet sondern 2 Minuten vorher per Chron-Job (ebenfalls per WOL).
  • Der Backup-Job bootet per WOL PVE2 und enthält nur die VMs von PVE1. Zusätzlich startet ein zweiter Backup-Job zeitversetzt, welcher die VMs von PVE2 sichert.
Kann man nicht innerhalb des Hook-Skripts den zweiten Backup-Job aus dem ersten heraus starten, sobald PVE2 verfügbar ist? Oder habt ihr noch eine andere Idee dazu?
 

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!