EXT2/EXT3文件系统(二)

     整理自《鸟哥的Linux私房菜》,整理者:华科小涛http://www.cnblogs.com/hust-ghtao/捧腹大笑

EXT2/EXT3文件系统(一)

2.3 Superblock(超级块)

    这是记录整个文件系统相关信息的地方,没有Superblock,就没有这个文件系统了。它记录的文件信息主要有:

  • block与inode的总量;
  • 未使用与已使用的inode/block数量;
  • block与inode的大小(block为1K,2K,4K,inode为128bytes);
  • 文件系统的挂载时间、最近一次写入数据的时间、最近一次检验磁盘的时间等文件系统的相关信息;
  • 一个validbit数值,若文件系统已被挂载,validbit=0,;未被挂载validbit=1;

2.4 File system Description(文件系统描述说明)

    这个区段可以描述每个block group的开始与结束的block号码,以及说明每个区段分别介于哪一个block号码之间。

2.5 block bitmap(块对照表)

    从block bitmap中可以知道哪些block是空的,因此我们可以很快的找到可以使用的空间来处置文件;如果要删除某些文件,哪些文件原本占用的block号码要释放出来,此时在block bitmap中相对应于该block号码的标志就要改成“未使用”。

2.6 inode bitmap(inode对照表)

    和block bitmap功能相似,只是记录的是inode的使用情况。

3.文件系统与目录树的关系

    让我们看看目录与文件在EXT2文件系统当中,是如何记录数据的:

3.1 目录

    当我们在Linux下的EXT2文件系统新建一个目录时,ext2会分配一个inode与至少一个block给该目录。其中,inode记录该目录的相关权限与属性,并可以记录分配到的那块block号码;而block则是记录在这个目录下的文件名与该文件占用的inode号码数据。

3.2 文件

    当我们在Linux下的ext2创建一个一般文件时,ext2会分配一个inode与相对于该文件大小的block数量给该文件。inode记录该文件的相关权限与属性,并可以记录分配到的那块block号码;而block则是记录文件的实际内容。

4.目录树读取

    经过上面的说明我们可以知道inode本身并不记录文件名,文件名的记录是在目录的block中。因此当我们要读取某个文件时,就务必会经过目录的inode和block,然后才能够找到那个待读取文件的inode号码,最终才会读到正确的文件的block内的数据。由于目录树是由根目录开始读起,因此系统通过挂载的信息,可以找到挂载点的inode号码,此时就能够得到根目录的inode内容,并依据该这个inode读取根目录的block内的文件数据名,在一层一层的往下读到正确的文件。

捕获

原文地址:https://www.cnblogs.com/hust-ghtao/p/4034441.html