磁盘文件系统

文件分为被打开的文件和没有打开的文件

被打开的文件是放在内存里的

未打开的文件是放在磁盘里的

打开文件的前提是找到文件

找到文件则需要文件的路径

每一个文件都有其对应的路径

路径就是由磁盘文件系统进行管理的

磁道构成柱面,柱面构成磁盘

本质上是一个三维数组

磁盘就是一个以扇区为单位的一维数组

数组的下标就是每一个扇区的LBA地址

OS使用磁盘,就可以用一个数字访问磁盘扇区

OS和磁盘进行IO时,以扇区为基本单位,512字节,单次IO的数据量少

文件 = 内容 + 属性

属性也是数据,保存在结构体inode中

一个文件就有一个inode

inode值不重复

Linux中的文件内容和属性分开存储

磁盘是这样的

最后会划分成一个个block group

所以只要管理好一个个block group就可以了

文件系统里,以4kb来划分块

inode会保存和数据块之间的映射关系

找到inode后就能找到块

inode bitmap记录了data block中哪个数据块被占用了

新建一个文件

需要先分配inode

要分配inode,需要去inode bitmap上去查找一个没有被使用的数据块

然后将文件属性写入数据块

删除文件本质上是将文件对应的inode bitmap和block bitmap中的比特位由1变成0

就代表这个文件已经被删除了

被删除的文件是可以恢复的,只要拿到被删除文件的inode,然后将它的inode bitmap和block bitmap的比特位由0变成1,就可以了

当然前提是文件没有被覆盖成别的

但是要恢复还是很麻烦

在Linux中删除文件,本质是设置inode和block无效

后续很可能就会被占用

因此被删除的文件最好直接别动

ex2文件系统会根据分区的大小划为分数个block group

每个block group都由相同的结构组成

super block用来记录block和inode的总量,未使用的block和inode的数量

一个block和inode的大小等数据

super block记录分区block和inode的信息

因此不是所有的分组中都有super block

每几百组就会有一个super block

这些super block中的内容是相同的

文件系统

对于一个分区,它的每一个分组所对应的inode号的个数,block个数都是固定的

可能存在inode全部用完,但是block还没有用完的情况

关于inode

inode是以分区为单位的一套inode

inode在分配的时候,只需要确定起始的inode即可

关于block

块号也是统一编号的,也是一套

每一个组里也只需要确认block起始块号即可

inode的block数组分为12个直接映射和3个间接索引

block数组下标中的前12位是直接映射,里面就是文件的内容

剩下的三个则分别指向别的块

剩下三个间接索引指向的块不存文件的数据,存储其他的块号

存储的块号存储文件的内容

文件的大小是有限的

如何理解目录文件

目录 = inode + datablock = 属性 + 内容

因此目录也有对应的数据块

目录的数据块存储的是:文件名和inode的映射关系

要找到文件名,首先要打开当前目录

而当前目录也是文件,也有文件名

因此需要进行逆向的路径解析

如果要访问相同路径下的不同文件

本质还是重新从根目录进行路径解析

但是这样效率太低了

因此Linux系统要对路径进行缓存,来减少重复路径解析的消耗

Linux会以多叉树的形式进行路径缓存

在Linux中如果存在多个分区

一定存在一个分区包含根目录

同时存在若干个普通目录

若只有分区,该分区是无法使用的

分区必须挂载到目录上,分区才能够被通过路径的方式进行访问

dd命令

是以二进制的形式在磁盘中形成文件

相关推荐
川石课堂软件测试13 分钟前
安全测试|常见SQL注入攻击方式、实例及预防
服务器·数据库·sql·功能测试·测试工具·安全·单元测试
笃行35033 分钟前
国产化落地避坑 · 干货向|迁移后那条「测试能过、一上生产就查空」的 SQL,多半栽在 WHERE 函数顺序上
数据库
m0_7156467636 分钟前
20260720
linux·arm
寒晓星1 小时前
[linux]线程及多线程
linux·运维
辰痕~1 小时前
物理机装Linux操作系统(Ubuntu为例)
linux·ubuntu
蓝田~1 小时前
MySQL慢查询怎么优化?B+Tree索引原理+MVCC读不阻塞写+EXPLAIN执行计划,从5秒到0.05秒
数据库·mysql
慧一居士1 小时前
Linux如何设置固定的静态ip
运维
sunxunyong2 小时前
doris用户资源组配置
数据库
Cloud云卷云舒2 小时前
云卷云舒:HaishanDB的AI原生能力主要应用场景
数据库·人工智能·ai-native·haishandb·移动云长期记忆
时间的拾荒人2 小时前
MySQL 视图详解
android·数据库·mysql