Descobrir o que está girando no disco rígido

8

Eu sou o proprietário de um NAS, executando alguma distribuição do Linux. Ele vem com um frontend de administração da web, onde eu posso gerenciar vários serviços, direitos de usuário e também quando ele deve ir dormir. Meu problema é, por algum motivo, quando o NAS foi dormir, o disco rígido liga novamente após alguns minutos. Então ele girará por algum tempo e depois dormirá novamente. Isso continua indefinidamente.

Como posso tentar determinar a causa disso? Sou muito novo no Linux, mas consegui acesso root e agora tenho uma conexão SSH.

    
por Andreas 19.01.2012 / 01:00

4 respostas

6

inotify-tools é uma maneira simples de fazer isso. Existem vários exemplos em seu site que poderiam fazer o que você quiser (veja o exemplo do inotifywatch para um realmente básico).

    
por 19.01.2012 / 01:13
6

Tente executar iotop talvez? Eu achei útil no passado.

    
por 20.01.2012 / 17:09
2

Outra dica: Use Systemtap, existem vários scripts de sondagem no site do systemtap, úteis o suficiente para encontrar o culpado.

Em outro caso,

Se você quiser descobrir qual processo fez com que o disco acelerasse, você pode reunir informações definindo o sinalizador /proc/sys/vm/block_dump . Quando esse sinalizador é definido, o Linux relata todas as operações de leitura e gravação em disco que ocorrem e todos os bloqueios feitos em arquivos. Isto torna possível depurar porque um disco precisa girar e aumentar ainda mais a duração da bateria. A saída de block_dump é gravado na saída do kernel e pode ser recuperado usando "dmesg" ou olhe para o seu recurso kern syslog para o destino das mensagens de depuração. Geralmente, deve ser /var/log/debug . Quando você usa block_dump e seu nível de log de kernel também inclui mensagens de depuração do kernel, você provavelmente vai querer desligar o klogd, caso contrário a saída de block_dump será registrada, causando atividade de disco que não é normalmente lá.

    
por 20.01.2012 / 17:22
2

Você precisa dizer ao kernel para informá-lo sobre todas as leituras / gravações em discos, então você precisa verificar essas informações.

Então:

# sync
# echo 1 > /proc/sys/vm/block_dump
# dmesg -c | grep '/dev/sda'

sync libera todas as gravações pendentes em discos, para que você veja apenas novas leituras ou gravações.
dmesg -c mostra as mensagens do kernel e as limpa (caso contrário, você verá as antigas também, cada uma delas vez que você executar o dmesg). grep filtra a saída do dmesg para atividade do disco que você está interessado. Substitua / dev / sda pelo seu dispositivo atual.

Eu costumo usar algo assim para girar o disco e, em seguida, verificar quando ele gira novamente:

# sync
# hdparm -y /dev/sda
# while true; do hdparm -C /dev/sda ; sleep 600 ; done

O loop while verifica o status ativo / ocioso do disco a cada 10 minutos. Quando você o ver ligado, execute a linha dmesg acima para ver o whodunnit.

    
por 02.07.2014 / 01:14