fuse介绍,机制,调用流程

 

目录

fuse

引入 

介绍

机制

远端服务的文件系统挂载到本地

自定义文件系统

调用流程

fuse内核驱动

用户态文件系统

梳理


fuse

引入 

因为用户空间的需求多样,而内核提供的功能固定单一,所以为了迎合用户的需求,就需要引入用户空间驱动的概念

  • 开发者可以通过编写用户空间驱动来支持需要的特性

介绍

是一种在用户空间实现文件系统的机制,允许开发人员创建自定义文件系统而无需修改内核代码

fuse通过在用户空间中运行文件系统的逻辑来实现文件系统的操作,而不是依赖于内核模块

  • fuse是基于用户空间驱动实现的,编写和运行都类似于普通的用户程序
  • 而内核驱动是使用了内核中的函数和头文件,以内核模块的形式,编译到内核空间中,然后通过insmod和rmmod手动加载和卸载
  • 所以,使用用户空间驱动,可以更灵活地编写和运行底层功能

机制

远端服务的文件系统挂载到本地

如果我们想要让远端的某个服务挂在到本地的文件系统里,想像访问本地文件一样访问远端存储文件

  • 我们可以实现一个用户空间的fuse驱动,将远端文件系统挂载到本地某个目录下,
  • 就可以在该目录里,访问远端文件了

自定义文件系统

也可以自主实现一个fuse用户空间驱动,来满足业务上的需求

  • 这种自定义文件系统可以根据业务需求实现各种特定功能,如加密、压缩、版本控制等。
  • 这个fuse驱动程序可以通过与用户态应用程序的交互,实现对文件系统的各种操作,并将这些操作转换为对底层存储的相应操作

 

调用流程

  • 利用原本内核中的vfs文件系统框架,将针对fuse文件系统的请求发给fuse驱动
  • 然后内核驱动发给基于fuse library实现的fuse用户空间驱动(fuse守护进程),该驱动来实际处理用户请求
  • 最后将结果通过原路径返回给用户

fuse内核驱动

用户态文件系统

指文件内容和文件属性都是由用户态的进程提供的(守护进程),也就是这里的fuse用户空间驱动

(每个用户空间驱动的实现方式都不同,这里的fuse依赖的是libfuse库)

梳理

普通的访问本地文件系统,步骤很少

  • 只需要经历vfs的转发,去访问实际的文件系统类型
  • 然后实际的文件系统类型(如EXT4、NTFS等)收到请求后,会执行相应的操作

但如果要访问用户态文件系统,需要经历更多的路径,以及更多的内核态和用户态之间的切换

  • 它虽然也同样被vfs转发到fuse的内核驱动中,但它的下一步并不是交给他就行了,而是需要转发给用户态的fuse驱动,它去进行实际的操作
  • 而它的操作相当于就是一次访问本地文件系统
  • 所以,它多了很多中间步骤

  • 虽然增加了文件操作的自由性(因为是由我们去自主定义文件操作)
  • 但因此失去的性能也不容小觑:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/522210.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

zookeeper中的znode节点的一些功能和应用

zookeeper是一个挺好玩的东西 有着独特的选举机制,一般在中小型集群中,zookeeper一般装在三个节点 其中只有一个节点对外提供服务,处于leader状态,另外两台未follower状态 这得益于zookeeper独特的选举机制,可以保证le…

基于SSM+Jsp+Mysql的物流管理系统

开发语言:Java框架:ssm技术:JSPJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包…

python爬虫学习第十五天-------ajax的get和post请求

嗨嗨嗨!兄弟姐妹大家好哇!今天我们来学习ajax的get和post请求 一、了解ajax Ajax(Asynchronous JavaScript and XML)是一种在 Web 开发中用于创建交互式网页应用程序的技术。通过 Ajax,网页可以在不重新加载整个页面…

爱上数据结构:二叉树

​ ​ 🔥个人主页:guoguoqiang. 🔥专栏:数据结构 ​ 一、二叉树的顺序结构及实现 1.二叉树的顺序结构 普通的二叉树是不适合用数组来存储的,因为可能会存在大量的空间浪费。而完全二叉树更适合使用顺序结构存储。…

String工具类 StringBuilder、StringBuffer、StringJoiner

StringBuilder StringBuilder是可变字符串对象,是一个字符串容器,里面的字符串是可以改变的,就是用来操作字符串的。相比较于String: 更适合于做修改操作使代码看上去更加简洁效率更高 常見的api 代码 StringBuilder sb new Str…

【随笔】Git 高级篇 -- 整理提交记录(上)cherry-pick(十五)

💌 所属专栏:【Git】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! 💖 欢迎大…

【无标题】【Android】Android中Intent的用法总结

2.显示地图: Java代码 Uri uri Uri.parse(“geo:38.899533,-77.036476”); Intent it new Intent(Intent.Action_VIEW,uri); startActivity(it); 3.从google搜索内容 Java代码 Intent intent new Intent(); intent.setAction(Intent.ACTION_WEB_SEARCH); intent.pu…

