como rastrear acessos permanentes ao disco no linux

2

Eu tenho uma máquina que executa poucos serviços, mas eu não acredito que eles sejam responsáveis pelo acesso pesado às vezes ao disco neste servidor (movimentação massiva da cabeça que eu ouço, após longos períodos quase sem movimento)

Como posso descobrir qual processo está fazendo algo no disco rígido quando houver esse período novamente?

Eu estava pensando em usar o comando linux "lsof", mas ele tem overwhealming de saída e opções, então não consigo ver nada.

Você pode me guiar como eu poderia

  • mostre apenas o acesso ao disco rígido
  • que é realmente físico atualmente (não armazenados em buffer ou apenas arquivos abertos, na verdade leitura física ou escrita)
  • talvez classifique ou filtre por usuário ou processo

Seria ótimo se você pudesse demonstrar algumas opções úteis de lsof para esse caso. Obrigado.

Editar Obrigado por todas as respostas. Isso é muito mais do que eu esperava e fiz todas as respostas (até hoje)

    
por user12096 01.08.2009 / 13:14

7 respostas

7

Tente ver " iotop ". Ele lhe dará exatamente o que você precisa, um uso de IO por processo, superior como, display. Vem com a maioria das distribuições de linux modernas

    
por 01.08.2009 / 13:29
2

Muitas vezes, quando você tem um sistema em que os serviços / aplicativos não estão realizando muita E / S de disco, mas você percebe muita atividade no disco rígido, você encontrará o sistema trocando muito.

Este artigo tem uma boa explicação de como isso funciona:

Monitorando a memória virtual com o vmstat

    
por 01.08.2009 / 13:54
2

Também concordo com as sugestões dos utilitários top type. No entanto, talvez você consiga encontrar a origem do problema mais rapidamente se observar seus trabalhos agendados. Verifique o conteúdo de /etc/cron.* e veja se existem tarefas agendadas que executam processos que causariam muita E / S de disco. Pode ser algo tão simples quanto updatedb atualizando o banco de dados de localização.

Se os servidores permitirem o login do usuário, você também deve verificar os crontabs do usuário. Eles são normalmente encontrados em /var/spool/cron/tabs .

    
por 01.08.2009 / 18:59
2

I have a machine that runs few services, but I don't believe they are responsible for sometimes heavy disk access on this server

Isso acontece uma vez por dia? Se sim, provavelmente este é o sistema que verifica os repositórios para atualizações, ou instala automaticamente os patches de segurança se ele estiver configurado dessa maneira.

Você pode alterar o intervalo entre verificações e configurar atualizações automáticas no Synaptic

    
por 03.08.2009 / 15:10
1

A menos que você queira detalhes sobre quais arquivos estão sendo acessados, acredito que você também possa obter essas informações usando top . Eu uso o htop ( top wrapper) para monitorar o uso de E / S, tendo a saída classificada por diferentes campos de E / S. Ele fornece as seguintes colunas para analisar: RCHAR, WCHAR, SYSCR, SYSCW, IO_READ_RATE, IO_WRITE_RATE, IO_RATE . Dê uma olhada em man top se isso for o que você precisa.

    
por 01.08.2009 / 13:26
1

Assista top por um tempo. Os programas vinculados a ES geralmente ficam presos no estado D. Portanto, classifique sua saída de topo por cpu e observe qual processo será direcionado ao topo com longos períodos no estado D.

    
por 01.08.2009 / 17:36
-1
As ferramentas

mencionadas são ótimas para monitoramento em tempo real - uma boa pergunta para um novo post: o que é algo que pode ser usado historicamente - caso de uso:

minha caixa mostrou o pico de IO às 1:00

como você sabe de onde veio? :)

    
por 05.10.2009 / 01:40