FUSE
FUSE 用户空间和内核空间
什么是FUSE
FUSE(用户态文件系统)是一个实现在用户空间的文件系统框架,通过FUSE内核模块的支持,使用者只需要根据fuse提供的接口实现具体的文件操作就可以实现一个文件系统。
形象的说就是可以在用户态运行一个程序,这个程序暴露出一个FUSE文件系统,对这个文件系统进行的读写操作都会被转给用户态的程序处理。
安装FUSE
FUSE由内核模块fuse.ko和用户空间的动态链接库libfuse.*组成
如果要开发使用fuse的用户态程序,需要安装fuse-devel
yum install fuse-devel
FUSE组成
FUSE内核模块
实现了和VFS的对接,实现了一个能被用户空间进程打开的设备,当VFS发来文件操作请求之后,将请求转化为特定格式,并通过设备传递给用户空间进程,用户空间进程在处理完请求后,将结果返回给fuse内核模块,内核模块再将其还原为Linux kernel需要的格式,并返回给VFS
用户空间库libfuse
负责和内核空间通信,接收来自/dev/fuse的请求,并将其转化为一系列的函数调用,将结果写回到/dev/fuse
libfuse提供了两个APIs:一个“high-level”同步API 和一个“low-level” 异步API
high-level API
回调函数使用文件名(file names)和路径(paths)工作,而不是索引节点inodes,回调函数返回时也就是一个请求处理的完成
low-level API
回调函数必须使用索引节点inode工作,响应发送必须显示的使用一套单独的API函数