ZFS auf Linux/ NFS-ZFS-FAQs

FAQs zu ZFS, NFSBearbeiten

ZFS und NFSBearbeiten

Q: Was sollte man ZFS-spezifisch beachten, wenn ein ZFS-Server via NFS viele NFS-Clients bedienen soll (außer viel RAM, 10GE-NIC, min. 8 NFS-Prozesse)?

A: Im Prinzip ist ZFS selbst-tunend. Es gibt jedoch ein paar Einstellungen, die man manuell über sysctl bzw. /proc vornehmen kann. Dies betrifft grösstenteils den ARC (Adaptive Replacement Cache), aus dem die Daten primär aus dem Hauptspeicher gelesen werden sollten, anstatt diese jedesmal von den Platten zu holen. Je mehr dieser Daten im ARC für das NFS bestimmt sind (z.B. häufig verwendete Daten), umso besser. Zu Beginn würde ich erstmal beobachten, wie sich ZFS auf die vielen Clients einspielt. Zu Beginn wird es eine Phase geben, zu der sich der ARC erst füllen muss. Mit längerer Laufzeit des Systems werden die Zugriffe auf häufig benutzte Dateien schneller werden. Wenn es dann noch Engpässe oder nicht zufriedenstellende Performance gibt, dann würde ich mir über Tuning Gedanken machen. Vorher sollte jedoch der Workload bekannt sein, um nicht gleich zu Beginn mit falschen Werten an der Sache vorbei zu optimieren.


Q: Bringt ZFS ein eigenes NFS mit? Das man bevorzugen sollte?

A: ZFS hat ein eingebautes NFS von der Solaris-Seite her. Über "zfs share" bzw. die gesetzte Property "sharenfs" lassen sich prinzipiell diese Funktionalitäten nutzen. ABER: das ist teilweise wieder abhängig vom Betriebssystem bzw. der "Reife" der Implementierung/Portierung von open-zfs. Es kann sein, dass auch in bestimmten Distributionen gewisse Einstellungen bzgl. der nativen NFS-Unterstützung in ZFS deaktiviert sind. Weiterhin muss man bedenken, das NFS parallel zu ZFS weiterentwickelt wird. Daher würde ich einen empfehlen, einen Vergleich zu machen: einmal mit der nativen NFS-Unterstützung in ZFS und einen anderen, bei der das NFS (Daemon und Client) vom Betriebssystem her kommt. Hier geht es auch darum, welche Features benötigt werden und ob diese in beiden Implementierungen vorhanden sind. Wenn ZFS on Linux noch nicht so weit ist und das gewünschte Feature noch nicht unterstützt, dann geht kein Weg daran vorbei, dass ZFS nur den Storage als Dataset stellt und dieser von einem separaten NFS entsprechend exportiert wird.


Q: Welche NFS-Optionen sollte man setzen?

A: Siehe oben. Für die native ZFS-Implementierung genügen die folgenden Einstellungen, um ein Dataset tank/home per NFS bereitzustellen:

  1. zfs set sharenfs="maproot=root,network 192.168.0.0/24" tank/home

Das Beispiel stammt direkt aus dem Abschnitt EXAMPLES von zfs(8).


Q: Sind ZFS-spezifische Probleme bei NFS4 mit Kerberos-Authentifizierung bekannt?

A: Nicht direkt, habe das selbst in dieser Form jedoch noch nicht gemacht. Ich kann mir aber nicht denken, dass es hier zu grösseren Problemen kommen kann. So lange das Kerberos ordentlich läuft, dürfte es bei dieser Authentifizierungsmethode von ZFS her keine Schwierigkeiten geben.


Q: Bringt pNFS (http://www.netapp.com/de/communities/tech-ontap/tot-pnfs-1309.aspx) bei ZFS Vorteile?

A: Dazu kann ich leider nur wenig berichten. Es scheint noch eine rechte neue Erweiterung des Standards zu sein. Wenn Red Hat bzw. NetApp eine Implementierung anbieten, wäre es auf jeden Fall interessant, das mit ZFS laufen zu sehen.

Wenn es um die Steigerung der reinen NFS-Performance geht, würde ich wie oben beschrieben erstmal mit einem Standard-NFS beginnen (auch gerne mit NFS4 und ACLs) und sehen, wie sich die Performance entwickelt. Wenn es dann höheren Bedarf nach Geschwindigkeit gibt, würde ich diese Option in Betracht ziehen, vorher nicht.


Q: Warum überstehen die Eingaben mittels zfs/zfspool-Befehlen einen Reboot? Entsteht eine Konfigurationsdatei, die beim Booten ausgelesen/ausgeführt wird?


To-Do:

Verteilen auf inhaltlich passende Seiten