狗都能看懂的DDPM的论文详解

DDPM/扩散模型是什么 DDPM(Denoising Diffusion Probabilistic Models)是扩散模型的一种,在视觉领域是属于生成式的模型。 扩散模型(Diffusion Model)的概念最早可以追溯到统计物理学中的玻尔兹曼机(Bolt…

WPS解决插入公式在正文带来行间距变大问题

问题描述 写论文解释公式时,插入对应的变量,导致行间距变大,如图 显然上文与下文行间距不等。但无法通过修改数值修改下文行间距。 解决办法

给毕业生推荐的三款二手车

我是一名纯正的90后,2011年毕业,汽车维修专业毕业,从小对汽车非常感兴趣,由于某些不可抗拒的原因,我在当年义无反顾的选择了去学习汽车维修,想着自己能做一名牛B 的汽车修理工,不为别的&#xf…

wordpress全站开发指南-面向开发者及深度用户(全中文实操)--php数组与基本循环

php数组与基本循环 <?php$myName"xixi";$namesarray(xixi1,xixi2,xixi3); ?> <p> Hi ,my name is <?php echo $myName; ?> </p> <p> Hi,my name is <?php echo $names[0] ?> </p> <p> Hi,my name is <?…

SMW200A罗德与施瓦茨SMW200A信号发生器

181/2461/8938产品概述&#xff1a; SMW200A是开发新型宽带通信系统&#xff0c;验证3G和4G基站&#xff0c;以及需数字调制信号的理想信号发生器。 SMW200A 矢量信号发生器 具有内部基带、高达2 GHz的I/Q调制带宽可以满足第4代和第5代标准(例如&#xff0c;5G、LTE-Advanced…

小程序商城免费搭建之java商城 电子商务Spring Cloud+Spring Boot+二次开发+mybatis+MQ+VR全

1. 涉及平台 平台管理、商家端&#xff08;PC端、手机端&#xff09;、买家平台&#xff08;H5/公众号、小程序、APP端&#xff08;IOS/Android&#xff09;、微服务平台&#xff08;业务服务&#xff09; 2. 核心架构 Spring Cloud、Spring Boot、Mybatis、Redis 3. 前端框架…

最短路计数

题目描述 给出一个 N 个顶点 M 条边的无向无权图&#xff0c;顶点编号为 1∼N。问从顶点 1 开始&#xff0c;到其他每个点的最短路有几条。 输入描述 第一行包含 2 个正整数 N,M&#xff0c;为图的顶点数与边数。 接下来 M 行&#xff0c;每行两个正整数 x,y&#xff0c;表示…

机器学习周记(第三十三周:文献阅读[GWO-GART])2024.4.1~2024.4.7

目录 摘要 ABSTRACT 1 论文信息 1.1 论文标题 1.2 论文摘要 1.3 论文数据集 1.4 论文模型 2 相关知识 摘要 本周阅读了一篇使用GAT结合GRU预测PM2.5浓度的文章。论文模型为图注意力循环网络&#xff08;GART&#xff09;&#xff0c;首次提出了一种新型的多层GAT架构&…

2024-简单点-python中的多重继承mro和super的联系

在Python的多重继承中&#xff0c;super()函数的作用主要是确保父类的方法被正确地调用&#xff0c;同时避免了直接调用父类可能带来的问题&#xff0c;如方法覆盖或名称冲突。super()的使用是Python实现合作式多重继承的关键。 具体来说&#xff0c;当一个类从多个父类继承时…

HTTP 摘要认证

文章目录 一、什么是摘要认证二、工作流程三、实例演示 一、什么是摘要认证 摘要认证&#xff0c;即 Digest Access Authentication&#xff0c;是一种HTTP身份验证机制&#xff0c;用于验证用户的身份。相较于基本认证&#xff08;Basic Authentication&#xff09;使用用户名…

Qt快速入门到熟练(3.程序运行发布与设置图标)

程序运行发布 当我们执行过qt过后&#xff0c;将会在项目目录里面生成出一个debug构建目录&#xff0c;点击进去选择debug文件夹&#xff0c;就可以看到我们生成出来的可执行文件。 很显然我们的项目就叫做MyFirstWidget&#xff0c;所以生成的可执行文件在没有人为设置的情…

CLR学习

视频链接&#xff1a;《CLR十分钟》系列之CLR运行模型_哔哩哔哩_bilibili 什么是 CLR 公共语言运行时&#xff08;Common Language Runtime CLR&#xff09; 是一个可有多种编程语言使用的 运行时&#xff0c;CLR 的核心功能&#xff08;比如 内存管理&#xff0c;程序集加载…

notion的使用心得

从老石的视频知道了notion是一个很强大的管理工具&#xff1a;这就是最棒的效率软件&#xff01;如果不是&#xff0c;我倒想试试你的 | Notion使用技巧分享_哔哩哔哩_bilibili 我一时半会不能全部学会&#xff0c;但是借用大家的好模板&#xff1a;如何用5分钟搭建简洁高效的…