dir*_*obs 5 filesystems directory ext4 inode debugfs
目录 inode 与常规文件的 inode 没有本质区别,我从Ext4 磁盘布局中理解的是:
目录条目:因此,更准确地说,目录是一系列数据块,每个数据块包含目录条目的线性数组。
目录条目将文件名与指向其 inode 的指针一起存储。因此,如果文档说每个块都包含目录条目,为什么debugfs报告存储在目录 inode 中的文件名不同呢?这是 ext4 格式的闪存驱动器上的调试会话:
debugfs: cat /sub
?
.
..?
spam?spam2?spam3??spam4
Run Code Online (Sandbox Code Playgroud)
我不认为inode_i_block可以存储这些文件名,我创建了文件名非常长的文件,大小超过 60 个字节。cat在 inode 上运行也debugfs显示了文件名,因此长文件名再次出现在 inode 中!
根据 inode 描述的文件类型,
inode.i_block可以以不同方式使用60 字节的存储空间。一般而言,普通文件和目录会将其用于文件块索引信息,而特殊文件则会将其用于特殊用途。
此外,没有对在哈希树目录 部分中存储文件名的 inode 的引用, 这是较新的实现。我觉得我错过了该文件中的某些内容。
主要问题是如果目录的 inode 包含文件名,那么它的数据块存储什么?
cat输出文件内容,即数据块。类似于/bin/cat。
如果该cat命令将 inode 结构的字节写入终端,则该命令将没有用处。比较inode_dump和stat。
一些文件会告诉你历史unix允许例如/bin/cat读取这些数据,这是从用户空间列出目录条目的原始方式。即ls会打开目录、read()条目,并为您解释它们。与使用相反readdir(),内核以标准格式提供条目,而不管底层文件系统格式如何。
| 归档时间: |
|
| 查看次数: |
3900 次 |
| 最近记录: |