Como atualizar o tamanho do diretório após a remoção do arquivo?

3

Esta é uma questão principalmente teórica sem uso prático real.

Como você deve saber, os nomes dos arquivos são armazenados no diretório inode. Isso significa que quanto mais arquivos tivermos e quanto mais nomes de arquivo forem, mais o diretório de espaço será usado.

Infelizmente, se os arquivos foram excluídos do diretório, o espaço usado pelo diretório não é liberado e ainda é usado.

$ mkdir test ; cd test
# next command will take a while ; for me it was about 6 minutes
$ for ((i=1;i<103045;i++)); do touch very_long_name_to_use_more_space_$i ; done
$ ls -lhd .
drwxr-xr-x 2 user user 8.6M Nov  9 22:36 .
$ find . -type f -delete
$ ls -l
total 0
$ ls -lhd .
drwxr-xr-x 2 user user 8.6M Nov  9 22:39 .

Por que o espaço usado pelo diretório não é atualizado após a remoção dos arquivos? Existe uma maneira de liberar o espaço sem recreação de diretório?

    
por rush 09.11.2014 / 22:41

1 resposta

4

Você pode otimizar o diretório usando fsck.ext4 -D em um sistema de arquivos desmontado:

   -D     Optimize  directories  in filesystem.  This option causes e2fsck
          to try to optimize all directories, either by reindexing them if
          the  filesystem  supports directory indexing,  or by sorting and
          compressing directories for smaller directories, or for filesys‐
          tems using traditional linear directories.

A opção também é válida em ext3 e ext2 .

Por que isso não é feito na hora, não sei dizer. Talvez por problemas de desempenho?

    
por 09.11.2014 / 22:54