分析ツールをテストするには、eh.eh_depth
深さ()が1より大きいファイルが必要です。
私はいくつか試しました:
- 大容量ファイル(1GiB)
- 数百の小さなファイル(1MiB)を作成し、他のすべてのファイルを削除してから、ディスクを1つのファイルでいっぱいにします(多数の断片化が作成されることを願っています)。
どちらの場合も、私の深さは1です!
Hex Editorで手動でinodeを修正しようとしましたが、最終的にファイルシステムが破損しています。
これが可能なのか気になりますが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
[...]