Estou executando du -sh
em uma variedade de diretórios para encontrar porcos em disco. Eu tenho dois servidores idênticos (Dell PE2850s), ambos com RHEL5 e levará muito mais tempo para executar du
em um servidor em outro.
Por exemplo, du -sh /opt/foobar
levará 5 minutos no servidor A (que possui cerca de 25 GB) e no servidor B, o mesmo comando com a mesma quantidade de dados será relatado quase instantaneamente. Não vejo nada óbvio ao correr no topo, etc.
Qualquer conselho é muito apreciado.
du -s
não depende do tamanho dos dados, mas do número de arquivos. As duas árvores de diretório têm um número semelhante de arquivos?du
funcionará muito mais rápido se todos os metadados do diretório (como tamanhos de arquivo) estiverem armazenados em cache no momento. Se esse for o caso por qualquer motivo em um servidor e não no outro, isso resultará em grandes diferenças.Respostas:
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 do 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 os sistemas de arquivos ext * (o ext4 pode ser melhor) e com os antigos sistemas de arquivos ReiserFS v3.x (se os níveis ultrapassarem 85%).
A solução é bastante fácil:
Obviamente, se tudo estiver armazenado em cache na RAM, isso não importa muito; geralmente o Linux armazena em cache os arquivos e diretórios acessados com frequência de maneira bastante agressiva. Se você realmente deseja manter o conteúdo desses diretórios na RAM, pode colocar algo parecido
ls -lah /your/dir 2>&1 >/dev/null
com o seu cron.EDIT: Oh, uma coisa surgiu na minha mente. Se o seu servidor tiver um controlador RAID com bateria e com algum cache, verifique se a bateria está OK. Eu já vi situações em que a bateria está descarregada e o controlador desativa completamente o cache, prejudicando muito o desempenho. Por exemplo, os servidores HP podem dizer nos logs do iLO algo sobre a bateria do controlador; no painel de integridade do servidor real, tudo parece estar bem e verde, mas apenas a entrada do log informa sobre isso.
fonte
umount
dirigir efsck
isso?ionice -c3 -p $(pidof cp)
ou menos.Sugiro tentar o comando du simples, sem nenhuma opção. Você verá eventualmente qual diretório está atrasando o processo. Pode ser um disco defeituoso, ou algum outro motivo, ...
fonte