什么是FUSE用户态文件系统

零. 文件系统

1. 为什么要有文件系统

文件系统是操作系统中管理文件和目录的一种机制。它提供了组织、存储、检索和更新文件的方法,主要如下:

  1. 数据组织:文件系统将数据组织成文件和目录,使用户能够更方便地管理和查找文件。每个文件都有一个唯一的名称,可以包含不同类型的数据(如文本、图像、音频等)。
  2. 持久化:文件系统负责将数据永久存储在存储介质上(如硬盘、SSD、闪存等)。
  3. 数据访问:文件系统提供了一套标准的 API 和命令,使应用程序和用户能够创建、读取、写入、删除和修改文件。这些操作通常是通过文件描述符和文件路径来完成的。
  4. 数据保护:文件系统提供了机制来保护数据的安全性和完整性,如权限控制、加密、备份和恢复等。
  5. 性能优化:文件系统通过缓存、预读取、写回等技术优化数据访问性能,提高系统的整体效率。
2. 文件为什么要挂载到文件系统

挂载是指将一个文件系统附加到另一个文件系统的某个目录上的过程。主要有以下几个原因:

  1. 统一命名空间:通过挂载,不同的文件系统可以被整合到一个统一的命名空间中。用户可以通过根目录下的路径访问不同文件系统中的文件,而不必关心文件实际存储在哪个物理设备上。
  2. 资源管理:挂载点可以用来管理不同的存储资源。例如,可以将不同的硬盘分区、网络文件系统、临时文件系统等挂载到不同的目录下,便于管理和访问。
  3. 灵活性:挂载提供了极大的灵活性。用户可以根据需要动态地挂载和卸载文件系统,而不需要重新启动系统。这对于临时访问外部存储设备(如 USB 驱动器、网络共享)非常有用。
  4. 隔离和安全:通过挂载,可以将不同的文件系统隔离,限制某些用户的访问权限。例如,可以将敏感数据存储在一个单独的文件系统中,并仅允许特定用户访问。
  5. 性能优化:不同的文件系统可能具有不同的性能特征。通过挂载,可以选择最适合特定工作负载的文件系统。例如,可以将频繁访问的数据存储在高性能的 SSD 文件系统中,而将不经常访问的数据存储在低成本的 HDD 文件系统中。

实际例子

  1. 多分区挂载:在 Linux 系统中,根文件系统(/)通常是一个分区,而其他分区(如 /home、/var、/tmp)可以分别挂载到不同的目录下。这样可以更好地管理和优化存储资源。
  2. 网络文件系统挂载:将 NFS(Network File System)或 SMB(Server Message Block)共享挂载到本地文件系统中,使用户可以像访问本地文件一样访问网络文件。
  3. 临时文件系统挂载:将 tmpfs(临时文件系统)挂载到 /tmp 目录下,提供一个高性能的内存文件系统,用于存储临时文件。

一. Fuse

https://www.usenix.org/system/files/conference/fast17/fast17-vangoor.pdf

简单而言,fuse实现了一个对文件系统访问的回调。fuse分为内核态的模块和用户态的库两部分。其中用户态的库为程序开发提供接口,也是我们实际开发时用的接口,我们通过这些接口将请求处理功能注册到fuse中。内核态模块是具体的数据流程的功能实现,它截获文件的访问请求,然后调用用户态注册的函数进行处理。

1. 工作流程 

如图所示,其中./fuse_user是开发的用户态的文件系统程序,该程序启动的时候会将自己开发的接口注册到FUSE(架构图中的FUSE driver)中,比如读写文件的接口,遍历目录的接口等等。
同时,通过该程序在系统某个路径挂载fuse文件系统,比如/tmp/file_on_fuse_fs。此时如果在该目录中有相关操作时,请求会经过VFS到fuse的内核模块(上图中的步骤1),fuse内核模块根据请求类型,调用用户态应用注册的函数(上图中步骤2),然后将处理结果通过VFS返回给系统调用(步骤3)。

2. 一些可参考的学习demoWriting file systems in Go with FUSE | Gopher Academy Blogicon-default.png?t=O83Ahttps://blog.gopheracademy.com/advent-2014/fuse-zipfs/

奇伢云存储 的个人主页 - 文章 - 掘金icon-default.png?t=O83Ahttps://juejin.cn/user/3544481221322237/posts

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

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

相关文章

品牌怎么找到用户发的优质内容,进行加热、复制?

在,相对传统媒体来说,社交媒体营销具有更高的成本效益。品牌可以通过相对较低的成本达到大量潜在客户,尤其是通过口碑营销和内容分享,可以实现倍增的传播效果。在社媒营销的过程中,去找到与品牌有关的优质、正向内容&a…

梁山派入门指南3——串口使用详解,包括串口发送数据、重定向、中断接收不定长数据、DMA+串口接收不定长数据,以及对应的bsp文件和使用示例

