ZFS hat viele verschiedene konfigurierbare Eigenschaftenfür Pools,für vdevsUndfür Datensätze. Viele davon können jederzeit geändert werden, aber einige können nur bei der Erstellung festgelegt werden (oder wirken sich nur auf Daten aus, die danach geschrieben werden, sodasssollenmuss zum Erstellungszeitpunkt wirklich festgelegt sein).
Als Neuling habe ich nach vielen verschiedenen Fragen gesucht und mehrere Eigenschaften gefunden, deren Einstellung häufig vorgeschlagen wurde.
Natürlich gibt es in jedem Anwendungsfall kleine Unterschiede hinsichtlich der sinnvollen Eigenschaften, aber es scheint einen gemeinsamen Satz von Eigenschaften zu geben, den die meisten ZFS-Benutzer verwenden sollten. Ich denke an die Eigenschaften, für die man einen aktiven Grund haben sollte.nichtum sie zu verwenden. Was sind sie und warum?
Antwort1
(Haftungsausschluss: Als ZFS-Anfänger stellt dies nur mein bisheriges Verständnis dar und soll als Anstoß für umfassendere und zuverlässigere Informationen von anderen dienen.)
Pooleigenschaften
ashift=12
Auf einer grundlegenden Ebene diesstellt sicher, dass Lese-/Schreibvorgänge von ZFS mit den Blockgrenzen des zugrunde liegenden Speichers übereinstimmen.Theoretischfür 512-Byte-Blöcke
ashift=9
wäre in Ordnung, aber Laufwerke mit diesen sind heutzutage selten und die Strafe für eineashift
zu hohe Einstellung ist ziemlich gering.autotrim=on
AutomatischInformieren Sie den zugrunde liegenden Blockspeicher, wenn ein bestimmter Speicherplatz nicht mehr benötigt wird.. Besonders nützlich auf SSDs, scheint aber auch auf klassischen HDDs nicht zu schaden (obwohl es dort wahrscheinlich nicht hilft).
Dataset-Eigenschaften
Diese können mit zfs create -o
oder über den -O
Schalter zpool create
für das Root-Dateisystem angegeben werden (das standardmäßig an andere vererbt wird).
xattr=sa
Dadurch wird die Leistung von xattr erheblich gesteigert, ohne dass es zu wirklichen Nachteilen kommt. (Nur unter Linux verfügbarzur Zeit).
dnodesize=auto
Diese Eigenschaft sollte bei der Verwendung von verwendet werden
xattr=sa
. Der Hauptgrund, diese nicht zu verwenden, istInteraktion mit Systemen, die die erforderliche ZFS-Funktion nicht unterstützen.relatime=on
Das Verfolgen der Zugriffszeit von Dateien kann selbst bei schreibgeschützter Interaktion sehr aufwändig sein.
relatime
reduziert die Granularität/Häufigkeit dieser Aktualisierungen erheblich auf Kosten weniger präziser Informationen in deratime
Eigenschaft (unter Beibehaltung einiger häufig erforderlicher Invarianten). Beachten Sie, dass dies seit langem die Standardeinstellung für fast alle Dateisysteme unter Linux ist. Wenn Sie genaueatime
Informationen benötigen, sollten Sie dies nicht aktivieren. Wenn Sie wissen, dass diesatime
nie erforderlich ist,atime=off
bietet es eine noch bessere Leistung.normalization=formD
Dadurch wird sichergestellt, dass Dateinamen immer auf die gleiche Weise normalisiert werden. Als wichtiger Nebeneffekt bedeutet dies auch, dass das Dateisystem Dateinamen als UTF-8-kodiert behandelt und Dateinamen mit bestimmten „defekten“ Namen, die andere Dateisysteme akzeptieren, nicht mehr speichern kann. Wenn dies nicht gewünscht ist, lassen Sie dies weg.
compression=lz4
Es herrscht offenbar Konsens darüber, dass die Kosten der Komprimierung auf moderner Hardware so gering sind, dass dies tatsächlich nur Vorteile bringt. Bei Datensätzen, die überwiegend bereits stark komprimierte Daten speichern, kann es sinnvoll sein, diese Funktion zu deaktivieren.
NEIN
recordsize
Die Standard-Datensatzgröße scheint für viele Anwendungsfälle ein guter Mittelweg zu sein, einige Anwendungsfälle wie Datenbanken können jedoch von bestimmten Werten profitieren.
Quellen
- Debian-Root auf ZFS
- Viele einzelne Forenbeiträge