使用FuseFS文件系统的好处和缺点是什么?


19

我知道有些文件系统通过Fuse呈现出来,我想知道这种方法的优缺点。

Answers:


17

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

例如,这是一个(非常不起作用的)FUSE文件系统的屏幕快照,该文件系统可以访问SE站点数据:

FUSE文件系统的屏幕截图

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



2
您会发现在保险丝中实现的重型文件系统:LessFS,GlusterFS,MooseFS。Google的GFS(不是POSIX)也在用户空间中运行。
东武

您在哪里找到了该应用程序?!?!
内森·奥斯曼

4
@George我在搞弄SO API时写的。除了/ users之外,它不使用任何路由,因此您基本上可以在该屏幕截图中看到所有已实现的功能。只是为了看看这有多难
迈克尔·莫罗泽克

5
@乔治我把它放在github上
迈克尔·莫罗泽克

19

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

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

  • 它们可以在引导媒体上使用(实现FUSE文件系统的程序必须从某个位置加载)。
  • 它们更加强大,因为它们不会由于进程崩溃或被错误杀死而消失。
  • 他们更快。

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

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

7

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

FUSE最有用的好处之一是允许GPL代码与非GPL代码“混合”。例如,在许多操作系统(如OpenSolaris和* BSD)上的Gnu / Linux和ZFS http://zfs-fuse.net/或NTFS-3G,http://www.tuxera.com/community/ntfs-3g-download/

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.