Desempenho de rm lento em uma partição ext4

1

Remover o que 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 é formatada ext4, relatime montado, 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 : executar os comandos acima ou rm -rf como raiz é executado como esperado ... update : descobri. O sysadmin da caixa tinha instalado uma quantidade ridícula de regras de auditoria globalmente na caixa. Removê-los corrige isso.

    
por Seamus Connor 26.09.2012 / 18:12

1 resposta

1

Quando você substitui ou exclui um arquivo, isso é simplista:

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

Isso obviamente vai diminuir muito o desempenho, porque é muito mais difícil do que apenas adicionar um novo inode e gravar um arquivo no disco. Esse é um efeito colateral de ser uma lista de tabelas de inode, se fosse uma árvore de inode, em vez disso, poderia simplesmente excluir uma ramificação inteira. Embora isso não altere nada, já que você está descompactando, já que a untarring irá fazer isso por arquivo, independente da maneira como os inodes são armazenados ...

A execução como root corta a etapa 2, o que pode ou não ser uma grande diferença.

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

Porque o ext4 é excluído mais rapidamente devido ao uso de extensões. Seria notável se fosse mais lento ...

    
por 26.09.2012 / 18:33

Tags