什么是 inode?
在 Linux 和类 Unix 系统中,inode(索引节点)是文件系统中用于存储文件元数据的数据结构。 每个文件(包括目录)都有一个唯一的 inode 编号,它不包含文件名,但包含以下信息:
- 文件大小
- 权限(读/写/执行)
- 所有者(用户和组)
- 时间戳(创建、修改、访问)
- 指向文件数据块的指针
注意:文件名并不存储在 inode 中,而是存储在目录项(directory entry)中,目录项将文件名映射到 inode 编号。
如何查看 inode 信息?
使用以下命令可以查看文件或目录的 inode 信息:
# 查看文件的 inode 编号
ls -i filename
# 查看文件详细 inode 信息
stat filename
# 查看文件系统 inode 使用情况
df -i
硬链接与软链接的区别
硬链接(Hard Link):多个文件名指向同一个 inode。删除其中一个不会影响其他链接,只有当所有链接都被删除时,inode 才会被释放。
ln source_file hard_link
软链接(Symbolic Link):是一个独立的文件,内容是指向另一个文件路径的字符串。它拥有自己的 inode。
ln -s source_file soft_link
常见问题与技巧
为什么“磁盘未满却无法创建新文件”?
可能是因为 inode 耗尽了!即使还有剩余空间,如果 inode 用完,也无法创建新文件。可通过 df -i 检查。
如何查找大 inode 占用?
# 统计各目录 inode 使用数量
find /path -xdev -printf '%h\n' | sort | uniq -c | sort -k 1 -n
结语
理解 inode 是掌握 Linux 文件系统的关键一步。无论是排查磁盘问题、管理链接,还是优化存储结构, inode 都扮演着不可替代的角色。希望本专题能帮助你更深入地理解这一核心概念。