磁盘文件系统

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

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

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

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

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

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

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

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

本质上是一个三维数组

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

数组的下标就是每一个扇区的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命令

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

相关推荐
Elastic 中国社区官方博客几秒前
基于 Jina OCR v1 与 Elasticsearch 的 PDF 智能混合检索与 RAG 系统实战指南
大数据·数据库·elasticsearch·搜索引擎·ocr·jina
楚识科技8 分钟前
信创环境下 OCR 部署实践:从麒麟系统到达梦数据库的全栈适配
数据库·ocr
飞浪纪元[FWC–FE]13 分钟前
Qt 构建排错实录:从 MSB 1009 到生成器选型
开发语言·数据库·qt
Paper数据分析-经管学术13 分钟前
1985-2026年中国低空经济专利明细数据库
数据库
RuoyiOffice13 分钟前
SpringBoot3 + openGauss:RuoYi Office 登录、流程发布与用印填报适配实战
java·数据库·spring boot·opengauss·信创
谙弆悕博士16 分钟前
debian快速换源
linux·运维·windows·debian·下载·换源·网络问题
.道阻且长.24 分钟前
Linux基本开发工具:编译器gcc/g++
linux·运维·服务器·职场和发展
画中有画24 分钟前
时序数据库在物联网系统中的应用
数据库·物联网·时序数据库
Industio_触觉智能28 分钟前
瑞芯微RK系列调试工具与量产测试手册-上|串口日志打通与JTAG兜底调试
linux·sdk·jtag·瑞芯微·调试工具·rk3576·量产调试
Decay__7 小时前
05_MySQL 常用 SQL 大全 —— 诊断、管理、优化辅助 SQL 与三大系统库速查
运维·数据库·sql·mysql·架构