2010-05-26 12 views
8

Ich stieß gerade auf ein VFS und ein Dateisystem im Benutzerbereich wie FUSE.Was ist ein virtuelles Dateisystem oder ein Dateisystem im Benutzerbereich?

Jetzt, so weit ich 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?

Also, meine Fragen sind:

  1. Was für ein VFS ist?

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

  3. Was ist der Vorteil eines VFS?

Jedes Java-basierte VFS?

Antwort

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 Dateisystem-Implementierungen (ext3, XFS, ReiserFS, etc.) aussetzen, dass die gleiche Schnittstelle oben von irgendwelchen spezifischen Strukturen und Algorithmen, die sie verwenden.

FUSE ist ein Mittel zur Bereitstellung dieser Schnittstelle mit Code, der nicht im Kernel ausgeführt wird. 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 many filesystems, die mit FUSE erstellt wurde.

13

VFS und FUSE sind verwandt, aber nicht ganz dasselbe. Der Hauptzweck von FUSE besteht darin, Dinge, die fast-wie-Dateien-aber-nicht-recht sind (wie Dateien auf einem entfernten Server oder in einer ZIP-Datei) in "echte" Verzeichnisse und Dateien umzuwandeln. Sehen Sie die roster of FUSE filesystems, um eine Vorstellung davon zu bekommen, wofür das gut ist; Dadurch wird es hoffentlich klarer, 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 Benutzer-Space-Programme, wie GNOME, haben auch einen (es heißt GnomeVFS).

Der Zweck eines VFS ist die einheitliche Darstellung von Dateien und Verzeichnissen für Anwendungen. 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, da 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-One zu verwandeln. Mit anderen Worten, es überbrückt eine VFS-API in den Kernel, so dass "gefälschte" Dateien als "real" erscheinen können.

Verwandte Themen