i节点号(inode number)是Linux/Unix文件系统中用于标识文件的唯一数字标识符。每个文件在文件系统中都有一个对应的inode,其中存储了文件的元数据(metadata)。
每个inode通常包含以下信息: - 文件类型(常规文件、目录、符号链接等) - 文件权限(rwx) - 所有者和组信息 - 文件大小 - 时间戳(创建、修改、访问时间) - 指向文件数据块的指针 - 链接计数(硬链接数量)
ls -i 文件名 # 查看单个文件的inode号
stat 文件名 # 显示详细的inode信息
df -i # 查看文件系统的inode使用情况
硬链接实际上是给同一个inode赋予多个名称:
ln 源文件 硬链接文件 # 创建硬链接
文件系统有两个主要限制: - 存储块的总数(决定能存储多少数据) - inode的总数(决定能创建多少文件)
可以使用df -i
查看inode使用情况。
即使磁盘空间充足,如果inode用尽也无法创建新文件。常见于存储大量小文件的系统。
解决方法:
- 删除不必要的文件
- 重新格式化文件系统并分配更多inode
- 使用mkfs
时通过-N
选项指定更多inode
find / -inum 1234 # 查找inode号为1234的所有文件
tune2fs -l /dev/sda1 | grep -i inode
创建文件系统时,默认inode数量基于分区大小计算。对于存储大量小文件的系统,可能需要调整:
mkfs.ext4 -N 1000000 /dev/sdb1 # 创建1百万个inode
理解inode是掌握Linux文件系统工作原理的关键。它不仅唯一标识文件,还存储了文件的所有元数据,是文件系统高效运作的基础。合理管理inode资源对于系统管理员来说至关重要,特别是在处理大量小文件或长期运行的服务系统中。