분석 도구를 테스트하려면 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
[...]