吴锦华/明鑫: 用户态文件系统(FUSE)框架分析和实战

本文介绍了用户态文件系统FUSE(Filesystem in Userspace),它允许用户在无需修改内核的情况下创建自定义文件系统。FUSE包括内核模块和用户态库,支持多种知名文件系统如SSHFS、GlusterFS等。文章详细分析了FUSE的实现机制,从虚拟文件系统(VFS)入手,解释了FUSE如何通过内核模块与用户态库协同工作。此外,还通过一个简单的示例展示了如何使用Libfuse实现用户态文件系统,并在QEMU环境中进行了FUSE的实践操作,演示了如何创建一个用户态配额文件系统。
摘要由CSDN通过智能技术生成

作者简介:

吴锦华,2015年毕业于西安电子科技大学,目前就职于诺基亚上海贝尔,从事嵌入式平台开发工作2年,负责对第三方boot和Linux移植和适配到公司的软件平台架构。

明鑫,2006年毕业于武汉大学,目前就职于诺基亚上海贝尔,从事嵌入式平台开发工作11年,先后参与了VxWorks、Integrity等RTOS下的底层BSP及驱动开发,主导接入网络设备RTOS到Linux的移植。

快,关注Linuxer,一起涨姿势~

用户态文件系统介绍

用户态文件系统(filesystem in userspace 简称FUSE),它能使用户在无需编辑和编译内核代码的情况下,创建用户自定义的文件系统。文件系统是操作系统的重要组成部分,一般在内核层面实现对于文件系统的支持,而通常内核态的代码难以调试,生产率较低。在用户态空间实现文件系统能够极大幅度的提高生产效率,简化为实现新的文件系统的工作量。FUSE主要包含两个部分,内核FUSE模块(Linux2.6.14版本开始支持)和用户态Libfuse库。

 

目前FUSE支持的平台:

  • Linux 完全支持

  • BSD 部分支持

  • OX-X参考OSXFUSE

比较知名的用户态文件系统:

  • ExpanDrive:商业文件系统,实现了SFTP/FTP/FTPS协议;

  • GlusterFS:用于集群的分布式文件系统,可以扩展到PB级;

  • SSHFS:通过SSH协议访问远程文件系统;

  • GmailFS:通过文件系统方式访问GMail

  • EncFS:加密的虚拟文件系统

  • NTFS-3GCaptive NTFS,在非Windows中对NTFS文件系统提供支持;

  • WikipediaFS:支持通过文件系统接口访问Wikipedia上的文章;

  • 升阳公司的Lustre:和GlusterFS类似但更早的一个集群文件系统

  • ZFSLustreLinux版;

  • archivemount

  • HDFS: Hadoop提供的分布式文件系统。HDFS可以通过一系列命令访问,并不一定经过Linux FUSE

在嵌入式开发平台上,我们利用FUSE实现unionfsquota fs, RIPtemp sensor的文件系统。

 

FUSE官网:

https://github.com/libfuse/libfuse

 

FUSE实现机制分析

在这个章节,我们首先对于虚拟文件系统做一个简单介绍,Linux下的文件系统都依赖于虚拟文件系统,要了解FUSE,首先要对虚拟文件系统有一个了解。然后我们对于FUSE做一个宏观框架的分析,先大致了解一下整个FUSE是如何工作的,最后两个小节分别从用户态和内核态具体分析FUSE的实现。

虚拟文件系统介绍(VFS)

Linux支持ext,ext2,xia,minix,umsdos,msdes,fat32 ,ntfs,proc,stub,ncp,hpfs,affs 以及 ufs 等多种文件系统。为了实现这一目的,Linux 对所有的文件系统采用统一的文件界面,用户通过文件的操作界面来实现对不同文件系统的操作。对于用户来说,我们不要去关心不同文件系统的具体操作过程,而只是对一个虚拟的文件操作界面来进行操作,这个操作界面就是 Linux 的虚拟文件系统(VFS ) 。形象地说,Linux 的内核好像一个 PC 机的主板,VFS 就是上面的一个插槽,具体的文件系统就是外设卡。因此,每一个文件系统之间互不干扰,而只是调用相应的程序来实现其功能。在 Linux 的内核文件中,VFS 和具体的文件系统程序都放在 Linux\FS 中,其中每一种文件系统对应一个子目录,另外还有一些共用的 VFS 程序。在具体的实现上,每个文件系统都有自己的文件操作数据结构file-operations。所以,VFS 作为 Linux内核中的一个软件层,用于给用户空间的程序提供文件系统接口,同时也提供了内核中的一个抽象功能,允许不同的文件系统很好地共存。VFS 使 Linux 同时安装、支持许多不同类型的文件系统成为可能。VFS 拥有关于各种特殊文件系统的公共界面,如超级块、inode、文件操作函数入口等。实际文件系统的细节,统一由 VFS 的公共界面来索引,它们对系统核心和用户进程来说是透明的。

 2-1 VFS示意图

FUSE内核模块的实现跟传统的文件系统实现既有相似点,也有差别的地方,

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值