在 Linux 或更具体的 EXT4 中,目录文件的初始大小为 4kB。但是如果目录中存储了足够多的文件,由于内部“文件列表”的增加,目录文件的大小会增加。但是,这需要多少个文件才能发生?我一直无法找到可以回答这个问题的资源。
ext4 目录条目的格式记录在内核中。有两种可能。
.
和..
,每个目录占用十二个字节。每个线性目录也可以有一个十二字节的校验和。块中的最后一个条目的记录长度被扩展以覆盖当前块中的剩余空间,因此目录条目永远不会跨越两个文件系统块。.
和..
),并且每个随后的数据块具有18字节的节点。节点每个占用 8 个字节,文件条目使用与线性目录相同的数据结构,最终作为线性数组。所以目录消耗的空间量更难计算:每个文件占用 8 个字节加上其名称的长度,四舍五入为 4 个字节,树结构占用第一个块的 40 个字节加上每个额外块的 18 个字节,每个节点 8 个字节。如果你想快速看到一个目录的大小增加,用长文件名的文件填充它——文件名最长可达 254 个字节,加上终止的零字节,总共占用 264 个字节,所以 16 个这样的条目在任一目录类型将需要超过 4096 个字节。
要确定目录是线性的还是散列的,请检查其 inode,例如使用debugfs
:
debugfs: show_inode_info /path/to/directory
Inode: 7329 Type: directory Mode: 0755 Flags: 0x1000
Generation: 2283115506 Version: 0x00000001
...
Run Code Online (Sandbox Code Playgroud)
如果目录被散列,则标志将显示 0x1000 设置,否则未设置。
归档时间: |
|
查看次数: |
149 次 |
最近记录: |