更新时间:2024-05-21 13:50
首先需要明白的是,在Unix操作系统中的任何资源都被当作文件来管理。如目录、光驱、终端设备等等,都被当作是一种文件。从这方面来说,Unix操作系统中的所有的目录、硬件设备跟普通文件一样,具有共同的属性。而这些属性的话,就是保存在inode块中。
Inode块中保存了一个文件系统中的全部Inode节点。也就是说,当系统创建了一个文件(或者添加了一个新设备)时,系统就会从这个块中给 这个文件分配一个Inode节点。在这个节点中存储了这个文件的大部分属性,如创建、修改时间等等。但是需要注意的是,有两个属性不包含在这个inode 节点中,分别为文件名与节点号。这主要是因为inode节点按顺序排列,所以系统内核就可以采用简单的算法,就可以得出inode节点号。
Linux文件系统使用索引节点来记录文件信息,作用类似于Windows下的文件分配表。一个文件系统维护了一个索引节点的数组,每个文件或目录都与索引节点数组中的唯一一个元素对应。
所以,目录只是将文件的名称和它的索引节点号结合在一起的一张表,目录中每一对文件名称和索引节点号称为一个连接。对于一个文件来说有唯一的索引节点号与之对应,对于一个索引节点号,却可以有多个文件名与之对应。因此,在磁盘上的同一个文件可以通过不同的路径去访问它。
系统管理员使用的很多程序往往用inode号码来替代文件名来访问文件系统。例如磁盘完整性检查程序fsck或pfiles。因此,inode号码与文件全路径名的互查是需要的。可以用find带参数选项-inum,ls带参数选项(-i)做到。
文件系统可能会用尽inode。这导致文件系统还有空闲的存储空间,但已经没有空闲的inode可供使用了。例如,一个电子邮件服务器可能会被大量的小文件用尽所有inode,但是却没有填满文件存储空间。
现代的文件系统如JFS和XFS能够动态地增加inode,因此不会用尽inode。