我可以在 ext4 上创建一个深度 > 1 的文件用于测试目的吗?

我可以在 ext4 上创建一个深度 > 1 的文件用于测试目的吗?

为了测试分析工具,我需要一个深度 ( 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
[...]

相关内容