Linux之文件系统

我们之前谈到的文件描述符fd,是与被加载到内存中的文件相关的,那么还有什么文件呢?磁盘文件

内存文件  ------  断电失效

磁盘文件  ------  不受断电的影响

磁盘存储器存、取信息的最基本单位是扇区。
—个扇区能存储512Bytes的数据,OS与磁盘交互的单位是4KB。

为什么不以512Bytes为单位呢?----太小,导致多次IO,效率降低   ----太大,可能会导致供大于需。

----相同的话,万一磁盘的基本单位变化了,OS也需要变,意味着磁盘与OS的耦合度增大。

磁盘结构:

  1. 表面(Head):磁盘的表面由磁性物质组成,用于记录二进制数据。磁盘表面被划分成一个个磁道,每个磁道又被划分为一个个扇区,每个扇区就是一个“磁盘块”。
  2. 磁道与柱面(Cylinder):磁道是磁盘表面上的同心圆,每个磁盘有两个面,每个面都有一个磁头。所有盘面中相对位置相同的磁道组成了柱面。
  3. 扇区(Sector):每个磁道被划分为多个扇区,每个扇区的数据量相同。靠最内侧的磁道上的扇区面积最小,因此其数据密度最大。

  4. 磁头:磁头用于读写数据,需要借助磁头移动到想要读/写的扇区所在的磁道。磁盘会转动,让目标扇区从磁头下面划过,才能完成对扇区的读/写操作。

如何对磁盘上的文件进行管理呢? 将磁盘的结构抽象成一个 很长很长 的数组。

即定位地址的方式由CHS(Cylinder Head Sector),转变成了LBA(Logical Block Array)。

我们发现,之前我们使用 ls -l -i 或者  stat + 文件名  的时候,发现有一列数字(Inode),Inode是什么呢?要想知道Inode,我们先来了解一下文件系统。

对“大数组”的管理,必须做好对数组的每一小块的管理。

上图为磁盘文件系统图,磁盘是典型的块设备,硬盘分区被划分为一个个的block 。一个 block 的大小是由格式化的时候确定的,并且不可以更改。
Block Group: ext2 文件系统会根据分区的大小划分为数个 Block Group 。而每个 Block Group 都有着相同的结构组成。
超级块(Super Block) :存放文件系统本身的结构信息。记录的信息主要有: bolck inode 的总量,未使用的block inode 的数量,一个 block inode 的大小,最近一次挂载的时间,最近一次写入数据的时间,最近一次检验磁盘的时间等其他文件系统的相关信息。Super Block 的信息被破坏,可以说整个文件系统结构就被破坏了
Group Descriptor Table(GDT): 块组描述符,描述块组属性信息,有兴趣的同学可以在了解一下块位图(Block Bitmap ): Block Bitmap 中记录着 Data Block 中哪个数据块已经被占用,哪个数据块没有被占用
Block Bitmap :和Data blocks是一 一对应的,比特位为1代表该block被占用,为0表示空闲。
inode位图(inode Bitmap): 每个 bit 表示一个 inode 是否空闲可用。
i节点表(inode Table): 存放文件属性 如 文件大小,所有者,最近修改时间等
数据区(Data blocks): 存放文件内容

文件名  和  Inode 是一 一对应的,目录也是文件,目录中的文件名  和  Inode 就存在该目录对应的Data blocks中,文件名  和  Inode 是互为Key的!!!

我们发现,一个Block group并不是很大,对于那些几十甚至几百G的文件,该怎么存放呢?

可以将其他Block group的索引信息填写到当前 Block group中的 Data blocks中,这样,就形成了如下的多叉树的结构,显然一定能存的下!!!

创建文件,文件名   和   Inode 就被存放到当前目录对应的Data blocks中。

删除文件, 只需将Block Bitmap  和  inode Bitmap当中对应的比特位由1置为0即可,不需要修改Data blocks中的内容。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CSS及javascript

一、CSS简介 css是一门语言&#xff0c;用于控制网页的表现。 cascading style sheet:层叠样式表 二、css的导入方式 css代码与html代码的结合方式 &#xff08;1&#xff09;css导入html有三种方式&#xff1a; 1.内联样式&#xff1a;<div style"color:red&quo…

视频素材免费哪个好?7个视频素材下载网站推荐

