Welche Vor- und Nachteile hat die Verwendung von FuseFS-Dateisystemen?

19

Ich weiß, dass sich einige Dateisysteme über Fuse präsentieren, und ich habe mich über die Vor- und Nachteile dieses Ansatzes Gedanken gemacht.

geoffc
quelle

Antworten:

16

Ich bin nicht sicher, ob Sie echte Dateisysteme auf der Festplatte oder ein anderes Dateisystem meinen. Ich habe noch nie gesehen, dass ein normales Dateisystem FUSE verwendet, obwohl ich annehme, dass dies möglich ist. Der Hauptvorteil von FUSE besteht darin, dass Sie Anwendungen (oder dem Benutzer) etwas präsentieren können, das wie ein Dateisystem aussieht, aber tatsächlich nur Funktionen in Ihrer Anwendung aufruft, wenn der Benutzer versucht, die Dateien in einem Verzeichnis aufzulisten oder ein neues zu erstellen Datei. Plan9 ist bekannt dafür, dass versucht wird, alles über das Dateisystem zugänglich zu machen, und das /procPseudodateisystem stammt von ihnen. Mit FUSE können Anwendungen diesem Muster auf einfache Weise folgen

Beispiel: Hier ist ein Screenshot eines (sehr übersichtlichen) FUSE-Dateisystems, das den Zugriff auf SE-Site-Daten ermöglicht:

Screenshot des FUSE-Dateisystems in Aktion

Natürlich existiert keine dieser Dateien tatsächlich; Wenn Sie lsnach der Liste der Dateien im Verzeichnis gefragt werden, ruft FUSE in meinem Programm eine Funktion auf, die eine API-Anfrage an diese Site gestellt hat, um Informationen über Benutzer 73 (ich) zu laden. catEs wurde versucht, weitere Funktionen zu lesen display_nameund website_urlaufzurufen, die die zwischengespeicherten Daten aus dem Speicher zurückgaben, ohne dass tatsächlich etwas auf der Festplatte vorhanden war

Michael Mrozek
quelle
3
Es gibt FUSE-Implementierungen von FAT , NTFS , iso9660 , ext2 und mehr .
Gilles 'SO- hör auf böse zu sein'
2
In Fuse sind Hochleistungs-Dateisysteme implementiert: LessFS, GlusterFS, MooseFS. Googles GFS (nicht POSIX) läuft auch im Userspace.
Tobu
Wo hast du die App gefunden?!?!
Nathan Osman
4
@ George Ich habe es geschrieben, als ich mit der SO-API rumgespielt habe. Es werden keine Routen außer / users verwendet, sodass Sie im Grunde alle in diesem Screenshot implementierten Funktionen sehen. es war nur zu sehen, wie schwer es sein würde
Michael Mrozek
5
@ George Ich habe es auf Github gelegt
Michael Mrozek
19

Unix-Dateisysteme werden traditionell im Kernel implementiert. Mit FUSE können Dateisysteme von einem Anwenderprogramm implementiert werden.

Kernelinterne Dateisysteme eignen sich besser für Hauptdateisysteme für Programme und Daten:

  • Sie können auf Bootmedien verwendet werden (das Programm, das ein FUSE-Dateisystem implementiert, muss von irgendwoher geladen werden).
  • Sie sind robuster, da sie nicht aufgrund eines abstürzenden oder versehentlich getöteten Prozesses verschwinden.
  • Sie sind etwas schneller.

FUSE-Dateisysteme haben andere Vorteile, die sich hauptsächlich auf ihre Flexibilität beziehen:

  • Sie können von normalen Benutzern geladen und gemountet werden, sodass sie für Dateisysteme geeignet sind, die Benutzer normalerweise selbst mounten: für den Netzwerkzugriff, für das Durchsuchen von Archivdateien, für Wechselmedien usw.
  • Wenn ein FUSE-Dateisystemtreiber abstürzt, kommt Ihr Kernel nicht in Panik: In Anwendungen, die auf das Dateisystem zugreifen, werden nur E / A-Fehler angezeigt.
  • Sie können sehr schnell programmiert werden; Es gibt FUSE-Bindungen für viele Skriptsprachen, in denen ein nützlicher FUSE-Dateisystemtreiber in wenigen hundert Codezeilen geschrieben werden kann.
  • Sie können sehr schnell bereitgestellt werden, da keine Eingriffe des Administrators erforderlich sind, um sie zu installieren, und weil sie problemlos zwischen unterstützten Betriebssystemen portiert werden können .
  • Es gibt keine Lizenzprobleme im Zusammenhang mit der statischen Verknüpfung mit einem Kernel (dies betrifft zfs ).
Gilles 'SO - hör auf böse zu sein'
quelle
7

FUSE ist an sich kein Dateisystem, sondern Code, mit dem Dateisysteme als Prozesse anstelle von Kernelmodulen implementiert werden können.

Einer der nützlichsten Vorteile von FUSE besteht darin, dass sich GPL-Code mit nicht-GPL-Code "mischen" kann. Zum Beispiel Gnu / Linux und ZFS http://zfs-fuse.net/ oder NTFS-3G unter vielen Betriebssystemen wie OpenSolaris und * BSD http://www.tuxera.com/community/ntfs-3g-download/

Der Hauptnachteil ist die Beeinträchtigung der Leistung im Vergleich zu nativen (Kernel-) Treibern.

jlliagre
quelle