Ich nutze Proxmox seit ca. 2 Jahren und stolpere immer mal wieder über schlecht HDD - Performance der VMs.
Ich habe extra ein Zweitgerät mit ähnlichem Setup gekauft um dem Problem jetzt auf den Grund zu gehen. Ich habe schon diverse Sachen probiert, aber immer das gleich Problem. Die HDD - Performance in der VM unterscheidet sich doch erheblich von der Performance des Host - System. klar, dass durch die Virtualisierung ein Overhead mit entsprechenden Verlusten entsteht, doch dass die Verluste dazu führen, dass die VM 1/3 der Leistung des Host hat verstehe ich nicht.
Gerade vor dem Hintergrund, dass Dennis mit dem 1€ Hoster Test ja gezeigt hat, dass die performance der HDD in einer VM sehr wohl schnell sein kann.
Hier mein Setup:
AMD Ryzen, 64 GM RAM, 1x 2TB Kingston nvme. Ich habe Proxmox auf einer internen SSD installiert und dann die SSD erst einmal mit XFS formatiert. Mir fio bekomme ich um die 2000MB/s. Ist jetzt nicht perfekt, aber aufgrund meines Setup wohl nicht mehr zu erwarten.
Wenn ich jetzt eine VM erstelle und dort den gleichen fio - Test mache. Bekomme ich nochg um die 1200mb/sek. Das sind etwas mehr als 50% der Leistung. Ist das ein “normales” Verhalten? Wenn ja, wie bekommen es die großen Hoster hin?
Anbei noch einmal das Setup der virtuellen Festplatte.
Hallo,
ich bin jetzt nicht in Proxmox zu Hause, aber mit Festplatten habe ich so meine Steckenpferd.
Wenn ich die Fio richtig lese, wird eine 1 gb Datei in 128 kb Blöcken geschrieben. Jetzt bin ich mir nur nicht sicher, ob der Test gut ist, denn 128 kb Blöcke hat eine HDD nicht. NVME? NVMe physical block size - Thomas-Krenn-Wiki-en
Also wie bei Festplatten: 4k.
Wenn jetzt also die VM die 128 kb auf 4 kb splitten muss, und ggf. der Hardwarelayer hier auch einen Versatz hat, denn könnte ich es mir vorstellen.
Aber welcher zweiter Versatz?
Es müssen alle Zugriffe auf den gleichen Adressbereich passieren. Also ein Block darf am Ende nicht auf zwei verteilt werden. Also man reden von mis-/alignment.
Wie verhält sich jetzt der Test wenn man mit BS runter geht?
Was machen große Anbieter? Also das was ich kenne: VMWare (ja, inzwischen zu teuer) und RDM. Speziell für SQL. NFS wird auch als Storageanbindung genutzt. Da kenne ich das Problem nicht. NFS ist ja auch kein Blockdevice.
Vielen Dank für die Hinweise. Der FIO Test mit den 128K Blöcken soll ja ein möglichst realitätsnaher Test sein. Daher habe ich einfach mal diese Größe genommen. Genau die Größe der SSD/HDD zu nutzen halte ich hier für nicht Zielführend, daher diese erst mal “Merkwürdige” Größe.
Ich werde noch mal ein wenig mit den Settings spielen, eventuell gibt es da noch etwas was mehr Performance bietet.
@Sepp vielen Dank für die ausführlichen Beschreibungen. Leider habe ich nicht genug nvme - Devices um diese an die jeweiligen VMs durchreichen zu können. Aber das wäre natürlich auch noch eine Möglichkeit. Danke für den Hinweis.
Ich warte jetzt erst mal auf meine neue Hardware, dann sollte der nvme - Durchsatz noch mal spürbar nach oben gehen. Eventuell lasse ich dann alles wie es ist, da dort dann die 50% ausreichen sollten. Aber ich habe jetzt zwischen den Jahren ein wenig Zeit und da habe ich mir dieses Themas einfach mal vorgenommen.
EDIT
Ich habe hier noch eine sehr umfangreiche Seite gefunden, die sich genau dieses Thema angeschaut hat:
Noch ein Tipp: Teste unterschiedliche Filesysteme.
Anscheinend ist ZFS wegen dem Copy on Write (CoW) nicht gerade optimal:
CoW nutzen meines Wissens mehr oder weniger alle modernen Filesysteme. Dennoch könnte ich mir hier Unterschiede vorstellen.
Was sagt Google:
Also nach “bestes filesystem für proxmox” gesucht und die KI bestätigt meine Spekulation:
ZFS (Empfohlen für die meisten Anwendungsfälle)
Vorteile: Kombiniert Volume-Management & RAID (Z1, Z2, Z3), Snapshots, Kompression, Datenintegrität, ideal für große Datenpools.
Nachteile: Benötigt mehr RAM, höhere Systemanforderungen.
Ideal für: Speicherserver, NAS-Funktionen, virtuelle Maschinen mit hohen Anforderungen an Datenintegrität und Redundanz.
Btrfs (Flexible Alternative)
Vorteile: Ähnliche Funktionen wie ZFS (Snapshots, RAID), aber flexibler bei der Pool-Erstellung, oft als guter Kompromiss gesehen.
Nachteile: Kann bei komplexen Setups schwieriger zu verwalten sein als ZFS.
Ideal für: Wenn ZFS zu ressourcenintensiv ist, aber moderne Features gewünscht werden.
EXT4/XFS (Leichtgewichtige Optionen)
EXT4: Standard, robust, gut für das Host-Betriebssystem selbst und einfache VMs.
XFS: Gut für große, sequenzielle Daten-Workloads, weniger IOPS-lastig.
Vorteile: Geringer Overhead, schnell, einfach einzurichten (oft mit LVM).
Nachteile: Fehlen fortgeschrittene Features wie integrierte Snapshots (braucht LVM-Snapshots), Datenintegrität von ZFS/Btrfs.
Ideal für: OS-Installation auf einer schnellen NVMe-SSD, einfache VM-Speicher (z.B. für Backups), wenn der Fokus auf Geschwindigkeit und minimalen Ressourcen liegt.
Fazit für die Wahl
Für maximale Features & Daten-Sicherheit: ZFS (wenn genügend RAM vorhanden ist).
Für ein schnelles Host-System & einfache VMs: EXT4 oder XFS (auf LVM).
Guter Mittelweg: Btrfs
Auch wenn ich Persönlich Btrfs vor EXT4 nutze, würde ich in dem Fall mal XFS testen.