Linux学习笔记10-文件、目录与磁盘格式三
inode,block与目录树的关系
目录
当我们在Linux下的文件系统新建一个目录时,EXT4会分配一个inode与至少一个block给该目录。其中,inode记录该目录的相关权限与属性,并记录分配到的block号码;而block则是记录在这个目录下的文件或目录名与该文件或目录占用的inode号码数据。ls -i可以查看目录下各文件或目录的inode号码。如果目录下文件或目录太多,一个block记录不下,就会占用多个block。
文件
当我们在Linux下新建一个一般文件时,系统会分配一个inode与相对于该文件大小的block数量给该文件。但是因为inode大小有限,当文件特别大时,系统会为其创建间接块,所谓间接块即用inode记录一个block的号码,但是该block并不记录实际的文件内容,而是记录其它block的号码,再由这些block记录文件内容,这种间接块可以延续多层,形成树形结构,使inode能够关联的文件内容指数级增长,这是inode能够作为文件的唯一入口的关键所在。
目录树读取
所以,文件的inode本身并不记录文件名,文件名是记录在目录的block中的,所以我们新增,删除,重命名文件才需要目录的w权限。由于目录树是由根目录开始读起,因此系统通过挂载的信息可以找到挂载点的inode号码,此时就能够得到根目录的inode内容,并依据该inode读取根目录的block内的文件名数据,再一层层地往下读到正确的文件。