索引节点(inode)详解

探索文件系统背后的核心机制

什么是 inode?

在 Linux 和 Unix 类操作系统中,inode(index node,索引节点)是文件系统中用于存储文件元数据的数据结构。 每个文件(包括目录)都有一个唯一的 inode 编号,它记录了除文件名和实际数据内容以外的所有信息。

inode 包含哪些信息?

注意:文件名并不存储在 inode 中,而是保存在目录项(directory entry)中,并与 inode 编号关联。

如何查看 inode 信息?

使用 ls -i 可以显示文件的 inode 编号:

ls -i myfile.txt

使用 stat 命令可查看完整的 inode 信息:

stat myfile.txt

示例输出(简化):


  File: myfile.txt

  Size: 1024       Blocks: 8          IO Block: 4096   regular file

Device: 802h/2050d Inode: 123456     Links: 1

Access: (0644/-rw-r--r--)  Uid: ( 1000/  user)   Gid: ( 1000/  user)

Access: 2026-01-15 10:00:00.000000000 +0800

Modify: 2026-01-15 09:30:00.000000000 +0800

Change: 2026-01-15 09:30:00.000000000 +0800

        

硬链接与软链接的区别

硬链接:多个文件名指向同一个 inode。删除其中一个不会影响文件数据,只有当链接计数归零时,数据才被释放。
软链接(符号链接):是一个独立的文件,其内容是指向另一个文件路径的字符串,拥有自己的 inode。

创建硬链接:ln source target
创建软链接:ln -s source target

常见问题

“磁盘空间未满但无法创建新文件”?

这可能是 inode 耗尽 导致的。即使磁盘还有空间,如果 inode 用完,也无法创建新文件。

检查 inode 使用情况:

df -i

互动小工具

输入一个假想的 inode 编号,查看模拟信息: