Desempenho lento do rm em uma partição ext4

Desempenho lento do rm em uma partição ext4

A remoção do que me parece ser um número moderado de arquivos leva muito tempo. Por exemplo:

$ pv linux-3.0.16.tar.bz2 | tar xj
73.2MB 0:00:16 [4.55MB/s]
$ pv linux-3.0.16.tar.bz2 | tar xj
73.2MB 0:03:16 [ 382kB/s]

A partição está formatada como ext4, montada em relatime,error=remount-ro. Não há pico de utilização do processador durante a remoção de arquivos. Alguém tem alguma ideia do que pode estar acontecendo?

Atualizar: A execução dos comandos acima ou rm -rfcomo root funciona conforme o esperado... atualizar: descobri. O administrador de sistema da caixa instalou uma quantidade ridícula de regras de auditoria globalmente na caixa. Removê-los corrige isso.

Responder1

Quando você substitui ou exclui um arquivo, ele faz o seguinte de maneira simplista:

  1. Encontre o inode do arquivo.
  2. Verifique as permissões, usuário e grupo do arquivo individual.
  3. Remova também os arquivos do diretório se o arquivo for um diretório (repita 1 - 4 para cada arquivo).
  4. Desvincule o arquivo e seu inode.

Obviamente, isso diminuirá muito o desempenho, porque é muito mais difícil do que apenas adicionar um novo inode e gravar um arquivo no disco. Este é um efeito colateral de ser uma lista de tabelas de inodes; se fosse uma árvore de inodes, poderia simplesmente excluir um ramo inteiro. Embora isso não mude nada enquanto você está descompactando, o descompactar fará isso arquivo por arquivo, independentemente da maneira como os inodes são armazenados ...

Executar como root elimina a etapa 2, o que pode ou não ser uma grande diferença.


Você já tentou montar novamente no ext3 e comparar o tempo de execução?

Porque o ext4 exclui mais rápido devido ao uso de extensões. Seria notável se fosse mais lento...

informação relacionada