1、文件的划分与储存
linux的ext2是一种索引式文件系统,并且以inode和block为基础。
linux操作系统的文件可以分为两部分:(1)实际内容(存放在block中);(2)文件权限(读写可执行等)与文件属性(拥有者、用户组、时间等参数)。文件系统将这两部分内容分别存放于不同的区块。权限与属性存放在inode中,实际内容存放在数据区块中。
一个文件只占用一个inode,但是可能占用多个数据区块(下文统一称block),占用block的个数取决于文件的实际大小。inode记录了这些block的编号,因此可以通过inode索引找到实际内容。如下图所示:
2、文件系统与目录树
在linux系统下,无论是一般文件还是目录文件都会占用一个inode,并且根据文件的大小来分配一个或多个block给文件使用,inode记录目录相关的权限以及分配到的那块block的号码。
普通文件和目录文件block的内容不同:
- 普通文件block中记录的是该文件的实际内容
- 目录文件记录的是该目录下面所有文件(包含普通文件和子目录)的文件名和对应的inode号。
目录文件的block记录了下面所有的文件的inode号,根据这些inode可以找到该目录下面所有文件的内容,如下:
无论是目录文件还是普通文件,访问都需要通过inode找到block。普通文件索引顺序如下:
目录inode(获得目录权限及block的编号) ——> 目录block (获得文件的inode编号)——>
文件inode (获取文件权限即文件block编号) ——> 文件block (文件实际内容)