Wikipedia · einfach zusammengefasst · Stand
Filesystem in Userspace
FUSE (Filesystem in Userspace) ist ein Kernel-Modul für Unix-Systeme, das es ermöglicht, Dateisystem-Treiber aus dem Kernel-Mode in den User-Mode zu …
Inhalt5 Abschnitte
Grundidee und Funktionsweise
FUSE steht für „Filesystem in Userspace“. Es ist ein Kernel-Modul für Unix-Systeme, mit dem Dateisystem-Treiber aus dem Kernel-Mode in den User-Mode verlagert werden können. Der Kernel-Mode ist der besonders privilegierte Bereich des Betriebssystems; der User-Mode ist der Bereich normaler Anwendungsprogramme.
Bei FUSE gibt es zwar ein Kernel-Modul, aber die eigentliche Programmlogik läuft im Userspace, etwa über libfuse. Ein Programm wie ls greift scheinbar wie auf ein normales Dateisystem zu. Das Kernelmodul leitet den Zugriff dann an die im Userspace laufende Logik weiter. Über das VFS, das virtuelle Dateisystem, wird FUSE in die normale Dateisystem-Schnittstelle eingebunden.
Zweck und Vorteile
FUSE entstand aus der Notwendigkeit, Benutzern mit Standardrechten das Einbinden, also Mounten, von Dateisystemen zu ermöglichen. Früher wurden Dateisysteme meist auf fest eingebauten Festplatten angelegt und vom Administrator oder über ein Administratorenkonto mit passenden Treibern verfügbar gemacht. Mit mobilen Massenspeichern wie USB-Sticks oder externen Datensicherungssystemen wurde es wichtiger, dass auch Nutzer ohne Administratorenrechte Geräte installieren und verwalten können.
FUSE selbst wird mit administrativen Rechten installiert. Danach stellt es nichtprivilegierten Benutzern mit Standardrechten entsprechende Funktionen zur Verfügung. FUSE ist dabei das laufwerksspezifische Modul für die angeschlossene Hardware. Für das darauf enthaltene Dateisystem wird zusätzlich der passende dateisystemspezifische Treiber benötigt.
Ein Vorteil ist, dass FUSE-Dateisysteme wie normale Anwendungsprogramme im Benutzermodus laufen. Entwickler müssen sich dadurch weniger mit den Beschränkungen und Besonderheiten des Kernel-Modes beschäftigen. FUSE-Dateisystemtreiber sind deshalb erheblich einfacher zu entwickeln und zu warten.
Einsatzbereiche
Mit FUSE lassen sich unter GNU/Linux, FreeBSD, OpenSolaris, Mac OS X oder Android viele existierende Dateisysteme einbinden, zum Beispiel NTFS oder UDF für DVDs. Ein besonders bekannter Treiber ist NTFS-3G, der Zugriff auf die weit verbreiteten NTFS-Dateisysteme von Windows ermöglicht.
Durch FUSE entstanden viele Treiber, die nicht nur klassische Speichermedien zugänglich machen. Sie können auch andere Datenstrukturen so darstellen, als wären sie ein navigierbares Dateisystem. Dadurch können zum Beispiel entfernte Dienste, Cloud-Speicher, Datenbanken oder spezielle Geräte über Dateisystemzugriffe nutzbar werden.
Entwicklungsgeschichte
Das FUSE-Projekt wurde am 15. Oktober 2004 auf SourceForge gegründet. Es entstand als Variante aus dem SHFS-Projekt. Seit dem 15. Januar 2005 war FUSE Teil des mm-Kernels. Am 13. September 2005 wurde es in den offiziellen Linux-Kernel 2.6.14 aufgenommen.
Durch eine Re-Implementation unter der ISC-Lizenz, veröffentlicht im März 2013, wurde die Einbettung in OpenBSD erleichtert. Diese Einbettung geschah im Juni 2013.
Seit Linux-Kernel 2.6.31 und NetBSD 5.0 ist CUSE ein integrierter Treiber innerhalb von FUSE. CUSE steht für „Character Devices in Userspace“ und ermöglicht die Arbeit mit zeichenorientierten Geräten im Userspace.
Ein ähnliches Projekt war das Linux Userland Filesystem, kurz LUFS. Es verfolgte ähnliche Ziele, verlor aber mit der Einführung von FUSE an Bedeutung und wurde nicht mehr aktiv weiterentwickelt.
Beispiele für Treiber
Die Liste bekannter FUSE-Dateisysteme und -Treiber zeigt die Breite der Einsatzmöglichkeiten. NTFS-3G ermöglicht Schreib- und Lesezugriff auf NTFS. ntfsmount erlaubt das Mounten von NTFS-Partitionen mit Schreibunterstützung aus dem Linux-ntfs-Projekt. Captive ermöglichte sicheren Schreibzugriff auf NTFS-Partitionen durch Einbindung des originalen Windows-Treibers ntfs.sys über eine Kompatibilitätsschicht; die Entwicklung ist eingestellt.
Für Netzwerk- und Cloud-Dienste gibt es zum Beispiel SSHFS, mit dem ein Laufwerk über SSH gemountet werden kann. s3fs ermöglicht das Mounten von Amazon Web Services Object Storage, also Amazon S3. CloudFusion bindet Dropbox, Sugarsync, Amazon S3, Google Storage und WebDAV-Accounts ein. davfs2, fusedav und wdfs erlauben Zugriff auf WebDAV-Ressourcen; davfs2 kann sich außerdem mit Client-Zertifikaten authentifizieren.
Für Verschlüsselung nennt der Artikel CryFS, ein verschlüsseltes Dateisystem für Dropbox oder andere Cloud-Anbieter, sowie EncFS, ein verschlüsseltes pass-through-Dateisystem ähnlich dem CFS. Weitere Beispiele sind exFAT zum Lesen und Schreiben auf Flash-Medien mit exFAT, curlftpfs zum Einbinden von FTP-Server-Daten, gPhotoFS zum Einbinden der Bilderschnittstelle von Digitalkameras als Massenspeicher und LoggedFS zum Protokollieren von Operationen im Dateisystem.
FUSE kann auch ungewöhnliche Datenquellen als Dateisystem darstellen: GmailFS nutzt Google-Mail-Postfächer als Dateiablage, mysqlfs speichert Daten in einer MySQL-Datenbank, WikipediaFS erlaubt das Arbeiten mit Artikeln einer MediaWiki-Installation wie mit normalen Textdateien. ZFS on FUSE erlaubte Zugriff auf das 128-bit-Dateisystem ZFS von Sun; wegen der Veröffentlichung von ZFS unter der CDDL war keine direkte Integration in den Linux-Kernel möglich. Die Portierung wurde im Rahmen des Google Summer of Code gesponsert; die Entwicklung ist eingestellt.