用户空间文件系统
用户空间文件系统(Filesystem in Userspace,简称FUSE)是一个面向类 Unix 计算机操作系统的软件接口,它使无特权的用户能够无需编辑内核代码而创建自己的文件系统。
目前 Linux 通过内核模块对此进行支持。
一些文件系统如 ZFS、GlusterFS 和 lustre 使用 FUSE 实现。
FUSE 的工作原理如上图所示。假设基于 FUSE 的用户态文件系统 hello 挂载在 /tmp/fuse
目录下。当应用层程序要访问 /tmp/fuse 下的文件时,通过 glibc 中的函数进行系统调用,处理这些系统调用的 VFS 中的函数会调用 FUSE 在内核中的文件系统;内核中的 FUSE 文件系统将用户的请求,发送给用户态文件系统 hello;用户态文件系统收到请求后,进行处理,将结果返回给内核中的 FUSE 文件系统;最后,内核中的 FUSE 文件系统将数据返回给用户态程序。
- Linux 内核从 2.6.14 支持通过 FUSE 模块
- 在用户空间实现文件系统
- libfuse: 用户空间的 fuse 库, 非特权用户可访问