Skip to content

文件元数据与索引节点

考情分析

inode 属于文件管理基础知识,在 408 真题中常作为选择题考点出现,考查 inode 的内容、inode 与文件名的关系等。属于 🔥🔥 中高频考点。

文件的属性信息(大小、权限、位置……)总得有地方存,但如果全塞进目录项里,目录检索就会慢得离谱。inode 就是为了解决"元数据放哪儿"这个问题。

文件控制块 FCB

每个文件都有一个文件控制块(File Control Block, FCB),它是文件存在的唯一标志。FCB 中存储了文件的所有管理信息:

字段类别包含信息
基本信息文件名、文件物理位置、文件逻辑结构、文件物理结构
存取控制信息文件所有者、访问权限(读/写/执行)
使用信息创建时间、最后修改时间、最后访问时间、当前使用状态

FCB 的有序集合称为文件目录。一个 FCB 就是一个目录项

索引节点 inode

在 Unix/Linux 文件系统中,为了提高目录检索效率,将 FCB 拆分为两部分:

  • 目录项:仅保存 (文件名, inode 号) 的映射关系
  • 索引节点 inode:保存除文件名外的所有文件元数据。inode 就像房产证——记录了房子的面积、位置、权限等所有信息,但不包含房子里的家具(数据)
c
// inode 的典型结构(简化)
struct inode {
    uint16_t  i_mode;      // 文件类型与权限 (rwxrwxrwx)
    uint16_t  i_uid;       // 文件所有者 ID
    uint32_t  i_size;      // 文件大小(字节)
    uint32_t  i_atime;     // 最后访问时间
    uint32_t  i_mtime;     // 最后修改时间
    uint32_t  i_ctime;     // inode 修改时间
    uint16_t  i_links;     // 硬链接计数
    uint32_t  i_blocks;    // 占用的磁盘块数
    uint32_t  i_direct[12];    // 12 个直接块指针
    uint32_t  i_indirect;      // 一次间接块指针
    uint32_t  i_double_indirect; // 二次间接块指针
    uint32_t  i_triple_indirect; // 三次间接块指针
};

为什么要拆分

一个 FCB 可能占 64 字节甚至更多,而目录项只需 文件名 + inode 号(如 16 字节)。检索目录时只需要读取目录项,大大减少了磁盘 I/O:

方案目录项大小一个磁盘块可存储的目录项数
不使用 inode(完整 FCB)64B4096/64 = 64 个
使用 inode(文件名+inode号)16B4096/16 = 256 个

同样的磁盘块,使用 inode 后可存放的目录项数量翻了 4 倍,目录检索速度大幅提升。

磁盘 inode 与内存 inode

  • 磁盘 inode:存放在磁盘的 inode 区域中,是 inode 的持久化形式
  • 内存 inode:文件被打开时,将磁盘 inode 读入内存,增加一些管理字段

内存 inode 比磁盘 inode 多出的字段:

附加字段说明
inode 编号磁盘上不需要存(由位置隐含),内存中需要显式记录
引用计数当前有多少进程打开了该文件
状态标志inode 是否被修改过(脏位)、是否被锁定
设备号该 inode 所属的文件系统/设备

inode 编号与文件名的关系

一个关键概念:inode 中不包含文件名,文件名保存在目录项中

这意味着:

  • 一个 inode 可以对应多个文件名(硬链接)
  • 删除一个文件名只是删除一个目录项,inode 引用计数减 1
  • 只有当引用计数减为 0 且没有进程打开该文件时,才真正释放 inode 和数据块

这种"一个 inode 多个文件名"的机制,就是硬链接的基础,后面会详细展开。

考研高频考点

  • 🔥🔥🔥 inode 与目录项的拆分思想及其好处(减少目录检索 I/O)
  • 🔥🔥 inode 中包含哪些信息(不包含文件名)
  • 🔥🔥 磁盘 inode 与内存 inode 的区别
  • 🔥 inode 与硬链接的关系(一个 inode 对应多个文件名)
  • 🔥 给定 inode 大小和磁盘块大小,计算一个磁盘块能存多少 inode

知道了文件的元数据怎么组织之后,下一篇来看用户对文件的具体操作——open、read、write 这些系统调用背后发生了什么。

真题练习

相关真题(27题)

2026Q46综合题8分

### (1)三小问拆解

文件基本概念
2025Q28选择题2分

最少页框数:由指令寻址方式决定,需保证一条指令执行不缺页

文件基本概念虚拟文件系统与挂载
2025Q29选择题2分

VFS:提供统一接口访问不同文件系统,不是加速工具

文件基本概念
2025Q31选择题2分

内存映射文件:映射到虚拟地址空间,可用于进程间通信

文件基本概念文件系统全局结构
2025Q32选择题2分

文件系统功能:确定盘块大小是文件系统的功能

文件基本概念
2024Q26选择题2分

银行家算法:判断安全序列个数

文件基本概念外存空闲空间管理
2024Q29选择题2分

缺页处理:如果有空闲页框则不需要淘汰页面

文件基本概念
2023Q31选择题2分

关闭文件:释放内存中的索引节点副本,不删除外存inode

文件基本概念
2022Q45综合题7分

综合题:索引节点的文件系统中目录、inode和多级索引的综合计算

文件基本概念
2021Q30选择题2分

父子进程:各有独立的虚拟地址空间(fork后写时复制)

文件基本概念
2020Q23选择题2分

系统调用是OS提供给应用程序的接口

文件基本概念
2020Q31选择题2分

当前工作目录:使用相对路径加快文件检索速度

文件基本概念
2018Q31选择题2分

文件访问优化:提前读、连续簇、延迟写、磁盘缓存都可加速

文件基本概念
2018Q46综合题8分

### 准备:每个间接块能管多少个簇?

文件基本概念
2017Q26选择题2分

磁盘分配:以簇为单位分配,1026B需要2个簇=2048B

文件基本概念
2017Q30选择题2分

文件权限位:4类用户×5种权限=20位

文件基本概念
2017Q31选择题2分

硬链接:共享inode,不同进程打开有各自的读写指针

文件基本概念
2016Q47综合题9分

综合题:FAT文件系统的目录结构、FAT表和文件访问路径

文件基本概念文件物理结构文件系统全局结构
2015Q29选择题2分

多级索引访问:直接索引访问1块,二级索引访问3块(2级索引+数据)

文件基本概念文件物理结构
2014Q29选择题2分

打开文件:将FCB/inode读入内存,不读文件内容

文件基本概念
2014Q46综合题7分

综合题:连续分配与链接分配方式下文件记录插入操作的对比

文件基本概念文件物理结构
2013Q24选择题2分

文件分配:CD-ROM只读且需随机访问,连续结构性能最好

文件基本概念文件物理结构
2013Q26选择题2分

文件长度决定因素:inode总数与单个文件长度无关

文件基本概念
2012Q46综合题8分

### (1)纯直接索引:算块号位宽 + 最大文件长度

2010Q30选择题2分

SCAN电梯调度:先向增加方向扫描到尽头再折返

文件基本概念文件物理结构
2009Q28选择题2分

最佳适应算法:按分配释放顺序模拟,计算最大空闲分区

文件基本概念文件物理结构
2009Q30选择题2分

多级索引:4×256B+2×64×256B+1×64×64×256B=1057KB

文件基本概念目录管理