FUSE 的全称是“Filesystem in Userspace”,即“用户空间的文件系统”,这是一个内核模块,能够让用户在用户空间实现文件系统并且挂载到某个目录,就像在内核实现的文件系统一样。使用 FUSE 有几个好处:一是因为在用户空间实现,开发和调试都比较方便;二是可以把一些常用的服务以文件系统的形式展现,方便操作,如 ftpfs,sshfs,mailfs 等;另外可以避免一些版权问题,如 Linux 上对 ntfs,zfs 的操作都是通过 FUSE 实现的。当然用户空间的实现也有缺点,最明显的就是由多次在用户态/内核态切换带来的性能下降。
根据参考资料 [1] 的介绍,用户通过 FUSE 和内核的通信过程如下:
+----------------+
| myfs /tmp/fuse |
+----------------+
| ^
+--------------+ v |
| ls /tmp/fuse | +--------------+
+--------------+ | libfuse |
^
… 阅读全文…