Ich selber betreibe ein externes selbstgebautes NAS mit ZFS als Dateisystem. Verwaltet wird dieses über TrueNAS und somit wird im vollen Umfang ZFS eingesetzt. Der Vorteil ist natürlich ZFS ist voll mit Funktionen und Effizienzmechanismen.

Jetzt kommen wir zu dem Problem, wieso es nicht ganz so einfach ist ein Performance Test auf ZFS zu machen. Durch diese ganzen Funktionen bekommen wir in der Regel deutlich höhere Datendurchsätze im Test hin, als die darunter liegenden Festplatten eigentlich könnten. Schreiben wir z.B. viele Blöcke die sich gut Komprimieren lassen, geht ZFS hin und komprimiert diese und schreibt dann erst den komprimierten Datensatz auf die Platte. Resultat: Die Platte wird nicht mehr so sehr belastet. Das ist einer Seits cool, aber für unseren Test, “Was können die Platten wirklich?” total scheiße.

Das selbe gilt natürlich für alle Cache Varianten im ZFS. ARC, L2ARC und ZIL Cachen zum größten Teil meine Schreiboperationen einfach weg und machen mir meinen Performance Test kaputt.
Nicht Falsch verstehen, alle diese Funktionen tragen in den meisten Fällen positiv bei, aber hier will ich ja die Performance der Platten Testen und nicht des Dateisystems allgemein.

Alle ZFS Effizienz Optionen abschalten

Wenn wir die Festplatte an sich und direkt einen Performance Test unterziehen wollen müssen wir quasi ZFS ruhig stellen und auf Durchzug stellen. Also sowas wie Kompression und Deduplizierung müssen wir abschalten. Alle Caching Methoden müssen auf Durchzug gestellt werden und die Protokollierung fast abgeschaltet. Es kann ebenfalls nicht schaden den automatischen Snapshot Lifecycle für das Dataset abzuschalten. “atime” schalten wir ebenfalls ab, damit auch Zeitstempel erst gar nicht mit protokolliert werden.

zfs set compression=off             HDD1/HDDTest
zfs set primarycache=metadata       HDD1/HDDTest
zfs set secondarycache=none         HDD1/HDDTest
zfs set logbias=throughput          HDD1/HDDTest
zfs set sync=disabled               HDD1/HDDTest
zfs set dedup=off                   HDD1/HDDTest
zfs set com.sun:auto-snapshot=false HDD1/HDDTest
zfs set atime=off                   HDD1/HDDTest

Mit den jetzt abgeschalteten Funktionen kann man einen Test starten.

ZFS Performance Einstellungen
ZFS Performance Einstellungen