Como descobrir qual processo está gravando regularmente no disco?


41

Como posso descobrir qual processo está constantemente gravando no disco?

Eu gosto que minha estação de trabalho fique quase silenciosa e apenas construo um novo sistema (P8B75-M + Core i5 3450s - os 's' porque possui um TDP máximo mais baixo) com ventiladores silenciosos etc. e instalei o Debian Wheezy de 64 bits nele.

E algo está me dando nos nervos: posso ouvir algum tipo de padrão, como se o disco rígido estivesse gravando ou procurando algo ( tick ... tick ... tick ... trrrrrr, enxágüe e repita a cada segundo).

No passado, eu tive um problema semelhante no passado (muitos, muitos anos atrás) e verificou-se que havia algum log do CUPS ou algo assim e simplesmente redirecionei esse (não importante) para um disco de RAM (real).

Mas aqui não tenho certeza.

Eu tentei o seguinte:

ls -lR /var/log > /tmp/a.tmp && sleep 5 && ls -lR /var/log > /tmp/b.tmp && diff /tmp/?.tmp

mas nada está mudando lá.

Agora, o mais estranho é que eu também ouço o padrão quando o prompt solicitando que eu digite minha senha de descriptografia do LVM está sendo exibido.

Poderia ser algo no kernel / sistema que acabei de instalar ou tenho um disco rígido com defeito?

hdparm -tT /dev/sda relate a velocidade correta do HD (130 GB / s sem cache, sata 6 GB) e já instalei e compilei de grandes fontes (Emacs) sem problemas, por isso não acho que o sistema esteja ruim.

(HD é um Seagate Barracude 500GB)


Tem certeza de que é um disco rígido que faz esse barulho e não outra coisa? (Verifique os ventiladores, incluindo o ventilador da fonte de alimentação. Teve ruídos de clique muito estranhos uma vez quando um cabo muito fino estava muito próximo de um ventilador e, às vezes, tocava levemente as lâminas e saltava por alguns "cliques" ...)
mat

@ Mat: Vou levar o disco rígido para fora do gabinete (os conectores devem ser longos o suficiente) para ter certeza e vou relatar; )
Cedric Martin

2
Verifique se os sistemas de arquivos do disco estão montados em relação ou no tempo. As leituras de arquivo podem estar causando gravações nos inodes para registrar o tempo de acesso.
Camh

Respostas:


43

Você tentou examinar como os programas iotopestão sendo exibidos? Explicará exatamente que tipo de processo está gravando no disco.

saída de exemplo:

Total DISK READ: 0.00 B/s | Total DISK WRITE: 0.00 B/s
  TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND
    1 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % init
    2 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kthreadd]
    3 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [ksoftirqd/0]
    6 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [migration/0]
    7 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [watchdog/0]
    8 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [migration/1]
 1033 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [flush-8:0]
   10 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [ksoftirqd/1]

11
obrigado por essa dica. Eu não sabia sobre Iotop . No Debian, fiz uma pesquisa no apt-cache iotop para descobrir que eu precisava obter o apt-get iotop . Comando muito legal!
Cedric Martin

3
Eu uso o iotop -o -b -d 10que a cada 10 segundos imprime uma lista de processos que são lidos / gravados no disco e a quantidade de largura de banda de E / S usada.
Ndemou

15

Você pode ativar a depuração de E / S por meio de echo 1 > /proc/sys/vm/block_dumpe assistir às mensagens de depuração em / var / log / syslog . Isso tem a vantagem de obter algum tipo de arquivo de log com atividades passadas, enquanto iotopmostra apenas a atividade atual.


4
É absolutamente louco deixar o sysloging ativado quando o block_dump está ativo. Logging faz com que a atividade do disco, que faz com que o registo, que faz com que a atividade do disco etc. É melhor parar syslog antes de ativar esta (e uso dmesg para ler as mensagens)
dan3

Você está absolutamente certo, embora o efeito não seja tão dramático quanto o descreve. Se você quiser apenas dar uma olhada na atividade do disco, não há necessidade de parar o daemon syslog.
Scai

Eu tentei há cerca de 2 anos e parou minha máquina. Um destes dias, quando não tenho nada importante correr eu vou tentar novamente :)
dan3

Eu tentei, nada realmente aconteceu. Especialmente por causa do buffer do sistema de arquivos. Uma gravação no syslog não aciona imediatamente uma gravação no disco.
Scai

11
Eu diria que não há taxa geral limitação de taxa em vigor para as mensagens de log, que trata também neste caso (?)
Volker Siegel

5

Supondo que os ruídos do disco sejam devidos a um processo que causa uma gravação e não a algum problema de rotação do disco , você pode usar o subsistema de auditoria (instalar o auditdpacote ). Observe as syncchamadas e seus amigos:

auditctl -S sync -S fsync -S fdatasync -a exit,always

Assista os logs /var/log/audit/audit.log. Cuidado para não fazer isso se os próprios logs de auditoria estiverem nivelados! Verifique se /etc/auditd.confa flushopção está definida como none.

Se os arquivos estiverem sendo descarregados com frequência, o provável culpado são os logs do sistema. Por exemplo, se você registrar falhas nas tentativas de conexão recebidas e alguém estiver investigando sua máquina, isso gerará muitas entradas; isso pode fazer com que um disco emita ruídos no estilo de metralhadora. Com o daemon de log básico sysklogd, verifique /etc/syslog.conf: se um nome de arquivo de log não for precedido por -, esse log será liberado no disco após cada gravação.


@StephenKitt Huh. Não. O autor da questão mencionou o Debian, então eu mudei para um link para o pacote Debian.
Gilles 'SO- stop be evil'

3

