du comando leva muito tempo para executar

8

Estou executando du -sh em vários diretórios para encontrar hogs de disco. Eu tenho dois servidores idênticos (Dell PE2850s), ambos com RHEL5 e levará muito mais tempo para executar du em um servidor sobre o outro.

Por exemplo, fazer du -sh /opt/foobar levará 5 minutos no servidor A (que tem cerca de 25 GB) e, no servidor B, o mesmo comando com a mesma quantidade de dados será reportado quase instantaneamente. Eu não vejo nada claramente óbvio quando estou no topo, etc.

Qualquer conselho é muito apreciado.

    
por Jon Weinraub 07.08.2013 / 16:36

2 respostas

6

Se você tiver um grande número de arquivos nesse diretório e o conteúdo do diretório mudar constantemente, a própria entrada de diretório será fragmentada ao longo do tempo. Então, quando o sistema operacional estiver lendo o conteúdo do diretório, haverá muitas e muitas buscas desnecessárias em disco. Isso acontece especialmente com sistemas de arquivos ext * (o ext4 pode ser melhor) e os sistemas de arquivos antigos do ReiserFS v3.x (se tiverem passado de 85% do total).

A solução é bem fácil:

cp -pr origdir newdir
mv origdir origdir.bak
mv newdir origdir

É claro que se tudo estiver armazenado em cache na RAM, isso não importa muito; geralmente o Linux armazena em cache arquivos e diretórios acessados de maneira bastante agressiva. Se você realmente deseja manter o conteúdo desses diretórios na RAM, você pode colocar algo como ls -lah /your/dir 2>&1 >/dev/null em seu cron.

EDIT: Ah, uma coisa surgiu em minha mente. Se o seu servidor tiver um controlador RAID com backup de bateria com algum cache, verifique se a bateria está OK. Eu vi situações em que a bateria está morta e o controlador desabilita o cache completamente, arruinando muito o desempenho. Por exemplo, os servidores da HP podem informar nos logs do iLO algo sobre a bateria do controlador; no painel de controle de integridade do servidor, tudo parece estar bem e verde, mas somente a entrada de log informará sobre isso.

    
por 07.08.2013 / 17:24
0

Eu sugiro tentar o simples comando du sem quaisquer opções. Você acabará por ver qual diretório está retardando o processo. Pode ser um disco defeituoso, ou algum outro motivo, ...

    
por 26.06.2016 / 20:08

Tags