Ich weiß, dass sich einige Dateisysteme über Fuse präsentieren, und ich habe mich über die Vor- und Nachteile dieses Ansatzes gewundert.
Antwort
Ich bin nicht positiv, wenn Sie echte Dateisysteme auf der Festplatte oder ein anderes Dateisystem meinen. Ich habe noch nie gesehen, dass ein normales Dateisystem FUSE verwendet, obwohl ich es vermute. “ Der Hauptvorteil von FUSE besteht darin, dass Sie Anwendungen (oder dem Benutzer) etwas präsentieren können, das wie ein Dateisystem aussieht, aber nur Funktionen in Ihrer Anwendung aufruft, wenn der Benutzer versucht, beispielsweise die Dateien in einem Verzeichnis aufzulisten oder Erstellen Sie eine neue Datei. Plan9 ist bekannt dafür, dass versucht wird, alles über das Dateisystem und das Pseudo /proc
zugänglich zu machen -filesystem stammt von ihnen; FUSE ist eine Möglichkeit für Anwendungen, diesem Muster leicht zu folgen.
Hier ist beispielsweise ein Screenshot eines (sehr merkwürdigen) FUSE-Dateisystems, das Zugriff auf SE-Site-Daten bietet:
Natürlich existiert keine dieser Dateien tatsächlich; als ls
nach der Liste der Dateien im Verzeichnis fragte, rief FUSE eine Funktion in meinem Programm auf, die eine API-Anfrage an diese Site richtete, um Informationen über Benutzer 73 (mich) zu laden. cat
versucht, aus display_name
zu lesen, und website_url
hat mehr Funktionen aufgerufen, von denen die zwischengespeicherten Daten zurückgegeben wurden Speicher, ohne dass tatsächlich etwas auf der Festplatte vorhanden ist
Kommentare
- Es gibt FUSE-Implementierungen von FAT , NTFS , iso9660 , ext2 und more .
- In Fuse sind Hochleistungsdateisysteme implementiert: LessFS, GlusterFS, MooseFS . Das GFS von Google ' (nicht POSIX) wird auch im Benutzerbereich ausgeführt.
- Wo haben Sie diese App gefunden?!?!
- @George Ich habe es geschrieben, als ich mit der SO-API herumgespielt habe. ' verwendet keine Routen außer / users, sodass ' im Grunde alle implementierten Funktionen in diesem Screenshot angezeigt werden. Es war nur zu sehen, wie schwer es sein würde.
- @George Ich legte es auf github
Antwort
Unix-Dateisysteme werden traditionell im Kernel implementiert. FUSE ermöglicht die Implementierung von Dateisystemen durch ein Benutzerprogramm.
Kernel-Dateisysteme eignen sich besser für Hauptdateisysteme für Programme und Daten:
- Sie können auf Boot-Medien verwendet werden (das Programm, das ein FUSE-Dateisystem implementiert, muss von irgendwoher geladen werden).
- Sie sind „robuster, da sie nicht“ Gehen Sie weg, weil ein Prozess abstürzt oder versehentlich getötet wird.
- 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 bereitgestellt werden, sodass sie für Dateisysteme geeignet sind, die Benutzer normalerweise selbst bereitstellen: für den Netzwerkzugriff, zum Durchsuchen von Archivdateien, für Wechselmedien usw. .
- Wenn ein FUSE-Dateisystemtreiber abstürzt, gerät Ihr Kernel nicht in Panik: In Anwendungen, die auf das Dateisystem zugegriffen haben, werden nur E / A-Fehler angezeigt.
- Sie kann sehr schnell programmiert werden; Es gibt FUSE-Bindungen für viele Skriptsprachen, in denen ein nützlicher FUSE-Dateisystemtreiber in einigen hundert Codezeilen geschrieben werden kann.
- Sie können Sie können sehr schnell bereitgestellt werden, da keine Administratorinterventionen 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 ).
Antwort
FUSE ist nicht wirklich ein Dateisystem an sich, sondern Code, mit dem Dateisysteme als Prozesse anstelle von Kernelmodulen implementiert werden können.
Einer der nützlichsten Vorteile von FUSE besteht darin, dass GPL-Code mit Nicht-GPL-Code „gemischt“ werden kann. Beispielsweise 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 Auswirkung auf die Leistung im Vergleich zu nativen (Kernel-) Treibern.