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

时间:2010-05-26 05:20:15

标签: fuse vfs

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

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

所以,我的问题是:

  1. 什么是VFS?

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

  3. 使用VFS有什么好处?

  4. 任何基于Java的VFS?

2 个答案:

答案 0 :(得分:15)

VFS和FUSE是相关的,但并不完全相同。 FUSE的主要目的是将事物 - 几乎像文件但不完全(例如远程服务器上的文件或ZIP文件内部)转换为“真实”目录和文件。请参阅roster of FUSE filesystems以了解这有什么用处;这有希望让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。换句话说,它将VFS API桥接到内核中,因此“假”文件可以显示为“真实”。

答案 1 :(得分:4)

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

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

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

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

相关问题