2010-05-26 101 views
8

我刚刚在用户空间遇到了VFS和文件系统,如FUSE什么是用户空间中的虚拟文件系统或文件系统?

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

所以,我的问题是:

  1. 什么是VFS?

  2. 你可以举一些真实世界的例子,使用VFS的用例。

  3. 使用VFS有什么好处?

任何基于Java的VFS?

回答

4

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

  • open()
  • close()
  • read()
  • write()

所有文件系统实现(EXT3,XFS,reiserfs的等)暴露在相同的接口他们使用的任何特定结构和算法的顶部。

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

13

VFS和FUSE是相关的,但并不完全相同。 FUSE的主要目的是将那些几乎像文件一样但不完全的文件(例如远程服务器上的文件或ZIP文件中的文件)变成“真实”的目录和文件。查看roster of FUSE filesystems以了解这有什么好处;希望这会让FUSE在很多情况下击败“普通旧文件”变得更加清晰。

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

VFS的目的是以统一的方式向应用程序呈现文件和目录;无论是CD-ROM上的文件,硬盘上的Linux或Windows文件系统,U盘或RAM磁盘上的文件,还是来自网络服务器的文件。 OS内核可用于VFS可能是显而易见的。那为什么还有用户空间的,比如GnomeVFS?答案是你不希望每个文件系统和它的狗都驻留在内核中,因为这些代码以超级用户权限运行,并且其中的任何错误都可能导致整个机器崩溃。当然,缺点是用户空间VFS只适用于使用它们的应用程序,例如,只有GNOME应用程序可以通过GnomeVFS“看到”;一个人不能在GnomeVFS树中做“ls”。解决方案是FUSE:其确切目的和描述是将用户空间VFS转换为内核。换句话说,它将VFS API连接到内核,以便“假”文件可以显示为“真实”。

相关问题