EXT2文件系统深入解析与编程示例
1. EXT2文件系统数据结构
在EXT2文件系统中,虚拟软盘(FD)仅有1440个块,B2仅包含1个组描述符,其余为0。而在具有大量组的硬盘中,组描述符可能会跨越多个块。组描述符中最重要的字段包括bg_block_bitmap、bg_inode_bitmap和bg_inode_table,它们分别指向组的块位图、索引节点位图和索引节点起始块。对于Linux格式化的EXT2文件系统,块3到7是保留的,因此bmap = 8,imap = 9,inode_table = 10。
1.1 块和索引节点位图
- 块位图(Block Bitmap,Bmap):位于块8(
bg_block_bitmap),位图是一系列用于表示某些项目(如磁盘块或索引节点)的位。在块位图中,0位表示相应的块是空闲的,1位表示该块正在使用。由于文件系统不使用块0,所以FD的块位图只有1439个有效位,无效位被视为正在使用并设置为1。 - 索引节点位图(Inode Bitmap,Imap):位于块9(
bg_inode_bitmap),索引节点是用于表示文件的数据结构。EXT2文件系统创建时具有有限数量的索引节点,每个索引节点的状态由块9中索引节点位图的一位表示。在EXT2文件系统中,前10个索引节点是