假设我已经将硬盘安装到/var/data/
我的 Linux 服务器的位置,并且我想要打印一个文件的内容。
cat /var/data/foo.txt
Ext4 由几个部分组成,例如:
- 超级块
- 文件系统描述
- 块位图
- 索引节点位图
- ETC。
我的问题是:
- ext4 是如何在底层将文件名转换为 inode 的?
- 文件名保存在哪个部分?
- inode 保存在哪个部分?
- 数据保存在哪个部分?
参考
答案1
Ext4在内核中有详细记录;我将简要回答您的问题,但您会在那里找到更多信息。
从已知的 inode 开始(2 表示文件系统的根目录,在您的示例中对应
/var/data
,或者用于调用的打开文件描述,例如openat
),目录条目指向路径组件的每个连续索引节点,最后指向您感兴趣的文件。文件名保存在目录条目中。目录条目存储在数据块中。
索引节点存储在索引节点表中。
数据存储在数据块中。