当我们在Linux系统下建立一个ext2的文件或者目录时,系统都会分配一个inode和一个block。其中inode用来保存文件的属性信息,指向对应block的pointer。block则是保存文件的具体内容。
要注意的是,inode并不记录文件名,只是记录文件的相关属性,文件名是记录在目录所属的block中的。
那么,文件与目录的关系是怎么样的呢?
就如同上面的目录提到的,档案的相关连结会记录在目录的 block 资料区域, 所以当我们要读取一个档案的内容时,我们的 Linux 会先由根目录 / 取得该档案的上层目录所在 inode , 再由该目录所记录的档案关连性 (在该目录所属的 block 区域) 取得该档案的 inode , 最后在经由 inode 内提供的 block 指向,而取得最终的档案内容。我们以 /etc/crontab 这个档案的读取为例, 他的内容资料是这样取得的∶
图三、读取 /etc/crontab 的简易流程示意。
一块 partition 在 ext2 底下会被格式化为 inode table 与 block area 两个区域, 所以在图三里面,我们将 partition 以长条的方式来示意,会比较容易理解的啦!而读取 /etc/crontab 的流程为∶
-
- 作业系统根据根目录( / )的相关资料可取得 /etc 这个目录所在的 inode ,并前往读取 /etc 这个目录的所有相关属性;
- 根据 /etc 的 inode 的资料,可以取得 /etc 这个目录底下所有档案的关连资料是放置在哪一个 Block 当中,并前往该 block 读取档案的关连性内容;
- 由上个步骤的 Block 当中,可以知道 crontab 这个档案的 inode 所在地,并前往该 inode ;
- 由上个步骤的 inode 当中,可以取得 crontab 这个档案的所有属性,并且可前往由 inode 所指向的 Block 区域,顺利的取得 crontab 的档案内容。