13 Punkte von xguru 2023-09-22 | 4 Kommentare | Auf WhatsApp teilen
  • FUSE ermöglicht es, Dateisystemtreiber zu schreiben, ohne ein Kernel-Modul zu benötigen
    • Verschiedene Dateisystem-Clients wie NTFS, SFTP und S3 nutzen es
    • Man kann damit auch Dinge bauen, die kein echtes Dateisystem sind, wie WikipediaFS
  • Allerdings ist FUSE in der Entwicklung unkomfortabel
    • Auswahl zwischen zwei APIs: Low-Level und High-Level
    • Zwei inkompatible API-Versionen: libfuse2 und libfuse3
    • APIs, die sich laufend leicht ändern (FUSE_USE_VERSION)
    • Auf Mac und Windows ist es nicht nativ; man muss Drittanbieter-Treiber wie MacFuse oder WinFuse installieren
  • Wir (XetHub) wollten es ermöglichen, bequem vom eigenen Laptop aus auf verschiedene Versionen von Bilddatensätzen zuzugreifen, ohne S3-Befehle verwenden zu müssen
  • Von der Frage „Kann man ein wirklich plattformübergreifendes Userspace-Dateisystem bauen?“ kamen wir zu NFSv3

NFS

  • NFSv3 ist ein 20 Jahre altes Netzwerkdateisystemprotokoll, das sehr einfach und weit verbreitet ist und deshalb in nahezu allen Betriebssystemen standardmäßig implementiert ist
  • Schöne und einfache Designprinzipien
    • Der Server ist vollständig stateless
    • Der NFS-Server ist dumm, der NFS-Client ist intelligent
    • Einfache Regeln für Cache-Konsistenz (der Server definiert keine Cache-Policy; der Client macht, was er möchte)
    • Der NFS-Client weiß, dass er über das Netzwerk kommuniziert
    • Tatsächlich sehr gute Performance
  • Kurz gesagt: Wenn man statt FUSE localhost-NFS verwendet, um ein Userspace-Dateisystem zu implementieren, lassen sich Performance und Resilienz leichter erreichen
  • Wenn man das Serverprotokoll einmal implementiert, kann man bestehendes Caching und über 20 Jahre gereifte Funktionen direkt nutzen

Wie XetHub NFS verwendet

  • Entwicklung einer nativen, plattformübergreifenden Userspace-Dateisystem-Implementierung
  • Große Datensätze können ohne Kernel-Treiber auf den Maschinen der Nutzer gemountet werden
    • Zum Beispiel das 660-GB-Modell Llama 2 mounten oder große Parquet-Dateien mit DuckDB-Abfragen analysieren
  • Unterstützt unter Linux, Mac und Windows Pro oder höher (Windows Home funktioniert nicht)
  • nfsserve, ein in Rust implementierter NFS-Server, ist auf GitHub veröffentlicht
  • Die Lese-Performance ist ziemlich gut, Schreiben funktioniert ebenfalls, braucht aber noch Optimierung

4 Kommentare

 
ntpd3300 2023-09-22

Anders als der Titel vermuten lässt, wird darin ausgerechnet nicht erklärt, warum sie es in Rust geschrieben haben.

 
botplaysdice 2023-09-23

Im Original geht es darum, warum sie einen eigenen NFS-Server entwickelt haben ... aber offenbar konnte man auf ein populäres Schlagwort wie Rust nicht verzichten, also ist es wohl im Titel gelandet :-)

 
blueprajna 2023-09-22

Es scheint weniger darum zu gehen, warum der Originaltext in Rust geschrieben wurde, sondern eher darum, warum man sich statt für FUSE für NFS entschieden hat.

 
xguru 2023-09-22

Ach so, sehe gerade, außer der Aussage, dass es einfach wegen Rust schnell ist, stand da sonst nichts. Ich habe die Zusammenfassung wohl etwas gedankenlos geschrieben.