
Abbildung 1: Die virtuelle Umgebung lässt die Vorteile von NFS 4 nicht richtig zur Geltung kommen, zeigt aber, dass die höhere Sicherheit durch zusätzliche Verschlüsselung ihren Preis hat, der mit der Münze Performance zu bezahlen ist. Läuft derselbe Benchmark – Iozone – in einem realen Netz, kann sich NFS 4 kleine Vorteile beim Schreiben erkämpfen. Noch größere Unterschiede offenbaren sich bei einem realen Workload.
Hält NFS 4, was die Entwickler versprechen? Was kosten die neuen Features an Performance? Das klären Benchmarks, die die Versionen und Konfigurationsvarianten gegeneinander ausspielen.
Lohnt der Umstieg auf NFS 4? Auf der Hand liegt der Sicherheitsvorteil der möglichen Kerberos-Authentifizierung und -Verschlüsselung, Was aber kostet das an Performance? Welchen Schub entfalten die Optimierungsbemühungen der Entwickler, die ja gerade in Netzen mit höherer Latenz einen merklichen Performancegewinn versprechen? Das Linux-Magazin hat nachgemessen.
Mit einzelnen Benchmarks und unter verschiedenen Netzwerkbedingungen testeten wir in unserem Labor unterschiedliche NFS-Setups. Mit Ubuntu als der ursprünglich gewählten Linux-Distribution ließ sich allerdings selbst mit erheblichem Zeiteinsatz keine Kombination von NFS mit Kerberos zum Laufen bewegen (siehe Kasten “Stolpersteine”). Deshalb wichen die Tester zeitweise in eine virtuelle Umgebung unter Fedora aus.
Sicherheit kostet
Die geringsten Unterschiede zwischen den NFS-Versionen und -Spielarten ergaben sich bei den Messungen mit Iozone [1] in der virtuellen Umgebung. Dort waren zum einen die verfügbaren Ressourcen limitiert – im vorliegenden Setup teilten sich der virtuelle NFS-Server und sein Client einen Single-CPU-Host -, zum anderen sind die Netzwerkzugriffe tatsächlich Speicheroperationen, die sich anders verhalten als ein reales LAN. Schließlich maßen die Tester drittens nur sequenzielle Lese- und Schreiboperationen, die der Fileserver nicht weiter optimieren konnte.
NFS 3 und 4 liegen hier gleichauf, die Differenzen bewegen sich im Bereich eines Prozents. Die sicherste NFS-Variante, die mit Kerberos nicht nur authentifiziert, sondern auch verschlüsselt, fällt erwartungsgemäß deutlich zurück (Abbildung 1, links). Der Security-Overhead verursacht ein Minus zwischen 15 (schreibend) und 30 Prozent (lesend).
Anders sieht sie Sache in einem realen Netzwerk aus. Für diesen Versuch lief der gleiche Benchmark auf einem Netzwerkvolume, das der Client von einem potenten Server mit Diskarray via Gigabit-Ethernet gemountet hatte (siehe Kasten “So haben wir getestet”). Unverschlüsseltes NFS 4 brachte es hier lesend und schreibend auf jeweils knapp 60 MByte/s und hatte zumindest beim Schreiben auch deutlich die Nase vor seinem Vorgänger (15 bis 20 Prozent plus).
Beide NFS-Varianten waren sogar eine Spur schneller als die lokale Platte des Clients, stand ihnen doch auf dem Server eine performante Raid-1-LUN zur Verfügung, auf der auch kein Betriebssystem dazwischenfunkte, und die Host-Anbindung mit Ultra-Wide-SCSI war außerdem deutlich schneller als Parallel-ATA beim Client. Diese Faktoren können den Netzwerk-Malus offenbar mehr als kompensieren (Abbildung 3).
Praxistest
Ein synthetischer Benchmark wie das hier verwendetet Iozone vermittelt dennoch nur eine annähernde Vorstellung von der Realität, denn die gemessenen reinrassigen Lese- und Schreiboperationen kommen in der Praxis so nicht vor. Alle Effekte, die sich aus der Mischung und Abfolge der Filesystem-Aktionen in der Praxis ergeben, fallen dabei unter den Tisch. Optimierungsbemühungen der Fileserver-Software müssen ins Leere greifen, wenn sich lediglich eine einzige Operation fortwährend wiederholt. Zwar ergibt sich der Vorteil, dass sich einzelne Einflüsse so leichter isolieren und getrennt bewerten lassen – den aber erkauft man mit dem Nachteil, dass die einfache Addition der separierten Einflüsse nicht die praxisgerechte Summe ergibt.
Gerade die Wechselwirkungen sollten bei einem Benchmark, der einen typischen Funktionsmix absolviert, besser zur Geltung kommen. Die Wahl fiel auf Dbench [2], eine kleine Benchmarksuite aus der Feder des bekannten Samba-Entwicklers Andrew Tridgell.
Vorbild für Dbench ist die kommerzielle Windows-Software Netbench, die sich in ihrer Welt als Quasi-Standard etabliert hatte, aber nur für wenige nutzbar war. Das liegt nicht nur an Lizenzbestimmungen, sondern auch an der Tatsache, dass man für einen Netbench-Lauf 60 bis 150 Windows-PC plus gut ausgebautem Server in einem schnellen Netz benötigt und zudem in der Lage sein muss, diese Umgebung zentral zu dirigieren.
Weil Open-Source-Entwicklern derart ausgestattete Labore nicht allzu oft offenstehen, entschloss sich Tridgell ein “Netbench for the Masses” zu schreiben. Entstanden ist ein Triumvirat: Dbench emuliert die Filesystem-Operationen, die ein realer Netbench-Lauf in einem Filesystem einmal ausgelöst hat. Sie wurden aufgezeichnet und lassen sich nun wieder einspielen, wobei die Anzahl der jeweils beteiligten User skalierbar ist. Dbench gibt den daraus resultierenden I/O-Durchsatz aus, der sicherlich als absoluter Wert weniger informativ ist, aber durchaus für Vergleiche zwischen Systemen oder verschiedenen Nutzerzahlen taugt.
Dbench führt selbst keine Netzwerkoperationen aus. (Die sind natürlich trotzdem im Spiel, wenn man den Benchmark – wie hier – auf ein Netzwerkvolume ansetzt.) Wer nur die Netzwerkseite untersuchen möchte, für den gibt es dafür das Dbench-Pendant Tbench, das ausschließlich den Netzwerkverkehr eines Windows-Fileservers nachstellt. Beides zusammen bietet das Tool SMB Torture, ein Stresstester für Samba-Server.
Fazit
In einem geswitchten100-MBit-LAN zeigte sich deutlich, dass NFS 4 durchaus in Sachen Geschwindigkeit punkten kann, und zwar gerade in einem praxisnahen Setup, wo offenbar die Optimierungen der neuen NFS-Version greifen. Unverschlüsselt war es meist gut doppelt so schnell wie sein Vorgänger (Abbildung 2). Allerdings schwindet dieser Vorteil bei sehr großen Benutzerzahlen auf dem NFS-Server wieder merklich.
|
Stolpersteine |
|---|
|
Die Installation des Gespanns NFS 4 und Kerberos ist nicht trivial, ja derzeit mit manchen Distributionen sogar unmöglich. Diese Erfahrung machten jedenfalls die Linux-Magazin-Tester, denen es auch mit erheblichem Zeitaufwand nicht gelang, das gleiche Duo, das unter Fedora klaglos seinen Dienst tat, auch unter Ubuntu zur Mitarbeit zu bewegen. Es scheint also ratsam, für eigene Versuche eine Distribution zu bevorzugen, für die aktuelle Erfolgsmeldungen vorliegen. Dennoch kommt man noch an diversen Stolperstellen vorbei, die es zu umsteuern gilt. Neue Export-StrategieDas beginnt beim Exportieren des oder der Filesysteme auf dem NFS-Server, bei dem NFS 4 eine andere Strategie verfolgt als seine Vorläufer. Die aktuelle Version exportiert stets ein und nur ein Basisverzeichnis, etwa: /export *(rw,fsid=0,no_subtree_check,sync) Das Basisverzeichnis, das als eine Art Pseudo-Filesystem fungiert, erhält als einziger Export die spezielle Option »fsid=0«. Darunter können weitere Verzeichnisse angelegt und als Submounts freigegeben sein: /export/Verzeichnis *(rw,nohide,insecure,no_subtree_check,async) Soll er Directories exportieren, die sich nicht unter dem beschriebenen Basisverzeichnis, sondern anderswo im Filesystem befinden, dann muss der Admin sie zuerst via Bind-Mounts unter dem Wurzelverzeichnis des NFS-4-Exports einhängen. Auch beim Mounten ist die Syntax anders als gewohnt. Zum einen muss »nfs4« als Typ spezifiziert sein, zum anderen führt das Kommando nicht das eigentliche Quellverzeichnis (etwa »/export«), sondern »/« als die Wurzel des exportierten Pseudo-Filesystems auf. Beispiel: mount -t nfs4 myhost:/ /mnt Eine zweite Hürde beim Exportieren, die den NFS-unerfahrenen Admin auch aus dem Tritt bringen kann: In »/etc/exports« kommt es im Unterschied zu vielen anderen Konfigurationsfiles in Textform auf Whitespaces an. Ein Leerzeichen oder Tab, das der Admin der Lesbarkeit wegen einfügt, kann die Bedeutung der Zeile in ihr Gegenteil verkehren! Hier sollte er sich also tunlichst kosmetische Formatierungen verkneifen und eventuelle Beispiele peinlich genau abtippen. Beispiel: /home host.beispiel.com(rw) /home host.beispiel.com (rw) Die erste Zeile gestattet nur Usern von »host.beispiel.com« den Lese- und Schreibzugriff auf »/home«. Das zusätzliche Leerzeichen in der zweiten Zeile dreht die Aussage um 180 Grad: Jetzt dürfen die User von »host.beispiel.com« das Verzeichnis »/home« nur noch read-only mounten (weil das als Default angegeben und Weitergehendes nicht aufgeführt ist), während jeder andere es sich auch beschreibbar einhängen kann! Wahl des Kerberos-Key-FormatsKerberos kann die Schlüssel der Principals, wie die zu authentifizierenden Objekte hier heißen, in diversen Krypto-Formaten exportieren – ein Schritt, der im Zuge der NFS-Installation auch notwendig ist, weil die Keys in so genannten Keytab-Files zu hinterlegen sind. Ganz wichtig dabei: Aus der Fülle der Exportformate unterstützt der Linux-Kernel aktuell gerade mal ein einziges, nämlich »des-cbc-md5:normal«. Jeder Versuch, an dieser Stelle auf eine andere Offerte einzugehen und sei es eine verwandte wie »des-cbc-crc:normal«, wird scheitern. Wer stolpert, der fällt. Denn zwei Dinge erschweren das Debugging: Zum einen ist ein Teil der Kommunikation, etwa über das Netzwerk, verschlüsselt. Zum anderen gibt sich Kerberos wie viele andere Krypto-Applikationen nicht gerade gesprächig, weil es einem möglichen Angreifer keine Hinweise liefern will. Wer das Logging nicht explizit aktiviert, sieht überhaupt nichts. Und selbst wer darauf besteht, bekommt höchstens einsilbige Fehlermeldungen. Das heißt: Trial & Error ist definitiv die falsche Strategie. Wer glaubt, dass er mit Rumprobieren dank der Error Messages schon irgendwie durchkommt, hat sich geschnitten. |
|
Infos |
|---|
|
[1] Iozone: [http://www.iozone.org] [2] Dbench: [http://samba.org/ftp/tridge/dbench/] |