梁山派入门指南3——串口使用详解,包括串口发送数据、重定向、中断接收不定长数据、DMA串口接收不定长数据,以及对应的bsp文件和使用示例 1. 串口发送数据1.1 串口简介1.2 梁山派上的串口开发1.3 bsp_uart文件(只发送不接收,兼容串…

notepad++ compare插件的离线下载和安装

一、离线安装 去改地址找到最新的插件:https://github.com/notepad-plus-plus/nppPluginList/blob/master/doc/plugin_list_x64.md下载之后复制到插件文件夹,插件文件夹的打开方式如下 注意目录: 二、问题汇总 (1&#xff09…

你的网站需要防护吗?

你的网站经常被恶意爬虫,重要数据被批量搬运吗? 你想知道你的网站是不是安全的,有没有被 xss攻击、sql注入、命令注入等等这些乱七八糟的攻击手段攻击吗? 2014年我还是学生的时候,负责学院官网的维护,一…

在postman设置请求里带动态token,看看这两种方法!

问题描述 在使用postman调试接口时,遇到一些需要在请求里加上token的接口,若token出现变化,需要手动修改接口的token值,带来重复的工作量,翻看postman使用手册后,我发现了两种方法可以解决这个问题。 01 …

商家如何在高德地图上申请店铺入驻?

在当今数字化时代,互联网成为了消费者寻找商品和服务的主要渠道。高德地图作为国内领先的地图导航软件,不仅拥有庞大的用户基础,还为商家提供了优质的店铺展示平台。因此,对于实体店商家而言,入驻高德地图是提升店铺曝…

Java并发常见面试题总结(下)

Map(重要) HashMap 和 Hashtable 的区别 线程是否安全: HashMap 是非线程安全的,Hashtable 是线程安全的,因为 Hashtable 内部的方法基本都经过synchronized 修饰。(如果你要保证线程安全的话就使用 ConcurrentHashMa…

数字化导师坚鹏:2025年银行开门红营销规划、方法及案例工作坊

2025年银行开门红营销规划、方法及案例工作坊 ——数字化赋能 新策略启航 开门红必胜 课程背景: 面对即将打响的开门红战役,很多银行存在以下问题: 不知道如何分析银行开门红面临形势及机遇? 不知道如何制定科学高效的开…

普通的Java程序员,需要深究源码吗?

作为Java开发者,面试肯定被问过多线程。对于它,大多数好兄弟面试前都是看看八股文背背面试题以为就OK了;殊不知现在的面试官都是针对一个点往深了问,你要是不懂其中原理,面试就挂了。可能你知道什么是进程什么是线程&a…

ctfshow——web(总结持续更新)

文章目录 1、基础知识部分2、php伪协议2.1 php://input协议2.2 data://text/plain协议 3、webshell连接工具3.1 蚁剑连接一句话木马 4、各个web中间件重要文件路径4.1 Nginx 5、sqlmap使用6、php特性6.1 md5加密漏洞 7、TOP 10漏洞7.1 SQL注入 1、基础知识部分 识别base64编码…

MYSQL---TEST5(Trigger触发器综合练习)

触发器Trigger 数据库mydb16_trigger创建 表的创建 goods create table goods( gid char(8) primary key, #商品号 name varchar(10), #商品名 price decimal(8,2), #价格 num int;) #数量orders create tabl…

layui 自定义验证单选框必填

对于输入框类型必填验证,只需要在 input 输入框加入 lay-verify "required" 即可。但对于单选按钮这种特殊的该怎么办呢?layui 为我们提供了自定义验证。 1. 在单选按钮上添加自定义验证的名称 2. 验证规则如下 // 单选框自定义验证form.ve…

OpenCV开发笔记(八十二):两图拼接使用渐进色蒙版场景过渡缝隙

若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/143432922 长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV…

「C/C++」C/C++标准库 之 #include<ctime> 时间日期库

✨博客主页何曾参静谧的博客📌文章专栏「C/C」C/C程序设计📚全部专栏「VS」Visual Studio「C/C」C/C程序设计「UG/NX」BlockUI集合「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「PK」Parasoli…

安达发|零部件APS车间排程系统销售预测的优点

2024制造业面临着前所未有的挑战与机遇。为了保持竞争力,企业必须确保其生产系统能够高效、灵活地运作。在这方面,采用高级计划与排程系统,特别是零部件APS车间排程系统的预测方法,已成为提升生产效率和响应能力的关键策略。这种系…

【笔试刷题】笔记4

目录 1、过河卒 dfs bfs 动态规划 2、扑克牌顺子 排序 模拟 找规律 3、最长回文子串 中心拓展法 1、过河卒 5493. 过河卒 - AcWing题库 这道题我们很容易就能够想到dfs或bfs&#xff0c;但这两种算法都是会超时的 dfs #include <iostream> #include <v…

大模型中的token是什么;常见大语言模型的 token 情况

目录 大模型中的token是什么 常见大语言模型的 token 情况 大模型中的token是什么 定义 在大模型中,token 是文本处理的基本单位。它可以是一个字、一个词,或者是其他被模型定义的语言单元。简单来说,模型在理解和生成文本时,不是以完整的句子或段落为单位进行一次性处理…

kafka里的consumer 是推还是拉?

大家好&#xff0c;我是锋哥。今天分享关于【kafka里的consumer 是推还是拉&#xff1f;】面试题&#xff1f;希望对大家有帮助&#xff1b; kafka里的consumer 是推还是拉&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在Kafka中&#xff0c;消费者&…

少儿编程培训市场突破500亿元:教育新蓝海的崛起与未来展望

近年来&#xff0c;随着科技的迅速发展和家长对教育方式的重视&#xff0c;少儿编程市场成为一片新的蓝海。据最新市场调研报告显示&#xff0c;2024年中国少儿编程培训市场规模已突破500亿元&#xff0c;预计未来五年将持续增长。这一趋势反映了少儿编程教育的迅速崛起&#x…

【如何使用api接入星火大模型】(超详细,亲测有效!)

1 实现思路&#xff1a; 1.鉴权说明: 先在控制台创建应用&#xff0c;利用应用中提供的appid&#xff0c;APIKey&#xff0c; APISecret进行鉴权&#xff0c;生成最终请求的鉴权url。1.2 鉴权参数 host&#xff08;请求主机&#xff09;、date&#xff08;当前时间戳&#xff0…