1. 关于本书¶
本文档尝试描述 ext4 文件系统的磁盘格式。同样的一般概念也应适用于 ext2/3 文件系统,尽管它们不支持 ext4 支持的所有功能,并且字段会更短。
注意:这是一个正在进行中的工作,基于作者 (djwong) 在手工拆解文件系统时所做的笔记。数据结构定义应与 Linux 4.18 和 e2fsprogs-1.44 一样是最新的。欢迎所有评论和更正,因为毫无疑问有很多知识可能没有反映在刚刚创建的演示文件系统中。
1.1. 许可证¶
本书根据 GNU 公共许可证 v2 的条款授权。
1.2. 术语¶
ext4 将存储设备划分为逻辑块数组,既减少了簿记开销,又通过强制更大的传输大小来提高吞吐量。通常,块大小为 4KiB(与 x86 上的页面大小以及块层的默认块大小相同),尽管实际大小计算为 2 ^ (10 + sb.s_log_block_size
) 字节。在本文档中,磁盘位置以这些逻辑块表示,而不是原始 LBA,也不是 1024 字节的块。为了方便起见,逻辑块大小将在本文档的其余部分中称为 $block_size
。
当在 预格式化文本
块中引用时,sb
指的是超级块中的字段,inode
指的是 inode 表条目中的字段。
1.3. 其他参考资料¶
另请参阅 https://www.nongnu.org/ext2-doc/,其中包含大量关于 ext2/3 的信息。这里是另一个旧的参考:http://wiki.osdev.org/Ext2