Proxmox Virtual Environment (VE) Server

~ 0 min
2024-10-15 14:49
- noVNC-Konsole: Default, einfach, browserbasierend, Fenster, keine Zwischenablage, kein Sound, teils ruckelige Grafik, keine LAN-Verbindung zur VM erforderlich
  -> Qemu Guest Tools installieren+aktivieren! (verbessert Leistung und Überwachung, flüssiger, Shutdown, Snapshots, qm-Befehle u.a.)
  Mauszeiger reagiert in noVNC Konsole auch mit Qemu Guest Tools sehr träge (kein Vergleich zu VMWorkstation- oder ESXi-Konsole)
- Spice-Konsole: Vollbild (VirtIO-GPU), Sound (Audiogerät hinzu fügen),
  Zwischenablage in beide Richtungen, ggf. muß spice-vdagent (spice-guest-agent) bzw. Virt-Manager im Client installiert werden (Qemu Guest reicht nicht).
  USB (USB-Device: Spice Port)
  funktioniert ohne LAN-Verbindung zur VM
- Windows RDP-Konsole: Sound, Zwischenablage, gute Grafik, Vollbild
  Voraussetzung: LAN-Verbindung zur VM
  • Hardware:
    • ZFS nutzt per Defaul 50% des RAM als Cache (->viel RAM einbauen!)
    • möglichst keine Consumer SSD/NVME verwenden, weil deren Cache zu gering ist und sie zu viel beschrieben werden
    • RAID-1 oder RAID-10 für VMs nehmen
    • ZFS ohne Hardware-RAID (direkter Datenzugriff!), LVM mit Hardware-Controller
    • Booten von Software-RAID (ZFS) ggf. über HBA (Boot-Partition ist kein RAID)
    • ZFS ist LVM vorzuziehen
      - hat keine Schreiblücke und benötigt keinen Akku-gepufferten Cache
      - flexible Software-RAID Level
      - Copy on write, Komprimierung, Checksummierung, Scrubbing
      - HA Cluster nur mit ZFS möglich
    • NVME-Cache bringt viel
    Proxmox supportet Speichertypen

  • HD-Seriennummern und Slots notieren! (falls RAID ausfällt)
  • Installer: Optionen: ZFS-RAID + HDs wählen, HD-Size für System festlegen (100GB), ashift= 12 (immer)
  • "Datastore behalten" wie VMWare hat Proxmox nicht, der Installer macht die System-Partitions platt und "vergisst" die anderen Pools
    Beim Neuinstallieren werden also alle VMs in rpool (sda3+sdb3) gelöscht!
    ZFS-Pools auf anderen Partitionen können per zpool import wieder eingebunden werden, wenn man die wichtigsten cfg-Dateien hat.
    /etc/pve/storage.cfg (notfalls manuell) wieder herstellen (enthält die Datastores für die GUI)
    Für VMs: /etc/pve/qemu-server, für Container /etc/pve/lcx - wieder herstellen, enthält die Configs der VMs
    https://www.thomas-krenn.com/de/wiki/ZFS_Pool_Import_-_Proxmox_Single_Host_Reinstall_ohne_Full-Backup
  • Proxmox erstellt 3 Partitions (cfdisk /dev/sda): Legacy BIOS Boot (1MB), EFI Boot-System (512MB), ZFS/Proxmox-RAID 'rpool' (Rest bzw. Setup:HDSize)
    Partition 1 und 2 sind kein RAID!  (UEFI-Partition nach jedem größeren Update synchronisieren)
    Partition 3 (ZFS-RAID) /dev/sda3 und /dev/sdb3 kann nicht direkt booten
    • Boot-Loader auf allen Boot-Partitionen synchronisieren:
    • update-grub  - Aktualisierung der Grub Loader
    • grub-install /dev/sdb  - Installation des Grub-Loaders auf Laufwerk sdb
    • update-initramfs -u  - aktualisiert die Grub-Infos auf diesen HDs

    ZFS RAID-1:

    >>cfdisk  (sda, ZFS)

    >> lsblk  (sda und sdb)


  • Proxmox WEB-GUI: <ip>:8006
  • Proxmox SSH-Konsole: ssh root@<ip>

  • zpool status - zeigt RAID-Status  (ZPOOL ist der RAID-Teil von ZFS)
  • neuen Pool erstellen: einfach über Proxmox-GUI  (Mirror, shift=12), leere Partitionen auswählen (mit cfdisk erstellen)
  • zpool list - zeigt Pool- Fragmente, Deduplizierung, (CAP soll nicht über 80% gehen!) - ggf. Autosnapshoots verkleinern
  • zpool set autotrim=on rpool  - Autotrim anschalten! Wichtiger Platz- und Leistungsgewinn.
  • zpool trim rpool  - führt TRIM manuell aus, nur zur Kontrolle, Anzeige mit zpool status
  • cd /dev/disk/by-id/ -> ls zeigt HDs mit Seriennummer und logischem Name (Bsp: sdb3), wichtig bei HD-Defekt
  • Datacenter / Storage / lokal-zfs: Blocksize auf 16k + ThinProv. ändern (ist jetzt DEFAULT), sonst ist Overhead riesig
    - jede danach angelegte VM bekommt per Default 16k - Blöcke
  • zfs list  - zeigt Partitionen + Mountpoints

    • /rpool/ROOT/pve-1  = '/' = Proxmox-Partition
  • E-Mail Alarmierung ist rudimentär (Postfix), besser Monitoring  (CheckMK-Plugins)
  • Vollständige Conf einer VM: cat /etc/pve/quemu-server/101.conf
  • Windows gibt gelöschten Speicherplatz deutlich verlangsamt wieder frei -> SSD-Trim (HD -> Tools -> Optimieren) regelmäßig planen
  • Proxmox-User mit Two Factor -> TOTP absichern
    • PAM-User sind lokale Linux-User (meiste besser)
    • Proxmox-User sind User des Proxmox Datastore
  • ssh-keygen  - Schlüsselpaar erzeugen

    Snapshots
  • bei ZFS: ggf. Bashclub-ZFS Postinstall-Script ausführen, wechselt auf no-subscription-repository und schaltet Warnung ab, installiert Tools, konfiguriert Cache, Autosnapshots, Config-Backup, Systemaktualisierung  (Swap ab 95%, Mailer, Snapshots festlegen!! [Monate - Wochen - Tage - Viertelstunden], blocksize=16k)
  • danach: GUI Updates Refresh / Rebooten
  • Autosnapshot vererbt sich per Default
  • zfs set com.sun:auto-snapshot=false <VMSTORE>  - Dateisystem nicht AutoSnapshoten
  • zfs set sync=disabled rpool  - SYNC ausschalten
  • zfs set com.sun:auto-snapshot=true <VMSTORE>/<VM>  - nur einzelne VM SnapShoten
  • zfs list -t snapshot (zfs get written) - listet alle Snapshots auf
  • zfs list -t snapshot | grep pve-1  - listet alle Snapshots der Proxmox-Partition auf
  • Snapshots per cd anzeigen: /VMSTORE/<VMNAME> cd /.zfs/snapshot/ → ls -alh
  • zfs rollback -r rpool/ROOT/pve-1@zfs-auto-snap_hourly-2023-05-27-1158  -> Rollback des angegebenen Snapshots
    so kann Proxmox und jede einzelne VM wieder hergestellt werden
  • sollte sich auch die VM-Konfig geändert haben, extra /pve/ Snapshot holen. PBE Backup Server sichert auch die VM-Konfig.
     
  • Proxmox Update: niemals via apt upgrade!! Nur über Proxmox-GUI oder so:
    • apt update  (Paketquellen updaten)
    • apt dist-upgrade  (Pakete mit ihren Abhängigkeiten installieren)
    • REBOOT nach jedem Kernel-Update
  • Upgrade v7 -> v8 geht nicht über GUI

  • ZFS-RAID löschen:
    zfs list  - zeigt Pools
    zpool desroy <pool>
    nano /etc/pve/storage.cfg  - Eintrag löschen

    RAID-Cache mit schneller SSD oder NVM (sdc) erstellen
  • es können mehrere Cache Laufwerke pro Pool angegeben werden
  • zpool add -n hd-pool cache sdc sdd
  • zpool iostat -v 1  - zeigt Befüllung des Cache

    Fehler: 1 ZFS RAID-HD (bsp: sda) gestorben oder ich will 2. HD zufügen
  • RAID ist degraded, man merkt das nicht (Monitoring!!)
  • zpool status zeigt RAID-Status (degraded)
  • HD/SSD wechseln (darf auch größer sein)
  • zpool set autoexpand=on rpool  - schaltet Autoexpand an
  • sgdisk /dev/sdb -R /dev/sda  - überträgt (repliziert) Partitionen von sdb auf sda
  • lsblk  - zeigt Partitionen an
  • cfdisk /dev/sda  - wenn neue HD sda größer ist, Proxmox-Partition sda3 resizen auf volle HD-Größe
  • sgdisk -G /dev/sda  - erstellt neue GUID für die neue HD
  • proxmox-boot-tool clean  - entfernt ID der defekten HD aus der Bootkonfig
  • proxmox-boot format /dev/sda2  - formatiert Boot-Partition mit Windows Dateisystem (sda1 + sda2)
  • proxmox-boot-tool init /dev/sda2  - überträgt Bootpartition auf neue HD
  • proxmox-boot-tool status  - gelegentlich prüfen, muß wieder 2 HDs zum Booten haben
  • zpool status   - zeigt immer noch, dass rpool DEGRADED ist (HD REMOVED), d.h. neue sda3 hat noch keine Daten
  • (zpool replace rpool sda3  - Daten werden auf neue Partition repliziert)
  • ls -althr /dev/disk/by-id/ zeigt HDs mit Seriennummer und logischem Name (Bsp: ata-Gigastone_SSD_GSTGGGHABK2406260460-part2 -> ../../sdb2)
  • zpool attach rpool sdb3 ata-Gigastone_SSD_GSTGGGHABK2406260460-part2  - füge neue HD sdb2 über ID (wichtig beim Umstecken der HD!!) zum rpool (zu funktionierender Platte sdb3) hinzu
  • zpool status   - jetzt Online, resilvering
  • zpool status -v [pool] - zeigt genauen Status des Resilvering an
     
    Notfall-Recovery bei defektem Proxmox Bootsystem
  • Intallation Proxmox von CD auf beliebigen anderen Datenträger ohne ZFS inst. (sonst hätten wir 2x RPOOL) (gute Datenplatten raus ziehen)
  • zfs list  - keine Volumes da   (HD wieder rein)
  • zpool import -fa  - importiert alle ZFS-Pools
  • Kopieren storage.cfg, quemu-server (/rpool/pveconf/)
  • System läuft (ohne SSH-Keys, Autosnapshot usw)
  • siehe auch Thomas Krenn WiKi

    neue HD hinzufügen, ohne die Alte zu löschen (Backup o.ä.)
  • zpool attach rpool sdb3 <neue HD>  - statt REPLACE kann man mit ATTACH weitere HDs hinzufügen
  • zpool status  - zeigt dann 3 HD im RAID an
  • nun kann man 1 HD entnehmen und aus dem RAID entfernen:
  • zpool detach rpool sdb3  - löscht HD aus RAID-Konfig
  • proxmox-boot-tool clean  - entfernt ID der entfernten HD aus der Bootkonfig
  • bootet man jetzt nur von der entnommen sdb, würde sie immer noch melden dass die beiden anderen HD fehlen

    separaten ISO-Pool erstellen (NVMe-RAID ist dafür zu schade)
    Bsp: ZFS-Pool heißt "hd-pool" und soll Dataset "ISOs" bekomme und ein Directory Storage "ISOs"
  • zfs create hd-pool/ISOs  - Dataset erzeugen
  • zfs destroy hd-pool/ISOs - Dataset löschen
  • zfs set compression=zstd hd-pool/ISOs  - ZSTD-Kompression für weniger Platzverschwendung
  • zfs set relatime=on hd-pool/ISOs  - ggf bei SSD: unnötige Writes vermeiden
  • zfs set quota=100G hd-pool/ISOs  - ggf. Quota auf 100GB setzen
  • pvesm add dir ISOs --content iso --is_mountpoint yes --shared 0 --path "/hd-pool/ISOs"  - Directory Storage für ISOs anlegen
    (Pool für VMs: Content= images), auch manuell mit nano /etc/pve/storage.cfg

    VM erstellen:
  • virtuelle Hardware nicht E-1000 (1GB) o.ä., sondern virtuelle Proxmox-Hardware mit 100 GB/s nehmen!
    PVE -> Storage local -> ISO-Images -> Download from URL
    Suche: proxmox windows drivers stable -> Download-Link kopieren in URL oben, Query URL -> lädt virtio-win.iso (Treiber-CD)
    (https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/latest-virtio/virtio-win.iso)
    • Windows7: virtio-win-0.1.173-4.iso
  • Disk Device: SCSI mit 'VirtIO SCSI single' Controller, Discard + SSD-Emulation +IO thread anhaken, no Cache
  • CPU Type = host (außer wenn man den Host wechseln will), Machine= Q35, (Version= 5.2 ggf zuverlässiger)
  • Quemu anhaken, vergl. VMWare Tools, UEFI Boot
  • Network = VirtIO (paravirtualized), vmbr0 ist Default Bridge
  • CD1 = Boot-OS
  • CD2 = virtio-win.iso
  • Windows Installation findet keine Festplatte -> Treiber laden -> vioscsi -> win10
  • von CD virto-win.iso 'virto-win-guest-tools' installieren -> installiert alle fehlenden Treiber
  • QEMU Guest Agent installieren
    • Windows: virto-win.iso, Verzeichnis guest-agent
    • Linux: apt-get install qemu-guest-agent , systemctl start qemu-guest-agent
    Danach zeigt die VM unter Übersicht die IP, Meldung "kein Agent" verschwindet, qm-Befehle gehen, Shutdown über GUI geht.
  • im Host Qemu Guest aktivieren: qm set <vid> --agent 1
    Test: qm agent <vid> ping
  • ggf. Spice oder RDP aktivieren

    Hochlastige VM optimieren, Auslagerungsdatei ohne Snapshot
  • powercfg -h off  - Hyperfil off
  • zfs create -o com.sun:autosnapshot=false rpool/swap  - erstellt Verzeichnis, in dem keine Autosnapshots gemacht werden
  • Proxmox Datacenter -> Stoarage -> Add -> ID: rpool-swap, ZFS-Pool auswählen, Content= Disk Image, 16k Block Size
  • VM -> Hardware -> Add HD -> Bus: SCSI, Storage: rpool-swap, Size: 8GB, SSD-Emulation, Discard
  • Windows Datenträgerverwaltung: Datenträger initialisieren, LW-Buchstabe
  • Windows Systemeigenschaften -> Leistungsoptionen -> Auslagerungsdatei ändern in Swap-LW

    ZFS-HD einer Windows-VM vergrößern
  • HD in Proxmox vergrößern: VM -> Hardware -> Harddisk -> Disk Action: Resize
  • in Windows hindert die Widerherstellungspartition am Vergrößern von LW C:
  • Proxmox: lsblk, Widerherstellungspartition identifizieren
  • cfdisk /dev/cd16
    Windows RE (546MB) löschen (nicht hier Resizen!)
  • HD in Windows Datenträgerverwaltung vergrößern
  • ggf. in /etc/pve/quemu-server/100.conf anpassen, sonst wird das weiter falsch angezeigt

    Backup-Strategie:
  • /etc/cron.daily (Cronjob)
  • VM herunter fahren (qm shutdown...)
  • Snapshot
  • VM starten
  • Snapshot weg sichern (repl)
  • PBS ermöglicht Backup ohne Shutdown
  • keine Backups, Hyperfil oder Auslagerungsdatei auf produktive Volumes legen (mit Snapshot)
  • keine Backups auf "Local-Store" legen, denn das ist der PVE

    Backup Replication einfach und trojanersicher (SysOps) mit pull, geht auch remote in LAN/WAN
  • zfs create -o com.sun:autosnapshot=false backup/repl (data, clone, rpooldata)  - auf neuem Volume anlegen
  • zfs set com.sun:autosnapshot=false backup  - ganzer Datenträger ohne Autobackup
  • gihub.com bashclub: bashclub-zfs-push-pull  -> Link kopieren
  • git clone <link>  - installiert
  • chmod +x 02pull bashclub-zfs  - ausführbar machen
  • cp bashclub-zfs /usr/bin/  - kopiere an bessere Stelle
  • nano 02pull - editieren
    Scriptpaht='/usr/bin'
    Sourcehost='localhost'
    DestPath='backup/repl'
  • Trojanersicher ist das initiiert vom Remote Backup Server aus. Auf den Systemen läuft zfs send / zfs receive mit Prüfsumme.

    VMs importieren
  • vmdk, vhdx, raw, qcow2, ovf > mounten (Kopieren mit winscp) im Original nach mnt/pve/nfsstore
  • zvols, lvm, usb, hdd, ssd (phys. Geräte)
  • qm importdisk 100 /mnt/hypervfreigabe/dc.vhdx local-zfs  - importiert und konvertiert automatisch
  • ova: entpacken von ovf, mf, vmdk, nvram

  • VMWare Workstation: Export als OVA (möglichst vorher VMWare Tools deinstallieren)
  • WinSCP: Dateien auf Proxmox übertragen
  • qm importovf 101 bitnami-wordpresspro-5.1.1-0-linux-debian-9-x86_64.ovf local-zfs
  • bei UEFI-VM: BIOS auf UEFI setzen (qm set 101 --bios ovmf)
  • Treiber von SCSI auf SATA ändern (sed -i 's/scsi/sata/g' /etc/pve/qemu-server/101.conf)
    Quelle: Krenn AG WIKI
     
  • ESX.vmdk von Proxmox Shell aus importieren
  • Disk als IDE-LW hinzu fügen

  • physische Systeme: mit VMWare Converter oder Clonezilla Festplatten erzeugen
  • VM in Proxmox neu einrichten, HDs hinzu fügen (unused disk: discard + add)
  • VMWare Tools deinstallieren
  • virtio-win.iso installieren, QUEMU-Guest installieren
  • ab Proxmox 8.2 mit Importschnittstelle für ESXi (Datacenter -> Storage -> ESX), Variante 4

    Variante 3: Clonezilla
  • clonezilla Empfangsmodus auf neu erstellter, leerer VM
  • clonezilla booten auf PC

    Variante 4: VMWare ESX per Proxmox Import Agent (neu 2024)
  • importiert ESX Host v.6.5 - v.8
  • ESXi Datastore in Proxmox einbinden und VM importieren
  • Assistent erkennt Controllertyp, CPU, RAM, HD automatisch
  • https://forum.proxmox.com/threads/new-import-wizard-available-for-migrating-vmware-esxi-based-virtual-machines.144023/
  • https://www.thomas-krenn.com/de/wiki/ESXi_VM_Importer_-_Proxmox_VE_Storage_Plugin?xtxsearchselecthit=1
  • nach Import: Treiber für HD auf VirtIO umstellen, LAN neu hinzu fügen, Quemu Guest Agent inst.

    Proxmox - Cluster
  • ZFS erforderlich
  • LANs:
    - Corosync - PVE-Cluster
    - Ceph - Storage
    - vmbr0 - VMs
  • Cluster synchronisiert /pve/ Konfigurationen
  • fügt 2 oder mehr Proxmox-Hosts zu einer Oberfläche hinzu (2 Instanzen bilden "Mehrheit")
  • mit zentralem Storage können VM im laufenden Betrieb verschoben werden (HA, Failover)
  • auch ohne zentralem Storage geht Livemigration im Cluster (entsprechend langsam), Server-Sync (Bsp. minütlich)
  • dediziertes (schnelles!) Storage-Netz für ZFS Sync
  • Achtung: VMs dürfen keine gleichen Namen (101) haben! Am Besten leeren Host hinzu fügen. Sync. Storage-Pools müssen gleichen Namen haben.
  • https://pve.proxmox.com/wiki/Cluster_Manager
  • CEPH ist ein selbstheilender, sich selbst verwaltender, frei skalierbarer Speicher über mehrere Geräte hinweg (Open Source Software)
    - min. 3 Server
    - min. 4 Datenträger je Server
    - dediziertes Storage-LAN (min. 25 Gb/s bei NVMe)

    USB-Stick in VM durchreichen
  • USB-Stick an Host stecken, Stick erscheint im Host unter "Disks"
  • USB-Device in VM hinzu fügen, "Use USB Vendor/Device ID"
  • Stick auswählen, fertig

Powersafe (Homeserver)

  • cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor  - zeigt Powermodus für jede einzelne CPU
    Proxmox Default: performance
  • cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq  - zeigt Frequenz für jede einzelne CPU
  • echo "powersave" | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor  - setzt Governor = powersafe  (ggf. nicht bootfest, in Crontab eintragen)
  • alle CPU Scaling Werte erklärt
  • siehe Powersafe, CPU Governor (Homeserver)

Links:

Durchschnittliche Bewertung 0 (0 Abstimmungen)

Es ist möglich, diese FAQ zu kommentieren.