inode与block;文件与目录的关系

来源:互联网 发布:qq三国50js装备满属性 编辑:程序博客网 时间:2024/04/30 09:30

 当我们在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 的流程为∶

  1. 作业系统根据根目录( / )的相关资料可取得 /etc 这个目录所在的 inode ,并前往读取 /etc 这个目录的所有相关属性;
  2. 根据 /etc 的 inode 的资料,可以取得 /etc 这个目录底下所有档案的关连资料是放置在哪一个 Block 当中,并前往该 block 读取档案的关连性内容;
  3. 由上个步骤的 Block 当中,可以知道 crontab 这个档案的 inode 所在地,并前往该 inode ;
  4. 由上个步骤的 inode 当中,可以取得 crontab 这个档案的所有属性,并且可前往由 inode 所指向的 Block 区域,顺利的取得 crontab 的档案内容。
原创粉丝点击