Bei ZFS definiert die Recordsize die Größe jedes Schreibvorganges. Mit der Recordsize kann unter Umständen die Performance und Stabilität erhöht werden. Aber hier ganz wichtig, was für Daten liegen in eurem ZPool?
Eine schnelle Kurzerklärung, wenn Ihr eine Datei schreibt oder verändert mit der Größe 80Kb, dann wird im ZFS der ganze Block gelesen und auch der ganze Block geschrieben.
Erklärung zur ZFS Recordsize und Beispiele
Wenn ich richtig liege, liegt der Default Wert für den Recordsize bei 128Kb. Wenn man mal seine Daten analysiert, dann merkt man, dass dieser Wert so ziemlich richtig ist für alles.
Also wenn Ihr euer Recordsize optimieren wollt, müsst Ihr wissen was für Daten in eurem Dataset liegen. Liegen dort große Dateien wie Musik, Bilder oder Filme, dann empfehle ich euch eine Recordsize von 1M.
Für normale Dateiablage, virtuelle Maschinen und Betriebssysteme ist der Default Wert von 128k keine schlechte Idee. Ich sag mal so, es kann auch sein das 64k auch eine gute Option ist.
Bei viele kleinen Schreiboperationen wie z.B. Datenbanken oder IoT, wird überall 16k Empfohlen.
Ihr müsst also euren Mittelwert der zu schreibenden Daten ermitteln. Immer daran denken, die Recordsize wird ebenfalls dazu benutzt eure Daten zu komprimieren und deduplizieren.
Meine Empfehlungen zum Recordsize
Recordsize von 16k – 32k
- Datenbanken wie z.B. MySQL
- Alles was mit IoT zu tun hat
- Logging Tools
- Monitoring Tools, CheckMK, Observium und so
- Webserver
Recordsize größer 256k
- Ablage von Bildern, Videos, Musik
- Backups
- ISOs und Images
- Alles mit vielen großen Daten
Recordsize von 64k – 256k
- Virtuelle Umgebungen
- Normale Dokumentenablage
- FreeNAS, SMB/CIFS, NFS
- Für Betriebssysteme
Die für Proxmox beste ZFS Recordsize ist übrigens 128k. Das deckt so gut wie alles ab.
Übrigens, wer denkt mit dem Wert seine Performance super krass zu steigern, liegt nicht ganz richtig. Es optimiert und steigert auch die Performance, aber nicht so exorbitant.
14. September 2023 um 03:02 Uhr
Die Recordsize ist übrigens nicht (nur) wie z.B. bei Ext3/Ext4 abhängig von der allgemeinen zu speichernden Datengröße, was asber wohl bei den meisten „Professionellen“ aka „Influenzern“ meist verbreitet wird (wie auch andere problematische Mythen rund um RAM, ECC, SLOG/ZILL Größe usw.), sonderen hängt insbesondere von der „Breite“ des ZRaid aus, wie es u.a. in diesem Artikel und diversen professionellen, aberr leider nur sehr schwierig zu findenen, ZFS Vorträgen aufgezeigt wird:
https://www.truenas.com/community/threads/some-differences-between-raidz-and-mirrors-and-why-we-use-mirrors-for-block-storage.44068/#post-293487
„Glücklicherweise“ ist 128k ein vielfaches der Sektorgröße von 512 und damit in allen diversen geraden RAID Setupvarianten (2^n) verwendbar, bei dem dieses „einfache“ Modell auch passt.
Bei einem 4-er RAID von z:B. QNAP Devises wäre dies mit ZRaid1 jedoch nicht brauchbar, sondern nur mit ZRaid2.