linux inode 简单理解

Inode是 linux 操作系统中的一种数据结构,包含了各文件相关的一些重要信息。在创建文件系统时,就会同时创建大量的inode,一般inode表会占用文件系统磁盘空间的1%,inode的中文译名为”索引节点”。

我们对一个文件进行操作,如vi编辑,系统在inode表中找到inode编号(inumber),才允许我们打开该inode。

当文件的inode分派给一个用户时,另一个用户如果要操作这个文件时,就要等该inode释放了才可以操作。

查看

ls -i # 看文件inode节点号

df -i # 查看硬盘分区的inode总数和已使用情况

特点

inode也会消耗硬盘空间,所以格式化的时候,操作系统自动将硬盘分成两个区域。一个是数据区,存放文件数据;另一个是inode区,存放inode所包含的信息。每个inode的大小,一般是128字节或256字节。通常情况下不需要关注单个inode的大小,而是需要重点关注inode总数。inode总数在格式化的时候就确定了。

由于inode号码与文件名分离,导致一些Unix/Linux系统具备以下几种特有的现象。

  1. 文件名包含特殊字符,可能无法正常删除。这时直接删除inode,能够起到删除文件的作用,
find ./* -inum 节点号 -delete
  1. 移动文件或重命名文件,只是改变文件名,不影响inode号。
  2. 打开一个文件以后,系统就以 inode 号码来识别这个文件,不再考虑文件名。

这种情况使得软件更新变得简单,可以在不关闭软件的情况下进行更新,不需要重启。因为系统通过inode号码,识别运行中的文件,不通过文件名。更新的时候,新版文件以同样的文件名,生成一个新的inode,不会影响到运行中的文件。等到下一次运行这个软件的时候,文件名就自动指向新版文件,旧版文件的inode则被回收。

inode耗尽故障

由于每个文件必须有一个inode,因此就有可能发生inode节点用光,但硬盘空间还剩不少,却无法创建新文件的情况。

参考资料


Linux下使用 PDFtk 进行命令行操作pdf Linux下的 /dev/shm