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