为了测试分析工具,我需要一个深度 ( eh.eh_depth
) 大于 1 的文件。
我尝试了几件事:
- 大文件 (1GiB)
- 创建数百个较小的文件 (1MiB),删除所有其他文件,然后用一个文件填充磁盘(希望产生大量碎片)。
在这两种情况下我的深度都只有 1!
我什至尝试在十六进制编辑器中手动修改索引节点,但最终损坏了文件系统。
我想知道是否可以用 来完成debugfs
,但我不知道如何完成?
PS:我看过stackoverflow 上的“增加 ext4 中范围树的深度”问题,但我真的不想创建 174GiB 文件。
答案1
如果您想要一个具有很多范围的文件,只需执行以下操作:
$ perl -we 'for ($i=0;$i<100000;$i++) {seek STDOUT,$i*8192,0; print "."}' > a
$ ll a
-rw-r--r-- 1 stephane stephane 819191809 Dec 15 23:50 a
$ filefrag a
a: 100000 extents found
这是一个稀疏文件,其中每个其他块都是稀疏的,因此它强制范围为 4KiB 大。
debugfs: dump_extents a
Level Entries Logical Physical Length Flags
0/ 2 1/ 1 0 - 199998 33413 199999
1/ 2 1/295 0 - 679 33409 680
2/ 2 1/340 0 - 0 34816 - 34816 1
2/ 2 2/340 2 - 2 34818 - 34818 1
[...]