小伙帮们准备做视频的时候才发现&#xff0c;哎呀&#xff0c;高清视频素材哪里找啊&#xff1f;不用急&#xff0c;这次我们依旧从中国的宝藏网站开始&#xff0c;然后穿越全球&#xff0c;发现更多精彩的无水印视频素材网站 1&#xff0c;蛙学府&#xff08;中国&#xff09…

URL编码:原理、应用与安全性

title: URL编码&#xff1a;原理、应用与安全性 date: 2024/3/29 18:32:42 updated: 2024/3/29 18:32:42 tags: URL编码百分号编码特殊字符处理网络安全应用场景标准演变未来发展 在网络世界中&#xff0c;URL&#xff08;统一资源定位符&#xff09;是我们访问网页、发送请求…

【ENSP】交换机和路由器之间实现静态路由

1.概念 三层交换机只能在Vlanif逻辑口配置iP地址 路由器的每一个端口都是另外一个网段 2.实现方法 交换机允许对应vlan通行&#xff0c;配置vlanif的ip地址&#xff0c;做静态路由 路由器&#xff0c;进接口配置对应的ip&#xff0c;路由器和交换机相连的口&#xff0c;进入他的…

Unity AI Navigation自动寻路

目录 前言一、Unity中AI Navigation是什么&#xff1f;二、使用步骤1.安装AI Navigation2.创建模型和材质3.编写向目标移动的脚本4.NavMeshLink桥接组件5.NavMeshObstacle组件6.NavMeshModifler组件 三、效果总结 前言 Unity是一款强大的游戏开发引擎&#xff0c;而人工智能&a…

基于 FFmpeg 和 SDL 的音视频同步播放器

基于 FFmpeg 和 SDL 的音视频同步播放器 基于 FFmpeg 和 SDL 的音视频同步播放器前置知识音视频同步简介复习DTS、PTS和时间基 程序框架主线程解复用线程音频解码播放线程视频解码播放线程 音视频同步逻辑源程序结果工程文件下载参考链接 基于 FFmpeg 和 SDL 的音视频同步播放器…

Python 多线程同步锁实战

大家好&#xff0c;今天我们要聊聊Python中的多线程世界&#xff0c;你知道吗&#xff1f;在并行处理任务时&#xff0c;多线程就像厨房里的大厨们同时烹饪多个菜品&#xff0c;但得保证每道菜都能完美出锅。这就需要我们引入一个神秘的角色——同步锁&#xff08;Lock&#xf…

win10配置CLion2022+ubuntu20.04远程部署

背景 在博文ubunut搭建aarch64 cuda交叉编译环境记录中&#xff0c;使用的ubuntu20.04虚拟机安装eclipse来交叉编译aarch64的程序&#xff0c;然后发送到jetson板子上执行。开发一段时间后发现eclipse IDE使用起来不太便捷&#xff0c;因此&#xff0c;考虑使用CLion IDE&…

设计模式-设配器模式

目录 &#x1f38a;1.适配器模式介绍 &#x1f383;2.适配器类型 &#x1f38f;3.接口适配器 &#x1f390;4.类的适配器 &#x1f38e;5.优缺点 1.适配器模式介绍 适配器模式&#xff08;Adapter Pattern&#xff09;是作为两个不兼容的接口之间的桥梁。这种类型的设…

Kibana操作Elasticsearch教程

文章目录 简介ES文档操作创建索引查看索引创建映射字段查看映射关系字段属性详解typeindexstore 字段映射设置流程 新增数据新增会随机生成id新增自定义id智能判断 修改数据删除数据查询基本查询查询所有&#xff08;match_all&#xff09;匹配查询多字段查询词条匹配多词条精确…

Android 开发 OCR Tesseract4Android图片文字识别 巨详细全部代码教程

下面是整个详解步骤过程 效果图一、OCR的含义二、前提准备二、使用步骤详情1、将 JitPack 存储库添加到存储库末尾的项目根文件2、将依赖项添加到应用模块文件3、数据文件下载路径4、详情代码案例Demo如下&#xff1a;Main.xmlMain.java 效果图 流程&#xff1a;获取assets中的…

数据分析之POWER Piovt的KPI设置

内容总结&#xff1a; 1.两个表格关联不上&#xff1a;需要添加辅助列&#xff0c;建立关联 2.添加辅助列后还关联不上&#xff1a;将虚线变为实线 3.根据需求要增加一些度量值 4.设置KPI后&#xff0c;绝对值选1后设定百分比 5.在透视表里面加入KPI状态 导入所关联的数据后建立…