Ext文件系统深度解析:从inode到磁盘布局
#深入理解 Linux Ext 系列文件系统从磁盘物理结构到 inode 映射摘要本文基于 Linux 内核经典的 Ext2/3/4 文件系统文档深入浅出地讲解了磁盘的物理与逻辑结构、CHS 与 LBA 寻址方式的演变、分区与块的概念并重点剖析了 inode、超级块、块组描述符等核心数据结构。通过本文你将彻底明白“文件”在硬盘上究竟是如何存储和管理的。一、硬件基石理解磁盘的物理与逻辑世界在操作系统能够管理文件之前我们必须先理解数据到底存在哪里。机械硬盘HDD作为计算机中唯一的机械设备其工作原理决定了文件系统的底层设计。1.1 磁盘的物理结构三维的存储空间机械磁盘由多个盘片Platter组成每个盘片上下两面各有一个磁头Head。数据存储在盘片的同心圆轨道上称为磁道Track。所有盘片上半径相同的磁道组合在一起构成了柱面Cylinder。而每个磁道又被划分为若干个扇区Sector这是磁盘读写的最小物理单位通常为512 字节。定位一个扇区需要三个坐标C (Cylinder)柱面号H (Head)磁头号S (Sector)扇区号这就是著名的CHS 寻址方式。早期的 BIOS 使用 8bit 存磁头、10bit 存柱面、6bit 存扇区导致 CHS 模式最大仅支持约 8GB 的硬盘容量这在今天显然不够用。1.2 逻辑结构的进化LBA 线性地址为了突破容量限制并简化操作系统的开发现代磁盘引入了LBA (Logical Block Address)逻辑块地址。概念转化想象把磁盘所有的扇区像磁带一样“拉直”形成一个巨大的一维数组。每个扇区都有一个唯一的下标从 0 开始编号这就是 LBA。转换机制操作系统只需关心 LBA例如“我要读第 1000 号扇区”具体的 CHS 转换由磁盘内部的固件伺服系统自动完成。计算公式$LBA C \times (H_{total} \times S_{track}) H \times S_{track} (S - 1)$*其中 $S$ 通常从 1 开始而 LBA 从 0 开始。 博客小贴士对于开发者而言从此以后可以将磁盘视为一个巨大的char[]数组LBA 就是数组下标。这种抽象极大地降低了文件系统开发的复杂度。二、文件系统的引入块、分区与 inode有了磁盘操作系统如何高效地存取数据直接按扇区读写效率太低因此引入了更高级的抽象概念。2.1 块Block文件系统的最小单位操作系统不会一次只读512 字节而是一次性读取连续的多个扇区这个集合称为块Block。大小通常在格式化时确定最常见为4KB即 8 个扇区。意义块是文件存取的最小单位。即使一个文件只有 1 字节它也会占用整整一个块4KB剩余空间被浪费内部碎片。2.2 分区Partition逻辑隔离一块物理磁盘可以被划分为多个逻辑区域即分区如 Windows 的 C 盘、D 盘Linux 的/dev/sda1。本质分区本质上是规定了起始柱面和结束柱面的范围。独立性每个分区可以格式化为不同的文件系统拥有独立的超级块和管理结构。2.3 核心革命inode索引节点在 Linux 中文件 内容 属性。内容存储在数据块Data Block中。属性包括权限、所有者、大小、时间戳等元数据。这些属性存储在哪里inode。关键知识点分离存储文件名并不存储在 inode 中文件名存储在目录的数据块里目录项将“文件名”映射到inode 号”。唯一标识在一个分区内每个文件对应唯一的 inode 号。固定大小无论文件多大其 inode 结构体大小是固定的Ext2 中通常为 128 字节。// 简化的 inode 结构示意 struct ext2_inode { __le16 i_mode; // 文件类型和权限 __le32 i_size; // 文件大小 __le32 i_block[15];// 指向数据块的指针数组核心 // ... 其他时间、用户 ID 等信息 };三、Ext2 文件系统架构详解Ext2及其后继者 Ext3/Ext4是 Linux 最经典的文件系统。它将分区划分为若干个结构相同的块组Block Group这种设计既提高了性能又增强了容错性。###3.1 宏观布局一个典型的 Ext2 分区布局如下Boot Block启动块1KB存放引导信息文件系统不可修改。Block Groups随后是若干个块组每个块组结构完全一致。3.2 块组内部构成五脏俱全每个块组都包含以下关键部分它们协同工作来管理数据组件名称作用Super Block超级块文件系统的总指挥。记录整个分区的总块数、总 inode 数、空闲数量、块大小等全局信息。为了防止损坏它在多个块组中都有备份。GDT块组描述符表块组的身份证。描述当前块组的局部信息本组的 inode 表从哪里开始数据块从哪里开始还有多少空闲块Block Bitmap块位图数据块的地图。每一位bit代表一个数据块0 表示空闲1 表示已占用。Inode Bitmapinode 位图inode 的地图。每一位代表一个 inode标记其是否可用。Inode Tableinode 表属性的仓库。连续存放该组内所有文件的 inode 结构体。Data Blocks数据区内容的家园。实际存储文件内容和目录列表的地方。3.3 文件数据的查找过程路径解析当你在终端输入cat /home/user/test.txt时内核发生了什么路径解析从根目录/的 inode 开始读取其数据块找到home目录对应的 inode 号。逐级跳转进入home目录的 inode读取数据块找到user目录的 inode 号再进入user找到test.txt的inode 号假设是 263715。定位 inode根据 inode 号计算出它位于哪个块组的 inode 表中将其读入内存。获取数据块指针查看 inode 结构中的i_block[15]数组。前 12 个指针直接指向数据块适合小文件。第 13 个指针一级间接索引指向一个存有块号的块。第 14 个指针二级间接索引。第 15 个指针三级间接索引支持超大文件。读取数据根据指针找到对应的 Data Block读出文件内容。四、深度思考与总结为什么 Ext 系列要设计成“块组”结构局部性原理将 inode 表、位图和数据块放在同一个块组内可以减少磁头移动距离寻道时间提高读写效率。容错性超级块和块组描述符在每个块组都有备份。如果磁盘某处出现物理坏道破坏了主超级块系统可以利用备份恢复文件系统结构。Ext3/Ext4 做了什么改进虽然本文以 Ext2 为例但 Ext3 和 Ext4 的核心结构inode, block group, bitmap并未改变。Ext3主要增加了**日志Journaling**功能防止断电导致文件系统元数据不一致。Ext4引入了Extent连续块映射替代部分间接索引、延迟分配等技术进一步提升大文件性能和减少碎片。

