什么是 inode?
在 Linux 文件系统中,inode(索引节点)是用于存储文件元数据的数据结构。 每个文件(包括目录)都有一个唯一的 inode 编号,它记录了文件的权限、所有者、大小、时间戳等信息, 但不包含文件名和实际数据内容。
文件名仅存在于目录项中,而目录项将文件名映射到对应的 inode 号。
inode 包含哪些信息?
- 文件类型(普通文件、目录、设备等)
- 文件权限(读、写、执行)
- 文件所有者(UID)和所属组(GID)
- 文件大小(以字节为单位)
- 时间戳(创建时间、修改时间、访问时间)
- 指向数据块的指针(直接、间接、双重间接等)
- 链接计数(硬链接数量)
如何查看 inode 信息?
使用以下常用命令:
# 查看文件的 inode 号
ls -i filename
# 查看详细 inode 信息
stat filename
# 查看文件系统 inode 使用情况
df -i
示例输出(stat example.txt):
File: example.txt
Size: 1024 Blocks: 8 IO Block: 4096 regular file
Device: 802h/2050d Inode: 1234567 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 耗尽而无法创建新文件。 这在大量小文件场景(如邮件服务器、日志系统)中尤为常见。
排查方法:
df -i # 查看 inode 使用率
解决思路:
- 删除无用的小文件或临时文件
- 合并小文件(如日志轮转归档)
- 重新格式化分区并指定更多 inode(需备份数据)
硬链接与软链接的区别
硬链接:多个文件名指向同一个 inode,链接计数增加。删除一个不影响其他。
软链接(符号链接):是一个独立文件,内容是指向目标路径的字符串,拥有自己的 inode。
# 创建硬链接
ln source.txt hardlink.txt
# 创建软链接
ln -s source.txt softlink.txt