- 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
Anders als der Titel vermuten lässt, wird darin ausgerechnet nicht erklärt, warum sie es in Rust geschrieben haben.
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 :-)
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.
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.