相关新闻

加拿大电商自发货都用什么快递

加拿大电商自发货都用什么快递

加拿大电商境内自发货的主流快递服务商及对应适配场景如下:一、邮政类服务商 Canada Post(加拿大邮政)‌:基础服务首重1kg约1.5加元,注册小企业会员可享最高32%境内运费折扣,偏远地区附加费极低&#xff0c…

2026/10/11 21:08:51 阅读更多 →
Comskip静态编译避坑指南:解决跨平台部署中的依赖难题

Comskip静态编译避坑指南:解决跨平台部署中的依赖难题

Comskip静态编译避坑指南:解决跨平台部署中的依赖难题 【免费下载链接】Comskip A free commercial detector 项目地址: https://gitcode.com/gh_mirrors/co/Comskip Comskip作为一款免费的商业广告检测器,在跨平台部署时常常面临动态链接库依赖的…

2026/10/7 12:12:37 阅读更多 →
Windows 9x现代硬件兼容性终极修复方案:patcher9x工具深度解析

Windows 9x现代硬件兼容性终极修复方案:patcher9x工具深度解析

Windows 9x现代硬件兼容性终极修复方案:patcher9x工具深度解析 【免费下载链接】patcher9x Patch for Windows 9x to fix CPU issues 项目地址: https://gitcode.com/gh_mirrors/pa/patcher9x 在数字怀旧与技术传承的浪潮中,运行Windows 95、98和…

2026/10/12 7:12:55 阅读更多 →

最新新闻

lancet retry 包全解析:Go 重试机制、退避策略与 Context 取消控制的完整实战指南

lancet retry 包全解析:Go 重试机制、退避策略与 Context 取消控制的完整实战指南

开发工具 【免费下载链接】lancet A comprehensive, efficient, and reusable util function library of Go. 项目地址: https://gitcode.com/gh_mirrors/la/lancet 点击查看 免费下载 导读 本文围绕 lancet 工具库中的 retry 包展开,系统讲解其"…

2026/10/13 6:25:46 阅读更多 →
∮150摆线针轮减速机装配图详解:原理、装配与故障排查

∮150摆线针轮减速机装配图详解:原理、装配与故障排查

这份图纸看着零件不多,真正动手却能卡住不少人。∮150摆线针轮减速机,在中小型自动化设备、输送线、搅拌机、皮带驱动这类场景里出现频率相当高,车间里几乎天天能见到。会看装配图和会装摆线减速机是两码事:装配图里每个零件都画得…

2026/10/13 6:25:46 阅读更多 →
AI论文工具测评:继续教育学员从选题到答辩的实战攻略

AI论文工具测评:继续教育学员从选题到答辩的实战攻略

要说2026年继续教育学员最头疼的事,论文绝对排前三。我在职场和培训圈里泡了十几年,每年都能看到一批人卡在开题、文献综述和查重这三道坎上。尤其继续教育学员,平时上班、带娃、考证已经掏空了精力,真到提笔写论文的时候&#xf…

2026/10/13 6:25:46 阅读更多 →
MACE 问题反馈指南:从 Issue 提交规范到系统化排障实践

MACE 问题反馈指南:从 Issue 提交规范到系统化排障实践

推理引擎深度学习 【免费下载链接】mace MACE is a deep learning inference framework optimized for mobile heterogeneous computing platforms. 项目地址: https://gitcode.com/gh_mirrors/ma/mace 点击查看 免费下载 MACE(Mobile AI Compute Engin…

2026/10/13 6:25:46 阅读更多 →
GB/T4857.10标准解析:振动测试保障物流运输安全

GB/T4857.10标准解析:振动测试保障物流运输安全

1. GB/T4857.10标准概述:物流运输安全的守护者网购商品破损、精密设备运输故障、易碎品中途碎裂——这些常见问题背后,往往隐藏着一个被忽视的关键因素:运输过程中的振动冲击。GB/T4857.10《包装运输包装件基本试验 第10部分:正弦…

2026/10/13 6:25:46 阅读更多 →
Kettle 6.0 ETL实战:转换、作业、增量同步与调度全解析

Kettle 6.0 ETL实战:转换、作业、增量同步与调度全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 6:24:46 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →