当前位置: 首页 > news >正文

Linux文件系统

目录

一、磁盘物理结构与存储原理

机械硬盘的物理构造

1、核心物理部件

2、存储结构划分

3、辅助组件

4、磁盘存储结构

5、如何在多块磁片中,定位到一块扇区呢?

二、磁盘的逻辑存储结构

三.理解文件系统 

1如何管理磁盘

文件系统块组核心结构

1. ‌元数据管理层‌

2. ‌资源状态位图‌

3. ‌块组描述体系‌

inode的理解

查找: 

删除:

关于文件名和文件系统:


一、磁盘物理结构与存储原理

机械硬盘的物理构造

1、核心物理部件

  1. 盘片(Platter)

    • 由铝或玻璃制成,表面覆盖磁性材料用于数据存储13
    • 单个硬盘通常包含多个平行盘片,每个盘片两面均可存储数据26
  2. 磁头(Head)

    • 安装在悬臂(Actuator Arm)末端,负责读写数据15
    • 每个盘面配备独立磁头,通过悬浮在盘片表面极小距离(非接触)进行操作35
  3. 悬臂与主轴

    • 悬臂通过控制器驱动,使磁头在盘片半径方向移动以定位磁道15
    • 主轴带动盘片高速旋转,转速(RPM)直接影响数据访问速度58

2、存储结构划分

  1. 磁道(Track)

    • 盘面上的同心圆环,同一盘片磁道从外向圆心编号13
    • 早期设计内侧磁道密度更高,现代技术(如ZDR)通过外圈扇区数量优化存储利用率4
  2. 扇区(Sector)

    • 磁道的最小存储单元,通常为512字节或4KB大小23
    • 相邻扇区间存在间隙(Inter-Sector Gap),用于物理分隔数据区域3
  3. 柱面(Cylinder)

    • 所有盘片相同半径磁道形成的圆柱体,通过柱面编号实现高效寻址23


3、辅助组件

  • 驱动器控制器‌:控制磁头移动、盘片旋转及数据传输57
  • 缓存(Cache)‌:临时存储频繁访问数据,减少物理读写延迟1

存储容量公式‌:磁头数 × 柱面数 × 每磁道扇区数 × 扇区字节数

每个盘面对应一个磁头。所有的磁头都是连在同一个磁臂上的,因此所有磁头只能“共退”。

所有盘面中相对位置相同的磁道组成柱面。如上图,柱面的存在使得更为方便的找到每一块扇区。

技术演进‌:尽管SSD在消费级市场普及,但企业级存储仍依赖HDD:

  • 成本优势:单位存储成本仅为SSD的1/5-1/3
  • 容量优势:2025年单盘容量可达30TB+
  • 可靠性优势:SSD存在P/E循环寿命限制,HDD更适合高并发场景

磁盘是由很多盘片叠加在一起的。 一个盘片有两个盘面,每个盘面都可以读取数据,每个盘面都有磁头,盘片数=磁头数=盘面数*2

4、磁盘存储结构

存储单元通过三级物理坐标定位67:

  1. 柱面(Cylinder)‌:所有盘面同半径磁道构成的虚拟圆柱
  2. 磁头(Head)‌:指定具体盘面(编号0开始)
  3. 扇区(Sector)‌:磁道的最小存储单元(固定512字节)

5、如何在多块磁片中,定位到一块扇区呢?

 先定位在哪一个磁盘(cylinder),也就是柱面(Track),再定位在哪一个盘面(head),最后定位扇区(sector)。我们可以定位任何一个扇区,也就可以定位任意多个扇区

磁盘中定义一个扇区,采用硬件的方式:CHS定位法。

二、磁盘的逻辑存储结构

上面是过去常见的磁带,磁带的存储就是里面的长长的磁带,而磁盘的存储结构与磁带的存储结构类似,磁盘物理上是一种圆形结构,我们可以理解成线性结构!

映射到磁盘中,可以将其看成一个三维数组

为什么OS要对存储结构做逻辑抽象呢?直接用CHS不可以吗?

  • 便于管理。
  • 不想让代码和硬件强耦合。 

三.理解文件系统 

1如何管理磁盘

我们可以采用分组的方法进行管理

将一个磁盘化为一个个分区,在将分区化为一个个分组,每个分组进行管理

文件=内容+属性,Linux下的内容和属性是分批存储的,但是一个未打开的文件的内容和属性信息都存储在哪里呢?



                        

文件系统块组核心结构

1. ‌元数据管理层

