Was ist ein virtuelles Dateisystem oder ein Dateisystem im Benutzerbereich?

8

Ich bin gerade auf ein VFS und ein Dateisystem im Userspace wie FUSE gestoßen.

Nun, soweit ich es verstehe, simuliert es ein Dateisystem, so dass eine Anwendung eine Standard-Dateisystemhierarchie haben kann. Aber ich verstehe nicht, warum brauchen wir dafür ein separates Dateisystem? Können wir nicht einfach eine normale Ordnerstruktur erstellen und Dateien platzieren, die von der App verwendet werden?

Meine Fragen sind also:

  1. Was ist ein VFS?

  2. Können Sie einige Beispiele aus der Praxis geben, in denen VFS verwendet wird?

  3. Was ist der Vorteil eines VFS?

Irgendein Java-basiertes VFS?

    
zengr 26.05.2010, 05:20
quelle

2 Antworten

4

VFS bezieht sich nicht auf ein "falsches" Dateisystem, sondern auf die abstrakte Dateisystemschnittstelle, die von POSIX-Betriebssystemen für Anwendungsprozesse bereitgestellt wird. ZB:

  • open()
  • close()
  • read()
  • write()
  • usw.

Alle Dateisystemimplementierungen (ext3, XFS, reiserfs usw.) setzen diese Schnittstelle unabhängig von den spezifischen Strukturen und Algorithmen frei, die sie verwenden.

FUSE ist ein Mittel, um diese Schnittstelle mit Code zu versehen, der nicht im Kernel läuft. Dies kann die Stabilität und Sicherheit dramatisch verbessern, da der Kernel-Code privilegiert ist, während der Userspace-Code dies nicht tut. Diese Trennung macht es viel sinnvoller, Dateisysteme mit vielen externen Abhängigkeiten zu schreiben. Die FUSE-Webseite beschreibt viele Dateisysteme , die mit FUSE erstellt wurden.

    
Novelocrat 26.05.2010, 05:32
quelle
13

VFS und FUSE sind verwandt, aber nicht ganz dasselbe. Der Hauptzweck von FUSE besteht darin, Dinge, die fast wie Dateien sind, aber nicht ganz (etwa Dateien auf einem Remote-Server oder in einer ZIP-Datei) in "echte" Verzeichnisse und Dateien umzuwandeln. Sehen Sie sich die Liste der FUSE-Dateisysteme an , um eine Vorstellung davon zu bekommen, wofür das Programm gut ist. Dies wird hoffentlich deutlicher machen, warum FUSE unter vielen Umständen "normale alte Dateien" schlägt.

Ein VFS ist eine Anwendungsprogrammschnittstelle (API) für Dateien. Falls Sie mit dem Konzept einer API nicht vertraut sind, schlage ich vor, dass Sie sich die Wikipedia-Seite für "Virtual File System" anschauen; Es beschreibt, was ein VFS aus der Sicht eines Betriebssystemkerns ist. Ja, Ihr Betriebssystemkern (sei es Windows, Linux oder MacOS) hat ein VFS! Einige User-Space-Programme, wie GNOME, haben auch eines (es heißt GnomeVFS).

Der Zweck eines VFS besteht darin, Dateien und Verzeichnisse für Anwendungen einheitlich darzustellen; seien es Dateien von einer CD-ROM, von einem Linux- oder Windows-Dateisystem auf einer Festplatte oder einem USB-Stick oder einer RAM-Disk oder von einem Netzwerkserver. Dass ein Betriebssystemkernel für ein VFS verwendet wird, ist wahrscheinlich offensichtlich. Warum also auch Userspace-Objekte wie GnomeVFS? Die Antwort ist, dass Sie nicht wollen, dass sich jedes Dateisystem und sein Hund im Kernel befinden, weil dieser Code mit Supervisor-Rechten läuft und jeder Fehler dazu führen kann, dass der gesamte Rechner abstürzt. Der Nachteil ist natürlich, dass VFs im Userspace nur für Anwendungen nützlich sind, die sie verwenden, zB können nur GNOME-Anwendungen durch GnomeVFS "sehen"; In einem GnomeVFS-Baum kann man "ls" nicht machen. Die Lösung ist FUSE: Der genaue Zweck und die Beschreibung besteht darin, ein User-Space-VFS in einen Kernel-Space zu verwandeln. Mit anderen Worten, es überbrückt eine VFS-API in den Kernel, so dass "gefälschte" Dateien als "real" angezeigt werden können.

    
DomQ 08.09.2010 11:42
quelle

Tags und Links