什么是虚拟文件系统或用户空间中的文件系统?

zen*_*ngr 9 fuse vfs

我刚刚遇到了像FUSE这样的用户空间中的VFS和文件系统.

现在,据我所知,它模拟了一个文件系统,因此应用程序可以拥有标准的文件系统层次结构.但我不明白,为什么我们需要一个单独的文件系统呢?我们不能只创建一个常规文件夹结构并放置将由应用程序使用的文件吗?

所以,我的问题是:

  1. 什么是VFS?

  2. 你能举一些现实世界的例子,使用VFS的用例.

  3. 使用VFS有什么好处?

任何基于Java的VFS?

Dom*_*omQ 15

VFS和FUSE是相关的,但不完全相同.FUSE的主要目的是将事物 - 几乎像文件但不完全(例如远程服务器上的文件或ZIP文件内部)转换为"真实"目录和文件.查看FUSE文件系统名单,了解这有什么好处; 这有希望使得FUSE在很多情况下击败"普通旧文件"的原因更加清晰.

VFS是文件的应用程序接口(API).如果您不熟悉API的概念,我建议您查看维基百科页面中的"虚拟文件系统"; 它描述了从操作系统内核的角度来看VFS是什么.是的,您的操作系统内核(无论是Windows,Linux还是MacOS)都有VFS!一些用户空间程序(例如GNOME)也有一个(它叫做GnomeVFS).

VFS的目的是以统一的方式向应用程序提供文件和目录; 它们来自CD-ROM,硬盘或USB记忆棒或RAM磁盘上的Linux或Windows文件系统,或来自网络服务器的文件.操作系统内核可用于VFS可能是显而易见的.那么为什么还有用户空间的,比如GnomeVFS?答案是你不希望每个文件系统及其狗驻留在内核中,因为这样的代码以超级用户权限运行,其中的任何错误都可能导致整个机器崩溃.当然,缺点是用户空间VFS只对使用它们的应用程序有用,例如只有GNOME应用程序可以通过GnomeVFS"看到"; 一个人不能在GnomeVFS树中做"ls".解决方案是FUSE:其确切目的和描述是将用户空间VFS转换为内核VFS.


Phi*_*ler 6

VFS 不是指“假”文件系统,而是指由 POSIX 操作系统提供给应用程序进程的抽象文件系统接口。例如:

  • open()
  • close()
  • read()
  • write()
  • 等等。

所有文件系统实现(ext3、XFS、reiserfs 等)都在它们使用的任何特定结构和算法之上公开相同的接口。

FUSE 是一种为该接口提供不在内核中运行的代码的方法。这可以显着提高稳定性和安全性,因为内核代码具有特权,而用户空间代码则没有。这种分离使得编写具有大量外部依赖关系的文件系统变得更加明智。FUSE 网页描述了许多使用 FUSE 构建的文件系统