Pode ser que suas unidades estejam girando automaticamente para baixo, muitas unidades de nível de consumidor fazem isso atualmente. Infelizmente, mesmo em um sistema com carga leve, isso faz com que as unidades diminuam constantemente e depois subam novamente, especialmente se você estiver executando o hddtemp ou semelhante para monitorar a temperatura da unidade (a maioria das unidades estupidamente não permite consultar o valor da temperatura SMART sem girar a unidade - cretinoso!).

Isso não é apenas irritante, pode desgastar as unidades mais rapidamente, pois muitas unidades possuem apenas um número limitado de ciclos de estacionamento. por exemplo, consulte https://bugs.launchpad.net/ubuntu/+source/hdparm/+bug/952556 para obter uma descrição do problema.

Desativei a ociosidade em todas as minhas unidades com o seguinte código de shell. você pode colocá-lo em um script /etc/rc.boot ou em /etc/rc.local ou similar.

para disco em / dev / sd? ; Faz
  / sbin / hdparm -q -S 0 "$ disk"
feito

2
que você não pode consultar leituras SMART sem girar a unidade me deixa sem palavras: - / Agora, obviamente, o problema de "girar para baixo" pode se tornar bastante complicado. Em relação à desativação da rotação: isso por si só não causaria o desgaste do HD mais rapidamente? Quero dizer: nunca está "descansando" enquanto o sistema estiver ligado?
Cedric Martin

No IIRC, você pode consultar alguns valores SMART sem fazer a unidade girar, mas a temperatura não é uma delas em nenhuma das unidades que testei (incluindo modelos da WD, Seagate, Samsung, Hitachi). O que é, obviamente, louco, porque a preocupação com a temperatura é uma das razões para a ociosidade de uma unidade. re: wear: AIUI 1. a velocidade constante é menor do que a mudança de velocidade. 2. as unidades precisam estacionar as cabeças em uma área segura e uma unidade é classificada apenas para fazer isso tantas vezes (IIRC até algumas centenas de milhares - facilmente excedido se a unidade estiver ociosa e girando a cada poucos segundos)
cas

É um longo debate sobre se é melhor deixar os discos funcionando ou diminuí-los. Pessoalmente, acredito que é melhor deixá-los em execução - desligo o computador à noite e quando saio, mas, além disso, nunca diminuo meus discos. Algumas pessoas preferem reduzi-las, digamos, à noite, se estiverem deixando o computador ligado ou se o computador estiver ocioso por um longo período de tempo, e nesses casos a vantagem de reduzi-las por algumas horas e deixá-las em execução é discutível. . O que nunca é bom, porém, é quando o disco rígido gira repetidamente para baixo e para cima novamente em um curto período de tempo.
precisa

Observe também que girar a unidade para baixo depois de ficar inativa por algumas horas é um pouco tolo, porque se estiver inativo por algumas horas, é provável que seja usado novamente dentro de uma hora. Nesse caso, seria melhor girar a unidade imediatamente se ela estiver ociosa (em 10 minutos), mas também é possível que a unidade fique ociosa por alguns minutos quando alguém estiver usando o computador e provavelmente precisará a unidade novamente em breve.
31516 Michell Johnson

Eu tinha certeza de que isso resolveria o meu problema ao ouvir a unidade emitir um som de ruído periódico (3-4 vezes / segundo) como se estivesse gravando mesmo quando não estiver montado! Mas ainda ouço o barulho depois de executar este comando. Preocupantemente, é a unidade que eu uso para fazer backup do meu SSD interno ...
Michael

1

Acabei de descobrir que o smart estava causando um disco USB externo girar repetidamente no meu raspberry pi. Embora o SMART seja geralmente uma coisa boa, decidi desativá-lo novamente e, desde então, parece que a atividade indesejada do disco parou


Você pode configurar o daemon inteligente para não verificar discos USB; a maioria das boas distribuições Linux faz isso por padrão.
Lzap 15/06/19

1

Você pode se interessar um pouco por isso. Deve reduzi-lo para a maioria.

find / -mount -newer /proc -print

Forneça arquivos modificados desde a inicialização no dispositivo físico do sistema / files. Conhecer os arquivos provavelmente ajudará a identificar o gravador.


1

Caso você precise reduzi-lo a um disco exato, use o seguinte:

execute lsblke procure o número do dispositivo. No caso abaixo, é9:126

NAME        MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda           8:0    0   7.3T  0 disk  
└─md126       9:126  0  13.8T  0 raid0 /mnt/InternalPhase
sdb           8:16   0   7.3T  0 disk  
└─md126       9:126  0  13.8T  0 raid0 /mnt/InternalPhase
sdc           8:32   0   7.3T  0 disk  
└─sdc1        8:33   0   7.3T  0 part  /mnt/InternalFBE

execute lsof | grep '9,126'com a :substituição com em ,comparação com o número do disco acima. No meu caso, isso aparece como:

bash      389162            root  cwd       DIR              9,126      4096  449183796 /mnt/InternalPhase/0000000001/CHANNEL01/LIVE/PHASE/DATA/2018/10/04

com o PID de 389162matar esse processo usando:

kill -9 389162

-1

O problema é que o sistema precisa liberar dados dos buffers de disco para o disco a cada 5 segundos, por padrão. Portanto, se o disco girar para baixo, haverá pouca opção a não ser girar novamente novamente quando ocorrer uma descarga. Portanto, o problema não é realmente evitável, a não ser desabilitar spins downs ou recursos de gerenciamento de energia em disco hdparm -B 255 /dev/hdax. Esta é provavelmente a melhor opção, pois reiniciar com tanta frequência pode ser definitivamente mais prejudicial do que simplesmente ficar o tempo todo.


11
Só vai liberar dados se houver algum para liberar. Se o disco realmente não estiver em uso, não haverá dados em buffer para liberar.
31516 Michell Johnson
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.