直到现在,我从未细想这个词fuse
,但后来我看到有nofuse
。
根据我在互联网上所做的搜索,他们并没有清楚地解释其中的区别。fuse
和 和有什么不一样nofuse
?
例如,在性能和收益方面fuse
与此相比有什么不同?允许您在启动时启动闪存驱动器,而不是?这是我感兴趣的。nofuse
nofuse
fuse
直到现在,我从未细想这个词fuse
,但后来我看到有nofuse
。
根据我在互联网上所做的搜索,他们并没有清楚地解释其中的区别。fuse
和 和有什么不一样nofuse
?
例如,在性能和收益方面fuse
与此相比有什么不同?允许您在启动时启动闪存驱动器,而不是?这是我感兴趣的。nofuse
nofuse
fuse
他们是两个不同的司机。其中一个是使用 FUSE 创建的,另一个是内核模块。
FUSE 是一个框架,它允许将文件系统驱动程序写入“用户空间”,即作为独立服务而不是内核模块。这使得开发更容易,但以较低的性能为代价。
基于 FUSE 的文件系统可能比内核中的文件系统要慢一些,因为每个操作都要经过多次上下文切换——从你的程序到内核再到相应的 FUSE 服务(它必须从设备读取数据,然后再回到内核和再次出来),然后回复再次由内核处理并传递给您的进程。与也作为服务运行的数据库相比,它并没有什么特别之处,但与直接作为内核的一部分运行的文件系统相比,它确实让事情变得更慢。
但是,无论当前运行的内核如何,都可以安装基于 FUSE 的驱动程序(例如 exfat-fuse)(该接口特别是为了稳定),而基于内核的驱动程序(例如 ZFS)必须适应每个新的主要内核版本和该模块必须为每个次要版本单独重新编译(通常在用户的机器上)。
因此,对于(尚未)属于 Linux 内核的文件系统(无论出于何种原因),使用 FUSE 是一种常见的选择,因为它使驱动程序更易于编写和部署——这就是 exfat-fuse 变得普遍的原因。(由于驱动程序是普通程序,FUSE 还可以轻松构建自定义文件系统,如 sshfs、ftpfs 或 wikipediafs。)
不过,此时,'exfat-nofuse' 软件包现已过时(嗯,它们都已过时),因为当前内核版本具有内置的exFAT 驱动程序,因此不再需要任何外部驱动程序。
同样,“ntfs-3g”NTFS 驱动程序也是基于 FUSE 的,尽管它可能会在某些时候被新的内核“ntfs3”驱动程序所取代。
来自
fuse(8)
:,
nofuse
意味着它完全由内核模块处理。你的内核有一种与硬件对话的方法。这个方法(和内核本身)在 Ring 0 中运行,这意味着它是特权的。文件系统代码可以包含一个 rootkit。此外,您必须是 root 才能安装实现文件系统驱动程序的内核模块。您还必须是 root 才能设置挂载点。
FUSE 表示文件系统驱动程序在用户空间中运行。内核中的一个模块桥接到作为普通用户执行的代码。这意味着漏洞的足迹更小,更普遍。FUSE 驱动程序的新手实现将依赖与所有其他 FUSE 驱动程序相同的内核桥。
在这里,您的发行版为 exfat 提供了两种方法,一种是基于内核的,一种是在 FUSE 中。