ext2(Second Extended File System)是Linux早期广泛使用的文件系统,虽然现在已被ext3/ext4取代,但其基础设计理念仍然值得研究。ext2采用经典的类Unix文件系统设计,具有以下特点: - 基于inode的索引结构 - 固定大小的块分配 - 支持大文件系统(最大16TB) - 没有日志功能
ext2文件系统将磁盘划分为多个固定大小的块(通常为1KB、2KB或4KB),整体布局如下:
+-------------------+------------------+------------------+-----+------------------+------------------+
| Boot Block | Super Block | Block Group 0 | ... | Block Group N | Data Blocks |
+-------------------+------------------+------------------+-----+------------------+------------------+
超级块(Super Block)
块组描述符表(Block Group Descriptor Table)
块位图(Block Bitmap)
inode位图(inode Bitmap)
inode表(inode Table)
数据块(Data Blocks)
ext2中的每个文件/目录对应一个inode,包含以下信息:
ext2采用多级索引结构管理文件数据块:
这种设计使得ext2能够高效地处理不同大小的文件。
ext2中的目录是特殊文件,其内容是一系列目录项(dentry),每个目录项包含:
ext2采用以下策略提高性能:
ext2作为经典的Linux文件系统,其设计理念对理解现代文件系统仍有重要参考价值。