ZFS extremst langsam (neue Proxmox installation)

SyntaxError

Active Member
Nov 6, 2018
43
2
28
29
Germany
Hallo zusammen,

ich hatte immer bisher mdadm RAID 5 mit XFS auf Proxmox laufen und bin nun auf ZFS umgestiegen. Um mögliche Probleme auszuschließen wurde Proxmox neu installiert.

Migration:
Alle VMs auf 2 externe Platten kopiert und alle Platten für ZFS gelöscht. ZFS komplett mit dem Proxmox Webinterface angelegt auf Raid-Z1, ashift 12 und lz4 kompresse, ARC auf 12 GB begrenzt (options zfs zfs_arc_max=12884901888). VMs wieder hergestellt und schon fertig. Alles gut soweit.

Zu den Platten: Es handelt sich hier um 6x 500 GB HGST Platten, die so mit 150 MB/s lesen und schreiben sequenziell. SMART Werte sind auch alle in Ordnung. Angebunden via Sata 3.0 onboard.

Zu dem Proxmox Host:
-RAM: 128 GB (64GB von VMs belegt, 12GB für ZFS)
-CPU: i7 6850K
-Proxmox Version 6.1-7 (Vor 7 Tagen neu installiert)
-Mainboard: Supermicro C7X99-OCE-F mit neustem BIOS und Firmware
-Boot Drive: NVME SSD mit 128 GB

Ich hatte mit MDADM im Raid 5 bisher 260MB/s Schreiben und 340 MB/s im lesen natürlich sequenziell. Nun mit ZFS sind es 30 MB/s im schreiben und 120 MB/s im lesen. Echt mager. Ich habe nachdem sync abgeschalten auf dem Pool und zvols, sollte mehr Leistung bringen, naja nicht wirklich. Es sind 13,6 % auf dem ZFS belegt also zu voll kanns nicht sein. Proxmox hat die zvol automatisch angelegt also ich hab nur den ARC begrenzt und nur den sync abgeschalten. Rest hat Proxmox erledigt. Ich hab auch mal die ARC RAM Begrenzung aufgehoben, hatte auch nix gebracht. Das Raid ist nur 2.1 TB groß.

Ich finde zu diesem Problem einfach keine Lösung? Ist das normal? Weil das ZFS wirklich zm tonnen langsamer ist als das mdadm RAID mit ebenfalls RAID 5. SWAP ist auch immer unbelegt.

So ich hoffe hab nix vergessen. Freue mich auf eure Hilfe :)
 
Den ARC zu begrenzen macht eigentlich nur "Sinn" wenn man wirklich nicht mehr RAM dazu geben kann. Bei genug RAM hat man im Normalbetrieb eine ARC hit ratio von knapp bis 100%. Somit können alle Leseoperationen vom RAM durchgeführt werden.

Zum Pool layout:
RaidZ1 ist gut für Datengräber aber nicht sonderlich gut wenn man IOPS haben will.

Grob gesagt bietet ein RaidZ1 circa die IOPS von einer disk, lesend wie schreibend bei mehr Bandbreite.

Besser wäre ein Pool mit mirrored VDEVs. Damit hat der Pool schreibend circa die IOPS von so vielen Festplatten wie er mirror VDEVs hat. Lesend circa wie viele Festplatten tatsächlich vorhanden sind.

Sync abschalten ist eine verlässliche Methode um inkonsistente Daten zu haben ;) Wie viel meldet denn ein Scrub, dass er repariert hat?

Um Schreiboperationen zu beschleunigen bietet sich eine kleine Intel Optane an um sie als ZIL/SLOG zu verwenden. DIe kann wirklich nur ein paar GB groß sein.

Ansonsten kann man sich noch mit der Blockgröße (recordsize bei ZFS AFAIK) spielen, compression aufdrehen (lz4) um mehr Performance raus zu holen. Ganz auf die Leistung von MD Raid wirst du wohl nie kommen da die ganzen goodies von ZFS natürlich auch immer ein wenig Leistung brauchen.

Mehr Infos zur ZIL: https://www.ixsystems.com/blog/zfs-zil-and-slog-demystified/
https://www.servethehome.com/what-is-the-zfs-zil-slog-and-what-makes-a-good-one/
 
Hi,

danke für die schnelle Antwort. Ich nutze das ZFS für VMs als Datastore. Ich habe RaidZ1 gewählt, weil es das gegenüber von einem MD Raid 5 ist mit welchem ich immer ganz gut gefahren bin auch ohne SSD als Cache.

Ich habe nicht mal im RaidZ1 die IOPS von einer Disk sondern eher von einer SD Karte von vor 6 Jahren. Das kann doch nicht sein.

Wie kann ich mirrored VDEVs umsetzen ich habe bisher alles vom Webinterface aus gemacht um quasie alles nach Proxmox best practice zu erstellen. Also Proxmox hat selber die vdevs angelegt.

Das ZFS meldet: scrub repaired 0B in 0 days 00:06:29 with 0 errors on Sun Mar 8 00:30:30 2020 also alles gut?

lz4 ist bereits aktiv. Welche recordsize ist hier zu empfehlen bei normalen Platten? Derzeit ist 128K als default eingestellt.

Auch interessant, das ZFS belegt doppelt so viel Speicher. ich habe 170 GB an Nutzdaten und das ZFS meldet 343GB in Verwendung.

Also es gibt keine Möglichkeit das ZFS ohne SSD auf wenigstens auf 150MB/s schreibend und lesend zu bekommen? Mit 128GB RAM und während das mit MD über 300 MB/s schreibend und lesend waren?
 
Ich habe nun herausgefunden, dass wohl die volblocksize die Bremse war. Die volblocksize liegt default auf 8k, ich hab nun diese auf 128K gestellt (über das Webinterface unter Storage) und die vdevs auf ein anderes Laufwerk gemoved und wieder zurück damit das vdev mit der neuen Einstellung angelegt wird. Ich hab nun 15x mehr lese und Schreibleistung mit aktivierten sync. Die Schreib- und Lesegeschwindigkeit ist jetzt sogar noch flotter als mit MDADM. Der IO Delay war vorher grauenhaft über 60 % und jetzt bei 2 % bis 5 %.
 
  • Like
Reactions: aaron
Danke für die Info :) Wenn das Problem somit gelöst ist, kannst du bitte den Thread als Solved markieren? Dazu den ersten Post editieren und neben dem Titel das Prefix ändern. Danke
 

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!