使用 FuseFS 文件系统有哪些优点和缺点?

使用 FuseFS 文件系统有哪些优点和缺点?

我知道一些文件系统通过 Fuse 呈现自己,我想知道这种方法的优点和缺点。

答案1

Unix 文件系统传统上是在内核中实现的。保险丝允许用户程序实现文件系统。

内核内文件系统更适合程序和数据的主文件系统:

  • 它们可以在启动介质上使用(必须从某个地方加载实现 FUSE 文件系统的程序)。
  • 它们更加强大,因为它们不会因为进程崩溃或被错误终止而消失。
  • 他们有点快。

FUSE 文件系统还有其他优点,主要围绕其灵活性:

  • 它们可以由普通用户加载和挂载,因此对于用户倾向于自己挂载的文件系统来说它们很方便:用于网络访问、用于浏览存档文件、用于可移动媒体等。
  • 如果 FUSE 文件系统驱动程序崩溃,它不会使您的内核出现恐慌:您不会在访问文件系统的应用程序中看到比 I/O 错误更糟糕的情况。
  • 它们可以非常快速地编程;有保险丝绑定对于许多脚本语言,可以用几百行代码编写有用的 FUSE 文件系统驱动程序。
  • 它们可以非常快速地部署,既因为不需要管理员干预来安装它们,也因为它们可以在之间轻松移植支持的操作系统
  • 不存在与内核静态链接相关的许可问题(这会影响兹夫斯)。

答案2

如果你指的是真正的磁盘文件系统或任何文件系统,我不确定。我从未见过普通的文件系统使用 FUSE,尽管我认为这是可能的; FUSE 的主要好处是它可以让您向应用程序(或用户)呈现一些看起来像文件系统的东西,但实际上只是在用户尝试执行诸如列出目录中的文件或创建新文件之类的操作时调用应用程序中的函数文件。计划9因试图通过文件系统访问所有内容而闻名,/proc伪文件系统就来自它们; FUSE 是应用程序轻松遵循该模式的一种方法

例如,下面是一个(非常无功能的)FUSE 文件系统的屏幕截图,可以访问 SE 站点数据:

Screenshot of FUSE filesystem in action

当然,这些文件实际上都不存在;当ls询问目录中的文件列表时,FUSE 在我的程序中调用了一个函数,该函数向该站点发出 API 请求以加载有关用户 73(我)的信息;cat尝试读取display_namewebsite_url调用更多从内存返回缓存数据的函数,而磁盘上没有任何实际存在的数据

答案3

FUSE 本身并不是真正的文件系统,而是允许将文件系统实现为进程而不是内核模块的代码。

FUSE 最有用的好处之一是允许 GPL 代码与非 GPL 代码“混合”。例如,Gnu/Linux 和 ZFS(zfs-保险丝,现已弃用并被废弃开放ZFS) 或者NTFS-3G在许多操作系统上,例如 OpenSolaris/illumos 和 *BSD

主要缺点是与本机(即内核)驱动程序相比,用户态驱动程序对性能的影响。

相关内容