Inode Table(索引节点表)

  • 全量存储块组内所有索引节点资源池
  • 包含已分配(存储文件元数据)与未分配(空闲资源)的inode实体
  • 每个inode通过唯一ID标识,包含文件属性及数据块映射关系

Data Blocks(数据块池)

  • 集中管理块组内所有数据存储单元
  • 存储内容类型:
     常规文件内容(文本/二进制数据流)
     目录结构(文件名-inode映射表)
     扩展属性(ACL、加密信息等)
2. ‌资源状态位图

Inode Bitmap(索引节点位图)

  • 二进制状态映射器,位长度与Inode Table容量严格对应
  • 比特位逻辑:
    1 - 对应序号的inode已被占用
    0 - 对应序号的inode处于空闲状态
  • 实现O(1)时间复杂度快速检索空闲inode

Block Bitmap(数据块位图)

  • 数据块资源分配状态的全景视图
  • 比特位映射规则:
    1 - 对应物理位置的数据块已写入数据
    0 - 对应数据块处于可分配状态
  • 采用位操作加速空间回收与分配
3. ‌块组描述体系

Group Descriptor Table(块组描述符表)

  • 块组级元数据中心仓库,核心字段包含:
    数据块总量/已用量(Block Bitmap维度)
    inode总量/已用量(Inode Bitmap维度)
    块组内关键结构物理偏移量(如位图起始位置)
    块组状态标记(是否包含超级块副本等)

Super Block(超级块)

  • 文件系统全局控制中枢



inode的理解

文件属性存储在Inode中,Inode是固定大小,一个人文件,一个Inode。一个文件的所有属性几乎都存储在Inode中,但是文件名并不存储在Inode中。
文件的内容存储在data  block数据块中,数据块随着应用类型的变化,大小也会发生变化。
关于Inode属性集合

由于每个文件都有Inode,为了区分彼此,每个Inode都有自己的编号。编号是以组为单位进行编的

查找: 

查找一个文件,要通过Inode编号。

  • 通过inode bitmap 查找对应的比特位的位置是1还是0
  • 如果这个编号被占用,在inode Table找到这个Inode,然后确定一下是否是我们要查找的文件。

删除:

只要将这个文件的Inode编号对应的比特位由1置为0就可以了。然后将block bitmap由1置为0就可以了。这里并没有直接删除数据块,所以Linux下删除是可以恢复的。

关于文件名和文件系统:

inode中不存在文件名,只有inode,而计算机中也只要有inode就可以对文件进行操作,而文件名只是方便我们用户使用的,目录文件的内容就是编号和文件名之间的映射关系。记录文件名是目录的事情。

--------------------------------------------------------------------------------------------------------------------------------

本篇讲解到此结束 

http://www.xdnf.cn/news/408727.html

相关文章:

  • C++11新特性(1)
  • Aware和InitializingBean接口以及@Autowired注解失效分析
  • 内存泄漏系列专题分析之十一:高通相机CamX ION/dmabuf内存管理机制Camx ImageBuffer原理
  • 【论信息系统项目的质量管理】
  • 制作一款打飞机游戏45:简单攻击
  • 基于 ABP vNext 框架实现高可用高性能的 Modbus 通信网关
  • 图像识别技术的定义与原理
  • 新手安装java所有工具(jdk、idea,Maven,数据库)
  • 26考研|数学分析:函数列与函数项级数
  • Java MVC架构在当今时代的技术解析
  • UART16550 IP core笔记二
  • 从0到1:Python机器学习实战全攻略(8/10)
  • 小白学习java第18天(下):mybatis
  • SHAP分析!Transformer-GRU组合模型SHAP分析,模型可解释不在发愁!
  • 5倍无损压缩+50 倍速转换HD Video 4K/8K 视频处理
  • 前端项目2-01:个人简介页面
  • 系统架构设计(五):构件
  • 服务器共享文件夹如何实现外网访问
  • [数据结构高阶]并查集初识、手撕、可以解决哪类问题?
  • hdfs-客户端操作-文件上传
  • 记一次redis未授权被种挖矿
  • Linux常见命令
  • GPL v2 许可证深度解析:条款逻辑与合规风险指南(下)
  • Tomcat服务部署
  • pth的模型格式怎么变成SafeTensors了?
  • Matlab 空调温度时延模型的模糊pid控制
  • YOLOv8网络结构
  • 1.10-数据传输格式
  • Java使用POI+反射灵活的控制字段导出Excel
  • MapReduce 的工作原理