Posso criar um arquivo no ext4 com profundidade 1 para fins de teste?

3

Para testar uma ferramenta de análise, preciso de um arquivo em que a profundidade ( eh.eh_depth ) seja maior que 1.

Eu tentei algumas coisas:

  • Um arquivo grande (1GiB)
  • Criando centenas de arquivos menores (1 MiB), excluindo todos os outros e preenchendo o disco com um arquivo (esperando por fragmentação massiva).

Em ambos os casos, eu só tenho uma profundidade de 1!

Eu até tentei modificar manualmente os inodes em um editor hexadecimal, mas acabei corrompendo o sistema de arquivos.

Eu queria saber se isso poderia ser feito com debugfs , mas não consigo ver como?

PS: Eu vi a 'aumentar a profundidade da árvore de extensão no ext4' pergunta em stackoverflow , mas eu realmente não quero criar um arquivo 174GiB.

    
por Bridgey 15.12.2015 / 23:57

1 resposta

4

Se você quiser um arquivo com muitas extensões, faça:

$ 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

Esse é um arquivo esparso em que todos os outros blocos são esparsos, então isso força as extensões a serem grandes em 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
[...]
    
por 16.12.2015 / 00:52

Tags