跳到主要内容

12、【Linux】索引式文件系统

一、前言

磁盘在分区完成之后,要使得操作系统能够识别文件系统,就需要进行格式化,把分区格式化成某一个操作系统能够识别的文件系统。
一般来说,一个分区中装一个文件系统,但是现在技术发展了,一个分区可以装多个文件系统,也能将多个分区合并成一个文件系统。一个文件系统可以挂载到操作系统上。

二、EXT4文件系统

在Linux系统中,文件的权限与属性放到inode中,实际数据则放置到data block区块中。另外,还有一个超级区块superblock会记录整个文件系统的整体信息,包括inode与block使用量,剩余量等。

  • inode:记录一个文件的所有属性,以及这个文件所对应的block的号码(一个文件对应一个inode)
  • block:存放文件的实际数据(若文件数据太大,则使用多个block存放)
  • super block:记录文件系统的整体信息,包括:inode、block的数量、文件系统的使用量、剩余量等。

在Linux系统中,为每个文件分配一个称为索引节点的号码inode,可以将inode简单理解成一个指针,它永远指向本文件的具体存储位置。

系统是通过索引节点(而不是文件名)来定位每一个文件。

三、EXT4文件系统读取数据的过程

系统先格式化出inode与block的区块。如下图,要访问一个文件时,首先找到这个文件的inode,根据inode中的权限查看当前用户是否有权力读取这个文件;然后根据inode中记录的block的号码,操作系统据此排列磁盘阅读顺序,一口气将四个block内容读出。最后找到block,读出数据。这种文件系统就叫做索引式文件系统。

 

U盘(闪存)一般使用FAT文件系统,而FAT文件系统并没有inode,每个block中记录着本文件下一个block的位置。所以FAT文件系统无法通过inode一次性将这个文件所有的block号码读取出来,而只能一个个地读取block后才能知道下一个block的位置。如下图: