exfat-fuse 和 exfat-nofuse 有什么区别?

Mar*_*mbo 7 exfat fuse ubuntu-20.04

到目前为止,我从未仔细思考过这个词fuse,但后来我发现确实有nofuse

根据我在互联网上所做的搜索,他们没有清楚地解释其中的差异。fuse和 和有什么区别nofuse

例如,在性能和优势方面与此有何fuse不同?允许您在启动时启动闪存驱动器,但不允许?这就是我感兴趣的地方。nofusenofusefuse

use*_*686 18

他们是两个不同的司机。其中一个是使用 FUSE 创建的,另一个是内核模块。

\n

FUSE 是一个框架,允许在“用户空间”中编写文件系统驱动程序,即作为独立服务而不是内核模块。这使得开发变得更加容易,但代价是性能较低。

\n

基于 FUSE 的文件系统可能比内核中的文件系统慢一些,因为每个操作都会经历多个上下文切换 \xe2\x80\x93 从程序到内核再到相应的 FUSE 服务(必须从设备读取数据,因此回到内核并再次退出),然后回复再次由内核处理并传递到您的进程。与也作为服务运行的数据库相比,它没有什么特别的,但与直接作为内核一部分运行的文件系统相比,它确实使速度变慢。

\n

然而,基于 FUSE 的驱动程序(如 exfat-fuse)可以安装,无论当前运行的内核如何(该接口特别是为了稳定),相比之下,基于内核的驱动程序(如 ZFS)必须适应每个新的主要内核版本,并且该模块必须为每个次要版本单独重新编译(通常在用户的计算机上)。

\n

因此,对于尚未成为 Linux 内核一部分的文件系统(无论出于何种原因),使用 FUSE 是一种常见的选择,因为它使驱动程序更易于编写且更易于部署 \xe2\x80\x93,这就是为什么 exfat-保险丝变得普遍使用。(由于驱动程序是普通程序,FUSE 还可以轻松构建自定义文件系统,例如 sshfs、ftpfs 或 wikipediafs。)

\n

不过,此时“exfat-nofuse”软件包已过时(好吧,它们都已过时),因为当前的内核版本具有内置的exFAT 驱动程序,因此不再需要任何外部驱动程序。

\n

同样,“ntfs-3g”NTFS 驱动程序也是基于 FUSE 的,尽管它可能在某个时候被新的内核“ntfs3”驱动程序所取代。

\n

  • @EvanCarroll:FUSE是IPC代码,你不必自己编写。(我假设用户空间部分有一些辅助工具)。我认为您只需要为不同的 FS 操作(例如路径查找和元数据查找)编写带有回调的代码,类似于内核模块必须提供的函数指针结构。(我可能会弄错,因为我没有查看 FUSE 实现的 FS 的详细信息。)但是,您可以使用普通的读/写系统,而不是通过调用 Linux 块设备函数来执行较低级别的 I/O来电。 (3认同)