Proxmox Virtual Environment (VE) Server
- 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
-> 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: