Initial commit.

This commit is contained in:
2025-10-07 10:18:43 +02:00
commit 09d536204b
12 changed files with 2394 additions and 0 deletions

View File

@@ -0,0 +1,162 @@
# ==========
# Nacharbeiten - Libvirt-Feinschliff
# ==========
# ----------
# Libvirt-Feinschliff
# ----------
nach der Installation, via virsh edit WinServer2025:
a) HugePages (stabilere Latenz & weniger Overhead)
<memoryBacking>
<hugepages/>
</memoryBacking>
Host-seitig HugePages bereitstellen (2M oder 1G), Dienst neu starten oder Host reboot.
VM dann ohne Memory-Ballooning betreiben.
b) I/O-Threads & Multiqueue für Disk
<iothreads>4</iothreads>
<devices>
<disk ... bus='virtio'>
<driver name='qemu' type='raw' cache='none' io='native' queues='4'/>
<iothread>1</iothread>
</disk>
</devices>
Alternativ virtio-scsi nutzen: controller type='scsi' model='virtio-scsi' und mehrere
queues setzen - bringt oft bessere Skalierung bei vielen I/Os.
c) NUMA-Pinning (AMD EPYC, 32 vCPUs)
VCPUs an zusammenhängende NUMA-Node(s) binden, gleiches für iothreads. Beispiel:
<cputune>
<vcpupin vcpu='0' cpuset='0-15'/>
<vcpupin vcpu='1' cpuset='0-15'/>
...
<iothreadpin iothread='1' cpuset='16-23'/>
</cputune>
<numatune>
<memory mode='strict' nodeset='0'/>
</numatune>
Passe cpuset/nodeset an die Host-Topologie an (EPYC CCDs/NUMA-Nodes).
d) Hyper-V-Enlightenments (falls nicht via virt-install gesetzt)
<features>
<hyperv>
<relaxed state='on'/>
<vapic state='on'/>
<spinlocks state='on' retries='8191'/>
<synic state='on'/>
<stimer state='on'/>
<reset state='on'/>
<time state='on'/>
</hyperv>
<kvm>
<hidden state='on'/>
</kvm>
</features>
e) Secure Boot (optional, empfehlenswert)
Nutze OVMF mit Secure-Boot-Vars (paketspezifische Pfade variieren):
<os>
<loader readonly='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.secboot.fd</loader>
<nvram>/var/lib/libvirt/qemu/nvram/WinServer2025_VARS.fd</nvram>
</os>
Microsoft-DB ist in den secboot-Varianten enthalten; Windows 2025 bootet damit.
f) VNC nach Setup einschränken/entfernen
<graphics type='none'/>
oder
<graphics type='vnc' listen='127.0.0.1' autoport='yes'/>
# ----------
# Netzwerk & Host-Tuning
# ----------
- Host-Bridge (br0): prüfe, dass txqueuelen, GRO/LRO-Einstellungen und Offloads sinnvoll sind.
Häufig gut: GRO/LRO an, TSO an.
- vhost-net ist bereits aktiv (driver.name=vhost). Mit driver.queues=16 nutzt der Gast
Multiqueue - passt zu 16 Cores.
Im Gast: Enable-NetAdapterRss (s.o.) und prüfe, dass mehrere IRQs/Queues genutzt werden
(Perfmon -> Netzwerk-Adapter > "Empfangene Pakete/s" per Queue).
- Für sehr hohe PPS-Raten: ethtool -L <tap/host-nic> combined 16 auf dem Host (abhängig vom Treiber).
# ----------
# Storage-Hinweise (LVM als Block-Device)
# ----------
Du nutzt RAW auf LVM gut für Performance und Trim (discard=unmap). In Windows regelmäßig „Laufwerke optimieren“ (TRIM) laufen lassen (oder per Task Scheduler wöchentlich).
Falls du später Snapshots brauchst: lieber in LVM (COW) als in QEMU-Blocksnapshots oder Windows-seitig über VSS + Backup-Software (sauberer).
# ----------
# Anzeige & TeamViewer Best Practices
# ----------
Virtio GPU WDDM (aus Guest Tools) liefert hohe, freie Auflösungen → in Anzeigeeinstellungen manuell auf z. B. 2560×1440/3840×2160 stellen.
Windows Server hat teils die „Grafik-Arbeitsplatzerfahrung“/Desktop Experience bereits, andernfalls Desktopdarstellung/„Server mit Desktopdarstellung“ aktivieren (bei Core-Install nicht nötig, falls du nur TeamViewer verwendest aber für GUI-Apps natürlich schon).
VNC/SPICE brauchst du danach nicht mehr; TeamViewer kapselt den Desktop.
# ----------
# Backup, Wartung, Sicherheit
# ----------
QEMU Guest Agent ist Pflicht für konsistente Backups (Freeze/Thaw).
Windows VSS aktiv: nutze Backup-Lösungen, die VSS-aware sind.
Secure Boot (s.o.), TPM-Emulation (falls BitLocker/Attestation):
<tpm model='tpm-crb'>
<backend type='emulator' version='2.0'/>
</tpm>
Windows Updates: automatisieren, Neustarts in Wartungsfenster legen.
Zeit: Nicht vom Host syncen; NTP im Gast (s.o.).
# ----------
# Häufige Varianten
# ----------
virtio-scsi statt virtio-blk: bei mehreren Disks/hoher Queue-Tiefe oft im Vorteil. Dann beim Setup den vioscsi-Treiber laden.
CPU-Topologie: bei EPYC ggf. --cpu host-passthrough + Topologie so wählen, dass vCPUs nicht über zu viele NUMA-Nodes streuen.
Ballooning: Wenn du HugePages nutzt, kein Ballooning. Sonst Balloon-Treiber installieren und in libvirt <memballoon model='virtio'/>.