Direkt zum Hauptinhalt

ProxMox

Die Dokumentation für "Proxmox Produktiv mit ZFS betreiben" basiert auf einem kostenpflichtigen Kurs und soll dessen Inhalte wiedergeben, kann aber nicht die Betreuung und Beantwortung von Fragen, wie sie der Besuch des Kurses bietet, ersetzen. Es soll das Wissen von den hauptberuflichen Sysops Admins an Interessierte weitergegeben werden, die es danach auf den von Ihnen betreuten Systemen umsetzen können.

https://cloudistboese.de - Das Schulungsportal von sysops.tv

Proxmox VE - Alternative zu vSphere und Hyper-V mit Support aus Deutschland und Österreich

Was ist Proxmox VE

  • Proxmox

    GemischtesVE Systemist füreine Gesamtlösung zur Virtualisierung

  • Einsatzbereiche Standalone bis Cluster
  • Es beinhaltet entscheidende Storagefunktionen mit ZFS und ZFS Storage

    Ceph
  • Umfangreiche Virtualisierung und Containering Lösung

  • Moderner Unterbau mit aktuellem Debian Linux

  • Reichhaltige Funktionen die durch eigene Kommandozeilenlösungen erweitert werden

Wo sind die Grenzen von Proxmox VE

  • Kaum bis keine Funktionen in der GUI für ZFS

    Storage Steuerung und Monitoring
  • Viele Funktionen lassen sich nur per Kommandozeile ausführen
  • Es gibt keine Möglichkeit ein defektes System per Installation zu reparieren, Reparaturkenntnisse müssen vorhanden sein
  • Das Eigenmonitoring ist so gut wie nicht vorhanden. Defekte Replikationen, Raids oder Datenträger nur mühsam feststellbar

KernfunktionenWeitere Funktionen, die eher weniger Sinn machen

  • KVMSAN Virtualisierungmit undiSCSI LXC(keine ContaineringGUI)
  • ZFSSAN Storagesystemmit fürNFS Software(beste RAID und rudimentäre Snapshot- und ReplikationslösungOption)
  • Optional:Hardware NFS-KernelRaid Servermit LVM (kein Vorteil zu ZFS / CEPH)
  • Optional:Multipath iSCSInur Target
  • per
  • Optional:manueller erweitertes ZFS-Management mit Sysops HauslösungenKonfiguration
  • Indikation für Einsatz

    • Kleinere Anzahl von PVE Systemen mit Aufnahmedirekt vonangeschlossenen Datenträgern (kein Hardware Raid!)
    • Hoher AnspruchBedarf an SnapshotverwaltungReparatur durch Snapshots (tausende Snapshots kein Problem)
    • Leichte Replikation der Daten auf zweites System und eventuelle weitere Ziele (mit Bashclub Tools und GUI möglich, Pull Replikation nur mit unseren Tools)
    • ApplikationsbasierteHauseigene DatensicherungDatensicherungslösung auf Hypervisor Ebene
    • Eigenes Monitoring und Reporting bevorzugt - Zentrales Monitoring wie Checkmk
    • Check_MK
    • Einfacheresist Deploymentzwingend und Wiederherstellungnotwendig
  • ** Bei LinuxProxmox kommt alles aus den Kernel (ZFSZFS, undCeph, KVM)

    LXC,
  • KVM, uvm.)

    Chriz rät von der Nutzung als iSCSI Server ab**

    Proxmox Workshop 20230926 und 20230928

    26.09.2023

    Linux Kommandos

     die man kennen sollte

    • lsblk lsb_release#zeigt Datenträger und Partitionen an
    • ls -aalthr /dev/disk/by-id # Debianzeigt VersionFestplatten Aliase zum eindeutigen Zuweisen von Raids an
    • ls cat-althr /etc/debian_versionsys/class/net #zeigt aktuelle Netzwerkkarten an
    • ls -althr /dev/zvol/rpool/data # Debianzeigt VersionZVOL Namenszuordnungen zu /dev/zdxxx an
    • dmesg -Tw #zeigt Hardwareänderungen wie Diskwechsel oder Netzwerkkabel stecken live an
    • systemctl reboot--failed #zeigt hängende dienste an
    • htop #zeigt load an. hier sollten die drei Zahlen unter der Anzahl der logischen Kerne sein. Also 16 Kerne, Load unter 16. Erste Zahl letze Minute, zweite Zahl letze fünf Minuten, dritte für letzte Viertelstunde
    • zpool list # reboothier muss der Wert Cap unter 80% liegen, sonst müssen Snapshots oder sogar produktive Daten gelöscht werden
    • zpool reboot#status reboot#Raid Status
    • zfs initlist 6-t snapshot #z. B. mit -oname,written,creation rpool/data/vm-100-disk-1
    • qm stop 100 && zfs rollback rpool/data/subvol-100-disk-0@zfs-auto-snap_hourly-2024-10-24-0217 && qm start 100 # reboot
    • Rollback
    • ohne sedWiderkehr -ider 's/bullseye/bookworm/g'Daten /etc/apt/sources.listeiner # Anpasung von Textfiles mittels sedVM

    Proxmox Installation

    Um Proxmox mit ZFS nutzen zu können, müssen die Platten direkt an Proxmox gegebenangebunden werden. Es sollte kein RAID Controller mit RAID 0 genutzt werden, da dies früher oder später zu Problemen und Datenverlusten führen wird.wird! Damit auch eine Update von Promox 7.x auf 8.x gezeigt werden kann, wird im Kurs mit der Installation einer Proxmox Version 7.x begonnen.begonnen und später auf 8 aktualisiert. Das Postinstall Script aus dem Bashclub wird installiert, um auch alle benötigten Tools für die tägliche Arbeit und im Problemfall im Zugriff zu haben. (z.B. ohne ein Netzwerkverbindung kann nichts mehr nachinstalliert werden)

    Spickzettel für Installation

    • Kein RAID Controller
    • Platten direkt an Proxmox geben, es müssen die Herstellerbezeichnung der Platten im Linux Betriebssystem sichtbar sein. (z.B. nvme-INTEL_... über das Kommando ls /dev/disk/by-id)
    • ISO Installation mit Version 7.x - wegen Update auf 8.x durchführen zu können
      • Install Proxmox
      • Target Harddiskstarten
        • Standardauswahl:Die sdaStandardauswahl /im sdaInstaller —> ext4 mitwürde LVM - daher auf optionseine (ALTDisk o)installieren, was nur für Hardware Raid Sinn machen würde
        • ZFS RAID 1 oder ZFS RAID 10
        • Festplattensind müssendie gelesenempholenen werdenLevel für die Beste Leistung, haben jedoch einen Platzverlust von 50%, was in der Natur liegt
        • Advanced OptionOptions - ZFS Optionen
        können default gelassen werden, ashift=12 + compression=on passt für alle Platten über 2TB
      • Passwort muss sich in der HTML Console gut tippen lassen - ThomasHTML Krennund ServerJAVA Konsolen sind dahier zickicksehr schwierig mit deutsch Tastatur! Testen!
      • Die Installation mit sorgfältig gewählten Namen und IP Adressen durchführen
    • Proxmox
    Boot-Tool kann hilfreich sein

    Proxmox GUI Zugriff

    • Im Browser: https://<ip>:8006

      • Single PAM - ssh login # Benutzer auf Linux Ebene und PVE GUI
      • Proxmox VE - Weboberfläche Cluster User
    • Proxmox CLI gegen root SSH Zugriff schützen (macht auch das SSH Hardening unseres Postinstallers)

    • /etc/ssh/.sshd_config

      • PermitRootLogin without-password
      • service sshd reload

      Proxmox GUI

    • TOTP (time-based one-time password) kann über die Proxmox GUI gesetzt werden

      • Datacenter - Permissions - Two Factor
      • Selbst bei kompromitierem Passwort kann kein Dritter zugreifen!
      • Für PAM und PVE User möglich

    Update nach Proxmox 8.x - Für Einsteiger am einfachsten bei Erstinstallation zu üben

    Proxmox Update 7 to 8

    Das Pre-Upgrade Check Script pve7to8 sollte ausgeführt werden, um mögliche Probleme vor dem Upgrade erkennen zu können. Erstmal ohne Parameter und anschließend mit Parameter (--full: alle Checks).

    In

    ** Für das Upgrade muss entweder eine Subskription erorben werden. Alternativ kann man auch das Enterprise Repository deaktivieren und das No-Subkription Repository aktivieren. Nur so erhält man Proxmox Updates!!! Ohne diese Auswahl kommen nur Debian Security Fixes!!!

    Hier der Zusammenstellung des Updates wurde auch die Zeile für no subscription eingefügt. Das Unterverzeichnis source.list.d von /etc/apt sollte gecheckt werden, dass alle Dateien auf "bookworm" umgestellt worden sind, damit das Debian Update wieder einwandfrei funktioniert. Nach dem Update von Debian und dem reboot, ist ein Refresh des Brwoser erforderlich, damit die neueStand Version angezeigt7 wird.

    zu

    Eintrag no subscription in /etc/apt/source.list8

    • pve7to8

    • ve7to8 -- full

    ProxmoxWir Updateempfehlen nachdie AnleitungVMs vonund ProxMoxContainer zu stoppen und einen zeitnahen Reboot - SubscriptionDer bzw. Nosubsription beachten

  • Nachneue Kernel Updatepassend -zur rebootGUI einplanenkann nur so aktiviert werden

  • apt update apt dist-upgrade pveversion

    #

    Letzte Version PVE 7 sollte nun installiert sein, kein Reboot notwendig hier

    Upgradeprozedur bei Standardsystem

    sed -i 's/bullseye/bookworm/g' /etc/apt/sources.list # ändert alle Repositories von Bullseye (Debian 11) zu Bookworm (Debian 12)

    Enterprise Repo anpassen

    echo "deb https://enterprise.proxmox.com/debian/pve bookworm pve-enterprise" > /etc/apt/sources.list.d/pve-enterprise.list

    Debian update

    screen # Nofalls subscriptionetwas schief geht kann man mit screen -r siehezurück Linkzur echo "deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription" > /etc/apt/sources.list sed -i -e 's/bullseye/bookworm/g' /etc/apt/sources.list.d/pve-install-repo.list # Debian updateSitzung apt update apt dist-upgrade systemctl#sollte reboothier

    mehrere
  • hundert Aktualisierungen ankündigen

    Während des UpgradeUpgrades könnensollte Fragenman alles mit N beantworten und den Diensteneustarts zustimmen. Es kommt ggf. auch ein Textdokument was mit w zu einzelnenverlassen Konfig Dateien gestellt werden, wenn wir diese verändert haben, sollten wir diese nicht durch das Update verändern lassen. In der Update Prozedur wird ein neuer Kernel im Betriebssystem installiert, damit dieser aktiv werden kann, muss ein reboot durchgeführt werden, der auch zu einen späterem Zeitpunkt z.B. abends erfolgen kann.ist

    Unser Postinstaller Proxmoxsorgt in kürzester Zeit für alle notwendigen Sicherheits- und Komforfunktionen für den Notfall

    Postinstall aus bashclub (proxmox-zfs-postinstall) auf github

    • Bashclub Postinstaller Proxmox

      • ZFS L1ARC Size wird von PVE nur lieblos berechnet, empfohlen sind 1GB RAM für 1TB netto Datastore als first Level Cache
      • Swappiness auf 10 Prozent oder kleiner, damit PVE nicht zu früh auslagert, jedoch am besten nicht den RAM überprovisioneieren!
      • ZFS auto snapshots - die Werte können frei konfiguriert werden. Empfehlung für den Start (PVE weiß nichts davon!)
        • monthly: 3
        • weekly: 6
        • daily: 10
        • frequent: 12
        • hourly: 96 --> wegen Weihnachten und Ostern
      • Repo
        • No Subscription auswählen
        • hlen,
        falls
      • keine
      Subskription
    • Beschreibung auf github (Auszug)

      • Backup /etc auf zfs dataset rpool/pveconf - Configuration liegt in einer Datenbank
        • Wichtig Erweiterung für Proxmox
          • z.B. Sicherung der VM und LXC config Dateien der einzelnen Maschinen
          • ...vorhanden

    Wir sichern extra die /etc Ordner nach rpool/pveconf, da der Ordner /etc/pve aus einer Datenbank live erstellt wird. Er wäre bei einer Reparatur via Boot ISO leer!!!

    Die ZFS auto Snapshots werden über die crontab ausgeführt. Dafür gibt es verschiedene Verzeichnisse:

    • /etc/cron.hourly
    • /etc/cron.daily
    • /etc/cron.weekly
    • /etc/cron.monthly
    • /etc/cron.d (viertelstündlich)

    In den Ordner liegt dann für jede "Aufgabe" ein eigene Datei (z.B. zfs-auto-snapshot), in welcher die auszuführen Kommandos enthalten sind. Dort ist auch hinterlegt wieviele auto snapshots aufgehoben werden sollenn. (--keep=96)

    Die Zeitpunkte wann dieses ausgeführt werden sind in der Datei /etc/crontab definiert. z. B. könnte dort der tägliche Zeitpunkt angepasst werden

    Ebenfalls finden sich Skripte ab Werk unter /etc/cron.d für z. B. Scrubbing und Trimming am Sonntag. Nicht jedem taugt dieser Zeitpunkt!

    cat /etc/crontab 
    # /etc/crontab: system-wide crontab
    # Unlike any other crontab you don't have to run the `crontab'
    # command to install the new version when you edit this file
    # and files in /etc/cron.d. These files also have username fields,
    # that none of the other crontabs do.
    
    SHELL=/bin/sh
    PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
    
    # Example of job definition:
    # .---------------- minute (0 - 59)
    # |  .------------- hour (0 - 23)
    # |  |  .---------- day of month (1 - 31)
    # |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
    # |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
    # |  |  |  |  |
    # *  *  *  *  * user-name command to be executed
    17 *	* * *	root	cd / && run-parts --report /etc/cron.hourly
    25 6	* * *	root	test -x /usr/sbin/anacron || { cd / && run-parts --report /etc/cron.daily; }
    47 6	* * 7	root	test -x /usr/sbin/anacron || { cd / && run-parts --report /etc/cron.weekly; }
    52 6	1 * *	root	test -x /usr/sbin/anacron || { cd / && run-parts --report /etc/cron.monthly; }
    #
    
    

    Zusätzlich gibt es für jeden User (z.B. root) noch eine eigene crontab, diese liegen unter cd /var/spool/cron/crontabs/. Dort gibt es dann eine Datei root für den User root, falls diese erzeugt wurde. Diese Datei wird z.B. auf den Linux VMs genutzt, um das Trimming zeitgesteuert ausgeführen zu können.

    proxmox-boot-tool / ZFS Feature Upgrade / Trimming einschalten

    Mit dem promox-boot-tool könnten Platten nach einen Hardwaretausch wieder bootfähig gemacht werden. Heute sollte nach Möglichkeit uefi Boot eingesetzt werden und nicht mehr legacy Boot, damit werden die Boot Platten automatisch erkannt und müssen nicht einzeln durch probiert werden, wie bei legacy boot. Autotrim sollte auf demden SSD ZFS DatasetDatasets eingeschaltet sein, damit freiegelöschte Blöcke wieder im Dateisystem schnell verfügbar gemacht werden.

    Optionale Funktionen zur ZFS Storage Optimierung

    •     dmesg -w # oder 
          dmesg -Tw # - Hardware Tausch 
          ProxMox-boot-tool 
          proxmox-boot-tool status 
          zpool upgrade 
          zpool upgrade -a # führt das Upgrade durch 
          # ZFS trim einschalten 
          zpool set autotrim=on rpool # Freigabefür leererSSD BlöckePools
    • zpool set autoexpand=on rpool #vor Plattentausch auf größere Disks
    • zpool upgrade #regelmäßig prüfen ob hier bei zpool status ein Hinweis ist. Der aktuelle PVE ISO Installer muss aber mit der Version bestückt sein, daher ggf. immer eine Version abwarten
    • zpool trim rpool #test ob Trimming das System ausbremst
    • zpool statusiostat -v 1 # Live Status

    Einige wichtige Ordner vom Proxmox:

    • Template Ordner /var/lib/vz
    • ISO Ablage Ordner /var/lib/vz/template/iso - z.B. virtio-win.iso
    • Cache /var/lib/vz/cache/ z.B. *.tar.gz Proxmox Mailgateway

    PVE boot nicht mehr

    Wenn der Proxmox nicht mehr bootet, werden die folgenden Schritte durchgeführt, um ihn wieder herzustellen zu können. Die erforderlichen ZFS snapshots werden durch die "Tools" des Postinstaller erzeugt. Beim PVE Ordner (/etc/pve) handelt es sich um eine Datenbank (/dev/fuse 128M 20K 128M 1% /etc/pve), die ohne den Postinstaller nicht gesichert würden (rpool/pveconf 884G 128K 884G 1% /rpool/pveconf).

    Daher sollte der Postinstaller aus dem Bashclub auf jeden Promox PVE installiert sein, damit die Konfigurationsverzeichnisse von Proxmox auf ZFS gesichert und mit Auto Snapshosts versehen werden !!!

    • Proxmox CD bzw. ISO booten - Debug auswählen

    • exit - damit nicht der Installer bootet
      zpool status zpool import
      zpool import rpool
      zpool import -fa # a für all
      zpool import -f rpool zpool status
      zpool list
      zfs list -t snapshot
      zfs list -t snapshot | grep pve-1
      zfs rollback -r rpool/ROOT/pve-1@zfs-auto-snap.hourly\_2023-09-26-1251 # entsprechender snapshot - boot und Proxmox geht wieder ```
      
    • ZFS dataset "data" zurück rollen, falls erforderlich, je nachdem wie das eigentliche Problem aussieht und welche Maßnahmen sich daraus ergeben

    zfs rollback -r rpool/data@... (?) #  data/vm... zurück rollen
    
    

    Verschlüsseltes ZFS

    • zfs-load-key
      • Replication raw - Chriz Software unterstützt das ...
    • PVE GUI
      • local
      • local-ZFS
    • VM auf RAID-Z 8k versus 16k
      • ZFS create rz\_repel/vmtest
        ZFS create V 10G rz\_repl/vmtest/disk8k # Keine RAID5 für VM‘s - langsam wegen 8k  - RAID5 min. 16K einstellen
        
      • Local-ZFS Einstellung auf min. 16k einstellen

      • Proxmox Standard volblocksize=8k

        • Anmerkung: Mittlerweile ist der Standard 16k
      • Siehe awo.de Tabelle - Artikel ZFS RAID

    VirtIO Treiber für Windows

    • VirtIO Treiber im Internet finden

    • Auf Proxmox Seite nach Stable suchen

    • ProxMox Virtual Treiber - für Windows iso

    • Create VM

      • General
        • Node: pvews
        • VM ID: 101
        • Name: win
        • Start at boot: Harken
      • OS
        • Use CD/DVD disc image file (iso)
          • Storage: local
          • ISO Image: Win10_22H2_German_x64.iso
      • System
        • Maschine q35
        • BIOS: OVMF (UEFI)
        • Add EFI Disk: Harken
        • Emu Agent Harken
        • EFI Storage: local-zfs
        • SCSI Controller: VirtIO SCSI Single
      • Disks
        • Bus/Device: SCSI 0
          • VirtIO Block ist obsolet !!!
        • SCSI - VirtIO SCSI Single - steht auf der Seite davor - SCSI Contoller kann ein Prozessorkern pro Festplatte
        • Discard: Harken
        • SSD emulation: Harken
        • Cache: - Default (no cache) - keine Cache einschalten !!!
      • CPU
        • Socket: 1
        • Cores: 4
        • Type: Host (Standard: x64-64-v2-AES)
      • Memory
        • Memory: 4096
      • Network
        • Bridge: vmbr0
        • Model VirtIO (paravirtualized)
      • Conirm
        • Installation starten
    • GUI - VM - Hardware - CD/DVD

      • Zweites CD Laufwerk VirtIO Treiber ISO
        • GUI - VM - Hardware - Maschine
          • q35 Version 5.2 - weniger Probleme als mit Version 8.0 wegen deutschen Treibern - ist für US optimiert ... - Probleme mit Netzwerkkarten
    • EFI hat feste Bildschirmauflösung - kann nur im EFI der VM eingestellt werden (EFI BIOS) - Im Bootvorgang in der Console (Proxmox GUI) - ESC drücken

    • Windows Installer

    • Treiber - Virtualio SCSI laden - vioscsi - win10 - amd64

    • vm-<VM ID>-disk-0 EFI BIOS - speichert z.B. Bildschirmauflösung

    • vm<VM ID>-disk-1 Windows 10 - z.B. zd16

      • Windows partitioniert die „disk-1“ in 3 Partitionen - während der Installation
      • Partition 1 - p1: EFI
      • Partition 2 - p2: Microsoft reserved
      • Partition 3 - p3: Microsoft basic data
    • Windows ohne Netzwerk = keine "dummen" Tools werden installiert

    • Windows ohne Passwort = keine Sicherheitsfragen

    • Wichtig für den Start der VM

      • Pool muss online
      • Pool unter 80 %
      • Definition des Storages unter cat /etc/pve/storage.cfg
      • PVE Server 101.conf - unter cat /etc/pve/qemu-server/101.conf
      • Virtual CD - fehlende Treiber - 1 Controller pro Festplatte
    • Virtio-win-guest-tools - evtl. Erweiterung exe des Dateinamens sichtbar - installiert alles - liegt im Hauptverzeichnis der CD/DVD

      • am Ende sollten auch die Guest-Tools installiert werden
        • Reale Memory Anzeige, CPU Usage und IP Adressen
      • Deinstallation der Windows Apps
        • Über Powershell Kommandos
    Get-appxPackage | Remove-appxPackage # man verliert Taschenrechner - alle App werden entfernt - auch der Storage wird entfernt - Nach Feature Update wieder alles da
    
    
    • Festplatte vergrößern

      • Resize 16 GB - bedeutetet +16 GB
    • Auf PVE

    cd /dev/zvol/rpool/data 
    ls -altrh
    
    
    • Wiederherstellungspartiions an das Ende verschieben oder löschen
    • /dev/zvol/...

    Hat Chriz bisher noch nie gebraucht

    • cfdisk # - Partition löschen 
      
      
    • Partition in Windows Erweitern

      • Unter Linux (Vergrößern der Windows Partition): VM vorher ausschalten, resize geht nicht immer Fehlerfrei
      • Datenträger neue Größe
    • Im Explorer wird noch die alte Größe angezeigt

    • zfs history 
      cd /dev/zvol/rpool/data 
      ls -althr 
      
      
    • SSD Emulation / Discard

    • Defragemtieren

    • Unter Einstellungen ändern: Auf einmal täglich einstellen

    • Windows Swap optimieren - powershell

    • attrib 
      powercfg -h off # evtl. darf es der User nicht - powershell als administrator starten 
      zfscreate-o com.sun:auto-snapshot=false rpool/swap # keine  autosnapshots!!! 
      
      
    • PVE rpool/swap in der GUI - Add ZFS

    • ID: rpool-swap

    • ZFS Pool: rpool/swap

    • Content: Disk Image

    • Thin provision Haken setzen !

    • Block Size: 16K

    • Add Hard Disk:

      • Disk Size: 8 G
      • Storage: rpool-swap
      • SSD emulation: Haken
      • Discard: Haken
      • Backup Haken ?
        • Herausnehmen ? - Backup: ja --> Backup Haken entfernen
      • Replication: nein
    • Im PVE add ZFS

    • ID: rpool-swap

    • ZFS Pool: rpool/swap

    • Content: Disk Image

    • Thin provision: Haken

    • Block Size: 16K

    • PVE Add Hard Disk

      • Bus/Device: SCSI
      • Storage: rpool-swap
      • Disk size (GiB): 8
      • SSD emulation: Haken
      • Discard: Haken
      • Backup: Haken
        • auf jedenfall bei Linux
        • Windows braucht die Partition nicht,
      • bei Replication: nein, Backup: ja
    • Nach neuer Hardware suchen - Evtl. Bug - Hotswap - bei SCSI Controller VirtIO SCSI würde er ihn direkt erkennen

      • Neuer Speichercontroller gefunden
    • Neues Laufwerk a: oder b: # Niemand braucht a: oder b: mehr

      • Auslagerungsdatei auf a: ändern und c: herausnehmen
        • Auslagerungsdatei: page file (pagefile.sys) - liegt normalerweise auf Laufwerk c:
        • Eine swap Partition hat den Vorteil, dass für die Auslagerung von RAM eine eigene Partition verwendet wird
    • Checkliste Platz

    • Unter Linux wird nicht mehr benötigter Storage einer SDD wie folgt freigeben

      • Linux/sbin/fstrim -av - für Linux VM
    • Eine automatisierte Freigabe von nicht mehr benötigtem Storage, kann über die crontab in Linux gesteuert werden

      • crontab -e # crontab für den User root
        • 0 0 * * * /sbin/fstrim -a
          • Der crontab Eintrag bedeutet, dass an jedem Tag um 0 Uhr der trim Befehl ausgeführt wird
    fstrim -av # muss eine Ausgabe bringen - sonst ist die VM falsch konfiguriert - VM Platten auf SSD und Discard umstellen
    
    
    • Wenn 8k und RAID 5 —> neuer datastore 16k und move disk
    • Wenn die Disk in der VM —> Treiber installieren, VM herunter fahren, deatach, attach mit ssd / discard
    • Optimierungen einstellen
      • Page file wie oben erklärt (öndern in SWAP Partition)
      • Dann tägliche Optimierung einstellen, Platz wird spätestens nach 3 Monaten frei (wegen snapshots)
      • optional snapshots von Hand löschen und neue snapshots anlegen
      • Optional Vacuum auf Datenbanken

    28.09.2023

    Workshop 2023-09-28

    Erklärung zum Kommando sgdisk ... -- R ...

    • sgdisk \<gutes boot device\> - R \<neue Platte\> # Partitionen werden kopiert und die GUID wird beibehalten

    • Soll eine neue GUID verwendet werden sgdisk -G \<neue Platte\>

    • zpool set autoexpand=on rpool # Erweiterung des Pools, wenn alle Platten getauscht

    • sgdisk /dev/sdb -R /dev/sda # Partitionstabelle kopieren - /dev/sda ist die neue Platte (s.o)

    cfdisk /dev/sda # Partition vergrößern
    
    sgdisk -G /dev/sda # EFI: neuer Fingerabdruck, damit EFI zu recht kommt 
    proxmox-boot-tool format /dev/sda2 # format der Bootpartition (Partition 2) - Windows Dateisystem
    
    proxmox-boot-tool init /dev/sda2
    proxmox-bool-tool status
    proxmox-boot-tool clean # wirft Platten heraus, die er nicht mehr kennt
    update-initramfs -u # alte Variante - wegen aktuellen Bug - nur eine Platte bootet über status
    apt install systemd-boot systemd-boot-efi # fehlt nach Update von 7.x auf 8.x
    zpool replace rpool ata-INTEL-...-part3 ata-ST2000...-part3 # „alte Platte“ „neue Platte“
    zpool status
    zpool status 1
    
    
    • Im Einspielvorgang / resilver Vorgang

      • ZFS interessiert das nicht - Hardware RAID böse !!!
      • Nach dem Reboot geht das Einspiegeln weiter ...
      • Zweite HDD in freien Slot stecken
    • Nach dem Booten können die Festplatten einen anderen Buchstaben bekommen, sowie sie erkannt wurden

    sgdisk /dev/sdb -R /dev/sdd
    sgdisk -G /dev/sdd
    zpool status
    proxmox-boot-tool format /dev/sdd2
    proxmox-boot-tool init /dev/sdd2
    proxmox-boot-tool status
    zpool status
    
    
    • Cockpit ZFS nur zum schauen - kein two Factor !! - aus Postinstall Proxmox - Achtung neuer Link

    • wget https://raw.githubusercontent.com/bashclub/proxmox-zfs-postinstall/main/install-cockpit-zfs-manager
      bash install-cockpit-zfs-manager
      
    • https://<ip>:9090

    • root user kann sich nicht per Passwort einloggen

      • Temporär in der /etc/ssh/ssd_conf ändern, dass sich der User root wieder mit dem Passwort anmelden kann # keine Empfehlung wegen Security
      • Sicherer:
        • root kann sich nur mit ssh key einloggen, dann kann ZFS Cookpit nicht mehr genutzt werden
        • Nutzung von CLI ZFS Kommandos
    • z.B. für das zum Zurückspielen einer VM

      • VM muss vorher im Proxmox gestoppt werden
        • zpool replace ... # löscht Platte !!!
          zpool attach rpool ata-... # neue Platte erst hinzufügen
          zpool detach ... # Schublade - Backup
          zpool attach rpool ata-INTEL-SSD..-part3 ata-ST2000...-part3 # hängt die HDD hinter die SSD
          zpool status # 3 Platten im mirror-0 !!!
          
    • SSD HDD Hard herausziehen und anschließend detach der Platte

    zpool status
    zpool detach rpool ata-INTEL-SDD...-part3
    proxmox-boot-tool status 
    proxmox-boot-tool clean
    proxmox-boot-tool status
    zpool status # rpool hat jetzt 1.82 TB - Pool vergrößert
    arcstat
    vi /etc/modprobe.d/zfs.conf # Anpassung des ZFS Parameters / der ZFS Parameter (Cache für ZFS)
    proxmox-boot-tool refresh # in den Images wird der Cache auf den neuen Wert gesetzt, ZFS muss das vorher wissen, bevor reboot wird, zfs.conf liegt auf ZFS 
    
    

    Windows kaputt machen - Trojaner

    • Netwerkkarte disablen durch Trojaner
    • VM herunterfahren
    • Entwicklung der Größe der snapshot‘s - als Indikator
      • Trojaner verursacht eine größere Änderung in den snapshots
    • Rollback snapshot über Cockpit oder über command Line

    ZFS Cache

    • Parameter -n: dry-run
      • erstmal anschauen, was das Kommando machen würde
    zpool add -n rpool cache ata-intense..
    zpool add -nf rpool cache ata-intense.. # wenn schon Daten auf der Platte
    zpool add -f rpool cache ata-intense..
    zpool iostat -v 3
    zpool iostat -v 1 # 1 sec
    
    

    Das Wort "cache" im Kommando ist sehr wichtig, da sonst die Platte evt. als einzel Mirror an den stehenden Mirror angehängt wird und das wollen wir nicht, daher immer mit -n testen !!!

    Proxmox Cluster

    cd /etc/pve
    
    • storage.cfg

    • qemu-server/*.conf

    • lxc/*.conf

    • nodes/... # Ordner mit den Cluster Member

    •   top 
        ps aux 
        ps aux | grep qm # Herstellung aller Maschinen anhand dieser Ausgabe 
      
      
    • Login in den Cluster funktioniert nach dem Fehlschlag nicht mehr

    service pveproxy restart
    
    
    • Neues Zertifikat - zwei Faktor Authentification der lokal User fliegt heraus
    cd /rpool/pveconf 
    zfs list -t snapshot rpool/ROOT/pve-1 
    
    
    • PVE Config zurück rollen
    zfs rollback -r rpool/ROOT/pve-1@zfs-auto-snap_hourly-2023-09-28-1017 # panic Variante und Stromkabel nach 2 s
    
    
    • besser von cd booten, rollback wie oben

    • Ordner .zfs unter /rpool/pveconf

    •     cd snapshot # dieser Ordner nur in datasets vorhanden
          # Snapshot Order auswählen 
          cd zfs-auto-snap_hourly-2023-09-28-0717
          cd etc/pve/nodes/pvews
          cd lxc
          ls 
          cp 100.conf /etc/pve/lxc
          cd ..
          cd qemu-server
          cp 101.conf /etc/pve/qemu-server
          # evtl. Alternativ cp 101.conf /etc/pve/nodes/pvews/qemu-server
          vi /etc/pve/nodes/pvews/qemu-server/101.conf # Anpassung von Namen 
      
      
    • Boot Partitionen löschen

      • Über dd
    dd if=/dev/zero of=/dev/sda2 bs=1M count=511 
    dd if=/dev/zero of=/dev/sdd2 bs=1M count=511 
    proxmox-boot-tool status 
    
    
    • Boot über CD/DVD - Advanced - debug mode console

    • Type exit - damit Installer nicht startet

    • https://pve.proxmox.com/wiki/ZFS:_Switch_Legacy-Boot_to_Proxmox_Boot_Tool

    • Aus der Webseite:

      • Repairing a System Stuck in the GRUB Rescue Shell
        • If you end up with a system stuck in the grub rescue> shell, the following steps should make it bootable again:

        • Boot using a Proxmox VE version 6.4 or newer ISO

        • Select Install Proxmox VE (Debug Mode)

        • Exit the first debug shell by typing Ctrl + D or exit

        • The second debug shell contains all the necessary binaries for the following steps

        • Import the root pool (usually named rpool) with an alternative mountpoint of /mnt:

        • zpool import -f -R /mnt rpool
          zfs list 
          
        • Find the partition to use for proxmox-boot-tool, following the instructions from Finding potential ESPs

        • Bind-mount all virtual filesystems needed for running proxmox-boot-tool:

        • mount -o rbind /proc /mnt/proc

        • mount -o rbind /sys /mnt/sys

        • mount -o rbind /dev /mnt/dev

        • mount -o rbind /run /mnt/run

        • ls /mnt

        • change root into /mnt

        • chroot /mnt /bin/bash

    • cat /etc/network/interfaces

      • Zeigt die Netzwerk Interface Einstellungen
    • proxmox-boot-tool status 
      lsblk 
      proxmox-boot-tool format /dev/sdb2 
      proxmox-boot-tool format /dev/sdc2 
      proxmox-boot-tool init /dev/sdb2 
      proxmox-boot-tool init /dev/sdc2 
      proxmox-boot-tool status 
      proxmox-boot-tool clean 
      zpool export rpool # Falls der `zpool export` vergessen wurde, nach dem reboot `zpool import -f rpool`
      
      
    • <CTRL> <ALT> <ENF> # reboot auslösen

    •   zpool import -f rpool # letzter Besitzer war CD
        exit # erneuter reboot
        zpool status
      
    • Wichtige Dateien:

      • /etc/network/interfaces
      • storage.cfg
      • qemu-server/*.conf
      • lxc/*.conf
    • Boot Partitionen löschen

      • cfdisk /dev/sdb
        • Partition 1 und Partition 2 löschen ◦
      • fdisk /dev/sdc
        • Partition 1 in Partition 2 löschen
      • reboot
    • Proxmox neu installieren auf cache SSD ohne ZFS

      • Boot von CD

      • Install Proxmox ohne ZFS auf SSD

        • Würde mit ZFS installiert, hätten wir wieder ein rpool und müssten den original Pool rpool in z.B. rpool1 umbenennen und local-zfs anpassen !!!!

        • Profi Tipp: Alle anderen Platten ziehen, damit auf keiner falschen Platten installiert wird

        • Installation mit ext4 mit lvm

        • Neues Zertifikat

        • Passwort neu

        • ssh meckert wegen known_hosts # Neu Installation

        • zfs list # zeigt leere Liste
          zpool import -fa # alle importieren 
          zfs list # rpool ist wieder da 
          cd /rpool/pveconf 
          cd etc 
          cd pve 
          ls 
          cp storage.cfg /etc/pve 
          cd qemu-server 
          cp 101.conf /etc/pve/qemu-server # Produktiv System cp *.conf /etc/pve/qemu- 
          server 
          cd .. 
          cd lxc 
          cp 100.conf /etc/pve/lxc # Produktiv System cp *.conf /etc/pve/lxc 
          
          
      • ISO‘s als DVD heraus werfen, da vermutlich nicht gesichert

      • zpool remove rpool <cache ssd> # cache ssd entfernen # atach und detach nur mirror - alles andere wird removed

      • Am Abend wieder ganz machen

        • Booten von CD/DVD
        • Advanced Mode - Debug mode
          • Partitionstabelle wiederherstellen

            • Anderen Proxmox anschauen

              • https://pve.proxmox.com/wiki/ZFS:_Switch_Legacy-Boot_to_Proxmox_Boot_Tool

                • Repairing a System Stuck in the GRUB Rescue Shell

                • zpool import -f -R /mnt rpool
                  zfs list
                  
                  
                • Find the partition to use for proxmox-boot-tool, following the instructions from Finding potential ESPs

                • Bind-mount all virtual filesystems needed for running proxmox-boot-tool:

                • mount -o rbind /proc /mnt/proc
                  mount -o rbind /sys /mnt/sys
                  mount -o rbind /dev /mnt/dev
                  mount -o rbind /run /mnt/run
                  chroot /mnt /bin/bash
                  # Partitionstabelle eines anderen ProxMox Systems anschauen 
                  sgdisk /dev/sdd -R /dev/sdb # muss resized werden
                  cfdisk /dev/sdb
                  
                  
                • Partition 3 wieder vergrößern # Werte überprüfen mit Foto falls vorhanden

                • sgdisk /dev/sdb -R /dev/sdc
                  sgdisk -G /dev/sdb
                  sgdisk -G /dev/sdc
                  
                  
                • Änderungen haben nicht gegriffen - reboot erforderlich # alternativ parted - partprobe bekommt das im laufenden Betrieb hin

                • Reboot

                • Evtl. mit proxmox-boot-tool Partitionen wieder herstellen, zuvor muss die Proxmox Umgebung über die chroot Umgebung gebaut werden ...

                • reboot
                  zpool import -fa
                  exit # reboot vom ProxMox 
                  zpool status
                  proxmox-boot-tool status
                  
                  
      • Variante für das Arbeiten

        • Externe SSD - True NAS installieren - geht aber nur für VM‘s - VM‘s per SCSI freigeben

    Backup Proxmox Datenbank - Wie funktioniert das ?

    • cat /etc/cron.d/pve-conf-backup

      • rsync. -va --delete /etc /rpool/pveconf # alle 15 min - ab 3. Minute
    • Import Daten

      • vmdk vhdx raw qcow2 > mounten vom original (VM aus!) /mnt/pve/nfsstore oder smbshare

      • zvol / lvm / usb / hdd /ssd

      • qm importdisk 100 /mnt/hypervfreigabe/dc.vhdx local-zfs # (via samba)

      • qm importdisk 100 /mnt/pve/nfsstore/vmfs/id/dc/dc.vmdk local-zfs # (via NFS oder SSHFS)

      • Echte Systeme (physikalische Server)

      • Clonezilla

    Backup und Monitoring

    • Backup Dataset dürfen keine auto snapshots machen
      • zfs set com.sun:auto-snapshot=false backup # siehe Codeblock
    zfs list # Ziel Backup Disk - Pool Backup
    zfs create backup/repl -o com.sun:auto-snapshot=false 
    zfs set com.sun:auto-snapshot=false backup 
    bash-club-zfs-push-pull # auf Ziel ausführen
    
    
    • bashclub zfs-push-pull installieren
    git clone https://github.com/bashclub/bashclub-zfs-push-pull.git
    cd bashclub-zfs-push-pull
    chmod +x 02pull
    bashclub-zfs
    cp bashclub-zfs /usr/bin
    
    vi 02pull # Anpassen - In for Schleife ein echo zum Testen
    bashclub-zfs # Parameter I und R - alte Snapshot und Zwischen-snapshots mitnehmen # Prinzipiell pull !!! - Quelle kommt nicht auf das Ziel, sondern nur Ziel kommt auf Quelle
    cp 02pull /etc/cron.hourly
    

    Für Trojaner sicher immer die "pull Methode" anwenden. Nur Ziel kommt auf die Quelle und nicht umgekehrt.

    Monitoring

    wget -O /usr/local/bin/checkzfs https://raw.githubusercontent.com/bashclub/check-zfs-replication/main/checkzfs.py  
    chmod +x /usr/local/bin/checkzfs 
    checkzfs --sourceonly 
    checkzfs --filter rpool/data/ --replicafilter backup/repl --threshold 75,90 
    checkzfs --filter rpool/data/ --replicafilter backup/repl --threshold 75,90 --columns +message 
    
    
    • wget -O /usr/local/bin/checkzfs https://raw.githubusercontent.com/bashclub/check-zfs-replication/main/checkzfs.py
      • Keep: Hours 96, dayly 14

      • ProxMox GUI

        • Storage - Add ZFS
      •       cd /etc/pve/qemu-server 
              cp 101.conf 9101.conf 
              vi 9101.conf 
        
        
      • Kommando im vi ausführen - local-zfs durch backup-repl ersetzen

        • :%s/local-zfs/backup-repl/g # vi command
      • Swap entfernen

      • DVD Laufwerke entfernen

      • Name am Anfang repl- anfügen

    • GUI der VM 9101
      • Netzwerkkarte deaktivieren # Befehl kann man nachher in der conf nachschauen
      • Autostart disablen
      • VM 9101 starten # aber Replikationszeit beachten - cron.hourly
      • LXC Container kann mittlerweile die Netzwerkkarte deaktivieren - alternativ in anderen vswitch
    checkzfs --filter rpool/data/ --replicafilter backup/repl --threshold 75,90 --columns +message --output checkmk
    # Datei generieren und auf anderen Server kopieren - über scp 
    zfs mount -a 
    ls /backup/repl/subvol-100-disk-0/etc/pmg 
    mkdir /mnt/restore 
    
    mount /dev/zvol/backup/repl/vm-101-disk-1-part3 /mnt/restore 
    ls /mnt/restore # Damit kann man Daten aus dem Windows zurückspielen 
    umount /mnt/restore 
    
    zfs create backup/klon -o com.sun:auto-snapshot=false 
    zfs list -t snapshot backup/repl/vm-101-disk-1 
    zfs clone backup/repl/vm-101-disk1@bashclub-zfs_2023-09-28_16:21:30 backup/klon/vm-101-disk-1 
    
    mount /dev/zvol/backup/klon/vm-101-disk-1-part3 /mnt/restore 
    ls /mnt/restore 
    vi /etc/pve/qemu-server/9101.conf # Anpassung das der Klon verwendet wird 
        
    
    • VM aus Klon booten und sich anschauen ...
    umount /mnt/restore 
    zfs get guid 
    zfs get guid | grep bashclub-zfs_2023-09-28_16:46:50 
    zfs get creation rpool/data/subvol-100-disk-0@bashclub-zfs_2023-09-28_16:46:50
    
    • zfs Replication für arme

    • backup/repl # pull - Trojaner sicher

    zfs snapshot rpool/data/vm-100-disk-0@snap1 # snapshot auslösen 
    zfs send rpool/data/vm-100-disk-0@snap1 | zfs recv -dvF backup/repl # local 
    zfs send rpool/data/vm-100-disk-0@snap1 | ssh rot@zielip zfs recv -dvF # anderes System
    
    
    • backup/repl # push - Quelle kommt auf Ziel !!! (Risiko Securtiy)
    ssh root@sourceip zfs send rpool/data/vm-100-disk-0@snap1 | zfs recv -dvF backup/repl # pull
    
    
    • checkzfs mit Mail - dafür muss Mail konfiguriert sein
    checkzfs --filter rpool/data/ --replicafilter backup/repl --threshold 75,90 --columns+message --output mail