====== Die Optimierung von ZFS und die damit verbundenen Risiken: ====== Quelle: https://openzfs.github.io/openzfs-docs/Performance%20and%20Tuning/Workload%20Tuning.html#synchronous-i-o ===== 1. Synchronisationsschreibvorgänge deaktivieren (ENORME Geschwindigkeitssteigerung) ===== ''zfs set sync=disabled rpool/data'' Risiken: Die letzten 5–10 Sekunden der Schreibvorgänge gehen bei einem Stromausfall verloren (kann durch den Einsatz einer USV gemildert werden Was kann verloren gehen • Metadaten des VM-Dateisystems • Datenbanktransaktionen • Kürzlich geschriebene Dateien • Journal-Einträge Was bewirkt das?:: Beseitigt langsame Synchronisierungsschreibvorgänge; Schreibvorgänge erfolgen zunächst im RAM ===== 2. LZ4-Komprimierung aktivieren (moderate Leistungssteigerung)===== ''zfs set compression=lz4 rpool/data'' Risiken: Keine (geringer CPU-Verbrauch) Warum hilft das? Weniger geschriebene Daten → schnellere Schreib- und Lesevorgänge ===== 3. Deaktivieren Sie atime (geringe Leistungssteigerung) ===== ''zfs set atime=off rpool/data'' Risiken: Einige ältere Anwendungen benötigen Zugriffszeiten Beispiele: • Alte Backup-Tools • Einige Mailserver Was sich verbessert • Beseitigt unnötige Metadaten-Schreibvorgänge • Schnelleres Lesen • Geringere Latenz ===== 4.xattr=sa (Deutliche Leistungssteigerung für Linux-VMs) ===== ''zfs set xattr=sa rpool/data'' ''zfs set primarycache=all rpool/data'' ''zfs set redundant_metadata=most rpool'' Risiken: Wenn Sie den Datensatz auf ein sehr altes ZFS-System (vor 2013) verschieben, wird das SA-Format möglicherweise nicht erkannt. Was es verbessert • Schnellerer Zugriff auf Metadaten • Bessere Leistung für Linux-VMs • Geringerer Overhead ===== 5. recordsize=16K (große Leistungssteigerung für VM-Festplatten) {Sie müssen dies auf den entsprechenden Datensatz anwenden} ===== **Schlechtes Beispiel☹** --> ''zfs set recordsize=16K rpool'' ''zfs set recordsize=16K rpool/data/vm-100-disk-0'' Wende 16K nur auf VM-Festplatten an😊 --> ''rpool/data/vm-XXX-disk-0'' Risiken: Wenn Sie 16K auf den falschen Datensatz anwenden, kann dies die Leistung beeinträchtigen. Was sich verbessert • Leistung der VM-Festplatten • Zufällige E/A • Datenbank-Workloads Ich habe mich ein wenig informiert und Folgendes über recordsize=16K herausgefunden: „zfs list“ in Proxmox die Datensatzgröße anzeigt und dass „recordsize=16K“ nur für VMs gilt VM-Festplatten =16K ISO-Images =128K Backups = 128 KB–1 MB Vorlagen = 128K Übergeordneten Datensatz zurücksetzen zfs set recordsize=128K rpool/data Dann: 16K NUR auf VM-Festplatten anwenden Aber zuerst auflisten: ''zfs list'' Sie sehen: ''rpool/data/vm-100-disk-0'' ''rpool/data/vm-101-disk-0'' Wenden Sie 16K an: ''zfs set recordsize=16K rpool/data/vm-100-disk-0'' ''zfs set recordsize=16K rpool/data/vm-101-disk-0'' Wenn Sie Datenbanken in einer VM ausführen: ''zfs set recordsize=8K rpool/data/vm-200-disk-0'' https://knowledgebase.45drives.com/kb/kb450207-how-to-add-cache-drives-l2arc-to-zfs-pool/ ===== 6. logbias=throughput ===== ''zfs set logbias=throughput rpool/data'' Risiken: Wenn Sie Datenbanken betreiben, die auf Synchronisierungsschreibvorgänge mit geringer Latenz angewiesen sind, kann dies die Beständigkeit beeinträchtigen. Für VMs ist dies unbedenklich. Was verbessert wird • Sequentielle Schreibgeschwindigkeit • Festplattendurchsatz der VM ===== 7. zfs set relatime=off rpool/data (geringe Leistungssteigerung)(do not Do for now) ===== Risiko: Kein Risiko (sicher) ===== 8. Anpassung der ARC-Größe (für 96 GB) (enorme Leistungssteigerung bei Lese- und Schreibvorgängen) ===== nano /etc/modprobe.d/zfs.conf options zfs zfs_arc_max=103079215104 update-initramfs -u Neustart ARC-Größe Bytes Wert 64 GB 68719476736 80 GB 85899345920 96 GB 103079215104 100 GB 107374182400 Überprüfen: ''cat /proc/spl/kstat/zfs/arcstats | grep c_max'' Risiken: Bei zu hoher Einstellung → RAM-Mangel Wenn Sie ARC auf 100 % des Arbeitsspeichers einstellen, wird das System: • den Kernel aushungern • Proxmox mit zu wenig RAM versorgen • VMs mit Speicher aushungern • Swapping starten • unter Last einfrieren ✔ Was es verbessert • Riesiger Lese-Cache • Schnellere Schreibvorgänge (Coalescing) • Geringere Latenz • Bessere VM-Leistung Stellen Sie den Cache auf „none“ ein, da ZFS über einen eigenen Cache verfügt und dieser mit Proxmox doppelt vorhanden wäre Speichercontroller auf „SCSI VIRTIO“ (schneller) Option „autotrim discard“ in der GUI ===== 9. autotrim=on ===== ''zpool set autotrim=on rpool'' Risiken: Keine Weitere Informationen unter https://www.youtube.com/watch?v=6Kw901oqxI8 https://forum.proxmox.com/threads/blocksize-recordsize-thin-provision-options.155553/ Anpassung der Datensatzgröße: https://openzfs.github.io/openzfs-docs/Performance%20and%20Tuning/Workload%20Tuning.html#recordsize Eigenschaften des Datensatzes (Datensatzgröße):https://openzfs.github.io/openzfs-docs/man/7/zfsprops.7.html#recordsize Proxmox ZFS-Speicheroptimierung:https://pve.proxmox.com/wiki/ZFS_on_Linux