FUSE 简介

查看原文

文件系统是存储和管理文件和目录的层级结构,但是从广义的各种变种来说不仅仅如此,有形形色色的基于 VFS 实现的文件系统在此基础上实现了更丰富的功能。例如,基于 CVS 接口的文件系统可以备份老数据,ftpfs 可以在文件系统接口上实现匿名 FTP 。关于 FUSE 这项技术,它并不是全新的,它是一种运行在用户态的文件系统(常规实现将会嵌入到内核态中去)。在运行时,文件系统是一个可执行的二进制文件,链接到 FUSE 的 so 文件。好处是,你不需要去理解内核编程,也不需要理解文件系统的内部接口。

在使用上,首先要安装 FUSE 内核模块。其次,你要基于 FUSE 开发程序,运行一个 Server process, 一个 FUSE client process,其中前者运行着想要的功能,可能在某个服务器集群中;后者则是运行业务逻辑的服务器。在数据通信上,当读写请求到 FUSE client process 时,它可能会通过 RPC 等方式(视具体实现而定),联系 Server process。

FUSE 的整套接口由 fuse_operations 结构体定义,其中有一系列函数指针作为要去实现的接口,例如,mkdir, rmdir, link, chmod, chown, open, read, write, flush 等等。