テスト目的でext4で深さが1より大きいファイルを生成できますか?

テスト目的でext4で深さが1より大きいファイルを生成できますか?

分析ツールをテストするには、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
[...]

おすすめ記事