应用场景
EXT2文件系统是Linux Kernel所使用的文件系统,是Linux第一个商用级文件系统(首次应用在Linux Kernel 0.99c)。ext2也可作为基于闪存的存储介质(例如:SD卡和USB存储)的首选文件系统
起源
由法国软件商 Rémy Card 所设计,用来代替ext文件系统。
ext2数据结构
ext2的空间被分为一个个块,这些块又组成了块组,在一个大的文件系统中通常有几千个块,一个文件的数据通常会尽可能的包含在一个块组中,当读取大量的连续数据时,这样可以最小化寻道次数。每一个块组都包含一个超级块和块组描述符表的副本,所有的块组都包含一个块的位图、一个节点位图、一个节点表、以及实际的数据块。
超级块包含引导操作系统启动的重要信息,因此在文件系统的多个块中都包含超级块的备份拷贝,但只有文件系统第一个块中的拷贝被用来引导。
组描述符表为每个块组存储块位图的位置,索引节点的位图以及每个块组的开始节点表。
索引节点
每个文件或目录都用一个索引节点来表示,索引节点包括数据大小、权限、所有权以及文件或目录在磁盘上的位置。
目录
每一个目录都是一系列目录条目,每一个目录条目豆浆一个文件名和一个索引节点数字相关联。
根文件目录总是存储在第二个索引节点处,这样文件系统可以在挂载的时候发现根文件目录。子目录通过在命名域存储的子目录的文件名,在索引节点域存储子目录的索引数字来实现。硬链接通过为一个索引号存储多个文件名来实现。
特殊目录:“.”(当前目录)和“..”(上一级目录)通过在目录中存储“.”和“..”这两个名字,在索引节点字段中存储当前目录和上一级目录的索引节点来实现
分配数据
当一个新的文件或目录被创建,ext2必须决定在哪里存放这些数据,如果磁盘基本上是空的,那么数据可以被存储在任何地方。但是,将相关数据聚类存放可以最小化寻道时间,并提高性能。ext2通常会将给一个新的目录分配到包含其父节点的块组中。
在数据分配位图中可以找到存储文件或目录的数据块,任何
演化
从2009年开始,Linux Kernel开始支持ext4的无日志记录模式,相较于ext2而言可以提供更大的文件和卷大小。