FUSE—用户空间文件系统
用户空间文件系统(Filesystem in Userspace,简称FUSE)是操作系统中的概念,指完全在用户态实现的文件系统。目前Linux通过内核模块对此进行支持。一些文件系统如ZFS,glusterfs和moosefs使用FUSE实现。
Linux用于支持用户空间文件系统的内核模块名叫FUSE,FUSE一词有时特指Linux下的用户空间文件系统。文件系统是一个通用操作系统重要的组成部分。传统上操作系统在内核层面上对文件系统提供支持。而通常内核态的代码难以调试,生产率较低。
Linux从2.6.14版本开始通过FUSE模块支持在用户空间实现文件系统。在用户空间实现文件系统能够大幅提高生产率,简化了为操作系统提供新的文件系统的工作量,特别适用于各种虚拟文件系统和网络文件系统。ZFS和 glusterfs都属于网络文件系统。但是,在用户态实现文件系统必然会引入额外的内核态/用户态切换带来的开销,对性能会产生一定影响。
使用 FUSE 您可以开发功能完备的文件系统:其具有简单的 API 库,可以被非特权用户访问,并可以安全的实施。更重要的是,FUSE 以往的表现充分证明了其稳定性。使用 FUSE,您可以像可执行二进制文件一样来开发文件系统,它们需要链接到 FUSE 库上 —— 换言之,这个文件系统框架并不需要您了解文件系统的内幕和内核模块编程的知识。 http://fuse.sourceforge.net/
浏览了下sourceforge,知道FUSE支持kernel2.4.X和2.6.X,就直接把latest stable release下下来了2.8.2,
tar -xzvf fuse-2.8.5.tar.gz cd fuse-2.8.5/ ./configure; make make install echo 'exportPKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH' >>/etc/profile source /etc/profilemodprobe fuse
可能出现的问题:
之后跑了下example里的hello,出现device not found error,用modprobe fuse查看,cannot locate fuse module.果然,FUSE虽说是支持2.4.X,不过该版本kernel里面没有fuse内核模块。查了下wiki,kernel 2.6.14之后才开始有自带fuse。
有2种解决方案:
- 一种是将fuse编译进current kernel module中,
- 另一种将fuse source code配置好放于相应目录中recompile kernel。
显然前者更方便,不过由于下载的是最新稳定版本,configure选项没有--enable-kernel-module参数,退而求其次,下了个蛮早的版本,2.4.2,证实有--enable-kernel-module,安装完之后modprobe fuse不再报错,./hello pathname -d下就可以跑个最简单的程序了。该文件系统只有单个文件hello,只含hello world一句话,然后将其mount到pathname下,跑完之后无论cat还是ls都看得到了。
FUSE—用户空间文件系统相关推荐
- FUSE——用户空间文件系统
用户空间文件系统(Filesystem in Userspace,简称FUSE)是操作系统中的概念,指完全在用户态实现的文件系统. 目前Linux通过内核模块对此进行支持.一些文件系统如ZFS,glu ...
- linux 用户空间文件系统 filesystem in userspace fuse 简介
用户空间文件系统(Filesystem in Userspace,简称FUSE)是操作系统中的概念,指完全在用户态实现的文件系统.目前Linux通过内核模块对此进行支持.一些文件系统如ZFS,glus ...
- 用户空间文件系统(FUSE)
女主宣言 今天小编为大家分享用户空间文件系统FUSE,文章从FUSE的架构,分析了各个部分的原理,并结合小编自身的使用,对FUSE进行了建议性的优化,希望能对大家有所帮助. PS:丰富的一线技术.多元 ...
- 2022-06-06 FUSE用户态文件系统
目录 摘要: linux内核支持: 架构分析: 内核中的FUSE: fuse_i.h inode.c file.c dir.c dev.c 核心流程: hello_open hello_read 核心 ...
- 用户态文件系统fuse学习
FUSE概述 FUSE(用户态文件系统)是一个实现在用户空间的文件系统框架,通过FUSE内核模块的支持,使用者只需要根据fuse提供的接口实现具体的文件操作就可以实现一个文件系统. 在fuse出现以 ...
- linux fuse安装脚本,Linux FUSE(用户态文件系统)的使用:用libfuse创建FUSE文件系统...
说明 FUSE 是Linux Kernel的特性之一:一个用户态文件系统框架,a userspace filesystem framework. 形象的说就是可以在用户态运行一个程序,这个程序暴露出一 ...
- 用户空间和内核空间通讯之【proc文件系统】
今天我们介绍另一种用户内核空间通信的方法:proc文件系统. proc文件系统作为linux提供的一种虚拟文件系统并不占用实际外围存储空间,它仅存在于内存中,系统断电即消失.proc文件系统最开始的设 ...
- 浅入浅出 Android 安全:第三章 Android 本地用户空间层安全
第三章 Android 本地用户空间层安全 来源:Yury Zhauniarovich | Publications 译者:飞龙 协议:CC BY-NC-SA 4.0 本地用户空间层在 Android ...
- 用户空间增加、缩减内存
1.brk系统调用服务例程 malloc()是一个API,这个函数在库中封装了系统调用brk.因此如果调用malloc,那么首先会引发brk系统调用执行的过程.brk()在内核中对应的系统调用服务例程 ...
最新文章
- mariadb 内存占用优化
- 使用Azure portal Create Virtual Machine
- 无参数实例化Configuration对象以及addResource无法加载core-site.xml中的内容
- mysql key value 排序_MySQL利用索引优化ORDER BY排序语句的方法
- 设计模式6——创建型模式之原型模式
- 迅为四核4418开发板MiniLinux-CAN总线测试使用文档
- android 的弱网测试,Android APP弱网测试问题和解决分析
- 人之间的尊重是相互的_人和人之间,尊重永远是相互的,是礼貌,是美德,更是善良的表现...
- jquery 省市区联动插件
- 软件设计模式经典书籍推荐
- ElastiSearch与Solr和Lucene
- Linux系统配置(磁盘管理)
- 安保公司的商业计划书
- 360浏览器(QQ浏览器 等双核浏览器) 极速 IE 兼容 模式的 兼容问题处理:设置优先使用极速模式 渲染和加载
- void* to ULONG
- CTF__(1)技术论坛(电子书籍,学习视频)
- 数仓(十)从0到1简单搭建加载数仓DWS层
- #工作笔记 Android歌词视频开发
- 29、Internet网络层——IPv4协议IP地址(网络层)
- electron 打包_Electron结合React开发桌面应用