ADR-017: ZFS Optimierungen für LINSTOR Storage Pools
Kontext
Der Cluster home-tamay-cloud nutzt ZFS als Storage Backend für LINSTOR und Piraeus.
Die bereitgestellten Volumes werden für Datenbanken, Objektstorage, Monitoring sowie weitere zustandsbehaftete Kubernetes-Workloads verwendet.
Die Standardkonfiguration von ZFS ist nicht speziell auf Container- und Kubernetes-Workloads optimiert. Insbesondere die Aktualisierung von Access Times erzeugt zusätzliche Schreibvorgänge. Außerdem können Extended Attributes zusätzliche Metadatenzugriffe verursachen.
Weiterhin soll der verfügbare Speicherplatz effizient genutzt werden, ohne die CPU-Auslastung signifikant zu erhöhen.
Entscheidung
Alle produktiven ZFS Storage Pools werden mit folgenden Eigenschaften konfiguriert:
zfs set compression=lz4 zfs-thin-1
zfs set atime=off zfs-thin-1
zfs set xattr=sa zfs-thin-1
Die Kompression erfolgt mit LZ4.
Access Times werden deaktiviert.
Extended Attributes werden mittels xattr=sa direkt in den Inodes gespeichert.
Diese Einstellungen werden auf allen produktiven ZFS Storage Pools der Plattform einheitlich verwendet.
Konsequenzen
-
Reduzierter Speicherverbrauch durch transparente Kompression
-
Geringere Schreiblast durch deaktivierte Access Times
-
Verbesserte Metadaten-Performance für Container-Workloads
-
Geringe CPU-Last durch LZ4-Kompression
-
Einheitliche Konfiguration über alle produktiven Storage Nodes hinweg
-
Access Times stehen für Analyse- oder Audit-Zwecke nicht mehr zur Verfügung