前言
在 Linux 世界中,Ext 系列文件系统是存储基石,而 Ext2 作为该系列的经典代表,其设计思想直接影响了后续的 Ext3、Ext4 版本。文件的属性和内容是如何分离存储的?'块'和'inode'到底是什么角色?Ext2 如何通过'块组'实现高效的磁盘管理?今天这篇文章,我们就从基础概念出发,一步步揭开 Ext2 文件系统的神秘面纱。
一、文件系统的三大核心基础概念
在深入 Ext2 文件系统之前,我们必须先搞懂三个核心基础概念——块(Block)、分区(Partition)、inode(索引节点)。这三个概念是理解 Ext2 架构的前提。
1.1 块(Block):文件存储的'最小单元'
我们知道,磁盘的最小物理存储单位是扇区(Sector),每个扇区固定为 512 字节。但如果操作系统每次都以扇区为单位读写数据,效率会非常低下。为了解决这个问题,文件系统引入了块(Block)的概念:将多个连续的扇区'打包'成一个更大的存储单元,这个单元就是块。块是文件系统中文件存取的最小单位,其大小在格式化时确定,常见的块大小为 4KB(即 8 个连续扇区)。
1.1.1 块的核心特性
- 大小固定:格式化时指定(如 1KB、2KB、4KB、8KB),4KB 是最常用的选择;
- 连续扇区组成:一个块由多个连续的扇区构成,例如 4KB 块 = 8 × 512 字节扇区;
- 地址可计算:每个块都有唯一的块号,块号与扇区的 LBA 地址可以相互转换;
- 读写原子性:文件系统对块的读写是原子操作,保证数据一致性。
1.1.2 实战:查看文件的块信息
在 Linux 系统中,我们可以通过 stat 命令查看文件的块相关信息。
stat main.c
关键信息解读:
Size: 488:文件实际大小为 488 字节;Blocks: 8:文件占用 8 个'磁盘块'(这里的'Blocks'是指文件系统的块,每个块 4KB,8 个块实际占用 32KB 空间);IO Block: 4096:文件系统的块大小为 4096 字节(4KB)。
为什么 488 字节的文件会占用 8 个块?因为文件系统是以块为单位分配存储空间的,即使文件大小不足一个块,也会占用一整个块(这就是'内部碎片'的来源)。
1.2 分区(Partition):磁盘的'逻辑割据'
一块物理磁盘的容量可能很大,如果将所有数据都存储在一个'大空间'里,会导致文件系统管理混乱。为了解决这个问题,我们引入了**分区(Partition)**的概念:将物理磁盘划分为多个独立的'逻辑区域',每个分区可以单独格式化、单独管理。
1.2.1 分区的核心特性
- 最小单位是柱面:分区的划分以'柱面(Cylinder)'为最小单位;
- 独立文件系统:每个分区可以格式化不同的文件系统(如 Ext2、Ext4、NTFS、FAT32),互不影响;
- 隔离性:一个分区的文件系统损坏,不会影响其他分区的数据;
- 容量可计算:分区的容量 = (结束柱面号 - 起始柱面号 + 1)× 每个柱面的扇区数 × 每扇区字节数。
1.2.2 分区与块的关系
分区是块的'上层容器':一个分区被格式化后,会被划分为多个连续的块,块的编号在分区内从 0 开始递增,不同分区的块编号相互独立。
1.2.3 实战:查看磁盘分区信息
在 Linux 系统中,fdisk 命令是查看磁盘分区信息的常用工具:
fdisk -l
命令输出示例:


