Como posso saber o que está girando na minha unidade?

8

Eu habilitei "spindown" em uma das unidades do meu servidor Linux, que é acessado apenas por um cliente BitTorrent - o que significa que, quando eu não tenho torrents em execução, nada mais deveria estar acessando o disco e ativando-o do spindown (certo?).

Mas algo está fazendo o disco girar a cada 15 minutos ou mais. Como posso rastrear o culpado desonesto?

Obrigado por qualquer feedback!

    
por Bruno Antunes 22.07.2009 / 23:06

7 respostas

8

Você pode conferir o link . Embora esta página não seja primariamente sobre o seu problema, mas oferece uma boa visão geral de como funciona o IO e suas ideias, como silenciar seus discos desligando-os.

A resposta curta para o seu problema:

echo 1 > /proc/sys/vm/block_dump

produzirá mensagens no syslog como:

Jul 23 10:04:05 locutus kernel: ls(5224): READ block 7340136 on dm-4
Jul 23 10:04:05 locutus kernel: ls(5224): READ block 4335136 on dm-4
Jul 23 10:04:05 locutus kernel: ls(5224): READ block 15505568 on dm-4
Jul 23 10:04:05 locutus kernel: ls(5224): READ block 7340160 on dm-4
Jul 23 10:04:05 locutus kernel: ls(5224): READ block 7340168 on dm-4

Eu usei um comando ls simples

NOTA: certifique-se de que seu log do sistema esteja desligado ou gravado em um ramdisk (tipo: tmpfs) antes disso, porque (quote): "seu sistema pode entrar em um loop de feedback, onde syslogd causa atividade de disco, saída do kernel, e isso faz com que o syslogd faça mais atividade de disco "

Eu recomendo montar o / tmp como um disco virtual e depois configurar o logging para / tmp / syslog. Isso em / etc / fstab (e uma reinicialização) fará:

none /tmp tmpfs defaults,size=256M 0 0
    
por 23.07.2009 / 10:09
9

No Linux, o recente-ish fanotify syscall habilitou um bom utilitário chamado fatrace que informa sobre qual processo está atingindo qual arquivo para o sistema inteiro ou uma partição específica. Definitivamente minha ferramenta favorita para esse tipo de coisa:

deluged(6542): R /usr/share/GeoIP/GeoIP.dat
rsyslogd(1737): W /var/log/syslog
rsyslogd(1737): W /var/log/kern.log
    
por 25.08.2013 / 23:39
5

Eu tenho usado o iotop para descobrir o que está usando o disco. No site você deve ter "kernel Linux ≥ 2.6.20 com as opções TASK_DELAY_ACCT e TASK_IO_ACCOUNTING habilitadas".

Parece que você está apenas interessado em uma determinada unidade. Você pode considerar escrever um script que verifique rotineiramente com o lsof ou o fusor para acessar essa unidade / partição.

    
por 22.07.2009 / 23:15
1

Se um processo estiver começando a gravar dados na unidade, você poderá descobrir isso com a verificação regular dos arquivos abertos: lsof .

Senão você poderia olhar com "free" se o arquivo de swap é usado ou não.

    
por 22.07.2009 / 23:44
1

Você deve ser capaz de usar Auditoria do Linux para adicionar um relógio no ponto de montagem da unidade e, em seguida, monitorar os logs com ausearch após o evento para descobrir qual arquivo foi lido ou gravado (se houver) e qual processo fez, auditoria pode assistir para leituras, escritas, executa e atribui alterações em qualquer sistema de arquivos (desde que seja suportado em seu sistema - deve ser).

    
por 22.07.2009 / 23:56
0

Talvez você possa usar o incron que usa o inotify para ativar comandos com base na atividade do sistema de arquivos. Você poderia, então, observar o ponto de montagem e usar o incron para acionar o lsof para procurar o processo que está acessando-o.

    
por 23.07.2009 / 02:24
0

É fácil verificar o que está girando no disco:

vá para o diretório do disco montado, para mim foi / media / disk0 / transmission

você executa: sudo fatrace -c

você terá a saída de anyting que atinge essa pasta, por exemplo, você pode logar com o ssh e fazer um ls.

df(54956): CO /media/disk1 bash(55025): O /media/disk1 bash(55025): RC /media/disk1 bash(55026): O /media/disk1 bash(55026): RC /media/disk1

    
por 12.05.2017 / 15:16