当前位置:   article > 正文

FUSE简单了解_fuse文件系统

fuse文件系统

FUSE是什么?

FUSE(filesystem in userspace)是一个用户态文件系统框架。由内核模块(fuse.ko)、用户态库(libfuse.*)和挂载工具组成(fusermount)

fuse最重要的特性是fuse可以允许安全、非特权挂载

名词解释

  • 用户态文件系统:由普通用户态进程提供数据和元数据的文件系统。该文件系统能被内核接口正常访问
  • 文件系统daemon:提供文件系统数据和元数据的进程
  • 文件系统连接:在文件系统daemon和内核之间的连接。该连接将会一直存在,直到daemon终止或者文件系统取消挂载。(detaching不会打破这样的连接,会知道最后一个引用被释放)

为什么需要FUSE?

文件系统通常工作在内核态,而fuse允许文件系统在用户态实现,这使得文件系统实现更加灵活

  • 普通用户可以加载和挂载文件系统。比如用于网络访问,用于浏览存档文件,用于移动媒体
  • FUSE崩溃不会影响内核
  • 更快编程
  • 部署更快。因为不需要管理员干预来安装它们,也因为它们可以轻松地在支持的操作系统之间移植
  • 没有与与内核静态链接相关的许可问题

但内核态文件系统还是有很多优点

  • 可以用于引导介质(实现FUSE文件系统的程序必须从某处加载)。
  • 更健壮,因为不会因为进程崩溃或被错误终止而消失。
  • 稍微快一些。

怎么工作的呢?

对于挂载hello程序实现的fuse在/tmp/fuse,执行ls -l /tmp/fuse会发生以下过程

  1. IO请求经过VFS传递给内核FUSE文件系统模块
  2. FUSE将请求转发给用户态的hello程序进行处理。处理完毕后,响应沿原路返回

在这里插入图片描述
在这里插入图片描述

其中内核fuse.ko用于承接vfs下来的IO请求,封装成FUSE数据包转发给用户态中libfuse进行解析转给hello程序。

Ref

  1. https://www.kernel.org/doc/html/latest/filesystems/fuse.html
  2. https://unix.stackexchange.com/questions/4146/what-are-the-benefits-and-downsides-to-use-fusefs-filesystems
  3. https://en.wikipedia.org/wiki/Filesystem_in_Userspace
  4. https://xie.infoq.cn/article/655c0893ed150ff65f2b7a16f
  5. https://www.a-programmer.top/2021/10/05/FUSE%E4%BB%8B%E7%BB%8D/
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/363472
推荐阅读
相关标签
  

闽ICP备14008679号