테스트 목적으로 ext4에서 깊이가 1보다 큰 파일을 생성할 수 있습니까?

테스트 목적으로 ext4에서 깊이가 1보다 큰 파일을 생성할 수 있습니까?

분석 도구를 테스트하려면 eh.eh_depth깊이()가 1보다 큰 파일이 필요합니다.

나는 몇 가지를 시도했습니다:

  • 대용량 파일(1GiB)
  • 수백 개의 작은 파일(1MiB)을 만들고 다른 모든 파일을 삭제한 다음 디스크를 하나의 파일로 채웁니다(많은 조각화가 생성되기를 바랍니다).

두 경우 모두 내 깊이는 1입니다!

Hex Editor에서 inode를 수동으로 수정하려고 시도했지만 결국 파일 시스템이 손상되었습니다.

이것이 가능한지 궁금합니다만 debugfs, 어떻게 해야 할지 모르겠습니다.

추신: 나는 보았다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
[...]

관련 정보