- 11
- 0
- 约2.14万字
- 约 22页
- 2023-08-19 发布于湖北
- 举报
FUSE协议解析
由于刚学并整理,如有遗漏或者错误 !请拼命指出,谢谢 !
什什么么是是 FUSE
F SE的全称是Filesystem in serspace,即⽤户空间⽂件系统,是系统内核提供的⼀个功能,使得可以在⽤户态下实现⼀个⾃定义的⽂
件系统。⽐如CEPH和GlusterFS等都有使⽤到F SE。
⽽则是提供给⽤户态下的开发包。
FUSE是是怎怎么么交交互互的的
F SE是通过读写/dev/fuse让⽤户态的⽂件系统进程和内核通信的。
程序需要先打开/dev/fuse,然后通过mount()将/dev/fuse的fd,进程的⽤户id和组id传⼊,进⾏⽂件系统的挂载。
PS: 通过 ⾃⼰写的fusermount程序(编译安装libfuse后会在/bin/下),可以让我们实现的⽂件系统程序在⾮root权限下挂载,这部分我还不
是很了解,我 ⾃⼰实现的go版libfuse也只是依赖于这个fusermount。
FUSE的的指指令令号号、、对对应应 的的函函数数、、请请求求格格式式与与响响应应
程序从/dev/fuse中读取请求,不需要担⼼像TCP有半包粘包等问题,⼀次读取⼀条请求。buffer不够⼤,会报异常。
请求和响应,都是以⼆进制字节表⽰的,下⽂中的结构体只是为了⽅便看。
请请求求头头
每个命令的前 40 bytes为请求头,转为Golang的结构体如下:
// Each query starts with a FuseInHeader
type FuseInHeader struct {
en uint32
Opcode uint32
Unique uint64
Nodeid uint64
Uid uint32
Gid uint32
Pid uint32
Padding uint32
}
Len: 是整个请求的字节数长度,包括请求头后的具体内容
Opcode: 请求的类型
nique: 该请求唯⼀标识,响应中要对应着该 nique
Nodeid: 该请求针对的⽂件nodeid,⽬标⽂件或者⽂件夹的nodeid
id: 对该⽂件/⽂件夹操作的进程的⽤户ID
Gid: 对该⽂件/⽂件夹操作的进程的⽤户组ID
Pid: 对该⽂件/⽂件夹操作的进程的进程ID
响响应应头头
程序写⼊/dev/fuse的每个响应的前 16 bytes为响应头,转为Golang的结构体如下:
type FuseOutHeader struct {
en uint32
Error int32
Unique uint64
}
Len: 是整个响应的字节数长度,包括响应头后的具体内容
Error: ⼀个负数的错误码,成功返回0,其他对应着系统(error.h)的错误代码,但是为负数,每个操作的错误返回可以查看linux man中
相应的函数
nique: 对应者请求的唯⼀标识
请请求求类类型型和和 具具体体 结结构构
数字对应着请求中的Opcode
FUSE_ LOOKUP = 1
lookup()函数,Look up a directory entry by name and get its attributes.
如解析所说,获取代请求头Nodeid⽂件夹下该名字的⽂件的属性,包含着 inode id等。
请请求求头头后后的的实实体体
type Fuse ookupIn struct {
Name string // 字符串结尾的`\0`会计算到长度中,解析时需注意
}
Name: ⽂件名
响响应应头头的的实实体体
type FuseEntryOut struct {
NodeId uint64 /* Inode ID */
Generation uint64 /* Inode generation: nodeid :gen must be unique for the fss lifetime */
EntryValid uint64 /* Cache timeout for the name */
AttrValid u
您可能关注的文档
- 仪表调试方案.doc
- 小学英语教师教学工作总结(5篇).doc
- 八年级上册语文必背古诗文言文.docx
- 吸尘器技术标准测试指导书.pdf
- 企业内部员工投诉制度.doc
- 前后鼻韵母的区分和练习题.docx
- PICC-CVC-PORT-换药、封管护理流程及质量标准.docx
- 地下室防水监理实施细则.doc
- 刀具角度测量实验报告.doc
- 备战初一下期末考·新定义压轴题[1].docx
- 伟明环保-市场前景及投资研究报告-境内业务稳健运行,印尼市场贡献边际增量.pdf
- 桂东县法院系统招聘考试真题2025.pdf
- 贵州省黔南布依族2026年中考三模物理试题及答案.pdf
- 贵州省黔南州2026年中考语文二模试卷附答案.pdf
- 贵州省铜仁市2026年中考语文二模试卷附答案.pdf
- 2026上半年安徽事业单位联考合肥市庐江县招聘36人备考题库及一套完整答案详解.docx
- 贵州省毕节市2026年中考语文一模试卷附答案.pdf
- 贵州省贵阳市南明区2026年中考语文一模试卷附答案.pdf
- 2026上半年安徽事业单位联考合肥市庐江县招聘36人备考题库及一套参考答案详解.docx
- 贵州省贵阳市白云区2026年中考二模物理试题附答案.pdf
最近下载
- 介绍楚门的世界.pptx VIP
- 2025年拍卖师市场饱和度与竞争红海中的差异化突围策略分析专题试卷及解析.pdf VIP
- 2025年互联网营销师商业谈判与供应链管理能力专题试卷及解析.pdf VIP
- 2025年化工工程师多搅拌器串联与并联系统操作优化专题试卷及解析.pdf VIP
- 2025年拍卖师农产品拍卖拍卖师竞买人购买反馈专题试卷及解析.pdf VIP
- 2025年AWS认证AmazonRDS只读副本的只读副本的只读副本在主实例故障后的角色切换专题试卷及解析.pdf VIP
- 法律职业资格(主观题)真题答案解析2025.docx VIP
- 12J926-无障碍设计标准图集.pdf VIP
- 导弹的总体设计(西工大课件).pdf VIP
- 2025年演出经纪人演出经营许可证申领与年检专题试卷及解析.pdf VIP
原创力文档

文档评论(0)