☰
Linux 学习笔记(二十二):深入 Ext 文件系统(上)—— 磁盘、块与神秘的 inode
2026/10/24 4:12:01 网站建设 项目流程

一、 磁盘的物理与逻辑结构

机械硬盘是计算机中唯一的机械设备。物理上由盘片、磁道、扇区组成。早期通过 CHS(柱面、磁头、扇区)寻址。
为了简化管理,操作系统将三维的 CHS 地址降维,把整个磁盘当成一个巨大的一维数组,每个元素就是一个扇区(512B),这个数组的下标就是LBA(逻辑块地址)。OS 从此只需用 LBA 编号就能定位任何一个扇区。

二、 为什么要有“块(Block)”?

虽然扇区是物理读写的最小单位(512B),但频繁读写小容量数据会导致效率极低。因此操作系统引入了“块(Block)”的概念,通常是连续的 8 个扇区(即 4KB)。块是文件系统存取数据的最小单位。在stat命令中看到的IO Block: 4096就是它。

三、 文件的解剖:inode 与 Block

Linux 中,文件(File)是由属性和内容组成的,且它们分开存储:

  1. 内容:存放在一个个数据块(Data Block)中。

  2. 属性(元数据):存放在inode(索引节点)中。

inode 的特点:

  • 一个文件对应一个唯一的 inode,有一个唯一的 inode 编号。

  • inode 中记录了文件的大小、权限、所有者、修改时间,以及文件内容占用了哪些 Block。

  • inode 大小是固定的(通常 128 字节或 256 字节)。

  • 文件名不存放在 inode 中,而是存放在目录里。

四、 目录的本质

在 Linux 中,一切皆文件,目录也是文件。

  • 目录的内容不是普通数据,而是“文件名”与“inode 号”的映射表。

  • 访问一个文件,本质上是先找到该目录,在目录的内容里根据文件名匹配到 inode 号,再通过 inode 号找到存储文件内容的 Block。

五、 实战验证

# 查看文件的 inode 编号 ls -i test.txt # 查看文件底层详细信息 stat test.txt # 关注 Inode(节点号)、Size(字节数)和 IO Block(块大小) # 创建硬链接(验证多个名字共享一个 inode) ln test.txt hard_link ls -li test.txt hard_link # 发现二者 inode 号完全一致

总结

Linux 文件系统的核心就是:目录记录文件名与 inode 的映射,inode 记录文件属性与数据块的位置,数据块负责存放真实内容。这种设计极大提高了文件的检索效率。

自我实战操作

实战 1:扒掉文件的伪装,看 inode 和 Block
cd ~/linux_study/io_test # 1. 创建一个小文件 echo "hello" > test.txt # 2. 使用 ls -i 查看它的 inode 号 ls -i test.txt # 3. 使用 stat 命令看它的底细 stat test.txt

👉重点看什么:

  • Size:文件内容的真实字节数(6字节)。

  • Blocks:占用的磁盘块数(通常不管多小,都要占 8 个 512B 的扇区,也就是 4KB)。

  • IO Block:文件系统的块大小(通常 4096)。

  • Inode:它的唯一身份证号。

实战 2:验证目录的内容是“文件名 -> inode”
# 1. 看看当前目录下的文件名和 inode ls -li # 输出类似:1052669 -rw-rw-r-- 1 blog blog ... test.txt # 2. 看看目录自己的 inode ls -di .
实战 3:提前体验一下“硬链接”(引出后面的知识)
# 1. 给 test.txt 创建一个硬链接叫 hard_link ln test.txt hard_link # 2. 看看这俩货的 inode 号 ls -li test.txt hard_link

👉神奇现象:你会发现test.txt和hard_link的inode号一模一样!而且最前面的Links计数变成了 2。

这就证明了,它们本质上是同一个文件,只是有两个不同的名字指向了同一个 inode。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询