本章介绍ext2文件系统。此数字使用Linux与Linux完成完整的兼容ext2文件系统。起点是,只要播放器包含完全文件系统,就可以轻松调整其他文件系统。
本章介绍Linux ext2文件系统历史记录的状态和EXT3 / EXT4文件系统的当前状态。
编程示例显示如何放大不同ext2数据结构的树和ext2文件系统。介绍支持所有Linux核心文件的Ext2文件系统的实现。
mont_root通过虚拟磁盘显示基本文件系统的创建。
文件系统执行可以分为三个级别。 1级别扩展了文件系统木材的基本文件系统,2级设备读/写函数文件内容和级别3实现文件系统安装/充电。文件保护
描述每个级别文件系统的算法,并且程序示例描述了实现过程。
集成编程项目中的所有级别集成。最后,所有编程和追求示例都集成到完全有效的文件系统中。
Boot Sector:上图启动块(Boot Sector),是用来存储磁盘分区信息和启动信息,任何文件系统给都不能缺少启动块。启动块大小并不是我们前面所说的4KB,而是1KB,是由PC标准定义的。
Block Group:启动块之后才是ext2文件系统的开始。ext2文件系统将整个分区划分为大小相等的块组(Block Group),每个块组由以下部分组成:
Super Block:超级块主要有两个功能:1)超级块结构给出了文件系统的全局信息。例如块大小,文件系统的版本等等。2)超级块结构包含一些函数指针,例如super_operation的成员函数read_inode提供了读取inode信息的功能。每个具体的文件系统一般都要提供这个函数来实现对inode信息的读取,例如ext2文件系统提供的具体函数是ext2_read_inode。
这种寻址方式对于访问不超过12个数据块的小文件是非常快的,访问文件中的任意数据只需要两次读盘操作,一次读inode(也就是读索引项)一次读数据块。而访问大文件中的数据则需要最多五次读盘操作:inode、一级间接寻址块、二级间接寻址块、三级间接寻址块、数据块。实际上,磁盘中的inode和数据块往往已经被内核缓存了,读大文件的效率也不会太低。
Group 0: (Blocks 1-8192) [ITABLE_ZEROED] Checksum 0xa22b, unused inodes 501 Primary superblock at 1, Group descriptors at 2-81 Reserved GDT blocks at 82-337 Block bitmap at 338 (+337), Inode bitmap at 354 (+353) Inode table at 370-497 (+369) 5761 free blocks, 501 free inodes, 2 directories, 501 unused inodes Free blocks: 2432-8192 Free inodes: 12-512 Group 1: (Blocks 8193-16384) [INODE_UNINIT, BLOCK_UNINIT, ITABLE_ZEROED] Checksum 0xea71, unused inodes 512 Backup superblock at 8193, Group descriptors at 8194-8273 Reserved GDT blocks at 8274-8529 Block bitmap at 339 (bg #0 + 338), Inode bitmap at 355 (bg #0 + 354) Inode table at 498-625 (bg #0 + 497) 7855 free blocks, 512 free inodes, 0 directories, 512 unused inodes Free blocks: 8530-16384 Free inodes: 513-1024Group0 占用从 1 到 8192 号的 block。其中的 Superblock 则在 1 号 block 内。