什么是 inode?
在 Linux 和 Unix 类操作系统中,inode(index node,索引节点)是文件系统中用于存储文件元数据的数据结构。 每个文件(包括目录)都有一个唯一的 inode 编号,它记录了除文件名和实际数据内容以外的所有信息。
inode 包含哪些信息?
- 文件类型(普通文件、目录、设备等)
- 文件权限(读、写、执行)
- 所有者(User ID)和所属组(Group ID)
- 文件大小(以字节为单位)
- 时间戳(创建时间、修改时间、访问时间)
- 指向数据块的指针(即文件内容的实际存储位置)
- 硬链接计数
注意:文件名并不存储在 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 编号,查看模拟信息: