Skip to content

Proxmox - VMs sichern

Proxmox
  • Auch wenn ich meine VMs mit Borgbackup auf einen Hetzner Speicherplatz sichere, bleibt ein Problem. Was wenn Hetzner mal einfach verschwinden würde? (Ok, sehr unwahrscheinlich...) Das Rechenzentrum brennt völlig ab, oder was auch immer. Fakt ist, wir brauchen die VMs auch noch an einem anderen Platz.

    Da ich mein NAS jetzt ja umgebaut habe, hat jetzt deutlich mehr Speicherplatz, bietet es ich an diese dort zu sichern. Das habe ich auch vorher schon so gemacht, aber jetzt wollen wir das Ganze mal automatisieren. Man ist ja faul 😉

    Host

    Je nach eingestellter Anzahl der Backups, hat man auf dem Host eine recht hohe Anzahl an Daten. Diese immer wieder komplett zu sichern, macht nicht wirklich Sinn. Mein Plan, immer das aktuelle Image sichern und dann hinterher auf dem NAS dafür sorgen, das man nicht zu viele Images vorhält.

    Kurze Anmerkung, scripten ist für mich auch immer wieder Neuland. Profis dürften über viele Dinge lachen, ich bin für Verbesserungsvorschläge immer offen. Man lernt ja nie aus...

    Problem Nr.1, wie ermittel ich das aktuelle Image?

    Das könnte ich mit ein wenig Recherche im Internet relativ einfach lösen.

    # Nur die aktuellste Datei suchen
    vm100=$(ls -1tr --group-directories-first vzdump-qemu-100*.vma.* | tail -n 1)
    echo -e "$vm100" > /root/vmliste.txt
    

    Wir erzeugen mit dem ersten Befehl eine Dateiliste. Hier die Optionen von ls

    ls -1tr --group-directories-first vzdump-qemu-100*.vma.*
    
    • 1 eine Datei pro Zeile auflisten. „\n“ mittels -q oder -b vermeiden
    • t nach Änderungszeit sortieren, neueste zuerst
    • r umgekehrte Reihenfolge beim Sortieren
    • --group-directories-first Verzeichnisse vor den Dateien gruppieren;

    Alle Ordner nach oben, alle Dateien nach Datum auflisten, das alles umgekehrt. Das Ergebnis, die neueste Datei steht ganz unten. Diesen Dateinamen schneiden wir jetzt mit tail aus.

    tail -n 1
    
    • n die letzten ZAHL Zeilen ausgeben, statt der letzen 10.

    Das gibt jetzt die letzte Zeile der Datei aus. Diese speichern wir in der Variablen $vm100

    vm100=$(.........................)
    

    Speichert die Ausgabe des Befehles (in den Klammern) in der Variablen. Diese Variable geben wir jetzt in eine Datei aus.

    echo -e "$vm100" > /root/vmliste.txt
    

    Das Zeichen > lenkt die Ausgabe in eine Datei um, wenn das nur einmal da steht wird die Datei erzeugt, wenn sie nicht vorhanden ist. Will man was anhängen, an eine vorhandene Datei, dann nimmt man >>

    Das fertige Script

    #!/bin/bash
    ###############################################################################
        
    # Arbeitsverzeichnis einstellen
    cd /backup/dump
    
    # Nur die aktuellste Datei suchen
    vm100=$(ls -1tr --group-directories-first vzdump-qemu-100*.vma.* | tail -n 1)
    echo -e "$vm100" > /root/vmliste.txt
    
    
    vm101=$(ls -1tr --group-directories-first vzdump-qemu-101*.vma.* | tail -n 1)
    echo -e "$vm101" >> /root/vmliste.txt
    
    vm102=$(ls -1tr --group-directories-first vzdump-qemu-102*.vma.* | tail -n 1)
    echo -e "$vm102" >> /root/vmliste.txt
    
    vm103=$(ls -1tr --group-directories-first vzdump-qemu-103*.vma.* | tail -n 1)
    echo -e "$vm103" >> /root/vmliste.txt
    
    vm104=$(ls -1tr --group-directories-first vzdump-qemu-104*.vma.* | tail -n 1)
    echo -e "$vm104" >> /root/vmliste.txt
    
    vm106=$(ls -1tr --group-directories-first vzdump-qemu-106*.vma.* | tail -n 1)
    echo -e "$vm106" >> /root/vmliste.txt
    
    vm107=$(ls -1tr --group-directories-first vzdump-qemu-107*.vma.* | tail -n 1)
    echo -e "$vm107" >> /root/vmliste.txt
    

    Die Datei vmliste.txt sieht dann wie folgt aus.

    vzdump-qemu-100-2019_11_07-03_00_02.vma.lzo
    vzdump-qemu-101-2019_11_08-00_00_02.vma.lzo
    vzdump-qemu-102-2019_11_07-03_10_46.vma.lzo
    vzdump-qemu-103-2019_11_08-00_00_42.vma.lzo
    vzdump-qemu-104-2019_11_07-03_12_26.vma.lzo
    vzdump-qemu-106-2019_11_05-00_00_01.vma.lzo
    vzdump-qemu-107-2019_11_05-00_00_36.vma.lzo
    

    Mit dieser Datei, die mir nun immer das letzte (aktuellste) Image anzeigt, möchte ich auf dem NAS weiter arbeiten.

    NAS

    Wir stellen im Script das Arbeitsverzeichnis ein, holen die Datei vom Host ab und laden dann Image für Image herunter.
    Nicht sehr spannend, das Arbeitsverzeichnis einstellen.

    # Arbeitsverzeichnis einstellen
    cd /mnt/nas/Proxmox_Hetzner_VMs
    

    Die Datei vom Host abholen.

    # Dateiliste holen
    scp -P 666 user@domain.com:/root/vmliste.txt .
    echo "Datei gesichert"
    

    Die Datei wird abgeholt und im eingestellten Arbeitsverzeichnis gespeichert. Wir speichern den Pfad der Datei.

    # Name der Dateiliste
    datei=/mnt/nas/Proxmox_Hetzner_VMs/vmliste.txt
    

    Ok, so weit relativ easy, das kennen wir ja schon alles. Aber wie bekomme ich jetzt die Dateinamen aus der Datei?

    Mein Ergebnis sieht so aus

    # VM100
    vm=$(head -n 1 $datei | tail -n 1)
    echo $vm "wird gesichert"
    scp -P 666 user@domain.com:/backup/dump/$vm .
    

    Wir schreiben das Ergebnis wieder in eine Variable, die wir dann weiter verarbeiten können.

    vm=$(..................)
    

    Mit

    head -n 1 $datei
    

    hole ich mir eine Zeile der Datei und zwar die 1.

    Was mache ich aber um z.B. die zweite Zeile zu bekommen?

     head -n 2 $datei | tail -n 1
    

    Würde zwei Zeilen holen und mit tail die letzte ausschneiden! Beispiel.

    root@debian:/home/frank/Schreibtisch# head -n 2 test.txt
    1
    2
    root@debian:/home/frank/Schreibtisch# head -n 2 test.txt | tail -n 1
    2
    

    Da fällt mir gerade auf, das hier ein unsinniger Schritt drin ist.

    vm=$(head -n 1 $datei | tail -n 1)
    

    Das tail -n 1 macht ja keinen Sinn, ich habe ja nur eine Zeile Hier mal eben getestet.

    root@rockpro64:~# unset vm
    root@rockpro64:~# echo $vm
    
    root@rockpro64:~# vm=$(head -n 1 /mnt/nas/Proxmox_Hetzner_VMs/vmliste.txt)
    root@rockpro64:~# echo $vm
    vzdump-qemu-100-2019_11_07-03_00_02.vma.lzo
    

    Ok, funktioniert.

    Das komplette Script.

    #!/bin/bash
    ###############################################################################
    
    # Arbeitsverzeichnis einstellen
    cd /mnt/nas/Proxmox_Hetzner_VMs
    
    # Dateiliste holen
    scp -P 666 user@domain.com:/root/vmliste.txt .
    echo "Datei gesichert"
    
    # Name der Dateiliste
    datei=/mnt/nas/Proxmox_Hetzner_VMs/vmliste.txt
    
    # VM100
    vm=$(head -n 1 $datei)
    echo $vm "wird gesichert"
    scp -P 666 user@domain.com:/backup/dump/$vm .
    
    # VM101
    vm=$(head -n 2 $datei | tail -n 1)
    echo $vm "wird gesichert"
    scp -P 666 user@domain.com:/backup/dump/$vm .
    
    # VM102
    vm=$(head -n 3 $datei | tail -n 1)
    echo $vm "wird gesichert"
    scp -P 666 user@domain.com:/backup/dump/$vm .
    
    # VM103
    vm=$(head -n 4 $datei | tail -n 1)
    echo $vm "wird gesichert"
    scp -P 666 user@domain.com:/backup/dump/$vm .
    
    # VM104
    vm=$(head -n 5 $datei | tail -n 1)
    echo $vm "wird gesichert"
    scp -P 666 user@domain.com:/backup/dump/$vm .
    
    # VM106
    vm=$(head -n 6 $datei | tail -n 1)
    echo $vm "wird gesichert"
    scp -P 666 user@domain.com:/backup/dump/$vm .
    
    # VM107
    vm=$(head -n 7 $datei | tail -n 1)
    echo $vm "wird gesichert"
    scp -P 666 user@domain.com:/backup/dump/$vm .
    
    echo "Done."
    

    Das alles habe ich dann mit crontabs automatisiert, so das man sich nicht drum kümmern muss. Systemadministratoren sind einfach faul, oder? 🙂

    Ein letzter Schritt fehlt noch, ich muss die Dateianzahl auf dem NAS kontrollieren. Nach dem Motto, nur die letzten 5 Images werden behalten, der Rest gelöscht. Sonst mülle ich mir das NAS ja irgendwann voll. Kommt noch 🙂

  • Proxmox 8.2 released

    Proxmox
    1
    0 Stimmen
    1 Beiträge
    80 Aufrufe
    Niemand hat geantwortet
  • Proxmox - Windows Server 2019

    Proxmox
    2
    0 Stimmen
    2 Beiträge
    224 Aufrufe
    FrankMF

    Ich bin so froh, das ich das nicht mehr als Hauptsystem nutze.

    775556c8-e499-44f2-a891-4492295b7235-image.png

  • Proxmox - VM killen

    Proxmox
    2
    0 Stimmen
    2 Beiträge
    299 Aufrufe
    FrankMF

    Und wenn das auch nicht geht, dann geht das 🙂

    ps aux | grep "/usr/bin/kvm -id VMID" kill -9 PID
  • MSI B550I Gaming Edge WiFi

    Linux
    2
    0 Stimmen
    2 Beiträge
    119 Aufrufe
    FrankMF

    Einige Tage später, bin ich mit meinem neuen Projekt (grob) fertig. Der Rechner hostet jetzt eine Proxmox VE auf der eine VM mit pfSense läuft, die meinem Netzwerk als Sicherung dient. Dazu ist eine zusätzliche Netzwerkkarte in den freien Grafikkartenslot verbaut worden.

    Jo, es hatte schon seinen Grund einen AMD Ryzen5 5600G zu nehmen 😉

    10:00.0 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01) 10:00.1 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01)

    Somit hatte ich die benötigten Netzwerkkarten für mein Setup.

    WAN - Netzwerkschnittstelle auf dem Bord LAN - Intel Corporation 82576 OPT1 - Intel Corporation 82576

    LAN ist das Netzwerk für meine Geräte, OPT1 ist mein Netzwerk für alle Geräte denen ich nicht besonders vertraue.

    TV FireTV PS5
    usw.

    Das läuft auch mit guter Geschwindigkeit.

    speed.png

    Was mir hier richtig Zeit gekostet hatte, war ein Denkfehler im Konzept. Ich habe ja mein aktuelles NAS aufgelöst und hatte den ZFS-Pool des Proxmox dafür benutzt. Das ging auch, aber mir gefielen da einige Aspekte nicht.

    lief im falschen Netz auf dem Proxmox Host lief der NFS

    Suboptimal, das musste besser gehen. Also habe ich mich damit beschäftigt, wie man Festplatten an eine VM durchreicht. Das Ergebnis

    4ad18f09-4098-41c8-a92d-bb5fd3392999-grafik.png

    Aus diesen beiden Platten habe ich dann einen ZFS-Pool gemacht.

    root@debian1:~# zpool status pool: NAS state: ONLINE scan: resilvered 232K in 00:00:01 with 0 errors on Sun Oct 17 16:38:46 2021 config: NAME STATE READ WRITE CKSUM NAS ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 scsi-0QEMU_QEMU_HARDDISK_drive-scsi1 ONLINE 0 0 0 scsi-0QEMU_QEMU_HARDDISK_drive-scsi2 ONLINE 0 0 0 errors: No known data errors

    Warum ZFS? Kann ich auch nicht beantworten, da immer mehr das nutzen (Ubuntu, pfSense usw.) habe ich gedacht, wir probieren es mal aus. Da ZFS sehr speicherhungrig ist, was ich vorher wusste, hat die Kiste auch 64GB RAM (Host). Ich hoffe das langt. Die Debian VM läuft zur Zeit mit 4GB. Mal sehen, ob das in Zukunft ausreicht.

    root@debian1:~# free gesamt benutzt frei gemns. Puffer/Cache verfügbar Speicher: 4025628 119896 3801808 508 103924 3732976 Swap: 998396 0 998396

    Das Ganze ist jetzt fertig aufgebaut und das Gehäuse ist zugeschraubt. Verbaut sind aktuell

    2 * 4TB HDD ZFS-Pool Host 2 * 2TB HDD ZFS-Pool für NAS (VM100)

    Nächster Schritt ist die Datensicherung des NAS und grundsätzlich die Vervollständigung der Konfiguration. Da habe ich bei der Testerei doch einiges ignoriert....

    20211018_111551_ergebnis.jpg

  • 0 Stimmen
    1 Beiträge
    2k Aufrufe
    Niemand hat geantwortet
  • Proxmox - Backups

    Proxmox
    2
    0 Stimmen
    2 Beiträge
    351 Aufrufe
    FrankMF

    Ok, heute auf Twitter mitbekommen, das er aktualisiert hat.

    Der Inhalt des Ordners

    root@frank-mankel:~/pve-patches# ls -lha total 572K drwxr-xr-x 3 root root 4.0K Jul 29 16:27 . drwx------ 7 root root 4.0K Jul 29 16:27 .. drwxr-xr-x 8 root root 4.0K Jul 29 16:27 .git -rwxr-xr-x 1 root root 13K Jul 29 16:27 pve-2.2-diff-backup-addon -rwxr-xr-x 1 root root 14K Jul 29 16:27 pve-2.3-diff-backup-addon -rwxr-xr-x 1 root root 14K Jul 29 16:27 pve-3.0-diff-backup-addon -rwxr-xr-x 1 root root 14K Jul 29 16:27 pve-3.1-diff-backup-addon -rwxr-xr-x 1 root root 14K Jul 29 16:27 pve-3.2-diff-backup-addon -rwxr-xr-x 1 root root 14K Jul 29 16:27 pve-3.3-diff-backup-addon -rwxr-xr-x 1 root root 14K Jul 29 16:27 pve-3.4-14-diff-backup-addon -rwxr-xr-x 1 root root 14K Jul 29 16:27 pve-3.4-diff-backup-addon -rwxr-xr-x 1 root root 16K Jul 29 16:27 pve-4.0-diff-backup-addon -rwxr-xr-x 1 root root 16K Jul 29 16:27 pve-4.1-22-diff-backup-addon -rwxr-xr-x 1 root root 16K Jul 29 16:27 pve-4.1-diff-backup-addon -rwxr-xr-x 1 root root 16K Jul 29 16:27 pve-4.2-17-diff-backup-addon -rwxr-xr-x 1 root root 16K Jul 29 16:27 pve-4.2-diff-backup-addon -rwxr-xr-x 1 root root 16K Jul 29 16:27 pve-4.3-diff-backup-addon -rwxr-xr-x 1 root root 16K Jul 29 16:27 pve-4.4-13-diff-backup-addon -rwxr-xr-x 1 root root 16K Jul 29 16:27 pve-4.4-diff-backup-addon -rwxr-xr-x 1 root root 16K Jul 29 16:27 pve-5.0-diff-backup-addon -rwxr-xr-x 1 root root 20K Jul 29 16:27 pve-5.1-48-diff-backup-addon -rwxr-xr-x 1 root root 16K Jul 29 16:27 pve-5.1-diff-backup-addon -rwxr-xr-x 1 root root 16K Jul 29 16:27 pve-5.2-2-diff-backup-addon -rwxr-xr-x 1 root root 18K Jul 29 16:27 pve-5.3-9-diff-backup-addon -rwxr-xr-x 1 root root 18K Jul 29 16:27 pve-5.4-5-diff-backup-addon -rwxr-xr-x 1 root root 18K Jul 29 16:27 pve-6.0-1-diff-backup-addon -rwxr-xr-x 1 root root 18K Jul 29 16:27 pve-6.0-5-diff-backup-addon -rwxr-xr-x 1 root root 713 Jul 29 16:27 pve-verify-backups -rwxr-xr-x 1 root root 70K Jul 29 16:27 pve-xdelta3_3.0.5-1_amd64.deb -rwxr-xr-x 1 root root 70K Jul 29 16:27 pve-xdelta3_3.0.6-1_amd64.deb -rw-r--r-- 1 root root 6.7K Jul 29 16:27 README.md

    Meine Version

    00c8e918-7109-47bb-bd48-50958f632597-grafik.png

    Da hat der Patch natürlich nicht funktioniert.

  • Proxmox - Neue HDD hinzufügen

    Verschoben Proxmox
    2
    0 Stimmen
    2 Beiträge
    3k Aufrufe
    FrankMF

    Hoppla, da passt was nicht.

    root@frank-mankel:~# pvesm status Name Type Status Total Used Available % VM lvmthin active 488136704 23284120 464852583 4.77% backup dir active 57278576 3501916 50837372 6.11% local dir active 57278576 3501916 50837372 6.11% local-lvm lvmthin active 147275776 0 147275776 0.00%

    Hier sieht man, das backup ca. 50GB groß ist. Da die Partition deutlich größer ist, fehlt da was!?? Kurz mal nachgedacht und gesucht..... 😉

    Der Eintrag in /etc/fstab muss natürlich auch vorhanden sein, so wie gewohnt. Danach

    root@frank-mankel:~# pvesm status Name Type Status Total Used Available % VM lvmthin active 488136704 23284120 464852583 4.77% backup dir active 1921797220 77856 1824027568 0.00% local dir active 57278576 3502984 50836304 6.12% local-lvm lvmthin active 147275776 0 147275776 0.00%

    e9b52dbe-dc81-4bec-a4e8-a26885f57d84-grafik.png

    Mein vorhin erstelltes Backup war weg. Also aufpassen!!

  • Proxmox - TOTP

    Verschoben Proxmox
    2
    0 Stimmen
    2 Beiträge
    339 Aufrufe
    FrankMF

    Als Ergänzung, nein das darf nicht die einzige Maßnahme sein.

    Firewall fail2ban usw.